/* =============================================================================
   SECOND BELL — "The Broadsheet"
   A warm, editorial, school-newspaper take on a teacher's desk.
   Palette pulled from the desk photo: cream paper, mahogany, brass, and a
   single schoolhouse red for every action and every red-pen mark.
   ----------------------------------------------------------------------------
   Type:  Fraunces (display, self-hosted) · Source Sans 3 (body, self-hosted)
          Caveat (hand, self-hosted)       · Space Mono (ledger/PA, Google)
   ========================================================================== */

/* ---------- self-hosted variable fonts ---------- */
@font-face{font-family:'Fraunces';font-style:normal;font-weight:100 900;font-display:swap;src:url('assets/fonts/fraunces.woff2') format('woff2');}
@font-face{font-family:'Fraunces';font-style:italic;font-weight:100 900;font-display:swap;src:url('assets/fonts/fraunces-italic.woff2') format('woff2');}
@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:200 900;font-display:swap;src:url('assets/fonts/sourcesans3.woff2') format('woff2');}
@font-face{font-family:'Source Sans 3';font-style:italic;font-weight:200 900;font-display:swap;src:url('assets/fonts/sourcesans3-italic.woff2') format('woff2');}
@font-face{font-family:'Caveat';font-style:normal;font-weight:400 700;font-display:swap;src:url('assets/fonts/caveat.woff2') format('woff2');}

/* =============================================================================
   TOKENS
   ========================================================================== */
:root{
  /* paper / cream */
  --paper:      #f3eada;
  --paper-2:    #ece0cb;
  --paper-3:    #e0d1b8;
  --cream:      #fbf6ec;

  /* wood / espresso — the dark feature surfaces */
  --wood-900:   #1d0e07;
  --wood-800:   #2a160d;
  --wood-700:   #3a2014;
  --wood-600:   #532e1c;

  /* ink — text */
  --ink:        #2b1c12;
  --ink-soft:   #6a5746;
  --ink-faint:  #9b876f;
  --on-wood:    #f6ecdb;
  --on-wood-soft:#d7c3a6;

  /* brass + metals */
  --brass:      #b9843e;
  --brass-bright:#dcb05c;
  --brass-deep: #8a5f2a;

  /* schoolhouse red — the primary action color & every red-pen mark */
  --red:        #b23a2a;
  --red-bright: #cc4836;
  --red-deep:   #8c2c1f;

  /* chalkboard green — the secondary accent (open/affirmative cues) */
  --green:      #3c7a5e;
  --green-deep: #224a3a;
  --green-bright:#6fb892;

  /* hairlines */
  --line:       rgba(43,28,18,.18);
  --line-soft:  rgba(43,28,18,.10);

  /* type */
  --display: 'Fraunces','Iowan Old Style',Georgia,serif;
  --body:    'Source Sans 3',system-ui,-apple-system,sans-serif;
  --hand:    'Caveat','Bradley Hand',cursive;
  --mono:    'Space Mono',ui-monospace,'SFMono-Regular',Menlo,monospace;

  /* rhythm */
  --maxw: 1180px;
  --gutter: clamp(20px,5vw,56px);
  --radius: 4px;

  /* tactile letterpress shadow (warm) */
  --press:    5px 5px 0 var(--ink);
  --press-lg: 7px 7px 0 var(--ink);
  --shadow-sm: 0 1px 2px rgba(29,14,7,.08), 0 3px 8px rgba(29,14,7,.07);
  --shadow-md: 0 6px 16px rgba(29,14,7,.12), 0 18px 40px rgba(29,14,7,.14);
}

/* evening mode — pull the lamp chain to dim the room */
[data-theme="night"]{
  --paper:   #271a12;
  --paper-2: #2f2016;
  --paper-3: #3a281b;
  --cream:   #2c1e14;
  --ink:     #f0e2cd;
  --ink-soft:#c6ad8d;
  --ink-faint:#9a8166;
  --line:    rgba(240,226,205,.16);
  --line-soft:rgba(240,226,205,.08);
  --press:   5px 5px 0 #100804;
  --press-lg:7px 7px 0 #100804;
  --brass-deep:#b98a44;
  --green:      #5a9d7c;
  --green-deep: #2c5a47;
  --green-bright:#7cc6a0;
}

/* =============================================================================
   BASE
   ========================================================================== */
*{box-sizing:border-box;}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;scroll-padding-top:88px;}
body{
  margin:0;font-family:var(--body);color:var(--ink);background:var(--paper);
  font-size:18px;line-height:1.65;overflow-x:hidden;
  transition:background .5s ease,color .5s ease;
}
img{max-width:100%;display:block;}
a{color:inherit;}
button{font-family:inherit;cursor:pointer;color:inherit;}
::selection{background:var(--red);color:var(--on-wood);}
:focus-visible{outline:3px solid var(--brass);outline-offset:3px;border-radius:2px;}
h1,h2,h3,h4{
  font-family:var(--display);font-weight:600;line-height:1.04;letter-spacing:-.014em;margin:0;
  font-optical-sizing:auto;font-variation-settings:"SOFT" 30;text-wrap:balance;
}
p{text-wrap:pretty;margin:0;}

/* =============================================================================
   LAYOUT HELPERS
   ========================================================================== */
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter);}
.wrap>*{min-width:0;}
.section{position:relative;padding:clamp(64px,9vw,128px) 0;}
.section.tight{padding:clamp(48px,6vw,84px) 0;}

/* paper grain — laid over light sections */
.grain::before{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:0;mix-blend-mode:multiply;opacity:.045;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
}
[data-theme="night"] .grain::before{mix-blend-mode:screen;opacity:.03;}

/* hero: visibly darker in night mode so the day-to-night switch reads clearly */
[data-theme="night"] .hero-photo::after{
  background:
    radial-gradient(120% 90% at 28% 28%,rgba(8,4,2,.82),rgba(8,4,2,.94) 70%,rgba(8,4,2,.98)),
    linear-gradient(180deg,rgba(8,4,2,.88),rgba(8,4,2,.78) 30%,rgba(8,4,2,.96));
}
[data-theme="night"] .hero-glow{opacity:.25;}

/* cursor spotlight — a warm lantern pool that follows the pointer, night mode only */
.hero-spotlight{
  position:absolute;inset:0;z-index:2;pointer-events:none;
  opacity:0;transition:opacity .5s ease;
  background:radial-gradient(320px circle at var(--sx,50%) var(--sy,40%),
    rgba(255,210,120,.35),rgba(255,190,90,.12) 35%,transparent 56%);
  mix-blend-mode:screen;
}
[data-theme="night"] .hero:hover .hero-spotlight{opacity:1;}
@media(hover:none),(prefers-reduced-motion:reduce){.hero-spotlight{display:none;}}

.cream-bg{background:var(--cream);}
.deep-bg{background:var(--wood-900);color:var(--on-wood);}

/* the broadsheet double rule */
.rule{height:0;border:0;border-top:3px double var(--ink);opacity:.55;margin:0;}

/* =============================================================================
   SHARED EDITORIAL BITS
   ========================================================================== */
.kicker{
  font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.18em;
  text-transform:uppercase;color:var(--red);
}
.kicker::before{content:"";width:26px;height:2px;background:currentColor;display:inline-block;vertical-align:middle;margin-right:10px;margin-bottom:3px;}
.kicker.on-dark{color:var(--brass-bright);}
.kicker.center{display:block;text-align:center;}

