@font-face{font-family:"Josefin Sans";src:url(/fonts/josefin.woff2) format("woff2");font-weight:300 700;font-display:swap}
@font-face{font-family:"Signika";src:url(/fonts/signika.woff2) format("woff2");font-weight:300 700;font-display:swap}
:root{--green:#173a2e;--green-2:#1f4a3b;--green-3:#2b5e4b;--parch:#eadfc8;--gold:#f2b84b;--brick:#b4553a;--wood:#8a5a3b;--ink:#0e1f18;--j:"Josefin Sans",ui-sans-serif,sans-serif;--s:"Signika",ui-sans-serif,system-ui,sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--green);color:var(--parch);font:400 17px/1.55 var(--s)}
a{color:var(--gold)}
button{font:inherit;cursor:pointer}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--parch);color:var(--ink);padding:8px;z-index:9}
/* wayfinding header */
.signs{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between;padding:16px clamp(16px,4vw,48px);border-bottom:1px solid rgba(234,223,200,.18)}
.home{display:flex;gap:10px;align-items:center;text-decoration:none;color:var(--parch);font:600 20px var(--j);letter-spacing:.02em}
.home b{color:var(--gold);font-weight:600}
.lampicon{width:26px;height:26px;border-radius:50% 50% 4px 4px;background:var(--gold);box-shadow:0 0 18px 4px rgba(242,184,75,.45);clip-path:polygon(15% 0,85% 0,100% 60%,0 60%,0 100%,100% 100%,100% 60%)}
.signs ul{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0}
.signs nav a{display:inline-flex;gap:8px;align-items:center;padding:7px 14px 5px;background:var(--parch);color:var(--green);text-decoration:none;font:700 13px var(--j);text-transform:uppercase;letter-spacing:.14em;border-radius:3px}
.signs nav a span{color:var(--brick);font-size:15px}
.signs nav a:hover{background:var(--gold)}
/* room */
.room{max-width:1200px;margin:0 auto;padding:32px clamp(14px,4vw,40px) 10px;display:grid;grid-template-columns:minmax(260px,1fr) 2.1fr;gap:28px;align-items:center}
.kicker{font:600 13px var(--j);text-transform:uppercase;letter-spacing:.14em;color:var(--gold);margin:0 0 10px}
.intro h1{font:300 clamp(34px,4.6vw,58px)/1.02 var(--j);margin:0 0 16px;letter-spacing:-.01em}
.intro h1 span{display:block;font-weight:700;color:var(--gold)}
.intro p{margin:0 0 12px;max-width:42ch}
.plan{width:100%;height:auto;display:block;border-radius:6px;background:var(--green-2)}
.floor{fill:var(--green-3)}
.weave{stroke:rgba(14,31,24,.25);stroke-width:1}
.wall{fill:none;stroke:var(--parch);stroke-width:8;stroke-linejoin:round}
.windows line{stroke:#9cc9d8;stroke-width:8}
.door{fill:none;stroke:var(--parch);stroke-width:2;stroke-dasharray:6 5}
.doorlbl{fill:var(--parch);font:700 12px var(--j);letter-spacing:.2em;text-anchor:middle}
.shelves rect{fill:var(--wood);opacity:.8}
.desk{fill:#b98a5e;stroke:#6e4529;stroke-width:2}
.chair{fill:#6e4529}
.chair.big{fill:var(--brick)}
.hearth{fill:#5b2b1e;stroke:var(--brick);stroke-width:3}
.plant{fill:#3f7a52;stroke:#2c5c3c;stroke-width:3}
.mapline{fill:none;stroke:#6e4529;stroke-width:2;stroke-dasharray:4 3}
.wall-s{stroke:rgba(234,223,200,.5);stroke-width:3}
.lamp{fill:#5b4a2a;stroke:var(--parch);stroke-width:2;transition:fill .3s}
.glow{fill:var(--gold);opacity:0;transition:opacity .5s;filter:blur(18px)}
.seat{cursor:pointer;outline:none}
.seat .lbl rect{fill:var(--ink);opacity:.82;stroke:rgba(234,223,200,.3)}
.seat .lbl text{fill:var(--parch);font:600 14px var(--j);text-anchor:middle;letter-spacing:.04em}
.seat:hover .glow,.seat:focus-visible .glow{opacity:.25}
.seat:focus-visible .lbl rect{stroke:var(--gold);stroke-width:3}
.seat.on .glow{opacity:.55}
.seat.on .lamp{fill:var(--gold)}
.seat.on .lbl rect{fill:var(--gold);opacity:1}
.seat.on .lbl text{fill:var(--ink)}
.chips{display:none;grid-column:1/-1;flex-wrap:wrap;gap:6px}
.chip{border:1.5px solid rgba(234,223,200,.4);background:var(--green-2);color:var(--parch);border-radius:999px;padding:6px 12px;font:600 14px var(--s)}
.chip b{color:var(--gold);font-family:var(--j)}
.chip.on{background:var(--gold);color:var(--ink);border-color:var(--gold)}.chip.on b{color:var(--brick)}
.hint{grid-column:2;margin:-12px 0 0;font-size:14px;opacity:.8}
/* desks */
.sign{display:inline-block;font:700 15px var(--j);text-transform:uppercase;letter-spacing:.2em;background:var(--parch);color:var(--green);padding:8px 16px 6px;border-radius:3px;margin:0 0 20px}
.desks,.rules{max-width:1200px;margin:0 auto;padding:40px clamp(14px,4vw,40px)}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:18px}
.card{background:var(--green-2);border:1px solid rgba(234,223,200,.15);border-radius:10px;padding:18px;scroll-margin-top:20px;transition:box-shadow .3s}
.card.on{box-shadow:0 0 0 2px var(--gold),0 0 40px rgba(242,184,75,.25)}
.card header{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start}
.plaque{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--brick);color:var(--parch);font:700 20px var(--j)}
.card h3{margin:0;font:600 22px/1.15 var(--j)}
.facts{margin:4px 0 0;font-size:14px;opacity:.85}
.covers{display:flex}.covers img{width:46px;height:46px;border-radius:4px;border:2px solid var(--green-2)}.covers img+img{margin-left:-14px}
.act{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 8px}
.sit,.sitbtn{border:0;border-radius:999px;background:var(--gold);color:var(--ink);font:700 15px var(--s);padding:9px 18px;text-decoration:none;display:inline-block}
.shuf,.copy{border:1.5px solid var(--parch);border-radius:999px;background:none;color:var(--parch);font:600 14px var(--s);padding:7px 14px}
details summary{cursor:pointer;font:600 14px var(--j);text-transform:uppercase;letter-spacing:.14em;padding:6px 0;color:var(--gold)}
.card ol{list-style:none;margin:6px 0 0;padding:0;max-height:330px;overflow:auto}
.card li{display:grid;grid-template-columns:28px 1fr auto;gap:8px;align-items:center;padding:4px 2px;border-top:1px solid rgba(234,223,200,.1);font-size:15px}
.card li a{color:var(--parch);text-decoration:none}.card li a:hover{color:var(--gold);text-decoration:underline}
.card li.now{background:rgba(242,184,75,.16)}
.card li.now a{color:var(--gold)}
.pl{width:24px;height:24px;border-radius:50%;border:1.5px solid var(--parch);background:none;position:relative}
.pl::after{content:"";position:absolute;left:8px;top:5px;border-left:9px solid var(--parch);border-top:6px solid transparent;border-bottom:6px solid transparent}
.du{font-size:13px;opacity:.7;font-variant-numeric:tabular-nums}
/* rules */
.rules ul{margin:0;padding-left:20px;max-width:80ch}.rules li{margin:10px 0}
.rules code{background:var(--ink);color:var(--gold);padding:2px 6px;border-radius:4px;font-size:15px}
/* footer */
.foot{border-top:1px solid rgba(234,223,200,.18);padding:30px clamp(16px,4vw,48px) 120px;text-align:center}
.prof{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;padding:0;margin:14px 0}
.prof a{display:inline-block;padding:5px 12px 3px;border-radius:3px;background:var(--green-2);text-decoration:none;font:600 13px var(--j);text-transform:uppercase;letter-spacing:.1em}
.prof a:hover{background:var(--gold);color:var(--ink)}
.small{font-size:13px;opacity:.75}
/* seat slip player */
.slip{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);width:min(720px,calc(100% - 20px));display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;background:var(--parch);color:var(--ink);border-radius:8px;padding:10px 12px;box-shadow:0 12px 40px rgba(0,0,0,.45);z-index:30}
.slip[hidden]{display:none}
.slip::before{content:"";position:absolute;left:-1px;right:-1px;top:-6px;height:8px;background:radial-gradient(circle at 6px 0,transparent 5px,var(--parch) 5.5px) 0 0/12px 8px repeat-x}
.seatno{width:52px;height:52px;display:grid;place-items:center;background:var(--brick);color:var(--parch);font:700 24px var(--j);border-radius:6px}
.info{min-width:0}
.tt{font:600 16px var(--s);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sub{font-size:13px;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ribbon{height:6px;background:rgba(14,31,24,.15);border-radius:3px;margin-top:6px;overflow:hidden}
.ribbon i{display:block;height:100%;width:0;background:var(--brick)}
.ctl{display:flex;gap:6px}
.ctl button{width:40px;height:40px;border-radius:50%;border:0;background:var(--green);color:var(--parch);font-size:15px}
.ctl #pp{background:var(--gold);color:var(--ink)}
.lost{display:grid;place-items:center;min-height:100vh;text-align:center;padding:20px}
.lost h1{font:300 40px var(--j)}
@media (max-width:860px){
 .room{grid-template-columns:1fr}.hint{grid-column:1;margin:0}
 .chips{display:flex}
}
@media (max-width:520px){
 .signs nav{width:100%}.signs ul{justify-content:space-between}.signs nav a{padding:6px 9px 4px;font-size:11px;letter-spacing:.08em}
 .cards{grid-template-columns:1fr}
 .covers{display:none}
 .slip{grid-template-columns:auto 1fr;bottom:8px}
 .ctl{grid-column:1/-1;justify-content:space-between}.ctl button{width:100%}
 .seatno{width:42px;height:42px;font-size:20px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}html{scroll-behavior:auto}}
