/* Source: /css/fonts-v17.10.265.css */
/* Self-hosted Google Fonts, SIL OFL. See /fonts/v17.10.265/. */
/* cyrillic-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: optional;
  src: url(/fonts/v17.10.265/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: optional;
  src: url(/fonts/v17.10.265/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: optional;
  src: url(/fonts/v17.10.265/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: optional;
  src: url(/fonts/v17.10.265/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: optional;
  src: url(/fonts/v17.10.265/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');
  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;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: optional;
  src: url(/fonts/v17.10.265/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');
  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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: optional;
  src: url(/fonts/v17.10.265/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');
  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;
}
/* cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 100 800;
  font-display: optional;
  src: url(/fonts/v17.10.265/tDbV2o-flEEny0FZhsfKu5WU4xD2OwG_TA.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 100 800;
  font-display: optional;
  src: url(/fonts/v17.10.265/tDbV2o-flEEny0FZhsfKu5WU4xD_OwG_TA.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 100 800;
  font-display: optional;
  src: url(/fonts/v17.10.265/tDbV2o-flEEny0FZhsfKu5WU4xD4OwG_TA.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 100 800;
  font-display: optional;
  src: url(/fonts/v17.10.265/tDbV2o-flEEny0FZhsfKu5WU4xD0OwG_TA.woff2) format('woff2');
  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;
}
/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 100 800;
  font-display: optional;
  src: url(/fonts/v17.10.265/tDbV2o-flEEny0FZhsfKu5WU4xD1OwG_TA.woff2) format('woff2');
  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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 100 800;
  font-display: optional;
  src: url(/fonts/v17.10.265/tDbV2o-flEEny0FZhsfKu5WU4xD7OwE.woff2) format('woff2');
  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;
}
/* devanagari */
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 600;
  font-display: optional;
  src: url(/fonts/v17.10.265/pxiByp8kv8JHgFVrLEj6Z11lFc-K.woff2) format('woff2');
  unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;
}
/* latin-ext */
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 600;
  font-display: optional;
  src: url(/fonts/v17.10.265/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2) format('woff2');
  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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 600;
  font-display: optional;
  src: url(/fonts/v17.10.265/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2) format('woff2');
  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;
}
/* devanagari */
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 700;
  font-display: optional;
  src: url(/fonts/v17.10.265/pxiByp8kv8JHgFVrLCz7Z11lFc-K.woff2) format('woff2');
  unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;
}
/* latin-ext */
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 700;
  font-display: optional;
  src: url(/fonts/v17.10.265/pxiByp8kv8JHgFVrLCz7Z1JlFc-K.woff2) format('woff2');
  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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 700;
  font-display: optional;
  src: url(/fonts/v17.10.265/pxiByp8kv8JHgFVrLCz7Z1xlFQ.woff2) format('woff2');
  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;
}
/* devanagari */
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 800;
  font-display: optional;
  src: url(/fonts/v17.10.265/pxiByp8kv8JHgFVrLDD4Z11lFc-K.woff2) format('woff2');
  unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;
}
/* latin-ext */
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 800;
  font-display: optional;
  src: url(/fonts/v17.10.265/pxiByp8kv8JHgFVrLDD4Z1JlFc-K.woff2) format('woff2');
  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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 800;
  font-display: optional;
  src: url(/fonts/v17.10.265/pxiByp8kv8JHgFVrLDD4Z1xlFQ.woff2) format('woff2');
  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;
}

/* Source: /css/reset.css */
/* ==========================================================
   TypingTutor.Online
   reset.css
   Modern CSS Reset
   Version: 1.0
========================================================== */

/* Box Sizing */

*,
*::before,
*::after {
    box-sizing: border-box;
}

/* Remove Default Margin */

* {
    margin: 0;
}

/* Improve Text Rendering */

html {
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
}

/* Base Body */

body {
    min-height: 100vh;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Images */

img,
picture,
svg,
canvas,
video {
    display: block;
    max-width: 100%;
}

/* Forms */

input,
button,
textarea,
select {
    font: inherit;
    color: inherit;
}

/* Buttons */

button {
    cursor: pointer;
    background: none;
    border: none;
}

/* Links */

a {
    color: inherit;
    text-decoration: none;
}

/* Lists */

ul,
ol {
    list-style: none;
}

/* Tables */

table {
    border-collapse: collapse;
    border-spacing: 0;
}

/* Text Overflow */

p,
h1,
h2,
h3,
h4,
h5,
h6 {
    overflow-wrap: break-word;
}

/* Textarea */

textarea {
    resize: vertical;
}

/* Hidden */

[hidden] {
    display: none !important;
}

/* Disabled */

button:disabled,
input:disabled {
    cursor: not-allowed;
}

/* Focus */

:focus {
    outline: none;
}

:focus-visible {

    outline: 3px solid #2563EB;
    outline-offset: 3px;

}

/* Selection */

::selection {

    background: rgba(37,99,235,.18);

}

/* Scrollbar (Chromium) */

::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

::-webkit-scrollbar-track {

    background: transparent;

}

::-webkit-scrollbar-thumb {

    background: #CBD5E1;
    border-radius: 999px;

}

::-webkit-scrollbar-thumb:hover {

    background: #94A3B8;

}
/* Source: /css/variables.css */
/* ==========================================================
   TypingTutor.Online
   Theme Variables
   File: css/variables.css
   Version: 4.0
========================================================== */

:root {
    color-scheme: light;

    /* Brand */
    --primary: #2563eb;
    --primary-hover: #1d4ed8;
    --primary-light: #dbeafe;

    --success: #22c55e;
    --warning: #f59e0b;
    --danger: #ef4444;
    --info: #06b6d4;

    /* Surfaces */
    --background: #f8fafc;
    --surface: #ffffff;
    --surface-alt: #f1f5f9;
    --surface-soft: #f8fafc;
    --surface-elevated: #ffffff;

    /* Borders and text */
    --border: #cbd5e1;
    --border-soft: #e5eaf1;
    --text: #0f172a;
    --text-light: #475569;
    --text-muted: #94a3b8;

    /* Keyboard */
    --key-bg: #ffffff;
    --key-border: #cbd5e1;
    --key-text: #111827;
    --key-current: #14b8a6;
    --key-next: #8b5cf6;
    --key-pressed: #2563eb;
    --key-correct: #22c55e;
    --key-wrong: #ef4444;
    --key-disabled: #cbd5e1;

    /* Fingers */
    --finger-thumb: #60a5fa;
    --finger-left-index: #4ade80;
    --finger-left-middle: #facc15;
    --finger-left-ring: #fb923c;
    --finger-left-little: #ec4899;
    --finger-right-index: #4ade80;
    --finger-right-middle: #facc15;
    --finger-right-ring: #fb923c;
    --finger-right-little: #ec4899;

    /* Typography */
    --font-heading: "Poppins", sans-serif;
    --font-body: "Inter", sans-serif;
    --font-mono: "JetBrains Mono", monospace;

    --font-xs: .75rem;
    --font-sm: .875rem;
    --font-md: 1rem;
    --font-lg: 1.125rem;
    --font-xl: 1.5rem;
    --font-2xl: 2rem;
    --font-3xl: 3rem;

    --weight-light: 300;
    --weight-normal: 400;
    --weight-medium: 500;
    --weight-semibold: 600;
    --weight-bold: 700;

    /* Spacing */
    --space-1: 4px;
    --space-2: 8px;
    --space-3: 12px;
    --space-4: 16px;
    --space-5: 20px;
    --space-6: 24px;
    --space-8: 32px;
    --space-10: 40px;
    --space-12: 48px;
    --space-16: 64px;

    /* Radius */
    --radius-sm: 6px;
    --radius-md: 10px;
    --radius-lg: 16px;
    --radius-xl: 22px;
    --radius-round: 999px;

    /* Shadows */
    --shadow-xs: 0 1px 2px rgba(15, 23, 42, .05);
    --shadow-sm: 0 2px 6px rgba(15, 23, 42, .08);
    --shadow-md: 0 8px 25px rgba(15, 23, 42, .08);
    --shadow-lg: 0 12px 35px rgba(15, 23, 42, .12);
    --shadow-xl: 0 18px 50px rgba(15, 23, 42, .18);
    --shadow-key: 0 3px 8px rgba(15, 23, 42, .10);
    --shadow-key-pressed: inset 0 3px 8px rgba(15, 23, 42, .22);

    /* Transitions */
    --transition-fast: 120ms;
    --transition-normal: 180ms;
    --transition-medium: 250ms;
    --transition-slow: 400ms;
    --ease: cubic-bezier(.2, .8, .2, 1);

    /* Component sizes */
    --hand-scale: 1;
    --finger-press-distance: 6px;
    --finger-glow-size: 18px;
    --finger-animation-speed: 180ms;
    --key-width: 60px;
    --key-height: 60px;
    --key-gap: 6px;
    --header-height: 72px;
    --lesson-height: 120px;
    --hands-height: 260px;
    --keyboard-height: 320px;
    --footer-height: 60px;

    /* Layers */
    --z-dropdown: 100;
    --z-sticky: 200;
    --z-overlay: 300;
    --z-modal: 400;
    --z-toast: 500;

    /* Breakpoints (documentation values) */
    --mobile: 576px;
    --tablet: 768px;
    --laptop: 1024px;
    --desktop: 1280px;
    --wide: 1600px;
}

/* Explicit dark mode */
html[data-theme="dark"] {
    color-scheme: dark;

    --primary: #4f8cff;
    --primary-hover: #75a5ff;
    --primary-light: #172a4d;

    --background: #0b1120;
    --surface: #111827;
    --surface-alt: #182235;
    --surface-soft: #151f31;
    --surface-elevated: #1a2538;

    --border: #334155;
    --border-soft: #263449;

    --text: #f1f5f9;
    --text-light: #cbd5e1;
    --text-muted: #94a3b8;

    --key-bg: #172033;
    --key-border: #3a4960;
    --key-text: #f8fafc;
    --key-disabled: #475569;

    --shadow-xs: 0 1px 2px rgba(0, 0, 0, .18);
    --shadow-sm: 0 2px 8px rgba(0, 0, 0, .24);
    --shadow-md: 0 10px 28px rgba(0, 0, 0, .28);
    --shadow-lg: 0 16px 38px rgba(0, 0, 0, .34);
    --shadow-xl: 0 22px 55px rgba(0, 0, 0, .42);
}

/* System mode follows the operating system. */
@media (prefers-color-scheme: dark) {
    html[data-theme="system"] {
        color-scheme: dark;

        --primary: #4f8cff;
        --primary-hover: #75a5ff;
        --primary-light: #172a4d;

        --background: #0b1120;
        --surface: #111827;
        --surface-alt: #182235;
        --surface-soft: #151f31;
        --surface-elevated: #1a2538;

        --border: #334155;
        --border-soft: #263449;

        --text: #f1f5f9;
        --text-light: #cbd5e1;
        --text-muted: #94a3b8;

        --key-bg: #172033;
        --key-border: #3a4960;
        --key-text: #f8fafc;
        --key-disabled: #475569;

        --shadow-xs: 0 1px 2px rgba(0, 0, 0, .18);
        --shadow-sm: 0 2px 8px rgba(0, 0, 0, .24);
        --shadow-md: 0 10px 28px rgba(0, 0, 0, .28);
        --shadow-lg: 0 16px 38px rgba(0, 0, 0, .34);
        --shadow-xl: 0 22px 55px rgba(0, 0, 0, .42);
    }
}

/* Source: /css/typography.css */
/* ==========================================================
   TypingTutor.Online
   typography.css
   Version: 1.0
========================================================== */


/* ==========================================================
   BODY
========================================================== */

body{

    font-family:var(--font-body);

    font-size:var(--font-md);

    font-weight:var(--weight-normal);

    color:var(--text);

    background:var(--background);

    line-height:1.6;

}



/* ==========================================================
   HEADINGS
========================================================== */

h1,h2,h3,h4,h5,h6{

    font-family:var(--font-heading);

    font-weight:var(--weight-bold);

    line-height:1.2;

    color:var(--text);

}

h1{

    font-size:2rem;

}

h2{

    font-size:1.75rem;

}

h3{

    font-size:1.5rem;

}

h4{

    font-size:1.25rem;

}

h5{

    font-size:1.125rem;

}

h6{

    font-size:1rem;

}



/* ==========================================================
   HEADER
========================================================== */

.logo h1{

    font-size:1.8rem;

    letter-spacing:-0.5px;

}

.tagline{

    display:block;

    margin-top:4px;

    color:var(--text-light);

    font-size:.9rem;

}



/* ==========================================================
   LESSON
========================================================== */

#lessonTitle{

    font-size:1.15rem;

    font-weight:600;

    color:var(--primary);

    margin-bottom:10px;

}

#lessonText{

    font-family:var(--font-mono);

    font-size:2.25rem;

    font-weight:600;

    line-height:1.8;

    text-align:center;

    letter-spacing:1px;

}



/* ==========================================================
   STATISTICS
========================================================== */

.stat{

    text-align:center;

}

.stat .label{

    display:block;

    font-size:.85rem;

    text-transform:uppercase;

    letter-spacing:1px;

    color:var(--text-light);

}

.stat span:last-child{

    display:block;

    margin-top:6px;

    font-size:2rem;

    font-weight:700;

}



/* ==========================================================
   BUTTON
========================================================== */

button{

    font-family:var(--font-body);

    font-size:.95rem;

    font-weight:600;

}



/* ==========================================================
   CODE
========================================================== */

code,
pre{

    font-family:var(--font-mono);

}



/* ==========================================================
   LINKS
========================================================== */

a{

    transition:color var(--transition-fast);

}

/* Keep the generic link hover intentionally low-specificity.
   Component links styled as buttons (games, tests, lessons, kids, etc.)
   must retain their own foreground color while hovered. */
:where(a:hover){

    color:var(--primary);

}



/* ==========================================================
   FOOTER
========================================================== */

#footer{

    font-size:.9rem;

    color:var(--text-light);

}



/* ==========================================================
   RESPONSIVE
========================================================== */

@media (max-width:1024px){

    #lessonText{

        font-size:2rem;

    }

}


@media (max-width:768px){

    .logo h1{

        font-size:1.5rem;

    }

    #lessonText{

        font-size:1.6rem;

    }

    .stat span:last-child{

        font-size:1.5rem;

    }

}


@media (max-width:576px){

    #lessonText{

        font-size:1.3rem;

        line-height:1.7;

    }

}
/* Source: /css/app.css */
/* ==========================================================
   TypingTutor.Online
   Responsive Header & Footer v5.5
   File: css/app.css
========================================================== */

body {
    background: var(--background);
    color: var(--text);
    overflow-x: hidden;
}

/* Logo */
.logo {
    display: flex;
    align-items: center;

    color: inherit;
    text-decoration: none;
}

.logo-text {
    display: grid;
    gap: 2px;
    min-width: 0;
}

.logo-text strong {
    overflow: hidden;

    color: var(--text);
    font-family: var(--font-heading);
    font-size: clamp(20px, 1.7vw, 30px);
    font-weight: 800;
    line-height: 1.05;

    white-space: nowrap;
    text-overflow: ellipsis;
}

.logo-text small {
    overflow: hidden;

    color: var(--text-light);
    font-size: clamp(10px, .82vw, 13px);
    line-height: 1.2;

    white-space: nowrap;
    text-overflow: ellipsis;
}

.site-logo-picture {
    display: block;
    min-width: 0;
}

.site-logo-image {
    display: block;

    width: min(280px, 100%);
    height: auto;
    max-height: 58px;

    object-fit: contain;
    object-position: left center;
}

/* Theme button */
#themeButton {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;

    min-width: 108px;
    min-height: 44px;
    padding: 9px 14px;

    color: #ffffff;
    background: var(--primary);
    border-radius: var(--radius-md);

    white-space: nowrap;

    transition:
        background var(--transition-fast),
        transform var(--transition-fast);
}

#themeButton:hover {
    background: var(--primary-hover);
    transform: translateY(-1px);
}

#themeButton:active {
    transform: translateY(1px);
}

/* Footer */
.footer-brand {
    color: var(--text-light);
    font-size: 12px;
    font-weight: 600;
}

.footer-links {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 6px 16px;
}

.footer-links a {
    color: var(--text-light);
    font-size: 12px;
    font-weight: 600;
    text-decoration: none;

    transition:
        color var(--transition-fast),
        background-color var(--transition-fast);
}

.footer-links a:hover,
.footer-links a:focus-visible {
    color: var(--primary);
    outline: none;
}

/* Theme menu retained */
.theme-button-arrow {
    font-size: 10px;
    opacity: .8;
}

.theme-menu {
    position: fixed;
    z-index: 10050;

    width: 250px;
    padding: 8px;

    background: var(--surface-elevated);
    border: 1px solid var(--border);
    border-radius: 14px;
    box-shadow: var(--shadow-xl);
}

.theme-menu.hidden {
    display: none;
}

.theme-option {
    display: grid;
    grid-template-columns: 36px 1fr 22px;
    gap: 10px;
    align-items: center;

    width: 100%;
    padding: 10px;

    color: var(--text);
    text-align: left;

    background: transparent;
    border: 1px solid transparent;
    border-radius: 10px;

    cursor: pointer;
}

.theme-option:hover,
.theme-option:focus-visible {
    background: var(--surface-alt);
    border-color: var(--border);
    outline: none;
}

.theme-option-icon {
    display: grid;
    place-items: center;

    width: 34px;
    height: 34px;

    background: var(--surface-alt);
    border-radius: 9px;

    font-size: 18px;
}

.theme-option-copy {
    display: grid;
    gap: 2px;
}

.theme-option-copy strong {
    color: var(--text);
    font-size: 13px;
}

.theme-option-copy small {
    color: var(--text-light);
    font-size: 10px;
}

.theme-option-check {
    color: var(--primary);
    font-weight: 900;
    opacity: 0;
}

.theme-option-selected {
    background: var(--primary-light);
    border-color: var(--border);
}

.theme-option-selected .theme-option-check {
    opacity: 1;
}

.hidden {
    display: none !important;
}

@media (max-width: 1180px) {

    .logo-text strong {
        font-size: 22px;
    }

    .logo-text small {
        font-size: 10px;
    }

}

@media (max-width: 900px) {

    .site-logo-image {
        width: min(220px, 100%);
        max-height: 46px;
    }

    .footer-links {
        justify-content: flex-start;
    }

}

@media (max-width: 560px) {

    .logo-text strong {
        font-size: 18px;
    }

    .logo-text small {
        display: none;
    }

    .site-logo-image {
        width: min(170px, 100%);
        max-height: 36px;
    }

    #themeButton {
        min-width: 90px;
        min-height: 40px;
        padding-inline: 11px;
    }

    .footer-links {
        gap: 8px 14px;
    }

}

/* Source: /css/dark-mode-polish.css */
/* ==========================================================
   TypingTutor.Online
   Dark Mode Polish v11.1
========================================================== */

/* Dark logo switching */
.site-logo-picture {
    position: relative;
    display: inline-grid;
    align-items: center;
}

.site-logo-picture > * {
    grid-area: 1 / 1;
}

.site-logo-dark {
    display: none;
}

html[data-theme="dark"] .site-logo-light {
    display: none;
}

html[data-theme="dark"] .site-logo-dark {
    display: block;
}

@media (prefers-color-scheme: dark) {
    html[data-theme="system"] .site-logo-light {
        display: none;
    }

    html[data-theme="system"] .site-logo-dark {
        display: block;
    }
}

/* Main dark surfaces */
html[data-theme="dark"] {
    --background: #090f1d;
    --surface: #111a2b;
    --surface-alt: #172236;
    --surface-soft: #0e1727;
    --surface-elevated: #1a273c;
    --border: #3b4b63;
    --border-soft: #26364e;
    --text: #f8fafc;
    --text-light: #cbd5e1;
    --text-muted: #8fa0b8;
    --key-bg: #172235;
    --key-border: #40506a;
    --key-text: #f8fafc;
}

/* Lesson text must belong to dark mode too */
html[data-theme="dark"] #lessonText,
html[data-theme="dark"] .typing-text-viewport {
    color: var(--text);
    background: #111827 !important;
    border-color: var(--border);
}

html[data-theme="dark"] #lessonText .future-character {
    color: #c4cede;
}

html[data-theme="dark"] #lessonText .typed-character {
    color: #7f8da3;
}

html[data-theme="dark"] #lessonText .current-character {
    color: #fff;
}

/* Remove washed-out white cards */
html[data-theme="dark"] .statistics-panel .stat,
html[data-theme="dark"] .stat,
html[data-theme="dark"] .keyboard-guidance-card,
html[data-theme="dark"] .hands-guidance-card,
html[data-theme="dark"] #keyboardContainer,
html[data-theme="dark"] #handsContainer {
    color: var(--text);
    background: var(--surface) !important;
    border-color: var(--border);
}

/* Keyboard */
html[data-theme="dark"] .key {
    color: var(--key-text);
    background:
        linear-gradient(
            180deg,
            #1c2940,
            #151f32
        ) !important;
    border-color: var(--key-border);
    box-shadow:
        0 2px 0 #08101d,
        0 5px 10px rgba(0, 0, 0, .28);
}

html[data-theme="dark"] .key-secondary {
    color: #9fb0c8;
}

html[data-theme="dark"] .key.key-active,
html[data-theme="dark"] .key.active,
html[data-theme="dark"] .key.pressed {
    color: #fff;
    background: var(--primary) !important;
    border-color: #80a9ff;
}

/* Hands panel: remove bright gray area */
html[data-theme="dark"] #handsContainer,
html[data-theme="dark"] .hands-guidance-card {
    background:
        radial-gradient(
            circle at center,
            #24334a 0,
            #172236 54%,
            #111a2b 100%
        ) !important;
}

html[data-theme="dark"] .hands-guidance-card p,
html[data-theme="dark"] .finger-position-label,
html[data-theme="dark"] .home-row-guide {
    color: var(--text-light);
}

/* Improve weak header text visible in screenshot */
html[data-theme="dark"] .stage-label,
html[data-theme="dark"] .stage-name,
html[data-theme="dark"] .lesson-stage,
html[data-theme="dark"] .practice-stage {
    color: #e6edf7 !important;
}

html[data-theme="dark"] .lesson-stage strong,
html[data-theme="dark"] .practice-stage strong {
    color: #fff !important;
}

/* Footer and resource cards */
html[data-theme="dark"] .resource-card,
html[data-theme="dark"] .more-practice-dropdown,
html[data-theme="dark"] .course-progress-card,
html[data-theme="dark"] .achievement-card {
    color: var(--text);
    background: var(--surface);
    border-color: var(--border-soft);
}

html[data-theme="dark"] .resource-card small,
html[data-theme="dark"] .resource-section-heading p {
    color: var(--text-light);
}

