/* ===========================================================================
   TAKOCUT : design tokens (locked from assets/avatar.png + assets/banner.png)
   ---------------------------------------------------------------------------
   Palette  : hot pink     #FF2E8A  (TAKO's body)
              pink deep    #C31468  (shadow side, borders)
              electric cyan #5FE0F0 (avatar/banner backdrop sky)
              cyan deep    #0F8FAE  (accents, links)
              tool red     #E8352E  (scissors, dryer, razor, cup)
              ink          #1A0A14  (outlines, body text)
              paper        #FFF3E4  (laminated price-list card)
   Type     : Chewy                   - display, bouncy marker-drawn kawaii headline
              M PLUS Rounded 1c 400/700/800 - body / UI / chrome
              Red Hat Mono 500        - CA readout, price-list numerals
              (self-hosted woff2 in assets/fonts, no runtime remote fetch)
   Spacing  : 4 . 8 . 12 . 16 . 24 . 32 . 48 . 64 (px)
   Radius   : 28px scene frame . 18px cards . 999px pills
   Motion   : "chaos choreography" - each tentacle FX runs its own short
              keyframe loop while GET A HAIRCUT is active; idle face-shake
              never stops. prefers-reduced-motion cuts loops to one pass.
   =========================================================================== */

@font-face{font-family:"Chewy";src:url("assets/fonts/chewy-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:"M PLUS Rounded 1c";src:url("assets/fonts/mplusrounded-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:"M PLUS Rounded 1c";src:url("assets/fonts/mplusrounded-700.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap;}
@font-face{font-family:"M PLUS Rounded 1c";src:url("assets/fonts/mplusrounded-800.woff2") format("woff2");font-weight:800;font-style:normal;font-display:swap;}
@font-face{font-family:"Red Hat Mono";src:url("assets/fonts/redhatmono-500.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap;}

:root{
  --pink:#FF2E8A;
  --pink-deep:#C31468;
  --pink-pale:#FFC3E3;
  --cyan:#5FE0F0;
  --cyan-deep:#0F8FAE;
  --cyan-pale:#CFF6FB;
  --red:#E8352E;
  --red-deep:#A31E1B;
  --ink:#1A0A14;
  --ink-soft:#3C1E30;
  --paper:#FFF3E4;
  --paper-line:rgba(26,10,20,.16);
  --bg:#63C9E2;
  --bg-deep:#3FA9C4;

  --font-display:"Chewy","M PLUS Rounded 1c",sans-serif;
  --font-sans:"M PLUS Rounded 1c",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --font-mono:"Red Hat Mono","SFMono-Regular",Consolas,monospace;

  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px;
  --sp-6:32px; --sp-7:48px; --sp-8:64px;

  --radius-lg:28px; --radius-md:18px; --radius-sm:10px; --radius-pill:999px;

  --ease-pop:cubic-bezier(.34,1.56,.64,1);
  --ease-soft:cubic-bezier(.16,.84,.32,1);
}

*,*::before,*::after{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  min-height:100vh;
  background:
    radial-gradient(circle at 18% 12%, rgba(255,255,255,.35), transparent 40%),
    radial-gradient(circle at 82% 88%, rgba(255,255,255,.22), transparent 45%),
    linear-gradient(160deg, var(--bg) 0%, var(--bg-deep) 100%);
  color:var(--ink);
  font-family:var(--font-sans);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  position:relative;
}
/* deep-fried halftone dot mush over everything, subtle */
body::before{
  content:"";
  position:fixed; inset:0;
  background-image:radial-gradient(rgba(26,10,20,.08) 1px, transparent 1.4px);
  background-size:5px 5px;
  mix-blend-mode:multiply;
  pointer-events:none;
  z-index:1;
  opacity:.55;
}
img{max-width:100%;display:block;}
button{font:inherit;}
a{color:inherit;}

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

#boot-error-banner{
  position:fixed; top:0; left:0; right:0; z-index:9999;
  background:#B00020; color:#fff; font:600 13px/1.4 monospace;
  padding:10px 14px; display:none;
}
#boot-error-banner:not(:empty){display:block;}

/* ---------------------------------------------------------------------------
   Scene shell
   --------------------------------------------------------------------------- */
.scene{
  position:relative;
  z-index:2;
  max-width:1180px;
  margin:0 auto;
  padding:var(--sp-4) var(--sp-4) var(--sp-7);
  display:flex;
  flex-direction:column;
  min-height:100vh;
  gap:var(--sp-5);
}

/* ---------------------------------------------------------------------------
   Top bar
   --------------------------------------------------------------------------- */
.topbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--sp-3);
  flex-wrap:wrap;
}
.brand{
  display:flex;
  align-items:center;
  gap:var(--sp-2);
  text-decoration:none;
  color:var(--ink);
}
.brand-logo{
  width:38px; height:38px;
  border-radius:var(--radius-pill);
  border:2.5px solid var(--ink);
  object-fit:cover;
  background:var(--cyan-pale);
}
.brand-mark{
  font-family:var(--font-display);
  font-size:20px;
  letter-spacing:.02em;
  text-shadow:1.5px 1.5px 0 var(--cyan-deep);
}
.brand-sub{
  display:block;
  font-size:10px;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--ink-soft);
  opacity:.75;
}

.status-chip{
  display:inline-flex;
  align-items:center;
  gap:var(--sp-2);
  background:var(--ink);
  color:var(--paper);
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.03em;
  padding:7px 12px;
  border-radius:var(--radius-pill);
  white-space:nowrap;
}
.status-dot{
  width:7px; height:7px; border-radius:50%;
  background:var(--red);
  box-shadow:0 0 0 2px rgba(232,53,46,.35);
  animation:pulse-dot 1.6s ease-in-out infinite;
}
@keyframes pulse-dot{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.4;transform:scale(.72);}}

