:root,[data-theme=playful]{--bg-canvas:#f9f7f0;--bg-surface:#fefdfb;--bg-subtle:#f2ede3;--bg-elevated:#fff;--text-primary:#1c2a36;--text-secondary:#516270;--text-muted:#768693;--border-subtle:#e2dbd0;--border-strong:#cdc2b1;--accent-primary:#e45225;--accent-primary-hover:#d34317;--accent-primary-fg:#fff;--accent-jade:#1e8f75;--accent-jade-soft:#ddf3ee;--accent-amber:#dd8d0e;--accent-amber-soft:#faeed6;--accent-coral-soft:#fbe6e0;--accent-slate-soft:#e2e9ee;--status-success:#1f8e5e;--status-success-bg:#e0f5ec;--status-error:#d52c20;--status-error-bg:#fae6e5;--font-display:"Nunito", "Plus Jakarta Sans", system-ui, sans-serif;--font-sans:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--font-hanzi:"Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--radius-sm:10px;--radius-md:16px;--radius-lg:22px;--shadow-card:0 2px 6px #4232240d, 0 4px 0 #e4ddd2;--shadow-hover:0 8px 20px #42322417, 0 4px 0 #d8cec0;--btn-bevel:0 3px 0 #952e0f73}[data-theme=studio-light]{--bg-canvas:#f7f5f3;--bg-surface:#fff;--bg-subtle:#eeebe7;--bg-elevated:#fff;--text-primary:#1a242e;--text-secondary:#4f5c69;--text-muted:#73808c;--border-subtle:#d9dee2;--border-strong:#b9c2ca;--accent-primary:#1d7c66;--accent-primary-hover:#166a56;--accent-primary-fg:#fff;--accent-jade:#1d7c66;--accent-jade-soft:#e3f2ef;--accent-amber:#d16f1a;--accent-amber-soft:#f8ecdd;--accent-coral-soft:#f8e8e3;--accent-slate-soft:#e7ebef;--status-success:#1f8458;--status-success-bg:#e1f4ec;--status-error:#c72e23;--status-error-bg:#f9e7e6;--font-display:"Plus Jakarta Sans", system-ui, sans-serif;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-card:0 1px 3px #181f250d, 0 6px 16px #181f250a;--shadow-hover:0 10px 24px #181f2517;--btn-bevel:none}[data-theme=studio-dark]{--bg-canvas:#131a20;--bg-surface:#1d252b;--bg-subtle:#283239;--bg-elevated:#232c34;--text-primary:#f5f3ef;--text-secondary:#afb9c0;--text-muted:#84909a;--border-subtle:#323c43;--border-strong:#45535e;--accent-primary:#ed9c2c;--accent-primary-hover:#f3a83f;--accent-primary-fg:#121a21;--accent-jade:#36bf9a;--accent-jade-soft:#33a38529;--accent-amber:#ed9c2c;--accent-amber-soft:#ed9c2c29;--accent-coral-soft:#e2683c29;--accent-slate-soft:#819eb129;--status-success:#3ecc8e;--status-success-bg:#2ba16e2e;--status-error:#eb6a5c;--status-error-bg:#d532202e;--font-display:"Plus Jakarta Sans", system-ui, sans-serif;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-card:0 4px 16px #060a0e59;--shadow-hover:0 10px 28px #060a0e80;--btn-bevel:none}*,:before,:after{box-sizing:border-box}html,body{background-color:var(--bg-canvas);max-width:100%;color:var(--text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-size:16px;line-height:1.55;transition:background-color .22s,color .22s;overflow-x:hidden}input,select,textarea{font-size:1rem}.hanzi-text{font-family:var(--font-hanzi);letter-spacing:.03em}.app-shell{flex-direction:column;max-width:100vw;min-height:100vh;display:flex;overflow-x:hidden}.topbar{z-index:30;background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);padding:.6rem 1rem;position:sticky;top:0}.topbar-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;max-width:1220px;margin:0 auto;display:flex}.brand-btn{min-height:44px;color:var(--text-primary);cursor:pointer;text-align:left;touch-action:manipulation;background:0 0;border:none;align-items:center;gap:.65rem;padding:0;display:inline-flex}.brand-avatar{object-fit:cover;border:1px solid var(--border-strong);border-radius:50%;width:40px;height:40px}.brand-title{font-family:var(--font-display);letter-spacing:-.02em;font-size:1.12rem;font-weight:800;line-height:1.15}.brand-sub{color:var(--text-muted);font-size:.74rem;font-weight:500;display:block}.controls-cluster{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.segmented-toggle{background:var(--bg-subtle);border-radius:var(--radius-sm);border:1px solid var(--border-subtle);align-items:center;padding:2px;display:inline-flex}.segmented-btn{min-width:44px;min-height:44px;color:var(--text-secondary);font-family:var(--font-sans);border-radius:calc(var(--radius-sm) - 3px);cursor:pointer;touch-action:manipulation;background:0 0;border:none;justify-content:center;align-items:center;padding:.36rem .68rem;font-size:.82rem;font-weight:700;transition:all .16s;display:inline-flex}.segmented-btn.active{background:var(--bg-surface);color:var(--text-primary);box-shadow:0 1px 3px #00000014}.stat-chip{border-radius:var(--radius-sm);background:var(--bg-subtle);color:var(--text-primary);align-items:center;gap:.35rem;padding:.36rem .7rem;font-size:.82rem;font-weight:700;display:inline-flex}.main-container{flex:1;width:100%;max-width:1180px;margin:0 auto;padding:1.5rem 1.25rem 3.5rem}.hub-hero{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);grid-template-columns:1fr auto;align-items:center;gap:1.5rem;margin-bottom:1.4rem;padding:1.6rem 1.75rem;display:grid}.hub-hero h1{font-family:var(--font-display);letter-spacing:-.025em;margin:0 0 .5rem;font-size:clamp(1.45rem,2.5vw,2rem);font-weight:800;line-height:1.22}.hub-hero p{color:var(--text-secondary);max-width:64ch;margin:0 0 1.1rem;font-size:.96rem}.hero-artwork{border-radius:var(--radius-md);object-fit:cover;border:1px solid var(--border-subtle);width:132px;height:132px}.persona-strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin-bottom:1.6rem;display:grid}.persona-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);text-align:left;cursor:pointer;color:var(--text-primary);padding:.9rem 1rem;transition:transform .16s,box-shadow .16s,background-color .16s}.persona-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.persona-card.selected{background:var(--accent-amber-soft);border-color:var(--border-strong)}.persona-top{justify-content:space-between;align-items:center;gap:.4rem;margin-bottom:.3rem;display:flex}.persona-name{font-family:var(--font-display);font-size:.95rem;font-weight:700}.persona-age{background:var(--bg-subtle);color:var(--text-secondary);border-radius:999px;padding:.12rem .48rem;font-size:.75rem;font-weight:600}.persona-std{color:var(--text-secondary);font-size:.79rem;display:block}.section-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.95rem;display:flex}.section-header h2{font-family:var(--font-display);letter-spacing:-.015em;margin:0;font-size:1.25rem;font-weight:800}.subapps-grid{grid-template-columns:repeat(auto-fill,minmax(265px,1fr));gap:1rem;display:grid}.subapp-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-card);text-align:left;cursor:pointer;color:var(--text-primary);flex-direction:column;justify-content:space-between;gap:.85rem;padding:1.15rem 1.2rem;transition:transform .16s,box-shadow .16s;display:flex}.subapp-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-3px)}.subapp-card-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.subapp-num{font-family:var(--font-display);border-radius:var(--radius-sm);padding:.22rem .55rem;font-size:.82rem;font-weight:800}.hue-coral{background:var(--accent-coral-soft);color:var(--accent-primary)}.hue-jade{background:var(--accent-jade-soft);color:var(--accent-jade)}.hue-amber{background:var(--accent-amber-soft);color:var(--accent-amber)}.hue-slate{background:var(--accent-slate-soft);color:var(--text-secondary)}.subapp-skill-tag{color:var(--text-muted);font-size:.76rem;font-weight:600}.subapp-title{font-family:var(--font-display);letter-spacing:-.01em;margin:.25rem 0 .35rem;font-size:1.06rem;font-weight:800}.subapp-desc{color:var(--text-secondary);margin:0;font-size:.86rem}.subapp-foot{border-top:1px solid var(--border-subtle);color:var(--text-muted);justify-content:space-between;align-items:center;padding-top:.65rem;font-size:.77rem;display:flex}.play-link{color:var(--accent-primary);font-weight:700}.game-stage{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:1.4rem 1.5rem}.game-header{border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.25rem;padding-bottom:1rem;display:flex}.game-header-left{align-items:center;gap:.75rem;display:flex}.game-header h1{font-family:var(--font-display);letter-spacing:-.015em;margin:0;font-size:1.28rem;font-weight:800}.btn{font-family:var(--font-sans);border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:.45rem;padding:.58rem 1.05rem;font-size:.9rem;font-weight:700;transition:transform .12s,background-color .15s,opacity .15s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent-primary);color:var(--accent-primary-fg);box-shadow:var(--btn-bevel)}.btn-primary:hover:not(:disabled){background:var(--accent-primary-hover)}.btn-secondary{background:var(--bg-subtle);color:var(--text-primary);border-color:var(--border-subtle)}.btn-secondary:hover:not(:disabled){background:var(--border-subtle)}.btn-ghost{color:var(--text-secondary);border-color:var(--border-subtle);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--bg-subtle);color:var(--text-primary)}.choices-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.75rem;display:grid}.choice-btn{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-md);text-align:left;color:var(--text-primary);font-family:var(--font-sans);cursor:pointer;padding:.9rem 1rem;font-size:.95rem;font-weight:600;transition:transform .12s,background-color .15s}.choice-btn:hover:not(:disabled){background:var(--bg-subtle);transform:translateY(-2px)}.choice-btn.correct{background:var(--status-success-bg);color:var(--status-success);border-color:var(--status-success)}.choice-btn.wrong{background:var(--status-error-bg);color:var(--status-error);border-color:var(--status-error)}.feedback-banner{border-radius:var(--radius-md);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-top:1rem;padding:.9rem 1.1rem;font-size:.92rem;display:flex}.feedback-banner.success{background:var(--status-success-bg);color:var(--status-success)}.feedback-banner.error{background:var(--status-error-bg);color:var(--status-error)}.feedback-banner.neutral{background:var(--bg-subtle);color:var(--text-primary)}.match-board{grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:.75rem;display:grid}.match-tile{border-radius:var(--radius-md);border:1px solid var(--border-strong);background:var(--bg-elevated);min-height:92px;color:var(--text-primary);text-align:center;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;padding:.75rem;font-weight:700;transition:transform .14s,background-color .15s,opacity .2s;display:flex}.match-tile.selected{background:var(--accent-amber-soft);transform:scale(1.02)}.match-tile.cleared{opacity:.28;pointer-events:none}.sentence-slot{border-radius:var(--radius-md);background:var(--bg-subtle);border:1px dashed var(--border-strong);flex-wrap:wrap;align-items:center;gap:.5rem;min-height:68px;margin-bottom:1rem;padding:.8rem;display:flex}.word-chip{border-radius:var(--radius-sm);background:var(--bg-elevated);border:1px solid var(--border-strong);color:var(--text-primary);cursor:pointer;flex-direction:column;align-items:center;padding:.45rem .85rem;font-size:.96rem;font-weight:700;display:inline-flex}.word-chip small{color:var(--text-muted);font-size:.75rem;font-weight:500}.story-token{cursor:pointer;border-radius:6px;margin:.12rem .1rem;padding:.18rem .34rem;font-size:1.12rem;transition:background-color .14s;display:inline-block}.story-token:hover,.story-token.active{background:var(--accent-amber-soft)}.hp-track{background:var(--bg-subtle);border:1px solid var(--border-subtle);border-radius:999px;width:100%;height:12px;overflow:hidden}.hp-fill{height:100%;transition:width .28s}.hp-hero{background:var(--accent-jade)}.hp-boss{background:var(--accent-primary)}@media (width<=900px){.persona-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.hub-hero{grid-template-columns:1fr}.hero-artwork{display:none}}@media (width<=560px){.persona-strip{grid-template-columns:1fr}.game-stage{padding:1rem}}.tg-stage{--tg-board-max:min(100%, 540px, calc(100dvh - 210px));width:100%;max-width:100%;position:relative;overflow-x:clip}.tg-stage *,.tg-stage :before,.tg-stage :after{box-sizing:border-box}.tg-stage button.btn,.tg-stage .segmented-btn,.tg-stage .choice-btn,.tg-stage .tg-pad-btn,.tg-stage .tg-col-drop-btn,.tg-stage .tg-dpad-btn,.tg-stage .tg-numpad-btn,.tg-stage .tg-cheer-btn,.tg-stage select,.tg-stage input{touch-action:manipulation;min-height:44px}.tg-stage .segmented-toggle{flex-wrap:wrap;gap:2px;max-width:100%}.tg-stage .segmented-btn{justify-content:center;align-items:center;gap:.35rem;display:inline-flex}.tg-stage select,.tg-stage input,.tg-stage textarea{font-size:max(16px,1rem)}.tg-select{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-surface);min-height:44px;color:var(--text-primary);font-family:var(--font-sans);cursor:pointer;max-width:100%;padding:.42rem .72rem;font-weight:700}.tg-split-layout{grid-template-columns:minmax(0,1fr);align-items:start;gap:1rem;display:grid}.tg-split-layout>*{min-width:0}.tg-board-wrap{flex-direction:column;justify-content:center;align-items:center;gap:.6rem;width:100%;min-width:0;display:flex}.tg-square-board{width:var(--tg-board-max);aspect-ratio:1;border-radius:var(--radius-md);border:2px solid var(--border-strong);max-width:100%;box-shadow:var(--shadow-card);-webkit-user-select:none;user-select:none}.tg-side-panel{flex-direction:column;gap:.75rem;min-width:0;display:flex}.tg-panel-card{background:var(--bg-subtle);border:1px solid var(--border-subtle);border-radius:var(--radius-md);min-width:0;padding:.8rem .95rem}.tg-toolbar-row{flex-wrap:wrap;align-items:center;gap:.5rem;min-width:0;display:flex}.tg-status-banner{border-radius:var(--radius-md);border:1.5px solid var(--border-strong);background:var(--bg-elevated);color:var(--text-primary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.68rem .9rem;font-size:.95rem;font-weight:700;display:flex}.tg-status-banner.is-check{background:var(--accent-coral-soft);border-color:var(--status-error);color:var(--status-error)}.tg-status-banner.is-victory{background:var(--status-success-bg);border-color:var(--status-success);color:var(--status-success)}.tg-status-banner.is-thinking{background:var(--accent-amber-soft);border-color:var(--accent-amber)}.tg-chess-board{width:var(--tg-board-max);aspect-ratio:1;border-radius:var(--radius-md);max-width:100%;box-shadow:var(--shadow-card);touch-action:none;-webkit-user-select:none;user-select:none;grid-template-rows:repeat(8,minmax(0,1fr));grid-template-columns:repeat(8,minmax(0,1fr));display:grid;overflow:hidden}.tg-chess-sq{cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;border:none;justify-content:center;align-items:center;width:100%;min-width:0;height:100%;min-height:0;margin:0;padding:0;transition:filter .12s;display:flex;position:relative}.tg-chess-sq:focus-visible{outline:3px solid var(--accent-primary);outline-offset:-3px;z-index:2}.tg-chess-sq.is-selected{filter:brightness(1.06);box-shadow:inset 0 0 0 3.5px #f59e0b}.tg-chess-sq.is-last-move{box-shadow:inset 0 0 0 2.5px #f59e0bb8}.tg-chess-sq.is-hint-sq{box-shadow:inset 0 0 0 3.5px #10b981}.tg-chess-sq.is-in-check{background-image:radial-gradient(circle,#ef4444c7 0%,#dc262661 62%,#0000 100%)}.tg-chess-sq.is-academy-target{box-shadow:inset 0 0 0 2.5px #10b981cc}.tg-piece-svg{pointer-events:none;filter:drop-shadow(0 2px 2px #0f172a52);width:80%;height:80%;transition:transform .12s}.tg-chess-sq.is-selected .tg-piece-svg{transform:scale(1.08)translateY(-1px)}.tg-move-dot{pointer-events:none;background:#10b981e0;border:2px solid #fff;border-radius:999px;width:30%;height:30%;box-shadow:0 1px 3px #00000059}.tg-move-dot.is-risky{background:#f59e0beb}.tg-capture-ring{pointer-events:none;border:3.5px solid #f59e0bf2;border-radius:999px;position:absolute;inset:7%;box-shadow:0 0 0 1.5px #ffffffd9}.tg-capture-ring.is-risky{border-color:#ef4444f2}.tg-risk-tag{pointer-events:none;font-size:.66rem;line-height:1;position:absolute;top:2px;right:2px}.tg-coord-rank{pointer-events:none;opacity:.88;font-size:.65rem;font-weight:800;line-height:1;position:absolute;top:2px;left:3px}.tg-coord-file{pointer-events:none;opacity:.88;font-size:.65rem;font-weight:800;line-height:1;position:absolute;bottom:2px;right:3px}.tg-move-log{border-radius:var(--radius-sm);background:var(--bg-surface);border:1px solid var(--border-subtle);flex-wrap:wrap;gap:.35rem;max-height:112px;padding:.45rem;font-size:.82rem;display:flex;overflow-y:auto}.tg-move-pill{background:var(--bg-subtle);color:var(--text-primary);border-radius:6px;padding:.16rem .45rem;font-weight:700}.tg-lesson-strip{grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:.5rem;display:grid}.tg-lesson-btn{text-align:left;border-radius:var(--radius-sm);border:1.5px solid var(--border-subtle);background:var(--bg-surface);color:var(--text-primary);cursor:pointer;min-height:48px;font-family:var(--font-sans);padding:.55rem .7rem}.tg-lesson-btn.active{border-color:var(--accent-primary);background:var(--accent-amber-soft)}.tg-lesson-btn.done{border-color:var(--status-success)}.tg-modal-backdrop{z-index:70;background:#0e151b99;justify-content:center;align-items:center;padding:.85rem;display:flex;position:fixed;inset:0}.tg-modal-card{background:var(--bg-surface);border:2px solid var(--border-strong);border-radius:var(--radius-lg);width:min(100%,440px);max-height:calc(100dvh - 1.7rem);box-shadow:var(--shadow-hover);padding:1.15rem;overflow-y:auto}.tg-promo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;margin-top:.85rem;display:grid}.tg-promo-btn{border-radius:var(--radius-md);border:2px solid var(--border-strong);background:var(--bg-elevated);min-height:58px;color:var(--text-primary);font-family:var(--font-display);cursor:pointer;justify-content:center;align-items:center;gap:.45rem;font-size:1.02rem;font-weight:800;display:flex}.tg-promo-btn:hover{border-color:var(--accent-primary);background:var(--accent-amber-soft)}.tg-c4-container{width:min(100%, calc((var(--tg-board-max) - 52px) * 7 / 6));flex-direction:column;gap:.4rem;display:flex}.tg-col-drop-row{grid-template-columns:repeat(7,minmax(0,1fr));gap:.25rem;display:grid}.tg-col-drop-btn{white-space:nowrap;border-radius:var(--radius-sm);border:1.5px solid var(--border-strong);background:var(--bg-elevated);min-height:44px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;gap:.12rem;padding:.15rem .12rem;font-size:.8rem;font-weight:800;display:inline-flex}.tg-col-drop-btn.is-hinted{border-color:var(--status-success);background:var(--status-success-bg)}.tg-col-drop-btn:disabled{opacity:.42;cursor:not-allowed}.tg-c4-grid{aspect-ratio:7/6;border-radius:var(--radius-md);width:100%;box-shadow:var(--shadow-card);background:#1e3a8a;border:3px solid #1e40af;grid-template-rows:repeat(6,minmax(0,1fr));grid-template-columns:repeat(7,minmax(0,1fr));gap:.32rem;padding:.5rem;display:grid}.tg-c4-cell{background:var(--bg-canvas);cursor:pointer;border:2px solid #0f172a59;border-radius:999px;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.tg-c4-cell.p1{background:radial-gradient(circle at 32% 30%,#fca5a5,#ef4444 62%,#b91c1c 100%);border-color:#fee2e2}.tg-c4-cell.p2{background:radial-gradient(circle at 32% 30%,#fde68a,#f59e0b 62%,#b45309 100%);border-color:#fef3c7}.tg-c4-cell.is-win{transform:scale(1.04);box-shadow:0 0 0 3.5px #10b981,0 0 12px #10b981e6}.tg-caro-scroll-frame{width:var(--tg-board-max);max-width:100%;max-height:var(--tg-board-max);border-radius:var(--radius-md);border:2px solid var(--border-strong);background:var(--bg-elevated);box-shadow:var(--shadow-card);overflow:auto}.tg-caro-grid{aspect-ratio:1;background:#fef3c7;grid-template-rows:repeat(11,minmax(0,1fr));grid-template-columns:repeat(11,minmax(0,1fr));width:100%;display:grid}.tg-caro-grid.is-zoomed{width:540px;min-width:540px;height:540px}.tg-caro-cell{cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;background:0 0;border:1px solid #b4530947;justify-content:center;align-items:center;min-width:0;min-height:0;margin:0;padding:0;font-size:clamp(.88rem,2.1vw,1.28rem);font-weight:900;display:flex}.tg-caro-cell.p1{color:#dc2626}.tg-caro-cell.p2{color:#0d9488}.tg-caro-cell.is-last{background:#f59e0b3d}.tg-caro-cell.is-aimed{background:#10b98147;box-shadow:inset 0 0 0 2px #059669}.tg-caro-cell.is-win{background:#10b98159;box-shadow:inset 0 0 0 2.5px #059669}.tg-brain-card{background:var(--bg-elevated);border:1.5px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);flex-direction:column;gap:.85rem;min-width:0;padding:1.1rem;display:flex}.tg-visual-clue{text-align:center;border-radius:var(--radius-md);background:var(--bg-subtle);border:1px dashed var(--border-strong);word-break:break-word;padding:.75rem;font-size:clamp(1.85rem,4.5vw,2.75rem);line-height:1.3}.tg-matrix-board{grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;width:min(100%,300px);margin:0 auto;display:grid}.tg-matrix-cell{aspect-ratio:1;border-radius:var(--radius-sm);border:1.5px solid var(--border-strong);background:var(--bg-surface);justify-content:center;align-items:center;font-size:clamp(1.15rem,2.8vw,1.6rem);font-weight:800;display:flex}.tg-matrix-cell.is-question{background:var(--accent-amber-soft);border-color:var(--accent-amber)}.tg-2048-board{width:var(--tg-board-max);aspect-ratio:1;border-radius:var(--radius-md);background:var(--bg-subtle);border:2px solid var(--border-strong);max-width:100%;box-shadow:var(--shadow-card);touch-action:none;-webkit-user-select:none;user-select:none;grid-template-rows:repeat(4,minmax(0,1fr));grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;padding:.55rem;display:grid}.tg-2048-tile{border-radius:var(--radius-sm);font-family:var(--font-display);background:var(--bg-surface);color:var(--text-muted);border:1px solid var(--border-subtle);justify-content:center;align-items:center;font-size:clamp(1.15rem,3.2vw,1.85rem);font-weight:900;transition:transform 90ms;display:flex}.tg-2048-tile.v-2{color:#78350f;background:#fef3c7}.tg-2048-tile.v-4{color:#78350f;background:#fde68a}.tg-2048-tile.v-8{color:#7c2d12;background:#fdba74}.tg-2048-tile.v-16{color:#fff;background:#fb923c}.tg-2048-tile.v-32{color:#fff;background:#f97316}.tg-2048-tile.v-64{color:#fff;background:#ef4444}.tg-2048-tile.v-128{color:#fff;background:#14b8a6;font-size:clamp(1rem,2.7vw,1.55rem)}.tg-2048-tile.v-256{color:#fff;background:#0d9488;font-size:clamp(1rem,2.7vw,1.55rem)}.tg-2048-tile.v-512{color:#1e293b;background:#eab308;font-size:clamp(1rem,2.7vw,1.55rem)}.tg-2048-tile.v-1024,.tg-2048-tile.v-2048{color:#fff;background:#6366f1;font-size:clamp(.92rem,2.3vw,1.35rem)}.tg-dpad{grid-template-rows:repeat(2,46px);grid-template-columns:repeat(3,52px);justify-content:center;gap:.35rem;display:grid}.tg-dpad-btn{border-radius:var(--radius-sm);border:1.5px solid var(--border-strong);background:var(--bg-elevated);color:var(--text-primary);cursor:pointer;font-size:1.15rem;font-weight:800}.tg-dpad-btn.is-hinted{border-color:var(--status-success);background:var(--status-success-bg)}.tg-sudoku-board{width:var(--tg-board-max);aspect-ratio:1;border:3px solid var(--text-primary);border-radius:var(--radius-sm);background:var(--bg-surface);max-width:100%;box-shadow:var(--shadow-card);display:grid;overflow:hidden}.tg-sudoku-board.size-4{grid-template-rows:repeat(4,minmax(0,1fr));grid-template-columns:repeat(4,minmax(0,1fr))}.tg-sudoku-board.size-6{grid-template-rows:repeat(6,minmax(0,1fr));grid-template-columns:repeat(6,minmax(0,1fr))}.tg-sudoku-cell{border:1px solid var(--border-strong);background:var(--bg-surface);min-width:0;min-height:0;color:var(--text-primary);font-family:var(--font-display);cursor:pointer;touch-action:manipulation;justify-content:center;align-items:center;margin:0;padding:0;font-size:clamp(1.05rem,2.8vw,1.65rem);font-weight:800;display:flex}.tg-sudoku-cell.box-right{border-right:2.5px solid var(--text-primary)}.tg-sudoku-cell.box-bottom{border-bottom:2.5px solid var(--text-primary)}.tg-sudoku-cell.is-given{background:var(--bg-subtle);color:var(--text-primary)}.tg-sudoku-cell.is-user{color:var(--accent-primary)}.tg-sudoku-cell.is-selected{background:var(--accent-amber-soft);box-shadow:inset 0 0 0 2.5px var(--accent-amber)}.tg-sudoku-cell.is-conflict{background:var(--status-error-bg);color:var(--status-error);box-shadow:inset 0 0 0 2px var(--status-error)}.tg-numpad{flex-wrap:wrap;gap:.45rem;display:flex}.tg-numpad-btn{border-radius:var(--radius-sm);border:1.5px solid var(--border-strong);background:var(--bg-elevated);min-width:50px;min-height:48px;color:var(--text-primary);font-family:var(--font-display);cursor:pointer;padding:.4rem .75rem;font-size:1.05rem;font-weight:800}.tg-seat-list{flex-direction:column;gap:.35rem;max-height:165px;display:flex;overflow-y:auto}.tg-seat-row{border-radius:var(--radius-sm);background:var(--bg-surface);border:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:.5rem;padding:.36rem .6rem;font-size:.85rem;display:flex}.tg-seat-row.is-active-seat{border-color:var(--accent-primary);background:var(--accent-amber-soft)}.tg-cheer-strip{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}@media (orientation:portrait){.tg-stage{--tg-board-max:min(100%, 540px, calc(100dvh - 250px));padding:.9rem}}@media (width>=820px) and (orientation:landscape){.app-shell:has(.tg-stage) .topbar [data-testid=open-dungeon-campaign-btn]{display:none}.app-shell:has(.tg-stage) .topbar [data-testid=open-book-studio-btn]{display:none}.app-shell:has(.tg-stage) .topbar [data-testid=open-alphabet-lab-btn]{display:none}.app-shell:has(.tg-stage) .topbar [data-testid=open-chinese-dojo-btn]{display:none}body:has(.tg-stage) .topbar [data-testid=open-dungeon-campaign-btn]{display:none}body:has(.tg-stage) .topbar [data-testid=open-book-studio-btn]{display:none}body:has(.tg-stage) .topbar [data-testid=open-alphabet-lab-btn]{display:none}body:has(.tg-stage) .topbar [data-testid=open-chinese-dojo-btn]{display:none}.tg-stage{--tg-board-max:min(44vw, 495px, calc(100dvh - 265px));padding:.65rem .9rem}.tg-stage .game-header{flex-wrap:nowrap;gap:.5rem;margin-bottom:.45rem;padding-bottom:.4rem}.tg-stage .game-header-left{flex:1;gap:.55rem;min-width:0}.tg-stage .game-header-left>button{flex-shrink:0}.tg-stage .game-header-left>div{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.tg-stage .game-header .controls-cluster{flex-wrap:nowrap;flex:0 auto;min-width:0}.tg-stage .game-header .segmented-toggle{flex-wrap:nowrap}.tg-stage .game-header .segmented-btn{white-space:nowrap}.tg-split-layout{grid-template-columns:minmax(368px, var(--tg-board-max)) minmax(0, 1fr);gap:1rem}.tg-split-layout:has(>.tg-brain-card){grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}.tg-2048-board{width:min(100%, calc(var(--tg-board-max) - 104px))}.tg-sudoku-board{width:min(100%, calc(var(--tg-board-max) - 58px))}.tg-numpad{justify-content:center;gap:.3rem}.tg-numpad-btn{min-width:44px;padding:.3rem .5rem}}@media (width>=820px) and (height<=660px) and (orientation:landscape){.app-shell:has(.tg-stage) .topbar{padding:.16rem .65rem}body:has(.tg-stage) .topbar{padding:.16rem .65rem}.app-shell:has(.tg-stage) .topbar-inner{justify-content:flex-start;gap:.22rem .4rem}body:has(.tg-stage) .topbar-inner{justify-content:flex-start;gap:.22rem .4rem}.app-shell:has(.tg-stage) .topbar .controls-cluster{display:contents}body:has(.tg-stage) .topbar .controls-cluster{display:contents}.app-shell:has(.tg-stage) .topbar button{min-height:30px;padding:.16rem .45rem;font-size:.74rem}.app-shell:has(.tg-stage) .topbar .stat-chip{min-height:30px;padding:.16rem .45rem;font-size:.74rem}.app-shell:has(.tg-stage) .topbar .segmented-btn{min-height:30px;padding:.16rem .45rem;font-size:.74rem}body:has(.tg-stage) .topbar button{min-height:30px;padding:.16rem .45rem;font-size:.74rem}body:has(.tg-stage) .topbar .stat-chip{min-height:30px;padding:.16rem .45rem;font-size:.74rem}body:has(.tg-stage) .topbar .segmented-btn{min-height:30px;padding:.16rem .45rem;font-size:.74rem}.app-shell:has(.tg-stage) .brand-avatar{width:26px;height:26px}body:has(.tg-stage) .brand-avatar{width:26px;height:26px}.app-shell:has(.tg-stage) .brand-title{font-size:.92rem}body:has(.tg-stage) .brand-title{font-size:.92rem}.app-shell:has(.tg-stage) .brand-sub{display:none}body:has(.tg-stage) .brand-sub{display:none}.app-shell:has(.tg-stage) .topbar [data-testid=open-dungeon-campaign-btn]{display:none}.app-shell:has(.tg-stage) .topbar [data-testid=open-book-studio-btn]{display:none}.app-shell:has(.tg-stage) .topbar [data-testid=open-alphabet-lab-btn]{display:none}.app-shell:has(.tg-stage) .topbar [data-testid=open-chinese-dojo-btn]{display:none}body:has(.tg-stage) .topbar [data-testid=open-dungeon-campaign-btn]{display:none}body:has(.tg-stage) .topbar [data-testid=open-book-studio-btn]{display:none}body:has(.tg-stage) .topbar [data-testid=open-alphabet-lab-btn]{display:none}body:has(.tg-stage) .topbar [data-testid=open-chinese-dojo-btn]{display:none}.main-container:has(.tg-stage){padding:.2rem .7rem .3rem}.tg-stage{--tg-board-max:min(38vw, calc(100dvh - 195px));padding:.22rem .6rem}.tg-stage .game-header{gap:.32rem;margin-bottom:.22rem;padding-bottom:.16rem}.tg-stage .game-header h1{font-size:.9rem!important}.tg-stage .game-header .btn{min-height:32px;padding:.2rem .5rem;font-size:.76rem}.tg-stage .game-header .segmented-toggle{padding:2px}.tg-stage .game-header .segmented-btn{min-height:32px;padding:.18rem .42rem;font-size:.75rem}.tg-split-layout{grid-template-columns:minmax(250px, var(--tg-board-max)) minmax(0, 1fr);gap:.6rem}.tg-split-layout:has(>.tg-brain-card){grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}.tg-board-wrap{gap:.35rem}.tg-2048-board{width:min(100%, calc(var(--tg-board-max) - 96px))}.tg-dpad{grid-template-rows:repeat(2,44px);grid-template-columns:repeat(3,48px);gap:.25rem}.tg-sudoku-board{width:min(100%, calc(var(--tg-board-max) - 50px))}.tg-numpad{justify-content:center;gap:.28rem}.tg-numpad-btn{min-width:42px;min-height:44px;padding:.2rem .42rem;font-size:.92rem}.tg-side-panel{gap:.45rem}.tg-panel-card{padding:.55rem .7rem}.tg-brain-card{gap:.5rem;padding:.7rem .85rem}.tg-brain-card .choices-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.tg-brain-card .choice-btn{padding:.5rem .7rem;font-size:.88rem}}@keyframes fgBombPulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}@keyframes fgChestFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes fgRibbonGlow{0%,to{box-shadow:0 0 0 3px #f5a31440}50%{box-shadow:0 0 0 7px #f5a3146b}}.fg-stage{box-sizing:border-box;flex-direction:column;gap:.85rem;width:100%;min-width:0;max-width:100%;display:flex;overflow-x:clip}.fg-stage .segmented-toggle{flex-wrap:wrap;gap:.25rem;max-width:100%}.fg-stage .btn,.fg-stage .segmented-btn,.fg-stage .choice-btn,.fg-btn,.fg-tab-btn,.fg-preset-pill,.fg-color-swatch,.fg-target-btn{touch-action:manipulation;box-sizing:border-box;min-width:44px;min-height:44px}.fg-stage .choice-btn,.fg-draw-choice-btn{overflow-wrap:anywhere;min-width:0}.fg-keypad-btn,.fg-tile-btn,.fg-chest-card,.fg-uno-card,.fg-draw-choice-btn,.fg-dice-roll-btn,.fg-uno-shout-btn,.fg-uno-catch-btn{touch-action:manipulation;box-sizing:border-box;min-width:48px;min-height:48px}.fg-stage input,.fg-stage select,.fg-stage textarea,.fg-input,.fg-select{border-radius:var(--radius-sm);border:1.5px solid var(--border-strong);background:var(--bg-elevated);min-height:44px;color:var(--text-primary);box-sizing:border-box;max-width:100%;padding:.45rem .75rem;font-size:max(16px,1rem)}.fg-stage input:focus,.fg-stage select:focus{outline:2px solid var(--accent-primary);outline-offset:1px}.fg-toolbar{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-card);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;min-width:0;padding:.65rem .85rem;display:flex}.fg-toolbar-group{flex-wrap:wrap;align-items:center;gap:.5rem;min-width:0;display:flex}.fg-toggle-chip{border:1.5px solid var(--border-strong);background:var(--bg-subtle);min-height:44px;color:var(--text-primary);cursor:pointer;touch-action:manipulation;border-radius:999px;align-items:center;gap:.4rem;padding:.4rem .75rem;font-size:.88rem;font-weight:700;transition:transform .14s,background .14s,border-color .14s;display:inline-flex}.fg-toggle-chip.is-on{background:var(--accent-jade-soft);border-color:var(--accent-jade);color:var(--text-primary)}.fg-preset-bar{background:var(--bg-subtle);border:1px dashed var(--border-strong);border-radius:var(--radius-md);flex-wrap:wrap;align-items:center;gap:.45rem;min-width:0;padding:.55rem .75rem;display:flex}.fg-preset-bar-label{color:var(--text-secondary);margin-right:.25rem;font-size:.82rem;font-weight:700}.fg-preset-pill{border:1.5px solid var(--border-subtle);background:var(--bg-surface);color:var(--text-primary);cursor:pointer;border-radius:999px;align-items:center;gap:.35rem;padding:.35rem .68rem;font-size:.84rem;font-weight:700;display:inline-flex}.fg-preset-pill.is-active{background:var(--accent-amber-soft);border-color:var(--accent-amber)}.fg-preset-pill:disabled{opacity:.55;cursor:not-allowed}.fg-split-layout{grid-template-columns:minmax(0,1.48fr) minmax(260px,.92fr);align-items:start;gap:.95rem;min-width:0;display:grid}.fg-main-panel,.fg-side-panel{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);flex-direction:column;gap:.8rem;min-width:0;padding:1rem;display:flex}.fg-panel-title{font-family:var(--font-display);color:var(--text-primary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.45rem;margin:0;font-size:1.05rem;font-weight:800;display:flex}.fg-seat-strip{grid-template-columns:repeat(auto-fill,minmax(136px,1fr));gap:.5rem;min-width:0;display:grid}.fg-seat-card{border-radius:var(--radius-sm);border:1.5px solid var(--border-subtle);background:var(--bg-elevated);flex-direction:column;gap:.22rem;min-width:0;padding:.5rem .65rem;transition:border-color .15s,transform .15s;display:flex}.fg-seat-card.is-turn{border-color:var(--accent-primary);background:var(--accent-amber-soft);transform:translateY(-1px)}.fg-seat-card.is-eliminated{opacity:.52}.fg-seat-top{justify-content:space-between;align-items:center;gap:.35rem;min-width:0;display:flex}.fg-seat-name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.86rem;font-weight:800;overflow:hidden}.fg-seat-score{color:var(--accent-amber);flex-shrink:0;font-size:.9rem;font-weight:800}.fg-seat-meta{color:var(--text-secondary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem;font-size:.74rem;display:flex}.fg-age-badge{background:var(--bg-subtle);color:var(--text-secondary);border-radius:999px;align-items:center;padding:.1rem .42rem;font-size:.72rem;font-weight:700;display:inline-flex}.fg-age-badge.tier-kids{background:var(--accent-amber-soft);color:var(--text-primary)}.fg-age-badge.tier-teens{background:var(--accent-slate-soft);color:var(--text-primary)}.fg-age-badge.tier-pro{background:var(--accent-jade-soft);color:var(--text-primary)}.fg-event-feed{flex-direction:column;gap:.38rem;max-height:195px;padding-right:.2rem;display:flex;overflow-y:auto}.fg-event-item{border-radius:var(--radius-sm);background:var(--bg-subtle);color:var(--text-primary);border-left:3px solid var(--accent-primary);padding:.42rem .6rem;font-size:.83rem;line-height:1.35}.fg-podium-card{border-radius:var(--radius-md);background:var(--accent-amber-soft);border:2px solid var(--accent-amber);color:var(--text-primary);flex-direction:column;gap:.75rem;padding:1rem;display:flex}.fg-participation-banner{border-radius:var(--radius-sm);background:var(--accent-jade-soft);border:1.5px solid var(--accent-jade);color:var(--text-primary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.65rem .85rem;font-size:.88rem;font-weight:700;display:flex}.fg-quiz-card{border-radius:var(--radius-md);background:var(--bg-subtle);border:1px solid var(--border-subtle);flex-direction:column;gap:.75rem;padding:.95rem;display:flex}.fg-quiz-prompt{font-family:var(--font-display);color:var(--text-primary);margin:0;font-size:clamp(1.08rem,2.1vw,1.38rem);font-weight:800;line-height:1.35}.fg-choices-2x2{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}.fg-chest-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;display:grid}.fg-chest-card{border-radius:var(--radius-md);border:2px solid var(--accent-amber);background:var(--bg-elevated);color:var(--text-primary);cursor:pointer;text-align:center;box-shadow:var(--shadow-card);flex-direction:column;justify-content:center;align-items:center;gap:.45rem;padding:1rem .65rem;transition:transform .16s,border-color .16s,background .16s;display:flex}.fg-chest-card:hover:not(:disabled){background:var(--accent-amber-soft);transform:translateY(-3px)scale(1.02)}.fg-chest-card.is-revealed{background:var(--accent-amber-soft);animation:none}.fg-chest-emoji{font-size:2.25rem;line-height:1}.fg-target-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.55rem;display:grid}.fg-target-btn{border-radius:var(--radius-sm);border:1.5px solid var(--border-strong);background:var(--bg-elevated);color:var(--text-primary);cursor:pointer;justify-content:space-between;align-items:center;gap:.45rem;padding:.55rem .75rem;font-weight:700;display:flex}.fg-target-btn:hover{border-color:var(--accent-primary);background:var(--accent-coral-soft)}.fg-tug-arena{border-radius:var(--radius-md);background:var(--bg-subtle);border:1.5px solid var(--border-subtle);flex-direction:column;gap:.65rem;padding:.85rem 1rem;display:flex}.fg-tug-headers{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.fg-tug-team-badge{border-radius:999px;align-items:center;gap:.4rem;padding:.32rem .7rem;font-size:.88rem;font-weight:800;display:inline-flex}.fg-tug-team-badge.team-gold{background:var(--accent-amber-soft);border:1.5px solid var(--accent-amber);color:var(--text-primary)}.fg-tug-team-badge.team-jade{background:var(--accent-jade-soft);border:1.5px solid var(--accent-jade);color:var(--text-primary)}.fg-streak-badge{background:var(--accent-primary);color:var(--accent-primary-fg);border-radius:999px;align-items:center;gap:.28rem;padding:.22rem .58rem;font-size:.78rem;font-weight:800;display:inline-flex}.fg-tug-track{background:linear-gradient(90deg, var(--accent-amber-soft) 0%, var(--bg-elevated) 50%, var(--accent-jade-soft) 100%);border:2px solid var(--border-strong);border-radius:999px;align-items:center;height:52px;display:flex;position:relative;overflow:hidden}.fg-tug-center-mark{background:var(--border-strong);width:2px;position:absolute;top:4px;bottom:4px;left:50%;transform:translate(-50%)}.fg-tug-rope-line{opacity:.88;background:repeating-linear-gradient(45deg,#b45309,#b45309 8px,#d97706 8px 16px);width:100%;height:10px}.fg-tug-ribbon{background:var(--accent-primary);width:38px;height:38px;color:var(--accent-primary-fg);border-radius:50%;justify-content:center;align-items:center;font-size:1.15rem;font-weight:900;transition:left .22s cubic-bezier(.22,1,.36,1);animation:1.8s infinite fgRibbonGlow;display:flex;position:absolute;top:50%;transform:translate(-50%,-50%)}.fg-tug-split-2p{grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;min-width:0;display:grid}.fg-tug-duel-col{border-radius:var(--radius-md);border:1.5px solid var(--border-subtle);background:var(--bg-elevated);flex-direction:column;gap:.6rem;min-width:0;padding:.8rem;display:flex}.fg-math-display{border-radius:var(--radius-sm);background:var(--bg-subtle);border:1.5px solid var(--border-strong);font-family:var(--font-display);color:var(--text-primary);justify-content:space-between;align-items:center;gap:.5rem;padding:.65rem .85rem;font-size:clamp(1.15rem,2.2vw,1.5rem);font-weight:900;display:flex}.fg-keypad-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;display:grid}.fg-keypad-btn{border-radius:var(--radius-sm);border:1.5px solid var(--border-strong);background:var(--bg-surface);color:var(--text-primary);font-family:var(--font-display);cursor:pointer;font-size:1.15rem;font-weight:800;transition:background .1s,transform 80ms}.fg-keypad-btn:active:not(:disabled){transform:scale(.96)}.fg-keypad-btn.is-submit{background:var(--accent-primary);color:var(--accent-primary-fg);border-color:var(--accent-primary)}.fg-keypad-btn.is-clear{background:var(--accent-coral-soft);color:var(--text-primary)}.fg-bomb-circle{grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:.5rem;display:grid}.fg-bomb-seat{border-radius:var(--radius-sm);border:1.5px solid var(--border-subtle);background:var(--bg-elevated);flex-direction:column;gap:.22rem;min-width:0;padding:.5rem .6rem;display:flex}.fg-bomb-seat.holding-bomb{border-color:var(--status-error);background:var(--accent-coral-soft);box-shadow:0 0 0 2px #e84f3038}.fg-bomb-seat.out-of-hearts{opacity:.45;text-decoration:line-through}.fg-bomb-core{border-radius:var(--radius-md);background:var(--bg-subtle);border:2px solid var(--accent-amber);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.4rem;padding:.9rem 1rem;animation:1.3s ease-in-out infinite fgBombPulse;display:flex}.fg-bomb-core.is-urgent{border-color:var(--status-error);background:var(--status-error-bg);animation-duration:.6s}.fg-bomb-clue{font-family:var(--font-display);letter-spacing:.04em;color:var(--text-primary);font-size:clamp(1.35rem,2.8vw,1.9rem);font-weight:900}.fg-tile-rack{flex-wrap:wrap;justify-content:center;gap:.45rem;display:flex}.fg-tile-btn{border-radius:var(--radius-sm);border:2px solid var(--border-strong);background:var(--bg-elevated);color:var(--text-primary);font-family:var(--font-display);cursor:pointer;box-shadow:var(--shadow-card);padding:.45rem .85rem;font-size:1.08rem;font-weight:800}.fg-tile-btn:hover:not(:disabled){border-color:var(--accent-primary);background:var(--accent-amber-soft)}.fg-word-form{flex-wrap:wrap;align-items:stretch;gap:.5rem;display:flex}.fg-word-form input{flex:200px}.fg-history-strip{flex-wrap:wrap;gap:.38rem;display:flex}.fg-dice-board{grid-template-columns:repeat(6,minmax(0,1fr));gap:.42rem;min-width:0;display:grid}.fg-dice-tile{border-radius:var(--radius-sm);border:1.5px solid var(--border-subtle);background:var(--bg-elevated);flex-direction:column;justify-content:space-between;gap:.2rem;min-width:0;min-height:64px;padding:.35rem .4rem;display:flex;position:relative}.fg-dice-tile.tile-start{background:var(--accent-jade-soft);border-color:var(--accent-jade)}.fg-dice-tile.tile-finish{background:var(--accent-amber-soft);border-color:var(--accent-amber)}.fg-dice-tile.tile-ladder{background:var(--status-success-bg);border-color:var(--status-success)}.fg-dice-tile.tile-star_quiz{background:var(--accent-amber-soft);border-color:var(--accent-primary)}.fg-dice-tile.tile-cloud_slide{background:var(--accent-slate-soft);border-color:var(--border-strong)}.fg-dice-tile-head{color:var(--text-secondary);justify-content:space-between;align-items:center;font-size:.74rem;font-weight:800;display:flex}.fg-pawn-cluster{flex-wrap:wrap;gap:.14rem;font-size:.96rem;line-height:1.1;display:flex}.fg-skribbl-canvas-box{border-radius:var(--radius-md);border:2px solid var(--border-strong);background:#fff;width:100%;position:relative;overflow:hidden}.fg-skribbl-canvas{aspect-ratio:16/10;touch-action:none;-webkit-user-select:none;user-select:none;cursor:crosshair;background:#fff;width:100%;height:auto;max-height:320px;display:block}.fg-palette-bar{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.fg-color-swatch{cursor:pointer;border:3px solid #0000;border-radius:50%;width:44px;height:44px;padding:0}.fg-color-swatch.is-selected{border-color:var(--text-primary);transform:scale(1.1)}.fg-draw-choices-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;display:grid}.fg-draw-choice-btn{border-radius:var(--radius-sm);border:1.5px solid var(--border-strong);background:var(--bg-elevated);color:var(--text-primary);cursor:pointer;text-align:center;padding:.55rem .65rem;font-size:.9rem;font-weight:700}.fg-draw-choice-btn:hover:not(:disabled){border-color:var(--accent-primary);background:var(--accent-amber-soft)}.fg-uno-table{border-radius:var(--radius-md);background:var(--bg-subtle);border:1.5px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-around;align-items:center;gap:.9rem;padding:.9rem;display:flex}.fg-uno-hand{flex-wrap:wrap;align-items:stretch;gap:.55rem;display:flex}.fg-uno-card{color:#fff;text-align:center;width:90px;min-height:118px;font-family:var(--font-display);cursor:pointer;border:3px solid #fff;border-radius:14px;flex-direction:column;justify-content:space-between;align-items:center;padding:.45rem;font-weight:800;transition:transform .14s,opacity .14s;display:flex;box-shadow:0 4px 12px #0f172a38}.fg-uno-card.color-red{background:linear-gradient(145deg,#dc2626,#991b1b)}.fg-uno-card.color-blue{background:linear-gradient(145deg,#2563eb,#1e40af)}.fg-uno-card.color-green{background:linear-gradient(145deg,#15803d,#166534)}.fg-uno-card.color-yellow{color:#1c1917;background:linear-gradient(145deg,#fde047,#f59e0b);border-color:#fef3c7}.fg-uno-card.color-yellow .fg-uno-card-num{text-shadow:none}.fg-uno-card.color-yellow .fg-uno-card-word{color:#fff;background:#1c1917d1}.fg-uno-card.color-wild{background:linear-gradient(135deg,#b91c1c 0%,#b45309 34%,#15803d 67%,#1d4ed8 100%)}.fg-uno-card.is-playable:hover:not(:disabled){transform:translateY(-6px)scale(1.03)}.fg-uno-card.is-unplayable{opacity:.52}.fg-uno-card-num{text-shadow:0 1px 3px #00000059;font-size:1.45rem;line-height:1.05}.fg-uno-card-word{color:#fff;text-overflow:ellipsis;white-space:nowrap;background:#0f172a9e;border-radius:6px;max-width:100%;padding:.14rem .36rem;font-size:.74rem;overflow:hidden}.fg-uno-shout-btn{color:#fff;font-family:var(--font-display);cursor:pointer;background:linear-gradient(135deg,#dc2626,#991b1b);border:2px solid #fbbf24;border-radius:999px;padding:.55rem 1.05rem;font-size:.96rem;font-weight:900;box-shadow:0 4px 12px #b91c1c4d}.fg-uno-catch-btn{border:2px solid var(--status-error);background:var(--status-error-bg);color:var(--text-primary);cursor:pointer;border-radius:999px;padding:.55rem 1rem;font-weight:800}.fg-uno-curtain{border-radius:var(--radius-md);border:2px dashed var(--accent-primary);background:var(--bg-subtle);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:1.5rem 1.1rem;display:flex}@media (height<=660px) and (orientation:landscape){.fg-stage{gap:.55rem}.fg-stage .game-header{margin-bottom:.25rem}.fg-main-panel,.fg-side-panel{gap:.55rem;padding:.7rem .85rem}.fg-skribbl-canvas{max-height:215px}.fg-dice-tile{min-height:50px;padding:.25rem .3rem}.fg-uno-card{width:78px;min-height:98px}}@media (width<=860px),(orientation:portrait){.fg-split-layout{grid-template-columns:1fr}.fg-dice-board{grid-template-columns:repeat(5,minmax(0,1fr))}.fg-draw-choices-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=580px){.fg-chest-grid,.fg-choices-2x2,.fg-tug-split-2p{grid-template-columns:1fr}.fg-dice-board{grid-template-columns:repeat(3,minmax(0,1fr))}}.dungeon-campaign-root,.dungeon-modal-backdrop{--cave-obsidian:#0a1222;--cave-deep:#111d35;--cave-cyan:#38bdf8;--cave-gold:#fbbf24;--cave-emerald:#34d399;--cave-coral:#fb7185;--cave-hud-text:#f8fafc;--cave-hud-muted:#cbd5e1;--cave-glass:#0a1222c7}.dungeon-campaign-root{box-sizing:border-box;flex-direction:column;gap:.75rem;width:100%;max-width:100%;display:flex;overflow-x:hidden}.dungeon-campaign-root *,.dungeon-modal-backdrop *{box-sizing:border-box;min-width:0}.dungeon-campaign-root input,.dungeon-campaign-root select,.dungeon-campaign-root textarea,.dungeon-modal-backdrop input,.dungeon-modal-backdrop select{min-height:48px;font-size:1rem}.dungeon-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:0;display:flex}.dungeon-header h1{font-family:var(--font-display,system-ui, sans-serif);letter-spacing:-.01em;color:var(--text-primary,#1c2a36);margin:0;font-size:clamp(1.08rem,1.9vw,1.4rem);line-height:1.2}.dungeon-header-btn{touch-action:manipulation;align-items:center;gap:.4rem;min-width:48px;min-height:48px;padding:.45rem .8rem;display:inline-flex}.dungeon-stats-cluster{flex-wrap:wrap;align-items:center;gap:.42rem;display:flex}.dungeon-coop-chip{background:var(--accent-jade-soft,#dcf3ee);color:var(--accent-jade,#1e8f75);font-weight:700}.dungeon-coach-wrap{width:100%}.dungeon-coach-wrap button{min-width:48px;min-height:48px}.dungeon-biome-tabs{grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;display:grid}.dungeon-biome-tab{border-radius:var(--radius-md,16px);border:1px solid var(--border-subtle,#e2dad0);background:var(--bg-surface,#fffdf9);min-width:48px;min-height:52px;color:var(--text-primary,#1c2a36);box-shadow:var(--shadow-card,0 2px 8px #00000014);cursor:pointer;touch-action:manipulation;text-align:left;flex-direction:column;justify-content:center;align-items:flex-start;gap:.1rem;padding:.45rem .65rem;transition:transform .16s,background-color .16s,border-color .16s;display:flex}.dungeon-biome-tab:hover{background:var(--bg-elevated,#fff);transform:translateY(-1px)}.dungeon-biome-tab.is-active{background:var(--accent-amber-soft,#faefd7);border-color:var(--border-strong,#cdc2b3)}.biome-tab-kicker{color:var(--text-secondary,#516271);text-transform:uppercase;letter-spacing:.03em;font-size:.7rem;font-weight:700}.biome-tab-title{color:var(--text-primary,#1c2a36);white-space:nowrap;text-overflow:ellipsis;width:100%;font-size:.86rem;font-weight:800;overflow:hidden}.biome-tab-progress{color:var(--accent-jade,#1e8f75);font-size:.72rem;font-weight:700}.dungeon-workspace-grid{grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);align-items:start;gap:.85rem;display:grid}.dungeon-left-column,.dungeon-right-column{flex-direction:column;gap:.75rem;display:flex}.dungeon-3d-viewport{border-radius:var(--radius-lg,22px);background:radial-gradient(circle at 52% 28%, #38bdf83d, transparent 64%), linear-gradient(180deg, var(--cave-obsidian) 0%, var(--cave-deep) 100%);border:1px solid var(--border-strong,#cdc2b3);width:100%;height:clamp(235px,36dvh,335px);box-shadow:var(--shadow-card,0 2px 8px #00000014);position:relative;overflow:hidden}.dungeon-3d-canvas{touch-action:none;cursor:grab;max-width:100%;display:block;width:100%!important;height:100%!important}.dungeon-3d-canvas:active{cursor:grabbing}.dungeon-3d-canvas-hidden{opacity:0;pointer-events:none;position:absolute;inset:0}.dungeon-3d-hud-top{pointer-events:none;z-index:3;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem;display:flex;position:absolute;top:.55rem;left:.65rem;right:.65rem}.dungeon-3d-biome-pill,.dungeon-3d-mode-pill{background:var(--cave-glass);color:var(--cave-hud-text);border-radius:var(--radius-sm,10px);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);align-items:center;gap:.35rem;padding:.28rem .62rem;font-size:.74rem;display:inline-flex}.biome-dot{background:var(--biome-crystal-color,#38bdf8);border-radius:50%;flex-shrink:0;width:8px;height:8px}.hud-sep{opacity:.6}.dungeon-3d-hud-bottom{pointer-events:none;z-index:3;position:absolute;bottom:.5rem;left:.65rem;right:.65rem}.dungeon-3d-drag-tip{background:var(--cave-glass);max-width:100%;color:var(--cave-hud-muted);border-radius:var(--radius-sm,10px);white-space:nowrap;text-overflow:ellipsis;padding:.26rem .62rem;font-size:.72rem;display:inline-block;overflow:hidden}.dungeon-3d-drag-tip strong{color:var(--cave-gold)}.dungeon-css3d-scene{perspective:900px;z-index:2;position:absolute;inset:0;overflow:hidden}.dungeon-css3d-world{width:100%;height:100%;transform-style:preserve-3d;transition:transform .14s ease-out;position:relative}.dungeon-css3d-backdrop{object-fit:cover;filter:saturate(1.1)brightness(.86);width:100%;height:100%;position:absolute;inset:0;transform:translateZ(-50px)scale(1.08)}.dungeon-css3d-crystals{pointer-events:none;position:absolute;inset:0}.css3d-crystal{clip-path:polygon(50% 0%,92% 38%,74% 100%,26% 100%,8% 38%);background:linear-gradient(180deg, #fff 0%, var(--biome-crystal-color,#38bdf8) 55%, #0a1222d9 100%);opacity:.88;width:34px;height:62px;position:absolute}.css3d-crystal.c-left{bottom:18%;left:7%;transform:rotate(-10deg)}.css3d-crystal.c-mid{width:24px;height:44px;top:20%;left:44%}.css3d-crystal.c-right{bottom:22%;right:8%;transform:rotate(11deg)}.dungeon-css3d-boss-arch{pointer-events:none;background:#0f172ab8;border-radius:50%;justify-content:center;align-items:center;width:84px;height:84px;display:flex;position:absolute;top:22%;right:12%}.css3d-rune-ring{border:3px dashed var(--cave-gold);border-radius:50%;animation:9s linear infinite dungeonSpinRune;position:absolute;inset:4px}.dungeon-css3d-boss-arch.is-open .css3d-rune-ring{border-color:var(--cave-emerald)}.css3d-arch-label{color:var(--cave-hud-text);text-align:center;font-size:.62rem;font-weight:800}.dungeon-css3d-pedestals{justify-content:space-between;align-items:flex-end;gap:.6rem;display:flex;position:absolute;bottom:18%;left:10%;right:10%}.dungeon-css3d-pedestal{border-radius:var(--radius-sm,10px);min-width:72px;min-height:52px;color:var(--cave-hud-text);cursor:pointer;touch-action:manipulation;background:#0f172ad6;border:1px solid #ffffff59;flex-direction:column;align-items:center;gap:.15rem;padding:.35rem .55rem;display:flex}.dungeon-css3d-pedestal.status-cleared{background:#065f46e0}.dungeon-css3d-pedestal.status-unlocked{background:#92400ee6}.dungeon-css3d-pedestal.is-active{transform:translateY(-5px)scale(1.05)}.css3d-pedestal-num{font-size:.72rem;font-weight:800}.dungeon-css3d-hero-token{border:2px solid var(--cave-gold);background:var(--cave-obsidian);pointer-events:none;border-radius:50%;width:58px;height:58px;transition:left .42s cubic-bezier(.22,1,.36,1);position:absolute;bottom:34%;overflow:hidden}.dungeon-css3d-hero-token img{object-fit:cover;width:100%;height:100%}.dungeon-css3d-hero-token.hero-slot-0{left:14%}.dungeon-css3d-hero-token.hero-slot-1{left:calc(50% - 29px)}.dungeon-css3d-hero-token.hero-slot-2{left:calc(84% - 58px)}@keyframes dungeonSpinRune{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.dungeon-npc-section,.dungeon-stage-map-card,.dungeon-trial-panel{background:var(--bg-surface,#fffdf9);border:1px solid var(--border-subtle,#e2dad0);border-radius:var(--radius-md,16px);box-shadow:var(--shadow-card,0 2px 8px #00000014);padding:.72rem .82rem}.dungeon-section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.35rem;margin-bottom:.55rem;display:flex}.section-title-inline{color:var(--text-primary,#1c2a36);align-items:center;gap:.38rem;font-size:.84rem;display:inline-flex}.section-sub-note{color:var(--text-secondary,#516271);font-size:.74rem;font-weight:600}.dungeon-npc-strip{grid-template-columns:repeat(auto-fit,minmax(min(100%,126px),1fr));gap:.45rem;display:grid}.dungeon-npc-btn{border-radius:var(--radius-sm,10px);border:1px solid var(--border-subtle,#e2dad0);background:var(--bg-subtle,#f1ece2);min-width:48px;min-height:54px;color:var(--text-primary,#1c2a36);cursor:pointer;touch-action:manipulation;text-align:left;align-items:center;gap:.45rem;padding:.38rem .5rem;transition:transform .14s,background-color .14s;display:flex}.dungeon-npc-btn:hover{background:var(--bg-elevated,#fff);transform:translateY(-1px)}.dungeon-npc-btn.is-stage-guide{background:var(--accent-amber-soft,#faefd7);border-color:var(--border-strong,#cdc2b3)}.dungeon-npc-thumb{object-fit:cover;border:1px solid var(--border-strong,#cdc2b3);border-radius:50%;flex-shrink:0;width:38px;height:38px}.dungeon-npc-meta{flex-direction:column;gap:.08rem;display:flex;overflow:hidden}.npc-short-name{color:var(--text-primary,#1c2a36);white-space:nowrap;text-overflow:ellipsis;font-size:.78rem;font-weight:800;overflow:hidden}.npc-trust-mini{color:var(--text-secondary,#516271);font-size:.69rem;font-weight:700}.dungeon-all-biomes-rows{flex-direction:column;gap:.42rem;display:flex}.dungeon-stage-biome-row{border-radius:var(--radius-sm,10px);grid-template-columns:32px minmax(0,1fr);align-items:center;gap:.4rem;padding:.25rem;display:grid}.dungeon-stage-biome-row.is-current-biome{background:var(--bg-subtle,#f1ece2)}.biome-row-tag{color:var(--text-secondary,#516271);text-align:center;font-size:.72rem;font-weight:800}.dungeon-stage-row-nodes{grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem;display:grid}.dungeon-stage-node{border-radius:var(--radius-sm,10px);border:1px solid var(--border-subtle,#e2dad0);background:var(--bg-elevated,#fff);min-width:48px;min-height:48px;color:var(--text-primary,#1c2a36);cursor:pointer;touch-action:manipulation;text-align:left;flex-direction:column;justify-content:center;gap:.12rem;padding:.34rem .5rem;transition:transform .14s,background-color .14s;display:flex}.dungeon-stage-node:hover{transform:translateY(-1px)}.dungeon-stage-node.status-cleared{background:var(--status-success-bg,#ddf6eb);border-color:var(--status-success,#1f8e5d)}.dungeon-stage-node.status-unlocked{background:var(--accent-amber-soft,#faefd7);border-color:var(--accent-amber,#dd8b0e)}.dungeon-stage-node.status-locked{background:var(--accent-slate-soft,#e2eaf0);color:var(--text-muted,#758593);opacity:.88}.dungeon-stage-node.is-selected{box-shadow:var(--shadow-hover,0 8px 20px #00000024);border-width:2px}.stage-node-top{justify-content:space-between;align-items:center;gap:.25rem;display:flex}.stage-node-num{white-space:nowrap;font-size:.77rem;font-weight:800}.stage-node-sub{color:var(--text-secondary,#516271);white-space:nowrap;text-overflow:ellipsis;font-size:.68rem;font-weight:700;overflow:hidden}.dungeon-trial-panel{flex-direction:column;gap:.62rem;display:flex}.trial-panel-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.trial-badges-row{flex-wrap:wrap;align-items:center;gap:.35rem;margin-bottom:.22rem;display:flex}.trial-round-pill,.trial-boss-pill,.trial-level-pill{border-radius:var(--radius-sm,10px);align-items:center;gap:.25rem;padding:.18rem .5rem;font-size:.71rem;font-weight:800;display:inline-flex}.trial-round-pill{background:var(--accent-jade-soft,#dcf3ee);color:var(--accent-jade,#1e8f75)}.trial-boss-pill{background:var(--accent-coral-soft,#fae4dd);color:var(--accent-primary,#e35326)}.trial-level-pill{background:var(--bg-subtle,#f1ece2);color:var(--text-secondary,#516271)}.trial-stage-title{font-family:var(--font-display,system-ui, sans-serif);color:var(--text-primary,#1c2a36);margin:0;font-size:1rem;font-weight:800}.dungeon-trial-panel:focus{outline:none}.dungeon-trial-panel:focus-visible{outline:2px solid var(--accent-amber,#dd8b0e);outline-offset:2px}.trial-round-selector{flex-wrap:wrap;align-items:center;gap:.36rem;display:inline-flex}.trial-round-tab{border-radius:var(--radius-sm,10px);border:1px solid var(--border-strong,#cdc2b3);background:var(--bg-subtle,#f1ece2);min-width:56px;min-height:48px;color:var(--text-primary,#1c2a36);cursor:pointer;touch-action:manipulation;justify-content:center;align-items:center;padding:.35rem .62rem;font-size:.76rem;font-weight:800;transition:transform .14s,background-color .14s;display:inline-flex}.trial-round-tab:hover{background:var(--bg-elevated,#fff);transform:translateY(-1px)}.trial-round-tab.is-done{background:var(--status-success-bg,#ddf6eb);color:var(--status-success,#1f8e5d);border-color:var(--status-success,#1f8e5d)}.trial-round-tab.is-current{background:var(--accent-primary,#e35326);color:var(--accent-primary-fg,#fff);border-color:var(--accent-primary,#e35326)}.trial-prompt-box{background:var(--bg-subtle,#f1ece2);border-radius:var(--radius-sm,10px);flex-direction:column;gap:.35rem;padding:.6rem .72rem;display:flex}.trial-prompt-vi{color:var(--text-primary,#1c2a36);margin:0;font-size:.9rem;font-weight:700;line-height:1.42}.trial-prompt-bilingual-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.45rem;display:flex}.trial-prompt-lang{color:var(--text-secondary,#516271);flex:200px;margin:0;font-size:.82rem}.trial-phonetic-tag{color:var(--accent-jade,#1e8f75);font-weight:700}.trial-listen-btn{touch-action:manipulation;align-items:center;gap:.35rem;min-width:48px;min-height:48px;padding:.35rem .7rem;display:inline-flex}.dungeon-trial-options-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.dungeon-trial-option{border-radius:var(--radius-sm,10px);border:1px solid var(--border-strong,#cdc2b3);background:var(--bg-elevated,#fff);min-width:48px;min-height:54px;color:var(--text-primary,#1c2a36);cursor:pointer;touch-action:manipulation;text-align:left;align-items:center;gap:.5rem;padding:.5rem .65rem;transition:transform .14s,background-color .14s,border-color .14s;display:flex}.dungeon-trial-option:hover{background:var(--accent-amber-soft,#faefd7);transform:translateY(-1px)}.dungeon-trial-option.is-wrong{background:var(--status-error-bg,#fbe3e1);border-color:var(--status-error,#d52b20)}.trial-opt-letter{background:var(--bg-subtle,#f1ece2);width:28px;height:28px;color:var(--text-primary,#1c2a36);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.78rem;font-weight:800;display:inline-flex}.trial-opt-copy{flex-direction:column;gap:.1rem;display:flex}.trial-opt-vi{color:var(--text-primary,#1c2a36);font-size:.85rem;font-weight:800}.trial-opt-sub{color:var(--text-secondary,#516271);font-size:.74rem}.trial-feedback-banner{border-radius:var(--radius-sm,10px);padding:.52rem .68rem;font-size:.82rem;font-weight:700;line-height:1.4}.trial-feedback-banner.tone-success{background:var(--status-success-bg,#ddf6eb);color:var(--status-success,#1f8e5d)}.trial-feedback-banner.tone-error{background:var(--status-error-bg,#fbe3e1);color:var(--status-error,#d52b20)}.trial-feedback-banner.tone-hint,.trial-feedback-banner.tone-neutral{background:var(--accent-amber-soft,#faefd7);color:var(--text-primary,#1c2a36)}.trial-utility-bar{flex-wrap:wrap;align-items:center;gap:.42rem;padding-top:.15rem;display:flex}.trial-util-btn{touch-action:manipulation;align-items:center;gap:.35rem;min-width:48px;min-height:48px;padding:.4rem .72rem;font-size:.8rem;display:inline-flex}.dungeon-modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a1222ad;justify-content:center;align-items:center;padding:.65rem;display:flex;position:fixed;inset:0}.npc-modal-layer{z-index:65}.cutscene-modal-layer{z-index:70}.dungeon-modal-panel{-webkit-overflow-scrolling:touch;background:var(--bg-surface,#fffdf9);width:100%;max-width:min(740px,100vw - 1.3rem);max-height:min(90dvh,100dvh - 1.3rem);color:var(--text-primary,#1c2a36);border:1px solid var(--border-strong,#cdc2b3);border-radius:var(--radius-lg,22px);box-shadow:var(--shadow-hover,0 8px 20px #00000024);overflow:hidden auto}.npc-dialogue-card{flex-direction:column;gap:.75rem;padding:1rem;display:flex}.npc-modal-header{align-items:flex-start;gap:.85rem;display:flex}.npc-portrait-frame{border-radius:var(--radius-md,16px);border:2px solid var(--border-strong,#cdc2b3);background:var(--cave-obsidian);flex-shrink:0;width:88px;height:88px;position:relative;overflow:hidden}.npc-portrait-3d{object-fit:cover;width:100%;height:100%}.npc-emoji-badge{background:var(--cave-glass);border-radius:8px;padding:.1rem .28rem;font-size:.8rem;position:absolute;bottom:4px;right:4px}.npc-identity-block{flex-direction:column;flex:auto;gap:.22rem;display:flex}.npc-role-row{flex-wrap:wrap;gap:.35rem;display:flex}.npc-role-pill,.npc-mood-pill{border-radius:var(--radius-sm,10px);padding:.18rem .5rem;font-size:.72rem;font-weight:700}.npc-role-pill{background:var(--accent-jade-soft,#dcf3ee);color:var(--accent-jade,#1e8f75)}.npc-mood-pill{background:var(--accent-amber-soft,#faefd7);color:var(--text-primary,#1c2a36)}.npc-title-name{font-family:var(--font-display,system-ui, sans-serif);color:var(--text-primary,#1c2a36);margin:0;font-size:1.15rem;font-weight:800}.npc-bilingual-name{color:var(--text-secondary,#516271);margin:0;font-size:.82rem}.npc-trust-hearts{color:var(--text-secondary,#516271);align-items:center;gap:.24rem;font-size:.8rem;font-weight:700;display:inline-flex}.npc-close-btn,.cutscene-close-btn{touch-action:manipulation;flex-shrink:0;justify-content:center;align-items:center;min-width:48px;min-height:48px;display:inline-flex}.npc-stage-context-banner{border-radius:var(--radius-sm,10px);background:var(--bg-subtle,#f1ece2);color:var(--text-secondary,#516271);align-items:center;gap:.45rem;padding:.48rem .7rem;font-size:.8rem;display:flex}.npc-speech-bubble{border-radius:var(--radius-md,16px);background:var(--bg-elevated,#fff);border:1px solid var(--border-subtle,#e2dad0);flex-direction:column;gap:.35rem;padding:.75rem .85rem;display:flex}.npc-response-vi{color:var(--text-primary,#1c2a36);margin:0;font-size:.92rem;font-weight:700;line-height:1.46}.npc-bilingual-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.45rem;display:flex}.npc-response-sub{color:var(--text-secondary,#516271);flex:180px;margin:0;font-size:.82rem}.npc-bilingual-speak-btn{touch-action:manipulation;align-items:center;gap:.3rem;min-width:48px;min-height:48px;padding:.32rem .65rem;font-size:.76rem;font-weight:800;display:inline-flex}.npc-choices-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.npc-choice-btn{border-radius:var(--radius-sm,10px);border:1px solid var(--border-strong,#cdc2b3);background:var(--bg-subtle,#f1ece2);min-width:48px;min-height:52px;color:var(--text-primary,#1c2a36);cursor:pointer;touch-action:manipulation;text-align:left;justify-content:space-between;align-items:center;gap:.45rem;padding:.5rem .68rem;font-size:.82rem;font-weight:700;transition:background-color .14s,transform .14s;display:flex}.npc-choice-btn:hover,.npc-choice-btn.is-selected{background:var(--accent-amber-soft,#faefd7);transform:translateY(-1px)}.npc-choice-heart{flex-shrink:0;font-size:.74rem}.npc-modal-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.55rem;display:flex}.npc-action-btn{touch-action:manipulation;flex:220px;justify-content:center;align-items:center;gap:.45rem;min-width:48px;min-height:48px;display:inline-flex}.cutscene-modal-card{flex-direction:column;display:flex}.cutscene-hero-banner{background:var(--cave-obsidian);min-height:165px;position:relative;overflow:hidden}.cutscene-backdrop-img{object-fit:cover;filter:brightness(.56);width:100%;height:100%;position:absolute;inset:0}.cutscene-hero-overlay{z-index:2;align-items:center;gap:.85rem;padding:.9rem 1rem;display:flex;position:relative}.cutscene-npc-avatar{object-fit:cover;border:2px solid var(--cave-gold);border-radius:50%;flex-shrink:0;width:78px;height:78px}.cutscene-title-wrap{color:var(--cave-hud-text);flex-direction:column;flex:auto;gap:.25rem;display:flex}.cutscene-stage-kicker{color:var(--cave-gold);letter-spacing:.04em;font-size:.72rem;font-weight:800}.cutscene-headline{font-family:var(--font-display,system-ui, sans-serif);color:var(--cave-hud-text);margin:0;font-size:clamp(1.05rem,2vw,1.35rem);font-weight:800}.cutscene-stars-row{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.cutscene-star{font-size:1.15rem}.cutscene-relic-pill{background:var(--cave-glass);color:var(--cave-hud-text);border-radius:var(--radius-sm,10px);padding:.18rem .55rem;font-size:.76rem;font-weight:700}.cutscene-hero-overlay .cutscene-close-btn{color:var(--cave-hud-text)}.cutscene-body{flex-direction:column;gap:.75rem;padding:.9rem 1rem;display:flex}.cutscene-narrative-box{background:var(--bg-subtle,#f1ece2);border-radius:var(--radius-md,16px);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.55rem;padding:.72rem .85rem;display:flex}.cutscene-narrative-text{color:var(--text-primary,#1c2a36);flex:260px;margin:0;font-size:.9rem;line-height:1.48}.cutscene-tts-btn{touch-action:manipulation;align-items:center;gap:.35rem;min-width:48px;min-height:48px;display:inline-flex}.cutscene-chest-showcase{border-radius:var(--radius-md,16px);border:1px solid var(--border-strong,#cdc2b3);background:var(--accent-amber-soft,#faefd7);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.7rem;padding:.75rem .85rem;display:flex}.cutscene-chest-showcase.is-opened{background:var(--status-success-bg,#ddf6eb);border-color:var(--status-success,#1f8e5d)}.chest-3d-emblem{border-radius:var(--radius-md,16px);background:var(--bg-elevated,#fff);flex-shrink:0;justify-content:center;align-items:center;width:56px;height:56px;font-size:1.65rem;display:flex}.chest-reward-details{flex-direction:column;flex:210px;gap:.32rem;display:flex}.chest-reward-heading{color:var(--text-primary,#1c2a36);font-size:.88rem}.chest-payout-chips{flex-wrap:wrap;gap:.35rem;display:flex}.payout-chip{background:var(--bg-elevated,#fff);color:var(--text-primary,#1c2a36);border-radius:var(--radius-sm,10px);padding:.2rem .5rem;font-size:.76rem;font-weight:800}.cutscene-claim-btn{touch-action:manipulation;align-items:center;gap:.42rem;min-width:48px;min-height:48px;padding:.5rem .9rem;display:inline-flex}.cutscene-footer{padding:0 1rem 1rem;display:flex}.cutscene-next-stage-btn{width:100%;min-width:48px;min-height:52px;color:var(--accent-primary-fg,#fff);touch-action:manipulation;justify-content:center;align-items:center;gap:.5rem;font-size:.95rem;font-weight:800;display:inline-flex}@media (height<=620px) and (orientation:landscape){.dungeon-campaign-root{gap:.5rem}.dungeon-3d-viewport{height:clamp(178px,33dvh,215px)}.dungeon-npc-section,.dungeon-stage-map-card,.dungeon-trial-panel{padding:.55rem .68rem}.dungeon-trial-options-grid{gap:.4rem}}@media (width<=859px){.dungeon-workspace-grid{grid-template-columns:minmax(0,1fr);gap:.75rem}.dungeon-biome-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.dungeon-3d-viewport{height:clamp(210px,30dvh,275px)}.dungeon-npc-strip{grid-template-columns:repeat(auto-fit,minmax(min(100%,135px),1fr))}}@media (width<=580px){.dungeon-trial-options-grid,.npc-choices-grid{grid-template-columns:minmax(0,1fr)}.npc-modal-header{flex-wrap:wrap}}.book-studio-stage{--book-paper-bg:var(--bg-surface,#fffdf8);--book-paper-elevated:var(--bg-elevated,#fff);--book-paper-subtle:var(--bg-subtle,#f5efe4);--book-ink-primary:var(--text-primary,#1b2a3b);--book-ink-secondary:var(--text-secondary,#475b70);--book-ink-muted:var(--text-muted,#6c7e91);--book-border:var(--border-subtle,#e2d9c8);--book-border-strong:var(--border-strong,#cbbda4);--book-accent:var(--accent-primary,#e05328);--book-accent-fg:var(--accent-primary-fg,#fff);--book-jade:var(--accent-jade,#1f7a68);--book-jade-soft:var(--accent-jade-soft,#1f7a681f);--book-amber:var(--accent-amber,#c97a16);--book-amber-soft:var(--accent-amber-soft,#c97a1626);--book-coral-soft:var(--accent-coral-soft,#e053281f);--book-karaoke-bg:#f59e0b29;--book-karaoke-border:#d97706;box-sizing:border-box;flex-direction:column;gap:1rem;width:100%;min-width:0;max-width:100%;display:flex;overflow-x:clip}[data-theme=studio-dark] .book-studio-stage{--book-karaoke-bg:#f59e0b38;--book-karaoke-border:#fbbf24}.book-studio-stage *,.book-studio-stage :before,.book-studio-stage :after{box-sizing:border-box}.book-touch-btn,.book-studio-stage button,.book-studio-stage [role=tab],.book-source-link-btn{touch-action:manipulation;min-width:48px;min-height:48px}.book-studio-stage select,.book-studio-stage input[type=search],.book-studio-stage input[type=text]{border-radius:var(--radius-sm,10px);border:1.5px solid var(--book-border-strong);background:var(--book-paper-elevated);min-height:48px;color:var(--book-ink-primary);font-size:1rem;line-height:1.35;font-family:var(--font-sans,sans-serif);touch-action:manipulation;max-width:100%;padding:.55rem .85rem}.book-studio-stage select:focus-visible,.book-studio-stage input:focus-visible,.book-studio-stage button:focus-visible,.book-word-token:focus-visible,.book-shelf-card:focus-visible{outline:3px solid var(--book-accent);outline-offset:2px}.book-studio-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;width:100%;min-width:0;display:flex}.book-studio-header-left{flex-wrap:wrap;align-items:center;gap:.75rem;min-width:0;display:flex}.book-studio-title-wrap{min-width:0}.book-studio-title-wrap h1{color:var(--book-ink-primary);overflow-wrap:anywhere;margin:.15rem 0 0;font-size:clamp(1.15rem,2.2vw,1.55rem);line-height:1.25}.book-studio-stats-strip{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.book-stat-pill{background:var(--book-paper-subtle);color:var(--book-ink-primary);border:1px solid var(--book-border);border-radius:999px;align-items:center;gap:.35rem;padding:.35rem .7rem;font-size:.84rem;font-weight:700;display:inline-flex}.book-top-tabs{background:var(--book-paper-subtle);border:1px solid var(--book-border);border-radius:var(--radius-md,14px);flex-wrap:wrap;align-items:center;gap:.5rem;width:100%;padding:.55rem;display:flex}.book-filter-tab{border-radius:var(--radius-sm,10px);background:var(--book-paper-elevated);min-width:48px;min-height:48px;color:var(--book-ink-secondary);font-family:var(--font-sans,sans-serif);cursor:pointer;border:1.5px solid #0000;flex:auto;justify-content:center;align-items:center;gap:.4rem;padding:.55rem .9rem;font-size:.92rem;font-weight:700;transition:background .15s,color .15s,border-color .15s,transform .12s;display:inline-flex}.book-filter-tab:hover{border-color:var(--book-border-strong);color:var(--book-ink-primary)}.book-filter-tab.is-active{background:var(--book-accent);color:var(--book-accent-fg);border-color:var(--book-accent);box-shadow:0 3px 10px #0000001f}.book-filter-tab.is-sources-tab.is-active{background:var(--book-jade);color:#fff;border-color:var(--book-jade)}.book-shelf-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;width:100%;min-width:0;display:flex}.book-search-input{flex:220px;width:100%;min-width:0}.book-shelf-count{color:var(--book-ink-secondary);font-size:.88rem;font-weight:600}.book-shelf-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:1rem;width:100%;min-width:0;display:grid}.book-shelf-card{background:var(--book-paper-elevated);border:1.5px solid var(--book-border);border-radius:var(--radius-md,16px);cursor:pointer;min-width:0;min-height:48px;box-shadow:var(--shadow-card,0 4px 14px #0000000d);touch-action:manipulation;text-align:left;flex-direction:column;transition:transform .16s,box-shadow .16s,border-color .16s;display:flex;overflow:hidden}.book-shelf-card:hover{border-color:var(--book-accent);box-shadow:var(--shadow-hover,0 8px 22px #0000001a);transform:translateY(-2px)}.book-card-cover-wrap{background:var(--book-paper-subtle);width:100%;height:148px;position:relative;overflow:hidden}.book-card-cover-img{object-fit:cover;width:100%;height:100%;display:block}.book-card-code-badge{color:#fff;letter-spacing:.02em;background:#0f172ad1;border-radius:999px;padding:.22rem .58rem;font-size:.78rem;font-weight:800;position:absolute;top:.55rem;left:.55rem}.book-card-level-badge{color:#0f172a;background:#fffffff0;border-radius:999px;padding:.22rem .6rem;font-size:.76rem;font-weight:800;position:absolute;bottom:.55rem;right:.55rem}.book-card-body{flex-direction:column;flex:1;gap:.45rem;min-width:0;padding:.9rem;display:flex}.book-card-meta-row{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.book-meta-tag{background:var(--book-paper-subtle);color:var(--book-ink-secondary);border-radius:6px;align-items:center;padding:.16rem .5rem;font-size:.75rem;font-weight:700;display:inline-flex}.book-meta-tag.is-jade{background:var(--book-jade-soft);color:var(--book-jade)}.book-meta-tag.is-amber{background:var(--book-amber-soft);color:var(--book-amber)}.book-card-title-main{color:var(--book-ink-primary);overflow-wrap:anywhere;margin:0;font-size:1.04rem;font-weight:800;line-height:1.3}.book-card-title-sub{color:var(--book-ink-secondary);overflow-wrap:anywhere;margin:0;font-size:.86rem;font-weight:600}.book-card-summary{color:var(--book-ink-muted);-webkit-line-clamp:3;overflow-wrap:anywhere;-webkit-box-orient:vertical;margin:.15rem 0 0;font-size:.84rem;line-height:1.45;display:-webkit-box;overflow:hidden}.book-card-footer{border-top:1px dashed var(--book-border);color:var(--book-accent);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.45rem;margin-top:auto;padding-top:.6rem;font-size:.8rem;font-weight:700;display:flex}.book-reader-view{flex-direction:column;gap:1rem;width:100%;min-width:0;display:flex}.book-reader-topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;width:100%;display:flex}.book-reader-layout{flex-direction:column;gap:1rem;width:100%;min-width:0;display:flex}.book-hero-card{background:var(--book-paper-elevated);border:1.5px solid var(--book-border);border-radius:var(--radius-md,16px);box-shadow:var(--shadow-card,0 4px 14px #0000000d);grid-template-columns:minmax(0,280px) minmax(0,1fr);gap:1rem;min-width:0;padding:1rem;display:grid}.book-hero-art-wrap{border-radius:var(--radius-sm,12px);border:1px solid var(--book-border);background:var(--book-paper-subtle);width:100%;max-height:210px;overflow:hidden}.book-hero-art-img{object-fit:cover;width:100%;height:100%;max-height:210px;display:block}.book-hero-info{flex-direction:column;gap:.5rem;min-width:0;display:flex}.book-hero-title{color:var(--book-ink-primary);overflow-wrap:anywhere;margin:0;font-size:clamp(1.12rem,2vw,1.42rem);font-weight:800}.book-hero-subtitle{color:var(--book-ink-secondary);overflow-wrap:anywhere;margin:0;font-size:.95rem;font-weight:600}.book-attribution-note{color:var(--book-ink-muted);background:var(--book-paper-subtle);overflow-wrap:anywhere;border-radius:8px;margin:0;padding:.45rem .65rem;font-size:.79rem;line-height:1.4}.book-npc-narrator-box{border-radius:var(--radius-sm,10px);background:var(--book-amber-soft);border:1px solid var(--book-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;min-width:0;padding:.65rem .8rem;display:flex}.book-npc-narrator-text{min-width:0;color:var(--book-ink-primary);overflow-wrap:anywhere;flex:200px;font-size:.88rem;line-height:1.45}.book-chapter-nav-bar{background:var(--book-paper-elevated);border:1.5px solid var(--book-border);border-radius:var(--radius-md,14px);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.55rem;width:100%;min-width:0;padding:.65rem;display:flex}.book-chapter-tabs-group{flex-wrap:wrap;flex:auto;align-items:center;gap:.45rem;min-width:0;display:flex}.book-chapter-tab-btn{border-radius:var(--radius-sm,10px);border:1.5px solid var(--book-border);background:var(--book-paper-subtle);min-width:48px;min-height:48px;color:var(--book-ink-secondary);cursor:pointer;justify-content:center;align-items:center;gap:.35rem;padding:.5rem .85rem;font-size:.88rem;font-weight:700;display:inline-flex}.book-chapter-tab-btn.is-active{background:var(--book-accent);color:var(--book-accent-fg);border-color:var(--book-accent)}.book-audio-toolbar{background:var(--book-paper-subtle);border:1.5px solid var(--book-border);border-radius:var(--radius-md,14px);flex-wrap:wrap;align-items:center;gap:.6rem;width:100%;min-width:0;padding:.75rem;display:flex}.book-karaoke-btn{border-radius:var(--radius-sm,10px);background:var(--book-accent);min-width:48px;min-height:48px;color:var(--book-accent-fg);cursor:pointer;border:none;justify-content:center;align-items:center;gap:.45rem;padding:.6rem 1rem;font-size:.94rem;font-weight:800;display:inline-flex}.book-karaoke-btn.is-playing{background:var(--book-jade);color:#fff}.book-speed-field{color:var(--book-ink-primary);align-items:center;gap:.45rem;font-size:.88rem;font-weight:700;display:inline-flex}.book-bilingual-btn{border-radius:var(--radius-sm,10px);border:1.5px solid var(--book-border-strong);background:var(--book-paper-elevated);min-width:48px;min-height:48px;color:var(--book-ink-primary);cursor:pointer;justify-content:center;align-items:center;gap:.4rem;padding:.55rem .9rem;font-size:.9rem;font-weight:700;display:inline-flex}.book-bilingual-btn.is-active{background:var(--book-jade-soft);border-color:var(--book-jade);color:var(--book-jade)}.book-locale-pills{flex-wrap:wrap;gap:.35rem;margin-left:auto;display:inline-flex}.book-locale-pill{border:1.5px solid var(--book-border);background:var(--book-paper-elevated);min-width:48px;min-height:48px;color:var(--book-ink-secondary);cursor:pointer;border-radius:8px;padding:.45rem .75rem;font-size:.84rem;font-weight:700}.book-locale-pill.is-active{border-color:var(--book-accent);color:var(--book-accent);background:var(--book-coral-soft)}.book-sentences-list{flex-direction:column;gap:.85rem;width:100%;min-width:0;display:flex}.book-sentence-wrapper{flex-direction:column;gap:.5rem;width:100%;min-width:0;display:flex}.book-sentence-row{background:var(--book-paper-elevated);border:1.5px solid var(--book-border);border-radius:var(--radius-md,14px);flex-direction:column;gap:.55rem;width:100%;min-width:0;padding:.95rem 1rem;transition:background .16s,border-color .16s,box-shadow .16s;display:flex}.book-sentence-row.is-karaoke-active,.book-sentence-row.karaoke-active{background:var(--book-karaoke-bg);border-color:var(--book-karaoke-border);box-shadow:0 0 0 2px #d9770638}.book-sentence-top{justify-content:space-between;align-items:flex-start;gap:.65rem;min-width:0;display:flex}.book-sentence-main-copy{flex:auto;min-width:0}.book-speaker-chip{background:var(--book-paper-subtle);color:var(--book-ink-secondary);border-radius:6px;margin-bottom:.3rem;padding:.14rem .52rem;font-size:.75rem;font-weight:800;display:inline-block}.book-sentence-primary-text{color:var(--book-ink-primary);overflow-wrap:anywhere;margin:0;font-size:clamp(1.02rem,1.6vw,1.18rem);font-weight:700;line-height:1.58}.book-sentence-pinyin{color:var(--book-ink-secondary);overflow-wrap:anywhere;margin:.22rem 0 0;font-size:.88rem}.book-sentence-speak-btn{border:1px solid var(--book-border);background:var(--book-paper-subtle);min-width:48px;min-height:48px;color:var(--book-ink-primary);cursor:pointer;border-radius:10px;flex:none;justify-content:center;align-items:center;display:inline-flex}.book-bilingual-block{background:var(--book-paper-subtle);border-left:3px solid var(--book-jade);border-radius:10px;flex-direction:column;gap:.25rem;min-width:0;padding:.6rem .75rem;display:flex}.book-bilingual-vi{color:var(--book-ink-primary);overflow-wrap:anywhere;margin:0;font-size:.94rem;font-weight:700}.book-bilingual-cross{color:var(--book-ink-secondary);overflow-wrap:anywhere;margin:0;font-size:.85rem}.book-tokens-strip{flex-wrap:wrap;align-items:center;gap:.42rem;min-width:0;padding-top:.25rem;display:flex}.book-tokens-label{color:var(--book-ink-muted);margin-right:.15rem;font-size:.76rem;font-weight:700}.book-word-token{border:1.5px solid var(--book-border);background:var(--book-paper-subtle);min-height:40px;color:var(--book-ink-primary);cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;border-radius:9px;align-items:center;gap:.3rem;padding:.3rem .62rem;font-size:.9rem;font-weight:700;transition:border-color .14s,background .14s,transform .1s;display:inline-flex}.book-word-token:hover{border-color:var(--book-accent);background:var(--book-coral-soft)}.book-word-token.is-selected{border-color:var(--book-accent);background:var(--book-accent);color:var(--book-accent-fg)}.book-word-token.is-saved{border-color:var(--book-jade)}.book-word-token-phonetic{opacity:.82;font-size:.76rem;font-weight:600}.book-word-popover{border-radius:var(--radius-md,14px);background:var(--book-paper-elevated);border:2px solid var(--book-accent);flex-direction:column;gap:.65rem;width:100%;min-width:0;max-width:100%;padding:.95rem 1rem;display:flex;box-shadow:0 8px 24px #0000001a}.book-popover-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;min-width:0;display:flex}.book-popover-word-group{flex-wrap:wrap;align-items:baseline;gap:.5rem;min-width:0;display:flex}.book-popover-en{color:var(--book-ink-primary);overflow-wrap:anywhere;font-size:1.2rem;font-weight:800}.book-popover-ipa{color:var(--book-accent);font-size:.92rem;font-weight:600}.book-popover-pos{text-transform:uppercase;background:var(--book-paper-subtle);color:var(--book-ink-secondary);border-radius:6px;padding:.14rem .48rem;font-size:.74rem;font-weight:800}.book-popover-meanings{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:.55rem;min-width:0;display:grid}.book-popover-meaning-card{background:var(--book-paper-subtle);border-radius:10px;min-width:0;padding:.55rem .75rem}.book-popover-meaning-label{color:var(--book-ink-muted);margin-bottom:.15rem;font-size:.74rem;font-weight:700;display:block}.book-popover-meaning-val{color:var(--book-ink-primary);overflow-wrap:anywhere;font-size:.95rem;font-weight:700}.book-popover-example{color:var(--book-ink-secondary);overflow-wrap:anywhere;margin:0;font-size:.84rem}.book-popover-actions{flex-wrap:wrap;align-items:center;gap:.55rem;display:flex}.book-save-fsrs-btn{background:var(--book-jade);color:#fff;cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;gap:.45rem;min-width:48px;min-height:48px;padding:.55rem 1rem;font-size:.9rem;font-weight:800;display:inline-flex}.book-save-fsrs-btn.is-saved{background:var(--status-success,#15803d)}.book-quiz-section{background:var(--book-paper-elevated);border:1.5px solid var(--book-border);border-radius:var(--radius-md,16px);flex-direction:column;gap:.9rem;width:100%;min-width:0;padding:1.1rem;display:flex}.book-quiz-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.book-quiz-header h2{color:var(--book-ink-primary);margin:0;font-size:1.12rem}.book-quiz-card{background:var(--book-paper-subtle);border:1px solid var(--book-border);border-radius:12px;flex-direction:column;gap:.6rem;min-width:0;padding:.9rem;display:flex}.book-quiz-q-title{color:var(--book-ink-primary);overflow-wrap:anywhere;margin:0;font-size:.96rem;font-weight:800}.book-quiz-q-vi{color:var(--book-ink-secondary);overflow-wrap:anywhere;margin:0;font-size:.87rem}.book-quiz-options-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:.5rem;width:100%;min-width:0;display:grid}.book-quiz-option-btn{text-align:left;border:1.5px solid var(--book-border-strong);background:var(--book-paper-elevated);width:100%;min-width:48px;min-height:48px;color:var(--book-ink-primary);cursor:pointer;overflow-wrap:anywhere;border-radius:10px;justify-content:flex-start;align-items:center;gap:.5rem;padding:.6rem .85rem;font-size:.89rem;font-weight:600;line-height:1.38;display:flex}.book-quiz-option-btn.selected{border-color:var(--book-accent);background:var(--book-coral-soft);font-weight:800}.book-quiz-option-btn.is-correct{border-color:var(--status-success,#15803d);background:var(--status-success-bg,#15803d24)}.book-quiz-option-btn.is-wrong{border-color:var(--status-error,#dc2626);background:var(--status-error-bg,#dc26261f)}.book-quiz-explanation{background:var(--book-paper-elevated);border-left:3px solid var(--book-jade);color:var(--book-ink-primary);overflow-wrap:anywhere;border-radius:8px;margin:0;padding:.55rem .75rem;font-size:.85rem}.book-quiz-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding-top:.35rem;display:flex}.book-next-chapter-cta{background:var(--book-jade);color:#fff;cursor:pointer;border:none;border-radius:12px;justify-content:center;align-items:center;gap:.45rem;min-width:48px;min-height:48px;padding:.65rem 1.15rem;font-size:.95rem;font-weight:800;display:inline-flex}.book-sources-panel{flex-direction:column;gap:1rem;width:100%;min-width:0;display:flex}.book-sources-cats{flex-wrap:wrap;gap:.45rem;width:100%;display:flex}.book-source-cat-pill{border:1.5px solid var(--book-border);background:var(--book-paper-elevated);min-width:48px;min-height:48px;color:var(--book-ink-secondary);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:.35rem;padding:.5rem .85rem;font-size:.86rem;font-weight:700;display:inline-flex}.book-source-cat-pill.is-active{background:var(--book-jade);color:#fff;border-color:var(--book-jade)}.book-sources-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr));gap:.9rem;width:100%;min-width:0;display:grid}.book-source-card{background:var(--book-paper-elevated);border:1.5px solid var(--book-border);border-radius:var(--radius-md,14px);overflow-wrap:anywhere;word-break:break-word;flex-direction:column;gap:.5rem;min-width:0;padding:.95rem;display:flex}.book-source-card-title{color:var(--book-ink-primary);overflow-wrap:anywhere;margin:0;font-size:1rem;font-weight:800}.book-source-desc{color:var(--book-ink-secondary);overflow-wrap:anywhere;margin:0;font-size:.85rem;line-height:1.45}.book-source-link-btn{border:1.5px solid var(--book-border-strong);background:var(--book-paper-subtle);color:var(--book-ink-primary);border-radius:10px;justify-content:center;align-items:center;gap:.4rem;margin-top:auto;padding:.55rem .9rem;font-size:.88rem;font-weight:700;text-decoration:none;display:inline-flex}.book-api-feed-box{background:var(--book-paper-elevated);border:2px solid var(--book-jade);border-radius:var(--radius-md,16px);overflow-wrap:anywhere;word-break:break-word;flex-direction:column;gap:.75rem;width:100%;min-width:0;padding:1rem;display:flex}.book-api-endpoints-row{flex-wrap:wrap;gap:.45rem;width:100%;display:flex}.book-api-preview-btn{border:1.5px solid var(--book-border-strong);background:var(--book-paper-subtle);min-width:48px;min-height:48px;color:var(--book-ink-primary);cursor:pointer;overflow-wrap:anywhere;border-radius:8px;justify-content:center;align-items:center;padding:.45rem .8rem;font-family:monospace;font-size:.82rem;font-weight:700;display:inline-flex}.book-api-preview-btn.is-active{border-color:var(--book-jade);background:var(--book-jade-soft);color:var(--book-jade)}.book-api-json-pre{background:var(--book-paper-subtle);border:1px solid var(--book-border);color:var(--book-ink-primary);white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;border-radius:10px;max-width:100%;max-height:240px;margin:0;padding:.75rem;font-size:.79rem;line-height:1.42;overflow-y:auto}@media (width<=720px){.book-hero-card{grid-template-columns:minmax(0,1fr)}.book-hero-art-wrap,.book-hero-art-img{max-height:170px}.book-locale-pills{margin-left:0}}@media (height<=640px) and (orientation:landscape){.book-studio-stage{gap:.65rem}.book-hero-card{grid-template-columns:200px minmax(0,1fr);gap:.75rem;padding:.7rem}.book-hero-art-wrap,.book-hero-art-img{max-height:135px}.book-card-cover-wrap{height:118px}.book-sentence-row{padding:.7rem .85rem}}@media (width>=1440px){.book-reader-layout{grid-template-columns:350px minmax(0,1fr);align-items:start;gap:1.25rem;display:grid}.book-hero-card{grid-template-columns:minmax(0,1fr);position:sticky;top:5.2rem}}.ap-stage{--ap-canvas-max:min(100%, 380px, calc(100dvh - 250px));box-sizing:border-box;flex-direction:column;gap:.85rem;width:100%;min-width:0;max-width:100%;display:flex;overflow-x:clip}.ap-stage *,.ap-stage :before,.ap-stage :after{box-sizing:border-box}:where(.ap-stage) :where(button,select,input,[role=tab]){touch-action:manipulation;min-width:44px;min-height:44px}.ap-stage select,.ap-stage input{font-size:max(16px,1rem)}.ap-header{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-card);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;min-width:0;padding:.75rem .95rem;display:flex}.ap-header-title-group{flex:240px;align-items:center;gap:.65rem;min-width:0;display:flex}.ap-title-block{min-width:0}.ap-title-block h2{font-family:var(--font-display);color:var(--text-primary);margin:0;font-size:clamp(1.02rem,1.8vw,1.28rem);line-height:1.25}.ap-subtitle{color:var(--text-secondary);margin:.12rem 0 0;font-size:.84rem}.ap-header-controls{flex-wrap:wrap;align-items:center;gap:.5rem;min-width:0;display:flex}.ap-nav-bar{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;min-width:0;padding:.55rem .75rem;display:flex}.ap-lang-switch,.ap-mode-tabs{flex-wrap:wrap;align-items:center;gap:.4rem;min-width:0;display:flex}.ap-lang-btn{border-radius:var(--radius-sm);border:1.5px solid var(--border-subtle);background:var(--bg-subtle);color:var(--text-secondary);font-family:var(--font-display);cursor:pointer;justify-content:center;align-items:center;gap:.4rem;padding:.45rem .85rem;font-size:.92rem;font-weight:700;transition:background-color .16s,color .16s,border-color .16s,transform .12s;display:inline-flex}.ap-lang-btn:hover{border-color:var(--border-strong);color:var(--text-primary)}.ap-lang-btn.active{background:var(--accent-primary);color:var(--accent-primary-fg);border-color:var(--accent-primary);box-shadow:var(--btn-bevel)}.ap-mode-tab{border-radius:var(--radius-sm);border:1.5px solid var(--border-subtle);background:var(--bg-elevated);color:var(--text-secondary);font-family:var(--font-display);cursor:pointer;justify-content:center;align-items:center;gap:.4rem;padding:.45rem .9rem;font-size:.92rem;font-weight:700;transition:background-color .16s,color .16s,border-color .16s;display:inline-flex}.ap-mode-tab.ap-mode-tab-listening{padding:0}.ap-tab-inner{justify-content:center;align-items:center;gap:.4rem;width:100%;min-width:44px;height:100%;min-height:44px;padding:.45rem .9rem;display:inline-flex}.ap-mode-tab:hover{border-color:var(--accent-jade);color:var(--text-primary)}.ap-mode-tab.active{background:var(--accent-jade);color:#fff;border-color:var(--accent-jade)}.ap-workspace{grid-template-columns:minmax(0,1fr);align-items:start;gap:.85rem;min-width:0;display:grid}.ap-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-card);min-width:0;padding:.9rem}.ap-section-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.65rem;display:flex}.ap-section-heading h3{font-family:var(--font-display);color:var(--text-primary);margin:0;font-size:1.02rem}.ap-az-grid{grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:.45rem;min-width:0;display:grid}.ap-az-strip{grid-template-columns:repeat(auto-fill,minmax(50px,1fr));gap:.35rem;min-width:0;display:grid}.ap-stage .ap-letter-tile{border-radius:var(--radius-sm);border:1.5px solid var(--border-subtle);background:var(--bg-elevated);min-width:48px;min-height:52px;color:var(--text-primary);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:.08rem;padding:.3rem .25rem;transition:transform .12s,border-color .15s,background-color .15s;display:flex}.ap-stage .ap-letter-tile.compact{min-height:48px;padding:.2rem}.ap-letter-tile:hover{border-color:var(--accent-primary);transform:translateY(-1px)}.ap-letter-tile.active{background:var(--accent-coral-soft);border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-primary)}.ap-letter-glyph{font-family:var(--font-display);font-size:1.08rem;font-weight:800;line-height:1.1}.ap-letter-meta{color:var(--text-secondary);font-size:.72rem;line-height:1.1}.ap-detail-hero{border-radius:var(--radius-md);background:var(--bg-subtle);border:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;padding:.75rem;display:flex}.ap-big-symbol-box{align-items:center;gap:.75rem;min-width:0;display:flex}.ap-big-symbol{border-radius:var(--radius-md);background:var(--bg-elevated);border:2px solid var(--accent-primary);min-width:68px;min-height:68px;font-family:var(--font-display);color:var(--accent-primary);justify-content:center;align-items:center;padding:.35rem .65rem;font-size:2rem;font-weight:800;display:flex}.ap-ipa-badges{flex-wrap:wrap;gap:.38rem;margin-top:.25rem;display:flex}.ap-badge{background:var(--bg-elevated);border:1px solid var(--border-subtle);color:var(--text-primary);border-radius:999px;align-items:center;gap:.28rem;padding:.2rem .55rem;font-size:.8rem;font-weight:700;display:inline-flex}.ap-badge.jade{background:var(--accent-jade-soft);color:var(--accent-jade);border-color:var(--accent-jade)}.ap-badge.amber{background:var(--accent-amber-soft);color:var(--text-primary);border-color:var(--accent-amber)}.ap-audio-actions{flex-wrap:wrap;gap:.45rem;display:flex}.ap-tip-box{border-radius:var(--radius-sm);background:var(--accent-amber-soft);border-left:4px solid var(--accent-amber);color:var(--text-primary);margin-bottom:.75rem;padding:.65rem .8rem;font-size:.9rem}.ap-starter-list{flex-direction:column;gap:.55rem;display:flex}.ap-starter-item{border-radius:var(--radius-sm);background:var(--bg-elevated);border:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;padding:.6rem .75rem;display:flex}.ap-starter-main{flex:200px;align-items:center;gap:.65rem;min-width:0;display:flex}.ap-starter-emoji{flex-shrink:0;font-size:1.65rem;line-height:1}.ap-starter-text{min-width:0}.ap-starter-word-line{flex-wrap:wrap;align-items:baseline;gap:.4rem;display:flex}.ap-starter-word{font-family:var(--font-display);color:var(--text-primary);font-size:1.04rem;font-weight:800}.ap-starter-ipa{color:var(--accent-jade);font-size:.84rem;font-weight:600}.ap-starter-vi{color:var(--text-secondary);font-size:.88rem;font-weight:700}.ap-starter-sentence{color:var(--text-muted);margin:.14rem 0 0;font-size:.82rem}.ap-starter-btns{flex-wrap:wrap;gap:.4rem;display:flex}.ap-pinyin-groups{flex-direction:column;gap:.85rem;min-width:0;display:flex}.ap-pinyin-group-box{border-radius:var(--radius-md);background:var(--bg-elevated);border:1px solid var(--border-subtle);min-width:0;padding:.75rem}.ap-pinyin-subgroup-label{color:var(--text-secondary);margin:.45rem 0 .3rem;font-size:.78rem;font-weight:700}.ap-pinyin-grid{grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:.4rem;min-width:0;display:grid}.ap-pinyin-tile{border-radius:var(--radius-sm);border:1.5px solid var(--border-subtle);background:var(--bg-surface);min-width:48px;min-height:48px;color:var(--text-primary);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;padding:.28rem .3rem;transition:border-color .15s,background-color .15s,transform .12s;display:flex}.ap-pinyin-tile:hover{border-color:var(--accent-jade);transform:translateY(-1px)}.ap-pinyin-tile.active{background:var(--accent-jade-soft);border-color:var(--accent-jade);box-shadow:0 0 0 2px var(--accent-jade)}.ap-pinyin-symbol{font-family:var(--font-display);font-size:1rem;font-weight:800;line-height:1.15}.ap-pinyin-sub{color:var(--text-secondary);font-size:.7rem;line-height:1.1}.ap-tone-mixer{grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem;min-width:0;margin-bottom:.75rem;display:grid}.ap-tone-btn{border-radius:var(--radius-sm);border:1.5px solid var(--border-subtle);background:var(--bg-elevated);min-width:48px;min-height:52px;color:var(--text-primary);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:.1rem;padding:.35rem .3rem;transition:background-color .15s,border-color .15s;display:flex}.ap-tone-btn:hover{border-color:var(--accent-primary)}.ap-tone-btn.active{background:var(--accent-coral-soft);border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-primary)}.ap-tone-syllable{font-family:var(--font-display);color:var(--accent-primary);font-size:1.05rem;font-weight:800}.ap-tone-label{color:var(--text-secondary);font-size:.72rem;font-weight:700}.ap-stroke-radical-selector{flex-direction:column;gap:.65rem;min-width:0;display:flex}.ap-sr-grid{grid-template-columns:repeat(auto-fill,minmax(66px,1fr));gap:.4rem;min-width:0;display:grid}.ap-sr-tile{border-radius:var(--radius-sm);border:1.5px solid var(--border-subtle);background:var(--bg-elevated);min-width:48px;min-height:52px;color:var(--text-primary);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:.08rem;padding:.25rem .3rem;transition:border-color .15s,background-color .15s;display:flex}.ap-sr-tile:hover{border-color:var(--accent-amber)}.ap-sr-tile.active{background:var(--accent-amber-soft);border-color:var(--accent-amber);box-shadow:0 0 0 2px var(--accent-amber)}.ap-sr-glyph{font-family:var(--font-hanzi);font-size:1.25rem;font-weight:700;line-height:1.1}.ap-sr-sub{color:var(--text-secondary);font-size:.7rem;line-height:1.1}.ap-writing-layout{grid-template-columns:minmax(0,1fr);align-items:start;gap:.85rem;min-width:0;display:grid}.ap-canvas-stage{flex-direction:column;align-items:center;gap:.65rem;min-width:0;display:flex}.ap-canvas-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.45rem;width:100%;display:flex}.ap-canvas-frame{width:100%;max-width:var(--ap-canvas-max);aspect-ratio:1;border-radius:var(--radius-md);border:2px solid var(--border-strong);background:var(--bg-elevated);box-shadow:var(--shadow-card);touch-action:none;-webkit-user-select:none;user-select:none;position:relative;overflow:hidden}.ap-tracing-canvas{aspect-ratio:1;touch-action:none;-webkit-user-select:none;user-select:none;cursor:crosshair;width:100%;height:auto;display:block}.ap-canvas-actions{width:100%;max-width:var(--ap-canvas-max);grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;display:grid}.ap-score-badge{border-radius:var(--radius-md);border:1.5px solid var(--border-subtle);background:var(--bg-subtle);margin-bottom:.75rem;padding:.75rem .9rem}.ap-score-badge.passed{background:var(--status-success-bg);border-color:var(--status-success)}.ap-score-badge.retry{background:var(--status-error-bg);border-color:var(--status-error)}.ap-score-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.25rem;display:flex}.ap-score-number{font-family:var(--font-display);color:var(--text-primary);font-size:1.35rem;font-weight:800}.ap-score-stars{font-size:1.15rem;font-weight:800}.ap-ruling-legend{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.4rem;margin-top:.65rem;display:grid}.ap-legend-item{color:var(--text-secondary);border-radius:var(--radius-sm);background:var(--bg-subtle);align-items:center;gap:.4rem;padding:.3rem .5rem;font-size:.78rem;display:flex}.ap-legend-swatch{border-radius:2px;flex-shrink:0;width:18px;height:3px}.ap-listening-panel{flex-direction:column;gap:.85rem;min-width:0;display:flex}.ap-listening-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;display:flex}.ap-listening-select{border-radius:var(--radius-sm);border:1.5px solid var(--border-subtle);background:var(--bg-elevated);color:var(--text-primary);font-family:var(--font-sans);max-width:100%;padding:.45rem .75rem;font-weight:600}.ap-listening-stats{flex-wrap:wrap;gap:.45rem;display:flex}.ap-listening-prompt-card{border-radius:var(--radius-md);background:var(--bg-subtle);border:1.5px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.8rem;padding:.95rem 1rem;display:flex}.ap-listening-prompt-text h3{font-family:var(--font-display);color:var(--text-primary);margin:0 0 .25rem;font-size:1.1rem}.ap-listening-prompt-text p{color:var(--text-secondary);margin:0;font-size:.88rem}.ap-play-audio-btn{justify-content:center;align-items:center;gap:.5rem;min-height:50px;padding:.65rem 1.15rem;font-size:.98rem;font-weight:800;display:inline-flex}.ap-listening-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;min-width:0;display:grid}.ap-listening-option{border-radius:var(--radius-md);border:2px solid var(--border-subtle);background:var(--bg-elevated);min-width:48px;min-height:68px;color:var(--text-primary);text-align:left;cursor:pointer;align-items:center;gap:.65rem;padding:.7rem .85rem;transition:border-color .15s,background-color .15s,transform .12s;display:flex}.ap-listening-option:hover:not(:disabled){border-color:var(--accent-primary);transform:translateY(-1px)}.ap-listening-option.correct{background:var(--status-success-bg);border-color:var(--status-success)}.ap-listening-option.wrong{background:var(--status-error-bg);border-color:var(--status-error)}.ap-option-index{background:var(--bg-subtle);border:1px solid var(--border-subtle);width:32px;height:32px;font-family:var(--font-display);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.9rem;font-weight:800;display:inline-flex}.ap-option-content{flex:1;min-width:0}.ap-option-label{font-family:var(--font-display);color:var(--text-primary);font-size:1.12rem;font-weight:800;line-height:1.2}.ap-option-sub{color:var(--text-secondary);margin-top:.12rem;font-size:.82rem}.ap-listening-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;display:flex}@media (width>=860px) and (orientation:landscape){.ap-stage{--ap-canvas-max:min(44vw, 400px, calc(100dvh - 185px))}.ap-workspace{grid-template-columns:minmax(0,1.12fr) minmax(320px,.88fr)}.ap-writing-layout{grid-template-columns:minmax(280px, var(--ap-canvas-max)) minmax(0, 1fr)}}@media (width>=820px) and (height<=660px) and (orientation:landscape){.ap-stage{--ap-canvas-max:min(40vw, max(250px, calc(100dvh - 155px)));gap:.55rem}.ap-header,.ap-nav-bar,.ap-card{padding:.55rem .75rem}.ap-workspace{grid-template-columns:minmax(0,1.1fr) minmax(300px,.9fr);gap:.6rem}.ap-writing-layout{grid-template-columns:minmax(250px, var(--ap-canvas-max)) minmax(0, 1fr);gap:.65rem}.ap-listening-option{min-height:56px;padding:.5rem .7rem}}@media (width<=640px){.ap-tone-mixer{grid-template-columns:repeat(2,minmax(0,1fr))}.ap-listening-grid{grid-template-columns:minmax(0,1fr)}.ap-az-grid{grid-template-columns:repeat(auto-fill,minmax(54px,1fr))}}.dojo-classroom-stage{--dojo-wood-deep:#5c3a1e;--dojo-wood-mid:#8b5a2b;--dojo-wood-border:#8b5a2b57;--dojo-washi-bg:#fbf6eb;--dojo-washi-elevated:#fffcf5;--dojo-washi-warm:#f5ebd6;--dojo-vermilion:#c82a22;--dojo-vermilion-soft:#c82a221f;--dojo-celadon:#1f7a58;--dojo-celadon-soft:#1f7a581f;--dojo-lantern-amber:#d97706;--dojo-lantern-glow:#f59e0b38;--dojo-ink-text:#271e17;--dojo-muted-text:#655243;box-sizing:border-box;flex-direction:column;gap:.9rem;width:100%;min-width:0;max-width:100%;padding-bottom:1.25rem;display:flex;overflow-x:clip}[data-theme=studio-light] .dojo-classroom-stage{--dojo-washi-bg:#f8f4ec;--dojo-washi-elevated:#fff;--dojo-washi-warm:#efe7d6}[data-theme=studio-dark] .dojo-classroom-stage{--dojo-wood-deep:#d4a373;--dojo-wood-mid:#b07d4f;--dojo-wood-border:#d4a3734d;--dojo-washi-bg:#1e1915;--dojo-washi-elevated:#29221c;--dojo-washi-warm:#332921;--dojo-vermilion:#ef4444;--dojo-vermilion-soft:#ef44442e;--dojo-celadon:#34d399;--dojo-celadon-soft:#34d39929;--dojo-lantern-amber:#fbbf24;--dojo-lantern-glow:#fbbf243d;--dojo-ink-text:#f5efe6;--dojo-muted-text:#cbbba8}.dojo-classroom-stage *,.dojo-classroom-stage :before,.dojo-classroom-stage :after{box-sizing:border-box}[data-testid=east-asian-classroom-root] button{touch-action:manipulation;cursor:pointer;white-space:normal;overflow-wrap:anywhere;min-width:46px;max-width:100%;min-height:46px;font-family:inherit}[data-testid=east-asian-classroom-root] input,[data-testid=east-asian-classroom-root] select,[data-testid=east-asian-classroom-root] textarea{min-height:46px;font-size:max(16px,1rem)}.dojo-header{background:var(--dojo-washi-bg);border:1.5px solid var(--dojo-wood-border);border-radius:var(--radius-lg,16px);box-shadow:var(--shadow-card);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;min-width:0;padding:.75rem 1rem;display:flex}.dojo-header-left{flex-wrap:wrap;flex:320px;align-items:center;gap:.75rem;min-width:0;display:flex}.dojo-back-btn{border-radius:var(--radius-md,12px);border:1px solid var(--dojo-wood-border);background:var(--dojo-washi-elevated);color:var(--dojo-ink-text);align-items:center;gap:.4rem;padding:.5rem .85rem;font-weight:700;display:inline-flex}.dojo-title-group{flex:220px;min-width:0}.dojo-title-group h1{color:var(--dojo-ink-text);flex-wrap:wrap;align-items:center;gap:.45rem;margin:0;font-size:clamp(1.08rem,2vw,1.38rem);font-weight:800;line-height:1.25;display:flex}.dojo-script-pill{background:var(--dojo-vermilion-soft);color:var(--dojo-vermilion);border:1px solid #c82a224d;border-radius:999px;align-items:center;padding:.16rem .55rem;font-size:.82rem;font-weight:700;display:inline-flex}.dojo-subtitle{color:var(--dojo-muted-text);margin:.2rem 0 0;font-size:.85rem;line-height:1.35}.dojo-header-right{flex-wrap:wrap;align-items:center;gap:.55rem;min-width:0;display:flex}.dojo-persona-chip,.dojo-room-chip{background:var(--dojo-celadon-soft);color:var(--dojo-celadon);border-radius:999px;align-items:center;gap:.38rem;max-width:100%;padding:.42rem .75rem;font-size:.82rem;font-weight:700;display:inline-flex}.dojo-room-btn{border:1.5px solid var(--dojo-wood-border);background:var(--dojo-washi-elevated);color:var(--dojo-ink-text);border-radius:999px;align-items:center;gap:.4rem;padding:.45rem .85rem;font-size:.84rem;font-weight:700;display:inline-flex}.dojo-top-grid{grid-template-columns:minmax(0,1.22fr) minmax(0,1fr);align-items:stretch;gap:.9rem;min-width:0;display:grid}.dojo-pavilion-stage{background:var(--dojo-washi-bg);border:2px solid var(--dojo-wood-border);border-radius:var(--radius-lg,16px);box-shadow:var(--shadow-card);flex-direction:column;min-width:0;transition:box-shadow .25s,border-color .25s;display:flex;overflow:hidden}.dojo-pavilion-stage.is-lanterns-lit{box-shadow:0 8px 26px var(--dojo-lantern-glow)}.dojo-pavilion-topbar{background:var(--dojo-washi-warm);border-bottom:1.5px solid var(--dojo-wood-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;min-width:0;padding:.6rem .8rem;display:flex}.dojo-scroll-header{align-items:center;gap:.6rem;min-width:0;display:flex}.dojo-scroll-emblem-img{object-fit:cover;border:1.5px solid var(--dojo-wood-border);border-radius:8px;flex-shrink:0;width:44px;height:44px}.dojo-scroll-titles{flex-direction:column;min-width:0;display:flex}.dojo-scroll-motto{color:var(--dojo-ink-text);letter-spacing:.04em;font-size:.95rem;font-weight:800}.dojo-scroll-sub{color:var(--dojo-muted-text);font-size:.76rem}.dojo-pavilion-controls{flex-wrap:wrap;align-items:center;gap:.45rem;min-width:0;display:flex}.dojo-env-btn{border:1.5px solid var(--dojo-wood-border);background:var(--dojo-washi-elevated);color:var(--dojo-ink-text);border-radius:10px;justify-content:center;align-items:center;gap:.35rem;padding:.42rem .72rem;font-size:.8rem;font-weight:700;transition:transform .15s,background .2s;display:inline-flex}.dojo-env-btn.is-active{border-color:var(--dojo-celadon);background:var(--dojo-celadon-soft)}.dojo-env-btn.is-lantern-on{border-color:var(--dojo-lantern-amber);background:#f59e0b29}.dojo-seal-badge{background:var(--dojo-vermilion-soft);border:1.5px solid var(--dojo-vermilion);min-height:44px;color:var(--dojo-vermilion);border-radius:10px;align-items:center;gap:.38rem;padding:.42rem .75rem;font-size:.86rem;font-weight:800;display:inline-flex}.dojo-seal-stamp-icon{background:var(--dojo-vermilion);color:#fff;border-radius:4px;justify-content:center;align-items:center;width:24px;height:24px;font-size:.78rem;font-weight:900;display:inline-flex}.dojo-pavilion-viewport{background:#2c1d12;flex-direction:column;flex:auto;justify-content:space-between;width:100%;min-height:220px;padding:.65rem;display:flex;position:relative;overflow:hidden}.dojo-pavilion-bg-img{object-fit:cover;z-index:1;filter:saturate(1.04);width:100%;height:100%;position:absolute;inset:0}.dojo-pavilion-stage.is-lanterns-lit .dojo-pavilion-bg-img{filter:sepia(.1)saturate(1.12)brightness(.98)}.dojo-spatial-canvas{z-index:2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.dojo-shoji-wing{z-index:3;pointer-events:none;background:#faf2e1db;border:4px solid #6e4420;width:34%;transition:transform .42s cubic-bezier(.22,1,.36,1),opacity .35s;position:absolute;top:0;bottom:0}.dojo-shoji-left{left:0}.dojo-shoji-right{right:0}.dojo-shoji-left.is-open{opacity:.78;transform:translate(-86%)}.dojo-shoji-right.is-open{opacity:.78;transform:translate(86%)}.dojo-shoji-left.is-closed,.dojo-shoji-right.is-closed{opacity:.94;transform:translate(0)}.dojo-shoji-lattice{background-image:linear-gradient(90deg,#6e442061 2px,#0000 2px),linear-gradient(#6e442061 2px,#0000 2px);background-size:28px 34px;width:100%;height:100%}.dojo-spatial-props-strip{z-index:4;flex-wrap:wrap;justify-content:flex-end;gap:.4rem;display:flex;position:relative}.dojo-prop-chip{color:#fff8eb;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#261910bd;border:1.5px solid #fff8e8ad;border-radius:999px;padding:.38rem .68rem;font-size:.78rem;font-weight:700}.dojo-prop-chip.is-selected{background:#1f7a58eb;border-color:#a7f3d0}.dojo-characters-dock{z-index:4;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;margin-top:auto;padding-top:2.2rem;display:grid;position:relative}.dojo-character-btn{color:#fffaf0;text-align:left;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#24180fd1;border:2px solid #fff4e0b3;border-radius:12px;align-items:center;gap:.55rem;min-width:0;padding:.42rem .65rem;transition:transform .16s,border-color .2s;display:flex}.dojo-character-btn.is-speaking{border-color:#fbbf24;box-shadow:0 0 0 2px #fbbf2452}.dojo-character-avatar{object-fit:cover;background:#fbf6eb;border:2px solid #fbbf24;border-radius:50%;flex-shrink:0;width:46px;height:46px}.dojo-character-meta{flex-direction:column;min-width:0;display:flex}.dojo-character-meta strong{color:#fffaf0;font-size:.84rem;line-height:1.2}.dojo-character-meta small{color:#fde68a;font-size:.74rem}.dojo-sensei-panel{background:var(--dojo-washi-bg);border:2px solid var(--dojo-wood-border);border-radius:var(--radius-lg,16px);box-shadow:var(--shadow-card);flex-direction:column;gap:.65rem;min-width:0;padding:.85rem;display:flex}.dojo-sensei-header{flex-wrap:wrap;align-items:center;gap:.6rem;min-width:0;display:flex}.dojo-sensei-portrait{object-fit:cover;border:2px solid var(--dojo-wood-mid);background:#fbf6eb;border-radius:12px;flex-shrink:0;width:52px;height:52px}.dojo-sensei-speaker-info{flex:140px;min-width:0}.dojo-sensei-name{color:var(--dojo-ink-text);font-size:.96rem;font-weight:800}.dojo-sensei-title{color:var(--dojo-celadon);font-size:.8rem;font-weight:700}.dojo-speak-btn{border:1.5px solid var(--dojo-celadon);background:var(--dojo-celadon-soft);color:var(--dojo-celadon);border-radius:10px;align-items:center;gap:.35rem;padding:.45rem .78rem;font-size:.82rem;font-weight:700;display:inline-flex}.dojo-sensei-bubble{background:var(--dojo-washi-elevated);border-left:4px solid var(--dojo-vermilion);border-top:1px solid var(--dojo-wood-border);border-right:1px solid var(--dojo-wood-border);border-bottom:1px solid var(--dojo-wood-border);border-radius:12px;min-width:0;padding:.72rem .85rem}.dojo-sensei-zh{color:var(--dojo-ink-text);font-size:1.05rem;font-weight:800;line-height:1.4}.dojo-sensei-pinyin{color:var(--dojo-celadon);margin-top:.16rem;font-size:.82rem;font-weight:600}.dojo-sensei-vi{color:var(--dojo-muted-text);margin:.36rem 0 0;font-size:.88rem;line-height:1.42}.dojo-sensei-choices{grid-template-columns:repeat(2,minmax(0,1fr));gap:.48rem;min-width:0;margin-top:auto;display:grid}.dojo-sensei-choice-btn{border:1.5px solid var(--dojo-wood-border);background:var(--dojo-washi-elevated);color:var(--dojo-ink-text);text-align:left;border-radius:10px;flex-direction:column;justify-content:center;align-items:flex-start;gap:.16rem;min-width:0;padding:.48rem .68rem;transition:border-color .16s,background .16s;display:flex}.dojo-sensei-choice-btn:hover,.dojo-sensei-choice-btn.is-picked{border-color:var(--dojo-vermilion);background:var(--dojo-vermilion-soft)}.dojo-choice-zh{color:var(--dojo-celadon);font-size:.82rem;font-weight:800}.dojo-choice-vi{color:var(--dojo-ink-text);font-size:.78rem;font-weight:600;line-height:1.28}.dojo-station-tabs{grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem;min-width:0;display:grid}.dojo-station-tab{border:2px solid var(--dojo-wood-border);background:var(--dojo-washi-bg);min-height:52px;color:var(--dojo-ink-text);text-align:left;border-radius:12px;align-items:center;gap:.55rem;min-width:0;padding:.55rem .75rem;transition:transform .15s,border-color .2s,background .2s;display:flex}.dojo-station-tab.is-active{border-color:var(--dojo-vermilion);background:var(--dojo-washi-elevated);box-shadow:0 4px 12px var(--dojo-vermilion-soft)}.dojo-station-tab-icon{flex-shrink:0;font-size:1.35rem}.dojo-station-tab-labels{flex-direction:column;min-width:0;display:flex}.dojo-station-tab-labels strong{font-size:.88rem;line-height:1.2}.dojo-station-tab-labels small{color:var(--dojo-muted-text);font-size:.75rem}.dojo-station-body{background:var(--dojo-washi-bg);border:2px solid var(--dojo-wood-border);border-radius:var(--radius-lg,16px);box-shadow:var(--shadow-card);min-width:0;padding:1rem}.dojo-panel-heading h2{color:var(--dojo-ink-text);margin:0;font-size:1.08rem}.dojo-panel-heading p{color:var(--dojo-muted-text);margin:.25rem 0 .75rem;font-size:.86rem}.dojo-pinyin-station{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:1rem;min-width:0;display:grid}.dojo-bamboo-slips-grid{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:.45rem;margin-bottom:.75rem;display:grid}.dojo-bamboo-slip{color:#1f3a1d;background:linear-gradient(#eef6df 0%,#dcebc4 100%);border:1.5px solid #7294588c;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;padding:.45rem .35rem;font-weight:800;display:flex}[data-theme=studio-dark] .dojo-bamboo-slip{color:#e6f5e0;background:linear-gradient(#273c27 0%,#1c2d1c 100%)}.dojo-bamboo-slip.is-selected{border-color:var(--dojo-vermilion);box-shadow:0 0 0 2px var(--dojo-vermilion-soft)}.dojo-slip-symbol{font-size:1.08rem;font-weight:900}.dojo-slip-cat{opacity:.84;font-size:.68rem}.dojo-tone-mixer-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:.48rem;margin-bottom:.75rem;display:grid}.dojo-tone-btn{border:1.5px solid var(--dojo-wood-border);background:var(--dojo-washi-elevated);color:var(--dojo-ink-text);border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:.25rem;padding:.48rem;font-size:.8rem;display:flex}.dojo-tone-btn.is-active{border-color:var(--dojo-celadon);background:var(--dojo-celadon-soft);color:var(--dojo-celadon)}.dojo-tone-svg{width:100%;max-width:86px;height:36px}.dojo-bamboo-result-card{background:var(--dojo-washi-elevated);border:1.5px solid var(--dojo-wood-border);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.8rem;display:flex}.dojo-bamboo-result-main{flex:220px;align-items:center;gap:.8rem;min-width:0;display:flex}.dojo-bamboo-hanzi{color:var(--dojo-vermilion);font-size:2.35rem;font-weight:900;line-height:1}.dojo-bamboo-pinyin{color:var(--dojo-celadon);font-size:1.15rem;font-weight:800}.dojo-bamboo-meaning{color:var(--dojo-ink-text);font-size:.86rem}.dojo-bamboo-guide{color:var(--dojo-muted-text);margin-top:.16rem;font-size:.8rem}.dojo-bamboo-result-actions{flex-wrap:wrap;gap:.45rem;display:flex}.dojo-pinyin-drill-card{background:var(--dojo-washi-elevated);border:1.5px solid var(--dojo-wood-border);border-radius:12px;flex-direction:column;gap:.65rem;min-width:0;padding:.85rem;display:flex}.dojo-drill-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.dojo-drill-header h3{color:var(--dojo-ink-text);margin:0;font-size:.96rem}.dojo-drill-target{background:var(--dojo-washi-warm);border-radius:10px;align-items:center;gap:.75rem;padding:.6rem;display:flex}.dojo-drill-glyph{color:var(--dojo-ink-text);flex-shrink:0;font-size:2.2rem;font-weight:900}.dojo-drill-target p{color:var(--dojo-ink-text);margin:0;font-size:.88rem;font-weight:600}.dojo-drill-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.dojo-quiz-opt-btn{border:1.5px solid var(--dojo-wood-border);background:var(--dojo-washi-bg);color:var(--dojo-ink-text);border-radius:10px;padding:.55rem .7rem;font-size:.86rem;font-weight:700}.dojo-quiz-opt-btn.is-correct{border-color:var(--status-success,#16a34a);background:var(--status-success-bg,#16a34a26)}.dojo-quiz-opt-btn.is-wrong{border-color:var(--status-error,#dc2626);background:var(--status-error-bg,#dc262624)}.dojo-drill-footer{border-top:1px dashed var(--dojo-wood-border);flex-direction:column;gap:.5rem;padding-top:.4rem;display:flex}.dojo-drill-footer p{color:var(--dojo-ink-text);margin:0;font-size:.84rem}.dojo-calligraphy-studio{flex-direction:column;gap:.85rem;min-width:0;display:flex}.dojo-hanzi-selector-bar{grid-template-columns:repeat(auto-fill,minmax(62px,1fr));gap:.42rem;min-width:0;display:grid}.dojo-hanzi-pill{border:1.5px solid var(--dojo-wood-border);background:var(--dojo-washi-elevated);color:var(--dojo-ink-text);border-radius:10px;flex-direction:column;justify-content:center;align-items:center;padding:.35rem .25rem;display:flex;position:relative}.dojo-hanzi-pill.is-selected{border-color:var(--dojo-vermilion);background:var(--dojo-vermilion-soft)}.dojo-hanzi-pill-glyph{font-size:1.2rem;font-weight:800;line-height:1.1}.dojo-hanzi-pill-py{color:var(--dojo-muted-text);font-size:.7rem}.dojo-hanzi-pill-seal{color:#fff;background:var(--dojo-vermilion);border-radius:3px;padding:0 3px;font-size:.62rem;font-weight:900;position:absolute;top:2px;right:3px}.dojo-calligraphy-workspace{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:start;gap:1rem;min-width:0;display:grid}.dojo-paper-frame{background:var(--dojo-washi-warm);border:2px solid var(--dojo-wood-border);border-radius:14px;flex-direction:column;align-items:center;gap:.65rem;min-width:0;padding:.8rem;display:flex}.dojo-paper-header{width:100%;color:var(--dojo-ink-text);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem;font-size:.82rem;font-weight:700;display:flex}.dojo-accuracy-chip{border-radius:999px;padding:.2rem .55rem;font-size:.78rem;font-weight:800}.dojo-accuracy-chip.is-pass{background:var(--dojo-celadon-soft);color:var(--dojo-celadon)}.dojo-accuracy-chip.is-retry{background:var(--dojo-vermilion-soft);color:var(--dojo-vermilion)}.dojo-xuan-canvas{aspect-ratio:1;touch-action:none;-webkit-user-select:none;user-select:none;cursor:crosshair;border-radius:10px;width:min(100%,340px);min-width:210px;height:auto;display:block;box-shadow:0 6px 18px #281a0e29}.dojo-paper-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;width:100%;display:grid}.dojo-primary-seal-btn{background:var(--dojo-vermilion);color:#fff;border:none;border-radius:11px;min-height:48px;padding:.6rem .85rem;font-size:.9rem;font-weight:800;box-shadow:0 3px 10px #c82a224d}.dojo-secondary-btn,.dojo-mini-action-btn,.dojo-ink-grind-btn{border:1.5px solid var(--dojo-wood-border);background:var(--dojo-washi-elevated);min-height:46px;color:var(--dojo-ink-text);border-radius:10px;padding:.5rem .8rem;font-size:.84rem;font-weight:700}.dojo-inkstone-sidebar{flex-direction:column;gap:.75rem;min-width:0;display:flex}.dojo-char-detail-card,.dojo-inkstone-box,.dojo-calligraphy-feedback{background:var(--dojo-washi-elevated);border:1.5px solid var(--dojo-wood-border);border-radius:12px;min-width:0;padding:.85rem}.dojo-char-hero-row{align-items:center;gap:.85rem;min-width:0;display:flex}.dojo-char-specimen{color:#1c1917;background:#faf3e3;border:2px solid #c43a2e73;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:68px;height:68px;font-size:2.4rem;font-weight:900;display:flex}.dojo-char-meta{min-width:0}.dojo-char-pinyin{color:var(--dojo-celadon);font-size:1.15rem;font-weight:800}.dojo-char-hanviet{color:var(--dojo-ink-text);font-size:.88rem}.dojo-char-radical{color:var(--dojo-muted-text);margin-top:.16rem;font-size:.8rem}.dojo-char-audio-row{flex-wrap:wrap;gap:.5rem;margin-top:.65rem;display:flex}.dojo-inkstone-top{color:var(--dojo-ink-text);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.55rem;display:flex}.dojo-inkstone-sub{color:var(--dojo-muted-text);font-size:.82rem}.dojo-ink-meter-track{background:#78716c38;border-radius:999px;width:100%;height:12px;overflow:hidden}.dojo-ink-meter-fill{background:linear-gradient(90deg,#44403c 0%,#1c1917 100%);border-radius:999px;height:100%;transition:width .22s}[data-theme=studio-dark] .dojo-ink-meter-fill{background:linear-gradient(90deg,#a8a29e 0%,#f5f5f4 100%)}.dojo-calligraphy-feedback strong{color:var(--dojo-celadon);margin-bottom:.25rem;font-size:.88rem;display:block}.dojo-calligraphy-feedback p{color:var(--dojo-ink-text);margin:0;font-size:.86rem;line-height:1.42}.dojo-chime-stage-card{flex-direction:column;gap:.85rem;min-width:0;display:flex}.dojo-chime-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;display:flex}.dojo-chime-header h2{color:var(--dojo-ink-text);margin:0;font-size:1.08rem}.dojo-chime-header p{color:var(--dojo-muted-text);margin:.22rem 0 0;font-size:.88rem}.dojo-score-pill{background:var(--dojo-celadon-soft);color:var(--dojo-celadon);border-radius:999px;padding:.35rem .75rem;font-size:.84rem;font-weight:800}.dojo-chime-controls{flex-wrap:wrap;gap:.6rem;display:flex}.dojo-chime-btn{background:var(--dojo-celadon);color:#fff;border:none;border-radius:12px;min-height:50px;padding:.65rem 1.1rem;font-size:.94rem;font-weight:800}.dojo-listen-options-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;min-width:0;display:grid}.dojo-listen-opt-card{border:2px solid var(--dojo-wood-border);background:var(--dojo-washi-elevated);min-height:112px;color:var(--dojo-ink-text);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:.22rem;padding:.75rem .5rem;display:flex}.dojo-listen-opt-card.is-correct{border-color:var(--status-success,#16a34a);background:var(--status-success-bg,#16a34a29)}.dojo-listen-opt-card.is-wrong{border-color:var(--status-error,#dc2626);background:var(--status-error-bg,#dc262624)}.dojo-listen-emoji{font-size:1.65rem}.dojo-listen-hanzi{font-size:1.45rem;font-weight:900}.dojo-listen-pinyin{color:var(--dojo-celadon);font-size:.86rem;font-weight:700}.dojo-listen-vi{color:var(--dojo-muted-text);font-size:.78rem}.dojo-listen-feedback{background:var(--dojo-washi-elevated);border:1.5px solid var(--dojo-wood-border);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;padding:.75rem;display:flex}.dojo-listen-feedback p{color:var(--dojo-ink-text);flex:240px;margin:0;font-size:.88rem;font-weight:700}.dojo-dialogue-station{flex-direction:column;gap:.85rem;min-width:0;display:flex}.dojo-tea-scenarios-bar{grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;min-width:0;display:grid}.dojo-tea-tab{border:1.5px solid var(--dojo-wood-border);background:var(--dojo-washi-elevated);color:var(--dojo-ink-text);border-radius:10px;padding:.5rem .65rem;font-size:.82rem;font-weight:700}.dojo-tea-tab.is-active{border-color:var(--dojo-celadon);background:var(--dojo-celadon-soft)}.dojo-tea-table-card{flex-direction:column;gap:.8rem;min-width:0;display:flex}.dojo-tea-prompt-box{background:var(--dojo-washi-elevated);border:1.5px solid var(--dojo-wood-border);border-radius:12px;padding:.85rem}.dojo-tea-prompt-header{color:var(--dojo-ink-text);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.88rem;display:flex}.dojo-tea-audio-btns{flex-wrap:wrap;gap:.45rem;display:flex}.dojo-tea-prompt-zh{color:var(--dojo-ink-text);font-size:1.25rem;font-weight:800}.dojo-tea-prompt-pinyin{color:var(--dojo-celadon);margin-top:.16rem;font-size:.9rem;font-weight:700}.dojo-tea-prompt-vi{color:var(--dojo-muted-text);margin-top:.25rem;font-size:.88rem}.dojo-tea-replies-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem;min-width:0;display:grid}.dojo-tea-reply-btn{border:2px solid var(--dojo-wood-border);background:var(--dojo-washi-elevated);color:var(--dojo-ink-text);text-align:left;border-radius:12px;flex-direction:column;justify-content:center;align-items:flex-start;gap:.22rem;min-width:0;padding:.72rem .8rem;display:flex}.dojo-tea-reply-btn.is-polite{border-color:var(--status-success,#16a34a);background:var(--status-success-bg,#16a34a24)}.dojo-tea-reply-btn.is-awkward{border-color:var(--status-error,#dc2626);background:var(--status-error-bg,#dc26261f)}.dojo-tea-reply-zh{font-size:1rem;font-weight:800}.dojo-tea-reply-py{color:var(--dojo-celadon);font-size:.8rem;font-weight:700}.dojo-tea-reply-vi{color:var(--dojo-muted-text);font-size:.8rem}.dojo-tea-outcome-box{background:var(--dojo-washi-warm);border:1.5px solid var(--dojo-wood-border);border-radius:12px;padding:.8rem}.dojo-tea-score-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.dojo-etiquette-pill{color:var(--dojo-celadon);font-size:.86rem;font-weight:800}.dojo-tea-feedback-vi{color:var(--dojo-ink-text);margin:.45rem 0;font-size:.88rem}.dojo-tea-sensei-reply{color:var(--dojo-muted-text);font-size:.86rem}.dojo-tea-ceremony-badge{border:2px solid var(--dojo-celadon);color:var(--dojo-ink-text);background:linear-gradient(135deg,#1f7a5829,#f59e0b2e);border-radius:14px;align-items:center;gap:.75rem;padding:.8rem 1rem;display:flex}.dojo-tea-badge-icon{background:var(--dojo-celadon);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.dojo-tea-badge-text{flex-direction:column;gap:.15rem;min-width:0;display:flex}.dojo-tea-badge-text strong{font-size:.94rem}.dojo-tea-badge-text span{color:var(--dojo-muted-text);font-size:.82rem}@media (height<=660px) and (orientation:landscape){.dojo-classroom-stage{gap:.55rem;padding-bottom:.75rem}.dojo-header{padding:.5rem .75rem}.dojo-subtitle{display:none}.dojo-pavilion-viewport{min-height:155px;padding:.45rem}.dojo-characters-dock{padding-top:.9rem}.dojo-sensei-panel{gap:.45rem;padding:.6rem}.dojo-xuan-canvas{width:min(100%,260px)}}@media (width<=980px),(orientation:portrait){.dojo-top-grid,.dojo-pinyin-station,.dojo-calligraphy-workspace{grid-template-columns:minmax(0,1fr)}.dojo-station-tabs,.dojo-listen-options-grid,.dojo-tea-scenarios-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.dojo-tea-replies-list{grid-template-columns:minmax(0,1fr)}}@media (width<=620px){.dojo-classroom-stage{gap:.65rem}.dojo-header,.dojo-station-body,.dojo-sensei-panel{padding:.7rem}.dojo-characters-dock,.dojo-sensei-choices,.dojo-tone-mixer-row,.dojo-drill-options,.dojo-paper-actions{grid-template-columns:minmax(0,1fr)}.dojo-station-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.dojo-pavilion-controls{width:100%}}
