/* Shared flight deck: readable instructions, large controls, stable tablet layout. */
:root{--flight-cyan:#35e8cf;--flight-gold:#ffd166;--flight-border:#2a4058;--flight-text:#edf5ff;--flight-muted:#a7b9ce;--topbar-height:72px;--stick-size:144px}
html{touch-action:manipulation}
body{touch-action:manipulation;-webkit-text-size-adjust:100%}
button,a,select,summary{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
button,a.btn,.pill,select,summary{min-height:44px}
button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--flight-cyan);outline-offset:4px}
input,textarea,select{font-size:16px!important}
[data-game-surface],.stick{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.stick{border-color:#628c9d!important;box-shadow:0 10px 28px #0006,inset 0 0 32px #35e8cf0d}
.stick.is-held{border-color:var(--flight-cyan)!important;box-shadow:0 0 0 5px #35e8cf22,0 8px 30px #0006}
.stick::before{content:'↑';position:absolute;top:5%;left:calc(50% - .4em);color:#b3ccdc;font-size:17px;pointer-events:none}
.stick::after{content:'←　　→';position:absolute;top:calc(50% - .7em);left:0;width:100%;text-align:center;color:#8facbf;font-size:16px;pointer-events:none}
.stick .nub,.stick .knob{z-index:1;pointer-events:none}
.eyebrow{color:var(--flight-cyan);font:600 12px/1.6 var(--mono,monospace);letter-spacing:.16em}
.flight-guide{border:1px solid var(--flight-border);border-radius:14px;background:#0b1725;margin:18px 0;color:var(--flight-text)}
.flight-guide summary{padding:13px 16px;cursor:pointer;font-size:15px;font-weight:700}
.guide-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:4px 16px 12px}
.guide-grid article{padding:14px;border:1px solid #21384b;border-radius:12px;background:#101f30}
.guide-grid h3{font-size:16px;margin:8px 0;color:var(--flight-text)}
.guide-grid p,.guide-note{font-size:14px!important;line-height:1.85!important;color:var(--flight-muted)!important;margin:0!important}
.guide-note{padding:12px 16px;border-top:1px solid #21384b}
.flight-dialog{color:var(--flight-text);background:linear-gradient(145deg,#172c40,#0c1726 65%);border:1px solid #3d6278;border-radius:22px;width:min(640px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:clamp(20px,4vw,34px);box-shadow:0 25px 100px #0009;font-family:var(--cjk,sans-serif)}
.flight-dialog::backdrop{background:#020a14cf;backdrop-filter:blur(6px)}
.flight-dialog h2{font-size:clamp(24px,3vw,32px);line-height:1.4;margin:12px 0 22px}
.flight-dialog p{line-height:1.85;color:var(--flight-muted);font-size:16px}
.flight-dialog .brief-heading{font-size:13px;letter-spacing:.12em;color:var(--flight-cyan);margin-bottom:6px}
.flight-dialog .brief-goal{padding:16px;border-left:3px solid var(--flight-cyan);background:#071321;border-radius:0 12px 12px 0;color:var(--flight-text)}
.brief-metric{padding:14px 0;color:var(--flight-gold);line-height:1.8;font-size:14px}
.brief-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.flight-dialog .go{border:0;border-radius:12px;background:var(--flight-cyan);color:#06231e;font:700 16px var(--cjk,sans-serif);padding:13px 20px;cursor:pointer}
.flight-dialog .go.alt{background:#223448;color:var(--flight-text)}
.success-seal{display:grid;place-items:center;width:70px;height:70px;border-radius:50%;margin:0 auto 16px;background:#35e8cf17;border:2px solid var(--flight-cyan);color:var(--flight-cyan);font-size:36px;box-shadow:0 0 40px #35e8cf25}
.success-label{text-align:center;color:var(--flight-cyan);font:700 13px/1.6 var(--mono,monospace);letter-spacing:.2em;margin-bottom:10px}
.success-next{padding:14px 16px;margin:16px 0;border:1px solid #386754;border-radius:12px;background:#153329;color:#d5ffeb;font-size:15px;line-height:1.7}
#done .panel,#ovlDone .card{border-color:#3a887b;background:radial-gradient(ellipse at 50% 0,#214d48 0,transparent 60%),#101d2b;box-shadow:0 20px 90px #0009}
#doneTitle,#rTitle{font-size:clamp(24px,3vw,34px)!important;line-height:1.4}
#ovlDone .card{max-width:640px;text-align:center}
#ovlDone .btnrow{justify-content:center}
#done .go:first-child,#ovlDone .btn.primary{background:var(--flight-cyan);color:#06231e;border-color:var(--flight-cyan)}
.celebrate .panel,.celebrate .card{animation:flight-arrive .45s ease-out}
@keyframes flight-arrive{from{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:none}}
.game-3d{--hud:var(--flight-cyan);--dim:var(--flight-muted);--line:var(--flight-border)}
.game-3d .topbar{gap:8px;padding:calc(10px + env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) 10px max(12px,env(safe-area-inset-left,0px));background:linear-gradient(#071421f5,#071421cc);border-bottom:1px solid #ffffff13;backdrop-filter:blur(12px)}
.game-3d .pill{display:inline-flex;align-items:center;justify-content:center;border-radius:10px;padding:10px 13px;white-space:nowrap}
.game-3d .title{margin-right:auto;font-size:15px}
.game-3d .direction-label{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--flight-muted)}
.game-3d select.pill{color:var(--flight-cyan);background:#0b1e2c;max-width:180px}
.game-3d .hudrow,.game-3d .stats{top:var(--topbar-height);left:max(12px,env(safe-area-inset-left,0px));gap:7px}
.game-3d .stat{min-width:116px;border-color:#ffffff22;background:#071625df;border-radius:12px;padding:9px 12px;font-size:14px;box-shadow:0 5px 18px #0002}
.game-3d .combo{top:var(--topbar-height);max-width:calc(100vw - 160px);font-size:16px}
.game-3d .objline{top:var(--topbar-height);left:50%;width:min(580px,calc(100vw - 305px));max-width:none;transform:translateX(-50%);background:#071625e8;border-color:#35e8cf60;line-height:1.7;padding:12px 16px;font-size:14px}
.game-3d .prog{bottom:max(16px,env(safe-area-inset-bottom,0px));white-space:normal;overflow:visible;text-overflow:clip;width:min(760px,calc(100vw - 32px));max-width:none;line-height:1.65;border-radius:14px;padding:11px 18px;background:#061625ed;border-color:#35e8cf66;color:var(--flight-text);font-size:16px;box-shadow:0 8px 30px #0004}
.game-3d.touchmode .prog{bottom:calc(var(--stick-size) + 60px + env(safe-area-inset-bottom,0px));width:min(700px,calc(100vw - 32px))}
.game-3d .stick{width:var(--stick-size);height:var(--stick-size);bottom:calc(20px + env(safe-area-inset-bottom,0px));background:radial-gradient(circle at 50% 40%,#173346dd,#061724ed)}
.game-3d #stickL{left:max(22px,env(safe-area-inset-left,0px))}
.game-3d #stickR{right:max(22px,env(safe-area-inset-right,0px))}
.game-3d .stick .tag{top:-30px;font-size:13px;font-weight:700;color:#f1f8ff;background:#061625e8;padding:3px 10px;border-radius:6px}
.game-3d .stick .nub{background:#31706de6;border-color:var(--flight-cyan);width:54px;height:54px}
.game-3d .ovl{padding:max(16px,env(safe-area-inset-top,0px)) 16px;backdrop-filter:blur(8px)}
.game-3d .panel{max-width:880px;max-height:calc(100dvh - 32px);border-radius:22px;padding:clamp(20px,3vw,32px);background:linear-gradient(145deg,#162b3d,#0b1625 65%);box-shadow:0 30px 100px #0008;touch-action:pan-y}
.game-3d .panel h1{font-size:clamp(23px,3vw,32px);line-height:1.4}
.game-3d .panel p{font-size:15px;line-height:1.8}
.game-3d .panel .keys{gap:12px;font-size:14px}
.game-3d .panel .keys div{padding:12px 14px}
.game-3d .lvgrid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:20px}
.game-3d .lvbtn{padding:16px;gap:7px;background:#102333;min-height:128px;border-color:#2e465b}
.game-3d .lvbtn .nm{font-size:16px}.game-3d .lvbtn .sp,.game-3d .lvbtn .bs{font-size:13px;line-height:1.6}
.game-3d .lvbtn:not(.lock):hover{background:#183546;border-color:var(--flight-cyan)}
.game-3d .toast{max-width:calc(100vw - 32px);white-space:normal;text-align:center;line-height:1.6;top:34%;box-shadow:0 10px 40px #0006}
.game-3d #disarmBtn{bottom:calc(50px + env(safe-area-inset-bottom,0px));font-size:16px;width:78px;height:78px}
.mission-meter{height:7px;border-radius:20px;background:#ffffff20;overflow:hidden;margin-top:9px}
.mission-meter span{display:block;width:0;height:100%;background:var(--flight-cyan);transition:width .2s}
.target-cue{display:block;font-size:14px;color:#bfd8e4;margin-top:4px}
.game-2d{--faint:#91a8bf;--dim:#b0c0d2;--radius:14px}
.game-2d .hero .lead{max-width:760px;line-height:1.9}
.game-2d .mcard{border-radius:14px;padding:22px;background:linear-gradient(140deg,#152b3d,#0b1725);border-color:#294155}
.game-2d .mcard .nm{font-size:18px}.game-2d .mcard .skill{font-size:14px;line-height:1.7}
.game-2d .topbar{background:#0d1d2e;border:1px solid #294155;border-radius:14px;padding:12px 16px}
.game-2d .panelbox h3{color:var(--flight-cyan);font-size:13px;letter-spacing:.12em}
.game-2d .panelbox{background:#102132;border-color:#294155}
.game-2d .goal-main{font-size:16px;line-height:1.85}
.game-2d ul.steps li{padding:7px 10px;border-radius:8px;line-height:1.7;font-size:15px}
.game-2d ul.steps li.cur{background:#35e8cf13;border-left:3px solid var(--flight-cyan)}
.game-2d .coach{font-size:15px}.game-2d .card{max-width:620px;max-height:calc(100dvh - 32px)}
.game-2d .brief-keys{font-size:15px}.game-2d .brief-goal{font-size:16px}
.game-2d .mission-banner{position:absolute;bottom:12px;left:12px;right:12px;padding:10px 14px;background:#061724ec;border:1px solid #35e8cf70;border-radius:12px;pointer-events:none;color:#effffb;font-size:14px;line-height:1.5}
.game-2d .mission-banner small{color:var(--flight-cyan);font-size:11px;letter-spacing:.12em;display:block;margin-bottom:3px}
.game-2d .warnflash{font-size:16px;white-space:normal;max-width:calc(100% - 24px);text-align:center;background:#4a1422f5;color:#ffe7ec;border-width:2px;padding:10px 16px;z-index:2}
.game-2d .progress-note{font-size:14px;color:var(--flight-gold);line-height:1.8;padding:12px 0}
.game-2d .pause-badge{display:none}.game-2d.is-paused .pause-badge{display:block;position:absolute;inset:35% 12% auto;background:#0d2437ed;border:1px solid var(--flight-cyan);padding:20px;border-radius:16px;text-align:center;z-index:3;font-size:20px;line-height:1.8}
.game-home .quick-start{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:22px}
.game-home .quick-start a{display:block;text-decoration:none;padding:24px;border:1px solid #30495d;border-radius:16px;background:linear-gradient(145deg,#173143,#0c1928)}
.game-home .quick-start strong{display:block;font-size:21px;color:#edf5ff;margin:10px 0}
.game-home .quick-start p{font-size:15px;line-height:1.85;color:#b3c4d7;margin:0}
.game-home .card,.game-home .quest,.game-home .arena{border-radius:16px}
@media(max-width:700px){.guide-grid,.game-home .quick-start{grid-template-columns:1fr}.game-3d .panel .keys{grid-template-columns:1fr}.game-3d .title{width:calc(100% - 95px)}.game-3d .objline{left:148px;transform:none;width:calc(100vw - 160px);padding:8px 10px;font-size:13px}.game-3d .direction-label{margin-left:auto}.game-3d .pill{padding:9px 10px}.game-3d .prog{font-size:14px}.game-3d{--stick-size:124px}}
@media(any-pointer:coarse){
  .game-2d .controlbox,.game-2d .sticksrow{display:contents}
  .game-2d .sticksrow>div{position:fixed;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:40;width:min(27vw,144px);margin:0}
  .game-2d .sticksrow>div:first-child{left:max(16px,env(safe-area-inset-left,0px))}.game-2d .sticksrow>div:last-child{right:max(16px,env(safe-area-inset-right,0px))}
  .game-2d .stick{max-width:none;width:100%;background:#0b2133f5}.game-2d .sticklb{font-size:12px;background:#071421f0;padding:3px;border-radius:6px;color:#bdd4e6;letter-spacing:0}
  .game-2d .actionrow{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(28px + env(safe-area-inset-bottom,0px));z-index:40;gap:8px;margin:0;width:auto}
  .game-2d .actionrow .btn{flex:none;padding:12px}
  .game-2d #game{padding-bottom:calc(220px + env(safe-area-inset-bottom,0px))}
  .game-2d.padon .sticksrow>div{display:none}.game-2d.padon #game{padding-bottom:100px}
}
@media(any-pointer:coarse) and (min-width:900px) and (orientation:landscape){
  .game-2d #game{max-width:none;padding:10px 16px 200px}.game-2d .gwrap{grid-template-columns:minmax(0,1fr) 310px;align-items:start}.game-2d .arena-wrap{height:calc(100dvh - 285px);max-height:none;width:auto;max-width:100%;aspect-ratio:1}
  .game-2d .side{max-height:calc(100dvh - 285px);overflow-y:auto;overscroll-behavior:contain}
}
@media(max-width:540px){.game-2d .actionrow{flex-direction:column;bottom:20px;gap:5px}.game-2d .actionrow .btn{font-size:13px;padding:8px;min-height:42px}.game-2d .card{padding:22px 18px}.game-3d .lvgrid{grid-template-columns:1fr 1fr}.game-3d .lvbtn{padding:12px;min-height:120px}}
@media(max-height:540px) and (orientation:landscape){.game-3d{--stick-size:104px}.game-3d .title{display:none}.game-3d .stat{padding:6px 9px;font-size:12px}.game-3d .prog,.game-3d.touchmode .prog{width:min(460px,calc(100vw - 290px));bottom:18px;font-size:13px}.game-3d .objline{font-size:12px;padding:8px}.game-3d .stick .tag{font-size:12px}.game-3d #disarmBtn{bottom:110px;width:54px;height:54px}}
@media(any-pointer:coarse) and (max-height:540px) and (orientation:landscape){
  .game-2d #game{max-width:none;padding:8px 128px 70px}
  .game-2d .topbar{margin-inline:-116px;gap:8px;padding:8px 10px;margin-bottom:8px}
  .game-2d .topbar .btn{padding:8px 12px;font-size:13px}.game-2d .topbar .mtitle{font-size:14px}.game-2d .topbar .msub{display:none}
  .game-2d .gwrap{grid-template-columns:minmax(0,1fr) minmax(180px,240px);align-items:start;gap:12px}
  .game-2d .arena-wrap{width:auto;max-width:100%;height:calc(100dvh - 150px);max-height:none}
  .game-2d .side{max-height:calc(100dvh - 150px);overflow-y:auto;overscroll-behavior:contain;gap:8px}
  .game-2d .panelbox{padding:10px}.game-2d .mission-banner{left:5px;right:5px;bottom:5px;padding:6px 8px;font-size:12px}
  .game-2d .mission-banner small{font-size:10px}.game-2d .mission-meter{height:4px;margin-top:5px}
  .game-2d .sticksrow>div{width:104px;bottom:12px}.game-2d .sticklb{font-size:10px}
  .game-2d .actionrow{bottom:10px}.game-2d .actionrow .btn{padding:8px 12px;font-size:12px}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