.topbar-controls{
  display:flex;
  align-items:center;
  gap:var(--sp-4);
}

/* custom X icon: two crossed scissors */
.x-icon-btn{
  position:relative;
  width:40px; height:40px;
  border-radius:var(--radius-pill);
  background:var(--paper);
  border:2.5px solid var(--ink);
  display:flex; align-items:center; justify-content:center;
  cursor:pointer;
  text-decoration:none;
  transition:transform .18s var(--ease-pop);
}
.x-icon-btn:hover{transform:translateY(-2px) rotate(-4deg);}
.x-icon-btn .i-scissor{
  position:absolute;
  width:20px; height:20px;
  color:var(--ink);
}
.x-icon-btn .i-scissor.a{transform:rotate(-6deg);}
.x-icon-btn .i-scissor.b{transform:scaleX(-1) rotate(-6deg);}

/* buy control: spinning barber pole */
.barber-pole-btn{
  position:relative;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:4px;
  text-decoration:none;
  color:var(--ink);
  cursor:pointer;
  background:none;
  border:none;
  padding:0;
}
.barber-pole{
  width:20px;
  height:46px;
  border-radius:10px;
  border:2.5px solid var(--ink);
  background:repeating-linear-gradient(
    45deg,
    var(--red) 0 8px,
    #fff 8px 16px,
    var(--cyan-deep) 16px 24px,
    #fff 24px 32px
  );
  background-size:34px 34px;
  animation:pole-spin 900ms linear infinite;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.4);
}
.barber-pole::before,.barber-pole::after{
  content:"";
  position:absolute;
  left:-3px; right:-3px;
  height:6px;
  background:var(--ink);
  border-radius:3px;
}
.barber-pole::before{top:-3px;}
.barber-pole::after{bottom:-3px;}
@keyframes pole-spin{0%{background-position:0 0;}100%{background-position:0 34px;}}
.barber-pole-btn .buy-label{
  font-family:var(--font-mono);
  font-size:10px;
  font-weight:700;
  letter-spacing:.08em;
  background:var(--ink);
  color:var(--paper);
  padding:3px 8px;
  border-radius:var(--radius-pill);
}
.barber-pole-btn:hover .barber-pole{animation-duration:400ms;}

