/* ===== tokens.css ===== */

/* ============================================================
   SINGERS WANTED THEATER — DESIGN TOKENS
   Single source of truth. Never hard-code a hex anywhere else.
   ============================================================ */
:root{
  /* --- Brand: evergreen (survives past FLAPPER!) --- */
  --noir:#0C0A10;
  --crimson:#6E0F1E;
  --champagne:#EEC97D;
  --candle:#F6E3B4;
  --bone:#F6F0E4;
  --ivory:#FBF4E2;
  --ivory-hi:#FDFBF4;
  --ink:#1A1410;
  --umber:#5C4B33;
  --foil:#C9973F;
  --foil-dk:#8A5A1E;

  /* --- Show skin: FLAPPER! (swap per production) --- */
  --velvet-dk:#3F0710;
  --velvet-md:#7E1524;
  --velvet-lo:#550C17;

  /* --- Semantic --- */
  --bg:var(--noir);
  --fg:var(--bone);
  --accent:var(--champagne);
  --link:var(--champagne);
  --link-hover:var(--candle);
  --rule:rgba(238,201,125,.25);
  --ok:#2E7D4F;
  --err:#B3261E;

  /* --- Type --- */
  --font-display:'Big Shoulders Display',Impact,'Haettenschweiler','Arial Narrow Bold',sans-serif;
  --font-body:'Source Serif 4',Georgia,'Times New Roman',serif;
  --font-label:'Archivo','Helvetica Neue',Arial,sans-serif;

  /* --- Scale --- */
  --step--1:13.5px;
  --step-0:17px;
  --step-1:19px;
  --step-2:24px;
  --step-3:34px;
  --step-4:clamp(40px,6vw,58px);
  --step-5:clamp(64px,8vw,96px);
  --step-6:clamp(64px,10vw,120px);

  /* --- Space --- */
  --sp-1:8px; --sp-2:14px; --sp-3:22px; --sp-4:34px;
  --sp-5:48px; --sp-6:64px; --sp-7:80px; --sp-8:110px;

  /* --- Layout --- */
  --wrap:1240px;
  --header-h:72px;

  /* --- Motion --- */
  --ease:cubic-bezier(.2,.7,.2,1);
}

/* ===== base.css ===== */

/* ---------- RESET + ELEMENTS ---------- */
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--fg);
  font-family:var(--font-body);font-size:var(--step-0);line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--link);text-underline-offset:2px}
a:hover{color:var(--link-hover)}
:focus-visible{outline:2px solid var(--champagne);outline-offset:3px}
h1,h2,h3{margin:0}
p{margin:0}

/* Utility type classes carried over from the design */
.disp{font-family:var(--font-display)}
.lbl{font-family:var(--font-label)}

.skip-link{position:absolute;left:-9999px;top:0;z-index:999;background:var(--champagne);
  color:var(--noir);padding:12px 20px;font-family:var(--font-label);font-weight:700;
  font-size:13px;letter-spacing:.18em;text-decoration:none}
.skip-link:focus{left:8px;top:8px}

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

/* ---------- FOIL / SHIMMER ---------- */
.shimmer{background:linear-gradient(100deg,#F6F0E4,#F6E3B4 35%,#EEC97D 55%,#FFF3D6 70%,#F6F0E4);
  background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:shimmer 6s linear infinite}
.foil-shimmer{background:linear-gradient(100deg,#8A5A1E,#C9973F 45%,#8A5A1E);
  background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:shimmer 6s linear infinite}
@keyframes shimmer{0%{background-position:200% 50%}100%{background-position:0% 50%}}
@keyframes twinkle{0%,100%{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1.15)}}
@keyframes pulse{0%,100%{opacity:.65}50%{opacity:1}}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important}
}

/* ===== layout.css ===== */

/* ---------- LAYOUT ---------- */
.wrap{max-width:var(--wrap);margin:0 auto}
.section{padding:var(--sp-7) var(--sp-6)}
.section--light{background:var(--ivory);color:var(--ink)}
.section--light-hi{background:var(--ivory-hi);color:var(--ink);border-top:1px solid rgba(201,151,63,.4)}
.section--dark{background:var(--noir);color:var(--bone)}
section[id],div[id].ramp{scroll-margin-top:calc(var(--header-h) + 12px)}

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-6);align-items:center}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-5)}
.grid-show{display:grid;grid-template-columns:1fr 470px;gap:var(--sp-6);align-items:center}

