:root{--lime:#b7ff1a;--paper:#edede6;--bg:#0c0c0c;--ink:#121212;--purple:#925bc9}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--paper);font:15px/1.5 "Microsoft YaHei",Arial,sans-serif}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:0;padding:11px 15px;min-height:44px;font-weight:700;background:var(--lime);color:var(--ink)}button:disabled{opacity:.45;cursor:default}button.secondary{background:transparent;color:inherit;border:1px solid #888}button.danger{background:#ff655b}a{color:var(--lime)}input,select,textarea{width:100%;padding:11px;border:1px solid #85867b;border-radius:0;background:#252620;color:var(--paper);min-width:0}label{display:block;margin:12px 0 5px}h1,h2,h3,p{margin:0 0 12px}h1{font-size:32px;line-height:1.2}h2{font-size:24px}h3{font-size:19px}.test-strip{text-align:center;font-size:10px;background:#20251a;padding:6px;color:#d0d5c5}#app{max-width:680px;margin:auto;padding:18px 18px 90px}.brand{display:inline-block;color:var(--ink);background:var(--lime);font-size:24px;font-weight:950;padding:8px 12px;transform:rotate(-2deg)}header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:6px 0 22px}header small{display:block;color:#bcc1b3}.paper{color:var(--ink);background:var(--paper);padding:18px;box-shadow:5px 6px 0 #56623a;clip-path:polygon(0 1%,16% 0,32% 1%,49% 0,72% 1%,99% 0,100% 17%,99% 35%,100% 60%,99% 99%,74% 100%,52% 99%,29% 100%,1% 99%,0 78%,1% 50%);margin-bottom:20px}.green{background:var(--lime)}.row{display:flex;align-items:center;gap:10px;justify-content:space-between}.row>*{min-width:0}.row.wrap{flex-wrap:wrap}.muted{font-size:12px;color:#a9af9f}.paper .muted{color:#5c6351}.paper button{background:var(--ink);color:var(--lime)}.paper button.secondary{background:transparent;color:var(--ink)}.sign-banner h2{font-size:22px;line-height:1.35;margin:0}.sign-banner button{flex-shrink:0}.subline{margin-top:12px;border-top:1px solid #7f9a43;padding-top:8px;font-size:12px}.game-card{position:relative;margin:16px 8px 26px 0;box-shadow:5px 7px 0 var(--lime),10px 13px 0 #696d59;padding:12px}.game-card img{display:block;width:100%;height:230px;object-fit:cover;background:#171a13;margin-bottom:10px}.game-card .meta{text-align:right;font-size:11px}.game-card .meta b{font-size:23px}.game-card h2{font-size:26px;margin:0}.game-card h3{font-size:12px;margin:2px 0 8px}.game-card .actions{display:grid;grid-template-columns:1fr 100px;gap:8px;margin-top:12px}.pager{display:flex;justify-content:center;gap:10px;margin:20px 0}.pager button{padding:4px 15px;background:#262a20;color:var(--paper)}.pager .active{background:var(--lime);color:var(--ink)}.q-card{display:flex;align-items:center}.q-card img{width:125px;height:125px;object-fit:contain}.feed-row{border-bottom:1px solid #45463b;padding:12px 0;font-size:13px}nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,680px);display:flex;background:#151710;border-top:1px solid #627b35;z-index:8;padding-bottom:env(safe-area-inset-bottom)}nav button{flex:1;background:transparent;color:#929c84;font-size:13px}nav .active{color:var(--lime)}.panel{border:1px solid #515547;padding:16px;margin:16px 0}.stack>*{display:block;width:100%;margin-bottom:10px}.auth{max-width:430px;margin:30px auto}.error{color:#ff9d95;margin:8px 0;white-space:pre-wrap}.badges{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.badge{text-align:center;font-size:12px}.badge img{width:76px;height:76px;object-fit:contain;max-width:100%}.badge.locked img{filter:grayscale(1);opacity:.4}.avatar{width:48px;height:48px;object-fit:cover;border-radius:50%;background:#24281c}.rank-row{display:grid;grid-template-columns:28px 40px 1fr auto;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid #464c3a}.rank-row img{width:36px;height:36px;border-radius:50%}.rank-row small{display:block}.task{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #4c533e}.task img{width:58px;height:58px}.task>div{flex:1}.task b{display:block}progress{width:100%;height:8px;accent-color:var(--lime)}.hud{display:flex;justify-content:space-between;gap:10px;position:sticky;top:0;background:#13170e;padding:12px;z-index:2}.hud strong{display:block;font-size:26px;color:var(--lime)}.arena-wrap{position:relative;margin-top:12px}.arena{width:100%;aspect-ratio:360/460;display:block;touch-action:none;background:#171a13;border:1px solid #454d36}.feedback{position:absolute;left:8px;right:8px;top:8px;pointer-events:none;text-align:center;background:#10150cdd;padding:6px;color:var(--lime);min-height:33px;font-weight:700}.feedback.flash{animation:hit .3s ease-out}.quiz{position:absolute;left:4%;right:4%;top:12%;max-height:85%;overflow:auto;background:var(--paper);color:var(--ink);padding:16px;box-shadow:5px 7px 0 #000b}.quiz h3{font-size:17px}.quiz button{width:100%;text-align:left;background:#dddcd0;margin:4px 0;color:var(--ink);font-weight:400;padding:8px 10px}.quiz .selected{background:var(--lime);outline:2px solid #121212}.quiz .confirm{background:var(--ink);color:var(--lime);text-align:center;font-weight:700}.quiz progress{margin-bottom:8px}.battle-actions{margin-top:12px}.battle-actions button{width:100%}.score{font-size:72px;color:var(--lime);font-weight:900;text-align:center}.result-details{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;text-align:center}.result-details b{display:block;font-size:26px}.members{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.member{background:#29301f;padding:7px;font-size:12px}.member.drawing{outline:2px solid var(--lime)}.drawing-board{width:100%;aspect-ratio:1;display:block;background:white;touch-action:none;border:2px solid #7e9462}.tools{display:flex;gap:5px;flex-wrap:wrap;margin:10px 0}.tools button{padding:6px 10px}.tools select{width:70px}.chat{height:120px;overflow:auto;border:1px solid #555f46;padding:8px;font-size:13px}.chat p{margin:2px}.guess-form{display:flex;gap:8px;margin-top:8px}.guess-form input{flex:1}.notice{padding:12px;background:#303723;color:#d4e8b5;margin:10px 0;font-size:13px}.admin-row{display:flex;justify-content:space-between;gap:10px;padding:12px 0;border-bottom:1px solid #444}.admin-row small{display:block}.scroll-table{overflow:auto}.scroll-table table{border-collapse:collapse;font-size:12px;min-width:500px;width:100%}td,th{padding:8px;border-bottom:1px solid #454b3d;text-align:left}details{margin:12px 0}summary{cursor:pointer;padding:10px;background:#252c1b}pre{white-space:pre-wrap;font-size:11px;overflow-wrap:anywhere}#toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);max-width:90%;padding:12px;background:var(--lime);color:var(--ink);z-index:30;display:none}dialog{background:#20251a;color:var(--paper);border:1px solid #94ae6d;max-width:540px;width:92%;max-height:85dvh;overflow:auto;padding:24px}dialog::backdrop{background:#000b}#close-dialog{float:right;background:transparent;color:var(--paper);font-size:24px;padding:0 8px}dialog h2{clear:both}.helptext{font-size:12px;color:#aab49c}.ready{color:var(--lime)}@keyframes hit{50%{transform:scale(1.08)}}@media(max-width:400px){#app{padding:12px 12px 80px}.brand{font-size:21px}.game-card img{height:210px}.sign-banner h2{font-size:19px}.game-card h2{font-size:23px}.game-card .meta{font-size:10px}.quiz{top:8%;padding:12px}.quiz h3{font-size:15px}.quiz button{font-size:13px;min-height:40px}.badges{gap:7px}.hud strong{font-size:23px}}@media(prefers-reduced-motion:reduce){*{animation:none!important}}
.drawing-board{width:min(100%,36dvh);margin-inline:auto}.chat{height:95px}
@media(max-height:700px) and (max-width:760px){header{margin:0 0 12px}.brand{font-size:20px}.paper{margin-bottom:12px}.sign-banner{padding:12px}.sign-banner h2{font-size:18px}.sign-banner .subline{margin-top:5px;padding-top:4px}.sign-banner .subline button{min-height:0;padding:2px 4px}.game-card{margin:10px 8px 14px 0}.game-card img{height:110px;margin-bottom:7px}.game-card h2{font-size:22px}.game-card h3{margin-bottom:2px}.game-card small{font-size:10px}.game-card .actions{margin-top:8px}.pager{margin:10px 0}.pager button{min-height:36px}#app>h2{margin-bottom:4px}#app>p.muted{margin-bottom:6px}}

/* Public pages: readable account records and clear touch targets. */
[hidden]{display:none!important}.grow{flex:1;min-width:0}.block{display:block}.section-title{margin-top:26px}.back{margin-bottom:18px}.total-link{background:transparent;color:var(--paper);text-align:right;padding:4px}.metric{display:block;font-size:34px}.text-button{background:transparent;color:var(--lime);font-size:12px;padding:6px;min-height:32px}.tabs{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.tabs button{background:#292e23;color:var(--paper);padding:10px 14px}.tabs .active{background:var(--lime);color:var(--ink)}.task-card{align-items:flex-start;border:1px solid #4c533e;margin:12px 0;padding:14px}.task-card img{width:52px;height:52px}.task-card progress{display:block;margin:10px 0}.task-card button{display:block;margin-top:10px}.task-card small{display:block}.game-checks{display:grid;grid-template-columns:1fr 1fr;gap:6px}.game-checks button{padding:8px;font-size:12px}.game-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat-card{background:var(--paper);color:var(--ink);padding:16px;text-align:left;box-shadow:3px 4px 0 #56623a}.stat-card>*{display:block}.stat-card strong{font-size:28px}.stat-card strong small{display:inline;font-size:11px;font-weight:400}.stat-card span,.stat-card>small{font-size:12px;margin-top:6px}.badges{grid-template-columns:repeat(2,1fr);margin-bottom:20px}.badge{display:flex;align-items:center;flex-direction:column;background:#23291c;color:var(--paper);border:1px solid #586345;padding:12px}.badge.locked{color:#b0b5a7}.badge span{font-size:12px;font-weight:400}.badge-detail{display:block;width:130px;height:130px;object-fit:contain;margin:0 auto 14px}.menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.menu-grid button{background:#252b1d;color:var(--paper);border:1px solid #6a7855}.rank-row.is-me{outline:2px solid var(--lime);background:#26321b;padding-inline:6px}.rank-row span{overflow-wrap:anywhere}.rank-row small{font-size:11px;color:#adb69e}.dept-icon{display:grid;place-items:center;width:36px;height:36px;background:#374425;color:var(--lime);font-weight:700}.record{display:flex;justify-content:space-between;gap:10px;width:100%;text-align:left;background:transparent;color:var(--paper);border-bottom:1px solid #4b553e;font-weight:400;padding:16px 0}.record small{display:block;font-size:12px;color:#aab49c;margin-top:5px}.record strong{white-space:nowrap;color:var(--lime)}#sound-toggle{width:24px;height:24px;accent-color:var(--lime)}.q-portrait{width:110px;height:110px;object-fit:contain}.feed-row p{margin:4px 0}.feed-row small{color:#adb69e}#rank-controls{margin-bottom:12px}#rank-controls select:first-child{flex:2}#rank-controls select:last-child{flex:1}#activity-feed{margin-top:24px}#q-history{overflow-wrap:anywhere}.game-card .meta{flex-shrink:0;max-width:45%}.profile-preview{display:block;width:100px;height:100px;object-fit:cover;border-radius:50%;margin:10px auto}.crop-preview{display:block;max-width:100%;width:220px;aspect-ratio:1;margin:10px auto;background:#141810;touch-action:none}
@media(max-width:370px){.game-stats{grid-template-columns:1fr}.game-card h2{font-size:20px}.game-card .meta b{font-size:21px}.task-card{padding:10px;gap:8px}.task-card img{width:42px;height:42px}.task-card b{font-size:14px}.row>h2{font-size:20px}.rank-row{gap:7px;grid-template-columns:24px 32px 1fr auto}}

/* PUB-005: approved ragged paper, layered deck and horizontal gesture. */
.sign-paper-shadow{filter:drop-shadow(3px 5px 0 #485036);margin-bottom:20px}.sign-paper-shadow .sign-banner{margin:0;box-shadow:none;padding:18px 20px}.sign-banner .subline button{background:none;color:var(--ink);min-height:28px;padding:3px 0 3px 8px}.sign-banner .subline{margin-top:10px;padding-top:6px}.card-stack{position:relative;isolation:isolate;touch-action:pan-y;user-select:none;margin:14px 7px 0 2px;padding-bottom:27px}.stack-front{position:relative;z-index:5;filter:drop-shadow(3px 4px 0 #000);transition:transform .16s ease-out,opacity .15s ease-out;transform-origin:center 65%}.stack-front.dragging{transition:none}.card-stack .game-card{margin:0;padding:15px 15px 17px;box-shadow:none}.card-stack .game-card img{pointer-events:none;-webkit-user-drag:none;height:210px}.stack-layers{position:absolute;inset:0 0 27px;pointer-events:none}.stack-back{position:absolute;inset:0;transform-origin:center bottom;filter:drop-shadow(2px 3px 0 #000)}.stack-back .paper{width:100%;height:100%;margin:0;padding:0;box-shadow:none;background:#a3a79a}.stack-back.depth-1{transform:translate(3px,9px) scale(.985) rotate(1.6deg)}.stack-back.depth-2{transform:translate(5px,18px) scale(.97) rotate(-1.4deg)}.stack-back.depth-2 .paper{background:var(--lime)}.stack-back.depth-3{transform:translate(7px,27px) scale(.955) rotate(1deg)}.stack-back.depth-3 .paper{background:#c3c4b8}.card-arrow{position:absolute;z-index:7;top:95px;width:38px;min-height:46px;padding:0;display:grid;place-items:center;background:var(--lime);color:var(--ink);font:32px Arial,sans-serif;box-shadow:3px 3px 0 #000;clip-path:polygon(4% 0,100% 4%,96% 100%,0 95%)}.card-arrow.prev{left:-10px;transform:rotate(-3deg)}.card-arrow.next{right:-10px;transform:rotate(3deg)}.deck-caption{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:0 0 10px;color:#abb39d;font-size:11px}.game-dots{display:flex;gap:0}.game-dots button{width:34px;min-height:44px;padding:12px 7px;background:transparent}.game-dots button::after{content:'';display:block;width:20px;height:4px;background:#505744}.game-dots button.active::after{background:var(--lime)}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}#home-deck{overflow:clip;margin-inline:-3px;padding-inline:3px}#home-deck:focus-visible,.card-stack:focus-visible{outline:2px solid var(--purple);outline-offset:1px}
@media(max-height:700px) and (max-width:760px){.sign-paper-shadow{margin-bottom:12px}.sign-paper-shadow .sign-banner{padding:12px 16px}.sign-banner .subline{margin-top:5px;padding-top:4px}.card-stack{margin-top:8px;padding-bottom:24px}.stack-layers{bottom:24px}.card-stack .game-card{padding:12px 13px 14px}.card-stack .game-card img{height:105px}.card-arrow{top:44px;min-height:44px;width:32px}.deck-caption{margin-bottom:6px}}
@media(max-width:350px) and (max-height:600px){.card-stack .game-card img{height:88px}.card-stack .game-card .actions{margin-top:6px}.card-stack .game-card{padding-bottom:12px}.card-arrow{top:36px}.sign-paper-shadow .sign-banner{padding:11px 15px}}
@media(prefers-reduced-motion:reduce){.stack-front{transition:none}}

@media(max-width:350px) and (max-height:600px){.sign-banner h2{font-size:15px;line-height:1.35}.sign-banner #sign{padding:8px 10px;font-size:12px}.sign-banner .subline{font-size:10px}.sign-banner .subline button{font-size:10px}.sign-paper-shadow .sign-banner{padding:10px 13px}.sign-paper-shadow{margin-bottom:10px}#app>.row h2{margin-bottom:0;font-size:20px}#app>.row{margin-bottom:3px}#app>p.muted{margin-bottom:2px}.card-stack .game-card img{height:70px}.card-stack .game-card h2{font-size:19px}.card-stack .game-card .row small{font-size:9px}.card-stack .game-card .meta{font-size:9px}.card-stack .game-card .meta b{font-size:20px}.card-stack .game-card{padding:10px 12px}.card-arrow{top:27px}}
@media(max-width:350px) and (max-height:600px){header{margin-bottom:8px}.sign-paper-shadow{margin-bottom:6px}.sign-paper-shadow .sign-banner{padding-block:8px}}
@media(max-height:700px) and (max-width:760px){#app>.row h2{margin-bottom:0}.sign-paper-shadow{margin-bottom:8px}.card-stack .game-card img{height:100px}} @media(max-width:350px) and (max-height:600px){.card-stack .game-card img{height:70px}.sign-paper-shadow{margin-bottom:6px}}

/* Ninja owns a landscape stage. Portrait phones rotate the stage and gesture coordinates together. */
body.ninja-mode{overflow:hidden;overscroll-behavior:none}body.ninja-mode>.test-strip{display:none}
body.ninja-mode #app{padding:0;max-width:none;margin:0}
.ninja-stage{position:fixed;z-index:10;left:50%;top:50%;width:100vw;height:100dvh;transform:translate(-50%,-50%);display:grid;grid-template-rows:58px minmax(0,1fr) 30px;background:#0c0e0a;padding:0 max(10px,env(safe-area-inset-right)) 0 max(10px,env(safe-area-inset-left));overflow:hidden;touch-action:none}
.ninja-top{display:flex;align-items:center;justify-content:space-between;gap:14px;white-space:nowrap;border-bottom:1px solid #53613e}.ninja-title{font-size:22px;font-weight:900;color:var(--lime)}.ninja-title span{font-size:12px;display:block;color:var(--paper);letter-spacing:3px}.ninja-stat{font-size:12px}.ninja-stat b{font-size:27px;color:var(--lime);margin-left:7px;font-variant-numeric:tabular-nums}.ninja-stat small{margin-left:3px}.ninja-top #quit{padding:5px 15px;min-height:40px}
.ninja-field{position:relative;display:flex;justify-content:center;align-items:center;min-height:0;min-width:0;overflow:hidden}.ninja-field canvas{display:block;width:100%;height:100%;object-fit:contain;touch-action:none;aspect-ratio:2;max-width:calc((100dvh - 88px) * 2);max-height:calc((100vw - 20px) / 2)}
.ninja-feedback{position:absolute;top:10px;left:50%;transform:translateX(-50%);pointer-events:none;white-space:nowrap;background:#12170ee8;border:1px solid #719044;color:var(--lime);font-size:15px;padding:5px 14px}.ninja-feedback[data-good="false"]{color:#ff9d95;border-color:#a65348}.ninja-bottom{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#b6bda9;gap:20px}.ninja-bottom #ninja-count{color:var(--lime);font-weight:800}
@media(orientation:portrait){.ninja-stage{width:100dvh;height:100vw;transform:translate(-50%,-50%) rotate(90deg);padding-inline:10px}.ninja-field canvas{max-width:calc((100vw - 88px) * 2);max-height:calc((100dvh - 20px) / 2)}}
@media(max-height:420px) and (orientation:landscape),(max-width:420px) and (orientation:portrait){.ninja-stage{grid-template-rows:48px minmax(0,1fr) 24px}.ninja-title{font-size:18px}.ninja-title span{font-size:10px}.ninja-stat b{font-size:23px}.ninja-bottom{font-size:10px}.ninja-feedback{font-size:12px;top:4px;padding:3px 10px}}
@media(max-height:420px) and (orientation:landscape){.ninja-field canvas{max-width:calc((100dvh - 72px) * 2)}}
@media(max-width:420px) and (orientation:portrait){.ninja-field canvas{max-width:calc((100vw - 72px) * 2)}}

/* The four game subtitles are part of the card illustration caption. */
.card-art{position:relative;margin-bottom:10px}.card-stack .card-art img{margin-bottom:0}.game-card .art-subtitle{position:absolute;left:14px;top:10px;margin:0;padding:6px 13px 8px;background:var(--lime);color:var(--ink);font-size:26px;font-weight:900;line-height:1.15;letter-spacing:1px;transform:rotate(-2deg);clip-path:polygon(0 8%,13% 2%,29% 5%,46% 0,64% 4%,83% 1%,100% 6%,98% 35%,100% 61%,98% 96%,78% 99%,55% 95%,32% 100%,14% 96%,1% 99%,2% 66%,0 38%);pointer-events:none}.game-card .row h2{margin-bottom:5px}
@media(max-height:700px) and (max-width:760px){.card-art{margin-bottom:7px}.game-card .art-subtitle{font-size:22px;top:7px;padding:4px 10px 6px}}
@media(max-width:350px) and (max-height:600px){.game-card .art-subtitle{font-size:19px;left:24px;top:6px;padding:4px 9px 5px}}
/* Mobile network state stays outside game layout and never covers controls. */
.network-status{position:sticky;top:0;z-index:200;background:#ffc400;color:#121212;padding:9px 14px;font-size:13px;text-align:center}
.network-status[hidden]{display:none}
input,textarea,select{font-size:16px}

/* NIN-005: the rotated game owns its connection notice and physical safe areas. */
body.ninja-mode>#network-status{display:none}
.ninja-stage{--ninja-safe-top:env(safe-area-inset-top,0px);--ninja-safe-right:env(safe-area-inset-right,0px);--ninja-safe-bottom:env(safe-area-inset-bottom,0px);--ninja-safe-left:env(safe-area-inset-left,0px);padding:var(--ninja-safe-top) max(10px,var(--ninja-safe-right)) var(--ninja-safe-bottom) max(10px,var(--ninja-safe-left))}
.ninja-field canvas{max-width:none;max-height:none;flex:none}
.ninja-network{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);width:max-content;max-width:88%;padding:7px 12px;background:#ffc400;color:#121212;text-align:center;font-size:13px;line-height:1.4;pointer-events:none;overflow-wrap:anywhere}
.ninja-network[hidden]{display:none}
@media(orientation:portrait){.ninja-stage{--ninja-safe-top:env(safe-area-inset-right,0px);--ninja-safe-right:env(safe-area-inset-bottom,0px);--ninja-safe-bottom:env(safe-area-inset-left,0px);--ninja-safe-left:env(safe-area-inset-top,0px)}}
/* MIN-003–006: landscape cavern, independent animation and central question. */
body.miner-mode{overflow:hidden;overscroll-behavior:none}body.miner-mode>.test-strip,body.miner-mode>#network-status{display:none}body.miner-mode #app{padding:0;max-width:none}
.miner-stage{position:fixed;z-index:10;left:50%;top:50%;width:100vw;height:100dvh;transform:translate(-50%,-50%);display:grid;grid-template-rows:52px minmax(0,1fr) 50px;background:#0c0e0a;padding:env(safe-area-inset-top) max(10px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(10px,env(safe-area-inset-left));overflow:hidden}
.miner-top,.miner-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:14px}.miner-top b{color:var(--lime);font-size:24px}.miner-bottom button{min-width:100px}.miner-field{position:relative;display:flex;align-items:center;justify-content:center;min-height:0}.miner-field canvas{display:block;width:100%;height:100%;object-fit:contain;max-width:calc((100dvh - 102px) * 2);aspect-ratio:2/1}#miner-feedback{position:absolute;top:4px;left:10%;right:10%;font-size:13px;text-align:center;pointer-events:none;background:#151b14dd}.miner-question{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(620px,88%);max-height:96%;overflow:auto;background:var(--paper);color:var(--ink);padding:12px;box-shadow:5px 5px #000}.miner-question h3{font-size:17px;margin:5px 0}.miner-options{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:6px 0}.miner-options button.secondary{color:var(--ink);padding:6px;min-height:36px}.miner-options button.selected{background:var(--lime);border-color:var(--ink)}.miner-question progress{width:100%;height:8px}
@media(orientation:portrait){.miner-stage{width:100dvh;height:100vw;transform:translate(-50%,-50%) rotate(90deg);padding:0 10px}.miner-field canvas{max-width:calc((100vw - 102px)*2)}}
@media(max-height:380px) and (orientation:landscape),(max-width:380px) and (orientation:portrait){.miner-stage{grid-template-rows:44px minmax(0,1fr) 44px}.miner-top,.miner-bottom{font-size:12px}.miner-question h3{font-size:15px}.miner-question{padding:7px}.miner-options button.secondary{font-size:13px;min-height:32px}}
/* MIN-008: use the full available field; sprites compensate for the field ratio. */
.miner-stage{grid-template-rows:44px minmax(0,1fr) 44px}
.miner-field canvas{width:100%;height:100%;max-width:none;max-height:none;aspect-ratio:auto;object-fit:fill}
.miner-bottom span{min-width:0;font-size:13px}.miner-top strong{font-size:18px}.miner-top b{font-size:26px}
@media(orientation:portrait){.miner-field canvas{max-width:none}.miner-stage{padding:env(safe-area-inset-right,0px) max(8px,env(safe-area-inset-bottom,0px)) env(safe-area-inset-left,0px) max(8px,env(safe-area-inset-top,0px))}}
@media(max-height:380px) and (orientation:landscape),(max-width:380px) and (orientation:portrait){.miner-top strong{font-size:15px}.miner-bottom span{font-size:11px}}

/* FIG-002: landscape ring, with the question and confirmation inside the visible field. */
body.fighter-mode{overflow:hidden;overscroll-behavior:none}
body.fighter-mode>.test-strip,body.fighter-mode>#network-status{display:none}
body.fighter-mode #app{padding:0;max-width:none;margin:0}
.fighter-stage{position:fixed;z-index:10;left:50%;top:50%;width:100vw;height:100dvh;transform:translate(-50%,-50%);display:grid;grid-template-rows:50px 42px minmax(0,1fr) 34px;background:#0c0e0a;overflow:hidden;padding:env(safe-area-inset-top,0px) max(10px,env(safe-area-inset-right,0px)) env(safe-area-inset-bottom,0px) max(10px,env(safe-area-inset-left,0px))}
.fighter-top,.fighter-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}
.fighter-top{border-bottom:1px solid #53613e;font-size:12px;white-space:nowrap}
.fighter-top strong{color:var(--lime);font-size:21px}.fighter-top small{font-size:12px;color:var(--paper);margin-left:7px}
.fighter-top b{color:var(--lime);font-size:25px;font-variant-numeric:tabular-nums;margin-left:5px}
.fighter-top #quit{padding:5px 14px;min-height:36px}
.fighter-health{display:grid;grid-template-columns:1fr 48px 1fr;align-items:center;gap:12px;font-size:12px}
.fighter-health>div{min-width:0}.fighter-health>div:last-child{text-align:right}.fighter-health progress{display:block;height:8px;margin-top:4px}
#fighter-enemy-life{accent-color:#ff655b}.fighter-versus{text-align:center;font-size:18px;font-weight:900;color:var(--lime)}
.fighter-field{position:relative;min-width:0;min-height:0;overflow:hidden}
.fighter-field canvas{display:block;width:100%;height:100%;touch-action:none}
.fighter-question{position:absolute;z-index:2;left:50%;top:50%;transform:translate(-50%,-50%);width:min(620px,64%);max-height:calc(100% - 12px);display:grid;grid-template-rows:8px minmax(0,1fr) 38px;gap:6px;background:var(--paper);color:var(--ink);padding:10px 12px;box-shadow:5px 5px 0 #000b;overflow:hidden}
.fighter-question-body{min-height:0;overflow:auto;overscroll-behavior:contain}
.fighter-question h3{font-size:17px;line-height:1.4;margin:0 0 7px;overflow-wrap:anywhere}
.fighter-options{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.fighter-options button.secondary{min-height:38px;padding:6px 9px;background:#dddcd0;border:1px solid #b4b5a5;color:var(--ink);text-align:left;font-size:14px;line-height:1.35;overflow-wrap:anywhere}
.fighter-options button.selected{background:var(--lime);border-color:var(--ink);outline:1px solid var(--ink)}
.fighter-question #confirm-answer{min-height:38px;padding:4px;background:var(--ink);color:var(--lime);font-weight:800}
.fighter-bottom{font-size:12px}.fighter-bottom>span:first-child,.fighter-bottom>span:last-child{flex-shrink:0}
.fighter-bottom #feedback{min-width:0;text-align:center;color:var(--lime);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#fighter-count{color:var(--lime);font-weight:800}
#fighter-network{position:absolute;bottom:4px;left:5%;right:5%;background:#ffc400;color:var(--ink);font-size:12px;text-align:center;padding:5px;pointer-events:none}
@media(orientation:portrait){.fighter-stage{width:100dvh;height:100vw;transform:translate(-50%,-50%) rotate(90deg);padding:env(safe-area-inset-right,0px) max(10px,env(safe-area-inset-bottom,0px)) env(safe-area-inset-left,0px) max(10px,env(safe-area-inset-top,0px))}}
@media(max-height:380px) and (orientation:landscape),(max-width:380px) and (orientation:portrait){.fighter-stage{grid-template-rows:42px 36px minmax(0,1fr) 28px}.fighter-top strong{font-size:17px}.fighter-top small{font-size:10px;margin-left:4px}.fighter-top b{font-size:21px}.fighter-top,.fighter-bottom{font-size:11px;gap:6px}.fighter-question{padding:6px 9px;gap:4px;max-height:calc(100% - 6px)}.fighter-question h3{font-size:15px;margin-bottom:5px}.fighter-options button.secondary{font-size:13px;min-height:34px;padding:4px 6px}}
#fighter-sound{padding:5px 8px;min-height:36px;font-size:11px;white-space:nowrap}
#fighter-combat-callout{position:absolute;bottom:5px;left:50%;transform:translateX(-50%) rotate(-2deg);padding:5px 16px;background:#b7ff1a;color:#121212;font-size:17px;font-weight:900;white-space:nowrap;pointer-events:none;box-shadow:3px 3px #000;z-index:1}
#fighter-combat-callout[data-side="doctor"]{background:#ff655b;color:#170706}
.fighter-health[data-hurt="player"]>div:first-child,.fighter-health[data-hurt="doctor"]>div:last-child{color:#ff8b7e;text-shadow:0 0 9px #ff5347}
@media(max-height:380px) and (orientation:landscape),(max-width:380px) and (orientation:portrait){#fighter-combat-callout{font-size:13px;padding:3px 10px;bottom:2px}.fighter-top small{display:none}}
