:root{color:#f4f1ff;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#101026;font-family:Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:360px;margin:0}button{font:inherit;cursor:pointer;transition:background .15s,transform .15s}button:disabled{cursor:default}button:focus-visible,a:focus-visible{outline-offset:4px;outline:3px solid #64e2da}button:active:not(:disabled){transform:translateY(1px)}.analytics{width:min(100%,1200px);margin:auto;padding:28px 32px 48px}.analytics-header{justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px;display:flex}.analytics-brand{color:#aaa3bf;letter-spacing:1px;font-size:13px}.analytics h1{margin:10px 0;font-size:30px}.analytics-header p{color:#cab5ff;margin:0}.analytics-overview{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:0 0 24px;display:grid}.analytics-overview>div,.analytics-section{background:#17162d;border:1px solid #ffffff16;border-radius:14px;padding:20px}.analytics-overview dt{color:#aaa3bf;font-size:12px}.analytics-overview dd{color:#cab5ff;font-variant-numeric:tabular-nums;margin:12px 0 0;font-size:clamp(18px,2vw,25px);font-weight:750}.analytics-section{margin:20px 0}.analytics h2{margin:0 0 10px;font-size:20px}.analytics-muted{color:#aaa3bf;font-size:13px;line-height:1.6}.analytics-empty{color:#cab5ff;border:1px solid #ffffff16;border-radius:14px;padding:30px 20px;line-height:1.6}.daily-charts{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:16px 0 12px;display:grid}.daily-charts figure{min-width:0;margin:0}.daily-charts figcaption{margin-bottom:8px;font-size:13px}.line-chart,.key-chart{width:100%;height:auto;display:block}.analytics svg text{fill:#aaa3bf;font:12px Segoe UI,system-ui,sans-serif}.chart-grid{stroke:#ffffff12}.chart-line{fill:none;stroke-width:2.5px}.chart-line.accuracy{stroke:#71e2d4}.chart-line.speed{stroke:#b598f5}.chart-point.accuracy{fill:#71e2d4}.chart-point.speed{fill:#b598f5}.chart-scroll{margin:12px 0;overflow-x:auto}.key-correct{fill:#71e2d4;background:#71e2d4}.key-incorrect{fill:#f49fbf;background:#f49fbf}.chart-legend{gap:20px;font-size:12px;display:flex}.chart-legend span{align-items:center;gap:7px;display:flex}.chart-legend i{border-radius:3px;width:10px;height:10px}.analytics-table-wrap{border:1px solid #ffffff12;border-radius:8px;max-height:400px;overflow:auto}.analytics table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:12px}.analytics caption{text-align:left;color:#aaa3bf;padding:12px}.analytics th,.analytics td{text-align:left;white-space:nowrap;border-bottom:1px solid #ffffff0d;padding:10px 12px}.analytics thead th{color:#cab5ff;z-index:1;background:#201d38;position:sticky;top:0}.analytics tbody th{font-weight:500}.key-table{width:100%;max-height:320px}.history-pages{justify-content:flex-end;align-items:center;gap:14px;margin-top:16px;font-size:12px;display:flex}.chart-scroll:focus-visible,.analytics-table-wrap:focus-visible{outline-offset:3px;outline:3px solid #64e2da}@media (width<=900px){.analytics-overview{grid-template-columns:repeat(3,minmax(0,1fr))}.daily-charts{grid-template-columns:1fr}}@media (width<=600px){.analytics{padding:18px 14px}.analytics-header{flex-wrap:wrap;align-items:flex-start}.analytics h1{font-size:25px}.analytics-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.analytics-section{padding:16px}.analytics-overview>div{padding:14px}}.period-filter{background:#17162d;border:1px solid #ffffff20;border-radius:9px;gap:3px;margin-bottom:20px;padding:3px;display:inline-flex}.period-filter button{color:#aaa3bf;background:0 0;border:none;border-radius:6px;padding:8px 18px;font-size:13px}.period-filter button[aria-pressed=true]{color:#24163c;background:#b598f5}.analytics-section,.daily-charts,.analytics-table-wrap,.chart-scroll{min-width:0}.analytics-overview dd{overflow-wrap:anywhere}.line-chart text{font-size:14px}.key-chart{height:210px;max-height:210px;margin-inline:auto}.daily-row{cursor:pointer}.daily-row:hover{background:#b598f50b}.daily-row.selected-day{background:#b598f51c}.daily-row.selected-day>th{box-shadow:inset 3px 0 #b598f5}.day-select{color:inherit;font:inherit;text-align:left;background:0 0;border:none;padding:0}.day-select[aria-pressed=true]{color:#cab5ff;font-weight:750}.session-history-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.selected-date{color:#cab5ff;margin:0;font-size:13px}@media (width<=600px){.daily-charts figure{overflow-x:auto}.line-chart{min-width:600px}.session-history-heading{flex-wrap:wrap}}.chart-line.completed{stroke:#f49fbf}.chart-point.completed{fill:#f49fbf}.analytics>.mode-selector{width:fit-content;margin-bottom:16px;display:flex}body{background:radial-gradient(at 80% 0,#31204455,#0000 55%),#101026}.app{flex-direction:column;gap:16px;width:min(100%,1164px);height:100dvh;min-height:450px;margin:auto;padding:20px 32px;display:flex}.header{justify-content:space-between;align-items:center;gap:24px;display:flex}.brand{color:#fff;letter-spacing:1px;align-items:center;gap:10px;font-size:16px;font-weight:850;text-decoration:none;display:flex}.brand b{color:#c2bed7;letter-spacing:0;font-weight:400}.brand-icon{color:#19132b;background:#a68aff;border-radius:9px;place-items:center;width:34px;height:34px;font-size:23px;display:grid}.stats{color:#aaa3bf;align-items:center;gap:28px;font-size:13px;display:flex}.score{color:#f6d286;font-variant-numeric:tabular-nums;margin-left:10px;font-size:25px}.level-indicator{align-items:center;gap:6px;display:flex}select{font:inherit;color:#f4f1ff;background:#27213e;border:1px solid #ffffff24;border-radius:6px;padding:6px}select:focus-visible{outline-offset:3px;outline:3px solid #64e2da}.playfield{background:radial-gradient(at 50% 35%,#31295366,#0000 70%),#17162d;border:1px solid #ffffff16;border-radius:16px;flex:0 580px;min-height:260px;position:relative;overflow:hidden}.lanes{grid-template-columns:repeat(5,1fr);display:grid;position:absolute;inset:24px 7%}.lanes div{border-right:1px dashed #ffffff08}.lanes div:first-child{border-left:1px dashed #ffffff08}.letter-tile{color:#20163e;will-change:top;border:1px solid #ffffff60;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;width:80px;height:80px;font-size:40px;font-weight:800;line-height:1;display:flex;position:absolute;transform:translate(-50%);box-shadow:0 5px #0003,0 0 30px #bc8fff22}.letter-tile span{letter-spacing:1.5px;opacity:.65;margin-top:6px;font-size:7px}.color-0{background:#c2a3ff}.color-1{background:#71e2d4}.color-2{background:#ffcd82}.color-3{background:#f49fbf}.landing-line{text-align:center;border-top:1px dashed #ffffff16;position:absolute;bottom:17px;left:22px;right:22px}.landing-line span{color:#a59dbb;background:#17162d;padding:0 12px;font-size:9px;position:relative;top:-8px}.burst{pointer-events:none;width:0;height:0;position:absolute}.burst i{background:#f5c87e;border-radius:2px;width:7px;height:7px;position:absolute}.burst i:nth-child(2n){background:#ac8cff}.burst b{color:#f5d085;font-size:23px;position:absolute;top:-14px;left:-17px}.field-overlay{background:#17162de6;place-items:center;display:grid;position:absolute;inset:0}.intro-card{text-align:center}.intro-card h2,.celebration{color:#d3baff;margin:0;font-size:clamp(24px,3vw,36px)}.intro-card p{color:#aaa1bf;margin:12px 0 0;font-size:13px}.celebration{text-align:center;animation:.35s ease-out celebrate}@keyframes celebrate{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.primary,.secondary{color:#24163c;background:#b598f5;border:1px solid #cbb5ff;border-radius:9px;padding:10px 26px;font-size:13px;font-weight:750}.primary:hover{background:#cbb5ff}.secondary{color:#d5c9ed;background:#27213e;border-color:#ffffff24}.secondary:hover{background:#393051}.text-button{color:#aaa2c1;background:0 0;border:none;padding:10px;font-size:12px}.text-button:hover{color:#fff}.game-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.session-controls{align-items:center;gap:12px;display:flex}.game-controls>.secondary-controls{margin-left:auto}dialog{color:#f4f1ff;background:#201d38;border:1px solid #b497f55e;border-radius:16px;width:min(440px,100% - 32px);padding:28px;box-shadow:0 20px 80px #0008}dialog::backdrop{background:#090817bb}dialog p{margin:0 0 24px;line-height:1.6}.dialog-actions{justify-content:flex-end;gap:12px;display:flex}@media (width<=600px){.app{gap:12px;padding:14px}.header{flex-wrap:wrap;gap:12px}.stats{gap:18px}.brand{font-size:14px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.burst i{display:none}}.mode-selector{background:#17162d;border:1px solid #ffffff20;border-radius:9px;gap:3px;padding:3px;display:flex}.mode-selector button{color:#aaa3bf;background:0 0;border:none;border-radius:6px;padding:7px 12px;font-size:13px}.mode-selector button[aria-pressed=true]{color:#24163c;background:#b598f5}.word-field{flex-direction:column;justify-content:center;align-items:center;gap:28px;display:flex}.countdown{color:#f6d286;font-variant-numeric:tabular-nums;font-size:48px;position:absolute;top:28px}.word{letter-spacing:.08em;color:#cab5ff;font-size:clamp(40px,6vw,76px);font-weight:800}.word .typed{color:#71e2d4}.word-pause{position:absolute;bottom:28px}.word-stats strong{color:#f4f1ff;margin-left:6px}.word-summary{text-align:center}.word-summary h2{font-size:28px}.word-summary p,.word-pause{color:#aaa3bf}@media (width<=900px){.header{flex-wrap:wrap;gap:12px}.stats{gap:18px}.mode-selector{margin-left:auto}}.secondary-controls{align-items:center;gap:12px;display:flex}.progress-settings{color:#aaa2c1;font-size:12px;position:relative}.progress-settings summary{cursor:pointer;padding:10px}.progress-options{z-index:2;background:#201d38;border:1px solid #ffffff24;border-radius:12px;width:min(340px,85vw);padding:18px;position:absolute;bottom:100%;right:0}.progress-options label{display:block}.progress-options input:not([type=file]){color:#f4f1ff;width:100%;font:inherit;background:#17162d;border:1px solid #ffffff24;border-radius:6px;margin:8px 0;padding:8px;display:block}.progress-options p{line-height:1.6}summary:focus-visible,input:focus-visible{outline-offset:3px;outline:3px solid #64e2da}
