:root{--marble: #F3F1EC;--marble-2: #E9E6DE;--ink: #26201B;--bronze: #B9906F;--bronze-light: #D9BFA4;--gilt: #C9A87C;--mahogany: #33241D;--oak: #B07A4C;--oak-dark: #8A5A36;--lamp: #F2C97E;--light: #F7E6BE;--glow: #F4DFAE;--night: #1E2126;--muted: #6E675D;--label: #989083;--serif: Georgia, "Songti SC", "STSong", "Noto Serif SC", "Source Han Serif SC", serif;--sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Helvetica Neue", sans-serif;--grain-on-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .36 0 0 0 0 .27 0 0 0 0 .18 .5 0 0 0 -.18'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)'/%3E%3C/svg%3E");--grain-on-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 .92 0 0 0 0 .8 .2 0 0 0 -.08'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)'/%3E%3C/svg%3E")}*{margin:0;padding:0;box-sizing:border-box}body{background:var(--marble);color:var(--ink);font-family:var(--sans);line-height:1.7}.gate-page{position:relative;isolation:isolate;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;align-items:center;overflow:hidden;background:radial-gradient(ellipse 58% 40% at 50% 74%,rgba(242,201,126,.14),transparent 72%),linear-gradient(180deg,#0d131b,#151e29 52%,#252933)}.gate-page:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;background:var(--grain-on-dark);pointer-events:none}.gate-head{position:relative;z-index:2;text-align:center;padding:clamp(26px,6.2vh,64px) 20px 0;transition:opacity .5s ease}.gate-label{font-size:13px;letter-spacing:5px;color:#8e94a0}.gate-title{margin:8px -.16em 0 0;font-family:var(--serif);font-size:clamp(34px,5.4vw,58px);font-weight:400;letter-spacing:.16em;color:var(--bronze-light);background:linear-gradient(180deg,#f5e3c3 22%,#c9a87c 88%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.gate-scene{position:absolute;z-index:1;left:50%;bottom:0;width:min(max(100vw,135vh),192vh);transform:translate(-50%);transform-origin:50% 71%;will-change:transform}.gate-page.zoom .gate-scene{transform:translate(-50%) scale(3.6);transition:transform 1.05s cubic-bezier(.6,.02,.8,.35)}.gate-art{display:block;width:100%;height:auto;overflow:visible}.gate-art .draw{stroke-dasharray:1;animation:gate-draw 1.5s cubic-bezier(.5,.05,.2,1) var(--d, 0s) backwards}.gate-art .gate-light{animation:gate-light-on .28s steps(3) var(--d, 1s) backwards}.gate-art .gate-star{animation:gate-twinkle 3.6s steps(3) var(--d, 0s) infinite}@keyframes gate-draw{0%{stroke-dashoffset:1;opacity:0}6%{opacity:1}}@keyframes gate-light-on{0%{opacity:0}}@keyframes gate-twinkle{50%{opacity:.25}}#gateL,#gateR{transition:transform 1.7s cubic-bezier(.72,.02,.22,1)}#gateL{transform-origin:650px 660px}#gateR{transform-origin:950px 660px}.gate-page.open #gateL,.gate-page.open #gateR{transform:scaleX(.13)}.gate-hall{opacity:0;transition:opacity .9s ease .3s}.gate-page.open .gate-hall{opacity:1}.gate-spill{opacity:0;transition:opacity 1.1s ease .5s}.gate-page.open .gate-spill{opacity:1}.gate-plate{cursor:pointer;transition:opacity .35s ease}.gate-page.open .gate-plate{opacity:0;pointer-events:none}.gate-plate:hover rect:last-of-type{stroke:var(--lamp)}.gate-actions{position:absolute;z-index:4;left:0;right:0;bottom:clamp(12px,2.8vh,28px);display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 22px;transition:opacity .4s ease}.gate-page.open .gate-head,.gate-page.open .gate-actions{opacity:0;pointer-events:none}.knock{font-family:var(--serif);font-size:16px;letter-spacing:3px;color:#241a13;background:var(--lamp);border:1px solid var(--lamp);border-radius:999px;padding:10px 30px;cursor:pointer;box-shadow:3px 3px #8a5a36cc;transition:background .16s ease,transform .16s cubic-bezier(.23,1,.32,1)}.knock:hover{background:#f8da9f}.knock:active{transform:scale(.98)}.knock:focus-visible{outline:2px solid #FFF1CF;outline-offset:3px}.skip{font-size:14px;letter-spacing:1px;color:#bcc2cc;text-decoration:none;border-bottom:1px dotted #7A8290;padding:2px 0}.skip:hover{color:#e6e9ee}.skip:focus-visible{outline:2px solid var(--lamp);outline-offset:3px}.gate-flash{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;background:radial-gradient(circle at 50% 66%,#FFF6DF,var(--marble) 70%);opacity:0;pointer-events:none;transition:opacity .85s ease .15s}.gate-page.lit .gate-flash{opacity:1}@media (max-width: 640px){.gate-scene{bottom:84px}.gate-actions{flex-direction:column;gap:6px;bottom:16px}}@media (max-height: 520px){.gate-label{display:none}.gate-head{padding-top:10px}.gate-title{font-size:28px}.gate-scene{width:min(max(100vw,135vh),150vh)}}.lobby-page{animation:arrive .8s ease;min-height:100vh;display:flex;flex-direction:column}@keyframes arrive{0%{opacity:0}}.band{position:sticky;top:0;z-index:10;background:var(--mahogany);border-bottom:1px solid var(--bronze);display:flex;align-items:center;padding:14px clamp(16px,4vw,40px)}.band-side{flex:1;font-family:var(--serif);font-size:12px;letter-spacing:2px;color:#b9a38e;white-space:nowrap}.band-side.right{text-align:right}.band-side a,.band-side button{color:#b9a38e;text-decoration:none;background:none;border:none;font:inherit;letter-spacing:inherit;cursor:pointer;padding:0}.band-side a:hover,.band-side button:hover{color:var(--bronze-light)}.logotype{font-family:var(--serif);font-size:clamp(15px,2.4vw,19px);letter-spacing:4px;color:var(--bronze-light);text-align:center;flex:0 0 auto;padding:0 14px}main.lobby-main{max-width:1020px;margin:0 auto;padding:0 clamp(16px,4vw,40px);width:100%;flex:1}.hero{text-align:center;padding:44px 0 56px}.hero h1{font-family:var(--serif);font-size:clamp(24px,4.4vw,36px);font-weight:400;line-height:1.5;margin:16px 0 10px}.hero .sub{font-size:14px;color:var(--muted)}.scene-wrap{position:relative;width:min(840px,96vw);margin:22px auto 0}.scene-wrap svg{width:100%;height:auto;display:block}.obj{cursor:pointer;transition:transform .3s ease;outline:none}.obj:hover,.obj:focus-visible{transform:translateY(-5px)}.gallery-caption{font-size:12px;letter-spacing:3px;color:var(--label);text-align:center;margin-bottom:20px}.doors{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:clamp(16px,3vw,30px);margin-top:4px}.door-card{display:block;text-align:center;text-decoration:none;color:inherit;background:none;border:none;font:inherit;cursor:pointer}.arch{display:block;border:1.5px solid var(--bronze);border-radius:80px 80px 0 0;padding:6px 6px 0;height:168px}.door{display:block;background:var(--oak);border-radius:74px 74px 0 0;height:100%;position:relative;overflow:hidden;transition:transform .45s ease}.seam{position:absolute;left:50%;top:26px;bottom:0;width:1px;background:var(--oak-dark)}.knob{position:absolute;right:19%;top:52%;width:6px;height:6px;border-radius:50%;background:var(--light)}.lightgap{position:absolute;right:0;top:14px;bottom:0;width:8px;background:var(--light);transition:width .45s ease}.door.dark .lightgap,.door.dark .underlight{background:#6e4f33}.underlight{position:absolute;left:13%;right:13%;bottom:0;height:5px;background:var(--light);transition:height .45s ease}.door-card:hover .door,.door-card:focus-visible .door{transform:translate(-6px)}.door-card:hover .lightgap,.door-card:focus-visible .lightgap{width:20px}.door-card:hover .underlight,.door-card:focus-visible .underlight{height:9px}.door-card h2{font-family:var(--serif);font-size:18px;font-weight:400;margin-top:14px}.door-card .room-no{font-size:12.5px;color:#8a8276;margin-top:2px}.today{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:22px;padding:14px 0 0;align-items:stretch;text-align:left}.gilt-outer{border:1px solid var(--bronze);padding:4px}.gilt-inner{border:1px solid var(--bronze);background:#332b22;padding:18px 22px;height:100%}.gilt-inner .tag{font-size:12px;letter-spacing:3px;color:var(--gilt)}.gilt-inner ul{list-style:none;margin-top:10px}.gilt-inner li{font-family:var(--serif);font-style:italic;font-size:14px;color:#e3d2b5;padding:3px 0}.gilt-inner li:before{content:"◆ ";color:var(--gilt);font-style:normal;font-size:11px}.butler{background:#eae0cb;padding:22px 26px;display:flex;align-items:center;transform:rotate(-.6deg)}.butler p{font-family:var(--serif);font-style:italic;font-size:14px;color:#4a4435}.room-veil{position:fixed;top:0;right:0;bottom:0;left:0;background:#26201b8c;display:flex;align-items:center;justify-content:center;z-index:60;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .4s ease,visibility 0s linear .4s}.room-veil.show{opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s}.room-card{background:var(--marble);border:1px solid var(--bronze);max-width:430px;width:88vw;padding:44px 34px 36px;text-align:center;transform:translateY(10px);transition:transform .4s ease}.room-veil.show .room-card{transform:translateY(0)}.room-card.wide{max-width:800px;max-height:88vh;overflow:auto;padding:34px 32px 30px}.room-ring{width:52px;height:52px;border-radius:50%;border:1px solid var(--bronze);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-family:var(--serif);font-size:20px;color:var(--oak-dark)}.room-card h2{font-family:var(--serif);font-size:24px;font-weight:400;letter-spacing:2px}.room-card .no{font-size:12px;letter-spacing:2px;color:var(--label);margin:6px 0 14px}.room-card .desc{font-size:14px;color:var(--muted)}.room-card .back{display:inline-block;margin-top:22px;font-family:var(--serif);font-size:13px;letter-spacing:2px;color:var(--oak-dark);background:none;border:1px solid var(--bronze);border-radius:999px;padding:8px 26px;cursor:pointer}.room-card .back:hover{background:#b9906f24}.m-form{text-align:left;max-width:320px;margin:0 auto}.m-form label{display:block;font-size:12px;letter-spacing:2px;color:var(--label);margin:14px 0 4px}.m-form input,.m-form textarea,.m-form select{width:100%;border:1px solid var(--bronze);background:#fffdf6;padding:9px 12px;font:inherit;font-size:14px;color:var(--ink);border-radius:4px}.m-form input:focus,.m-form textarea:focus,.m-form select:focus{outline:2px solid var(--bronze-light)}.m-error{color:#a14034;font-size:13px;margin-top:12px}.m-ok{color:#4f6b4a;font-size:13px;margin-top:12px}.pass-ledger{max-width:340px;margin:18px auto 0;border-top:1px solid rgba(185,144,111,.45);text-align:left}.pass-row{display:grid;grid-template-columns:82px minmax(0,1fr);gap:3px 14px;padding:11px 0;border-bottom:1px solid rgba(185,144,111,.26)}.pass-row span{color:var(--label);font-size:12px;letter-spacing:2px}.pass-row strong{color:var(--ink);font-family:var(--serif);font-weight:400}.pass-row em{grid-column:2;color:var(--muted);font-size:12px;font-style:normal;line-height:1.55}.pass-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:20px}.room-card .pass-actions .back{margin-top:0;padding-inline:18px}.room-card .back:disabled{cursor:not-allowed;opacity:.56}.m-tabs{display:flex;justify-content:center;gap:8px;margin-bottom:6px}.m-tabs button{font-family:var(--serif);font-size:13px;letter-spacing:2px;padding:6px 18px;border-radius:999px;border:1px solid var(--bronze);background:none;color:var(--oak-dark);cursor:pointer}.m-tabs button.on{background:var(--mahogany);color:var(--bronze-light);border-color:var(--mahogany)}.gb-list{text-align:left;max-height:38vh;overflow:auto;margin-top:10px;border-top:1px solid var(--marble-2)}.gb-item{padding:12px 4px;border-bottom:1px solid var(--marble-2)}.gb-item .who{font-family:var(--serif);font-size:13px;color:var(--oak-dark)}.gb-item .when{font-size:11px;color:var(--label);margin-left:8px;letter-spacing:1px}.gb-item .what{font-size:14px;color:var(--ink);margin-top:3px}.mason-launcher{position:fixed;right:22px;bottom:64px;z-index:40;display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:var(--mahogany);color:var(--bronze-light);border:1.5px solid var(--bronze);border-radius:50%;padding:0;font-family:var(--serif);font-size:14px;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1)}.mason-launcher:active{transform:scale(.97)}@media (hover: hover) and (pointer: fine){.mason-launcher:hover{transform:translateY(-1px)}}.mason-launcher svg{display:block}.mason-launcher.feedback{animation:mason-tap .16s cubic-bezier(.23,1,.32,1)}.bubble{position:fixed;right:22px;bottom:130px;z-index:40;background:#fffdf6;border:1px solid var(--bronze);padding:8px 16px;font-family:var(--serif);font-style:italic;font-size:13px;color:#4a4435;max-width:min(300px,72vw);opacity:0;pointer-events:none;transition:opacity .35s ease,transform .35s ease}.bubble:after{content:"";position:absolute;right:26px;bottom:-6px;width:10px;height:10px;background:#fffdf6;border-left:1px solid var(--bronze);border-bottom:1px solid var(--bronze);transform:rotate(-45deg)}.bubble.show{opacity:1;transform:translateY(-4px)}@keyframes mason-tap{50%{transform:scale(.96)}}footer.lobby-footer{border-top:1px solid #CFC9BD;background:var(--marble-2)}.colophon{text-align:center;font-size:12.5px;color:var(--muted);padding:14px 16px 18px}.colophon a{color:var(--oak-dark);text-decoration:none;border-bottom:1px dotted var(--bronze)}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
