@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/build/assets/plus-jakarta-sans-cyrillic-ext-wght-normal-lLTsRRxN.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/build/assets/plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/build/assets/plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/build/assets/plus-jakarta-sans-latin-wght-normal-eXO_dkmS.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--c-bg: #F8F9FB;--c-surface: #FFFFFF;--c-surface-raised: #FFFFFF;--c-surface-muted: #F2F3F7;--c-surface-sunken: #EFF1F5;--c-text: #1C1F26;--c-text-secondary: #5A6170;--c-text-tertiary: #8A91A0;--c-text-invert: #FFFFFF;--c-heading: #14161C;--c-accent: #3A6BE8;--c-accent-strong: #2F5BD0;--c-accent-soft: #E9EEFC;--c-teal: #0E9C93;--c-teal-soft: #E2F5F3;--c-border: #E4E7EE;--c-border-strong: #D3D8E3;--c-success: #1B8A5A;--c-success-soft: #E2F4EB;--c-error: #D64550;--c-error-soft: #FBE9EA;--c-warning: #B76E00;--c-warning-soft: #FBF1E0;--c-type-pending: #667085;--c-type-correct: #25313D;--c-type-error: #DC2626;--c-type-caret: #2563EB;--c-type-current-word: #E0E9FE;--c-type-current-line: #F4F7FD;--c-type-correct-tint: rgba(27, 138, 90, .12);--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-pill: 999px;--border-thin: 1px solid var(--c-border);--border-strong: 1px solid var(--c-border-strong);--shadow-xs: 0 1px 2px rgba(20, 22, 28, .04);--shadow-sm: 0 1px 3px rgba(20, 22, 28, .05), 0 1px 2px rgba(20, 22, 28, .04);--shadow-md: 0 4px 12px rgba(20, 22, 28, .06), 0 2px 4px rgba(20, 22, 28, .03);--shadow-focus: 0 0 0 3px rgba(58, 107, 232, .18);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--fs-xs: 12px;--fs-sm: 13px;--fs-base: 15px;--fs-md: 16px;--fs-lg: 18px;--fs-xl: 22px;--fs-2xl: 28px;--fs-3xl: 34px;--lh-tight: 1.25;--lh-normal: 1.5;--lh-relaxed: 1.65;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 650;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "SFMono-Regular", "Cascadia Mono", Consolas, "Roboto Mono", ui-monospace, monospace;--container-max: 1240px;--test-max: 960px;--side-ad-width: 160px;--header-height: 72px;--z-header: 100;--z-overlay: 200;--z-modal: 300;--ease: ease;--t-fast: .12s;--t-base: .2s;--t-slow: .3s;--motion-note: 1}:root[data-theme=dark],:root.dark{color-scheme:dark;--c-bg: #121418;--c-surface: #1A1D23;--c-surface-raised: #20242B;--c-surface-muted: #23262E;--c-surface-sunken: #191C21;--c-text: #E7E9EF;--c-text-secondary: #A6ADBB;--c-text-tertiary: #7C8494;--c-text-invert: #121418;--c-heading: #F1F3F8;--c-accent: #6E93F4;--c-accent-strong: #8CABF7;--c-accent-soft: #232D47;--c-teal: #3EC4BA;--c-teal-soft: #1C3636;--c-border: #2B2F38;--c-border-strong: #3A3F4B;--c-success: #4CC38A;--c-success-soft: #1C352B;--c-error: #F07A84;--c-error-soft: #3A2326;--c-warning: #E6A351;--c-warning-soft: #3A2F1C;--c-type-pending: #9CA3AF;--c-type-correct: #C8CDD6;--c-type-error: #F87171;--c-type-caret: #60A5FA;--c-type-current-word: #1E3A6E;--c-type-current-line: rgba(110, 147, 244, .06);--c-type-correct-tint: rgba(76, 195, 138, .12);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .35);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4);--shadow-md: 0 4px 12px rgba(0, 0, 0, .35);--shadow-focus: 0 0 0 3px rgba(110, 147, 244, .28)}@media(max-width:1179.98px){:root{--header-height: 64px}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-normal);color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{margin:0 0 var(--sp-4);color:var(--c-heading);font-weight:var(--fw-semibold);line-height:var(--lh-tight);letter-spacing:-.01em}h1{font-size:var(--fs-3xl)}h2{font-size:var(--fs-2xl)}h3{font-size:var(--fs-xl)}h4{font-size:var(--fs-lg)}p{margin:0 0 var(--sp-4)}a{color:var(--c-accent);text-decoration:none}a:hover{text-decoration:underline}img,svg,video{display:block;max-width:100%;height:auto}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none;padding:0}ul,ol{margin:0;padding:0;list-style:none}hr{border:0;border-top:var(--border-thin);margin:var(--sp-6) 0}::selection{background:var(--c-accent-soft);color:var(--c-text)}:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px;border-radius:var(--radius-xs)}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){:root{--motion-note: 0}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.skip-link{position:fixed;left:var(--sp-3);top:var(--sp-3);z-index:var(--z-modal);padding:var(--sp-2) var(--sp-4);background:var(--c-surface);border:var(--border-thin);border-radius:var(--radius-sm);transform:translateY(-250%);transition:transform var(--t-fast) var(--ease);text-decoration:none;color:var(--c-text)}.skip-link:focus-visible{transform:translateY(0)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-sm);color:var(--c-text-secondary);transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.icon-btn:hover{background:var(--c-surface-muted);color:var(--c-text)}.icon-btn svg{width:18px;height:18px}.theme-icon--moon{display:none}[data-theme=dark] .theme-icon--moon,.dark .theme-icon--moon{display:block}[data-theme=dark] .theme-icon--sun,.dark .theme-icon--sun{display:none}.site-main{min-height:calc(100vh - var(--header-height))}.page-container{max-width:var(--container-max);margin:0 auto;padding:var(--sp-8) var(--sp-6) var(--sp-12)}.page-container:has(>.layout-test){padding-top:var(--sp-2)}.layout-test{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-6);align-items:start}@media(min-width:1280px){.layout-test--with-ads:has(.ad-slot--rail){grid-template-columns:var(--side-ad-width) minmax(0,1fr) var(--side-ad-width);gap:var(--sp-8)}}.layout-test__main{max-width:var(--test-max);width:100%;margin:0 auto;min-width:0}.layout-test__main>.u-mt-6:not(:has(.ad-slot)){margin-top:0}.layout-test__rail{display:none}@media(min-width:1280px){.layout-test--with-ads:has(.ad-slot--rail) .layout-test__rail{display:block;position:sticky;top:calc(var(--header-height) + var(--sp-6))}}.site-footer{background:#12103a;color:#d6d2ff;padding:44px 0 24px;font-size:16px;line-height:1.5}:root[data-theme=dark] .site-footer,.dark .site-footer{background:#0a0820}.site-footer__inner{max-width:1120px;margin:0 auto;padding:0 32px;display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr 1fr;gap:28px;align-items:start}.site-footer__name{display:flex;align-items:center;gap:12px;font-weight:800;font-size:19px;margin-right:24px;color:#fff}.site-footer__logo{flex:none;width:42px;height:42px;border-radius:12px;background:#12103a;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 -3px #5b34e6}:root[data-theme=dark] .site-footer__logo,.dark .site-footer__logo{box-shadow:inset 0 -3px #7c5cff}.site-footer__brand p{font-size:14px;margin:12px 0 0}.site-footer__nav{display:contents}.site-footer__col b{display:block;color:#fff;font-weight:800;margin-bottom:10px}.site-footer__col a{display:block;margin:6px 0;font-size:14px;color:#d6d2ff}.site-footer__copy{max-width:1120px;margin:28px auto 0;padding:16px 32px 0;border-top:1px solid #2a2660;font-size:13px;display:flex;justify-content:space-between}@media(max-width:767.98px){.site-footer__inner{grid-template-columns:1fr;gap:18px}.site-footer__copy{flex-direction:column;gap:6px}}.u-center{text-align:center}.u-muted{color:var(--c-text-secondary)}.u-mt-1{margin-top:var(--sp-1)}.u-mt-2{margin-top:var(--sp-2)}.u-mt-3{margin-top:var(--sp-3)}.u-mt-4{margin-top:var(--sp-4)}.u-mt-6{margin-top:var(--sp-6)}.u-mb-4{margin-bottom:var(--sp-4)}.u-mb-6{margin-bottom:var(--sp-6)}.sh{--sh-bg:#fff;--sh-line:#e2e8f0;--sh-ink:#0f172a;--sh-mut:#64748b;--sh-hover:#f1f5f9;--sh-tint:#eaf0ff;--sh-tint-ink:#1d4ed8;--sh-pri:#2563eb;--sh-card:#0f172a;--sh-card-mut:#cbd5e1;--sh-warm:#fff1e6;--sh-warm-ink:#c2410c;--sh-blue:#eaf0ff;--sh-blue-ink:#1d4ed8;--sh-shadow:0 20px 48px rgba(15,23,42,.14);position:sticky;top:0;z-index:var(--z-header);font-family:Plus Jakarta Sans,Plus Jakarta Sans Variable,system-ui,sans-serif;background:var(--sh-bg);color:var(--sh-ink);border-bottom:1px solid var(--sh-line)}:root[data-theme=dark] .sh{--sh-bg:#111827;--sh-line:#26324a;--sh-ink:#e8edf7;--sh-mut:#94a3b8;--sh-hover:#1b2540;--sh-tint:#1e3a8a;--sh-tint-ink:#bfd3ff;--sh-card:#0b1220;--sh-warm:#3a2414;--sh-warm-ink:#fdba74;--sh-blue:#1e2f5c;--sh-blue-ink:#bfd3ff;--sh-shadow:0 20px 48px rgba(0,0,0,.5)}.sh *{box-sizing:border-box}.sh a{text-decoration:none;color:inherit}.sh__bar{position:relative;display:flex;align-items:center;gap:4px;height:72px;max-width:1280px;margin:0 auto;padding:0 40px}.sh__brand{display:flex;align-items:center;gap:12px;margin-right:24px}.sh__logo{width:42px;height:42px;border-radius:12px;background:#0f172a;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 -3px 0 var(--sh-pri)}.sh__name{font-weight:800;font-size:19px;letter-spacing:-.01em}.sh__nav{display:flex;align-items:center;gap:2px}.sh__link{display:flex;align-items:center;gap:6px;height:44px;padding:0 14px;border:0;border-radius:999px;background:none;font:inherit;font-weight:600;font-size:15px;color:#334155;cursor:pointer}:root[data-theme=dark] .sh__link{color:#cbd5e1}.sh__link:hover{background:var(--sh-hover)}.sh__link.is-cur{color:var(--sh-tint-ink);background:var(--sh-tint)}.sh__trigger svg{transition:transform .15s}.sh__trigger[aria-expanded=true]{background:#0f172a;color:#fff}:root[data-theme=dark] .sh__trigger[aria-expanded=true]{background:#e8edf7;color:#0f172a}.sh__trigger[aria-expanded=true] svg{transform:rotate(180deg)}.sh__actions{margin-left:auto;display:flex;align-items:center;gap:6px}.sh__icon{width:44px;height:44px;border-radius:999px;border:1px solid var(--sh-line);background:var(--sh-bg);color:inherit;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.sh__cta{display:flex;align-items:center;gap:8px;height:44px;padding:0 20px;border-radius:999px;background:var(--sh-pri);color:#fff!important;font-weight:700;font-size:15px}.sh__cta:hover{filter:brightness(1.08)}.sh__burger{display:none}.sh a:focus-visible,.sh button:focus-visible{outline:3px solid var(--sh-pri);outline-offset:2px}.sh__item:not(.sh__item--mega){position:relative}.sh__panel{position:absolute;z-index:60;background:var(--sh-bg);border:1px solid var(--sh-line);border-radius:20px;box-shadow:var(--sh-shadow);padding:14px;animation:sh-pop .14s ease-out}.sh__panel[hidden]{display:none}.sh__panel--list{top:calc(100% + 8px);left:0;width:340px}.sh__panel--mega{top:calc(100% + 8px);left:40px;right:40px;display:flex;gap:14px}@keyframes sh-pop{0%{opacity:0;transform:translateY(-4px)}}.sh__feature{width:290px;flex:none;background:var(--sh-card);color:#fff;border-radius:14px;padding:26px 24px;display:flex;flex-direction:column;gap:12px}.sh__eyebrow{margin:0;font-size:12px;font-weight:700;letter-spacing:.1em;color:#93b4ff}.sh__ftitle{margin:0;font-weight:800;font-size:26px;line-height:1.2}.sh__fcopy{margin:0;font-size:14px;line-height:1.5;color:var(--sh-card-mut)}.sh__fcta{margin-top:auto;height:46px;border-radius:999px;background:#fff;color:#0f172a!important;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:700;font-size:14.5px}.sh__grid{flex:1;display:grid;grid-template-columns:repeat(3,1fr);gap:2px 8px;align-content:start}.sh__list{display:flex;flex-direction:column;gap:2px}.sh__it{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px}.sh__it:hover{background:var(--sh-hover)}.sh__it.is-cur{background:var(--sh-tint)}.sh__it--all{border:1px dashed var(--sh-line)}.sh__tile{width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex:none;font:700 13px ui-monospace,Consolas,monospace;background:var(--sh-warm);color:var(--sh-warm-ink)}.sh__tile--blue{background:var(--sh-blue);color:var(--sh-blue-ink)}.sh__it.is-cur .sh__tile{background:var(--sh-pri);color:#fff}.sh__t{display:block;font-weight:700;font-size:14.5px;line-height:1.25}.sh__s{display:block;font-size:12.5px;line-height:1.3;color:var(--sh-mut)}.sh__progress{flex:none}.sh__progress.is-cur{color:var(--sh-tint-ink);border-color:var(--sh-pri)}.sh__mobile{position:fixed;inset:64px 0 0;z-index:55;background:var(--sh-bg);overflow:auto;padding:10px 12px 190px}.sh__mobile[hidden]{display:none}.sh__m{display:flex;align-items:center;justify-content:space-between;width:100%;height:54px;padding:0 14px;border:0;border-radius:14px;background:none;font:inherit;font-weight:700;font-size:16px;color:inherit;cursor:pointer;text-align:left}.sh__m:hover{background:var(--sh-hover)}.sh__m[aria-expanded=true]{background:#0f172a;color:#fff}:root[data-theme=dark] .sh__m[aria-expanded=true]{background:#e8edf7;color:#0f172a}.sh__m.is-cur{background:var(--sh-tint);color:var(--sh-tint-ink)}.sh__m-r{display:flex;align-items:center;gap:8px}.sh__count{font:700 12px ui-monospace,Consolas,monospace;background:var(--sh-hover);color:var(--sh-mut);border-radius:999px;padding:3px 9px}.sh__m[aria-expanded=true] .sh__count{background:#ffffff29;color:inherit}.sh__m[aria-expanded=true] svg{transform:rotate(180deg)}.sh__sub{display:grid;grid-template-columns:1fr 1fr;gap:2px 6px;padding:6px 2px 10px}.sh__sub[hidden]{display:none}.sh__sub a{display:flex;align-items:center;gap:10px;height:48px;padding:0 10px;border-radius:12px;font-weight:600;font-size:14px}.sh__sub a.is-cur{background:var(--sh-tint);color:var(--sh-tint-ink)}.sh__sub .sh__tile{width:30px;height:30px;border-radius:8px;font-size:11px}.sh__mfoot{position:fixed;left:0;right:0;bottom:0;padding:16px;border-top:1px solid var(--sh-line);background:var(--sh-bg);display:flex;flex-direction:column;gap:10px}.sh__mfoot .sh__cta{height:52px;justify-content:center;font-size:16px}.sh__mlogin{height:48px;border:1px solid var(--sh-line);border-radius:999px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px}html.sh-lock{overflow:hidden}@media(max-width:1179.98px){.sh__bar{height:64px;padding:0 16px;gap:8px}.sh__nav,.sh__login,.sh__actions>.sh__cta,.sh__progress{display:none}.sh__brand{margin-right:0}.sh__logo{width:38px;height:38px;border-radius:11px}.sh__name{font-size:18px}.sh__burger{display:flex}.sh__burger[aria-expanded=true]{background:#0f172a;color:#fff;border-color:#0f172a}}@media(min-width:1180px){.sh__mobile,.sh__burger{display:none!important}}@media(prefers-reduced-motion:reduce){.sh__panel{animation:none}.sh__trigger svg{transition:none}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);font-size:var(--fs-sm);font-weight:var(--fw-semibold);line-height:1.4;border-radius:var(--radius-md);border:var(--border-thin);background:var(--c-surface);color:var(--c-text);transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),color var(--t-fast) var(--ease);white-space:nowrap;user-select:none}.btn:hover{background:var(--c-surface-muted);border-color:var(--c-border-strong);text-decoration:none}.btn:active{transform:translateY(0)}.btn svg{width:16px;height:16px}.btn--primary{background:var(--c-accent);border-color:var(--c-accent);color:var(--c-text-invert)}.btn--primary:hover{background:var(--c-accent-strong);border-color:var(--c-accent-strong);color:var(--c-text-invert)}.btn--ghost{background:transparent;border-color:transparent;color:var(--c-text-secondary)}.btn--ghost:hover{background:var(--c-surface-muted);color:var(--c-text)}.btn--sm{padding:var(--sp-1) var(--sp-3);font-size:var(--fs-xs);border-radius:var(--radius-sm)}.btn--lg{padding:var(--sp-3) var(--sp-6);font-size:var(--fs-base)}.btn--danger{background:var(--c-error-soft);border-color:transparent;color:var(--c-error)}.btn--danger:hover{background:var(--c-error);border-color:var(--c-error);color:var(--c-text-invert)}.btn--block{width:100%}.btn[disabled]{opacity:.55;cursor:not-allowed}.tp-card{position:relative;max-width:var(--test-max, 960px);margin:0 auto;padding:var(--sp-6);background:var(--c-surface);border:var(--border-thin);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.tp-card[hidden]{display:none!important}.tp-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-4)}.tp-head__info{min-width:0}.tp-title{margin:0;font-size:var(--fs-xl);font-weight:var(--fw-semibold);color:var(--c-heading);line-height:var(--lh-tight);letter-spacing:-.01em}.tp-subtitle{margin:var(--sp-1) 0 0;font-size:var(--fs-sm);color:var(--c-text-secondary);letter-spacing:.01em}.tp-head__actions{display:flex;align-items:center;gap:var(--sp-1);flex-shrink:0}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md);border:var(--border-thin);background:var(--c-surface);color:var(--c-text-secondary);transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.icon-btn:hover{background:var(--c-surface-muted);color:var(--c-text);border-color:var(--c-border-strong);text-decoration:none}.icon-btn.is-active{background:var(--c-accent-soft);color:var(--c-accent);border-color:transparent}.icon-btn.is-active:hover{background:var(--c-accent-soft)}.icon-btn svg{width:18px;height:18px;flex-shrink:0}.tp-sound-off{display:block}.tp-sound-on,[data-sound-toggle].is-active .tp-sound-off{display:none}[data-sound-toggle].is-active .tp-sound-on{display:block}.tp-stats--primary{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin-bottom:var(--sp-3)}.tp-stats--secondary{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin-top:var(--sp-4)}.tp-stat{display:flex;flex-direction:column;align-items:center;gap:3px;padding:var(--sp-2)}.tp-stat__value{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--c-heading);line-height:1;letter-spacing:-.01em;font-variant-numeric:tabular-nums}.tp-stat__label{font-size:10px;font-weight:var(--fw-semibold);color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.08em;line-height:1}.tp-progress-track{height:3px;background:var(--c-surface-sunken);border-radius:2px;overflow:hidden;margin-bottom:var(--sp-4)}.tp-progress-bar{height:100%;width:0%;background:var(--c-accent);border-radius:2px;transition:width .2s var(--ease)}.tp-stage{position:relative}.tp-surface{position:relative;cursor:text;border-radius:var(--radius-md);border:1px solid transparent;transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.tp-surface.is-focused{border-color:var(--c-accent);box-shadow:var(--shadow-focus)}.tp-viewport{position:relative;overflow:hidden;height:calc(var(--tp-lh, 48px) * 3);min-height:calc(var(--tp-lh, 48px) * 3)}.tp-lines{display:flex;flex-wrap:wrap;align-content:flex-start;width:100%;padding:0 var(--sp-4);font-size:var(--tp-fs, 30px);line-height:1.6;color:var(--c-type-pending);word-break:normal;white-space:pre-wrap;transition:transform .16s var(--ease)}.tp-lines--instant{transition:none}.tp-lines--mirror{position:absolute;top:0;left:0;display:block;visibility:hidden;pointer-events:none;word-break:normal;white-space:pre-wrap}.tp-line{display:block;width:100%;opacity:.84;border-radius:var(--radius-xs);transition:opacity .16s var(--ease),background-color .16s var(--ease)}.tp-line--current{opacity:1;background:var(--c-type-current-line)}.tp-line--prev{opacity:.78}.tp-word{position:relative;display:inline}.tp-mw{display:inline;white-space:pre-wrap}.tp-ch{color:inherit;border-radius:2px;transition:background 0ms,color 0ms}.tp-ch--correct{color:var(--c-type-correct);background:var(--c-type-correct-tint)}.tp-ch--incorrect{color:var(--c-type-error);background:var(--c-error-soft)}.tp-ch--current{color:var(--c-heading);box-shadow:inset 0 -3px 0 var(--c-type-caret);border-radius:0}.tp-ch--current.tp-ch--space{display:inline-block;min-width:.55em;background:var(--c-accent-soft, rgba(58, 107, 232, .08));box-shadow:inset 0 -3px 0 var(--c-type-caret);border-radius:2px}.tp-ch--space{display:inline-block;min-width:.45em}.tp-caret{display:inline-block;width:2.5px;margin:0 1px;height:1.15em;vertical-align:text-bottom;border-radius:1px;background:var(--c-type-caret);animation:caret-blink 1s step-end infinite}.tp-surface.is-focused .tp-caret{display:inline-block}@keyframes caret-blink{0%,to{opacity:1}50%{opacity:0}}.tp-hint{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;padding:var(--sp-3) var(--sp-4) var(--sp-2);margin-bottom:var(--sp-2);font-size:var(--fs-sm);color:var(--c-text-secondary);text-align:center;pointer-events:none;user-select:none}.tp-hint[hidden]{display:none!important}.tp-start{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);pointer-events:auto}.tp-start__btn{padding:var(--sp-3) var(--sp-6);font-size:var(--fs-md);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.tp-start__btn:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.tp-start__btn:active{transform:translateY(0)}.tp-start__btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.tp-start__note{margin:0;font-size:var(--fs-xs);line-height:1.6;color:var(--c-text-tertiary)}.tp-kbd{display:inline-block;min-width:2.6em;padding:1px 6px;margin:0 1px;font-family:var(--font-mono);font-size:11px;line-height:1.5;color:var(--c-text-secondary);background:var(--c-surface-muted);border:var(--border-thin);border-bottom-width:2px;border-radius:var(--radius-xs);vertical-align:middle}.tp-paused{display:flex;justify-content:center;margin-top:var(--sp-4);z-index:2;pointer-events:none}.tp-paused[hidden]{display:none!important}.tp-surface.is-paused .tp-viewport{opacity:.45;transition:opacity .16s var(--ease)}.tp-paused__card{text-align:center;padding:var(--sp-4) var(--sp-8);background:var(--c-surface-muted);border:var(--border-thin);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);max-width:360px}.tp-paused__title{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--c-heading);margin-bottom:var(--sp-1)}.tp-paused__note{font-size:var(--fs-sm);color:var(--c-text-secondary);line-height:var(--lh-normal)}.tp-input{position:absolute;top:0;left:0;width:100%;height:100%;padding:0;border:none;outline:none;background:transparent;color:transparent;caret-color:transparent;font-size:var(--tp-fs, 30px);line-height:1.6;resize:none;overflow:hidden;z-index:1}.tp-kb{display:flex;flex-direction:column;align-items:center;gap:5px;margin-top:30px;user-select:none}.tp-kb.is-hidden{display:none!important}.tp-stage>.vkb{margin-top:30px}.tp-kb-foot{display:flex;justify-content:center;padding-top:var(--sp-1)}.tp-kb-toggle{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--c-text-tertiary);padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-sm);transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.tp-kb-toggle:hover{color:var(--c-text-secondary);background:var(--c-surface-muted);text-decoration:none}.tp-kb-foot[hidden]{display:none!important}.tp-result{padding:var(--sp-8) 0 var(--sp-4)}.tp-result[hidden]{display:none!important}.tp-result__hero{text-align:center;margin-bottom:var(--sp-6)}.tp-result__hero .tp-result__label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--sp-1)}.tp-result__wpm{font-size:64px;font-weight:var(--fw-bold);color:var(--c-heading);line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.tp-result__wpm-label{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--c-accent);text-transform:uppercase;letter-spacing:.08em;margin-top:var(--sp-1)}.tp-result__context{font-size:var(--fs-sm);color:var(--c-text-secondary);margin-top:var(--sp-1)}.tp-result__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-3);margin-bottom:var(--sp-6)}.tp-result__cell{text-align:center;padding:var(--sp-3) var(--sp-2);background:var(--c-surface-muted);border-radius:var(--radius-md)}.tp-result__cell-value{font-size:var(--fs-xl);font-weight:var(--fw-bold);color:var(--c-heading);font-variant-numeric:tabular-nums;line-height:1.1}.tp-result__cell-label{font-size:var(--fs-xs);color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.06em;margin-top:2px}.tp-result__summary{margin:0 0 var(--sp-5);padding:var(--sp-3) var(--sp-4);background:var(--c-accent-soft);border-left:3px solid var(--c-accent);border-radius:var(--radius-sm);color:var(--c-text);font-size:var(--fs-sm);line-height:1.6;text-align:left}.tp-result__share{margin-top:var(--sp-4);padding:var(--sp-4);background:var(--c-surface-muted);border-radius:var(--radius-md)}.tp-result__share-row{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.tp-share-btn{text-decoration:none}.tp-result__chart{margin-bottom:var(--sp-6)}.tp-result__chart-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--sp-2)}.tp-result__chart canvas{display:block;width:100%;height:auto}.tp-result__two-panel{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin-bottom:var(--sp-6)}.tp-result__personal,.tp-result__weak{padding:var(--sp-4);background:var(--c-surface-muted);border-radius:var(--radius-md)}.tp-result__best-value{font-size:var(--fs-2xl);font-weight:var(--fw-bold);color:var(--c-heading);font-variant-numeric:tabular-nums}.tp-result__best-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--sp-2)}.tp-result__new-best{display:inline-block;padding:2px var(--sp-2);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--c-success);background:var(--c-success-soft);border-radius:var(--radius-pill);margin-top:var(--sp-1)}.tp-result__improvement{font-size:var(--fs-sm);color:var(--c-text-secondary);margin-top:var(--sp-1)}.tp-result__improvement.is-up{color:var(--c-success)}.tp-result__improvement.is-down{color:var(--c-error)}.tp-result__section-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--sp-2)}.tp-result__weak-list{display:flex;flex-wrap:wrap;gap:var(--sp-2);list-style:none;margin:0;padding:0}.tp-result__weak-item{display:flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);background:var(--c-surface);border:var(--border-thin);border-radius:var(--radius-sm);font-size:var(--fs-sm)}.tp-result__weak-key{font-weight:var(--fw-bold);color:var(--c-heading);text-transform:uppercase}.tp-result__weak-count{color:var(--c-text-tertiary);font-size:var(--fs-xs)}.tp-result__actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:flex-end}.tp-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);font-size:var(--fs-sm);font-weight:var(--fw-semibold);line-height:1.4;border-radius:var(--radius-md);border:var(--border-thin);background:var(--c-surface);color:var(--c-text);transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease);white-space:nowrap;cursor:pointer}.tp-btn:hover{background:var(--c-surface-muted);border-color:var(--c-border-strong);text-decoration:none}.tp-btn--primary{background:var(--c-accent);border-color:var(--c-accent);color:var(--c-text-invert)}.tp-btn--primary:hover{background:var(--c-accent-strong);border-color:var(--c-accent-strong);color:var(--c-text-invert)}.tp-settings{position:relative}.tp-settings__scrim{position:fixed;inset:0;background:#0000004d;z-index:var(--z-overlay);opacity:0;transition:opacity var(--t-base) var(--ease)}.tp-settings__scrim[hidden]{display:none!important}.tp-settings.is-open .tp-settings__scrim{opacity:1}.tp-settings__panel{position:fixed;top:0;right:0;width:320px;max-width:100vw;height:100vh;overflow-y:auto;background:var(--c-surface);border-left:var(--border-thin);box-shadow:var(--shadow-md);z-index:calc(var(--z-overlay) + 1);padding:var(--sp-6);transform:translate(100%);transition:transform var(--t-base) var(--ease)}.tp-settings.is-open .tp-settings__panel{transform:translate(0)}.tp-settings__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-6)}.tp-settings__title{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--c-heading)}.tp-settings__group{margin-bottom:var(--sp-5)}.tp-settings__label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--sp-2)}.tp-seg{display:flex;flex-wrap:wrap;gap:4px}.tp-seg__btn{flex:1 1 0;min-width:52px;padding:var(--sp-2) var(--sp-2);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--c-text-secondary);background:var(--c-surface-muted);border:1px solid transparent;border-radius:var(--radius-sm);text-align:center;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.tp-seg__btn:hover{background:var(--c-surface-sunken);color:var(--c-text)}.tp-seg__btn.is-selected{background:var(--c-accent-soft);color:var(--c-accent);border-color:var(--c-accent);font-weight:var(--fw-semibold)}.tp-toggle-row{display:flex;gap:4px}.tp-toggle{flex:1;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--c-text-secondary);background:var(--c-surface-muted);border:1px solid transparent;border-radius:var(--radius-sm);text-align:center;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.tp-toggle:hover{background:var(--c-surface-sunken);color:var(--c-text)}.tp-toggle.is-active{background:var(--c-accent-soft);color:var(--c-accent);border-color:var(--c-accent);font-weight:var(--fw-semibold)}.tp-range{display:flex;align-items:center;gap:var(--sp-2)}.tp-range__label{font-size:var(--fs-sm);color:var(--c-text-secondary);min-width:68px}.tp-range__input{flex:1;height:4px;-webkit-appearance:none;appearance:none;background:var(--c-surface-sunken);border-radius:2px;outline:none}.tp-range__input::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--c-accent);border:2px solid var(--c-surface);box-shadow:0 1px 3px #00000026;cursor:pointer}.tp-range__input::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--c-accent);border:2px solid var(--c-surface);box-shadow:0 1px 3px #00000026;cursor:pointer}.tp-range__value{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--c-heading);min-width:28px;text-align:right;font-variant-numeric:tabular-nums}.tp-select{display:block}.tp-select__label{font-size:var(--fs-sm);color:var(--c-text-secondary);margin-bottom:4px;display:block}.tp-select__input{width:100%;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);border:var(--border-thin);border-radius:var(--radius-sm);background:var(--c-surface);color:var(--c-text);outline:none;transition:border-color var(--t-fast) var(--ease)}.tp-select__input:focus{border-color:var(--c-accent);box-shadow:var(--shadow-focus)}.tp-toast{position:fixed;bottom:var(--sp-6);left:50%;transform:translate(-50%);padding:var(--sp-2) var(--sp-4);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--c-text-invert);background:var(--c-heading);border-radius:var(--radius-pill);box-shadow:var(--shadow-md);z-index:var(--z-modal);animation:toast-in .22s var(--ease)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.badge{display:inline-block;padding:2px var(--sp-2);font-size:var(--fs-xs);font-weight:var(--fw-semibold);border-radius:var(--radius-pill)}.badge--green{color:var(--c-success);background:var(--c-success-soft)}@media(max-width:1024px){.tp-card{margin:0 var(--sp-4)}}@media(max-width:768px){.tp-kb:not(.is-shown){display:none}}@media(min-width:769px)and (max-width:1024px){.tp-viewport{height:calc(var(--tp-lh, 45px) * 3);min-height:calc(var(--tp-lh, 45px) * 3)}.tp-lines,.tp-input{font-size:min(var(--tp-fs, 28px),28px)}}@media(max-width:768px){.tp-card{margin:0 var(--sp-3);padding:var(--sp-4)}.tp-title{font-size:var(--fs-lg)}.tp-stat__label{font-size:9px}.tp-viewport{height:calc(var(--tp-lh, 40px) * 3);min-height:calc(var(--tp-lh, 40px) * 3)}.tp-lines,.tp-input{font-size:min(var(--tp-fs, 25px),25px)}.tp-result__grid{grid-template-columns:repeat(2,1fr)}.tp-result__two-panel{grid-template-columns:1fr}.tp-result__wpm{font-size:48px}}@media(max-width:430px){.tp-card{margin:0;border-radius:0;border-left:none;border-right:none;padding:var(--sp-3)}.tp-head{flex-wrap:wrap;gap:var(--sp-2)}.tp-head__actions{margin-left:auto}.tp-viewport{height:calc(var(--tp-lh, 37px) * 3);min-height:calc(var(--tp-lh, 37px) * 3)}.tp-lines,.tp-input{font-size:min(var(--tp-fs, 23px),23px)}.tp-result__wpm{font-size:40px}.tp-result__grid{grid-template-columns:repeat(2,1fr);gap:var(--sp-2)}.tp-result__actions{flex-direction:column}.tp-result__actions .tp-btn{width:100%}}@media(max-width:390px){.tp-stat__value{font-size:var(--fs-md)}.tp-stat{padding:var(--sp-1) var(--sp-1)}}@media(prefers-reduced-motion:reduce){.tp-progress-bar,.tp-lines,.tp-line,.tp-surface .tp-viewport{transition:none!important}.tp-caret{animation:none;opacity:1}}.tp-card--v2{padding:var(--sp-3)}.tp-card--v2 .tp-lines{line-height:1.45}.tp-card--v2 .tp-stage>.vkb{margin-top:14px}.tp-card--v2 .tp-head{align-items:center;justify-content:flex-start;flex-wrap:wrap;row-gap:4px;column-gap:var(--sp-3);margin-bottom:4px}.tp-card--v2 .tp-head__actions{order:2;margin-left:auto}.tp-head__h1{margin:0;font-size:19px;font-weight:var(--fw-semibold);line-height:var(--lh-tight);letter-spacing:-.01em;color:var(--c-heading);white-space:nowrap;flex-shrink:0}.tp-head__tags{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}.tp-tag{display:inline-flex;align-items:center;padding:3px 10px;font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:.03em;color:var(--c-text-secondary);background:var(--c-surface-muted);border:var(--border-thin);border-radius:var(--radius-pill);white-space:nowrap}.tp-tag--time{color:var(--c-accent);background:var(--c-accent-soft);border-color:transparent}.tp-tag--note{font-weight:var(--fw-regular);color:var(--c-text-tertiary);background:transparent;border-color:transparent;padding-left:4px;padding-right:4px}.tp-card--v2 .tp-stats{order:3;width:100%;display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2);margin-bottom:4px;padding:1px 0}.tp-card--v2 .tp-stat{gap:2px;padding:2px var(--sp-2)}.tp-card--v2 .tp-stat__value{font-size:20px}.tp-stat__sub{font-size:11px;line-height:1.2;color:var(--c-text-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:360px){.tp-card--v2 .tp-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.tp-card--v2 .tp-stat{min-width:0;padding:2px var(--sp-1)}.tp-card--v2 .tp-stat__value{font-size:17px}.tp-card--v2 .tp-stat__label,.tp-card--v2 .tp-stat__sub{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.tp-word--active{background:var(--c-type-current-word);border-radius:3px}.tp-word--wrong{text-decoration:underline;text-decoration-color:var(--c-type-error);text-decoration-thickness:2px;text-underline-offset:3px}.tp-card--v2 .tp-line:not(.tp-line--prev){opacity:1}.tp-card--v2 .tp-hint{position:absolute;inset:0;z-index:2;margin:0;padding:var(--sp-2);background:color-mix(in srgb,var(--c-surface) 92%,transparent)}.tp-under{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3);margin-top:6px}.tp-under .tp-pace-line{margin-top:0;min-height:0;gap:var(--sp-2)}.tp-under[hidden]{display:none!important}.tp-card--v2 .tp-progress-track{position:relative;flex:1;height:5px;margin-bottom:0;overflow:visible;border-radius:3px}.tp-card--v2 .tp-progress-bar{border-radius:3px}.tp-progress__tick{position:absolute;top:-3px;bottom:-3px;left:100%;width:2px;background:var(--c-teal);border-radius:1px;transform:translate(-1px);transition:left .2s var(--ease)}.tp-goal{display:inline-flex;align-items:center;gap:4px;flex-shrink:0}.tp-goal[hidden]{display:none!important}.tp-goal__btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:var(--border-thin);border-radius:var(--radius-sm);background:var(--c-surface-muted);color:var(--c-text-secondary);font-size:15px;line-height:1;transition:color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.tp-goal__btn:hover{color:var(--c-text);border-color:var(--c-border-strong)}.tp-goal__value{min-width:68px;text-align:center;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--c-heading);font-variant-numeric:tabular-nums}.tp-pace-line{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-top:3px;min-height:15px;font-size:11px;color:var(--c-text-tertiary)}.tp-pace-line[hidden]{display:none!important}.tp-legend{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.tp-legend__you,.tp-legend__goal{display:inline-block;background:var(--c-accent);border-radius:3px}.tp-legend__you{width:12px;height:5px}.tp-legend__goal{width:2px;height:11px;background:var(--c-teal);border-radius:1px}.tp-pace-delta{font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;white-space:nowrap}.tp-pace-delta[hidden]{display:none!important}.tp-pace-delta.is-ahead{color:var(--c-teal)}.tp-pace-delta.is-behind{color:var(--c-type-error)}.tp-card--v2 .tp-play{position:relative}.tp-card--v2 .tp-result--v2{position:absolute;inset:0;z-index:6;display:flex;flex-direction:column;justify-content:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-2);background:var(--c-surface);overflow-y:auto}.tp-result--v2[hidden]{display:none!important}.tp-rv__top{display:flex;align-items:center;gap:var(--sp-8)}.tp-rv__hero{flex-shrink:0;min-width:160px;text-align:center}.tp-rv__value{font-size:64px;font-weight:var(--fw-bold);line-height:1;color:var(--c-heading);letter-spacing:-.02em;font-variant-numeric:tabular-nums}.tp-rv__unit{margin-top:2px;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--c-accent);letter-spacing:.1em}.tp-rv__pb{margin-top:6px;font-size:var(--fs-xs);color:var(--c-text-tertiary);font-variant-numeric:tabular-nums}.tp-rv__pb.is-new{color:var(--c-teal);font-weight:var(--fw-semibold)}.tp-rv__grid{flex:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 16px}.tp-rv__cell-value{font-size:17px;font-weight:var(--fw-semibold);color:var(--c-heading);line-height:1.2;font-variant-numeric:tabular-nums}.tp-rv__cell-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--c-text-tertiary);line-height:1.3}.tp-rv__mid{display:flex;gap:var(--sp-4);align-items:stretch}.tp-rv__chart{flex:1.6;min-width:0}.tp-rv__chart-title{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--c-text-tertiary);margin-bottom:4px}.tp-rv__chart canvas{display:block;width:100%}.tp-rv__side{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;justify-content:center}.tp-rv__keys{display:flex;flex-wrap:wrap;gap:6px}.tp-rv__key{display:inline-flex;align-items:baseline;gap:4px;padding:3px 8px;font-family:var(--font-mono);font-size:12px;color:var(--c-text-secondary);background:var(--c-surface-muted);border:var(--border-thin);border-radius:var(--radius-sm)}.tp-rv__key b{color:var(--c-type-error);font-weight:var(--fw-semibold)}.tp-rv__next{margin:0;font-size:var(--fs-sm);line-height:1.5;color:var(--c-text-secondary)}.tp-rv__actions{display:flex;justify-content:center;gap:var(--sp-2)}@media(min-width:1024px)and (max-height:950px){.tp-card--v2{padding:6px}.tp-card--v2 .tp-head{margin-bottom:0;column-gap:var(--sp-2)}.tp-card--v2 .tp-stats{order:1;width:auto;flex:1 1 0;min-width:0;gap:6px;margin-bottom:0;padding:0}.tp-card--v2 .tp-stat{padding:1px 6px;text-align:center}.tp-card--v2 .tp-stat__value{font-size:14px}.tp-card--v2 .tp-stat__sub{display:none}.tp-card--v2 .tp-tag{padding:2px 6px}.tp-card--v2 .tp-head__actions .icon-btn{width:26px;height:26px;padding:5px}.tp-card--v2 .tp-lines,.tp-card--v2 .tp-input{font-size:min(var(--tp-fs, 30px),26px);line-height:1.35}.tp-card--v2 .tp-viewport{height:calc(var(--tp-lh, 48px) * 2);min-height:calc(var(--tp-lh, 48px) * 2)}.tp-card--v2 .tp-surface{border-width:0}.tp-card--v2 .tp-under{margin-top:0;gap:var(--sp-1) var(--sp-2)}.tp-card--v2 .tp-goal__btn{width:20px;height:20px;min-width:0;min-height:0}.tp-card--v2 .tp-stage>.vkb{margin-top:2px}.tp-card--v2 .tp-result--v2{gap:var(--sp-3);padding:var(--sp-3) var(--sp-2)}.tp-rv__value{font-size:52px}}.ad-slot{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);width:100%}.ad-slot__inner{position:relative;width:100%;max-width:100%;border:1px dashed var(--c-border-strong);border-radius:var(--radius-md);background:var(--c-surface);display:grid;place-items:center;overflow:hidden}.ad-slot--wide .ad-slot__inner{min-height:90px}.ad-slot--banner .ad-slot__inner{max-width:728px;min-height:90px}.ad-slot--rectangle .ad-slot__inner{max-width:336px;min-height:280px}.ad-slot--mobile .ad-slot__inner{max-width:320px;min-height:100px}.ad-slot--rail .ad-slot__inner{width:160px;min-height:600px}.ad-slot__placeholder{font-size:var(--fs-xs);color:var(--c-text-tertiary);letter-spacing:.05em;text-transform:uppercase;padding:var(--sp-3);text-align:center}.ad-slot--hidden{display:none}@media(max-width:1279px){.ad-slot--rail{display:none}}.ad-slot--desktop-only{display:flex}@media(max-width:767px){.ad-slot--desktop-only{display:none}}.ad-slot--mobile-only{display:none}@media(max-width:767px){.ad-slot--mobile-only{display:flex}}.field{margin-bottom:var(--sp-4)}.field__label{display:block;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--c-text);margin-bottom:var(--sp-1)}.field__hint{font-size:var(--fs-xs);color:var(--c-text-tertiary);margin-top:var(--sp-1)}.field__error{font-size:var(--fs-xs);color:var(--c-error);margin-top:var(--sp-1)}.input,.select,.textarea{width:100%;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-base);color:var(--c-text);background:var(--c-surface);border:var(--border-thin);border-radius:var(--radius-md);transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--c-accent);box-shadow:var(--shadow-focus)}.textarea{min-height:160px;resize:vertical;line-height:var(--lh-relaxed)}.input--sm{padding:var(--sp-1) var(--sp-2);font-size:var(--fs-sm)}.checkbox-field{display:flex;align-items:flex-start;gap:var(--sp-2);margin-bottom:var(--sp-3);cursor:pointer}.checkbox-field input{width:17px;height:17px;margin-top:2px;accent-color:var(--c-accent)}.checkbox-field__label{font-size:var(--fs-sm)}.checkbox-field__hint{font-size:var(--fs-xs);color:var(--c-text-tertiary)}.alert{padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);font-size:var(--fs-sm);margin-bottom:var(--sp-4)}.alert--success{background:var(--c-success-soft);color:var(--c-success)}.alert--danger{background:var(--c-error-soft);color:var(--c-error)}.alert ul{margin:0;list-style:none}.alert li+li{margin-top:var(--sp-1)}.badge{display:inline-flex;align-items:center;padding:2px var(--sp-2);font-size:var(--fs-xs);font-weight:var(--fw-medium);border-radius:var(--radius-pill);line-height:1.5}.badge--green{background:var(--c-success-soft);color:var(--c-success)}.badge--red{background:var(--c-error-soft);color:var(--c-error)}.badge--gray{background:var(--c-surface-muted);color:var(--c-text-secondary)}.badge--blue{background:var(--c-accent-soft);color:var(--c-accent)}.home{--bg: #fff;--alt: #f4f1ff;--card: #fff;--ink: #1b1450;--mut: #5b5784;--line: #e6e1fa;--pri: #5b34e6;--priInk: #fff;--hero: #efeaff;font-family:Plus Jakarta Sans,Plus Jakarta Sans Variable,system-ui,sans-serif;font-size:16px;background:var(--bg);color:var(--ink);line-height:1.5}:root[data-theme=dark] .home,.dark .home{--bg: #0e0b29;--alt: #171340;--card: #171340;--ink: #eeeaff;--mut: #a9a3d6;--line: #2c2762;--pri: #7c5cff;--hero: #15113a}.home *,.home *:before,.home *:after{box-sizing:border-box}.home a{color:inherit;text-decoration:none}.home b{font-weight:800}.home .w{max-width:1120px;margin:0 auto;padding:0 32px}.home .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:48px;padding:0 24px;border:0;border-radius:12px;background:var(--pri);color:var(--priInk)!important;font-weight:700;font-size:15px;line-height:inherit}.home .btn:hover{background:var(--pri);border-color:transparent}.home .btn svg{width:15px;height:15px}.home .btn.o{background:transparent;color:var(--pri)!important;border:2px solid var(--pri)}.home .btn.o:hover{background:transparent;border-color:var(--pri)}.home .eb{font-size:13px;font-weight:800;letter-spacing:.12em;color:var(--pri)}.home h1{font-size:44px;line-height:1.1;margin:12px 0;font-weight:800;letter-spacing:-.02em;color:inherit}.home h2{font-size:34px;line-height:1.15;margin:0 0 10px;font-weight:800;letter-spacing:-.01em;color:inherit}.home .lead{color:var(--mut);font-size:17px;margin:0 0 22px}.home .row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.home .tr{color:var(--mut);font-size:14px;margin-top:14px}.home .hero{background:var(--hero);padding:56px 0}.home .hero .w{display:grid;grid-template-columns:1.05fr .95fr;gap:24px;align-items:center}.home .hero img{width:100%;height:auto}.home .sec{padding:56px 0}.home .alt{background:var(--alt)}.home .ct{text-align:center}.home .ct .lead{max-width:640px;margin:0 auto 28px}.home .g3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.home .g2{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center}.home .card{display:flex;gap:14px;align-items:flex-start;padding:22px;border-radius:18px;background:color-mix(in srgb,var(--c) 9%,var(--card));border:1px solid color-mix(in srgb,var(--c) 24%,var(--line))}.home .cb{display:flex;flex-direction:column;gap:6px}.home .cb b{font-size:17px}.home .pill{align-self:flex-start;font-size:12px;font-weight:700;padding:2px 10px;border-radius:999px;background:color-mix(in srgb,var(--c) 16%,transparent);color:var(--c)}.home .lk{color:var(--pri);font-weight:700;font-size:14.5px;display:flex;gap:6px;align-items:center}.home .box{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:22px}.home .lvr{display:grid;grid-template-columns:1.2fr 1.3fr .8fr;gap:8px;padding:11px 0;border-top:1px solid var(--line);font-size:15px}.home .lvr:first-of-type{border:0}.home .lvr span{color:var(--mut)}.home .note{margin:16px 0;padding:14px 16px;border-radius:12px;background:color-mix(in srgb,var(--pri) 10%,var(--card));font-weight:600}.home .gc{padding:0;overflow:hidden;display:block}.home .gc .im{height:150px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--c) 12%,var(--card))}.home .gc .im img{height:120px;width:auto}.home .gc .tx{padding:18px 20px}.home .gc b{font-size:18px;display:block;margin-bottom:6px}.home .steps{display:grid;grid-template-columns:1fr 1fr;gap:14px}.home .step{display:flex;flex-direction:column;gap:8px;padding:18px;border-radius:16px;background:var(--card);border:1px solid var(--line)}.home .num{align-self:flex-start;font:800 13px monospace;padding:3px 10px;border-radius:8px;background:color-mix(in srgb,var(--c) 14%,transparent);color:var(--c)}.home .kt{display:inline-flex;width:48px;height:48px;border-radius:12px;background:var(--pri);color:#fff;align-items:center;justify-content:center;font:800 20px monospace;margin-right:8px;box-shadow:0 4px #00000040}.home .chip{display:inline-block;padding:6px 14px;border-radius:999px;border:1px solid var(--line);background:var(--card);font-weight:700;font-size:14px;margin:0 8px 8px 0}.home .ft{display:flex;align-items:center;gap:10px;font-weight:600;margin:6px 0}.home .ft svg{flex:none}.home .img{width:100%;max-width:380px;display:block;margin:0 auto;height:auto}.home .gs{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-radius:14px;background:var(--card);border:1px solid var(--line);font-weight:700}.home .gf{display:flex;gap:18px;align-items:center;padding:22px;border-radius:18px;background:color-mix(in srgb,#f59e0b 12%,var(--card));border:1px solid var(--line);grid-row:span 3}.home .gf img{width:120px;height:auto}.home .gl{display:grid;grid-template-columns:1.1fr 1fr;gap:12px}.home .gl .col{display:grid;gap:12px}.home .fq{background:var(--card);border:1px solid var(--line);border-radius:14px;margin-bottom:10px;padding:0 18px}.home .fq summary{list-style:none;display:flex;align-items:center;gap:14px;padding:16px 0;font-weight:700;cursor:pointer}.home .fq summary::-webkit-details-marker{display:none}.home .q{width:28px;height:28px;border-radius:50%;background:#10b981;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;flex:none}.home .pl{margin-left:auto;font-size:22px;color:var(--pri)}.home .fq p{margin:0 0 16px 42px;color:var(--mut)}.home .cta{background:#5b34e6;color:#fff;padding:36px 0}.home .cta .w{display:grid;grid-template-columns:200px 1fr 200px;align-items:center;text-align:center}.home .cta img{width:170px;height:auto}.home .cta h2{color:#fff}.home .cta .btn{background:#fff;color:#2c1a99!important}.home .cta .btn:hover{background:#fff}.home .cta .tr{color:#d9d0ff}@media(max-width:767.98px){.home .w{padding:0 18px}.home h1{font-size:32px}.home h2{font-size:26px}.home .hero .w,.home .g2,.home .g3,.home .steps,.home .gl,.home .cta .w{grid-template-columns:1fr}.home .hero{padding:28px 0}.home .sec{padding:36px 0}.home .gf{grid-row:auto}.home .cta img{display:none}}.landing-hero{margin-bottom:var(--sp-6)}.layout-test .landing-hero{margin-bottom:6px}.layout-test .landing-hero__h1{margin-bottom:8px}@media(min-width:1024px)and (max-height:900px){.layout-test .landing-hero{margin-bottom:2px}.layout-test .landing-hero__h1{margin-bottom:2px;font-size:16px}.page-container:has(>.layout-test){padding-top:2px}}.landing-hero__h1{font-size:clamp(22px,3.5vw,28px);font-weight:var(--fw-bold);letter-spacing:-.01em;color:var(--c-heading)}.landing-sections{margin-top:var(--sp-6);border-top:var(--border-thin);padding-top:var(--sp-6)}.landing-intro{margin-bottom:var(--sp-6);padding:var(--sp-4) var(--sp-5);background:var(--c-surface-muted);border-left:3px solid var(--c-accent);border-radius:var(--radius-sm)}.landing-intro p{margin:0;color:var(--c-text-secondary);font-size:var(--fs-md);line-height:1.7}.landing-table-wrap{overflow-x:auto;border:var(--border-thin);border-radius:var(--radius-md);background:var(--c-surface)}.landing-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.landing-table th,.landing-table td{padding:var(--sp-3) var(--sp-4);text-align:left;border-bottom:var(--border-thin);white-space:nowrap}.landing-table thead th{background:var(--c-surface-muted);color:var(--c-text-tertiary);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.05em;font-weight:var(--fw-semibold)}.landing-table tbody th{font-weight:var(--fw-semibold);color:var(--c-heading)}.landing-table tbody td{color:var(--c-text-secondary)}.landing-table tbody tr:last-child th,.landing-table tbody tr:last-child td{border-bottom:0}.landing-table__note{margin:var(--sp-3) 0 0;font-size:var(--fs-sm);color:var(--c-text-secondary);line-height:1.6}.faq-item{border:var(--border-thin);border-radius:var(--radius-md);background:var(--c-surface);margin-bottom:var(--sp-3);overflow:hidden}.faq-item[open]{border-color:var(--c-accent);box-shadow:var(--shadow-xs)}.faq-item__question{list-style:none;cursor:pointer;padding:var(--sp-4) var(--sp-5);font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--c-heading);position:relative;padding-right:var(--sp-10)}.faq-item__question::-webkit-details-marker{display:none}.faq-item__question:after{content:"+";position:absolute;right:var(--sp-5);top:50%;transform:translateY(-50%);font-size:var(--fs-lg);font-weight:var(--fw-regular);color:var(--c-accent)}.faq-item[open] .faq-item__question:after{content:"−"}.faq-item__question:hover{background:var(--c-surface-muted)}.faq-item__answer{padding:0 var(--sp-5) var(--sp-4);color:var(--c-text-secondary);font-size:var(--fs-sm);line-height:1.7}.faq-item__answer p{margin-bottom:var(--sp-3)}.faq-item__answer p:last-child{margin-bottom:0}.landing-sections__inner{max-width:720px}.landing-sections__inner+.landing-sections__inner{margin-top:var(--sp-8)}.landing-section{margin-bottom:var(--sp-8)}.landing-section:last-child{margin-bottom:0}.landing-section__heading{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--c-heading);margin-bottom:var(--sp-3)}.landing-section__body{color:var(--c-text-secondary);font-size:var(--fs-md);line-height:1.7}.landing-section__body p{margin-bottom:var(--sp-3)}.landing-section__body p:last-child{margin-bottom:0}.faq-list p.u-muted{font-style:italic}.related-tests{margin-top:var(--sp-6);border-top:var(--border-thin);padding-top:var(--sp-6)}.related-tests__heading{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--c-heading);margin-bottom:var(--sp-4)}.related-tests__list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--sp-3)}.related-tests__card{display:flex;align-items:center;padding:var(--sp-3) var(--sp-4);background:var(--c-surface);border:var(--border-thin);border-radius:var(--radius-md);color:var(--c-text);font-size:var(--fs-sm);font-weight:var(--fw-medium);transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.related-tests__card:hover{border-color:var(--c-accent);box-shadow:var(--shadow-sm);text-decoration:none}@media(max-width:640px){.related-tests__list{grid-template-columns:1fr 1fr}.landing-sections,.related-tests{margin-top:var(--sp-6);padding-top:var(--sp-6)}}@media(max-width:400px){.related-tests__list{grid-template-columns:1fr}}.lesson-group{margin-bottom:2rem}.lesson-group__title{font-size:1.25rem;font-weight:600;margin-bottom:1rem;color:var(--c-text)}.lesson-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem}.lesson-card{display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;border:1px solid var(--c-border);border-radius:8px;background:var(--c-surface);text-decoration:none;color:var(--c-text);transition:border-color .15s,box-shadow .15s}.lesson-card:hover{border-color:var(--c-accent);box-shadow:0 0 0 1px var(--c-accent)}.lesson-card__level{width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--c-bg-muted, var(--c-border));color:var(--c-text-secondary);font-size:.75rem;font-weight:600;flex-shrink:0}.lesson-card__body{min-width:0}.lesson-card__title{font-size:.9rem;font-weight:500;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lesson-card__keys{font-size:.75rem;color:var(--c-text-secondary);letter-spacing:.05em}.lesson-meta{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;margin-bottom:1rem;padding:.75rem 1rem;border:1px solid var(--c-border);border-radius:8px;background:var(--c-surface);font-size:.85rem}.lesson-meta__row{display:flex;align-items:center;gap:.5rem}.lesson-meta__label{color:var(--c-text-secondary)}.lesson-meta__keys{display:flex;gap:.35rem}.lesson-meta__key{display:inline-flex;align-items:center;justify-content:center;min-width:1.6rem;height:1.6rem;padding:0 .3rem;border-radius:4px;background:var(--c-accent);color:#fff;font-size:.75rem;font-weight:600;letter-spacing:0}.lesson-meta__group{color:var(--c-text-secondary);font-size:.8rem}.lesson-nav{display:flex;gap:.75rem;margin-top:1.5rem}.lesson-nav__next,.lesson-nav__retry{font-weight:500}.lesson-nav [hidden]{display:none!important}.game-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.game-card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:2rem 1.5rem;border:1px solid var(--c-border);border-radius:12px;background:var(--c-surface);text-decoration:none;color:var(--c-text);transition:border-color .15s,box-shadow .15s}.game-card:hover{border-color:var(--c-accent);box-shadow:0 0 0 1px var(--c-accent)}.game-card__icon{width:3.5rem;height:3.5rem;display:flex;align-items:center;justify-content:center;border-radius:10px;background:var(--c-accent-bg, var(--c-border));color:var(--c-accent);margin-bottom:1rem}.game-card__title{font-size:1.1rem;font-weight:600;margin:0 0 .5rem}.game-card__desc{font-size:.85rem;color:var(--c-text-secondary);margin:0;line-height:1.4}.game-area{max-width:600px;margin:0 auto}.game-hud{display:flex;justify-content:center;gap:1.5rem;margin-bottom:1.5rem}.game-hud__item{display:flex;flex-direction:column;align-items:center}.game-hud__label{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--c-text-secondary)}.game-hud__value{font-size:1.5rem;font-weight:700;color:var(--c-text);font-variant-numeric:tabular-nums}.game-lane{text-align:center;margin-bottom:1.5rem}.game-current-word{font-size:1.75rem;font-weight:600;letter-spacing:.02em;margin-bottom:1rem;min-height:2.5rem}.game-input{width:100%;max-width:400px;padding:.75rem 1rem;font-size:1.1rem;font-family:var(--font-mono, monospace);border:1px solid var(--c-border);border-radius:8px;background:var(--c-surface);color:var(--c-text);text-align:center;outline:none;transition:border-color .15s}.game-input:focus{border-color:var(--c-accent)}.game-input--correct{border-color:var(--c-success, #16a34a)}.game-input--wrong{border-color:var(--c-error, #dc2626)}.game-actions{display:flex;justify-content:center;gap:.75rem;margin-bottom:1.5rem}.game-passage{font-size:1.1rem;line-height:1.8;padding:1rem 1.25rem;border:1px solid var(--c-border);border-radius:8px;background:var(--c-surface);margin-bottom:1.5rem;font-family:var(--font-mono, monospace);user-select:none}.game-passage__char{transition:color .1s}.game-passage__char--typed{color:var(--c-text-secondary)}.game-passage__char--correct{color:var(--c-success, #16a34a)}.game-passage__char--wrong{color:var(--c-error, #dc2626);text-decoration:underline}.game-passage__char--current{border-bottom:2px solid var(--c-accent)}.game-field{position:relative;width:100%;height:300px;border:1px solid var(--c-border);border-radius:8px;background:var(--c-surface);overflow:hidden;margin-bottom:1.5rem}.game-field__zone{position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--c-error, #dc2626)}.game-drop{position:absolute;font-size:1.25rem;font-weight:700;font-family:var(--font-mono, monospace);color:var(--c-text);transition:top .05s linear}.game-drop--typed{color:var(--c-success, #16a34a);opacity:0;transition:opacity .2s}.game-result{text-align:center;padding:2rem 1rem}.game-result__score{margin-bottom:1.5rem}.game-result__label{display:block;font-size:.85rem;color:var(--c-text-secondary);margin-bottom:.25rem}.game-result__value{display:block;font-size:3rem;font-weight:700;color:var(--c-text)}.game-result__sub{display:block;font-size:.85rem;color:var(--c-text-secondary)}.game-result__stats{display:flex;justify-content:center;gap:2rem}.game-result__stat .game-result__value{font-size:1.5rem}.game-combo{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);font-size:1.5rem;font-weight:700;color:var(--c-accent);pointer-events:none;opacity:0;animation:combo-pop .4s ease-out forwards}@keyframes combo-pop{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-70%) scale(1.3)}}@media(max-width:480px){.game-hud{gap:.75rem}.game-hud__value{font-size:1.25rem}.game-current-word{font-size:1.4rem}.game-result__value{font-size:2.5rem}}.progress-stats{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:2rem}.progress-stat{flex:1 1 120px;display:flex;flex-direction:column;align-items:center;padding:1.25rem 1rem;border:1px solid var(--c-border);border-radius:8px;background:var(--c-surface)}.progress-stat__value{font-size:1.75rem;font-weight:700;color:var(--c-text)}.progress-stat__label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--c-text-secondary);margin-top:.25rem}.progress-section{margin-bottom:2rem}.progress-section__title{font-size:1.15rem;font-weight:600;margin-bottom:1rem}.weak-keys-list{display:flex;flex-direction:column;gap:.5rem}.weak-key{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;border:1px solid var(--c-border);border-radius:6px;background:var(--c-surface);position:relative;overflow:hidden}.weak-key__char{font-weight:700;font-family:var(--font-mono, monospace);width:1.5rem;text-align:center;position:relative;z-index:1}.weak-key__count{font-size:.8rem;color:var(--c-text-secondary);position:relative;z-index:1}.weak-key__bar{position:absolute;left:0;top:0;bottom:0;background:var(--c-accent-bg, rgba(99, 102, 241, .08));border-radius:6px}.daily-chart{display:flex;align-items:flex-end;gap:2px;height:120px;padding:0 0 1.5rem}.daily-bar{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:0}.daily-bar__fill{width:100%;max-width:20px;background:var(--c-accent);border-radius:2px 2px 0 0;min-height:2px}.daily-bar__label{font-size:.6rem;color:var(--c-text-secondary);margin-top:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.results-table-wrap{overflow-x:auto}.results-table{width:100%;border-collapse:collapse;font-size:.85rem}.results-table th,.results-table td{padding:.5rem .75rem;text-align:left;border-bottom:1px solid var(--c-border)}.results-table th{font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--c-text-secondary)}.progress-empty{text-align:center;padding:3rem 1rem;color:var(--c-text-secondary)}.progress-empty .btn{margin-top:1rem}#guest-progress.is-hidden{display:none}#guest-progress:not(.is-hidden)~#guest-empty{display:none}@media(max-width:480px){.progress-stat{flex:1 1 80px;padding:1rem .5rem}.progress-stat__value{font-size:1.4rem}.daily-chart{height:80px}}.calculator{max-width:480px;margin:0 auto}.calc-field{margin-bottom:1.25rem}.calc-field__label{display:block;font-size:.8rem;font-weight:500;color:var(--c-text-secondary);margin-bottom:.35rem}.calc-field__input{width:100%;padding:.75rem 1rem;font-size:1.1rem;font-family:var(--font-mono, monospace);border:1px solid var(--c-border);border-radius:8px;background:var(--c-surface);color:var(--c-text);outline:none;transition:border-color .15s}.calc-field__input:focus{border-color:var(--c-accent)}.calc-divider{height:1px;background:var(--c-border);margin:1.5rem 0}.calc-results{display:flex;flex-direction:column;gap:1rem}.calc-result{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border:1px solid var(--c-border);border-radius:8px;background:var(--c-surface)}.calc-result__label{font-size:.85rem;color:var(--c-text-secondary)}.calc-result__value{font-size:1.25rem;font-weight:700;font-family:var(--font-mono, monospace);color:var(--c-text);font-variant-numeric:tabular-nums}@media(max-width:480px){.calc-result{flex-direction:column;align-items:flex-start;gap:.25rem}.calc-result__value{font-size:1.1rem}}.info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.info-card{padding:1.25rem 1.5rem;border:1px solid var(--c-border);border-radius:10px;background:var(--c-surface);text-decoration:none;color:var(--c-text);transition:border-color .15s,box-shadow .15s}.info-card:hover{border-color:var(--c-accent);box-shadow:0 0 0 1px var(--c-accent)}.info-card__title{font-size:1.05rem;font-weight:600;margin:0 0 .35rem}.info-card__desc{font-size:.85rem;color:var(--c-text-secondary);margin:0;line-height:1.4}.info-content{font-size:1rem;line-height:1.7;color:var(--c-text);max-width:640px}.info-content p{margin-bottom:1rem}.info-nav{margin-top:2rem}.seo-sections{margin-bottom:2rem}.seo-section{margin-bottom:1.5rem}.seo-section__heading{font-size:1.15rem;font-weight:600;margin-bottom:.5rem;color:var(--c-text)}.seo-section__body{font-size:.95rem;line-height:1.7;color:var(--c-text-secondary)}.seo-faq{margin-top:2rem}.seo-faq__title{font-size:1.15rem;font-weight:600;margin-bottom:1rem}.seo-faq__item{border:1px solid var(--c-border);border-radius:8px;margin-bottom:.5rem;background:var(--c-surface)}.seo-faq__question{padding:.875rem 1rem;font-weight:500;cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between}.seo-faq__question:after{content:"+";font-size:1.1rem;color:var(--c-text-secondary);transition:transform .2s}.seo-faq__item[open] .seo-faq__question:after{transform:rotate(45deg)}.seo-faq__answer{padding:0 1rem 1rem;font-size:.9rem;line-height:1.6;color:var(--c-text-secondary)}.related-links{margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--c-border)}.related-links__title{font-size:.95rem;font-weight:600;margin-bottom:.75rem}.related-links__list{display:flex;flex-wrap:wrap;gap:.5rem}.related-links__item{display:inline-block;padding:.4rem .75rem;border:1px solid var(--c-border);border-radius:6px;font-size:.8rem;color:var(--c-accent);text-decoration:none;transition:border-color .15s}.related-links__item:hover{border-color:var(--c-accent)}.np-breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--c-text-tertiary);margin-bottom:var(--sp-3)}.np-breadcrumb a{color:var(--c-text-secondary);text-decoration:none}.np-breadcrumb a:hover{color:var(--c-accent);text-decoration:underline}.np-breadcrumb__sep{color:var(--c-border-strong)}.np-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--sp-4);margin:var(--sp-6) 0 var(--sp-8)}.np-tile{position:relative;display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-5);border:var(--border-thin);border-radius:var(--radius-lg);background:var(--c-surface);text-decoration:none;color:var(--c-text);transition:border-color .15s,box-shadow .15s,transform .15s}.np-tile:hover,.np-tile:focus-visible{border-color:var(--c-accent);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.np-tile__metric{align-self:flex-start;padding:2px var(--sp-2);border-radius:var(--radius-pill);background:var(--c-accent-soft);color:var(--c-accent-strong);font-size:10px;font-weight:var(--fw-bold, 700);letter-spacing:.08em}.np-tile__title{margin:0;font-size:var(--fs-md);font-weight:var(--fw-semibold, 600);color:var(--c-heading);line-height:var(--lh-tight)}.np-tile__desc{margin:0;font-size:var(--fs-sm);line-height:1.5;color:var(--c-text-secondary);flex:1}.np-tile__cta{font-size:var(--fs-xs);font-weight:var(--fw-semibold, 600);color:var(--c-accent)}.np-card .tp-stats--primary{grid-template-columns:repeat(3,1fr)}.np-card [data-np-metric]{opacity:.55;transition:opacity .15s}.np-card [data-np-metric].is-primary{opacity:1}.np-card [data-np-metric].is-primary .tp-stat__value{color:var(--c-accent);font-size:var(--fs-xl)}.np-card [data-np-metric].is-primary .tp-stat__label{color:var(--c-accent-strong)}@media(min-width:720px){.np-card .tp-stats--primary{grid-template-columns:repeat(5,1fr)}}.np-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-4)}.np-controls .tp-seg{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);background:none;border:none;padding:0}.np-controls__label{font-size:var(--fs-xs);font-weight:var(--fw-semibold, 600);color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.08em}.np-controls__reset{border:var(--border-thin);background:none;color:var(--c-text-secondary);border-radius:var(--radius-sm);font-size:var(--fs-xs);padding:6px var(--sp-3);cursor:pointer;transition:color .15s,border-color .15s}.np-controls__reset:hover:not(:disabled){color:var(--c-error);border-color:var(--c-error)}.np-controls__reset:disabled{color:var(--c-success);border-color:var(--c-success)}.np-result__note{margin:var(--sp-3) 0 0;font-size:var(--fs-xs);line-height:1.5;color:var(--c-text-tertiary)}@media(max-width:640px){.np-grid{grid-template-columns:1fr}.np-controls{flex-direction:column;align-items:stretch}.np-controls .tp-seg{justify-content:center}}.vkb{--kb-bg: #eef1f6;--kb-card: #fff;--kb-ink: #0f172a;--kb-mut: #64748b;--kb-key: #fff;--kb-keyb: #c7cfdb;--kb-keysh: #a3adbd;--kb-tray: #dfe4ec;--kb-ok: #16a34a;--kb-bad: #dc2626;display:flex;flex-direction:column;align-items:stretch;width:100%;font-size:15px;line-height:1.45;color:var(--kb-ink);user-select:none}:root[data-theme=dark] .vkb,:root.dark .vkb{--kb-bg: #0d1220;--kb-card: #161d30;--kb-ink: #e8edf7;--kb-mut: #94a3b8;--kb-key: #232c44;--kb-keyb: #33405e;--kb-keysh: #0a0f1c;--kb-tray: #10172a}.vkb__body{gap:8px;margin-top:0;width:100%}.vkb__body.is-hidden{display:none!important}.vkb__guide{display:flex;align-items:center;gap:16px;width:100%;min-height:84px;box-sizing:border-box}.vkb__big{display:flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:64px;height:64px;padding:0 14px;white-space:nowrap;border:2px solid var(--kb-c, var(--kb-keyb));border-radius:12px;background:color-mix(in srgb,var(--kb-c, #94a3b8) 22%,var(--kb-key));box-shadow:0 4px 0 var(--kb-keysh);font:700 22px ui-monospace,Consolas,monospace;color:var(--kb-ink)}.vkb__sentence{margin:0;font-size:17px;color:var(--kb-ink)}.vkb__sentence strong{color:var(--kb-ink);font-weight:700}.vkb__outer{position:relative;margin:0 auto;width:720px;height:480px}.vkb__inner{position:relative;width:720px;height:480px;transform-origin:top left}.vkb-tray{position:absolute;background:var(--kb-tray);border-radius:14px}.vkb-key{position:absolute;display:flex;align-items:center;justify-content:center;border:1px solid var(--kb-keyb);border-radius:7px;background:color-mix(in srgb,var(--kb-c, #94a3b8) 20%,var(--kb-key));box-shadow:0 3px 0 var(--kb-keysh);font:600 14px/1 Segoe UI,system-ui,-apple-system,sans-serif;color:var(--kb-ink);overflow:hidden;transition:transform .08s,background-color .17s}.vkb.is-nocol .vkb-key{background:var(--kb-key)}.vkb-key.is-bump:after{content:"";position:absolute;bottom:6px;left:50%;width:14px;height:3px;margin-left:-7px;border-radius:2px;background:var(--kb-mut)}.vkb-key.is-next{background:color-mix(in srgb,var(--kb-c, #94a3b8) 50%,var(--kb-key))}.vkb-key.is-down{transform:translateY(2px);box-shadow:0 1px 0 var(--kb-keysh)}.vkb-key.is-ok{transform:translateY(2px);background:var(--kb-ok)!important;color:#fff}.vkb-key.is-bad{transform:translateY(2px);background:var(--kb-bad)!important;color:#fff}.vkb-key.is-row-hidden{display:none}.vkb-key.is-target{outline:2px solid var(--kb-c, var(--kb-keyb));outline-offset:-3px}.vkb-hands{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}.vkb-hands.is-nohands .vkb-hand{display:none}.vkb-hands.is-see .vkb-hand{opacity:.65}.vkb-hand{filter:drop-shadow(0 4px 5px rgba(0,0,0,.3))}.vkb-dot{fill:var(--kb-c, #94a3b8);stroke:#fff;stroke-width:2.5;opacity:0}.vkb-thumb{fill:none;stroke:var(--kb-c, #3b82f6);stroke-width:7;opacity:0}.vkb-hand g.is-active .vkb-dot,.vkb-hand g.is-active .vkb-thumb{opacity:1}.vkb-ring{fill:none;stroke:var(--kb-c, #94a3b8);stroke-width:3.5;animation:vkb-pulse .9s infinite}@keyframes vkb-pulse{50%{stroke-width:6;opacity:.65}}.vkb__legend{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:8px;font-size:13px;color:var(--kb-mut)}.vkb__legend i{display:inline-block;width:12px;height:12px;margin-right:5px;border-radius:50%;vertical-align:-1px}.vkb__foot{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 8px;width:100%;padding-top:var(--sp-1)}.vkb__foot .tp-kb-toggle{padding:6px 11px;border:1px solid var(--kb-keyb);border-radius:8px;background:var(--kb-card);color:var(--kb-ink)}.vkb__foot .tp-kb-toggle:hover{background:var(--kb-card);color:var(--kb-ink)}.vkb__opt{display:inline-flex;align-items:center;gap:5px;padding:4px 6px;border-radius:8px;font-size:13px;color:var(--kb-mut);cursor:pointer}.vkb__opt input{margin:0;accent-color:var(--kb-c, var(--kb-mut))}@media(max-width:479px){.vkb-hands,.vkb__opt--hands{display:none}}@media(max-width:540px){.vkb__guide{gap:10px;min-height:72px}.vkb__big{height:54px;font-size:18px}.vkb__sentence{font-size:15px}}@media(prefers-reduced-motion:reduce){.vkb-ring{animation:none}.vkb-key{transition:none}}
