:root{--bg:#0e1116;--panel:#161b23;--line:#242c38;--tx:#e8edf4;--dim:#8a97a8;--acc:#4da3ff;--ok:#3ddc84;--warn:#ffb020;--bad:#ff5c5c;--r:14px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--tx);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%}.app{max-width:640px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 18px) 18px calc(env(safe-area-inset-bottom) + 18px);min-height:100%;display:flex;flex-direction:column}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin-bottom:14px}h1{font-size:20px;margin:0 0 6px}h2{font-size:16px;margin:0 0 10px}p{line-height:1.55;color:var(--dim);margin:0 0 12px;font-size:14px}button{font:inherit;font-weight:600;border:0;border-radius:12px;padding:15px 18px;background:var(--acc);color:#04121f;width:100%;margin-top:8px;cursor:pointer}button.ghost{background:transparent;color:var(--tx);border:1px solid var(--line)}button.opt{background:#1d2530;color:var(--tx);text-align:left;font-weight:500;line-height:1.45}button.opt:active{background:#26313f}button:disabled{opacity:.45}.big{font-size:64px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-2px}.unit{color:var(--dim);font-size:14px;margin-top:6px}.kv{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px}.kv:last-child{border:0}.kv b{font-variant-numeric:tabular-nums}.center{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.muted{color:var(--dim);font-size:13px}.row{display:flex;gap:10px}.row>*{flex:1}.reading{font-size:19px;line-height:1.75;color:var(--tx);letter-spacing:.1px}.warn{color:var(--warn)}.ok{color:var(--ok)}.langbar{display:flex;gap:8px;justify-content:flex-end;margin-bottom:10px}.langbar button{width:auto;padding:6px 12px;font-size:12px;margin:0;background:transparent;border:1px solid var(--line);color:var(--dim)}.langbar button.on{color:var(--tx);border-color:var(--acc)}.stage{position:fixed;inset:0;background:var(--bg);display:flex;flex-direction:column;z-index:40;padding:calc(env(safe-area-inset-top) + 14px) 16px calc(env(safe-area-inset-bottom) + 14px)}.stage-top{display:flex;justify-content:space-between;align-items:center;color:var(--dim);font-size:12px;letter-spacing:.4px;min-height:30px}.chip{width:auto;margin:0;padding:5px 11px;font-size:11px;background:transparent;border:1px solid var(--line);color:var(--dim);border-radius:999px}.stage-bottom{margin-top:auto;padding-top:14px}.rail{flex:1;position:relative;display:flex;align-items:center;justify-content:center}.rail:before,.rail:after{content:"";position:absolute;left:50%;width:2px;height:16px;background:#2c3644}.rail:before{top:calc(50% - 46px)}.rail:after{top:calc(50% + 30px)}.word{display:flex;align-items:baseline;font-size:36px;font-weight:600;font-family:Lexend,-apple-system,BlinkMacSystemFont,sans-serif;width:100%}.word .l{flex:1;text-align:right}.word .c{width:auto}.word .r{flex:1;text-align:left}.word.orp .c{color:#ff5c5c}.paused{position:absolute;bottom:18%;left:0;right:0;text-align:center;color:var(--dim);font-size:13px}.pacer-text{flex:1;overflow-y:auto;font-size:20px;line-height:2;padding:8px 2px;font-family:Lexend,-apple-system,BlinkMacSystemFont,sans-serif;letter-spacing:.1px}.pacer-text .w{color:#2b3442;transition:color .12s linear}.pacer-text .w.read{color:#7c8798}.pacer-text .w.on{color:#fff;text-shadow:0 0 18px rgba(77,163,255,.55)}.prog{height:3px;background:var(--line);border-radius:99px;overflow:hidden;margin-bottom:12px}.prog>i{display:block;height:100%;background:var(--acc);transition:width .1s linear}.seekrow{display:flex;gap:8px;margin-bottom:12px}.seekrow>button{flex:1;margin:0}button.sm{padding:10px 12px;font-size:13px}.speed-row{display:flex;align-items:center;gap:14px;justify-content:center;margin-bottom:10px}button.round{width:52px;height:52px;border-radius:50%;font-size:24px;padding:0;margin:0;background:#1d2530;color:var(--tx);flex:none}button.round:active{background:#2a3644}.speed-val{min-width:120px;text-align:center}.speed-val b{font-size:26px;font-variant-numeric:tabular-nums;display:block;line-height:1.1}.speed-val span{font-size:11px;color:var(--dim)}.speed input[type=range]{width:100%;accent-color:var(--acc)}.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}.tile{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px 14px;text-align:center;cursor:pointer;color:var(--tx)}.tile:active{background:#1d2530}.tile .ic{font-size:26px;display:block;margin-bottom:8px}.tile .nm{font-weight:600;font-size:14px}.tile .sub{font-size:11px;color:var(--dim);margin-top:5px;font-variant-numeric:tabular-nums}.pacer-text .w.gone{color:#161b23}.schulte{display:grid;gap:6px;width:100%;max-width:420px}.cell{aspect-ratio:1;margin:0;padding:0;font-size:20px;font-weight:600;border-radius:10px;background:#1a212b;color:var(--tx);display:flex;align-items:center;justify-content:center}.cell.hit{background:#12212e;color:#3c4657}.cell.bad{background:var(--bad);color:#2a0000}.hunt{flex:1;display:flex;align-items:center;justify-content:center}.badge{font-size:11px;padding:4px 10px;border-radius:999px;font-weight:600;background:#1d2530;color:var(--dim);white-space:nowrap}.badge.positive{background:#12301f;color:var(--ok)}.badge.negative{background:#301414;color:var(--bad)}.badge["no-effect"],.badge.no-effect{background:#2a2416;color:var(--warn)}.fixdot{position:absolute;left:50%;top:50%;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;background:var(--acc)}.mf{position:absolute;top:50%;transform:translate(-50%,-50%);font-size:20px;font-weight:600;font-family:Lexend,-apple-system,sans-serif;white-space:nowrap}button.opt.picked{background:#1b3a55;border:1px solid var(--acc)}.focus-page{flex:1;overflow-y:auto;padding:30vh 4px;font-family:Lexend,-apple-system,BlinkMacSystemFont,sans-serif}.fline{font-size:19px;line-height:2.05;text-align:justify;text-align-last:justify;color:#6f7a8a;filter:blur(3.6px);opacity:.5;transition:filter .12s linear,opacity .12s linear,color .12s linear;user-select:none}.fline.on{color:var(--tx);filter:none;opacity:1}.pacer-text.column{max-width:250px;margin:0 auto;text-align:center;font-size:21px;line-height:2.15}.sd-words{flex:1;display:flex;align-items:center;justify-content:center;gap:0;font-family:Lexend,-apple-system,sans-serif;font-size:30px;font-weight:600;min-height:120px}.sd-gap{width:44px}.sd-halves{display:flex;gap:10px;height:38vh;margin-bottom:12px}button.sd-half{flex:1;height:100%;margin:0;border-radius:16px;background:#161b23;border:1px solid var(--line);color:var(--dim);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;transition:background .06s linear}button.sd-half b{font-size:19px;color:var(--tx);letter-spacing:.5px}button.sd-half span{font-size:26px}button.sd-half.good{background:#1c5a37;border-color:var(--ok)}button.sd-half.bad{background:#5a1c1c;border-color:var(--bad)}.grouphead{font-size:12px;letter-spacing:1.4px;text-transform:uppercase;color:var(--dim);margin:18px 2px 10px;font-weight:600}.tile{padding:20px 12px}.tile .ic{font-size:30px;margin-bottom:10px}.tile .nm{font-size:14.5px;line-height:1.25}.picker{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;margin:0 0 4px;padding:16px 18px;border-radius:14px;background:var(--panel);border:1px solid var(--line);color:var(--tx);font-size:15px}.picker:active{background:#1d2530}.picker-label{font-weight:600}.picker-caret{color:var(--dim);font-size:18px;line-height:1}.sheet-bg{position:fixed;inset:0;background:#04080db8;z-index:80;display:flex;align-items:flex-end;animation:fade .14s ease-out}.sheet{width:100%;max-width:640px;margin:0 auto;background:var(--panel);border-top-left-radius:20px;border-top-right-radius:20px;border-top:1px solid var(--line);padding:10px 14px calc(env(safe-area-inset-bottom) + 16px);max-height:82vh;overflow-y:auto;animation:rise .18s cubic-bezier(.2,.8,.3,1)}.sheet-grip{width:40px;height:4px;border-radius:99px;background:#2c3644;margin:4px auto 14px}.sheet-title{font-size:12px;letter-spacing:1.4px;text-transform:uppercase;color:var(--dim);font-weight:600;margin:0 6px 10px}button.sheet-row{display:flex;align-items:center;gap:10px;width:100%;margin:0 0 6px;padding:15px 16px;border-radius:12px;background:#1a212b;border:1px solid transparent;color:var(--tx);font-size:15px;font-weight:500;text-align:left}button.sheet-row.on{background:#17324b;border-color:var(--acc);font-weight:600}button.sheet-row .cnt{margin-left:auto;color:var(--dim);font-size:12px;font-variant-numeric:tabular-nums}button.sheet-row .tick{color:var(--acc);font-weight:700}button.sheet-row.on .cnt{margin-left:auto}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{transform:translateY(18px)}to{transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.sheet-bg,.sheet{animation:none}}.paste{width:100%;min-height:130px;resize:vertical;border-radius:12px;padding:14px;background:#0f141b;border:1px solid var(--line);color:var(--tx);font:inherit;font-size:14.5px;line-height:1.6}.paste::placeholder{color:#5b6675}.paste:focus{outline:2px solid var(--acc);outline-offset:1px}.picker.pinned{border-color:var(--acc);background:#17324b}.mytexts-btn{margin-top:8px;margin-bottom:4px;font-size:14px;padding:13px 16px}:root{--read-scale:1;--read-letter:0em;--read-word:0em;--read-line:2}.app{padding-bottom:calc(env(safe-area-inset-bottom) + 82px)}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:70;display:flex;background:#10141beb;backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:8px 6px calc(env(safe-area-inset-bottom) + 8px)}button.tab{flex:1;margin:0;padding:6px 2px;background:transparent;border:0;border-radius:12px;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--dim);font-weight:500}button.tab .tab-ic{font-size:21px;line-height:1;filter:grayscale(1);opacity:.65}button.tab .tab-lb{font-size:10.5px;letter-spacing:.2px}button.tab.on{color:var(--acc)}button.tab.on .tab-ic{filter:none;opacity:1}.reading,.pacer-text,.fline{letter-spacing:var(--read-letter);word-spacing:var(--read-word);line-height:var(--read-line)}.reading{font-size:calc(19px * var(--read-scale))}.pacer-text{font-size:calc(20px * var(--read-scale))}.fline{font-size:calc(19px * var(--read-scale))}.word{font-size:calc(36px * var(--read-scale));letter-spacing:var(--read-letter)}.sd-words{font-size:calc(30px * var(--read-scale));letter-spacing:var(--read-letter)}.pref{margin-bottom:14px}.pref input[type=range]{width:100%;accent-color:var(--acc)}.sample{background:#0f141b;border:1px solid var(--line);border-radius:12px;padding:16px;margin:6px 0 12px;color:var(--tx);font-family:Lexend,-apple-system,BlinkMacSystemFont,sans-serif}.tiername{font-size:19px;font-weight:700;color:var(--acc);margin-top:4px;letter-spacing:.2px}.tierbar{width:100%;max-width:260px;height:6px;background:var(--line);border-radius:99px;overflow:hidden;margin:14px 0 8px}.tierbar>i{display:block;height:100%;background:var(--acc);border-radius:99px}.msg{display:flex;gap:12px;align-items:flex-start}.msg-ic{font-size:20px;line-height:1.4;flex:none}.msg-body{font-size:14.5px;line-height:1.6;color:var(--tx)}.book .eta{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:12px}.book .eta b{font-size:22px;font-variant-numeric:tabular-nums;color:var(--acc)}.bookrow{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin:0 0 8px;font-size:15px;color:var(--tx)}.bookrow:active{background:#1d2530}.bookrow-main{display:block;flex:1;min-width:0}.bookrow-title{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bookrow-sub{display:block;font-size:12px;color:var(--dim);margin-top:3px;font-variant-numeric:tabular-nums}.bookrow-prog{display:block;margin:8px 0 0}.book .eta{display:flex;flex-direction:column;gap:2px;margin-bottom:12px}.book .eta b{font-size:26px;font-variant-numeric:tabular-nums;line-height:1.15}.tile.pinned{border-color:var(--acc);background:#17324b}.punct{justify-content:flex-start}.punct-body{flex:1;display:flex;align-items:center;justify-content:center;padding:12px 0;max-height:42vh}.punct-sentence{font-size:21px;line-height:1.9;text-align:center;color:var(--tx)}.punct-slot{display:inline-block;min-width:26px;padding:0 4px;margin:0 1px;border-radius:6px;background:#1d2530;color:var(--dim);font-weight:700}.punct-slot.good{background:#12301f;color:var(--ok)}.punct-slot.bad{background:#301414;color:var(--bad)}.punct-marks{display:flex;gap:10px;margin-bottom:14px}.punct-mark{flex:1;margin:0;padding:14px 6px;background:var(--panel);border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:4px}.punct-mark b{font-size:40px;line-height:1;font-weight:700;color:var(--tx);min-height:42px;display:flex;align-items:center}.punct-mark span{font-size:10.5px;color:var(--dim);letter-spacing:.2px}.punct-mark.good{border-color:var(--ok);background:#12301f}.punct-mark.bad{border-color:var(--bad);background:#301414}.punct-mark:disabled{opacity:1}.punct-why{min-height:96px;background:#0f141b;border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px}@media (min-width: 700px){.app{max-width:860px;padding-left:28px;padding-right:28px;padding-bottom:calc(env(safe-area-inset-bottom) + 92px)}.grid{grid-template-columns:repeat(3,1fr);gap:14px}.tile{padding:24px 14px}.tile .ic{font-size:34px}.reading,.pacer-text,.fline{max-width:62ch;margin-left:auto;margin-right:auto}.reading{font-size:calc(21px * var(--read-scale))}.pacer-text{font-size:calc(22px * var(--read-scale))}.fline{font-size:calc(21px * var(--read-scale))}.word{font-size:calc(52px * var(--read-scale))}.sd-words{font-size:calc(42px * var(--read-scale))}.schulte{max-width:560px}.cell{font-size:26px}.pacer-text.column{max-width:320px;font-size:calc(24px * var(--read-scale))}.punct-sentence{font-size:26px}.punct-mark b{font-size:48px;min-height:52px}.bookrow{padding:16px 20px;font-size:16px}button{padding:16px 18px;font-size:16px}.stage{padding-left:max(28px,env(safe-area-inset-left));padding-right:max(28px,env(safe-area-inset-right))}.tabbar .tab{padding:10px 0}button.tab .tab-lb{font-size:12px}.tab-ic{font-size:22px}}@media (min-width: 1000px){.app{max-width:960px}.grid{grid-template-columns:repeat(4,1fr)}}
