:root{font-family:Arial,Helvetica,sans-serif;color:#e9e2d7;background:#211e2b;font-synthesis:none;--ink: #211e2b;--muted: #b4aabb;--gold: #c9ac76;--mint: #b8c9b7;--line: #46404e;--paper: #eee8dc}*{box-sizing:border-box}body{margin:0}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:5px}button{border:0;background:none}a{color:inherit;text-decoration:none}button svg{width:20px;height:20px;flex:none}::selection{color:var(--ink);background:#d1b986}body::-webkit-scrollbar{width:8px}body::-webkit-scrollbar-thumb{background:#706276}html{scroll-padding-top:28px}svg{display:block}button,input{min-height:44px}.site-header{max-width:1440px;margin:auto;padding:29px 4.4%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:24px}.brand{display:flex;align-items:center;gap:12px;font-family:Georgia,serif;font-size:27px;white-space:nowrap}.brand-ghost{color:var(--mint);width:38px;display:block}.brand-sub{display:block;font:8px Arial,sans-serif;letter-spacing:1.65px;margin-top:8px;color:var(--muted)}nav{display:flex;gap:28px;align-items:center}.nav-link{font-size:12px;position:relative;color:var(--muted);padding:8px 0}.nav-link.active{color:var(--paper)}.nav-link.active:after{content:"";position:absolute;bottom:-30px;left:0;right:0;height:2px;background:var(--gold)}.nav-link:hover{color:var(--paper)}.nav-link span{margin-left:5px;color:var(--gold)}.local-note{font-size:10px;color:var(--muted);display:flex;gap:8px;align-items:center}.local-note i,.race-status i{width:5px;height:5px;background:var(--mint);display:inline-block;border-radius:50%}main{max-width:1232px;margin:0 auto;padding:0 40px}.intro{text-align:center;padding:34px 0 35px}.ornament{display:flex;align-items:center;justify-content:center;gap:14px;color:var(--gold);font-size:23px;margin-bottom:9px}.ornament span{height:1px;width:57px;background:#6b5c4a}h1,h2,h3,p{margin:0}h1{font:normal clamp(38px,4.4vw,60px)/1.2 Georgia,serif;letter-spacing:-1.5px}h1 em{color:var(--gold);font-weight:400}.intro>p{color:var(--muted);font-size:13px;letter-spacing:.3px;margin-top:15px}.parlor-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:29px;align-items:start}.race-frame{border:1px solid #6e5d4b;padding:25px 30px 0;position:relative;background:#26222e;box-shadow:0 12px 42px #100e172b}.frame-corner{position:absolute;width:12px;height:12px;border:1px solid var(--gold);pointer-events:none}.top-left{top:5px;left:5px;border-right:0;border-bottom:0}.top-right{top:5px;right:5px;border-left:0;border-bottom:0}.bottom-left{bottom:5px;left:5px;border-right:0;border-top:0}.bottom-right{bottom:5px;right:5px;border-left:0;border-top:0}.race-topline{display:flex;justify-content:space-between;align-items:center;gap:15px}.small-label{font-size:9px;letter-spacing:1.6px;color:var(--gold);font-weight:500}.race-status{font-size:10px;color:var(--muted);display:flex;gap:7px;align-items:center}.race-status i{width:4px;height:4px}.metrics{display:grid;grid-template-columns:1fr 1fr 1fr 1.2fr;margin:26px 0 25px;gap:12px}.metrics>div{border-right:1px solid var(--line)}.metrics>div:last-child{border-right:0;text-align:right}.metrics>div>span{font: 33px/1 Georgia,serif;font-variant-numeric:tabular-nums}.metrics small{display:block;margin-top:10px;font-size:8px;letter-spacing:1px;color:var(--muted)}.metrics .unit{font-size:19px;margin-left:3px;color:var(--muted)}.metrics .ghost-stat>span{color:var(--mint)}.paper{background:var(--paper);color:#3b3440;padding:8px 27px 18px;position:relative}.paper-rule{height:28px;display:flex;align-items:center;justify-content:center;margin-bottom:9px;color:#a2927a}.paper-rule:before,.paper-rule:after{content:"";height:1px;background:#c8beab;width:35%;margin:0 12px}.paper-rule span{font-size:20px}.typing-area{position:relative;min-height:143px;border-radius:2px}.typing-area:focus-within{outline:1px solid #8d7b594d;outline-offset:9px}#quote-text{font:20px/1.9 Courier New,monospace;color:#6e655d;overflow-wrap:anywhere;white-space:pre-wrap;letter-spacing:.1px}#quote-text .correct{color:#353338}#quote-text .incorrect{color:#9f3541;background:#e9c3bd;text-decoration:underline;text-decoration-thickness:2px}#quote-text span{position:relative}#quote-text .caret:before{content:"";position:absolute;left:-1px;top:0;bottom:0;width:2px;background:#795b35}#quote-text .ghost-caret:after{content:"";position:absolute;left:-2px;bottom:-3px;width:14px;height:24px;background:#55796f40;border-radius:8px 8px 3px 3px;pointer-events:none;border-bottom:2px solid #507469}#typing-input{position:absolute;inset:0;resize:none;width:100%;height:100%;opacity:.02;cursor:text;font-size:16px;border:0;outline:none;color:transparent;background:transparent;caret-color:transparent;overflow:hidden}#typing-input:disabled{pointer-events:none}.quote-attribution{display:flex;justify-content:space-between;gap:12px;font-size:10px;color:#6e655d;margin-top:21px}.quote-attribution span:first-child{font-family:Georgia,serif;font-style:italic;font-size:12px}.start-prompt{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;border-top:1px solid #cfc5b5;margin-top:19px;padding-top:14px;font-size:10px;color:#6e655d;min-height:44px}.keyboard-icon{font-size:16px}.prompt-line{width:12px;height:1px;background:#a99a80}.race-lanes{padding:26px 1px 20px}.lane{display:flex;align-items:center;gap:15px;height:29px}.lane-label{width:82px;flex:none;display:flex;gap:8px;align-items:center;color:#c6bfca;font-size:10px}.you-dot{width:6px;height:6px;background:var(--gold);border-radius:50%;margin:0 4px}.mini-ghost{width:14px;color:var(--mint)}.lane-track{height:1px;flex:1;background:#5d5246;position:relative}.ghost-track{background:#414d48}.lane-track:after{content:"";position:absolute;right:0;top:-4px;height:9px;width:1px;background:#7b6f7e}.runner{position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}.you-runner{width:8px;height:8px;background:var(--gold);border:2px solid #26222e;outline:1px solid var(--gold);border-radius:50%}.ghost-runner{width:23px;color:var(--mint);opacity:.8}.lane-value{width:28px;font:10px Courier New,monospace;color:var(--muted);text-align:right}.race-actions{display:flex;justify-content:space-between;gap:10px;padding:0 0 17px}.button{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-size:11px;min-height:44px;padding:0 15px;border-radius:3px;transition:background .18s,color .18s}.button.quiet{padding-left:0;color:var(--muted)}.button.quiet:hover{color:#fff}.button.quiet svg{width:16px}kbd{font:8px Arial,sans-serif;border:1px solid var(--line);border-radius:3px;padding:3px 5px;color:var(--muted);margin-left:6px}.button.next{background:#c5ac7e;color:#29232b}.button.next:hover{background:#e0c596}.button.next svg{width:17px}.sidebar{padding-top:9px}.side-section-title{display:flex;align-items:center;gap:10px}.side-section-title h2{font: 23px Georgia,serif}.sun-icon{color:var(--gold);font-size:23px}.today{font-size:10px;color:var(--muted);margin:17px 0 19px}.daily-note h3{font:italic 21px/1.3 Georgia,serif;color:#d5be98}.daily-description{font-size:11px;line-height:1.9;color:var(--muted);margin-top:12px}.text-button{font-size:10px;display:flex;align-items:center;gap:6px;padding:10px 0;color:var(--gold);margin-top:5px}.text-button:hover{color:#efdbb1}.text-button svg{width:16px}.note-divider{display:flex;align-items:center;gap:15px;font-size:16px;color:#897555;margin:15px 0 21px}.note-divider:before,.note-divider:after{content:"";height:1px;flex:1;background:var(--line)}.quote-source .small-label{font-size:8px;color:var(--muted);letter-spacing:1.5px}.quote-source p{font:italic 16px/1.5 Georgia,serif;color:#d0c4b5;margin-top:8px}.quote-source small{font-size:9px;color:var(--muted);display:block;margin-top:5px;line-height:1.6}.opponent-note{margin-top:27px;padding-top:22px;border-top:1px solid var(--line)}.side-ghost{width:21px;color:var(--mint)}.opponent-note h2{font-size:20px}.opponent-note>p{font-size:11px;color:var(--muted);line-height:1.9;margin:13px 0 12px}.opponent-note strong{font-weight:400;color:var(--mint)}.toggle-label{display:flex;align-items:center;justify-content:space-between;position:relative;font-size:10px;min-height:44px;color:#d1c8d6;cursor:pointer}.toggle-label input{position:absolute;right:0;opacity:0;width:40px;cursor:pointer}.switch{width:30px;height:17px;border-radius:15px;background:#625767;pointer-events:none}.switch:before{content:"";width:11px;height:11px;border-radius:50%;background:#e4e7dd;display:block;transform:translate(3px,3px);transition:transform .18s}.toggle-label input:checked+.switch{background:#738672}.toggle-label input:checked+.switch:before{transform:translate(16px,3px)}.toggle-label input:focus-visible+.switch{outline:2px solid var(--gold);outline-offset:4px}.privacy-note{font-size:9px;line-height:1.8;color:#afa4b5;display:flex;position:relative;padding-left:21px;margin-top:17px}.privacy-note svg{position:absolute;width:12px;left:0;top:2px}.progress-section{margin-top:41px;scroll-margin-top:30px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.section-heading h2{font: 25px Georgia,serif}.section-heading p{font-size:10px;color:var(--muted);margin-top:9px}.session-count{font-size:10px;color:var(--muted)}.progress-grid{display:grid;grid-template-columns:1.12fr 1fr;gap:30px}.history-panel,.keys-panel{padding:22px 22px 17px;background:#282430;border:1px solid var(--line)}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-heading h3{font: 18px Georgia,serif}.chart-tabs{display:flex;border:1px solid #514858;border-radius:3px;gap:2px;padding:2px}.chart-tabs button{font-size:9px;min-height:30px;padding:0 9px;color:var(--muted);border-radius:2px}.chart-tabs button.selected{color:var(--paper);background:#49404f}.history-chart{height:137px;margin-top:9px;display:flex;align-items:center}.history-chart svg{width:100%;height:100%;overflow:visible}.chart-grid line{stroke:#49414e;stroke-width:.8;stroke-dasharray:3 4}.chart-grid text,.chart-label{fill:#b4aabb;font:9px Arial,sans-serif}.chart-line{fill:none;stroke:var(--mint);stroke-width:2}.chart-point{fill:var(--mint);stroke:#282430;stroke-width:2}.chart-empty{font:italic 15px Georgia,serif;fill:#c9bdce}.chart-empty-sub{font:10px Arial,sans-serif;fill:#b4aabb}.chart-bottom,.key-bottom{display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:8px;color:var(--muted);margin-top:10px}.legend{display:flex;align-items:center;gap:5px}.legend i{width:5px;height:5px;background:var(--mint);border-radius:50%}.key-info{font-size:8px;letter-spacing:1px;color:var(--muted)}.key-map{margin-top:23px;margin-bottom:22px}.key-row{display:flex;justify-content:center;gap:5px;margin-top:5px}.key{font:12px Courier New,monospace;display:flex;align-items:center;justify-content:center;min-height:30px;max-width:34px;width:9%;height:31px;border:1px solid #665a6b;border-radius:4px;background:#332d3b;color:#ded5e3;box-shadow:0 2px 3px #14111a26}.key:hover{border-color:var(--gold)}.heat-1{background:#43584e;border-color:#738b75;color:#e3ecdc}.heat-2{background:#77664a;border-color:#a28b5f;color:#fff2ce}.heat-3{background:#8d5650;border-color:#b97c6c;color:#ffe4ce}.key-bottom{align-items:flex-start}.key-bottom>span{line-height:1.6;max-width:60%}.heat-legend{display:flex;gap:4px;align-items:center;padding-top:2px;white-space:nowrap}.heat-legend i{height:7px;width:7px;border-radius:1px;background:#526b5a}.heat-legend i:nth-of-type(2){background:#9a8359}.heat-legend i:nth-of-type(3){background:#b17b68}.storage-notice{color:var(--gold);font-size:11px;margin-top:15px}.result{margin-top:20px;padding:20px 25px;border:1px solid #677967;background:#2e3832;display:flex;align-items:center;gap:17px}.result[hidden]{display:none}.result-ghost{width:36px;color:var(--mint);flex:none}.result h2{font:24px Georgia,serif}.result p{font-size:11px;line-height:1.8;color:#c7d2c4;margin-top:7px}.result .button{margin-left:auto;white-space:nowrap}footer{max-width:1152px;margin:40px auto 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px 0 28px;color:var(--muted);font-size:9px}.footer-brand{font:17px Georgia,serif;color:#d0c5b8}.footer-brand span{margin-left:14px;color:var(--gold)}footer button{display:flex;align-items:center;gap:8px;font-size:9px;color:#cbb891}footer svg{width:15px}dialog{border:1px solid #8c775a;border-radius:5px;background:#292430;color:var(--paper);max-width:480px;width:calc(100% - 40px);padding:36px;box-shadow:0 20px 80px #0006}dialog::backdrop{background:#100c16c9;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog-close{position:absolute;right:12px;top:9px;width:44px;font-size:27px;color:var(--muted)}.about-ghost{display:block;color:var(--mint);width:40px;margin-bottom:18px}dialog h2{font:30px Georgia,serif}.about-lines{margin:22px 0}.about-lines p{font-size:13px;line-height:1.8;color:#c6bccb;margin:14px 0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(min-width:1400px){.intro{padding-top:42px;padding-bottom:42px}.race-frame{padding-top:28px}.paper{padding-top:12px;padding-bottom:22px}.typing-area{min-height:155px}}@media(max-width:1100px){.local-note{display:none}.site-header{padding-right:35px;padding-left:35px}.parlor-layout{grid-template-columns:minmax(0,1fr) 220px;gap:24px}.race-frame{padding-left:23px;padding-right:23px}.paper{padding-left:20px;padding-right:20px}#quote-text{font-size:18px}.progress-grid{gap:24px}.panel-heading h3{font-size:16px}.key-row{gap:3px}.key-bottom{flex-wrap:wrap}footer{margin-left:40px;margin-right:40px}}@media(max-width:800px){main{padding:0 24px}.site-header{padding:20px 24px}.brand{font-size:24px}.brand-sub{font-size:7px;letter-spacing:1px}nav{gap:18px}.nav-link{font-size:11px}.nav-link.active:after{bottom:-22px}.parlor-layout{grid-template-columns:minmax(0,1fr) 195px;gap:20px}.race-frame{padding-left:20px;padding-right:20px}.race-status{font-size:9px}.race-topline{flex-wrap:wrap;gap:10px}.metrics{gap:8px}.metrics>div>span{font-size:28px}.metrics small{font-size:7px;letter-spacing:.6px}.typing-area{min-height:190px}.paper{padding-left:16px;padding-right:16px}#quote-text{font-size:17px}.quote-attribution{flex-wrap:wrap}.progress-grid{grid-template-columns:1fr 1fr;gap:20px}.panel-heading{align-items:flex-start;flex-wrap:wrap}.chart-tabs{margin-top:2px}.key-map{margin-top:35px}.key{font-size:10px;height:28px;min-height:28px}.section-heading h2{font-size:24px}.side-section-title h2{font-size:20px}.opponent-note h2{font-size:18px}footer{margin-left:24px;margin-right:24px}.result{flex-wrap:wrap}.result>div{flex:1}.result .button{margin-left:53px}.history-chart{height:150px}}@media(max-width:640px){.site-header{padding:19px 20px 0;display:block}.brand{justify-content:center;font-size:28px}.brand-sub{font-size:7px;letter-spacing:1.4px}.brand-ghost{width:34px}nav{justify-content:center;gap:33px;margin-top:13px}.nav-link{font-size:11px;min-height:48px}.nav-link.active:after{bottom:0}main{padding:0 16px}.intro{padding:26px 0}.ornament{font-size:20px;margin-bottom:10px}h1{font-size:39px;letter-spacing:-1px}.intro>p{font-size:11px;margin-top:13px}.parlor-layout{grid-template-columns:1fr;gap:26px}.race-frame{padding:22px 19px 0}.race-topline{flex-wrap:nowrap}.small-label{font-size:8px;letter-spacing:1.3px}.metrics{margin:26px 0 22px;gap:9px}.metrics>div>span{font-size:30px}.metrics small{font-size:6.5px;letter-spacing:.8px}.metrics .unit{font-size:16px}.paper{padding:7px 18px 17px;margin:0 -5px}.typing-area{min-height:145px}#quote-text{font-size:18px;line-height:1.85}.paper-rule{margin-bottom:12px}.quote-attribution{margin-top:20px;font-size:8px;flex-wrap:nowrap}.quote-attribution span:first-child{font-size:11px}.start-prompt{font-size:9px;margin-top:18px;gap:7px}.race-lanes{padding-top:22px}.lane-label{font-size:9px;width:74px}.lane{gap:10px}.race-actions{padding-bottom:13px}.button{font-size:10px;padding-left:12px;padding-right:12px}kbd{display:none}.sidebar{display:grid;grid-template-columns:1fr 1fr;gap:22px;padding:0 4px}.side-section-title h2{font-size:19px}.side-section-title{gap:7px}.sun-icon{font-size:20px}.today{font-size:8px;line-height:1.7;margin:12px 0}.daily-note h3{font-size:18px}.daily-description{font-size:10px;margin-top:8px}.daily-description br{display:none}.text-button{font-size:9px;margin-top:2px}.note-divider,.quote-source{display:none}.opponent-note{margin:0;padding:0;border-top:0}.opponent-note h2{font-size:17px}.opponent-note>p{font-size:10px;margin-top:12px}.side-ghost{width:17px}.privacy-note{grid-column:1/-1;margin:0;padding-left:19px;font-size:9px;display:block}.privacy-note br{display:none}.privacy-note svg{width:11px}.progress-section{margin-top:32px}.section-heading{margin-bottom:17px;gap:10px}.section-heading h2{font-size:24px}.section-heading p{font-size:10px}.session-count{font-size:8px;text-align:right;max-width:70px;line-height:1.7}.progress-grid{grid-template-columns:1fr;gap:16px}.history-panel,.keys-panel{padding:20px 19px 16px}.panel-heading{align-items:center}.panel-heading h3{font-size:18px}.history-chart{height:140px}.key-map{margin:20px 0}.key-row{gap:5px}.key{font-size:12px;min-height:31px;height:31px}.key-bottom{flex-wrap:nowrap}.key-info,.chart-bottom,.key-bottom{font-size:7px}footer{margin:28px 20px 0;flex-wrap:wrap;gap:10px;padding-bottom:20px}.footer-brand{font-size:16px}footer>span:nth-child(2){order:3;width:100%;font-size:9px;margin-top:3px}footer button{margin-left:auto;min-height:44px}.result{padding:19px 17px;gap:12px}.result-ghost{width:28px}.result h2{font-size:21px}.result p{font-size:10px}.result .button{margin-left:40px}.result>div{min-width:220px}dialog{padding:30px 25px}dialog h2{font-size:28px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(max-width:640px){.chart-grid text,.chart-label{font-size:20px}.chart-empty{font-size:24px}.chart-empty-sub{font-size:18px}}
