:root{color-scheme:dark;--lime:#d8ff62;--muted:#96999f}*{box-sizing:border-box}body{margin:0;background:#101113;color:#f7f7f3;font:16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:1px solid #37393c;border-radius:12px;background:#252729;color:inherit;min-height:44px;padding:10px 18px}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--lime);outline-offset:4px}main{max-width:1080px;margin:auto;padding:28px 32px 50px}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.brand{text-decoration:none;color:var(--lime);font-size:34px;font-weight:900;letter-spacing:-2px}.brand span{font-size:12px;color:white;letter-spacing:3px;margin-left:12px}.tag{color:var(--muted);font-size:12px;letter-spacing:2px}.workspace{display:grid;grid-template-columns:minmax(300px,440px) 1fr;gap:56px;align-items:start}.camera{position:relative;isolation:isolate;aspect-ratio:9/16;max-height:780px;background:#1b1d20;border:1px solid #343639;border-radius:28px;overflow:hidden}.camera>video{position:absolute;width:100%;height:100%;object-fit:cover;transform:scaleX(-1);z-index:-2}.camera:after{content:"";position:absolute;inset:0;background:linear-gradient(#0009,transparent 55%,#000b);pointer-events:none;z-index:-1}.topline{display:flex;justify-content:space-between;position:absolute;top:22px;left:22px;right:22px;font-size:12px;letter-spacing:1px}.topline time{font-variant-numeric:tabular-nums}.recording #status{color:#ff7178}#empty{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:20px}#empty[hidden]{display:none}.viewfinder{font-size:60px;line-height:1;color:var(--lime);font-weight:200;margin-bottom:18px}h1{font-size:28px;letter-spacing:-.8px;margin:0}#empty p{color:#b9bbc0;font-size:15px;margin:12px 0 25px}small{font-size:12px;color:var(--muted);margin-top:12px}.primary{background:var(--lime);border-color:var(--lime);color:#182000;font-weight:650}#prompt{display:none;position:absolute;left:20px;right:20px;top:60px;height:31%;overflow:auto;scrollbar-width:none;mask-image:linear-gradient(#000 65%,transparent);text-align:center;touch-action:pan-y}#prompt::-webkit-scrollbar{display:none}#promptText{white-space:pre-wrap;font-size:28px;line-height:1.4;font-weight:700;text-shadow:0 2px 8px #000,0 1px 3px #000;padding-bottom:100%}.ready #prompt{display:block}.bottom{position:absolute;bottom:24px;left:20px;right:20px;text-align:center}.recordRow{display:flex;gap:26px;align-items:center;justify-content:center}#record{width:76px;height:76px;border-radius:50%;padding:5px;background:transparent;border:2px solid #fff9}#record span{display:block;width:100%;height:100%;border-radius:50%;background:#ff535f;transition:.2s}.recording #record span{width:28px;height:28px;border-radius:6px;margin:auto}.round{border-radius:50%;width:44px;padding:0;background:#17191d80;font-size:23px}#recordLabel{font-size:11px;letter-spacing:1.6px;margin-top:12px}#cueControls{margin-bottom:22px;display:flex;gap:18px;align-items:center;justify-content:center}#cueControls[hidden]{display:none}#cueControls button{background:#111a}#countdown{position:absolute;inset:0;display:grid;place-items:center;font-size:100px;font-weight:800;background:#0004}#countdown[hidden]{display:none}aside{padding-top:6px}.panelHeading{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}h2{font-size:24px;letter-spacing:-.6px;margin:0}.panelHeading span{font-size:13px;color:var(--muted)}.tabs{display:flex;background:#1d1f22;border:1px solid #303236;border-radius:12px;padding:4px;margin-bottom:18px}.tabs button{flex:1;border:0;background:transparent;color:var(--muted);padding:8px}.tabs button[aria-pressed=true]{background:#36393c;color:#fff}textarea{width:100%;height:254px;resize:vertical;background:#191b1e;border:1px solid #383b3f;border-radius:14px;color:#e9e9e7;font:17px/1.65 inherit;font-family:inherit;font-size:17px;line-height:1.65;padding:18px}.hint{font-size:13px;color:var(--muted);margin:12px 0 24px}.setting{margin-top:22px}.setting label{display:flex;justify-content:space-between;font-size:15px}.setting output{color:var(--lime);font-size:14px}input[type=range]{width:100%;accent-color:var(--lime);margin:16px 0 0;min-height:26px}.note{display:flex;gap:14px;border-top:1px solid #303236;padding-top:22px;margin-top:26px}.note span{color:var(--lime);font-size:24px}.note p{font-size:14px;margin:0;color:#c2c5ca}#message{font-size:14px;color:var(--lime)}footer{color:var(--muted);font-size:12px;margin-top:26px;display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap}footer p{margin:0}.footerLinks{display:flex;align-items:center;gap:14px;flex-shrink:0}.footerLinks a{color:var(--muted);text-decoration:none;display:flex;align-items:center}.footerLinks a:hover{color:var(--lime)}#result{margin-top:30px;padding:24px;border:1px solid #36393c;border-radius:22px;background:#191b1e}#playback{display:block;max-height:60vh;max-width:100%;margin:0 auto 24px;border-radius:12px}.resultActions{display:flex;gap:16px;flex-wrap:wrap;align-items:center}.resultActions a{color:var(--lime);padding:10px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}[hidden]{display:none!important}@media(max-width:740px){main{padding:max(14px,env(safe-area-inset-top)) 14px max(28px,env(safe-area-inset-bottom))}header{margin:0 5px 15px}.brand{font-size:29px}.brand span{font-size:10px}.tag{display:none}.workspace{grid-template-columns:1fr;gap:25px}.camera{width:100%;max-width:440px;max-height:none;min-height:420px;height:calc(100svh - 94px);max-height:740px;aspect-ratio:auto;margin:auto;border-radius:22px}aside{max-width:440px;width:100%;margin:auto;padding:0 5px}#prompt{top:56px;left:18px;right:18px}textarea{height:220px}#result{padding:16px}body.recording aside{opacity:.55}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* The preview and the encoded frame share one exact 9:16 crop. */
.camera{aspect-ratio:9/16;height:auto;max-height:none;max-width:440px;width:100%}
#headGuide{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#fff9;stroke-width:1.5;stroke-dasharray:8 7;pointer-events:none;opacity:.6}
#headGuide .guideAxis{stroke-width:.7;stroke-dasharray:none;opacity:.35}
#formatBadge{position:absolute;right:20px;top:49px;font-size:11px;letter-spacing:1px;color:#d8ff62}
#prompt{display:block;top:0;height:45%;left:0;right:0;overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);touch-action:pan-y;pointer-events:none}
#promptText{position:absolute;inset:0;padding:0;white-space:nowrap;text-align:left;font-size:30px;line-height:1.3}
#promptText .word{position:absolute;left:0;top:30%;white-space:nowrap;will-change:transform;color:#fff;font-weight:750;text-shadow:0 2px 10px #000b;transform-origin:center}
#promptText .word.said{color:#82e8c3}#promptText .word.current{color:#ffe36a}
#prompt.cues{top:13%;height:28%;left:20px;right:20px;mask-image:none;overflow:auto;pointer-events:auto;background:#0003;border-radius:12px}
#prompt.cues #promptText{position:relative;padding:12px;white-space:pre-wrap;text-align:center}
#empty{background:#1b1d20e8;z-index:2}.ready #empty{display:none}
.guideToggle{display:flex;align-items:center;gap:10px;font-size:15px;margin-top:22px;min-height:44px}.guideToggle input{width:20px;height:20px;accent-color:var(--lime)}
#playback{aspect-ratio:9/16;object-fit:contain}#countdown{z-index:3}
@media(max-width:740px){.camera{height:auto;min-height:0;max-height:none;width:100%;aspect-ratio:9/16}#prompt:not(.cues){top:0;left:0;right:0}}

#headGuide{transform:scale(.85);transform-origin:50% 40%}
.topline{top:auto;bottom:195px}
#formatBadge{top:auto;bottom:171px}

.textActions{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap}.textActions button{font-size:14px;padding:8px 12px}.textActions #pasteText{color:var(--lime);margin-left:auto}

#paceHint{position:absolute;bottom:170px;left:20px;right:65px;font-size:13px;color:var(--lime);text-shadow:0 1px 4px #000}

#readingProgress{position:absolute;bottom:238px;left:26px;right:26px;pointer-events:none}.progressCaption{display:flex;justify-content:space-between;color:#ddd;font-size:12px;margin-bottom:9px;text-shadow:0 1px 4px #000}#progressTrack{position:relative;height:3px;background:#ffffff35;border-radius:3px}#progressFill{height:100%;width:0;background:var(--lime);border-radius:3px}#progressMarkers span{position:absolute;top:8px;transform:translateX(-50%);font-size:13px;opacity:.5;filter:grayscale(1)}#progressMarkers span.near{opacity:1;filter:none;transform:translateX(-50%) scale(1.2)}#progressMarkers span.passed{opacity:.25}

.styleLabel{display:block;font-size:14px;color:var(--muted);margin-bottom:6px}#readingStyle{width:100%;font:inherit;color:inherit;background:#252729;border:1px solid #37393c;border-radius:10px;min-height:44px;padding:8px 12px;margin-bottom:14px}
#prompt.smooth{top:12px;left:16px;right:16px;height:52%;mask-image:linear-gradient(#000 85%,transparent);text-align:left;background:linear-gradient(#0007,#0003);border-radius:12px;padding:0 10px}
#prompt.smooth #promptText{position:relative;inset:auto;white-space:normal;line-height:1.22;padding:8px 0 0;will-change:transform;font-weight:650}
#prompt.smooth .word{position:static;display:inline;white-space:normal;overflow-wrap:anywhere;will-change:auto;transform:none!important;color:#f3f3ee;font-weight:650;letter-spacing:-.6px}
#prompt.smooth .word.current{color:#d8ffb8}

#prompt.ticker{top:22px;left:0;right:0;height:145px;mask-image:linear-gradient(90deg,transparent,#000 5%,#000 97%,transparent)}
#prompt.ticker .word{top:42px;white-space:nowrap;transform-origin:left center}
#prompt.ticker:after{content:"";position:absolute;left:32%;top:18px;width:2px;height:10px;border-radius:2px;background:var(--lime);opacity:.65}

.brand span{font-size:17px;letter-spacing:1.2px;margin-left:9px}@media(max-width:740px){.brand span{font-size:16px}}
.brand span.by{font-size:12px;color:var(--muted);letter-spacing:1px;margin-left:7px}@media(max-width:740px){.brand span.by{font-size:11px}}
