:root{--hsk-bg: #f5f7f2;--hsk-surface: #ffffff;--hsk-primary: #256b4c;--hsk-primary-hover: #1e593f;--hsk-on-primary: #ffffff;--hsk-accent-soft: #d8e6dc;--hsk-border: #c9d9ce;--hsk-text-primary: #1e2b24;--hsk-text-secondary: #5f6f66;--kwl-concrete: #262421;--kwl-concrete-seam: #1a1816;--kwl-fascia: #1b1815;--kwl-cabinet: #28221d;--kwl-steel-border: #565d63;--kwl-amber: #ec9a29;--kwl-amber-muted: #c8b496;--kwl-cream: #f2e6d0;--kwl-manila: #e5d4b8;--kwl-paper-border: #8c7a6b;--kwl-cn-base: #c84b31;--kwl-kr-base: #1d5b79;--kwl-kr-accent: #468b97;--kwl-jp-base: #9e2a2b;--kwl-jp-accent: #e0533c;--kwl-danger: #d64045;--font-sans: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", "Noto Sans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--font-mono: "JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--app-viewport-height: 100dvh;--tg-safe-top: 0px;--tg-safe-right: 0px;--tg-safe-bottom: 0px;--tg-safe-left: 0px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:var(--app-viewport-height, 100dvh);background-color:var(--hsk-bg);color:var(--hsk-text-primary);font-family:var(--font-sans);line-height:1.45;-webkit-font-smoothing:antialiased;overflow-x:hidden}button,input{font:inherit}.page-shell{width:100%;max-width:1040px;min-height:var(--app-viewport-height, 100dvh);margin:0 auto;padding:max(20px,env(safe-area-inset-top,0px),var(--tg-safe-top, 0px)) max(16px,env(safe-area-inset-right,0px),var(--tg-safe-right, 0px)) max(28px,env(safe-area-inset-bottom,0px),var(--tg-safe-bottom, 0px)) max(16px,env(safe-area-inset-left,0px),var(--tg-safe-left, 0px));display:flex;flex-direction:column}.top-bar,.module-topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:24px}.module-topbar{align-items:center;margin-bottom:20px}.brand-wrap{min-width:0}.brand-title{margin:0;font-size:clamp(1.75rem,4vw,2.25rem);font-weight:800;letter-spacing:-.02em;color:var(--hsk-primary)}.brand-tagline{margin:4px 0 0;font-size:.95rem;color:var(--hsk-text-secondary)}.lang-toggle{display:inline-flex;flex-shrink:0;border:1.5px solid var(--hsk-border);border-radius:10px;background:var(--hsk-surface);overflow:hidden}.lang-btn{border:0;background:transparent;color:var(--hsk-text-secondary);padding:8px 12px;font-size:.85rem;font-weight:700;cursor:pointer;transition:background-color .15s ease,color .15s ease}.lang-btn.is-active{background:var(--hsk-primary);color:var(--hsk-on-primary)}.back-btn{border-radius:10px;padding:9px 14px;font-size:.92rem;font-weight:700;cursor:pointer}.back-btn--hsk{border:1.5px solid var(--hsk-border);background:var(--hsk-surface);color:var(--hsk-primary)}.back-btn--hsk:hover{background:var(--hsk-accent-soft)}.back-btn--parcel{border:1.5px solid var(--kwl-amber);background:var(--kwl-fascia);color:var(--kwl-cream);font-family:var(--font-mono)}.back-btn--parcel:hover{background:var(--kwl-cabinet)}.home-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:stretch}.module-card{border-radius:18px;padding:24px;display:flex;flex-direction:column;gap:10px}.module-card--hsk{background:var(--hsk-surface);border:2px solid var(--hsk-border)}.module-card--parcel{background:var(--kwl-concrete);border:2px solid var(--kwl-amber);color:var(--kwl-cream)}.module-badge{align-self:flex-start;padding:4px 10px;border-radius:999px;font-size:.78rem;font-weight:700;letter-spacing:.03em}.module-badge--hsk{background:var(--hsk-accent-soft);color:var(--hsk-primary)}.module-badge--parcel{background:var(--kwl-fascia);border:1px solid var(--kwl-amber);color:var(--kwl-amber);font-family:var(--font-mono);border-radius:4px}.module-title{margin:4px 0 0;font-size:1.45rem;font-weight:800;color:var(--hsk-text-primary)}.module-title--parcel{color:var(--kwl-cream);font-family:var(--font-mono)}.module-desc{margin:0;font-size:1.02rem;color:var(--hsk-text-secondary)}.module-desc--parcel{color:var(--kwl-amber-muted)}.module-meta{margin:0 0 8px;font-size:.88rem;color:var(--hsk-text-secondary)}.module-meta--parcel{color:#a5937d;font-family:var(--font-mono)}.module-action{margin-top:auto;width:100%;min-height:48px;border-radius:12px;font-size:.98rem;font-weight:800;letter-spacing:.03em;cursor:pointer}.module-action--hsk{border:0;background:var(--hsk-primary);color:var(--hsk-on-primary)}.module-action--hsk:hover{background:var(--hsk-primary-hover)}.module-action--parcel{border:2px solid var(--kwl-amber);background:#2e6f40;color:var(--kwl-cream);font-family:var(--font-mono);border-radius:6px}.module-action--parcel:hover{background:#255a34}.home-footer{margin-top:auto;padding-top:28px;text-align:center;font-size:.82rem;color:var(--hsk-text-secondary)}@media(max-width:700px){.home-grid{grid-template-columns:1fr}.module-card{padding:20px}}.hsk-home-container,.hsk-flash-container{width:100%;max-width:640px;margin:0 auto;display:flex;flex-direction:column;gap:16px}.hsk-home-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.hsk-home-title{margin:0;font-size:clamp(1.6rem,4vw,2.1rem);font-weight:800;color:var(--hsk-primary)}.hsk-soft-pill{border:1.5px solid var(--hsk-border);border-radius:12px;background:var(--hsk-accent-soft);color:var(--hsk-primary);padding:10px 16px;font-size:.94rem;font-weight:700;cursor:pointer;white-space:nowrap}.hsk-soft-pill:hover{background:#c8dcd0}.hsk-level-chip{align-self:flex-start;padding:7px 14px;border-radius:10px;background:var(--hsk-accent-soft);color:var(--hsk-primary);font-size:.9rem;font-weight:700}.hsk-progress-card{background:var(--hsk-surface);border:1.5px solid var(--hsk-border);border-radius:18px;padding:20px;display:flex;flex-direction:column;gap:12px}.hsk-progress-label{font-size:1.05rem;font-weight:700;color:var(--hsk-text-primary)}.hsk-progress-track{width:100%;height:12px;border-radius:999px;background:var(--hsk-accent-soft);overflow:hidden}.hsk-progress-fill{height:100%;background:var(--hsk-primary);border-radius:999px;transition:width .2s ease}.hsk-stats-label{font-size:.92rem;color:var(--hsk-text-secondary)}.hsk-home-actions{display:flex;flex-direction:column;gap:12px;margin-top:4px}.hsk-btn{min-height:52px;padding:12px 18px;border-radius:14px;font-size:1rem;font-weight:700;cursor:pointer;border:1.5px solid transparent;transition:background-color .15s ease,border-color .15s ease}.hsk-btn--primary{background:var(--hsk-primary);color:var(--hsk-on-primary)}.hsk-btn--primary:hover{background:var(--hsk-primary-hover)}.hsk-btn--soft{background:var(--hsk-accent-soft);color:var(--hsk-primary);border-color:var(--hsk-border)}.hsk-btn--soft:hover{background:#c8dcd0}.hsk-btn--soft.is-favorited{background:#fdf3d7;border-color:#d9a441;color:#7a5200}.hsk-flash-title{margin:0;text-align:center;font-size:1.35rem;font-weight:800;color:var(--hsk-primary)}.hsk-flash-session{margin:-8px 0 0;text-align:center;font-size:.9rem;color:var(--hsk-text-secondary)}.hsk-flash-card{width:100%;min-height:290px;padding:28px 20px;background:var(--hsk-surface);border:2px solid var(--hsk-border);border-radius:22px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;cursor:pointer}.hsk-flash-card:focus-visible{outline:2px solid var(--hsk-primary);outline-offset:2px}.hsk-flash-hanzi{font-size:clamp(3.4rem,12vw,5.5rem);font-weight:800;line-height:1.15;color:var(--hsk-text-primary)}.hsk-flash-pinyin{font-size:1.4rem;font-weight:700;color:var(--hsk-primary);min-height:1.6em}.hsk-flash-translation{font-size:1.15rem;color:var(--hsk-text-primary);min-height:1.5em}.hsk-flash-pinyin.is-hidden,.hsk-flash-translation.is-hidden{visibility:hidden}.hsk-flash-hint{margin-top:6px;font-size:.9rem;color:var(--hsk-text-secondary)}.hsk-flash-empty{padding:36px 24px;background:var(--hsk-surface);border:1.5px solid var(--hsk-border);border-radius:20px;text-align:center;font-size:1.05rem;color:var(--hsk-text-secondary)}.hsk-flash-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.hsk-flash-row[hidden]{display:none}.hsk-toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);max-width:calc(100vw - 32px);padding:10px 16px;border-radius:10px;background:var(--hsk-text-primary);color:#fff;font-size:.9rem;font-weight:600;text-align:center;z-index:50}.hsk-header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:16px}.hsk-title{margin:0;font-size:clamp(1.5rem,3.5vw,2rem);font-weight:800;color:var(--hsk-primary)}.hsk-subtitle{margin:4px 0 0;font-size:.92rem;color:var(--hsk-text-secondary)}.hsk-count-badge{padding:6px 12px;border-radius:999px;background:var(--hsk-accent-soft);color:var(--hsk-primary);font-size:.88rem;font-weight:700;white-space:nowrap}.hsk-search-wrap{display:flex;align-items:center;gap:8px;margin-bottom:12px}.hsk-search-input{flex:1 1 auto;min-width:0;height:48px;padding:0 14px;border:1.5px solid var(--hsk-border);border-radius:12px;background:var(--hsk-surface);color:var(--hsk-text-primary);font-size:1rem}.hsk-search-input:focus{outline:2px solid var(--hsk-primary);outline-offset:1px}.hsk-search-clear{flex-shrink:0;height:48px;padding:0 14px;border:1.5px solid var(--hsk-border);border-radius:12px;background:var(--hsk-surface);color:var(--hsk-primary);font-weight:700;cursor:pointer}.hsk-filter-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.hsk-filter-chip{min-height:38px;padding:6px 14px;border-radius:999px;border:1.5px solid var(--hsk-border);background:var(--hsk-surface);color:var(--hsk-text-secondary);font-size:.88rem;font-weight:700;cursor:pointer}.hsk-filter-chip.is-active{background:var(--hsk-primary);border-color:var(--hsk-primary);color:var(--hsk-on-primary)}.hsk-vocab-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:12px}.hsk-word-card{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--hsk-surface);border:1.5px solid #e1e8e3;border-radius:14px;min-width:0}.hsk-word-card--interactive{cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.hsk-word-card--interactive:hover{border-color:var(--hsk-primary);background:#fafcf9}.hsk-word-card--interactive:focus-visible{outline:2px solid var(--hsk-primary);outline-offset:2px}.hsk-word-hanzi{flex:0 0 72px;text-align:center;font-size:1.65rem;font-weight:700;color:var(--hsk-primary);line-height:1.2;word-break:keep-all}.hsk-word-body{flex:1 1 auto;min-width:0}.hsk-word-topline{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.hsk-word-pinyin{font-size:.96rem;font-weight:700;color:var(--hsk-primary);overflow-wrap:anywhere}.hsk-status-pill{padding:2px 7px;border-radius:999px;font-size:.72rem;font-weight:700;white-space:nowrap}.hsk-status-pill.is-learned{background:var(--hsk-accent-soft);color:var(--hsk-primary)}.hsk-status-pill.is-review{background:#fde8df;color:#a13a1c}.hsk-status-pill.is-unlearned{background:#edf0ec;color:var(--hsk-text-secondary)}.hsk-word-translation{margin-top:3px;font-size:.94rem;color:var(--hsk-text-primary);overflow-wrap:anywhere}.hsk-word-actions{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.hsk-icon-btn{width:40px;height:40px;border:1px solid #e1e8e3;border-radius:10px;background:var(--hsk-bg);color:var(--hsk-text-secondary);font-size:1.05rem;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.hsk-icon-btn:hover{background:var(--hsk-accent-soft);color:var(--hsk-primary)}.hsk-icon-btn.is-fav{background:#fdf3d7;border-color:#d9a441;color:#b57b00}.hsk-empty{padding:28px 20px;text-align:center;background:var(--hsk-surface);border:1.5px solid var(--hsk-border);border-radius:14px;color:var(--hsk-text-secondary)}@media(max-width:520px){.hsk-vocab-list{grid-template-columns:1fr}.hsk-word-hanzi{flex-basis:64px;font-size:1.5rem}}.kwl-cabinet{background:var(--kwl-concrete);border:2px solid var(--kwl-amber);border-radius:10px;overflow:hidden;color:var(--kwl-cream)}.kwl-fascia{background:var(--kwl-fascia);border-bottom:2px solid var(--kwl-amber);padding:20px}.kwl-badge{display:inline-block;padding:4px 10px;border:1px solid var(--kwl-amber);border-radius:4px;background:var(--kwl-cabinet);color:var(--kwl-amber);font-family:var(--font-mono);font-size:.78rem;font-weight:700;letter-spacing:.04em}.kwl-title{margin:10px 0 6px;font-family:var(--font-mono);font-size:clamp(1.5rem,3.5vw,2rem);color:var(--kwl-cream)}.kwl-desc{margin:0;color:var(--kwl-amber-muted);font-size:.98rem}.kwl-scene{padding:20px;display:flex;flex-direction:column;gap:18px}.kwl-conveyor{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:14px 16px;background:#1b1916;border-top:4px solid #4a433b;border-bottom:4px solid #4a433b;outline:1.5px solid var(--kwl-amber);font-family:var(--font-mono);font-size:.82rem;font-weight:700}.kwl-conveyor-sign{color:var(--kwl-cream)}.kwl-conveyor-danger{padding:2px 8px;background:#331917;border:1px solid var(--kwl-danger);color:var(--kwl-jp-accent)}.kwl-airway-bill{background:var(--kwl-cream);border:2px solid var(--kwl-paper-border);border-left:12px solid var(--kwl-manila);border-right:12px solid var(--kwl-manila);border-radius:6px;padding:18px;color:#181512}.kwl-bill-header{font-family:var(--font-mono);font-size:.92rem;font-weight:800;color:var(--kwl-jp-base);border-bottom:1px solid #9e8c73;padding-bottom:8px;margin-bottom:10px}.kwl-bill-body{margin:0;font-size:.98rem;color:#263238}.kwl-docks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.kwl-dock{background:#13110f;border-radius:6px;overflow:hidden;border:2px solid var(--kwl-steel-border)}.kwl-dock-header{padding:8px 10px;font-family:var(--font-mono);font-size:.78rem;font-weight:800;text-align:center;color:#fff}.kwl-dock-seal{padding:18px 8px;text-align:center;font-size:1.2rem;font-weight:800;color:var(--kwl-cream)}.kwl-dock--cn{border-color:var(--kwl-amber)}.kwl-dock--cn .kwl-dock-header{background:var(--kwl-cn-base)}.kwl-dock--kr{border-color:var(--kwl-kr-accent)}.kwl-dock--kr .kwl-dock-header{background:var(--kwl-kr-base)}.kwl-dock--jp{border-color:var(--kwl-jp-accent)}.kwl-dock--jp .kwl-dock-header{background:var(--kwl-jp-base)}@media(max-width:600px){.kwl-docks{grid-template-columns:1fr}}.parcel-game-page{height:var(--app-viewport-height, 100dvh);width:100%;display:flex;flex-direction:column;background:#141210;color:var(--kwl-cream, #f2e6d0);overflow:hidden;overscroll-behavior:none;touch-action:none}.pm-topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:max(6px,env(safe-area-inset-top,0px),var(--tg-safe-top, 0px)) max(12px,env(safe-area-inset-right,0px),var(--tg-safe-right, 0px)) 6px max(12px,env(safe-area-inset-left,0px),var(--tg-safe-left, 0px));background:var(--kwl-fascia, #1a1714);border-bottom:2px solid var(--kwl-amber, #ec9a29);flex-shrink:0;z-index:2}.pm-back-btn{flex-shrink:0;padding:7px 12px;font-size:.85rem}.pm-topbar-title{font-family:var(--font-mono);font-size:.78rem;font-weight:700;letter-spacing:.05em;color:var(--kwl-amber, #ec9a29);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pm-topbar-lang{flex-shrink:0}.pm-stage-wrap{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:8px max(8px,env(safe-area-inset-right,0px),var(--tg-safe-right, 0px)) max(8px,env(safe-area-inset-bottom,0px),var(--tg-safe-bottom, 0px)) max(8px,env(safe-area-inset-left,0px),var(--tg-safe-left, 0px));background:radial-gradient(circle at 50% 25%,rgba(236,154,41,.07),transparent 65%),#12100e;overflow:hidden;touch-action:none}.pm-stage{position:relative;width:min(100%,440px);height:100%;max-height:820px;border:2px solid var(--kwl-amber, #ec9a29);border-radius:6px;overflow:hidden;background:#23201c;box-shadow:0 12px 32px #0000008c;touch-action:none;user-select:none;-webkit-user-select:none}.pm-canvas{display:block;width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:grab}.pm-canvas:active{cursor:grabbing}@media(max-width:600px){.pm-topbar{padding:max(5px,env(safe-area-inset-top,0px),var(--tg-safe-top, 0px)) max(10px,env(safe-area-inset-right,0px),var(--tg-safe-right, 0px)) 5px max(10px,env(safe-area-inset-left,0px),var(--tg-safe-left, 0px))}.pm-topbar-title{display:none}.pm-stage-wrap{padding:0 max(0px,env(safe-area-inset-right,0px),var(--tg-safe-right, 0px)) max(0px,env(safe-area-inset-bottom,0px),var(--tg-safe-bottom, 0px)) max(0px,env(safe-area-inset-left,0px),var(--tg-safe-left, 0px))}.pm-stage{width:100%;max-height:none;border-left:none;border-right:none;border-bottom:none;border-radius:0}}.kwl-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#100e0cdb;display:flex;align-items:safe center;justify-content:center;padding:16px;overflow-y:auto;z-index:30}.kwl-modal-panel{width:min(100%,340px);background:#25211d;border:2px solid var(--kwl-amber, #ec9a29);border-radius:6px;padding:16px;box-shadow:0 10px 28px #000000a6;display:flex;flex-direction:column;gap:10px;color:var(--kwl-cream, #f2e6d0)}.kwl-modal-header{font-family:var(--font-mono);font-size:.78rem;font-weight:800;letter-spacing:.06em;color:var(--kwl-amber, #ec9a29);border-bottom:1px solid #4a4035;padding-bottom:6px}.kwl-modal-score{font-family:var(--font-mono);font-size:1.25rem;font-weight:800;color:#4ad66d}.kwl-modal-subtitle{margin:0;font-size:.88rem;line-height:1.4;color:var(--kwl-cream, #f2e6d0)}.kwl-modal-input{width:100%;box-sizing:border-box;padding:10px 12px;border-radius:4px;border:2px solid var(--kwl-amber, #ec9a29);background:#171411;color:var(--kwl-cream, #f2e6d0);font-family:var(--font-mono);font-size:1rem;font-weight:700;letter-spacing:.04em;outline:none}.kwl-modal-input:focus{border-color:#4ad66d}.kwl-modal-submit{width:100%;padding:10px 14px;border:2px solid var(--kwl-amber, #ec9a29);border-radius:4px;background:#2e6f40;color:var(--kwl-cream, #f2e6d0);font-family:var(--font-mono);font-size:.92rem;font-weight:800;letter-spacing:.04em;cursor:pointer}.kwl-modal-submit:hover{background:#38854d}