/* ---------------------------------------------------------------------------
   Stage: the barber chair scene
   --------------------------------------------------------------------------- */
.stage{
  flex:1;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:var(--sp-6);
}

.scene-copy{
  text-align:center;
  max-width:620px;
}
.eyebrow{
  font-family:var(--font-mono);
  font-size:12px;
  font-weight:500;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--pink-deep);
  margin:0 0 var(--sp-2);
}
h1{
  font-family:var(--font-display);
  font-size:clamp(28px,4.4vw,46px);
  line-height:1.08;
  margin:0 0 var(--sp-3);
  color:var(--ink);
  text-shadow:
    2px 2px 0 var(--cyan),
    -1px -1px 0 var(--pink-pale);
}
.hero-sub{
  font-size:clamp(14px,1.6vw,17px);
  line-height:1.5;
  color:var(--ink-soft);
  margin:0;
}

.chair-wrap{
  position:relative;
  width:min(560px, 92vw);
}
.chair-frame{
  position:relative;
  width:100%;
  aspect-ratio:1 / 1;
  border-radius:var(--radius-lg);
  overflow:hidden;
  border:4px solid var(--ink);
  box-shadow:0 18px 0 -6px rgba(26,10,20,.18), 0 22px 40px rgba(26,10,20,.28);
  background:var(--cyan-pale);
}
.chair-photo{
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover;
}

/* face-shake layer removed: the hero art is now a video (tako-barber-loop.mp4)
   with its own baked-in motion, so a jittering static duplicate of the old
   avatar.png face on top of it just fought the video and looked broken. */

/* tentacle FX badges: an abstract motion-spark placed at each tool, each
   running its own keyframe only while the cut is in progress */
