:root{color-scheme:dark;--ink:#f1e9d9;--muted:#b2b7c8;--gold:#ecc985;--teal:#8bddd4;--panel:#142039;--line:#414257;--text-scale:1;--board-size:660px}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#0b1222;color:var(--ink);font-family:Segoe UI,Arial,sans-serif;font-size:calc(15px * var(--text-scale))}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{color:var(--ink);border:1px solid #555166;background:linear-gradient(#26334c,#1c283e);border-radius:7px;padding:10px 13px;cursor:pointer;min-height:40px;transition:background .18s,border-color .18s,transform .18s}button:hover{background:#34415a;border-color:var(--gold)}button:active{transform:translateY(1px)}button:disabled{opacity:.48;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid #b6efff;outline-offset:3px}button.primary{background:linear-gradient(120deg,#f2d493,#d6ab64);color:#1e2330;border-color:#efdaac;font-weight:700}button.primary:hover{background:#ffe0a0}button.big{padding:15px 23px;font-size:1.03rem;min-height:52px}.primary span{margin-left:36px}a{color:var(--gold)}[hidden]{display:none!important}.return{display:block;height:32px;padding:7px 24px;font-size:12px;background:#0a101e;border-bottom:1px solid #353347;text-decoration:none;position:relative;z-index:3}.return:hover{text-decoration:underline}h1,h2,h3,.grandpa,.wordmark{font-family:Georgia,'Times New Roman',serif;font-weight:400}h2{font-size:1.75rem;margin:10px 0 14px}h3{font-size:1.12rem;color:#eed5a8}p{line-height:1.65}small,.muted{color:var(--muted)}.eyebrow{font-size:.7rem;letter-spacing:2.5px;color:var(--gold);font-weight:600}.divider{height:1px;background:linear-gradient(90deg,#716145,transparent);margin:23px 0}.brand{font-size:.75rem;letter-spacing:3px;color:#edd7b0}.home-nav{display:flex;justify-content:space-between;align-items:center;padding:24px 4vw;gap:20px}.home-nav nav{display:flex;gap:8px}.home-nav button,.small-actions button,.home-bottom button{background:#10182dbb;border-color:#77674c77}.hero-copy{padding:30px 5.5vw 30px;max-width:760px;position:relative;z-index:1}.grandpa{font-size:1.5rem;color:#e8d6b3;letter-spacing:2px;margin:24px 0 8px}h1{font-size:clamp(4rem,6.8vw,7.2rem);line-height:.93;letter-spacing:-3px;margin:0 0 22px;text-shadow:0 4px 25px #050a16}h1 em{font-weight:400;font-style:normal;color:var(--gold)}.subtitle{font-family:Georgia,serif;font-size:1.3rem;line-height:1.5;color:#d7d6e6}.intro{color:#e0e2ea;font-size:1.08rem;line-height:1.7}.hero-actions{display:flex;gap:12px;margin:25px 0 14px}.small-actions{display:flex;flex-wrap:wrap;gap:8px}.small-actions button{font-size:.82rem}blockquote{margin:27px 0 0;max-width:430px;font-family:Georgia,serif;font-size:.91rem;font-style:italic;line-height:1.8;color:#d3c9bc}#home{min-height:calc(100dvh - 32px);position:relative;background:linear-gradient(90deg,#0b142aee 0%,#0b142a9c 34%,#0b142a00 75%),linear-gradient(0deg,#0b142a 0%,transparent 32%),url('../assets/moonwake-castle.png') center/cover no-repeat}.home-bottom{display:flex;align-items:center;justify-content:space-between;padding:18px 4vw;gap:20px;font-size:.8rem;color:#c0c5d5}.home-bottom>div{display:flex;gap:8px}.home-bottom button{font-size:.8rem}#game{height:calc(100dvh - 32px);display:flex;flex-direction:column;overflow:hidden;background:radial-gradient(ellipse at 50% 40%,#202944,#0c1425 70%)}.game-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 18px;border-bottom:1px solid #414257}.game-header>div{display:flex;gap:7px}.wordmark{font-size:1.2rem;color:var(--gold);border:0;background:none!important;padding-left:0}#gameMode{color:var(--muted);font-size:.8rem}.players{display:flex;gap:9px;padding:8px 18px}.player{flex:1;display:flex;align-items:center;gap:9px;min-width:0;padding:6px 10px;border:1px solid #384158;border-radius:9px;background:#101b30}.player.current{border-color:var(--hero);background:linear-gradient(110deg,#303447,#142239);box-shadow:inset 0 0 0 1px var(--hero)}.player img{width:35px;height:42px;object-fit:cover;border-radius:8px}.player strong{display:block;font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player small{font-size:.74rem}.player .score{font-family:Georgia,serif;font-size:1.55rem;color:var(--hero);margin-left:auto}.play-layout{display:grid;grid-template-columns:220px minmax(280px,1fr) 240px;gap:14px;flex:1;min-height:0;padding:0 18px}.story-panel,.workshop-panel{padding:15px;border:1px solid #3f4258;border-radius:10px;background:#101b30cc;overflow:auto;scrollbar-width:thin}.story-panel p,.workshop-panel p{font-size:.85rem;line-height:1.55}.story-panel h2{font-size:1.55rem}.story-panel button{font-size:.78rem;max-width:100%}.castle-stage{display:flex;flex-direction:column;min-height:0;min-width:0}.board-tools{display:flex;justify-content:space-between;align-items:center;gap:4px;padding:4px 0 8px;font-size:.78rem}.board-tools>div{display:flex;align-items:center;gap:5px}.board-tools button{font-size:.75rem;padding:6px 9px;min-height:34px}#zoomLabel{min-width:38px;text-align:center}#boardViewport{flex:1;min-height:0;overflow:auto;border:1px solid #4d4b5e;background:radial-gradient(ellipse,#1d2d4c,#0b1324);border-radius:12px;overscroll-behavior:contain;scrollbar-width:thin;touch-action:pan-x pan-y;position:relative}#board{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(5,1fr);width:var(--board-size);height:var(--board-size);gap:5px;padding:10px;margin:auto;position:relative}.room{position:relative;min-width:0;min-height:0;padding:0;border:1px solid #5d6273;border-radius:7px;background:#162237;overflow:visible;isolation:isolate;transition:border-color .15s;cursor:pointer}.room:hover{border-color:#ffdf9c;background:#192840}.room.selected{outline:2px solid var(--gold);outline-offset:-2px;z-index:2}.room.reachable{border-color:#82bdbd}.room.shadow{box-shadow:0 0 18px #b29ef955}.room.ghost{opacity:.64;animation:ghost 1.2s ease-in-out infinite}.room.event-room{outline:3px solid #91ece1;z-index:2}.room img.room-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:6px;z-index:-1;opacity:.85;pointer-events:none}.room-name{position:absolute;left:5px;right:5px;top:6px;text-align:center;font-size:clamp(8px,.76vw,11px);line-height:1.05;letter-spacing:.2px;color:#fff5db;text-shadow:0 1px 4px #000,0 0 5px #000;background:#0e172ca8;padding:3px 1px;border-radius:4px;pointer-events:none}.room-bottom{position:absolute;bottom:6px;left:5px;right:5px;display:flex;align-items:center;justify-content:center;gap:3px;flex-wrap:wrap;pointer-events:none}.spark{display:inline-flex;align-items:center;justify-content:center;font-size:14px;text-shadow:0 1px 3px #000;font-weight:700;color:var(--spark);gap:2px}.spark.small{font-size:11px;background:#0e182cdc;padding:1px 3px;border-radius:3px}.occupants{position:absolute;top:47%;left:0;right:0;display:flex;justify-content:center;gap:2px;pointer-events:none}.token{display:flex;align-items:center;justify-content:center;border-radius:50%;width:27px;height:27px;background:#15233e;border:2px solid var(--hero);color:var(--hero);box-shadow:0 2px 6px #000;font-weight:bold;font-size:12px}.token.active{outline:2px solid #fff4d0;outline-offset:2px;box-shadow:0 0 15px var(--hero)}.door{position:absolute;background:#f3d59b;box-shadow:0 0 6px #e7cd9777;border-radius:3px;z-index:4;pointer-events:none}.door.n{width:20%;height:5px;left:40%;top:-3px}.door.e{height:20%;width:5px;right:-3px;top:40%}.door.s{width:20%;height:5px;left:40%;bottom:-3px}.door.w{height:20%;width:5px;left:-3px;top:40%}.shadow .door{background:#cbb0f9}.room-marker{position:absolute;left:5px;top:30%;font-size:13px;color:#f5e3a4;background:#0c192bcc;border-radius:4px;padding:2px;pointer-events:none}.echo-marker{position:absolute;right:5px;top:30%;color:#c5b5ff;text-shadow:0 0 7px #c5b5ff;pointer-events:none}.map-legend{font-size:.67rem;text-align:center;color:#b7bbce;padding:7px 0}.inventory{display:flex;gap:6px;margin:14px 0}.inventory .spark{flex:1;background:#212b40;border:1px solid #4b4b61;border-radius:8px;padding:8px 4px;font-size:19px}.echo-box{border:1px solid #7d6a9b;background:#312a4b66;padding:10px;border-radius:7px;font-size:.8rem;margin:10px 0}.echo-box button{width:100%;margin-top:8px;min-height:34px;font-size:.78rem}.blueprint{border:1px solid #42465b;border-radius:8px;padding:10px;margin:9px 0;background:linear-gradient(130deg,#202b40,#172139);text-align:left}.blueprint h4{margin:0 0 6px;color:#f0d7a5;font-family:Georgia,serif;font-size:1.03rem;font-weight:400}.blueprint .requirements{display:flex;justify-content:space-between;align-items:center;font-size:.72rem;color:#b6bece;gap:5px}.blueprint.ready{border-color:#8bc9b7}.blueprint button{margin-top:7px;width:100%;padding:5px;font-size:.76rem;min-height:30px}.control-dock{margin:9px 18px 12px;padding:10px 14px;border:1px solid #5e5661;border-radius:10px;background:#162037;position:relative}.turn-line{display:flex;align-items:center;justify-content:space-between;gap:10px}.turn-line>div{display:flex;align-items:center;gap:8px}#actionsLeft{font-size:.8rem;color:var(--gold)}.turn-line button{font-size:.78rem;min-height:34px;padding:6px 10px}.room-line{display:flex;gap:13px;margin:7px 0 9px;font-size:.85rem;align-items:baseline}.room-line span{font-size:.76rem;color:#bdc4d3}.actions{display:flex;flex-wrap:wrap;gap:6px}.actions button{min-height:35px;padding:7px 12px;font-size:.8rem}.mobile-only{display:none}#actionPreview{position:absolute;bottom:calc(100% + 6px);left:0;right:0;background:#243149;border:1px solid #d9bd86;padding:12px 16px;border-radius:9px;box-shadow:0 -8px 35px #0009;display:flex;align-items:center;gap:12px;z-index:8}#actionPreview .preview-text{flex:1;font-size:.86rem;line-height:1.5}#actionPreview small{display:block}.turn-curtain{position:absolute;inset:90px 0 0;z-index:10;display:grid;place-items:center;background:#07101be6;backdrop-filter:blur(6px);padding:20px}.handoff-card{max-width:580px;width:100%;text-align:center;padding:28px;border:1px solid #a28c62;border-radius:18px;background:radial-gradient(ellipse at top,#2e3853,#121d34);box-shadow:0 25px 80px #0008}.handoff-card img{height:120px}.handoff-card ul{text-align:left;font-size:.85rem;line-height:1.6;max-height:160px;overflow:auto}.handoff-card button{margin:7px}.victory-stars{font-size:3rem;color:var(--gold);animation:sparkle 2s infinite}.turn-curtain h2{font-size:2rem}.progress-pill{display:inline-block;padding:7px 10px;background:#302b42;border:1px solid #72637e;border-radius:7px;color:#d9c1fc;font-size:.82rem}.tutorial-list{list-style:none;padding:0;font-size:.8rem;line-height:1.9}.tutorial-list .done{color:#85dac0}.tutorial-list .next{color:#ffe1a0;font-weight:700}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:100;color:#f5ead7;background:#29384f;border:1px solid #cfb883;border-radius:8px;max-width:min(560px,92vw);padding:12px 20px;box-shadow:0 5px 30px #0008;pointer-events:none;opacity:0;transition:opacity .2s}#toast.visible{opacity:1}dialog{border:1px solid #99805b;border-radius:15px;padding:0;color:var(--ink);background:linear-gradient(145deg,#1c2b44,#111a2d);width:min(880px,94vw);max-height:90dvh;box-shadow:0 25px 90px #000c}dialog::backdrop{background:#050a16bb;backdrop-filter:blur(5px)}dialog>header{display:flex;align-items:center;justify-content:space-between;padding:15px 23px;border-bottom:1px solid #454052;position:sticky;top:0;background:#162238;z-index:2}dialog h2{margin:0;font-size:1.6rem}#closeModal{font-size:24px;padding:0 12px;border:0;background:transparent}#modalBody{padding:22px;overflow:auto}label{display:block;font-size:.85rem;color:#ddd4c4}input,select{display:block;width:100%;margin:7px 0 14px;padding:11px;border:1px solid #646071;border-radius:7px;background:#0e192c;color:var(--ink);min-height:43px}input[type=checkbox]{display:inline-block;width:auto;min-height:0;margin:8px}input[type=range]{padding:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.seat-row{display:grid;grid-template-columns:48px 1fr 140px 130px;gap:10px;align-items:center;border-top:1px solid #44445a;padding:7px 0}.seat-row img{width:42px}.seat-row input,.seat-row select{margin:4px 0}.dialog-actions{display:flex;gap:9px;justify-content:flex-end;margin-top:20px;flex-wrap:wrap}.chapter-grid,.collection-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.chapter-card,.collect-card{border:1px solid #525365;border-radius:10px;padding:14px;background:#17243b;text-align:left;min-width:0}.chapter-card img{width:100%;height:110px;object-fit:cover;border-radius:6px}.chapter-card h3{margin:8px 0}.chapter-card small{display:block;line-height:1.5}.chapter-card.completed{border-color:#80c9b8}.chapter-region{grid-column:1/-1;margin:18px 0 0}.collect-card{text-align:center}.collect-card svg{width:110px;height:110px;max-width:100%}.collect-card.locked{opacity:.6}.collect-card h3{font-size:1.02rem}.tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:18px}.tabs .active{border-color:var(--gold);color:var(--gold)}.story-spread{display:grid;grid-template-columns:210px 1fr;gap:26px;align-items:center}.story-spread img{width:100%;border-radius:12px}.story-spread p{font-family:Georgia,serif;font-size:1.15rem;line-height:1.9}.dedication{font-style:italic;color:var(--gold)}.rules-table{width:100%;border-collapse:collapse;font-size:.88rem}.rules-table td,.rules-table th{border-bottom:1px solid #4b4a5f;padding:10px;text-align:left}.rule-illustration{display:flex;gap:12px;align-items:center}.rule-illustration img{width:90px;border-radius:8px}.status-good{color:#9ee0c5}.status-away{color:#f0c292}.lobby-slot{display:flex;align-items:center;gap:12px;padding:10px;border:1px solid #454b62;border-radius:8px;margin:8px 0}.lobby-slot img{width:42px}.lobby-slot>div{flex:1}.reaction-row{display:flex;gap:8px;flex-wrap:wrap}.scene-theater{height:320px;display:grid;place-items:center;position:relative;overflow:hidden;background:radial-gradient(ellipse,#31395b,#0e1729);border:1px solid #6d5c6c;border-radius:12px}.scene-theater svg{width:200px;height:200px;animation:float 3s ease-in-out infinite}.theater-orbit{position:absolute;inset:20px;border:1px dashed #ac8c5877;border-radius:50%;animation:orbit 16s linear infinite}.theater-orbit span{position:absolute;left:50%;top:-16px;font-size:30px}.sparkle-art{animation:float 4s ease-in-out infinite}.costume-gold .token{box-shadow:0 0 10px #efce80}.costume-violet .token{box-shadow:0 0 13px #c3a1ed}.costume-teal .token{box-shadow:0 0 13px #8cdfd4}body.reduced *{scroll-behavior:auto!important}body.reduced *{animation:none!important;transition:none!important}.version{font-size:.75rem;color:#a6acbe;margin-top:22px}@keyframes float{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-9px) rotate(2deg)}}@keyframes orbit{to{transform:rotate(360deg)}}@keyframes sparkle{50%{opacity:.55;transform:scale(1.06)}}@keyframes ghost{50%{opacity:.9}}
@media(max-width:1100px){.play-layout{grid-template-columns:175px minmax(280px,1fr) 195px;gap:8px;padding:0 10px}.story-panel,.workshop-panel{padding:10px}.players{padding:7px 10px}.room-name{font-size:9px}.board-tools button{font-size:.7rem;padding:5px 6px}.game-header{padding:6px 10px}.control-dock{margin:6px 10px 9px}.story-panel h2{font-size:1.3rem}}
@media(max-width:760px){.return{height:28px;padding:5px 12px;font-size:11px}#home{min-height:calc(100dvh - 28px);background-position:62% center;background-image:linear-gradient(90deg,#0b142ae8,#0b142a6a),linear-gradient(0deg,#0b142a,transparent 60%),url('../assets/moonwake-castle.png')}.home-nav{padding:16px;gap:10px}.home-nav .brand{font-size:.63rem;letter-spacing:1px}.home-nav nav{gap:5px}.home-nav button{font-size:.7rem;padding:7px;min-height:36px}.hero-copy{padding:25px 24px}.eyebrow{font-size:.65rem;letter-spacing:1.5px}h1{font-size:4.9rem;letter-spacing:-2px}.grandpa{font-size:1.15rem}.subtitle{font-size:1.05rem}.hero-actions{flex-direction:column;max-width:390px}.hero-copy blockquote{font-size:.87rem}.home-bottom{padding:14px 24px;align-items:flex-start;flex-direction:column}.home-bottom>div{flex-wrap:wrap}#game{height:calc(100dvh - 28px)}.game-header{padding:4px 8px;min-height:43px}.wordmark{font-size:.96rem}.game-header button{font-size:.72rem;padding:5px 7px;min-height:34px}.game-header #gameMode{display:none}.players{padding:3px 6px 5px;gap:4px}.player{padding:4px 5px;gap:4px}.player img{display:none}.player strong{font-size:.72rem;max-width:90px}.player small{font-size:.6rem}.player .score{font-size:1.18rem}.play-layout{display:flex;padding:0 6px;min-height:100px}.story-panel,.workshop-panel{display:none}.castle-stage{width:100%}.board-tools{padding:2px 0 4px;font-size:.7rem}.board-tools button{min-height:32px;padding:4px 7px;font-size:.68rem}#board{gap:4px;padding:9px}.room-name{font-size:9px}.map-legend{font-size:.6rem;padding:4px}.control-dock{padding:6px 7px;margin:3px 6px 5px;border-radius:8px}.turn-line{gap:4px}.turn-line>div{gap:4px}.turn-line strong{font-size:.75rem}#actionsLeft{font-size:.7rem}.turn-line button{font-size:.66rem;padding:5px 6px;min-height:34px}.mobile-only{display:inline-block}#undoButton{font-size:0;min-width:31px}#undoButton:after{content:'↶';font-size:19px}.room-line{margin:6px 0;gap:5px;display:block}.room-line strong{font-size:.77rem}.room-line span{display:block;font-size:.65rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.actions{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.actions button{font-size:.69rem;padding:5px 2px;min-height:37px}.turn-curtain{inset:68px 0 0;padding:12px}.handoff-card{padding:18px}.handoff-card img{height:85px}.handoff-card h2{font-size:1.6rem}.handoff-card ul{max-height:125px}.handoff-card p{font-size:.85rem}#actionPreview{padding:9px;gap:6px;flex-wrap:wrap}#actionPreview .preview-text{flex-basis:100%;font-size:.76rem}#actionPreview button{flex:1;min-height:38px}.form-grid{grid-template-columns:1fr;gap:0}.seat-row{grid-template-columns:34px 1fr 105px;gap:6px}.seat-row img{width:30px}.seat-row select[data-role=controller]{grid-column:2/4}.seat-row input,.seat-row select{font-size:.8rem;padding:8px;min-height:38px}.chapter-grid,.collection-grid{grid-template-columns:repeat(2,1fr);gap:8px}.chapter-card,.collect-card{padding:10px}.chapter-card h3{font-size:1.05rem}.chapter-card img{height:80px}dialog{width:96vw;max-height:94dvh}dialog>header{padding:11px 15px}dialog h2{font-size:1.35rem}#modalBody{padding:15px}.story-spread{grid-template-columns:1fr;gap:10px}.story-spread img{max-height:160px;object-fit:contain}.story-spread p{font-size:1.02rem}.scene-theater{height:250px}.inventory{margin:7px 0}.token{width:25px;height:25px}.rules-table{font-size:.77rem}.rules-table td{padding:7px}.tutorial-list{font-size:.86rem}}
@media(max-width:960px) and (max-height:540px) and (orientation:landscape){.return{height:24px;padding:3px 10px}#game{height:calc(100dvh - 24px)}.game-header{height:37px;min-height:37px}.players{position:absolute;right:6px;top:63px;width:235px;display:grid;grid-template-columns:1fr 1fr;padding:0}.player img{display:none}.player strong{font-size:.7rem}.player small{font-size:.6rem}.player{padding:3px}.play-layout{padding:0 248px 5px 7px}.story-panel,.workshop-panel{display:none}.castle-stage{width:100%}.play-layout{display:flex}.control-dock{position:absolute;right:0;top:152px;bottom:3px;width:238px;overflow:auto;margin:0 5px 0 0;padding:6px}.turn-line{flex-direction:column;align-items:stretch}.turn-line>div{justify-content:space-between}.turn-line button{font-size:.65rem;padding:4px;min-height:30px}.mobile-only{display:inline-block}.room-line{display:block;font-size:.72rem}.room-line span{display:block;font-size:.65rem}.actions{display:grid;grid-template-columns:1fr 1fr;gap:4px}.actions button{font-size:.7rem;padding:5px 2px;min-height:32px}#actionPreview{position:fixed;bottom:8px;left:10px;right:250px;padding:9px;flex-wrap:wrap}.map-legend{display:none}.board-tools{padding:2px 0 4px}.board-tools button{min-height:28px;font-size:.66rem}.room-name{font-size:9px}.turn-curtain{inset:36px 0 0}.handoff-card img{height:65px}.handoff-card{padding:12px}.handoff-card h2{margin:5px;font-size:1.5rem}.handoff-card ul{max-height:80px}.handoff-card p{margin:5px}.game-header #gameMode{display:none}.turn-line strong{font-size:.76rem}#actionsLeft{font-size:.7rem}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}
@media print{body{background:white;color:black}.return,.home-nav,.home-bottom,button{display:none}dialog{position:static;display:block!important;max-height:none;background:white;color:black;border:0;width:100%}dialog #modalBody{overflow:visible}#home,#game{display:none!important}}
