: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: 64px;--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)}*,*: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)}.site-header{position:sticky;top:0;z-index:var(--z-header);height:var(--header-height);background:var(--c-bg);border-bottom:var(--border-thin)}.site-header__inner{max-width:var(--container-max);margin:0 auto;padding:0 var(--sp-6);height:100%;display:flex;align-items:center;gap:var(--sp-6)}.site-header__brand{display:inline-flex;align-items:center;color:var(--c-heading);flex-shrink:0}.site-header__brand:hover{text-decoration:none}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:var(--radius-md);background:var(--c-accent-soft);color:var(--c-accent)}.site-header__nav{display:flex;align-items:center;gap:var(--sp-1);margin:0 auto;min-width:0;flex:1 1 auto;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}.site-header__nav::-webkit-scrollbar{display:none}.site-header__nav a{color:var(--c-text-secondary);font-size:var(--fs-xs);font-weight:var(--fw-medium);padding:var(--sp-2);border-radius:var(--radius-sm);white-space:nowrap;flex:0 0 auto;transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}@media(min-width:1280px){.site-header__nav a{font-size:var(--fs-sm);padding:var(--sp-2) var(--sp-3)}}.site-header__nav a:hover{color:var(--c-text);background:var(--c-surface-muted);text-decoration:none}.site-header__nav a.is-active{color:var(--c-accent);background:var(--c-accent-soft)}.site-header__actions{display:flex;align-items:center;gap:var(--sp-2);flex-shrink:0}@media(max-width:1279px){.site-header__login{display:none}}.site-header__menu-btn{display:none;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-sm);color:var(--c-text)}.site-header__menu-btn:hover{background:var(--c-surface-muted)}.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-header__brand-text{display:inline-block;margin-left:var(--sp-2);font-weight:var(--fw-semibold);font-size:var(--fs-md)}.site-nav-mobile{display:none}@media(max-width:900px){.site-header__nav{display:none}.site-header__menu-btn{display:inline-flex}.site-header__inner{gap:var(--sp-2);padding:0 var(--sp-4)}.site-header__brand-text{display:none}.site-nav-mobile.is-open{display:block;position:fixed;inset:var(--header-height) 0 auto 0;background:var(--c-surface);border-bottom:var(--border-thin);box-shadow:var(--shadow-sm);padding:var(--sp-4);z-index:var(--z-header)}.site-nav-mobile a{display:block;padding:var(--sp-3) var(--sp-2);color:var(--c-text);font-weight:var(--fw-medium);border-radius:var(--radius-sm)}.site-nav-mobile a:hover{background:var(--c-surface-muted);text-decoration:none}.site-nav-mobile a.is-active{color:var(--c-accent);background:var(--c-accent-soft)}.site-nav-mobile__divider{height:1px;margin:var(--sp-2) 0;background:var(--c-border)}}.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)}.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{border-top:var(--border-thin);background:var(--c-surface)}.site-footer__inner{max-width:var(--container-max);margin:0 auto;padding:var(--sp-8) var(--sp-6);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-4);color:var(--c-text-tertiary);font-size:var(--fs-xs)}.site-footer__nav{display:flex;flex-wrap:wrap;gap:var(--sp-4)}.site-footer__nav a{color:var(--c-text-tertiary)}.site-footer__nav a:hover{color:var(--c-text-secondary)}.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)}.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}.tp-kb__key--expected{background:var(--c-accent-soft, rgba(58, 107, 232, .12));border-color:var(--c-accent);color:var(--c-accent);font-weight:600;box-shadow:0 0 0 2px var(--c-accent-soft, rgba(58, 107, 232, .15))}@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-pace{position:relative;height:6px;background:var(--c-surface-sunken);border-radius:3px;margin:var(--sp-2) 0 var(--sp-2);overflow:visible}.tp-pace[hidden]{display:none!important}.tp-pace__now,.tp-pace__target{position:absolute;top:-2px;width:10px;height:10px;border-radius:50%;transform:translate(-50%)}.tp-pace__now{background:var(--c-accent);transition:left .2s var(--ease)}.tp-pace__target{background:var(--c-teal)}.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-kb__rows{display:flex;flex-direction:column;gap:5px;width:100%;max-width:680px}.tp-kb__row{display:flex;justify-content:center;gap:5px}.tp-kb__row--hidden{display:none!important}.tp-kb__row--number{margin-bottom:2px}.tp-kb__key{display:flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 var(--sp-1);font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--c-text-secondary);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-sm);transition:background 60ms var(--ease),border-color 60ms var(--ease),color 60ms var(--ease),transform 40ms var(--ease);line-height:1}.tp-kb__key--wide{min-width:70px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--c-text-tertiary)}.tp-kb__key--space{min-width:260px;flex:0 1 38%}.tp-kb__row--space{padding:0 var(--sp-8)}.tp-kb__key.is-lit{background:var(--c-accent-soft);border-color:var(--c-accent);color:var(--c-accent);transform:translateY(1px)}.tp-kb__key.is-error{background:var(--c-error-soft);border-color:var(--c-error);color:var(--c-error);transform:translateY(1px)}.tp-kb__key--target{background:var(--c-accent-soft, rgba(58, 107, 232, .08));border-color:var(--c-accent);color:var(--c-accent);font-weight:600}.tp-kb__key--current{background:var(--c-accent, #366be8);border-color:var(--c-accent, #366be8);color:#fff;font-weight:700;box-shadow:0 0 0 3px var(--c-accent-soft, rgba(58, 107, 232, .3))}.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-pace__now,.tp-surface .tp-viewport{transition:none!important}.tp-caret{animation:none;opacity:1}}.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)}:root{--hp-pinky-l: #8B5CF6;--hp-ring-l: #3B82F6;--hp-middle-l: #06B6D4;--hp-index-l: #14B8A6;--hp-index-r: #22C55E;--hp-middle-r: #F59E0B;--hp-ring-r: #F97316;--hp-pinky-r: #EF4444;--hp-space: #94A3B8;--hp-bg: #F8F9FB;--hp-hero-from: #EEF2FF;--hp-hero-to: #F8F9FB;--hp-lavender: #F5F3FF;--hp-mint: #ECFDF5;--hp-sky: #F0F9FF}body:has(.hp-footer)>.site-footer{display:none!important}.hc{max-width:1200px;width:calc(100% - 40px);margin-inline:auto}.hp-section-hd{text-align:center;margin-bottom:var(--sp-10)}.hp-section-hd h2{font-size:clamp(28px,3vw,40px);font-weight:800;line-height:1.15;color:var(--c-heading);margin:0 0 var(--sp-3)}.hp-section-hd p{font-size:16px;line-height:1.6;color:var(--c-text-secondary);max-width:540px;margin:0 auto}.btn-hero{display:inline-flex;align-items:center;gap:var(--sp-2);padding:13px 26px;background:var(--c-accent);color:#fff;border:none;border-radius:var(--radius-md);font-size:14px;font-weight:var(--fw-semibold);cursor:pointer;text-decoration:none;transition:background var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.btn-hero:hover{background:var(--c-accent-strong);box-shadow:var(--shadow-md)}.btn-arrow{display:inline-block;transition:transform var(--t-fast) var(--ease)}.btn-hero:hover .btn-arrow{transform:translate(3px)}.btn-hero-outline{display:inline-flex;align-items:center;gap:var(--sp-2);padding:13px 26px;background:transparent;color:var(--c-text);border:1px solid var(--c-border-strong);border-radius:var(--radius-md);font-size:14px;font-weight:var(--fw-semibold);cursor:pointer;text-decoration:none;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.btn-hero-outline:hover{background:var(--c-surface-muted);border-color:var(--c-text-tertiary)}.hp-hero{background:linear-gradient(180deg,var(--hp-hero-from) 0%,var(--hp-hero-to) 100%);position:relative;overflow:hidden;padding:72px 0 64px}.hp-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 70% 50% at 65% 50%,rgba(58,107,232,.06) 0%,transparent 70%);pointer-events:none}.hp-hero__grid{display:grid;grid-template-columns:42% 1fr;gap:var(--sp-12);align-items:center;position:relative;z-index:1}.hp-hero__eyebrow{font-size:11px;font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.12em;color:var(--c-accent);margin-bottom:var(--sp-4)}.hp-hero h1{font-size:clamp(36px,4.5vw,54px);font-weight:800;line-height:1.08;color:var(--c-heading);margin:0 0 var(--sp-5)}.hp-hero__sub{font-size:17px;line-height:1.65;color:var(--c-text-secondary);max-width:480px;margin:0 0 var(--sp-7)}.hp-hero__actions{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-5)}.hp-hero__trust{font-size:13px;color:var(--c-text-tertiary)}.hp-hero__right{display:flex;flex-direction:column;align-items:stretch}.hp-demo{background:var(--c-surface);border:1px solid var(--c-border);border-radius:14px;box-shadow:var(--shadow-md);overflow:hidden;width:100%}.hp-demo__bar{display:flex;align-items:center;justify-content:space-between;height:44px;padding:0 var(--sp-4);background:var(--c-surface-muted);border-bottom:1px solid var(--c-border)}.hp-demo__label{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--c-text)}.hp-demo__stats{display:flex;align-items:center;gap:var(--sp-4);font-size:var(--fs-sm);color:var(--c-text-secondary)}.hp-demo__stat strong{color:var(--c-text);font-weight:var(--fw-semibold)}.hp-demo__body{padding:var(--sp-5);font-family:var(--font-mono);font-size:18px;line-height:2;min-height:100px;position:relative;cursor:text;user-select:none;overflow:hidden}.hp-demo__prompt{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-sans);font-size:var(--fs-base);color:var(--c-text-tertiary);pointer-events:none}.hp-demo__prompt:after{content:"";display:inline-block;width:2px;height:1.2em;background:var(--c-accent);margin-left:2px;animation:hp-blink 1s step-end infinite}@keyframes hp-blink{0%,to{opacity:1}50%{opacity:0}}.hp-demo__text{position:relative}.hp-demo__results{display:none;padding:var(--sp-8) var(--sp-5);text-align:center}.hp-demo__results.is-visible{display:block}.hp-demo__result-grid{display:flex;justify-content:center;gap:var(--sp-8);margin-bottom:var(--sp-5)}.hp-demo__result{text-align:center}.hp-demo__result-val{display:block;font-size:28px;font-weight:800;color:var(--c-accent)}.hp-demo__result-lbl{font-size:var(--fs-sm);color:var(--c-text-tertiary);margin-top:var(--sp-1)}.hp-kb{margin-top:var(--sp-4);background:var(--c-surface-muted);border-radius:10px;padding:12px}.hp-kb__rows{display:flex;flex-direction:column;gap:4px}.hp-kb__row{display:flex;justify-content:center;gap:4px;margin-bottom:4px}.hp-kb__row:last-child{margin-bottom:0}.hp-kb__row--space{padding:0 40px}.hp-kb__key{display:flex;align-items:center;justify-content:center;min-width:34px;height:38px;padding:0 5px;border-radius:5px;background:var(--c-surface);border:1px solid var(--c-border);font-size:11px;font-weight:var(--fw-medium);color:var(--c-text-secondary);transition:all .1s var(--ease);white-space:nowrap}.hp-kb__key--wide{min-width:60px;font-size:10px}.hp-kb__key--space{min-width:220px;flex:0 1 36%}.hp-kb__key--expected{background:var(--c-accent);color:#fff;border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-soft);transform:scale(1.06)}.hp-kb__key--correct{background:var(--c-success-soft);border-color:var(--c-success)}.hp-kb__key--error{background:var(--c-error-soft);border-color:var(--c-error)}.hp-kb__finger-guide{display:flex;justify-content:center;gap:5px;margin-top:var(--sp-3);padding:0 16px}.hp-kb__finger-guide span{height:3px;border-radius:2px;flex:1;max-width:56px;background:var(--fc, var(--c-border))}.hp-durations{background:var(--c-surface);border-top:1px solid var(--c-border);border-bottom:1px solid var(--c-border);padding:72px 0}.hp-durations__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-5)}.hp-dur-card{display:flex;flex-direction:column;gap:var(--sp-2);background:var(--c-bg);border:1px solid var(--c-border);border-radius:14px;padding:var(--sp-6);text-decoration:none;color:inherit;transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.hp-dur-card:hover{border-color:var(--c-accent);box-shadow:var(--shadow-md);transform:translateY(-2px);text-decoration:none}.hp-dur-card__badge{align-self:flex-start;padding:4px 10px;border-radius:var(--radius-pill);background:var(--c-accent-soft);color:var(--c-accent);font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:.02em;text-transform:uppercase}.hp-dur-card__title{margin:var(--sp-2) 0 0;font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--c-heading);line-height:1.3}.hp-dur-card__copy{margin:0;font-size:14px;line-height:1.6;color:var(--c-text-secondary)}.hp-dur-card__cta{margin-top:auto;padding-top:var(--sp-3);font-size:14px;font-weight:var(--fw-semibold);color:var(--c-accent)}.hp-benchmark{background:var(--hp-lavender);padding:72px 0}.hp-benchmark__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-12);align-items:center}.hp-benchmark__intro h2{font-size:clamp(28px,3vw,40px);font-weight:800;line-height:1.15;margin:0 0 var(--sp-4)}.hp-benchmark__intro p{font-size:16px;line-height:1.65;color:var(--c-text-secondary);margin:0 0 var(--sp-4)}.hp-benchmark__actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-5)}.hp-benchmark__table-wrap{background:var(--c-surface);border:1px solid var(--c-border);border-radius:14px;padding:var(--sp-6);box-shadow:var(--shadow-sm)}.hp-wpm-table{width:100%;border-collapse:collapse;font-size:15px}.hp-wpm-table th,.hp-wpm-table td{padding:var(--sp-3);text-align:left;border-bottom:1px solid var(--c-border)}.hp-wpm-table thead th{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--c-text-tertiary);font-weight:var(--fw-semibold)}.hp-wpm-table tbody th{font-weight:var(--fw-semibold);color:var(--c-heading)}.hp-wpm-table tbody tr:last-child th,.hp-wpm-table tbody tr:last-child td{border-bottom:0}.hp-wpm-table tbody tr:nth-child(3){background:var(--c-success-soft)}.hp-benchmark__note{margin:var(--sp-4) 0 0;font-size:14px;line-height:1.6;color:var(--c-text-secondary)}.hp-goals{background:var(--hp-sky);padding:72px 0}.hp-goals__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-6)}.hp-goal{background:var(--c-surface);border-radius:14px;padding:var(--sp-7);border:1px solid var(--c-border);transition:box-shadow var(--t-base) var(--ease),transform var(--t-base) var(--ease);text-decoration:none;display:flex;flex-direction:column;color:inherit}.hp-goal:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.hp-goal__visual{height:120px;border-radius:10px;background:var(--c-surface-muted);display:flex;align-items:center;justify-content:center;margin-bottom:var(--sp-5);overflow:hidden}.hp-goal__visual svg{width:100%;height:100%}.hp-goal__title{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--c-heading);margin-bottom:var(--sp-2)}.hp-goal__desc{font-size:var(--fs-base);line-height:1.6;color:var(--c-text-secondary);margin-bottom:var(--sp-4);flex:1}.hp-goal__links{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.hp-goal__links span{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--c-accent);padding:3px 10px;border-radius:var(--radius-sm);background:var(--c-accent-soft)}.hp-goal__typing-line{font-family:var(--font-mono);font-size:16px;line-height:1}.hp-goal__typed{color:var(--c-success)}.hp-goal__caret{display:inline-block;width:2px;height:1.1em;background:var(--c-accent);vertical-align:text-bottom;margin:0 1px;animation:hp-blink 1s step-end infinite}.hp-goal__pending{color:var(--c-text-tertiary)}.hp-goal__kb-mini{display:flex;flex-direction:column;gap:6px;align-items:center}.hp-goal__kb-row{display:flex;gap:5px}.hp-goal__kk{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:6px;background:var(--c-surface);border:1px solid var(--c-border);font-size:12px;font-weight:var(--fw-semibold);color:var(--c-text-secondary)}.hp-goal__kk--home{background:var(--c-accent);color:#fff;border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-soft)}.hp-tutor{background:var(--hp-lavender);padding:72px 0}.hp-tutor__grid{display:grid;grid-template-columns:54% 46%;gap:var(--sp-10);align-items:center}.hp-tutor__left{display:flex;flex-direction:column}.hp-tutor__keyboard{background:var(--c-surface);border-radius:12px;padding:var(--sp-5);box-shadow:var(--shadow-sm)}.hp-tutor__kb{display:flex;flex-direction:column;gap:5px}.hp-tutor__kb-row{display:flex;justify-content:center;gap:5px}.hp-tutor__kb-row--wide{margin-top:2px}.hp-tutor__key{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:7px;border:1px solid var(--c-border);font-size:13px;font-weight:var(--fw-semibold);color:var(--c-text-secondary);background:var(--c-surface-muted);transition:background .15s var(--ease),border-color .15s var(--ease);position:relative;text-transform:uppercase}.hp-tutor__key[data-f=pinky-l]{background:#8b5cf614;border-color:#8b5cf626;color:#8b5cf6d9}.hp-tutor__key[data-f=ring-l]{background:#3b82f614;border-color:#3b82f626;color:#3b82f6d9}.hp-tutor__key[data-f=middle-l]{background:#06b6d414;border-color:#06b6d426;color:#06b6d4d9}.hp-tutor__key[data-f=index-l]{background:#14b8a614;border-color:#14b8a626;color:#14b8a6d9}.hp-tutor__key[data-f=index-r]{background:#22c55e14;border-color:#22c55e26;color:#22c55ed9}.hp-tutor__key[data-f=middle-r]{background:#f59e0b14;border-color:#f59e0b26;color:#f59e0bd9}.hp-tutor__key[data-f=ring-r]{background:#f9731614;border-color:#f9731626;color:#f97316d9}.hp-tutor__key[data-f=pinky-r]{background:#ef444414;border-color:#ef444426;color:#ef4444d9}.hp-tutor__key[data-f=space]{background:#94a3b814;border-color:#94a3b826;color:var(--c-text-tertiary)}.hp-tutor__key--home:after{content:"";position:absolute;bottom:5px;left:50%;transform:translate(-50%);width:14px;height:3px;border-radius:2px;background:var(--c-accent);opacity:.7}.hp-tutor__key--shift{width:72px;font-size:11px;font-weight:var(--fw-medium)}.hp-tutor__key--space{flex:1;max-width:240px;font-size:11px;font-weight:var(--fw-medium)}.hp-tutor__right,.hp-tutor__steps{display:flex;flex-direction:column}.hp-tutor__step{display:flex;gap:var(--sp-3);position:relative;padding-bottom:var(--sp-5)}.hp-tutor__step:last-child{padding-bottom:0}.hp-tutor__step:before{content:"";position:absolute;left:15px;top:34px;bottom:0;width:2px;background:var(--c-border)}.hp-tutor__step:last-child:before{display:none}.hp-tutor__step-num{flex:0 0 32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--fs-sm);font-weight:var(--fw-bold);background:var(--c-surface-muted);color:var(--c-text-tertiary);border:2px solid var(--c-border);position:relative;z-index:1}.hp-tutor__step--active .hp-tutor__step-num{background:var(--c-accent);color:#fff;border-color:var(--c-accent)}.hp-tutor__step-content{padding-top:4px}.hp-tutor__step-content h4{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--c-heading);margin:0 0 var(--sp-1)}.hp-tutor__step-content p{font-size:var(--fs-sm);color:var(--c-text-secondary);margin:0;font-family:var(--font-mono)}.hp-tutor__lesson-preview{background:var(--c-surface);border:1px solid var(--c-border);border-radius:10px;padding:var(--sp-4);margin-top:var(--sp-5)}.hp-tutor__lesson-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-3);flex-wrap:wrap;gap:var(--sp-2)}.hp-tutor__lesson-badge{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--c-accent);background:var(--c-accent-soft);padding:3px 10px;border-radius:var(--radius-pill)}.hp-tutor__lesson-keys{font-size:var(--fs-sm);color:var(--c-text-secondary)}.hp-tutor__lesson-keys strong{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;background:var(--c-accent);color:#fff;font-size:11px;margin:0 2px}.hp-tutor__lesson-text{font-family:var(--font-mono);font-size:20px;line-height:2;letter-spacing:1px;margin-bottom:var(--sp-3)}.hp-tutor__lt-char{color:var(--c-type-pending)}.hp-tutor__lt-char--target{color:var(--c-accent);font-weight:600}.hp-tutor__lt-space{color:var(--c-text-tertiary);margin:0 2px}.hp-tutor__lesson-stats{display:flex;gap:var(--sp-6);font-size:var(--fs-sm);color:var(--c-text-tertiary);border-top:1px solid var(--c-border);padding-top:var(--sp-3)}.hp-tutor__actions{display:flex;gap:var(--sp-3);margin-top:var(--sp-5)}.hp-practice{background:var(--c-surface);padding:72px 0}.hp-practice__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-10);align-items:center}.hp-practice__visual{display:flex;flex-direction:column}.hp-practice__lane{background:var(--c-surface-muted);border-radius:14px;padding:var(--sp-6)}.hp-practice__options{display:flex;flex-direction:column;gap:var(--sp-3);margin-bottom:var(--sp-5)}.hp-practice__pills{display:flex;gap:var(--sp-2);flex-wrap:wrap}.hp-practice__pill{padding:6px 14px;border-radius:var(--radius-pill);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--c-text-secondary);background:var(--c-surface);border:1px solid var(--c-border);cursor:default}.hp-practice__pill.is-active{background:var(--c-accent);color:#fff;border-color:var(--c-accent)}.hp-practice__typing{display:flex;gap:var(--sp-4);font-family:var(--font-mono);font-size:20px;line-height:1;padding:var(--sp-4) 0}.hp-practice__word{color:var(--c-text-tertiary)}.hp-practice__word--done{color:var(--c-text);opacity:.35}.hp-practice__word--current{color:var(--c-text);position:relative}.hp-practice__word--current:after{content:"";position:absolute;bottom:-4px;left:0;right:0;height:2px;background:var(--c-accent);border-radius:1px}.hp-practice__metrics{display:flex;gap:var(--sp-5);font-size:var(--fs-sm);color:var(--c-text-tertiary);padding-top:var(--sp-3);border-top:1px solid var(--c-border)}.hp-practice__info{display:flex;flex-direction:column}.hp-practice__info h3{font-size:clamp(22px,2.5vw,30px);font-weight:800;color:var(--c-heading);margin:0 0 var(--sp-3)}.hp-practice__info>p{font-size:var(--fs-base);line-height:1.65;color:var(--c-text-secondary);margin:0 0 var(--sp-5)}.hp-practice__features{display:flex;flex-direction:column;gap:var(--sp-3);margin-bottom:var(--sp-6)}.hp-practice__feat{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-base);color:var(--c-text-secondary)}.hp-practice__feat-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.hp-practice__actions{display:flex;gap:var(--sp-3);flex-wrap:wrap}.hp-speed{background:var(--hp-sky);padding:72px 0}.hp-speed__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-10);align-items:center}.hp-speed__gauge-wrap{display:flex;flex-direction:column;align-items:center}.hp-speed__gauge{width:100%;max-width:280px;height:auto;display:block}.hp-speed__sub-metrics{display:flex;gap:var(--sp-8);margin-top:var(--sp-5);text-align:center}.hp-speed__sub{display:flex;flex-direction:column;align-items:center}.hp-speed__sub strong{font-size:22px;font-weight:800;color:var(--c-heading)}.hp-speed__sub span{font-size:var(--fs-sm);color:var(--c-text-tertiary);margin-top:var(--sp-1)}.hp-speed__shortcuts{display:flex;flex-direction:column}.hp-speed__shortcuts h3{font-size:clamp(22px,2.5vw,30px);font-weight:800;color:var(--c-heading);margin:0 0 var(--sp-5)}.hp-speed__durations{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3)}.hp-speed__dur{display:flex;flex-direction:column;align-items:center;padding:var(--sp-4) var(--sp-3);background:var(--c-surface);border:1px solid var(--c-border);border-radius:10px;text-decoration:none;transition:box-shadow var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.hp-speed__dur:hover{box-shadow:var(--shadow-sm);border-color:var(--c-accent)}.hp-speed__dur-time{font-size:24px;font-weight:800;color:var(--c-heading);line-height:1}.hp-speed__dur-unit{font-size:var(--fs-xs);color:var(--c-text-tertiary);margin-top:var(--sp-1)}.hp-numbers{background:var(--hp-mint);padding:72px 0}.hp-numbers__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-6)}.hp-numbers__panel{background:var(--c-surface);border:1px solid var(--c-border);border-radius:14px;padding:var(--sp-6)}.hp-numbers__panel h3{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--c-heading);margin:0 0 var(--sp-1)}.hp-numbers__sub{font-size:var(--fs-sm);color:var(--c-text-secondary);line-height:1.5;margin:0 0 var(--sp-5)}.hp-numbers__row{display:flex;gap:5px;margin-bottom:var(--sp-5);justify-content:center}.hp-numbers__pad{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:var(--sp-5);max-width:200px;margin-inline:auto}.hp-numbers__key{display:flex;align-items:center;justify-content:center;min-width:42px;height:46px;border-radius:7px;background:var(--c-surface-muted);border:1px solid var(--c-border);font-size:15px;font-weight:var(--fw-semibold);color:var(--c-text-secondary);font-family:var(--font-mono);transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.hp-numbers__key--wide{grid-column:span 2}.hp-numbers__bottom{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}.hp-numbers__metric{font-size:var(--fs-sm);color:var(--c-text-secondary)}.hp-numbers__metric-val{font-weight:var(--fw-bold);color:var(--c-accent)}.hp-numbers__link{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--c-accent);text-decoration:none;transition:color var(--t-fast) var(--ease)}.hp-numbers__link:hover{color:var(--c-accent-strong)}.hp-games{background:var(--c-surface);padding:72px 0}.hp-games__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-6)}.hp-game-card{border-radius:14px;overflow:hidden;border:1px solid var(--c-border);background:var(--c-surface);transition:box-shadow var(--t-base) var(--ease),transform var(--t-base) var(--ease);text-decoration:none;color:inherit;display:flex;flex-direction:column}.hp-game-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.hp-game-card__vis{height:120px;background:var(--c-surface-muted);display:flex;align-items:center;justify-content:center;overflow:hidden}.hp-game-card__vis--sprint{background:var(--c-accent-soft)}.hp-game-card__vis--accuracy{background:var(--c-error-soft)}.hp-game-card__vis--keydrop{background:var(--hp-lavender)}.hp-game-card__words{display:flex;gap:var(--sp-3);font-family:var(--font-mono);font-size:16px;font-weight:600;color:var(--c-text)}.hp-game-card__word{opacity:.4}.hp-game-card__word--1{opacity:1;color:var(--c-accent)}.hp-game-card__word--2{opacity:.7}.hp-game-card__accuracy-text{font-family:var(--font-mono);font-size:16px;color:var(--c-text)}.hp-game-card__err{color:var(--c-error);text-decoration:underline wavy;text-decoration-thickness:2px}.hp-game-card__dropping{position:relative;width:100%;height:100%}.hp-game-card__drop-letter{position:absolute;left:var(--x, 50%);top:0;font-family:var(--font-mono);font-size:20px;font-weight:700;color:var(--c-accent);animation:hp-drop 1.5s ease-in infinite;animation-delay:var(--delay, 0s)}@keyframes hp-drop{0%{transform:translateY(0);opacity:1}to{transform:translateY(90px);opacity:.3}}.hp-game-card__info{padding:var(--sp-5);flex:1}.hp-game-card__info h3{font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--c-heading);margin:0 0 var(--sp-1)}.hp-game-card__info p{font-size:var(--fs-sm);color:var(--c-text-secondary);line-height:1.5;margin:0}.hp-progress{background:var(--c-surface-sunken);padding:72px 0}.hp-progress__label{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.08em;text-align:center;margin-bottom:var(--sp-5)}.hp-progress__grid{display:grid;grid-template-columns:2fr 1fr;gap:var(--sp-5)}.hp-progress__chart{background:var(--c-surface);border:1px solid var(--c-border);border-radius:12px;padding:var(--sp-5)}.hp-progress__chart-hd{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--c-heading);margin-bottom:var(--sp-4)}.hp-progress__bars{display:flex;align-items:flex-end;gap:6px;height:160px}.hp-progress__bar{flex:1;height:var(--h, 50%);display:flex;align-items:flex-end}.hp-progress__bar>span{display:block;width:100%;height:100%;background:var(--c-accent);border-radius:3px 3px 0 0;opacity:.7;transition:opacity var(--t-fast) var(--ease)}.hp-progress__bar:hover>span{opacity:1}.hp-progress__chart-labels{display:flex;justify-content:space-between;font-size:var(--fs-xs);color:var(--c-text-tertiary);margin-top:var(--sp-2)}.hp-progress__sidebar{display:flex;flex-direction:column;gap:var(--sp-5)}.hp-progress__panel{background:var(--c-surface);border:1px solid var(--c-border);border-radius:12px;padding:var(--sp-4)}.hp-progress__panel-hd{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--c-heading);margin-bottom:var(--sp-3)}.hp-progress__weak{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-2)}.hp-progress__weak:last-child{margin-bottom:0}.hp-progress__weak-key{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--c-text);width:20px;text-align:center}.hp-progress__weak-bar{flex:1;height:6px;background:var(--c-surface-muted);border-radius:3px;overflow:hidden}.hp-progress__weak-bar>span{display:block;height:100%;background:var(--c-accent);border-radius:3px}.hp-progress__weak-pct{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--c-text-tertiary);width:36px;text-align:right}.hp-progress__session{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;font-size:var(--fs-sm);color:var(--c-text-secondary);border-bottom:1px solid var(--c-border)}.hp-progress__session:last-child{border-bottom:none}.hp-progress__session-wpm{font-weight:var(--fw-semibold);color:var(--c-heading);margin-left:auto}.hp-content{background:var(--c-surface);padding:72px 0}.hp-content__grid{max-width:760px;margin:0 auto}.hp-content__main h2{font-size:clamp(24px,2.5vw,32px);font-weight:800;color:var(--c-heading);margin:0 0 var(--sp-5)}.hp-content__main p{font-size:var(--fs-base);line-height:1.75;color:var(--c-text-secondary);margin:0 0 var(--sp-4)}.hp-content__main a{color:var(--c-accent);text-decoration:underline;text-underline-offset:2px}.hp-content__main a:hover{color:var(--c-accent-strong)}.hp-resources{background:var(--c-surface-muted);padding:72px 0}.hp-resources__grid{display:grid;grid-template-columns:1.2fr 1fr;gap:var(--sp-6);align-items:start}.hp-resource{display:flex;flex-direction:column;background:var(--c-surface);border:1px solid var(--c-border);border-radius:12px;padding:var(--sp-6);text-decoration:none;color:inherit;transition:box-shadow var(--t-base) var(--ease),transform var(--t-base) var(--ease)}.hp-resource:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.hp-resource--featured{padding:var(--sp-7)}.hp-resource__icon{width:48px;height:48px;margin-bottom:var(--sp-4)}.hp-resource__icon svg{width:100%;height:100%;display:block}.hp-resource h3{font-size:var(--fs-xl);font-weight:var(--fw-bold);color:var(--c-heading);margin:0 0 var(--sp-2)}.hp-resource p{font-size:var(--fs-base);color:var(--c-text-secondary);line-height:1.6;margin:0 0 var(--sp-4)}.hp-resource__read{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--c-accent)}.hp-resources__small{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}.hp-resource-sm{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--c-surface);border:1px solid var(--c-border);border-radius:8px;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--c-heading);text-decoration:none;transition:box-shadow var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.hp-resource-sm:hover{box-shadow:var(--shadow-xs);border-color:var(--c-accent);color:var(--c-accent)}.hp-resource-sm__icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;background:var(--c-accent-soft);color:var(--c-accent);flex-shrink:0}.hp-resource-sm__icon svg{width:14px;height:14px}.hp-faq{background:var(--c-surface-muted);padding:72px 0}.hp-faq__list{max-width:900px;margin:0 auto}.hp-faq__item{background:var(--c-surface);border:1px solid var(--c-border);border-radius:10px;margin-bottom:var(--sp-3);overflow:hidden;transition:box-shadow var(--t-fast) var(--ease)}.hp-faq__item:hover{box-shadow:var(--shadow-xs)}.hp-faq__q{width:100%;display:flex;align-items:center;justify-content:space-between;padding:var(--sp-5) var(--sp-6);background:none;border:none;cursor:pointer;text-align:left;font-size:16px;font-weight:var(--fw-semibold);color:var(--c-heading);font-family:var(--font-sans);gap:var(--sp-4)}.hp-faq__chevron{flex:0 0 20px;width:20px;height:20px;position:relative}.hp-faq__chevron:before,.hp-faq__chevron:after{content:"";position:absolute;top:50%;width:8px;height:2px;background:var(--c-text-tertiary);border-radius:1px;transition:transform var(--t-base) var(--ease)}.hp-faq__chevron:before{right:50%;transform:translateY(-50%) rotate(45deg);transform-origin:right center}.hp-faq__chevron:after{left:50%;transform:translateY(-50%) rotate(-45deg);transform-origin:left center}.hp-faq__item.is-open .hp-faq__chevron:before{transform:translateY(-50%) rotate(-45deg)}.hp-faq__item.is-open .hp-faq__chevron:after{transform:translateY(-50%) rotate(45deg)}.hp-faq__a{overflow:hidden;max-height:0;transition:max-height var(--t-slow) var(--ease)}.hp-faq__a p{padding:0 var(--sp-6) var(--sp-5);font-size:var(--fs-base);line-height:1.65;color:var(--c-text-secondary);margin:0}.hp-faq__item.is-open .hp-faq__a{max-height:300px}.hp-footer{background:#0f172a;color:#cbd5e1;padding:56px 0 28px}.hp-footer__grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr 1fr;gap:var(--sp-8);margin-bottom:var(--sp-8)}.hp-footer__brand{display:flex;flex-direction:column}.hp-footer__logo{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:#fff;margin-bottom:var(--sp-3)}.hp-footer__brand p{font-size:var(--fs-sm);line-height:1.6;color:#94a3b8;max-width:260px;margin:0}.hp-footer__col{display:flex;flex-direction:column}.hp-footer__col-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:#fff;text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--sp-4)}.hp-footer__col a{display:block;font-size:var(--fs-sm);color:#94a3b8;text-decoration:none;padding:3px 0;transition:color var(--t-fast) var(--ease)}.hp-footer__col a:hover{color:#fff}.hp-footer__copy{border-top:1px solid #1E293B;padding-top:var(--sp-5);text-align:center;font-size:var(--fs-xs);color:#64748b}@media(max-width:960px){.hp-hero__grid{grid-template-columns:1fr;gap:var(--sp-8);text-align:center}.hp-hero__sub{margin-inline:auto}.hp-hero__actions,.hp-hero__trust{justify-content:center}.hp-goals__grid{grid-template-columns:1fr}.hp-durations__grid{grid-template-columns:repeat(2,1fr)}.hp-benchmark__grid{grid-template-columns:1fr;gap:var(--sp-8)}.hp-tutor__grid,.hp-practice__grid{grid-template-columns:1fr}.hp-speed__grid{grid-template-columns:1fr;text-align:center}.hp-speed__shortcuts{align-items:center}.hp-numbers__grid,.hp-games__grid,.hp-progress__grid,.hp-resources__grid,.hp-resources__small{grid-template-columns:1fr}.hp-footer__grid{grid-template-columns:1fr 1fr}}@media(max-width:600px){.hc{width:calc(100% - 32px)}.hp-hero{padding:48px 0 40px}.hp-hero__actions{flex-direction:column;width:100%}.btn-hero,.btn-hero-outline{width:100%;justify-content:center}.hp-demo__body{padding:var(--sp-4);font-size:15px}.hp-kb{padding:8px;transform:scale(.85);transform-origin:top center}.hp-tutor__keyboard{padding:var(--sp-3);overflow-x:auto}.hp-tutor__key{width:34px;height:36px;font-size:11px;border-radius:5px}.hp-tutor__key--shift{width:56px;font-size:10px}.hp-tutor__key--space{max-width:180px}.hp-numbers__row{gap:4px;overflow-x:auto;flex-wrap:nowrap;padding-bottom:var(--sp-2)}.hp-numbers__key{min-width:38px;height:42px;font-size:14px}.hp-goals,.hp-tutor,.hp-practice,.hp-speed,.hp-numbers,.hp-games,.hp-progress,.hp-content,.hp-resources,.hp-durations,.hp-benchmark,.hp-faq{padding:48px 0}.hp-durations__grid{grid-template-columns:1fr}.hp-benchmark__table-wrap{padding:var(--sp-4)}.hp-wpm-table th,.hp-wpm-table td{padding:var(--sp-2);font-size:14px}.hp-section-hd{margin-bottom:var(--sp-8)}.hp-practice__typing{font-size:16px;gap:var(--sp-3)}.hp-speed__durations{grid-template-columns:repeat(2,1fr)}.hp-progress__bars{height:120px}.hp-footer__grid{grid-template-columns:1fr;gap:var(--sp-6)}}@media(prefers-reduced-motion:reduce){.hp-kb__key--expected{transform:none}.hp-demo__prompt:after{animation:none}.hp-goal__caret,.hp-game-card__drop-letter{animation:none}.hp-goal,.hp-game-card,.hp-resource,.hp-resource-sm,.hp-speed__dur{transition:none}.hp-goal:hover,.hp-game-card:hover,.hp-resource:hover,.hp-resource-sm:hover{transform:none}.hp-faq__a{transition:none}}:root[data-theme=dark],:root.dark{--hp-bg: #121418;--hp-hero-from: #171C2B;--hp-hero-to: #121418;--hp-lavender: #1E1B33;--hp-mint: #12261F;--hp-sky: #101E2C}.landing-hero{margin-bottom:var(--sp-6)}.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)}
