/* The film prop is the stage. All controls float over it. */
body.board-mode{overflow:clip;background:#110e0b}.board-mode #shell-header,.board-mode>.forest-backdrop{display:none}.board-mode #app{height:100dvh;width:100vw;overflow:clip}.cinema-board{position:relative;width:100%;height:100dvh;isolation:isolate;overflow:clip;background:#110f0b;color:#f3e6c5}.board-ambient{position:absolute;inset:0;z-index:-2;background:linear-gradient(#130e08aa,#0b0e09ba),url('../assets/board-film.png') center/cover;filter:blur(35px)}#board-viewport{position:absolute;inset:0;overflow:clip}.board-stage{position:absolute;left:50%;top:50%;width:min(100vw,160dvh);height:min(62.5vw,100dvh);transform:translate(-50%,-50%);transform-origin:center;transition:transform .8s cubic-bezier(.22,.65,.23,1);will-change:transform;container-type:inline-size;box-shadow:0 25px 80px #0009}.board-stage.reading{transform:translate(-50%,-50%) scale(1.85)}.board-mode #board-canvas,.board-mode #board-canvas canvas{position:absolute;inset:0;width:100%!important;height:100%!important;aspect-ratio:auto;display:block}.board-vignette{position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(#080b08d9,transparent 15%,transparent 69%,#080b09b8 91%,#080b09e8),radial-gradient(ellipse,transparent 55%,#07070455)}.board-hud{position:absolute;z-index:5;left:0;right:0;top:0;padding:20px 28px;display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.board-hud nav{display:flex;gap:8px}.board-title{text-align:center;position:absolute;top:19px;left:50%;transform:translateX(-50%);pointer-events:none;text-shadow:0 3px 12px #000}.board-title>span{font:700 27px/1 'Spectral',Georgia,serif;letter-spacing:.18em}.board-title small{display:block;font:12px/1.5 'Spectral',Georgia,serif;color:#d0bc8d;margin-top:5px}.board-icon{background:#171b13cf;border:1px solid #d4c28b55;box-shadow:0 2px 15px #0003;border-radius:5px;padding:10px 13px;color:#f3e6c5;display:inline-flex;align-items:center;gap:8px;font:500 12px 'DM Sans',sans-serif;min-height:40px;backdrop-filter:blur(12px);transition:background .2s,border .2s}.board-icon:hover{background:#3a3c26;border-color:#d8c394}.board-icon svg{width:19px;height:19px}.board-icon.icon-only{padding:10px}.board-players{position:absolute;left:28px;top:102px;z-index:4;display:flex;flex-direction:column;gap:8px;max-width:220px;transition:opacity .3s}.film-player{display:flex;align-items:center;gap:10px;min-height:54px;padding:9px 14px 9px 10px;background:#111a13df;border:1px solid #c5b4814d;border-left:3px solid #68563d;border-radius:4px;box-shadow:0 4px 20px #0003;backdrop-filter:blur(14px)}.film-player.active{border-color:#ceaf6c;border-left-color:var(--player);background:#263025ed}.film-player strong{font-weight:500;font-size:12px;line-height:1.3;display:block;overflow-wrap:anywhere;max-width:135px}.film-player small{display:block;color:#c1bd9e;font-size:10px;margin-top:5px}.film-player .mini-avatar{width:33px;height:33px;flex-shrink:0}.token-seal{display:grid;place-items:center;border:1px solid var(--player);border-radius:50%;width:30px;height:30px;font:600 17px 'Spectral',serif;color:var(--player);flex-shrink:0}.film-player.trapped{border-style:dashed;opacity:.82}.jungle-indicator{font:600 11px 'Spectral',serif;color:#a8d8a5;white-space:nowrap}.board-turn{position:absolute;z-index:4;left:50%;top:89px;transform:translateX(-50%);max-width:min(600px,65vw);text-align:center;font:500 14px/1.4 'Spectral',Georgia,serif;background:#102015b8;border:1px solid #bdc59a45;padding:8px 21px;border-radius:40px;color:#f1e8c9;backdrop-filter:blur(10px)}.camera-toggle{position:absolute;right:28px;top:103px;z-index:4}.film-crystal{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:12.2%;aspect-ratio:1;display:grid;place-items:center;border-radius:50%;color:#deeac5;text-align:center;pointer-events:none;z-index:4;text-shadow:0 0 8px #a0e8a86b,0 2px 4px #001a07}.glass-writing{width:88%;max-height:90%;overflow:auto;scrollbar-width:none;pointer-events:auto;padding:5% 0}.glass-writing::-webkit-scrollbar{display:none}.glass-writing h2{font:600 1.15cqw/1.05 'Spectral',Georgia,serif;margin:0 0 .55cqw;letter-spacing:.025em;text-wrap:balance;color:#eff2d8}.glass-writing p{font:500 .93cqw/1.36 'Spectral',Georgia,serif;letter-spacing:.01em;margin:0;color:#e1e9c8;text-wrap:pretty}.materializing h2{animation:form-in-glass 1.3s both}.materializing p span{animation:mist-letter 1.1s var(--reveal) both}.materializing p{overflow-wrap:break-word}@keyframes form-in-glass{from{filter:blur(6px);opacity:0;transform:scale(.96)}to{filter:blur(0);opacity:1;transform:scale(1)}}@keyframes mist-letter{from{opacity:0;filter:blur(4px);color:#94c791}to{opacity:1;filter:blur(0);color:#e1e9c8}}.board-action{position:absolute;bottom:61px;left:50%;transform:translateX(-50%);z-index:5;width:min(710px,calc(100% - 44px));text-align:center;filter:drop-shadow(0 3px 14px #0008)}.roll-action p,.victory-actions p{font:400 19px/1.4 'Spectral',Georgia,serif;margin:0 0 13px;text-shadow:0 2px 8px #000;color:#e9dfbf}.roll-action small,.class-action small{display:block;margin:11px 0 0;font-size:10px;color:#d7cfb1;text-shadow:0 2px 6px #000}.film-button{display:inline-flex;align-items:center;justify-content:center;gap:13px;min-height:49px;padding:13px 25px;border-radius:4px;border:1px solid #efdb9e;background:linear-gradient(120deg,#dfc68d,#b89653);color:#211e12;font:700 14px/1.3 'DM Sans',sans-serif;box-shadow:inset 0 1px 0 #fff6,0 4px 0 #59431d,0 9px 24px #0006;transition:background .2s,transform .15s}.film-button:hover{background:linear-gradient(120deg,#f1dda8,#d5b36f);transform:translateY(-1px)}.film-button:active{transform:translateY(2px);box-shadow:inset 0 1px 0 #fff6,0 1px 0 #59431d,0 5px 15px #0006}.film-button svg{width:24px;height:24px}.roll-button{min-width:240px}.film-button:disabled{transform:none}.destiny-button{color:#ebefd7;background:linear-gradient(#3f6340,#233f2c);border-color:#879a64;box-shadow:0 4px 0 #152518,0 9px 24px #0006}.film-answer-form{display:flex;gap:11px;align-items:center;justify-content:center;margin:0 auto;width:min(500px,100%);padding:14px;background:#132017de;border:1px solid #b3a17370;border-radius:7px;backdrop-filter:blur(16px)}.film-answer-form input:not([type=radio]){min-width:0;max-width:260px;height:48px;background:#eee1c4;border:1px solid #ac9666;color:#2c2b19;font-size:16px;padding:12px}.film-options{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.film-choice{display:inline-flex;align-items:center;gap:13px;padding:13px 21px;min-height:48px;color:#eadfc0;background:#122217ee;border:1px solid #ac9464;border-radius:5px;font-size:14px;box-shadow:0 3px 0 #0a100c,0 10px 20px #0003}.film-choice>span{display:grid;place-items:center;width:24px;height:24px;border:1px solid #ab966480;border-radius:50%;font:600 14px 'Spectral',serif;color:#d5bd7d}.film-choice:hover{background:#345139;border-color:#e7d2a0}.film-feedback{margin:11px 0 0;font-size:13px;color:#d8efbd;line-height:1.5;min-height:20px;text-shadow:0 2px 5px #000}.film-feedback:empty{display:none}.film-feedback.retry{color:#f1d394;background:#201b12d9;padding:9px 18px;border-radius:4px;display:inline-block}.action-caption{color:#e7dbba;display:flex;align-items:center;gap:12px;justify-content:center;background:#122019df;padding:14px 24px;border:1px solid #c2ad704a;border-radius:7px;width:fit-content;max-width:100%;margin:auto;backdrop-filter:blur(10px)}.action-caption p{margin:0;font:500 17px 'Spectral',Georgia,serif}.action-lantern{width:6px;height:6px;background:#e6c374;border-radius:50%;box-shadow:0 0 12px #d7ce80;animation:lantern 1.2s ease-in-out infinite alternate}@keyframes lantern{to{opacity:.3;box-shadow:0 0 3px #d7ce80}}.board-footer{position:absolute;bottom:19px;left:28px;right:28px;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:15px;font-size:10px;color:#c2bd9f;text-shadow:0 1px 4px #000}.board-footer button{background:none;padding:6px 0;font-size:11px;color:#d6c6a0;border-bottom:1px solid #b9a67c55}.board-footer button:hover{color:#fff1c7}.board-footer #save-status{font-size:10px;color:#a7b598;margin:0}.film-memory{display:grid;grid-template-columns:repeat(8,1fr);gap:9px;max-width:590px;margin:auto;padding:12px;background:#172419e8;border:1px solid #b29e6d80;border-radius:6px}.film-memory button{position:relative;height:64px;display:grid;place-items:center;background:linear-gradient(140deg,#5b4227,#291f14);border:2px solid #a68a50;border-radius:5px;box-shadow:inset 0 0 0 3px #302315;color:#dec595;transition:background .3s,transform .3s}.film-memory svg{display:none;width:36px;height:36px}.film-memory .card-back{font:600 32px 'Spectral',serif}.film-memory .revealed{background:#e6d7ae;color:#30462a;border-color:#eedba6;transform:translateY(-4px);box-shadow:0 4px 8px #0004}.film-memory .revealed .card-back{display:none}.film-memory .revealed svg{display:block}.film-memory .matched{background:#b9c4a0;border-color:#8ca47a}.film-memory+.small,#pair-count{display:block;margin-top:9px;font-size:11px;color:#ddd0a6}.victory-actions>a{display:block;margin-top:18px;font-size:12px;text-decoration:underline;color:#e6d2a4}.board-modal{padding:38px 42px;max-width:min(680px,calc(100vw - 36px));max-height:calc(100dvh - 44px);overflow:auto;background:#e9dfc3;color:#2c3323;border:1px solid #bd9d61;border-radius:6px;box-shadow:0 30px 100px #000a}.board-modal::backdrop{background:#080e0bc9;backdrop-filter:blur(8px)}.board-modal h2{font-size:35px;margin:12px 0 16px}.board-modal h3{font-size:23px}.board-modal p{font-size:13px;line-height:1.7}.board-modal .modal-close{position:absolute;top:12px;right:16px;padding:5px 9px;background:none;color:#655537;font-size:25px}.rules-inscription{font:italic 14px 'Spectral',Georgia,serif;color:#8e3e2c}.rules-lead{font:400 17px/1.6 'Spectral',serif!important}.film-rules{padding-left:22px}.film-rules li{padding-left:6px;margin:0 0 16px;font-size:13px;line-height:1.7}.film-rules b{display:block;margin-bottom:3px;color:#5e3925}.classroom-rules{margin-top:25px;border-top:1px solid #b9a77e;padding-top:20px}.rules-controls{display:flex;gap:20px;flex-wrap:wrap;font-size:11px;margin:20px 0}.rules-controls kbd{background:#d4c8a9;padding:3px 5px;border:1px solid #b8a477;border-radius:3px}.rules-reference{border-top:1px solid #b9a77e;padding-top:18px;font-size:12px;color:#675d44}.rules-reference summary{cursor:pointer}.rules-reference a{text-decoration:underline}.rules-reference p{font-size:12px;margin:14px 0 8px}.film-history{padding-left:20px;font-size:14px;line-height:1.7}.film-history li{margin-bottom:14px}.dialog-actions{display:flex;gap:15px;align-items:center;margin-top:25px}
@media(min-aspect-ratio:17/10){.board-stage{width:min(100vw,160dvh);height:min(62.5vw,100dvh)}.board-stage.reading{transform:translate(-50%,-50%) scale(1.72)}}
@media(max-width:1050px){.board-hud{padding:16px 20px}.board-players{left:20px;top:89px;max-width:180px}.film-player{padding:8px;gap:8px}.film-player strong{font-size:11px;max-width:110px}.board-turn{top:82px;font-size:12px;padding:7px 15px}.camera-toggle{right:20px;top:87px}.board-title{top:18px}.board-title>span{font-size:23px}.board-title small{font-size:11px}.board-action{bottom:55px}.board-footer{left:20px;right:20px;bottom:14px}.board-stage.reading{transform:translate(-50%,-50%) scale(2.1)}.board-modal{padding:30px}}
@media(max-aspect-ratio:1/1){.board-stage{width:170vw;height:106.25vw;top:46%}.board-stage.reading{transform:translate(-50%,-50%) scale(2.6)}.board-vignette{background:linear-gradient(#080b08e8,transparent 20%,transparent 64%,#080b09e0 88%,#080b09f5)}.board-hud{padding:14px}.board-title{top:17px}.board-title>span{font-size:22px}.board-title small{display:none}.board-hud .board-icon span{display:none}.board-hud nav{gap:5px}.board-icon{padding:9px}.board-icon svg{width:18px;height:18px}.board-icon.icon-only{padding:9px}#board-fullscreen{display:none}.board-players{top:73px;left:14px;right:14px;max-width:none;flex-direction:row;gap:6px;justify-content:center}.film-player{flex:1;max-width:170px;min-height:43px;gap:6px;padding:7px;min-width:0}.film-player .mini-avatar{width:26px;height:26px}.film-player strong{font-size:10px;max-width:110px}.film-player small{font-size:9px;margin-top:3px}.token-seal{width:23px;height:23px;font-size:14px}.jungle-indicator{display:none}.board-turn{top:137px;max-width:calc(100% - 30px);width:max-content;white-space:normal;font-size:12px}.camera-toggle{top:auto;bottom:225px;right:14px;font-size:10px}.camera-toggle svg{width:16px;height:16px}.film-crystal{width:13%}.glass-writing h2{font-size:1.45cqw}.glass-writing p{font-size:1.18cqw;line-height:1.3}.glass-writing{width:90%;max-height:98%}.board-action{bottom:66px;width:calc(100% - 28px)}.film-answer-form{padding:10px;gap:8px}.film-answer-form input:not([type=radio]){width:100%;font-size:14px;max-width:none}.film-answer-form .film-button{padding:13px 15px;font-size:12px}.board-footer{left:14px;right:14px;bottom:11px;flex-wrap:wrap;justify-content:space-between;gap:4px}.board-footer button{font-size:10px}.board-footer #save-status{order:3;width:100%;text-align:center;font-size:9px}.roll-action p{font-size:17px}.film-options{gap:7px}.film-choice{padding:11px 13px;font-size:12px;gap:8px}.film-choice>span{width:21px;height:21px;font-size:12px}.film-memory{max-width:350px;gap:7px;padding:9px;grid-template-columns:repeat(4,1fr)}.film-memory button{height:45px}.film-memory svg{width:29px;height:29px}.board-modal{padding:30px 24px}.board-modal h2{font-size:29px}.film-feedback{font-size:12px}.film-feedback.retry{padding:7px 10px}.action-caption p{font-size:15px}}
@media(max-height:540px) and (min-aspect-ratio:1/1){.board-hud{padding:9px 15px}.board-title{top:12px}.board-title>span{font-size:20px}.board-title small{display:none}.board-icon{min-height:34px;padding:7px 10px}.board-players{left:15px;top:58px;gap:5px}.film-player{min-height:38px;padding:5px 8px}.film-player .mini-avatar{width:25px;height:25px}.board-turn{top:55px;font-size:11px}.camera-toggle{top:55px;right:15px}.board-action{bottom:35px}.roll-action p{display:none}.roll-action small,.class-action small{margin-top:7px}.film-button{min-height:40px;padding:9px 17px}.film-answer-form{padding:8px}.film-answer-form input:not([type=radio]){height:39px;min-height:39px}.board-footer{bottom:5px}.board-stage.reading{transform:translate(-50%,-50%) scale(2)}.film-crystal{width:12.2%}.film-memory button{height:42px}.film-memory{padding:7px}.film-memory svg{height:29px}.board-players .film-player strong{font-size:10px}.board-players .film-player small{font-size:9px}}
@media(prefers-reduced-motion:reduce){.board-stage{transition:none}.materializing p span{opacity:1;filter:none}.board-stage,.board-stage.reading{will-change:auto}.action-lantern{animation:none}}

.read-full-message{display:block;margin:0 auto 12px;background:#14291ce8;border:1px solid #bda674;padding:8px 13px;color:#eedeb5;border-radius:4px;font-size:12px}.full-message{font:400 22px/1.65 Spectral,Georgia,serif!important}.glass-writing{overscroll-behavior:contain}

.card-animal{display:none;width:42px;height:56px;background-image:url(../assets/film-tokens.png);background-size:400% 100%;background-repeat:no-repeat}.film-memory .revealed .card-animal{display:block}@media(max-width:600px),(max-height:540px){.card-animal{width:29px;height:39px}}

.film-crystal{transition:opacity .35s}.film-crystal.crystal-unwritten{opacity:0}

/* Dice belong to the board, beneath the crystal, the HUD and all actions. */
#dice-layer{position:absolute;inset:0;z-index:2;isolation:isolate;pointer-events:none}
.board-turn:has(.roll-readout){border-radius:10px;min-width:244px;background:#102017f0;box-shadow:0 5px 24px #0005}
.turn-message{display:block;text-wrap:balance}
.roll-readout{margin-top:7px;font-family:"DM Sans",sans-serif}
.roll-context{display:block;margin-bottom:5px;font-size:9px;line-height:1.3;color:#c3c8a8;letter-spacing:.07em}
.roll-equation{display:flex;align-items:center;justify-content:center;gap:10px;font-variant-numeric:tabular-nums}
.roll-value{display:grid;justify-items:center;gap:2px;min-width:46px;padding:5px 8px 4px;background:linear-gradient(#f3e7c9,#d8c49a);color:#26271c;border:1px solid #fff4;border-radius:5px;box-shadow:inset 0 1px 0 #fff6,0 2px 0 #786440}
.roll-value small{font-size:8px;line-height:1.3;text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.roll-value strong{font:700 23px/1 "DM Sans",sans-serif}
.roll-total{min-width:52px;color:#f0f6cf;background:linear-gradient(#426a3c,#294c2c);border-color:#9cbe76;box-shadow:inset 0 1px 0 #d6ed9e33,0 2px 0 #162d1b}
.roll-operator{font-size:20px;color:#d6c897}
.board-turn:not(.showing-roll) .roll-value{display:flex;align-items:center;gap:6px;min-width:0;padding:5px 7px}
.board-turn:not(.showing-roll) .roll-readout{margin-top:5px}
.board-turn.showing-roll{padding:12px 23px 15px;border-color:#b7cf87;box-shadow:0 0 32px #91bb5826,0 8px 30px #0008}
.showing-roll .turn-message{font-size:22px;line-height:1.2;color:#eff4ce}
.showing-roll .roll-value{min-width:57px;padding:7px 10px}
.showing-roll .roll-value strong{font-size:34px}
.showing-roll .roll-value small{font-size:9px}
@media(max-aspect-ratio:1/1){.board-turn:has(.roll-readout){min-width:230px}.board-turn.showing-roll{padding:10px 16px 12px}.showing-roll .turn-message{font-size:19px}.showing-roll .roll-value strong{font-size:29px}.showing-roll .roll-value{min-width:51px}.roll-equation{gap:8px}}
@media(max-height:540px) and (min-aspect-ratio:1/1){.board-turn:has(.roll-readout){padding:6px 14px;min-width:220px}.roll-readout{margin-top:4px}.roll-context{margin-bottom:3px}.roll-value{padding:3px 7px}.showing-roll .turn-message{font-size:17px}.showing-roll .roll-value{padding:4px 8px;min-width:48px}.showing-roll .roll-value strong{font-size:27px}}

.board-special-key{position:absolute;z-index:4;left:28px;bottom:120px;display:flex;gap:8px;align-items:center;font-size:10px;color:#d9e7ce;background:#112619d9;border:1px solid #709c694d;border-radius:4px;padding:8px 11px;pointer-events:none}.board-special-key i{width:8px;height:8px;border-radius:50%;background:#8fe1a2;box-shadow:0 0 12px #65e195a0}.board-music-panel{position:absolute;right:28px;top:78px;z-index:12;width:392px;max-width:calc(100vw - 28px);max-height:calc(100dvh - 110px);overflow:auto;padding:16px;background:#14251af7;color:#f0e5c5;border:1px solid #b59b64;border-radius:6px;box-shadow:0 15px 60px #000b;backdrop-filter:blur(18px)}.board-music-panel header{display:flex;justify-content:space-between;align-items:center;gap:15px}.board-music-panel h2{font:600 23px Spectral,Georgia,serif;margin:0}.music-close{background:none;color:inherit;font-size:24px;padding:3px 10px}.music-status{font-size:11px;line-height:1.5;margin:10px 0;color:#cfdac0}.music-test-row{display:flex;align-items:center;gap:16px;margin:16px 0}.music-test-row button{border:1px solid #b9a575;background:#354b32;color:#f6ebc9;border-radius:4px;padding:10px;font-size:11px;white-space:nowrap}.music-test-row label{font-size:10px;flex:1}.music-test-row input{width:100%;accent-color:#a8d49b;margin-top:6px}.music-sources{display:grid;gap:8px}.music-sources button{text-align:left;border:1px solid #84987955;border-radius:4px;padding:11px 13px;background:#1a2c20;color:#f0e5c5}.music-sources button[aria-pressed=true]{border-color:#bca975;background:#35472c}.music-sources strong{font-weight:500;font-size:12px;display:block}.music-sources small{display:block;font-size:10px;color:#cad2b6;margin-top:3px}.score-player{margin-top:12px}.score-player iframe{display:block;border:0;width:100%;height:203px}.score-help{font-size:10px;line-height:1.6;margin:10px 0 0;color:#cad2b6}.score-help a{color:#ecd292;text-decoration:underline}.board-icon[data-audio-state=locked],.board-icon[data-audio-state=blocked]{border-color:#d2b776}.board-icon[data-audio-state=running]{color:#b5e0ad}.board-icon[data-audio-state=error]{border-color:#dba18c}
@media(max-aspect-ratio:1/1){.board-special-key{left:14px;bottom:188px;font-size:9px;padding:6px 8px}.board-music-panel{right:14px;top:63px;max-height:calc(100dvh - 85px)}.board-title>span{font-size:19px}.board-hud nav{gap:4px}.board-hud .board-icon{padding:8px}}
@media(max-height:540px) and (min-aspect-ratio:1/1){.board-special-key{bottom:90px;left:15px}.board-music-panel{top:52px;max-height:calc(100dvh - 65px)}}

/* Keep the turn below the whole team list, including wrapped team names. */
.board-team-hud{display:contents}
@media(max-aspect-ratio:1/1){.board-team-hud{position:absolute;top:73px;left:14px;right:14px;z-index:4;display:grid;justify-items:center;gap:9px}.board-team-hud .board-players{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;max-width:none;gap:6px}.board-team-hud .film-player{max-width:none}.board-team-hud .board-players:has(>:only-child){grid-template-columns:minmax(0,220px);justify-content:center}.board-team-hud .board-turn{position:static;transform:none;max-width:100%;margin:0}}

/* The right wooden leaf holds the turn and dice controls; paths stay clear. */
.board-dock{position:absolute;z-index:4;right:max(24px,calc((100vw - 160dvh)/2 + 18px));top:auto;bottom:max(48px,calc((100dvh - 62.5vw)/2 + 18px));width:clamp(218px,21vw,278px);display:grid;gap:14px;padding:17px 15px 13px;background:linear-gradient(145deg,#17261ef5,#0e1b14f2);border:1px solid #b39b6266;border-radius:7px;box-shadow:0 12px 35px #0006;backdrop-filter:blur(12px)}
.board-dock .board-turn,.board-dock .board-turn.showing-roll,.board-dock .board-turn:has(.roll-readout){position:static;transform:none;inset:auto;min-width:0;max-width:100%;width:100%;padding:0;border:0;border-radius:0;background:none;box-shadow:none;backdrop-filter:none}
.board-dock .turn-message,.board-dock .showing-roll .turn-message{font:500 17px/1.3 'Spectral',Georgia,serif;color:#f1e8c9}
.board-dock .roll-readout{margin-top:11px}
.board-dock .roll-equation{gap:8px}
.board-dock .roll-value,.board-dock .showing-roll .roll-value,.board-dock .board-turn:not(.showing-roll) .roll-value{display:grid;gap:3px;min-width:44px;padding:6px 8px}
.board-dock .roll-value strong,.board-dock .showing-roll .roll-value strong{font-size:27px}
.board-dock .roll-value small,.board-dock .showing-roll .roll-value small{font-size:8px}
.board-dock .roll-context{font-size:10px;margin:0 0 6px;letter-spacing:0}
#board-roll-action{text-align:center}
.board-dock .roll-button{min-width:0;width:100%;padding:12px 9px;font-size:13px;gap:8px}
.board-dock .roll-action p{font-size:15px;line-height:1.45;margin-bottom:12px}
.board-dock .roll-action small{font-size:10px;margin-top:10px}
.board-dock .action-caption{padding:0;background:none;border:0;box-shadow:none;backdrop-filter:none;gap:8px}
.board-dock .action-caption p{font-size:14px;line-height:1.4}
.board-dock .board-special-key{position:static;padding:11px 0 0;margin:0;min-width:0;border:0;border-top:1px solid #c3ae7340;border-radius:0;background:none;line-height:1.4;font-size:10px;justify-content:center;text-align:center}
.board-dock .board-special-key i{flex-shrink:0;width:6px;height:6px}
@media(max-width:1050px) and (min-aspect-ratio:1/1){.board-dock{right:max(18px,calc((100vw - 160dvh)/2 + 10px));width:214px;padding:14px 12px}.board-dock .turn-message{font-size:15px}}
@media(max-height:540px) and (min-aspect-ratio:1/1){.board-dock{bottom:max(34px,calc((100dvh - 62.5vw)/2 + 18px));right:14px;width:202px;padding:12px;gap:10px}.board-dock .turn-message,.board-dock .showing-roll .turn-message{font-size:14px}.board-dock .roll-value,.board-dock .showing-roll .roll-value,.board-dock .board-turn:not(.showing-roll) .roll-value{padding:4px 6px;min-width:40px}.board-dock .roll-value strong,.board-dock .showing-roll .roll-value strong{font-size:23px}.board-dock .board-special-key{font-size:9px;padding-top:8px}.board-dock .roll-readout{margin-top:7px}}
@media(max-aspect-ratio:1/1){
 .board-stage{width:155vw;height:96.875vw;top:42%}
 .board-dock{top:auto;right:14px;bottom:70px;width:min(284px,calc(100% - 28px));padding:12px 13px;gap:10px}
 .board-dock .turn-message,.board-dock .showing-roll .turn-message{font-size:15px}
 .board-dock .roll-readout{margin-top:7px}
 .board-dock .roll-equation{gap:8px}
 .board-dock .roll-value,.board-dock .showing-roll .roll-value,.board-dock .board-turn:not(.showing-roll) .roll-value{display:flex;align-items:center;gap:5px;min-width:0;padding:5px 7px}
 .board-dock .roll-value strong,.board-dock .showing-roll .roll-value strong{font-size:24px}
 .board-dock .roll-action p{font-size:13px;margin-bottom:9px}
 .board-dock .board-special-key{font-size:9px;padding-top:8px}
 .reading-board .board-dock{bottom:calc(82px + var(--challenge-height,100px))}
 .camera-toggle{top:207px;bottom:auto;left:14px;right:auto}
}
.music-file-change{display:block;margin:10px 0 0;padding:7px 0;background:none;color:#e5d29b;font-size:11px;text-decoration:underline;text-underline-offset:3px}
.music-references{margin:16px 0 0;padding-top:12px;border-top:1px solid #c3ae7340;font-size:10px;line-height:1.7;color:#c1c7b2}
.music-references a{color:#e5d29b;text-decoration:underline;text-underline-offset:3px}

@media(max-aspect-ratio:1/1) and (max-height:740px){
 .board-stage{width:130vw;height:81.25vw}
 .board-stage:not(.reading){height:min(81.25vw,calc(100dvh - 260px - var(--dock-height,180px)));width:min(130vw,calc((100dvh - 260px - var(--dock-height,180px))*1.6));top:calc(174px + min(40.625vw,(100dvh - 260px - var(--dock-height,180px))/2))}
 .board-dock .roll-action p:not(:has(b)){display:none}
 .reading-board .board-dock{padding:8px 12px;gap:0}
 .reading-board .board-dock .turn-message{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .reading-board .board-dock .board-special-key,.reading-board .board-dock .roll-context,.reading-board .board-dock .roll-value small{display:none}
 .reading-board .board-dock .board-turn .roll-value{background:none;border:0;box-shadow:none;padding:0 4px;color:#f1e8c9}
 .reading-board .board-dock .roll-value strong{font-size:21px}
 .reading-board .board-dock .roll-readout{margin-top:4px}
}

/* Both classroom verdicts share one guarded action flow. */
.class-verdicts{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}
.failure-button{color:#f8e3cd;background:linear-gradient(120deg,#653d30,#482d27);border-color:#c99372;box-shadow:inset 0 1px 0 #fff2,0 4px 0 #2d1c18,0 9px 24px #0006}
.failure-button:hover{background:linear-gradient(120deg,#82503c,#603b30)}
@media(max-width:540px){.class-verdicts{gap:9px}.class-verdicts .film-button{flex:1 1 160px;font-size:12px;padding:12px}.class-action small{line-height:1.5}}

/* The references scroll; sound choices, volume, test and close stay visible. */
.board-music-panel{display:flex;flex-direction:column;overflow:hidden;max-height:calc(100dvh - 96px);padding:16px;min-height:0;gap:10px}
.board-music-panel>header{flex:0 0 auto;min-width:0}
.music-panel-content{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding-right:5px}
.music-panel-controls{flex:0 0 auto;min-width:0;padding-top:10px;border-top:1px solid #b59b6455;background:#14251a}
.music-panel-controls .music-test-row{margin:0 0 10px}
.music-panel-controls .music-sources{gap:6px}
.music-panel-controls .music-sources button{min-width:0;padding:9px 11px}
.music-panel-controls .music-file-change{margin-top:6px}
@media(max-height:620px){
 .board-music-panel{top:10px;max-height:calc(100dvh - 20px);padding:10px;gap:6px}
 .board-music-panel h2{font-size:20px}.board-music-panel .music-close{font-size:24px!important}
 .music-panel-controls{padding-top:7px}.music-panel-controls .music-test-row{margin-bottom:7px}
 .music-panel-controls .music-sources button{padding:7px 9px}
 .music-panel-controls .music-sources strong{font-size:12px}.music-panel-controls .music-sources small{font-size:10px;line-height:1.3;margin-top:2px}
 .music-panel-controls .music-file-change{padding:6px 8px;font-size:11px!important}
}
@media(max-height:360px){
 .board-music-panel{width:min(560px,calc(100% - 20px));right:10px;gap:4px;padding:8px}
 .music-panel-controls .music-sources{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
 .music-panel-controls .music-sources button{padding:7px 6px;min-height:44px}
 .music-panel-controls .music-sources small{display:none}.music-panel-controls .music-sources strong{font-size:11px;line-height:1.25}
 .music-panel-controls .music-test-row{gap:8px;margin-bottom:6px}.music-panel-controls .music-test-row button{padding:7px;font-size:11px!important}
 .music-panel-controls .music-test-row label{font-size:10px}.music-panel-controls .music-test-row input{margin-top:2px}
}

/* Dialog shell is bounded by this game's viewport; only its text body scrolls. */
.board-modal{box-sizing:border-box;width:min(680px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);padding:0;overflow:hidden}
.board-modal[open]{display:flex;flex-direction:column}
.board-modal-header{flex:0 0 auto;display:flex;align-items:flex-start;gap:12px;padding:20px 24px 12px;border-bottom:1px solid #b9a77e66;background:#e9dfc3;min-width:0}
.board-modal-header h2{flex:1;min-width:0;margin:0;font-size:clamp(23px,4vw,35px);line-height:1.15;overflow-wrap:anywhere}
.board-modal .board-modal-header .modal-close{position:static;flex:0 0 auto;min-height:40px;min-width:40px;padding:3px 8px;line-height:1;margin-left:auto}
.board-modal-body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;padding:16px 24px 22px;scrollbar-gutter:stable}
.board-modal-footer.dialog-actions{flex:0 0 auto;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin:0;padding:14px 24px 19px;border-top:1px solid #b9a77e66;background:#e9dfc3}
.board-modal-footer .film-button{flex:1 1 150px;min-width:0}.board-modal-footer .quiet{flex:1 1 130px}
/* The answer controls occupy a reserved panel instead of growing below screen. */
#board-action{max-height:calc(100dvh - 190px);display:flex;flex-direction:column;gap:8px;min-height:0}
#board-action[hidden]{display:none}#challenge-action{flex:0 0 auto;min-height:0}
#board-action .film-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-height:0}
#board-action .film-choice{min-width:0;min-height:44px;padding:10px 12px;align-items:center;gap:8px}
#board-action .film-choice>span:first-child{flex:0 0 auto}
#board-action .film-choice .film-choice-copy{display:block;min-width:0;width:auto;height:auto;border:0;border-radius:0;color:inherit;font:inherit;text-align:left;max-height:min(17dvh,110px);overflow:auto;overscroll-behavior:contain;overflow-wrap:anywhere}
#board-action .film-feedback{flex:1 1 auto;min-height:0;max-height:80px;overflow:auto;margin-top:0}
#board-action .film-memory{width:min(410px,100%);margin:auto;box-sizing:border-box}
#board-action .class-action{display:flex;flex-direction:column;gap:6px}
#board-action .class-action small{min-height:0;max-height:50px;overflow:auto;margin:0}
#board-action .victory-actions{display:flex;flex-direction:column;gap:10px;align-items:center}
#board-action .victory-actions p{max-height:55px;overflow:auto;margin:0}
@media(max-height:540px){
 .board-modal-header{padding:10px 14px 7px}.board-modal-header h2{font-size:23px}.board-modal-body{padding:10px 14px 14px}
 .board-modal-footer.dialog-actions{padding:9px 14px 13px}.board-modal-footer .film-button{padding:9px 12px;min-height:40px}
 #board-action{max-height:calc(100dvh - 100px);gap:5px}
 #board-action .film-choice{padding:7px 9px;min-height:40px;font-size:12px}
 #board-action .film-choice .film-choice-copy{max-height:11dvh}
 #board-action .class-verdicts{flex-wrap:nowrap}.class-verdicts .film-button{min-width:0}
 #board-action .class-action small{max-height:30px;font-size:10px}
 #board-action .film-memory{padding:6px;gap:5px;grid-template-columns:repeat(4,1fr)}
 #board-action .film-memory button{height:clamp(30px,9dvh,42px)}
}
