/* ═══════════════════════════════════════════════════════════════
   CNEMAI — the mark, for the page
   Ported verbatim from the product's components/tiny-cinema/brand
   (styles.ts + app/brand/page.tsx). Tokens resolve to the same
   values css/styles.css already carries. Keep the two in step.
   ═══════════════════════════════════════════════════════════════ */

/* ── the wordmark: cnemaı with its fallen tittle, dot and gap both .3em ── */
.cnemai { display: inline-flex; align-items: baseline; gap: .3em; font-family: var(--serif);
           line-height: 1; letter-spacing: .2px; white-space: nowrap; text-decoration: none; }
.cnemai-dot { width: .3em; height: .3em; border-radius: 50%; background: var(--violet); flex: none; }
.cnemai.on-bone { color: #101012; }
.cnemai.on-bone .cnemai-dot { background: #5f4f93; }

/* ── the slip (Mark 01) ──────────────────────────────────────────── */
.slipW { position: relative; display: inline-flex; align-items: baseline; white-space: nowrap; }
.slipWord { position: relative; display: inline-block; }
.slipL { display: inline-block; position: relative; will-change: transform; }
.slipDot { border-radius: 50%; flex: none; will-change: transform; }

@keyframes slipShift {
  0%, 22%   { transform: translateX(var(--dx, 0px)); }
  68%, 100% { transform: translateX(0); }
}
@keyframes slipTravel {
  0%        { transform: translateX(var(--dx, 0px)) translateY(0) rotate(0deg); }
  22%       { transform: translateX(var(--dx, 0px)) translateY(var(--lift)) rotate(-5deg); }
  68%       { transform: translateX(0) translateY(var(--lift)) rotate(5deg); }
  86%, 100% { transform: translateX(0) translateY(0) rotate(0deg); }
}
@keyframes slipTittle {
  0%   { transform: translate(var(--dsx), var(--dsy)) scale(.5); background: var(--unlit); }
  22%  { transform: translate(var(--dsx), calc(var(--dsy) + var(--lift))) scale(.5); background: var(--unlit); }
  68%  { transform: translate(var(--dmx), calc(var(--dsy) + var(--lift))) scale(.5); background: var(--unlit); }
  86%  { transform: translate(var(--dmx), var(--dsy)) scale(.5); background: var(--unlit); }
  100% { transform: translate(0, 0) scale(1); background: var(--lit); }
}
.slipW.isPlaying .slipL   { animation: slipShift var(--dur) cubic-bezier(.66,0,.18,1) both; }
.slipW.isPlaying .slipL.isI { animation: slipTravel var(--dur) cubic-bezier(.5,0,.15,1) both; }
.slipW.isPlaying .slipDot { animation: slipTittle var(--dur) cubic-bezier(.5,0,.2,1) both; }

@media (prefers-reduced-motion: reduce) {
  .slipW.isPlaying .slipL,
  .slipW.isPlaying .slipL.isI,
  .slipW.isPlaying .slipDot { animation: none; }
}

/* ── the ident (the reveal) ──────────────────────────────────────── */
/* ── the frame ─────────────────────────────────────────────────────── */
.dpStage { position: relative; width: 100%; aspect-ratio: 2.39; overflow: hidden;
           background: #050506; border-top: 1px solid rgba(202,202,203,0.08);
           border-bottom: 1px solid rgba(202,202,203,0.08);
           perspective: 2600px; perspective-origin: 50% 52%; }
.dpGrain { position: absolute; inset: 0; pointer-events: none; opacity: 0.05;
           background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }
.dpBlack { position: absolute; inset: 0; background: #050506; opacity: 0.4; pointer-events: none; }
.dp-reset .dpBlack { opacity: 1; }
.dpLive .dpBlack { animation: dpBlackOut var(--spotIn) linear both; }

/* the projector catching: a weak blink, dark, catches, sags, catches harder, wavers, holds —
   played on the black over the frame, so the letters come up in the same flicker */
@keyframes dpBlackOut {
  0% { opacity: 1; }   5% { opacity: .78; } 8% { opacity: 1; }   17% { opacity: 1; }
  21% { opacity: .45; } 25% { opacity: .9; } 33% { opacity: .3; } 40% { opacity: .55; }
  48% { opacity: .08; } 56% { opacity: .2; } 64% { opacity: 0; }  100% { opacity: 0; }
}

.dpByline { position: absolute; left: 0; right: 0; bottom: 12%; text-align: center; pointer-events: none;
            font-family: var(--mono); font-size: 11px; letter-spacing: 0.24em; color: #c0a6e8;
            opacity: 0; }
/* the byline catches the way the projector did at the open: the same flicker curve,
   in violet, with the same stepped jolts and a bone fringe on the catches */
.dpOn .dpByline { animation: dpBylineFlicker 700ms linear var(--byline) forwards,
                             dpBylineJolt 700ms steps(1, end) var(--byline) forwards; }
@keyframes dpBylineFlicker {
  0% { opacity: 0; }   5% { opacity: .3; }  8% { opacity: 0; }   17% { opacity: 0; }
  21% { opacity: .7; } 25% { opacity: .12; } 33% { opacity: .85; } 40% { opacity: .45; }
  48% { opacity: 1; }  56% { opacity: .78; } 64% { opacity: 1; }  72% { opacity: .92; }
  80%, 100% { opacity: 1; }
}
@keyframes dpBylineJolt {
  0%  { transform: none; text-shadow: none; }
  20% { transform: translateX(3px);  text-shadow: -3px 0 rgba(202,202,203,0.55); }
  23% { transform: translateX(-2px); text-shadow: 2px 0 rgba(202,202,203,0.4); }
  25% { transform: none; text-shadow: none; }
  32% { transform: translateX(-2px); text-shadow: 2px 0 rgba(202,202,203,0.45); }
  34% { transform: none; text-shadow: none; }
  47% { transform: translateX(2px);  text-shadow: -2px 0 rgba(202,202,203,0.35); }
  49%, 100% { transform: none; text-shadow: none; }
}

.dpPlay { position: absolute; left: 50%; top: 52%; transform: translate(-50%, -50%);
          width: 72px; height: 72px; border-radius: 50%; cursor: pointer;
          background: rgba(10,10,11,0.55); border: 1px solid rgba(202,202,203,0.35);
          display: flex; align-items: center; justify-content: center; padding: 0;
          transition: opacity .35s ease, border-color .2s, background .2s, transform .2s; }
.dpPlay:hover { border-color: rgba(202,202,203,0.7); background: rgba(10,10,11,0.75);
                transform: translate(-50%, -50%) scale(1.04); }
.dpPlay:focus-visible { outline: 2px solid #c0a6e8; outline-offset: 4px; }
.dpPlayRing { display: block; }
.dpPlayTri { display: block; width: 0; height: 0; margin-left: 5px;
             border-left: 18px solid #c0a6e8; border-top: 11px solid transparent; border-bottom: 11px solid transparent; }
.dp-reset .dpPlay, .dp-spot .dpPlay, .dp-run .dpPlay { opacity: 0; pointer-events: none; }
.dp-done .dpPlay { display: none; }

/* ── the scene ─────────────────────────────────────────────────────── */
/* a 2D wrapper the glitch can jolt without touching the camera's transform */
.dpJitter { position: absolute; inset: 0; transform-style: preserve-3d; }
.dp-spot .dpJitter { animation: dpJolt var(--spotIn) steps(1, end) both; }
.dpScene { position: absolute; inset: 0; transform-style: preserve-3d; transform: rotateY(var(--yaw)); }
.dpOn .dpScene { transition: transform var(--sweep) cubic-bezier(.62,.02,.24,1) var(--sweepDelay); }

.dpItem { position: absolute; left: 50%; top: 52%; transform-style: preserve-3d;
          opacity: 0; transition: opacity .4s ease; }
.dpReady .dpItem { opacity: 1; }

.dpMeasure { position: absolute; left: 0; top: 0; visibility: hidden; white-space: pre;
             line-height: 1; pointer-events: none; }
.dpMeasure > span { display: inline-block; position: relative; }

.dpFace { position: relative; display: block; transform-style: preserve-3d; line-height: 1; white-space: pre; }
.dpSlice { position: absolute; left: 0; top: 0; backface-visibility: hidden;
           -webkit-text-stroke: 0.5px currentColor; }
.dpBevel { -webkit-text-stroke: 0.9px currentColor; }
.dpOn .dpSlice { opacity: 0; transition: opacity var(--collapseDur) ease var(--collapse); }

/* the glossy floor: each letter mirrored below its baseline, masked away fast */
.dpReflect { position: absolute; left: 0; top: 0; color: #7a7a86; opacity: .2;
             transform: translateY(var(--refl)) scaleY(-1);
             -webkit-mask-image: linear-gradient(to top, rgba(0,0,0,1) 0%, transparent 42%);
             mask-image: linear-gradient(to top, rgba(0,0,0,1) 0%, transparent 42%); }
.dpOn .dpReflect { opacity: 0; transition: opacity var(--collapseDur) ease var(--collapse); }

/* the contact shadow: the letter's weight on the floor, darkest right at the baseline */
.dpAO { position: absolute; left: -6%; width: 112%; height: .16em; top: calc(var(--baseY) - .07em);
        background: radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.7) 38%, transparent 72%);
        filter: blur(.025em); pointer-events: none; }
.dpOn .dpAO { opacity: 0; transition: opacity var(--collapseDur) ease var(--collapse); }

/* black chrome while the world is cinema: a house-black face with a whisper of sheen, under
   a bone face that fades up as the lamp's light spreads. Two layers, because a
   gradient fill can't transition to a flat colour. */
.dpFront { position: relative; display: inline-block; color: transparent; opacity: .4;
           /* glossy black: a specular catch up top over an environment gradient — a lighter
              sky, a horizon, house black below, a faint lift off the floor */
           background:
             radial-gradient(ellipse 70% 42% at 32% 8%, rgba(255,255,255,0.15), transparent 62%),
             linear-gradient(180deg, #3d3d45 0%, #1d1d22 26%, #0d0d0f 44%, #0a0a0b 64%, #17171b 100%);
           -webkit-background-clip: text; background-clip: text; }
.dpLive .dpFront { opacity: 1; transition: opacity var(--spotIn) ease; }
/* the glitch, in the palette: violet and bone fringes either side of the face, and
   two bands of the letter torn sideways. Stepped, on the flicker's beats, then gone. */
.dpGhost { position: absolute; left: 0; top: 0; opacity: 0; pointer-events: none; }
.dpGhostV { color: rgba(192,166,232,0.85); transform: translateX(-.06em); }
.dpGhostB { color: rgba(202,202,203,0.7);  transform: translateX(.06em); }
.dpTear { position: absolute; left: 0; top: 0; opacity: 0; color: #2e2e36; pointer-events: none; }
.dpTearA { clip-path: inset(24% 0 56% 0); transform: translateX(.09em); }
.dpTearB { clip-path: inset(62% 0 22% 0); transform: translateX(-.07em); }
.dp-spot .dpGhost { animation: dpGhostFlash var(--spotIn) steps(1, end) both; }
.dp-spot .dpTear  { animation: dpTearFlash  var(--spotIn) steps(1, end) both; }

@keyframes dpJolt {
  0% { transform: none; }
  4% { transform: translateX(-5px); } 5% { transform: translateX(7px); } 6% { transform: translateX(-3px) skewX(-2deg); } 7% { transform: translateX(2px); } 8% { transform: none; }
  20% { transform: translateX(6px) skewX(-4deg); } 21% { transform: translateX(-8px); } 22.5% { transform: translateX(4px); } 24% { transform: translateX(-2px); } 25% { transform: none; }
  32% { transform: translateX(-4px); } 33.5% { transform: translateX(5px) skewX(2deg); } 35% { transform: none; }
  47% { transform: translateX(3px); } 48% { transform: translateX(-6px); } 49% { transform: translateX(2px); } 50% { transform: none; }
  63% { transform: translateX(-2px); } 64% { transform: translateX(3px); } 65%, 100% { transform: none; }
}
@keyframes dpGhostFlash {
  0% { opacity: 0; } 4% { opacity: .7; } 8% { opacity: 0; } 20% { opacity: .8; } 25% { opacity: 0; }
  32% { opacity: .5; } 35% { opacity: 0; } 47% { opacity: .6; } 50% { opacity: 0; } 63% { opacity: .35; } 65%, 100% { opacity: 0; }
}
@keyframes dpTearFlash {
  0% { opacity: 0; } 5% { opacity: 1; } 7% { opacity: 0; } 21% { opacity: 1; } 23% { opacity: 0; }
  33% { opacity: 1; } 34.5% { opacity: 0; } 48% { opacity: 1; } 49.5% { opacity: 0; } 100% { opacity: 0; }
}

.dpFrontLit { position: absolute; left: 0; top: 0; color: #cacacb; opacity: 0;
              text-shadow: 0 0 0 rgba(192,166,232,0); }
.dpOn .dpFrontLit { opacity: 1; transition: opacity var(--sweep) ease var(--sweepDelay);
                    animation: dpRim var(--rimLife) linear var(--lit) both; }

/* ── the ball ──────────────────────────────────────────────────────── */
/* It faces the lens whatever the scene is doing (a sphere is round from every
   angle), rides the i unlit, pops off it in the first frame, and on first contact
   it lights. The bounces decay while the camera carries it to the dot's place;
   as the camera lands it shrinks to the dot's size and cools to flat violet. */
.dpBill { position: relative; display: block; width: var(--ball); height: var(--ball);
          transform-style: preserve-3d; transform: rotateY(calc(-1 * var(--yaw))); }
.dpOn .dpBill { transition: transform var(--sweep) cubic-bezier(.62,.02,.24,1) var(--sweepDelay); }

.dpBall { position: absolute; inset: 0; transform-origin: 50% 100%;
          transform: translateY(var(--dy)) scale(1, 1); }
.dpOn .dpBall { transform: translateY(0) scale(1, 1);
                animation: dpBallDrop var(--drop) linear 0s both; }

/* a tittle's size asleep on the i; it grows to the ball as it leaps, landing at the
   dot's exact size. The scale is about its own bottom, so the offset above the stem
   isn't magnified with it. */
.dpGrow { position: absolute; inset: 0; transform-origin: 50% 100%; transform: scale(var(--grow)); }
.dpOn .dpGrow { transform: scale(1); transition: transform calc(var(--drop) * 0.14) cubic-bezier(.3,0,.2,1); }

.dpSphere { position: absolute; inset: 0; border-radius: 50%;
            --inset: inset calc(var(--ball) * -0.1) calc(var(--ball) * -0.12) calc(var(--ball) * 0.18) rgba(18,10,36,0.45);
            background: radial-gradient(circle at 34% 30%, #ece3fa 0%, #c0a6e8 36%, #7d62b9 76%, #46376c 100%);
            box-shadow: var(--inset); }
.dpSphere::before, .dpSphere::after { content: ""; position: absolute; inset: 0; border-radius: 50%; }
.dpSphere::before { background: #c0a6e8; opacity: 0; }   /* the logo's flat dot */
.dpSphere::after  { opacity: 1;                                 /* unlit: black chrome */
                    background: radial-gradient(circle at 34% 30%, #7a7a84 0%, #3a3a40 22%, #17171a 55%, #0b0b0d 100%);
                    box-shadow: inset calc(var(--ball) * -0.08) calc(var(--ball) * -0.1) calc(var(--ball) * 0.14) rgba(0,0,0,0.6),
                                inset 0 0 0 0.5px rgba(202,202,203,0.18); }
/* the wake: on with a jolt, off, on with the next, off, on with the third and held —
   then the steady lamp takes over. forwards-only fill, so nothing shows before its cue. */
.dpLive .dpSphere { animation: dpWake var(--wake) steps(1, end) var(--dotOn) forwards,
                               dpLamp var(--lampLife) linear calc(var(--dotOn) + var(--wake)) forwards; }
.dpLive .dpSphere::after { animation: dpWakeUnlit var(--wake) steps(1, end) var(--dotOn) forwards; }
.dpOn .dpSphere::after { opacity: 0; }
.dpOn .dpSphere::before { opacity: 1; transition: opacity 500ms ease var(--flat); }


.dpPool { position: absolute; left: 50%; bottom: calc(var(--ball) * -0.55);
          width: calc(var(--ball) * 3.5); height: calc(var(--ball) * .9); border-radius: 50%;
          background: radial-gradient(ellipse at center, rgba(192,166,232,0.2) 0%, rgba(192,166,232,0.06) 45%, transparent 72%);
          filter: blur(calc(var(--ball) * 0.14));
          transform: translateX(-50%) scale(.3, .3); opacity: 0; }
.dpOn .dpPool { animation: dpPoolLife var(--poolLife) linear var(--land) both; }

/* the ball's timeline: crouch, pop, then hops along the letter tops (--dy is that
   line) while the word slides under it; off the end it falls to the baseline (0) */
@keyframes dpBallDrop {
  0%    { transform: translateY(var(--dy)) scale(1, 1);                          animation-timing-function: ease-in; }
  3%    { transform: translateY(var(--dy)) scale(1.12, .86);                     animation-timing-function: cubic-bezier(0,.55,.4,1); }
  9%    { transform: translateY(calc(var(--dy) - var(--pop))) scale(.94, 1.08);  animation-timing-function: cubic-bezier(.55,0,1,.55); }
  15%   { transform: translateY(var(--dy)) scale(1.18, .8);                      animation-timing-function: cubic-bezier(0,.6,.4,1); }
  16.5% { transform: translateY(var(--dy)) scale(.97, 1.04);                     animation-timing-function: cubic-bezier(0,.5,.5,1); }
  23%   { transform: translateY(calc(var(--dy) - var(--pop) * .85)) scale(1, 1); animation-timing-function: cubic-bezier(.55,0,1,.55); }
  30%   { transform: translateY(var(--dy)) scale(1.14, .84);                     animation-timing-function: cubic-bezier(0,.6,.4,1); }
  31.5% { transform: translateY(var(--dy)) scale(.98, 1.03);                     animation-timing-function: cubic-bezier(0,.5,.5,1); }
  38%   { transform: translateY(calc(var(--dy) - var(--pop) * .85)) scale(1, 1); animation-timing-function: cubic-bezier(.55,0,1,.55); }
  45%   { transform: translateY(var(--dy)) scale(1.14, .84);                     animation-timing-function: cubic-bezier(0,.6,.4,1); }
  46.5% { transform: translateY(var(--dy)) scale(.98, 1.03);                     animation-timing-function: cubic-bezier(0,.5,.5,1); }
  53%   { transform: translateY(calc(var(--dy) - var(--pop) * .8)) scale(1, 1);  animation-timing-function: cubic-bezier(.55,0,1,.55); }
  60%   { transform: translateY(var(--dy)) scale(1.12, .86);                     animation-timing-function: cubic-bezier(0,.6,.4,1); }
  61.5% { transform: translateY(var(--dy)) scale(.98, 1.03);                     animation-timing-function: cubic-bezier(0,.5,.5,1); }
  67%   { transform: translateY(calc(var(--dy) - var(--pop) * .6)) scale(1, 1);  animation-timing-function: cubic-bezier(.55,0,1,.55); }
  76%   { transform: translateY(0) scale(1.22, .76);                             animation-timing-function: cubic-bezier(0,.6,.4,1); }
  78%   { transform: translateY(0) scale(.96, 1.05);                             animation-timing-function: cubic-bezier(0,.5,.5,1); }
  83%   { transform: translateY(calc(var(--dy) * .18)) scale(1, 1);              animation-timing-function: cubic-bezier(.55,0,1,.55); }
  88%   { transform: translateY(0) scale(1.05, .95);                             animation-timing-function: ease-out; }
  90%, 100% { transform: translateY(0) scale(1, 1); }
}
@keyframes dpPoolLife {
  0%    { opacity: 0;  transform: translateX(-50%) scale(.3, .3); animation-timing-function: cubic-bezier(.2,.8,.3,1); }
  7%    { opacity: 1;  transform: translateX(-50%) scale(1, 1); }
  25%   { opacity: 1;  transform: translateX(-50%) scale(1, 1);   animation-timing-function: ease-in; }
  60%, 100% { opacity: 0; transform: translateX(-50%) scale(1.08, 1.08); }
}
/* the jolts land at 0, 144 and 324ms after the cue; the lamp blinks on each */
@keyframes dpWake {
  0%   { box-shadow: var(--inset), 0 0 calc(var(--ball) * .9) 0 rgba(192,166,232,0.3); }
  15%  { box-shadow: var(--inset), 0 0 0 0 rgba(192,166,232,0); }
  36%  { box-shadow: var(--inset), 0 0 calc(var(--ball) * .9) 0 rgba(192,166,232,0.3); }
  45%  { box-shadow: var(--inset), 0 0 0 0 rgba(192,166,232,0); }
  81%, 100% { box-shadow: var(--inset), 0 0 calc(var(--ball) * .9) 0 rgba(192,166,232,0.3); }
}
@keyframes dpWakeUnlit {
  0% { opacity: 0; } 15% { opacity: 1; } 36% { opacity: 0; } 45% { opacity: 1; } 81%, 100% { opacity: 0; }
}
@keyframes dpLamp {
  0%    { box-shadow: var(--inset), 0 0 calc(var(--ball) * .9) 0 rgba(192,166,232,0.3); }
  69%   { box-shadow: var(--inset), 0 0 calc(var(--ball) * .9) 0 rgba(192,166,232,0.3); animation-timing-function: ease-in; }
  80%, 100% { box-shadow: var(--inset), 0 0 0 0 rgba(192,166,232,0); }
}
@keyframes dpRim {
  0%    { text-shadow: 0 0 0 rgba(192,166,232,0); animation-timing-function: cubic-bezier(.2,.8,.3,1); }
  6%    { text-shadow: 0 0 calc(var(--ball) * .9) var(--rimColor); }
  65%   { text-shadow: 0 0 calc(var(--ball) * .9) var(--rimColor); animation-timing-function: ease-in; }
  85%, 100% { text-shadow: 0 0 0 rgba(192,166,232,0); }
}

/* ── the slate under the frame ─────────────────────────────────────── */
.dpSlate { display: flex; align-items: center; justify-content: space-between; gap: 18px;
           margin-top: 14px; flex-wrap: wrap; }
.dpMono { font-family: var(--mono); font-size: 10.5px; letter-spacing: .12em; color: #6a6a6e; }
.dpReads { display: flex; gap: 14px; }
.dpRead { font-family: var(--mono); font-size: 11px; letter-spacing: .12em;
          color: #6a6a6e; transition: color .3s ease; }
.dpRead.on { color: #cacacb; }
.dpReplay { font-family: var(--mono); font-size: 11px; letter-spacing: .08em; color: #85858a;
            background: transparent; border: 1px solid rgba(202,202,203,0.18); border-radius: 7px;
            padding: 7px 12px; cursor: pointer; transition: color .2s, border-color .2s; }
.dpReplay:hover { color: #cacacb; border-color: rgba(202,202,203,0.4); }
.dpReplay:focus-visible { outline: 2px solid #c0a6e8; outline-offset: 3px; }
.dpReplay:disabled { opacity: .5; cursor: default; }

@media (prefers-reduced-motion: reduce) {
  .dpOn .dpScene, .dpOn .dpBill, .dpOn .dpSlice, .dpOn .dpReflect, .dpOn .dpAO, .dpLive .dpFront, .dpOn .dpFrontLit, .dpOn .dpGrow,
  .dpOn .dpSphere::before { transition: none; }
  .dpOn .dpByline { animation: none; opacity: 1; }
  .dpOn .dpBall, .dpLive .dpSphere, .dpLive .dpSphere::after, .dpOn .dpPool, .dpOn .dpFrontLit,
  .dpLive .dpBlack, .dp-spot .dpJitter, .dp-spot .dpGhost, .dp-spot .dpTear { animation: none; }
}

/* ── SC 06 · THE PREMIERE: the ident as the reel start, over the still ── */
.premiere-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1; }
/* pinned by the frame as well as by its own class, so it can never fall into the
   figure's flow and grow it */
.premiere-ident, .premiere-frame .dpStage { position: absolute; inset: 0; z-index: 4; transition: opacity .6s ease; }
.premiere-ident.off { opacity: 0; pointer-events: none; }
/* mountIdent turns the host itself into the stage, so the stage classes land on the
   same element — match it directly, or the stage's own 2.39 ratio wins and the ident
   sits in the top of a 16:9 frame */
.premiere-ident.dpStage, .premiere-ident .dpStage { aspect-ratio: auto; height: 100%; border: 0; }

/* ── the sheet (brand.html) ──────────────────────────────────────── */
.brandRoot { background: #0a0a0b; color: #ededee; font-family: var(--sans);
             min-height: 100vh; -webkit-font-smoothing: antialiased; }
.brandPage { max-width: 1020px; margin: 0 auto; padding: 0 28px 96px; }

.brandMono { font-family: var(--mono); font-size: 11px; letter-spacing: 0.06em; color: #6a6a6e; }

.brandSlate { display: flex; align-items: baseline; justify-content: space-between; gap: 20px;
              padding: 20px 0 18px; border-bottom: 1px solid rgba(202,202,203,0.10); margin-bottom: 64px; }

.brandSection { margin-bottom: 88px; }
.brandSlug { display: flex; align-items: center; gap: 14px; margin-bottom: 22px; }
.brandSlug .lbl { font-family: var(--mono); font-size: 11px; letter-spacing: 0.12em;
                  text-transform: uppercase; color: #6a6a6e; white-space: nowrap; }
.brandSlug .rule { height: 1px; background: rgba(202,202,203,0.10); flex: 1; }

.brandRoot h2 { font-family: var(--serif); font-weight: 400; font-size: 30px; line-height: 1.15;
                margin: 0 0 10px; color: #ededee; text-wrap: balance; }
.brandRoot h3 { font-family: var(--serif); font-weight: 400; font-size: 21px; margin: 20px 0 7px; color: #ededee; }
.brandRoot p { margin: 0; color: #cbc1b4; font-size: 15px; line-height: 1.65; max-width: 62ch; }
.brandRoot em { font-style: normal; color: #cacacb; }
.brandRoot b { font-weight: 500; color: #ededee; }

.brandEyebrow { font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em;
                text-transform: uppercase; color: #6a6a6e; margin-bottom: 34px; }
.brandRoot p.brandThesis { margin-top: 46px; font-family: var(--serif); font-size: 23px;
                           line-height: 1.45; color: #ededee; max-width: 30ch; }
.brandHeroFoot { margin-top: 26px; display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.brandReplay { font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em; color: #85858a;
               background: transparent; border: 1px solid rgba(202,202,203,0.18); border-radius: 7px;
               padding: 8px 14px; cursor: pointer; transition: color .2s, border-color .2s; }
.brandReplay:hover { color: #cacacb; border-color: rgba(202,202,203,0.4); }
.brandReplay:focus-visible { outline: 2px solid #c0a6e8; outline-offset: 3px; }

.brandTwo { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 44px; align-items: center; }
.brandTwo > * { min-width: 0; }

.brandMarks { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.brandMarks > * { min-width: 0; }
.brandStage { background: #111113; border: 1px solid rgba(202,202,203,0.10);
              border-radius: 7px; height: 190px; display: flex; align-items: center;
              justify-content: center; padding: 20px; overflow: hidden; }
.brandMarks p { font-size: 13.5px; line-height: 1.6; }
.brandNo { font-family: var(--mono); font-size: 10.5px; letter-spacing: 0.12em;
           color: #6a6a6e; margin-bottom: 11px; text-transform: uppercase; }

/* the splice */
.brandSplice { display: flex; align-items: flex-end; font-family: var(--serif); font-size: 46px;
               line-height: 1; color: #cacacb; }
.brandSpliceB { transform: translateY(3px); display: inline-flex; align-items: baseline; gap: 0.3em; }
.brandCut { align-self: stretch; position: relative; width: 0; }
.brandCut::before { content: ""; position: absolute; top: 4%; bottom: 4%; left: 0; width: 1.4px;
                    background: #cacacb; opacity: 0.55; transform: rotate(13deg); }
.brandCut::after { content: ""; position: absolute; top: 12%; bottom: 12%; left: -0.3em; width: 0.6em;
                   background: rgba(202,202,203,0.06); border-radius: 2px; transform: rotate(13deg); }

.brandGrounds { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.brandGround { border-radius: 7px; height: 186px; display: flex; align-items: center;
               justify-content: center; border: 1px solid rgba(202,202,203,0.10); }
.brandCaps { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 12px; }

.brandIcons { display: flex; align-items: flex-end; gap: 34px; flex-wrap: wrap; }
.brandIco { display: flex; flex-direction: column; align-items: center; gap: 12px; }

.brandSpecs { display: grid; grid-template-columns: repeat(2, 1fr); gap: 44px 40px; }
.brandSpecs > * { min-width: 0; }
.brandSw { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.brandSwRow { display: flex; align-items: center; gap: 11px; }
.brandChip { width: 30px; height: 30px; border-radius: 5px; flex: none; border: 1px solid rgba(202,202,203,0.10); }
.brandHex { font-family: var(--mono); font-size: 10.5px; color: #6a6a6e; font-variant-numeric: tabular-nums; }

.brandStack { display: flex; flex-direction: column; gap: 16px; }
.brandStackRow { display: flex; align-items: baseline; gap: 14px;
                 border-bottom: 1px solid rgba(202,202,203,0.10); padding-bottom: 14px; }
.brandStackRow:last-child { border-bottom: 0; padding-bottom: 0; }
.brandRole { font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em; color: #6a6a6e;
             text-transform: uppercase; width: 74px; flex: none; }

.brandRules { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 11px; }
.brandRules li { display: flex; gap: 12px; font-size: 13.5px; line-height: 1.55; color: #cbc1b4; }
.brandRules .k { font-family: var(--mono); font-size: 10.5px; letter-spacing: 0.08em;
                 color: #6a6a6e; flex: none; width: 22px; padding-top: 2px; }

.brandFoot { border-top: 1px solid rgba(202,202,203,0.10); padding-top: 20px;
             display: flex; justify-content: space-between; gap: 20px; flex-wrap: wrap; }

.brandBack { color: #6a6a6e; text-decoration: none; font-size: 13px; }
.brandBack:hover { color: #cacacb; }

@media (max-width: 860px) {
  .brandTwo, .brandMarks, .brandGrounds, .brandSpecs, .brandCaps { grid-template-columns: 1fr; gap: 28px; }
  .brandMarks { gap: 34px; }
  .brandSection { margin-bottom: 66px; }
}

/* ── the homepage footer's link to the sheet ─────────────────────── */
.callsheet a { color: inherit; text-decoration: none; border-bottom: 1px solid rgba(202,202,203,0.25); }
.callsheet a:hover { color: var(--bone); border-color: var(--bone); }