.tentacle-fx{
  position:absolute;
  left:var(--x); top:var(--y);
  width:30px; height:30px;
  transform:translate(-50%,-50%) scale(.5);
  border-radius:50%;
  background:radial-gradient(circle, #fff 0%, var(--pink) 55%, transparent 76%);
  opacity:0;
  pointer-events:none;
  filter:drop-shadow(0 0 6px rgba(255,46,138,.6));
}
.chair-frame.is-cutting .tentacle-fx{
  opacity:.92;
  transform:translate(-50%,-50%) scale(1);
}
.chair-frame.is-cutting .fx-scissors{animation:fx-snip .42s ease-in-out infinite;}
.chair-frame.is-cutting .fx-dryer{animation:fx-wiggle .28s ease-in-out infinite;}
.chair-frame.is-cutting .fx-comb{animation:fx-drag .6s ease-in-out infinite;}
.chair-frame.is-cutting .fx-razor{animation:fx-glide .5s ease-in-out infinite;}
.chair-frame.is-cutting .fx-mirror{animation:fx-tilt .7s ease-in-out infinite;}
.chair-frame.is-cutting .fx-spray{animation:fx-puff .5s ease-in-out infinite;}
.chair-frame.is-cutting .fx-coffee{animation:fx-steam .9s ease-in-out infinite;}
.chair-frame.is-cutting .fx-towel{animation:fx-dab .46s ease-in-out infinite;}

@keyframes fx-snip{
  0%,100%{transform:translate(-50%,-50%) scale(1) rotate(0deg);}
  50%{transform:translate(-50%,-50%) scale(1.25) rotate(28deg);}
}
@keyframes fx-wiggle{
  0%,100%{transform:translate(-50%,-50%) scale(1) translateX(0);}
  25%{transform:translate(-50%,-50%) scale(1.1) translateX(-3px);}
  75%{transform:translate(-50%,-50%) scale(1.1) translateX(3px);}
}
@keyframes fx-drag{
  0%,100%{transform:translate(-50%,-50%) scale(1) translateX(0);}
  50%{transform:translate(-50%,-50%) scale(1.05) translateX(-16px);}
}
@keyframes fx-glide{
  0%,100%{transform:translate(-50%,-50%) scale(1) translate(0,0);}
  50%{transform:translate(-50%,-50%) scale(1.08) translate(10px,-6px);}
}
@keyframes fx-tilt{
  0%,100%{transform:translate(-50%,-50%) scale(1) rotate(0deg);}
  50%{transform:translate(-50%,-50%) scale(1.05) rotate(-18deg);}
}
@keyframes fx-puff{
  0%,100%{transform:translate(-50%,-50%) scale(.8);opacity:.5;}
  50%{transform:translate(-50%,-50%) scale(1.35);opacity:1;}
}
@keyframes fx-steam{
  0%{transform:translate(-50%,-50%) scale(.9) translateY(0);opacity:.6;}
  50%{transform:translate(-50%,-50%) scale(1.15) translateY(-10px);opacity:1;}
  100%{transform:translate(-50%,-50%) scale(.9) translateY(0);opacity:.6;}
}
@keyframes fx-dab{
  0%,100%{transform:translate(-50%,-50%) scale(1) translateY(0);}
  50%{transform:translate(-50%,-50%) scale(1.15) translateY(10px);}
}

/* ---------------------------------------------------------------------------
   Price list: laminated card clipped to the mirror tentacle
   --------------------------------------------------------------------------- */
.price-list{
  position:absolute;
  left:-6%;
  top:53%;
  width:60%;
  max-width:240px;
  background:var(--paper);
  border:2.5px solid var(--ink);
  border-radius:var(--radius-md);
  padding:14px 16px 12px;
  box-shadow:3px 5px 0 rgba(26,10,20,.22), 0 10px 22px rgba(26,10,20,.2);
  transform:rotate(-4deg);
  z-index:3;
}
.price-list::after{
  content:"";
  position:absolute;
  top:-14px; left:50%;
  transform:translateX(-50%);
  width:34px; height:16px;
  background:var(--ink);
  border-radius:4px;
}
.price-list::before{
  content:"";
  position:absolute;
  top:-9px; left:50%;
  transform:translateX(-50%);
  width:10px; height:10px;
  background:var(--paper);
  border:2px solid var(--ink);
  border-radius:50%;
  z-index:1;
}
.price-list h2{
  margin:0 0 8px;
  font-family:var(--font-display);
  font-size:13px;
  letter-spacing:.03em;
  color:var(--pink-deep);
}
.price-list ul{
  list-style:none;
  margin:0 0 10px;
  padding:0;
  font-family:var(--font-mono);
  font-size:12px;
}
.price-list li{
  display:flex;
  justify-content:space-between;
  gap:8px;
  padding:3px 0;
  border-bottom:1px dashed var(--paper-line);
}
.price-list li:last-child{border-bottom:none;}
.ca-row{
  margin-top:8px;
  padding-top:8px;
  border-top:2px solid var(--ink);
}
.ca-ticker{
  display:block;
  font-family:var(--font-mono);
  font-size:11px;
  font-weight:700;
  color:var(--cyan-deep);
  margin-bottom:4px;
}
.ca-copy{
  display:flex;
  align-items:center;
  gap:6px;
  width:100%;
  background:var(--ink);
  color:var(--paper);
  border:none;
  border-radius:var(--radius-sm);
  padding:8px 9px;
  cursor:pointer;
  text-align:left;
  transition:transform .12s var(--ease-pop);
}
.ca-copy:hover{transform:translateY(-1px);}
.ca-copy:active{transform:translateY(0) scale(.98);}
.ca-text{
  flex:1;
  font-family:var(--font-mono);
  font-size:10.5px;
  word-break:break-all;
  line-height:1.3;
}
.ca-copy .i-scissor{
  width:16px; height:16px;
  flex-shrink:0;
  color:var(--pink-pale);
  transition:transform .18s var(--ease-pop);
}
.ca-copy.is-copied .i-scissor{transform:rotate(24deg) scale(1.15);color:var(--pink);}
.copy-state{
  display:block;
  font-size:9px;
  font-family:var(--font-mono);
  color:var(--ink-soft);
  margin-top:4px;
  letter-spacing:.04em;
}
.fine-print{
  margin:8px 0 0;
  font-size:9px;
  color:var(--ink-soft);
  opacity:.75;
  line-height:1.3;
}

/* hair confetti spawned from the copy button */
.hair-confetti{
  position:fixed;
  z-index:50;
  pointer-events:none;
  border-radius:40% 60% 60% 40% / 50% 40% 60% 50%;
  animation:hair-fall linear forwards;
}
@keyframes hair-fall{
  0%{transform:translate(0,0) rotate(0deg);opacity:1;}
  100%{transform:translate(var(--dx),120px) rotate(var(--rot));opacity:0;}
}

/* ---------------------------------------------------------------------------
   Control deck
   --------------------------------------------------------------------------- */
.control-deck{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:var(--sp-3);
  width:100%;
  max-width:420px;
}
.cut-btn{
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:10px;
  background:var(--pink);
  color:#fff;
  border:3px solid var(--ink);
  border-radius:var(--radius-pill);
  padding:16px 32px;
  font-family:var(--font-display);
  font-size:clamp(16px,2vw,20px);
  letter-spacing:.02em;
  cursor:pointer;
  box-shadow:0 6px 0 var(--pink-deep);
  transition:transform .12s var(--ease-pop), box-shadow .12s var(--ease-pop);
}
.cut-btn:hover{transform:translateY(-2px);box-shadow:0 8px 0 var(--pink-deep);}
.cut-btn:active,.cut-btn.is-busy{
  transform:translateY(4px);
  box-shadow:0 2px 0 var(--pink-deep);
}
.cut-btn:disabled{cursor:wait;opacity:.85;}
.cut-btn .i-scissor{width:20px;height:20px;color:#fff;}
.cut-btn.is-busy .i-scissor{animation:fx-snip .4s ease-in-out infinite;}

.damage-report{
  font-family:var(--font-mono);
  font-size:13px;
  color:var(--ink-soft);
  margin:0;
  text-align:center;
}
.damage-report strong{
  color:var(--red-deep);
  font-size:16px;
}

.result-card{
  width:100%;
  background:var(--paper);
  border:2.5px solid var(--ink);
  border-radius:var(--radius-md);
  padding:14px 18px;
  text-align:center;
  box-shadow:3px 4px 0 rgba(26,10,20,.18);
  min-height:64px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:4px;
}
.result-label{
  font-family:var(--font-mono);
  font-size:10px;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--cyan-deep);
}
.result-card p{
  margin:0;
  font-family:var(--font-sans);
  font-weight:700;
  font-size:15px;
  color:var(--ink);
}
.result-card[data-state="working"] p{color:var(--pink-deep);}
.result-card[data-state="done"]{
  animation:result-pop .32s var(--ease-pop);
}
@keyframes result-pop{
  0%{transform:scale(.94);}
  60%{transform:scale(1.02);}
  100%{transform:scale(1);}
}

/* ---------------------------------------------------------------------------
   Footer
   --------------------------------------------------------------------------- */
.scene-footer{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:var(--sp-4);
  flex-wrap:wrap;
  font-family:var(--font-mono);
  font-size:11px;
  color:var(--ink-soft);
  padding-top:var(--sp-4);
}
#canary{
  background:rgba(26,10,20,.08);
  padding:4px 10px;
  border-radius:var(--radius-pill);
}

