@font-face{font-family:Sora;src:url(/assets/Sora-Regular-e_wUX0-X.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Sora;src:url(/assets/Sora-SemiBold-DrJZahyS.ttf) format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Sora;src:url(/assets/Sora-Bold-CNDS-H0I.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}:root{font-family:Sora,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;line-height:1.4;font-weight:400;color-scheme:dark;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;min-width:320px;min-height:100vh;background:#121212;color:#fff}button{font-family:inherit}:root{--neutral-900: hsl(0, 0%, 7%);--neutral-800: hsl(0, 0%, 15%);--neutral-500: hsl(240, 3%, 46%);--neutral-400: hsl(240, 1%, 59%);--neutral-0: hsl(0, 0%, 100%);--blue-600: hsl(214, 100%, 55%);--blue-400: hsl(210, 100%, 65%);--red-500: hsl(354, 63%, 57%);--green-500: hsl(140, 63%, 57%);--yellow-400: hsl(49, 85%, 70%);--shadow-soft: 0 18px 40px rgba(0, 0, 0, .35);--ring-hover: 0 0 0 1px rgba(46, 156, 255, .55);--ring: 0 0 0 2px rgba(0, 0, 0, .75), 0 0 0 5px rgba(46, 156, 255, .85)}[data-theme=light]{--neutral-900: hsl(0, 0%, 100%);--neutral-800: hsl(0, 0%, 98%);--neutral-500: hsl(240, 3%, 40%);--neutral-400: hsl(240, 1%, 35%);--neutral-0: hsl(0, 0%, 7%);--shadow-soft: 0 18px 40px rgba(0, 0, 0, .12)}html,body{background:var(--neutral-900);color:var(--neutral-0)}*{transition:background-color .15s ease,color .15s ease,border-color .15s ease}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.page{min-height:100vh;padding:32px 24px 56px;max-width:1040px;margin:0 auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:22px}.brand{display:flex;align-items:flex-start;gap:14px}.brandLogo{width:28px;height:28px;flex:0 0 auto}.brandTitle{font-size:22px;line-height:1.1;font-weight:700;letter-spacing:-.02em}.brandSubtitle{margin-top:4px;font-size:13px;color:var(--neutral-400)}.personalBest{display:inline-flex;align-items:center;gap:10px;color:var(--neutral-400);font-size:14px;white-space:nowrap}.personalBestIcon{width:18px;height:18px;opacity:.9}.toolbar{border-bottom:1px solid rgba(255,255,255,.07);padding-bottom:18px;margin-bottom:26px;display:flex;justify-content:space-between;gap:18px;align-items:center}[data-theme=light] .toolbar{border-bottom:1px solid rgba(0,0,0,.1)}.liveStats{display:flex;align-items:center;gap:16px;color:var(--neutral-400)}.liveStat{display:inline-flex;align-items:baseline;gap:8px}.liveLabel{font-size:14px;color:var(--neutral-500)}.liveValue{font-size:22px;font-weight:700;letter-spacing:-.02em;color:var(--neutral-0)}.liveValue.isWarn{color:var(--red-500)}.liveValue.isWarnTime{color:var(--yellow-400)}.liveDivider{width:1px;height:18px;background:#ffffff17}.controls{display:flex;align-items:center;gap:20px}.controlsMobile,.pbMobile{display:none}.controlGroup{display:inline-flex;align-items:center;gap:10px}.controlLabel{font-size:14px;color:var(--neutral-400)}.segmented{display:inline-flex;align-items:center;gap:6px}.segDropdown{position:relative}.segCaret{opacity:.8;transform:translateY(-1px)}.segMenu{position:absolute;top:calc(100% + 8px);left:0;min-width:120px;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:#1e1e1ef2;box-shadow:var(--shadow-soft);overflow:hidden;z-index:30}.segMenuItem{width:100%;border:0;background:transparent;color:#ffffffeb;padding:10px 12px;cursor:pointer;font-size:13px;font-weight:700;text-align:left}.segMenuItem:hover{background:#ffffff0f;box-shadow:var(--ring-hover)}.segMenuItem:focus-visible{outline:none;box-shadow:var(--ring)}.segMenuItem.isSelected{color:var(--blue-400);background:#2e9cff14}.segBtn{appearance:none;border:1px solid rgba(255,255,255,.12);background:transparent;color:var(--neutral-0);font-size:13px;padding:7px 12px;border-radius:10px;cursor:pointer;transition:background-color .14s ease,border-color .14s ease,box-shadow .14s ease}.segBtn:hover{background:#ffffff0f;border-color:#2e9cff8c;box-shadow:var(--ring-hover);outline:1px solid rgba(46,156,255,.55);outline-offset:4px}.segBtn:focus-visible{box-shadow:var(--ring);outline:1px solid rgba(46,156,255,.55);outline-offset:4px}.segBtn.isActive{border-color:#2e9cffa6;box-shadow:inset 0 0 0 1px #2e9cff8c;color:var(--blue-400)}.segBtn:disabled{opacity:.5;cursor:not-allowed}.main{padding-top:10px}.passageCard{position:relative;border-radius:18px;padding:26px;background:#ffffff05;border:1px solid rgba(255,255,255,.06);box-shadow:var(--shadow-soft);min-height:360px;overflow:hidden}.passageCard:focus-visible{outline:none;box-shadow:var(--shadow-soft),var(--ring)}.passage{font-size:34px;line-height:1.25;letter-spacing:-.02em;font-weight:600;color:#ffffff73;-webkit-user-select:none;user-select:none;white-space:normal;overflow-wrap:anywhere;word-break:break-word}[data-theme=light] .passage{color:#000000a6}.passageCard.isIdle .passage{filter:blur(7px);opacity:.75}.char{position:relative}.char.isCorrect{color:var(--green-500)}.char.isIncorrect{color:var(--red-500);text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:2px}.char.isPending{color:#ffffff73}[data-theme=light] .char.isPending{color:#00000073}.char.isCursor:after{content:"";position:absolute;left:-1px;bottom:-6px;width:12px;height:3px;border-radius:999px;background:var(--neutral-0);opacity:.8}.startOverlay{position:absolute;inset:0;display:grid;place-content:center;gap:10px;text-align:center}.primaryBtn{appearance:none;border:1px solid rgba(0,0,0,.25);background:var(--blue-600);color:var(--neutral-0);border-radius:12px;padding:12px 20px;font-size:14px;font-weight:700;box-shadow:0 10px 18px #00000040;transition:transform .12s ease,background-color .14s ease,box-shadow .14s ease}.primaryBtn:hover{background:#4da6ff;outline-offset:4px}.primaryBtn:focus-visible{box-shadow:0 10px 18px #00000040,var(--ring);outline:2px solid #4f46e5;outline-offset:4px}.primaryBtn:active{transform:translateY(1px)}.primaryBtn.primaryBtnLight{background:var(--neutral-0);color:var(--neutral-900);border-color:#0000001f}.primaryBtn.primaryBtnLight:hover{background:#e6e6e6;border-color:#0000002e}.themeToggle{appearance:none;border:1px solid rgba(255,255,255,.12);background:transparent;color:var(--neutral-0);border-radius:10px;padding:8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.themeToggle:hover{background:#7f7f7f1a;box-shadow:var(--ring-hover)}.themeToggle:focus-visible{outline:none;box-shadow:var(--ring)}.startHint{font-size:14px;color:#ffffffb8;font-weight:600}.heatmap{margin-top:22px;padding:18px;border-radius:16px;border:1px solid rgba(255,255,255,.06);background:#ffffff05}[data-theme=light] .heatmap{border:1px solid rgba(0,0,0,.12);background:#00000005}.heatmapHeader{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.heatmapTitle{font-size:14px;font-weight:800;color:#ffffffeb}.heatmapControls{display:inline-flex;align-items:center;gap:6px}.keyboard{display:grid;gap:8px}.keyboardRow{display:flex;gap:8px}.key{flex:1 0 0;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:#ffffff05;padding:10px;min-height:46px;display:flex;align-items:center;justify-content:space-between;gap:10px}[data-theme=light] .key{border:1px solid rgba(0,0,0,.14);background:#0000000a}.keyLabel{font-size:12px;font-weight:800;color:#ffffffeb;letter-spacing:-.01em}[data-theme=light] .keyLabel{color:#000000e0}.keyValue{font-size:12px;font-weight:800;color:#ffffffd9;font-variant-numeric:tabular-nums}[data-theme=light] .keyValue{color:#000000b8}@media(max-width:560px){.heatmap{padding:12px;border-radius:14px;overflow-x:auto;-webkit-overflow-scrolling:touch}.heatmapHeader{flex-wrap:wrap;gap:10px}.keyboard{gap:6px;min-width:520px}.keyboard.isMobile{min-width:0}.keyboardRow{gap:6px}.keyboard.isMobile .keyboardRow{justify-content:center}.keyboard.isMobile .keyboardRow.isIndented1{padding-left:10px;padding-right:10px}.keyboard.isMobile .keyboardRow.isIndented2{padding-left:18px;padding-right:18px}.key{border-radius:10px;padding:8px;min-height:40px;gap:8px}.keyboard.isMobile .key{min-height:46px;padding:10px}.keyLabel,.keyValue{font-size:11px}}.hiddenInput{position:absolute;inset:0;width:100%;height:100%;opacity:0;resize:none;border:0;padding:0;margin:0;background:transparent;color:transparent}.hiddenInput:focus{outline:none}.bottomBar{margin-top:26px}.bottomDivider{height:1px;background:#ffffff12;margin-bottom:20px}.secondaryBtn{appearance:none;border:1px solid rgba(255,255,255,.09);background:#ffffff0f;color:#ffffffdb;border-radius:12px;padding:10px 16px;font-size:14px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:10px;transition:background-color .14s ease,border-color .14s ease,box-shadow .14s ease}.secondaryBtn:hover{background:#ffffff14;border-color:#2e9cff8c;box-shadow:var(--ring-hover)}.secondaryBtn:focus-visible{outline:none;box-shadow:var(--ring)}.btnIcon{width:16px;height:16px;opacity:.9}.resultsWrap{position:relative;min-height:560px;padding-top:60px}.resultsWrap.hasConfetti{overflow:hidden}.decorStarLeft{position:absolute;left:52px;top:210px;width:20px;height:20px;opacity:.9}.decorStarRight{position:absolute;right:56px;top:420px;width:28px;height:28px;opacity:.95}.decorConfetti{position:absolute;left:0;right:0;top:0;width:100%;height:auto;opacity:1;pointer-events:none;z-index:0}.resultsWrap.hasConfetti .decorConfetti{animation:confettiEnter .7s ease-out both}@keyframes confettiEnter{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}.resultsCard{position:relative;z-index:2;max-width:520px;margin:0 auto;text-align:center}.resultsCardTop{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.shareMenuWrap{position:relative;display:inline-flex;align-items:center;justify-content:center}.shareIconBtn{appearance:none;border:1px solid rgba(0,0,0,.45);background:#0000008c;color:#fff;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;cursor:pointer;transition:background-color .14s ease,border-color .14s ease,box-shadow .14s ease}.shareIconBtn:hover{border-color:#000000a6;background:#000000b8;box-shadow:var(--ring-hover)}.shareIconBtn:focus-visible{outline:none;box-shadow:var(--ring)}.sharePopover{position:absolute;top:calc(100% + 10px);right:0;width:260px;border-radius:14px;border:1px solid rgba(255,255,255,.1);background:#1e1e1ef5;box-shadow:var(--shadow-soft);padding:12px;text-align:left;z-index:40}.sharePopoverTitle{font-size:13px;font-weight:800;color:#ffffffd1;margin-bottom:10px}.shareIcons{display:grid;grid-template-columns:1fr 1fr;gap:8px}.shareSocialBtn{width:100%;appearance:none;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;color:#ffffffeb;border-radius:12px;padding:10px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:13px;font-weight:800;transition:background-color .14s ease,border-color .14s ease,box-shadow .14s ease}.shareSocialBtn:hover{border-color:#2e9cff8c;box-shadow:var(--ring-hover);background:#ffffff0f}.shareSocialBtn:focus-visible{outline:none;box-shadow:var(--ring)}.shareSocialIcon{width:18px;height:18px;display:grid;place-items:center;color:#ffffffeb}.shareSocialLabel{line-height:1}.shareActions{margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.08);display:grid;gap:8px}.shareActionBtn{width:100%;appearance:none;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;color:#ffffffe6;border-radius:12px;padding:10px;cursor:pointer;font-size:13px;font-weight:800;transition:background-color .14s ease,border-color .14s ease,box-shadow .14s ease}.shareActionBtn:hover{border-color:#2e9cff8c;box-shadow:var(--ring-hover);background:#ffffff0f}.shareActionBtn:focus-visible{outline:none;box-shadow:var(--ring)}.shareActionBtn:disabled{opacity:.6;cursor:not-allowed}.resultIcon{width:82px;height:82px;border-radius:999px;display:grid;place-items:center;margin:0 auto 18px;background:#2ed2781f;box-shadow:0 0 0 12px #2ed2780d}.resultIcon img{width:40px;height:40px}.resultTitle{margin:0;font-size:40px;font-weight:700;letter-spacing:-.02em}.resultSubtitle{margin-top:8px;color:var(--neutral-400);font-size:14px;font-weight:600}.resultGrid{margin:26px auto 22px;display:grid;grid-template-columns:repeat(3,1fr);gap:14px;max-width:420px}.shareRow{margin:16px auto 8px;display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.shareStatus{margin-top:10px;color:#ffffffb8;font-size:13px;font-weight:700}.sharePreview{margin:14px auto 0;width:100%;max-width:520px;border-radius:14px;overflow:hidden;border:1px solid rgba(255,255,255,.1);background:#ffffff05}.sharePreview img{width:100%;height:auto;display:block}.resultBox{padding:14px;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:#ffffff05}.resultBoxLabel{color:var(--neutral-500);font-size:13px}.resultBoxValue{margin-top:6px;font-size:20px;font-weight:700;letter-spacing:-.02em}.resultBoxValue.isWarn{color:var(--red-500)}.resultBoxValue .isGood{color:var(--green-500)}.resultBoxValue .isBad{color:var(--red-500)}.resultBoxValue .slash{color:var(--neutral-400);margin:0 4px}@media(max-width:920px){.toolbar{flex-direction:column;align-items:flex-start}.controls{flex-wrap:wrap}.passage{font-size:30px}}@media(max-width:560px){.topbar{flex-direction:column;align-items:flex-start}.page{padding:18px 16px 40px}.brandText{display:none}.personalBest{align-self:flex-end;font-size:13px;gap:8px}.pbDesktop{display:none}.pbMobile{display:inline}.toolbar{padding-bottom:14px;margin-bottom:18px;gap:12px;align-items:stretch}.liveStats{width:100%;justify-content:space-between;gap:10px}.liveLabel{font-size:13px}.liveValue{font-size:26px}.liveDivider{height:28px}.controlsDesktop{display:none}.controlsMobile{display:block}.mobileSelectRow{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mobileSelect{position:relative}.mobileSelectBtn{width:100%;appearance:none;border:1px solid rgba(255,255,255,.12);background:#ffffff05;color:var(--neutral-0);border-radius:12px;padding:10px 12px;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;box-shadow:inset 0 0 0 1px #ffffff05}.mobileSelectBtn:disabled{opacity:.5;cursor:not-allowed}.mobileSelectBtn:focus-visible{outline:none;box-shadow:var(--ring)}.mobileCaret{opacity:.8;transform:translateY(-1px)}.mobileMenu{position:absolute;left:0;right:0;top:calc(100% + 8px);border-radius:12px;border:1px solid rgba(255,255,255,.1);background:#1e1e1ef2;box-shadow:var(--shadow-soft);overflow:hidden;z-index:20}.mobileMenuItem{width:100%;border:0;background:transparent;color:#ffffffeb;padding:10px 12px;display:flex;align-items:center;gap:10px;cursor:pointer;font-size:14px;text-align:left}.mobileMenuItem:hover{background:#ffffff0f}.mobileRadio{width:14px;height:14px;border-radius:999px;border:2px solid rgba(255,255,255,.32);display:inline-block;flex:0 0 auto}.mobileMenuItem.isSelected .mobileRadio{border-color:#2e9cfff2;box-shadow:inset 0 0 0 4px #2e9cfff2}.resultGrid{grid-template-columns:1fr}.decorStarLeft,.decorStarRight{display:none}.passage{font-size:32px;line-height:1.25}.passageCard{padding:18px;min-height:420px}.bottomBar{margin-top:18px}.secondaryBtn{width:100%;justify-content:center}.resultsWrap{padding-top:42px;min-height:610px}.resultTitle{font-size:30px}.resultGrid{max-width:100%;gap:12px;margin:20px auto 18px}.resultBox{text-align:left;padding:14px 16px}.primaryBtn.primaryBtnLight{width:220px}.decorConfetti{bottom:-6px}}
