/* ASH · After Six Hangout
   The page is one evening: 18:00 at the top, past midnight at the bottom.
   The background colour is driven by scroll (script.js sets --bg). */

:root{
  --bg:#3a1c15;
  --cream:#f1e6d3;
  --paper:#f4ead9;
  --ink:#1a0f0c;
  --oxblood:#6b1a16;
  --stamp:#ff8a3d;
  --muted:#c9b59c;
  --line:rgba(241,230,211,.18);

  --display:"Rozha One", "Bodoni 72", Didot, Georgia, serif;
  --body:"Hanken Grotesk", "Helvetica Neue", Arial, sans-serif;
  --hand:"Nothing You Could Do", "Bradley Hand", cursive;
  --lcd:"VT323", "Courier New", monospace;

  --gutter:clamp(18px, 3.4vw, 44px);
  color-scheme:dark;
}

*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--cream);font:400 17px/1.55 var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%;height:auto}
main,.foot{overflow-x:clip}
a{color:inherit}
h1,h2,h3{margin:0;font-weight:400}
p{margin:0}
:focus-visible{outline:2px solid var(--stamp);outline-offset:3px;border-radius:2px}
::selection{background:var(--stamp);color:var(--ink)}

.kicker{font:600 12px/1 var(--body);letter-spacing:.24em;text-transform:uppercase;color:var(--stamp)}
.scribble{font-family:var(--hand);font-size:20px;line-height:1.3;color:var(--muted)}
.stamp{font-family:var(--lcd);color:var(--stamp);letter-spacing:.06em;text-shadow:0 0 6px rgba(255,138,61,.55),0 0 18px rgba(255,138,61,.25)}

/* atmosphere ------------------------------------------------------------ */
.grain{position:fixed;inset:-50%;z-index:60;pointer-events:none;opacity:.11;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 .55 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  animation:grain 1s steps(6) infinite}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-4%)}60%{transform:translate(-4%,-2%)}80%{transform:translate(3%,3%)}100%{transform:translate(0,0)}}
.candle{position:fixed;left:0;top:0;width:720px;height:720px;margin:-360px 0 0 -360px;z-index:2;pointer-events:none;border-radius:50%;
  background:radial-gradient(circle, rgba(255,170,95,.20) 0%, rgba(255,140,70,.08) 32%, transparent 64%);mix-blend-mode:screen;opacity:0;transition:opacity .6s}
.candle.on{opacity:1}
@media (hover:none){.candle{display:none}}