.hand{font-family:var(--hand);font-weight:600;color:var(--red);line-height:1;}

.sec-head{max-width:760px;}
.sec-head .display{font-size:clamp(30px,5vw,54px);margin-top:14px;}
.sec-head .lead{margin-top:20px;}
.lead{font-size:clamp(18px,2vw,22px);color:var(--ink-soft);line-height:1.6;}

/* a struck-through word (the red pen) */
.strike{position:relative;white-space:nowrap;}
.strike::after{
  content:"";position:absolute;left:-2%;right:-2%;top:54%;height:3px;background:var(--red);
  border-radius:2px;transform:scaleX(0);transform-origin:left;transition:transform .6s cubic-bezier(.2,.7,.2,1);
}
.in .strike::after,.strike.go::after{transform:scaleX(1);}

/* hand-drawn ink annotations (circle / underline) drawn on scroll */
.annot{position:relative;display:inline-block;}
.annot .ink{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:128%;height:150%;
  color:var(--red);pointer-events:none;overflow:visible;}
.annot.annot-underline .ink{top:auto;bottom:-12px;transform:translateX(-50%);height:18px;width:108%;}
.annot .ink path{stroke-dasharray:1;stroke-dashoffset:1;}
.annot.drawn .ink path{animation:inkDraw 1s ease forwards;}
@keyframes inkDraw{to{stroke-dashoffset:0;}}

/* =============================================================================
   BUTTONS
   ========================================================================== */
.btn{
  display:inline-flex;align-items:center;gap:10px;
  background:var(--red);color:var(--on-wood);
  font-family:var(--display);font-weight:600;font-size:16px;letter-spacing:.005em;
  padding:14px 24px;border:none;border-radius:var(--radius);text-decoration:none;white-space:nowrap;
  box-shadow:0 2px 0 var(--red-deep),var(--shadow-sm);
  transition:transform .14s ease,box-shadow .14s ease,background .2s ease;
}
.btn:hover{transform:translateY(-2px);background:var(--red-bright);box-shadow:0 4px 0 var(--red-deep),var(--shadow-md);}
.btn:active{transform:translateY(1px);box-shadow:0 1px 0 var(--red-deep);}
.btn .arr{transition:transform .2s ease;}
.btn:hover .arr{transform:translateX(4px);}

.btn.ghost{background:transparent;color:var(--ink);border:1.6px solid var(--line);box-shadow:none;}
.btn.ghost:hover{background:rgba(43,28,18,.05);border-color:var(--ink);transform:translateY(-2px);box-shadow:none;}
.btn.on-dark{color:var(--on-wood);border-color:rgba(246,236,219,.32);}
.btn.on-dark:hover{background:rgba(246,236,219,.08);border-color:var(--brass-bright);}
.btn.lg{font-size:18px;padding:17px 30px;}

/* =============================================================================
   MASTHEAD / NAV
   ========================================================================== */
/* The bar is invisible over the hero — the dark desk texture runs clean to the
   top edge. A smart scroll controller (app.js) drops a solid-wood backing in
   once you scroll down into the lighter sections, and slides the whole bar out
   of the way while you read (translateY); it returns the instant you scroll up. */
.masthead{position:fixed;top:0;left:0;right:0;z-index:60;background:transparent;
  border-bottom:1px solid transparent;
  transition:transform .42s cubic-bezier(.4,0,.2,1),background .35s ease,border-color .35s ease,box-shadow .35s ease;
  will-change:transform;}
/* scrolled past the hero — drop the dark-brown backing in so the cream type
   stays razor-sharp over the cream-and-paper sections below */
.masthead.solid{background:linear-gradient(180deg,var(--wood-800),var(--wood-900));
  border-bottom-color:color-mix(in srgb,var(--brass) 36%,transparent);
  box-shadow:0 16px 36px -20px rgba(0,0,0,.82);}
/* reading (scrolling down) — get out of the way entirely */
.masthead.hidden{transform:translateY(-100%);}
.masthead-inner{max-width:var(--maxw);margin:0 auto;padding:16px var(--gutter);
  display:flex;align-items:center;justify-content:space-between;gap:18px;}
.brand{display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--on-wood);}
/* the "2" mark stands on its own now — no chip. A soft drop-shadow keeps the
   cream numeral and brass clapper crisp over the busy desk photo. */
.brand-mark{flex:0 0 auto;display:grid;place-items:center;}
.brand-mark svg{width:auto;height:50px;filter:drop-shadow(0 2px 10px rgba(0,0,0,.55));}
.brand-name{display:flex;flex-direction:column;line-height:.96;}
.brand-name b{font-family:var(--display);font-weight:700;font-size:38px;letter-spacing:-.02em;
  text-shadow:0 1px 12px rgba(0,0,0,.5);}
.nav-links{display:flex;align-items:center;gap:24px;}
.nav-links a{font-family:var(--body);font-weight:600;font-size:12px;letter-spacing:.15em;text-transform:uppercase;
  text-decoration:none;color:var(--on-wood-soft);transition:color .2s ease;position:relative;
  text-shadow:0 1px 10px rgba(0,0,0,.5);}
.nav-links a:hover{color:var(--on-wood);}
.nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:1.5px;background:var(--brass-bright);
  transform:scaleX(0);transform-origin:left;transition:transform .25s ease;}
.nav-links a:hover::after{transform:scaleX(1);}
.nav-cta{display:flex;align-items:center;gap:14px;}
/* the cohort note, restamped as a little catalog tag — squared corners, a brass
   hairline and a mono face, with a live green pip that keeps pulsing */
.nav-pill{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:10.5px;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;color:var(--on-wood-soft);
  border:1px solid color-mix(in srgb,var(--brass) 50%,transparent);border-radius:3px;padding:7px 13px;text-decoration:none;
  background:rgba(20,10,5,.28);box-shadow:inset 0 0 14px rgba(0,0,0,.3);
  transition:border-color .25s ease,color .25s ease,background .25s ease;}
.nav-pill:hover{border-color:var(--brass-bright);color:var(--on-wood);background:rgba(20,10,5,.45);}
.nav-pill .dot{width:7px;height:7px;border-radius:50%;background:var(--green-bright);
  box-shadow:0 0 0 0 var(--green-bright);animation:pulse 2.4s infinite;}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(111,184,146,.5);}70%{box-shadow:0 0 0 7px rgba(111,184,146,0);}100%{box-shadow:0 0 0 0 rgba(111,184,146,0);}}
.nav-toggle{display:none;background:rgba(20,10,5,.25);color:var(--on-wood);
  border:1.5px solid color-mix(in srgb,var(--on-wood-soft) 38%,transparent);border-radius:8px;padding:9px;}
.nav-toggle svg{width:20px;height:20px;display:block;}

/* =============================================================================
   PA ANNOUNCEMENT MARQUEE
   ========================================================================== */
.pa{background:var(--wood-900);color:var(--on-wood);overflow:hidden;
  border-top:2px solid var(--wood-900);border-bottom:2px solid var(--brass-deep);}
.pa-track{display:flex;width:max-content;animation:marquee 34s linear infinite;
  font-family:var(--mono);font-size:13px;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;padding:11px 0;}
