:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font-ui:Inter, ui-rounded, "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--font-hanzi:"Noto Sans SC", "Microsoft YaHei", "PingFang SC", sans-serif}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{font-family:var(--font-ui);background:#fff}button,input,select{font:inherit}button,label,select{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,select:focus-visible,[role=button]:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.app{--bg:#fff;--sidebar:#fff;--surface:#fff;--surface-raised:#fff;--surface-soft:#eef9e8;--border:#d7e8ce;--border-strong:#a8c99a;--text:#123d2b;--muted:#365c47;--faint:#64816f;--accent:#58cc02;--accent-strong:#46a900;--accent-soft:#58cc021f;--accent-shadow:#3d8f00;--success:#46a900;--success-soft:#58cc021f;--error:#2f7d4f;--error-soft:#2f7d4f21;--focus:#46a900;background:radial-gradient(circle at 72% 9%, #58cc0212, transparent 30rem), var(--bg);min-height:100vh;color:var(--text);grid-template-columns:248px minmax(720px,1fr);transition:color .16s,background .16s;display:grid}.boot-screen{color:#123d2b;min-height:100vh;font-family:var(--font-ui);background:#fff;place-content:center;justify-items:center;gap:18px;display:grid}.boot-screen p{color:#365c47;margin:0}.sidebar{background:color-mix(in srgb, var(--sidebar) 96%, transparent);border-right:1px solid var(--border);z-index:10;flex-direction:column;height:100vh;padding:30px 22px 24px;display:flex;position:sticky;top:0}.brand-lockup{align-items:center;gap:12px;padding:0 8px;display:flex}.brand-lockup strong{letter-spacing:-.02em;font-size:17px;display:block}.brand-lockup span{color:var(--muted);margin-top:2px;font-size:12px;display:block}.brand-mark{background:linear-gradient(145deg, var(--accent-strong), var(--accent));color:#fff;width:44px;height:44px;box-shadow:0 5px 0 var(--accent-shadow);font-family:var(--font-hanzi);border-radius:14px;place-items:center;font-size:24px;font-weight:700;display:grid}.brand-mark.large{border-radius:22px;width:70px;height:70px;font-size:36px}.nav-stack{gap:8px;margin-top:42px;display:grid}.nav-item{width:100%;min-height:52px;color:var(--muted);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:15px;grid-template-columns:24px 1fr auto;align-items:center;gap:10px;padding:0 14px;font-weight:700;transition:all .14s;display:grid}.nav-item:hover{background:var(--surface);color:var(--text)}.nav-item.active{border-color:color-mix(in srgb, var(--accent) 38%, var(--border));background:var(--accent-soft);color:var(--accent-strong)}.nav-symbol{font-family:var(--font-hanzi);text-align:center;font-size:17px}.nav-count{background:var(--surface-soft);min-width:28px;color:var(--muted);text-align:center;border-radius:999px;padding:3px 7px;font-size:11px}.sidebar-card{border:1px solid var(--border);background:linear-gradient(155deg, var(--surface), color-mix(in srgb, var(--surface) 78%, transparent));border-radius:18px;gap:6px;margin-top:30px;padding:18px;display:grid}.sidebar-card strong{font-size:15px}.sidebar-card>span:not(.eyebrow){color:var(--muted);font-size:12px}.streak-card{border:1px solid var(--border);background:var(--surface-soft);border-radius:18px;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;margin-top:30px;padding:15px 16px;display:grid}.streak-flame{background:var(--accent);width:30px;height:30px;color:var(--accent);box-shadow:inset 0 -4px 0 var(--accent-shadow);border-radius:50%}.streak-card strong,.streak-card span{display:block}.streak-card strong{color:var(--text);font-size:13px}.streak-card div span,.streak-card small{color:var(--muted);font-size:10px}.mini-rule,.panel-rule{background:var(--border);height:1px;margin:9px 0}.sidebar-bottom{margin-top:auto;padding:0 8px}.sidebar-bottom p{color:var(--faint);margin:12px 0 0;font-size:11px;line-height:1.5}.quiet-button,.text-button{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0;font-size:12px;font-weight:700}.quiet-button:hover,.text-button:hover{color:var(--text)}.primary-button:disabled{cursor:not-allowed;opacity:.5;transform:none}.workspace{width:100%;min-width:0}.practice-view,.library-view,.history-view,.about-view,.account-view{width:min(1180px,100% - 64px);margin:0 auto;padding:90px 0 54px}.workspace-header{justify-content:space-between;align-items:flex-end;gap:30px;display:flex}.workspace-header h1{letter-spacing:-.045em;margin:7px 0 8px;font-size:clamp(34px,4vw,52px);line-height:1}.workspace-header p{color:var(--muted);margin:0;line-height:1.6}.eyebrow{color:var(--accent-strong);letter-spacing:.13em;text-transform:uppercase;font-size:11px;font-weight:900}.header-actions,.library-actions{align-items:center;gap:12px;padding-right:154px;display:flex}.secondary-button,.import-button,.primary-button{cursor:pointer;border-radius:13px;min-height:44px;padding:0 17px;font-weight:850;transition:all .14s}.secondary-button,.import-button{border:1px solid var(--border-strong);background:var(--surface);color:var(--text)}.secondary-button:hover,.import-button:hover{border-color:var(--accent);background:var(--surface-raised)}.primary-button{border:1px solid var(--accent);border-bottom:4px solid var(--accent-shadow);background:var(--accent);color:#fff}.primary-button:hover{background:var(--accent-strong);transform:translateY(-1px)}.primary-button:active{border-bottom-width:1px;transform:translateY(2px)}.pinyin-toggle{color:var(--muted);cursor:pointer;white-space:nowrap;align-items:center;gap:9px;font-size:12px;font-weight:800;display:flex}.pinyin-toggle input{opacity:0;pointer-events:none;position:absolute}.pinyin-toggle>span{background:var(--surface-soft);border:1px solid var(--border-strong);border-radius:999px;width:36px;height:21px;padding:3px;transition:all .14s}.pinyin-toggle>span:after{content:"";background:var(--muted);border-radius:50%;width:13px;height:13px;transition:all .14s;display:block}.pinyin-toggle input:checked+span{background:var(--accent-soft);border-color:var(--accent)}.pinyin-toggle input:checked+span:after{background:var(--accent-strong);transform:translate(15px)}.practice-controls{border:1px solid var(--border);background:var(--surface);border-radius:18px;flex-wrap:wrap;align-items:center;gap:12px;margin-top:26px;padding:12px;display:flex}.segmented-control{border:1px solid var(--border);background:var(--surface-soft);border-radius:13px;gap:3px;padding:3px;display:inline-flex}.segmented-control button{min-height:34px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:9px;padding:0 12px;font-size:11px;font-weight:850}.segmented-control button:hover,.segmented-control button.active{background:var(--surface);color:var(--accent-strong);box-shadow:0 1px 0 var(--border)}.time-select{color:var(--muted);align-items:center;gap:7px;font-size:11px;font-weight:800;display:flex}.time-select select{border:1px solid var(--border-strong);background:var(--surface);min-height:34px;color:var(--text);cursor:pointer;border-radius:10px;padding:0 28px 0 10px}.session-strip{align-items:center;gap:15px;margin:34px 0 28px;display:flex}.session-strip>span{min-width:48px;color:var(--muted);text-align:right;font-size:12px;font-weight:850}.timer{min-width:54px;color:var(--text);text-align:right;font-size:15px}.timer.urgent{color:var(--accent-strong);animation:.7s ease-in-out infinite alternate timer-pulse}@keyframes timer-pulse{to{transform:scale(1.08)}}.progress-track{border:1px solid var(--border);background:var(--surface);border-radius:999px;flex:1;height:10px;overflow:hidden}.progress-fill{border-radius:inherit;background:var(--accent);height:100%;transition:width .36s cubic-bezier(.2,.8,.2,1)}.practice-layout{grid-template-columns:minmax(620px,1fr) 220px;align-items:start;gap:26px;display:grid}.match-board{border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 86%, transparent);border-radius:26px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 14px;padding:22px;display:grid;box-shadow:0 20px 70px #0000001f}.column-heading{justify-content:space-between;align-items:center;padding:0 6px 5px;display:flex}.column-heading span{color:var(--muted);font-size:12px;font-weight:850}.column-heading small{color:var(--faint);font-size:10px;font-weight:700}.card-column{gap:12px;display:grid}.match-card{border:2px solid var(--border-strong);background:var(--surface-raised);min-height:88px;color:var(--text);cursor:pointer;border-bottom-width:5px;border-radius:18px;place-items:center;padding:13px 44px;transition:border-color .12s,background .12s,transform .12s,opacity .12s;display:grid;position:relative}.match-card:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--border-strong));transform:translateY(-1px)}.match-card:active{border-bottom-width:2px;transform:translateY(3px)}.match-card.selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 12%, transparent)}.match-card.correct{border-color:var(--success);background:var(--success-soft);transform:scale(.98)}.match-card.wrong{border-color:var(--error);background:var(--surface-raised);box-shadow:0 0 0 4px var(--error-soft);animation:.32s wrong-buzz}@keyframes wrong-buzz{20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.key-hint{border:1px solid var(--border);width:21px;height:21px;color:var(--faint);border-radius:7px;place-items:center;font-size:9px;font-weight:900;display:grid;position:absolute;top:10px;left:11px}.english-text{letter-spacing:-.02em;font-size:clamp(17px,1.7vw,22px);font-weight:700}.hanzi-stack{justify-items:center;gap:2px;display:grid}.hanzi-text{font-family:var(--font-hanzi);font-size:clamp(25px,2.5vw,34px);font-weight:650;line-height:1.15}.pinyin-text{color:var(--muted);font-size:11px;font-weight:700}.listen-button{color:var(--faint);cursor:pointer;letter-spacing:.04em;text-transform:uppercase;border-radius:7px;padding:3px 6px;font-size:8px;font-weight:900;position:absolute;bottom:9px;right:10px}.listen-button:hover{background:var(--surface-soft);color:var(--accent-strong)}.session-panel{border:1px solid var(--border);background:var(--surface);border-radius:22px;padding:25px 22px}.session-number{color:var(--accent-strong);letter-spacing:-.06em;font-size:54px;font-weight:900;line-height:1}.session-panel>strong{margin-top:4px;font-size:13px;display:block}.panel-row{color:var(--muted);justify-content:space-between;margin:10px 0;font-size:12px;display:flex}.panel-row strong{color:var(--text)}.session-panel p{color:var(--faint);margin:22px 0 0;font-size:11px;line-height:1.55}.library-header,.history-header,.about-header{align-items:center}.import-button{justify-content:center;align-items:center;display:inline-flex}.import-button input{opacity:0;width:1px;height:1px;position:absolute;overflow:hidden}.library-toolbar{border:1px solid var(--border);background:var(--surface);border-radius:18px;justify-content:space-between;align-items:center;gap:20px;margin-top:34px;padding:14px 16px;display:flex}.search-box{flex:1;align-items:center;gap:12px;display:flex}.search-box span{color:var(--faint);text-transform:uppercase;font-size:11px;font-weight:850}.search-box input{width:100%;color:var(--text);background:0 0;border:0;outline:0;font-size:14px}.search-box input::placeholder{color:var(--faint)}.library-summary{white-space:nowrap;align-items:baseline;gap:7px;display:flex}.library-summary strong{color:var(--accent-strong);font-size:20px}.library-summary span{color:var(--muted);font-size:11px}.import-message{border:1px solid color-mix(in srgb, var(--success) 45%, var(--border));background:var(--success-soft);color:var(--success);border-radius:12px;margin-top:14px;padding:11px 14px;font-size:12px;font-weight:700}.word-table-wrap{border:1px solid var(--border);background:var(--surface);border-radius:20px;margin-top:16px;overflow-x:auto}.word-table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:920px}.word-table th{border-bottom:1px solid var(--border);color:var(--faint);letter-spacing:.08em;text-align:left;text-transform:uppercase;padding:14px 18px;font-size:10px;font-weight:900}.word-table th:first-child,.word-table th:nth-child(2){width:9%}.word-table th:nth-child(3){width:12%}.word-table th:nth-child(4){width:17%}.word-table th:nth-child(5){width:28%}.word-table th:nth-child(6){width:17%}.word-table th:nth-child(7){width:8%}.word-table td{border-bottom:1px solid color-mix(in srgb, var(--border) 70%, transparent);color:var(--muted);vertical-align:middle;padding:13px 18px;font-size:13px}.word-table tbody tr:last-child td{border-bottom:0}.word-table tbody tr:hover{background:color-mix(in srgb, var(--surface-raised) 75%, transparent)}.word-table td:nth-child(4){color:var(--text);font-weight:650}.word-table td small{color:var(--faint);margin-top:3px;font-size:10px;font-weight:500;display:block}.table-hanzi{color:var(--text);cursor:pointer;font-family:var(--font-hanzi);text-align:left;background:0 0;border:0;padding:0;font-size:24px;font-weight:650}.table-hanzi span{color:var(--faint);font-family:var(--font-ui);letter-spacing:.05em;text-transform:uppercase;font-size:8px;font-weight:850;display:block}.unit-pill,.source-pill,.rank-pill,.practice-status{border-radius:999px;align-items:center;min-height:25px;padding:0 9px;font-size:9px;font-weight:850;display:inline-flex}.rank-pill{background:var(--accent-soft);color:var(--accent-strong)}.unit-pill{background:var(--surface-soft);color:var(--muted)}.source-pill{background:var(--accent-soft);color:var(--accent-strong);margin-left:5px}.practice-status{background:var(--surface-soft);color:var(--faint)}.practice-status.practiced{background:var(--success-soft);color:var(--success)}.muted{color:var(--faint)}.empty-library{color:var(--muted);text-align:center;padding:48px 20px}.data-note{color:var(--faint);margin:16px 3px 0;font-size:10px}.danger-button{border:1px solid color-mix(in srgb, var(--error) 58%, var(--border));background:var(--error-soft);min-height:42px;color:var(--error);cursor:pointer;border-radius:12px;padding:0 15px;font-weight:850}.danger-button:hover:not(:disabled){border-color:var(--error)}.danger-button:disabled{cursor:not-allowed;opacity:.42}.danger-button.solid{background:var(--error);color:#fff;min-height:34px}.clear-confirm{border:1px solid color-mix(in srgb, var(--error) 42%, var(--border));background:var(--error-soft);border-radius:14px;align-items:center;gap:13px;padding:8px 9px 8px 14px;display:flex}.clear-confirm>span{color:var(--text);font-size:11px;font-weight:750}.history-summary-grid{grid-template-columns:repeat(4,1fr);gap:12px;margin-top:34px;display:grid}.history-summary-grid article{border:1px solid var(--border);background:var(--surface);border-radius:18px;flex-direction:column;justify-content:space-between;min-height:110px;padding:20px;display:flex}.history-summary-grid span{color:var(--muted);font-size:11px;font-weight:750}.history-summary-grid strong{color:var(--accent-strong);letter-spacing:-.04em;font-size:30px}.history-table-wrap{border:1px solid var(--border);background:var(--surface);border-radius:20px;margin-top:16px;overflow:hidden}.history-table{border-collapse:collapse;width:100%}.history-table th,.history-table td{border-bottom:1px solid color-mix(in srgb, var(--border) 72%, transparent);text-align:left;padding:13px 15px}.history-table th{color:var(--faint);letter-spacing:.08em;text-transform:uppercase;font-size:9px;font-weight:900}.history-table td{color:var(--muted);font-size:11px}.history-table tbody tr:last-child td{border-bottom:0}.history-table tbody tr:hover{background:color-mix(in srgb, var(--surface-raised) 72%, transparent)}.history-table td:nth-child(2){color:var(--text);font-size:12px;font-weight:650}.history-hanzi{color:var(--text);font-family:var(--font-hanzi);font-size:23px;font-weight:650;display:block}.history-table td small{color:var(--faint);font-size:9px}.accuracy-pill{background:var(--accent-soft);min-height:24px;color:var(--accent-strong);border-radius:999px;align-items:center;padding:0 8px;font-size:9px;font-weight:900;display:inline-flex}.row-reset{border:1px solid var(--border);color:var(--faint);cursor:pointer;background:0 0;border-radius:8px;padding:5px 8px;font-size:9px;font-weight:800}.row-reset:hover{border-color:var(--error);color:var(--error)}.history-empty{text-align:center;place-content:center;justify-items:center;min-height:360px;padding:44px;display:grid}.history-empty>div{background:var(--accent-soft);width:62px;height:62px;color:var(--accent-strong);border-radius:20px;place-items:center;margin-bottom:16px;font-size:27px;display:grid}.history-empty strong{font-size:19px}.history-empty p{color:var(--muted);margin:7px 0 22px;font-size:12px}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.about-summary{border:1px solid var(--border);background:var(--surface);border-radius:20px;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:34px;padding:18px;display:grid}.about-summary article{background:var(--surface-raised);border-radius:15px;gap:13px;min-width:0;padding:16px;display:flex}.about-summary article>span{background:var(--accent-soft);width:28px;height:28px;color:var(--accent-strong);border-radius:9px;flex:none;place-items:center;font-size:11px;font-weight:900;display:grid}.about-summary strong{font-size:13px}.about-summary p{color:var(--muted);margin:5px 0 0;font-size:10px;line-height:1.5}.about-section{margin-top:34px}.about-section h2{color:var(--text);letter-spacing:-.025em;margin:8px 0 0;font-size:26px}.game-catalog,.about-details{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px;display:grid}.game-card,.about-details article{border:1px solid var(--border);background:var(--surface);border-radius:18px;padding:22px}.game-card.available{border-color:color-mix(in srgb, var(--accent) 45%, var(--border));background:color-mix(in srgb, var(--accent) 6%, var(--surface))}.game-status{color:var(--accent-strong);letter-spacing:.09em;text-transform:uppercase;font-size:9px;font-weight:900}.game-card strong,.about-details strong{color:var(--text);margin-top:9px;font-size:16px;display:block}.game-card p,.about-details p{color:var(--muted);margin:7px 0 0;font-size:11px;line-height:1.6}.about-details{grid-template-columns:repeat(3,minmax(0,1fr))}.about-note{border-left:3px solid var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--surface));border-radius:3px 16px 16px 3px;margin-top:16px;padding:20px}.about-note strong{font-size:13px}.about-note p{color:var(--muted);margin:6px 0 0;font-size:11px;line-height:1.6}.about-note nav{flex-wrap:wrap;gap:6px 18px;display:flex}.about-note a{color:var(--accent-strong);margin-top:12px;font-size:11px;font-weight:850;text-decoration:none;display:inline-block}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(11px);backdrop-filter:blur(11px);background:#07080dc2;place-items:center;padding:30px;display:grid;position:fixed;inset:0}.progress-modal{border:1px solid var(--border-strong);background:var(--surface-raised);border-radius:26px;width:min(500px,100%);padding:34px;box-shadow:0 30px 100px #0000006b}.modal-symbol{background:var(--accent-soft);width:58px;height:58px;color:var(--accent-strong);font-family:var(--font-hanzi);border-radius:18px;place-items:center;margin-bottom:24px;font-size:28px;font-weight:700;display:grid}.progress-modal h2{letter-spacing:-.035em;margin:7px 0 10px;font-size:32px}.progress-modal>p{color:var(--muted);margin:0;line-height:1.6}.position-selectors{grid-template-columns:1fr 1fr;gap:12px;margin-top:26px;display:grid}.position-selectors label{gap:7px;display:grid}.position-selectors label>span{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:900}.position-selectors select{border:1px solid var(--border-strong);background:var(--surface);width:100%;height:50px;color:var(--text);cursor:pointer;border-radius:13px;padding:0 13px;font-weight:750}.modal-preview{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:13px;justify-content:space-between;align-items:center;margin-top:14px;padding:14px 16px;font-size:12px;display:flex}.modal-preview strong{color:var(--accent-strong)}.modal-actions{justify-content:flex-end;align-items:center;gap:18px;margin-top:26px;display:flex}.completion-card{z-index:80;border:1px solid color-mix(in srgb, var(--success) 45%, var(--border));background:color-mix(in srgb, var(--surface-raised) 95%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:22px;grid-template-columns:52px 1fr auto;align-items:center;gap:16px;width:min(600px,100% - 60px);padding:20px;display:grid;position:fixed;bottom:28px;right:30px;box-shadow:0 24px 70px #00000052}.completion-mark{background:var(--success-soft);width:48px;height:48px;color:var(--success);border-radius:15px;place-items:center;font-size:24px;font-weight:900;display:grid}.completion-card strong{margin-top:3px;font-size:18px;display:block}.completion-card p{color:var(--muted);margin:4px 0 0;font-size:11px}.ad-shell{border:1px solid var(--border);background:var(--surface);border-radius:16px;width:min(1080px,100% - 80px);min-height:96px;margin:0 auto 22px;padding:12px}.ad-label{color:var(--faint);letter-spacing:.1em;text-align:center;text-transform:uppercase;margin-bottom:8px;font-size:9px;font-weight:850;display:block}.adsbygoogle{min-height:60px;display:block}.site-footer{border-top:1px solid var(--border);width:min(1080px,100% - 80px);color:var(--faint);justify-content:space-between;align-items:center;gap:18px;margin:0 auto 28px;padding-top:18px;font-size:10px;display:flex}.site-footer nav{flex-wrap:wrap;gap:16px;display:flex}.site-footer a,.legal-page a{color:#46a900;font-weight:800;text-decoration:none}.site-footer a:hover,.legal-page a:hover{text-decoration:underline}.legal-page{color:#123d2b;min-height:100vh;font-family:var(--font-ui);background:#fff;padding:64px max(24px,50vw - 380px) 90px;line-height:1.72}.legal-back{margin-bottom:60px;display:inline-flex}.legal-kicker{color:#46a900;letter-spacing:.1em;text-transform:uppercase;font-size:11px;font-weight:900;display:block}.legal-page h1{color:#123d2b;letter-spacing:-.055em;margin:10px 0 14px;font-size:clamp(42px,8vw,68px);line-height:1}.legal-intro{color:#365c47;margin:0;font-size:18px}.legal-page section{border-top:2px solid #58cc02;margin-top:38px;padding-top:28px}.legal-page h2{color:#123d2b;letter-spacing:-.025em;margin:0 0 8px;font-size:21px}.legal-page p{color:#365c47;margin:0 0 12px}.legal-page code{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace}.contact-page h1,.donate-page h1{max-width:720px}.contact-form{gap:22px;display:grid}.contact-field{gap:7px;display:grid}.contact-field label{color:#123d2b;font-size:15px;font-weight:850}.contact-field label span{color:#668071;font-size:12px;font-weight:700}.contact-field input,.contact-field select,.contact-field textarea{color:#123d2b;width:100%;font:inherit;background:#fff;border:1px solid #9dcd8a;border-radius:12px;padding:12px 14px;line-height:1.4}.contact-field textarea{resize:vertical;min-height:170px}.contact-field input:focus,.contact-field select:focus,.contact-field textarea:focus{border-color:#46a900;outline:none;box-shadow:0 0 0 3px #58cc0229}.contact-field small,.contact-privacy-note{color:#668071;font-size:12px}.contact-honeypot{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.contact-submit-row{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.contact-submit{color:#123d2b;cursor:pointer;min-height:46px;font:inherit;background:#58cc02;border:0;border-radius:12px;justify-content:center;align-items:center;padding:11px 18px;font-weight:900;text-decoration:none;display:inline-flex}.contact-submit:hover{background:#46b800;text-decoration:none!important}.contact-submit:disabled{cursor:wait;opacity:.65}.contact-notice{font-size:13px;font-weight:750;margin:0!important}.contact-notice.sent{color:#268300}.contact-notice.error{color:#9b2d20}.contact-privacy-note{margin-top:22px!important}.donate-card{background:#f4fbed;border:1px solid #acd69b;border-radius:18px;padding:28px}.donate-card h2{font-size:26px}.donate-contact{margin-top:8px}.technical-grid article{background:#f4fbed;border:1px solid #acd69b;border-radius:16px}.technical-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:20px;display:grid}.technical-grid article{padding:20px}.technical-grid article>strong{margin-bottom:6px;display:block}.technical-grid article p{margin:0}@media (max-width:760px){.technical-grid{grid-template-columns:1fr}}@media (max-width:1050px){.app{grid-template-columns:210px minmax(680px,1fr)}.sidebar{padding-inline:15px}.practice-view,.library-view,.history-view,.about-view,.account-view{width:calc(100% - 40px)}.practice-layout{grid-template-columns:minmax(600px,1fr)}.session-panel{display:none}}@media (max-width:820px){.app{min-width:0;display:block}.sidebar{border-right:0;border-bottom:1px solid var(--border);width:100%;height:auto;padding:18px;position:relative}.nav-stack{grid-template-columns:1fr 1fr;margin-top:18px}.sidebar-card,.sidebar-bottom{display:none}.practice-view,.library-view,.history-view,.about-view,.account-view{width:calc(100% - 28px);padding-top:36px}.workspace-header,.library-toolbar{flex-direction:column;align-items:flex-start}.header-actions,.library-actions{flex-wrap:wrap;padding-right:0}.practice-layout,.match-board{min-width:0}.match-board{padding:14px}.match-card{min-height:82px;padding-inline:34px}.word-table-wrap{overflow-x:auto}.word-table,.history-table{min-width:760px}.history-table-wrap{overflow-x:auto}.history-summary-grid,.about-summary,.game-catalog,.about-details{grid-template-columns:1fr}.clear-confirm{flex-wrap:wrap;align-items:flex-start}.ad-shell,.site-footer{width:calc(100% - 28px)}.site-footer{flex-direction:column;align-items:flex-start}}@media (max-width:620px){.sidebar{padding:14px}.brand-lockup{padding:0}.brand-mark{border-radius:12px;width:38px;height:38px;font-size:21px}.brand-lockup>div:last-child span{display:none}.nav-stack{gap:6px}.nav-item{grid-template-columns:20px 1fr auto;min-height:46px;padding-inline:10px;font-size:11px}.practice-view,.library-view,.history-view,.about-view,.account-view{width:calc(100% - 20px);padding-top:28px}.workspace-header{gap:16px}.workspace-header h1{font-size:34px}.practice-controls{gap:8px;padding:9px}.segmented-control{width:100%}.segmented-control button{flex:1;padding-inline:7px}.pinyin-toggle{margin-left:auto}.session-strip{margin:22px 0 18px}.match-board{border-radius:20px;gap:8px;padding:10px}.column-heading{padding-inline:2px}.column-heading small,.key-hint,.listen-button{display:none}.card-column{gap:8px}.match-card{border-radius:14px;min-height:72px;padding:10px 8px}.english-text{overflow-wrap:anywhere;font-size:15px}.hanzi-text{font-size:27px}.pinyin-text{overflow-wrap:anywhere;font-size:9px}.completion-card{grid-template-columns:auto 1fr;bottom:10px;left:10px;right:10px}.completion-card .primary-button{grid-column:1/-1}.ad-shell{margin-bottom:env(safe-area-inset-bottom)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.game-picker{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:34px 0 16px;display:grid}.game-option{border:1px solid var(--border);background:var(--surface);min-height:86px;color:var(--text);cursor:pointer;text-align:left;border-radius:17px;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:15px 17px;display:grid}.game-option:hover,.game-option.active{border-color:var(--accent);background:var(--accent-soft)}.game-number,.game-keys{color:var(--accent-strong);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:900}.game-option strong,.game-option small{display:block}.game-option strong{font-size:14px}.game-option small{color:var(--muted);margin-top:4px;font-size:10px;line-height:1.45}.game-toolbar{justify-content:space-between;align-items:flex-end;gap:20px;margin:24px 0 0;display:flex}.game-toolbar p{color:var(--muted);margin:5px 0 0;font-size:12px}.pillar-board{border:1px solid var(--border);background:var(--surface-soft);border-radius:24px;grid-template-columns:minmax(220px,.72fr) minmax(330px,1.28fr);align-items:center;gap:28px;min-width:0;min-height:580px;padding:24px;display:grid}.pillar-scene{flex-direction:column;justify-content:flex-end;align-items:center;min-height:470px;display:flex}.pillar-cap,.pillar-brick,.pillar-current{border:2px solid var(--accent-strong);background:var(--surface);width:min(250px,100%);color:var(--text);box-shadow:0 5px 0 var(--accent-shadow);place-items:center;display:grid}.pillar-cap{width:72px;min-height:36px;color:var(--accent-strong);border-radius:14px 14px 5px 5px;font-size:11px;font-weight:900}.pillar-current{text-align:center;border-radius:17px;min-height:130px;margin-top:9px;padding:18px}.pillar-current strong{font-size:clamp(24px,4vw,48px);line-height:1.15}.pillar-current small{color:var(--accent-strong);margin-top:7px;font-size:13px;font-weight:800}.pillar-brick{background:var(--accent-soft);min-height:34px;color:var(--accent-strong);box-shadow:none;border-width:1px;border-radius:8px;margin-top:7px;font-weight:900}.pillar-base{background:var(--accent-strong);border-radius:7px 7px 14px 14px;width:min(290px,100%);height:24px;margin-top:8px}.choice-list{gap:10px;display:grid}.choice-card{border:1px solid var(--border-strong);background:var(--surface);min-height:82px;color:var(--text);cursor:pointer;text-align:left;border-radius:16px;grid-template-columns:30px 1fr 24px;align-items:center;gap:12px;padding:12px 15px;transition:transform .13s,border-color .13s,background .13s;display:grid}.choice-card:hover:not(:disabled){border-color:var(--accent);transform:translateY(-1px)}.choice-card.correct{border-color:var(--accent-strong);background:var(--accent-soft)}.choice-card.wrong{border-style:dashed;border-color:var(--error);background:var(--error-soft);opacity:.72}.choice-key{background:var(--surface-soft);width:28px;height:28px;color:var(--accent-strong);border-radius:9px;place-items:center;font-size:10px;font-weight:900;display:grid}.choice-card strong,.choice-card small{display:block}.choice-card strong{font-size:15px}.choice-hanzi strong{font-family:var(--font-hanzi);font-size:28px}.choice-card small{color:var(--muted);margin-top:3px;font-size:10px}.choice-mark{color:var(--accent-strong);text-align:center;font-weight:900}.round-list{border:1px solid var(--border);background:var(--surface);border-radius:20px;margin-top:28px;overflow:hidden}.round-list>article{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:20px;padding:17px 20px;display:flex}.round-list>article:last-child{border-bottom:0}.round-list strong,.round-list span{display:block}.round-list span{color:var(--muted);margin-top:4px;font-size:10px}.round-result{text-align:right}.account-card{border:1px solid var(--border);background:var(--surface-soft);border-radius:24px;margin-top:44px;padding:clamp(22px,4vw,38px)}.account-copy{align-items:flex-start;gap:16px;display:flex}.account-copy p,.account-notice p,.account-session p,.magic-link-form p,.account-points p{color:var(--muted);margin:6px 0 0;font-size:12px;line-height:1.6}.account-icon{background:var(--accent-strong);color:#fff;border-radius:14px;flex:none;place-items:center;width:46px;height:46px;font-size:20px;font-weight:900;display:grid}.account-notice,.account-session,.magic-link-form{border:1px solid var(--border-strong);background:var(--surface);border-radius:18px;margin-top:26px;padding:22px}.magic-link-form{grid-template-columns:minmax(220px,1fr) auto;align-items:end;gap:12px;display:grid}.magic-link-form label span,.account-session span{color:var(--muted);text-transform:uppercase;margin-bottom:7px;font-size:10px;font-weight:800;display:block}.magic-link-form input{border:1px solid var(--border-strong);width:100%;height:44px;color:var(--text);background:#fff;border-radius:12px;padding:0 13px}.magic-link-form p{grid-column:1/-1}.account-session{grid-template-columns:1fr 1fr;gap:18px;display:grid}.account-session p,.account-actions{grid-column:1/-1}.account-actions{gap:10px;display:flex}.sync-synced,.sync-loading,.sync-local,.sync-error{color:var(--accent-strong);text-transform:capitalize}.account-points{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px;display:grid}.account-points article{border:1px solid var(--border);background:var(--surface);border-radius:17px;padding:20px}.auth-callback{color:#123d2b;text-align:center;background:#fff;place-content:center;justify-items:center;min-height:100vh;padding:30px;display:grid}.auth-callback h1{margin:24px 0 0}.auth-callback p{color:#365c47}.auth-callback a{color:#46a900;font-weight:800}@media (max-width:820px){.practice-layout{grid-template-columns:minmax(0,1fr)}.game-picker,.account-points{grid-template-columns:1fr}.pillar-board{grid-template-columns:1fr;min-height:0}.pillar-scene{min-height:360px}.game-toolbar{flex-direction:column;align-items:flex-start}}@media (max-width:620px){.game-option{grid-template-columns:auto 1fr}.game-keys{display:none}.magic-link-form,.account-session{grid-template-columns:1fr}.magic-link-form p,.account-session p,.account-actions{grid-column:1}.account-actions{flex-direction:column;align-items:stretch}.pillar-board{padding:14px}.choice-card{min-height:70px}}
