@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:block;src:url(./BeVietnamPro-Regular-DxE1rDs9.ttf) format("truetype")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:block;src:url(./BeVietnamPro-Medium-zLP32ZWI.ttf) format("truetype")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:block;src:url(./BeVietnamPro-SemiBold-DEWu8_st.ttf) format("truetype")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:block;src:url(./BeVietnamPro-Bold-C_pM0_D6.ttf) format("truetype")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:800;font-display:block;src:url(./BeVietnamPro-ExtraBold-DczkUabF.ttf) format("truetype")}:root{--bg: #0f2a4a;--bg2: #16385f;--card: #ffffff;--ink: #0f172a;--ink2: #475569;--muted: #94a3b8;--line: #e2e8f0;--primary: #1d6fd8;--primary-ink: #ffffff;--accent: #ffd43b;--good: #2f9e44;--bad: #e03131;--warn: #f08c00;--radius: 16px;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px);color-scheme:dark;--font: "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}:root{--scr-bg: linear-gradient(180deg, #0f2a4a 0%, #183d66 55%, #1f4d7a 100%);--scr-ink: #fff;--scr-ink-soft: #b9d3f0;--scr-ink-dim: #9fb6d1;--scr-line: rgba(255, 255, 255, .08);--scr-line-w: 1px;--scr-pad: 16px;--scr-pad-b: 24px;--scr-pad-t-low: 10px;--scr-max: 920px;--frame-head-ms: .15s;--frame-head-shadow: 0 2px 8px rgba(0, 0, 0, .25);--frame-head-gap: 10px;--frame-title-size: 18px;--frame-title-size-low: 16px;--frame-title-weight: 700;--frame-chip-pad: 6px 10px;--frame-pts-gap: 2px;--frame-pt-w: 7px;--frame-pt-h: 12px;--frame-pt-r: 2px;--frame-body-pt: 12px;--frame-sticky-pad: 8px;--frame-sticky-gap: 8px;--frame-foot-pad: 10px;--frame-foot-bg: #1f4d7a;--frame-foot-btn-max: 560px;--frame-back-size: 44px;--chip-pad: 6px 12px;--chip-size: 14px;--btn-gap: 8px;--btn-bg: rgba(255, 255, 255, .12);--btn-press-ms: 80ms;--btn-bg-ms: .2s;--accent-ink: #3b2a00;--btn-ghost-w: 1.5px;--btn-ghost-line: rgba(255, 255, 255, .3);--btn-small-weight: 500;--btn-small-opacity: .8;--btn-small-size: 13px;--bar-h: 8px;--bar-r: 99px;--bar-bg: rgba(255, 255, 255, .15);--pt-w: 9px;--pt-h: 14px;--star: #f59f00;--star-off: #5b7190;--accent-soft: #8fc1ff;--home-pad: 20px;--home-pad-b: 14px;--home-col-gap: 12px;--home-press: .96;--home-shade: linear-gradient(90deg, rgba(15, 42, 74, 0) 40%, rgba(15, 42, 74, .72) 100%), linear-gradient(180deg, rgba(15, 42, 74, 0) 50%, rgba(15, 42, 74, .85) 100%);--home-top-h: 54px;--home-top-bg: rgba(15, 42, 74, .78);--home-top-gap: 10px;--home-logo: 32px;--home-logo-r: 8px;--home-title-size: 18px;--home-title-weight: 800;--home-title-spacing: -.3px;--home-stats-gap: 6px;--stat-h: 36px;--stat-pad: 0 10px;--stat-gap: 5px;--stat-bg: rgba(255, 255, 255, .12);--stat-size: 14px;--stat-weight: 700;--stat-label-weight: 600;--stat-of-weight: 500;--stat-icon: 16px;--stat-pt-w: 4px;--stat-pt-h: 14px;--stat-pt-r: 2px;--stat-pt-gap: 2px;--home-tool: 44px;--home-tool-icon: 20px;--home-tool-bg: rgba(255, 255, 255, .14);--home-card-w: 336px;--home-card-mt: 16px;--home-card-pad: 18px;--home-card-r: 20px;--home-card-bg: rgba(18, 44, 80, .94);--home-card-line: rgba(255, 255, 255, .14);--home-card-shadow: 0 8px 24px rgba(0, 0, 0, .3);--home-kicker-size: 12px;--home-kicker-weight: 800;--home-kicker-spacing: 1px;--home-name-mt: 4px;--home-name-size: 20px;--home-name-weight: 800;--home-name-lh: 1.25;--home-row-mt: 10px;--home-row-gap: 10px;--home-label-size: 13px;--home-label-weight: 600;--home-signs-mt: 6px;--home-signs-gap: 6px;--home-sign: 30px;--home-sign-pad: 2px;--home-sign-r: 6px;--home-sign-bg: #fff;--home-more-size: 15px;--home-more-weight: 800;--home-stars-size: 18px;--home-play-mt: 14px;--home-play-h: 56px;--home-play-r: 16px;--home-play-size: 22px;--home-play-weight: 800;--home-play-icon: 18px;--home-play-size-all: 17px;--home-play-edge: 0 4px 0 #c99a06;--home-act-gap: 8px;--home-act-h: 48px;--home-act-pad: 0 14px;--home-act-size: 15px;--home-act-icon: 18px;--home-act-bg: rgba(15, 42, 74, .92);--home-act-line: rgba(255, 255, 255, .18);--home-version-ink: rgba(255, 255, 255, .55);--home-scene-port: 40vh;--home-shade-port: linear-gradient(180deg, rgba(15, 42, 74, 0) 55%, #0f2a4a 100%);--home-pad-port: 16px;--home-top-pad-port: 12px;--home-stats-gap-port: 6px;--stat-pad-port: 0 10px;--stat-size-port: 14px;--home-card-mt-port: 16px;--home-act-mt-port: 14px;--version-size: 12px;--list-intro-size: 14px;--list-intro-lh: 1.5;--list-intro-mb: 16px;--lv-done-weight: 700;--lv-chapter-mb: 20px;--lv-chapter-title-mb: 10px;--lv-chapter-title-size: 15px;--lv-chapter-title-weight: 600;--lv-chapter-no-weight: 800;--lv-chapter-gap: 6px;--lv-grid-gap: 10px;--lv-tile-ratio: 15 / 11;--lv-r: 14px;--lv-tile-w: 1px;--lv-tile-line: rgba(255, 255, 255, .18);--lv-tile-bg: #1d3a5f;--lv-shade: linear-gradient(180deg, rgba(10, 25, 45, 0) 30%, rgba(10, 25, 45, .9) 100%);--lv-text-pad: 10px;--lv-text-gap: 1px;--lv-num-size: 13px;--lv-num-weight: 700;--lv-name-size: 14px;--lv-name-weight: 700;--lv-name-lh: 1.25;--lv-stars-size: 15px;--lv-current-w: 3px;--lv-tag-inset: 8px;--lv-tag-gap: 4px;--lv-tag-size: 12px;--lv-tag-weight: 800;--lv-tag-r: 999px;--lv-tag-pad: 3px 8px;--lv-locked-filter: grayscale(1) brightness(.45);--lv-lock-top: 40%;--lv-lock-size: 28px;--lv-lock-ink: rgba(255, 255, 255, .8);--lv-endless-ratio-port: 30 / 11;--practice-intro-mb: 12px;--practice-switch-h: 44px;--practice-switch-gap: 10px;--practice-switch-pad: 4px 4px 4px 14px;--practice-switch-r: 999px;--practice-switch-bg: rgba(255, 255, 255, .1);--practice-switch-size: 15px;--practice-switch-weight: 600;--rs-shade: rgba(15, 42, 74, .62);--rs-mx: 28px;--rs-my: 18px;--rs-max: 920px;--rs-pad: 20px;--rs-r: 24px;--rs-bg: rgba(18, 44, 80, .9);--rs-line: rgba(255, 255, 255, .14);--rs-shadow: 0 10px 30px rgba(0, 0, 0, .35);--rs-col-w: 270px;--rs-col-w-over: 330px;--rs-col-w-narrow: 230px;--rs-col-gap: 22px;--rs-kicker-size: 13px;--rs-kicker-weight: 800;--rs-kicker-spacing: 1px;--rs-name-mt: 2px;--rs-name-size: 15px;--rs-name-weight: 600;--rs-title-mt: 6px;--rs-title-size: 34px;--rs-title-weight: 800;--rs-title-lh: 1.15;--rs-bad-ink: #ff8787;--rs-good-ink: #8ce99a;--rs-stars-mt: 8px;--rs-stars-size: 32px;--rs-stars-gap: 8px;--rs-item-mt: 10px;--rs-reason-weight: 700;--rs-tag-gap: 6px;--rs-tag-h: 28px;--rs-tag-pad: 0 12px;--rs-tag-size: 14px;--rs-tag-weight: 800;--rs-tag-bad-bg: rgba(224, 49, 49, .22);--rs-tag-good-bg: rgba(47, 158, 68, .25);--rs-gplx-empty-bg: rgba(224, 49, 49, .22);--rs-note-size: 13px;--rs-note-lh: 1.45;--rs-gap: 12px;--rs-stats-gap: 10px;--rs-stat-min-h: 64px;--rs-stat-pad: 6px 8px;--rs-stat-r: 16px;--rs-stat-bg: rgba(255, 255, 255, .06);--rs-stat-line: rgba(255, 255, 255, .12);--rs-val-size: 30px;--rs-val-weight: 800;--rs-val-lh: 1.15;--rs-lab-mt: 2px;--rs-lab-size: 13px;--rs-lab-weight: 600;--rs-lab-lh: 1.3;--rs-next-gap: 10px;--rs-next-pad: 8px 12px;--rs-next-size: 14px;--rs-next-weight: 700;--rs-next-signs-gap: 6px;--rs-next-sign: 30px;--rs-next-sign-pad: 2px;--rs-next-sign-r: 6px;--rs-next-sign-bg: #fff;--rs-next-more-size: 14px;--rs-next-more-weight: 800;--rs-btn-gap: 8px;--rs-btn-h: 50px;--rs-btn-pad: 4px 12px;--rs-btn-r: 14px;--rs-btn-size: 16px;--rs-btn-weight: 800;--rs-btn-lh: 1.15;--rs-btn-icon: 18px;--rs-btn-icon-gap: 6px;--rs-btn-bg: rgba(255, 255, 255, .12);--rs-btn-line: rgba(255, 255, 255, .22);--rs-review-bg: #e03131;--rs-review-edge: 0 4px 0 #a51d1d;--rs-compact-w: 52px;--rs-compact-icon: 22px;--rs-narrow-btn-size: 15px;--rs-narrow-btn-pad: 4px 8px;--rs-port-pad: 16px;--rs-port-gap: 14px;--rs-port-card-pad: 18px;--rs-port-stats-pad: 12px;--rs-port-stat-pad: 12px 8px;--viol-r: 16px;--viol-mb: 12px;--viol-snap-ratio: 16 / 7;--viol-snap-bg: #e9ecef;--viol-body-pad: 12px 14px;--viol-body-gap: 8px;--viol-head-gap: 12px;--viol-sign: 56px;--viol-title-size: 16px;--viol-title-lh: 1.3;--viol-badge-size: 12px;--viol-badge-weight: 700;--viol-badge-pad: 3px 8px;--viol-badge-r: 8px;--viol-badge-bg: #ffe3e3;--viol-badge-ink: #c92a2a;--viol-badge-zero-bg: #fff3bf;--viol-badge-zero-ink: #8a5a00;--viol-kv-size: 14px;--viol-kv-lh: 1.5;--book-mark-fade-ms: .4s;--book-bar-mb: 6px;--book-seen-mb: 12px;--book-seen-size: 13px;--tabs-gap: 8px;--tabs-pb: 6px;--tabs-mb: 12px;--tab-pad: 8px 14px;--tab-r: 999px;--tab-bg: rgba(255, 255, 255, .12);--tab-size: 14px;--tab-weight: 600;--tab-on-bg: #fff;--book-min-w: 92px;--book-gap: 8px;--book-tile-r: 12px;--book-tile-pad: 8px 6px;--book-tile-gap: 4px;--book-img: 56px;--book-code-size: 11px;--book-code-weight: 700;--book-unseen-opacity: .3;--book-ok-inset: 4px;--book-ok-ink: #fff;--book-ok-r: 99px;--book-ok-size: 10px;--book-ok-pad: 1px 5px;--book-ok-weight: 700;--book-mark-w: 3px;--book-mark-off: rgba(255, 212, 59, 0);--book-empty-size: 15px;--book-nav-bg: rgba(255, 255, 255, .12);--set-gap: 16px;--set-bg: rgba(255, 255, 255, .08);--set-r: 14px;--set-pad: 14px 16px;--set-mb: 10px;--set-title-weight: 600;--set-desc-size: 13px;--set-desc-mt: 2px;--set-gap-top: 12px;--law-size: 12px;--law-mt: 8px;--law-lh: 1.5;--sw-w: 52px;--sw-h: 30px;--sw-r: 99px;--sw-off-bg: rgba(255, 255, 255, .25);--sw-knob-inset: 3px;--sw-knob: 24px;--sw-knob-bg: #fff;--sw-ms: .2s;--sw-move: 22px;--help-gap: 10px;--help-bg: rgba(255, 255, 255, .08);--help-r: 14px;--help-pad: 12px 14px;--help-lh: 1.5;--help-size: 15px;--toast-bottom: 24px;--toast-bg: rgba(10, 22, 40, .9);--toast-pad: 10px 16px;--toast-r: 12px;--toast-size: 14px;--toast-gap: 8px;--pop-pad: 16px;--pop-x-right-sheet: 4px;--pop-grab-h: 32px;--pop-grab-pt: 10px;--pop-grab-w: 36px;--pop-grab-bar-h: 4px;--pop-grab-r: 2px;--pop-grab-bg: #cbd5e1;--pop-body-pt-sheet: 4px;--pop-body-pb-foot: 16px;--pop-foot-pad-sheet: 10px;--pop-x-size: 44px;--pop-x-circle: 32px;--pop-body-pad: 20px;--sheet-blue-ink: #fff;--cf-title-lh: 1.3;--cf-text-lh: 1.5;--spinner-mb: 12px;--spinner-size: 44px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;overscroll-behavior:none}#app{position:fixed;inset:0;overflow:hidden}button{font-family:inherit;cursor:pointer;border:0}.ic{display:inline-block;width:1em;height:1em;vertical-align:-.125em;flex:none}.screen{position:absolute;inset:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:calc(var(--scr-pad) + var(--safe-t)) calc(var(--scr-pad) + var(--safe-r)) calc(var(--scr-pad-b) + var(--safe-b)) calc(var(--scr-pad) + var(--safe-l));background:var(--scr-bg);color:var(--scr-ink)}.wrap{max-width:var(--scr-max);margin:0 auto}.frame{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--scr-bg);color:var(--scr-ink)}.frame-head{position:relative;z-index:2;flex:none;height:calc(56px + var(--safe-t));padding:var(--safe-t) calc(var(--scr-pad) + var(--safe-r)) 0 calc(var(--scr-pad) + var(--safe-l));background:var(--bg);border-bottom:var(--scr-line-w) solid transparent;transition:border-color var(--frame-head-ms),box-shadow var(--frame-head-ms)}.frame.scrolled .frame-head{border-bottom-color:var(--scr-line);box-shadow:var(--frame-head-shadow)}.frame-head-in{max-width:var(--scr-max);height:100%;margin:0 auto;display:flex;align-items:center;gap:var(--frame-head-gap)}.frame-back{flex:none;width:var(--frame-back-size);height:var(--frame-back-size);border-radius:12px;background:#ffffff1f;color:#fff;font-size:28px;line-height:1;display:grid;place-items:center;padding:0 0 4px;transition:transform var(--btn-press-ms)}.frame-back:active{transform:scale(.94)}.frame-title{flex:1;min-width:0;margin:0;font-size:var(--frame-title-size);font-weight:var(--frame-title-weight);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.frame-right{flex:none;display:flex;align-items:center}.frame-right .chip{padding:var(--frame-chip-pad)}.frame-right .pts{gap:var(--frame-pts-gap)}.frame-right .pts i{width:var(--frame-pt-w);height:var(--frame-pt-h);border-radius:var(--frame-pt-r)}.frame-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:0 calc(var(--scr-pad) + var(--safe-r)) calc(var(--scr-pad-b) + var(--safe-b)) calc(var(--scr-pad) + var(--safe-l))}.frame.has-foot .frame-scroll{padding-bottom:var(--scr-pad-b)}.frame-body{padding-top:var(--frame-body-pt)}.frame-sticky{position:sticky;top:0;z-index:1;margin:0 calc(-1 * var(--scr-pad) - var(--safe-r)) 0 calc(-1 * var(--scr-pad) - var(--safe-l));padding:var(--frame-sticky-pad) calc(var(--scr-pad) + var(--safe-r)) var(--frame-sticky-pad) calc(var(--scr-pad) + var(--safe-l));background:var(--bg)}.frame-sticky+.frame-body{padding-top:var(--frame-sticky-gap)}.frame-sticky .tabs,.book-tabs .tabs{margin:0;padding:0}.frame-fill{flex:1 1 auto;min-height:0}.frame-foot{flex:none;padding:var(--frame-foot-pad) calc(var(--scr-pad) + var(--safe-r)) calc(var(--frame-foot-pad) + var(--safe-b)) calc(var(--scr-pad) + var(--safe-l));background:var(--frame-foot-bg);border-top:var(--scr-line-w) solid var(--scr-line)}.frame-foot .btn{width:100%;max-width:var(--frame-foot-btn-max);margin:0 auto}@media(max-height:419.98px){.frame-head{height:calc(48px + var(--safe-t))}.frame-title{font-size:var(--frame-title-size-low)}}.chip{display:inline-flex;align-items:center;gap:6px;padding:var(--chip-pad);border-radius:999px;background:#ffffff24;font-size:var(--chip-size);font-weight:600;white-space:nowrap}.chip.warn{background:#ffd43b33;color:var(--accent)}.btn{display:flex;align-items:center;justify-content:center;gap:var(--btn-gap);min-height:52px;padding:12px 20px;border-radius:14px;font-size:17px;font-weight:700;background:var(--btn-bg);color:var(--scr-ink);width:100%;transition:transform var(--btn-press-ms) ease,background var(--btn-bg-ms)}.btn:active{transform:scale(.98)}.btn.primary{background:var(--accent);color:var(--accent-ink)}.btn.blue{background:var(--primary)}.btn.ghost{background:transparent;border:var(--btn-ghost-w) solid var(--btn-ghost-line)}.btn small{font-weight:var(--btn-small-weight);opacity:var(--btn-small-opacity);font-size:var(--btn-small-size)}.bar{height:var(--bar-h);border-radius:var(--bar-r);background:var(--bar-bg);overflow:hidden}.bar>i{display:block;height:100%;background:var(--accent);border-radius:var(--bar-r)}.pts{display:inline-flex;gap:3px}.pts i{width:var(--pt-w);height:var(--pt-h);border-radius:3px;background:var(--accent)}.pts i.off{background:#fff3}.screen.home-screen{padding:0}.home-screen{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,var(--home-card-w));grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"top top" ". next" "actions version";column-gap:var(--home-col-gap);overflow:hidden}.home-scene{position:absolute;inset:0;overflow:hidden}.home-scene:after{content:"";position:absolute;inset:0;background:var(--home-shade)}.home-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.home-top{grid-area:top;position:relative;z-index:1;container-type:inline-size;display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"brand stats tools";align-items:center;column-gap:var(--home-top-gap);min-height:calc(var(--home-top-h) + var(--safe-t));padding:var(--safe-t) calc(var(--home-pad) + var(--safe-r)) 0 calc(var(--home-pad) + var(--safe-l));background:var(--home-top-bg)}.home-brand{grid-area:brand;display:flex;align-items:center;gap:var(--home-top-gap);min-width:0;overflow:hidden}@container (max-width: 799.98px){.home-title{display:none}}.home-logo{flex:none;width:var(--home-logo);height:var(--home-logo);border-radius:var(--home-logo-r)}.home-title{margin:0;font-size:var(--home-title-size);font-weight:var(--home-title-weight);letter-spacing:var(--home-title-spacing);white-space:nowrap}.home-stats{grid-area:stats;display:flex;align-items:center;gap:var(--home-stats-gap)}.home-tools{grid-area:tools;display:flex;gap:var(--home-stats-gap)}.home-tool{width:var(--home-tool);height:var(--home-tool);border-radius:50%;display:grid;place-items:center;background:var(--home-tool-bg);color:var(--scr-ink);font-size:var(--home-tool-icon);transition:transform var(--btn-press-ms)}.home-tool:active{transform:scale(var(--home-press))}.stat-chip{display:inline-flex;align-items:center;gap:var(--stat-gap);height:var(--stat-h);padding:var(--stat-pad);border-radius:var(--stat-h);background:var(--stat-bg);color:var(--scr-ink);font-size:var(--stat-size);font-weight:var(--stat-weight);white-space:nowrap}.stat-chip .ic{font-size:var(--stat-icon)}.stat-chip b{font-weight:var(--stat-weight)}.stat-chip .stat-of,.stat-chip .stat-label{margin-left:calc(-1 * var(--stat-gap));color:var(--scr-ink-soft);font-weight:var(--stat-of-weight)}.stat-chip .stat-label{margin-left:0;font-weight:var(--stat-label-weight)}.stat-gplx .pts{gap:var(--stat-pt-gap)}.stat-gplx .pts i{width:var(--stat-pt-w);height:var(--stat-pt-h);border-radius:var(--stat-pt-r)}.stat-gplx.low .pts i:not(.off){background:var(--warn)}.stat-gplx.low b{color:var(--warn)}.home-next{grid-area:next;align-self:start;position:relative;z-index:1;margin:var(--home-card-mt) calc(var(--home-pad) + var(--safe-r)) 0 0;padding:var(--home-card-pad);border-radius:var(--home-card-r);background:var(--home-card-bg);border:var(--scr-line-w) solid var(--home-card-line);box-shadow:var(--home-card-shadow)}.home-next-kicker{color:var(--accent-soft);font-size:var(--home-kicker-size);font-weight:var(--home-kicker-weight);letter-spacing:var(--home-kicker-spacing);text-transform:uppercase}.home-next-name{margin:var(--home-name-mt) 0 0;font-size:var(--home-name-size);font-weight:var(--home-name-weight);line-height:var(--home-name-lh)}.home-next-row{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--home-row-gap);margin-top:var(--home-row-mt)}.home-next-label{color:var(--scr-ink-soft);font-size:var(--home-label-size);font-weight:var(--home-label-weight)}.home-next-signs{display:flex;align-items:center;gap:var(--home-signs-gap);margin-top:var(--home-signs-mt)}.home-sign{flex:none;width:var(--home-sign);height:var(--home-sign);padding:var(--home-sign-pad);border-radius:var(--home-sign-r);background:var(--home-sign-bg)}.home-sign img{display:block;width:100%;height:100%;object-fit:contain}.home-next-more{font-size:var(--home-more-size);font-weight:var(--home-more-weight)}.home-next-stars{flex:none;display:flex;font-size:var(--home-stars-size);color:var(--star)}.home-next-stars .ic.off,.level .stars .ic.off{color:var(--star-off)}.btn.primary.home-play{margin-top:var(--home-play-mt);min-height:var(--home-play-h);border-radius:var(--home-play-r);font-size:var(--home-play-size);font-weight:var(--home-play-weight);box-shadow:var(--home-play-edge)}.btn.primary.home-play.all-done-btn{font-size:var(--home-play-size-all)}.home-play .ic{font-size:var(--home-play-icon)}.home-actions{grid-area:actions;align-self:end;position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:var(--home-act-gap);padding:0 0 calc(var(--home-pad-b) + var(--safe-b)) calc(var(--home-pad) + var(--safe-l))}.btn.home-act{width:auto;min-height:var(--home-act-h);padding:var(--home-act-pad);font-size:var(--home-act-size);white-space:nowrap}.btn.home-act:not(.blue){background:var(--home-act-bg);border:var(--scr-line-w) solid var(--home-act-line)}.btn.home-act .ic{font-size:var(--home-act-icon)}.version.home-version{grid-area:version;align-self:end;justify-self:end;position:relative;z-index:1;padding:0 calc(var(--home-pad) + var(--safe-r)) calc(var(--home-pad-b) + var(--safe-b)) 0;color:var(--home-version-ink);text-align:right}@media(orientation:portrait){.home-screen{overflow-y:auto;-webkit-overflow-scrolling:touch;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto 1fr;grid-template-areas:"top" "next" "actions" "version";column-gap:0}.home-scene{position:relative;grid-area:top;height:var(--home-scene-port)}.home-scene:after{background:var(--home-shade-port)}.home-top{align-self:start;container-type:normal;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand tools" "stats stats";row-gap:var(--home-top-gap);padding:calc(var(--home-top-pad-port) + var(--safe-t)) calc(var(--home-pad-port) + var(--safe-r)) var(--home-top-pad-port) calc(var(--home-pad-port) + var(--safe-l))}.home-stats{flex-wrap:wrap;justify-content:space-between;gap:var(--home-stats-gap-port)}.home-top .stat-chip{padding:var(--stat-pad-port);font-size:var(--stat-size-port)}.home-top .stat-unit{display:none}.home-next{margin:var(--home-card-mt-port) calc(var(--home-pad-port) + var(--safe-r)) 0 calc(var(--home-pad-port) + var(--safe-l))}.home-actions{display:grid;grid-template-columns:1fr 1fr;padding:var(--home-act-mt-port) calc(var(--home-pad-port) + var(--safe-r)) 0 calc(var(--home-pad-port) + var(--safe-l))}.btn.home-act{width:100%}.home-act-book{grid-column:1 / -1}.version.home-version{justify-self:center;padding:var(--home-act-mt-port) 0 calc(var(--home-pad-b) + var(--safe-b));text-align:center}}.list-intro{margin:0 0 var(--list-intro-mb);color:var(--scr-ink-soft);font-size:var(--list-intro-size);line-height:var(--list-intro-lh)}.list-intro.practice-intro{margin-bottom:var(--practice-intro-mb)}.all-done{text-align:center;color:var(--accent);font-weight:var(--lv-done-weight)}.chapter{margin-bottom:var(--lv-chapter-mb)}.chapter h3{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:var(--lv-chapter-gap);margin:0 0 var(--lv-chapter-title-mb);font-size:var(--lv-chapter-title-size);font-weight:var(--lv-chapter-title-weight);color:var(--scr-ink-soft)}.chapter h3 .ch-no{color:var(--accent-soft);font-weight:var(--lv-chapter-no-weight);letter-spacing:var(--home-kicker-spacing);text-transform:uppercase}.levels{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--lv-grid-gap)}.level,.endless-tile{position:relative;display:block;aspect-ratio:var(--lv-tile-ratio);padding:0;overflow:hidden;border-radius:var(--lv-r);border:var(--lv-tile-w) solid var(--lv-tile-line);background:var(--lv-tile-bg);color:var(--scr-ink);text-align:left;transition:transform var(--btn-press-ms)}.level:active,.endless-tile:active{transform:scale(var(--home-press))}.endless-tile{grid-column:span 2;aspect-ratio:auto}.tile-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.tile-shade{position:absolute;inset:0;background:var(--lv-shade)}.tile-text{position:absolute;left:var(--lv-text-pad);right:var(--lv-text-pad);bottom:var(--lv-text-pad);display:grid;gap:var(--lv-text-gap)}.tile-text .num{font-size:var(--lv-num-size);font-weight:var(--lv-num-weight);color:var(--accent-soft)}.tile-text .name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:var(--lv-name-size);font-weight:var(--lv-name-weight);line-height:var(--lv-name-lh)}.level .stars{position:absolute;top:var(--lv-tag-inset);right:var(--lv-tag-inset);display:flex;font-size:var(--lv-stars-size);color:var(--star)}.level .stars .ic{margin-right:1px}.level.current{border:var(--lv-current-w) solid var(--accent)}.level .tag,.endless-tile .tag{position:absolute;top:var(--lv-tag-inset);left:var(--lv-tag-inset);display:inline-flex;align-items:center;gap:var(--lv-tag-gap);font-size:var(--lv-tag-size);font-weight:var(--lv-tag-weight);background:var(--accent);color:var(--accent-ink);border-radius:var(--lv-tag-r);padding:var(--lv-tag-pad)}.endless-tile .tag{background:var(--primary);color:var(--scr-ink)}.level.locked .tile-img{filter:var(--lv-locked-filter)}.level.locked .tile-text,.level.locked .tile-text .num{color:var(--scr-ink-dim)}.tile-lock{position:absolute;left:50%;top:var(--lv-lock-top);transform:translate(-50%,-50%);font-size:var(--lv-lock-size);color:var(--lv-lock-ink);line-height:0}.frame-switch{display:flex;align-items:center;min-height:var(--practice-switch-h);color:var(--scr-ink);gap:var(--practice-switch-gap);padding:var(--practice-switch-pad);border-radius:var(--practice-switch-r);background:var(--practice-switch-bg);font-size:var(--practice-switch-size);font-weight:var(--practice-switch-weight);white-space:nowrap}.frame-switch .switch{display:block}@media(orientation:portrait){.levels{grid-template-columns:repeat(2,minmax(0,1fr))}.endless-tile{aspect-ratio:var(--lv-endless-ratio-port)}}.game.intro-on .controls,.game.intro-on .pause-btn{visibility:hidden}.lvi{position:absolute;inset:0;z-index:5;background:#00000073;display:flex;align-items:center;justify-content:center;padding:var(--safe-t) calc(16px + var(--safe-r)) var(--safe-b) calc(16px + var(--safe-l));animation:lvi-fade-in .25s ease-out}.lvi-card{position:relative;width:100%;max-width:560px;max-height:90%;display:flex;flex-direction:column;background:linear-gradient(180deg,#16385f,#0f2a4a);color:#fff;border-radius:20px;box-shadow:0 12px 40px #00000073;overflow:hidden;animation:lvi-pop-in .25s ease-out}.lvi-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;padding:0 16px 8px}.lvi-head{position:absolute;top:0;left:0;right:0;z-index:2;display:flex;align-items:flex-start;gap:12px;padding:10px 16px;background:#16385f;border-bottom:1px solid transparent;transition:border-color .15s,box-shadow .15s}.lvi-titles{flex:1;min-width:0;min-height:44px;display:flex;flex-direction:column;justify-content:center}.lvi-ch{color:#b9d3f0;font-size:13px;font-weight:600;max-height:20px;overflow:hidden;transition:max-height .15s,opacity .15s}.lvi-head h2{margin:2px 0 0;font-size:20px;line-height:1.25;transition:font-size .15s,margin .15s}.lvi-card.collapsed .lvi-head{border-bottom-color:#ffffff14;box-shadow:0 2px 8px #00000040}.lvi-card.collapsed .lvi-ch{max-height:0;opacity:0}.lvi-card.collapsed .lvi-head h2{margin:0;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lvi-chips{display:flex;flex-wrap:wrap;gap:6px}.lvi-chips .chip{font-size:13px;padding:5px 10px}.lvi-map{margin-top:10px;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.lvi-map svg{display:block}.lvi-chips .pts{gap:2px}.lvi-chips .pts i{width:6px;height:11px}.lvi-lead{margin:10px 0 0;color:#b9d3f0;font-size:14px;line-height:1.45}.lvi-more{display:block;min-height:44px;margin-top:4px;padding:0 2px;background:none;color:var(--accent);font-size:15px;font-weight:700;text-decoration:underline;text-underline-offset:3px}.lvi .sign-grid[hidden]{display:none}.lvi-foot{flex:none;padding:10px 16px 14px;border-top:1px solid rgba(255,255,255,.08)}.lvi-start:disabled{opacity:.55;cursor:default}.game.portrait .lvi{align-items:flex-end;padding:var(--safe-t) 0 0}.game.portrait .lvi-card{max-width:none;max-height:80%;border-radius:20px 20px 0 0;animation-name:lvi-sheet-in}.game.portrait .lvi-card.grid-open{max-height:92%}.game.portrait .lvi-head{padding:10px calc(16px + var(--safe-r)) 10px calc(16px + var(--safe-l))}.game.portrait .lvi-scroll{padding:0 calc(16px + var(--safe-r)) 8px calc(16px + var(--safe-l))}.game.portrait .lvi-foot{padding:10px calc(16px + var(--safe-r)) calc(14px + var(--safe-b)) calc(16px + var(--safe-l))}.lvi.out{pointer-events:none;animation:lvi-fade-out .25s ease-in forwards}.lvi.out .lvi-card{animation:lvi-card-out .25s ease-in forwards}.game.portrait .lvi.out .lvi-card{animation-name:lvi-sheet-out}@keyframes lvi-fade-in{0%{opacity:0}}@keyframes lvi-fade-out{to{opacity:0}}@keyframes lvi-pop-in{0%{opacity:0;transform:translateY(16px)}}@keyframes lvi-card-out{to{transform:translateY(40px)}}@keyframes lvi-sheet-in{0%{transform:translateY(100%)}}@keyframes lvi-sheet-out{to{transform:translateY(100%)}}@media(prefers-reduced-motion:reduce){.lvi .lvi-card{animation:none!important}.lvi-head,.lvi-ch,.lvi-head h2{transition:none}}.game>.play-loading{position:absolute;inset:0;background:#0b1626;color:#fff;font-size:15px}.sign-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px;margin:10px 0 4px}.sign-card{width:100%;background:#fff;color:var(--ink);border-radius:14px;padding:10px 12px;display:grid;grid-template-columns:56px 1fr;gap:12px;align-items:center;text-align:left;font:inherit}.sign-card:active{transform:scale(.98)}.sign-card img{width:56px;height:56px;object-fit:contain}.sign-card .sc-text{display:grid;min-width:0}.sign-card .code{font-size:12px;line-height:1.3;color:var(--ink2);font-weight:600}.sign-card .nm,.sign-card .hint{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}.sign-card .nm{font-size:15px;font-weight:700;line-height:1.3}.sign-card .hint{font-size:13px;line-height:1.35;color:var(--ink2);margin-top:2px}.game{position:absolute;inset:0;background:#000;touch-action:none;user-select:none;-webkit-user-select:none;--ctl-pedal-gap: 12px;--gas-w: 56px;--gas-h: 84px;--brake-w: 112px;--brake-h: 48px;--pedal-r: 14px;--pedal-font: 14px;--lr-d: 70px;--ctl-b: 10px;--quiz-gap: 12px}.game.portrait{--gas-w: 49px;--gas-h: 74px;--brake-w: 99px;--pedal-font: 12px;--lr-d: 62px;--ctl-b: 14px}.game canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.hud{position:absolute;top:calc(8px + var(--safe-t));display:flex;gap:8px;pointer-events:none;z-index:2}.hud.left{left:calc(8px + var(--safe-l))}.hud.right{right:calc(8px + var(--safe-r))}.panel{background:#0a1628c7;color:#fff;border-radius:14px;padding:8px 10px;display:flex;align-items:center;gap:10px}.limits{display:flex;gap:6px;align-items:center}.limits .lim{display:grid;justify-items:center;gap:2px;font-size:10px;color:#cfe0f5;font-weight:600}.limits img{width:40px;height:40px}.speed{display:grid;justify-items:center;min-width:64px}.speed b{font-size:30px;line-height:1;font-weight:800;font-variant-numeric:tabular-nums}.speed b.over{color:#ff6b6b}.speed span{font-size:11px;color:#cfe0f5}.speed em{font-style:normal;font-size:12px;color:var(--accent);font-weight:700;white-space:nowrap}.speed em.gas{color:var(--good)}.stats{display:grid;gap:3px;font-size:13px;font-variant-numeric:tabular-nums;min-width:132px}.stats .row{display:flex;justify-content:space-between;gap:10px}.stats .row span{color:#cfe0f5}.stats .row b.red{color:#ff8787}.gplx{display:flex;align-items:center;gap:6px;font-weight:700}.gplx .pts i{width:6px;height:11px}.center-top{position:absolute;left:50%;top:calc(8px + var(--safe-t));transform:translate(-50%);width:min(46vw,520px);display:grid;gap:6px;justify-items:center;pointer-events:none;z-index:2}.clock{font-size:12px;color:#fff;background:#0a162880;border-radius:99px;padding:3px 10px;font-variant-numeric:tabular-nums}.game:not(.portrait) .gps{font-size:13px;padding:7px 11px}.rbar{position:relative;width:min(40vw,360px);height:6px;margin:2px 0 4px;border-radius:99px;background:#0a162899;box-shadow:0 0 0 1px #ffffff59}.rbar-fill{position:absolute;inset:0;border-radius:inherit;background:#ffffffe6;transform:scaleX(0);transform-origin:left center}.rbar-tick{position:absolute;top:-2px;width:2px;height:10px;margin-left:-1px;border-radius:1px;background:var(--accent)}.rbar-flag{position:absolute;right:-3px;bottom:0;width:2px;height:14px;background:#fff}.rbar-flag:after{content:"";position:absolute;left:2px;top:0;width:9px;height:7px;background:conic-gradient(#111 25%,#fff 0 50%,#111 0 75%,#fff 0) 0 0 / 4.5px 3.5px;border:1px solid #fff}.rbar-car{position:absolute;top:50%;left:0;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:#fff;box-shadow:0 0 0 2px var(--primary),0 0 6px #fffc}.gps{background:#0b7a4b;color:#fff;border-radius:12px;padding:8px 12px;font-size:14px;font-weight:600;line-height:1.3;text-align:center;box-shadow:0 4px 14px #00000040}.toasts{display:grid;gap:4px;justify-items:center}.toast{border-radius:10px;padding:6px 12px;font-size:13px;font-weight:600;color:#fff;background:#0a1628cc;text-align:center;line-height:1.3;animation:pop .2s ease}.toast.bad{background:#c92a2aeb}.toast.good{background:#2f9e44eb}.toast.uturn-hint{box-shadow:inset 0 0 0 2px #fff9}.toast.uturn-hint.armed{background:#1d6fd8f2}@keyframes pop{0%{transform:scale(.9);opacity:0}}.quiz{position:absolute;z-index:3;left:calc(8px + var(--safe-l));bottom:calc(var(--ctl-b) + var(--lr-d) + var(--quiz-gap) + var(--safe-b));width:max(calc(2 * var(--lr-d) + 12px),calc(min(var(--zone-x),50% - min(23vw,260px) - 8px) - 8px - var(--safe-l)));pointer-events:auto;background:#fffffff5;color:var(--ink);border-radius:14px;padding:8px;display:grid;gap:6px;box-shadow:0 6px 20px #0000004d}.game.portrait .quiz{top:var(--zone-y2);bottom:auto;width:calc(var(--zone-x2) - 8px - var(--safe-l))}.quiz-head{display:grid;grid-template-columns:30px 1fr;align-items:center;gap:8px}.quiz-sign{width:30px;height:30px;object-fit:contain}.quiz .q{font-size:13px;font-weight:700;line-height:1.25;color:var(--ink2)}.quiz .opts{display:grid;gap:8px}.quiz button{min-height:44px;border-radius:10px;background:#eef4fd;color:var(--ink);font-size:13px;font-weight:700;padding:6px 10px;line-height:1.25;text-align:left}.quiz button.right{background:#d3f9d8}.quiz button.wrong{background:#ffe3e3}.quiz .timer{height:3px;background:var(--primary);border-radius:99px;transform-origin:left}.game.quiz-on .rotate-hint{visibility:hidden}.controls{position:absolute;bottom:calc(var(--ctl-b) + var(--safe-b));display:flex;gap:12px;z-index:3}.controls.left{left:calc(14px + var(--safe-l))}.controls.right{right:calc(14px + var(--safe-r));align-items:flex-end;gap:var(--ctl-pedal-gap)}.ctl{width:70px;height:70px;border-radius:50%;background:#0a1628b3;color:#fff;font-size:30px;font-weight:800;display:grid;place-items:center;border:2px solid rgba(255,255,255,.35);touch-action:none}.ctl.pressed{background:#ffffff59;transform:scale(.95)}.ctl.pedal{border-radius:var(--pedal-r);background-image:linear-gradient(to bottom,#ffffff24,#fff0 50%),repeating-linear-gradient(to bottom,rgba(255,255,255,.1) 0 2px,transparent 2px 9px)}.ctl.pedal.gas{width:var(--gas-w);height:var(--gas-h)}.ctl.pedal.brake{width:var(--brake-w);height:var(--brake-h)}.ctl.pedal .lbl{font-size:var(--pedal-font);font-weight:800;letter-spacing:.5px;color:#fff;line-height:1}.pause-btn{pointer-events:auto;flex:none;width:48px;height:48px;border-radius:50%;background:#0a1628b8;border:2px solid rgba(255,255,255,.85);box-shadow:0 2px 6px #0000004d;display:grid;place-items:center;padding:0;touch-action:manipulation}.pause-btn svg{width:22px;height:22px;fill:#fff}.pause-btn.pressed{transform:scale(.94)}.game.portrait .center-top{top:calc(118px + var(--safe-t));width:calc(100vw - 24px)}.game.portrait .hud.left,.game.portrait .hud.right{max-width:50vw}.controls.left .ctl{width:var(--lr-d);height:var(--lr-d)}.game.portrait .stats{min-width:0;font-size:12px}.game.portrait .hud .panel{padding:6px 8px;gap:8px}.game.portrait .limits{gap:4px}.game.portrait .limits img{width:32px;height:32px}.game.portrait .limits .lim{font-size:9px}.game.portrait .speed{min-width:0}.game.portrait .speed em{font-size:11px}.game.portrait .stats .row{gap:8px}.game.portrait .gplx{gap:4px}.game.portrait .gplx .pts{gap:2px}.game.portrait .gplx .pts i{width:4px;height:10px}.game.portrait .speed b{font-size:24px}.perf{position:absolute;left:calc(8px + var(--safe-l));top:50%;transform:translateY(-50%);z-index:4;pointer-events:none;background:#000000b3;color:#b2f2bb;font:600 11px/1.4 ui-monospace,Menlo,Consolas,monospace;white-space:pre;padding:6px 8px;border-radius:8px}.rotate-hint{--rotate-b: calc(14px + var(--gas-h) + 12px + var(--safe-b));position:absolute;left:50%;bottom:var(--rotate-b);transform:translate(-50%);background:#0a1628cc;color:#fff;padding:8px 14px;border-radius:12px;font-size:13px;z-index:4;display:flex;gap:10px;align-items:center;white-space:nowrap}.game.hinting .rotate-hint{bottom:max(var(--rotate-b),var(--hints-h, 0px))}.ctl-hints{position:absolute;inset:0;z-index:4;pointer-events:none}.ctl-hint-probe{position:absolute;visibility:hidden;padding:var(--safe-t) var(--safe-r) 0 var(--safe-l)}.ctl-hint{position:absolute;background:#0c1018e0;color:#fff;font-size:13px;font-weight:700;line-height:1;padding:7px 9px;border-radius:9px;white-space:nowrap;box-shadow:0 2px 8px #0000004d;animation:ctl-hint-in .45s ease-out both,ctl-hint-pulse 1.8s ease-in-out .45s infinite}.ctl-hint:before{content:"";position:absolute;top:100%;left:var(--ax, 50%);width:2px;height:var(--stem, 0px);margin-left:-1px;background:#0c1018e0}.ctl-hint:after{content:"";position:absolute;top:calc(100% + var(--stem, 0px));left:var(--ax, 50%);transform:translate(-50%);border:6px solid transparent;border-bottom:0;border-top-color:#0c1018e0}.ctl-hint.down:before{top:auto;bottom:100%}.ctl-hint.down:after{top:auto;bottom:calc(100% + var(--stem, 0px));border:6px solid transparent;border-top:0;border-bottom-color:#0c1018e0}.ctl-hint.left:before{top:50%;left:100%;width:var(--stem, 0px);height:2px;margin:-1px 0 0}.ctl-hint.left:after{top:50%;left:calc(100% + var(--stem, 0px));transform:translateY(-50%);border:6px solid transparent;border-right:0;border-left-color:#0c1018e0}@keyframes ctl-hint-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes ctl-hint-pulse{0%,to{transform:none}50%{transform:translateY(-3px)}}@media(prefers-reduced-motion:reduce){.ctl-hint{animation:ctl-hint-in .45s ease-out both}}.rotate-hint button{background:#fff3;color:#fff;border-radius:8px;padding:4px 8px;font-size:12px}.modal{position:absolute;inset:0;background:#08101eb8;display:grid;place-items:center;z-index:10;padding:calc(16px + var(--safe-t)) 16px calc(16px + var(--safe-b));overflow-y:auto}.sheet{background:#fff;color:var(--ink);border-radius:20px;padding:20px;width:min(560px,100%);display:grid;gap:14px;max-height:100%;overflow-y:auto}.sheet h2{margin:0;font-size:22px}.sheet p{margin:0;color:var(--ink2);line-height:1.5}.sheet .btn{background:#eef2f7;color:var(--ink)}.sheet .btn.primary{background:var(--accent);color:#3b2a00}.sheet .btn.blue{background:var(--primary);color:var(--sheet-blue-ink)}.pop{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:var(--safe-t) calc(var(--pop-pad) + var(--safe-r)) var(--safe-b) calc(var(--pop-pad) + var(--safe-l));touch-action:none}.pop.pop-closing{pointer-events:none}.pop-dim{position:absolute;inset:0;background:#08101eb8}.pop-card{position:relative;width:100%;max-width:560px;max-height:90%;display:flex;flex-direction:column;background:#fff;color:var(--ink);border-radius:20px;box-shadow:0 12px 40px #00000059;overflow:hidden;container-type:inline-size}.pop-card:focus{outline:none}.pop-grab{display:none}.pop-x{position:absolute;top:6px;right:6px;z-index:2;width:var(--pop-x-size);height:var(--pop-x-size);display:grid;place-items:center;background:none;color:var(--ink2);font-size:16px;font-weight:700}.pop-x span{width:var(--pop-x-circle);height:var(--pop-x-circle);display:grid;place-items:center;border-radius:50%;background:#eef2f7}.pop-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;padding:var(--pop-body-pad)}.pop-foot{flex:none;padding:10px 16px 14px;border-top:1px solid var(--line)}.pop-foot[hidden]{display:none}.pop-lock{overflow:hidden!important}@media(max-width:639.98px),(orientation:portrait){.pop{align-items:flex-end;padding:0}.pop-card{max-width:none;max-height:85%;border-radius:20px 20px 0 0}.pop-grab{display:flex;justify-content:center;flex:none;height:var(--pop-grab-h);padding-top:var(--pop-grab-pt);touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}.pop-grab i{width:var(--pop-grab-w);height:var(--pop-grab-bar-h);border-radius:var(--pop-grab-r);background:var(--pop-grab-bg)}.pop-x{top:0;right:calc(var(--pop-x-right-sheet) + var(--safe-r))}.pop-body{padding:var(--pop-body-pt-sheet) calc(var(--pop-body-pad) + var(--safe-r)) calc(var(--pop-body-pad) + var(--safe-b)) calc(var(--pop-body-pad) + var(--safe-l))}.pop-has-foot .pop-body{padding-bottom:var(--pop-body-pb-foot)}.pop-foot{padding:var(--pop-foot-pad-sheet) calc(var(--pop-pad) + var(--safe-r)) calc(var(--pop-foot-pad-sheet) + var(--safe-b)) calc(var(--pop-pad) + var(--safe-l))}}.cf{display:grid;gap:8px;padding-right:32px}.cf-title{margin:0;font-size:22px;line-height:var(--cf-title-lh)}.cf-text{margin:0;color:var(--ink2);font-size:15px;line-height:var(--cf-text-lh)}.cf-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.cf-actions .btn{background:#eef2f7;color:var(--ink)}.cf-actions .btn.cf-danger{background:var(--bad);color:#fff}.screen.rs-screen{padding:0;overflow:hidden}.rs-scene{position:absolute;inset:0;overflow:hidden}.rs-scene:after{content:"";position:absolute;inset:0;background:var(--rs-shade)}.rs-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.rs-scroll{position:absolute;inset:0;overflow-y:auto;-webkit-overflow-scrolling:touch;container-type:inline-size;display:flex;flex-direction:column;align-items:center;padding:calc(var(--rs-my) + var(--safe-t)) max(var(--rs-mx),var(--safe-r)) calc(var(--rs-my) + var(--safe-b)) max(var(--rs-mx),var(--safe-l))}.rs-panel{position:relative;flex:1 0 auto;width:100%;max-width:var(--rs-max);display:grid;grid-template-columns:var(--rs-col-w) minmax(0,1fr);grid-template-rows:minmax(0,1fr);column-gap:var(--rs-col-gap);padding:var(--rs-pad);border-radius:var(--rs-r);background:var(--rs-bg);border:var(--scr-line-w) solid var(--rs-line);box-shadow:var(--rs-shadow)}@container (max-width: 769.98px){.rs-panel{grid-template-columns:var(--rs-col-w-narrow) minmax(0,1fr)}}.rs-over .rs-panel{grid-template-columns:var(--rs-col-w-over) minmax(0,1fr)}.rs-sum{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-width:0}.rs-kicker{color:var(--accent-soft);font-size:var(--rs-kicker-size);font-weight:var(--rs-kicker-weight);letter-spacing:var(--rs-kicker-spacing);text-transform:uppercase}.rs-name{margin-top:var(--rs-name-mt);color:var(--scr-ink-soft);font-size:var(--rs-name-size);font-weight:var(--rs-name-weight)}.rs-title{margin:var(--rs-title-mt) 0 0;font-size:var(--rs-title-size);font-weight:var(--rs-title-weight);line-height:var(--rs-title-lh)}.rs-fail .rs-title,.rs-over .rs-title{color:var(--rs-bad-ink)}.rs-stars{display:flex;gap:var(--rs-stars-gap);margin-top:var(--rs-stars-mt);font-size:var(--rs-stars-size);color:var(--star)}.rs-stars .ic.off{color:var(--star-off)}.rs-reason{margin:var(--rs-item-mt) 0 0;color:var(--rs-bad-ink);font-size:var(--rs-note-size);font-weight:var(--rs-reason-weight);line-height:var(--rs-note-lh)}.rs-tags{display:flex;flex-wrap:wrap;gap:var(--rs-tag-gap);margin-top:var(--rs-item-mt)}.rs-tag{display:inline-flex;align-items:center;height:var(--rs-tag-h);padding:var(--rs-tag-pad);border-radius:var(--rs-tag-h);font-size:var(--rs-tag-size);font-weight:var(--rs-tag-weight)}.rs-tag.bad{background:var(--rs-tag-bad-bg);color:var(--rs-bad-ink)}.rs-tag.good{background:var(--rs-tag-good-bg);color:var(--rs-good-ink)}.rs-sum .stat-gplx{margin-top:var(--rs-item-mt)}.stat-gplx.empty{background:var(--rs-gplx-empty-bg)}.stat-gplx.empty .stat-label,.stat-gplx.empty b,.stat-gplx.empty .stat-unit{color:var(--rs-bad-ink)}.rs-note{margin:var(--rs-item-mt) 0 0;color:var(--scr-ink-soft);font-size:var(--rs-note-size);line-height:var(--rs-note-lh)}.rs-side{container-type:inline-size;display:flex;flex-direction:column;gap:var(--rs-gap);min-width:0;min-height:0}.rs-stats{flex:1 1 auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(var(--rs-stat-min-h),1fr));gap:var(--rs-stats-gap)}.rs-stat{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;padding:var(--rs-stat-pad);border-radius:var(--rs-stat-r);background:var(--rs-stat-bg);border:var(--scr-line-w) solid var(--rs-stat-line);text-align:center}.rs-stat b{font-size:var(--rs-val-size);font-weight:var(--rs-val-weight);line-height:var(--rs-val-lh)}.rs-stat.bad b{color:var(--rs-bad-ink)}.rs-stat span{margin-top:var(--rs-lab-mt);color:var(--scr-ink-soft);font-size:var(--rs-lab-size);font-weight:var(--rs-lab-weight);line-height:var(--rs-lab-lh)}.res-next{flex:none;display:flex;align-items:center;gap:var(--rs-next-gap);min-width:0;padding:var(--rs-next-pad);border-radius:var(--rs-stat-r);background:var(--rs-stat-bg);border:var(--scr-line-w) solid var(--rs-stat-line)}.res-next b{font-size:var(--rs-next-size);font-weight:var(--rs-next-weight)}.res-next b:not(:only-child){flex:none;white-space:nowrap}.res-next-signs{flex:1 1 auto;display:flex;align-items:center;gap:var(--rs-next-signs-gap);min-width:0}.res-next-signs img{flex:0 1 var(--rs-next-sign);width:var(--rs-next-sign);min-width:0;aspect-ratio:1;padding:var(--rs-next-sign-pad);border-radius:var(--rs-next-sign-r);background:var(--rs-next-sign-bg);object-fit:contain}.res-next-signs span{flex:none;font-size:var(--rs-next-more-size);font-weight:var(--rs-next-more-weight)}.rs-actions{flex:none;display:flex;gap:var(--rs-btn-gap)}.rs-btn{flex:1 1 auto;display:flex;align-items:center;justify-content:center;gap:var(--rs-btn-icon-gap);min-height:var(--rs-btn-h);padding:var(--rs-btn-pad);border-radius:var(--rs-btn-r);border:var(--scr-line-w) solid var(--rs-btn-line);background:var(--rs-btn-bg);color:var(--scr-ink);font-size:var(--rs-btn-size);font-weight:var(--rs-btn-weight);line-height:var(--rs-btn-lh);text-align:center;transition:transform var(--btn-press-ms)}.rs-btn:active{transform:scale(var(--home-press))}.rs-btn .ic{font-size:var(--rs-btn-icon)}.rs-btn.rs-main{border-color:transparent;background:var(--accent);color:var(--accent-ink);box-shadow:var(--home-play-edge)}.rs-btn.rs-review{border-color:transparent;background:var(--rs-review-bg);box-shadow:var(--rs-review-edge)}.rs-btn.rs-compact{flex:none;width:var(--rs-compact-w);padding:0}.rs-btn.rs-compact .ic{font-size:var(--rs-compact-icon)}.rs-btn.rs-compact .rs-btn-text{display:none}@container (max-width: 449.98px){.rs-actions.rs-n4 .rs-btn{font-size:var(--rs-narrow-btn-size);padding:var(--rs-narrow-btn-pad)}.rs-actions.rs-n4 .rs-btn.rs-alt .ic{display:none}.rs-actions.rs-n4 .rs-btn.rs-alt.rs-list .ic{display:inline-block}}@container (max-width: 419.98px){.rs-btn{font-size:var(--rs-narrow-btn-size);padding:var(--rs-narrow-btn-pad)}.rs-actions .rs-btn.rs-alt.rs-list{flex:none;width:var(--rs-compact-w);padding:0}.rs-actions .rs-btn.rs-alt.rs-list .ic{font-size:var(--rs-compact-icon)}.rs-actions .rs-btn.rs-alt.rs-list .rs-btn-text,.rs-actions .rs-btn.rs-alt .ic{display:none}.rs-actions .rs-btn.rs-alt.rs-list .ic{display:inline-block}}@media(orientation:portrait){.rs-scroll{padding:calc(var(--rs-port-pad) + var(--safe-t)) calc(var(--rs-port-pad) + var(--safe-r)) calc(var(--rs-port-pad) + var(--safe-b)) calc(var(--rs-port-pad) + var(--safe-l))}.rs-panel{display:flex;flex-direction:column;gap:var(--rs-port-gap);padding:0;border:0;border-radius:0;background:none;box-shadow:none}.rs-sum,.rs-stats{border-radius:var(--rs-r);background:var(--rs-bg);border:var(--scr-line-w) solid var(--rs-line);box-shadow:var(--rs-shadow)}.rs-sum{align-items:center;padding:var(--rs-port-card-pad);text-align:center}.rs-tags{justify-content:center}.rs-side{display:contents}.rs-stats{flex:none;grid-template-rows:auto;padding:var(--rs-port-stats-pad)}.rs-stat{padding:var(--rs-port-stat-pad)}.res-next{flex-wrap:wrap;justify-content:center;row-gap:var(--rs-next-signs-gap);background:var(--rs-bg);border-color:var(--rs-line)}.res-next-signs{flex:0 1 auto}.rs-actions{margin-top:auto;flex-wrap:wrap}.rs-actions .rs-btn,.rs-actions.rs-n4 .rs-btn{font-size:var(--rs-btn-size);padding:var(--rs-btn-pad)}.rs-btn.rs-review,.rs-btn.rs-main{flex:1 1 100%}.rs-btn.rs-review{order:-2}.rs-btn.rs-main{order:-1}.rs-btn.rs-alt,.rs-btn.rs-compact{flex:1 1 0;width:auto;padding:var(--rs-btn-pad)}.rs-btn.rs-compact .ic{font-size:var(--rs-btn-icon)}.rs-btn.rs-compact .rs-btn-text,.rs-actions .rs-btn.rs-alt.rs-list .rs-btn-text{display:inline-block}.rs-actions .rs-btn.rs-alt.rs-list{flex:1 1 0;width:auto;padding:var(--rs-btn-pad)}.rs-actions .rs-btn.rs-alt.rs-list .ic{font-size:var(--rs-btn-icon)}.rs-actions .rs-btn.rs-alt .ic,.rs-actions.rs-n4 .rs-btn.rs-alt .ic{display:inline-block}}.viol-card{background:var(--card);color:var(--ink);border-radius:var(--viol-r);overflow:hidden;display:grid;margin-bottom:var(--viol-mb)}.viol-card .snap{width:100%;aspect-ratio:var(--viol-snap-ratio);object-fit:cover;background:var(--viol-snap-bg);display:block}.viol-card .body{padding:var(--viol-body-pad);display:grid;gap:var(--viol-body-gap)}.viol-card .head{display:flex;gap:var(--viol-head-gap);align-items:center}.viol-card .head img{width:var(--viol-sign);height:var(--viol-sign);object-fit:contain;flex:none}.viol-card h4{margin:0;font-size:var(--viol-title-size);line-height:var(--viol-title-lh)}.viol-card .pts-badge{display:inline-block;font-size:var(--viol-badge-size);font-weight:var(--viol-badge-weight);padding:var(--viol-badge-pad);border-radius:var(--viol-badge-r);background:var(--viol-badge-bg);color:var(--viol-badge-ink)}.viol-card .pts-badge.zero{background:var(--viol-badge-zero-bg);color:var(--viol-badge-zero-ink)}.viol-card .kv{font-size:var(--viol-kv-size);color:var(--ink2);line-height:var(--viol-kv-lh)}.viol-card .kv b{color:var(--ink)}.version{margin:0;font-size:var(--version-size);color:var(--scr-ink-soft);text-align:center;font-variant-numeric:tabular-nums}.law-note{font-size:var(--law-size);color:var(--scr-ink-soft);margin:var(--law-mt) 0 0;line-height:var(--law-lh)}.bar.book-bar{margin-bottom:var(--book-bar-mb)}.book-seen{margin:0 0 var(--book-seen-mb);color:var(--scr-ink-soft);font-size:var(--book-seen-size)}.tabs{display:flex;gap:var(--tabs-gap);overflow-x:auto;padding-bottom:var(--tabs-pb);margin-bottom:var(--tabs-mb);scrollbar-width:none}.tabs button{flex:none;padding:var(--tab-pad);border-radius:var(--tab-r);background:var(--tab-bg);color:var(--scr-ink);font-size:var(--tab-size);font-weight:var(--tab-weight)}.tabs button.on{background:var(--tab-on-bg);color:var(--ink)}.book{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--book-min-w),1fr));gap:var(--book-gap)}.book button{background:var(--card);border-radius:var(--book-tile-r);padding:var(--book-tile-pad);display:grid;justify-items:center;gap:var(--book-tile-gap);position:relative;color:var(--ink)}.book img{width:var(--book-img);height:var(--book-img);object-fit:contain}.book .cd{font-size:var(--book-code-size);font-weight:var(--book-code-weight);color:var(--ink2)}.book button.unseen img{opacity:var(--book-unseen-opacity);filter:grayscale(1)}.book .ok{position:absolute;top:var(--book-ok-inset);right:var(--book-ok-inset);background:var(--good);color:var(--book-ok-ink);border-radius:var(--book-ok-r);font-size:var(--book-ok-size);padding:var(--book-ok-pad);font-weight:var(--book-ok-weight)}.book button.sd-on{box-shadow:0 0 0 var(--book-mark-w) var(--accent)}.book button.sd-on.sd-fade{box-shadow:0 0 0 var(--book-mark-w) var(--book-mark-off);transition:box-shadow var(--book-mark-fade-ms) ease-out}.book-split{height:100%;display:flex}.book-left{flex:1 1 0;min-width:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:0 var(--scr-pad) calc(var(--scr-pad-b) + var(--safe-b)) calc(var(--scr-pad) + var(--safe-l))}.book-tabs{position:sticky;top:0;z-index:1;margin:0 calc(-1 * var(--scr-pad)) var(--frame-sticky-gap) calc(-1 * var(--scr-pad) - var(--safe-l));padding:var(--frame-sticky-pad) var(--scr-pad) var(--frame-sticky-pad) calc(var(--scr-pad) + var(--safe-l));background:var(--bg)}.book-right{flex:0 0 42%;max-width:420px;min-width:0;display:flex;flex-direction:column;border-left:var(--scr-line-w) solid var(--scr-line);container-type:inline-size;touch-action:pan-y}.book-detail{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:var(--scr-pad) calc(var(--scr-pad) + var(--safe-r)) var(--scr-pad) var(--scr-pad)}.book-detail-foot{flex:none;padding:var(--frame-foot-pad) calc(var(--scr-pad) + var(--safe-r)) calc(var(--frame-foot-pad) + var(--safe-b)) var(--scr-pad);border-top:var(--scr-line-w) solid var(--scr-line)}.book-detail-foot[hidden]{display:none}.book-empty{height:100%;display:grid;place-items:center;text-align:center;color:var(--scr-ink-dim);font-size:var(--book-empty-size)}.book-right .sd-sub{color:var(--scr-ink-dim)}.book-right .sd-title{color:var(--scr-ink)}.book-right .sd p{color:var(--scr-ink-soft)}.book-right .sd-nav button{background:var(--book-nav-bg);color:var(--scr-ink)}.book-right .sd-count{color:var(--scr-ink-soft)}.sd{display:grid;gap:10px}.sd-img{justify-self:center;width:45%;width:min(45cqw,200px);max-width:200px;aspect-ratio:1;object-fit:contain}.sd-sub{text-align:center;color:#64748b;font-size:14px;font-weight:600}.sd-title{margin:0;text-align:center;font-size:22px;line-height:1.3}.sd-badge{display:inline-block;vertical-align:3px;margin-left:8px;padding:2px 8px;border-radius:99px;background:var(--good);color:#fff;font-size:12px;font-weight:700;white-space:nowrap}.sd p{margin:0;color:var(--ink2);font-size:15px;line-height:1.5}.sd-nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px}.sd-nav button{min-height:44px;padding:0 12px;border-radius:12px;background:#eef2f7;color:var(--ink);font-size:15px;font-weight:700}.sd-nav button:disabled{opacity:.4;cursor:default}.sd-count{min-width:56px;text-align:center;color:var(--ink2);font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}.setting{display:flex;align-items:center;justify-content:space-between;gap:var(--set-gap);background:var(--set-bg);border-radius:var(--set-r);padding:var(--set-pad);margin-bottom:var(--set-mb)}.setting .t{font-weight:var(--set-title-weight)}.setting .d{font-size:var(--set-desc-size);color:var(--scr-ink-soft);margin-top:var(--set-desc-mt)}.btn.set-gap,.version.set-gap{margin-top:var(--set-gap-top)}.switch{width:var(--sw-w);height:var(--sw-h);border-radius:var(--sw-r);background:var(--sw-off-bg);position:relative;flex:none}.switch:after{content:"";position:absolute;top:var(--sw-knob-inset);left:var(--sw-knob-inset);width:var(--sw-knob);height:var(--sw-knob);border-radius:50%;background:var(--sw-knob-bg);transition:transform var(--sw-ms)}.switch.on{background:var(--good)}.switch.on:after{transform:translate(var(--sw-move))}.loading{display:grid;place-items:center;min-height:100%;text-align:center;gap:12px}.loading .spinner{margin:0 auto var(--spinner-mb)}.spinner{width:var(--spinner-size);height:var(--spinner-size);border-radius:50%;border:4px solid rgba(255,255,255,.2);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.help{display:grid;gap:var(--help-gap)}.help .item{background:var(--help-bg);border-radius:var(--help-r);padding:var(--help-pad);line-height:var(--help-lh);font-size:var(--help-size)}.help .item b{color:var(--accent)}.floating-toast{position:fixed;left:50%;bottom:calc(var(--toast-bottom) + var(--safe-b));transform:translate(-50%);background:var(--toast-bg);color:var(--scr-ink);padding:var(--toast-pad);border-radius:var(--toast-r);font-size:var(--toast-size);z-index:50}.toast-strip{flex:none;display:flex;justify-content:center;padding:var(--toast-gap) calc(var(--scr-pad) + var(--safe-r)) var(--toast-gap) calc(var(--scr-pad) + var(--safe-l));pointer-events:none}.frame:not(.has-foot)>.toast-strip{padding-bottom:calc(var(--toast-bottom) + var(--safe-b))}.toast-strip .floating-toast{position:static;transform:none}@media(max-height:420px)and (orientation:landscape){.screen{padding-top:calc(var(--scr-pad-t-low) + var(--safe-t))}.btn{min-height:46px;padding:8px 14px;font-size:16px}}@media(max-height:420px)and (orientation:landscape){.game{--lr-d: 62px;--gas-w: 49px;--gas-h: 74px;--brake-w: 99px;--pedal-font: 12px}}
