/*
 | JEMPUTSHARE, "KILAT" (owner, 2026-10-21): a camera flash at night.
 | Three colours and nothing else; every other shade is a mix of these.
 | Measured: ink on ground 17.0:1, accent on ground 13.1:1, ground on the
 | accent (the button) 13.1:1. No gold: that is jemputanmajlis.com's, and
 | the two brands must never read as one.
 */

@font-face {
  font-family: 'Jost';
  src: url('/fonts/jost.woff2') format('woff2');
  font-weight: 300 700;
  font-display: swap;
}

@font-face {
  font-family: 'Sacramento';
  src: url('/fonts/sacramento.woff2') format('woff2');
  font-display: block;
}

@font-face {
  font-family: 'Caveat';
  src: url('/fonts/caveat.woff2') format('woff2');
  font-weight: 400 700;
  font-display: block;
}

:root {
  --ground: #101114;
  --ink: #F5F3EE;
  --accent: #FFD23F;
  --ink-soft: color-mix(in srgb, var(--ink) 80%, var(--ground));
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --ease-in: cubic-bezier(.7, 0, .84, 0);
  color-scheme: dark;
}

/* The scrollbar's room is kept from the first frame, so the brand does not slide sideways when the preloader lets the page scroll. */
html {
  background: var(--ground);
  color: var(--ink);
  -webkit-text-size-adjust: 100%;
  scrollbar-gutter: stable;
}

body {
  margin: 0;
  font: 400 16px/1.5 'Jost', system-ui, sans-serif;
  -webkit-font-smoothing: antialiased;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

/* Under the preloader the page cannot scroll. Should the script never run, the lock lifts with the preloader's own bail. */
html.is-intro {
  overflow: hidden;
  animation: jsh-unlock 1ms linear 8s forwards;
}

@keyframes jsh-unlock {
  to { overflow: visible; }
}

:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