/* Interior page header (every page except home) */
.page-head{position:relative;padding:calc(var(--header-h) + var(--sp-7)) var(--sp-6) var(--sp-6);
  background:var(--noir);overflow:hidden;text-align:center}
.page-head .glow{position:absolute;inset:0;
  background:radial-gradient(760px 420px at 50% -20%,rgba(238,201,125,.20),rgba(238,201,125,0) 62%)}
.page-head .inner{position:relative}
.page-head .kicker{font-family:var(--font-label);font-weight:600;font-size:13px;
  letter-spacing:.34em;text-indent:.34em;color:var(--champagne)}
.page-head h1{font-family:var(--font-display);font-weight:800;font-size:var(--step-4);
  line-height:1;margin-top:var(--sp-2);letter-spacing:.02em}
.page-head .dek{margin-top:var(--sp-2);font-style:italic;color:rgba(246,240,228,.85);
  max-width:620px;margin-left:auto;margin-right:auto}

@media (max-width:900px){
  .section{padding:var(--sp-6) var(--sp-3)}
  .page-head{padding:calc(var(--header-h) + var(--sp-5)) var(--sp-3) var(--sp-5)}
  .grid-2,.grid-3,.grid-show{grid-template-columns:1fr;gap:var(--sp-4)}
}

/* ===== components.css ===== */

/* ---------- BUTTONS ---------- */
.cta{display:inline-block;background:linear-gradient(180deg,var(--candle),var(--champagne));
  color:var(--noir);text-decoration:none;font-family:var(--font-display);font-weight:700;
  font-size:21px;letter-spacing:.08em;padding:18px 48px;border:0;cursor:pointer;
  box-shadow:0 10px 40px rgba(238,201,125,.3);transition:transform .2s ease,box-shadow .2s ease}
.cta:hover{transform:translateY(-2px);box-shadow:0 14px 50px rgba(238,201,125,.45);color:var(--noir)}
.cta--block{display:block;width:100%;text-align:center;font-size:20px;padding:16px 12px}
.cta--ghost{background:none;color:var(--champagne);border:1px solid rgba(238,201,125,.7);
  box-shadow:none;padding:16px 34px}
.cta--ghost:hover{background:rgba(238,201,125,.12);color:var(--candle);box-shadow:none}

.link-underline{display:inline-block;color:var(--crimson);font-family:var(--font-label);
  font-weight:700;font-size:14px;letter-spacing:.12em;text-decoration:none;
  border-bottom:2px solid var(--champagne);padding-bottom:4px}
.link-underline:hover{color:var(--foil-dk)}

/* ---------- SECTION HEADINGS ---------- */
.secnum{font-family:var(--font-display);font-weight:800;font-size:var(--step-2)}
.eyebrow{font-family:var(--font-label);font-weight:600;font-size:13px;
  letter-spacing:.34em;text-indent:.34em;color:var(--crimson)}

/* ---------- PLAYBILL CARD ---------- */
.playbill{border:1px solid rgba(238,201,125,.45);padding:34px 30px;text-align:center;
  background:var(--noir);color:var(--bone);box-shadow:0 20px 60px rgba(12,10,16,.25)}
.playbill .rule{height:1px;background:linear-gradient(90deg,transparent,var(--champagne),transparent);
  margin:20px 30px}
.playbill .dates{font-family:var(--font-display);font-weight:700;font-size:var(--step-2);
  letter-spacing:.14em;margin:14px 0 4px}
.playbill .meta{font-family:var(--font-label);font-size:12px;letter-spacing:.2em;
  color:rgba(246,240,228,.7)}
.playbill .venue{font-family:var(--font-display);font-weight:700;font-size:19px;letter-spacing:.12em}
.playbill .venue-note{font-size:14px;font-style:italic;color:rgba(246,240,228,.75);margin-top:6px}
.playbill .stars{color:var(--champagne);font-size:18px;letter-spacing:.5em;text-indent:.5em}

/* ---------- GOLD LIST ---------- */
.gold-list{margin-top:16px;font-size:15.5px;line-height:2}
.gold-list span{color:var(--foil)}

