@font-face{font-family:'Fraunces';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/fraunces-400.woff2') format('woff2');}
@font-face{font-family:'Fraunces';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/fraunces-500.woff2') format('woff2');}
@font-face{font-family:'Fraunces';font-style:italic;font-weight:400;font-display:swap;src:url('/fonts/fraunces-400-italic.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/inter-400.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/inter-600.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/plexmono-400.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/plexmono-500.woff2') format('woff2');}

:root{
  --night:#0b0a08;
  --night-2:#14110d;
  --ink:#efe8db;
  --ink-2:#b9b0a1;
  --ink-3:#857c6e;
  --rule:rgba(239,232,219,.13);
  --lamp:#e8a54b;
  --lamp-soft:rgba(232,165,75,.18);
  --moon:#9fb4e0;
  --serif:'Fraunces',Georgia,serif;
  --sans:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,Menlo,monospace;
  --gutter:clamp(16px,4vw,56px);
  color-scheme:dark;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--night);color:var(--ink);font:400 17px/1.6 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:var(--ink);text-decoration-color:var(--lamp);text-underline-offset:3px}
a:hover{color:var(--lamp)}
:focus-visible{outline:2px solid var(--lamp);outline-offset:3px;border-radius:2px}
.skip{position:absolute;left:-9999px;top:8px;background:var(--lamp);color:#140f08;padding:8px 12px;z-index:50}
.skip:focus{left:8px}

/* ---------- masthead ---------- */
.mast{position:absolute;inset:0 0 auto 0;z-index:5;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px var(--gutter);font:500 12px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.mark{margin:0;display:flex;align-items:center;gap:10px}
.mark-w{display:inline-grid;place-items:center;width:26px;height:26px;border:1px solid var(--lamp);color:var(--lamp);font:500 15px/1 var(--serif);letter-spacing:0}
.sep{color:var(--ink-3)}
.mast-nav{display:flex;gap:22px}
.mast-nav a{color:var(--ink-2);text-decoration:none}
.mast-nav a:hover{color:var(--lamp)}

/* ---------- the shop ---------- */
.shop{position:relative;padding-top:64px}
.shop-copy{position:relative;z-index:3;padding:clamp(20px,5vh,56px) var(--gutter) 0;max-width:760px;pointer-events:none}
.shop-copy > *{pointer-events:auto}
h1{font:400 clamp(38px,5.6vw,76px)/1.02 var(--serif);letter-spacing:-.02em;margin:0 0 18px}
h1 em{font-style:italic;color:var(--lamp)}
.lead{max-width:56ch;color:var(--ink-2);margin:0 0 16px;font-size:clamp(16px,1.25vw,18px)}
.invite{display:block;margin:0;font:400 13px/1.4 var(--mono);color:var(--ink-2);letter-spacing:.02em}
.invite strong{color:var(--ink);font-weight:500}
.dot{display:inline-block;vertical-align:1px;margin-right:9px;width:9px;height:9px;border-radius:50%;background:var(--lamp);box-shadow:0 0 0 0 var(--lamp-soft);animation:breathe 2.6s ease-in-out infinite}
@keyframes breathe{50%{box-shadow:0 0 0 7px rgba(232,165,75,0)}0%{box-shadow:0 0 0 0 rgba(232,165,75,.55)}}

.stage{position:relative;margin-top:-9vw}
.scene{position:relative;width:100%;aspect-ratio:1.6;overflow:hidden;isolation:isolate}
.layer{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;user-select:none;-webkit-user-drag:none}
.layer-base{filter:brightness(.18) saturate(.6);transition:filter 2.2s cubic-bezier(.2,.7,.2,1)}
.scene.awake .layer-base{filter:none}
.layer-lit{opacity:0;transition:opacity .7s ease;pointer-events:none}
.layer-lit.on{opacity:1}
/* soft vignette so the copy reads over the dark corner */
.scene::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(to bottom,var(--night) 0,transparent 10%);z-index:1}

.hotspots{position:absolute;inset:0;z-index:2}
.hot{position:absolute;transform:translate(-50%,-50%);display:grid;place-items:center;width:44px;height:44px;border:0;padding:0;background:none;cursor:pointer;color:var(--ink)}
.hot::before{content:"";width:12px;height:12px;border-radius:50%;background:var(--lamp);box-shadow:0 0 0 4px rgba(232,165,75,.22),0 0 22px 6px rgba(232,165,75,.45);transition:transform .25s ease}
.hot::after{content:"";position:absolute;width:12px;height:12px;border-radius:50%;border:1px solid var(--lamp);animation:ring 3s ease-out infinite;animation-delay:var(--d,0s);opacity:0}
@keyframes ring{0%{transform:scale(1);opacity:.8}70%,100%{transform:scale(3.4);opacity:0}}
.hot:hover::before,.hot:focus-visible::before,.hot.on::before{transform:scale(1.35)}
.hot-label{position:absolute;left:50%;bottom:calc(100% - 4px);transform:translate(-50%,6px);white-space:nowrap;font:500 11px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;background:rgba(11,10,8,.86);border:1px solid var(--rule);padding:7px 9px;opacity:0;transition:opacity .2s,transform .2s;pointer-events:none}
.hot-label small{display:block;margin-top:5px;font:400 12px/1.3 var(--sans);letter-spacing:0;text-transform:none;color:var(--ink-2)}
.hot:hover .hot-label,.hot:focus-visible .hot-label,.hot.on .hot-label{opacity:1;transform:translate(-50%,0)}
.hot.egg::before{width:8px;height:8px;background:var(--moon);box-shadow:0 0 14px 3px rgba(159,180,224,.4)}
.hot.egg::after{display:none}
.hot.egg .hot-label{opacity:0}
.hot.egg:hover .hot-label,.hot.egg:focus-visible .hot-label{opacity:1}

/* the bench index: the scene's keyboard and phone twin */
.benches{list-style:none;margin:0;padding:8px var(--gutter) 40px;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:0;border-top:1px solid var(--rule);position:relative;z-index:3;counter-reset:b}
.benches li{border-bottom:1px solid var(--rule)}
.bench{all:unset;box-sizing:border-box;display:block;width:100%;padding:16px 14px 16px 0;cursor:pointer}
.bench:focus-visible{outline:2px solid var(--lamp);outline-offset:-2px}
.bench-k{display:block;font:500 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--lamp);margin-bottom:8px}
.bench-t{display:block;font:400 21px/1.15 var(--serif)}
.bench-s{display:block;font-size:14px;color:var(--ink-2);margin-top:4px;line-height:1.4}
.bench:hover .bench-t,.bench.on .bench-t{color:var(--lamp)}

/* ---------- the paper sections ---------- */
.sheet{padding:clamp(56px,9vw,120px) var(--gutter);max-width:1180px;margin:0 auto;border-top:1px solid var(--rule)}
.folio{font:500 12px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--lamp);margin:0 0 18px}
h2{font:400 clamp(30px,3.6vw,48px)/1.08 var(--serif);letter-spacing:-.015em;margin:0 0 32px}
h3{font:600 17px/1.3 var(--sans);margin:0 0 6px}
.hair{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:0 40px}
.hair li{border-top:1px solid var(--rule);padding:20px 0 26px}
.hair p,.steps p,.two p{color:var(--ink-2);margin:0}
.steps{list-style:none;margin:0;padding:0;counter-reset:s;display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:0 40px}
.steps li{counter-increment:s;border-top:1px solid var(--rule);padding:20px 0 26px}
.steps li::before{content:counter(s,decimal-leading-zero);display:block;font:400 44px/1 var(--serif);font-style:italic;color:var(--lamp);margin-bottom:12px}
.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:56px}
.two h2{margin-bottom:20px}
.aside{margin:34px 0 0;color:var(--ink-2);font-size:15px}
.link{all:unset;cursor:pointer;color:var(--ink);text-decoration:underline;text-decoration-color:var(--lamp);text-underline-offset:3px}
.link:hover{color:var(--lamp)}
.link:focus-visible{outline:2px solid var(--lamp);outline-offset:3px}
.write h2{font-size:clamp(36px,5vw,64px)}
.address{font:400 clamp(22px,2.4vw,30px)/1.2 var(--serif);margin:0}
.placeholder{border:1px dashed var(--ink-3);padding:4px 12px;color:var(--ink-3);font-style:italic}
.foot{padding:40px var(--gutter) 56px;border-top:1px solid var(--rule);font:400 12px/1.6 var(--mono);color:var(--ink-3)}
.foot p{margin:0 0 6px}
.foot a{color:var(--ink-2)}

