/* Master Pass: compact space arcade, with readable live learning surfaces. */
:root{color-scheme:dark;--bg:#050c20;--panel:#0c1b3b;--line:#34588b;--muted:#bbcae8;--lime:#ffdc70;--cyan:#8fe7ff;--gold:#ffdc70;--red:#ff697f}
body{background:radial-gradient(ellipse at 85% 4%,#281d5855,transparent 42%),radial-gradient(circle at 5% 50%,#07396533,transparent 40%),#050c20;color:#edf4ff;font-family:Tahoma,Arial,sans-serif;font-size:16px;overflow-x:clip}
body:before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:radial-gradient(#bceaff88 1px,transparent 1px),radial-gradient(#a68cff77 1px,transparent 1px);background-size:113px 151px,179px 197px;background-position:7px 11px,71px 63px;opacity:.55}
.app{max-width:1440px;padding:0 32px}.app>header{height:82px;border-bottom:1px solid #39649b;background:transparent}.brand{color:#edf4ff;font-weight:900}.brand b{color:#ffdc70}.brandmark{border-radius:4px;transform:none;background:#132b55;border:2px solid #6da8ec;color:#ffdc70;box-shadow:3px 3px 0 #010719}.brand small{color:#93caea;font-size:11px;letter-spacing:2px}.header-right{gap:14px}.language-picker select{min-height:44px;padding:8px;border:1px solid #6284bd;border-radius:5px;background:#102243;color:#eff6ff;font:inherit;max-width:145px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
a{color:#a2d8ff}.topline{margin:16px 0;font-size:14px}.eyebrow,.tile-kicker{color:#9ee5ff}.panel{background:linear-gradient(135deg,#102347,#0a1631);border:1px solid #426399;border-radius:8px;box-shadow:inset 0 0 0 4px #09152d,0 8px 24px #01041130}.micro,small,.footnote,.setting-note{color:#bacbe7}.tag{color:#d6e8ff;border-color:#426399}
.launch{position:relative;isolation:isolate;display:grid;grid-template-columns:1fr 1fr;min-height:350px;padding:34px 44px;overflow:hidden;background:#070e20 url('assets/space-hero.webp') center 48%/cover no-repeat;border:1px solid #5676ad;border-radius:10px;box-shadow:inset 0 0 0 5px #091526,0 12px 30px #030715}.launch:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#040b1eee 0%,#050e23a8 34%,transparent 64%)}.launch-copy{z-index:2;max-width:530px}.launch h1{font-size:clamp(36px,4.8vw,64px);line-height:1.1;letter-spacing:-1px;color:#f3f8ff;text-shadow:3px 3px 0 #16376c;margin:16px 0}.launch h1 em{color:#ffda66;font-style:normal;text-shadow:3px 3px 0 #674516}.launch-copy>p{color:#d6e6ff;font-size:16px;max-width:420px;margin:16px 0}.launch-meta{display:block;color:#c1d6f2;font-size:14px;margin-top:15px;max-width:420px}.launch-art{position:relative;min-height:260px}.launch-art .art-caption{position:absolute;right:5px;bottom:0;color:#a8d8ff;letter-spacing:3px;font-size:11px}.floating-hanzi{position:absolute;display:grid;place-items:center;width:62px;height:72px;background:#132345df;border:2px solid #aab1ff;color:#f6eeff;box-shadow:0 0 18px #7053dd88,4px 4px 0 #050d20;font-size:40px;border-radius:6px;transform:rotate(8deg);animation:float-card 6s ease-in-out infinite;pointer-events:none}.hanzi-one{left:5%;top:15px}.hanzi-two{right:8%;bottom:40px;animation-delay:-3s;width:48px;height:54px;font-size:30px;border-color:#ffd27d}
button{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #bff3ff;outline-offset:4px}.primary,#open-bubbles{background:linear-gradient(#ffe78f,#ffce50);color:#191328;border:2px solid #fff1b8;border-radius:5px;box-shadow:3px 4px 0 #826327,0 0 0 2px #30263d;min-height:48px;font-weight:800;font-size:17px;padding:12px 24px;transition:transform .12s,box-shadow .12s}.primary:hover,#open-bubbles:hover{background:#ffe998;box-shadow:3px 4px 0 #826327,0 0 25px #ffdc7033;transform:translateY(-2px)}button:active,.primary:active{transform:translateY(2px) scale(.985)}button:disabled{cursor:default;opacity:.6}.secondary,.next,.icon,.text-button,.listen{background:#122b52;color:#edf4ff;border:1px solid #648dcb;border-radius:5px;min-height:44px;font-size:14px}.icon,.text-button{background:transparent}.text-button{padding:8px 12px}.listen{font-weight:bold;padding:10px 20px;border-color:#90d8ff}.listen:hover{background:#194273}
.mode-lobby{margin:24px 0}.lobby-heading{align-items:center;gap:12px;margin-bottom:16px}.lobby-heading h2{font-size:25px;margin:0;color:#f0f5ff}.mode-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.mode-tile{position:relative;text-align:left;display:flex;flex-direction:column;gap:12px;min-height:194px;padding:21px;background:linear-gradient(150deg,#172953,#0c1834);border:1px solid #4d70aa;border-radius:6px;box-shadow:inset 0 4px 0 #76b9ff,3px 4px 0 #020817;transition:transform .15s,border-color .15s,box-shadow .15s;color:#f0f6ff}.mode-tile:nth-child(3n+1){box-shadow:inset 0 4px 0 #c294ff,3px 4px 0 #020817}.mode-tile:nth-child(3n+2){box-shadow:inset 0 4px 0 #ffce65,3px 4px 0 #020817}.mode-tile:hover{transform:translateY(-3px);border-color:#a6daff;background:linear-gradient(150deg,#233c70,#101f40);box-shadow:inset 0 4px 0 #a4edff,0 8px 25px #3277db30}.mode-tile strong,.mode-tile h3{font-size:21px;line-height:1.4;margin:0;color:#f3f6ff}.mode-tile>span:not(.tile-kicker):not(.eyebrow),.mode-tile p{font-size:14px;line-height:1.6;color:#bfcee8;margin:0}.mode-tile>b,.mode-tile>span:last-child{margin-top:auto;color:#ffde7c}.mode-tile .tile-kicker,.mode-tile .eyebrow{font-size:11px;letter-spacing:1px;color:#a3cff4}
.learning{background:#0b1a37;color:#e8f2ff;border-color:#375d97}.learning strong{color:#ffd975}.learning progress{accent-color:#63e8c2}.learning button{color:#d5eaff;border-color:#648dcb;background:#14294b}.learning small{font-size:14px;line-height:1.6}.chapter{background:#14254a;border-color:#507bb5;color:#dfeeff;border-radius:5px}.chapter.selected{background:#293860;border-color:#ffdc70}.chapter.completed{border-color:#6bd9b8}.chapter small{color:#c4d9ef}.journey h2{color:#f3f6ff}
.workspace{grid-template-columns:minmax(0,1fr) 290px;align-items:start}.arena{background:#0a1834;border-color:#5987bf;border-radius:8px;overflow:hidden;box-shadow:inset 0 0 0 3px #081127}.hud{background:#0d2040;border-color:#355c91;padding:16px 22px}.hud small{font-size:13px;color:#b9ceec}.hud strong{color:#ffe08a}.question{position:relative;text-align:center;padding:22px 18px;min-height:154px;background:linear-gradient(125deg,#12305b,#152448);border-block:1px solid #4e83ba}.target-caption{display:block;color:#8ddfff;font-size:12px;font-weight:bold;letter-spacing:1.5px;margin-bottom:10px}.question .eyebrow{font-size:14px;color:#e0ecff;letter-spacing:0}.question h1{font-size:clamp(26px,3.5vw,38px);color:#fff8d9;line-height:1.45;margin:10px 0 4px;overflow-wrap:anywhere}.question .prompt-pinyin{color:#b4eaff;font-size:18px;margin:4px 0 12px;line-height:1.5;overflow-wrap:anywhere}.question[data-audio=listening]{box-shadow:inset 0 0 0 2px #8de7ff;animation:listen-glow 1s ease-in-out infinite}.question[data-audio=error]{border-color:#ff919e}
.field{background-color:#08172e;background-image:radial-gradient(#3c5a7b 1px,transparent 1px);background-size:24px 24px}.targets{gap:14px;padding:20px}.target,.boss-question-card{background:linear-gradient(145deg,#173963,#15264a);border:2px solid #659bd1;border-radius:7px;box-shadow:0 4px 0 #030b1d;color:#f2f6ff;min-height:100px;padding:16px 14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;white-space:normal;overflow-wrap:anywhere;line-height:1.45}.target:hover:not(:disabled){background:#214c7b;border-color:#b0efff}.target .hanzi{color:#f8f9ff;font-size:30px}.target .key{color:#a9bddf}.target .meaning{font-size:22px}.target .pinyin,.match-card .pinyin{font-size:16px;color:#b9eaff;line-height:1.4;overflow-wrap:anywhere}.no-pinyin .pinyin{display:none}.target.correct,.target.correct:disabled{background:#164d49;border-color:#9af5d2;opacity:1;box-shadow:0 0 20px #70e9bc33}.target.wrong,.target.wrong:disabled{background:#63213c;border-color:#ffa4b7;opacity:1}.target:disabled:not(.correct):not(.wrong){opacity:.65}.match-card{background:#142c4f;border:1px solid #6e9dc9;color:#f0f5ff;border-radius:6px;min-height:90px}.match-card.selected{border-color:#ffdb70;background:#354262}.match-card.matched{background:#164d49;color:#c0ffde}.bottom,.arena-foot{background:#0c1e3b;border-color:#355b8e;color:#dae6f7}.bottom{min-height:76px;padding:16px 22px}#feedback{font-size:16px;line-height:1.65;color:#dde9ff}.arena-foot{flex-wrap:wrap;gap:10px;font-size:14px}.arena-foot button{font-size:14px}.overdrive-panel{background:#182346;color:#ffe190;border-color:#526799}.overdrive-panel span{color:#dfd1ff;font-size:14px}.boss-panel{background:#172342;border-color:#6e79ab}.boss-panel strong{color:#ffe190}.boss-panel span{color:#cce1ff}.boss-panel.hit{animation:boss-hit .28s ease-out}.boss-panel.attack{animation:wrong-flash .24s ease-out}
.settings{background:#0e1f3c}.settings summary{color:#ffe391;font-size:16px}.settings select,.settings input{background:#09152d;color:#f3f6ff;border:1px solid #6486b7}.settings .toggle{color:#eef5ff}.settings small{color:#b8cce9}.settings #change-player-name{min-height:44px;border:1px solid #6a9acf;background:#172e56;color:#eaf5ff;border-radius:5px;padding:10px 14px}.mission{background:linear-gradient(135deg,#182344,#1c1f40)}.mission h2{color:#ecf1ff}.mission h2 em{color:#ffdc70}.mission p,.mission .legend{color:#c5d4f0}.mission-rule{background:#526899}.footnote{font-size:14px;line-height:1.7}.results h2,.leaderboard h2{color:#f5f6ff}.stats>div{background:#132649;border-color:#526ca5}.stats strong{color:#ffe391}.review-item,.learning-word{border-color:#365b8b;background:#102142;color:#eaf4ff}.review-item span,.review-item small,.learning-word span{color:#bbd5ee}.board-filters select{background:#112649;color:#eaf4ff;border-color:#6381b4}th,td{border-color:#365786;color:#e5efff}footer{border-color:#2b4979;color:#aebfdf}
#sentence-dialog,#combat,#exit-dialog,#player-name-dialog,#howto-dialog{background:#09162e;color:#eff5ff;border:2px solid #668ec2;border-radius:9px;box-shadow:0 0 0 5px #060d20,0 24px 80px #0009;max-width:calc(100vw - 24px)}dialog::backdrop{background:#010714dd}#sentence-dialog{width:min(920px,calc(100% - 24px));padding:28px}#sentence-dialog .sentence-context{background:#1d3258;color:#ecf3ff;border-color:#ffdb77}#sentence-dialog .sentence-options button{background:#14345a;color:#f0f5ff;border:2px solid #679cca;border-radius:6px;min-height:92px;display:flex;flex-direction:column;justify-content:center;gap:8px;padding:16px;font-size:23px;line-height:1.5;overflow-wrap:anywhere}#sentence-dialog .sentence-options button:hover{border-color:#bbf3ff;background:#214572}.sentence-zh{color:#f8f9ff;font-size:clamp(27px,4vw,40px);line-height:1.5;overflow-wrap:anywhere}.sentence-py,.sentence-option-py{display:block;font-size:17px;line-height:1.5;color:#b3e5ff;overflow-wrap:anywhere}.sentence-context{font-size:17px}.sentence-explanation,.sentence-english{color:#c2d8f1}.sentence-review{background:#122a4b;border-color:#5078ad}.sentence-actions button{min-height:46px;background:#183660;color:#eff6ff;border:1px solid #6b9cca}#sentence-close{position:sticky;top:0;float:right;min-height:44px;background:#662a46;color:#fff0f4;border:1px solid #ff9ab7;z-index:3}
#combat{width:min(1140px,calc(100% - 24px));padding:20px}.combat-head{background:#0b1932;border-color:#395d8e;height:auto}.combat-head strong{color:#ffe396}.phase-guide{background:#1a3157;color:#d2e9ff;border-color:#5279a5}.encounter-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:22px}.combat-main{min-width:0}.combat-main h1{font-size:32px;line-height:1.5;color:#fff0b6;margin:10px 0}.combat-main h2{color:#ebf2ff;font-size:22px}.combat-main p{color:#c9daf1;line-height:1.6}.combat-pinyin{display:block;font-size:18px!important;line-height:1.5;color:#b7e9ff!important;font-style:normal;overflow-wrap:anywhere}.combat-answers button{min-height:90px;background:#19365a;border:2px solid #79a2d2;color:#f7faff;border-radius:6px;display:flex;flex-direction:column;gap:8px;font-size:23px;white-space:normal;overflow-wrap:anywhere}.combat-answers button:hover{background:#254b75;border-color:#beeeff}.combat-hud{background:#112343;border:1px solid #5779a8;color:#d9e9ff;padding:12px;gap:12px}.combat-hud span{font-size:14px}.combat-hud b{color:#ffdf83}.combat-option,.combat-perks button{background:#142d4f;color:#edf4ff;border-color:#597caa}.combat-option select{background:#102443;color:#edf4ff}.boss-scene{background:radial-gradient(ellipse,#26356288,transparent 70%);min-height:240px;border-color:#405f99}.boss-scene img{max-height:250px;width:100%;object-fit:contain;animation:boss-float 4s ease-in-out infinite}.boss-scene.charging img{filter:drop-shadow(0 0 18px #917cff);animation:charge .5s ease-in-out infinite alternate}.boss-scene.hurt img{animation:boss-hit .3s ease-out;filter:brightness(1.5)}.boss-scene.danger img{filter:drop-shadow(0 0 10px #ff996b)}.boss-scene.defeated img{animation:boss-defeat .6s ease-out both}.boss-scene.guard img{animation:wrong-flash .2s ease-out}.boss-state{color:#ffde82}.combat-lanes button,.lane{background:#182d51;color:#e8f2ff;border:1px solid #648ac0}.combat-lanes .danger,.lane.danger{background:#692940;border-color:#ff88ab}.combat-lanes .selected,.lane.selected{background:#214a65;border-color:#a2f1df}.spell-slots{color:#ffdc70}.combat-main .target-caption{font-size:13px;color:#96e0ff}
#howto-dialog{padding:28px;width:min(580px,calc(100% - 24px));position:relative}#howto-dialog h2{font-size:25px;color:#fff1b2}.tutorial-options{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:22px 0}.tutorial-options button{min-height:88px;display:flex;flex-direction:column;justify-content:center;gap:6px;background:#19345e;color:#eff8ff;border:2px solid #76a3d8;border-radius:6px;font-size:22px}.tutorial-options .pinyin{color:#b0e3ff;font-size:15px}.tutorial-close{float:right;background:transparent;color:#eaf5ff;width:44px;height:44px}.tutorial-armor{padding:15px;background:#162e51;border:1px solid #7896c8;color:#d9eeff}.bubble-cover{background:#07152ef5}.bubble-cover h2{color:#ffe08e}#endless-coverage{padding-inline:20px;color:#c6dfff}#bubble-status{background:#102548;color:#c6e5ff}.bubble-mode .word-bubble .pinyin{font-size:14px;color:#e6efff}
body.playing .workspace{display:block;max-width:960px;margin:18px auto}body.playing .workspace>aside{display:none}body.playing .arena{width:100%}body.playing .arena .question{scroll-margin-top:70px}body.playing #exit:not([hidden]){background:#592541;border:2px solid #ffafc1;color:#fff6f8;min-height:48px}body.playing .learning,body.playing #journey{display:none}
@keyframes float-card{50%{translate:0 -9px;rotate:-4deg}}@keyframes listen-glow{50%{box-shadow:inset 0 0 0 2px #8de7ff,0 0 20px #68d2ff44}}@keyframes boss-float{50%{transform:translateY(-7px)}}@keyframes boss-hit{30%{transform:translateX(8px) rotate(2deg);filter:brightness(1.8)}70%{transform:translateX(-4px)}}@keyframes boss-defeat{to{transform:translateY(16px) scale(.9);opacity:.5;filter:grayscale(.8)}}@keyframes wrong-flash{50%{filter:brightness(1.4);transform:translateX(-3px)}}@keyframes charge{to{filter:drop-shadow(0 0 24px #b593ff) brightness(1.2)}}
@media(min-width:1100px){.launch{height:365px}.launch-art{height:290px}.mode-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1000px){.app{padding:0 22px}.workspace{grid-template-columns:minmax(0,1fr) 250px}.mode-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.launch{padding:30px;min-height:320px}.launch h1{font-size:44px}.encounter-layout{grid-template-columns:180px minmax(0,1fr)}.boss-scene{min-height:190px}.boss-scene img{max-height:200px}}
@media(max-width:760px){.app{padding:0 14px}.app>header{height:76px}.brand{font-size:17px;gap:8px}.brand small{font-size:9px;letter-spacing:.8px}.brandmark{width:36px;height:40px;font-size:25px}.header-right{gap:6px}.header-right .tag{display:none}.header-right .icon{font-size:12px;padding:5px}.language-picker select{max-width:110px;font-size:13px}.topline{font-size:12px;gap:8px}.topline .eyebrow{font-size:10px;letter-spacing:1px}.launch{padding:24px;min-height:290px;grid-template-columns:1fr .6fr;background-position:60% center}.launch h1{font-size:36px}.launch-copy>p{font-size:14px;max-width:250px}.launch-copy .eyebrow{font-size:10px;letter-spacing:1px}.launch-meta{font-size:12px}.launch:before{background:linear-gradient(90deg,#050c21ed 0%,#07102ad1 40%,#06122a22 100%)}.launch-art{min-height:230px}.launch-art .art-caption{display:none}.floating-hanzi{width:40px;height:46px;font-size:28px}.hanzi-one{left:20%;top:2px}.hanzi-two{right:0;bottom:12px}.primary,#open-bubbles{font-size:15px;padding:11px 16px;gap:12px}.mode-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.mode-tile{min-height:175px;padding:17px;gap:9px}.mode-tile strong,.mode-tile h3{font-size:19px}.mode-tile .tile-kicker,.mode-tile .eyebrow{font-size:10px;letter-spacing:.3px}.lobby-heading h2{font-size:22px}.lobby-heading .text-button{font-size:12px;max-width:145px;white-space:normal}.workspace{grid-template-columns:1fr}.workspace>aside{margin-top:20px}.learning{padding:20px}.learning strong{font-size:25px}.targets{padding:14px;gap:12px}.target{min-height:94px;padding:12px}.target .meaning{font-size:19px}.target .hanzi{font-size:28px}.target .pinyin{font-size:16px}.question{min-height:140px;padding:18px 14px}.hud{padding:14px 16px}.hud strong{font-size:21px}.overdrive-panel{padding:10px 16px}.overdrive-panel span{font-size:13px;line-height:1.5}.bottom{padding:14px}#feedback{font-size:15px}.encounter-layout{display:flex;flex-direction:column}.combat-main{order:0}.boss-scene{order:1;min-height:150px;max-height:195px}.boss-scene img{max-height:160px;width:auto;max-width:100%}.combat-head{flex-wrap:wrap;gap:8px}.combat-head strong{font-size:16px}.combat-head button{min-height:42px;padding:7px 10px}.combat-hud{display:flex;flex-wrap:wrap;gap:12px}.combat-answers{gap:12px}.combat-answers button{font-size:22px;min-height:100px}.combat-main h1{font-size:29px}.combat-main h2{font-size:20px}.phase-guide{font-size:14px}.sentence-hud{font-size:14px}.sentence-options{gap:12px}.sentence-py,.sentence-option-py{font-size:16px}#sentence-dialog{padding:20px}#combat{padding:14px}.sentence-context{font-size:16px}#sentence-dialog .sentence-options button{font-size:21px;padding:12px}.board-filters{flex-wrap:wrap}.board-filters label{min-width:130px}.launch-art .floating-hanzi{animation:none}.boss-scene img{animation:none}}
@media(max-width:380px){.app{padding:0 10px}.brand small{display:none}.brand{font-size:14px}.header-right .icon{max-width:60px;font-size:11px}.language-picker select{max-width:86px}.launch{padding:19px;min-height:280px;grid-template-columns:1fr .3fr}.launch h1{font-size:32px}.launch-art .floating-hanzi{display:none}.mode-tile{padding:14px}.mode-tile strong,.mode-tile h3{font-size:17px}.mode-tile>span:not(.tile-kicker):not(.eyebrow),.mode-tile p{font-size:14px}.target .meaning{font-size:17px}.combat-answers,.sentence-options{grid-template-columns:1fr!important}.tutorial-options{gap:7px}.tutorial-options button{font-size:19px}.header-right{gap:4px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.floating-hanzi{transform:rotate(5deg)}.boss-scene.defeated img{opacity:.6}}

.boss-scene.armor-break img{filter:drop-shadow(0 0 22px #ffda75) brightness(1.3);animation:boss-hit .45s ease-out}.boss-scene.attack img{animation:boss-hit .25s ease-out}.combat-main .combat-hud{border-left:3px solid #ffcd70}.boss-panel progress{accent-color:#b896ff}.boss-panel #boss-health{font-size:14px;max-width:140px;white-space:normal}.boss-panel img{max-height:90px;object-fit:contain}.prompt-pinyin,.sentence-option-py{font-family:Arial,Tahoma,sans-serif}.target>span,.match-card>span{max-width:100%}

.brand,.art-caption,.tile-kicker{font-family:ui-monospace,'Courier New',Tahoma,monospace}.combat-lane{background:#152b4d;color:#edf6ff;border-color:#6d8abb}.combat-lane.occupied{background:#174b59;border-color:#9beadb}.combat-lane.danger{background:#752443;border-color:#ff96b5}.combat-lane small{color:#d4e5ff}.combat-perks button span{color:#c9dafa}body.playing .question h1{max-width:100%}