/* loader ---------------------------------------------------------------- */
.loader{position:fixed;inset:0;z-index:80;background:#22100c;display:grid;place-content:center;justify-items:center;gap:6px;animation:loaderOut .7s ease 2.6s forwards}
.loader-clock{font-size:clamp(96px,22vw,280px);line-height:.9}
.loader-line{font-size:clamp(20px,2.4vw,30px)}
@keyframes loaderOut{to{opacity:0;visibility:hidden}}
html:not(.js) .loader{display:none}

/* fixed frame ----------------------------------------------------------- */
.hud{position:fixed;inset:0;z-index:40;pointer-events:none}
.hud > *{pointer-events:auto;position:absolute}
.hud-mark{top:calc(14px + env(safe-area-inset-top,0px));left:var(--gutter);font:400 30px/1 var(--display);text-decoration:none}
.hud-clock{top:calc(12px + env(safe-area-inset-top,0px));right:var(--gutter);display:flex;flex-direction:column;align-items:flex-end}
.hud-clock .stamp{font-size:38px;line-height:1}
.hud-label{font:600 10.5px/1.2 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.hud-city{bottom:calc(18px + env(safe-area-inset-bottom,0px));left:var(--gutter);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.hud-cta{bottom:calc(14px + env(safe-area-inset-bottom,0px));right:var(--gutter);text-decoration:none;font:600 14px/1 var(--body);padding:14px 20px;border-radius:999px;background:var(--cream);color:var(--ink);transition:transform .2s}
.hud-cta:hover{transform:translateY(-2px) rotate(-2deg)}
@media (max-width:640px){.hud-city{display:none}.hud-clock .stamp{font-size:30px}}

/* 18:00 hero ------------------------------------------------------------ */
.hero{min-height:100svh;padding:clamp(84px,10vh,112px) var(--gutter) clamp(72px,9vh,96px);display:grid;grid-template-columns:1fr auto;align-content:center;column-gap:40px;position:relative;z-index:3}
.hero-title{display:contents}
.hero-title .line{display:block;font:400 clamp(62px,min(11vw,17svh),190px)/.86 var(--display);letter-spacing:-.015em;position:relative;z-index:4;pointer-events:none}
.hero-title .l1{grid-row:1;grid-column:1;justify-self:start;align-self:end;margin-bottom:-.32em}
.hero-title .l2{grid-row:3;grid-column:1 / -1;justify-self:end;margin-top:-.30em}
.table-wrap{grid-row:2;grid-column:1 / -1;position:relative;width:clamp(520px, calc((100svh - 330px) * 2.35), min(1080px,92vw));aspect-ratio:2.35/1;justify-self:center}
.table{position:absolute;inset:13% 7%;border-radius:50%;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.45), inset 0 0 0 1px var(--line)}
.table img{width:100%;height:100%;object-fit:cover;filter:brightness(.78) saturate(.9) sepia(.15);transform:scale(1.04)}
.table::after{content:"";position:absolute;inset:0;border-radius:50%;background:radial-gradient(ellipse at 50% 50%, transparent 40%, rgba(20,8,6,.55) 100%)}
.seats{position:absolute;inset:0}
.seat{--s:clamp(30px,3.3vw,46px);position:absolute;left:var(--sx);top:var(--sy);width:var(--s);height:var(--s);margin:calc(var(--s) / -2) 0 0 calc(var(--s) / -2);border-radius:50%;border:1.5px solid var(--line);background:transparent;cursor:pointer;padding:0;transition:background .35s, border-color .35s, transform .25s}
.seat::after{content:"";position:absolute;inset:30%;border-radius:50%;background:var(--stamp);box-shadow:0 0 10px var(--stamp),0 0 26px rgba(255,138,61,.5);transform:scale(0);transition:transform .35s cubic-bezier(.3,1.6,.5,1)}
.seat.filled{border-color:rgba(241,230,211,.55);background:rgba(241,230,211,.06)}
.seat.filled::after{transform:scale(1)}
.seat:hover,.seat:focus-visible{transform:scale(1.18)}
.seat.you{border:1.5px dashed var(--cream);display:grid;place-items:center;font:400 18px/1 var(--lcd);color:var(--cream);text-decoration:none}
.seat.you::after{display:none}
.seat.you::before{content:"";position:absolute;inset:-8px;border-radius:50%;border:1px solid var(--stamp);animation:ping 2.2s ease-out infinite}
@keyframes ping{from{transform:scale(.7);opacity:.9}to{transform:scale(1.5);opacity:0}}
.seat-tip{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font:400 clamp(24px,2.6vw,34px)/1.1 var(--hand);color:var(--cream);text-shadow:0 2px 14px rgba(0,0,0,.7);text-align:center;pointer-events:none;z-index:5;max-width:60%}
html:not(.js) .seats,html:not(.js) .seat-tip{display:none}
/* 3D table (table3d.js); the photo and dot seats stay as the fallback */
.table3d{position:absolute;left:-6%;top:-20%;width:112%;height:136%;z-index:2;display:block;touch-action:pan-y}
.three-on .table{visibility:hidden}
.three-on .seats{opacity:0}
.three-on .seat:focus-visible{opacity:1}
.three-on .seat-tip{left:50%;top:50%;transform:translate(-50%,-100%);max-width:none;white-space:nowrap;transition:opacity .2s}
.three-on .seat-tip:empty{opacity:0}
@media (max-width:760px){.table3d{left:-14%;top:-8%;width:128%;height:116%}}
.lede{grid-row:1;grid-column:2;align-self:end;max-width:30ch;font-size:clamp(15px,1.15vw,17px);opacity:.85;padding-bottom:.4em;position:relative;z-index:4}
.scroll-cue{grid-row:3;grid-column:1;align-self:end;justify-self:start;font-size:21px;position:relative;z-index:4;padding-bottom:.6em}
@media (max-width:900px){
  .hero{grid-template-columns:1fr}
  .lede{grid-row:4;grid-column:1;max-width:40ch;margin-top:28px;font-size:16px}
  .scroll-cue{grid-row:5;margin-top:14px}
  .hero-title .l2{grid-column:1}
}
@media (max-width:760px){
  .table-wrap{aspect-ratio:1/1.2;width:min(440px,88vw,calc((100svh - 330px) / 1.2))}
  .table{inset:10% 13%}
  .hero-title .line{font-size:clamp(52px,15vw,90px)}
  .hero-title .l1{margin-bottom:-.2em}
  .hero-title .l2{margin-top:-.2em}
}

/* 19:00 note ------------------------------------------------------------ */
.note{position:relative;z-index:3}
.note-pin{min-height:100svh;padding:clamp(96px,14vh,140px) var(--gutter) 80px;display:flex;flex-direction:column;justify-content:center;gap:clamp(24px,4vh,44px);max-width:1280px;margin:0 auto}
.note-big{font:400 clamp(46px,7.4vw,124px)/.92 var(--display);color:var(--stamp);text-shadow:0 0 30px rgba(255,138,61,.25)}
.note-body{font:500 clamp(21px,2.5vw,38px)/1.28 var(--body);letter-spacing:-.01em;max-width:34ch}
.sign{font:400 26px/1 var(--display);color:var(--muted)}

/* 20:00 tables ---------------------------------------------------------- */
.tables{position:relative;z-index:3;overflow:hidden}
.tables-track{display:flex;width:max-content}
.panel{width:100vw;min-height:100svh;flex:0 0 auto;padding:clamp(96px,14vh,130px) var(--gutter) 80px;display:flex;align-items:center}
.panel-intro{flex-direction:column;align-items:flex-start;justify-content:center;gap:22px}
.panel-intro h2{font:400 clamp(58px,9.5vw,170px)/.86 var(--display)}
.panel-intro h2 em{font:400 .34em/1.2 var(--hand);color:var(--stamp);display:block;margin-top:.5em;font-style:normal}
.room{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(28px,5vw,80px);align-items:center}
.room-photo{position:relative;height:min(72svh,760px);aspect-ratio:4/5;max-width:100%;justify-self:end;overflow:hidden;border-radius:2px}
.room-photo img{width:100%;height:100%;object-fit:cover;transform:scale(1.12)}
.date{position:absolute;right:14px;bottom:10px;font-size:26px}
.room-copy{display:flex;flex-direction:column;gap:16px;max-width:640px;min-width:0}
.room-when{font-size:30px}
.room h3{font:400 clamp(58px,7.2vw,138px)/.84 var(--display);letter-spacing:-.015em}
.room-sub{font:600 12.5px/1.4 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.room-copy p:last-child{font-size:clamp(17px,1.4vw,20px);max-width:38ch;opacity:.9}
@media (max-width:820px){
  .tables-track{flex-direction:column;width:100%}
  .panel{width:100%;min-height:auto;padding-block:72px}
  .room{grid-template-columns:1fr}
  .room-photo{justify-self:start;height:auto;width:100%}
}

/* 22:30 fifteen --------------------------------------------------------- */
.fifteen{position:relative;z-index:3}
.fifteen-pin{min-height:100svh;display:grid;place-items:center;position:relative;overflow:hidden;padding:80px var(--gutter)}
.fifteen-num{font:400 clamp(260px,52vw,980px)/.78 var(--display);letter-spacing:-.06em;
  background:url("assets/img/crawl-neon.jpg") 50% 30%/cover;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;filter:saturate(1.15) contrast(1.05)}
.fifteen-copy{position:absolute;left:var(--gutter);bottom:clamp(64px,10vh,110px);max-width:min(420px,80vw);display:flex;flex-direction:column;gap:14px}
.fifteen-copy h2{font:400 clamp(34px,4vw,58px)/1 var(--display)}
.fifteen-copy p{font-size:18px;opacity:.9}
@media (max-width:820px){.fifteen-copy{position:static;margin-top:-30px}.fifteen-pin{display:flex;flex-direction:column;justify-content:center}}

/* 23:00 how ------------------------------------------------------------- */
.how{position:relative;z-index:3;padding:clamp(96px,14vh,150px) var(--gutter);max-width:1320px;margin:0 auto}
.how-head{display:flex;flex-direction:column;gap:16px;margin-bottom:clamp(40px,7vh,72px)}
.how-head h2{font:400 clamp(46px,6.6vw,110px)/.9 var(--display)}
.cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,2.4vw,32px);perspective:1100px}
.tent{position:relative;background:var(--paper);color:var(--ink);padding:44px 28px 30px;border-radius:3px;box-shadow:0 26px 50px rgba(0,0,0,.35);transform-origin:50% 100%;display:flex;flex-direction:column;gap:10px}
.tent::before{content:"";position:absolute;left:0;right:0;top:18px;border-top:1px dashed rgba(26,15,12,.25)}
.tent-n{font:400 64px/.9 var(--display);color:var(--oxblood);margin-top:8px}
.tent h3{font:600 20px/1.25 var(--body)}
.tent p{color:#5e4b3e}
.fine{margin-top:40px;font-size:14px;color:var(--muted)}
@media (max-width:860px){.cards{grid-template-columns:1fr}}

/* 00:00 prints ---------------------------------------------------------- */
.prints{position:relative;z-index:3;padding:clamp(96px,14vh,140px) var(--gutter) 40px}
.prints-head{display:flex;justify-content:space-between;align-items:baseline;gap:20px;flex-wrap:wrap;margin-bottom:24px}
.prints-hint{font-size:22px}
.board{position:relative;height:clamp(640px,92vh,900px)}
.print{position:absolute;left:var(--x);top:var(--y);width:clamp(190px,19vw,290px);margin:0;padding:10px 10px 44px;background:#f6eedf;box-shadow:0 18px 40px rgba(0,0,0,.45);transform:rotate(var(--r));cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
.print.wide{width:clamp(250px,26vw,400px)}
.print.dragging{cursor:grabbing;box-shadow:0 34px 60px rgba(0,0,0,.55)}
.print img{width:100%;aspect-ratio:4/5;object-fit:cover;pointer-events:none}
.print.wide img{aspect-ratio:4/3}
.print .date{right:18px;bottom:52px;font-size:22px}
.print figcaption{position:absolute;left:12px;right:12px;bottom:9px;color:#3a2a22;font-size:19px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:820px){
  .board{height:auto;display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;padding:10px 4px 30px}
  .print,.print.wide{position:relative;left:auto;top:auto;flex:0 0 auto;width:72vw;scroll-snap-align:center;touch-action:auto;cursor:default}
}

/* 00:30 join ------------------------------------------------------------ */
.join{position:relative;z-index:3;min-height:100svh;padding:clamp(96px,14vh,140px) var(--gutter) 120px;display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(32px,6vw,96px);align-items:center;max-width:1320px;margin:0 auto;scroll-margin-top:0}
.join-head{display:flex;flex-direction:column;gap:18px}
.join-head h2{font:400 clamp(52px,6.8vw,116px)/.88 var(--display)}
.join-head p{font-size:18px;color:var(--muted);max-width:34ch}
@media (max-width:900px){.join{grid-template-columns:1fr}}

.tf{position:relative;background:var(--paper);color:var(--ink);border-radius:4px;padding:clamp(28px,4vw,52px);min-height:440px;display:flex;flex-direction:column;gap:22px;box-shadow:0 40px 90px rgba(0,0,0,.5);overflow:hidden}
.tf::before{content:"";position:absolute;left:0;right:0;top:22px;border-top:1px dashed rgba(26,15,12,.22)}
.tf-progress{position:absolute;top:0;left:0;right:0;height:4px;background:rgba(107,26,22,.12)}
.tf-progress span{display:block;height:100%;width:0;background:var(--oxblood);transition:width .45s cubic-bezier(.2,.8,.2,1)}
.tf-count{position:absolute;top:30px;right:clamp(28px,4vw,52px);font-size:22px;color:#c4561c;text-shadow:none}
.tf-step{display:flex;flex-direction:column;gap:14px;margin-top:28px}
.tf-q{font:400 clamp(28px,3vw,42px)/1.08 var(--display);color:var(--ink)}
.req{color:var(--oxblood)}
.tf-help{color:#6c584a;font-size:16px}
.tf-input{width:100%;font:400 clamp(20px,2vw,24px)/1.35 var(--body);color:var(--ink);background:transparent;border:0;border-bottom:1.5px solid rgba(26,15,12,.2);padding:10px 0;outline:none;resize:none;border-radius:0}
.tf-input:focus{border-bottom-color:var(--oxblood)}
.tf-input::placeholder{color:rgba(26,15,12,.32)}
.tf-area{min-height:96px}
.tf-choices{display:flex;flex-direction:column;gap:10px}
.tf-choice{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid rgba(26,15,12,.18);border-radius:4px;cursor:pointer;transition:border-color .15s, background .15s, transform .15s}
.tf-choice:hover{border-color:var(--oxblood);transform:translateX(4px)}
.tf-choice input{position:absolute;opacity:0;pointer-events:none}
.tf-choice .key{flex:0 0 auto;width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(26,15,12,.2);border-radius:3px;font:400 20px/1 var(--lcd);color:var(--oxblood);background:#fffaf1}
.tf-choice b{display:block;font-weight:600;font-size:17px}
.tf-choice span:last-child{color:#6c584a;font-size:15px;line-height:1.35}
.tf-choice:has(input:checked){border-color:var(--oxblood);background:rgba(107,26,22,.08)}
.tf-choice:has(input:checked) .key{background:var(--oxblood);color:var(--paper);border-color:var(--oxblood)}
.tf-choice:has(input:focus-visible){outline:2px solid var(--stamp);outline-offset:2px}
.tf-error{color:var(--oxblood);font-weight:600;font-size:15px}
.tf-nav{display:flex;align-items:center;gap:14px;margin-top:auto;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;font:600 16px/1 var(--body);padding:15px 26px;border-radius:999px;border:1px solid transparent;background:var(--oxblood);color:var(--paper);cursor:pointer;transition:transform .15s}
.btn:hover{transform:translateY(-2px)}
.btn.ghost{background:transparent;color:var(--ink);border-color:rgba(26,15,12,.25)}
.btn[disabled]{opacity:.6;cursor:progress}
.tf-hint{font-size:13px;color:#6c584a}
.tf-hint kbd{font:600 12px var(--body);border:1px solid rgba(26,15,12,.2);border-radius:4px;padding:2px 6px;background:#fffaf1}
@media (hover:none){.tf-hint{display:none}}
.tf-done{align-items:flex-start}
.tf-done .tf-q{font-size:clamp(30px,3.2vw,44px)}
.tf-done .scribble.big{font-size:30px;color:var(--oxblood)}
.placecard{align-self:stretch;background:#fffaf1;border:1px solid rgba(26,15,12,.14);padding:22px 24px 20px;transform:rotate(-2deg);box-shadow:0 14px 30px rgba(26,15,12,.18);display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.pc-top,.pc-seat{font-size:18px;color:#c4561c;text-shadow:none}
.pc-name{font:400 clamp(40px,5vw,64px)/1 var(--display);color:var(--ink);overflow-wrap:anywhere}
.pc-table{font:400 26px/1 var(--hand);color:var(--oxblood)}

/* footer ---------------------------------------------------------------- */
.foot{position:relative;z-index:3;overflow:hidden;padding-top:40px}
.marquee{overflow:hidden;border-block:1px solid var(--line);padding:14px 0}
.marquee-track{display:flex;width:max-content;animation:marquee 38s linear infinite}
.marquee span{font:400 clamp(44px,6vw,96px)/1.15 var(--display);color:transparent;-webkit-text-stroke:1px rgba(241,230,211,.55);white-space:nowrap;padding-right:.3em}
@keyframes marquee{to{transform:translateX(-50%)}}
.foot-mark{font:400 clamp(180px,38vw,620px)/.72 var(--display);letter-spacing:-.04em;text-align:center;margin-top:.12em}
.foot-row{display:flex;gap:28px;flex-wrap:wrap;justify-content:center;padding:18px var(--gutter) calc(96px + env(safe-area-inset-bottom,0px));font-size:14px;color:var(--muted)}
.foot-row a{color:var(--cream);text-underline-offset:5px}

@media (prefers-reduced-motion:reduce){
  .grain,.marquee-track,.seat.you::before{animation:none}
  .loader{display:none}
}