/* ---------- the drawer ---------- */
.drawer{position:fixed;inset:0;z-index:40}
.drawer[hidden]{display:none}
.drawer-scrim{position:absolute;inset:0;background:rgba(5,4,3,.55);backdrop-filter:blur(2px);animation:fade .3s ease}
.drawer-panel{position:absolute;top:0;right:0;bottom:0;width:min(1040px,92vw);background:var(--night-2);border-left:1px solid var(--rule);display:flex;flex-direction:column;box-shadow:-40px 0 80px rgba(0,0,0,.5);animation:slide .45s cubic-bezier(.2,.8,.2,1)}
@keyframes slide{from{transform:translateX(40px);opacity:0}}
@keyframes fade{from{opacity:0}}
.drawer-bar{display:grid;grid-template-columns:1fr auto;grid-template-areas:"k nav" "t nav";align-items:center;gap:2px 16px;padding:14px 18px;border-bottom:1px solid var(--rule)}
.drawer-label{grid-area:k;margin:0;font:500 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--lamp)}
.drawer-title{grid-area:t;margin:0;font:400 24px/1.2 var(--serif)}
.drawer-nav{grid-area:nav;display:flex;gap:6px}
.nav-btn{all:unset;box-sizing:border-box;cursor:pointer;min-width:40px;height:40px;padding:0 12px;display:grid;place-items:center;border:1px solid var(--rule);font:500 13px/1 var(--mono);color:var(--ink-2)}
.nav-btn:hover{color:var(--lamp);border-color:var(--lamp)}
.nav-btn:focus-visible{outline:2px solid var(--lamp);outline-offset:2px}
.nav-btn.close{color:var(--ink)}
.drawer-frame{flex:1;width:100%;border:0;background:var(--night-2)}