/* ---------- PORTRAIT ---------- */
.portrait{width:150px;height:150px;border-radius:50%;flex:none;object-fit:cover;
  background:radial-gradient(circle at 35% 30%,#F6E3B4,#C9973F);
  display:flex;align-items:center;justify-content:center;font-family:var(--font-display);
  font-weight:800;font-size:44px;color:rgba(12,10,16,.55)}

blockquote{font-size:var(--step-1);line-height:1.65;font-style:italic;margin:0;
  padding-left:22px;border-left:3px solid var(--champagne)}

/* ---------- FINALE BAR ---------- */
.finale{max-width:var(--wrap);margin:var(--sp-6) auto 0;position:relative;background:var(--noir);
  color:var(--bone);padding:44px 48px;display:flex;justify-content:space-between;
  align-items:center;gap:40px;overflow:hidden}
.finale-dust{position:absolute;inset:0;
  background-image:radial-gradient(circle,rgba(242,212,138,.5) 1px,transparent 1.5px);
  background-size:120px 100px;opacity:.5}
.finale > *{position:relative}
.finale .head{font-family:var(--font-display);font-weight:800;font-size:38px;line-height:1}
.finale .note{font-size:15px;font-style:italic;margin-top:8px;color:var(--candle)}

/* ---------- FORMS ---------- */
.form{max-width:640px;margin:0 auto}
.field{margin-bottom:var(--sp-3)}
.field label{display:block;font-family:var(--font-label);font-weight:600;font-size:13px;
  letter-spacing:.1em;text-transform:uppercase;margin-bottom:7px;color:var(--umber)}
.field .hint{font-size:14px;font-style:italic;color:var(--umber);margin-top:5px}
.field input,.field select,.field textarea{width:100%;font-family:var(--font-body);
  font-size:17px;padding:13px 14px;border:1px solid rgba(90,75,51,.35);background:#fff;
  color:var(--ink);border-radius:0}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--foil);
  outline:2px solid rgba(201,151,63,.35);outline-offset:0}
.field textarea{min-height:120px;resize:vertical}
.field--required label::after{content:" *";color:var(--crimson)}
.form-note{font-size:14px;color:var(--umber);margin-top:var(--sp-2)}
.form-error{color:var(--err);font-size:14px;margin-top:6px;display:none}
.is-invalid .form-error{display:block}
.form-status{margin-top:var(--sp-3);font-family:var(--font-label);font-size:14px}

@media (max-width:900px){
  .finale{flex-direction:column;text-align:center;padding:36px 24px}
  .cta{width:100%;text-align:center;padding:18px 20px}
}

/* ============================================================
   THE MARK
   One element, one set of geometry, used everywhere. On the home
   page it starts centered on the curtain and travels to the header
   slot; on every other page it is simply already in the slot.
   Because it is the SAME element, there is no cross-fade and no
   z-index fight with the header.
   ============================================================ */
.mark{position:fixed;z-index:60;width:460px;max-width:88vw;
  left:94px;top:36px;transform:translate(-50%,-50%) scale(.27);
  display:block;text-align:center;text-decoration:none;color:inherit;
  pointer-events:auto;filter:drop-shadow(0 6px 30px rgba(0,0,0,.55))}
.mark .stars{display:block;color:var(--champagne);font-size:26px;
  letter-spacing:.5em;text-indent:.5em}
