.web3d-region{display:flex;flex-direction:column;gap:0;min-width:0;min-height:0;border:1px solid #d1ad6d88;border-radius:1.15rem;overflow:hidden;background:#241d32;grid-row:auto;color:#f7ecd5;font-family:Segoe UI,system-ui,sans-serif;box-shadow:inset 0 0 0 1px #efd9ac1f,0 10px 28px #0b061d55}
[hidden]{display:none!important}
.menu-secondary{padding:.8rem;border:1px solid #9a77b955;border-radius:1rem;margin:.6rem 0 2rem}.menu-secondary>summary{min-height:44px;cursor:pointer;display:flex;align-items:center;color:#e0c894}.menu-secondary[open]>.hero{display:none}.campaign-intro,.mission-brief{max-width:900px;margin:auto}.practice-label{color:#e8ce95;font-size:.7rem;margin:.1rem 0}.mission-brief button{min-height:44px;margin:.4rem}
.web3d-stage{flex:1;min-height:250px;height:min(60dvh,760px);position:relative;width:100%;overflow:hidden;background:linear-gradient(180deg,#1d16342b,#22182b60),url('/assets/game/art/pimory-observatory-v1.webp') center 48%/cover no-repeat,#292037;isolation:isolate}
.web3d-stage[data-presentation-theme=warm-study]{background-image:linear-gradient(180deg,#4027340d,#57393d35),url('/assets/game/art/pimory-observatory-v1.webp')}
.web3d-stage::after{content:'';position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 38px #170e2850;border-radius:inherit;z-index:1}
.web3d-canvas{display:block;width:100%;height:100%}
.web3d-tools{display:flex;align-items:center;justify-content:center;gap:.5rem;flex-wrap:nowrap;padding:.4rem .65rem;position:relative;border-top:1px solid #d2b27866;background:linear-gradient(180deg,#42334f,#2d243b);box-shadow:inset 0 1px #fff1;z-index:3}
.web3d-tools button,.web3d-tools select,.web3d-tools summary{min-height:44px;min-width:44px;font:inherit}
.web3d-tools button{padding:.5rem .8rem;border:1px solid #c7aa7c;border-radius:.75rem;background:linear-gradient(#604563,#3d2d4a);color:#fff0cc;font-weight:650;box-shadow:inset 0 1px 0 #fff3,0 2px 4px #0003;cursor:pointer;white-space:nowrap}
.web3d-tools button[data-web3d-mode]{background:linear-gradient(#f1d9a3,#bd9454);color:#32243b;border-color:#f1d9a3}
.web3d-tools button:hover,.web3d-tools summary:hover{filter:brightness(1.1)}
.web3d-tools button:focus-visible,.web3d-tools select:focus-visible,.web3d-tools summary:focus-visible,.web3d-tools input:focus-visible{outline:3px solid #fff0be;outline-offset:2px}
.web3d-tools label{font-size:.8rem;display:flex;align-items:center;gap:.35rem;color:#e4d3e8}
.web3d-tools select{width:155px;max-width:58%;padding:.4rem .65rem;background:#352740;color:#fff0d3;border:1px solid #b29968;border-radius:.7rem;cursor:pointer}
.web3d-tools summary{display:flex;align-items:center;justify-content:center;gap:.4rem;padding:.4rem .75rem;border:1px solid #c7aa7c;border-radius:.75rem;cursor:pointer;background:linear-gradient(#604563,#3d2d4a);color:#fff0cc;list-style:none;white-space:nowrap;font-weight:600;box-sizing:border-box}
.web3d-tools summary::-webkit-details-marker{display:none}.web3d-settings>summary::before{content:'✦';font-size:1em;color:#e7c98c}
.web3d-settings{position:relative}.web3d-settings[open]>summary{border-color:#ffe5ad;box-shadow:inset 0 0 0 1px #ffe5ad44}
.web3d-options{position:absolute;bottom:calc(100% + .65rem);right:-.25rem;z-index:8;box-sizing:border-box;width:min(300px,calc(100vw - 2rem));max-height:min(600px,65dvh);overflow:auto;overscroll-behavior:contain;padding:.75rem;border:1px solid #d7b97b;border-radius:1rem;background:linear-gradient(155deg,#493752,#2c2238);box-shadow:0 10px 35px #11081fd9,inset 0 1px #fff2;color:#fff0d3}
.web3d-options>label,.web3d-options .web3d-sound>label{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-height:44px;padding:.25rem 0;line-height:1.3;font-size:.85rem}
.web3d-zoom{display:flex;align-items:center;gap:.4rem;padding-bottom:.5rem;border-bottom:1px solid #dec49a33;margin-bottom:.4rem}.web3d-zoom>span{flex:1;font-size:.85rem}.web3d-zoom button{padding:.35rem .65rem}
.web3d-sound{border-top:1px solid #dec49a33;margin-top:.5rem;padding-top:.5rem}.web3d-sound>summary{justify-content:flex-start;border:0;background:transparent;padding:.3rem 0;box-shadow:none}.web3d-sound>summary::before{content:'♪';color:#efd296}.web3d-sound>button{margin:.2rem 0;display:block;width:100%;font-size:.85rem}.web3d-sound input[type=range]{accent-color:#e7c588;width:145px;max-width:58%;min-height:44px}.web3d-sound input[type=checkbox]{accent-color:#e7c588;min-width:20px;min-height:20px;margin-right:.5rem}.web3d-options .web3d-sound>label:has(input[type=checkbox]){justify-content:flex-start}
.web3d-status{font-size:.68rem;margin:0;padding:0 .8rem .25rem;color:#d7c5df;opacity:.95;background:#2d243b;text-align:center}
.web3d-region[data-mode=2d] .web3d-status{padding-bottom:.2rem}
.web3d-region[data-mode=2d]{border:0;background:transparent;flex:none}
.web3d-active>.board-region{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip-path:inset(50%);opacity:0}
.web3d-active.web3d-keyboard>.board-region{position:relative!important;width:100%!important;height:auto!important;clip-path:none;opacity:1;min-height:180px}
.web3d-active>.web3d-region{flex:1;min-height:0;grid-row:auto}
.web3d-active>.web3d-region .web3d-stage{min-height:180px;height:100%;flex:1}
.web3d-active.web3d-keyboard>.web3d-region .web3d-stage{height:240px;flex:none}
/* The retained2D controls keep their accessible cells, but add no visual plate
   behind the original image; transparent margins show the table itself. */
.match-view .board .playcard,.match-view .pq-grid .playcard{background:none;border:0;box-shadow:none;border-radius:0}
.match-view .board .playcard img,.match-view .pq-grid .playcard img{background:none}
.web3d-active.phase-completed .web3d-stage{max-height:35dvh}
.guided-run{border:1px solid #e6c57b99;background:linear-gradient(115deg,#49304d,#292039);padding:.65rem 1rem;border-radius:.8rem;box-shadow:inset 0 1px 0 #fff1;color:#f8e7c7}
.guided-run p{margin:.3rem 0}.guided-run button{min-height:44px}.tutorial-highlight{outline:3px solid #ffe19a!important;outline-offset:3px}
@media(max-width:600px){.web3d-tools{gap:.35rem;padding:.3rem}.web3d-tools button,.web3d-settings>summary{padding:.4rem .65rem;font-size:.85rem}.web3d-options{right:-.4rem}.web3d-status{font-size:.6rem}.web3d-active>.web3d-region .web3d-stage{min-height:220px}.guided-run{padding:.5rem}}
@media(max-width:390px){.web3d-tools{gap:.25rem}.web3d-tools button,.web3d-settings>summary{padding:.4rem .5rem}.web3d-settings>summary::before{display:none}.web3d-options{right:-.2rem}}
@media(prefers-reduced-motion:reduce){.tutorial-highlight{transition:none!important}}