.pa-track span{display:inline-flex;align-items:center;}
.pa-track .star{color:var(--brass-bright);margin:0 .9em;}
.pa-track .ding{color:var(--red-bright);margin:0 .9em;}
.pa:hover .pa-track{animation-play-state:paused;}
@keyframes marquee{from{transform:translateX(0);}to{transform:translateX(-50%);}}

/* =============================================================================
   HERO
   ========================================================================== */
.hero{position:relative;background:var(--wood-900);color:var(--on-wood);overflow:hidden;isolation:isolate;}
.hero-photo{position:absolute;top:-4%;left:0;right:0;height:108%;z-index:0;will-change:transform;
  background-image:image-set(url('assets/desk-hero.avif') type('image/avif'),url('assets/desk-hero.jpg') type('image/jpeg'));
  background-size:cover;background-position:center 34%;}
.hero-photo::after{content:"";position:absolute;inset:0;
  background:
    radial-gradient(120% 90% at 28% 28%,rgba(29,14,7,.18),rgba(29,14,7,.72) 70%,rgba(29,14,7,.92)),
    linear-gradient(180deg,rgba(29,14,7,.55),rgba(29,14,7,.35) 30%,rgba(29,14,7,.8));}
.hero-glow{position:absolute;z-index:1;width:60vw;height:60vw;max-width:680px;max-height:680px;
  left:18%;top:6%;background:radial-gradient(circle,rgba(220,176,92,.22),transparent 62%);pointer-events:none;
  filter:blur(8px);}
/* extra top padding clears the now-transparent fixed masthead overlaid above */
.hero-inner{position:relative;z-index:2;max-width:var(--maxw);margin:0 auto;padding:clamp(100px,9vw,124px) var(--gutter) clamp(48px,7vw,92px);}
.hero-grid{display:grid;grid-template-columns:1.32fr .68fr;gap:clamp(28px,4vw,56px);align-items:center;}
.hero h1{font-size:clamp(44px,8vw,92px);font-weight:600;line-height:.98;letter-spacing:-.03em;margin:22px 0 0;}
.hero h1 .em{font-style:italic;color:var(--brass-bright);}
.hero h1 .strike{color:var(--on-wood-soft);}
.hero h1 .strike::after{background:var(--red-bright);height:4px;}
.hero-sub{font-size:clamp(18px,2.1vw,22px);line-height:1.55;color:var(--on-wood-soft);max-width:36ch;margin:26px 0 0;}
.hero-sub b{color:var(--on-wood);font-weight:600;}
.hero-cta{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:34px;}

/* the bell, centerpiece of the hero right column */
.hero-bell{display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center;}
.bell-stage{position:relative;display:grid;place-items:center;padding:14px;}
.bell-stage::before{content:"";position:absolute;width:128%;height:128%;border-radius:50%;
  background:radial-gradient(circle,rgba(220,176,92,.20),transparent 60%);}
.bell-note{font-family:var(--hand);font-size:23px;color:var(--brass-bright);line-height:1.1;max-width:15ch;}
.bell-note .u{text-decoration:underline;text-decoration-color:rgba(220,176,92,.5);text-underline-offset:3px;}

/* the ringable brass bell button (shared) */
.bell-btn{position:relative;background:none;border:none;padding:0;display:inline-grid;place-items:center;
  transform-origin:50% 8%;line-height:0;-webkit-tap-highlight-color:transparent;}
.bell-btn .bell-ico{display:block;width:100%;height:100%;filter:drop-shadow(0 14px 18px rgba(0,0,0,.45));}
.bell-btn .bell-ico img{width:100%;height:100%;object-fit:contain;}
.bell-btn:hover{transform:translateY(-2px) rotate(-1deg);}
.bell-btn.ringing{animation:bellShake .7s cubic-bezier(.36,.07,.19,.97);}
@keyframes bellShake{10%{transform:rotate(-9deg);}20%{transform:rotate(8deg);}35%{transform:rotate(-6deg);}
  50%{transform:rotate(5deg);}65%{transform:rotate(-3deg);}80%{transform:rotate(2deg);}100%{transform:rotate(0);}}
.bell-wave{position:absolute;left:50%;top:46%;width:40%;height:40%;border:2px solid var(--brass-bright);
  border-radius:50%;transform:translate(-50%,-50%) scale(.5);opacity:.7;pointer-events:none;
  animation:bellWave 1s ease-out forwards;}
@keyframes bellWave{to{transform:translate(-50%,-50%) scale(2.4);opacity:0;}}
/* the bell easter egg — a little hand-written card the bell answers with, every ring */
.bell-egg{position:fixed;z-index:90;transform:translateX(-50%);width:max-content;max-width:300px;pointer-events:none;
  background:var(--cream);color:var(--ink);border:1.5px solid var(--ink);border-radius:9px;padding:12px 17px;
  box-shadow:var(--press),var(--shadow-md);font-family:var(--hand);font-size:21px;line-height:1.22;text-align:center;
  animation:bellEgg 3.6s cubic-bezier(.2,.7,.2,1) forwards;}
.bell-egg.multi{font-size:18px;line-height:1.4;text-align:left;}
.bell-egg .by{display:block;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--red);margin-top:9px;text-align:right;}
.bell-egg::after{content:"";position:absolute;left:50%;bottom:-7px;width:12px;height:12px;background:var(--cream);
  border-right:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);transform:translateX(-50%) rotate(45deg);}
.bell-egg.below::after{bottom:auto;top:-7px;border:0;border-left:1.5px solid var(--ink);border-top:1.5px solid var(--ink);}
@keyframes bellEgg{0%{opacity:0;transform:translateX(-50%) translateY(8px) scale(.95);}
  9%{opacity:1;transform:translateX(-50%) translateY(0) scale(1);}
  84%{opacity:1;transform:translateX(-50%) translateY(0) scale(1);}
  100%{opacity:0;transform:translateX(-50%) translateY(-10px) scale(1);}}
@media(prefers-reduced-motion:reduce){.bell-egg{animation:bellEggStill 3.6s steps(1) forwards;}}
@keyframes bellEggStill{0%,90%{opacity:1;}100%{opacity:0;}}

/* =============================================================================
   PROBLEM — "Period Zero"
   ========================================================================== */
.problem{background:var(--paper);}
.problem .big{font-family:var(--display);font-size:clamp(26px,4.4vw,46px);font-weight:500;line-height:1.16;
  letter-spacing:-.018em;max-width:20ch;}
.problem .big .struck{position:relative;}
.problem .big .struck::after{content:"";position:absolute;left:-2%;right:-2%;top:55%;height:3px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .6s ease .2s;}
.problem.in .big .struck::after,.problem .big .struck.go::after{transform:scaleX(1);}
.problem .big .muted{color:var(--ink-faint);}
.problem .big .hl{background:linear-gradient(transparent 58%,rgba(220,176,92,.42) 58%);padding:0 .05em;}
.problem .turn{margin-top:26px;}
.problem-foot{display:grid;grid-template-columns:1.1fr .9fr;gap:30px;align-items:end;margin-top:48px;}
.problem-note{position:relative;justify-self:end;text-align:right;}
.problem-note .pn-text{font-family:var(--hand);font-size:30px;color:var(--red);display:inline-block;transform:rotate(-3deg);}

/* =============================================================================
   GUT-CHECK — "Is this for you?"
   ========================================================================== */