.mark .word{display:block;font-family:var(--font-display);font-weight:800;
  font-size:74px;line-height:.95;letter-spacing:.04em;margin:10px 0 8px;
  background:linear-gradient(100deg,#B98A3E,#F6E3B4 35%,#EEC97D 55%,#FFF3D6 70%,#B98A3E);
  background-size:220% 100%;-webkit-background-clip:text;background-clip:text;
  color:transparent;animation:shimmer 5s linear infinite}
.mark .theater{display:flex;align-items:center;gap:14px;justify-content:center;color:var(--bone)}
.mark .theater i{display:block;height:1px;width:70px;background:var(--champagne)}
.mark .theater b{font-family:var(--font-display);font-weight:600;font-size:22px;
  letter-spacing:.55em;text-indent:.55em}

/* Home page: the mark starts centered on the curtain and flies to the slot. */
body.has-logo-flight .mark{
  transition:left 1.5s cubic-bezier(.7,0,.2,1) .35s,
             top 1.5s cubic-bezier(.7,0,.2,1) .35s,
             transform 1.5s cubic-bezier(.7,0,.2,1) .35s}
body.has-logo-flight:not(.curtain-open) .mark{
  left:50%;top:45%;transform:translate(-50%,-50%) scale(1);
  /* while it is the curtain lockup it must not eat the click that opens it */
  pointer-events:none}

@media (max-width:1120px){
  .mark{left:69px;top:36px;transform:translate(-50%,-50%) scale(.22)}
}

/* ============================================================
   GLITTER CANVAS + CURTAIN SCROLL LOCK
   ============================================================ */

/* Site-wide glitter layer. Fixed to the viewport, above every element,
   and never interactive — whatever is underneath owns the pointer. */
.glitter{position:fixed;inset:0;z-index:200;pointer-events:none;display:block}
@media (prefers-reduced-motion:reduce){.glitter{display:none}}

/* The home page arrives locked. Nothing scrolls until the curtain is opened.
   The class is written into <html> at build time so the lock is in force on
   the first frame, before any script runs; curtain.js removes it on open. */
html.curtain-locked,
html.curtain-locked body{
  overflow:hidden;height:100%;overscroll-behavior:none;touch-action:none}
html.curtain-locked body{padding-bottom:0}
html.curtain-locked .sticky-cta{display:none}

/* ===== header-footer.css ===== */

/* ---------- GLOBAL HEADER ----------
   Fully transparent at the top of every page. It only takes a background
   once the visitor has scrolled past the hero, or when the mobile menu is
   open. The logo is NOT in here: `.mark` is position:fixed and sits above
   the header, so it can fly in from the curtain without a z-index fight. */
.global-header{position:fixed;top:0;left:0;right:0;z-index:50;height:var(--header-h);
  display:flex;justify-content:flex-end;align-items:center;gap:30px;padding:0 32px;
  background:transparent;border-bottom:1px solid transparent;
  transition:background .4s ease,border-color .4s ease}
body.scrolled .global-header{background:rgba(12,10,16,.94);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  border-bottom-color:var(--rule)}
body.menu-open .global-header{background:rgba(12,10,16,.97);border-bottom-color:var(--rule)}

/* Home page only: the whole bar slides down after the curtain opens. */
.global-header--reveal{transform:translateY(-100%);
  transition:transform .7s var(--ease),background .4s ease,border-color .4s ease}
body.nav-open .global-header--reveal{transform:translateY(0)}

.gh-nav{display:flex;gap:30px;align-items:center}
.gh-nav a{color:var(--bone);text-decoration:none;font-family:var(--font-label);
  font-size:13px;font-weight:600;letter-spacing:.18em;white-space:nowrap;
  text-shadow:0 1px 12px rgba(12,10,16,.85)}
.gh-nav a:hover{color:var(--champagne)}
.gh-nav a[aria-current="page"]{color:var(--champagne)}
.gh-nav a.nav-cta{color:var(--champagne);font-weight:700;
  border:1px solid rgba(238,201,125,.7);padding:10px 18px}
.gh-nav a.nav-cta:hover{background:rgba(238,201,125,.12)}

/* Mobile menu */
.gh-toggle{display:none;background:none;border:1px solid rgba(238,201,125,.5);color:var(--champagne);
  font-family:var(--font-label);font-size:11px;font-weight:700;letter-spacing:.2em;
  padding:9px 13px;cursor:pointer}

/* Sticky mobile CTA */
.sticky-cta{display:none;position:fixed;left:0;right:0;bottom:0;z-index:45;padding:10px 12px;
  background:rgba(12,10,16,.96);border-top:1px solid var(--rule)}
.sticky-cta .cta{font-size:18px;padding:15px 12px}

/* ---------- GLOBAL FOOTER ---------- */
.global-footer{position:relative;background:var(--noir);color:var(--bone);text-align:center;
  padding:60px 24px 48px;overflow:hidden}
.gf-dust{position:absolute;inset:0;
  background-image:radial-gradient(circle,rgba(242,212,138,.45) 1px,transparent 1.5px);
  background-size:140px 120px;opacity:.4}
.gf-inner{position:relative}
.gf-wm{font-family:var(--font-display);font-weight:800;font-size:26px;letter-spacing:.1em;
  background:linear-gradient(100deg,#B98A3E,#F6E3B4 40%,#EEC97D 60%,#B98A3E);background-size:220% 100%;
  -webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 5s linear infinite}
.gf-rule{height:1px;background:linear-gradient(90deg,transparent,var(--champagne),transparent);
  margin:24px auto;max-width:320px}
.gf-nav{display:flex;gap:28px;justify-content:center;flex-wrap:wrap;font-family:var(--font-label);
  font-size:12px;font-weight:600;letter-spacing:.18em;margin-bottom:22px}
.gf-nav a{color:var(--bone);text-decoration:none}
.gf-nav a:hover{color:var(--champagne)}
.gf-fine{font-family:var(--font-label);font-size:13px;line-height:1.9;color:rgba(246,240,228,.7)}
.gf-fine a{color:var(--candle);text-decoration:none}

@media (max-width:1120px){
  .global-header{padding:0 18px}
    .gh-toggle{display:block}
  .gh-nav{position:fixed;top:var(--header-h);left:0;right:0;flex-direction:column;gap:0;
    background:rgba(12,10,16,.985);border-bottom:1px solid var(--rule);padding:8px 0 16px;
    display:none}
  body.menu-open .gh-nav{display:flex}
  .gh-nav a{padding:16px 20px;width:100%;text-align:center}
  .gh-nav a.nav-cta{margin:10px 20px 0;width:auto}
  .sticky-cta{display:block}
  body{padding-bottom:76px}
}

/* ===== pages.css ===== */

/* ---------- PAGE-SPECIFIC ---------- */
/* Show section (home + /flapper/) */
.show{position:relative;padding:var(--sp-8) var(--sp-6);overflow:hidden;
  background:var(--ivory);color:var(--ink)}
.show-glow{position:absolute;inset:0;
  background:radial-gradient(700px 480px at 30% -10%,rgba(238,201,125,.35),rgba(238,201,125,0) 62%)}
.show-dust{position:absolute;inset:0;
  background-image:radial-gradient(circle,rgba(201,151,63,.55) 1px,transparent 1.6px);
  background-size:150px 130px;opacity:.3;
  -webkit-mask-image:linear-gradient(180deg,black,transparent);
  mask-image:linear-gradient(180deg,black,transparent)}
.show-grid{position:relative;max-width:var(--wrap);margin:0 auto}
.show h2{font-family:var(--font-display);font-weight:800;font-size:var(--step-5);
  line-height:.94;margin:18px 0 0}
.show .synopsis{font-size:var(--step-1);line-height:1.65;margin:24px 0 0;max-width:520px}
.show .pull{font-size:var(--step-1);margin:14px 0 0;color:var(--crimson);font-style:italic}
.show .sub-lbl{font-family:var(--font-label);font-size:12px;letter-spacing:.22em;
  color:var(--umber);margin-top:10px}

/* Steps list (auditions) */
.steps{counter-reset:step;list-style:none;padding:0;margin:var(--sp-4) 0 0;max-width:760px}
.steps li{counter-increment:step;position:relative;padding-left:60px;margin-bottom:var(--sp-4)}
.steps li::before{content:counter(step);position:absolute;left:0;top:-4px;
  font-family:var(--font-display);font-weight:800;font-size:32px;color:var(--foil)}
.steps h3{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:.04em}
.steps p{margin-top:6px}

/* Callout */
.callout{border-left:3px solid var(--champagne);background:rgba(238,201,125,.10);
  padding:var(--sp-3) var(--sp-4);margin:var(--sp-4) 0}
.callout--dark{background:rgba(238,201,125,.08);color:var(--bone)}
.callout .title{font-family:var(--font-display);font-weight:700;font-size:20px;
  letter-spacing:.06em;margin-bottom:6px}

/* Contact rows */
.contact-list{list-style:none;padding:0;margin:var(--sp-4) 0 0;font-size:var(--step-1)}
.contact-list li{padding:var(--sp-2) 0;border-bottom:1px solid rgba(90,75,51,.2)}
.contact-list .k{font-family:var(--font-label);font-size:12px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--umber);display:block;margin-bottom:4px}

/* 404 */
.oops{min-height:70vh;display:flex;align-items:center;justify-content:center;text-align:center;
  padding:calc(var(--header-h) + var(--sp-6)) var(--sp-3) var(--sp-6)}