/* ---------- wide screens: the copy sits in the shop's dark corner, the room fills the first screen ---------- */
@media (min-width:1000px){
  .shop-top{display:grid;min-height:calc(100svh - 64px - 96px)}
  .shop-copy,.stage{grid-area:1/1}
  .shop-copy{align-self:center;max-width:min(520px,31vw);padding-top:0;padding-bottom:6vh}
  h1{font-size:clamp(38px,3.7vw,64px)}
  .stage{justify-self:end;align-self:center;margin-top:0;margin-right:-1vw;width:min(73vw,calc((100svh - 150px) * 1.6))}
  .scene::after{background:linear-gradient(to right,var(--night) 0,transparent 7%),linear-gradient(to bottom,var(--night) 0,transparent 6%)}
  .benches{grid-template-columns:repeat(7,1fr)}
  .bench-t{font-size:19px}
}

/* ---------- phones: the shop becomes a pannable wide shot ---------- */
@media (max-width:760px){
  .mast-nav{display:none}
  .shop{padding-top:58px}
  .stage{margin-top:12px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .stage::-webkit-scrollbar{display:none}
  .scene{width:170vw;max-width:none}
  .hot-label{display:none}
  .drawer-panel{width:100%;top:6svh;border-left:0;border-top:1px solid var(--rule);border-radius:14px 14px 0 0;animation-name:rise}
  @keyframes rise{from{transform:translateY(60px);opacity:0}}
  .drawer-bar{grid-template-areas:"k k" "t nav"}
  .drawer-title{font-size:20px}
  #drawer-pop{display:none}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}
  .layer-base{filter:none}
}
