/* Shared palette. Dark mode changes surfaces; the selected accent stays independent. */
:root{--bg:#f8f9f6;--panel:#fff;--ink:#233c33;--muted:#647469;--line:#e1e7de;--soft:#f0f3ec;--wrong:#bd4141}
:root.dark{--bg:#151b20;--panel:#1d252c;--ink:#e7ecf0;--muted:#a5b1bc;--line:#35414c;--soft:#26313b;--wrong:#f0a6a6}
[hidden]{display:none!important}body{min-width:320px}button,a{touch-action:manipulation}.primary,.tab.selected,.featured .course-arrow{background:var(--accent);color:var(--button-text)}.primary:hover{background:var(--accent);filter:brightness(1.1)}.primary:focus-visible,.secondary:focus-visible{outline-offset:4px}.hero,.dark .hero{background:var(--hero);border-color:var(--hero-line)}.nav-link.active,.dark .nav-link.active,.tip-card,.dark .tip-card,.badge,.dark .badge{background:var(--mint);color:var(--theme-ink);border-color:var(--hero-line)}.dark .stat-icon{background:var(--soft);color:var(--theme-ink)}.dark .avatar,.dark .tip-keys kbd{background:var(--mint);border-color:var(--hero-line);color:var(--theme-ink)}.dark .bar,.dark .goal-inner{background:var(--soft)}.dark .key{border-bottom-color:var(--line)}.day.today i{background:var(--mint);border-color:var(--theme-bar);color:var(--theme-ink)}.day.done i{background:var(--accent);border-color:var(--accent);color:var(--button-text)}.key-art,.key-art.j{background:var(--mint);border-color:var(--hero-line);border-bottom-color:var(--theme-bar);color:var(--theme-ink)}.orbit{border-color:var(--hero-line)}.key-caption,.spark,.unit-label,.saved,.text-btn,.test-symbol,.lesson-num,.tip-keys kbd,.local-note svg{color:var(--theme-ink)}.avatar{background:var(--mint);border-color:var(--hero-line);color:var(--theme-ink)}.tip-keys kbd,.test-symbol{background:var(--mint);border-color:var(--hero-line)}.lesson:hover,.course-card:hover{border-color:var(--theme-bar)}.brand{letter-spacing:-.9px;font-size:23px;max-width:100%}.brand>span{overflow-wrap:anywhere}.brand-dot{color:var(--theme-ink)}.brand img{object-fit:contain;width:36px;height:36px}.sidebar .brand{font-size:21px;white-space:normal}.tagline{margin-left:0;letter-spacing:1.5px;text-transform:uppercase;font-size:9px}.side-domain{display:block;overflow-wrap:anywhere}.nav-link{color:var(--muted)}.skip-link{position:fixed;left:12px;top:-70px;z-index:1000;background:var(--panel);padding:12px 18px;border:2px solid var(--accent);border-radius:8px}.skip-link:focus{top:12px}.text-link{color:var(--theme-ink);display:inline-flex;align-items:center;gap:12px;font-weight:600}.text-link:hover,.quiet-link:hover{text-decoration:underline}.kicker{display:flex;align-items:center;gap:8px;color:var(--theme-ink);font-size:10px;font-weight:700;letter-spacing:1.7px}.kicker>span{width:6px;height:6px;background:var(--theme-ink);border-radius:50%}
/* Public home page */
.public-header{background:var(--bg);border-bottom:1px solid var(--line)}.public-nav{max-width:1230px;padding:24px 40px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:30px}.public-nav nav{display:flex;flex-direction:row;gap:30px;font-size:12px;color:var(--muted)}.public-nav nav a:hover{color:var(--theme-ink)}.header-actions{display:flex;align-items:center;gap:12px}.public-site .primary{font-size:13px;padding:12px 19px}.landing-hero{max-width:1230px;margin:auto;padding:88px 40px 80px;display:grid;grid-template-columns:1.05fr 1fr;gap:70px;align-items:center}.landing-copy h1{font-size:clamp(42px,5.3vw,68px);line-height:1.06;letter-spacing:-3.6px;margin:22px 0;font-weight:650}.landing-copy h1 em{font-family:Georgia,serif;font-weight:400;color:var(--theme-ink)}.landing-copy>p{font-size:16px;max-width:410px;color:var(--muted);line-height:1.8}.landing-actions{display:flex;align-items:center;gap:25px;margin:30px 0 22px}.public-site .big-button{padding:15px 21px;font-size:14px;gap:22px}.quiet-link{font-size:12px;font-weight:600}.hero-promises{display:flex;gap:18px;font-size:10px;color:var(--muted)}.typing-showcase{position:relative;background:var(--hero);border:1px solid var(--hero-line);border-radius:22px;padding:25px 25px 20px;transform:rotate(-3deg);box-shadow:0 25px 75px #133d2220}.showcase-top{display:flex;justify-content:space-between;font-size:8px;color:var(--theme-ink);letter-spacing:1px}.showcase-top>span:first-child{display:flex;align-items:center;gap:6px}.showcase-top i{height:5px;width:5px;background:currentColor;border-radius:50%}.showcase-text{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:27px;line-height:1.6;letter-spacing:-.7px;margin:35px 12px 28px;color:var(--theme-ink)}.showcase-text span{opacity:.5}.showcase-text b{font-weight:400;background:var(--theme-key);border-left:2px solid var(--theme-ink)}.mini-keyboard{background:var(--panel);padding:13px 9px 10px;border-radius:12px;border:1px solid var(--hero-line)}.mini-keyboard>div{display:flex;justify-content:center;gap:5px;margin:5px 0}.mini-keyboard kbd{width:30px;height:33px;display:grid;place-items:center;font-family:inherit;font-size:10px;background:var(--bg);border:1px solid var(--line);border-bottom:3px solid var(--line);border-radius:5px;color:var(--muted)}.mini-keyboard .home-key{background:var(--theme-key);border-color:var(--theme-bar);color:var(--theme-key-ink)}.mini-keyboard .space-key{width:160px;height:27px}.showcase-bottom{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--theme-ink);margin:18px 6px 0}.showcase-bottom small{font-size:9px;margin-left:9px;color:var(--theme-ink);opacity:.7}.flow-label{font-size:9px;letter-spacing:1px}.floating-note{position:absolute;right:-30px;bottom:-26px;transform:rotate(9deg);background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:15px 23px;font-size:11px;line-height:1.8;box-shadow:0 10px 20px #102f1510}.floating-note em{font-family:Georgia,serif;font-size:17px;color:var(--theme-ink)}.facts-strip{max-width:1150px;margin:auto;display:grid;grid-template-columns:repeat(4,1fr);padding:26px 0;border-block:1px solid var(--line);gap:20px}.facts-strip>span{text-align:center;font-size:11px;color:var(--muted);border-right:1px solid var(--line)}.facts-strip>span:last-child{border:0}.facts-strip strong{font-size:27px;font-weight:600;color:var(--ink);letter-spacing:-1px;display:block;margin-bottom:3px}.public-section{max-width:1230px;margin:auto;padding:85px 40px}.path-section,.faq-section{display:grid;grid-template-columns:.9fr 1.2fr;gap:90px}.section-intro h2,.feature-intro h2{font-size:36px;line-height:1.2;letter-spacing:-1.5px;margin:16px 0 18px;font-weight:600}.section-intro p{font-size:14px;line-height:1.85;color:var(--muted);max-width:340px;margin-bottom:25px}.section-intro .text-link{font-size:12px}.learning-stages>a{display:flex;gap:20px;padding:25px 0;border-bottom:1px solid var(--line);align-items:flex-start}.learning-stages>a:first-child{padding-top:0}.learning-stages>a:last-child{border:0}.stage-number{display:grid;place-items:center;background:var(--mint);color:var(--theme-ink);font:17px Georgia,serif;width:45px;height:45px;flex-shrink:0;border:1px solid var(--hero-line);border-radius:12px}.learning-stages h3{font-size:17px;margin-bottom:7px}.learning-stages p{font-size:12px;color:var(--muted);line-height:1.8;margin-bottom:11px}.learning-stages div>span{font-size:9px;color:var(--theme-ink);letter-spacing:1px;text-transform:uppercase}.learning-stages>a>span:last-child{margin-left:auto;color:var(--theme-ink)}.practice-features{background:var(--mint);border-radius:20px;padding:42px;margin:0 auto;max-width:1150px;display:grid;grid-template-columns:1.2fr repeat(3,1fr);gap:34px;border:1px solid var(--hero-line)}.practice-features .kicker{font-size:8px}.feature-intro h2{font-size:29px}.feature-symbol{width:39px;height:39px;display:grid;place-items:center;background:var(--panel);border:1px solid var(--hero-line);border-radius:10px;color:var(--theme-ink);font-size:20px;margin-bottom:17px}.practice-features h3{font-size:15px;margin-bottom:10px}.practice-features p{font-size:11px;line-height:1.9;color:var(--theme-ink)}.faq-list details{border-bottom:1px solid var(--line);padding:21px 0}.faq-list details:first-child{padding-top:0}.faq-list summary{font-size:14px;font-weight:600;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:20px}.faq-list summary::after{content:'+';font-size:20px;color:var(--theme-ink)}.faq-list details[open] summary::after{content:'−'}.faq-list p{font-size:12px;color:var(--muted);line-height:1.9;padding:15px 30px 0 0}.final-cta{text-align:center;padding:60px 30px 75px;background:var(--hero);border-block:1px solid var(--hero-line)}.final-cta .kicker{justify-content:center}.final-cta h2{font-size:37px;line-height:1.25;letter-spacing:-1.3px;margin:20px 0 28px}.public-footer{max-width:1230px;margin:auto;padding:42px 40px 24px;display:grid;grid-template-columns:1fr 1.4fr;gap:24px}.footer-brand p{color:var(--muted);font-size:11px;margin-top:12px}.public-footer nav{flex-direction:row;flex-wrap:wrap;gap:13px 24px;font-size:11px;color:var(--muted);align-content:center;justify-content:flex-end}.public-footer nav a:hover,.public-footer nav button:hover{text-decoration:underline}.public-footer nav button{padding:0;font:inherit;color:inherit}.copyright{border-top:1px solid var(--line);padding-top:20px;grid-column:1/-1;font-size:10px;color:var(--muted)}.workspace-footer{margin-left:232px;padding:30px 43px}.workspace-footer .brand{font-size:18px}.workspace-footer .brand img{width:27px;height:27px}
/* Focused exercise pages */
#practice-page{background:var(--panel);border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-top:20px;min-height:400px}.exercise-intro h1{font-size:24px;margin:15px 0 10px}.exercise-intro p{font-size:12px;color:var(--muted)}.exercise-intro .text-link{font-size:12px}#practice-page .practice-head{background:var(--bg)}#practice-page .practice-body{padding:26px 32px}.typing-text{color:var(--muted)}.typing-text .correct,.dark .typing-text .correct{color:var(--theme-ink)}.typing-text .cursor,.dark .typing-text .cursor{background:var(--mint);border-color:var(--theme-ink)}.typing-text .wrong{background:#f9e5e0;color:#9b2626}.dark .typing-text .wrong{background:#5a292b;color:#ffc6c6}.passage-details{padding:20px 0;color:var(--muted);font-size:12px;border-bottom:1px solid var(--line)}.passage-details summary{cursor:pointer;color:var(--theme-ink);font-weight:600}.passage-details p{margin-top:14px;line-height:1.9}.passage-details code{overflow-wrap:anywhere}.exercise-pagination{display:flex;flex-direction:row;justify-content:space-between;gap:15px;margin-top:20px;color:var(--theme-ink);font-size:11px}.keyboard-stage{max-width:680px;margin-inline:auto}.typing-input:focus-visible{outline:none}.chapter-list{overscroll-behavior:contain}.chapter-item{width:100%}.lesson{display:block}.lesson-search-row{flex-wrap:wrap}.lesson-search-row input{min-width:160px}.lesson-instruction{color:var(--muted)}.practice-head small{color:var(--theme-ink)}.page-heading .pill{max-width:100%;white-space:normal}.noscript-note{margin:20px auto;max-width:800px}.loading-message{margin:20px 0}.panel>p{margin-top:12px}
/* Editorial and policy pages */
.article-shell{max-width:1120px;margin:auto;padding:65px 40px 80px;display:grid;grid-template-columns:230px minmax(0,1fr);gap:60px}.article-nav{position:sticky;top:30px;align-self:start;display:flex;flex-direction:column;gap:9px;font-size:12px}.article-nav h2{font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);margin-bottom:10px}.article-nav a{padding:10px 13px;border-radius:7px}.article-nav a.active{background:var(--mint);color:var(--theme-ink)}.article-content{max-width:730px}.article-content h1{font-size:39px;margin:15px 0 17px;letter-spacing:-1.8px}.article-content .lead{font-size:17px;color:var(--muted);line-height:1.8;margin-bottom:30px}.article-content h2{font-size:21px;margin:32px 0 12px;letter-spacing:-.4px}.article-content h3{margin:23px 0 10px}.article-content p,.article-content li{font-size:14px;color:var(--muted);line-height:1.9;margin-bottom:14px}.article-content ul,.article-content ol{padding-left:22px}.article-content a:not(.primary){color:var(--theme-ink);text-decoration:underline;text-underline-offset:3px}.article-content .updated{font-size:11px;margin:0 0 27px}.article-content table{width:100%;border-collapse:collapse;font-size:12px}.article-content th,.article-content td{padding:12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}.article-content td{color:var(--muted);line-height:1.7}.article-content code{overflow-wrap:anywhere}.article-content .button-row{margin:25px 0}.contact-card{background:var(--mint);border:1px solid var(--hero-line);padding:24px;border-radius:12px;margin:26px 0}.contact-card h2{margin-top:0}.ad-unit{max-width:970px;margin:36px auto;min-height:160px;padding:12px;background:var(--panel);border:1px solid var(--line);text-align:center}.ad-unit>span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-bottom:10px}
/* Consent choices */
.consent-banner{position:fixed;left:24px;bottom:24px;max-width:510px;padding:23px;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 15px 70px #0003;z-index:50}.consent-banner strong{font-size:16px}.consent-banner p{font-size:12px;color:var(--muted);line-height:1.8;margin:10px 0 18px}.consent-banner a{text-decoration:underline}.consent-banner button{font-size:11px;padding:9px 12px}#consent-dialog{max-width:510px;padding:30px}#consent-dialog p{font-size:12px;color:var(--muted);margin:15px 0;line-height:1.8}#consent-dialog .check-row{font-size:13px;margin:20px 0}.check-row input{accent-color:var(--accent)}.public-site .icon-btn{background:var(--panel)}
@media(min-width:1500px){.landing-hero{padding-block:105px}.public-section{padding-block:95px}}
@media(max-width:1100px){.landing-hero{gap:35px}.landing-copy h1{font-size:53px}.mini-keyboard kbd{width:26px}.practice-features{margin-inline:35px;grid-template-columns:repeat(3,1fr);gap:28px}.feature-intro{grid-column:1/-1}.feature-intro h2 br{display:none}.feature-intro h2{margin-bottom:0}.path-section,.faq-section{gap:45px}.facts-strip{margin-inline:40px}.workspace-footer{margin-left:210px}.public-nav nav{gap:18px}.typing-showcase{padding:20px}.showcase-text{font-size:24px}}
@media(max-width:800px){.public-nav{padding:19px 24px;gap:15px}.public-nav nav{display:none}.landing-hero{grid-template-columns:1fr;padding:55px 28px 62px;gap:55px}.landing-copy{max-width:590px}.landing-copy h1{font-size:58px}.landing-copy>p{max-width:480px}.typing-showcase{max-width:480px;width:calc(100% - 24px);justify-self:center}.showcase-text{font-size:29px}.mini-keyboard kbd{width:32px}.facts-strip{grid-template-columns:repeat(2,1fr);gap:25px 0;margin-inline:28px}.facts-strip>span:nth-child(2){border:0}.public-section{padding:55px 28px}.path-section,.faq-section{grid-template-columns:1fr;gap:35px}.section-intro h2 br{display:none}.section-intro p{max-width:550px}.practice-features{margin-inline:28px;padding:30px;grid-template-columns:1fr;gap:25px}.practice-features article{display:grid;grid-template-columns:40px 1fr;gap:0 17px}.practice-features article p{grid-column:2}.feature-symbol{grid-row:1/3}.public-footer{padding:35px 28px 22px;grid-template-columns:1fr}.public-footer nav{justify-content:flex-start;line-height:1.8}.workspace-footer{margin-left:0}.article-shell{grid-template-columns:1fr;gap:35px;padding:40px 25px 60px}.article-nav{position:static;flex-direction:row;flex-wrap:wrap;gap:5px}.article-nav h2{width:100%;margin-bottom:4px}.article-nav a{padding:7px 10px}.article-content h1{font-size:33px}.exercise-intro h1{font-size:23px}.final-cta h2{font-size:32px}.workspace-site .main{padding-bottom:10px}}
@media(max-width:480px){.public-nav{padding:17px 19px}.public-nav .brand{font-size:20px;gap:6px}.public-nav .brand img{width:28px;height:28px}.header-actions{gap:7px}.header-actions .primary{font-size:11px;padding:10px 12px}.header-actions .primary svg{display:none}.landing-copy h1{font-size:49px;letter-spacing:-2.8px}.landing-copy>p{font-size:14px}.landing-actions{gap:16px;flex-wrap:wrap}.hero-promises{gap:13px;font-size:9px}.landing-copy .kicker{font-size:8px}.typing-showcase{padding:18px 12px}.showcase-top{font-size:6px}.mini-keyboard{padding:9px 4px}.mini-keyboard kbd{width:23px;height:29px;font-size:9px}.mini-keyboard>div{gap:3px}.showcase-text{font-size:23px;margin:26px 9px}.floating-note{right:-16px;padding:10px 15px;bottom:-20px;font-size:9px}.floating-note em{font-size:14px}.showcase-bottom{font-size:9px}.showcase-bottom small{font-size:8px}.flow-label{font-size:7px}.section-intro h2{font-size:31px}.stage-number{width:36px;height:36px}.learning-stages>a{gap:14px}.learning-stages h3{font-size:15px}.public-footer .brand{font-size:22px}.consent-banner{bottom:10px;left:10px;right:10px;padding:19px}.consent-banner .button-row{gap:7px}.consent-banner button{font-size:10px}#practice-page .practice-body{padding:20px 12px}.practice-head h2{font-size:16px}.exercise-pagination{font-size:10px;gap:8px}.exercise-intro h1{font-size:21px}.article-content th,.article-content td{padding:9px 6px;font-size:11px}.keyboard-stage{width:100%}.workspace-site .topbar{padding-inline:16px}.workspace-site .breadcrumb{font-size:10px;gap:7px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