.checklist{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:42px;}
.check-card{background:var(--cream);border:1.5px solid var(--ink);border-radius:6px;padding:26px 28px;box-shadow:var(--press);position:relative;}
.check-card .cc-label{font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  display:inline-flex;align-items:center;gap:9px;}
.check-card.yes .cc-label{color:var(--green-deep);}
[data-theme="night"] .check-card.yes .cc-label{color:var(--green-bright);}
.check-card.no .cc-label{color:var(--ink-faint);}
.check-list{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;gap:14px;}
.check-list li{display:flex;gap:12px;align-items:flex-start;font-size:16.5px;line-height:1.45;color:var(--ink);}
.check-list li svg{flex:0 0 auto;margin-top:3px;}
.check-card.yes li svg{color:var(--green);}
[data-theme="night"] .check-card.yes li svg{color:var(--green-bright);}
.check-card.no li svg{color:var(--ink-faint);}
.cc-foot{margin-top:22px;padding-top:18px;border-top:1px dashed var(--line);font-size:15.5px;color:var(--ink-soft);}
.cc-foot b{color:var(--ink);}
.check-foot{margin:24px auto 0;max-width:820px;text-align:center;font-size:16.5px;line-height:1.55;color:var(--ink-soft);
  background:color-mix(in srgb,var(--green) 9%,var(--cream));border:1px solid color-mix(in srgb,var(--green) 32%,var(--line));
  border-radius:8px;padding:20px 26px;}
.check-foot b{color:var(--green-deep);}
[data-theme="night"] .check-foot b{color:var(--green-bright);}

/* =============================================================================
   COURSE CATALOG — "What you'll build" (lanes)
   ========================================================================== */
.lanes{background:var(--cream);}
.lanes-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:28px;margin-top:44px;align-items:start;}
.lane-list{display:flex;flex-direction:column;gap:14px;}
.lane-card{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;text-align:left;width:100%;
  background:var(--paper);border:1.5px solid var(--ink);border-radius:6px;padding:18px 20px;
  box-shadow:3px 3px 0 var(--ink);transition:transform .14s ease,box-shadow .14s ease,background .2s ease;}
.lane-card:hover,.lane-card:focus-visible{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--ink);}
.lane-card.active{background:var(--wood-900);color:var(--on-wood);border-color:var(--wood-900);box-shadow:6px 6px 0 var(--brass-deep);}
.lane-n{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--brass-deep);letter-spacing:.05em;}
.lane-card.active .lane-n{color:var(--brass-bright);}
.lane-main h3{font-size:clamp(19px,2.2vw,23px);}
.lane-sub{display:block;font-family:var(--body);font-size:14.5px;line-height:1.4;color:var(--ink-soft);margin-top:5px;font-weight:400;}
.lane-card.active .lane-sub{color:var(--on-wood-soft);}
.lane-tag{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  white-space:nowrap;border:1px solid var(--line);border-radius:999px;padding:5px 10px;color:var(--ink-soft);}
.lane-card.active .lane-tag{border-color:rgba(220,176,92,.5);color:var(--brass-bright);}

.lane-detail{position:sticky;top:104px;background:var(--wood-900);color:var(--on-wood);border-radius:8px;
  padding:34px 32px;box-shadow:var(--press-lg),var(--shadow-md);overflow:hidden;min-height:300px;}
.lane-detail::before{content:"";position:absolute;top:-40px;right:-40px;width:180px;height:180px;border-radius:50%;
  background:radial-gradient(circle,rgba(220,176,92,.18),transparent 65%);}
.ld-label{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--brass-bright);}
.lane-detail h3{font-size:clamp(24px,3vw,32px);margin-top:14px;color:var(--on-wood);}
.ld-ex{margin-top:22px;padding:18px 20px;background:rgba(246,236,219,.06);border-left:3px solid var(--brass);border-radius:0 6px 6px 0;}
.ld-ex em{display:block;font-family:var(--mono);font-style:normal;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--on-wood-soft);margin-bottom:7px;}
.ld-ex span{font-family:var(--display);font-style:italic;font-size:19px;line-height:1.4;color:var(--on-wood);}
.ld-good{margin-top:20px;font-size:16px;color:var(--on-wood-soft);}
.ld-good b{color:var(--brass-bright);}
.lane-detail.swapping .ld-ex,.lane-detail.swapping .ld-good,.lane-detail.swapping h3{opacity:0;transition:opacity .15s ease;}
.lane-detail .ld-ex,.lane-detail .ld-good,.lane-detail h3{transition:opacity .25s ease;}

/* =============================================================================
   BUILD WALL — cork board of shipped tools
   ========================================================================== */
.proof{background:var(--paper);}
/* a lighter, more realistic cork: a warm tan base under layered fine flecks
   (dark grains + a few light ones) and a soft inner frame */
.cork{margin-top:44px;border-radius:12px;padding:clamp(30px,4vw,52px) clamp(22px,3vw,42px);position:relative;
  background-color:#cdb083;
  background-image:
    radial-gradient(circle at 50% 50%,rgba(120,86,50,.32) 0 1px,transparent 1.6px),
    radial-gradient(circle at 50% 50%,rgba(96,64,34,.26) 0 1px,transparent 2px),
    radial-gradient(circle at 50% 50%,rgba(150,112,68,.28) 0 1px,transparent 1.5px),
    radial-gradient(circle at 50% 50%,rgba(232,210,170,.55) 0 1px,transparent 1.5px),
    linear-gradient(135deg,#d3b889,#c2a172);
  background-size:11px 11px,23px 21px,17px 14px,9px 9px,100% 100%;
  background-position:0 0,11px 3px,5px 7px,3px 6px,0 0;
  box-shadow:inset 0 0 0 9px rgba(118,82,44,.45),inset 0 0 0 11px rgba(70,46,22,.5),
    inset 0 0 70px rgba(86,56,26,.3),var(--shadow-md);}
.wall-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,2.6vw,30px);perspective:900px;}
/* each note rides above the cork on a soft cast shadow; a CSS var carries its
   resting tilt so JS can add a live 3D lean on top without clobbering it */
.pin-note{position:relative;background:var(--cream);border-radius:3px;padding:22px 18px 18px;color:var(--ink);
  --rot:0deg;--rx:0deg;--ry:0deg;--lift:0px;transform-style:preserve-3d;transform-origin:50% -6px;
  transform:translateY(var(--lift)) rotate(var(--rot)) rotateX(var(--rx)) rotateY(var(--ry));
  box-shadow:0 1px 1px rgba(46,28,12,.22),0 11px 20px -7px rgba(46,28,12,.55);
  transition:transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s ease;}
