.typebloom-app{background:#f8f7f4;color:#29231f;font-family:Nunito,PingFang SC,Microsoft YaHei,sans-serif;font-size:16px;font-synthesis:weight;--brand-deep:#bc4329;--brand-soft:#fff0e9;--typing-correct:#3e795d;--typing-incorrect:#b9343c;--typing-incorrect-soft:#fce1df;--typing-current:var(--brand);--typing-current-soft:var(--brand-soft);--surface:#fff;--text:#29231f;--muted:#70645a;--text-secondary:#5f554d;--text-success:#526640;--font-caption:12px;--font-small:14px;--font-body:15px;--font-control:16px;--line:#eae6e0;--green:#347857;--ease:cubic-bezier(.22,1,.36,1)}.typebloom-app *{box-sizing:border-box}.typebloom-app{margin:0;min-width:0}.typebloom-app button,.typebloom-app input,.typebloom-app select{font:inherit}.typebloom-app a,.typebloom-app button,.typebloom-app input,.typebloom-app select{-webkit-tap-highlight-color:transparent}.typebloom-app button{background:none;border:0;color:inherit;cursor:pointer}.typebloom-app button:disabled{cursor:wait;opacity:.5}.typebloom-app a:focus-visible,.typebloom-app button:focus-visible,.typebloom-app input:focus-visible,.typebloom-app select:focus-visible,.typebloom-app summary:focus-visible{outline:3px solid #e88b6e;outline-offset:4px}.typebloom-app a,.typebloom-app button{touch-action:manipulation}.typebloom-app a{color:inherit;text-decoration:none}.typebloom-app h1,.typebloom-app h2,.typebloom-app h3,.typebloom-app p{margin:0}.typebloom-app h1,.typebloom-app h2,.typebloom-app h3{letter-spacing:-.035em}.typebloom-app button{transition:background .18s,color .18s,border-color .18s,box-shadow .2s}.typebloom-app button:active:not(.key){transform:translateY(1px)}.typebloom-app svg{flex-shrink:0}.typebloom-app ::-moz-selection{background:#ffe3d5}.typebloom-app ::selection{background:#ffe3d5}.typebloom-app input[type=range]{accent-color:var(--brand);cursor:pointer}.typebloom-app input[type=checkbox]{accent-color:var(--brand)}.typebloom-app .app-shell{display:flex;min-height:100vh}.typebloom-app .sidebar{background:#fdfcf9;border-right:1px solid var(--line);display:flex;flex-direction:column;inset:0 auto 0 0;padding:30px 18px 20px;position:fixed;width:220px;z-index:20}.typebloom-app .brand{align-items:center;display:flex;font-size:22px;font-weight:900;gap:10px;letter-spacing:-1.1px;padding:0 8px;text-align:left}.typebloom-app .brand-mark{background:var(--brand);border-radius:12px;box-shadow:0 3px #e9c9b9;color:#fff;display:grid;height:38px;place-items:center;width:38px}.typebloom-app .brand-light{font-weight:700}.typebloom-app .brand small{color:var(--muted);display:block;font-size:var(--font-caption);font-weight:800;letter-spacing:1.6px;margin-top:1px}.typebloom-app .sidebar-rule{background:var(--line);height:1px;margin:29px 10px 25px}.typebloom-app .nav-eyebrow{color:var(--muted);font-size:var(--font-caption);font-weight:800;letter-spacing:1.5px;margin-bottom:13px;padding:0 13px}.typebloom-app .nav-item{align-items:center;border-radius:10px;color:var(--muted);display:flex;font-size:var(--font-body);font-weight:700;gap:12px;margin:3px 0;padding:13px 14px;position:relative;text-align:left;width:100%}.typebloom-app .nav-item:hover{background:#f3efe8;color:#41372d}.typebloom-app .nav-item.active{background:#ffede5;color:#b94b2c}.typebloom-app .nav-active-dot{background:var(--brand);border-radius:50%;height:5px;margin-left:auto;width:5px}.typebloom-app .nav-count{background:#f5ded2;border-radius:6px;color:#a4492b;font-size:var(--font-body);margin-left:auto;padding:1px 5px}.typebloom-app .sidebar-growth{background:linear-gradient(145deg,#f7f2e8,#f1ede1);border:1px solid #ede7da;border-radius:13px;margin:36px 9px 20px;padding:15px 15px 16px;position:relative;text-align:center}.typebloom-app .sidebar-growth strong{display:block;font-size:var(--font-body);font-weight:800;margin-bottom:7px}.typebloom-app .sidebar-growth p{color:var(--muted);font-size:var(--font-small);line-height:1.6;margin:auto;max-width:140px}.typebloom-app .sidebar-growth small{color:var(--muted);font-size:var(--font-caption)}.typebloom-app .growth-track{background:#e6dfd0;border-radius:3px;height:4px;margin:17px 2px 4px;overflow:hidden}.typebloom-app .growth-track span{background:#89a68d;display:block;height:100%;min-width:3px;transition:width .5s}.typebloom-app .plant-illustration{height:90px;margin:0 auto 9px;position:relative;width:100px}.typebloom-app .plant-illustration>span{background:#70967a;height:51px;left:49px;position:absolute;top:26px;transform:rotate(4deg);transform-origin:bottom;width:2px}.typebloom-app .plant-left{color:#8aa57d;fill:#b7c9a5;left:18px;position:absolute;stroke-width:1;top:37px;transform:rotate(-70deg)}.typebloom-app .plant-right{color:#78977a;fill:#bed0ad;left:50px;position:absolute;stroke-width:1;top:26px;transform:rotate(10deg)}.typebloom-app .plant-top{color:#d98c6c;fill:#efc3a6;left:30px;position:absolute;stroke-width:1;top:3px}.typebloom-app .plant-illustration>i{background:#e1a27a;border-radius:0 0 7px 7px;border-top:4px solid #c98561;bottom:1px;clip-path:polygon(0 0,100% 0,84% 100%,16% 100%);height:25px;left:32px;position:absolute;width:39px}.typebloom-app .sidebar-bottom{margin-top:auto}.typebloom-app .privacy-note{align-items:flex-start;border-top:1px solid var(--line);display:flex;font-size:var(--font-small);gap:8px;line-height:1.6;margin-top:14px;padding:19px 14px 10px}.typebloom-app .privacy-note svg{color:#8d9a85}.typebloom-app .sidebar-bottom>a{align-items:center;color:var(--muted);display:flex;font-size:var(--font-small);gap:8px;padding:4px 14px}.typebloom-app .app-body{margin-left:220px;width:calc(100% - 220px)}.typebloom-app .topbar{align-items:center;background:#fdfcfa;border-bottom:1px solid var(--line);display:flex;gap:15px;height:65px;justify-content:space-between;padding:0 35px}.typebloom-app .topbar-label{align-items:center;color:var(--muted);display:flex;font-size:var(--font-small);gap:9px}.typebloom-app .mini-flower{color:#e7a98b;display:grid;place-items:center}.typebloom-app .header-actions{align-items:center;display:flex;gap:7px}.typebloom-app .save-status{align-items:center;color:var(--text-success);display:flex;font-size:var(--font-small);gap:6px;margin-right:12px;max-width:210px}.typebloom-app .save-status>span{background:#7b9e83;border-radius:50%;flex-shrink:0;height:5px;width:5px}.typebloom-app .save-failed{color:#b94836}.typebloom-app .save-failed>span{background:#cf5345}.typebloom-app .toolbar-divider{background:var(--line);height:19px;margin:0 8px;width:1px}.typebloom-app .icon-btn,.typebloom-app .toolbar-btn{align-items:center;border-radius:8px;color:#857b70;display:inline-flex;height:33px;justify-content:center;width:33px}.typebloom-app .icon-btn:hover,.typebloom-app .toolbar-btn:hover{background:#f0ece5;color:#c4593c}.typebloom-app .motion-on{color:var(--muted)}.typebloom-app .main-content{margin:auto;max-width:1280px;min-height:calc(100vh - 115px);padding:30px 38px 0}.typebloom-app .practice-page{outline:none}.typebloom-app .practice-heading{align-items:center;display:flex;gap:20px;justify-content:space-between;margin-bottom:23px}.typebloom-app .back-link{align-items:center;color:var(--muted);display:flex;font-size:var(--font-small);gap:6px;margin-bottom:11px;padding:0}.typebloom-app .back-link:hover{color:var(--brand-deep)}.typebloom-app h1{color:#322820;font-size:32px;font-weight:850;line-height:1.2}.typebloom-app .page-intro p,.typebloom-app .practice-heading p{font-size:var(--font-body);letter-spacing:.05px;line-height:1.6;margin-top:9px}.typebloom-app .goal-badge{align-items:center;background:#f0f2e9;border:1px solid #e4e8d7;border-radius:12px;display:flex;gap:12px;min-width:181px;padding:13px 17px}.typebloom-app .goal-icon{background:#e5ebda;border-radius:50%;color:#789269;display:grid;height:32px;place-items:center;width:32px}.typebloom-app .goal-badge small{display:block;font-size:var(--font-caption);margin-bottom:1px}.typebloom-app .goal-badge strong{color:#506442;font-size:18px;line-height:1.15}.typebloom-app .goal-badge strong span{font-size:var(--font-small);font-weight:700;margin-left:2px}.typebloom-app .goal-leaf{color:#b3bf9c;margin-left:auto}.typebloom-app .metrics-grid{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:20px}.typebloom-app .metric{background:#fff;border:1px solid var(--line);border-radius:12px;min-width:0;overflow:hidden;padding:16px 19px 14px;position:relative}.typebloom-app .metric-label{align-items:center;color:var(--muted);display:flex;font-weight:700;justify-content:space-between;letter-spacing:.1px}.typebloom-app .metric-label>svg{color:#baa995}.typebloom-app .metric-value{align-items:baseline;display:flex;font-size:30px;font-variant-numeric:tabular-nums;font-weight:850;gap:6px;letter-spacing:-1.3px;line-height:1.15;margin-top:7px;position:relative;z-index:1}.typebloom-app .metric-value>span{font-weight:700;letter-spacing:0}.typebloom-app .metric-detail{font-size:var(--font-caption);margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.typebloom-app .speed-metric{background:#fff2eb;border-color:#f5ddcf}.typebloom-app .speed-metric .metric-label,.typebloom-app .speed-metric .metric-value{color:var(--muted)}.typebloom-app .help{color:var(--muted);cursor:help;display:inline-flex}.typebloom-app .metric-symbol{color:#bcae9e;display:inline-flex}.typebloom-app .speed-spark{bottom:19px;color:#edb494;opacity:.8;position:absolute;right:16px;width:62px}.typebloom-app .timer-value{font-size:29px;letter-spacing:-1px}.typebloom-app .live-dot{background:#c9c2b6;border-radius:50%;height:5px;width:5px}.typebloom-app .live-dot[data-running=true]{background:#7ea887;box-shadow:0 0 0 3px #edf4e9}.typebloom-app .progress-track{background:#f0ebe4;border-radius:10px;height:5px;margin-top:12px;overflow:hidden}.typebloom-app .progress-track>div{background:#dc936c;border-radius:10px;height:100%;transform-origin:left;transition:transform .2s var(--ease);width:100%}.typebloom-app .question-panel{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 3px 12px #45301e03;overflow:hidden;transition:border-color .2s}.typebloom-app .question-panel.has-error{border-color:#e7b7af}.typebloom-app .question-meta{align-items:center;display:flex;font-size:var(--font-small);gap:10px;justify-content:space-between;padding:18px 25px 0}.typebloom-app .question-meta>div:first-child{align-items:center;display:flex;gap:9px;min-width:0}.typebloom-app .eyebrow{color:var(--muted);font-size:var(--font-caption);font-weight:800;letter-spacing:1.35px;line-height:1.6;text-transform:none}.typebloom-app .meta-dot{background:#ccc1b5;border-radius:50%;height:3px;width:3px}.typebloom-app .topic-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.typebloom-app .part-tags{background:#f7f4ef;border:1px solid #eeebe4;border-radius:7px;display:flex;flex-shrink:0;gap:3px;padding:3px}.typebloom-app .part-tags>span{border-radius:4px;color:var(--muted);font-size:var(--font-caption);padding:3px 9px}.typebloom-app .part-tags>.selected{background:#fff;box-shadow:0 1px 4px #402b1b0b;color:var(--muted);font-weight:800}.typebloom-app .prompt-area{cursor:text;padding:17px 25px 19px}.typebloom-app .prompt-area h2{color:#342a23;font-size:20px;letter-spacing:-.45px;line-height:1.48;max-width:950px}.typebloom-app .context{color:var(--muted);font-size:var(--font-small);margin-top:12px;max-width:900px}.typebloom-app .context summary{align-items:center;cursor:pointer;display:flex;gap:5px;list-style:none}.typebloom-app .context strong{color:#5f5144;display:block;line-height:1.7;margin-top:12px}.typebloom-app .context p{color:var(--muted);line-height:1.8;margin-top:8px}.typebloom-app .model-heading{align-items:center;border-top:1px solid #f0ece6;display:flex;font-weight:800;gap:10px;justify-content:space-between;letter-spacing:.8px;padding:13px 25px 0;text-transform:none}.typebloom-app .model-heading b{color:var(--muted);padding:0 5px}.typebloom-app .typing-zone{cursor:text;padding:15px 25px 0}.typebloom-app .answer-viewport{height:148px;overflow:auto;overscroll-behavior:contain;padding:0 8px 0 0;position:relative;scroll-padding:30px;scrollbar-color:#e5dbce transparent;scrollbar-width:thin}.typebloom-app .answer-text{color:var(--muted);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-variant-ligatures:none;font-weight:400;letter-spacing:.1px;line-height:1.8;overflow-wrap:break-word;padding:0 0 8px;position:relative;white-space:pre-wrap;word-break:normal}.typebloom-app .character{border-radius:2px;display:inline;position:relative}.typebloom-app .character.typed{color:var(--typing-correct)}.typebloom-app .current-char{color:var(--typing-current)}.typebloom-app .current-char,.typebloom-app .current-space{background:var(--typing-current-soft)}.typebloom-app .current-space:after{background:var(--typing-current);border-radius:50%;content:"";height:.14em;left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);width:.14em}.typebloom-app .wrong-char{background:var(--typing-incorrect-soft);color:var(--typing-incorrect)}.typebloom-app .wrong-char.current-space:after{background:var(--typing-incorrect)}.typebloom-app .typing-caret{background:var(--typing-current);border-radius:2px;height:2px;left:0;pointer-events:none;position:absolute;top:0;width:1ch;z-index:2}.typebloom-app .is-typing .typing-caret{animation:caret-breathe 1s ease-in-out infinite}.typebloom-app .start-strip{align-items:center;background:#fcf7ef;border:1px solid #f0e4d5;border-radius:9px;cursor:pointer;display:flex;gap:11px;margin:12px 0 0;padding:12px 13px}.typebloom-app .start-strip-icon{background:#f2e9da;border-radius:50%;color:#b8936e;display:grid;flex-shrink:0;height:29px;place-items:center;width:29px}.typebloom-app .start-strip strong{color:var(--muted);display:block;font-size:var(--font-small);font-weight:800;margin-bottom:3px}.typebloom-app .start-strip span{display:block;font-size:var(--font-caption);line-height:1.4}.typebloom-app .start-strip .btn{margin-left:auto;min-height:33px;padding:9px 13px;white-space:nowrap}.typebloom-app .paused-zone .start-strip{background:#f3f5ef;border-color:#e4e8dc}.typebloom-app .paused-zone .start-strip-icon{background:#e7eddc;color:#7d8f6c}.typebloom-app .paused-zone .typing-caret{animation:none;background:var(--typing-current)}.typebloom-app .answer-legend{align-items:center;border-top:1px solid #f2eee9;display:flex;gap:10px;justify-content:space-between;margin-top:16px;padding:11px 25px 13px}.typebloom-app .answer-legend>div{display:flex;gap:17px}.typebloom-app .answer-legend>div>span{align-items:center;display:flex;gap:5px;white-space:nowrap}.typebloom-app .dot{border-radius:50%;display:inline-block;height:5px;width:5px}.typebloom-app .dot-green{background:#62957b}.typebloom-app .dot-orange{background:#e79b6c}.typebloom-app .dot-gray{background:#c9c0b5}.typebloom-app .keyboard-area{margin:20px auto 0;max-width:850px;position:relative}.typebloom-app .keyboard-caption{align-items:center;display:flex;justify-content:space-between;margin:0 4px 8px}.typebloom-app .keyboard-caption>span{align-items:center;display:flex;gap:6px}.typebloom-app .status-pip{background:#c1b4a3;border-radius:50%;height:4px;width:4px}.typebloom-app .status-pip.active{background:#b78e65;box-shadow:0 0 0 3px #eee6dc}.typebloom-app .keyboard{background:#eae6df;border:1px solid #ddd7ce;border-bottom:3px solid #d5cec2;border-radius:12px;box-shadow:0 8px 20px #62462c08;padding:10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.typebloom-app .keyboard-row{display:flex;gap:5px;justify-content:center;margin-bottom:5px}.typebloom-app .keyboard-row:last-child{margin:0}.typebloom-app .key{align-items:center;background:linear-gradient(#fffefb,#faf8f3);border:1px solid #e0d9cf;border-radius:5px;box-shadow:0 2px #d5cfc5;color:#716759;display:flex;font-weight:700;gap:5px;height:33px;justify-content:center;line-height:1;min-width:0;padding:0;position:relative;transition:background .13s,color .13s,box-shadow .13s,transform .08s}.typebloom-app .key>small{font-size:var(--font-caption);font-weight:400;left:7px;position:absolute;top:4px}.typebloom-app .key.utility-key{background:linear-gradient(#efede8,#e9e5dd)}.typebloom-app .key.target-key{animation:target-breathe 2.4s ease-in-out 1.5s infinite;background:linear-gradient(#ee9773,#de805a);border-color:#d87e58;box-shadow:0 2px #bd6846,0 0 0 2px #f1d8c6}.typebloom-app .key.target-key small{color:var(--muted)}.typebloom-app .key.pressed{background:#e5dbca;box-shadow:0 0 #d5cfc5;transform:translateY(2px)}.typebloom-app .key.target-key.pressed{background:#c97550}.typebloom-app .key.error-key{background:#ecb3a6!important;border-color:#d59888;box-shadow:0 1px #c28074;color:#912f2d}.typebloom-app .key.caps-on:after{background:#d59642;border-radius:50%;content:"";height:3px;position:absolute;right:7px;top:7px;width:3px}.typebloom-app .space-line{border:1px solid #ddd4c7;border-radius:0 0 2px 2px;border-top:0;display:block;height:3px;width:52px}.typebloom-app .target-key .space-line{border-color:#ffe9d7}.typebloom-app .keyboard-footer{align-items:center;display:flex;justify-content:space-between;margin:12px 4px 0;position:relative}.typebloom-app .keyboard-footer>span{align-items:center;display:flex;gap:6px}.typebloom-app kbd{align-items:center;border:solid #dfd7ca;border-radius:4px;border-width:1px 1px 2px;color:var(--muted);display:inline-flex;font-family:inherit;font-size:var(--font-caption);height:17px;justify-content:center;min-width:21px;padding:0 3px}.typebloom-app .streak{align-items:center;display:flex;gap:6px}.typebloom-app .streak svg{color:#c6ab8a}.typebloom-app .streak strong{color:var(--muted);display:inline-block;font-size:var(--font-control);font-variant-numeric:tabular-nums;line-height:1}.typebloom-app .streak small,.typebloom-app .streak>span{font-size:var(--font-caption)}.typebloom-app .streak-divider{background:#dcd3c5;height:11px;margin:0 5px;width:1px}.typebloom-app .warm-streak strong,.typebloom-app .warm-streak svg{color:#d27143}.typebloom-app .combo-pop{align-items:center;background:#fff5dc;border:1px solid #efd7a4;border-radius:20px;bottom:30px;box-shadow:0 5px 15px #976b1f0a;color:var(--muted);display:flex;font-size:var(--font-small);font-weight:800;gap:7px;left:50%;opacity:0;padding:9px 14px;pointer-events:none;position:absolute;transform:translate(-50%);visibility:hidden;white-space:nowrap}.typebloom-app .combo-pop strong{color:var(--muted)}.typebloom-app .practice-actions{align-items:center;border-top:1px solid #eae3d9;display:flex;justify-content:space-between;margin-top:20px;padding:15px 0 5px}.typebloom-app .practice-tip{align-items:center;display:flex;font-size:var(--font-caption);gap:5px}.typebloom-app .practice-tip svg{color:#b7ad91}.typebloom-app .btn{align-items:center;border-radius:8px;display:inline-flex;font-size:var(--font-small);font-weight:800;gap:8px;justify-content:center;letter-spacing:.05px;line-height:1.3;min-height:38px;padding:10px 17px;white-space:nowrap}.typebloom-app .btn-primary{background:#bd472d;border:1px solid #ac3c25;box-shadow:0 2px #99392115;color:#fff7f0}.typebloom-app .btn-primary:hover{background:#a83c24;box-shadow:0 4px 12px #a6522b18}.typebloom-app .btn-outline{background:#fffdf9;border:1px solid #e4d8c9;box-shadow:0 1px 1px #6a4e2a06;color:var(--muted)}.typebloom-app .btn-outline:hover{background:#faf3e9;border-color:#cdb99f}.typebloom-app .btn-quiet{color:var(--muted);padding-left:0}.typebloom-app .btn-quiet:hover{color:#a35f36}.typebloom-app .btn-danger{background:#b34b3f;color:#fff}.typebloom-app .text-btn{align-items:center;color:var(--muted);display:inline-flex;font-size:var(--font-small);font-weight:800;gap:6px;padding:10px 0}.typebloom-app .app-footer{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:1280px;padding:25px 38px 17px}.typebloom-app .app-footer>span{align-items:center;display:flex;gap:5px}.typebloom-app .app-footer>span>span{margin-left:3px}.typebloom-app .page-intro{padding:11px 0 25px}.typebloom-app .page-intro>.eyebrow{display:block;margin-bottom:9px}.typebloom-app .page-intro h1{font-size:32px}.typebloom-app .continue-card{align-items:center;background:#f4eddf;border:1px solid #e7ddcc;border-radius:13px;display:flex;gap:19px;margin-bottom:23px;padding:23px 25px}.typebloom-app .continue-icon{color:#d0916a;--surface:#f4eddf;background:#ede0c9;border-radius:15px;display:grid;flex-shrink:0;height:57px;place-items:center;width:57px}.typebloom-app .continue-card h3{font-size:19px;font-weight:800;margin-top:5px}.typebloom-app .continue-card p{font-size:var(--font-small);margin-top:6px}.typebloom-app .continue-card>.btn{margin-left:auto}.typebloom-app .topic-grid{display:grid;gap:11px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:25px}.typebloom-app .topic-card{align-items:center;background:#fffdf9;border:1px solid var(--line);border-radius:10px;display:grid;gap:8px 10px;grid-template-columns:34px 1fr;padding:15px 15px 12px;text-align:left}.typebloom-app .topic-card:hover{background:#fff;border-color:#c8b399}.typebloom-app .topic-card.selected{background:#fff7ee;border-color:#d59270;box-shadow:0 0 0 1px #d59270}.typebloom-app .topic-icon{border-radius:9px;display:grid;grid-row:span 2;height:34px;place-items:center;width:34px}.typebloom-app .topic-card>strong{align-self:end;font-size:var(--font-small);font-weight:800;letter-spacing:-.1px}.typebloom-app .topic-card>span:not(.topic-icon){align-self:start;font-size:var(--font-caption)}.typebloom-app .topic-track{background:#eee9e1;border-radius:3px;grid-column:span 2;height:3px;margin-top:3px;overflow:hidden}.typebloom-app .topic-track i{display:block;height:100%;transform-origin:left;width:100%}.typebloom-app .library-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:10px;margin-bottom:17px}.typebloom-app .search-field{align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--muted);display:flex;flex:1;gap:9px;height:44px;padding:0 12px}.typebloom-app .search-field input{background:none;border:none;color:#7f6b55;font-size:var(--font-body);outline:none;width:100%}.typebloom-app .search-field input::-moz-placeholder{color:var(--muted)}.typebloom-app .search-field input::placeholder{color:var(--muted)}.typebloom-app select{background:#fffdf9;border:1px solid #e6ddcf;border-radius:7px;color:var(--muted);font-size:var(--font-body);height:44px;min-width:160px;padding:9px 28px 9px 11px}.typebloom-app .result-count{color:var(--muted);font-size:var(--font-small);white-space:nowrap}.typebloom-app .question-list{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}.typebloom-app .course-question{background:#fff;border:1px solid var(--line);border-radius:11px;display:flex;gap:15px;padding:20px;transition:border-color .2s,box-shadow .2s}.typebloom-app .course-question:hover{border-color:#d5c6b3;box-shadow:0 6px 20px #84634707}.typebloom-app .course-number{background:#f6f2eb;border:1px solid #eee6da;border-radius:7px;color:var(--muted);display:grid;font-size:var(--font-small);font-weight:800;height:31px;min-width:34px;place-items:center}.typebloom-app .course-question-body{flex:1;min-width:0}.typebloom-app .topic-pill{align-items:center;background:#f4efe7;border-radius:4px;color:var(--muted);display:inline-flex;padding:3px 6px}.typebloom-app .course-question h3{font-size:16px;font-weight:800;letter-spacing:-.25px;line-height:1.3;margin:9px 0 7px}.typebloom-app .course-question p{display:-webkit-box;font-size:var(--font-small);-webkit-line-clamp:2;line-height:1.65;min-height:32px;-webkit-box-orient:vertical;overflow:hidden}.typebloom-app .part-buttons{display:flex;gap:6px;margin-top:16px}.typebloom-app .part-button{align-items:center;background:#fcfaf5;border:1px solid #ece5d8;border-radius:6px;color:var(--muted);display:flex;flex:1;font-size:var(--font-caption);gap:7px;justify-content:space-between;min-width:0;padding:8px 9px}.typebloom-app .part-button>span:first-child{align-items:center;display:flex;gap:5px;white-space:nowrap}.typebloom-app .part-button:hover{background:#fff1e5;border-color:#e6bba0}.typebloom-app .star-row{align-items:center;color:#dfd6c5;display:inline-flex;gap:2px;vertical-align:middle}.typebloom-app .star-row .earned{color:#d8a34a;fill:#e9ba62;stroke-width:1.3}.typebloom-app .part-button .star-row svg{height:10px;width:10px}.typebloom-app .summary-grid{display:grid;gap:13px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:23px}.typebloom-app .summary-card{background:#fff;border:1px solid var(--line);border-radius:11px;padding:19px 20px}.typebloom-app .summary-card>span{align-items:center;display:flex;gap:7px}.typebloom-app .summary-card>span svg{color:#bb9e7b}.typebloom-app .summary-card>strong{display:block;font-size:30px;font-variant-numeric:tabular-nums;font-weight:800;line-height:1.1;margin-top:12px}.typebloom-app .summary-card small{color:var(--muted);font-size:var(--font-small);margin-left:7px}.typebloom-app .chart-panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:23px 25px 8px}.typebloom-app .section-heading{align-items:center;display:flex;gap:10px;justify-content:space-between}.typebloom-app .section-heading h2{font-size:20px;font-weight:800;letter-spacing:-.3px}.typebloom-app .section-heading p{color:var(--muted);font-size:var(--font-small);margin-top:5px}.typebloom-app .chart-legend{align-items:center;color:var(--text-success);display:flex;font-size:var(--font-caption);gap:6px}.typebloom-app .chart-legend>i{border-top:1px dashed #7d9971;height:1px;width:15px}.typebloom-app .trend-chart{display:block;margin:17px 0 0;overflow:visible;width:100%}.typebloom-app .records-heading{margin:28px 0 16px}.typebloom-app .history-filters{margin-bottom:15px}.typebloom-app .records-table{background:#fff;border:1px solid var(--line);border-radius:11px;overflow:auto}.typebloom-app table{border-collapse:collapse;font-size:var(--font-body);text-align:left;width:100%}.typebloom-app th{background:#faf7f1;border-bottom:1px solid #ece4d6;color:var(--muted);font-size:13px;font-weight:800;padding:12px 18px}.typebloom-app td{border-bottom:1px solid #f2ede4;color:var(--muted);font-variant-numeric:tabular-nums;padding:15px 18px}.typebloom-app tr:last-child td{border:0}.typebloom-app td strong{color:#665743;display:block;font-size:var(--font-body)}.typebloom-app td>small,.typebloom-app td>span:not(.star-row){color:var(--muted);display:block;font-size:var(--font-small);margin-top:3px}.typebloom-app td:first-child{max-width:280px}.typebloom-app td:first-child>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.typebloom-app .passed-speed{color:var(--text-success);font-weight:800}.typebloom-app .empty-state{background:#fffdf9;border:1px solid var(--line);border-radius:12px;grid-column:1/-1;padding:55px 25px;text-align:center}.typebloom-app .chart-panel .empty-state{border:0;padding:45px}.typebloom-app .empty-state>div{background:#f2eee3;border-radius:50%;color:var(--muted);display:grid;height:59px;margin:0 auto 20px;place-items:center;width:59px}.typebloom-app .empty-state h3{color:var(--muted);font-size:18px;font-weight:800}.typebloom-app .empty-state p{color:var(--muted);font-size:var(--font-body);line-height:1.7;margin:9px auto 20px;max-width:400px}.typebloom-app .empty-state .btn{margin-top:18px}.typebloom-app .review-list{display:flex;flex-direction:column;gap:13px}.typebloom-app .review-card{align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;display:flex;gap:18px;padding:22px}.typebloom-app .review-card-icon{background:#f0eaf4;border-radius:11px;color:#a08cb6;display:grid;flex-shrink:0;height:44px;place-items:center;width:44px}.typebloom-app .review-card-content{flex:1;min-width:0}.typebloom-app .review-card h3{font-size:17px;margin:7px 0 11px}.typebloom-app .review-fragments{font-family:Menlo,Consolas,monospace;font-size:var(--font-body);line-height:1.9;max-width:700px}.typebloom-app .error-count{background:#fff0e9;border-radius:4px;color:var(--muted);display:inline-block;font-size:var(--font-caption);letter-spacing:0;margin-left:10px;padding:2px 5px}.typebloom-app .settings-layout{display:grid;gap:18px;grid-template-columns:1fr 1fr}.typebloom-app .settings-card{background:#fff;border:1px solid var(--line);border-radius:12px;min-width:0;padding:24px}.typebloom-app .settings-card h2{align-items:center;display:flex;font-size:17px;gap:9px;letter-spacing:-.3px;margin-bottom:22px}.typebloom-app .settings-card h2 svg{color:#b78965}.typebloom-app .setting-row{align-items:center;border-bottom:1px solid #f4eee5;display:flex;gap:15px;justify-content:space-between;padding:14px 0}.typebloom-app .setting-row>div{min-width:0}.typebloom-app .setting-row strong{color:#79654e;font-size:var(--font-body)}.typebloom-app .setting-row p,.typebloom-app .settings-card>p{color:var(--muted);font-size:var(--font-small);line-height:1.8;margin-top:5px;max-width:310px}.typebloom-app .toggle{align-items:center;background:#ddd5c9;border-radius:12px;display:flex;flex-shrink:0;height:20px;padding:3px;width:35px}.typebloom-app .toggle span{background:#fff;border-radius:50%;box-shadow:0 1px 3px #73634a30;height:14px;transition:transform .25s var(--ease);width:14px}.typebloom-app .toggle.is-on{background:#cc855e}.typebloom-app .toggle.is-on span{transform:translate(15px)}.typebloom-app .setting-row input[type=range]{margin-left:auto;width:45%}.typebloom-app .range-value{color:var(--muted);font-size:var(--font-small);min-width:35px;text-align:right}.typebloom-app .setting-label{color:#79654e;font-size:var(--font-body);font-weight:800;margin:20px 0 12px}.typebloom-app .sound-options{display:grid;gap:7px;grid-template-columns:repeat(3,minmax(0,1fr))}.typebloom-app .sound-options button{background:#fdfbf7;border:1px solid #e9e1d5;border-radius:8px;padding:14px 8px 11px;position:relative}.typebloom-app .sound-options button.selected{background:#fff3e8;border-color:#d59573;color:var(--muted)}.typebloom-app .sound-options button>svg{position:absolute;right:6px;top:6px}.typebloom-app .sound-wave{align-items:center;display:flex;gap:3px;height:25px;justify-content:center;margin-bottom:8px}.typebloom-app .sound-wave i{background:#d3a07e;border-radius:2px;height:10px;width:3px}.typebloom-app .sound-wave i:nth-child(2),.typebloom-app .sound-wave i:nth-child(4){height:17px}.typebloom-app .sound-wave i:nth-child(3){height:25px}.typebloom-app .sound-wave.wood i{background:#a98e68}.typebloom-app .sound-wave.glass i{background:#98b5b5}.typebloom-app .motion-setting{border:0;margin-top:8px}.typebloom-app .font-preview{background:#fbf8f2;border-radius:7px;color:var(--muted);font-family:Menlo,Consolas,monospace;line-height:1.7;margin-top:16px;overflow-wrap:anywhere;padding:20px 14px}.typebloom-app .settings-hint{align-items:center;color:var(--text-success);display:flex;font-size:var(--font-small);gap:7px;margin-top:25px}.typebloom-app .backup-card{align-items:center;display:flex;gap:20px;grid-column:1/-1;justify-content:space-between}.typebloom-app .backup-card h2{margin-bottom:10px}.typebloom-app .backup-card p{color:var(--muted);font-size:var(--font-small);line-height:1.8}.typebloom-app .backup-buttons{display:flex;gap:9px}.typebloom-app .backup-stats{align-items:center;color:var(--muted);display:flex;font-size:var(--font-caption);gap:17px;margin-top:14px}.typebloom-app .backup-stats span{align-items:center;display:flex;gap:4px}.typebloom-app .reset-link{align-items:center;color:var(--muted);display:flex;font-size:var(--font-small);gap:7px;grid-column:1/-1;justify-self:start;padding:5px 0}.typebloom-app .muted{color:var(--muted)}.typebloom-app .small{font-size:var(--font-small);line-height:1.8}.typebloom-app .result-panel{background:radial-gradient(ellipse at top,#fff7e8,#fffefb 65%);border:1px solid #e9ddc9;border-radius:15px;min-height:420px;overflow:hidden;padding:34px 25px 30px;position:relative;text-align:center}.typebloom-app .result-content{position:relative;z-index:2}.typebloom-app .result-flower{background:#f6e9cb;border:1px solid #ecd8ad;border-radius:50%;box-shadow:0 0 0 7px #fbf3e2;color:#bb9352;display:grid;height:54px;margin:0 auto 15px;place-items:center;width:54px}.typebloom-app .result-content>.eyebrow{display:block;margin-top:20px}.typebloom-app .result-content h2{color:#6e573a;font-size:27px;letter-spacing:-.6px;margin:9px 0 18px}.typebloom-app .stars-large{filter:drop-shadow(0 3px 0 #f1ddb5);gap:9px;margin-bottom:13px}.typebloom-app .qualification{align-items:center;display:flex;gap:5px;justify-content:center;margin:7px 0}.typebloom-app .qualification.qualified{color:var(--text-success)}.typebloom-app .result-stats{border-bottom:1px solid #efe6d6;border-top:1px solid #efe6d6;display:grid;grid-template-columns:repeat(4,1fr);margin:26px auto 0;max-width:650px;padding:19px 0}.typebloom-app .result-stat{border-right:1px solid #efe6d6;display:flex;flex-direction:column;gap:6px}.typebloom-app .result-stat:last-child{border:0}.typebloom-app .result-stat strong{color:#8c6b44;font-size:27px;font-variant-numeric:tabular-nums;letter-spacing:-.8px}.typebloom-app .result-stat strong small{color:var(--muted);font-size:var(--font-small);letter-spacing:0;margin-left:3px}.typebloom-app .result-stat>span{font-size:var(--font-caption)}.typebloom-app .result-note{align-items:center;display:flex;font-size:var(--font-small);gap:5px;justify-content:center;margin:18px 0}.typebloom-app .result-actions{display:flex;gap:8px;justify-content:center;margin-top:18px}.typebloom-app .star-guide{display:flex;gap:16px;justify-content:center;margin:23px 0 0}.typebloom-app .confetti{left:50%;pointer-events:none;position:absolute;top:150px;z-index:3}.typebloom-app .confetti-piece{border-radius:2px;height:11px;left:0;opacity:0;position:absolute;top:0;width:7px}.typebloom-app .modal-backdrop{align-items:center;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#342a1f45;display:flex;inset:0;justify-content:center;padding:30px;position:fixed;z-index:90}.typebloom-app .dialog{background:#fffdf9;border:1px solid #ebdfca;border-radius:17px;box-shadow:0 25px 100px #30220e30;max-width:90vw;padding:33px;position:relative;width:460px}.typebloom-app .dialog-close{position:absolute;right:14px;top:13px}.typebloom-app .dialog-flower{color:#da9a78;--surface:#fffdf9;margin-bottom:18px}.typebloom-app .dialog h2{color:#705a40;font-size:23px;line-height:1.3;margin-bottom:13px}.typebloom-app .dialog p{font-size:var(--font-body);line-height:1.85}.typebloom-app .dialog-actions{display:flex;gap:9px;justify-content:flex-end;margin-top:25px}.typebloom-app .import-summary{align-items:center;background:#f4eee3;border-radius:8px;color:var(--muted);display:flex;font-size:var(--font-small);gap:8px;margin:18px 0;padding:15px}.typebloom-app .import-summary strong{color:var(--muted);font-size:21px}.typebloom-app .check-label{gap:9px;margin:13px 0}.typebloom-app .check-label,.typebloom-app .toast{align-items:center;color:var(--muted);display:flex;font-size:var(--font-small)}.typebloom-app .toast{background:#fffaf0;border:1px solid #e5d9c3;border-radius:11px;bottom:25px;box-shadow:0 7px 30px #56412815;gap:10px;left:calc(50% + 110px);line-height:1.5;max-width:700px;padding:13px 15px;position:fixed;transform:translate(-50%);z-index:110}.typebloom-app .toast>svg{color:#9fa781}.typebloom-app .toast>button{color:var(--muted);display:flex;margin-left:10px;padding:0}.typebloom-app .save-error-banner{align-items:center;background:#fcebe0;border-top:1px solid #e8bca9;bottom:0;color:#aa5039;display:flex;font-size:var(--font-small);gap:8px;justify-content:center;left:220px;padding:10px;position:fixed;right:0;z-index:40}.typebloom-app .visually-hidden{height:1px;overflow:hidden;position:absolute!important;width:1px;clip:rect(0,0,0,0);white-space:nowrap}.typebloom-app .no-motion *,.typebloom-app[data-motion=false] *{animation-delay:0s!important;animation-duration:0s!important;scroll-behavior:auto!important;transition-duration:0s!important}.typebloom-app .no-motion .combo-pop{display:none}@keyframes target-breathe{0%,to{box-shadow:0 2px #bd6846,0 0 0 2px #f1d8c6}50%{box-shadow:0 2px #bd6846,0 0 0 4px #efd5c088}}@keyframes caret-breathe{0%,to{opacity:1}50%{opacity:.45}}@media(min-width:1600px){.typebloom-app .main-content{padding-top:38px}.typebloom-app .answer-viewport{height:180px}.typebloom-app .key{height:37px}.typebloom-app .keyboard-area{margin-top:25px}.typebloom-app .practice-heading{margin-bottom:28px}.typebloom-app .metrics-grid{margin-bottom:23px}}@media(max-width:1200px){.typebloom-app .sidebar{padding-left:12px;padding-right:12px;width:190px}.typebloom-app .brand{font-size:20px;gap:8px}.typebloom-app .brand-mark{border-radius:10px;height:32px;width:32px}.typebloom-app .brand-mark svg{width:24px}.typebloom-app .brand small{font-size:var(--font-caption)}.typebloom-app .app-body{margin-left:190px;width:calc(100% - 190px)}.typebloom-app .main-content{padding:25px 25px 0}.typebloom-app .topbar{padding:0 25px}.typebloom-app .save-status,.typebloom-app .topbar-label{font-size:var(--font-caption)}.typebloom-app .save-status{margin-right:4px}.typebloom-app .sidebar-growth{margin:28px 6px 15px;padding-left:10px;padding-right:10px}.typebloom-app .nav-item{font-size:var(--font-body);padding:12px}.typebloom-app .topic-grid{gap:8px;grid-template-columns:repeat(4,minmax(0,1fr))}.typebloom-app .topic-card{gap:6px;grid-template-columns:28px 1fr;padding:12px 10px}.typebloom-app .topic-icon{height:28px;width:28px}.typebloom-app .topic-icon svg{width:17px}.typebloom-app .topic-card>strong{font-size:var(--font-small)}.typebloom-app .course-question{gap:11px;padding:17px}.typebloom-app .course-question h3{font-size:var(--font-control)}.typebloom-app .part-button{font-size:var(--font-caption);padding:7px 6px}.typebloom-app .part-button>.star-row{gap:0}.typebloom-app .part-button>.star-row svg{width:8px}.typebloom-app .practice-heading h1{font-size:29px}.typebloom-app .metric{padding:14px 15px}.typebloom-app .metric-detail,.typebloom-app .metric-label{font-size:var(--font-caption)}.typebloom-app .speed-spark{width:45px}.typebloom-app .toast{left:calc(50% + 95px)}.typebloom-app .save-error-banner{left:190px}.typebloom-app .app-footer{padding-left:25px;padding-right:25px}.typebloom-app .start-strip span{font-size:var(--font-caption)}.typebloom-app .history-filters{flex-wrap:wrap}.typebloom-app .history-filters select{flex:1}.typebloom-app .records-table td,.typebloom-app th{padding-left:12px;padding-right:12px}.typebloom-app .review-card{flex-wrap:wrap}.typebloom-app .review-card>.btn{margin-left:62px}}@media(max-height:800px){.typebloom-app .sidebar{padding-top:24px}.typebloom-app .sidebar-growth{margin-top:24px;padding-top:9px}.typebloom-app .plant-illustration{height:75px;margin-top:-9px;transform:scale(.85);transform-origin:center bottom}.typebloom-app .sidebar-rule{margin-bottom:21px;margin-top:22px}.typebloom-app .topbar{height:55px}.typebloom-app .main-content{padding-top:20px}.typebloom-app .practice-heading{margin-bottom:18px}.typebloom-app .practice-heading h1{font-size:28px}.typebloom-app .practice-heading p{font-size:var(--font-small);margin-top:6px}.typebloom-app .back-link{margin-bottom:8px}.typebloom-app .metric{padding-bottom:11px;padding-top:12px}.typebloom-app .metric-value{font-size:27px}.typebloom-app .metrics-grid{margin-bottom:16px}.typebloom-app .question-meta{padding-top:14px}.typebloom-app .prompt-area{padding-bottom:14px;padding-top:12px}.typebloom-app .prompt-area h2{font-size:19px}.typebloom-app .model-heading{padding-top:11px}.typebloom-app .typing-zone{padding-top:12px}.typebloom-app .answer-viewport{height:84px}.typebloom-app .context:not([open]){margin-top:6px}.typebloom-app .start-strip{margin-top:10px;padding:9px 11px}.typebloom-app .answer-legend{margin-top:13px;padding-bottom:10px;padding-top:10px}.typebloom-app .key{height:29px}.typebloom-app .keyboard{padding:9px}.typebloom-app .keyboard-row{gap:4px;margin-bottom:4px}.typebloom-app .keyboard-area{margin-top:12px;max-width:790px}.typebloom-app .keyboard-footer{margin-top:8px}.typebloom-app .practice-actions{margin-top:10px;padding-top:12px}.typebloom-app .app-footer{padding-top:18px}}@media(max-width:1023px){.typebloom-app .topbar-label{display:none}.typebloom-app .topbar{justify-content:flex-end}.typebloom-app .goal-badge{min-width:150px}.typebloom-app .goal-leaf{display:none}.typebloom-app .practice-heading h1{font-size:26px}.typebloom-app .settings-layout{grid-template-columns:1fr}.typebloom-app .backup-card{flex-wrap:wrap}.typebloom-app .question-list{grid-template-columns:1fr}.typebloom-app .topic-grid{grid-template-columns:repeat(2,1fr)}.typebloom-app .topic-card>strong{font-size:var(--font-small)}.typebloom-app .part-button>.star-row svg{width:12px}.typebloom-app .library-toolbar{flex-wrap:wrap}.typebloom-app .search-field{flex-basis:100%;min-width:100%}.typebloom-app .library-toolbar select{flex:1}.typebloom-app .summary-card{padding:15px}.typebloom-app .summary-card>span{font-size:var(--font-caption);gap:5px}.typebloom-app .summary-card>span svg{width:15px}.typebloom-app .practice-tip{display:none}.typebloom-app .start-strip>div:nth-child(2)>span{max-width:240px}.typebloom-app .star-guide{font-size:var(--font-caption);gap:9px}}@media(prefers-reduced-motion:reduce){.typebloom-app *,.typebloom-app :after,.typebloom-app :before{animation:none!important;scroll-behavior:auto!important}}.typebloom-app .metric-label{color:#7f6f60;font-size:var(--font-small)}.typebloom-app .metric-detail{color:var(--muted);font-size:var(--font-small)}.typebloom-app .metric-value{font-size:33px}.typebloom-app .metric-value>span{color:var(--muted);font-size:var(--font-small)}.typebloom-app .speed-metric .metric-detail{color:var(--muted)}.typebloom-app .speed-metric .metric-label{color:#956345}.typebloom-app .goal-badge small{color:var(--text-success)}.typebloom-app .question-meta .eyebrow,.typebloom-app .topic-label{color:var(--muted);font-size:var(--font-small)}.typebloom-app .prompt-area h2{font-weight:800}.typebloom-app .model-heading{color:var(--muted);font-size:var(--font-caption)}.typebloom-app .model-heading>span:first-child{color:var(--muted)}.typebloom-app .answer-legend{color:var(--muted);font-size:var(--font-caption)}.typebloom-app .answer-legend>span{color:var(--muted)}.typebloom-app .keyboard-caption{color:var(--muted);font-size:var(--font-caption)}.typebloom-app .key{color:#73624e}.typebloom-app .key.utility-key{color:var(--muted)}.typebloom-app .keyboard-footer{color:var(--muted);font-size:var(--font-caption)}.typebloom-app .streak{color:var(--muted)}.typebloom-app .start-strip strong{color:#7d6145;font-size:var(--font-body)}.typebloom-app .start-strip span{color:var(--muted);font-size:var(--font-small)}.typebloom-app .start-strip .btn{font-size:var(--font-small)}.typebloom-app .practice-tip{color:var(--muted);font-size:var(--font-small)}.typebloom-app .privacy-note{color:var(--muted)}.typebloom-app .app-footer{color:var(--muted);font-size:var(--font-caption)}.typebloom-app .app-footer>span>span,.typebloom-app .page-intro p,.typebloom-app .practice-heading p,.typebloom-app .setting-row p,.typebloom-app .settings-card p{color:var(--muted)}.typebloom-app .setting-row strong{color:#756046}.typebloom-app .course-question p,.typebloom-app .settings-card>p{color:var(--muted)}.typebloom-app .course-question h3{font-size:17px}.typebloom-app .sound-options button,.typebloom-app .summary-card>span{color:var(--muted);font-size:var(--font-small)}.typebloom-app .continue-card p{color:var(--muted)}.typebloom-app .star-guide{color:var(--muted);font-size:var(--font-caption)}.typebloom-app .qualification,.typebloom-app .result-stat>span{color:var(--muted);font-size:var(--font-small)}.typebloom-app .result-note{color:var(--muted);font-size:var(--font-body)}.typebloom-app .dialog p,.typebloom-app .topic-card>span:not(.topic-icon){color:var(--muted)}.typebloom-app .topic-pill{font-size:var(--font-caption)}.typebloom-app .review-fragments{color:var(--muted)}.typebloom-app .setting-label{color:#7b6247}.typebloom-app .text-btn{color:#ad4d2d}@media(max-height:800px){.typebloom-app .metric-value{font-size:28px}.typebloom-app .metric-detail{font-size:var(--font-caption)}.typebloom-app .start-strip strong{font-size:var(--font-small)}.typebloom-app .start-strip span{font-size:var(--font-caption)}}.typebloom-app .combo-particles{left:50%;pointer-events:none;position:absolute;top:50%}.typebloom-app .combo-particles i{background:#df9b52;border-radius:50%;height:4px;opacity:0;position:absolute;width:4px}.typebloom-app .combo-particles i:nth-child(3n){background:#98b29a}.typebloom-app .plant-top{animation:bloom-sway 6s ease-in-out infinite;transform-origin:50% 90%}.typebloom-app .sound-options button:hover .sound-wave i{animation:sound-wave .7s ease-in-out 2}.typebloom-app .sound-options button:hover .sound-wave i:nth-child(2n){animation-delay:.12s}.typebloom-app .sound-options button:hover .sound-wave i:nth-child(3n){animation-delay:.25s}@keyframes bloom-sway{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}@keyframes sound-wave{0%,to{transform:scaleY(1)}50%{transform:scaleY(.5)}}.typebloom-app .personal-target{align-items:center;color:var(--muted);display:flex;font-size:var(--font-small);gap:5px;justify-content:center;margin:10px auto}.typebloom-app .result-question{color:var(--muted);font-size:var(--font-small);margin:16px 0 0}.typebloom-app .result-mistakes{align-items:center;color:var(--muted);display:flex;font-size:var(--font-small);gap:8px;justify-content:center;margin:13px auto}.typebloom-app .mistake-chip{align-items:center;background:#faf0e2;border:1px solid #eaddc5;border-radius:6px;display:flex;font-family:Menlo,Consolas,monospace;gap:5px;padding:4px 7px}.typebloom-app .mistake-chip s{color:var(--muted)}.typebloom-app .mistake-chip b{color:var(--muted);font-weight:400}.typebloom-app .mistake-chip small{color:var(--muted);font-size:var(--font-caption)}.typebloom-app .metrics-grid{background:#f8f7f4;position:sticky;top:12px;z-index:15}.typebloom-app .sidebar{overflow-y:auto;scrollbar-color:#e5dbce transparent;scrollbar-width:thin}.typebloom-app .brand small{font-size:10px;letter-spacing:1px}.typebloom-app .nav-eyebrow{letter-spacing:.5px}.typebloom-app .nav-item{font-size:var(--font-control);gap:10px;padding:10px 12px}.typebloom-app .btn{font-size:var(--font-body)}.typebloom-app .icon-btn,.typebloom-app .toolbar-btn{height:40px;width:40px}.typebloom-app .answer-legend,.typebloom-app .keyboard-caption,.typebloom-app .keyboard-footer,.typebloom-app .metric-detail,.typebloom-app .metric-label,.typebloom-app .model-heading,.typebloom-app .question-meta{line-height:1.35}.typebloom-app .course-question p,.typebloom-app .metric-label,.typebloom-app .records-table td,.typebloom-app .records-table th,.typebloom-app .section-heading p,.typebloom-app .setting-label,.typebloom-app .setting-row strong,.typebloom-app .summary-card>span,.typebloom-app select{color:var(--text-secondary)}.typebloom-app .key{font-size:var(--font-small);line-height:1.2}.typebloom-app .key.utility-key{font-size:var(--font-caption)}.typebloom-app .key>small{color:var(--muted);font-size:10px;line-height:1}.typebloom-app .course-question h3{font-size:18px}.typebloom-app .topic-card>strong{font-size:var(--font-body)}.typebloom-app .part-button{flex-wrap:wrap;font-size:var(--font-small)}.typebloom-app .part-button .star-row svg{height:12px;width:12px}.typebloom-app .history-filters select{flex:1 1 180px}.typebloom-app .records-table table{min-width:760px}.typebloom-app .records-heading .small{color:var(--text-secondary);font-size:var(--font-small)}.typebloom-app .backup-buttons,.typebloom-app .star-guide{flex-wrap:wrap}@media(max-height:800px){.typebloom-app .plant-illustration,.typebloom-app .sidebar-growth p{display:none}.typebloom-app .question-meta{padding-top:10px}.typebloom-app .prompt-area{padding-bottom:10px;padding-top:10px}.typebloom-app .model-heading{padding-top:8px}.typebloom-app .typing-zone{padding-top:9px}.typebloom-app .answer-legend{margin-top:8px;padding-bottom:8px;padding-top:8px}.typebloom-app .keyboard-area{margin-top:10px}.typebloom-app .practice-actions{margin-top:8px;padding-top:8px}}.typebloom-app .topbar{height:56px}.typebloom-app .topbar-label{color:var(--text-secondary);font-size:var(--font-body);font-weight:700}.typebloom-app .sidebar-rule{margin:24px 10px 20px}.typebloom-app .sidebar-growth{background:none;border:0;margin:24px 10px 16px;padding:12px 4px;text-align:left}.typebloom-app .sidebar-progress-label{color:var(--muted);font-size:var(--font-small)}.typebloom-app .sidebar-growth strong{font-size:20px;margin:4px 0 0}.typebloom-app .sidebar-growth strong>span{color:var(--muted);font-size:var(--font-small);font-weight:400}.typebloom-app .sidebar-growth .growth-track{height:3px;margin:10px 0 0}.typebloom-app .sidebar-bottom>a{margin-top:12px}.typebloom-app .practice-page .metrics-grid{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:none;flex-shrink:0;gap:0;margin:0 0 14px;padding:0;position:static}.typebloom-app .practice-page .metric{background:transparent;border:0;border-radius:0;box-shadow:none;overflow:visible;padding:10px 18px}.typebloom-app .practice-page .metric+.metric{border-left:1px solid var(--line)}.typebloom-app .practice-page .metric-label{font-size:var(--font-small);font-weight:600;gap:8px;justify-content:flex-start}.typebloom-app .practice-page .metric-value{font-size:26px;letter-spacing:-.6px;line-height:1.15;margin-top:4px}.typebloom-app .practice-page .metric-value>span{color:var(--muted);font-size:var(--font-small)}.typebloom-app .metric-progress-row{align-items:center;display:flex;gap:12px}.typebloom-app .practice-page .progress-track{flex:1;height:4px;margin:4px 0 0;max-width:140px}.typebloom-app .question-tools{align-items:center;display:flex;flex-shrink:0;gap:12px}.typebloom-app .context-link{align-items:center;color:var(--text-secondary);display:flex;font-size:var(--font-small);gap:6px;padding:5px 0}.typebloom-app .context-link:hover{color:var(--brand-deep)}.typebloom-app .practice-page .model-heading>span:first-child{align-items:center;display:inline-flex;gap:8px}.typebloom-app .practice-page .keyboard-footer{justify-content:center;line-height:1.35;margin:8px 0 0;min-height:20px}.typebloom-app .caps-inline{color:var(--brand-deep);left:0;position:absolute}.typebloom-app .practice-page .practice-actions{border:0;flex-shrink:0;margin:0;min-height:44px;padding:0}.typebloom-app .session-state{align-items:center;color:var(--muted);display:inline-flex;font-size:var(--font-small);gap:10px}.typebloom-app .session-state kbd{font-size:var(--font-caption);min-height:24px;padding:2px 6px}.typebloom-app .context-dialog .dialog{max-height:calc(100dvh - 64px);overflow:auto;width:680px}.typebloom-app .context-dialog .dialog-flower{display:none}.typebloom-app .context-dialog strong{display:block;line-height:1.6;margin-bottom:16px}@media(min-width:1024px){.typebloom-app .app-body.practice-layout{display:flex;flex-direction:column;height:100dvh;min-height:0}.typebloom-app .practice-layout .topbar{flex:0 0 56px}.typebloom-app .practice-layout .main-content{display:flex;flex:1;flex-direction:column;min-height:0;padding-bottom:16px;padding-top:16px;width:100%}.typebloom-app .practice-layout .practice-page{display:flex;flex:1;flex-direction:column;gap:12px;min-height:0}.typebloom-app .practice-layout .metrics-grid{margin:0}.typebloom-app .practice-layout .question-panel{display:flex;flex:1;flex-direction:column;min-height:180px}.typebloom-app .practice-layout .question-meta{flex-shrink:0;padding:12px 20px 0}.typebloom-app .practice-layout .prompt-area{flex-shrink:0;padding:10px 20px 14px}.typebloom-app .practice-layout .prompt-area h2{font-size:20px;line-height:1.45}.typebloom-app .practice-layout .model-heading{flex-shrink:0;padding:10px 20px 0}.typebloom-app .practice-layout .typing-zone{display:flex;flex:1;flex-direction:column;min-height:0;padding:10px 20px 16px}.typebloom-app .practice-layout .answer-viewport{flex:1;height:auto;min-height:0}.typebloom-app .practice-layout .keyboard-area{flex-shrink:0;margin:0 auto;max-width:880px;width:min(100%,880px)}}@media(min-width:1024px)and (max-height:800px){.typebloom-app .practice-layout .main-content{padding-bottom:12px;padding-top:12px}.typebloom-app .practice-layout .practice-page{gap:10px}.typebloom-app .practice-layout .metric{padding:8px 16px}.typebloom-app .practice-layout .question-meta{padding-top:10px}.typebloom-app .practice-layout .prompt-area{padding-bottom:10px;padding-top:8px}.typebloom-app .practice-layout .prompt-area h2{font-size:19px}.typebloom-app .practice-layout .model-heading{padding-top:8px}.typebloom-app .practice-layout .typing-zone{padding-bottom:12px;padding-top:8px}}.typebloom-app{--brand:#f66442;--brand-deep:#ce4c30;--brand-soft:#fff0ec;--text:#201515;--muted:#555;--text-secondary:#403f3e;--line:#e9e9e9;background:linear-gradient(180deg,#fff1ed,#fff6f2 170px,#fff 340px);box-sizing:border-box;color:var(--text);font-family:inherit;line-height:1.5;margin-top:-80px;min-height:100dvh;padding:136px 30px 48px;position:relative}.typebloom-app .app-shell{display:block;margin:0 auto;max-width:1200px;min-height:0}.typebloom-app .app-body{margin-left:0;min-width:0;width:100%}.typebloom-app .topbar{background:transparent;border-bottom:0;padding:0 4px 12px}.typebloom-app .main-content{min-height:0;padding:12px 0 0;width:100%}.typebloom-app .metrics-grid{background:#fff;top:92px}.typebloom-app .practice-page .metrics-grid{border-radius:16px}.typebloom-app .practice-page .metric-label{color:var(--text-secondary)}.typebloom-app .progress-track{background:#f2f4f6}.typebloom-app .progress-track>div{background:var(--brand)}.typebloom-app .answer-viewport{scrollbar-color:#d5d5d5 transparent}.typebloom-app .answer-legend,.typebloom-app .model-heading{border-color:var(--line)}.typebloom-app h2,.typebloom-app h3{letter-spacing:normal}.typebloom-app .course-question,.typebloom-app .question-panel,.typebloom-app .settings-card,.typebloom-app .summary-card{background-color:#fff;border-color:var(--line);box-shadow:0 4px 20px #9a402106}.typebloom-app .question-panel{border-radius:16px}.typebloom-app .btn{border:1px solid #f66442;border-radius:25px;box-sizing:border-box;font-family:inherit;font-size:20px;font-size:16px;font-weight:500;height:50px;height:auto;line-height:normal;line-height:1.4;min-height:44px;padding:10px 20px;transition:background-color .2s,color .2s,border-color .2s}.typebloom-app .btn-primary{background-color:#f66442;color:#fff;cursor:pointer}.typebloom-app .btn-primary:hover{background-color:#dc593b;border-color:#dc593b}.typebloom-app .btn-outline{background-color:#fff;color:#f66442;cursor:pointer}.typebloom-app .btn-outline:hover{background-color:#f66442;border-color:#f66442;color:#fff}.typebloom-app .modal-backdrop{z-index:1100}.typebloom-app .dialog{background:#fff;border-color:var(--line);border-radius:20px}.typebloom-app .confirmation-icon{align-items:center;background:var(--brand-soft);border-radius:12px;color:var(--brand);display:inline-flex;height:48px;justify-content:center;width:48px}.typebloom-app .save-error-banner{left:0;z-index:1001}@media(min-width:1024px){.typebloom-app .app-body.practice-layout{display:block;height:auto;min-height:0}.typebloom-app .practice-layout .main-content{display:block;padding:12px 0 0}}@media(max-width:1023px){.typebloom-app{padding-bottom:32px}.typebloom-app .topbar{height:48px}.typebloom-app .topbar-label{display:block}.typebloom-app .main-content{padding:16px 0 0}.typebloom-app .metrics-grid{position:static}}@media(max-width:600px){.typebloom-app .metrics-grid,.typebloom-app .practice-page .metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.typebloom-app .practice-page .metric{border:0;padding:12px}.typebloom-app .practice-page .metric+.metric{border:0}.typebloom-app .prompt-area,.typebloom-app .question-meta,.typebloom-app .typing-zone{padding-left:16px;padding-right:16px}.typebloom-app .question-meta,.typebloom-app .question-tools{flex-wrap:wrap;gap:8px}.typebloom-app .prompt-area h2{font-size:19px}.typebloom-app .keyboard-area{max-width:100%;overflow-x:auto;padding-bottom:8px}.typebloom-app .keyboard{min-width:680px}.typebloom-app .keyboard-caption{flex-wrap:wrap}.typebloom-app .question-list,.typebloom-app .review-list,.typebloom-app .summary-grid,.typebloom-app .topic-grid{grid-template-columns:1fr}.typebloom-app .page-intro h1{font-size:28px}.typebloom-app .history-heading,.typebloom-app .section-heading{flex-wrap:wrap;gap:12px}.typebloom-app .records-table{max-width:100%;overflow-x:auto}.typebloom-app .settings-card{padding:20px 16px}.typebloom-app .setting-row{flex-wrap:wrap;gap:16px}.typebloom-app .sound-options{flex-wrap:wrap}.typebloom-app .modal-backdrop{padding:16px}.typebloom-app .dialog{max-height:calc(100dvh - 32px);overflow-y:auto;padding:28px 20px}.typebloom-app .context-dialog .dialog{width:100%}}@media(max-width:450px){.typebloom-app{padding-inline:15px}}.typebloom-app .keyboard{background:#f2f4f6;border-color:#e4e4e4}.typebloom-app .key{background:#fff;border-color:#e4e4e4;box-shadow:0 2px #d5d5d5;color:var(--text-secondary)}.typebloom-app .key.utility-key{background:#f7f8fa}.typebloom-app .key.target-key{animation:none;background:var(--typing-current);border-color:var(--typing-current);box-shadow:0 2px 0 var(--brand-deep),0 0 0 2px var(--typing-current-soft);color:#fff}.typebloom-app .key.target-key small{color:#fff}.typebloom-app .key.target-key.pressed{background:var(--brand-deep)}.typebloom-app .key.error-key{background:var(--typing-incorrect-soft)!important;border-color:var(--typing-incorrect);box-shadow:0 1px 0 var(--typing-incorrect);color:var(--typing-incorrect)}.typebloom-app .continue-card{background:#fff0ec;border-color:#f2ddd5}.typebloom-app .continue-icon{background:#ffe2d9;color:var(--brand)}.typebloom-app .topbar.practice-topbar{align-items:center;flex:0 0 auto;flex-direction:column;gap:20px;height:auto;margin-bottom:44px;min-height:0;padding:0}.typebloom-app .practice-intro{max-width:1200px;min-width:0;text-align:center;width:100%}.typebloom-app .practice-intro h1{color:var(--text);font-size:56px;font-weight:600;letter-spacing:normal;line-height:72px;overflow-wrap:anywhere}.typebloom-app .practice-intro p{color:var(--text-secondary);font-size:20px;line-height:30px;margin:16px auto 0;max-width:960px}.typebloom-app .practice-topbar .header-actions{flex-shrink:0;justify-content:center;padding-top:0}.typebloom-app .recommended-target{align-items:center;background:#fff;border:1px solid var(--line);border-radius:25px;color:var(--brand-deep);display:inline-flex;font-size:14px;gap:8px;line-height:1.4;padding:10px 12px;white-space:nowrap}.typebloom-app .recommended-target strong{font-weight:800}.typebloom-app .question-meta{gap:12px}.typebloom-app .question-meta .question-identity{flex-wrap:wrap;gap:8px}.typebloom-app .question-type{background:var(--brand-soft);border-radius:20px;color:var(--brand-deep);display:inline-flex;font-size:13px;font-weight:700;line-height:1.35;padding:4px 10px;white-space:nowrap}.typebloom-app .model-heading{flex-wrap:wrap}.typebloom-app .model-heading>span:first-child{flex-wrap:wrap;gap:6px}.typebloom-app .model-instruction{font-weight:500}.typebloom-app .practice-layout .typing-zone{padding-bottom:10px}.typebloom-app .answer-legend{flex-shrink:0;flex-wrap:wrap;font-size:13px;gap:10px 20px;justify-content:flex-start;letter-spacing:0;line-height:1.5;margin-top:0;padding:12px 20px}.typebloom-app .answer-legend .legend-items{flex-wrap:wrap;gap:10px 16px}.typebloom-app .answer-legend .legend-items>span{gap:7px}.typebloom-app .legend-dot{border-radius:50%;flex-shrink:0;height:9px;width:9px}.typebloom-app .legend-correct{background:var(--typing-correct)}.typebloom-app .legend-incorrect{background:var(--typing-incorrect)}.typebloom-app .legend-current{background:var(--typing-current)}.typebloom-app .input-hint{color:var(--muted);font-size:12px}@media(min-width:1024px){.typebloom-app .practice-layout .question-panel{flex:none;min-height:0}.typebloom-app .practice-layout .typing-zone{flex:none}.typebloom-app .practice-layout .answer-viewport{flex:none;height:clamp(180px,100dvh - 700px,320px)}}@media(max-width:1100px){.typebloom-app .topbar.practice-topbar{flex-wrap:wrap;gap:12px}.typebloom-app .practice-intro{flex:1 1 100%}.typebloom-app .practice-topbar .header-actions{padding-top:0;width:100%}}@media(max-width:767px){.typebloom-app{padding-top:112px}.typebloom-app .topbar.practice-topbar{margin-bottom:32px;padding:0}.typebloom-app .practice-intro h1{font-size:28px;line-height:40px}.typebloom-app .practice-intro p{font-size:18px;line-height:28px}}@media(max-width:600px){.typebloom-app .recommended-target{font-size:13px;gap:6px;padding:9px 10px}.typebloom-app .question-meta{align-items:flex-start}.typebloom-app .question-type{font-size:12px}.typebloom-app .model-heading{gap:8px;padding-left:16px;padding-right:16px}.typebloom-app .model-instruction{display:none}.typebloom-app .answer-legend{padding:12px 16px}}.typebloom-app .keyboard-layout-control{align-items:center;color:var(--text-secondary);display:inline-flex;flex-wrap:wrap;font-size:14px;gap:8px}.typebloom-app .keyboard-layout-control select{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--text);font-size:13px;padding:6px 10px}.typebloom-app .practice-page .practice-actions{align-items:stretch;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 4px 20px #9a402106;display:grid;gap:16px;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);margin-top:16px;padding:12px 16px}.typebloom-app .practice-actions .btn{border-radius:25px;font-size:18px;min-height:50px}.typebloom-app .practice-restart{justify-self:start}.typebloom-app .practice-toggle{border-color:var(--brand);color:var(--brand-deep);min-width:120px}.typebloom-app .practice-next{justify-self:end}.typebloom-app .practice-paused-notice{align-items:center;background:var(--brand-soft);border-radius:8px;color:var(--brand-deep);display:flex;font-size:12px;gap:12px;line-height:1.5;margin:8px auto 0;max-width:680px;padding:8px 12px}.typebloom-app .pause-status-icon{align-items:center;background:var(--brand);border-radius:50%;color:#fff;display:inline-flex;flex:0 0 24px;height:24px;justify-content:center}.typebloom-app .practice-paused-notice p{flex:1;min-width:0}.typebloom-app .practice-paused-notice strong{font-weight:700}.typebloom-app .practice-paused-notice .btn{background:#fff;border-color:var(--brand);border-radius:6px;color:var(--brand-deep);flex-shrink:0;font-size:12px;min-height:30px;padding:5px 16px}.typebloom-app .practice-ready-hint{display:flex;font-size:12px;justify-content:center;margin-top:12px;text-align:center}@media(max-width:600px){.typebloom-app .practice-page .practice-actions{gap:8px;grid-template-columns:repeat(3,minmax(0,1fr));padding:10px}.typebloom-app .practice-actions .btn{font-size:12px;gap:4px;justify-self:stretch;min-height:44px;min-width:0;padding:8px 6px;white-space:normal}.typebloom-app .practice-actions .btn svg{flex-shrink:0}.typebloom-app .practice-paused-notice{flex-wrap:wrap;gap:8px}.typebloom-app .practice-paused-notice p{flex-basis:calc(100% - 32px)}.typebloom-app .practice-paused-notice .btn{margin-left:32px}.typebloom-app .practice-ready-hint{flex-wrap:wrap}}.typing-loading{align-content:start;background:linear-gradient(180deg,#fff1ed,#fff6f2 170px,#fff 340px);box-sizing:border-box;color:#201515;display:grid;gap:16px;justify-items:center;margin-top:-80px;min-height:70vh;padding:136px 30px 48px;text-align:center}.typing-loading h1{font-size:56px;font-weight:600;line-height:72px;margin:0}.typing-loading p{color:#403f3e;font-size:20px;line-height:30px;margin:0}.typing-loading p:last-child{font-size:14px;margin-top:20px}@media(max-width:767px){.typing-loading{padding-top:112px}.typing-loading h1{font-size:28px;line-height:40px}.typing-loading p{font-size:18px;line-height:28px}}@media(max-width:450px){.typing-loading{padding-inline:15px}}
