/* TinyCast scroll-story: reset, RTL base, header/footer, focus, reduced motion. */

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

html, body {
  margin: 0;
  padding: 0;
  /* fallback for engines without overflow: clip */
  overflow-x: hidden;
  overflow-x: clip;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  font-family: var(--font-day);
  font-size: var(--fs-body);
  line-height: 1.6;
  color: var(--fg-ink);
  background: var(--sb-paper);
  -webkit-font-smoothing: antialiased;
}

img, svg { max-width: 100%; height: auto; display: block; }

h1, h2, h3, p, ul { margin: 0; }
ul { padding: 0; list-style: none; }
a { color: inherit; }
button { font: inherit; }

.wrap {
  max-width: var(--wrap);
  margin-inline: auto;
  padding-inline: var(--pad-inline);
  width: 100%;
}

/* ---------- Fixed sky (shown only when the JS engine runs) ---------- */

.sky { display: none; }

.js-sky .sky {
  display: block;
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
}

.sky-layer {
  position: absolute;
  inset: 0;
  opacity: 0;
}
.sky-layer--day    { background: var(--sky-day); opacity: 1; }
.sky-layer--sunset { background: var(--sky-sunset); }
.sky-layer--dusk   { background: var(--sky-dusk); }
.sky-layer--night  { background: var(--sky-night); }

.sky-stars {
  position: absolute;
  inset: 0;
  opacity: 0;
  background-image:
    radial-gradient(1.5px 1.5px at 12% 18%, #FBD774 50%, transparent 55%),
    radial-gradient(1px 1px at 34% 42%, #fff 50%, transparent 55%),
    radial-gradient(2px 2px at 58% 12%, #FBD774 50%, transparent 55%),
    radial-gradient(1px 1px at 72% 34%, #fff 50%, transparent 55%),
    radial-gradient(1.5px 1.5px at 88% 22%, #FBD774 50%, transparent 55%),
    radial-gradient(1px 1px at 22% 64%, #fff 50%, transparent 55%),
    radial-gradient(1.5px 1.5px at 46% 78%, #FBD774 50%, transparent 55%),
    radial-gradient(1px 1px at 66% 58%, #fff 50%, transparent 55%),
    radial-gradient(2px 2px at 82% 72%, #FBD774 50%, transparent 55%),
    radial-gradient(1px 1px at 8% 88%, #fff 50%, transparent 55%);
}

.js-sky main section { background: transparent; }

/* ---------- Header ---------- */

.site-header {
  position: absolute;
  inset-block-start: 0;
  inset-inline: 0;
  z-index: 10;
  padding-block-start: max(0.9rem, env(safe-area-inset-top));
}
.site-header .wrap {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.brand {
  font-family: var(--font-day-display);
  font-weight: 800;
  font-size: 1.35rem;
  letter-spacing: -0.02em;
  color: var(--sb-ink);
  text-decoration: none;
}
.brand .dot { color: var(--sb-accent); margin-inline-start: 2px; font-size: 0.8em; }
.site-nav { display: flex; gap: clamp(0.7rem, 2.5vw, 1.4rem); flex-wrap: wrap; }
@media (max-width: 40rem) { .site-nav { display: none; } }
.site-nav a {
  text-decoration: none;
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--sb-ink2);
}
.site-nav a:hover { color: var(--sb-accent-dark); }

/* ---------- Footer (always in the night world) ---------- */

.site-footer {
  padding-block: 2.2rem calc(2.2rem + env(safe-area-inset-bottom));
  color: var(--st-on-dark-muted);
  font-size: var(--fs-small);
  background: var(--sky-night);
  background-color: #241338;
  background-attachment: fixed;
}
.site-footer .wrap {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 0.8rem 2rem;
}
.site-footer a { color: var(--st-on-dark); text-decoration: none; }
.site-footer a:hover { text-decoration: underline; }
.site-footer div:first-child { display: flex; gap: 1.2rem; flex-wrap: wrap; }

/* ---------- Focus ---------- */

:focus-visible {
  outline: 3px solid var(--focus-light);
  outline-offset: 3px;
  border-radius: 6px;
}
.world-night :focus-visible,
.site-footer :focus-visible {
  outline-color: var(--focus-dark);
}

/* ---------- Reduced motion / no-JS globals ---------- */

.reduced-motion *,
.reduced-motion *::before,
.reduced-motion *::after {
  animation: none !important;
  transition: none !important;
}