.pin-note:nth-child(3n+1){--rot:-1.6deg;}
.pin-note:nth-child(3n+2){--rot:.8deg;}
.pin-note:nth-child(3n+3){--rot:-.6deg;}
.pin-note:hover{--lift:-6px;z-index:4;box-shadow:0 2px 3px rgba(46,28,12,.25),0 26px 38px -12px rgba(46,28,12,.6);}
/* a pin that sits proud of the paper: glossy head + a needle behind it + cast shadow */
.pin-note .pin{position:absolute;top:-11px;left:50%;width:18px;height:18px;border-radius:50%;
  transform:translateX(-50%);transform-style:preserve-3d;
  background:radial-gradient(circle at 34% 28%,#ffb1a6 0 10%,#e8675a 42%,var(--red-deep) 100%);
  box-shadow:0 2px 0 rgba(0,0,0,.18),0 7px 10px rgba(30,16,8,.45),
    inset -1.5px -1.5px 3px rgba(120,20,12,.6),inset 1.5px 1.5px 3px rgba(255,255,255,.6);}
.pin-note .pin::after{content:"";position:absolute;left:50%;top:62%;width:2px;height:8px;border-radius:1px;
  background:linear-gradient(#9a9a9a,#4a4a4a);transform:translateX(-50%);z-index:-1;}
.pin-note .pn-cat{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--red);}
.pin-note b{display:block;font-family:var(--display);font-size:19px;font-weight:600;margin-top:6px;line-height:1.1;}
.pin-note .pn-meta{font-size:13.5px;color:var(--ink-soft);margin-top:6px;line-height:1.35;}
.wall-foot{display:flex;justify-content:flex-end;margin-top:22px;}
.wall-foot .hand{font-size:26px;transform:rotate(-2deg);color:var(--cream);}

/* =============================================================================
   SCHEDULE — "Today's Schedule" (the dark board)
   ========================================================================== */
.schedule{background:var(--wood-900);color:var(--on-wood);}
.board{border:2px solid var(--brass-deep);border-radius:10px;overflow:hidden;margin-top:40px;background:rgba(0,0,0,.16);}
.board-head{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;
  padding:20px 28px;border-bottom:2px dashed rgba(220,176,92,.35);}
.board-head h3{font-size:clamp(22px,3vw,30px);color:var(--on-wood);}
.board-head .bh-meta{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--brass-bright);}
.period{display:grid;grid-template-columns:130px 1fr;align-items:stretch;border-bottom:1px solid rgba(246,236,219,.1);}
.period:last-child{border-bottom:none;}
.period-time{border-right:2px solid var(--red);padding:24px 22px;display:flex;flex-direction:column;justify-content:center;gap:4px;}
.period-time .pt-clock{font-family:var(--mono);font-size:12px;color:var(--on-wood-soft);}
.period-time .pt-n{font-family:var(--display);font-weight:600;font-size:40px;line-height:.9;color:var(--brass-bright);}
.period-body{padding:22px 28px;}
.period-body .pb-top{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;}
.period-body h4{font-family:var(--display);font-size:clamp(19px,2.2vw,25px);color:var(--on-wood);}
.period-body .pb-week{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  border:1px solid rgba(220,176,92,.4);color:var(--brass-bright);padding:4px 11px;border-radius:999px;}
.period-body p{margin-top:9px;color:var(--on-wood-soft);font-size:16px;line-height:1.5;max-width:62ch;}
/* the two cohort time-slots */
.slots{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:24px;}
.slot{border:2px solid var(--brass-deep);border-radius:10px;padding:22px 26px;background:rgba(0,0,0,.18);position:relative;overflow:hidden;}
.slot::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--green-bright);}
.slot-tag{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--green-bright);}
.slot-time{display:flex;align-items:baseline;gap:14px;margin:14px 0 10px;}
.slot-time b{font-family:var(--display);font-size:clamp(28px,4vw,38px);font-weight:600;color:var(--on-wood);letter-spacing:-.01em;line-height:1;}
.slot-time .tz{font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.06em;color:var(--brass-bright);margin-left:6px;}
.slot-time .slash{font-family:var(--display);font-size:26px;color:var(--on-wood-soft);opacity:.6;}
.slot p{color:var(--on-wood-soft);font-size:14.5px;line-height:1.5;margin:0;}

.sched-note{margin-top:30px;display:grid;grid-template-columns:1.4fr 1fr;gap:26px;align-items:center;}
.sched-note .sn-text{font-size:17px;color:var(--on-wood-soft);line-height:1.6;}
.sched-note .sn-text b{color:var(--on-wood);}
.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}
.fact{display:flex;gap:12px;align-items:flex-start;background:rgba(246,236,219,.05);border:1px solid rgba(246,236,219,.1);
  border-radius:6px;padding:14px 16px;}
.fact svg{flex:0 0 auto;color:var(--brass-bright);margin-top:2px;}
.fact b{display:block;font-family:var(--display);font-size:16px;color:var(--on-wood);}
.fact span{font-size:13.5px;color:var(--on-wood-soft);}

/* =============================================================================
   FOUNDER — "From the Founder's Desk"
   ========================================================================== */
.founder{background:var(--cream);}
.founder-grid{display:grid;grid-template-columns:.92fr 1.08fr;gap:clamp(28px,4vw,52px);align-items:center;margin-top:20px;}
.polaroid{position:relative;background:#fbf6ec;padding:14px 14px 0;box-shadow:var(--press-lg),var(--shadow-md);
  transform:rotate(-2.2deg);max-width:360px;justify-self:center;border-radius:2px;}
.polaroid::before{content:"";position:absolute;top:-14px;left:50%;transform:translateX(-50%) rotate(-3deg);
  width:120px;height:30px;background:rgba(220,176,92,.5);border:1px dashed rgba(43,28,18,.2);}
.polaroid img{width:100%;border-radius:1px;filter:saturate(.96) contrast(1.02);}
.polaroid .p-cap{font-family:var(--hand);font-size:23px;text-align:center;padding:12px 0 16px;color:var(--ink);}
.ruled{position:relative;border:1.5px solid var(--ink);border-radius:6px;box-shadow:var(--press);
  padding:34px 38px 34px 64px;background:var(--paper);
  background-image:linear-gradient(90deg,transparent 46px,rgba(178,58,42,.3) 46px,rgba(178,58,42,.3) 48px,transparent 48px),
    repeating-linear-gradient(var(--paper),var(--paper) 33px,var(--line-soft) 33px,var(--line-soft) 34px);}
.ruled h2{font-size:clamp(26px,3.6vw,40px);margin-top:10px;}
.ruled blockquote{margin:18px 0 0;font-family:var(--display);font-style:italic;font-size:clamp(18px,2.1vw,22px);
  line-height:1.5;color:var(--ink);}
.ruled .f-sign{margin-top:20px;font-family:var(--hand);font-size:30px;color:var(--red);}
.ruled .f-role{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin-top:4px;}
.cred-list{margin-top:24px;display:flex;flex-direction:column;gap:14px;}
.cred{display:flex;gap:12px;align-items:flex-start;font-size:15.5px;line-height:1.5;color:var(--ink-soft);}
.cred .cd{flex:0 0 auto;width:9px;height:9px;border-radius:50%;background:var(--red);margin-top:8px;}
.cred b{color:var(--ink);}
.stamp{position:absolute;top:22px;right:26px;width:92px;height:92px;border:3px solid var(--red);border-radius:50%;
  display:grid;place-items:center;text-align:center;color:var(--red);font-family:var(--mono);font-size:9.5px;font-weight:700;
  letter-spacing:.12em;line-height:1.35;transform:rotate(-13deg);opacity:.8;text-transform:uppercase;}

/* =============================================================================
   REPORT CARD — honest figures
   ========================================================================== */
