:root {
  --ink: #170809;
  --ink-soft: #230d0f;
  --oxblood: #4a1017;
  --wine: #6b1822;
  --amber: #e7a94e;
  --amber-hot: #ffd98c;
  --cream: #f2dfb9;
  --smoke: #b8a68e;
  --gin: #c7e0d6;
  --paper: #d5b477;
  --draft: 0;
  --swing: 0deg;
  --shadow-x: 12px;
  --match-x: 68vw;
  --match-y: 48vh;
  --display: 'DM Serif Display', Georgia, serif;
  --body: 'Jost', sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--ink); scrollbar-color: #80501f #110607; scrollbar-width: thin; }
body {
  margin: 0;
  min-width: 320px;
  overflow-x: clip;
  color: var(--cream);
  background:
    radial-gradient(circle at 78% 8%, rgba(146, 60, 24, .18), transparent 24rem),
    linear-gradient(180deg, #18090a 0%, #2b0d11 42%, #160809 100%);
  font-family: var(--body);
  font-size: 17px;
  font-kerning: normal;
  font-synthesis: none;
  font-variant-ligatures: common-ligatures contextual;
  line-height: 1.6;
  text-rendering: optimizeLegibility;
}
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: #110607; }
::-webkit-scrollbar-thumb { border: 3px solid #110607; border-radius: 99px; background: linear-gradient(#a66a2e,#5c2d19); }
::-webkit-scrollbar-thumb:hover { background: linear-gradient(#d7933c,#78401f); }
main { min-width: 0; overflow: clip; }

button, a { font: inherit; }
button { color: inherit; }
a { color: inherit; }
::selection { background: var(--amber); color: var(--ink); }
.skip-link { position: fixed; z-index: 1000; left: 1rem; top: 1rem; transform: translateY(-150%); padding: .8rem 1rem; color: var(--ink); background: var(--amber-hot); }
.skip-link:focus { transform: translateY(0); }
:focus-visible { outline: 2px solid var(--amber-hot); outline-offset: 5px; }

.grain {
  position: fixed; z-index: 90; inset: 0; pointer-events: none; opacity: .11; mix-blend-mode: soft-light;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E");
}

.eyebrow { margin: 0; color: var(--amber); font-size: .7rem; font-weight: 700; letter-spacing: .24em; line-height: 1.3; text-transform: uppercase; }
.section-pad { padding: clamp(6rem, 11vw, 10rem) max(5vw, calc((100vw - 1280px) / 2)); }
h1, h2, h3, p { text-wrap: pretty; }
p { hanging-punctuation: first last; }
h1, h2, h3 { font-family: var(--display); font-kerning: normal; font-weight: 400; }
h2 { margin: 1.1rem 0 1.5rem; font-size: clamp(3.2rem, 7vw, 7.4rem); line-height: .88; letter-spacing: -.035em; }
h2 em { color: var(--amber); font-weight: 400; }
time,.price,.ledger-grid article>span,.alley-number,.raid-count { font-variant-numeric: lining-nums tabular-nums; }

/* The remembered door */
.door-scene {
  position: fixed; z-index: 500; inset: 0; display: grid; grid-template-columns: minmax(280px, 560px) minmax(260px, 430px); align-items: center; justify-content: center; gap: clamp(2rem, 7vw, 8rem); overflow: hidden;
  padding: clamp(1rem, 4vw, 4rem); background: radial-gradient(ellipse at 28% 55%, #4f291d 0%, #1e1010 38%, #080606 78%); transition: opacity .8s ease .3s, visibility 0s linear 1.1s;
}
.door-scene::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, rgba(0,0,0,.68), transparent 36%, rgba(0,0,0,.44)), repeating-linear-gradient(90deg, transparent 0 44px, rgba(255,255,255,.018) 45px 46px); }
.door-scene.is-open { opacity: 0; visibility: hidden; }
.alley-glow { position: absolute; width: 45vw; height: 58vw; max-width: 620px; max-height: 850px; left: 16%; top: 55%; transform: translate(-50%, -50%); background: radial-gradient(ellipse, rgba(234,166,72,.2), transparent 68%); filter: blur(20px); }
.door { position: relative; width: min(100%, 440px); aspect-ratio: .57; justify-self: center; padding: 0; cursor: crosshair; border: 12px solid #110b09; box-shadow: -30px 0 60px #060404, 0 0 0 2px #42251b, inset 0 0 55px #090504; background: linear-gradient(92deg, #2c1611, #4a281b 50%, #27130f); transform-origin: left center; transition: transform 1.15s cubic-bezier(.65,0,.18,1), filter .2s; }
.door.is-moving { transform: perspective(1300px) rotateY(-76deg); }
.door::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: repeating-linear-gradient(90deg, transparent 0 22px, rgba(0,0,0,.16) 24px, rgba(255,210,140,.04) 27px, transparent 31px); mix-blend-mode: overlay; }
.door-panel { position: absolute; left: 9%; right: 9%; border: 2px solid #1a0d0b; box-shadow: inset 0 0 0 5px rgba(127,74,43,.17), inset 10px 10px 28px rgba(0,0,0,.48); }
.door-panel--top { top: 6%; height: 36%; }
.door-panel--bottom { bottom: 6%; height: 31%; }
.laundry-sign { position: absolute; z-index: 2; left: 12%; right: 12%; top: 13%; display: flex; flex-direction: column; align-items: center; padding: 1.2rem .7rem 1rem; color: #26120c; background: #c6a66c; border: 3px double #3b1b12; box-shadow: 0 10px 25px rgba(0,0,0,.46); transform: rotate(-1.5deg); text-transform: uppercase; }
.laundry-sign__arc { font-size: .55rem; letter-spacing: .25em; }
.laundry-sign strong { margin: .35rem 0 0; font-family: var(--display); font-size: clamp(1.4rem, 3vw, 2.25rem); letter-spacing: .04em; line-height: 1; }
.laundry-sign small { font-size: .58rem; letter-spacing: .18em; }
.sign-hours { margin-top: .65rem; padding-top: .5rem; width: 100%; border-top: 1px solid rgba(38,18,12,.4); font-family: var(--display); font-size: .75rem; font-style: italic; text-transform: none; }
.peephole { position: absolute; z-index: 2; left: 50%; top: 51%; width: 34px; height: 34px; transform: translate(-50%,-50%); border: 7px solid #7c5227; border-radius: 50%; background: #080605; box-shadow: 0 0 0 3px #22120d, 0 8px 10px rgba(0,0,0,.7); }
.peephole i { position: absolute; width: 7px; height: 3px; left: 8px; top: 6px; border-radius: 50%; background: #ecc071; filter: blur(1px); opacity: .7; }
.knocker { position: absolute; z-index: 2; left: 50%; top: 61%; width: 66px; height: 66px; transform: translateX(-50%); border: 9px solid #8c5d29; border-radius: 50%; box-shadow: inset 2px 2px 2px #d09b53, 0 8px 10px #120907; }
.knocker i { position: absolute; left: 50%; top: -24px; width: 19px; height: 24px; transform: translateX(-50%); border-radius: 50% 50% 20% 20%; background: linear-gradient(90deg,#5e381c,#bd8140,#5d371b); }
.door.is-knocked .knocker { animation: knock .18s ease; }
@keyframes knock { 50% { transform: translateX(-50%) rotateX(55deg) translateY(-5px); } }
.door-handle { position: absolute; z-index: 2; right: 10%; top: 57%; width: 19px; height: 58px; border-radius: 9px; background: linear-gradient(90deg,#4c2c19,#ba7b38 55%,#5f381d); box-shadow: 0 5px 8px #100706; }
.door-copy { position: relative; z-index: 2; align-self: center; max-width: 400px; }
.door-instruction { margin: 1.2rem 0 1.5rem; font-family: var(--display); font-size: clamp(2rem,4.3vw,4.4rem); line-height: .95; }
.knock-meter { display: flex; gap: .75rem; }
.knock-meter i { width: 12px; height: 12px; border: 1px solid var(--amber); border-radius: 50%; transition: background .2s, transform .2s, box-shadow .2s; }
.knock-meter i.is-hit { background: var(--amber-hot); box-shadow: 0 0 22px var(--amber); transform: scale(1.18); }
.remembered { min-height: 3rem; max-width: 30ch; margin: 1.8rem 0 0; color: var(--smoke); font-size: .9rem; letter-spacing: .05em; }
.alley-number { position: absolute; right: 3vw; bottom: 1rem; color: rgba(242,223,185,.12); font-family: var(--display); font-size: clamp(6rem,18vw,18rem); line-height: .8; }

/* Header */
.site-header { position: absolute; z-index: 50; top: 0; left: 0; right: 0; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 2rem; min-height: 96px; padding: 0 4vw; border-bottom: 1px solid rgba(231,169,78,.18); }
.brand { display: inline-flex; width: max-content; min-height: 44px; align-items: center; gap: .8rem; text-decoration: none; }
.brand-mark { display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid var(--amber); border-radius: 50%; color: var(--amber); font-family: var(--display); font-style: italic; }
.brand strong { display: block; font-family: var(--display); font-size: 1.2rem; font-weight: 400; line-height: 1; }
.brand small { display: block; margin-top: .18rem; color: var(--smoke); font-size: .55rem; letter-spacing: .15em; text-transform: uppercase; }
.site-header nav { display: flex; gap: clamp(1.2rem,3vw,3.2rem); }
.site-header nav a { position: relative; padding: .75rem .15rem; color: var(--smoke); font-size: .67rem; font-weight: 700; letter-spacing: .16em; text-decoration: none; text-transform: uppercase; }
.site-header nav a::after { content:""; position:absolute; left:0; right:100%; bottom:.55rem; height:1px; background:var(--amber); transition:right .3s; }
.site-header nav a:hover::after,.site-header nav a:focus-visible::after { right:0; }
.brand-mark { transition:color .35s,background .35s,transform .55s cubic-bezier(.16,.9,.2,1); }
.brand:hover .brand-mark,.brand:focus-visible .brand-mark { color:var(--ink); background:var(--amber); transform:rotate(-10deg); }
.innocence-switch { justify-self: end; display: flex; align-items: center; gap: .65rem; min-height: 48px; padding: .45rem .7rem; cursor: pointer; border: 1px solid rgba(231,169,78,.3); background: rgba(10,5,5,.36); text-align: left; }
.innocence-switch { transition:border-color .25s,background .25s,transform .25s; }
.innocence-switch:hover,.innocence-switch:focus-visible { border-color:var(--amber); background:rgba(73,17,23,.66); transform:translateY(-1px); }
.innocence-switch b, .innocence-switch small { display: block; font-size: .56rem; letter-spacing: .15em; line-height: 1.4; text-transform: uppercase; }
.innocence-switch small { color: var(--smoke); }
.switch-lamp { width: 10px; height: 10px; border-radius: 50%; background: #4b1a16; box-shadow: inset 0 0 0 2px #1c0808; }

/* Hero */
.hero { position: relative; min-height: 100svh; overflow: hidden; border-bottom: 1px solid rgba(231,169,78,.15); background: radial-gradient(circle at 72% 38%, rgba(231,169,78,.18), transparent 23%), linear-gradient(120deg, #230b0e 0 48%, #3a0e14 100%); }
.hero::after { content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(90deg,rgba(0,0,0,.2),transparent 60%),linear-gradient(0deg,#170809 0,transparent 22%); }
.hero-copy { position: absolute; z-index: 4; left: max(5vw, calc((100vw - 1280px) / 2)); top: 50%; width: min(52vw, 720px); transform: translateY(-52%); }
.hero h1 { margin: .8rem 0 1rem; font-size: clamp(6rem,15.5vw,14.5rem); letter-spacing: -.075em; line-height: .62; }
.hero h1 span { display: block; color: var(--cream); }
.hero h1 em { display: block; margin-left: 20%; color: var(--amber); font-weight: 400; }
.hero-deck { max-width: 31ch; margin: 3rem 0 2rem 22%; color: #d6c7aa; font-family: var(--display); font-size: clamp(1.2rem,1.8vw,1.8rem); line-height: 1.25; }
.text-link { display: inline-flex; align-items: center; gap: 1.2rem; padding: .7rem 0; border-bottom: 1px solid rgba(231,169,78,.45); color: var(--amber-hot); font-size: .65rem; font-weight: 700; letter-spacing: .18em; text-decoration: none; text-transform: uppercase; }
.text-link > span:last-child { font-size: 1.2rem; transition: transform .25s; }
.text-link:hover > span:last-child { transform: translateY(4px); }
.text-link:hover,.text-link:focus-visible { color:#fff0c8; border-color:var(--amber-hot); }
.hero-copy .text-link { margin-left: 22%; }
.hero-scene { position: absolute; z-index: 2; right: 1.5vw; bottom: 0; width: min(48vw,720px); height: 88%; perspective: 800px; }
.hero-scene::before { content:""; position:absolute; inset: 4% 0 18%; border-radius: 50%; background: radial-gradient(ellipse,rgba(235,158,65,.12),transparent 63%); filter:blur(20px); }
.wall-frame { position:absolute; top:16%; display:grid; place-items:center; width:25%; aspect-ratio:.72; padding:1rem; border:8px solid #170908; outline:1px solid #8e5a30; color:#d4aa63; background:#230b0e; box-shadow:var(--shadow-x) 22px 40px rgba(0,0,0,.65); font-family:var(--display); text-align:center; transform: rotate(var(--swing)); transition: transform .2s; }
.wall-frame--left { left:18%; }
.wall-frame--right { right:10%; top:11%; transform:rotate(calc(var(--swing) * -.6)); }
.wall-frame small { font-family:var(--body); font-size:.5rem; letter-spacing:.1em; }
.table { position:absolute; left:16%; right:2%; bottom:7%; height:25%; border-radius:50% 50% 4% 4%; background:radial-gradient(ellipse at 50% 5%,#7d2630,#3c0c13 53%,#19080a 70%); box-shadow:0 -2px 0 #bc6a3f,0 30px 40px #080405; transform:perspective(400px) rotateX(10deg); }
.table::after { content:""; position:absolute; left:48%; top:55%; width:9%; height:95%; background:#24090d; }
.glass { position:absolute; bottom:76%; filter:drop-shadow(var(--shadow-x) 14px 7px rgba(0,0,0,.6)); }
.glass--coupe { left:25%; width:72px; height:42px; border:2px solid rgba(199,224,214,.75); border-radius:8% 8% 50% 50%; background:linear-gradient(0deg,rgba(231,169,78,.54) 0 38%,transparent 40%); }
.glass--coupe::after { content:""; position:absolute; left:33px; top:38px; width:2px; height:52px; background:rgba(199,224,214,.7); box-shadow:-18px 52px 0 18px rgba(199,224,214,.45); clip-path:polygon(48% 0,52% 0,100% 100%,0 100%); }
.glass--highball { right:22%; width:42px; height:92px; border:2px solid rgba(199,224,214,.65); border-radius:3px 3px 9px 9px; background:linear-gradient(0deg,rgba(231,169,78,.35) 0 62%,transparent 64%); }
.ashtray { position:absolute; left:50%; bottom:84%; width:65px; height:18px; border:2px solid rgba(199,224,214,.55); border-radius:50%; background:#1e1211; }
.chair { position:absolute; z-index:-1; right:6%; bottom:2%; width:31%; height:42%; border:12px solid #190708; border-radius:47% 47% 5% 5%; background:repeating-linear-gradient(90deg,#4d1018 0 14px,#5c151e 15px 25px); transform:rotate(8deg); box-shadow:20px 30px 40px #090405; }
.candle { position:absolute; z-index:3; width:30px; height:120px; }
.candle--hero { left:58%; bottom:27%; }
.candle .wax { position:absolute; bottom:0; width:100%; height:74%; border-radius:5px 5px 2px 2px; background:linear-gradient(90deg,#9f6f36,#f4c878 40%,#b98442); box-shadow:var(--shadow-x) 18px 15px rgba(0,0,0,.6); }
.candle .wick { position:absolute; z-index:2; left:50%; top:18%; width:2px; height:12px; background:#1d120d; }
.flame { position:absolute; z-index:3; left:50%; top:-7%; width:20px; height:38px; border-radius:52% 48% 45% 55% / 70% 70% 30% 30%; background:linear-gradient(0deg,#f18b27,#ffe9a3 70%); box-shadow:0 0 16px #f4a23c,0 0 44px rgba(239,149,46,.8); transform:translateX(-50%) skewX(calc(var(--draft) * 18deg)) scaleY(calc(1 - var(--draft) * .1)); transform-origin:50% 100%; animation:flicker 1.5s ease-in-out infinite alternate; }
.candle .glow { position:absolute; left:50%; top:-80px; width:240px; height:240px; border-radius:50%; background:radial-gradient(circle,rgba(231,169,78,.25),transparent 65%); transform:translateX(-50%); filter:blur(7px); }
@keyframes flicker { 0%{margin-left:-1px;filter:brightness(.9)} 50%{margin-left:1px} 100%{margin-left:0;filter:brightness(1.15)} }
.house-note { position:absolute; z-index:5; left:5vw; top:145px; max-width:260px; padding-left:1rem; border-left:1px solid var(--amber); }
.house-note span { color:var(--amber); font-size:.55rem; font-weight:700; letter-spacing:.15em; text-transform:uppercase; }
.house-note p { margin:.35rem 0 0; color:var(--smoke); font-family:var(--display); font-size:.95rem; font-style:italic; line-height:1.25; }
.hero-orbit { position:absolute; z-index:1; border:1px solid rgba(231,169,78,.11); border-radius:50%; }
.hero-orbit--one { width:75vw; height:75vw; right:-39vw; top:-30vw; }
.hero-orbit--two { width:44vw; height:44vw; right:-10vw; bottom:-22vw; }
.raid-hero-copy { display:none; }

.marquee { overflow:hidden; padding:.95rem 0; color:#250b0d; background:var(--amber); font-size:.62rem; font-weight:800; letter-spacing:.2em; white-space:nowrap; }
.marquee div { display:flex; width:max-content; gap:2.5rem; animation:marquee 25s linear infinite; }
.marquee i { font-style:normal; }
@keyframes marquee { to { transform:translateX(-50%); } }

/* Menu */
.menu { position:relative; background:linear-gradient(145deg,#1a090b 0 65%,#250b0f); }
.section-heading { display:grid; grid-template-columns:1fr minmax(280px,420px); align-items:end; column-gap:5vw; }
.section-heading .eyebrow { grid-column:1/-1; }
.section-heading h2 { max-width:900px; }
.section-note { color:#bcae94; line-height:1.6; }
.menu-list { margin:5rem 0 0 12vw; padding:0; list-style:none; border-top:1px solid rgba(231,169,78,.25); }
.menu-list li { position:relative; display:grid; grid-template-columns:70px 1fr auto; align-items:center; min-height:154px; padding:1.5rem 1rem; border-bottom:1px solid rgba(231,169,78,.25); cursor:help; transition:background .3s,padding .3s; }
.menu-list li:hover,.menu-list li:focus { padding-left:2rem; background:linear-gradient(90deg,rgba(111,29,35,.4),transparent); }
.menu-index { align-self:start; padding-top:.45rem; color:#9d8366; font-size:.62rem; letter-spacing:.15em; }
.menu-list h3 { margin:0; font-size:clamp(2rem,4.2vw,4.2rem); line-height:1; }
.menu-list p { margin:.6rem 0 0; color:#ad9e87; }
.menu-list .truth { position:absolute; left:70px; bottom:1.3rem; color:var(--gin); font-size:.7rem; font-weight:600; letter-spacing:.12em; opacity:0; transform:translateY(6px); text-transform:uppercase; transition:.3s; }
.menu-list li:hover .euphemism,.menu-list li:focus .euphemism { opacity:0; }
.menu-list li:hover .truth,.menu-list li:focus .truth { opacity:1; transform:none; }
.price { color:var(--amber); font-family:var(--display); font-size:1.6rem; }
.menu-footnote { margin:2rem 0 0 12vw; color:#806f60; font-size:.72rem; letter-spacing:.08em; }

/* Programme */
.programme { position:relative; display:grid; grid-template-columns:minmax(300px, .75fr) 1.2fr; gap:clamp(4rem,9vw,10rem); align-items:center; overflow:hidden; background:radial-gradient(circle at 22% 50%,rgba(231,169,78,.14),transparent 28%),#300d12; }
.programme::before { content:""; position:absolute; left:0; top:13%; width:32%; height:74%; border:1px solid rgba(231,169,78,.13); border-left:0; border-radius:0 50% 50% 0; }
.programme-poster { position:relative; z-index:1; width:min(100%,460px); aspect-ratio:.72; transform:rotate(-3deg); box-shadow:35px 40px 60px rgba(0,0,0,.5); }
.poster-face { position:absolute; inset:0; display:flex; flex-direction:column; justify-content:center; padding:clamp(2rem,4vw,4rem); color:#2b1010; background:linear-gradient(150deg,#d8b973,#b78143); border:1rem solid #c49c5e; outline:2px solid #1e0c0b; text-align:center; text-transform:uppercase; }
.poster-face { background-image: radial-gradient(rgba(64,21,18,.12) .7px, transparent .8px), linear-gradient(150deg,#d8b973,#b78143); background-size: 5px 5px, 100% 100%; }
.poster-face::before,.poster-face::after { content:""; position:absolute; inset:4%; border:2px solid #54151b; pointer-events:none; }
.poster-face::after { inset:6%; border-width:1px; }
.poster-face p,.poster-face span,.poster-face i { position:relative; z-index:1; font-size:.63rem; font-weight:700; letter-spacing:.15em; }
.poster-face strong { position:relative; z-index:1; margin:1.5rem 0; color:#58141b; font-family:var(--display); font-size:clamp(3.2rem,6vw,6rem); font-weight:400; letter-spacing:-.05em; line-height:.72; text-transform:none; }
.poster-face i { margin-top:2rem; font-family:var(--display); font-weight:400; text-transform:none; }
.programme-copy { position:relative; z-index:1; }
.sets { margin-top:4rem; border-top:1px solid rgba(231,169,78,.25); }
.sets article { display:grid; grid-template-columns:90px 1fr; gap:1rem; padding:1.4rem 0; border-bottom:1px solid rgba(231,169,78,.25); }
.sets time { color:var(--amber); font-family:var(--display); font-size:1.4rem; }
.sets h3 { margin:0; font-size:1.45rem; }
.sets p { margin:.25rem 0 0; color:#b9a58d; font-size:.9rem; }

/* Ledger */
.ledger { background:linear-gradient(180deg,#160809,#210a0d); }
.ledger-heading { display:grid; grid-template-columns:1fr 3fr; align-items:start; }
.ledger-heading h2 { margin-top:0; max-width:900px; }
.ledger-grid { display:grid; grid-template-columns:repeat(3,1fr); margin-top:5rem; border-top:1px solid rgba(231,169,78,.25); border-left:1px solid rgba(231,169,78,.25); }
.ledger-grid article { min-height:310px; padding:2rem; border-right:1px solid rgba(231,169,78,.25); border-bottom:1px solid rgba(231,169,78,.25); }
.ledger-grid article>span { color:var(--amber); font-family:var(--display); font-size:clamp(4rem,7vw,7rem); line-height:1; }
.ledger-grid h3 { margin:1.8rem 0 .4rem; font-size:1.5rem; }
.ledger-grid p { color:#afa08a; }
.ledger-quote { grid-column:1/-1; display:flex; align-items:center; justify-content:space-between; gap:3rem; min-height:210px!important; background:linear-gradient(90deg,rgba(103,26,33,.55),transparent); }
.ledger-quote p { max-width:25ch; margin:0; color:var(--cream); font-family:var(--display); font-size:clamp(1.8rem,3.5vw,3.5rem); line-height:1; }
.ledger-quote cite { max-width:32ch; color:var(--amber); font-size:.65rem; font-style:normal; font-weight:700; letter-spacing:.12em; text-transform:uppercase; }

/* Password */
.password { position:relative; display:grid; grid-template-columns:150px minmax(280px,1fr) minmax(350px,.8fr); gap:clamp(2rem,5vw,6rem); align-items:center; overflow:hidden; background:radial-gradient(circle at 8% 50%,rgba(231,169,78,.25),transparent 18%),#3b0f15; }
.password-candle { position:relative; height:300px; }
.candle--small { left:50%; bottom:0; height:170px; width:38px; transform:translateX(-50%); }
.password-copy h2 { font-size:clamp(3rem,6vw,6.5rem); }
.password-copy > p:last-child { max-width:43ch; color:#c8b79c; }
.password-machine { position:relative; padding:3.2rem 2.6rem; border:1px solid rgba(231,169,78,.45); background:rgba(20,7,8,.72); box-shadow:20px 25px 50px rgba(0,0,0,.32),inset 0 0 50px rgba(231,169,78,.04); }
.password-machine::before { content:"H"; position:absolute; right:1.5rem; top:1rem; color:rgba(231,169,78,.13); font-family:var(--display); font-size:5rem; }
.machine-label { position:relative; display:block; color:#9d8c74; font-size:.58rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; }
.password-machine output { position:relative; display:block; min-height:4.8em; margin:2rem 0; color:var(--amber-hot); font-family:var(--display); font-size:clamp(1.8rem,3vw,3rem); font-style:italic; line-height:1.15; }
.password-machine button { display:flex; width:100%; min-height:50px; align-items:center; justify-content:space-between; padding:.8rem 1rem; cursor:pointer; border:1px solid var(--amber); color:var(--ink); background:var(--amber); font-size:.63rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; transition:background .25s,color .25s; }
.password-machine button:hover { color:var(--amber-hot); background:transparent; }
.password-machine button:focus-visible { color:var(--amber-hot); background:transparent; }
.password-machine button > span:last-child { font-size:1.4rem; }

.closing { position:relative; min-height:82vh; display:flex; flex-direction:column; align-items:center; justify-content:center; overflow:hidden; text-align:center; background:#130708; }
.closing h2 { position:relative; z-index:1; margin:1rem 0 2rem; }
.closing h2 { max-width: 1220px; }
.closing > p:not(.eyebrow) { max-width:44ch; color:#ad9e88; }
.closing .text-link { margin-top:2rem; }
.closing-monogram { position:absolute; color:rgba(231,169,78,.035); font-family:var(--display); font-size:min(75vw,850px); font-style:italic; line-height:.8; }

.site-footer { display:flex; align-items:center; justify-content:space-between; gap:2rem; padding:2.2rem 4vw; border-top:1px solid rgba(231,169,78,.2); color:#8f806d; background:#0d0506; font-size:.65rem; letter-spacing:.06em; }
.site-footer p { margin:0; }
.site-footer nav { display:flex; flex-wrap:wrap; gap:1.5rem; }
.site-footer a { min-height:44px; display:inline-flex; align-items:center; text-decoration-color:rgba(231,169,78,.35); text-underline-offset:4px; }
.site-footer a { transition:color .25s,text-decoration-color .25s; }
.site-footer a:hover,.site-footer a:focus-visible { color:var(--amber-hot); text-decoration-color:var(--amber); }

.raid-copy { display:none!important; }

/* Raid protocol */
body.raid { --cream:#211512; --amber:#7c201d; --amber-hot:#8c2520; --smoke:#5b514a; color:#221815; background:#d3c4a7; }
body.raid .grain { opacity:.18; mix-blend-mode:multiply; }
body.raid .honest-copy { display:none!important; }
body.raid .raid-copy { display:initial!important; }
body.raid .site-header { position:absolute; border-color:#6e6356; color:#271b17; background:#d9cbb0; }
body.raid .brand-mark { border-color:#3b2b23; color:#3b2b23; }
body.raid .brand small,body.raid .site-header nav a,body.raid .innocence-switch small { color:#544b43; }
body.raid .innocence-switch { border-color:#5b5046; background:#c6b99f; }
body.raid .switch-lamp { background:#e04731; box-shadow:0 0 12px #e04731; }
body.raid .hero { background:linear-gradient(120deg,#d8ccb2,#b9ad96); }
body.raid .hero::after { background:linear-gradient(0deg,#c5b99f,transparent 30%); }
body.raid .hero-copy,body.raid .house-note { display:none; }
body.raid .raid-hero-copy { position:absolute; z-index:5; left:7vw; top:36%; display:block; max-width:600px; }
body.raid .raid-hero-copy h2 { color:#33221d; }
body.raid .raid-hero-copy p:last-child { color:#51473e; font-size:1.2rem; }
body.raid .wall-frame { color:#2a1b17; background:#d2bc8a; border-color:#33221c; outline-color:#76684e; transform:rotateY(180deg); box-shadow:12px 18px 24px rgba(49,36,29,.25); }
body.raid .wall-frame > span { transform:rotateY(180deg); }
body.raid .table { border-radius:0; background:repeating-linear-gradient(90deg,#806d57 0 10px,#a59479 11px 14px); box-shadow:0 -5px 0 #6e5c48; transform:translateY(-80px) rotateX(0); }
body.raid .table::before { content:"FOLDED\A SHIRTS"; white-space:pre; position:absolute; right:20%; bottom:95%; padding:1rem; color:#4a3930; background:#d7cab1; box-shadow:0 12px 15px rgba(0,0,0,.25); font:700 .7rem/1.4 var(--body); letter-spacing:.12em; text-align:center; }
body.raid .glass,body.raid .ashtray,body.raid .candle,body.raid .chair { opacity:0; transform:translateY(-25px) rotate(80deg); }
body.raid .marquee { color:#e0d3b9; background:#4d3d32; }
body.raid .menu,body.raid .ledger,body.raid .closing { background:#d2c5aa; }
body.raid .programme { background:#b8ab91; }
body.raid .programme::before { border-color:#6f6255; }
body.raid .menu-list,body.raid .menu-list li,body.raid .sets,body.raid .sets article,body.raid .ledger-grid,body.raid .ledger-grid article { border-color:#796d5f; }
body.raid .menu-list li:hover,body.raid .menu-list li:focus { background:rgba(255,255,255,.2); }
body.raid .section-note,body.raid .menu-list p,body.raid .sets p,body.raid .ledger-grid p,body.raid .closing>p:not(.eyebrow) { color:#50463e; }
body.raid .programme-poster { transform:rotate(2deg); }
body.raid .ledger-quote { background:rgba(255,255,255,.18); }
body.raid .ledger-quote p { color:#332720; }
body.raid .password { background:#c4b79d; }
body.raid .password-candle { opacity:0; }
body.raid .password-machine { border-color:#5d5146; background:#dfd4bd; box-shadow:20px 25px 40px rgba(50,40,33,.18); }
body.raid .password-machine output { color:#3e312a; }
body.raid .site-footer { color:#61564b; background:#b7aa91; border-color:#6c6052; }
.raid-notice { position:fixed; z-index:200; left:50%; bottom:1rem; display:flex; align-items:center; gap:1.5rem; width:min(760px,calc(100% - 2rem)); padding:.8rem; color:#221715; background:#eadfc7; border:2px solid #462b22; box-shadow:0 12px 50px rgba(0,0,0,.35); transform:translate(-50%,calc(100% + 2rem)); transition:transform .45s cubic-bezier(.2,.8,.2,1); }
.raid-notice.is-visible { transform:translate(-50%,0); }
.raid-stamp { padding:.8rem; border:2px solid #7a211e; color:#7a211e; font-size:.65rem; font-weight:800; letter-spacing:.17em; transform:rotate(-5deg); }
.raid-notice strong,.raid-notice small { display:block; }
.raid-notice small { color:#5d5047; }
.raid-notice button { margin-left:auto; min-height:48px; padding:.5rem .8rem; cursor:pointer; border:1px solid #604b3f; color:#2a1c18; background:transparent; font-size:.65rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.raid-notice button:hover,.raid-notice button:focus-visible { color:#f3e3c8; background:#5c231d; }
.raid-notice button i { margin-left:.6rem; color:#81261f; font-style:normal; }

/* reveals */
.js .reveal { opacity:0; transform:translateY(30px); transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1); }
.js .reveal.is-visible { opacity:1; transform:none; }

/* Guide */
.guide-page { background:radial-gradient(circle at 85% 12%,rgba(231,169,78,.13),transparent 24rem),#160809; }
.guide-header { position:relative; display:flex; align-items:center; justify-content:space-between; min-height:92px; padding:0 5vw; border-bottom:1px solid rgba(231,169,78,.2); }
.guide-header>a:last-child { min-height:44px; display:inline-flex; align-items:center; color:var(--amber); font-size:.67rem; font-weight:700; letter-spacing:.15em; text-transform:uppercase; }
.guide-header>a:last-child { transition:color .25s,text-decoration-color .25s; text-underline-offset:5px; }
.guide-header>a:last-child:hover,.guide-header>a:last-child:focus-visible { color:var(--amber-hot); text-decoration-color:var(--amber-hot); }
.guide-main { width:min(100% - 2rem,1120px); margin:0 auto; padding:clamp(5rem,10vw,9rem) 0; }
.guide-hero { position:relative; display:grid; grid-template-columns:1.35fr .65fr; align-items:end; gap:5vw; padding-bottom:6rem; border-bottom:1px solid rgba(231,169,78,.25); }
.guide-hero h1 { margin:1rem 0 0; font-size:clamp(5rem,13vw,10rem); line-height:.7; letter-spacing:-.07em; }
.guide-hero h1 em { display:block; margin-left:18%; color:var(--amber); font-weight:400; }
.guide-hero aside { padding:2rem; border:1px solid rgba(231,169,78,.3); color:#c0af96; background:rgba(73,17,23,.28); }
.guide-hero aside strong { display:block; margin-bottom:.7rem; color:var(--amber); font-family:var(--display); font-size:1.5rem; font-weight:400; }
.guide-content { display:grid; grid-template-columns:240px 1fr; gap:clamp(3rem,8vw,8rem); padding-top:6rem; }
.guide-toc { position:sticky; top:2rem; align-self:start; padding-left:1rem; border-left:1px solid var(--amber); }
.guide-toc span { display:block; margin-bottom:.8rem; color:var(--amber); font-size:.6rem; font-weight:800; letter-spacing:.18em; text-transform:uppercase; }
.guide-toc a { display:flex; min-height:44px; align-items:center; padding:.35rem 0; color:#9e8f7c; font-size:.8rem; text-decoration:none; }
.guide-toc a { transition:color .25s,transform .35s cubic-bezier(.16,.9,.2,1); }
.guide-toc a:hover,.guide-toc a:focus-visible { color:var(--amber-hot); transform:translateX(.3rem); }
.guide-article section { margin-bottom:5rem; }
.guide-article h2 { margin:0 0 1.5rem; font-size:clamp(2.5rem,5vw,4.8rem); }
.guide-article h3 { margin:2.2rem 0 .6rem; color:var(--amber); font-size:1.45rem; }
.guide-article p { color:#c2b39d; }
.guide-article code { padding:.12rem .35rem; color:var(--gin); background:#2b1013; font-family:var(--body); font-size:.88em; }
.token-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:.6rem; margin:2rem 0; }
.token { min-height:130px; display:flex; align-items:end; padding:.8rem; color:#fff; border:1px solid rgba(255,255,255,.16); font-size:.6rem; font-weight:700; letter-spacing:.08em; text-shadow:0 1px 3px #000; text-transform:uppercase; }
.token--ink{background:#170809}.token--ox{background:#4a1017}.token--amber{background:#e7a94e;color:#251008;text-shadow:none}.token--smoke{background:#b8a68e;color:#251008;text-shadow:none}.token--gin{background:#c7e0d6;color:#251008;text-shadow:none}
.type-specimen { margin:2rem 0; padding:2rem; border:1px solid rgba(231,169,78,.25); background:#210b0e; }
.type-specimen strong { display:block; color:var(--cream); font-family:var(--display); font-size:clamp(2rem,6vw,5rem); font-weight:400; line-height:1; }
.type-specimen span { display:block; margin-top:1rem; color:var(--smoke); letter-spacing:.08em; }
.prompt-box { padding:2rem; border-left:3px solid var(--amber); color:#d4c4a9; background:linear-gradient(90deg,rgba(106,25,34,.45),transparent); font-family:var(--display); font-size:1.25rem; font-style:italic; }

@media (max-width: 900px) {
  .site-header { grid-template-columns:1fr auto; padding:0 1.2rem; }
  .site-header nav { display:none; }
  .door-scene { grid-template-columns:minmax(240px,400px) minmax(230px,320px); gap:2rem; }
  .hero-copy { top:39%; width:70vw; }
  .hero-scene { right:-8vw; width:68vw; height:72%; opacity:.75; }
  .hero h1 { font-size:clamp(6rem,19vw,10rem); }
  .house-note { display:none; }
  .section-heading { grid-template-columns:1fr; }
  .menu-list,.menu-footnote { margin-left:0; }
  .programme { grid-template-columns:.7fr 1fr; gap:3rem; }
  .ledger-heading { grid-template-columns:1fr; }
  .ledger-grid { grid-template-columns:repeat(2,1fr); }
  .ledger-grid article:nth-child(3) { grid-column:1/-1; min-height:220px; }
  .ledger-quote { grid-column:1/-1; }
  .password { grid-template-columns:80px 1fr; }
  .password-machine { grid-column:2; }
  .guide-content { grid-template-columns:1fr; }
  .guide-toc { position:static; display:flex; flex-wrap:wrap; gap:.2rem 1.5rem; }
  .guide-toc span { width:100%; }
}

@media (max-width: 600px) {
  body { font-size:16px; }
  .section-pad { padding:5.5rem 1.25rem; }
  h2 { font-size:clamp(3.2rem,16vw,5rem); }
  .door-scene { grid-template-columns:1fr; grid-template-rows:minmax(0,1fr) auto; gap:1rem; padding:.75rem 1rem 1.2rem; }
  .door { align-self:center; height:min(60svh,510px); width:auto; max-width:94%; }
  .door-copy { width:100%; }
  .door-copy .eyebrow { display:none; }
  .door-instruction { margin:.1rem 0 .65rem; font-size:1.45rem; }
  .knock-meter { gap:.55rem; }
  .knock-meter i { width:10px; height:10px; }
  .remembered { position:absolute; right:0; bottom:-.4rem; max-width:22ch; margin:0; font-size:.7rem; text-align:right; }
  .alley-number { display:none; }
  .site-header { min-height:80px; }
  .brand small { display:none; }
  .innocence-switch b,.innocence-switch small { font-size:.5rem; }
  .hero { min-height:900px; }
  .hero-copy { left:1.25rem; top:25%; width:calc(100% - 2.5rem); transform:none; }
  .hero h1 { font-size:clamp(6.8rem,31vw,9rem); }
  .hero h1 em { margin-left:10%; }
  .hero-deck,.hero-copy .text-link { margin-left:10%; }
  .hero-deck { margin-top:2.4rem; }
  .hero-scene { right:-30%; bottom:-3%; width:125%; height:54%; opacity:.67; }
  .wall-frame { top:26%; width:22%; }
  .wall-frame--right { top:20%; right:18%; }
  .candle--hero { left:52%; bottom:28%; }
  .menu-list { margin-top:3rem; }
  .menu-list li { grid-template-columns:42px 1fr auto; min-height:140px; padding:1.2rem .2rem; }
  .menu-list li:hover,.menu-list li:focus { padding-left:.5rem; }
  .menu-list h3 { font-size:2rem; }
  .menu-list p { padding-right:.5rem; font-size:.78rem; line-height:1.35; }
  .menu-list .truth { left:42px; right:45px; bottom:1rem; font-size:.56rem; }
  .price { font-size:1.2rem; }
  .programme { grid-template-columns:1fr; gap:4rem; }
  .programme-poster { width:86%; margin:auto; }
  .sets article { grid-template-columns:70px 1fr; }
  .ledger-grid { grid-template-columns:1fr; margin-top:3rem; }
  .ledger-heading,.ledger-heading h2,.ledger-heading .eyebrow { min-width:0; max-width:100%; }
  .ledger-heading h2 { font-size:clamp(2.8rem,13.5vw,3.5rem); overflow-wrap:anywhere; }
  .ledger-heading h2 em { display:inline; }
  .ledger-grid article { min-height:250px; }
  .ledger-grid article:nth-child(3) { grid-column:auto; }
  .ledger-quote { flex-direction:column; align-items:flex-start; }
  .password { grid-template-columns:1fr; }
  .password-candle { display:none; }
  .password-machine { grid-column:1; padding:2rem 1.3rem; }
  .closing { min-height:680px; }
  .closing h2 { max-width:350px; font-size:3.15rem; line-height:.88; }
  .site-footer { flex-direction:column; align-items:flex-start; padding:2rem 1.25rem; }
  .site-footer nav { gap:.2rem 1.1rem; }
  .raid-notice { align-items:stretch; gap:.7rem; flex-wrap:wrap; }
  .raid-stamp { align-self:center; }
  .raid-notice div { flex:1; }
  .raid-notice button { width:100%; margin:0; }
  body.raid .raid-hero-copy { left:1.25rem; right:1.25rem; top:26%; }
  body.raid .hero-scene { opacity:.6; }
  .guide-header { padding:0 1rem; }
  .guide-main { width:min(100% - 2rem,1120px); padding-top:4rem; }
  .guide-hero { grid-template-columns:1fr; padding-bottom:4rem; }
  .guide-hero h1 { font-size:clamp(5rem,25vw,8rem); }
  .guide-content { padding-top:4rem; }
  .token-grid { grid-template-columns:repeat(2,1fr); }
  .token:last-child { grid-column:1/-1; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; }
  .js .reveal { opacity:1; transform:none; }
  .flame { transform:translateX(-50%); }
}

/* Pass 2 — the room behaves like a room, not a sequence of panels. */
body.awaiting-entry { overflow:hidden; }
.door-scene {
  isolation:isolate;
  background:
    linear-gradient(103deg,rgba(0,0,0,.84) 0 9%,transparent 31% 67%,rgba(0,0,0,.7) 100%),
    radial-gradient(ellipse at 24% 53%,#58301f 0%,#241111 36%,#080606 76%);
}
.door-scene::after {
  content:""; position:absolute; z-index:-1; inset:-20%; pointer-events:none; opacity:.24;
  background:repeating-linear-gradient(104deg,transparent 0 14px,rgba(205,224,216,.16) 15px,transparent 16px 38px);
  filter:blur(.3px); transform:translateX(-8%); animation:alley-rain 7s linear infinite;
}
@keyframes alley-rain { to { transform:translate(8%,12%); } }
.alley-pipe { position:absolute; z-index:-1; right:7%; top:-3%; width:54px; height:72%; border-left:8px solid #120c0a; border-right:2px solid #38231a; opacity:.62; }
.alley-pipe i { position:absolute; left:-13px; width:68px; height:7px; border-radius:50%; background:#17100d; box-shadow:0 1px #513325; }
.alley-pipe i:nth-child(1){top:18%}.alley-pipe i:nth-child(2){top:51%}.alley-pipe i:nth-child(3){top:88%}
.alley-puddle { position:absolute; z-index:-1; left:7%; bottom:-8%; width:48%; height:22%; border-radius:50%; opacity:.42; transform:skewX(-18deg); background:radial-gradient(ellipse,rgba(214,176,113,.2),rgba(66,82,76,.11) 42%,transparent 68%); filter:blur(2px); }
.door { overflow:visible; border-color:#0b0706; box-shadow:-38px 8px 75px #030202,0 0 0 2px #54301f,inset 0 0 72px #080403,18px 12px 0 rgba(0,0,0,.24); }
.door::before { content:""; position:absolute; z-index:1; inset:0; pointer-events:none; background:radial-gradient(circle at 74% 42%,rgba(242,189,104,.1),transparent 16%),linear-gradient(115deg,transparent 0 46%,rgba(250,216,153,.035) 50%,transparent 54%); }
.door-secret { position:absolute; z-index:3; left:50%; bottom:11%; color:rgba(231,169,78,.16); font-family:var(--display); font-size:1.05rem; line-height:.85; letter-spacing:.08em; text-align:center; text-transform:uppercase; transform:translateX(-50%) rotate(-2deg); transition:color .18s,text-shadow .18s; }
.door-secret i { font-size:.55rem; font-weight:400; letter-spacing:.15em; }
.door.is-knocked .door-secret { color:rgba(255,217,140,.42); text-shadow:0 0 18px rgba(231,169,78,.3); }
.knock-mark { position:absolute; z-index:8; width:14px; height:14px; margin:-7px; pointer-events:none; border:1px solid var(--amber-hot); border-radius:50%; animation:knock-ring .55s cubic-bezier(.2,.8,.2,1) forwards; }
@keyframes knock-ring { to { opacity:0; transform:scale(8); } }
.entry-light .door-scene::before { animation:entry-wash .85s cubic-bezier(.3,.8,.2,1) both; }
@keyframes entry-wash { 55%{background-color:rgba(255,193,94,.16)} 100%{background-color:transparent} }
.memory-note { max-width:34ch; margin:.25rem 0 0; color:#786b5c; font-size:.66rem; letter-spacing:.08em; text-transform:uppercase; }
.knock-meter { align-items:center; gap:.52rem; }
.knock-meter i { flex:0 0 auto; transition:margin .55s cubic-bezier(.2,.8,.2,1),background .2s,transform .2s,box-shadow .2s; }
.knock-meter.has-memory { padding:.7rem .8rem; border-left:1px solid rgba(231,169,78,.38); background:linear-gradient(90deg,rgba(231,169,78,.06),transparent); }

/* A rarer, cooler glint keeps the amber from becoming a uniform wash. */
.hero,.menu,.programme,.ledger,.password,.closing { isolation:isolate; }
.hero { background:
  radial-gradient(circle at 79% 56%,rgba(231,169,78,.22),transparent 19%),
  radial-gradient(circle at 66% 70%,rgba(199,224,214,.055),transparent 18%),
  linear-gradient(118deg,#1b080a 0 43%,#3c0d14 73%,#25090d 100%); }
.light-beam { position:absolute; left:48%; top:9%; width:46%; height:72%; opacity:.32; clip-path:polygon(48% 0,58% 0,100% 100%,0 100%); background:linear-gradient(90deg,transparent,rgba(236,177,87,.24),rgba(199,224,214,.08),transparent); filter:blur(9px); transform:skewX(calc(var(--draft) * 2deg)); }
.bottle-rack { position:absolute; z-index:2; right:8%; top:46%; display:flex; align-items:end; gap:9px; width:28%; height:82px; padding:0 8px 7px; border-bottom:5px solid #1a0709; filter:drop-shadow(var(--shadow-x) 14px 12px rgba(0,0,0,.6)); transition:all .58s cubic-bezier(.2,.8,.2,1); }
.bottle-rack span { position:relative; display:block; width:18%; height:55%; border-radius:5px 5px 3px 3px; border:1px solid rgba(199,224,214,.22); background:linear-gradient(90deg,rgba(199,224,214,.08),rgba(93,33,29,.72)); transform-origin:50% 100%; transition:all .62s cubic-bezier(.2,.8,.2,1); }
.bottle-rack span::before { content:""; position:absolute; left:31%; top:-18px; width:38%; height:19px; background:#33100f; }
.bottle-rack span:nth-child(2){height:72%}.bottle-rack span:nth-child(3){height:49%}.bottle-rack span:nth-child(4){height:84%}.bottle-rack span:nth-child(5){height:65%}
.entered .hero-copy { animation:room-title 1.05s .12s cubic-bezier(.16,.9,.2,1) both; }
.entered .hero-scene { animation:room-scene 1.25s cubic-bezier(.16,.9,.2,1) both; }
@keyframes room-title { from{opacity:0;transform:translateY(-45%) translateX(-28px);filter:blur(8px)} }
@keyframes room-scene { from{opacity:0;transform:translateX(60px);filter:blur(10px)} }

/* The coded menu now opens like marginalia instead of four identical rows. */
.menu { background:
  radial-gradient(ellipse at 12% 28%,rgba(199,224,214,.045),transparent 25%),
  linear-gradient(142deg,#150709 0 54%,#2b0b10); }
.menu::before { content:"REFRESHMENTS / PRIVATE CIRCULATION"; position:absolute; right:-2rem; top:4.5rem; color:rgba(199,224,214,.055); font:600 clamp(2.5rem,7vw,7rem)/1 var(--body); letter-spacing:.08em; writing-mode:vertical-rl; }
.section-heading { position:relative; }
.section-heading::before { content:""; position:absolute; left:-2rem; top:0; width:1px; height:100%; background:linear-gradient(var(--amber),transparent); }
.menu-list { position:relative; border-color:rgba(199,224,214,.2); }
.menu-list li { overflow:hidden; border-color:rgba(199,224,214,.16); transition:background .45s cubic-bezier(.2,.8,.2,1),padding .45s cubic-bezier(.2,.8,.2,1); }
.menu-list li::before { content:""; position:absolute; right:6.5rem; width:68px; height:68px; border:1px solid rgba(199,224,214,.09); border-radius:50%; transform:scale(.35); opacity:0; transition:transform .55s cubic-bezier(.2,.8,.2,1),opacity .35s; }
.menu-list li:hover::before,.menu-list li:focus::before,.menu-list li.is-revealed::before { opacity:1; transform:scale(1); }
.menu-list li:hover,.menu-list li:focus,.menu-list li.is-revealed { padding-left:2rem; background:linear-gradient(90deg,rgba(111,29,35,.58),rgba(199,224,214,.03) 72%,transparent); }
.menu-list li.is-revealed .euphemism { opacity:0; }
.menu-list li.is-revealed .truth { opacity:1; transform:none; }
.menu-list .truth { color:#bfe0d6; text-shadow:0 0 22px rgba(199,224,214,.13); }

/* Period ink, registration marks, and a more physical showbill. */
.programme { background:
  radial-gradient(circle at 18% 54%,rgba(231,169,78,.18),transparent 25%),
  linear-gradient(110deg,#260a0e,#4a1119 62%,#26090d); }
.programme-poster::before { content:""; position:absolute; z-index:-1; inset:-22px 18px 16px -18px; border:1px solid rgba(199,224,214,.18); transform:rotate(6deg); }
.programme-poster::after { content:"17½"; position:absolute; z-index:2; right:-1.2rem; bottom:-1.5rem; display:grid; place-items:center; width:74px; height:74px; border:1px solid #681922; border-radius:50%; color:#681922; background:#d2ad68; font:italic 1.5rem var(--display); transform:rotate(11deg); box-shadow:0 10px 20px rgba(0,0,0,.3); }
.poster-face { background-image:linear-gradient(90deg,transparent 48%,rgba(84,21,27,.12) 49% 51%,transparent 52%),radial-gradient(rgba(64,21,18,.14) .7px,transparent .8px),linear-gradient(150deg,#dfc27d,#b98041); background-size:100% 100%,5px 5px,100% 100%; }

/* The ledger is a single ruled document, not a grid of dashboard cards. */
.ledger { position:relative; background:linear-gradient(165deg,#110607 0 38%,#25090d); }
.ledger-grid { position:relative; border:0; background:linear-gradient(90deg,transparent 32.95%,rgba(199,224,214,.1) 33%,transparent 33.08%,transparent 66.2%,rgba(199,224,214,.1) 66.25%,transparent 66.33%); }
.ledger-grid::before { content:"PRIVATE LEDGER · DO NOT TOTAL"; position:absolute; top:-2.1rem; right:0; color:#705e4d; font-size:.58rem; font-weight:700; letter-spacing:.17em; }
.ledger-grid article { position:relative; min-height:360px; padding:3rem 2.2rem; border:0; border-top:1px solid rgba(231,169,78,.3); }
.ledger-grid article:nth-child(2) { padding-top:6rem; }
.ledger-grid article:nth-child(3) { padding-top:9rem; }
.ledger-grid article::after { content:""; position:absolute; left:2.2rem; bottom:2rem; width:18px; height:1px; background:var(--gin); opacity:.35; }
.ledger-grid article>span { text-shadow:0 0 32px rgba(231,169,78,.12); }
.ledger-quote { min-height:240px!important; border-bottom:1px solid rgba(231,169,78,.3)!important; background:linear-gradient(100deg,rgba(105,20,29,.82),transparent 75%); }
.ledger-quote::after { display:none; }

/* Password ticket: brass grille, clipped corners, and a live cipher line. */
.password { background:radial-gradient(circle at 9% 52%,rgba(244,185,92,.33),transparent 15%),linear-gradient(112deg,#300c12,#5b1320 58%,#26090d); }
.password-machine { overflow:hidden; border:1px solid rgba(231,169,78,.7); outline:1px solid rgba(199,224,214,.12); outline-offset:-8px; background:linear-gradient(140deg,rgba(12,5,5,.95),rgba(50,11,15,.92)); box-shadow:28px 30px 55px rgba(0,0,0,.42),inset 0 0 70px rgba(231,169,78,.045); }
.password-machine::after { content:""; position:absolute; inset:0 auto 0 0; width:18px; opacity:.35; background:radial-gradient(circle,transparent 5px,#d8a24f 5.5px 7px,transparent 7.5px) 0 0/18px 28px; }
.password-machine output,.password-machine button,.machine-label,.cipher-dots { z-index:2; }
.machine-notch { position:absolute; z-index:3; top:48%; width:24px; height:48px; border-radius:50%; background:#4f121c; }
.machine-notch--left { left:-13px; }.machine-notch--right { right:-13px; }
.cipher-dots { position:relative; display:flex; gap:.55rem; margin:-.6rem 0 1.4rem; }
.cipher-dots i { width:5px; height:5px; border-radius:50%; background:var(--gin); box-shadow:0 0 10px rgba(199,224,214,.4); opacity:.42; }
.cipher-dots i:nth-child(2),.cipher-dots i:nth-child(5){margin-left:1.3rem}
.raid-password { position:relative; z-index:2; min-height:4.8em; margin:2rem 0; color:#3e312a; font-family:var(--display); font-size:clamp(1.8rem,3vw,3rem); font-weight:400; line-height:1.1; }
.button-label { font-size:.63rem; }
.password-machine button { position:relative; clip-path:polygon(0 0,97% 0,100% 22%,100% 100%,3% 100%,0 78%); }

.closing { background:radial-gradient(ellipse at 50% 45%,rgba(85,20,27,.46),transparent 55%),#0e0506; }
.closing::before,.closing::after { content:""; position:absolute; width:36vw; height:120%; top:-10%; border-left:1px solid rgba(231,169,78,.08); transform:rotate(18deg); }
.closing::before { left:18%; }.closing::after { right:8%; transform:rotate(-18deg); }

/* Raid protocol: light impact first, then every prop supplies an alibi. */
.raid-flash { position:fixed; z-index:180; inset:0; pointer-events:none; opacity:0; background:#f6eedc; mix-blend-mode:screen; }
body.raid-impact .raid-flash { animation:raid-flash .7s cubic-bezier(.15,.8,.2,1); }
@keyframes raid-flash { 0%{opacity:0} 12%{opacity:.92} 24%{opacity:.08} 35%{opacity:.56} 100%{opacity:0} }
.hero,.site-header,.menu,.programme,.ledger,.password,.closing,.site-footer,.wall-frame,.table,.glass,.ashtray,.candle,.chair { transition:background .48s ease,color .35s ease,opacity .4s ease,transform .62s cubic-bezier(.2,.8,.2,1),filter .4s ease,border-color .4s ease; }
body.raid .bottle-rack { right:5%; top:50%; width:40%; height:122px; gap:0; padding:8px; border:8px solid #6c5d4b; background:repeating-linear-gradient(0deg,#a49377 0 5px,#837158 6px 9px); filter:drop-shadow(12px 15px 12px rgba(0,0,0,.25)); }
body.raid .bottle-rack span { width:20%; height:25%!important; border:0; border-radius:0; background:linear-gradient(#dfd3b8,#b9a88c); transform:rotate(90deg) translateY(-2px); }
body.raid .bottle-rack span::before { display:none; }
body.raid .light-beam { opacity:.05; }
body.raid .hero-orbit { border-color:rgba(55,41,32,.18); }
body.raid .menu::before { color:rgba(47,35,29,.07); }
body.raid .menu-list .truth { color:#34443e; text-shadow:none; }

/* Pass 3 — a borrowed match makes discretion into a light instrument. */
body.awaiting-entry { height:100svh; overflow:hidden; }
body.awaiting-entry .door-scene { position:absolute; }
body.awaiting-entry > .site-header,
body.awaiting-entry > main,
body.awaiting-entry > .site-footer,
body.awaiting-entry > .raid-notice,
body.awaiting-entry > .match-light,
body.awaiting-entry > .matchbook-toggle { display:none; }

.door-scene:not(.is-open) .door:not(.is-moving) { animation:threshold-door 1.05s cubic-bezier(.16,.9,.2,1) both; }
.door-scene:not(.is-open) .door-copy { animation:threshold-copy .9s .24s cubic-bezier(.16,.9,.2,1) both; }
.door-scene:not(.is-open) .alley-number { animation:threshold-number 1.1s .5s cubic-bezier(.16,.9,.2,1) both; }
@keyframes threshold-door { from { opacity:0; filter:blur(8px); transform:perspective(900px) rotateY(8deg) translateX(-24px); } }
@keyframes threshold-copy { from { opacity:0; transform:translateX(28px); } }
@keyframes threshold-number { from { opacity:0; transform:translateY(32px); } }

.match-light { position:fixed; z-index:70; inset:0; pointer-events:none; opacity:0; background:radial-gradient(circle 260px at var(--match-x) var(--match-y),rgba(255,213,128,.17) 0,rgba(226,137,49,.075) 38%,rgba(78,22,17,.035) 60%,transparent 74%); mix-blend-mode:screen; transition:opacity .28s ease; }
.match-light i { position:absolute; left:var(--match-x); top:var(--match-y); width:8px; height:20px; border-radius:70% 40% 65% 40%; background:linear-gradient(#fff2b0 8%,#ffac38 52%,#9e3519 100%); box-shadow:0 0 8px #ffb03b,0 0 24px rgba(244,147,45,.72),0 0 58px rgba(235,130,30,.38); transform:translate(-50%,-78%) rotate(7deg); transform-origin:50% 100%; animation:match-flutter .72s ease-in-out infinite alternate; }
body.match-lit .match-light { opacity:1; }
@keyframes match-flutter { to { transform:translate(-50%,-78%) rotate(-6deg) scaleY(.88); filter:brightness(1.16); } }

.matchbook-toggle { position:fixed; z-index:140; right:max(1.1rem,3vw); bottom:max(1.2rem,env(safe-area-inset-bottom)); display:flex; align-items:center; gap:.8rem; min-height:58px; padding:.55rem .8rem .55rem .55rem; cursor:pointer; border:1px solid rgba(231,169,78,.45); color:#d6c4a4; background:rgba(19,6,7,.92); box-shadow:0 18px 45px rgba(0,0,0,.46); opacity:0; transform:translateY(calc(100% + 3rem)); backdrop-filter:blur(12px); text-align:left; transition:opacity .45s ease,transform .65s cubic-bezier(.16,.9,.2,1),border-color .25s,background .25s; }
.entered .matchbook-toggle { opacity:1; transform:none; transition-delay:1.05s,1.05s,0s,0s; }
.entered .matchbook-toggle.is-docked-away { pointer-events:none; opacity:0; transform:translateY(calc(100% + 3rem)); transition-delay:0s; }
.matchbook-toggle:hover,.matchbook-toggle:focus-visible,.matchbook-toggle[aria-pressed="true"] { border-color:var(--amber-hot); background:rgba(53,13,17,.96); }
.matchbook-toggle b,.matchbook-toggle small { display:block; }
.matchbook-toggle b { font-family:var(--display); font-size:.92rem; font-weight:400; line-height:1.15; }
.matchbook-toggle small { margin-top:.12rem; color:#8f7d68; font-size:.52rem; font-weight:600; letter-spacing:.09em; line-height:1.3; text-transform:uppercase; }
.matchbook-art { position:relative; flex:0 0 44px; width:44px; height:36px; overflow:hidden; border:1px solid #7d4f29; color:#2e110f; background:linear-gradient(148deg,#d7b372,#a66a37); box-shadow:inset 0 -7px rgba(70,23,16,.16); transform:rotate(-2deg); }
.matchbook-art::before { content:"THE\A HUSH"; white-space:pre; position:absolute; inset:0; display:grid; place-items:center; font:400 .5rem/.78 var(--display); letter-spacing:.05em; text-align:center; }
.matchbook-art i { position:absolute; left:5px; bottom:4px; width:2px; height:22px; background:#efe0bd; transform:rotate(14deg); transform-origin:bottom; }
.matchbook-art i::before { content:""; position:absolute; left:-2px; top:-3px; width:6px; height:7px; border-radius:50%; background:#551b16; }
.matchbook-art i:nth-child(2){left:12px;transform:rotate(5deg)}.matchbook-art i:nth-child(3){left:35px;transform:rotate(-12deg)}
.matchbook-toggle[aria-pressed="true"] .matchbook-art i:nth-child(2) { transform:translate(7px,-16px) rotate(22deg); }

.match-note { --note-light:0; position:absolute; z-index:12; max-width:24ch; margin:0; pointer-events:none; color:#ffcf7e; font-family:var(--display); font-size:clamp(.78rem,1.05vw,.98rem); font-style:italic; letter-spacing:.018em; line-height:1.08; opacity:var(--note-light); text-shadow:0 0 14px rgba(231,169,78,.38); transform:rotate(-5deg); transition:opacity .14s linear; }
.match-note::before { content:"✶"; position:absolute; left:-1.1rem; top:-.05rem; color:var(--gin); font-size:.6rem; font-style:normal; }
.match-note--hero { right:19%; bottom:19%; }
.match-note--menu { right:7%; top:52%; transform:rotate(4deg); }
.match-note--programme { left:34%; top:8%; transform:rotate(-7deg); }
.match-note--ledger { right:7%; top:49%; transform:rotate(5deg); }
body.raid .matchbook-toggle { opacity:0; pointer-events:none; transform:translateY(calc(100% + 3rem)); }
body.raid .match-light,body.raid .match-note { display:none; }

/* The guide reads like a confiscated field ledger. */
.guide-page { background:
  linear-gradient(90deg,rgba(0,0,0,.2),transparent 28%,transparent 72%,rgba(0,0,0,.18)),
  radial-gradient(circle at 86% 10%,rgba(231,169,78,.14),transparent 22rem),#120607; }
.guide-hero::before { content:"FILE 17½ / RELEASED"; position:absolute; right:0; bottom:1.8rem; color:rgba(231,169,78,.3); font-size:.6rem; font-weight:800; letter-spacing:.2em; }
.guide-hero aside { position:relative; transform:rotate(1.25deg); box-shadow:22px 28px 60px rgba(0,0,0,.24); }
.guide-hero aside::before { content:"CODE-ONLY"; position:absolute; right:1rem; top:-1rem; padding:.2rem .55rem; border:1px solid rgba(199,224,214,.35); color:var(--gin); font-size:.55rem; font-weight:800; letter-spacing:.14em; transform:rotate(-4deg); }
.guide-article section { position:relative; padding-bottom:1rem; border-bottom:1px solid rgba(199,224,214,.09); }
.guide-article section:last-child { border-bottom:0; }
.memory-diagram { margin:2.2rem 0 0; padding:2rem; border-top:1px solid rgba(231,169,78,.4); border-bottom:1px solid rgba(231,169,78,.18); background:linear-gradient(90deg,rgba(78,17,23,.48),transparent); }
.memory-diagram div { display:flex; align-items:center; gap:clamp(.7rem,2vw,1.4rem); }
.memory-diagram i { width:13px; height:13px; flex:0 0 auto; border:1px solid var(--amber); border-radius:50%; background:var(--amber); box-shadow:0 0 17px rgba(231,169,78,.45); }
.memory-diagram i:nth-child(3){margin-left:4.8rem}.memory-diagram i:nth-child(4){margin-left:1.4rem}
.memory-diagram figcaption { display:flex; flex-wrap:wrap; gap:.7rem 1.5rem; margin-top:1rem; color:#8e7e69; font-size:.6rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.cover-strip { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:1.25rem; margin:1.8rem 0 0; padding:1rem; border:1px solid rgba(231,169,78,.2); background:#0d0506; }
.cover-strip span { padding:1.2rem; color:#60131c; background:#cfad6d; font-family:var(--display); font-size:1.4rem; text-align:center; }
.cover-strip span:last-child { color:#33261f; background:#c9bda3; }
.cover-strip small { display:block; margin-bottom:.3rem; font:700 .52rem var(--body); letter-spacing:.15em; text-transform:uppercase; }
.cover-strip b { color:var(--gin); font-size:1.4rem; }
.token { position:relative; overflow:hidden; }
.token::after { content:""; position:absolute; inset:-40%; background:linear-gradient(110deg,transparent 42%,rgba(255,255,255,.14) 50%,transparent 58%); transform:translateX(-60%); transition:transform .6s ease; }
.token:hover::after { transform:translateX(60%); }

@media (min-width:901px) {
  .menu-list li:nth-child(even) { padding-left:4vw; }
  .menu-list li:nth-child(even):hover,.menu-list li:nth-child(even):focus,.menu-list li:nth-child(even).is-revealed { padding-left:5vw; }
}

@media (max-width:900px) {
  .site-header { padding-bottom:0; }
  .site-header nav { position:fixed; z-index:120; left:50%; bottom:max(.65rem,env(safe-area-inset-bottom)); display:grid; grid-template-columns:repeat(3,1fr); gap:0; width:min(460px,calc(100% - 1.2rem)); min-height:52px; padding:.2rem; border:1px solid rgba(231,169,78,.34); background:rgba(15,6,7,.94); box-shadow:0 14px 45px rgba(0,0,0,.5); backdrop-filter:blur(14px); transform:translateX(-50%); }
  .site-header nav a { display:grid; place-items:center; min-height:44px; padding:.35rem .2rem; color:#d5c3a3; text-align:center; }
  .site-header nav a::after { bottom:.2rem; }
  body.raid .site-header nav { background:rgba(216,204,178,.96); border-color:#66594b; }
  body.raid .site-header nav a { color:#40352f; }
  .site-footer { padding-bottom:5.8rem; }
  .ledger-grid { background:none; }
  .ledger-grid article:nth-child(2),.ledger-grid article:nth-child(3) { padding-top:3rem; }
  body.raid .raid-hero-copy { max-width:360px; }
  body.raid .raid-hero-copy h2 { max-width:7ch; font-size:clamp(3.6rem,8vw,5rem); line-height:.86; }
  .matchbook-toggle { right:.75rem; bottom:calc(max(.65rem,env(safe-area-inset-bottom)) + 4rem); }
  .match-note--hero { right:10%; bottom:16%; }
  .match-note--programme { left:auto; right:7%; top:4%; }
}

@media (max-width:600px) {
  .door-scene { padding-bottom:1rem; }
  .door { height:min(57svh,480px); }
  .door-instruction { max-width:22ch; font-size:1.42rem; line-height:.98; }
  .remembered { position:static; min-height:0; max-width:100%; margin:.65rem 0 0; font-size:.7rem; text-align:left; }
  .memory-note { display:none; }
  .knock-meter.has-memory { max-width:100%; overflow:hidden; }
  .alley-pipe { display:none; }
  .hero-copy { top:23%; }
  .hero h1 { font-size:clamp(6.2rem,30vw,8.4rem); }
  .hero-deck { max-width:27ch; }
  .bottle-rack { right:18%; top:52%; width:30%; transform:scale(.8); }
  .section-heading::before { left:-.65rem; }
  .menu::before { display:none; }
  .menu-list li::before { right:3.5rem; width:45px; height:45px; }
  .menu-list li:hover,.menu-list li:focus,.menu-list li.is-revealed { padding-left:.5rem; }
  .menu-list .truth { line-height:1.25; }
  .programme-poster::after { right:-.7rem; width:58px; height:58px; }
  .ledger-grid article { min-height:230px; padding:2.2rem 2rem; }
  .ledger-grid article:nth-child(2),.ledger-grid article:nth-child(3) { padding-top:2.2rem; }
  .password-machine { outline-offset:-6px; }
  .guide-hero aside { transform:none; }
  .memory-diagram { padding:1.4rem 1rem; }
  .memory-diagram i:nth-child(3){margin-left:1.7rem}.memory-diagram i:nth-child(4){margin-left:.2rem}
  .cover-strip { grid-template-columns:1fr; }
  .cover-strip b { transform:rotate(90deg); justify-self:center; }
  .matchbook-toggle { min-height:52px; max-width:205px; padding:.4rem .55rem .4rem .42rem; }
  .matchbook-toggle small { display:none; }
  .matchbook-art { flex-basis:38px; width:38px; height:32px; }
  .match-note { font-size:.72rem; }
  .match-note--menu { right:1rem; top:41%; }
  .match-note--ledger { right:1rem; top:57%; }
}

@media (prefers-reduced-motion:reduce) {
  .door-scene::after,.door-scene .door,.door-scene .door-copy,.door-scene .alley-number,.entered .hero-copy,.entered .hero-scene,body.raid-impact .raid-flash,.match-light i { animation:none!important; }
  .entered .hero-copy,.entered .hero-scene { opacity:1; filter:none; }
  .match-light { background:radial-gradient(circle 220px at var(--match-x) var(--match-y),rgba(255,213,128,.15),rgba(226,137,49,.04) 58%,transparent 75%); }
}