/* ---------------------------------------------------------------------------
   Scroll cue: nudge toward the depth below the mechanic
   --------------------------------------------------------------------------- */
.scroll-cue{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:4px;
  color:var(--ink-soft);
  font-family:var(--font-mono);
  font-size:10px;
  letter-spacing:.08em;
  text-transform:uppercase;
  text-decoration:none;
}
.scroll-cue .i-scissor{
  width:16px; height:16px;
  color:var(--pink-deep);
  animation:scroll-bob 1.6s ease-in-out infinite;
}
@keyframes scroll-bob{
  0%,100%{transform:translateY(0) rotate(90deg);}
  50%{transform:translateY(6px) rotate(90deg);}
}

/* ---------------------------------------------------------------------------
   Shared shell for every section below the mechanic
   --------------------------------------------------------------------------- */
.depth-section{
  width:100%;
  max-width:920px;
  margin:0 auto;
  padding:var(--sp-7) var(--sp-4);
  opacity:0;
  transform:translateY(22px);
  transition:opacity .5s var(--ease-soft), transform .5s var(--ease-soft);
}
.depth-section.is-visible{
  opacity:1;
  transform:translateY(0);
}
.depth-section + .depth-section{
  border-top:2px dashed var(--paper-line);
}
.section-head{
  text-align:center;
  max-width:540px;
  margin:0 auto var(--sp-6);
}
.section-head .eyebrow{margin-bottom:6px;}
.section-head h2{
  font-family:var(--font-display);
  font-size:clamp(22px,3vw,30px);
  margin:0 0 8px;
  color:var(--ink);
  text-shadow:1.5px 1.5px 0 var(--cyan);
}
.section-sub{
  margin:0;
  font-size:14px;
  line-height:1.5;
  color:var(--ink-soft);
}