.report{background:var(--paper);}
.report-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:8px;}
.report-card{background:var(--cream);border:1.5px solid var(--ink);border-radius:6px;padding:24px 22px;text-align:center;box-shadow:var(--press);}
.report-card .rc-num{font-family:var(--display);font-weight:600;font-size:clamp(38px,5vw,54px);line-height:1;color:var(--red);letter-spacing:-.02em;}
.report-card:nth-child(2) .rc-num,.report-card:nth-child(4) .rc-num{color:var(--brass-deep);}
.report-card .rc-label{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-top:10px;line-height:1.4;}
.report-foot{text-align:center;margin-top:24px;font-size:15px;color:var(--ink-faint);font-style:italic;font-family:var(--display);}

/* =============================================================================
   TUITION — pricing
   ========================================================================== */
.tuition{background:var(--cream);}
.price-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:26px;margin-top:44px;align-items:start;}
.price-card{border:1.5px solid var(--ink);border-radius:8px;padding:34px;position:relative;background:var(--paper);box-shadow:var(--press);}
.price-card.feature{background:var(--wood-900);color:var(--on-wood);border-color:var(--wood-900);box-shadow:var(--press-lg),var(--shadow-md);}
.price-flag{position:absolute;top:-14px;left:34px;background:var(--red);color:var(--on-wood);font-family:var(--mono);
  font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:6px 14px;border-radius:999px;box-shadow:var(--shadow-sm);}
.pc-name{font-family:var(--display);font-size:clamp(24px,3vw,30px);font-weight:600;}
.price-card.feature .pc-name{color:var(--on-wood);}
.pc-sub{font-size:15px;color:var(--ink-soft);margin-top:8px;line-height:1.5;}
.price-card.feature .pc-sub{color:var(--on-wood-soft);}
.price-card.feature .pc-sub a{color:var(--brass-bright);}
.price-amt{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:22px 0 4px;}
.price-amt .now{font-family:var(--display);font-weight:600;font-size:58px;line-height:1;letter-spacing:-.02em;color:var(--brass-bright);}
.price-amt .was{font-family:var(--display);font-size:24px;color:var(--on-wood-soft);text-decoration:line-through;text-decoration-color:var(--red-bright);}
.price-amt .per{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--on-wood-soft);}
.price-founding{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--brass-bright);margin-bottom:22px;}
.price-list{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;gap:13px;}
.price-list li{display:flex;gap:11px;align-items:flex-start;font-size:15.5px;line-height:1.45;}
.price-list li svg{flex:0 0 auto;margin-top:3px;color:var(--brass-bright);}
.price-card.quiet .price-list li svg{color:var(--green);}
.price-card.quiet .quote{font-family:var(--display);font-weight:600;font-size:30px;margin:20px 0 2px;color:var(--ink);}
.pc-fine{font-size:13.5px;color:var(--ink-faint);margin-top:14px;line-height:1.5;}
.price-card.feature .pc-fine{color:var(--on-wood-soft);}
.price-card.feature .pc-fine b{color:var(--on-wood);}
.price-card .btn{margin-top:22px;}
.pc-fine a{color:inherit;text-decoration:underline;text-underline-offset:2px;}

/* =============================================================================
   FAQ
   ========================================================================== */
.faq{background:var(--paper);}
.faq-list{max-width:840px;margin:38px auto 0;}
.faq-item{border-bottom:1px solid var(--line);}
.faq-item summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:18px;align-items:center;
  padding:22px 4px;font-family:var(--display);font-weight:600;font-size:clamp(18px,2.2vw,22px);color:var(--ink);}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary .q-mark{flex:0 0 auto;width:26px;height:26px;border:1.5px solid var(--red);border-radius:50%;
  display:grid;place-items:center;color:var(--red);transition:transform .25s ease,background .25s ease,color .25s ease;}
.faq-item summary .q-mark svg{width:14px;height:14px;}
.faq-item[open] summary .q-mark{transform:rotate(45deg);background:var(--red);color:var(--on-wood);}
.faq-item .faq-a{padding:0 4px 24px;color:var(--ink-soft);font-size:16.5px;line-height:1.6;max-width:68ch;}
.faq-item .faq-a a{color:var(--red);text-decoration:underline;text-underline-offset:2px;}

/* =============================================================================
   HONESTY
   ========================================================================== */
.honesty{background:var(--cream);}
.honesty-box{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(28px,4vw,56px);align-items:start;
  border:1.5px solid var(--ink);border-radius:10px;padding:clamp(30px,4vw,52px);background:var(--paper);box-shadow:var(--press-lg);position:relative;}
.honesty-box h3{font-size:clamp(28px,4vw,42px);}
.honesty-box .hn-hand{font-family:var(--hand);font-size:30px;color:var(--red);margin-top:10px;}
.honesty-list{display:grid;grid-template-columns:1fr 1fr;gap:22px;}
.hl-item{display:flex;gap:13px;align-items:flex-start;}
.hl-item .x{flex:0 0 auto;width:26px;height:26px;border-radius:50%;background:rgba(178,58,42,.12);color:var(--red);
  display:grid;place-items:center;margin-top:2px;}
.hl-item b{font-family:var(--display);font-size:17px;display:block;}
.hl-item p{font-size:14.5px;color:var(--ink-soft);margin-top:3px;line-height:1.45;}
.margin-note{font-family:var(--hand);font-size:21px;color:var(--red);display:inline-flex;align-items:center;gap:7px;}
.margin-note svg{width:26px;height:20px;color:var(--red);}
.margin-note svg path{stroke-dasharray:1;stroke-dashoffset:1;}
.in .margin-note svg path{animation:inkDraw .9s ease forwards;}

/* =============================================================================
   FINAL CTA
   ========================================================================== */
.finale{background:var(--wood-900);color:var(--on-wood);text-align:center;position:relative;overflow:hidden;}
.finale::before{content:"";position:absolute;inset:0;opacity:.06;pointer-events:none;
  background-image:radial-gradient(var(--on-wood) 1px,transparent 1.4px);background-size:28px 28px;}
.finale-inner{position:relative;z-index:1;max-width:720px;margin:0 auto;}
.finale h2{font-size:clamp(38px,7vw,72px);line-height:.98;margin-top:18px;}
.finale h2 .em{font-style:italic;color:var(--brass-bright);}
.finale p{margin:22px auto 0;max-width:46ch;color:var(--on-wood-soft);font-size:18px;}
.finale .bell-stage{margin:34px auto 28px;}
.finale .hero-cta{justify-content:center;}
.finale .fine{margin-top:18px;font-size:13.5px;color:var(--on-wood-soft);}
.finale .fine a{color:var(--brass-bright);}

/* =============================================================================
   FOOTER
   ========================================================================== */
.footer{background:var(--wood-900);color:var(--on-wood-soft);border-top:1px solid rgba(220,176,92,.25);}
.footer-inner{max-width:var(--maxw);margin:0 auto;padding:40px var(--gutter);
  display:grid;grid-template-columns:1.3fr 1fr;gap:30px;align-items:start;}
