/* ============================================================
   OPSOR · v3 CINEMA — tokens / reset / base / helpers
   ============================================================ */

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

:root{
  /* base */
  --bg:#13131A;
  --bg-2:#1A1A22;
  --bg-card:#21212B;

  --ink:#F5F1E8;
  --ink-2:#CFCABE;
  --ink-3:#928E84;
  --ink-4:#5C5950;
  --line:rgba(245,241,232,.12);
  --line-2:rgba(245,241,232,.26);

  /* brand */
  --brand:#7C5CFF;
  --brand-bright:#9C82FF;
  --brand-deep:#5B3DEF;
  --brand-soft:rgba(124,92,255,.10);

  /* secondary */
  --sand:#D4B896;
  --sand-deep:#A88E68;
  --crimson:#D14040;

  /* easing */
  --e-out:cubic-bezier(.22,1,.36,1);
  --e-spring:cubic-bezier(.34,1.4,.64,1);
  --e-fluid:cubic-bezier(.32,.72,.16,1);

  /* layout */
  --gutter:32px;
  --max:1440px;
}

html{overflow-x:clip}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto !important}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}

html,body{
  font-family:'Satoshi','Helvetica Neue',sans-serif;
  background:var(--bg);color:var(--ink);
  font-weight:400;line-height:1.45;
  font-feature-settings:'ss01','cv11','liga';
  -webkit-font-smoothing:antialiased;
  text-rendering:geometricPrecision;
  /* overflow-x:clip (not hidden) — hidden creates a scroll container
     that breaks position:sticky on descendants */
  overflow-x:clip;
}
::selection{background:var(--brand);color:#fff}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
button{font:inherit;background:none;border:0;color:inherit;cursor:pointer}
ul{list-style:none}

/* type helpers */
.display{font-family:'Fraunces',serif;font-feature-settings:'ss01';font-weight:400}
em{font-family:'Fraunces',serif;font-style:italic;font-weight:300}
.mono{font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-2)}
.mono-r{text-align:right}
.hl{color:var(--brand-bright)}
u{text-decoration:none;background:linear-gradient(transparent 70%,var(--brand-soft) 70%)}

/* layout helpers */
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter);position:relative;z-index:2}
.wrap-narrow{max-width:920px;margin:0 auto;padding:0 var(--gutter);position:relative;z-index:2}

/* split-text helpers */
.line-wrap{display:block;overflow:hidden;line-height:1.05;padding-bottom:.18em;margin-bottom:-.18em}
.line-inner{display:inline-block;will-change:transform;padding:.05em .03em .15em .03em}
[data-split-lines]{line-height:.96}