/* ---------------------------------------------------------------------------
   The Full Menu: laminated list board, same paper as the price list widget
   --------------------------------------------------------------------------- */
.menu-list{
  list-style:none;
  margin:0 auto;
  padding:0;
  max-width:640px;
  background:var(--paper);
  border:2.5px solid var(--ink);
  border-radius:var(--radius-md);
  box-shadow:4px 6px 0 rgba(26,10,20,.18);
}
.menu-list li{
  display:grid;
  grid-template-columns:1fr auto;
  grid-template-areas:"name price" "note note";
  align-items:baseline;
  gap:2px 10px;
  padding:12px 18px;
  border-bottom:1px dashed var(--paper-line);
}
.menu-list li:last-child{border-bottom:none;}
.menu-name{
  grid-area:name;
  font-family:var(--font-sans);
  font-weight:800;
  font-size:15px;
}
.menu-price{
  grid-area:price;
  font-family:var(--font-mono);
  font-weight:700;
  color:var(--pink-deep);
  white-space:nowrap;
}
.menu-note{
  grid-area:note;
  font-size:12px;
  color:var(--ink-soft);
}
.menu-footnote{
  max-width:640px;
  margin:var(--sp-4) auto 0;
  font-size:11px;
  text-align:center;
  color:var(--ink-soft);
  opacity:.8;
}

/* ---------------------------------------------------------------------------
   Reviews: pinned cards with a corkboard tilt, alternating
   --------------------------------------------------------------------------- */
.review-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
  gap:var(--sp-5);
}
.review-card{
  margin:0;
  background:var(--paper);
  border:2.5px solid var(--ink);
  border-radius:var(--radius-sm);
  padding:16px;
  box-shadow:3px 4px 0 rgba(26,10,20,.18);
  transform:rotate(-1.4deg);
}
.review-card:nth-child(even){transform:rotate(1.6deg);}
.review-card:nth-child(3n){transform:rotate(-2.2deg);}
.review-stars{
  display:block;
  font-size:13px;
  letter-spacing:.1em;
  color:var(--red);
  margin-bottom:8px;
}
.review-card p{
  margin:0 0 10px;
  font-size:14px;
  line-height:1.5;
  color:var(--ink);
}
.review-card cite{
  display:block;
  font-family:var(--font-mono);
  font-size:10px;
  font-style:normal;
  letter-spacing:.05em;
  text-transform:uppercase;
  color:var(--cyan-deep);
}

/* ---------------------------------------------------------------------------
   About the master: vertical timeline
   --------------------------------------------------------------------------- */