.footer .f-brand{display:flex;align-items:center;gap:14px;color:var(--on-wood);}
.footer .f-tag{margin-top:16px;font-size:14.5px;max-width:42ch;line-height:1.6;}
.footer .f-cols{display:flex;gap:60px;flex-wrap:wrap;justify-content:flex-end;}
.footer .f-col h5{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--brass-bright);margin:0 0 12px;}
.footer .f-col a{display:block;text-decoration:none;color:var(--on-wood-soft);font-size:14.5px;padding:4px 0;transition:color .15s ease;}
.footer .f-col a:hover{color:var(--on-wood);}
.footer-base{border-top:1px solid rgba(246,236,219,.12);}
.footer-base-inner{max-width:var(--maxw);margin:0 auto;padding:18px var(--gutter);display:flex;justify-content:space-between;
  gap:14px;flex-wrap:wrap;font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);}
.footer-base-inner a{color:var(--brass);text-decoration:none;}

/* =============================================================================
   FLOATING CONTROLS — lamp chain (evening) + sound toggle
   ========================================================================== */
/* the pull-chain hangs from the top edge; every swing pivots from the ceiling */
.lamp-chain{position:fixed;top:0;right:clamp(18px,4vw,40px);z-index:70;background:none;border:none;
  padding:0 12px 16px;display:flex;flex-direction:column;align-items:center;transform-origin:50% 0;-webkit-tap-highlight-color:transparent;}
/* a beaded brass ball-chain — a column of little spheres, so it reads as links */
.lamp-cord{display:block;width:6px;height:46px;margin:0 auto;transform-origin:50% 0;
  background-image:radial-gradient(circle at 50% 38%,var(--brass-bright) 0 14%,var(--brass) 42%,var(--brass-deep) 66%,rgba(0,0,0,.35) 74%,transparent 78%);
  background-size:6px 7px;background-repeat:repeat-y;background-position:50% 0;}
.lamp-pull{display:block;width:15px;height:21px;margin:-1px auto 0;border-radius:8px;
  background:radial-gradient(circle at 38% 30%,var(--brass-bright),var(--brass-deep));
  box-shadow:0 2px 6px rgba(0,0,0,.4),inset 0 1px 2px rgba(255,245,210,.5);transition:filter .3s ease;}
.lamp-chain:hover .lamp-pull{filter:brightness(1.15);}
/* the cord stretches and the knob drops on the same beat, so the chain stays
   joined through the whole tug instead of the knob detaching */
.lamp-chain.tug .lamp-cord{animation:cordTug .5s ease;}
.lamp-chain.tug .lamp-pull{animation:tug .5s ease;}
@keyframes tug{30%{transform:translateY(8px);}60%{transform:translateY(-2px);}100%{transform:none;}}
@keyframes cordTug{30%{transform:scaleY(1.18);}60%{transform:scaleY(.955);}100%{transform:none;}}
/* one-time discovery sway, like someone brushed past the chain */
.lamp-chain.hint{animation:lampSway 2.6s ease-in-out;}
@keyframes lampSway{0%,100%{rotate:0deg;}18%{rotate:4.5deg;}44%{rotate:-3deg;}68%{rotate:1.6deg;}87%{rotate:-.7deg;}}
/* a lighter brush-past swing whenever the cursor comes within reach */
.lamp-chain.sway{animation:lampNudge 1.8s ease-in-out;}
@keyframes lampNudge{0%,100%{rotate:0deg;}22%{rotate:3deg;}52%{rotate:-1.8deg;}78%{rotate:.7deg;}}
.lamp-chain .lamp-label{font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);
  margin-top:6px;opacity:0;transition:opacity .2s ease;writing-mode:vertical-rl;}
.lamp-chain:hover .lamp-label{opacity:1;}

.sound-toggle{position:fixed;left:20px;bottom:20px;z-index:70;width:42px;height:42px;border-radius:50%;
  background:var(--wood-900);color:var(--brass-bright);border:1px solid var(--brass-deep);display:grid;place-items:center;box-shadow:var(--shadow-md);}
.sound-toggle .st-off{display:none;}
.sound-toggle[aria-pressed="false"] .st-on{display:none;}
.sound-toggle[aria-pressed="false"] .st-off{display:block;}

/* =============================================================================
   INTERACTIVE DESK PROPS — cut-outs from the desk that come alive
   (laptop screen types · pen twirls near the cursor · apple & mug crossfade)
   ========================================================================== */

/* ---- the red pen: twirls when the cursor nears, clicks open/closed ---- */
.deck-pen{position:absolute;top:clamp(18px,5vw,70px);right:clamp(14px,6%,110px);
  width:clamp(84px,8vw,120px);z-index:4;margin:0;padding:0;border:0;background:none;
  -webkit-appearance:none;appearance:none;cursor:pointer;touch-action:manipulation;line-height:0;}
.deck-pen:focus{outline:none;}
.deck-pen .art{display:block;transition:none;transform-origin:50% 50%;will-change:transform;}
.deck-pen .pen-stack{position:relative;display:block;}
.deck-pen .pen-img{display:block;width:100%;height:auto;filter:drop-shadow(0 9px 11px rgba(40,18,8,.26));transition:opacity .09s linear;}
.deck-pen .pen-img.open{position:absolute;inset:0;opacity:0;}
.deck-pen.clicked .pen-img.closed{opacity:0;}
.deck-pen.clicked .pen-img.open{opacity:1;}
.deck-pen.press .pen-stack{animation:penPress .24s cubic-bezier(.2,.7,.2,1);}
@keyframes penPress{0%{transform:translate(0,0) scale(1);}32%{transform:translate(-1px,1.8px) scale(.955);}100%{transform:translate(0,0) scale(1);}}

/* ---- the typing laptop in "What you'll build" ---- */
.build-head{position:relative;min-height:340px;}
.build-head .sec-head{max-width:660px;}
.deck-laptop{position:absolute;top:18px;right:-10px;width:clamp(230px,25vw,310px);margin:0;}
.deck-laptop .art{position:relative;display:block;transform-origin:50% 80%;transition:transform .5s cubic-bezier(.2,.85,.25,1);}
.deck-laptop .art img{display:block;width:100%;height:auto;user-select:none;-webkit-user-drag:none;pointer-events:none;}
.deck-laptop:hover .art,.deck-laptop:focus-within .art{transform:translateY(-6px) scale(1.018);}
.laptop-screen{position:absolute;left:40.7%;top:30%;width:65%;height:36%;
  transform:translate(-50%,-50%) matrix(0.9695,-0.245,0.245,0.9695,0,0);
  display:flex;align-items:center;justify-content:center;padding:0 6%;
  background:radial-gradient(ellipse at 50% 30%,rgba(120,150,180,.12),rgba(0,0,0,0) 70%);pointer-events:none;}
.laptop-screen .screen-text{font-family:var(--display);font-weight:400;color:#eaf1f7;
  font-size:clamp(10px,1.15vw,15px);line-height:1.3;text-align:center;letter-spacing:.005em;text-shadow:0 0 12px rgba(150,200,255,.28);}
