/* Millennials Creatives design system
   Shared across the site. Brand: bg #080810, yellow #FFD84D, pink #FF2D78, cyan #00D4FF.
*/
  :root{
    --bg:#080810;
    --surface:#0f0f1c;
    --panel:#15152a;
    --panel2:#1c1c33;
    --yellow:#FFD84D;
    --pink:#FF2D78;
    --cyan:#00D4FF;
    --text:#F5F5FA;
    --muted:#A0A0B8;
    --line:rgba(255,255,255,.10);
    --line2:rgba(255,255,255,.18);
    --ff-display:'Unbounded',ui-sans-serif,system-ui,-apple-system,Helvetica,Arial,sans-serif;
    --ff-head:'Poppins',ui-sans-serif,system-ui,-apple-system,Helvetica,Arial,sans-serif;
    --ff-body:'Poppins',ui-sans-serif,system-ui,-apple-system,Helvetica,Arial,sans-serif;
    --ff-mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
    --max:1240px;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{background:var(--bg);color:var(--text);font-family:var(--ff-body);line-height:1.55;overflow-x:hidden;-webkit-font-smoothing:antialiased}
  a{color:inherit;text-decoration:none}
  img{max-width:100%;display:block}
  .wrap{max-width:var(--max);margin:0 auto;padding:0 24px}
  .skip-link{position:absolute;left:-9999px;top:0;background:var(--yellow);color:#0b0b16;padding:12px 20px;z-index:9999;font-weight:700;border-radius:0 0 8px 0}
  .skip-link:focus{left:0}
  a:focus-visible,button:focus-visible{outline:3px solid var(--yellow);outline-offset:3px;border-radius:4px}

  /* ============ NAV ============ */
  header{position:sticky;top:0;z-index:100;background:rgba(8,8,16,.84);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}
  /* Scoped to the header. As a bare element selector this leaked into every
     other <nav> on the site, forcing them to 72px tall with centred items,
     which silently collapsed the studio door grid. */
  header nav{display:flex;align-items:center;justify-content:space-between;height:72px;gap:20px}
  .brand img{height:44px;width:auto}
  .navlinks{display:flex;gap:26px;align-items:center}
  .navlinks a{font-size:.88rem;color:var(--muted);transition:color .2s;white-space:nowrap}
  .navlinks a:hover{color:var(--text)}
  .navcta{background:var(--yellow);color:#0b0b16;padding:10px 20px;border-radius:30px;font-weight:700;font-size:.84rem}
  .navcta:hover{color:#0b0b16;transform:translateY(-1px)}
  .navtoggle{display:none;background:none;border:1px solid var(--line2);border-radius:12px;color:var(--text);
    padding:9px 12px;cursor:pointer;font-family:var(--ff-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase}
  .mobmenu{display:none;border-top:1px solid var(--line);background:rgba(8,8,16,.98);padding:8px 24px 20px}
  .mobmenu a{display:block;padding:13px 0;font-size:1rem;color:var(--text);border-bottom:1px solid var(--line)}
  .mobmenu a:last-child{border-bottom:none}
  .mobmenu.open{display:block}
  @media(max-width:1000px){
    .navlinks a:not(.navcta){display:none}
    .navtoggle{display:inline-block}
    .navcta{padding:9px 16px;font-size:.78rem}
    .kicker{font-size:.6rem;letter-spacing:.16em}
    .tile .chip{padding:28px 13px 12px}
    .tile .chip b{font-size:.88rem}
    .tile .chip em{font-size:.72rem}
  }

  /* ============ PROOF WALL HERO ============ */
  .hero{padding:44px 0 0;position:relative}
  .hero::before{content:"";position:absolute;inset:0 0 auto;height:520px;background:
    radial-gradient(60% 70% at 15% 0%, rgba(255,45,120,.16), transparent 70%),
    radial-gradient(55% 65% at 85% 10%, rgba(0,212,255,.13), transparent 70%);
    pointer-events:none}
  .kicker{position:relative;font-family:var(--ff-mono);font-size:.7rem;letter-spacing:.26em;text-transform:uppercase;color:var(--yellow);margin-bottom:22px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
  .kicker .dot{width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 12px var(--cyan);flex-shrink:0}

  .wall-intro{margin-top:76px;padding-top:44px;border-top:1px solid var(--line)}
  .wall-intro h2{font-family:var(--ff-display);font-weight:700;font-size:clamp(1.4rem,2.7vw,2.15rem);
    line-height:1.16;letter-spacing:-.02em;max-width:24ch;margin-bottom:14px}
  .hero-explain{color:var(--muted);font-size:1.02rem;line-height:1.65;max-width:72ch;margin-bottom:32px}
  .hero-explain b{color:var(--text)}
  .say-h{font-family:var(--ff-display);font-weight:800;font-size:clamp(1.7rem,3.4vw,2.85rem);
    line-height:1.12;letter-spacing:-.025em;max-width:none}
  .say-h .hi{color:var(--yellow)}
  .wall{position:relative;display:grid;grid-template-columns:repeat(12,1fr);gap:14px}
  .wall-row2{grid-column:1 / -1;display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
  .tile{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--line);background:var(--surface);
    box-shadow:0 24px 60px -34px rgba(0,0,0,.9);transition:transform .45s cubic-bezier(.16,1,.3,1),border-color .35s;display:block}
  .tile img{width:100%;height:100%;object-fit:cover;object-position:top center;transition:transform .6s cubic-bezier(.16,1,.3,1)}
  .tile:hover{transform:translateY(-5px);border-color:var(--line2)}
  .tile:hover img{transform:scale(1.04)}
  .tile .chip{position:absolute;left:0;right:0;bottom:0;display:block;
    background:linear-gradient(to top,rgba(6,6,12,.97) 55%,rgba(6,6,12,.75) 80%,transparent);
    padding:34px 16px 14px;color:var(--text)}
  .tile .chip b{display:block;font-family:var(--ff-head);font-weight:700;font-size:.98rem;color:var(--yellow);margin-bottom:3px}
  .tile .chip em{display:block;font-style:normal;font-size:.8rem;line-height:1.4;color:var(--text);opacity:.92}
  .tile .chip .go{display:inline-block;margin-top:8px;font-family:var(--ff-mono);font-size:.6rem;
    letter-spacing:.14em;text-transform:uppercase;color:var(--cyan)}
  .tile:hover .chip .go{color:var(--yellow)}
  .t-lead{grid-column:span 7;height:340px}
  .t-side{grid-column:span 5;height:340px}
  .t-side img{object-position:top left}
  .wall-row2 .tile{height:300px}
  @media(max-width:900px){
    .t-lead,.t-side{grid-column:1 / -1;height:260px}
    .wall-row2{grid-template-columns:repeat(2,1fr)}
    .wall-row2 .tile{height:250px}
  }
  @media(max-width:560px){
    .wall-row2{grid-template-columns:1fr}
    .t-lead,.t-side{height:220px}
    .wall-row2 .tile{height:240px}
  }

  .hero-say{margin-top:0;display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center}
  .hero-say h1{font-family:var(--ff-display);font-weight:800;font-size:clamp(1.7rem,3.4vw,2.85rem);line-height:1.12;letter-spacing:-.025em}
  .hero-say h1 .hi{color:var(--yellow)}
  .hero-say .lede{color:var(--muted);font-size:1.06rem;max-width:46ch}
  .hero-cta{margin-top:26px;display:flex;gap:13px;flex-wrap:wrap}
  .btn{padding:14px 26px;border-radius:32px;font-weight:700;font-size:.92rem;transition:transform .2s,background .2s;display:inline-block;text-align:center}
  .btn-y{background:var(--yellow);color:#0b0b16;box-shadow:0 18px 50px -20px rgba(255,216,77,.5)}
  /* Dark text on brand pink: 5.49:1, passes AA. White on this pink is only 3.56:1. */
  .btn-p{background:var(--pink);color:#0b0b16;box-shadow:0 18px 50px -20px rgba(255,45,120,.55)}
  .btn-o{border:1px solid var(--line2);color:var(--text)}
  .btn-o:hover{background:rgba(255,255,255,.05)}
  .btn:hover{transform:translateY(-2px)}
  @media(max-width:900px){.hero-say{grid-template-columns:1fr;gap:26px;align-items:start;margin-top:0}}

  /* ============ TRACTION BAR ============ */
  .traction{margin-top:52px;padding:0}
  .tgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
  .tcard{background:linear-gradient(160deg,rgba(255,255,255,.055),rgba(255,255,255,.015));border:1px solid var(--line);
    border-radius:18px;padding:24px 22px;position:relative;overflow:hidden}
  .tcard::after{content:"";position:absolute;inset:auto 0 0 0;height:2px;background:linear-gradient(90deg,var(--yellow),var(--pink),var(--cyan));opacity:.7}
  .tcard .n{font-family:var(--ff-display);font-weight:800;font-size:clamp(1.9rem,3.4vw,2.6rem);line-height:1;
    background:linear-gradient(120deg,var(--yellow),var(--pink));-webkit-background-clip:text;background-clip:text;color:transparent}
  .tcard.c2 .n{background:linear-gradient(120deg,var(--cyan),var(--yellow));-webkit-background-clip:text;background-clip:text;color:transparent}
  .tcard .l{font-size:.84rem;color:var(--muted);margin-top:9px;line-height:1.4}
  @media(max-width:820px){.tgrid{grid-template-columns:repeat(2,1fr)}}

  /* ============ SECTIONS ============ */
  section{padding:88px 0}
  section.wrap{padding:88px 24px}
  section.contact{padding:104px 24px}
  .label{font-family:var(--ff-mono);font-size:.68rem;letter-spacing:.24em;text-transform:uppercase;color:var(--yellow);margin-bottom:16px}
  h2{font-family:var(--ff-display);font-weight:700;font-size:clamp(1.4rem,2.7vw,2.15rem);line-height:1.16;letter-spacing:-.02em;max-width:26ch}
  .sub{color:var(--muted);margin-top:16px;max-width:60ch;font-size:1.03rem}

  /* ============ THE WEDGE ============ */
  .wedge{background:linear-gradient(150deg,var(--panel),var(--surface));border:1px solid var(--line);border-radius:28px;padding:52px 46px}
  .wedge h2{max-width:24ch}
  .wedge-split{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:38px}
  .wcol{border:1px solid var(--line);border-radius:18px;padding:26px;background:rgba(0,0,0,.22)}
  .wcol .h{font-family:var(--ff-mono);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:14px}
  .wcol.us .h{color:var(--yellow)}
  .wcol p{font-size:.97rem;color:var(--muted);line-height:1.6}
  .wcol.us p{color:var(--text)}
  @media(max-width:820px){.wedge{padding:34px 24px}.wedge-split{grid-template-columns:1fr}}

  /* ============ FOUNDERS ============ */
  .founders-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:38px}
  .fdr{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:26px;transition:border-color .3s,transform .3s}
  .fdr:hover{border-color:var(--line2);transform:translateY(-4px)}
  .fdr-badge{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;border-radius:15px;
    background:rgba(255,216,77,.12);color:var(--yellow);font-family:var(--ff-display);font-weight:800;font-size:1rem;
    margin-bottom:16px;border:1px solid rgba(255,216,77,.35)}
  .fdr b{display:block;font-family:var(--ff-head);font-weight:700;font-size:1.02rem;margin-bottom:7px}
  .fdr em{font-style:normal;color:var(--muted);font-size:.88rem;line-height:1.5}
  @media(max-width:900px){.founders-row{grid-template-columns:1fr 1fr}}
  @media(max-width:520px){.founders-row{grid-template-columns:1fr}}

  /* ============ PRODUCTS ============ */
  .prod-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:44px}
  .prod{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:26px;display:flex;flex-direction:column;
    transition:transform .35s cubic-bezier(.16,1,.3,1),border-color .3s,background .3s;position:relative}
  .prod:hover{transform:translateY(-6px);border-color:var(--line2);background:var(--panel)}
  .prod-top{display:flex;align-items:center;gap:14px;margin-bottom:16px}
  .prod img{width:48px;height:48px;border-radius:13px;object-fit:contain;background:rgba(255,255,255,.05);padding:5px;flex-shrink:0}
  .prod h3{font-family:var(--ff-head);font-weight:700;font-size:1.06rem;line-height:1.2}
  .prod .status{font-family:var(--ff-mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);margin-top:4px;display:block}
  .prod.soon .status{color:var(--pink)}
  .prod p{color:var(--muted);font-size:.9rem;flex:1;line-height:1.55}
  .prod .go{margin-top:18px;font-family:var(--ff-mono);font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);transition:color .25s}
  .prod:hover .go{color:var(--yellow)}
  @media(max-width:940px){.prod-grid{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:560px){.prod-grid{grid-template-columns:1fr}}

  /* ============ CLIENT WORK ============ */
  .work-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:44px}
  .work-tile{border-radius:18px;overflow:hidden;position:relative;aspect-ratio:4/3;border:1px solid var(--line);display:block}
  .work-tile img{width:100%;height:100%;object-fit:cover;transition:transform .55s cubic-bezier(.16,1,.3,1)}
  .work-tile:hover img{transform:scale(1.06)}
  .work-meta{position:absolute;left:0;right:0;bottom:0;padding:56px 20px 20px;
    background:linear-gradient(to top,rgba(6,6,12,.97) 22%,rgba(6,6,12,.82) 55%,transparent)}
  .work-meta h3{font-family:var(--ff-head);font-weight:700;font-size:1.03rem}
  .work-meta p{font-size:.76rem;color:var(--muted);margin-top:3px}
  @media(max-width:880px){.work-grid{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:520px){.work-grid{grid-template-columns:1fr}}

  /* ============ SERVICES ============ */
  .svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:44px;background:var(--line);border:1px solid var(--line);border-radius:22px;overflow:hidden}
  .svc{background:var(--bg);padding:30px;transition:background .4s}
  .svc:hover{background:var(--surface)}
  .svc h3{font-family:var(--ff-head);font-weight:700;font-size:1.1rem;margin-bottom:10px}
  .svc p{color:var(--muted);font-size:.9rem;line-height:1.55}
  @media(max-width:820px){.svc-grid{grid-template-columns:1fr}}

  /* ============ INDUSTRIES ============ */
  .ind-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:44px;background:var(--line);border:1px solid var(--line);border-radius:22px;overflow:hidden}
  .ind{background:var(--bg);padding:28px;transition:background .4s;display:block}
  .ind:hover{background:var(--surface)}
  .ind h3{font-family:var(--ff-head);font-weight:700;font-size:1.05rem;margin-bottom:10px;color:var(--yellow)}
  .ind p{color:var(--muted);font-size:.88rem;line-height:1.5}
  .ind-more{display:inline-block;margin-top:14px;font-family:var(--ff-mono);font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan)}
  .ind-note{margin-top:24px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:24px 26px;font-size:.95rem;color:var(--muted)}
  .ind-note b{color:var(--text)}
  .ind-note a{color:var(--cyan);font-weight:600}
  @media(max-width:820px){.ind-grid{grid-template-columns:1fr}}

  /* ============ GOVERNMENT ============ */
  .gov{background:var(--panel);border-radius:28px;padding:52px 46px}
  .gov-data{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:30px}
  .gov-cell{background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:14px;padding:17px 19px}
  .gov-cell span{display:block;font-family:var(--ff-mono);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
  .gov-cell b{font-size:.95rem;color:var(--text)}
  .naics-chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
  .naics-chips span{background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:20px;padding:7px 14px;font-size:.76rem;color:var(--muted)}
  .gov-cta{display:flex;gap:13px;flex-wrap:wrap;margin-top:30px}
  .gov-note{font-size:.8rem;color:var(--muted);margin-top:18px}
  @media(max-width:820px){.gov{padding:34px 24px}.gov-data{grid-template-columns:1fr}}

  /* ============ SCOPER ============ */
  .scoper{display:grid;grid-template-columns:1.3fr 1fr;gap:22px;margin-top:44px}
  .scoper-controls{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:28px}
  .sc-step{font-family:var(--ff-mono);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--yellow);margin-bottom:14px}
  .modlist,.pacelist{display:flex;flex-direction:column;gap:8px}
  .mod,.pace{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;cursor:pointer;transition:border-color .2s,background .2s}
  .mod:hover,.pace:hover{border-color:var(--yellow);background:rgba(255,255,255,.03)}
  .mod input,.pace input{width:18px;height:18px;accent-color:var(--yellow);flex-shrink:0}
  .mod span,.pace span{display:flex;flex-direction:column}
  .mod b,.pace b{font-size:.92rem;font-weight:600}
  .mod em,.pace em{font-style:normal;font-size:.75rem;color:var(--muted)}
  .scoper-out{background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:28px;height:fit-content;position:sticky;top:92px}
  .so-label{font-family:var(--ff-mono);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
  /* An email address is one unbreakable token. At 32 characters it runs off a
     phone unless it is allowed to break mid-word. */
  .so-range{font-family:var(--ff-display);font-weight:800;font-size:clamp(1.8rem,3.6vw,2.5rem);color:var(--yellow);margin-top:8px;line-height:1.1;overflow-wrap:anywhere}
  .so-meta{color:var(--muted);font-size:.84rem;margin-top:6px}
  .so-divider{height:1px;background:var(--line);margin:20px 0}
  .so-row{display:flex;justify-content:space-between;gap:14px;padding:8px 0;font-size:.87rem}
  .so-row span{color:var(--muted)} .so-row b{color:var(--text);text-align:right}
  .so-fine{font-size:.72rem;color:var(--muted);margin-top:14px;text-align:center}
  /* Grid children default to min-width:auto and will not shrink below their
     content's intrinsic width. A text input's is ~20 characters, which blew the
     contact form 100px past the edge of a phone until these were set to 0. */
  .scoper>*{min-width:0}
  .field input,.field select,.field textarea{min-width:0;max-width:100%}
  @media(max-width:880px){.scoper{grid-template-columns:1fr}.scoper-out{position:static}}

  /* ============ TIERS ============ */
  .tiers{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:44px}
  .tier{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:26px;display:flex;flex-direction:column;position:relative}
  .tier.featured{border-color:var(--yellow);box-shadow:0 20px 60px -34px rgba(255,216,77,.5)}
  .tier-flag{position:absolute;top:-11px;left:26px;background:var(--yellow);color:#0b0b16;font-family:var(--ff-mono);font-size:.6rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;padding:5px 12px;border-radius:20px}
  .tier-name{font-family:var(--ff-mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
  .tier-price{font-family:var(--ff-display);font-weight:800;font-size:1.75rem;margin:10px 0 18px}
  .tier ul{list-style:none;flex:1;display:flex;flex-direction:column;gap:10px;margin-bottom:22px}
  .tier li{font-size:.87rem;color:var(--muted);padding-left:20px;position:relative}
  .tier li::before{content:"\2726";position:absolute;left:0;color:var(--yellow)}
  .tier .btn{font-size:.82rem;padding:11px}
  @media(max-width:980px){.tiers{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:520px){.tiers{grid-template-columns:1fr}}

  /* ============ FUNDING CLOSE ============ */
  .fund{position:relative;background:linear-gradient(150deg,#1a0f2e,#0d0d1c 60%);border:1px solid var(--line2);border-radius:30px;padding:64px 52px;overflow:hidden}
  .fund::before{content:"";position:absolute;inset:0;background:
    radial-gradient(45% 60% at 12% 0%, rgba(255,45,120,.24), transparent 70%),
    radial-gradient(45% 60% at 88% 100%, rgba(0,212,255,.2), transparent 70%);pointer-events:none}
  .fund>*{position:relative}
  .fund h2{max-width:24ch;font-size:clamp(1.6rem,3.1vw,2.5rem)}
  .fund .sub{max-width:58ch}
  .fund-points{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:38px 0 34px}
  .fp{border:1px solid var(--line);border-radius:16px;padding:22px;background:rgba(0,0,0,.28)}
  .fp b{display:block;font-family:var(--ff-head);font-weight:700;font-size:.98rem;margin-bottom:7px;color:var(--yellow)}
  .fp p{font-size:.88rem;color:var(--muted);line-height:1.55}
  @media(max-width:880px){.fund{padding:38px 24px}.fund-points{grid-template-columns:1fr}}

  /* ============ CONTACT / FOOTER ============ */
  .contact{text-align:center;padding:104px 0}
  .contact h1,.contact h2{font-family:var(--ff-display);font-weight:700;line-height:1.16;letter-spacing:-.02em;
    margin:0 auto;font-size:clamp(1.6rem,3.2vw,2.6rem);max-width:22ch}
  .contact .sub{margin:20px auto 0}
  .contact .hero-cta{justify-content:center}
  footer{border-top:1px solid var(--line);padding:44px 0;color:var(--muted);font-size:.85rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:18px}
  footer a:hover{color:var(--text)}

  .reveal{opacity:0;transform:translateY(26px);transition:opacity .75s ease,transform .75s ease}
  .reveal.in{opacity:1;transform:none}
  @media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}

/* ============ SHARED PAGE COMPONENTS ============ */
.page-hero{padding:64px 24px 0;max-width:var(--max);margin:0 auto;position:relative}
.page-hero .kicker{margin-bottom:18px}
.page-hero h1{font-family:var(--ff-display);font-weight:800;font-size:clamp(1.9rem,3.8vw,3rem);line-height:1.1;letter-spacing:-.025em;max-width:20ch}
.page-hero .lede{color:var(--muted);font-size:1.08rem;max-width:60ch;margin-top:20px}
.page-hero .hero-cta{margin-top:28px}

.crumbs{font-family:var(--ff-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:20px}
.crumbs a{color:var(--muted)}
.crumbs a:hover{color:var(--yellow)}

/* Case study block: big product shot beside the story */
.case{display:grid;grid-template-columns:1.15fr .85fr;gap:36px;align-items:center;margin-top:34px;
  background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:26px;overflow:hidden}
.case.flip{grid-template-columns:.85fr 1.15fr}
.case.flip .case-shot{order:2}
.case-shot{border-radius:16px;overflow:hidden;border:1px solid var(--line);background:var(--bg);box-shadow:0 26px 60px -34px rgba(0,0,0,.9)}
.case-shot img{width:100%;height:auto;display:block}
.case-body h3{font-family:var(--ff-display);font-weight:700;font-size:1.35rem;letter-spacing:-.015em;margin-bottom:6px}
.case-body .role{font-family:var(--ff-mono);font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);margin-bottom:14px}
.case-body p{color:var(--muted);font-size:.96rem;line-height:1.62;margin-bottom:12px}
.case-body .go{font-family:var(--ff-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--yellow);display:inline-block;margin-top:6px}
.facts{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px}
.facts span{border:1px solid var(--line);border-radius:20px;padding:6px 12px;font-size:.75rem;color:var(--muted)}
@media(max-width:900px){.case,.case.flip{grid-template-columns:1fr;padding:20px;gap:22px}.case.flip .case-shot{order:0}}

/* Simple prose */
.prose{max-width:70ch;color:var(--muted);font-size:1rem;line-height:1.7}
.prose p{margin-bottom:16px}
.prose h3{font-family:var(--ff-head);font-weight:700;color:var(--text);font-size:1.1rem;margin:26px 0 10px}
.prose ul{margin:0 0 16px 20px}
.prose li{margin-bottom:8px}
.prose strong{color:var(--text)}

/* CTA band */
.ctaband{background:linear-gradient(140deg,var(--panel),var(--surface));border:1px solid var(--line);
  border-radius:26px;padding:46px 42px;text-align:center;margin-top:20px}
.ctaband h2{margin:0 auto;max-width:24ch}
.ctaband .sub{margin:16px auto 0}
.ctaband .hero-cta{justify-content:center}
@media(max-width:820px){.ctaband{padding:32px 22px}}

/* Gallery */
.gal{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:34px}
.gal figure{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--surface)}
/* Anchor to the top: product and site screenshots carry their meaning in the
   first screen, so a centre crop cuts the headline out of every tile. */
.gal img{width:100%;aspect-ratio:4/3;object-fit:cover;object-position:top center;display:block;transition:transform .5s cubic-bezier(.16,1,.3,1)}
.gal figure:hover img{transform:scale(1.05)}
.gal figcaption{padding:14px 16px;font-size:.84rem;color:var(--muted)}
.gal figcaption b{display:block;color:var(--text);font-family:var(--ff-head);font-weight:600;font-size:.94rem;margin-bottom:3px}
@media(max-width:880px){.gal{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.gal{grid-template-columns:1fr}}

/* ============ FORMS ============ */
.field{margin-bottom:18px}
.field label{display:block;font-family:var(--ff-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.field input,.field select,.field textarea{
  width:100%;background:rgba(0,0,0,.32);border:1px solid var(--line);border-radius:12px;
  color:var(--text);font-family:var(--ff-body);font-size:.98rem;padding:13px 15px;transition:border-color .2s,background .2s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--yellow);background:rgba(0,0,0,.5)}
.field textarea{resize:vertical;min-height:120px}
.field select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 20px) calc(50% + 2px),calc(100% - 15px) calc(50% + 2px);background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:42px}
.field select option{background:var(--panel);color:var(--text)}
.scoper-out a{color:var(--yellow)}
.scoper-out a.btn-o{color:var(--text)}

/* ============ NUMBERED STEP ROWS ============ */
/* Same cards as .founders-row but three-up, and responsive. Do not set
   grid-template-columns inline on these: an inline style beats the media
   queries below and the row will not collapse on a phone. */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:38px}
.steps>*{min-width:0}
@media(max-width:820px){.steps{grid-template-columns:1fr}}

/* Welcome film back in the hero, beside the copy. It is 9:16, so it gets a
   portrait frame rather than being cropped into a landscape slot. */
.hero-film{margin:0}
.hero-film video{display:block;width:100%;max-height:430px;aspect-ratio:9/16;object-fit:cover;margin-left:auto;
  border-radius:18px;border:1px solid var(--line);background:var(--surface);
  box-shadow:0 26px 60px -30px rgba(255,45,120,.35)}
@media(max-width:900px){.hero-film video{margin:0 auto;max-height:360px}}


/* ============ MOTION REEL ============ */
/* A studio that sells film should show film. The Bella product film is 16:9 and
   the motion graphics are square, so each keeps its own shape instead of being
   forced into one uniform grid. */
.reel{display:grid;grid-template-columns:1.25fr .75fr;gap:26px;align-items:center;margin-top:36px}
.reel>*{min-width:0}
.reel video{display:block;width:100%;border-radius:18px;border:1px solid var(--line);background:var(--surface);
  box-shadow:0 26px 60px -34px rgba(0,0,0,.9)}
.reel-hero{margin:0}
.reel-hero video{aspect-ratio:16/9;object-fit:cover}
.reel-side{display:grid;gap:18px}
.reel-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.reel-pair video{aspect-ratio:1/1;object-fit:cover;border-radius:14px}
.reel-note{color:var(--muted);font-size:.96rem;line-height:1.6}
.reel-note b{color:var(--text)}
@media(max-width:900px){
  .reel{grid-template-columns:1fr;gap:20px}
}

/* ============ FOUNDER CARDS WITH NAMES ============ */
/* Backers fund people, so the card leads with the name, not the discipline. */
.fdr .fdr-name{display:block;font-family:var(--ff-head);font-weight:700;font-size:1.05rem;margin-bottom:4px}
.fdr .fdr-role{display:block;font-family:var(--ff-mono);font-size:.6rem;letter-spacing:.11em;
  text-transform:uppercase;color:var(--cyan);margin-bottom:11px;line-height:1.5}

/* Illustrated founder avatars. The founders stay behind the scenes, so these
   are faceless by design and stand in for a photograph. */
.fdr-av{width:78px;height:78px;border-radius:50%;display:block;margin-bottom:16px;
  border:1px solid var(--line2);background:var(--bg)}

/* ============ CLIENT ROSTER ============ */
/* Named clients are the strongest proof on the page after the products, and the
   first rebuild dropped them. Sector label above the name so a stranger can see
   the range at a glance. */
.roster{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;margin-top:40px;
  background:var(--line);border:1px solid var(--line);border-radius:22px;overflow:hidden}
.roster div{background:var(--bg);padding:20px 18px;transition:background .35s}
.roster div:hover{background:var(--surface)}
.roster span{display:block;font-family:var(--ff-mono);font-size:.58rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--cyan);margin-bottom:7px}
.roster b{font-family:var(--ff-head);font-weight:600;font-size:.92rem;line-height:1.35;color:var(--text)}
@media(max-width:1000px){.roster{grid-template-columns:repeat(3,1fr)}}
@media(max-width:560px){.roster{grid-template-columns:repeat(2,1fr)}}

/* ============ TESTIMONIALS ============ */
.quotes{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:40px}
.quote{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:28px 26px;
  position:relative;display:flex;flex-direction:column;transition:transform .35s cubic-bezier(.16,1,.3,1),border-color .3s}
.quote:hover{transform:translateY(-5px);border-color:var(--line2)}
.quote::before{content:"\201C";position:absolute;top:6px;right:20px;font-family:var(--ff-display);
  font-size:4.2rem;line-height:1;color:var(--yellow);opacity:.18}
.quote blockquote{font-size:.98rem;line-height:1.65;color:var(--text);flex:1;margin:0 0 20px;position:relative}
.quote figcaption{border-top:1px solid var(--line);padding-top:16px}
.quote figcaption b{display:block;font-family:var(--ff-head);font-weight:700;font-size:.95rem;color:var(--yellow)}
.quote figcaption span{display:block;font-family:var(--ff-mono);font-size:.62rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);margin-top:5px}
.quote figcaption em{display:block;font-style:normal;font-size:.72rem;color:var(--muted);margin-top:7px;opacity:.85}
@media(max-width:980px){.quotes{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.quotes{grid-template-columns:1fr}}

/* Gallery tiles that open a live client site keep the image hover behaviour. */
.gal figure a{display:block}

/* Click-to-play films: a play affordance over the poster, so it is obvious the
   video is there without downloading it for everyone who scrolls past. */
.has-play{position:relative;cursor:pointer}
.has-play::after{content:"";position:absolute;left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;
  border-radius:50%;background:rgba(8,8,16,.72);border:1px solid var(--line2);backdrop-filter:blur(6px);
  pointer-events:none;transition:transform .25s,background .25s}
.has-play::before{content:"";position:absolute;left:50%;top:50%;margin:-11px 0 0 -6px;z-index:2;
  border-style:solid;border-width:11px 0 11px 18px;border-color:transparent transparent transparent var(--yellow);
  pointer-events:none}
.has-play:hover::after{transform:scale(1.08);background:rgba(8,8,16,.85)}
.has-play video{cursor:pointer}

/* ============ THE STUDIO ============ */
/* A corridor of doors, one per product. Built from CSS and the logos we already
   ship, so the whole page adds well under 100KB. Every door is an <a>, so it is
   reachable and operable from a keyboard without any extra work. We sell
   accessibility; an interactive piece a keyboard cannot open would be the worst
   possible advert for it. */
.studio{position:relative;padding:8px 0 0}
.studio::before{content:"";position:absolute;inset:-40px 0 auto;height:70%;
  background:radial-gradient(60% 80% at 50% 0%, rgba(255,216,77,.07), transparent 70%);pointer-events:none}
.doors{display:grid;grid-template-columns:repeat(5,1fr);gap:20px;margin-top:44px;position:relative}
@media(max-width:1100px){.doors{grid-template-columns:repeat(3,1fr)}}
@media(max-width:720px){.doors{grid-template-columns:repeat(2,1fr);gap:14px}}
@media(max-width:460px){.doors{grid-template-columns:1fr}}

.door{position:relative;display:block;border-radius:14px 14px 4px 4px;padding:22px 28px 54px;
  background:linear-gradient(170deg,var(--panel2) 0%,var(--panel) 55%,#0e0e1c 100%);
  border:1px solid var(--line2);border-bottom:3px solid rgba(0,0,0,.5);
  transform-origin:left center;transition:transform .5s cubic-bezier(.16,1,.3,1),box-shadow .5s,border-color .3s;
  box-shadow:0 20px 44px -28px rgba(0,0,0,.9), inset 0 1px 0 rgba(255,255,255,.06)}
.door::after{content:"";position:absolute;right:11px;top:52%;width:7px;height:19px;border-radius:4px;
  background:linear-gradient(180deg,#d8d8e4,#8b8b9c);box-shadow:0 1px 2px rgba(0,0,0,.6)}
.door:hover,.door:focus-visible{transform:perspective(900px) rotateY(-11deg);
  box-shadow:24px 26px 60px -30px rgba(0,0,0,.95), inset 0 1px 0 rgba(255,255,255,.09);border-color:var(--yellow)}
.door:hover .door-glow,.door:focus-visible .door-glow{opacity:1}
.door-glow{position:absolute;inset:0;border-radius:14px 14px 4px 4px;pointer-events:none;opacity:0;
  transition:opacity .5s;background:linear-gradient(100deg,transparent 30%,rgba(255,216,77,.16))}

.door-plate{width:58px;height:58px;margin:0 auto 16px;border-radius:14px;display:grid;place-items:center;
  background:rgba(0,0,0,.34);border:1px solid var(--line2);box-shadow:inset 0 2px 6px rgba(0,0,0,.5)}
.door-plate img{width:38px;height:38px;object-fit:contain}
.door h3{font-family:var(--ff-head);font-weight:700;font-size:.98rem;text-align:center;line-height:1.25;margin-bottom:6px}
.door p{font-size:.76rem;color:var(--muted);text-align:center;line-height:1.45;min-height:2.6em}

.door-foot{position:absolute;left:16px;right:16px;bottom:16px;display:flex;align-items:center;
  justify-content:space-between;gap:8px;border-top:1px solid var(--line);padding-top:11px}
.door-status{display:inline-flex;align-items:center;gap:6px;font-family:var(--ff-mono);
  font-size:.55rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.door-status .led{width:7px;height:7px;border-radius:50%;background:#39d98a;box-shadow:0 0 8px #39d98a;flex-shrink:0}
.door-status.soon .led{background:var(--yellow);box-shadow:0 0 8px var(--yellow)}
.door-lead{width:24px;height:24px;border-radius:50%;border:1px solid var(--line2);flex-shrink:0}

/* Room plate: who works behind these doors */
.crew{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:40px}
.crew-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:22px;text-align:center}
.crew-card img{width:64px;height:64px;border-radius:50%;margin:0 auto 14px;border:1px solid var(--line2);background:var(--bg)}
.crew-card b{display:block;font-family:var(--ff-head);font-weight:700;font-size:.95rem;margin-bottom:4px}
.crew-card span{display:block;font-family:var(--ff-mono);font-size:.58rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--cyan);margin-bottom:9px}
.crew-card em{font-style:normal;font-size:.8rem;color:var(--muted);line-height:1.5}
@media(max-width:820px){.crew{grid-template-columns:repeat(2,1fr)}}
@media(max-width:460px){.crew{grid-template-columns:1fr}}

@media(prefers-reduced-motion:reduce){
  .door,.door:hover,.door:focus-visible{transform:none;transition:none}
  .door-glow{transition:none}
}

/* ============ THE ROOM ============ */
/* An architectural interior built entirely from CSS. What sells a render is not
   geometry, it is light: a warm cove overhead, cool daylight through glass on
   one side, falling off into shadow on the other, and a floor that reflects
   both. Everything below is gradients and transforms, no images, so the whole
   room costs nothing to load. Still anchors underneath, so it stays keyboard
   operable and readable to a search engine. */
.room{position:relative;margin:44px 0 0;border-radius:26px;overflow:hidden;
  perspective:1600px;perspective-origin:50% 44%;background:#06060b;
  border:1px solid var(--line2);box-shadow:0 50px 120px -60px #000}
.room-scene{position:relative;transform-style:preserve-3d;padding:130px 44px 170px;min-height:700px}

/* ---- ceiling: timber slats with the cove light running between them ---- */
.room-ceiling{position:absolute;left:-34%;right:-34%;top:-8%;height:50%;
  transform:rotateX(-78deg);transform-origin:50% 0;
  background:
    repeating-linear-gradient(90deg,
      rgba(120,84,52,.30) 0 26px, rgba(74,52,34,.34) 26px 30px),
    linear-gradient(0deg,#161018 0%,#0d0a12 72%,#07070d 100%)}
.room-ceiling::after{content:"";position:absolute;left:20%;right:20%;bottom:11%;height:7px;border-radius:8px;
  background:linear-gradient(90deg,transparent,rgba(255,222,150,.98) 18%,rgba(255,236,190,1) 50%,rgba(255,222,150,.98) 82%,transparent);
  box-shadow:0 0 90px 34px rgba(255,196,92,.34), 0 0 200px 80px rgba(255,170,60,.14)}
/* warm bounce: the timber nearest the strip catches the light rather than
   simply being lit, which is the difference between wood and a brown rectangle */
.room-ceiling::before{content:"";position:absolute;left:8%;right:8%;bottom:0;height:46%;
  background:linear-gradient(0deg,rgba(255,186,96,.20),rgba(255,160,70,.06) 46%,transparent 78%);
  mix-blend-mode:screen}

/* dust hanging in the beam under the cove */
.room-beam{position:absolute;left:30%;right:30%;top:5%;height:34%;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,214,150,.055),rgba(255,196,92,.018) 46%,transparent 82%);
  clip-path:polygon(22% 0,78% 0,100% 100%,0 100%);filter:blur(22px)}

/* ---- floor: polished concrete, light pooling under the cove ---- */
.room-floor{position:absolute;left:-34%;right:-34%;bottom:-10%;height:66%;
  transform:rotateX(78deg);transform-origin:50% 100%;
  background:
    radial-gradient(58% 46% at 50% 4%, rgba(255,196,92,.20), transparent 70%),
    repeating-linear-gradient(90deg,rgba(255,255,255,.045) 0 1px,transparent 1px 120px),
    repeating-linear-gradient(0deg,rgba(255,255,255,.032) 0 1px,transparent 1px 120px),
    linear-gradient(180deg,#191926 0%,#0e0e18 52%,#07070d 100%)}
/* the wet-look sheen a polished slab gets under a strip light */
.room-floor::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(255,255,255,.09),transparent 34%)}
/* the window reflected in the slab: flipped, blurred, and fading out as it
   travels away from the glass, which is what a polished floor actually does */
.room-floor::before{content:"";position:absolute;left:1%;width:38%;top:26%;height:74%;
  background:url("media/brand/phoenix-skyline.svg") center top/cover no-repeat;
  transform:scaleY(-1) skewX(-14deg);transform-origin:50% 50%;
  filter:blur(9px) saturate(1.15);opacity:.26;
  -webkit-mask-image:linear-gradient(100deg,rgba(0,0,0,.9),rgba(0,0,0,.35) 46%,transparent 82%);
  mask-image:linear-gradient(100deg,rgba(0,0,0,.9),rgba(0,0,0,.35) 46%,transparent 82%)}

/* ---- left wall: floor to ceiling glass, daylight coming through ---- */
.room-wall{position:absolute;top:-2%;bottom:-2%;width:36%}
.room-wall.l{left:-13%;width:42%;transform:rotateY(64deg);transform-origin:left center;
  background:
    linear-gradient(90deg, rgba(255,255,255,.10), rgba(255,255,255,.03) 40%, transparent 72%),
    url("media/brand/phoenix-skyline.svg") center/cover no-repeat, #0d0a18;
  box-shadow:inset 0 0 90px 30px rgba(10,8,20,.75)}
/* the glass itself: a sheen across the pane, and the warm cove reflected in it */
.room-wall.l .pane{position:absolute;inset:0;pointer-events:none;
  background:
    /* the cove light, reflected back off the glass */
    linear-gradient(180deg, transparent 16%, rgba(255,214,150,.16) 20%, transparent 25%),
    /* a ghost of the lit wall behind the viewer */
    linear-gradient(180deg, transparent 44%, rgba(190,200,255,.06) 52%, transparent 66%),
    /* the sheen across the pane */
    linear-gradient(112deg, rgba(255,255,255,.16) 0 12%, transparent 26% 62%, rgba(255,214,150,.10) 74%, transparent 88%)}
/* mullions */
.room-wall.l::before,.room-wall.l::after{content:"";position:absolute;top:0;bottom:0;width:3px;
  background:rgba(10,10,16,.85);box-shadow:0 0 12px rgba(0,0,0,.6)}
.room-wall.l::before{left:34%}
.room-wall.l::after{left:68%}

/* ---- right wall: dark acoustic panelling, in shadow ---- */
.room-wall.r{right:-10%;transform:rotateY(-72deg);transform-origin:right center;
  background:
    /* the cove reaching the top of the panelling and dying out below */
    linear-gradient(180deg, rgba(255,201,120,.16), rgba(255,180,90,.05) 26%, transparent 58%),
    /* vertical timber slats, the shadowed face darker than the lit one */
    repeating-linear-gradient(90deg,
      rgba(255,255,255,.055) 0 9px, rgba(0,0,0,.34) 9px 13px),
    repeating-linear-gradient(180deg, rgba(255,255,255,.02) 0 3px, transparent 3px 11px),
    linear-gradient(270deg, rgba(122,96,70,.22), rgba(0,0,0,.62) 74%), #0a0812}

/* ---- the backlit logo wall ---- */
.room-brand{position:relative;text-align:center;margin-bottom:58px;transform:translateZ(-110px)}
.room-brand img{width:100px;height:100px;margin:0 auto 18px;border-radius:24px;
  filter:drop-shadow(0 14px 26px rgba(0,0,0,.75)) drop-shadow(0 0 46px rgba(255,216,77,.42))}
.room-brand p{font-family:var(--ff-mono);font-size:.6rem;letter-spacing:.44em;text-transform:uppercase;
  color:rgba(255,255,255,.5);text-shadow:0 2px 10px rgba(0,0,0,.9)}
.room-brand::after{content:"";position:absolute;left:50%;top:-56px;width:620px;height:300px;margin-left:-310px;
  background:radial-gradient(closest-side,rgba(255,206,120,.19),transparent 70%);pointer-events:none}

/* ---- the doors, mounted on the back wall ---- */
.room .doors{position:relative;transform:translateZ(-110px);margin-top:0}
.room .door{background:linear-gradient(168deg,rgba(44,44,70,.96),rgba(15,15,28,.97));
  border-color:rgba(255,255,255,.17);
  box-shadow:0 26px 50px -30px #000, inset 0 1px 0 rgba(255,255,255,.09)}
.room .door:hover,.room .door:focus-visible{transform:perspective(900px) rotateY(-13deg) translateZ(30px);
  box-shadow:30px 34px 70px -34px #000, inset 0 1px 0 rgba(255,255,255,.12)}
/* depth of field: the doors at the edges are further away, so they soften and
   darken slightly. Focus pulls to the centre of the wall, the way a lens does. */
.room .doors > :nth-child(1),.room .doors > :nth-child(5),
.room .doors > :nth-child(6),.room .doors > :nth-child(10){filter:blur(.7px) brightness(.9)}
.room .doors > :nth-child(2),.room .doors > :nth-child(4),
.room .doors > :nth-child(7),.room .doors > :nth-child(9){filter:blur(.25px) brightness(.96)}
.room .door:hover,.room .door:focus-visible{filter:none !important}

/* each door throws a soft pool of light down the wall beneath it */
/* the pool of light a lit door throws on a polished floor, plus the door's own
   mirrored ghost fading out as it travels away from the base */
/* Only the front row pools on the floor. The back row's reflection would fall
   on floor the front row is standing on, so drawing it there put light on top
   of the doors in front, which is backwards. */
.room .doors > :nth-child(n+6)::before{content:"";position:absolute;left:5%;right:5%;bottom:-32px;height:32px;
  background:
    linear-gradient(180deg,rgba(176,184,230,.40),rgba(132,142,198,.13) 40%,transparent 76%),
    radial-gradient(closest-side at 50% 0,rgba(255,216,77,.26),transparent);
  opacity:.85;transition:opacity .5s;filter:blur(3px)}
.room .doors > :nth-child(n+6):hover::before,
.room .doors > :nth-child(n+6):focus-visible::before{opacity:1}

/* ---- foreground: a desk edge cropped by the frame, so the viewer is standing
        in the room rather than looking at a picture of one ---- */
.room-desk{position:absolute;left:6%;right:6%;bottom:-4%;height:120px;pointer-events:none;
  background:linear-gradient(180deg,#1d1526 0%,#120d1b 34%,#0a0710 100%);
  border-top:1px solid rgba(255,214,150,.22);border-radius:10px 10px 0 0;
  box-shadow:0 -22px 50px -18px rgba(0,0,0,.9), inset 0 2px 0 rgba(255,255,255,.06)}
.room-desk::before{content:"";position:absolute;left:12%;top:-46px;width:78px;height:46px;
  background:linear-gradient(180deg,#171122,#0d0916);border-radius:8px 8px 0 0;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07)}
.room-desk::after{content:"";position:absolute;right:16%;top:-30px;width:120px;height:30px;
  background:linear-gradient(180deg,#171122,#0d0916);border-radius:60px 60px 0 0;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
@media(max-width:900px){.room-desk{display:none}}

/* ---- depth: corners fall into shadow, like a real interior ---- */
.room::after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:26px;
  background:
    radial-gradient(120% 90% at 50% 42%, transparent 42%, rgba(0,0,0,.55) 100%),
    linear-gradient(90deg, rgba(0,0,0,.42), transparent 22%, transparent 78%, rgba(0,0,0,.5))}

@media(max-width:900px){
  .room-scene{padding:74px 18px 96px;min-height:0}
  .room-beam,.room-floor::before{display:none}
  .room-wall{display:none}
  .room-brand img{width:72px;height:72px}
  .room-brand::after{width:340px;margin-left:-170px}
}
@media(prefers-reduced-motion:reduce){
  .room .door,.room .door:hover,.room .door:focus-visible{transform:none}
}


/* ============ INDUSTRY BAND ============
   A continuous strip of the sectors we actually work in, sitting under the
   header. Two identical sets slide left by exactly one set width, so the
   moment the first set leaves the frame the second is in register and the
   loop is seamless. The second set is aria-hidden: it is the same links
   twice, and a screen reader should hear each sector once. */
.ticker{position:relative;overflow:hidden;background:linear-gradient(180deg,#12101f,#0c0a16);
  border-block:1px solid var(--line)}
.ticker::before,.ticker::after{content:"";position:absolute;top:0;bottom:0;width:88px;z-index:2;
  pointer-events:none}
.ticker::before{left:0;background:linear-gradient(90deg,#0c0a16,transparent)}
.ticker::after{right:0;background:linear-gradient(270deg,#0c0a16,transparent)}
.ticker-track{display:flex;width:max-content;list-style:none;margin:0;padding:0;
  animation:ticker-slide 64s linear infinite}
.ticker-track > li{list-style:none}
.ticker-set{display:flex;align-items:center;gap:8px;list-style:none;margin:0;padding:0 4px}
.ticker-set li{list-style:none}
@keyframes ticker-slide{from{transform:translateX(0)}to{transform:translateX(-50%)}}

.ticker a{display:block;white-space:nowrap;padding:11px 15px;font-size:.8rem;
  font-family:var(--ff-mono);letter-spacing:.04em;color:var(--muted);text-decoration:none;
  border-radius:999px;transition:color .2s, background .2s}
.ticker a:hover,.ticker a:focus-visible{color:var(--ink);background:rgba(255,216,77,.12)}
.ticker a:focus-visible{outline:2px solid var(--yellow);outline-offset:-2px}
/* stop the strip while someone is reading or tabbing it, so a moving target
   never has to be chased with a cursor */
.ticker:hover .ticker-track,.ticker:focus-within .ticker-track{animation-play-state:paused}

@media(max-width:640px){
  .ticker a{padding:10px 12px;font-size:.74rem}
  .ticker::before,.ticker::after{width:44px}
}
@media(prefers-reduced-motion:reduce){
  /* no movement at all, and the strip becomes something you scroll yourself
     so every sector is still reachable */
  .ticker{overflow-x:auto}
  .ticker-track{animation:none}
}


/* ============ ACCOUNTS ============ */
.auth-hero{padding-bottom:0}
.auth-wrap{padding-top:28px;padding-bottom:96px}
.auth-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.9fr);gap:56px;align-items:start}
@media(max-width:900px){.auth-grid{grid-template-columns:1fr;gap:40px}}

.auth-card{background:linear-gradient(168deg,rgba(30,30,50,.92),rgba(14,14,26,.96));
  border:1px solid var(--line);border-radius:20px;padding:34px 32px}
@media(max-width:520px){.auth-card{padding:26px 20px}}
.auth-h{font-family:var(--ff-head);font-weight:800;font-size:1.9rem;line-height:1.15;margin-bottom:8px}
.auth-sub{color:var(--muted);margin-bottom:24px;line-height:1.55}

.auth-label{display:block;font-family:var(--ff-mono);font-size:.74rem;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted);margin-bottom:7px}
.auth-input{width:100%;padding:13px 15px;margin-bottom:18px;border-radius:11px;
  background:rgba(0,0,0,.34);border:1px solid var(--line2);color:var(--ink);
  font-family:var(--ff-body);font-size:1rem}
.auth-input::placeholder{color:rgba(255,255,255,.3)}
.auth-input:focus{outline:2px solid var(--yellow);outline-offset:1px;border-color:transparent}
/* the code is the one field worth making unmistakable */
.auth-code{font-family:var(--ff-mono);font-size:1.7rem;letter-spacing:.42em;text-align:center;
  padding:15px 15px 15px 27px;margin-bottom:8px}

.auth-checks{margin:4px 0 20px}
.auth-check{display:flex;gap:11px;align-items:flex-start;margin-bottom:10px;padding:4px 0;
  min-height:24px;font-size:.9rem;line-height:1.45;color:var(--muted);cursor:pointer}
.auth-check input{margin-top:1px;width:19px;height:19px;flex-shrink:0;accent-color:var(--yellow)}
.auth-check a{color:var(--ink);text-decoration:underline;text-underline-offset:2px}
.auth-fine{font-size:.82rem;color:var(--muted);line-height:1.5;margin-top:4px}
.auth-fine a,.auth-help a{color:var(--ink);text-decoration:underline;text-underline-offset:2px}
.auth-help{font-size:.82rem;color:var(--muted);line-height:1.5;margin-top:12px}
.auth-submit{width:100%;justify-content:center;margin-top:4px}
.auth-alt{margin-top:18px;font-size:.9rem;color:var(--muted)}
.auth-alt a{color:var(--yellow);text-decoration:underline;text-underline-offset:3px}
.linkish{background:none;border:0;padding:0;color:var(--yellow);font:inherit;cursor:pointer;
  text-decoration:underline;text-underline-offset:3px}
.linkish:focus-visible{outline:2px solid var(--yellow);outline-offset:3px;border-radius:3px}

/* errors announce themselves via role=alert, so they must also look like errors */
.auth-error{margin:2px 0 14px;padding:11px 13px;border-radius:10px;font-size:.88rem;line-height:1.45;
  background:rgba(255,92,92,.12);border:1px solid rgba(255,120,120,.42);color:#ffd9d9}

.auth-why{padding-top:8px}
.auth-why h2{font-family:var(--ff-head);font-weight:800;font-size:1.35rem;margin-bottom:8px}
.auth-why-lede{color:var(--muted);line-height:1.55;margin-bottom:26px}
.auth-why-block{margin-bottom:22px}
.auth-why-block h3{font-family:var(--ff-mono);font-size:.76rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--yellow);margin-bottom:9px}
.auth-why-block ul{list-style:none;margin:0;padding:0}
.auth-why-block li{position:relative;padding-left:20px;margin-bottom:8px;color:var(--muted);
  font-size:.93rem;line-height:1.5}
.auth-why-block li::before{content:"";position:absolute;left:2px;top:.62em;width:7px;height:7px;
  border-radius:50%;background:var(--yellow);opacity:.75}
.auth-why-note{font-size:.85rem;color:var(--muted);line-height:1.55;padding-top:18px;
  border-top:1px solid var(--line)}

/* ---- the signed in view ---- */
.acct-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;
  flex-wrap:wrap;margin-bottom:28px}
.acct-note{color:var(--muted);line-height:1.6;padding:16px 18px;border-radius:12px;
  background:rgba(255,255,255,.04);border:1px solid var(--line)}
.acct-note a{color:var(--yellow)}
.acct-warn{background:rgba(255,196,92,.10);border-color:rgba(255,196,92,.38);color:#ffe6bd}
.acct-list{list-style:none;margin:0;padding:0;display:grid;gap:16px}
.acct-item{background:linear-gradient(168deg,rgba(30,30,50,.9),rgba(14,14,26,.95));
  border:1px solid var(--line);border-radius:16px;padding:22px 24px}
.acct-item-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;
  flex-wrap:wrap;margin-bottom:12px}
.acct-item-head h2{font-family:var(--ff-head);font-weight:700;font-size:1.08rem}
.acct-date{font-family:var(--ff-mono);font-size:.74rem;color:var(--muted);white-space:nowrap}
.acct-links{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:9px}
.acct-links a{display:inline-block;padding:9px 14px;border-radius:999px;font-size:.86rem;
  background:rgba(255,216,77,.13);border:1px solid rgba(255,216,77,.3);
  color:var(--ink);text-decoration:none}
.acct-links a:hover{background:rgba(255,216,77,.22)}
.acct-links a:focus-visible{outline:2px solid var(--yellow);outline-offset:2px}


/* ============ GIVING ============ */
.f-giving{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);
  font-size:.82rem;line-height:1.55;color:var(--muted)}
.f-giving a{color:var(--yellow);text-decoration:underline;text-underline-offset:2px}

.give-band{padding-top:0}
.give-band-in{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:48px;align-items:center;
  background:linear-gradient(150deg,rgba(46,32,64,.92),rgba(16,14,28,.96));
  border:1px solid var(--line);border-radius:24px;padding:44px 46px}
@media(max-width:860px){.give-band-in{grid-template-columns:1fr;gap:30px;padding:32px 24px}}
.give-band-note{margin-top:16px;font-size:.88rem;line-height:1.6;color:var(--muted);
  padding-left:15px;border-left:2px solid rgba(255,216,77,.42)}
/* the number is the claim, so it gets to be the loudest thing in the band */
.give-figure{display:grid;justify-items:center;gap:6px;padding:8px 26px}
.give-pct{font-family:var(--ff-head);font-weight:900;font-size:5.4rem;line-height:.9;
  background:linear-gradient(160deg,var(--yellow),var(--pink));
  -webkit-background-clip:text;background-clip:text;color:transparent}
.give-pct sup{font-size:.42em;top:-.5em}
.give-of{font-family:var(--ff-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted)}
@media(max-width:860px){.give-pct{font-size:4rem}.give-figure{padding:0}}

.shop-giving{margin-top:14px;font-size:.92rem;line-height:1.6;color:var(--muted)}
.shop-giving a{color:var(--yellow);text-decoration:underline;text-underline-offset:2px}

.give-wrap{padding-top:26px;display:grid;gap:22px;justify-items:start}
.give-card{width:100%;max-width:900px}
.give-card{background:linear-gradient(168deg,rgba(30,30,50,.9),rgba(14,14,26,.95));
  border:1px solid var(--line);border-radius:18px;padding:32px 34px}
@media(max-width:520px){.give-card{padding:24px 20px}}
.give-card h2{font-family:var(--ff-head);font-weight:800;font-size:1.35rem;margin-bottom:18px}
.give-card h3{font-family:var(--ff-head);font-weight:700;font-size:1.02rem;margin:22px 0 8px;color:var(--yellow)}
.give-card h3:first-of-type{margin-top:0}
.give-card p{color:var(--muted);line-height:1.65;margin-bottom:12px}
.give-card a{color:var(--yellow);text-decoration:underline;text-underline-offset:2px}
.give-card strong{color:var(--ink)}
/* the flagged card is the one people skip, so it does not get to look optional */
.give-flag{border-color:rgba(255,196,92,.34);background:linear-gradient(168deg,rgba(52,40,26,.72),rgba(18,15,26,.95))}
.give-cta{margin-top:18px}
.give-cta a{text-decoration:none}
.give-note{padding-top:16px;border-top:1px solid var(--line);font-size:.9rem}

.give-terms{display:grid;grid-template-columns:170px minmax(0,1fr);gap:14px 24px;margin:0}
@media(max-width:640px){.give-terms{grid-template-columns:1fr;gap:4px 0}
  .give-terms dd{margin-bottom:16px}}
.give-terms dt{font-family:var(--ff-mono);font-size:.72rem;letter-spacing:.07em;text-transform:uppercase;
  color:var(--yellow);padding-top:3px}
.give-terms dd{margin:0;color:var(--muted);line-height:1.65}

/* card headings are h2 for document structure, not for page-level emphasis */
.pg-card h2{font-family:var(--ff-head);font-weight:700;font-size:1.15rem;line-height:1.25;
  margin-bottom:8px;max-width:none;letter-spacing:0}


/* ============ SHOP ENTRY POINT ============
   The homepage linked to the shop zero times for three weeks. Nav alone is not
   enough: a price in front of someone is what makes a shop look like a shop. */
.shop-cta{padding-top:0}
.shop-cta-in{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:48px;align-items:center;
  background:linear-gradient(150deg,rgba(26,38,58,.94),rgba(14,14,26,.96));
  border:1px solid var(--line);border-radius:24px;padding:44px 46px}
@media(max-width:860px){.shop-cta-in{grid-template-columns:1fr;gap:28px;padding:32px 24px}}
.shop-cta-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.shop-cta-list li{display:flex;gap:14px;align-items:baseline;color:var(--muted);
  font-size:.95rem;line-height:1.4;padding-bottom:10px;border-bottom:1px solid var(--line)}
.shop-cta-list li:last-child{border-bottom:0;padding-bottom:0}
.shop-cta-list span{font-family:var(--ff-head);font-weight:800;font-size:1.05rem;color:var(--yellow);
  min-width:52px;flex-shrink:0}


/* ============ PRODUCT PRICING ============
   These four collect money on their own domains and the marketing site showed
   no price, so every visitor concluded they were free. */
.prod-pricing .pp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:16px;margin-top:28px}
.pp-tier{background:linear-gradient(168deg,rgba(30,30,50,.9),rgba(14,14,26,.95));
  border:1px solid var(--line);border-radius:16px;padding:22px 22px 24px}
.pp-name{font-family:var(--ff-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.pp-price{font-family:var(--ff-head);font-weight:800;font-size:1.7rem;color:var(--yellow);margin:6px 0 10px;line-height:1}
.pp-tier p{color:var(--muted);font-size:.88rem;line-height:1.5;margin:0}
