/* The scene remains mounted from the doorway through the last deduction. */
html:has(body.tabletop-live){overflow:hidden}
body.tabletop-live{overflow:hidden;margin:0;padding:0!important;height:100svh}
body.tabletop-live #experience-layout{height:100svh;min-height:0;padding-top:0;padding-bottom:0}
body.tabletop-live #lodge-shell{position:relative;height:100svh;overflow:hidden}
#tabletop-stage{position:absolute;inset:0;background:#172820;overflow:hidden;isolation:isolate}
#tabletop-stage canvas{display:block;width:100%;height:100%;image-rendering:pixelated;touch-action:none;outline:none}
#tabletop-stage:after{content:'';position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 100px #07110d88;z-index:1}
#tabletop-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2}
#tabletop-labels button{position:absolute;top:0;left:0;pointer-events:auto;touch-action:none;cursor:grab;white-space:nowrap;border-radius:3px;text-shadow:0 1px 2px #0005;box-shadow:0 2px 5px #0004;transition:background .12s,border-color .12s;color:#fff3d1}
.table-token-label{font:600 13px/1.3 'DM Sans',sans-serif;background:#263a30ed;border:1px solid #9b945c;padding:4px 8px;min-height:27px;max-width:120px;overflow:hidden;text-overflow:ellipsis}
.table-token-label:hover,.table-token-label.selected{background:#f1d287!important;color:#20382d!important;border-color:#fff0bc;box-shadow:0 0 0 2px #f0d79166!important}
.table-token-label.incorrect{background:#8d3d32;border-color:#f6a58b}
.table-tray-label{position:absolute;left:0;top:0;color:#efdbad;font:600 12px 'DM Sans',sans-serif;text-shadow:0 1px 4px #000;background:#263c31ed;padding:4px 5px;border:1px solid #af9b60;border-radius:2px}
.table-room-label{font:600 14px/1.3 'DM Sans',sans-serif;background:#1d362bea;border:1px solid #af9b60;padding:5px 12px;min-height:30px;max-width:220px;cursor:pointer!important}
.table-room-label.accepts-piece{border-color:#f8d577;box-shadow:0 0 0 2px #eec77933!important}
.table-room-label.accepts-piece:hover{background:#d4b970!important;color:#183b2d!important}
#tabletop-labels button:disabled{opacity:1;cursor:default}
#tabletop-labels button:focus-visible{outline:3px solid #f8d778;outline-offset:3px}
.piece-in-flight button{pointer-events:none!important}
body.tabletop-live #app{position:absolute;inset:0;pointer-events:none;z-index:4}
body.tabletop-live .tabletop-ui{position:absolute;inset:0;max-width:none!important;margin:0!important;padding:0!important;pointer-events:none}
.floating-case{position:absolute;left:16px;top:18px;bottom:72px;width:clamp(292px,27%,350px);border:1px solid #b7a56b75;background:#132923ed;color:#e6ecde;box-shadow:0 16px 55px #0005;backdrop-filter:blur(12px);border-radius:8px;display:flex;flex-direction:column;pointer-events:auto;overflow:hidden}
.case-panel-header{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid #84988045;background:#22372fc9;flex-shrink:0}
.case-panel-header>div{display:flex;align-items:center;gap:11px}.case-panel-header>div>.icon{width:24px;height:24px;color:#e4bd71}.case-panel-header span{font-size:12px;letter-spacing:2px;font-weight:600;color:#ebd8b0}.case-panel-header small{display:block;font-size:12px;letter-spacing:0;font-weight:400;color:#aabbab;margin-top:4px}
#case-scroll{overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#6a7860 transparent;padding:18px 15px;flex:1;min-height:0}
#case-scroll h1{font:400 25px/1.3 'Libre Baskerville',Georgia,serif;letter-spacing:-.8px;color:#f5e6c6;margin:10px 0 5px}
#case-scroll .eyebrow{font-size:11px;letter-spacing:1.2px;display:flex;justify-content:space-between;align-items:center;gap:8px;color:#b9ba96}.table-case-location{font-size:13px;color:#b7c5af;margin-bottom:17px}
#case-brief{border:1px solid #6d806047;border-radius:4px;padding:10px 12px;margin-bottom:12px;font-size:14px;line-height:1.55;background:#2b3c303b}#case-brief summary{cursor:pointer;color:#dce3cd}#case-brief summary .icon{float:right;width:15px}#case-brief p{margin:12px 0 0;color:#c3cdb8}
.table-evidence{border-left:2px solid #c9a765;padding:10px 12px;background:#dfc48d09;margin-bottom:18px}.table-evidence strong{display:flex;gap:7px;align-items:center;font-size:14px;color:#e6c989}.table-evidence p{font-size:14px;line-height:1.55;margin:7px 0 0;color:#e0d6b8}.table-evidence .icon{width:16px}
.floating-case .section-heading{display:flex;align-items:center;justify-content:space-between;margin:17px 0 9px}.floating-case .section-heading h2{display:flex;gap:8px;align-items:center;font-size:15px;color:#e1e6d9;margin:0}.floating-case .section-heading h2 .icon{width:17px;color:#9ab19a}.floating-case .section-heading>span{font-size:12px;color:#aab89e}
.table-tip{font-size:12px!important;line-height:1.5;color:#aebea6;margin:8px 0 12px}.floating-case .clue-list{display:flex;flex-direction:column;gap:7px}.floating-case .clue-card{min-height:0;padding:11px 10px;background:#223b30bc;border:1px solid #73886655;border-radius:4px;gap:9px;text-align:left;color:#e8ebd8}.floating-case .clue-card:hover{border-color:#b4be8c;background:#334b36}.floating-case .clue-text{font-size:14px;line-height:1.55}.floating-case .clue-num{background:#54705742;color:#c5d3b8;min-width:21px;width:21px;height:22px;font-size:11px}.floating-case .clue-card.used{opacity:.47}.floating-case .clue-card.extra{border-color:#a78b5680}.floating-case .extra-label{font-size:10px;color:#ddc380}
.case-panel-footer{padding:12px 14px;background:#182e25f5;border-top:1px solid #77856452;display:flex;flex-direction:column;gap:8px;flex-shrink:0}.case-panel-footer .btn{width:100%;min-height:41px;font-size:14px;display:flex;align-items:center;justify-content:center;gap:8px}.case-panel-footer .btn>span{margin-left:auto;font-size:12px}.case-panel-footer .hint{background:#302f20;color:#e6cb89;border:1px solid #a38b515c}.case-panel-footer .primary{background:#dbc48e;border:1px solid #f0ddad;color:#253d2b}.case-panel-footer .primary:hover{background:#f0d79b}.saved-note{text-align:center;font-size:11px;color:#a6b69e;margin:2px 0}
.floating-case .feedback{margin-top:15px}.floating-case .accusation{margin:14px -4px 0;border:1px solid #78915c;border-radius:5px;padding:14px;background:#1c392c}.floating-case .accusation h3{margin:0 0 8px}.floating-case .accusation p{color:#c4cfae}.floating-case .accusation label{color:#e7dec1}.floating-case .accusation-controls{flex-wrap:wrap}.floating-case .accusation select{background:#122b21;color:#ecdfbb}.floating-case .accusation button{background:#d8bf85;color:#253729}
.table-solved{text-align:center;padding:20px 12px;border:1px solid #9d9f68;border-radius:6px;background:#364c3159;margin-top:16px}.table-solved>.icon{color:#e1c183;width:34px;height:34px}.table-solved h2{font:25px Georgia,serif;color:#f0d9a2}.table-solved p{font-size:14px;line-height:1.6;color:#d7dec5}.table-solved small{color:#b6c6a2}.table-solved time{display:block;font:25px monospace;color:#ecd098;margin-top:9px}
.table-solved .btn{background:#d8be83;color:#223c2b;border-color:#efdaab}.table-selection .btn:not(.ghost){background:#304736;color:#efdca6;border-color:#b5a471}
.table-hud{position:absolute;left:calc(clamp(292px,27%,350px) + 42px);right:22px;top:20px;display:flex;justify-content:space-between;align-items:center;gap:12px;pointer-events:auto;padding:11px 15px;background:#142d23e8;border:1px solid #ad9f6863;border-radius:5px;box-shadow:0 5px 25px #0002;backdrop-filter:blur(8px)}.table-hud-title strong{font:400 19px 'Libre Baskerville',Georgia,serif;color:#f1dfb9}.table-hud-title span{display:block;font-size:12px;color:#bdc9ac;margin-top:4px}.table-hud-buttons{display:flex;gap:4px}.table-hud .btn{color:#d2dabc;border-color:#71876440;min-width:36px;min-height:36px}
.table-selection{position:absolute;left:calc(clamp(292px,27%,350px) + 42px);right:22px;bottom:18px;display:flex;justify-content:center;align-items:center;gap:12px;pointer-events:none;color:#f0dfb5;font-size:14px;min-height:44px;text-shadow:0 2px 5px #000}.table-selection>span{display:block}.table-selection small{font-size:12px;display:block;color:#bcccad;margin-top:2px}.table-selection strong{display:block;color:#f2d188}.table-selection.has-selection{pointer-events:auto;background:#173427ee;padding:9px 13px;border:1px solid #a0a46e80;border-radius:5px;font-size:12px;justify-content:space-between}.table-selection .btn{font-size:12px;padding:7px 9px;min-height:36px;color:#efdcac}
.mobile-clues-button,.mobile-close-clues{display:none!important}body.tabletop-live .test-launcher{z-index:7}
.tabletop-fallback #tabletop-stage{display:none}.arrival[data-phase=seating]{animation:none}.arrival[data-phase=seating] .arrival-bottom{opacity:0}
@media(max-width:960px){body.tabletop-live #experience-layout{padding-inline:0}.floating-case{display:none;left:10px;top:12px;bottom:76px;width:calc(100% - 20px);z-index:8;background:#132923fa}.floating-case.mobile-open{display:flex}.mobile-close-clues{display:flex!important}.desktop-rules{display:none!important}.table-hud{left:12px;right:12px;top:12px;padding:9px 11px}.table-hud-title strong{font-size:15px}.table-hud-title span{font-size:12px}.table-selection{left:14px;right:14px;bottom:81px;font-size:13px}.table-selection.has-selection{bottom:82px}.table-token-label{font-size:12px;padding:3px 5px;min-height:25px;max-width:108px}.table-room-label{font-size:12px;padding:4px 7px;max-width:147px}.mobile-clues-button{display:flex!important;position:absolute;right:12px;bottom:18px;pointer-events:auto;background:#d8be83;color:#223c2b;min-height:42px;border-color:#f0daac;font-size:13px}.tabletop-live .test-launcher{left:12px;bottom:18px;padding:9px;font-size:12px}.tabletop-live .test-launcher small{display:none}}
@media(prefers-reduced-motion:reduce){#tabletop-labels button{transition:none}}
.tray-shift-controls{display:flex;align-items:center;gap:7px;flex-shrink:0}.tray-shift-controls .btn{min-width:38px;font-size:18px!important;line-height:1}.tray-shift-controls span{white-space:nowrap;font-size:12px;color:#e7d29d}.tray-shift-controls .btn:disabled{opacity:.4;cursor:default}
.table-selection.has-selection{flex-wrap:wrap}.table-selection.has-selection>span{flex:1;min-width:130px}
.tray-working-slot{position:relative;min-width:0}.tray-working-slot>.piece{width:100%;height:100%}.tray-column-number{position:absolute;top:3px;left:5px;font-size:11px;z-index:1;pointer-events:none;color:#846c3c}.tray-empty{width:100%;height:100%;min-height:52px;border:1px dashed #9b8b67;background:#c1af7620;color:#a3946c;border-radius:3px;font:14px monospace;cursor:pointer}.tray-working-slot.drop-hover{outline:2px solid #d6b779}