.laptop-screen .line.code{font-family:var(--mono);color:#8fd3a0;}
.laptop-screen .cursor{display:inline-block;width:.6ch;margin-left:1px;background:var(--brass-bright);color:transparent;border-radius:1px;animation:scrBlink 1s steps(1) infinite;}
@keyframes scrBlink{50%{opacity:0;}}

/* ---- apple & coffee: a clean pixel-aligned crossfade, no lift, no flash ----
   both cut-outs are stacked and registered, so only opacity changes — the
   swap dissolves in place instead of jumping. */
.teach-apple,.deck-mug{position:absolute;z-index:3;border:0;background:none;padding:0;margin:0;
  cursor:pointer;line-height:0;-webkit-tap-highlight-color:transparent;}
.teach-apple:focus-visible,.deck-mug:focus-visible{outline:2px solid var(--brass);outline-offset:8px;border-radius:12px;}
.teach-apple .art,.deck-mug .art{position:relative;display:block;width:100%;}
.teach-apple .art img,.deck-mug .art img{display:block;width:100%;height:auto;user-select:none;-webkit-user-drag:none;pointer-events:none;}
.teach-apple .whole,.deck-mug .full{position:relative;display:block;width:100%;transition:opacity .42s cubic-bezier(.4,0,.2,1);}
.teach-apple .bitten,.deck-mug .empty{position:absolute;inset:0;width:100%;opacity:0;transition:opacity .42s cubic-bezier(.4,0,.2,1);}
.teach-apple:hover .whole,.teach-apple:focus-within .whole,
.deck-mug:hover .full,.deck-mug:focus-within .full{opacity:0;}
.teach-apple:hover .bitten,.teach-apple:focus-within .bitten,
.deck-mug:hover .empty,.deck-mug:focus-within .empty{opacity:1;}

.teach-apple{width:clamp(72px,9vw,118px);bottom:clamp(28px,6vw,80px);left:clamp(18px,5%,90px);
  filter:drop-shadow(0 12px 13px rgba(40,18,8,.3));}
.deck-mug{width:clamp(116px,12vw,150px);top:clamp(-30px,-1.4vw,-8px);right:clamp(2px,2vw,18px);
  filter:drop-shadow(0 14px 18px rgba(12,6,2,.55));}

/* the coffee's steam — ambient rise, fades as you reach for the cup */
.deck-mug .steam{position:absolute;left:44%;top:-12%;width:46%;height:60%;pointer-events:none;opacity:.85;transition:opacity .45s ease;}
.deck-mug:hover .steam,.deck-mug:focus-within .steam{opacity:0;}
.deck-mug .steam i{position:absolute;bottom:0;width:16%;height:70%;left:var(--x);border-radius:50%;
  background:linear-gradient(to top,rgba(255,255,255,0),rgba(255,245,230,.5));filter:blur(6px);
  opacity:0;animation:steamRise var(--d) ease-in infinite;animation-delay:var(--dl);}
.deck-mug .steam i:nth-child(1){--x:16%;--d:3.4s;--dl:0s;}
.deck-mug .steam i:nth-child(2){--x:42%;--d:3.9s;--dl:.8s;}
.deck-mug .steam i:nth-child(3){--x:66%;--d:3.1s;--dl:1.5s;}
@keyframes steamRise{0%{opacity:0;transform:translateY(20%) scaleX(1);}25%{opacity:.55;}60%{opacity:.3;}100%{opacity:0;transform:translateY(-90%) translateX(-20%) scaleX(1.7);}}

@media(max-width:940px){
  .deck-pen,.deck-mug{display:none;}
  .build-head{min-height:0;}
  .build-head .sec-head{max-width:none;}
  .deck-laptop{position:static;margin:30px auto 6px;width:clamp(220px,60vw,300px);}
  .teach-apple{width:clamp(58px,12vw,84px);bottom:14px;left:14px;}
}
@media(prefers-reduced-motion:reduce){
  .deck-pen .pen-img,.deck-pen.press .pen-stack{animation:none;transition:none;}
  .laptop-screen .cursor{animation:none;}
  .deck-mug .steam i{animation:none;opacity:0;}
}

/* =============================================================================
   REVEAL ON SCROLL
   ========================================================================== */
html.js .reveal{opacity:0;translate:0 24px;transition:opacity .7s cubic-bezier(.2,.7,.2,1),translate .7s cubic-bezier(.2,.7,.2,1);}
html.js .reveal.in{opacity:1;translate:none;}
html.js .reveal.d1{transition-delay:.07s;}
html.js .reveal.d2{transition-delay:.14s;}
html.js .reveal.d3{transition-delay:.21s;}
html.js .reveal.d4{transition-delay:.28s;}

/* =============================================================================
   RESPONSIVE
   ========================================================================== */
@media(max-width:980px){
  .hero-grid{grid-template-columns:1fr;gap:38px;}
  .hero-bell{flex-direction:row;justify-content:flex-start;gap:24px;flex-wrap:wrap;}
  .lanes-grid{grid-template-columns:1fr;}
  .lane-detail{position:static;}
  .founder-grid{grid-template-columns:1fr;gap:36px;}
  .polaroid{justify-self:start;}
  .price-grid{grid-template-columns:1fr;}
  .honesty-box{grid-template-columns:1fr;gap:28px;}
  .sched-note{grid-template-columns:1fr;}
  .footer-inner{grid-template-columns:1fr;}
  .footer .f-cols{justify-content:flex-start;}
}
@media(max-width:760px){
  .nav-links,.nav-pill{display:none;}
  /* once the menu is open the bar carries its own dark backing, so the cream
     links read whether you opened it at the top or mid-page */
  .masthead.open{background:linear-gradient(180deg,var(--wood-800),var(--wood-900));}
  .masthead.open .nav-links{display:flex;position:absolute;top:100%;left:0;right:0;flex-direction:column;
    align-items:flex-start;gap:2px;background:var(--wood-900);
    border-bottom:1px solid color-mix(in srgb,var(--brass) 36%,transparent);
    padding:14px var(--gutter) 22px;box-shadow:0 24px 36px -18px rgba(0,0,0,.7);}
  .masthead.open .nav-links a{padding:13px 0;font-size:13px;width:100%;
    border-bottom:1px solid rgba(246,236,219,.1);text-shadow:none;}
  .nav-toggle{display:grid;place-items:center;}
  .checklist{grid-template-columns:1fr;}
  .wall-grid{grid-template-columns:1fr 1fr;}
  .report-grid{grid-template-columns:1fr 1fr;}
  .honesty-list{grid-template-columns:1fr;}
  .period{grid-template-columns:92px 1fr;}
  /* the lamp chain hangs from the top-right — same spot as the hamburger on
     mobile, so retire evening mode to desktop and free the corner. */
  .lamp-chain{display:none;}
  /* the bell only sounds on a deliberate tap on mobile, so a floating mute
     control isn't needed — and it would graze the hero CTA. Hide it. */
  .sound-toggle{display:none;}
  .problem-foot{grid-template-columns:1fr;gap:60px;}
  .problem-note{justify-self:start;text-align:left;}
}
@media(max-width:460px){
  body{font-size:17px;}
  .kicker{font-size:11px;letter-spacing:.12em;}
  .wall-grid{grid-template-columns:1fr;}
  .report-grid{grid-template-columns:1fr 1fr;}
  .hero h1{font-size:clamp(34px,10vw,58px);}
  .hero-edition{font-size:10.5px;gap:8px;}
  /* let long button labels (e.g. "Apply for the founding cohort") wrap on
     narrow phones — a nowrap label forces its grid/flex track wider than the
     viewport and creates a horizontal-scroll overflow. */
  .btn{white-space:normal;justify-content:center;text-align:center;}
}

/* =============================================================================
   MOTION / PRINT SAFETY
   ========================================================================== */
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;scroll-behavior:auto !important;}
  html.js .reveal{opacity:1;translate:none;}
  .pa-track{animation:none;}
}