/* System-dark mirrors explicit dark mode */
@media (prefers-color-scheme: dark) {
    html[data-theme="system"] #lessonText,
    html[data-theme="system"] .typing-text-viewport {
        color: var(--text);
        background: #111827 !important;
    }

    html[data-theme="system"] .statistics-panel .stat,
    html[data-theme="system"] .stat,
    html[data-theme="system"] #keyboardContainer,
    html[data-theme="system"] #handsContainer {
        background: var(--surface) !important;
        border-color: var(--border);
    }

    html[data-theme="system"] .key {
        color: var(--key-text);
        background: linear-gradient(180deg, #1c2940, #151f32) !important;
        border-color: var(--key-border);
    }
}


/* ==========================================================
   DARK KEYBOARD LABEL VISIBILITY v11.2
========================================================== */

/*
 * The keyboard key labels became too dark because older key text
 * rules were overriding the new dark-mode palette.
 */
html[data-theme="dark"] .keyboard,
html[data-theme="dark"] .keyboard-container,
html[data-theme="dark"] #keyboardContainer {
    color: #f8fafc !important;
}

html[data-theme="dark"] .key,
html[data-theme="dark"] .keyboard-key,
html[data-theme="dark"] [data-key] {
    color: #f8fafc !important;
    background:
        linear-gradient(
            180deg,
            #24334b 0%,
            #1a263a 100%
        ) !important;
    border-color: #52627a !important;
    text-shadow: none !important;
}

html[data-theme="dark"] .key *,
html[data-theme="dark"] .keyboard-key *,
html[data-theme="dark"] [data-key] * {
    color: inherit !important;
}

html[data-theme="dark"] .key-secondary,
html[data-theme="dark"] .key .secondary,
html[data-theme="dark"] .key .symbol,
html[data-theme="dark"] .keyboard-key .secondary,
html[data-theme="dark"] .keyboard-key .symbol {
    color: #cbd5e1 !important;
}

html[data-theme="dark"] .key.key-active,
html[data-theme="dark"] .key.active,
html[data-theme="dark"] .key.pressed,
html[data-theme="dark"] .keyboard-key.key-active,
html[data-theme="dark"] .keyboard-key.active,
html[data-theme="dark"] [data-key].key-active {
    color: #ffffff !important;
    background: #2f6df6 !important;
    border-color: #8fb3ff !important;
    box-shadow:
        0 0 0 3px rgba(47, 109, 246, .22),
        0 2px 0 #153a95 !important;
}

html[data-theme="dark"] .key.key-active *,
html[data-theme="dark"] .key.active *,
html[data-theme="dark"] .key.pressed *,
html[data-theme="dark"] .keyboard-key.key-active *,
html[data-theme="dark"] .keyboard-key.active *,
html[data-theme="dark"] [data-key].key-active * {
    color: #ffffff !important;
}

/* Home-key markers and target-row labels */
html[data-theme="dark"] .home-key-marker,
html[data-theme="dark"] .target-row-guide,
html[data-theme="dark"] .target-row-guide *,
html[data-theme="dark"] #targetRowGuide,
html[data-theme="dark"] #targetRowGuide * {
    color: #dbe7f8 !important;
}

html[data-theme="dark"] .target-row-key {
    color: #dbe7f8 !important;
    background: #1d2a3f !important;
    border-color: #42536d !important;
}

html[data-theme="dark"] .target-row-key.active,
html[data-theme="dark"] .target-row-key.current {
    color: #ffffff !important;
    background: #2f6df6 !important;
    border-color: #8fb3ff !important;
}

/* System-dark support */
@media (prefers-color-scheme: dark) {
    html[data-theme="system"] .key,
    html[data-theme="system"] .keyboard-key,
    html[data-theme="system"] [data-key] {
        color: #f8fafc !important;
        background:
            linear-gradient(
                180deg,
                #24334b 0%,
                #1a263a 100%
            ) !important;
        border-color: #52627a !important;
    }

    html[data-theme="system"] .key *,
    html[data-theme="system"] .keyboard-key *,
    html[data-theme="system"] [data-key] * {
        color: inherit !important;
    }
}


/* ==========================================================
   DARK LESSON TEXT CONTRAST + PAUSE MESSAGE READABILITY v17.2.8
========================================================== */

html[data-theme="dark"] #lessonText .future-character {
    color: #e2e8f0;
}

html[data-theme="dark"] #lessonText .typed-character {
    color: #66758d;
}

html[data-theme="dark"] #lessonText .wrong-character {
    color: #ff8aa3;
    background: rgba(244, 63, 94, .18);
    box-shadow: inset 0 -3px 0 #fb7185;
}

html[data-theme="dark"] #lessonText .current-character {
    color: #ffffff;
    background: #2f7fff !important;
    box-shadow: 0 0 0 .09em rgba(96, 165, 250, .42) !important, 0 0 22px rgba(47, 127, 255, .34);
}

@media (prefers-color-scheme: dark) {
    html[data-theme="system"] #lessonText .future-character {
        color: #e2e8f0;
    }

    html[data-theme="system"] #lessonText .typed-character {
        color: #66758d;
    }

    html[data-theme="system"] #lessonText .wrong-character {
        color: #ff8aa3;
        background: rgba(244, 63, 94, .18);
        box-shadow: inset 0 -3px 0 #fb7185;
    }

    html[data-theme="system"] #lessonText .current-character {
        color: #ffffff;
        background: #2f7fff !important;
        box-shadow: 0 0 0 .09em rgba(96, 165, 250, .42) !important, 0 0 22px rgba(47, 127, 255, .34);
    }
}

/* Source: /css/unified-site-header-v17.4.6.css */
/* ==========================================================
   TypingTutor.Online
   Unified Main + Tests Header v17.4.6
========================================================== */

/* Both the tutor and standalone test pages now use the same shell. */
#header,
.test-site-header {
    box-sizing: border-box;
    position: relative;
    z-index: 100;
    width: 100%;
    min-height: 78px;
    padding-top: max(9px, env(safe-area-inset-top));
    padding-bottom: 9px;
    background: var(--surface, #ffffff);
    border-bottom: 1px solid var(--border, #dbe4f0);
    box-shadow: var(--shadow-sm, 0 1px 3px rgba(15, 23, 42, .08));
}

#header .header-inner,
.test-header-inner {
    box-sizing: border-box;
    width: min(1480px, calc(100% - 34px));
    min-height: 58px;
    margin-inline: auto;
    padding: 0;
    display: grid;
    grid-template-columns: minmax(235px, 300px) minmax(0, 1fr) auto;
    gap: clamp(12px, 2vw, 28px);
    align-items: center;
}

/* Identical logo footprint on every page. */
#header .logo,
.test-logo {
    min-width: 0;
    display: flex;
    align-items: center;
    justify-self: start;
    color: inherit;
    text-decoration: none;
}

#header .site-logo-picture,
.test-logo-stack {
    position: relative;
    display: block;
    width: min(280px, 100%);
    min-width: 0;
}

#header .site-logo-image,
.test-logo img {
    display: block;
    width: min(280px, 100%);
    height: auto;
    max-height: 58px;
    object-fit: contain;
    object-position: left center;
}

/* Identical navigation positioning. */
#header .primary-mode-navigation,
.test-nav {
    min-width: 0;
    width: 100%;
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(4px, 1.1vw, 18px);
    overflow: visible;
}

#header #modeSwitcher,
#header .mode-switcher-inner,
#header .mode-navigation {
    min-width: 0;
    width: auto;
}

#header .mode-navigation {
    gap: clamp(4px, 1.1vw, 18px);
}

/* Shared button geometry and typography. */
#header .lesson-home-nav-button,
#header .mode-navigation > .mode-button,
#header .mode-more > summary.mode-button,
.test-nav > a,
.test-nav-more > summary {
    box-sizing: border-box;
    min-width: 0;
    min-height: 46px;
    margin: 0;
    padding: 10px clamp(12px, 1.15vw, 17px);
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    gap: 8px;
    color: var(--text, #172235);
    background: transparent;
    border: 1px solid transparent;
    border-radius: 11px;
    font: inherit;
    font-size: clamp(12px, .92vw, 15px);
    font-weight: 750;
    line-height: 1;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
    transition:
        color .16s ease,
        background-color .16s ease,
        border-color .16s ease,
        box-shadow .16s ease,
        transform .16s ease;
}

#header .mode-button-icon,
#header .lesson-home-nav-icon,
.test-nav .mode-button-icon,
.test-nav-more-menu .mode-button-icon {
    display: inline-flex;
    flex: 0 0 20px;
    width: 20px;
    min-width: 20px;
    height: 20px;
    align-items: center;
    justify-content: center;
    font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif;
    font-size: 18px;
    font-weight: 400;
    line-height: 20px;
    text-align: center;
    transform: translateY(-1px);
}

#header .mode-button-text,
#header .lesson-home-nav-label,
.test-nav .mode-button-text {
    display: inline-flex;
    align-items: center;
    line-height: 1;
}

#header #themeButton > span:first-child,
.test-header-inner > #themeButton > span:first-child {
    display: inline-flex;
    flex: 0 0 20px;
    width: 20px;
    height: 20px;
    align-items: center;
    justify-content: center;
    font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif;
    font-size: 18px;
    font-weight: 400;
    line-height: 20px;
}

#header .lesson-home-nav-button:hover,
#header .mode-navigation > .mode-button:hover,
#header .mode-more > summary.mode-button:hover,
.test-nav > a:hover,
.test-nav-more > summary:hover,
.test-nav-more[open] > summary {
    color: var(--primary, #1769ff);
    background: var(--surface-alt, #f2f7ff);
    border-color: #dbe8fa;
}

/* Active button has the same appearance regardless of the current page. */
#header .lesson-home-nav-button-active,
#header .mode-navigation > .mode-button-active,
.test-nav > a[aria-current="page"] {
    color: #ffffff !important;
    background: linear-gradient(135deg, #246df0, #285ee5) !important;
    border-color: rgba(31, 92, 222, .55) !important;
    box-shadow: 0 10px 23px rgba(47, 103, 246, .24) !important;
}

#header .lesson-home-nav-button-active:hover,
#header .mode-navigation > .mode-button-active:hover,
.test-nav > a[aria-current="page"]:hover {
    color: #ffffff !important;
    background: linear-gradient(135deg, #2165df, #2457d5) !important;
    border-color: rgba(31, 92, 222, .64) !important;
}

/* Theme control occupies the same final grid column. */
#header .header-tools,
.test-header-inner > #themeButton {
    justify-self: end;
}

#header #themeButton,
.test-header-inner > #themeButton {
    box-sizing: border-box;
    min-width: 108px;
    min-height: 46px;
    margin: 0;
    padding: 10px 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    color: #ffffff;
    background: var(--primary, #1769ff);
    border: 0;
    border-radius: 11px;
    font: inherit;
    font-size: clamp(12px, .92vw, 15px);
    font-weight: 750;
    line-height: 1;
    white-space: nowrap;
    cursor: pointer;
}

#header #themeButton:hover,
.test-header-inner > #themeButton:hover {
    color: #ffffff;
    background: var(--primary-hover, #0f5ae0);
}

/* Dropdown alignment is identical in both templates. */
#header .mode-more,
.test-nav-more {
    position: relative;
    flex: 0 0 auto;
}

#header .mode-more-menu,
.test-nav-more-menu {
    top: calc(100% + 10px);
    right: 0;
}

html[data-theme="dark"] #header,
html[data-theme="dark"] .test-site-header {
    background: #101b2e;
    border-color: #40516a;
}

html[data-theme="dark"] #header .lesson-home-nav-button,
html[data-theme="dark"] #header .mode-navigation > .mode-button,
html[data-theme="dark"] #header .mode-more > summary.mode-button,
html[data-theme="dark"] .test-nav > a,
html[data-theme="dark"] .test-nav-more > summary {
    color: #dce7f7;
}

html[data-theme="dark"] #header .lesson-home-nav-button:hover,
html[data-theme="dark"] #header .mode-navigation > .mode-button:hover,
html[data-theme="dark"] #header .mode-more > summary.mode-button:hover,
html[data-theme="dark"] .test-nav > a:hover,
html[data-theme="dark"] .test-nav-more > summary:hover,
html[data-theme="dark"] .test-nav-more[open] > summary {
    color: #ffffff;
    background: #17263c;
    border-color: #304662;
}

@media (prefers-color-scheme: dark) {
    html[data-theme="system"] #header,
    html[data-theme="system"] .test-site-header {
        background: #101b2e;
        border-color: #40516a;
    }

    html[data-theme="system"] #header .lesson-home-nav-button,
    html[data-theme="system"] #header .mode-navigation > .mode-button,
    html[data-theme="system"] #header .mode-more > summary.mode-button,
    html[data-theme="system"] .test-nav > a,
    html[data-theme="system"] .test-nav-more > summary {
        color: #dce7f7;
    }
}

@media (max-width: 1180px) {
    #header .header-inner,
    .test-header-inner {
        grid-template-columns: minmax(190px, 225px) minmax(0, 1fr) auto;
        gap: 10px;
    }

    #header .site-logo-picture,
    #header .site-logo-image,
    .test-logo-stack,
    .test-logo img {
        width: min(225px, 100%);
    }

    #header .primary-mode-navigation,
    #header .mode-navigation,
    .test-nav {
        gap: 3px;
    }

    #header .lesson-home-nav-button,
    #header .mode-navigation > .mode-button,
    #header .mode-more > summary.mode-button,
    .test-nav > a,
    .test-nav-more > summary {
        min-height: 42px;
        padding-inline: 10px;
        font-size: 12px;
    }

    #header #themeButton,
    .test-header-inner > #themeButton {
        min-height: 42px;
        font-size: 12px;
    }
}

@media (max-width: 900px) {
    #header,
    .test-site-header {
        min-height: 0;
        padding-top: max(7px, env(safe-area-inset-top));
        padding-bottom: 7px;
    }

    #header .header-inner,
    .test-header-inner {
        width: min(100% - 22px, 1480px);
        min-height: 0;
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 8px 12px;
    }

    #header .primary-mode-navigation,
    .test-nav {
        grid-column: 1 / -1;
        grid-row: 2;
        width: 100%;
        justify-content: flex-start;
        overflow-x: auto;
        overflow-y: visible;
        padding: 2px 0 3px;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
    }

    #header .primary-mode-navigation::-webkit-scrollbar,
    .test-nav::-webkit-scrollbar {
        display: none;
    }

    #header .header-tools,
    .test-header-inner > #themeButton {
        grid-column: 2;
        grid-row: 1;
    }

    .test-logo {
        grid-column: 1;
        grid-row: 1;
    }
}

@media (max-width: 560px) {
    #header .header-inner,
    .test-header-inner {
        width: min(100% - 14px, 1480px);
    }

    #header .site-logo-picture,
    #header .site-logo-image,
    .test-logo-stack,
    .test-logo img {
        width: min(190px, 100%);
    }

    #header .lesson-home-nav-button,
    #header .mode-navigation > .mode-button,
    #header .mode-more > summary.mode-button,
    .test-nav > a,
    .test-nav-more > summary {
        min-width: 68px;
        min-height: 42px;
        padding: 7px 8px;
        flex-direction: column;
        gap: 3px;
        font-size: 9px;
    }

    #header .mode-more-chevron,
    .test-nav-more > summary .mode-more-chevron {
        display: none;
    }

    #header #themeButton,
    .test-header-inner > #themeButton {
        min-width: 88px;
        min-height: 42px;
        padding-inline: 10px;
        font-size: 11px;
    }

    #header .mode-button-icon,
    #header .lesson-home-nav-icon,
    .test-nav .mode-button-icon,
    .test-nav-more-menu .mode-button-icon {
        flex-basis: 19px;
        width: 19px;
        min-width: 19px;
        height: 19px;
        font-size: 17px;
        line-height: 19px;
    }
}

@media (prefers-reduced-motion: reduce) {
    #header .lesson-home-nav-button,
    #header .mode-navigation > .mode-button,
    #header .mode-more > summary.mode-button,
    .test-nav > a,
    .test-nav-more > summary {
        transition: none;
    }
}


/* ==========================================================
   SHARED SECTION FOOTER v17.5.2
========================================================== */
.test-footer,
.certificate-footer,
.blog-footer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px 24px;
    width: min(1480px, calc(100% - 32px));
    margin: 28px auto 0;
    padding: 24px 0 30px;
    color: var(--muted, #64748b);
    font-size: 13px;
}

.shared-footer-links {
    display: flex;
    flex-wrap: wrap;
    gap: 9px 17px;
}

.shared-footer-links a {
    color: inherit;
    text-decoration: none;
}

.shared-footer-links a:hover,
.shared-footer-links a:focus-visible {
    color: var(--primary, #1769ff);
}

@media (max-width: 760px) {
    .test-footer,
    .certificate-footer,
    .blog-footer {
        align-items: flex-start;
        flex-direction: column;
    }
}

/* Source: /css/universal-site-header-v17.7.2.css */
/* ==========================================================
   TypingTutor.Online — Universal Site Header v17.7.2
   One complete header for tutor, tests, games, kids, blog,
   certificates, information pages, sitemap, and 404.
========================================================== */

#header,
.test-site-header {
    box-sizing: border-box !important;
    position: relative;
    z-index: 1000;
    width: 100%;
    min-height: 80px;
    padding: max(9px, env(safe-area-inset-top)) 0 9px;
    background: var(--surface, #ffffff);
    border-bottom: 1px solid var(--border, #dbe4f0);
    box-shadow: 0 2px 10px rgba(15, 23, 42, .06);
}

#header .header-inner,
.test-header-inner {
    box-sizing: border-box;
    width: min(1660px, calc(100% - 34px));
    min-height: 60px;
    margin-inline: auto;
    padding: 0;
    display: grid;
    grid-template-columns: minmax(235px, 300px) minmax(0, 1fr) auto;
    gap: clamp(10px, 1.4vw, 24px);
    align-items: center;
}

#header .logo,
.test-logo {
    min-width: 0;
    display: flex;
    align-items: center;
    justify-self: start;
    color: inherit;
    text-decoration: none;
}

#header .site-logo-picture,
.test-logo-stack {
    position: relative;
    display: grid;
    width: min(280px, 100%);
    min-width: 0;
}

#header .site-logo-picture,
#header .site-logo-picture-light,
#header .site-logo-picture-dark,
.test-logo-stack > img {
    grid-area: 1 / 1;
}

#header .site-logo-image,
.test-logo img {
    display: block;
    width: min(280px, 100%);
    height: auto;
    max-height: 60px;
    object-fit: contain;
    object-position: left center;
}

#header .site-logo-picture-dark,
.test-logo-dark {
    display: none !important;
}

html[data-theme="dark"] #header .site-logo-picture-light,
html[data-theme="dark"] .test-logo-light {
    display: none !important;
}

html[data-theme="dark"] #header .site-logo-picture-dark,
html[data-theme="dark"] .test-logo-dark {
    display: block !important;
}

#header .primary-mode-navigation,
.test-nav {
    min-width: 0;
    width: 100%;
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(2px, .72vw, 12px);
    overflow: visible;
}

#header #modeSwitcher,
#header .mode-switcher-inner,
#header .mode-navigation {
    min-width: 0;
    width: auto;
}

#header .mode-navigation {
    display: flex;
    align-items: center;
    gap: clamp(2px, .72vw, 12px);
}

#header .mode-switcher-heading {
    display: none !important;
}