.bio-timeline{
  position:relative;
  max-width:620px;
  margin:0 auto;
  padding-left:26px;
  border-left:3px solid var(--pink-pale);
}
.bio-step{
  position:relative;
  padding-bottom:var(--sp-6);
}
.bio-step:last-child{padding-bottom:0;}
.bio-dot{
  position:absolute;
  left:-32.5px;
  top:4px;
  width:14px; height:14px;
  border-radius:50%;
  background:var(--pink);
  border:2.5px solid var(--ink);
}
.bio-step h3{
  margin:0 0 4px;
  font-family:var(--font-display);
  font-size:17px;
  color:var(--pink-deep);
}
.bio-step p{
  margin:0;
  font-size:14px;
  line-height:1.5;
  color:var(--ink-soft);
}

/* ---------------------------------------------------------------------------
   FAQ: native details/summary accordion, no JS required
   --------------------------------------------------------------------------- */
.faq-list{
  max-width:640px;
  margin:0 auto;
  display:flex;
  flex-direction:column;
  gap:var(--sp-3);
}
.faq-item{
  background:var(--paper);
  border:2.5px solid var(--ink);
  border-radius:var(--radius-sm);
  padding:2px 16px;
  box-shadow:3px 4px 0 rgba(26,10,20,.14);
}
.faq-item summary{
  cursor:pointer;
  list-style:none;
  padding:14px 26px 14px 0;
  font-family:var(--font-sans);
  font-weight:800;
  font-size:14.5px;
  position:relative;
}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::after{
  content:"+";
  position:absolute;
  right:0; top:50%;
  transform:translateY(-50%);
  font-family:var(--font-display);
  font-size:20px;
  color:var(--pink-deep);
}
.faq-item[open] summary::after{content:"\2212";}
.faq-item p{
  margin:0 0 14px;
  font-size:13.5px;
  line-height:1.5;
  color:var(--ink-soft);
}

/* ---------------------------------------------------------------------------
   Schedule: barbershop appointment board
   --------------------------------------------------------------------------- */
.schedule-table{
  width:100%;
  max-width:640px;
  margin:0 auto;
  border-collapse:collapse;
  background:var(--paper);
  border:2.5px solid var(--ink);
  border-radius:var(--radius-md);
  overflow:hidden;
  box-shadow:4px 6px 0 rgba(26,10,20,.18);
}
.schedule-table th,.schedule-table td{
  text-align:left;
  padding:11px 16px;
  font-size:13px;
}
.schedule-table thead th{
  background:var(--ink);
  color:var(--paper);
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.schedule-table tbody tr:nth-child(odd){background:rgba(255,46,138,.05);}
.schedule-table td:first-child{
  font-family:var(--font-mono);
  font-weight:700;
  color:var(--pink-deep);
  white-space:nowrap;
}
.schedule-table td:last-child{color:var(--ink-soft);}

/* ---------------------------------------------------------------------------
   Responsive
   --------------------------------------------------------------------------- */
@media (max-width:640px){
  .scene{padding:var(--sp-3) var(--sp-3) var(--sp-6);gap:var(--sp-4);}
  .price-list{
    position:static;
    width:100%;
    max-width:none;
    transform:none;
    margin-top:var(--sp-4);
  }
  .price-list::after,.price-list::before{display:none;}
  .chair-wrap{width:min(420px, 100%);}
  .brand-sub{display:none;}
  .depth-section{padding:var(--sp-6) var(--sp-3);}
  .bio-timeline{padding-left:22px;}
  .bio-dot{left:-28.5px;}
  .schedule-table th,.schedule-table td{padding:9px 10px;font-size:12px;}
}

@media (min-width:920px){
  .stage{gap:var(--sp-7);}
  .chair-wrap{width:600px;}
}

@media (prefers-reduced-motion: reduce){
  .status-dot,.barber-pole,.tentacle-fx,.cut-btn.is-busy .i-scissor,.scroll-cue .i-scissor{animation:none !important;}
  .ca-copy,.x-icon-btn,.cut-btn,.depth-section{transition:none;}
}