#header .lesson-home-nav-button,
#header .mode-navigation > .mode-button,
#header .mode-more > summary.mode-button,
.test-nav > a,
.test-nav-more > summary {
    box-sizing: border-box;
    min-width: 0;
    min-height: 48px;
    margin: 0;
    padding: 10px clamp(9px, .78vw, 15px);
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    gap: 8px;
    color: var(--text, #172235);
    background: transparent;
    border: 1px solid transparent;
    border-radius: 12px;
    font: inherit;
    font-size: clamp(12px, .84vw, 15px);
    font-weight: 750;
    line-height: 1;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
    transition: color .16s ease, background-color .16s ease,
        border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}

#header .mode-button-icon,
#header .lesson-home-nav-icon,
.test-nav .mode-button-icon,
.test-nav-more-menu .mode-button-icon {
    display: inline-flex;
    flex: 0 0 22px;
    width: 22px;
    min-width: 22px;
    height: 22px;
    align-items: center;
    justify-content: center;
    font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif;
    font-size: 19px;
    font-weight: 400;
    line-height: 22px;
    text-align: center;
}

#header .mode-button-text,
#header .lesson-home-nav-label,
.test-nav .mode-button-text {
    display: inline-flex;
    align-items: center;
    line-height: 1;
}

#header .lesson-home-nav-button:hover,
#header .mode-navigation > .mode-button:hover,
#header .mode-more > summary.mode-button:hover,
.test-nav > a:hover,
.test-nav-more > summary:hover,
.test-nav-more[open] > summary {
    color: var(--primary, #1769ff);
    background: var(--surface-alt, #f2f7ff);
    border-color: #dbe8fa;
}

#header .lesson-home-nav-button-active,
#header .mode-navigation > .mode-button-active,
#header .mode-more.mode-more-active > summary,
.test-nav > a[aria-current="page"],
.test-nav > a.mode-button-active,
.test-nav-more.mode-more-active > summary {
    color: #ffffff !important;
    background: linear-gradient(135deg, #246df0, #285ee5) !important;
    border-color: rgba(31, 92, 222, .58) !important;
    box-shadow: 0 10px 24px rgba(47, 103, 246, .24) !important;
}

#header .header-tools,
.test-header-inner > #themeButton {
    justify-self: end;
}

#header #themeButton,
.test-header-inner > #themeButton {
    box-sizing: border-box;
    min-width: 116px;
    min-height: 48px;
    margin: 0;
    padding: 10px 15px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    color: #ffffff;
    background: linear-gradient(135deg, #246df0, #285ee5);
    border: 0;
    border-radius: 12px;
    font: inherit;
    font-size: clamp(12px, .84vw, 15px);
    font-weight: 750;
    line-height: 1;
    white-space: nowrap;
    cursor: pointer;
    box-shadow: 0 8px 20px rgba(47, 103, 246, .20);
}

#header #themeButton > span:first-child,
.test-header-inner > #themeButton > span:first-child {
    display: inline-flex;
    flex: 0 0 22px;
    width: 22px;
    height: 22px;
    align-items: center;
    justify-content: center;
    font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif;
    font-size: 19px;
    line-height: 22px;
}

.theme-button-arrow,
.mode-more-chevron {
    font-size: 10px;
    opacity: .8;
}

#header .mode-more,
.test-nav-more {
    position: relative;
    flex: 0 0 auto;
}

#header .mode-more > summary,
.test-nav-more > summary {
    list-style: none;
}

#header .mode-more > summary::-webkit-details-marker,
.test-nav-more > summary::-webkit-details-marker {
    display: none;
}

#header .mode-more-menu,
.test-nav-more-menu {
    box-sizing: border-box;
    position: absolute;
    z-index: 1200;
    top: calc(100% + 10px);
    right: 0;
    width: 244px;
    padding: 8px;
    display: none;
    gap: 4px;
    background: var(--surface-elevated, #ffffff);
    border: 1px solid var(--border, #dbe4f0);
    border-radius: 14px;
    box-shadow: 0 18px 42px rgba(15, 23, 42, .18);
}

#header .mode-more[open] .mode-more-menu,
.test-nav-more[open] .test-nav-more-menu {
    display: grid;
}

#header .mode-more-menu .mode-button,
.test-nav-more-menu a,
.test-nav-more-menu button {
    box-sizing: border-box;
    width: 100%;
    min-height: 44px;
    padding: 10px 12px;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 10px;
    color: var(--text, #172235);
    background: transparent;
    border: 1px solid transparent;
    border-radius: 10px;
    font: inherit;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
}

#header .mode-more-menu .mode-button:hover,
.test-nav-more-menu a:hover,
.test-nav-more-menu button:hover,
.test-nav-more-menu a[aria-current="page"] {
    color: var(--primary, #1769ff);
    background: var(--surface-alt, #f2f7ff);
    border-color: var(--border, #dbe4f0);
}

/* Theme chooser: included here so simple information pages match the app. */
.theme-menu {
    position: fixed;
    z-index: 10050;
    width: 250px;
    padding: 8px;
    background: var(--surface-elevated, #ffffff);
    border: 1px solid var(--border, #dbe4f0);
    border-radius: 14px;
    box-shadow: 0 18px 45px rgba(15, 23, 42, .22);
}
.theme-menu.hidden { display: none !important; }
.theme-option {
    display: grid;
    grid-template-columns: 36px 1fr 22px;
    gap: 10px;
    align-items: center;
    width: 100%;
    padding: 10px;
    color: var(--text, #172235);
    text-align: left;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 10px;
    cursor: pointer;
}
.theme-option:hover,
.theme-option:focus-visible {
    background: var(--surface-alt, #f2f7ff);
    border-color: var(--border, #dbe4f0);
    outline: none;
}
.theme-option-icon {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    background: var(--surface-alt, #f2f7ff);
    border-radius: 9px;
    font-size: 18px;
}
.theme-option-copy { display: grid; gap: 2px; }
.theme-option-copy strong { color: var(--text, #172235); font-size: 13px; }
.theme-option-copy small { color: var(--text-light, #718096); font-size: 10px; }
.theme-option-check { color: var(--primary, #1769ff); font-weight: 900; opacity: 0; }
.theme-option-selected { background: var(--primary-light, #edf4ff); border-color: var(--border, #dbe4f0); }
.theme-option-selected .theme-option-check { opacity: 1; }

html[data-theme="dark"] #header,
html[data-theme="dark"] .test-site-header {
    background: #101b2e;
    border-color: #40516a;
}
html[data-theme="dark"] #header .lesson-home-nav-button,
html[data-theme="dark"] #header .mode-navigation > .mode-button,
html[data-theme="dark"] #header .mode-more > summary.mode-button,
html[data-theme="dark"] .test-nav > a,
html[data-theme="dark"] .test-nav-more > summary,
html[data-theme="dark"] #header .mode-more-menu .mode-button,
html[data-theme="dark"] .test-nav-more-menu a,
html[data-theme="dark"] .test-nav-more-menu button {
    color: #dce7f7;
}
html[data-theme="dark"] #header .mode-more-menu,
html[data-theme="dark"] .test-nav-more-menu,
html[data-theme="dark"] .theme-menu {
    background: #101b2e;
    border-color: #40516a;
}
html[data-theme="dark"] .theme-option,
html[data-theme="dark"] .theme-option-copy strong { color: #e7eef9; }
html[data-theme="dark"] .theme-option-copy small { color: #9aabc2; }
html[data-theme="dark"] .theme-option-icon,
html[data-theme="dark"] .theme-option:hover,
html[data-theme="dark"] .theme-option:focus-visible,
html[data-theme="dark"] #header .mode-more-menu .mode-button:hover,
html[data-theme="dark"] .test-nav-more-menu a:hover,
html[data-theme="dark"] .test-nav-more-menu button:hover {
    background: #17263c;
    border-color: #304662;
}

@media (prefers-color-scheme: dark) {
    html[data-theme="system"] #header,
    html[data-theme="system"] .test-site-header {
        background: #101b2e;
        border-color: #40516a;
    }
    html[data-theme="system"] #header .site-logo-picture-light,
    html[data-theme="system"] .test-logo-light { display: none !important; }
    html[data-theme="system"] #header .site-logo-picture-dark,
    html[data-theme="system"] .test-logo-dark { display: block !important; }
    html[data-theme="system"] #header .lesson-home-nav-button,
    html[data-theme="system"] #header .mode-navigation > .mode-button,
    html[data-theme="system"] #header .mode-more > summary.mode-button,
    html[data-theme="system"] .test-nav > a,
    html[data-theme="system"] .test-nav-more > summary,
    html[data-theme="system"] #header .mode-more-menu .mode-button,
    html[data-theme="system"] .test-nav-more-menu a,
    html[data-theme="system"] .test-nav-more-menu button { color: #dce7f7; }
    html[data-theme="system"] #header .mode-more-menu,
    html[data-theme="system"] .test-nav-more-menu,
    html[data-theme="system"] .theme-menu {
        background: #101b2e;
        border-color: #40516a;
    }
}

@media (max-width: 1360px) {
    #header .header-inner,
    .test-header-inner {
        grid-template-columns: minmax(205px, 235px) minmax(0, 1fr) auto;
        gap: 8px;
    }
    #header .site-logo-picture,
    #header .site-logo-image,
    .test-logo-stack,
    .test-logo img { width: min(235px, 100%); }
    #header .lesson-home-nav-button,
    #header .mode-navigation > .mode-button,
    #header .mode-more > summary.mode-button,
    .test-nav > a,
    .test-nav-more > summary {
        min-height: 44px;
        padding-inline: 8px;
        gap: 6px;
        font-size: 12px;
    }
    #header #themeButton,
    .test-header-inner > #themeButton {
        min-width: 104px;
        min-height: 44px;
        padding-inline: 11px;
        font-size: 12px;
    }
}

@media (max-width: 1040px) {
    #header,
    .test-site-header {
        min-height: 0;
        padding-top: max(7px, env(safe-area-inset-top));
        padding-bottom: 7px;
    }
    #header .header-inner,
    .test-header-inner {
        width: min(100% - 22px, 1660px);
        min-height: 0;
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 8px 12px;
    }
    #header .primary-mode-navigation,
    .test-nav {
        grid-column: 1 / -1;
        grid-row: 2;
        width: 100%;
        justify-content: flex-start;
        overflow-x: auto;
        overflow-y: visible;
        padding: 2px 0 3px;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
    }
    #header .primary-mode-navigation::-webkit-scrollbar,
    .test-nav::-webkit-scrollbar { display: none; }
    #header .header-tools,
    .test-header-inner > #themeButton { grid-column: 2; grid-row: 1; }
    .test-logo { grid-column: 1; grid-row: 1; }
}

@media (max-width: 590px) {
    #header .header-inner,
    .test-header-inner { width: min(100% - 14px, 1660px); }
    #header .site-logo-picture,
    #header .site-logo-image,
    .test-logo-stack,
    .test-logo img { width: min(190px, 100%); }
    #header .lesson-home-nav-button,
    #header .mode-navigation > .mode-button,
    #header .mode-more > summary.mode-button,
    .test-nav > a,
    .test-nav-more > summary {
        min-width: 68px;
        min-height: 44px;
        padding: 7px 8px;
        flex-direction: column;
        gap: 3px;
        font-size: 9px;
    }
    #header .mode-more-chevron,
    .test-nav-more .mode-more-chevron { display: none; }
    #header #themeButton,
    .test-header-inner > #themeButton {
        min-width: 48px;
        min-height: 42px;
        padding: 8px 10px;
    }
    #header #themeButton > span:nth-child(2),
    #header #themeButton > span:last-child,
    .test-header-inner > #themeButton > span:nth-child(2),
    .test-header-inner > #themeButton > span:last-child { display: none; }
}

/* ==========================================================
   v17.10.182 — Reliable mobile More menu
   Explicit JS toggling + fixed viewport panel prevents the menu from
   opening outside the horizontally scrolling navigation in Chrome mobile.
========================================================== */
@media (max-width: 1040px), (pointer: coarse) {
    #header .mode-more-menu,
    .test-nav-more-menu {
        position: fixed !important;
        z-index: 10050 !important;
        top: var(--site-more-top, 118px) !important;
        right: 12px !important;
        bottom: auto !important;
        left: 12px !important;
        width: auto !important;
        max-width: none !important;
        max-height: min(var(--site-more-max-height, 70vh), 480px) !important;
        margin: 0 !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
        border-radius: 16px;
        box-shadow: 0 20px 52px rgba(15, 23, 42, .24);
    }

    #header .mode-more[open] > summary.mode-button,
    .test-nav-more[open] > summary {
        color: var(--primary, #1769ff);
        background: var(--surface-alt, #f2f7ff);
        border-color: var(--border, #dbe4f0);
    }
}

/* v17.10.327: readable hover, open and keyboard-focus states in both dark modes. */
html[data-theme="dark"] #header .lesson-home-nav-button:is(:hover,:focus-visible),
html[data-theme="dark"] #header .mode-navigation > .mode-button:is(:hover,:focus-visible),
html[data-theme="dark"] #header .mode-more > summary.mode-button:is(:hover,:focus-visible),
html[data-theme="dark"] #header .mode-more[open] > summary.mode-button,
html[data-theme="dark"] .test-nav > a:is(:hover,:focus-visible),
html[data-theme="dark"] .test-nav-more > summary:is(:hover,:focus-visible),
html[data-theme="dark"] .test-nav-more[open] > summary,
html[data-theme="dark"] #header .mode-more-menu .mode-button:is(:hover,:focus-visible),
html[data-theme="dark"] .test-nav-more-menu a:is(:hover,:focus-visible),
html[data-theme="dark"] .test-nav-more-menu button:is(:hover,:focus-visible) {
    color: #e7eef9;
    background: #213a5f;
    border-color: #526d91;
    text-decoration: none;
}
@media (prefers-color-scheme: dark) {
html[data-theme="system"] #header .lesson-home-nav-button:is(:hover,:focus-visible),
html[data-theme="system"] #header .mode-navigation > .mode-button:is(:hover,:focus-visible),
html[data-theme="system"] #header .mode-more > summary.mode-button:is(:hover,:focus-visible),
html[data-theme="system"] #header .mode-more[open] > summary.mode-button,
html[data-theme="system"] .test-nav > a:is(:hover,:focus-visible),
html[data-theme="system"] .test-nav-more > summary:is(:hover,:focus-visible),
html[data-theme="system"] .test-nav-more[open] > summary,
html[data-theme="system"] #header .mode-more-menu .mode-button:is(:hover,:focus-visible),
html[data-theme="system"] .test-nav-more-menu a:is(:hover,:focus-visible),
html[data-theme="system"] .test-nav-more-menu button:is(:hover,:focus-visible) {
    color: #e7eef9;
    background: #213a5f;
    border-color: #526d91;
    text-decoration: none;
}
}

/* Source: /css/universal-logo-visibility-v17.7.6.css */
/* ==========================================================
   TypingTutor.Online — Universal Logo Visibility v17.7.6

   Nested sections use two theme-aware logo images inside
   .test-logo-stack. Older section styles mixed absolute
   positioning, display switching and opacity switching, which
   could collapse the logo container or hide both images.

   This final stylesheet creates one stable overlapping grid,
   reserves the correct header space and switches only opacity.
========================================================== */

.test-logo {
    box-sizing: border-box !important;
    width: min(280px, 100%) !important;
    min-width: 190px !important;
    min-height: 58px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    overflow: visible !important;
}

.test-logo-stack {
    box-sizing: border-box !important;
    position: relative !important;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    grid-template-rows: minmax(0, 1fr) !important;
    width: 280px !important;
    max-width: 100% !important;
    min-width: 190px !important;
    min-height: 58px !important;
    aspect-ratio: 280 / 58 !important;
    overflow: visible !important;
    isolation: isolate;
}

.test-logo-stack > .test-logo-light,
.test-logo-stack > .test-logo-dark {
    box-sizing: border-box !important;
    grid-area: 1 / 1 !important;
    position: static !important;
    inset: auto !important;
    z-index: 1;
    display: block !important;
    width: 100% !important;
    max-width: 280px !important;
    height: 100% !important;
    min-height: 0 !important;
    max-height: 58px !important;
    margin: 0 !important;
    object-fit: contain !important;
    object-position: left center !important;
    pointer-events: none !important;
    transition: opacity .16s ease, visibility .16s ease !important;
}

/* Reliable default, including pages before ThemeManager runs. */
.test-logo-stack > .test-logo-light {
    opacity: 1 !important;
    visibility: visible !important;
}

.test-logo-stack > .test-logo-dark {
    opacity: 0 !important;
    visibility: hidden !important;
}

html[data-theme="light"] .test-logo-stack > .test-logo-light,
html[data-resolved-theme="light"] .test-logo-stack > .test-logo-light {
    opacity: 1 !important;
    visibility: visible !important;
}

html[data-theme="light"] .test-logo-stack > .test-logo-dark,
html[data-resolved-theme="light"] .test-logo-stack > .test-logo-dark {
    opacity: 0 !important;
    visibility: hidden !important;
}

html[data-theme="dark"] .test-logo-stack > .test-logo-light,
html[data-resolved-theme="dark"] .test-logo-stack > .test-logo-light {
    opacity: 0 !important;
    visibility: hidden !important;
}

html[data-theme="dark"] .test-logo-stack > .test-logo-dark,
html[data-resolved-theme="dark"] .test-logo-stack > .test-logo-dark {
    opacity: 1 !important;
    visibility: visible !important;
}

@media (prefers-color-scheme: dark) {
    html[data-theme="system"] .test-logo-stack > .test-logo-light {
        opacity: 0 !important;
        visibility: hidden !important;
    }

    html[data-theme="system"] .test-logo-stack > .test-logo-dark {
        opacity: 1 !important;
        visibility: visible !important;
    }
}

@media (prefers-color-scheme: light) {
    html[data-theme="system"] .test-logo-stack > .test-logo-light {
        opacity: 1 !important;
        visibility: visible !important;
    }

    html[data-theme="system"] .test-logo-stack > .test-logo-dark {
        opacity: 0 !important;
        visibility: hidden !important;
    }
}

@media (max-width: 760px) {
    .test-logo {
        width: min(220px, 100%) !important;
        min-width: 165px !important;
        min-height: 46px !important;
    }

    .test-logo-stack {
        width: 220px !important;
        min-width: 165px !important;
        min-height: 46px !important;
    }

    .test-logo-stack > .test-logo-light,
    .test-logo-stack > .test-logo-dark {
        max-width: 220px !important;
        max-height: 46px !important;
    }
}

@media (max-width: 440px) {
    .test-logo {
        width: 178px !important;
        min-width: 150px !important;
        min-height: 37px !important;
    }

    .test-logo-stack {
        width: 178px !important;
        min-width: 150px !important;
        min-height: 37px !important;
    }

    .test-logo-stack > .test-logo-light,
    .test-logo-stack > .test-logo-dark {
        max-width: 178px !important;
        max-height: 37px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .test-logo-stack > .test-logo-light,
    .test-logo-stack > .test-logo-dark {
        transition: none !important;
    }
}

/* Source: /css/universal-selection-v17.7.8.css */
/* ==========================================================
   TypingTutor.Online — high-contrast text selection v17.7.8
   ========================================================== */

/*
 * Use one strong, predictable selection treatment everywhere.
 * White text on saturated blue remains readable on both light and dark
 * surfaces and avoids the pale-selection/white-text conflict seen on blogs.
 */
*::selection {
    color: #ffffff !important;
    background: #075fe4 !important;
    text-shadow: none !important;
    -webkit-text-fill-color: #ffffff !important;
}

*::-moz-selection {
    color: #ffffff !important;
    background: #075fe4 !important;
    text-shadow: none !important;
}

input::selection,
textarea::selection,
[contenteditable="true"]::selection {
    color: #ffffff !important;
    background: #075fe4 !important;
    -webkit-text-fill-color: #ffffff !important;
}

input::-moz-selection,
textarea::-moz-selection,
[contenteditable="true"]::-moz-selection {
    color: #ffffff !important;
    background: #075fe4 !important;
}

/* Extra contrast for explicit dark mode and System mode on dark devices. */
html[data-theme="dark"] *::selection {
    color: #ffffff !important;
    background: #0057d9 !important;
    -webkit-text-fill-color: #ffffff !important;
}

html[data-theme="dark"] *::-moz-selection {
    color: #ffffff !important;
    background: #0057d9 !important;
}

@media (prefers-color-scheme: dark) {
    html[data-theme="system"] *::selection {
        color: #ffffff !important;
        background: #0057d9 !important;
        -webkit-text-fill-color: #ffffff !important;
    }

    html[data-theme="system"] *::-moz-selection {
        color: #ffffff !important;
        background: #0057d9 !important;
    }
}

/* Source: /css/global-workspace-v17.8.2.css */
/* ==========================================================
   TypingTutor.Online — Global Wide Workspace v17.8.2
   A consistent outer width across the tutor and every public
   section. Reading columns remain intentionally narrower.
========================================================== */

:root {
    --tto-workspace-max: 1500px;
    --tto-workspace-gutter: clamp(14px, 1.7vw, 32px);
    --max-width: var(--tto-workspace-max);
}

/* Main tutor, mode dashboards and progress bars */
.site-shell,
#courseModePanel,
.feature-placeholder,
#statisticsDashboard,
.statistics-course-progress,
.daily-practice-summary,
.settings-dashboard,
.achievements-dashboard,
.more-typing-resources-inner,
.typing-learning-content-inner {
    box-sizing: border-box;
    width: min(
        var(--tto-workspace-max),
        calc(100% - (2 * var(--tto-workspace-gutter)))
    );
    max-width: var(--tto-workspace-max);
    margin-inline: auto;
}

/* Standalone site sections */
.test-page-shell,
.games-shell,
.kids-shell,
.blog-shell,
.certificate-shell,
.share-shell,
.lessons-page-shell,
.page-shell {
    box-sizing: border-box;
    width: min(
        var(--tto-workspace-max),
        calc(100% - (2 * var(--tto-workspace-gutter)))
    );
    max-width: var(--tto-workspace-max);
    margin-inline: auto;
}

/* Footer follows the same visual edges as the page content. */
.universal-footer-inner,
.site-footer-inner {
    width: min(var(--tto-workspace-max), 100%);
    max-width: var(--tto-workspace-max);
}

/* Align horizontal section navigation with the wider workspace. */
.games-subnav,
.kids-subnav {
    padding-inline: max(
        var(--tto-workspace-gutter),
        calc((100vw - var(--tto-workspace-max)) / 2)
    );
}

/* Keep long-form reading comfortable even inside a wide shell. */
.blog-article,
.blog-article-body,
.page-prose,
.content-prose,
.certificate-faq > p,
.certificate-faq details,
.typing-learning-heading {
    max-width: 980px;
}

/* Wide desktop dashboards benefit from balanced multi-column cards. */
@media (min-width: 1280px) {
    .statistics-summary-grid-complete {
        grid-template-columns: repeat(6, minmax(0, 1fr));
    }

    .statistics-ranking-grid,
    .statistics-trend-grid {
        gap: 18px;
    }

    .games-grid,
    .kids-path-grid,
    .kids-feature-grid,
    .kids-test-grid,
    .kids-game-grid,
    .kids-badge-grid {
        gap: 20px;
    }
}

/* Maintain generous but safe gutters on tablets and phones. */
@media (max-width: 900px) {
    :root {
        --tto-workspace-gutter: 11px;
    }
}

@media (max-width: 560px) {
    :root {
        --tto-workspace-gutter: 7px;
    }
}

@media print {
    .certificate-shell,
    .kids-shell,
    .page-shell {
        width: 100% !important;
        max-width: none !important;
    }
}

/* Source: /css/universal-footer-v17.10.21.css */
/* TypingTutor.Online global footer v17.10.21 */
.universal-site-footer{display:block;box-sizing:border-box;width:100%;margin-top:48px;padding:36px clamp(18px,4vw,56px) 24px;color:var(--text-light,#64748b);background:linear-gradient(180deg,#fbfdff 0%,#f6f9fd 100%);border-top:1px solid var(--border,#d9e2ef);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.universal-footer-inner{box-sizing:border-box;width:min(1500px,100%);margin:0 auto}
.universal-footer-main{display:grid;grid-template-columns:minmax(240px,.85fr) minmax(0,2.15fr);gap:clamp(32px,5vw,72px);align-items:start}
.universal-footer-brand{display:grid;gap:9px;max-width:340px;text-align:left}
.universal-footer-home{width:max-content;color:var(--text,#0f172a)!important;font-size:18px;font-weight:850;line-height:1.25;text-decoration:none;letter-spacing:-.01em}
.universal-footer-home:hover,.universal-footer-home:focus-visible{color:var(--primary,#1769ff)!important}
.universal-footer-brand span{color:var(--text-light,#64748b);font-size:13px;font-weight:550;line-height:1.6}
.universal-footer-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px clamp(22px,4vw,54px)}
.universal-footer-group{min-width:0}
.universal-footer-group>strong{display:block;margin:0 0 10px;color:var(--text,#0f172a);font-size:11px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}
.universal-footer-group-links{display:grid;gap:8px}
.universal-footer-group-links a{width:max-content;max-width:100%;color:var(--text-light,#64748b);font-size:13px;font-weight:700;line-height:1.45;text-decoration:none;transition:color .16s ease,transform .16s ease}
.universal-footer-group-links a:hover,.universal-footer-group-links a:focus-visible{color:var(--primary,#1769ff);text-decoration:underline;text-underline-offset:3px}
.universal-footer-bottom{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:28px;padding-top:18px;border-top:1px solid color-mix(in srgb,var(--border,#d9e2ef) 82%,transparent);color:var(--text-light,#64748b);font-size:11px;font-weight:600;line-height:1.5}
html[data-theme="dark"] .universal-site-footer{color:#94a3b8;background:#0f172a;border-top-color:#334155}
html[data-theme="dark"] .universal-footer-home,html[data-theme="dark"] .universal-footer-group>strong{color:#f8fafc!important}
html[data-theme="dark"] .universal-footer-brand span,html[data-theme="dark"] .universal-footer-group-links a,html[data-theme="dark"] .universal-footer-bottom{color:#a8b5c7}
html[data-theme="dark"] .universal-footer-bottom{border-top-color:#334155}
html[data-theme="dark"] .universal-footer-home:hover,html[data-theme="dark"] .universal-footer-home:focus-visible,html[data-theme="dark"] .universal-footer-group-links a:hover,html[data-theme="dark"] .universal-footer-group-links a:focus-visible{color:#60a5fa!important}
@media(prefers-color-scheme:dark){html[data-theme="system"] .universal-site-footer{color:#94a3b8;background:#0f172a;border-top-color:#334155}html[data-theme="system"] .universal-footer-home,html[data-theme="system"] .universal-footer-group>strong{color:#f8fafc!important}html[data-theme="system"] .universal-footer-brand span,html[data-theme="system"] .universal-footer-group-links a,html[data-theme="system"] .universal-footer-bottom{color:#a8b5c7}html[data-theme="system"] .universal-footer-bottom{border-top-color:#334155}html[data-theme="system"] .universal-footer-home:hover,html[data-theme="system"] .universal-footer-home:focus-visible,html[data-theme="system"] .universal-footer-group-links a:hover,html[data-theme="system"] .universal-footer-group-links a:focus-visible{color:#60a5fa!important}}
@media(max-width:900px){.universal-site-footer{padding-top:30px}.universal-footer-main{grid-template-columns:1fr;gap:26px}.universal-footer-brand{max-width:620px}.universal-footer-nav{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:620px){.universal-site-footer{margin-top:32px;padding:28px 18px 20px}.universal-footer-nav{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 18px}.universal-footer-group:last-child{grid-column:1/-1}.universal-footer-group:last-child .universal-footer-group-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px}.universal-footer-group-links a{width:auto;padding:2px 0}.universal-footer-bottom{align-items:flex-start;flex-direction:column;gap:5px;margin-top:24px}}
@media(max-width:390px){.universal-footer-nav{grid-template-columns:1fr}.universal-footer-group:last-child{grid-column:auto}.universal-footer-group:last-child .universal-footer-group-links{grid-template-columns:1fr}}
@media print{.universal-site-footer{display:none!important}}

/* Source: /numpad/numpad.css */
:root{--numeric-blue:#1769ff;--numeric-blue-dark:#0d4fd4;--numeric-soft:#eef5ff;--numeric-ink:#0f172a;--numeric-muted:#64748b;--numeric-line:#dbe5f2;--numeric-card:#fff;--numeric-panel:#f8fbff;--numeric-key:#f8fafc;--numeric-key-shadow:#cbd5e1;--numeric-success:#0f9f6e;--numeric-danger:#dc2626;--numeric-warning:#d97706}
.numeric-shell{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:28px 0 56px;color:var(--numeric-ink)}
.numeric-breadcrumb{font-size:.84rem;color:var(--numeric-muted);margin:0 0 18px}.numeric-breadcrumb a{color:var(--numeric-blue);text-decoration:none}.numeric-breadcrumb a:hover{text-decoration:underline}
.numeric-hero{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.75fr);gap:22px;align-items:stretch;background:linear-gradient(135deg,#fff 0%,#f5f9ff 100%);border:1px solid var(--numeric-line);border-radius:24px;padding:34px;box-shadow:0 18px 45px rgba(15,23,42,.08);margin-bottom:24px}.numeric-eyebrow{display:block;text-transform:uppercase;letter-spacing:.11em;font-weight:800;font-size:.72rem;color:var(--numeric-blue);margin-bottom:8px}.numeric-hero h1{font-family:Poppins,Inter,sans-serif;font-size:clamp(2rem,4vw,3.35rem);line-height:1.07;margin:0 0 14px;color:var(--numeric-ink)}.numeric-hero p{font-size:1.04rem;line-height:1.75;color:var(--numeric-muted);max-width:760px;margin:0}.numeric-hero-badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}.numeric-hero-badges span{border:1px solid #cfe0ff;background:#f7faff;color:#31507c;border-radius:999px;padding:8px 12px;font-size:.82rem;font-weight:700}.numeric-hero-summary{display:flex;align-items:center;gap:16px;padding:22px;border-radius:18px;background:linear-gradient(145deg,#0f5fe8,#2679ff);color:white;box-shadow:0 14px 35px rgba(23,105,255,.2)}.numeric-summary-icon{width:72px;height:72px;display:grid;place-items:center;border-radius:18px;background:rgba(255,255,255,.14);flex:0 0 auto}.numeric-summary-icon svg{width:42px;height:42px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.numeric-hero-summary strong{font-size:1.15rem;display:block;margin-bottom:6px}.numeric-hero-summary small{line-height:1.5;color:rgba(255,255,255,.82)}
.numeric-workspace{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(315px,.68fr);gap:22px;align-items:start;margin-bottom:26px}.numeric-practice-panel,.numeric-keypad-panel,.numeric-next-grid,.numeric-content-grid article,.numeric-faq{background:var(--numeric-card);border:1px solid var(--numeric-line);border-radius:22px;box-shadow:0 14px 34px rgba(15,23,42,.07)}.numeric-practice-panel{padding:24px}.numeric-panel-heading{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding-bottom:18px;border-bottom:1px solid var(--numeric-line)}.numeric-panel-heading h1,.numeric-panel-heading h2{font-family:Poppins,Inter,sans-serif;font-size:1.45rem;margin:0 0 6px;color:var(--numeric-ink)}.numeric-panel-heading p{margin:0;color:var(--numeric-muted);line-height:1.55}.numeric-status-pill{padding:8px 12px;border-radius:999px;background:var(--numeric-soft);color:var(--numeric-blue);font-weight:800;font-size:.78rem;white-space:nowrap}
.numeric-control-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:14px;margin:18px 0}.numeric-option-group{border:0;padding:0;margin:0}.numeric-option-group legend{font-size:.75rem;font-weight:800;color:var(--numeric-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}.numeric-segmented{display:flex;flex-wrap:wrap;gap:6px}.numeric-segmented button{border:1px solid var(--numeric-line);background:var(--numeric-panel);color:#334155;border-radius:10px;padding:9px 12px;font-weight:750;cursor:pointer}.numeric-segmented button:hover{border-color:#a9c8ff}.numeric-segmented button.is-active{background:var(--numeric-blue);border-color:var(--numeric-blue);color:#fff}
.numeric-live-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:16px 0}.numeric-live-stats div{border:1px solid var(--numeric-line);background:var(--numeric-panel);border-radius:14px;padding:12px;text-align:center}.numeric-live-stats span{display:block;font-size:.69rem;text-transform:uppercase;letter-spacing:.07em;color:var(--numeric-muted);font-weight:800}.numeric-live-stats strong{display:block;font-size:1.45rem;color:var(--numeric-blue);margin-top:3px}
.numeric-target-card{border:1px solid #cadbf7;background:linear-gradient(180deg,#fbfdff,#f4f8ff);border-radius:18px;padding:18px;min-height:190px;outline:none}.numeric-target-card:focus-visible{box-shadow:0 0 0 4px rgba(23,105,255,.15)}.numeric-target-topline{display:flex;justify-content:space-between;color:var(--numeric-muted);font-size:.77rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.numeric-target{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;font-size:clamp(1.45rem,3.4vw,2.15rem);line-height:1.65;letter-spacing:.055em;padding:22px 4px 24px;overflow-wrap:anywhere}.numeric-char{border-radius:5px;padding:1px 2px}.numeric-char.done{color:#0f9f6e;background:#e8fbf4}.numeric-char.current{color:#fff;background:var(--numeric-blue);box-shadow:0 3px 10px rgba(23,105,255,.26)}.numeric-char.error{color:#fff;background:var(--numeric-danger)}.numeric-progress-track{height:7px;background:#dce7f8;border-radius:999px;overflow:hidden}.numeric-progress-track span{display:block;width:0;height:100%;background:linear-gradient(90deg,#1769ff,#32c48d);border-radius:inherit;transition:width .12s linear}
.numeric-controls{display:grid;grid-template-columns:1.5fr .75fr .85fr;gap:8px;margin-top:14px}.numeric-controls button{min-height:44px;border-radius:11px;border:1px solid transparent;font-weight:800;cursor:pointer}.numeric-primary{background:var(--numeric-blue);color:#fff}.numeric-primary:hover{background:var(--numeric-blue-dark)}.numeric-secondary{background:var(--numeric-panel);border-color:var(--numeric-line)!important;color:#334155}.numeric-secondary:hover:not(:disabled){border-color:#adc8f8!important}.numeric-controls button:disabled{opacity:.45;cursor:not-allowed}.numeric-message{min-height:24px;margin:12px 2px 0;color:var(--numeric-muted);font-size:.86rem;line-height:1.5}.numeric-message.is-warning{color:var(--numeric-warning);font-weight:700}.numeric-message.is-success{color:var(--numeric-success);font-weight:700}.numeric-lower-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.numeric-insight-card{border:1px solid var(--numeric-line);border-radius:14px;padding:13px;background:var(--numeric-panel)}.numeric-insight-card span,.numeric-insight-card small{display:block;color:var(--numeric-muted);font-size:.75rem}.numeric-insight-card strong{display:block;margin:4px 0;font-size:1rem;color:var(--numeric-ink)}
.numeric-keypad-panel{padding:18px;position:sticky;top:92px}.numeric-display{background:#0b1730;border:1px solid #243b66;border-radius:14px;padding:13px 15px;margin-bottom:12px;color:#dceaff;box-shadow:inset 0 1px 0 rgba(255,255,255,.05)}.numeric-display small{display:block;text-transform:uppercase;letter-spacing:.08em;font-weight:800;font-size:.65rem;color:#83aaf0}.numeric-display strong{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:2rem;line-height:1.2;color:#fff;min-height:39px}.numeric-display span{font-size:.72rem;color:#9db6df}.numeric-keypad{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(5,62px);gap:8px;background:#dce5f0;border:1px solid #c2cfde;border-radius:18px;padding:12px;box-shadow:inset 0 2px 7px rgba(15,23,42,.09)}.numeric-keypad button{border:1px solid #b8c5d5;border-bottom-width:3px;background:linear-gradient(180deg,#fff,#eef3f8);border-radius:10px;font:800 1.18rem Inter,sans-serif;color:#132238;box-shadow:0 2px 4px rgba(15,23,42,.08);cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}.numeric-keypad button:hover{background:#f8fbff;border-color:#8eb2eb}.numeric-keypad button:active,.numeric-keypad button.is-pressed{transform:translateY(2px);border-bottom-width:1px;background:#dbeaff}.numeric-keypad button.is-expected{border-color:var(--numeric-blue);box-shadow:0 0 0 3px rgba(23,105,255,.16),0 2px 4px rgba(15,23,42,.08);color:var(--numeric-blue)}.numeric-keypad .utility{font-size:.75rem;background:linear-gradient(180deg,#edf2f8,#dfe7f0)}.numeric-keypad .operator{background:linear-gradient(180deg,#eaf2ff,#d8e7ff);color:#0f58d1}.numeric-keypad .plus{grid-column:4;grid-row:2/span 2}.numeric-keypad .enter{grid-column:4;grid-row:4/span 2;font-size:.85rem}.numeric-keypad .zero{grid-column:1/span 2}.numeric-hand-guide{margin-top:15px;padding:15px;border-radius:15px;border:1px solid var(--numeric-line);background:var(--numeric-panel)}.numeric-hand-guide h3{font-size:.95rem;margin:0 0 10px;color:var(--numeric-ink)}.numeric-finger-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}.numeric-finger-grid span{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--numeric-line);background:var(--numeric-card);border-radius:9px;padding:8px}.numeric-finger-grid b{font-size:.78rem;color:var(--numeric-blue)}.numeric-finger-grid small{font-size:.7rem;color:var(--numeric-muted)}.numeric-hand-guide p{font-size:.78rem;line-height:1.5;color:var(--numeric-muted);margin:10px 0 0}
.numeric-next-grid{padding:26px;margin-bottom:22px}.numeric-section-heading{max-width:800px}.numeric-section-heading h2{font-family:Poppins,Inter,sans-serif;font-size:1.7rem;margin:0 0 8px}.numeric-section-heading p{color:var(--numeric-muted);line-height:1.65;margin:0}.numeric-feature-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:20px}.numeric-feature-grid article{border:1px solid var(--numeric-line);border-radius:16px;padding:17px;background:var(--numeric-panel)}.numeric-feature-grid article.is-live{background:linear-gradient(145deg,#edf5ff,#f7fffb);border-color:#b9d5ff}.numeric-feature-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:#e7f0ff;color:var(--numeric-blue);font-weight:900;font-size:.78rem}.numeric-feature-grid h3{font-size:1rem;margin:12px 0 7px}.numeric-feature-grid p{font-size:.85rem;line-height:1.55;color:var(--numeric-muted);margin:0 0 10px}.numeric-feature-grid strong{font-size:.75rem;color:var(--numeric-blue)}
.numeric-content-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:22px}.numeric-content-grid article{padding:22px}.numeric-content-grid h2{font-size:1.1rem;margin:0 0 8px}.numeric-content-grid p,.numeric-content-grid li{color:var(--numeric-muted);line-height:1.65}.numeric-content-grid ul{margin:0;padding-left:20px}.numeric-faq{padding:24px}.numeric-faq h2{font-family:Poppins,Inter,sans-serif;margin:0 0 14px}.numeric-faq details{border-top:1px solid var(--numeric-line);padding:13px 0}.numeric-faq summary{font-weight:800;cursor:pointer}.numeric-faq p{color:var(--numeric-muted);line-height:1.6;margin:8px 0 0}
html[data-theme="dark"] .numeric-shell,body.dark-mode .numeric-shell{--numeric-ink:#f4f7fb;--numeric-muted:#aab8cc;--numeric-line:#2a3a53;--numeric-card:#111c2f;--numeric-panel:#0d1729;--numeric-key:#162337}.dark .numeric-shell{--numeric-ink:#f4f7fb;--numeric-muted:#aab8cc;--numeric-line:#2a3a53;--numeric-card:#111c2f;--numeric-panel:#0d1729}
@media (prefers-color-scheme:dark){html:not([data-theme="light"]) .numeric-shell{--numeric-ink:#f4f7fb;--numeric-muted:#aab8cc;--numeric-line:#2a3a53;--numeric-card:#111c2f;--numeric-panel:#0d1729}}
html[data-theme="dark"] .numeric-hero,body.dark-mode .numeric-hero{background:linear-gradient(135deg,#111c2f,#0b1526)}
html[data-theme="dark"] .numeric-hero-badges span,body.dark-mode .numeric-hero-badges span{background:#15243a;border-color:#2d4568;color:#c4d5eb}
html[data-theme="dark"] .numeric-segmented button,body.dark-mode .numeric-segmented button{background:#142238;color:#dce7f6;border-color:#2a3a53}.numeric-segmented button.is-active{color:white!important;background:var(--numeric-blue)!important}
html[data-theme="dark"] .numeric-target-card,body.dark-mode .numeric-target-card{background:linear-gradient(180deg,#0f1c30,#0c1728);border-color:#2c4161}.numeric-keypad-panel{color:var(--numeric-ink)}
html[data-theme="dark"] .numeric-keypad,body.dark-mode .numeric-keypad{background:#101a2b;border-color:#2d3c53}.numeric-keypad button{color:#132238}html[data-theme="dark"] .numeric-hand-guide .numeric-finger-grid span,body.dark-mode .numeric-hand-guide .numeric-finger-grid span{background:#142238}
@media(max-width:930px){.numeric-hero{grid-template-columns:1fr}.numeric-workspace{grid-template-columns:1fr}.numeric-keypad-panel{position:static;max-width:520px;width:100%;justify-self:center}.numeric-feature-grid{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.numeric-shell{width:min(100% - 20px,1180px);padding-top:16px}.numeric-hero{padding:22px;border-radius:18px}.numeric-hero h1{font-size:2rem}.numeric-practice-panel,.numeric-keypad-panel,.numeric-next-grid,.numeric-faq{border-radius:17px}.numeric-practice-panel{padding:16px}.numeric-panel-heading{display:block}.numeric-status-pill{display:inline-flex;margin-top:12px}.numeric-control-grid{grid-template-columns:1fr}.numeric-live-stats{grid-template-columns:1fr 1fr}.numeric-controls{grid-template-columns:1fr 1fr}.numeric-controls .numeric-primary{grid-column:1/-1}.numeric-target{font-size:1.35rem}.numeric-lower-grid,.numeric-content-grid{grid-template-columns:1fr}.numeric-feature-grid{grid-template-columns:1fr}.numeric-keypad{grid-template-rows:repeat(5,58px);gap:7px;padding:10px}.numeric-finger-grid{grid-template-columns:1fr}.numeric-hero-summary{padding:17px}.numeric-summary-icon{width:58px;height:58px}.numeric-next-grid{padding:18px}}


/* ==========================================================
   v17.8.55 — Visual right-hand 10-key tutor
========================================================== */
.numeric-keypad button[data-key="5"]{
    position:relative;
}
.numeric-keypad button[data-key="5"]::after{
    content:"";
    position:absolute;
    left:50%;
    bottom:7px;
    width:7px;
    height:3px;
    border-radius:999px;
    background:currentColor;
    opacity:.55;
    transform:translateX(-50%);
}

.numeric-hand-tutor{
    margin-top:15px;
    padding:15px;
    border:1px solid var(--numeric-line);
    border-radius:16px;
    background:
        radial-gradient(circle at 82% 18%, rgba(23,105,255,.09), transparent 32%),
        var(--numeric-panel);
}
.numeric-hand-tutor-heading{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:12px;
    margin-bottom:10px;
}
.numeric-hand-tutor-heading .numeric-eyebrow{
    margin:0 0 3px;
    font-size:.62rem;
}
.numeric-hand-tutor-heading h3{
    margin:0;
    color:var(--numeric-ink);
    font-size:.98rem;
    line-height:1.25;
}
.numeric-hand-current{
    flex:0 0 auto;
    max-width:150px;
    padding:6px 9px;
    border:1px solid #bdd2f5;
    border-radius:999px;
    color:#0f58d1;
    background:#edf5ff;
    font-size:.68rem;
    font-weight:850;
    line-height:1.2;
    text-align:center;
}
.numeric-hand-visual{
    position:relative;
    min-height:180px;
    margin:5px 0 10px;
    overflow:hidden;
    border:1px solid var(--numeric-line);
    border-radius:14px;
    background:
        linear-gradient(rgba(23,105,255,.035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(23,105,255,.035) 1px, transparent 1px),
        var(--numeric-card);
    background-size:24px 24px;
}
.numeric-right-hand{
    display:block;
    width:min(100%,320px);
    height:170px;
    margin:4px auto 0;
    overflow:visible;
}
.numeric-hand-palm{
    fill:rgba(148,163,184,.13);
    stroke:#8b98a9;
    stroke-width:4.5;
}
.numeric-hand-wrist{
    fill:none;
    stroke:#8b98a9;
    stroke-width:5;
    stroke-linecap:round;
}
.numeric-tutor-finger path{
    fill:none;
    stroke:#8b98a9;
    stroke-width:13;
    stroke-linecap:round;
    stroke-linejoin:round;
    transition:stroke .12s ease, filter .12s ease, transform .12s ease;
}
.numeric-tutor-finger circle{
    fill:#f8fbff;
    stroke:#8b98a9;
    stroke-width:4;
    transition:fill .12s ease, stroke .12s ease, filter .12s ease, transform .12s ease;
}
.numeric-tutor-finger.is-active path,
.numeric-tutor-finger.is-active circle{
    stroke:var(--numeric-blue);
    filter:drop-shadow(0 0 5px rgba(23,105,255,.35));
}
.numeric-tutor-finger.is-active circle{
    fill:#dceaff;
}
.numeric-tutor-finger.is-pressing path,
.numeric-tutor-finger.is-pressing circle{
    transform:translateY(5px);
}
.numeric-tutor-finger.is-wrong path,
.numeric-tutor-finger.is-wrong circle{
    stroke:var(--numeric-danger);
}
.numeric-hand-home-keys{
    position:absolute;
    left:50%;
    bottom:9px;
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:6px;
    width:min(80%,250px);
    transform:translateX(-50%);
}
.numeric-hand-home-keys span{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:5px;
    min-height:34px;
    border:1px solid var(--numeric-line);
    border-radius:9px;
    color:var(--numeric-blue);
    background:var(--numeric-card);
    font-size:.86rem;
    font-weight:900;
    box-shadow:0 4px 10px rgba(15,23,42,.05);
}
.numeric-hand-home-keys small{
    color:var(--numeric-muted);
    font-size:.58rem;
    font-weight:750;
}

.numeric-hand-home-keys span.is-active{
    color:#fff;
    background:var(--numeric-blue);
    border-color:var(--numeric-blue);
    box-shadow:0 0 0 3px rgba(23,105,255,.14);
}
.numeric-hand-home-keys span.is-active small{color:#e8f1ff}
.numeric-hand-home-keys .home-five{
    border-color:#8db5f4;
    box-shadow:0 0 0 2px rgba(23,105,255,.08);
}
.numeric-hand-tip{
    margin:0 0 10px;
    color:var(--numeric-muted);
    font-size:.78rem;
    line-height:1.5;
}
.numeric-finger-grid [data-finger-chip]{
    transition:border-color .12s ease, background .12s ease, box-shadow .12s ease;
}
.numeric-finger-grid [data-finger-chip].is-active{
    border-color:#8db5f4;
    background:#edf5ff;
    box-shadow:0 0 0 2px rgba(23,105,255,.08);
}
.numeric-finger-grid [data-finger-chip].is-active small{
    color:#285a9e;
    font-weight:800;
}

html[data-theme="dark"] .numeric-hand-tutor,
body.dark-mode .numeric-hand-tutor{
    background:
        radial-gradient(circle at 82% 18%, rgba(79,140,255,.14), transparent 32%),
        var(--numeric-panel);
}
html[data-theme="dark"] .numeric-hand-visual,
body.dark-mode .numeric-hand-visual{
    background:
        linear-gradient(rgba(148,163,184,.045) 1px, transparent 1px),
        linear-gradient(90deg, rgba(148,163,184,.045) 1px, transparent 1px),
        var(--numeric-card);
    background-size:24px 24px;
}
html[data-theme="dark"] .numeric-hand-palm,
body.dark-mode .numeric-hand-palm{
    fill:rgba(148,163,184,.10);
    stroke:#8797ad;
}
html[data-theme="dark"] .numeric-hand-wrist,
body.dark-mode .numeric-hand-wrist,
html[data-theme="dark"] .numeric-tutor-finger path,
body.dark-mode .numeric-tutor-finger path{
    stroke:#8797ad;
}
html[data-theme="dark"] .numeric-tutor-finger circle,
body.dark-mode .numeric-tutor-finger circle{
    fill:#17243a;
    stroke:#8797ad;
}
html[data-theme="dark"] .numeric-tutor-finger.is-active path,
html[data-theme="dark"] .numeric-tutor-finger.is-active circle,
body.dark-mode .numeric-tutor-finger.is-active path,
body.dark-mode .numeric-tutor-finger.is-active circle{
    stroke:#6da0ff;
}
html[data-theme="dark"] .numeric-tutor-finger.is-active circle,
body.dark-mode .numeric-tutor-finger.is-active circle{
    fill:#1d3762;
}
html[data-theme="dark"] .numeric-hand-current,
body.dark-mode .numeric-hand-current{
    color:#cfe0ff;
    background:#142947;
    border-color:#315487;
}
html[data-theme="dark"] .numeric-finger-grid [data-finger-chip].is-active,
body.dark-mode .numeric-finger-grid [data-finger-chip].is-active{
    background:#142947;
    border-color:#315487;
}
html[data-theme="dark"] .numeric-finger-grid [data-finger-chip].is-active small,
body.dark-mode .numeric-finger-grid [data-finger-chip].is-active small{
    color:#b9d1f7;
}

@media (prefers-color-scheme:dark){
    html[data-theme="system"] .numeric-hand-tutor{
        background:
            radial-gradient(circle at 82% 18%, rgba(79,140,255,.14), transparent 32%),
            var(--numeric-panel);
    }
    html[data-theme="system"] .numeric-hand-visual{
        background:
            linear-gradient(rgba(148,163,184,.045) 1px, transparent 1px),
            linear-gradient(90deg, rgba(148,163,184,.045) 1px, transparent 1px),
            var(--numeric-card);
        background-size:24px 24px;
    }
    html[data-theme="system"] .numeric-hand-palm{fill:rgba(148,163,184,.10);stroke:#8797ad}
    html[data-theme="system"] .numeric-hand-wrist,
    html[data-theme="system"] .numeric-tutor-finger path{stroke:#8797ad}
    html[data-theme="system"] .numeric-tutor-finger circle{fill:#17243a;stroke:#8797ad}
    html[data-theme="system"] .numeric-tutor-finger.is-active path,
    html[data-theme="system"] .numeric-tutor-finger.is-active circle{stroke:#6da0ff}
    html[data-theme="system"] .numeric-tutor-finger.is-active circle{fill:#1d3762}
    html[data-theme="system"] .numeric-hand-current{color:#cfe0ff;background:#142947;border-color:#315487}
    html[data-theme="system"] .numeric-finger-grid [data-finger-chip].is-active{background:#142947;border-color:#315487}
    html[data-theme="system"] .numeric-finger-grid [data-finger-chip].is-active small{color:#b9d1f7}
}

@media(max-width:650px){
    .numeric-hand-tutor-heading{display:block}
    .numeric-hand-current{display:inline-flex;margin-top:8px;max-width:none}
    .numeric-hand-visual{min-height:170px}
    .numeric-right-hand{height:158px}
    .numeric-hand-home-keys{width:90%}
    .numeric-hand-home-keys span{font-size:.78rem}
    .numeric-hand-home-keys small{display:none}
}

/* ==========================================================
   v17.8.56 — Learner-first Numpad Tutor layout
   ========================================================== */
.numeric-shell{padding-top:18px}
.numeric-breadcrumb{margin-bottom:10px}
.numeric-intro{
    display:grid;
    grid-template-columns:minmax(0,1.05fr) minmax(420px,.95fr);
    gap:22px;
    align-items:center;
    margin-bottom:16px;
    padding:20px 22px;
    border:1px solid var(--numeric-line);
    border-radius:18px;
    background:var(--numeric-card);
    box-shadow:0 10px 26px rgba(15,23,42,.055);
}
.numeric-intro h1{
    margin:0 0 6px;
    color:var(--numeric-ink);
    font-family:Poppins,Inter,sans-serif;
    font-size:clamp(1.65rem,2.8vw,2.35rem);
    line-height:1.08;
}
.numeric-intro p{
    max-width:690px;
    margin:0;
    color:var(--numeric-muted);
    font-size:.94rem;
    line-height:1.55;
}
.numeric-intro p strong{color:var(--numeric-ink)}
.numeric-start-steps{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:8px;
}
.numeric-start-steps>span{
    display:flex;
    gap:9px;
    align-items:center;
    min-height:64px;
    padding:10px;
    border:1px solid var(--numeric-line);
    border-radius:13px;
    background:var(--numeric-panel);
}
.numeric-start-steps>span>b{
    display:grid;
    place-items:center;
    width:28px;
    height:28px;
    flex:0 0 28px;
    border-radius:9px;
    color:#fff;
    background:var(--numeric-blue);
    font-size:.78rem;
}
.numeric-start-steps strong,.numeric-start-steps small{display:block}
.numeric-start-steps strong{color:var(--numeric-ink);font-size:.77rem;line-height:1.25}
.numeric-start-steps small{margin-top:2px;color:var(--numeric-muted);font-size:.64rem;line-height:1.25}

.numeric-workspace{
    grid-template-columns:minmax(0,1.6fr) minmax(330px,.7fr);
    gap:16px;
    margin-bottom:22px;
}
.numeric-practice-panel{padding:20px}
.numeric-panel-heading{padding-bottom:14px}
.numeric-panel-heading h1,.numeric-panel-heading h2{font-size:1.32rem}
.numeric-panel-heading p{font-size:.88rem}
.numeric-control-grid{margin:14px 0 12px}
.numeric-live-stats{margin:12px 0}
.numeric-live-stats div{padding:10px}
.numeric-target-card{min-height:165px;padding:15px}
.numeric-target{padding:17px 4px 18px}
.numeric-lower-grid{margin-top:10px}

.numeric-keypad-panel{
    padding:14px;
    top:82px;
}
.numeric-hand-tutor-first{
    margin-top:0;
    margin-bottom:11px;
    padding:13px;
    border-color:#bdd2f5;
    background:
        radial-gradient(circle at 84% 10%, rgba(23,105,255,.10), transparent 34%),
        var(--numeric-panel);
}
.numeric-hand-tutor-first .numeric-hand-tutor-heading{margin-bottom:7px}
.numeric-hand-tutor-first .numeric-hand-tutor-heading h3{font-size:1.03rem}
.numeric-hand-tutor-first .numeric-hand-visual{min-height:145px;margin:4px 0 8px}
.numeric-hand-tutor-first .numeric-right-hand{height:137px;margin-top:-2px}
.numeric-hand-tutor-first .numeric-hand-home-keys{bottom:7px;width:min(86%,270px)}
.numeric-hand-tutor-first .numeric-hand-home-keys span{min-height:30px}
.numeric-hand-tip{font-size:.74rem;line-height:1.4;margin-bottom:8px}
.numeric-finger-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
.numeric-finger-grid span{min-width:0;display:block;padding:7px;text-align:center}
.numeric-finger-grid b,.numeric-finger-grid small{display:block}
.numeric-finger-grid b{font-size:.69rem;white-space:nowrap}
.numeric-finger-grid small{margin-top:2px;font-size:.58rem}
.numeric-finger-grid [data-finger-chip="little"]{grid-column:span 2}
.numeric-tutor-finger.is-home path,
.numeric-tutor-finger.is-home circle{
    stroke:#5f8fdb;
    filter:drop-shadow(0 0 3px rgba(23,105,255,.18));
}
.numeric-tutor-finger.is-home circle{fill:#e8f1ff}
.numeric-hand-home-keys span.is-home{
    border-color:#9bbcf0;
    background:#edf5ff;
    color:#0f58d1;
}
.numeric-display{margin-bottom:9px;padding:10px 13px}
.numeric-display strong{font-size:1.7rem;min-height:33px}
.numeric-keypad{grid-template-rows:repeat(5,54px);gap:7px;padding:10px;border-radius:15px}
.numeric-keypad-caption{
    margin:9px 2px 0;
    color:var(--numeric-muted);
    font-size:.7rem;
    line-height:1.42;
}
.numeric-keypad-caption strong{color:var(--numeric-ink)}

html[data-theme="dark"] .numeric-intro,
body.dark-mode .numeric-intro{background:var(--numeric-card)}
html[data-theme="dark"] .numeric-tutor-finger.is-home path,
html[data-theme="dark"] .numeric-tutor-finger.is-home circle,
body.dark-mode .numeric-tutor-finger.is-home path,
body.dark-mode .numeric-tutor-finger.is-home circle{stroke:#6da0ff}
html[data-theme="dark"] .numeric-tutor-finger.is-home circle,
body.dark-mode .numeric-tutor-finger.is-home circle{fill:#172f55}
html[data-theme="dark"] .numeric-hand-home-keys span.is-home,
body.dark-mode .numeric-hand-home-keys span.is-home{background:#142947;border-color:#315487;color:#d8e7ff}

@media (prefers-color-scheme:dark){
    html[data-theme="system"] .numeric-intro{background:var(--numeric-card)}
    html[data-theme="system"] .numeric-tutor-finger.is-home path,
    html[data-theme="system"] .numeric-tutor-finger.is-home circle{stroke:#6da0ff}
    html[data-theme="system"] .numeric-tutor-finger.is-home circle{fill:#172f55}
    html[data-theme="system"] .numeric-hand-home-keys span.is-home{background:#142947;border-color:#315487;color:#d8e7ff}
}

@media(max-width:930px){
    .numeric-intro{grid-template-columns:1fr}
    .numeric-start-steps{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:650px){
    .numeric-intro{padding:16px;border-radius:16px}
    .numeric-intro h1{font-size:1.75rem}
    .numeric-start-steps{grid-template-columns:1fr}
    .numeric-start-steps>span{min-height:54px}
    .numeric-keypad-panel{padding:12px}
    .numeric-hand-tutor-first .numeric-hand-visual{min-height:140px}
    .numeric-hand-tutor-first .numeric-right-hand{height:132px}
    .numeric-finger-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .numeric-finger-grid [data-finger-chip="little"]{grid-column:1/-1}
    .numeric-keypad{grid-template-rows:repeat(5,56px)}
}
@media(max-width:930px){
    .numeric-keypad-panel{order:-1}
}


/* ==========================================================
   v17.8.57 — Wide 3-row Numpad Tutor + integrated hand + sound
   ========================================================== */
.numeric-shell{width:min(1280px,calc(100% - 32px))}
.numeric-intro{grid-template-columns:minmax(0,1.18fr) minmax(430px,.82fr);padding:17px 20px;margin-bottom:14px}
.numeric-intro h1{font-size:clamp(1.6rem,2.3vw,2.15rem)}
.numeric-workspace{grid-template-columns:minmax(0,1.65fr) minmax(390px,.82fr);gap:18px}
.numeric-panel-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.numeric-sound-toggle{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:7px 10px;border:1px solid var(--numeric-line);border-radius:999px;background:var(--numeric-panel);color:var(--numeric-ink);font:800 .72rem Inter,sans-serif;cursor:pointer}
.numeric-sound-toggle:hover{border-color:#9bbcf0;background:var(--numeric-soft)}
.numeric-sound-toggle:focus-visible{outline:3px solid rgba(23,105,255,.18);outline-offset:2px}
.numeric-sound-toggle[aria-pressed="false"]{color:var(--numeric-muted)}
.numeric-practice-panel{padding:21px}
.numeric-target-card{min-height:0;padding:15px 16px 13px}
.numeric-target{display:grid;grid-template-rows:repeat(3,minmax(0,1fr));gap:0;padding:10px 2px 11px;font-size:clamp(1.48rem,2.35vw,2rem);line-height:1.45;letter-spacing:.045em;overflow:hidden;min-height:145px}
.numeric-target-row{display:flex;align-items:center;min-height:47px;white-space:pre;overflow:hidden;border-bottom:1px solid rgba(148,163,184,.26)}
.numeric-target-row:last-child{border-bottom:0}
.numeric-target-home-row{justify-content:center;color:var(--numeric-ink);font-weight:700;letter-spacing:.12em}
.numeric-char{flex:0 0 auto;padding:0 2px;border-radius:5px}
.numeric-keypad-panel{padding:14px;top:82px}
.numeric-keypad-tutor-card{padding:14px;border:1px solid #bcd0ef;border-radius:18px;background:radial-gradient(circle at 82% 8%,rgba(23,105,255,.09),transparent 31%),var(--numeric-panel)}
.numeric-keypad-tutor-card .numeric-hand-tutor-heading{margin-bottom:9px}
.numeric-keypad-tutor-card .numeric-hand-tutor-heading h3{font-size:1.06rem}
.numeric-display{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;column-gap:10px;align-items:end;margin:0 0 10px;padding:9px 12px}
.numeric-display small{grid-column:1;grid-row:1}.numeric-display strong{grid-column:2;grid-row:1/span 2;font-size:1.85rem;min-height:0;align-self:center}.numeric-display span{grid-column:1;grid-row:2}
.numeric-keypad-stage{position:relative;isolation:isolate;padding-bottom:70px}
.numeric-keypad{position:relative;z-index:1;grid-template-rows:repeat(5,66px);gap:8px;padding:11px;border-radius:17px;background:linear-gradient(180deg,#e3eaf2,#d5dee8);box-shadow:inset 0 2px 8px rgba(15,23,42,.11),0 10px 24px rgba(15,23,42,.06)}
.numeric-keypad button{position:relative;z-index:2;font-size:1.25rem;border-radius:9px;background:linear-gradient(180deg,#fff,#eef2f7)}
.numeric-keypad button[data-home-key].is-home{border-color:#6e99dc;box-shadow:0 0 0 2px rgba(23,105,255,.13),0 2px 4px rgba(15,23,42,.08);color:#0f58d1}
.numeric-keypad button[data-key="5"].is-home{background:linear-gradient(180deg,#edf5ff,#dfeeff)}
.numeric-hand-overlay{position:absolute;z-index:3;left:0;right:0;top:20px;width:100%;height:calc(100% - 5px);pointer-events:none;overflow:visible}
.numeric-hand-overlay .numeric-hand-palm{fill:url(#numpadPalm);stroke:#b78f89;stroke-width:2.2;opacity:.9}
.numeric-hand-overlay .numeric-hand-wrist{fill:none;stroke:#9f7b78;stroke-width:3;stroke-linecap:round;opacity:.55}
.numeric-hand-overlay .numeric-tutor-finger path{fill:none;stroke:#8f7778;stroke-width:13;stroke-linecap:round;opacity:.42;transition:stroke .08s ease,opacity .08s ease,filter .08s ease}
.numeric-hand-overlay .numeric-tutor-finger circle{fill:#e8c3b8;stroke:#8f7778;stroke-width:3;opacity:.66;transition:all .08s ease}
.numeric-hand-overlay .numeric-tutor-finger.is-home path,.numeric-hand-overlay .numeric-tutor-finger.is-home circle{stroke:#5685cf;opacity:.72}
.numeric-hand-overlay .numeric-tutor-finger.is-active path{stroke:#1769ff;opacity:.9;filter:drop-shadow(0 0 5px rgba(23,105,255,.35))}
.numeric-hand-overlay .numeric-tutor-finger.is-active circle{fill:#dbeafe;stroke:#1769ff;opacity:1;filter:drop-shadow(0 0 5px rgba(23,105,255,.35))}
.numeric-hand-overlay .numeric-tutor-finger.is-wrong path,.numeric-hand-overlay .numeric-tutor-finger.is-wrong circle{stroke:#dc2626!important}
.numeric-hand-overlay .numeric-tutor-finger.is-pressing{transform:translateY(4px);transform-origin:center;transition:transform .06s ease}
.numeric-home-guide{position:absolute;z-index:4;left:18%;right:18%;bottom:7px;display:grid;grid-template-columns:repeat(3,1fr);gap:7px;pointer-events:none}
.numeric-home-guide span{padding:6px 4px;border:1px solid #bfd2ef;border-radius:9px;background:rgba(248,251,255,.92);text-align:center;color:#275990;font-weight:900;font-size:.75rem;box-shadow:0 4px 12px rgba(15,23,42,.06)}
.numeric-home-guide small{display:block;margin-top:1px;color:#64748b;font-size:.55rem;font-weight:700}.numeric-home-guide .home-five{border-color:#74a3ef;background:#edf5ff}
.numeric-hand-tip{margin:8px 2px 9px;font-size:.76rem;line-height:1.42}
.numeric-finger-grid-compact{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
.numeric-finger-grid-compact span{min-width:0;display:block;padding:7px 5px;text-align:center}
.numeric-finger-grid-compact b,.numeric-finger-grid-compact small{display:block}.numeric-finger-grid-compact b{font-size:.69rem;white-space:nowrap}.numeric-finger-grid-compact small{margin-top:2px;font-size:.57rem}.numeric-finger-grid-compact [data-finger-chip="little"]{grid-column:span 2}
.numeric-keypad-caption{margin-top:8px}
html[data-theme="dark"] .numeric-keypad-tutor-card,body.dark-mode .numeric-keypad-tutor-card{background:radial-gradient(circle at 82% 8%,rgba(79,140,255,.12),transparent 31%),var(--numeric-panel);border-color:#304766}
html[data-theme="dark"] .numeric-keypad,body.dark-mode .numeric-keypad{background:linear-gradient(180deg,#26354b,#1a2739);border-color:#41536c}
html[data-theme="dark"] .numeric-hand-overlay .numeric-hand-palm,body.dark-mode .numeric-hand-overlay .numeric-hand-palm{fill:rgba(190,145,137,.30);stroke:#a6817c}
html[data-theme="dark"] .numeric-hand-overlay .numeric-tutor-finger path,body.dark-mode .numeric-hand-overlay .numeric-tutor-finger path{stroke:#b28f8b}
html[data-theme="dark"] .numeric-hand-overlay .numeric-tutor-finger circle,body.dark-mode .numeric-hand-overlay .numeric-tutor-finger circle{fill:#634a4a;stroke:#b28f8b}
html[data-theme="dark"] .numeric-home-guide span,body.dark-mode .numeric-home-guide span{background:rgba(18,34,56,.94);border-color:#35557e;color:#dbeafe}
html[data-theme="dark"] .numeric-home-guide small,body.dark-mode .numeric-home-guide small{color:#9fb2ca}
@media(prefers-color-scheme:dark){html[data-theme="system"] .numeric-keypad-tutor-card{background:radial-gradient(circle at 82% 8%,rgba(79,140,255,.12),transparent 31%),var(--numeric-panel);border-color:#304766}html[data-theme="system"] .numeric-keypad{background:linear-gradient(180deg,#26354b,#1a2739);border-color:#41536c}html[data-theme="system"] .numeric-hand-overlay .numeric-hand-palm{fill:rgba(190,145,137,.30);stroke:#a6817c}html[data-theme="system"] .numeric-hand-overlay .numeric-tutor-finger path{stroke:#b28f8b}html[data-theme="system"] .numeric-hand-overlay .numeric-tutor-finger circle{fill:#634a4a;stroke:#b28f8b}html[data-theme="system"] .numeric-home-guide span{background:rgba(18,34,56,.94);border-color:#35557e;color:#dbeafe}html[data-theme="system"] .numeric-home-guide small{color:#9fb2ca}}
@media(max-width:1080px){.numeric-workspace{grid-template-columns:minmax(0,1fr) minmax(350px,.82fr)}.numeric-shell{width:min(100% - 24px,1280px)}}
@media(max-width:930px){.numeric-intro{grid-template-columns:1fr}.numeric-workspace{grid-template-columns:1fr}.numeric-keypad-panel{position:static;order:-1}.numeric-keypad-tutor-card{max-width:560px;margin:0 auto}.numeric-target{font-size:clamp(1.35rem,4vw,1.85rem)}}
@media(max-width:650px){.numeric-shell{width:min(100% - 18px,1280px)}.numeric-panel-heading{display:block}.numeric-panel-actions{justify-content:flex-start;margin-top:10px}.numeric-target{font-size:clamp(1.2rem,5.7vw,1.58rem);min-height:132px}.numeric-target-row{min-height:43px}.numeric-keypad{grid-template-rows:repeat(5,58px)}.numeric-keypad-stage{padding-bottom:62px}.numeric-hand-overlay{top:12px}.numeric-home-guide{left:15%;right:15%;bottom:4px}.numeric-finger-grid-compact{grid-template-columns:repeat(2,minmax(0,1fr))}.numeric-finger-grid-compact [data-finger-chip="little"]{grid-column:1/-1}}

/* v17.8.57 sound icon */
.numeric-sound-toggle svg{width:15px;height:15px;fill:currentColor;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.numeric-sound-toggle .numeric-sound-waves,.numeric-sound-toggle .numeric-sound-off-line{fill:none}
.numeric-sound-toggle .numeric-sound-off-line{display:none}
.numeric-sound-toggle[aria-pressed="false"] .numeric-sound-waves{display:none}
.numeric-sound-toggle[aria-pressed="false"] .numeric-sound-off-line{display:block}

/* v17.8.57 dark learning-path contrast */
html[data-theme="dark"] .numeric-feature-grid article.is-live,body.dark-mode .numeric-feature-grid article.is-live{background:linear-gradient(145deg,#132640,#102a2c);border-color:#315487}
html[data-theme="dark"] .numeric-feature-grid article.is-live h3,body.dark-mode .numeric-feature-grid article.is-live h3{color:#f8fafc}
html[data-theme="dark"] .numeric-feature-grid article.is-live p,body.dark-mode .numeric-feature-grid article.is-live p{color:#b9c7d8}
@media(prefers-color-scheme:dark){html[data-theme="system"] .numeric-feature-grid article.is-live{background:linear-gradient(145deg,#132640,#102a2c);border-color:#315487}html[data-theme="system"] .numeric-feature-grid article.is-live h3{color:#f8fafc}html[data-theme="system"] .numeric-feature-grid article.is-live p{color:#b9c7d8}}


/* ==========================================================
   v17.8.58 — lesson-first stacked Numpad Tutor + Capsule hand
   ========================================================== */
/* Match the main tutor's learning order: lesson first, guidance below. */
.numeric-workspace{
    display:flex;
    flex-direction:column;
    gap:16px;
    margin-bottom:22px;
}
.numeric-practice-panel{
    width:100%;
    box-sizing:border-box;
}
.numeric-keypad-panel{
    position:static;
    top:auto;
    order:0;
    width:100%;
    box-sizing:border-box;
    padding:18px;
}
.numeric-keypad-tutor-card{
    width:min(100%,640px);
    max-width:640px;
    margin:0 auto;
}

/* Fixed Capsule-style right hand. There is intentionally no hand-style selector. */
.numeric-keypad-stage{padding-bottom:88px}
.numeric-capsule-numpad-hand{
    top:150px;
    height:335px;
    width:100%;
    z-index:4;
    overflow:visible;
}
.numeric-capsule-numpad-hand .numeric-capsule-palm{
    fill:rgba(251,232,214,.18);
    stroke:rgba(205,167,134,.34);
    stroke-width:2.4;
    filter:drop-shadow(0 3px 5px rgba(116,75,45,.08));
}
.numeric-capsule-numpad-hand .numeric-tutor-finger path{
    fill:none;
    stroke-linecap:round;
    stroke-linejoin:round;
    vector-effect:non-scaling-stroke;
    transition:stroke .08s ease,opacity .08s ease,filter .08s ease,transform .08s ease;
}
.numeric-capsule-numpad-hand .numeric-capsule-outline{
    stroke:rgba(205,167,134,.48);
    stroke-width:25;
    opacity:.90;
    filter:drop-shadow(0 2px 3px rgba(116,75,45,.10));
}
.numeric-capsule-numpad-hand .numeric-capsule-body{
    stroke:rgba(251,232,214,.30);
    stroke-width:20;
    opacity:1;
}
.numeric-capsule-numpad-hand .numeric-capsule-highlight{
    stroke:rgba(255,255,255,.18);
    stroke-width:3.2;
    opacity:.78;
}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-home .numeric-capsule-outline{
    stroke:rgba(75,136,250,.52);
    filter:drop-shadow(0 0 4px rgba(75,136,250,.18));
}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-active .numeric-capsule-outline{
    stroke:#4b88fa;
    opacity:1;
    filter:drop-shadow(0 0 6px rgba(75,136,250,.30));
}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-active .numeric-capsule-body{
    stroke:rgba(252,233,216,.40);
}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-active .numeric-capsule-highlight{
    stroke:rgba(255,255,255,.34);
}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-wrong .numeric-capsule-outline{
    stroke:#dc2626!important;
    opacity:1;
}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-pressing path{
    transform:translateY(4px);
}

html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-capsule-palm,
body.dark-mode .numeric-capsule-numpad-hand .numeric-capsule-palm{
    fill:rgba(232,198,167,.16);
    stroke:rgba(237,211,187,.34);
}
html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-capsule-outline,
body.dark-mode .numeric-capsule-numpad-hand .numeric-capsule-outline{
    stroke:rgba(237,211,187,.42);
}
html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-capsule-body,
body.dark-mode .numeric-capsule-numpad-hand .numeric-capsule-body{
    stroke:rgba(232,198,167,.26);
}
html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-tutor-finger.is-home .numeric-capsule-outline,
body.dark-mode .numeric-capsule-numpad-hand .numeric-tutor-finger.is-home .numeric-capsule-outline,
html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-tutor-finger.is-active .numeric-capsule-outline,
body.dark-mode .numeric-capsule-numpad-hand .numeric-tutor-finger.is-active .numeric-capsule-outline{
    stroke:#6da0ff;
}
@media(prefers-color-scheme:dark){
    html[data-theme="system"] .numeric-capsule-numpad-hand .numeric-capsule-palm{fill:rgba(232,198,167,.16);stroke:rgba(237,211,187,.34)}
    html[data-theme="system"] .numeric-capsule-numpad-hand .numeric-capsule-outline{stroke:rgba(237,211,187,.42)}
    html[data-theme="system"] .numeric-capsule-numpad-hand .numeric-capsule-body{stroke:rgba(232,198,167,.26)}
    html[data-theme="system"] .numeric-capsule-numpad-hand .numeric-tutor-finger.is-home .numeric-capsule-outline,
    html[data-theme="system"] .numeric-capsule-numpad-hand .numeric-tutor-finger.is-active .numeric-capsule-outline{stroke:#6da0ff}
}

/* On smaller screens, keep the lesson visible before the keypad and compress the intro. */
@media(max-width:930px){
    .numeric-keypad-panel{order:0!important}
    .numeric-keypad-tutor-card{width:min(100%,600px);max-width:600px}
}
@media(max-width:650px){
    .numeric-shell{padding-top:10px}
    .numeric-breadcrumb{margin-bottom:7px}
    .numeric-intro{padding:13px 14px;margin-bottom:10px;gap:10px}
    .numeric-intro h1{font-size:1.55rem;margin-bottom:4px}
    .numeric-intro p{font-size:.82rem;line-height:1.42}
    .numeric-start-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
    .numeric-start-steps>span{display:block;min-height:0;padding:7px 6px;text-align:center}
    .numeric-start-steps>span>b{width:23px;height:23px;margin:0 auto 4px;font-size:.68rem;border-radius:7px}
    .numeric-start-steps strong{font-size:.67rem}
    .numeric-start-steps small{display:none}
    .numeric-workspace{gap:11px}
    .numeric-practice-panel{padding:14px}
    .numeric-keypad-panel{padding:10px}
    .numeric-keypad-tutor-card{padding:11px;border-radius:15px}
    .numeric-capsule-numpad-hand{top:135px;height:305px}
    .numeric-keypad-stage{padding-bottom:70px}
}
@media(max-width:430px){
    .numeric-intro-copy .numeric-eyebrow{font-size:.62rem}
    .numeric-intro h1{font-size:1.42rem}
    .numeric-intro p{font-size:.78rem}
    .numeric-start-steps strong{font-size:.62rem}
    .numeric-keypad{grid-template-rows:repeat(5,54px);gap:6px;padding:8px}
    .numeric-capsule-numpad-hand{top:126px;height:288px}
}
/* Keep the Capsule body skin-toned; state is communicated mainly by its outline. */
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-home .numeric-capsule-body{
    stroke:rgba(251,232,214,.30);
}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-home .numeric-capsule-highlight{
    stroke:rgba(255,255,255,.18);
}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-wrong .numeric-capsule-body{
    stroke:rgba(251,232,214,.30)!important;
}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-wrong .numeric-capsule-highlight{
    stroke:rgba(255,255,255,.16)!important;
}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-pressing{transform:translateY(3px)}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-pressing path{transform:none}
html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-tutor-finger.is-home .numeric-capsule-body,
body.dark-mode .numeric-capsule-numpad-hand .numeric-tutor-finger.is-home .numeric-capsule-body,
html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-tutor-finger.is-wrong .numeric-capsule-body,
body.dark-mode .numeric-capsule-numpad-hand .numeric-tutor-finger.is-wrong .numeric-capsule-body{stroke:rgba(232,198,167,.26)!important}
@media(prefers-color-scheme:dark){
    html[data-theme="system"] .numeric-capsule-numpad-hand .numeric-tutor-finger.is-home .numeric-capsule-body,
    html[data-theme="system"] .numeric-capsule-numpad-hand .numeric-tutor-finger.is-wrong .numeric-capsule-body{stroke:rgba(232,198,167,.26)!important}
}
/* Let the keypad sit beneath the lesson like the main tutor keyboard, without a second full-width card shell. */
.numeric-keypad-panel{
    background:transparent;
    border:0;
    box-shadow:none;
    padding:0;
}


/* ==========================================================
   v17.8.59 — compact lesson-first layout + 3-minute minimum
   Keep the tutor visible sooner without reducing the 3-row lesson.
   ========================================================== */
.numeric-shell{padding-top:12px}
.numeric-breadcrumb{margin-bottom:7px;font-size:.78rem}
.numeric-intro{
    padding:12px 16px;
    margin-bottom:10px;
    gap:14px;
    border-radius:16px;
}
.numeric-intro h1{font-size:clamp(1.48rem,2vw,1.88rem);margin-bottom:3px}
.numeric-intro p{font-size:.84rem;line-height:1.42}
.numeric-start-steps{gap:6px}
.numeric-start-steps>span{min-height:48px;padding:7px 8px;gap:7px;border-radius:11px}
.numeric-start-steps>span>b{width:24px;height:24px;flex-basis:24px;border-radius:7px;font-size:.68rem}
.numeric-start-steps strong{font-size:.70rem}
.numeric-start-steps small{font-size:.58rem}
.numeric-workspace{gap:10px}
.numeric-practice-panel{padding:15px 16px 14px}
.numeric-panel-heading{padding-bottom:9px;gap:10px}
.numeric-panel-heading h1,.numeric-panel-heading h2{font-size:1.16rem;margin-bottom:2px}
.numeric-panel-heading p{font-size:.78rem;line-height:1.4}
.numeric-panel-actions{gap:6px}
.numeric-sound-toggle{min-height:30px;padding:5px 9px;font-size:.67rem}
.numeric-status-pill{padding:6px 9px;font-size:.68rem}
.numeric-control-grid{margin:9px 0 8px;gap:10px}
.numeric-option-group legend{margin-bottom:5px;font-size:.65rem}
.numeric-segmented{gap:5px}
.numeric-segmented button{padding:7px 10px;border-radius:9px;font-size:.76rem}
.numeric-live-stats{margin:8px 0;gap:6px}
.numeric-live-stats div{padding:7px 8px;border-radius:11px}
.numeric-live-stats span{font-size:.60rem}
.numeric-live-stats strong{font-size:1.18rem;margin-top:1px}
.numeric-target-card{padding:10px 12px 9px;border-radius:14px}
.numeric-target-topline{font-size:.65rem}
.numeric-target{min-height:118px;padding:5px 1px 6px;font-size:clamp(1.35rem,2.15vw,1.82rem);line-height:1.34}
.numeric-target-row{min-height:38px}
.numeric-progress-track{height:5px}
.numeric-controls{margin-top:8px;gap:6px}
.numeric-controls button{min-height:36px;border-radius:9px;font-size:.76rem}
.numeric-message{min-height:18px;margin:7px 2px 0;font-size:.74rem;line-height:1.35}
.numeric-lower-grid{margin-top:8px;gap:7px}
.numeric-insight-card{padding:8px 10px;border-radius:11px}
.numeric-insight-card span,.numeric-insight-card small{font-size:.64rem}
.numeric-insight-card strong{margin:2px 0;font-size:.82rem}
.numeric-keypad-panel{padding-top:2px}

@media(max-width:930px){
    .numeric-intro{grid-template-columns:1fr}
    .numeric-start-steps{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:650px){
    .numeric-shell{padding-top:8px}
    .numeric-intro{padding:10px 11px;margin-bottom:8px}
    .numeric-intro h1{font-size:1.34rem}
    .numeric-intro p{font-size:.75rem}
    .numeric-start-steps>span{padding:6px 4px}
    .numeric-start-steps strong{font-size:.61rem}
    .numeric-practice-panel{padding:11px}
    .numeric-panel-heading{padding-bottom:7px}
    .numeric-control-grid{margin:7px 0 6px}
    .numeric-live-stats{margin:6px 0}
    .numeric-target{min-height:108px;font-size:clamp(1.15rem,5.2vw,1.45rem)}
    .numeric-target-row{min-height:35px}
    .numeric-lower-grid{grid-template-columns:1fr 1fr}
    .numeric-insight-card small{display:none}
}
@media(max-width:430px){
    .numeric-start-steps small{display:none}
    .numeric-segmented button{padding:7px 8px;font-size:.72rem}
    .numeric-live-stats strong{font-size:1.05rem}
}


/* ==========================================================
   v17.8.60 — cleaner lesson area + three-line preview
   Keep secondary history after the keypad, not inside the lesson.
   ========================================================== */
.numeric-target-card{
    min-height:0;
}
.numeric-target{
    min-height:108px;
    grid-template-rows:repeat(3,34px);
    padding:4px 1px 5px;
    align-content:start;
}
.numeric-target-row{
    min-height:34px;
    height:34px;
    line-height:34px;
}
.numeric-target-home-row{
    justify-content:center;
}

/* Saved history is useful, but secondary to lesson + keypad guidance. */
.numeric-progress-summary{
    width:min(100%,640px);
    margin:-4px auto 20px;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
    color:var(--numeric-ink);
}
.numeric-progress-summary>div{
    min-width:0;
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    align-items:center;
    gap:8px;
    padding:8px 10px;
    border-top:1px solid var(--numeric-line);
    color:var(--numeric-muted);
}
.numeric-progress-summary span{
    font-size:.67rem;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.055em;
}
.numeric-progress-summary strong{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    color:var(--numeric-ink);
    font-size:.76rem;
}
.numeric-progress-summary small{
    color:var(--numeric-muted);
    font-size:.61rem;
    white-space:nowrap;
}

@media(max-width:650px){
    .numeric-target{min-height:102px;grid-template-rows:repeat(3,32px);padding:3px 1px 4px}
    .numeric-target-row{min-height:32px;height:32px;line-height:32px}
    .numeric-progress-summary{grid-template-columns:1fr;margin-top:-2px;margin-bottom:14px;gap:0}
    .numeric-progress-summary>div{grid-template-columns:auto minmax(0,1fr);padding:7px 4px}
    .numeric-progress-summary small{display:none}
}


/* ==========================================================
   v17.8.61 — direct-to-practice opening
   The standalone intro card was removed. The practice heading
   is now the page H1 so the learner reaches the lesson first.
========================================================== */
.numeric-workspace{margin-top:0}
.numeric-panel-heading h1 strong,.numeric-panel-heading p strong{color:var(--numeric-ink)}

/* ==========================================================
   v17.8.62 — first-key start + cleaner control surface
   Remove repeated heading/action rows; start timing on first valid key.
   ========================================================== */
.numeric-visually-hidden{
    position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;
    overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;
}
.numeric-practice-panel{padding-top:14px}
.numeric-control-grid{
    grid-template-columns:minmax(0,1.35fr) minmax(220px,.62fr) auto;
    align-items:end;
    margin-top:0;
}
.numeric-feedback-option{display:flex;flex-direction:column;align-items:flex-end;gap:5px;min-width:102px}
.numeric-control-label{font-size:.65rem;font-weight:800;color:var(--numeric-muted);text-transform:uppercase;letter-spacing:.08em}
.numeric-feedback-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-height:30px}
.numeric-inline-status{display:inline-flex;align-items:center;min-height:30px;padding:5px 9px;border-radius:999px;border:1px solid var(--numeric-line);background:var(--numeric-panel);font-size:.67rem;font-weight:800;color:var(--numeric-muted);white-space:nowrap}
.numeric-inline-status[hidden]{display:none!important}
.numeric-inline-status.is-warning{color:var(--numeric-warning);border-color:#d6a84b}
.numeric-inline-status.is-success{color:var(--numeric-success);border-color:#4eb98e}
.numeric-controls,.numeric-message{display:none!important}
.numeric-target-card{margin-top:8px}
@media(max-width:900px){
    .numeric-control-grid{grid-template-columns:minmax(0,1fr) minmax(190px,.62fr)}
    .numeric-feedback-option{grid-column:1/-1;align-items:flex-start}
    .numeric-feedback-actions{justify-content:flex-start}
}
@media(max-width:650px){
    .numeric-control-grid{grid-template-columns:1fr;gap:7px}
    .numeric-feedback-option{grid-column:auto;align-items:flex-start}
    .numeric-control-label{display:none}
    .numeric-target-card{margin-top:5px}
}


/* ============================================================
   v17.8.63 — direct keypad tutor surface
   Remove the redundant tutor title/next-key header so the keypad
   and capsule hand are the first visual teaching elements.
   ============================================================ */
.numeric-keypad-tutor-card-direct{
  padding-top:10px;
}
.numeric-keypad-tutor-card-direct .numeric-keypad-stage{
  margin-top:0;
}
@media (max-width:720px){
  .numeric-keypad-tutor-card-direct{padding-top:8px}
}

/* ==========================================================
   v17.8.64 — Improved numpad capsule hand motion
   Cleaner capsule drawing and finger-specific movement.
   ========================================================== */
.numeric-capsule-numpad-hand .numeric-capsule-palm{
    fill:rgba(231,198,167,.18);
    stroke:rgba(204,168,135,.34);
    stroke-width:2;
}

.numeric-capsule-numpad-hand .numeric-tutor-finger{
    transition:transform .16s cubic-bezier(.22,.8,.24,1), opacity .14s ease, filter .14s ease;
}

.numeric-capsule-numpad-hand .numeric-tutor-finger path{
    transition:stroke .14s ease, opacity .14s ease, filter .14s ease;
    stroke-linecap:round;
    stroke-linejoin:round;
    vector-effect:non-scaling-stroke;
}

.numeric-capsule-numpad-hand .numeric-capsule-outline{
    stroke-width:24;
    opacity:.94;
    filter:drop-shadow(0 1px 2px rgba(92,65,44,.10));
}

.numeric-capsule-numpad-hand .numeric-capsule-body{
    stroke-width:19;
    opacity:.96;
}

.numeric-capsule-numpad-hand .numeric-capsule-highlight{
    stroke-width:7;
    opacity:.28;
}

.numeric-capsule-numpad-hand [data-tutor-finger="index"]{transform-origin:625px 244px}
.numeric-capsule-numpad-hand [data-tutor-finger="middle"]{transform-origin:715px 245px}
.numeric-capsule-numpad-hand [data-tutor-finger="ring"]{transform-origin:806px 248px}
.numeric-capsule-numpad-hand [data-tutor-finger="little"]{transform-origin:892px 252px}
.numeric-capsule-numpad-hand [data-tutor-finger="thumb"]{transform-origin:578px 254px}

.numeric-capsule-numpad-hand [data-tutor-finger="index"].is-active{
    transform:translate(-7px,3px) rotate(-5deg);
}
.numeric-capsule-numpad-hand [data-tutor-finger="middle"].is-active{
    transform:translate(0,4px) rotate(0deg);
}
.numeric-capsule-numpad-hand [data-tutor-finger="ring"].is-active{
    transform:translate(7px,3px) rotate(5deg);
}
.numeric-capsule-numpad-hand [data-tutor-finger="little"].is-active{
    transform:translate(9px,2px) rotate(8deg);
}
.numeric-capsule-numpad-hand [data-tutor-finger="thumb"].is-active{
    transform:translate(-10px,9px) rotate(-13deg);
}

.numeric-capsule-numpad-hand [data-tutor-finger].is-home{
    opacity:.98;
}

.numeric-capsule-numpad-hand [data-tutor-finger].is-pressing{
    filter:drop-shadow(0 0 6px rgba(75,136,250,.12));
}
.numeric-capsule-numpad-hand [data-tutor-finger="index"].is-pressing{transform:translate(-9px,6px) rotate(-6deg)}
.numeric-capsule-numpad-hand [data-tutor-finger="middle"].is-pressing{transform:translate(0,7px)}
.numeric-capsule-numpad-hand [data-tutor-finger="ring"].is-pressing{transform:translate(8px,6px) rotate(6deg)}
.numeric-capsule-numpad-hand [data-tutor-finger="little"].is-pressing{transform:translate(11px,5px) rotate(9deg)}
.numeric-capsule-numpad-hand [data-tutor-finger="thumb"].is-pressing{transform:translate(-13px,12px) rotate(-14deg)}

html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-capsule-palm,
body.dark-mode .numeric-capsule-numpad-hand .numeric-capsule-palm{
    fill:rgba(232,198,167,.16);
    stroke:rgba(237,211,187,.30);
}

html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-capsule-outline,
body.dark-mode .numeric-capsule-numpad-hand .numeric-capsule-outline{
    filter:drop-shadow(0 1px 2px rgba(2,6,23,.18));
}

/* ==========================================================
   v17.8.65 — centered responsive lesson text + real Numpad course
   ========================================================== */
.numeric-target{
    width:100%;
    max-width:100%;
    overflow:hidden;
}
.numeric-target-row{
    width:100%;
    max-width:100%;
    justify-content:center!important;
    text-align:center;
    overflow:hidden;
    white-space:pre;
}
.numeric-target-row .numeric-char{
    flex:0 0 auto;
}

.numeric-lesson-picker{min-width:0}
.numeric-lesson-select-wrap{display:block;min-width:0}
.numeric-lesson-select-wrap select{
    width:100%;
    min-height:34px;
    border:1px solid var(--numeric-line);
    border-radius:9px;
    background:var(--numeric-panel);
    color:var(--numeric-ink);
    padding:6px 32px 6px 10px;
    font:inherit;
    font-size:.75rem;
    font-weight:750;
    cursor:pointer;
    outline:none;
}
.numeric-lesson-select-wrap select:hover{border-color:#a9c8ff}
.numeric-lesson-select-wrap select:focus-visible{border-color:var(--numeric-blue);box-shadow:0 0 0 3px rgba(23,105,255,.12)}
.numeric-lesson-meta{
    display:block;
    margin-top:5px;
    color:var(--numeric-muted);
    font-size:.65rem;
    line-height:1.35;
}

.numeric-course-roadmap{padding:18px}
.numeric-course-grid{
    display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:7px;
    margin-top:12px;
}
.numeric-course-lesson{
    appearance:none;
    border:1px solid var(--numeric-line);
    background:var(--numeric-panel);
    color:var(--numeric-ink);
    border-radius:12px;
    min-width:0;
    padding:10px;
    display:grid;
    grid-template-columns:auto minmax(0,1fr);
    grid-template-areas:"num title" "num note";
    column-gap:8px;
    row-gap:2px;
    text-align:left;
    cursor:pointer;
    transition:border-color .14s ease,background .14s ease,transform .14s ease,box-shadow .14s ease;
}
.numeric-course-lesson:hover{border-color:#9fc2ff;transform:translateY(-1px)}
.numeric-course-lesson:focus-visible{outline:0;box-shadow:0 0 0 3px rgba(23,105,255,.13)}
.numeric-course-lesson>span{
    grid-area:num;
    align-self:start;
    display:grid;
    place-items:center;
    width:27px;
    height:27px;
    border-radius:8px;
    background:#edf4ff;
    color:var(--numeric-blue);
    font-size:.65rem;
    font-weight:900;
}
.numeric-course-lesson>strong{grid-area:title;font-size:.72rem;line-height:1.2;white-space:normal}
.numeric-course-lesson>small{grid-area:note;color:var(--numeric-muted);font-size:.61rem;line-height:1.2}
.numeric-course-lesson.is-current{border-color:#7eaeff;background:#f3f7ff;box-shadow:inset 0 0 0 1px rgba(23,105,255,.08)}
.numeric-course-lesson.is-mastered>span{background:#e9f9f1;color:#0f9f6e}

html[data-theme="dark"] .numeric-lesson-select-wrap select,
body.dark-mode .numeric-lesson-select-wrap select,
html[data-theme="dark"] .numeric-course-lesson,
body.dark-mode .numeric-course-lesson{
    background:#0f1c30;
    border-color:#2c4161;
    color:#edf4ff;
}
html[data-theme="dark"] .numeric-course-lesson>span,
body.dark-mode .numeric-course-lesson>span{background:#14294a;color:#7eaeff}
html[data-theme="dark"] .numeric-course-lesson.is-current,
body.dark-mode .numeric-course-lesson.is-current{background:#132541;border-color:#4e7fc9}
html[data-theme="dark"] .numeric-course-lesson.is-mastered>span,
body.dark-mode .numeric-course-lesson.is-mastered>span{background:#12372d;color:#6ee7b7}

@media(prefers-color-scheme:dark){
    html[data-theme="system"] .numeric-lesson-select-wrap select,
    html[data-theme="system"] .numeric-course-lesson{background:#0f1c30;border-color:#2c4161;color:#edf4ff}
    html[data-theme="system"] .numeric-course-lesson>span{background:#14294a;color:#7eaeff}
    html[data-theme="system"] .numeric-course-lesson.is-current{background:#132541;border-color:#4e7fc9}
    html[data-theme="system"] .numeric-course-lesson.is-mastered>span{background:#12372d;color:#6ee7b7}
}

@media(max-width:1050px){
    .numeric-course-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:700px){
    .numeric-course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .numeric-target{font-size:clamp(1.05rem,4.5vw,1.36rem)!important;letter-spacing:.025em!important}
    .numeric-target-row{padding-inline:2px}
}
@media(max-width:430px){
    .numeric-course-roadmap{padding:14px}
    .numeric-course-grid{grid-template-columns:1fr;gap:6px}
    .numeric-course-lesson{padding:8px 9px}
    .numeric-lesson-meta{font-size:.61rem}
    .numeric-target{font-size:clamp(.92rem,4.6vw,1.14rem)!important;letter-spacing:.012em!important}
}


/* ==========================================================
   v17.8.66 — cleaner unified right-hand capsule tutor
   Uses a single connected right-hand silhouette with softer palm,
   steadier capsule fingers, and professional motion.
   ========================================================== */
.numeric-keypad-stage{min-height:460px}
.numeric-capsule-numpad-hand{
  top:118px;
  left:14px;
  right:10px;
  height:332px;
  pointer-events:none;
}
.numeric-capsule-numpad-hand .numeric-capsule-wrist{
  fill:rgba(223,188,162,.22);
}
.numeric-capsule-numpad-hand .numeric-capsule-palm{
  fill:rgba(231,198,167,.24);
  stroke:rgba(192,151,118,.32);
  stroke-width:2;
}
.numeric-capsule-numpad-hand .numeric-capsule-bridge{
  fill:none;
  stroke:rgba(206,174,146,.22);
  stroke-width:24;
  stroke-linecap:round;
}
.numeric-capsule-numpad-hand .numeric-capsule-outline{
  stroke:#f6e9d8;
  stroke-width:26;
  opacity:.96;
}
.numeric-capsule-numpad-hand .numeric-capsule-body{
  stroke:rgba(205,171,140,.98);
  stroke-width:20;
  opacity:.98;
}
.numeric-capsule-numpad-hand .numeric-capsule-highlight{
  stroke:rgba(255,255,255,.30);
  stroke-width:6;
  opacity:.42;
}
.numeric-capsule-numpad-hand [data-tutor-finger]{transition:transform .18s cubic-bezier(.22,.8,.24,1),filter .14s ease,opacity .14s ease}
.numeric-capsule-numpad-hand [data-tutor-finger="thumb"]{transform-origin:592px 279px}
.numeric-capsule-numpad-hand [data-tutor-finger="index"]{transform-origin:649px 264px}
.numeric-capsule-numpad-hand [data-tutor-finger="middle"]{transform-origin:723px 260px}
.numeric-capsule-numpad-hand [data-tutor-finger="ring"]{transform-origin:794px 264px}
.numeric-capsule-numpad-hand [data-tutor-finger="little"]{transform-origin:857px 271px}
.numeric-capsule-numpad-hand [data-tutor-finger].is-home{opacity:.98}
.numeric-capsule-numpad-hand [data-tutor-finger="index"].is-active{transform:translate(-6px,2px) rotate(-4deg)}
.numeric-capsule-numpad-hand [data-tutor-finger="middle"].is-active{transform:translate(0,3px)}
.numeric-capsule-numpad-hand [data-tutor-finger="ring"].is-active{transform:translate(5px,2px) rotate(3deg)}
.numeric-capsule-numpad-hand [data-tutor-finger="little"].is-active{transform:translate(8px,1px) rotate(5deg)}
.numeric-capsule-numpad-hand [data-tutor-finger="thumb"].is-active{transform:translate(-10px,7px) rotate(-11deg)}
.numeric-capsule-numpad-hand [data-tutor-finger].is-pressing{filter:drop-shadow(0 0 7px rgba(75,136,250,.14))}
.numeric-capsule-numpad-hand [data-tutor-finger="index"].is-pressing{transform:translate(-8px,5px) rotate(-5deg)}
.numeric-capsule-numpad-hand [data-tutor-finger="middle"].is-pressing{transform:translate(0,6px)}
.numeric-capsule-numpad-hand [data-tutor-finger="ring"].is-pressing{transform:translate(6px,5px) rotate(4deg)}
.numeric-capsule-numpad-hand [data-tutor-finger="little"].is-pressing{transform:translate(9px,4px) rotate(6deg)}
.numeric-capsule-numpad-hand [data-tutor-finger="thumb"].is-pressing{transform:translate(-12px,10px) rotate(-12deg)}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-active .numeric-capsule-outline,
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-home .numeric-capsule-outline{stroke:#6da0ff}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-active .numeric-capsule-body{stroke:#c5dafd}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-home .numeric-capsule-body{stroke:rgba(193,212,250,.95)}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-wrong .numeric-capsule-outline{stroke:#e24b4b!important}
.numeric-capsule-numpad-hand .numeric-tutor-finger.is-wrong .numeric-capsule-body{stroke:#efb0ab!important}
html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-capsule-wrist,
body.dark-mode .numeric-capsule-numpad-hand .numeric-capsule-wrist{fill:rgba(219,179,154,.16)}
html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-capsule-palm,
body.dark-mode .numeric-capsule-numpad-hand .numeric-capsule-palm{fill:rgba(232,198,167,.18);stroke:rgba(237,211,187,.24)}
html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-capsule-bridge,
body.dark-mode .numeric-capsule-numpad-hand .numeric-capsule-bridge{stroke:rgba(237,211,187,.18)}
html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-capsule-outline,
body.dark-mode .numeric-capsule-numpad-hand .numeric-capsule-outline{stroke:#f1dfcc}
html[data-theme="dark"] .numeric-capsule-numpad-hand .numeric-capsule-body,
body.dark-mode .numeric-capsule-numpad-hand .numeric-capsule-body{stroke:rgba(206,170,140,.92)}
@media (max-width:900px){
  .numeric-keypad-stage{min-height:430px}
  .numeric-capsule-numpad-hand{top:116px;height:306px;left:16px;right:12px}
}
@media (max-width:640px){
  .numeric-keypad-stage{min-height:390px}
  .numeric-capsule-numpad-hand{top:108px;height:274px;left:18px;right:14px}
}

/* ==========================================================
   v17.8.67 — MAIN TUTOR CAPSULE RIGHT HAND (copied style)
   This is intentionally the same Capsule/Ribbon visual language
   used by the main tutor. Only the complete RIGHT hand is shown.
   ========================================================== */
.numeric-main-capsule-right-hand{
  position:absolute;
  z-index:5;
  left:0;
  right:0;
  top:7px;
  width:100%;
  height:calc(100% - 8px);
  overflow:visible;
  pointer-events:none;
  --capsule-skin:rgba(238,225,209,.48);
  --capsule-skin-active:rgba(238,225,209,.56);
  --capsule-skin-correct:rgba(214,235,220,.42);
  --capsule-skin-wrong:rgba(241,214,214,.42);
  --capsule-edge:rgba(170,139,112,.58);
  --capsule-edge-active:rgba(66,126,244,.68);
  --capsule-edge-correct:rgba(22,163,74,.82);
  --capsule-edge-wrong:rgba(220,38,38,.82);
  --capsule-highlight:rgba(255,255,255,.17);
}
.numeric-main-capsule-right-hand .capsule-ribbon-segment{
  display:block;
  fill:none;
  stroke-linecap:round;
  stroke-linejoin:round;
  vector-effect:non-scaling-stroke;
  transition:stroke .16s ease,opacity .16s ease,filter .16s ease;
}
.numeric-main-capsule-right-hand .capsule-ribbon-base{
  display:block;
  fill:var(--capsule-skin);
  stroke:var(--capsule-edge);
  stroke-width:1.7px;
  opacity:.72;
}
.numeric-main-capsule-right-hand .finger-joint{
  display:block;
  fill:transparent;
  stroke:rgba(143,103,75,.22);
  stroke-width:1.05px;
  opacity:.52;
}
.numeric-main-capsule-right-hand .capsule-ribbon-outline.capsule-lower{stroke-width:30px}
.numeric-main-capsule-right-hand .capsule-ribbon-outline.capsule-middle{stroke-width:25px}
.numeric-main-capsule-right-hand .capsule-ribbon-outline.capsule-upper{stroke-width:19.5px}
.numeric-main-capsule-right-hand .capsule-ribbon-body.capsule-lower{stroke-width:25.5px}
.numeric-main-capsule-right-hand .capsule-ribbon-body.capsule-middle{stroke-width:20px}
.numeric-main-capsule-right-hand .capsule-ribbon-body.capsule-upper{stroke-width:15.5px}
.numeric-main-capsule-right-hand .capsule-ribbon-highlight.capsule-lower{stroke-width:6.8px}
.numeric-main-capsule-right-hand .capsule-ribbon-highlight.capsule-middle{stroke-width:5.1px}
.numeric-main-capsule-right-hand .capsule-ribbon-highlight.capsule-upper{stroke-width:4.2px}
.numeric-main-capsule-right-hand .capsule-ribbon-outline{
  stroke:var(--capsule-edge);
  filter:drop-shadow(0 1px 1px rgba(73,50,34,.06));
}
.numeric-main-capsule-right-hand .capsule-ribbon-body{stroke:var(--capsule-skin)}
.numeric-main-capsule-right-hand .capsule-ribbon-highlight{stroke:var(--capsule-highlight);opacity:.56}
.numeric-main-capsule-right-hand .finger-home .capsule-ribbon-outline,
.numeric-main-capsule-right-hand .finger-active .capsule-ribbon-outline,
.numeric-main-capsule-right-hand .finger-active .capsule-ribbon-base{
  stroke:var(--capsule-edge-active)!important;
  filter:drop-shadow(0 0 3px rgba(37,99,235,.14));
}
.numeric-main-capsule-right-hand .finger-active .capsule-ribbon-body{stroke:var(--capsule-skin-active)}
.numeric-main-capsule-right-hand .finger-wrong .capsule-ribbon-outline,
.numeric-main-capsule-right-hand .finger-wrong .capsule-ribbon-base{stroke:var(--capsule-edge-wrong)!important}
.numeric-main-capsule-right-hand .finger-wrong .capsule-ribbon-body{stroke:var(--capsule-skin-wrong)}
.numeric-main-capsule-right-hand .articulated-thumb .capsule-ribbon-outline.capsule-lower{stroke-width:43px}
.numeric-main-capsule-right-hand .articulated-thumb .capsule-ribbon-outline.capsule-upper{stroke-width:36px}
.numeric-main-capsule-right-hand .articulated-thumb .capsule-ribbon-body.capsule-lower{stroke-width:36px}
.numeric-main-capsule-right-hand .articulated-thumb .capsule-ribbon-body.capsule-upper{stroke-width:29px}
.numeric-main-capsule-right-hand .articulated-thumb .capsule-ribbon-highlight.capsule-lower{stroke-width:8px}
.numeric-main-capsule-right-hand .articulated-thumb .capsule-ribbon-highlight.capsule-upper{stroke-width:6px}
.numeric-main-capsule-right-hand .finger-press .capsule-ribbon-segment,
.numeric-main-capsule-right-hand .finger-press .capsule-ribbon-base{
  animation:numericMainCapsulePress .12s ease;
  transform-box:fill-box;
  transform-origin:center bottom;
}
@keyframes numericMainCapsulePress{
  0%{transform:translateY(0)}
  48%{transform:translateY(3px)}
  100%{transform:translateY(0)}
}
html[data-theme="dark"] .numeric-main-capsule-right-hand,
body.dark-mode .numeric-main-capsule-right-hand{
  --capsule-skin:rgba(204,171,141,.36);
  --capsule-skin-active:rgba(214,183,153,.40);
  --capsule-skin-correct:rgba(97,171,116,.28);
  --capsule-skin-wrong:rgba(190,124,124,.30);
  --capsule-edge:rgba(221,196,173,.54);
  --capsule-edge-active:rgba(106,161,255,.82);
  --capsule-highlight:rgba(255,241,231,.10);
}
@media(prefers-color-scheme:dark){
  html[data-theme="system"] .numeric-main-capsule-right-hand{
    --capsule-skin:rgba(204,171,141,.36);
    --capsule-skin-active:rgba(214,183,153,.40);
    --capsule-edge:rgba(221,196,173,.54);
    --capsule-edge-active:rgba(106,161,255,.82);
    --capsule-highlight:rgba(255,241,231,.10);
  }
}
@media(max-width:650px){
  .numeric-main-capsule-right-hand{top:6px;height:calc(100% - 6px)}
}


/* ==========================================================
   v17.8.68 — Numpad canonical section + right-hand pose polish
   Thumb targets the far-left of 0; little finger is less splayed;
   finger bases are closer together for a more natural right hand.
   ========================================================== */
.numeric-main-capsule-right-hand{
  transform:translateX(-1px);
}
.numeric-main-capsule-right-hand .little-finger .capsule-ribbon-base{
  opacity:.96;
}


/* ==========================================================
   v17.8.69 — proximal joint alignment polish
   The copied main-tutor right hand keeps the same visual style;
   only the back/proximal joint positions are lifted in JS.
   ========================================================== */
.numeric-main-capsule-right-hand .finger-joint{
  filter:drop-shadow(0 1px 1px rgba(15,23,42,.05));
}


/* ==========================================================
   v17.8.70 — arm-side base-joint correction
   The user-facing back/base joints are raised toward the keypad.
   Fingertip targets remain unchanged.
   ========================================================== */
.numeric-main-capsule-right-hand .capsule-ribbon-base{
  filter:drop-shadow(0 1px 1px rgba(92,65,44,.08));
}


/* ==========================================================
   v17.10.34 — Progressive 24-lesson Numpad course roadmap
   ========================================================== */
.numeric-course-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important;margin-top:12px}
.numeric-course-stage{min-width:0;padding:11px;border:1px solid var(--numeric-line);border-radius:14px;background:#f8fbff}
.numeric-course-stage-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;padding:0 2px}
.numeric-course-stage-heading strong{font-size:.72rem;color:var(--numeric-ink)}
.numeric-course-stage-heading span{font-size:.58rem;color:var(--numeric-muted);font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.numeric-course-stage-lessons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.numeric-course-lesson{padding:8px!important}
.numeric-course-lesson.is-locked{opacity:.48;cursor:not-allowed;transform:none!important;filter:saturate(.5)}
.numeric-course-lesson.is-locked:hover{border-color:var(--numeric-line)}
.numeric-course-lesson:disabled{pointer-events:none}
.numeric-lesson-select-wrap option:disabled{color:#94a3b8}
html[data-theme="dark"] .numeric-course-stage,body.dark-mode .numeric-course-stage{background:#0d192a;border-color:#2c4161}
@media(prefers-color-scheme:dark){html[data-theme="system"] .numeric-course-stage{background:#0d192a;border-color:#2c4161}}
@media(max-width:900px){.numeric-course-grid{grid-template-columns:1fr!important}.numeric-course-stage-lessons{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.numeric-course-stage-lessons{grid-template-columns:1fr}.numeric-course-stage{padding:9px}}

/* Source: /numpad/numpad-hub.css */
/* TypingTutor.Online Numpad Hub v17.8.73 */
.numpad-subnav{width:min(1500px,calc(100% - 28px));margin:10px auto 0;display:flex;align-items:center;gap:6px;padding:6px;border:1px solid var(--numeric-line,#dbe5f2);border-radius:13px;background:var(--numeric-card,#fff);box-shadow:0 6px 20px rgba(15,23,42,.04);overflow-x:auto;scrollbar-width:none}
.numpad-subnav::-webkit-scrollbar{display:none}.numpad-subnav a{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:34px;padding:7px 13px;border-radius:9px;color:var(--numeric-muted,#64748b);text-decoration:none;font-size:.76rem;font-weight:800;white-space:nowrap}.numpad-subnav a:hover{background:var(--numeric-panel,#f8fbff);color:var(--numeric-blue,#1769ff)}.numpad-subnav a[aria-current="page"]{background:var(--numeric-blue,#1769ff);color:#fff}
.numpad-page-shell{width:min(1500px,calc(100% - 32px));margin:0 auto;padding:16px 0 54px;color:var(--numeric-ink,#0f172a)}.numpad-page-shell .numeric-breadcrumb{margin-bottom:10px}.numpad-page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:0 0 14px}.numpad-page-header h1{font-family:Poppins,Inter,sans-serif;font-size:clamp(1.55rem,2.8vw,2.15rem);line-height:1.15;margin:0 0 5px;color:var(--numeric-ink,#0f172a)}.numpad-page-header p{max-width:780px;margin:0;color:var(--numeric-muted,#64748b);font-size:.88rem;line-height:1.55}.numpad-page-badge{flex:0 0 auto;border:1px solid #bad2fa;background:#eef5ff;color:#1559d3;border-radius:999px;padding:7px 11px;font-size:.7rem;font-weight:850}
.numpad-work-card{background:var(--numeric-card,#fff);border:1px solid var(--numeric-line,#dbe5f2);border-radius:18px;box-shadow:0 10px 28px rgba(15,23,42,.06);padding:16px}.numpad-work-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(300px,.62fr);gap:12px;align-items:start}.numpad-mini-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.numpad-metric{border:1px solid var(--numeric-line,#dbe5f2);border-radius:12px;background:var(--numeric-panel,#f8fbff);padding:9px;text-align:center}.numpad-metric span{display:block;font-size:.61rem;color:var(--numeric-muted,#64748b);font-weight:800;text-transform:uppercase;letter-spacing:.06em}.numpad-metric strong{display:block;margin-top:2px;font-size:1.2rem;color:var(--numeric-blue,#1769ff)}
.numpad-control-row{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}.numpad-control-group{min-width:0}.numpad-control-group>span{display:block;margin-bottom:5px;font-size:.64rem;font-weight:850;letter-spacing:.07em;text-transform:uppercase;color:var(--numeric-muted,#64748b)}.numpad-pills{display:flex;gap:5px;flex-wrap:wrap}.numpad-pills button{min-height:33px;padding:6px 11px;border:1px solid var(--numeric-line,#dbe5f2);border-radius:9px;background:var(--numeric-panel,#f8fbff);color:var(--numeric-ink,#0f172a);font-size:.73rem;font-weight:800;cursor:pointer}.numpad-pills button.is-active{background:var(--numeric-blue,#1769ff);border-color:var(--numeric-blue,#1769ff);color:#fff}.numpad-sound-button{min-height:33px;padding:6px 10px;border:1px solid var(--numeric-line,#dbe5f2);border-radius:9px;background:var(--numeric-panel,#f8fbff);color:var(--numeric-muted,#64748b);font-size:.72rem;font-weight:800;cursor:pointer}
.numpad-target-box{margin-top:9px;border:1px solid #cadbf7;background:linear-gradient(180deg,#fbfdff,#f4f8ff);border-radius:15px;padding:11px 13px;outline:none}.numpad-target-top{display:flex;justify-content:space-between;gap:10px;font-size:.65rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em;color:var(--numeric-muted,#64748b)}.numpad-three-lines{display:grid;grid-template-rows:repeat(3,34px);align-content:center;min-height:110px;padding:3px 0;font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;font-size:clamp(1.15rem,2.1vw,1.72rem);line-height:34px;letter-spacing:.045em;overflow:hidden}.numpad-line{display:flex;align-items:center;justify-content:center!important;width:100%;height:34px;white-space:pre;overflow:hidden}.numpad-char{flex:0 0 auto;border-radius:4px;padding:0 2px}.numpad-char.done{color:#0f9f6e;background:#e8fbf4}.numpad-char.current{color:#fff;background:var(--numeric-blue,#1769ff);box-shadow:0 2px 8px rgba(23,105,255,.22)}.numpad-char.error{color:#fff;background:#dc2626}.numpad-progress{height:5px;margin-top:4px;background:#dce7f8;border-radius:999px;overflow:hidden}.numpad-progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,#1769ff,#32c48d);border-radius:inherit;transition:width .12s linear}
.numpad-mini-keypad{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(5,50px);gap:6px;border:1px solid #c2cfde;background:#dce5f0;border-radius:15px;padding:9px}.numpad-mini-keypad button{border:1px solid #b8c5d5;border-bottom-width:3px;border-radius:8px;background:linear-gradient(180deg,#fff,#eef3f8);color:#132238;font:800 .95rem Inter,sans-serif;cursor:pointer}.numpad-mini-keypad button.is-expected{border-color:#1769ff;color:#1769ff;box-shadow:0 0 0 2px rgba(23,105,255,.14)}.numpad-mini-keypad button:active,.numpad-mini-keypad button.is-pressed{transform:translateY(2px);border-bottom-width:1px}.numpad-mini-keypad .plus{grid-column:4;grid-row:2/span 2}.numpad-mini-keypad .enter{grid-column:4;grid-row:4/span 2;font-size:.7rem}.numpad-mini-keypad .zero{grid-column:1/span 2}.numpad-mini-keypad .utility{font-size:.66rem}.numpad-mini-keypad .operator{background:linear-gradient(180deg,#eaf2ff,#d8e7ff);color:#0f58d1}
.numpad-result{margin-top:10px;border:1px solid var(--numeric-line,#dbe5f2);border-radius:14px;background:var(--numeric-panel,#f8fbff);padding:12px}.numpad-result[hidden]{display:none!important}.numpad-result h2{font-size:1rem;margin:0 0 4px}.numpad-result p{margin:0;color:var(--numeric-muted,#64748b);font-size:.78rem;line-height:1.5}.numpad-result-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}.numpad-action{display:inline-flex;align-items:center;justify-content:center;min-height:35px;padding:7px 12px;border:1px solid var(--numeric-line,#dbe5f2);border-radius:9px;background:var(--numeric-panel,#f8fbff);color:var(--numeric-ink,#0f172a);text-decoration:none;font-size:.74rem;font-weight:850;cursor:pointer}.numpad-action.primary{background:var(--numeric-blue,#1769ff);border-color:var(--numeric-blue,#1769ff);color:#fff}.numpad-action.danger{color:#b91c1c;border-color:#fecaca;background:#fff7f7}
.numpad-section-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:13px 0}.numpad-section-card{display:block;border:1px solid var(--numeric-line,#dbe5f2);border-radius:15px;background:var(--numeric-card,#fff);padding:15px;text-decoration:none;color:var(--numeric-ink,#0f172a);box-shadow:0 8px 22px rgba(15,23,42,.04)}.numpad-section-card:hover{border-color:#9fc1f7;transform:translateY(-1px)}.numpad-section-card b{display:block;margin-bottom:4px;color:var(--numeric-blue,#1769ff);font-size:.9rem}.numpad-section-card span{display:block;color:var(--numeric-muted,#64748b);font-size:.76rem;line-height:1.45}
/* Games v17.10.32 */
.numpad-games-eyebrow,.numpad-level-kicker,.numpad-section-heading-wide>span{display:block;color:#1769ff;font-size:.63rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase;margin-bottom:5px}.numpad-games-page{--game-blue:#1769ff;--game-green:#18a972;--game-orange:#f59e0b;--game-pink:#ec4899;--game-purple:#7c3aed}.numpad-games-header p{max-width:920px}.numpad-game-picker{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 12px}.numpad-game-choice{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;min-height:92px;border:1px solid #d8e3f1;border-radius:18px;background:#fff;padding:13px 12px;text-align:left;cursor:pointer;color:var(--numeric-ink,#0f172a);box-shadow:0 8px 22px rgba(15,23,42,.045);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.numpad-game-choice:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(15,23,42,.08)}.numpad-game-choice .game-choice-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;font-size:1.55rem;background:#eef5ff}.numpad-game-choice b{display:block;font-size:.88rem;margin-bottom:3px}.numpad-game-choice small{display:block;color:var(--numeric-muted,#64748b);font-size:.68rem;line-height:1.35}.numpad-game-choice em{position:absolute;top:8px;right:9px;border-radius:999px;padding:3px 7px;background:#eef5ff;color:#1769ff;font-size:.52rem;font-style:normal;font-weight:900;letter-spacing:.06em}.numpad-game-choice.tone-rainbow .game-choice-icon{background:linear-gradient(135deg,#fff1f7,#eee8ff,#e6f7ff)}.numpad-game-choice.tone-rainbow em{background:#f5edff;color:#7c3aed}.numpad-game-choice.tone-orange .game-choice-icon{background:#fff4db}.numpad-game-choice.tone-orange em{background:#fff3d6;color:#a65d00}.numpad-game-choice.tone-green .game-choice-icon{background:#e9fbf3}.numpad-game-choice.tone-green em{background:#e8f9f1;color:#087a52}.numpad-game-choice.is-active{border-color:#1769ff;box-shadow:0 0 0 3px rgba(23,105,255,.10),0 12px 28px rgba(23,105,255,.08)}
.numpad-games-work-grid{grid-template-columns:minmax(0,1.55fr) minmax(300px,.55fr)}.numpad-game-console{padding:14px}.numpad-game-topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:9px}.numpad-game-topbar strong{display:block;font-size:.9rem}.numpad-lives-wrap{text-align:right}.numpad-lives-wrap span{display:block;font-size:.58rem;font-weight:900;text-transform:uppercase;letter-spacing:.07em;color:var(--numeric-muted,#64748b)}.numpad-lives-wrap strong{color:#e53956;font-size:1rem;letter-spacing:.07em}.numpad-lives-wrap strong.is-low{animation:numpadPulse .8s ease-in-out infinite alternate}.numpad-game-metrics{grid-template-columns:repeat(6,1fr);margin-bottom:8px}.numpad-game-metrics .numpad-metric{padding:7px}.numpad-game-metrics .numpad-metric strong{font-size:1.05rem}.numpad-level-track{height:7px;background:#e3ebf7;border-radius:999px;overflow:hidden;margin:2px 1px 10px}.numpad-level-track span{display:block;height:100%;width:0;background:linear-gradient(90deg,#1769ff,#7c3aed,#ec4899,#f59e0b,#18a972);border-radius:inherit;transition:width .2s ease}
.numpad-game-stage{--move-duration:3200ms;position:relative;display:grid;place-items:center;min-height:360px;border:1px solid #c9daf4;border-radius:20px;background:linear-gradient(145deg,#f8fbff,#edf5ff 55%,#f5f1ff);overflow:hidden;isolation:isolate}.numpad-stage-grid{position:absolute;inset:0;z-index:-1;background-image:linear-gradient(rgba(23,105,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(23,105,255,.045) 1px,transparent 1px);background-size:32px 32px;mask-image:linear-gradient(to bottom,rgba(0,0,0,.75),transparent)}.numpad-game-stage::before,.numpad-game-stage::after{content:"";position:absolute;width:180px;height:180px;border-radius:50%;filter:blur(4px);opacity:.22;z-index:-1}.numpad-game-stage::before{left:-55px;top:-55px;background:#7dd3fc}.numpad-game-stage::after{right:-55px;bottom:-70px;background:#c4b5fd}.numpad-game-stage.mode-rain{background:linear-gradient(180deg,#eef8ff,#f7f3ff 45%,#fff8e7)}.numpad-game-stage.mode-lane{background:linear-gradient(135deg,#fff8ea,#eef7ff)}.numpad-game-stage.mode-data{background:linear-gradient(145deg,#effdf7,#eef7ff)}.numpad-game-target{position:relative;font-family:Poppins,Inter,sans-serif;font-size:clamp(3.5rem,8vw,6.5rem);font-weight:900;line-height:1;color:#1769ff;text-shadow:0 10px 25px rgba(23,105,255,.15);letter-spacing:.035em;padding:18px 24px;border-radius:24px;will-change:transform}.numpad-game-target span{display:inline-block}.numpad-game-target .typed-part{opacity:.35;transform:scale(.92)}.numpad-game-target .next-part{text-decoration:underline;text-decoration-thickness:4px;text-underline-offset:8px}.numpad-game-target.tone-0{color:#1769ff}.numpad-game-target.tone-1{color:#7c3aed}.numpad-game-target.tone-2{color:#e83e8c}.numpad-game-target.tone-3{color:#f08c00}.numpad-game-target.tone-4{color:#08a67a}.numpad-game-target.tone-5{color:#0f82c9}.numpad-game-stage.mode-rain .numpad-game-target{position:absolute;top:25px}.numpad-game-stage.mode-rain .numpad-game-target.is-moving{animation:numpadRainModern var(--move-duration) linear forwards}.numpad-game-stage.mode-lane .numpad-game-target{position:absolute;left:22px}.numpad-game-stage.mode-lane .numpad-game-target.is-moving{animation:numpadLane var(--move-duration) linear forwards}.numpad-game-stage.mode-data .numpad-game-target{font-family:"JetBrains Mono",ui-monospace,monospace;font-size:clamp(2.5rem,6vw,4.8rem);background:rgba(255,255,255,.58);border:1px solid rgba(28,121,94,.12);box-shadow:0 14px 35px rgba(8,122,82,.08)}.numpad-game-sub{position:absolute;bottom:17px;left:16px;right:16px;text-align:center;color:var(--numeric-muted,#64748b);font-size:.75rem;font-weight:800}.numpad-input-buffer{position:absolute;top:14px;right:14px;max-width:48%;min-height:29px;display:flex;align-items:center;justify-content:center;padding:5px 10px;border-radius:999px;background:rgba(255,255,255,.78);border:1px solid rgba(151,170,197,.35);backdrop-filter:blur(6px);color:#64748b;font-size:.65rem;font-weight:850}.numpad-input-buffer.has-input{color:#1769ff;border-color:#9fc1f7;background:#fff}.numpad-level-flash{position:absolute;inset:0;z-index:10;display:grid;place-content:center;text-align:center;background:rgba(239,247,255,.88);backdrop-filter:blur(5px);animation:levelFlashIn .25s ease}.numpad-level-flash[hidden]{display:none!important}.numpad-level-flash span{font-size:.68rem;font-weight:950;letter-spacing:.16em;color:#1769ff}.numpad-level-flash strong{font-family:Poppins,Inter,sans-serif;font-size:clamp(2.4rem,7vw,4.8rem);color:#0f172a}.numpad-level-flash small{font-weight:850;color:#64748b}.numpad-game-stage.is-error{animation:gameShake .18s ease}.numpad-game-stage.is-missed::after{background:#fb7185;opacity:.42}.numpad-burst{position:absolute;inset:50% auto auto 50%;z-index:8;width:1px;height:1px;pointer-events:none}.numpad-burst i{position:absolute;width:8px;height:8px;border-radius:2px;background:hsl(calc(var(--i)*31),85%,58%);animation:burstParticle .65s ease-out forwards;transform:rotate(calc(var(--i)*30deg)) translateY(-8px)}
.numpad-side-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}.numpad-side-heading h2{font-size:1rem;margin:0}.numpad-game-guide{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;margin-top:10px;padding:11px;border-radius:14px;background:linear-gradient(135deg,#f8fbff,#f3f7ff);border:1px solid #dbe5f2}.numpad-game-guide .guide-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:#fff;font-size:1.25rem;box-shadow:0 5px 14px rgba(15,23,42,.05)}.numpad-game-guide b{font-size:.8rem}.numpad-game-guide p{margin:3px 0 0;color:#64748b;font-size:.68rem;line-height:1.45}.numpad-best-card{margin-top:10px;border-radius:14px;padding:12px;background:linear-gradient(135deg,#152756,#243f8b);color:#fff}.numpad-best-card span,.numpad-best-card small{display:block;opacity:.72;font-size:.62rem}.numpad-best-card strong{display:block;margin:3px 0;font-size:.92rem}.numpad-game-result{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;background:linear-gradient(135deg,#eff7ff,#f5f1ff);border-color:#bed4f8}.numpad-game-result .result-trophy{font-size:2rem}.numpad-game-result .numpad-result-actions{grid-column:1/-1}
.numpad-game-feature-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:15px 0}.numpad-section-heading-wide{grid-column:1/-1;padding:3px 2px}.numpad-section-heading-wide h2{margin:0;font-size:1.35rem}.numpad-section-heading-wide p{margin:4px 0 0;color:var(--numeric-muted,#64748b);font-size:.78rem}.numpad-feature-game{border:1px solid #dbe5f2;border-radius:18px;padding:15px;background:#fff;box-shadow:0 8px 22px rgba(15,23,42,.04)}.numpad-feature-game>span{display:block;font-size:1.65rem;margin-bottom:8px}.numpad-feature-game h3{margin:0 0 5px;font-size:.9rem}.numpad-feature-game p{margin:0;color:#64748b;font-size:.72rem;line-height:1.5}.numpad-feature-game.rain-card{background:linear-gradient(145deg,#fff8fd,#f5f1ff)}.numpad-feature-game.lane-card{background:linear-gradient(145deg,#fff9eb,#f4f9ff)}.numpad-feature-game.ninja-card{background:linear-gradient(145deg,#eef6ff,#f8fbff)}.numpad-feature-game.data-card{background:linear-gradient(145deg,#effcf6,#f7fbff)}
@keyframes numpadRainModern{from{transform:translateY(0) rotate(-2deg)}to{transform:translateY(255px) rotate(2deg)}}@keyframes numpadLane{from{transform:translateX(0)}to{transform:translateX(min(72vw,720px))}}@keyframes gameShake{0%,100%{transform:translateX(0)}35%{transform:translateX(-5px)}70%{transform:translateX(5px)}}@keyframes levelFlashIn{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes burstParticle{to{transform:rotate(calc(var(--i)*30deg)) translateY(-75px);opacity:0}}@keyframes numpadPulse{to{opacity:.55;transform:scale(1.05)}}
/* Statistics */
.numpad-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:12px}.numpad-stat-card{border:1px solid var(--numeric-line,#dbe5f2);border-radius:14px;background:var(--numeric-card,#fff);padding:13px;box-shadow:0 7px 20px rgba(15,23,42,.035)}.numpad-stat-card span{display:block;color:var(--numeric-muted,#64748b);font-size:.65rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em}.numpad-stat-card strong{display:block;margin-top:4px;font-size:1.45rem;color:var(--numeric-blue,#1769ff)}.numpad-dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}.numpad-dashboard-card{border:1px solid var(--numeric-line,#dbe5f2);border-radius:16px;background:var(--numeric-card,#fff);padding:15px}.numpad-dashboard-card h2{font-size:1rem;margin:0 0 10px}.numpad-course-progress{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.numpad-course-dot{border:1px solid var(--numeric-line,#dbe5f2);border-radius:10px;background:var(--numeric-panel,#f8fbff);padding:8px;text-align:center}.numpad-course-dot b{display:block;font-size:.8rem}.numpad-course-dot small{color:var(--numeric-muted,#64748b);font-size:.6rem}.numpad-course-dot.mastered{background:#eafaf3;border-color:#9bd9be;color:#087a52}.numpad-weak-list{display:flex;flex-wrap:wrap;gap:6px}.numpad-weak-chip{border:1px solid #f2c6c6;background:#fff7f7;color:#a52222;border-radius:999px;padding:6px 9px;font-size:.72rem;font-weight:850}.numpad-history{display:grid;gap:6px}.numpad-history-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:9px;align-items:center;border-top:1px solid var(--numeric-line,#dbe5f2);padding:8px 0}.numpad-history-row:first-child{border-top:0}.numpad-history-icon{width:29px;height:29px;display:grid;place-items:center;border-radius:8px;background:#eef5ff;color:#1769ff;font-size:.7rem;font-weight:900}.numpad-history-row b{display:block;font-size:.76rem}.numpad-history-row small{display:block;color:var(--numeric-muted,#64748b);font-size:.64rem;margin-top:2px}.numpad-history-value{text-align:right;font-size:.7rem;font-weight:850;color:var(--numeric-muted,#64748b)}
/* Lesson result inside main tutor */
.numeric-lesson-result{margin-top:8px;border:1px solid var(--numeric-line);border-radius:12px;background:var(--numeric-panel);padding:10px 12px}.numeric-lesson-result[hidden]{display:none!important}.numeric-lesson-result.is-mastered{border-color:#9bd9be;background:#f1fbf6}.numeric-lesson-result h2{margin:0 0 3px;font-size:.9rem}.numeric-lesson-result p{margin:0;color:var(--numeric-muted);font-size:.72rem;line-height:1.45}.numeric-lesson-result .numpad-result-actions{margin-top:7px}
html[data-theme="dark"] .numpad-subnav,body.dark-mode .numpad-subnav,html[data-theme="dark"] .numpad-work-card,body.dark-mode .numpad-work-card,html[data-theme="dark"] .numpad-section-card,body.dark-mode .numpad-section-card,html[data-theme="dark"] .numpad-stat-card,body.dark-mode .numpad-stat-card,html[data-theme="dark"] .numpad-dashboard-card,body.dark-mode .numpad-dashboard-card{background:#111c2f;border-color:#2a3a53}html[data-theme="dark"] .numpad-target-box,body.dark-mode .numpad-target-box{background:linear-gradient(180deg,#0f1c30,#0c1728);border-color:#2c4161}html[data-theme="dark"] .numpad-game-stage,body.dark-mode .numpad-game-stage{background:radial-gradient(circle at 50% 30%,#14253f,#0d1729);border-color:#2c4161}html[data-theme="dark"] .numpad-game-choice,body.dark-mode .numpad-game-choice{background:#0d1729;border-color:#2a3a53}html[data-theme="dark"] .numpad-game-choice.is-active,body.dark-mode .numpad-game-choice.is-active{background:#132b51;border-color:#5f94eb}html[data-theme="dark"] .numpad-entry-record,body.dark-mode .numpad-entry-record{color:#b9d5ff}html[data-theme="dark"] .numpad-course-dot,body.dark-mode .numpad-course-dot{background:#0d1729;border-color:#2a3a53}html[data-theme="dark"] .numpad-course-dot.mastered,body.dark-mode .numpad-course-dot.mastered{background:#103728;border-color:#2b7958;color:#8be0bc}html[data-theme="dark"] .numpad-weak-chip,body.dark-mode .numpad-weak-chip{background:#391b24;border-color:#6d2c39;color:#ffb8c1}html[data-theme="dark"] .numpad-mini-keypad,body.dark-mode .numpad-mini-keypad{background:#101a2b;border-color:#2d3c53}
@media(prefers-color-scheme:dark){html[data-theme="system"] .numpad-subnav,html[data-theme="system"] .numpad-work-card,html[data-theme="system"] .numpad-section-card,html[data-theme="system"] .numpad-stat-card,html[data-theme="system"] .numpad-dashboard-card{background:#111c2f;border-color:#2a3a53}html[data-theme="system"] .numpad-target-box{background:linear-gradient(180deg,#0f1c30,#0c1728);border-color:#2c4161}}
@media(max-width:900px){.numpad-work-grid{grid-template-columns:1fr}.numpad-mini-keypad{max-width:520px;width:100%;justify-self:center}.numpad-stats-grid{grid-template-columns:repeat(2,1fr)}.numpad-dashboard-grid{grid-template-columns:1fr}.numpad-course-progress{grid-template-columns:repeat(5,1fr)}}
@media(max-width:650px){.numpad-subnav{width:calc(100% - 16px);margin-top:7px;padding:4px}.numpad-subnav a{min-height:31px;padding:6px 10px;font-size:.68rem}.numpad-page-shell{width:calc(100% - 18px);padding-top:10px}.numpad-page-header{display:block}.numpad-page-badge{display:inline-block;margin-top:8px}.numpad-work-card{padding:11px;border-radius:15px}.numpad-mini-grid{grid-template-columns:repeat(2,1fr)}.numpad-game-picker{grid-template-columns:1fr}.numpad-stats-grid{grid-template-columns:repeat(2,1fr)}.numpad-course-progress{grid-template-columns:repeat(2,1fr)}.numpad-section-grid{grid-template-columns:1fr}.numpad-three-lines{font-size:clamp(1rem,5vw,1.3rem)}.numpad-history-row{grid-template-columns:auto minmax(0,1fr)}.numpad-history-value{grid-column:2;text-align:left}.numpad-pills button{padding:6px 9px}}

/* Numpad games modern responsive overrides v17.10.32 */
html[data-theme="dark"] .numpad-game-choice,body.dark-mode .numpad-game-choice,html[data-theme="dark"] .numpad-feature-game,body.dark-mode .numpad-feature-game{background:#111c2f;border-color:#2a3a53}html[data-theme="dark"] .numpad-game-guide,body.dark-mode .numpad-game-guide{background:#0d1729;border-color:#2a3a53}html[data-theme="dark"] .numpad-game-guide .guide-icon,body.dark-mode .numpad-game-guide .guide-icon{background:#162337}html[data-theme="dark"] .numpad-game-stage,body.dark-mode .numpad-game-stage{background:linear-gradient(145deg,#101e33,#0d1729 60%,#17142c);border-color:#2c4161}html[data-theme="dark"] .numpad-input-buffer,body.dark-mode .numpad-input-buffer{background:rgba(13,23,41,.82);color:#aab8cc;border-color:#2a3a53}html[data-theme="dark"] .numpad-level-flash,body.dark-mode .numpad-level-flash{background:rgba(13,23,41,.9)}html[data-theme="dark"] .numpad-level-flash strong,body.dark-mode .numpad-level-flash strong{color:#f4f7fb}html[data-theme="dark"] .numpad-game-stage.mode-data .numpad-game-target,body.dark-mode .numpad-game-stage.mode-data .numpad-game-target{background:rgba(17,28,47,.68);border-color:#2a3a53}
@media(max-width:1100px){.numpad-game-picker{grid-template-columns:repeat(2,1fr)}.numpad-games-work-grid{grid-template-columns:1fr}.numpad-game-side{display:grid;grid-template-columns:minmax(260px,420px) minmax(0,1fr);gap:12px}.numpad-side-heading{grid-column:1/-1}.numpad-game-guide,.numpad-best-card{margin-top:0}.numpad-game-feature-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.numpad-game-metrics{grid-template-columns:repeat(3,1fr)}.numpad-game-stage{min-height:330px}.numpad-game-side{display:block}.numpad-game-guide,.numpad-best-card{margin-top:10px}.numpad-game-feature-grid{grid-template-columns:1fr 1fr}.numpad-game-target{font-size:clamp(3rem,14vw,5rem)}.numpad-game-stage.mode-lane .numpad-game-target.is-moving{animation-name:numpadLaneMobile}@keyframes numpadLaneMobile{from{transform:translateX(0)}to{transform:translateX(calc(100vw - 250px))}}}
@media(max-width:560px){.numpad-game-picker{grid-template-columns:1fr}.numpad-game-choice{min-height:78px}.numpad-game-feature-grid{grid-template-columns:1fr}.numpad-game-metrics{grid-template-columns:repeat(2,1fr)}.numpad-game-stage{min-height:300px}.numpad-input-buffer{top:10px;right:10px;max-width:70%}.numpad-game-sub{bottom:12px}.numpad-game-topbar{align-items:flex-start}.numpad-lives-wrap strong{font-size:.86rem}}

/* Numpad home game showcase v17.10.32 */
.numpad-home-games{margin:16px 0;padding:17px;border:1px solid #dbe5f2;border-radius:20px;background:linear-gradient(145deg,#fbfdff,#f5f8ff);box-shadow:0 8px 24px rgba(15,23,42,.04)}.numpad-home-game-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:11px}.home-game-card{position:relative;min-height:145px;display:flex;flex-direction:column;padding:15px;border:1px solid #dbe5f2;border-radius:17px;text-decoration:none;color:#0f172a;transition:transform .15s ease,box-shadow .15s ease}.home-game-card:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(15,23,42,.08)}.home-game-card>span{font-size:1.65rem;margin-bottom:8px}.home-game-card b{font-size:.9rem}.home-game-card small{margin-top:4px;color:#64748b;font-size:.7rem;line-height:1.45}.home-game-card em{margin-top:auto;padding-top:9px;color:#1769ff;font-size:.58rem;font-weight:900;font-style:normal;text-transform:uppercase;letter-spacing:.07em}.home-game-card.ninja{background:linear-gradient(145deg,#eef6ff,#fff)}.home-game-card.rain{background:linear-gradient(145deg,#fff4fb,#f3efff)}.home-game-card.lane{background:linear-gradient(145deg,#fff7e8,#f4f9ff)}.home-game-card.data{background:linear-gradient(145deg,#ecfbf4,#f7fbff)}html[data-theme="dark"] .numpad-home-games,body.dark-mode .numpad-home-games,html[data-theme="dark"] .home-game-card,body.dark-mode .home-game-card{background:#111c2f;border-color:#2a3a53;color:#f4f7fb}@media(max-width:1050px){.numpad-home-game-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.numpad-home-games{padding:12px}.numpad-home-game-grid{grid-template-columns:1fr}.home-game-card{min-height:120px}}
.numpad-games-page>.numpad-section-grid{grid-template-columns:repeat(4,1fr)}
@media(max-width:1000px){.numpad-games-page>.numpad-section-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.numpad-games-page>.numpad-section-grid{grid-template-columns:1fr}}

.numpad-page-badge.is-warning{background:#fff6df;border-color:#f0c36a;color:#8a5200;box-shadow:0 0 0 3px rgba(240,195,106,.12)}

