@font-face{font-family:"Lexend";src:url(../fonts/Lexend-Regular.woff) format("woff");font-weight:400;font-display:swap}
@font-face{font-family:"Lexend";src:url(../fonts/Lexend-SemiBold.woff) format("woff");font-weight:600 700;font-display:swap}
@font-face{font-family:"OpenDyslexic";src:url(../fonts/OpenDyslexic-Regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"OpenDyslexic";src:url(../fonts/OpenDyslexic-Bold.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Atkinson Hyperlegible";src:url(../fonts/Atkinson-Regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Atkinson Hyperlegible";src:url(../fonts/Atkinson-Bold.woff2) format("woff2");font-weight:600 700;font-display:swap}
@font-face{font-family:"Comic Neue";src:url(../fonts/ComicNeue-Regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Comic Neue";src:url(../fonts/ComicNeue-Bold.woff2) format("woff2");font-weight:600 700;font-display:swap}
@font-face{font-family:"Nunito";src:url(../fonts/Nunito-Regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Nunito";src:url(../fonts/Nunito-Bold.woff2) format("woff2");font-weight:600 700;font-display:swap}
@font-face{font-family:"Inter";src:url(../fonts/Inter-Regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Inter";src:url(../fonts/Inter-Bold.woff2) format("woff2");font-weight:600 700;font-display:swap}
@font-face{font-family:"Literata";src:url(../fonts/Literata-Regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Literata";src:url(../fonts/Literata-Bold.woff2) format("woff2");font-weight:600 700;font-display:swap}
@font-face{font-family:"AllRead Classic Serif";src:url(../fonts/ClassicSerif-Regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"AllRead Classic Serif";src:url(../fonts/ClassicSerif-Bold.woff2) format("woff2");font-weight:600 700;font-display:swap}
@font-face{font-family:"Source Serif";src:url(../fonts/SourceSerif-Regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Source Serif";src:url(../fonts/SourceSerif-Bold.woff2) format("woff2");font-weight:600 700;font-display:swap}
@font-face{font-family:"Playpen Sans";src:url(../fonts/PlaypenSans-Regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Playpen Sans";src:url(../fonts/PlaypenSans-Bold.woff2) format("woff2");font-weight:600 700;font-display:swap}
:root{
  --teal:#2BC0A8;--teal-l:#67DBC8;--teal-d:#0E7468;--teal-bg:#E3F7F3;
  --bg:#FBF5E6;--card:#FFFFFF;--ink:#1E2A2E;--muted:#55656B;--line:#D9E2E0;
  --hl:#FFE36E;--hl-ink:#1E2A2E;--syl0:#1D4ED8;--syl1:#BE185D;--mask:rgba(20,28,30,.55);
  --rfont:"Lexend",system-ui,sans-serif;--rsize:26px;--rletter:.04em;--rword:.12em;--rline:1.8;
  --ui:"Lexend",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--r:18px;
  --safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px)
}
body[data-bg=white]{--bg:#FFFFFF}
body[data-bg=cream]{--bg:#FBF5E6}
body[data-bg=blue]{--bg:#E4EFFA}
body[data-bg=green]{--bg:#E6F4E7}
body[data-bg=peach]{--bg:#FDE8DA}
body[data-bg=grey]{--bg:#E9EDEF}
body[data-bg=dark]{--bg:#161D1F;--card:#222B2E;--ink:#EEF2F2;--muted:#A9B7BA;--line:#38464A;--teal-bg:#18383A;--hl:#F5C542;--hl-ink:#111;--syl0:#93C5FD;--syl1:#F9A8D4;--mask:rgba(0,0,0,.72);--teal-d:#5FE0CB}
body[data-hl=teal]{--hl:#9BEADC}
body[data-hl=pink]{--hl:#FFC2DD}
body[data-hl=yellow]{--hl:#FFE36E}
body[data-bg=dark][data-hl=teal]{--hl:#2FA592}
body[data-bg=dark][data-hl=pink]{--hl:#E58AB4}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--ui);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
body{min-height:100vh;padding-bottom:var(--safe-b)}
button{font:inherit;color:inherit;cursor:pointer}
a{color:var(--teal-d)}
[hidden]{display:none!important}
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:8px;padding:calc(8px + var(--safe-t)) 10px 8px;background:var(--card);border-bottom:1px solid var(--line);min-height:62px}
.brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--ink);font-weight:600;font-size:20px}
.brand img{border-radius:10px}
.toptitle{flex:1;min-width:0;margin:0;font-size:16px;line-height:1.2;font-weight:600;white-space:normal;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:normal;word-break:normal;hyphens:auto}
.top.home .toptitle{display:none}.top.home .brand{flex:1}
.top:not(.home) .brand span{display:none}
.topright{display:flex;align-items:center;gap:8px}
.iconbtn{min-width:48px;height:48px;border-radius:14px;border:1px solid var(--line);background:var(--card);font-size:28px;line-height:1;display:inline-flex;align-items:center;justify-content:center;padding:0 10px}
.iconbtn.aa{font-size:20px;font-weight:600}
.langpill{display:flex;border:2px solid var(--teal);border-radius:999px;overflow:hidden}
.langpill button{border:0;background:transparent;min-width:46px;height:44px;font-weight:600;font-size:16px}
.langpill button[aria-pressed=true]{background:var(--teal);color:#08332D}
main{max-width:760px;margin:0 auto;padding:16px 14px 120px;outline:none}
.hero{text-align:center;padding:10px 6px 4px}
.hero img{width:96px;height:96px;border-radius:24px}
.hero h2{margin:8px 0 2px;font-size:28px}
.hero p{margin:0;color:var(--muted);font-size:17px}
.cards{display:grid;gap:12px;margin-top:18px}
.card{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;min-height:84px;text-decoration:none;color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.04)}
.card:active{transform:scale(.99)}
.card .em{font-size:38px;width:56px;height:56px;display:flex;align-items:center;justify-content:center;background:var(--teal-bg);border-radius:16px;flex:none}
.card b{display:block;font-size:20px;font-weight:600}
.card small{display:block;color:var(--muted);font-size:15px;margin-top:2px}
.card .go{margin-left:auto;font-size:26px;color:var(--muted)}
.card.done .go{color:var(--teal-d)}
.card.primary{border:2px solid var(--teal)}
.lvlnum{font-size:13px;font-weight:600;color:var(--teal-d);text-transform:uppercase;letter-spacing:.06em}
.foot{margin-top:24px;text-align:center;color:var(--muted);font-size:14px}
.foot button{background:none;border:0;text-decoration:underline;color:var(--muted);min-height:44px}
/* reader */
.reader-head{display:flex;align-items:center;gap:12px;margin:2px 0 12px}
.reader-head .em{font-size:44px}
.reader-head h2{margin:0;font-size:22px}
.reader-wrap{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px 16px;min-height:200px}
.rtext{font-family:var(--rfont);font-size:var(--rsize);letter-spacing:var(--rletter);word-spacing:var(--rword);line-height:var(--rline);overflow-wrap:break-word}
.rtext p{margin:0 0 .5em}
.rtext p:last-child{margin:0}
.w{border-radius:.25em;padding:0 .04em;transition:background .08s;cursor:pointer;-webkit-user-select:none;user-select:none}
.w.cur{background:var(--hl);color:var(--hl-ink);box-shadow:0 0 0 .08em var(--hl)}
.w.sel{outline:2px dashed var(--teal);outline-offset:2px}
.syl .s0{color:var(--syl0)}.syl .s1{color:var(--syl1)}
.syl .w.cur .s0,.syl .w.cur .s1{color:inherit}
.syl .w.cur .s1{text-decoration:underline;text-decoration-thickness:.08em}
.pic{display:inline-block;width:1.6em;text-align:center;margin-right:.3em}
.bigletter{font-size:2.2em;font-weight:700}
.mask{position:absolute;left:0;right:0;background:var(--mask);pointer-events:none;transition:top .15s,height .15s}
.mask.t{top:0;border-radius:var(--r) var(--r) 0 0}
.mask.b{bottom:0;border-radius:0 0 var(--r) var(--r)}
.band{position:absolute;left:0;right:0;border-top:3px solid var(--teal);border-bottom:3px solid var(--teal);pointer-events:none;transition:top .15s,height .15s}
.grip{position:absolute;right:-6px;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;background:var(--teal);color:#08332D;display:flex;align-items:center;justify-content:center;font-size:22px;pointer-events:auto;touch-action:none;box-shadow:0 2px 6px rgba(0,0,0,.25)}
.toolbar{position:fixed;left:0;right:0;bottom:0;z-index:15;background:var(--card);border-top:1px solid var(--line);padding:8px 8px calc(8px + var(--safe-b));display:flex;justify-content:center;gap:6px}
.tb{flex:1;max-width:96px;min-height:60px;border-radius:14px;border:1px solid var(--line);background:var(--card);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:24px;line-height:1;padding:4px 2px}
.tb small{font-size:12px;color:var(--muted);font-weight:600}
.tb.play{background:var(--teal);border-color:var(--teal);color:#08332D}
.tb.play small{color:#08332D}
.tb[aria-pressed=true]{background:var(--teal-bg);border-color:var(--teal);box-shadow:inset 0 0 0 2px var(--teal)}
.rowbtns{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.btn{text-decoration:none;color:var(--ink);min-height:56px;border-radius:16px;border:1px solid var(--line);background:var(--card);padding:10px 18px;font-size:18px;font-weight:600;display:inline-flex;align-items:center;gap:8px;justify-content:center}
.btn.main{background:var(--teal);border-color:var(--teal);color:#08332D}
.btn.wide{width:100%}
.btn:disabled{opacity:.5}
.hint{color:var(--muted);font-size:15px;margin:10px 2px}
.ruler-nav{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}
.ruler-nav .btn{min-height:48px;padding:6px 16px}
/* quiz */
.dots{display:flex;gap:8px;justify-content:center;margin:4px 0 14px}
.dots i{width:14px;height:14px;border-radius:50%;background:var(--line)}
.dots i.on{background:var(--teal)}
.qcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;text-align:center}
.qtext{font-family:var(--rfont);font-size:calc(var(--rsize) * .9);line-height:1.5;margin:0 0 6px;display:flex;gap:10px;align-items:center;justify-content:center}
.say{min-width:48px;height:48px;border-radius:50%;border:2px solid var(--teal);background:var(--teal-bg);font-size:22px;flex:none}
.qshow{font-family:var(--rfont);font-size:56px;margin:10px 0;line-height:1.2}
.opts{display:grid;gap:12px;margin-top:16px}
.opts.pic{grid-template-columns:repeat(3,1fr)}
.opt{position:relative;min-height:76px;border-radius:18px;border:2px solid var(--line);background:var(--card);display:flex;align-items:center;gap:14px;padding:10px 16px;font-family:var(--rfont);font-size:calc(var(--rsize) * .85);text-align:left;transition:opacity .3s,transform .2s}
.opt .oe{font-size:40px;flex:none}
.opts.pic .opt{flex-direction:column;justify-content:center;min-height:110px}
.opts.pic .opt .oe{font-size:56px}
.opt.letter{justify-content:center;font-size:48px;font-weight:700}
.opt.right{border-color:#1F9D57;background:#E2F7EA;color:#11331F}
.opt.tried{opacity:.38;transform:scale(.97)}
.opt.wiggle{animation:wig .45s}
@keyframes wig{20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}
.cheer{font-size:22px;font-weight:600;min-height:34px;margin-top:12px;color:var(--teal-d)}
.stars{font-size:52px;letter-spacing:6px;margin:10px 0}
.pop{animation:pop .5s}
@keyframes pop{0%{transform:scale(.6)}70%{transform:scale(1.15)}100%{transform:scale(1)}}
/* my text */
textarea{width:100%;min-height:200px;border-radius:var(--r);border:2px solid var(--line);background:var(--card);color:var(--ink);padding:14px;font-family:var(--rfont);font-size:20px;line-height:1.6;resize:vertical}
textarea:focus{outline:none;border-color:var(--teal)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}
.seg{display:flex;gap:8px;flex-wrap:wrap}
.seg button{min-height:48px;padding:6px 16px;border-radius:999px;border:2px solid var(--line);background:var(--card);font-weight:600}
.seg button[aria-pressed=true]{border-color:var(--teal);background:var(--teal-bg)}
.progress{height:14px;border-radius:7px;background:var(--line);overflow:hidden;margin:10px 0}
.progress i{display:block;height:100%;background:var(--teal);width:0;transition:width .2s}
.ocrbox{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin:12px 0}
.ocrbox img{max-width:100%;max-height:180px;border-radius:10px;display:block;margin:0 auto 8px}
/* sheet */
.sheet-bg{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:40}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:41;max-height:88vh;overflow:auto;background:var(--card);border-radius:24px 24px 0 0;padding:10px 18px calc(80px + var(--safe-b));max-width:760px;margin:0 auto;box-shadow:0 -8px 30px rgba(0,0,0,.2)}
.sheet .grab{width:48px;height:5px;border-radius:3px;background:var(--line);margin:4px auto 10px}
.sheet h2{font-size:22px;margin:0 0 6px;display:flex;justify-content:space-between;align-items:center}
.preview{font-family:var(--rfont);font-size:var(--rsize);letter-spacing:var(--rletter);word-spacing:var(--rword);line-height:var(--rline);background:var(--bg);border-radius:14px;padding:12px 14px;margin:8px 0 6px;border:1px solid var(--line)}
.set{padding:12px 0;border-bottom:1px solid var(--line)}
.set>label,.set>.lbl{display:flex;justify-content:space-between;font-weight:600;font-size:17px;margin-bottom:8px}
.set output{color:var(--teal-d)}
input[type=range]{width:100%;height:44px;accent-color:var(--teal)}
.fonts button{font-size:20px}
.chips{display:flex;gap:10px;flex-wrap:wrap}
.chip{width:56px;height:56px;border-radius:50%;border:3px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#333}
.chip[aria-pressed=true]{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-bg)}
.switch{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;font-weight:600;font-size:17px}
.switch input{width:54px;height:30px;accent-color:var(--teal)}
.toast{position:fixed;left:50%;bottom:100px;transform:translateX(-50%) translateY(20px);background:#1E2A2E;color:#fff;padding:12px 18px;border-radius:14px;font-size:16px;opacity:0;pointer-events:none;transition:all .25s;z-index:60;max-width:90vw;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.about{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;line-height:1.6}
.about h3{margin:14px 0 4px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
@media (min-width:600px){.cards.two{grid-template-columns:1fr 1fr}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.reader-wrap.ruler-on{padding-right:46px}
.reader-wrap.ruler-on .grip{right:2px}
/* ===== v1.1: universal home, profiles, tab bar ===== */
body.has-tabs main{padding-bottom:calc(110px + var(--safe-b))}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:16;display:flex;background:var(--card);border-top:1px solid var(--line);padding:4px 4px calc(4px + var(--safe-b))}
.tab{flex:1;min-height:60px;border:0;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:12px;font-weight:600;color:var(--muted);text-decoration:none;font-family:var(--ui);-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.tab[aria-current=true]{color:var(--teal-d)}
.tab[aria-current=true] svg{background:var(--teal-bg);border-radius:12px;padding:0 10px;box-sizing:content-box}
.home2{padding-top:4px}
.home2 .hl{font-size:26px;font-weight:600;letter-spacing:-.3px;margin:26px 2px 2px}
.home2 .hl.sm{font-size:24px;margin:0}
.home2 .hsub{color:var(--muted);font-size:15px;margin:0 2px 14px}
.contcard{display:block;position:relative;text-decoration:none;color:#fff;background:linear-gradient(150deg,#1E9F8C,#0E7468);border-radius:22px;padding:18px 18px 18px;min-height:132px;-webkit-touch-callout:none}
.contcard .ck{display:block;font-size:12px;letter-spacing:.08em;text-transform:uppercase;opacity:.85;font-weight:600}
.contcard b{display:block;font-size:22px;font-weight:600;margin-top:8px;line-height:1.25;padding-right:4px}
.contcard small{display:block;font-size:14px;opacity:.85;margin-top:4px}
.contcard .cbtn{display:inline-flex;margin-top:12px;background:#fff;color:#0E7468;font-weight:600;font-size:15px;border-radius:22px;padding:9px 16px}
.qk{display:flex;align-items:center;gap:14px;margin-top:10px;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:var(--card);color:var(--ink);text-decoration:none;min-height:64px;-webkit-touch-callout:none}
.qi{width:42px;height:42px;border-radius:12px;background:var(--teal-bg);color:var(--teal-d);display:flex;align-items:center;justify-content:center;flex:none}
.pt{flex:1;min-width:0}
.pt b,.qk b{display:block;font-size:17px;font-weight:600}
.pt small,.qk small{display:block;color:var(--muted);font-size:13.5px;margin-top:2px;line-height:1.35}
.pgo{color:#A9B5B3;display:flex;margin-left:auto}
.curp{display:flex;justify-content:space-between;align-items:center;gap:10px;background:var(--teal-bg);border-radius:14px;padding:10px 14px;margin:0 0 12px;color:var(--ink);text-decoration:none;font-size:15px;min-height:48px}
.curp .lnk{color:var(--teal-d);font-weight:600}
.psearch{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:14px;padding:0 12px;background:var(--card);color:var(--muted);min-height:48px}
.psearch input{flex:1;border:0;outline:0;background:transparent;font:inherit;font-size:16px;color:var(--ink);min-height:46px}
.grp{font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:22px 2px 8px}
.plist{display:grid;gap:8px}
.pcard{display:flex;align-items:center;gap:14px;width:100%;text-align:left;border:1px solid var(--line);background:var(--card);border-radius:16px;padding:11px 14px;min-height:68px;-webkit-touch-callout:none}
.pcard.on{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal)}
.pi{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex:none}
.pi.big{width:64px;height:64px;border-radius:18px}
.pon{display:flex;align-items:center;gap:4px;color:var(--teal-d);font-size:13px;font-weight:600;margin-left:auto}
.home2 .foot{line-height:2}
.prof .phead{display:flex;gap:16px;align-items:center;margin:8px 0 4px}
.feat{list-style:none;padding:0;margin:0 0 18px;display:grid;gap:10px}
.feat li{display:flex;gap:12px;align-items:flex-start;font-size:16px;line-height:1.4}
.feat svg{color:var(--teal-d);flex:none;margin-top:1px}
.btn.ghost{background:transparent}
.btn.sm{min-height:44px;font-size:15px;padding:6px 12px}
.prof .grid2 .btn{width:100%}
body[data-bg=dark] .pi,body[data-bg=dark] .qi{filter:saturate(.8) brightness(.85)}
/* reader extras */
.rtext.chunks p{opacity:.18;transition:opacity .2s}
.rtext.chunks p.on{opacity:1}
.chunk-nav{display:flex;gap:8px;justify-content:space-between;margin-top:10px}
.chunk-nav .btn{flex:1;min-height:52px;font-size:16px}
.wbar{display:flex;align-items:center;gap:10px;margin-top:10px;padding:8px 10px;border:1px solid var(--line);border-radius:14px;background:var(--card)}
.wbar b{font-family:var(--rfont);font-size:22px;flex:1;overflow-wrap:anywhere}
.wbar .btn{min-height:48px;font-size:15px;padding:6px 12px}
.tb.rep{background:var(--teal-bg);border-color:var(--teal)}
ruby.num rt{font-family:var(--ui);font-size:.42em;color:var(--teal-d);letter-spacing:0;font-weight:600}
.qty{display:inline-grid;grid-template-columns:repeat(5,.28em);gap:.07em;margin-left:.15em;vertical-align:middle}
.qty i{width:.28em;height:.28em;border-radius:50%;background:var(--teal)}
/* quiz extras */
.olab{display:block;font-size:.7em;margin-top:4px;font-weight:600}
.hintrow{margin-top:14px;display:flex;flex-direction:column;align-items:center;gap:8px}
.hinttxt{font-family:var(--rfont);font-size:22px;color:var(--teal-d);min-height:1.4em}
.opt.hinted{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-bg)}
#nextRow .btn{margin-top:12px}
.donecheck{color:var(--teal-d);font-weight:600}
/* My words */
.wlist{display:grid;gap:10px}
.wrow{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:10px 12px}
.wpic{font-size:36px}
.wtx{flex:1;min-width:0}.wtx b{display:block;font-family:var(--rfont);font-size:26px}.wtx small{color:var(--muted);font-size:15px}
.btn.mic{margin-top:12px}
.btn.mic[aria-pressed=true]{background:#C2410C;border-color:#C2410C;color:#fff}
/* profile looks */
body.calm *{animation:none!important;transition:none!important}
body.plain .card .em,body.plain .reader-head .em{display:none}
body.bigui .btn{min-height:68px;font-size:20px}
body.bigui .tb{min-height:78px;font-size:28px}
body.bigui .tb small{font-size:14px}
body.bigui .opt{min-height:96px}
body.bigui .opts{gap:18px}
body.bigui .pcard,body.bigui .card{min-height:88px}
body.bigui .tab{min-height:72px;font-size:14px}
body.bigui .grip{display:none}
body.bigui .ruler-nav .btn{min-width:88px;min-height:64px}
body.bigui .cards,body.bigui .plist{gap:14px}
body.kids .contcard{background:linear-gradient(150deg,#2BC0A8,#1E9F8C)}
body.kids .home2 .hl,body.kids .reader-head h2{color:var(--teal-d)}
body.kids .card .em{background:#FFF3D1}
/* ===== v1.2: kids ===== */
@font-face{font-family:"Andika";src:url(../fonts/Andika-Regular.woff) format("woff");font-weight:400;font-display:swap}
@font-face{font-family:"Andika";src:url(../fonts/Andika-Bold.woff) format("woff");font-weight:600 700;font-display:swap}
body.kids{--teal-bg:#E6F7F3}
.kids .khead h2{font-family:"Andika",var(--ui);font-size:32px;margin:6px 2px 2px;color:var(--teal-d)}
.kids .khead p{margin:0 2px 14px;color:var(--muted);font-size:16px}
.kcont{display:flex;gap:14px;align-items:center;text-decoration:none;color:#fff;background:linear-gradient(150deg,#2BC0A8,#13806F);border-radius:22px;padding:12px;min-height:120px}
.kcont .kcov{width:78px;height:98px;border-radius:12px;flex:none}
.kcont small{display:block;font-size:12px;letter-spacing:.08em;text-transform:uppercase;opacity:.9;font-weight:600}
.kcont b{display:block;font-family:"Andika",var(--ui);font-size:22px;margin:4px 0 8px}
.kcont .cbtn{display:inline-flex;background:#fff;color:#0E7468;font-weight:600;font-size:15px;border-radius:22px;padding:8px 14px}
.kcl{font-size:56px}
.kbig{display:flex;gap:16px;align-items:center;margin-top:12px;padding:16px;border-radius:22px;background:#FFF1E6;border:2px solid #F7B58C;color:#5A2E10;text-decoration:none;min-height:96px}
.kbig .kbi{width:64px;height:64px;border-radius:18px;background:#F2994A;color:#fff;display:flex;align-items:center;justify-content:center;flex:none}
.kbig b{display:block;font-family:"Andika",var(--ui);font-size:24px}.kbig small{display:block;font-size:14.5px;margin-top:2px;color:#7A4A2A}
.kpath{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.kstep{position:relative;display:flex;flex-direction:column;gap:2px;text-decoration:none;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:18px;padding:12px 12px 14px;min-height:104px}
.kstep:last-child{grid-column:span 2;min-height:84px}
.kstep .kn{width:30px;height:30px;border-radius:50%;background:#FFE08A;color:#6B4D00;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:15px;margin-bottom:4px}
.kstep:nth-child(2) .kn{background:#FFC2D4;color:#7A2442}.kstep:nth-child(3) .kn{background:#BFE3FF;color:#174A73}.kstep:nth-child(4) .kn{background:#C9F0D6;color:#1E6B3A}.kstep:nth-child(5) .kn{background:#E1D6FF;color:#4B3796}
.kstep b{font-family:"Andika",var(--ui);font-size:19px;line-height:1.2}.kstep small{color:var(--muted);font-size:13px}
.kbar{height:7px;border-radius:4px;background:var(--line);margin-top:auto;overflow:hidden}.kbar i{display:block;height:100%;background:#F2994A;border-radius:4px}
.grp.kg{display:flex;justify-content:space-between;align-items:baseline}.grp.kg a{font-size:13px;text-transform:none;letter-spacing:0;color:var(--teal-d);text-decoration:none}
.kgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.kcover{position:relative;display:block;text-decoration:none;color:var(--ink)}
.kcov{display:block;width:100%;aspect-ratio:4/5;height:auto;border-radius:16px;box-shadow:0 2px 8px rgba(0,0,0,.12)}
.kcover b{display:block;font-family:"Andika",var(--ui);font-size:17px;line-height:1.25;margin:8px 2px 0}
.kdone{position:absolute;top:8px;right:8px;width:30px;height:30px;border-radius:50%;background:#fff;color:#F2A100;font-style:normal;font-size:18px;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px rgba(0,0,0,.2)}
.kletters{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.ksyl{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ltile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-decoration:none;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:16px;min-height:88px;padding:6px}
.ltile b{font-family:"Andika",var(--ui);font-size:26px}.ksyl .ltile b{font-size:22px}.ltile span{font-size:24px}
.ltile.done{border-color:#F2C14E;background:#FFFBEA}.ltile i{position:absolute;top:3px;right:5px;font-style:normal;font-size:12px;color:#E09B00}
.kphoto{text-align:center}.kphoto .kph{width:120px;height:120px;border-radius:32px;background:#FFF1E6;color:#F2994A;display:flex;align-items:center;justify-content:center;margin:8px auto 6px}
.kphoto h2{font-family:"Andika",var(--ui);font-size:28px;margin:6px 0}.kphoto p{color:var(--muted);font-size:16px;line-height:1.5}
.kphoto .btn{margin-top:10px}.kbtn{min-height:72px;font-size:20px;background:#F2994A!important;border-color:#F2994A!important;color:#fff!important}
.kphoto .seg{justify-content:center}
/* kid reader */
.rtext.kidtext{font-family:var(--rfont);line-height:1.75}
.reader-head .em .kcov{width:52px;height:65px;border-radius:9px;box-shadow:none}
.book{margin-bottom:10px}
.bart{border-radius:20px;overflow:hidden;line-height:0;box-shadow:0 2px 10px rgba(0,0,0,.1)}
.kart{display:block;width:100%;height:auto;aspect-ratio:320/230}
.pnav{display:flex;align-items:center;justify-content:space-between;margin-top:8px}
.pnav .btn{min-width:64px;min-height:52px;font-size:28px;padding:0}.pnav span{color:var(--muted);font-weight:600}
.reader-wrap.paged .rtext p{display:none}.reader-wrap.paged .rtext p.pg{display:block}.reader-wrap.paged .pic{display:none}
.reader-wrap.paged{min-height:150px}
.fingermode{touch-action:none;cursor:crosshair}
.fingermode .w{-webkit-user-select:none;user-select:none}
.w.finger{background:#FFE1EC;box-shadow:0 0 0 .08em #F28AB0;border-radius:.25em}
.w .fs{transition:background .15s}.w .fs.lit{background:#FFF0A8;border-radius:.15em}
.w .fs.s0{color:var(--syl0)}.w .fs.s1{color:var(--syl1)}
.w.yours{background:#E3F2FF;border-radius:.2em}
.turn{margin-top:12px;padding:14px;border-radius:18px;background:#FFF5D6;border:2px solid #F2C14E;text-align:center}
.turn b{display:block;font-family:"Andika",var(--ui);font-size:22px;margin-bottom:10px}
.turn .trow{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.trace{margin-top:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px}
.tlbl b{display:block;font-size:18px}.tlbl small{color:var(--muted);font-size:14px}
#tc{display:block;width:100%;height:230px;touch-action:none;margin:8px 0;border-radius:14px;background:repeating-linear-gradient(#fff 0 56px,#EAF2F0 56px 58px)}
.trow{display:flex;align-items:center;gap:12px}.trow .cheer{margin:0}
body.kids .tb#bFinger[aria-pressed=true],body.kids .tb#bTog[aria-pressed=true]{background:#FFE1EC;border-color:#F28AB0;box-shadow:inset 0 0 0 2px #F28AB0}
/* ===== v1.3: adult library ===== */
.adult .ahl{font-family:Georgia,"Noto Serif","Times New Roman",serif;font-weight:600;font-size:30px;margin:8px 2px 14px;color:var(--ink);letter-spacing:-.01em}
.acov{display:flex;flex-direction:column;justify-content:space-between;aspect-ratio:2/3;border-radius:6px;padding:12px 11px;box-shadow:0 1px 2px rgba(0,0,0,.18),0 4px 14px rgba(0,0,0,.08);overflow:hidden;position:relative}
.acov:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:rgba(255,255,255,.12)}
.acov .acat{font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;opacity:.75;font-weight:600}
.acov .atit{font-family:Georgia,"Noto Serif",serif;font-size:19px;line-height:1.18;font-weight:600;margin-top:auto}
.acov .arule{display:block;height:1px;background:currentColor;opacity:.45;margin:10px 0 6px;width:40%}
.acov .aby{font-size:10.5px;opacity:.8;letter-spacing:.04em;min-height:1em}
.acov.sm{width:64px;flex:none;padding:7px 6px;border-radius:4px}.acov.sm .atit{font-size:10px}.acov.sm .acat,.acov.sm .aby,.acov.sm .arule{display:none}
.acov.xs{width:46px;padding:5px;border-radius:3px}.acov.xs .atit{font-size:7px}.acov.xs .acat,.acov.xs .aby,.acov.xs .arule{display:none}
.reader-head .em .acov{box-shadow:none}
.acont{display:flex;gap:14px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);text-decoration:none}
.acont small{display:block;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600}
.acont b{display:block;font-family:Georgia,"Noto Serif",serif;font-size:20px;margin:4px 0 10px;font-weight:600}
.acont .cbtn{display:inline-flex;background:#26323A;color:#fff;border-radius:20px;padding:7px 14px;font-size:14px;font-weight:600}
.adoc{display:flex;gap:14px;align-items:center;margin-top:12px;padding:16px;border-radius:14px;background:#26323A;color:#fff;text-decoration:none;min-height:84px}
.adoc .qi{width:52px;height:52px;border-radius:12px;background:rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;flex:none}
.adoc b{display:block;font-size:19px}.adoc small{display:block;font-size:14px;opacity:.82;margin-top:3px}.adoc .pt{flex:1}
.adult .qk{margin-top:10px}
.ash{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:24px 2px 10px}
.ash a{font-size:14px;letter-spacing:0;text-transform:none;color:var(--teal-d);text-decoration:none;font-weight:600}
.arow{display:grid;grid-auto-flow:column;grid-auto-columns:42%;gap:14px;overflow-x:auto;padding-bottom:6px;scroll-snap-type:x mandatory}
.arow .abook{scroll-snap-align:start}
.abook{display:block;text-decoration:none;color:var(--ink)}
.abook b{display:block;font-size:15px;line-height:1.3;margin:8px 1px 2px;font-weight:600}.abook small{color:var(--muted);font-size:12.5px}
.agrid{display:grid;grid-template-columns:1fr 1fr;gap:20px 16px;margin-top:14px}
.acats{border:1px solid var(--line);border-radius:14px;background:var(--card);overflow:hidden}
.acatrow{display:flex;align-items:center;gap:12px;padding:14px;color:var(--ink);text-decoration:none;border-top:1px solid var(--line);min-height:56px}
.acatrow:first-child{border-top:0}.acatrow .sw{width:12px;height:28px;border-radius:2px}.acatrow b{flex:1;font-weight:500;font-size:16px}.acatrow small{color:var(--muted)}
.chips{display:flex;gap:8px;overflow-x:auto;padding:2px 0 8px}
.chips button{flex:none;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:20px;padding:9px 14px;font:inherit;font-size:14.5px;min-height:44px}
.chips button[aria-pressed=true]{background:#26323A;border-color:#26323A;color:#fff}
.aseg{margin-top:6px}
.rmeta{display:block;font-family:var(--ui);font-size:13px;font-weight:400;color:var(--muted);margin-top:4px;line-height:1.4}
body.plain .reader-head h2{font-family:Georgia,"Noto Serif",serif}
.dtips{color:var(--muted);line-height:1.6;padding-left:20px}
.adocp .btn{margin-top:10px;gap:8px}
.dmode{margin-bottom:12px}
.gloss{margin-top:14px;border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:var(--card)}
.gloss h3{margin:0 0 6px;font-size:16px}.gloss dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 12px;font-size:15.5px}
.gloss dt{font-weight:700}.gloss dd{margin:0;color:var(--muted)}
/* kids level picker + filter */
.kpick{position:fixed;inset:0;background:rgba(20,30,35,.5);display:flex;align-items:flex-end;justify-content:center;z-index:60}
.kpbox{background:var(--bg,#fff);background:#fff;width:100%;max-width:560px;border-radius:24px 24px 0 0;padding:20px 16px calc(20px + env(safe-area-inset-bottom))}
.kpbox h2{font-family:"Andika",var(--ui);font-size:26px;margin:0 0 4px}.kpbox>p{margin:0 0 12px;color:var(--muted)}
.kplv{display:flex;gap:14px;align-items:center;width:100%;text-align:left;border:2px solid var(--line);background:#fff;border-radius:18px;padding:12px;margin-bottom:10px;font:inherit;color:var(--ink);min-height:76px;cursor:pointer}
.kplv .kn{width:40px;height:40px;border-radius:50%;background:#FFE08A;font-weight:700;display:flex;align-items:center;justify-content:center;flex:none}
.kplv:nth-of-type(2) .kn{background:#BFE3FF}.kplv:nth-of-type(3) .kn{background:#E1D6FF}
.kplv b{display:block;font-family:"Andika",var(--ui);font-size:20px}.kplv small{color:var(--muted);font-size:14px}
.kpns small{display:block;color:var(--muted);font-size:13px;font-weight:400;margin-top:2px}
.klf{margin-bottom:4px}.klf button{font-family:"Andika",var(--ui);font-size:16px}
/* don't skip words */
.nsbar{margin-bottom:10px;padding:12px;border:2px solid #9BD8CE;background:#F1FBF9;border-radius:16px}
.nsbar .nst{display:flex;justify-content:space-between;align-items:center}.nsbar .nst b{font-size:17px}.nsbar #nsProg{color:var(--muted);font-weight:600}
.nsbar p{margin:4px 0 8px;font-size:14.5px;color:var(--muted)}
.nsbtns{display:flex;flex-wrap:wrap;gap:8px}.nsbtns .btn{min-height:48px;font-size:14.5px;padding:0 12px}
.nsbtns .btn[aria-pressed=true]{background:#DDF3EF;border-color:#2BC0A8}
.nsmsg{min-height:1.4em;margin-top:8px;font-weight:600;color:#9A5B00;font-size:16px}
.rtext.noskip .w{transition:opacity .2s}
.rtext.noskip .w.ns-dim{opacity:.28}
.rtext.noskip .w.ns-done{color:var(--muted)}
.rtext.noskip .w.ns-next{background:var(--hl);border-radius:.2em;box-shadow:0 0 0 .08em var(--hl)}
.rtext.noskip .w.ns-pulse{animation:nspulse .5s ease-in-out 3}
@keyframes nspulse{50%{transform:scale(1.15);box-shadow:0 0 0 .18em #F2994A}}
body.calm .rtext.noskip .w.ns-pulse{animation:none;outline:3px solid #F2994A}
.reader-wrap{position:relative}
.nsf{position:absolute;height:5px;border-radius:3px;background:#F2994A;transition:left .2s,top .2s,width .2s;pointer-events:none;z-index:2}
.nsf:after{content:"☝️";position:absolute;left:50%;top:4px;transform:translateX(-50%);font-size:22px}
body.calm .nsf{transition:none}
.toolbar .tb{min-width:0}

.chips{flex-wrap:nowrap!important;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}
.acov:after{content:"";position:absolute;inset:5px;border:1px solid currentColor;opacity:.18;border-radius:3px;pointer-events:none}
.nsbar .nsbtns .btn{min-height:44px;font-size:14px}
.nsf:after{font-size:18px;top:3px}

/* ===== v1.4: 3D art ===== */
img.k3d{display:block;-webkit-user-drag:none;user-select:none}
img.kcov{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:16px;box-shadow:0 2px 8px rgba(0,0,0,.12);background:#F3EFE6}
.kcont img.kcov{width:78px;height:98px;border-radius:12px}
.reader-head .em img.kcov{width:52px;height:65px;border-radius:9px;box-shadow:none}
img.kart{width:100%;aspect-ratio:16/10;object-fit:cover;background:#F3EFE6}
img.e3d{display:inline-block;width:1.25em;height:1.25em;object-fit:contain;vertical-align:-.25em;border-radius:.2em}
.oe img.e3d{width:72px;height:72px}.opts.pic .oe img.e3d{width:88px;height:88px}
.qshow img.e3d{width:120px;height:120px;margin:0 auto}
.ltile span img.e3d{width:34px;height:34px}
.pic img.e3d{width:1.3em;height:1.3em}
.reader-head .em img.e3d{width:52px;height:52px}
img.u3d{display:inline-block;object-fit:contain}
.kbi img.kbi3d{width:64px;height:64px}.kbig .kbi:has(img){background:transparent}
.kstep img.kstep3d{position:absolute;right:8px;top:8px;width:46px;height:46px}
.kplv img.kp3d{width:52px;height:52px;flex:none}
img.cheer3d{width:1.6em;height:1.6em;vertical-align:-.45em;margin-right:4px}
img.star3d{width:72px;height:72px;display:inline-block}
.nsf.has3d:after{display:none}.nsf img.nsf3d{position:absolute;left:50%;top:5px;transform:translateX(-50%);width:30px;height:30px}

/* phonics: letter sound + name */
.phon{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:6px 0 14px}
.phon .phs{flex:2 1 160px;font-size:1.25rem;min-height:60px}
.phon .phn{flex:1 1 110px;min-height:60px}
.phon .phxs{display:flex;gap:8px;flex-wrap:wrap;width:100%}
.phon .phx{min-height:52px}
.phon .phx b{font-size:1.15rem}
.phon .phnote{width:100%;margin:2px 0 0}
.qshow[role=button]{cursor:pointer}

/* v1.4.2: always-visible way back to the profile picker + room for host toolbars */
.profbtn{display:inline-flex;align-items:center;gap:4px;min-height:44px;padding:0 10px;border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);font:inherit;font-size:14px;font-weight:600;flex:none}
.profbtn[hidden]{display:none}
@media (max-width:400px){.top:not(.home) .profbtn span{display:none}.profbtn{padding:0 9px}}
body.has-tabs main{padding-bottom:calc(150px + var(--safe-b))}
body.hostbar .tabs{bottom:70px;border-bottom:1px solid var(--line)}
body.hostbar.has-tabs main{padding-bottom:calc(220px + var(--safe-b))}
body.hostbar .toolbar{bottom:70px}
body.hostbar main{padding-bottom:calc(200px + var(--safe-b))}

/* kids: choose how to read */
.modebar{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:4px 0 12px}
.modebar .mode{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:86px;padding:10px 8px;border:2px solid var(--line);border-radius:18px;background:var(--card);color:var(--ink);font:inherit;text-align:center}
.modebar .mode span{font-size:28px;line-height:1}
.modebar .mode b{font-size:17px}
.modebar .mode small{font-size:13px;opacity:.75}
.modebar .mode[aria-pressed=true]{border-color:var(--teal);background:#E6F7F3;box-shadow:inset 0 0 0 2px var(--teal)}
.fingermode,.fingermode *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}

.modebar .mode{min-height:96px;padding:8px 4px}.modebar .mode b{font-size:15px;line-height:1.15}.modebar .mode small{font-size:12px}
.lsbar{background:#FFF8E1;border:2px solid #F5C451;border-radius:18px;padding:10px 12px;margin:0 0 12px}
.lsbar .lsmsg{margin:0 0 8px;font-size:17px;font-weight:600}
.lsbtns{display:flex;flex-wrap:wrap;gap:8px}.lsbtns .btn{min-height:52px}
.rtext .w.ls-cur{background:#FFF1BF;border-radius:6px}
.rtext .w.ls-g{background:#C9F2D9;color:#0B5A2E;border-radius:6px}
.rtext .w.ls-y{background:#FFE7A3;color:#6B4A00;border-radius:6px}
.rtext .w.ls-r{background:#FFD3D3;color:#8A1F1F;border-radius:6px;text-decoration:underline wavy #E06666}

/* v1.5 font picker */
.fgrp{margin:6px 0 12px}.fgl{font-size:14px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:4px 2px 6px}
.fpick{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fpick button{min-height:72px;border:2px solid var(--line);background:var(--card);color:var(--ink);border-radius:16px;padding:8px 12px;text-align:left;display:flex;flex-direction:column;justify-content:center;gap:2px;cursor:pointer}
.fpick button b{font-size:15px;font-weight:600;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.fpick button span{font-size:21px;line-height:1.25;white-space:nowrap}
.fpick button[aria-pressed="true"]{border-color:var(--teal-d);background:var(--teal-bg);box-shadow:inset 0 0 0 1px var(--teal-d)}
/* ---------- v1.5 books: Kindle-like library, reader extras, find/import, Discover feed ---------- */
.books{padding-bottom:24px}
.books .hsub{color:var(--muted);margin:4px 2px 12px;font-size:17px;line-height:1.45}
.bsh{font-size:19px;margin:22px 2px 10px}
.brow{display:flex;gap:14px;overflow-x:auto;padding:2px 2px 10px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.brow .bnone{white-space:normal}
.btile{flex:0 0 118px;scroll-snap-align:start;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:6px}
.btile b{font-size:14.5px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.btile small{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bcov{position:relative;display:flex;flex-direction:column;justify-content:space-between;width:118px;aspect-ratio:2/3;border-radius:6px 10px 10px 6px;padding:12px 10px 10px;box-sizing:border-box;overflow:hidden;
  box-shadow:0 1px 2px rgba(0,0,0,.18),0 6px 14px rgba(0,0,0,.12),inset 4px 0 0 rgba(0,0,0,.12);font-family:"Literata",Georgia,serif;flex:none}
.bcov.img{padding:0;background:#ddd}.bcov.img img{width:100%;height:100%;object-fit:cover;display:block}
.bcov .bca{font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;opacity:.85;font-family:var(--ui);line-height:1.3}
.bcov .bct{font-size:15px;font-weight:700;line-height:1.18;margin:auto 0 6px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.bcov .bcr{display:block;width:34px;height:2px;background:var(--acc);margin-bottom:6px}
.bcov .bcy{font-size:10px;opacity:.7;font-family:var(--ui)}
.bcov.sm{width:72px;padding:8px 7px}.bcov.sm .bct{font-size:10.5px}.bcov.sm .bca,.bcov.sm .bcy{font-size:7.5px}
.bcov.lg{width:132px}
.bcov.fc{width:64px;padding:7px 6px}.bcov.fc .bct{font-size:9.5px;-webkit-line-clamp:4}.bcov.fc .bca,.bcov.fc .bcy{font-size:6.5px}
.bprog{position:absolute;left:0;right:0;bottom:0;height:5px;background:rgba(0,0,0,.25)}.bprog i{display:block;height:100%;background:#2BC0A8}
.bprog.wide{position:relative;height:6px;border-radius:3px;background:var(--line);margin:6px 0 2px;overflow:hidden;display:block}
.bprog.btop{margin:0 0 10px}
.bcont{display:flex;gap:14px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:12px;text-decoration:none;color:var(--ink);margin:6px 0 10px}
.bci{flex:1;min-width:0;display:flex;flex-direction:column}.bci small{color:var(--teal-d);font-weight:600;font-size:13px}.bci b{font-size:18px;line-height:1.25;margin:2px 0}.bcm{font-size:13.5px;color:var(--muted)}
.bacts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0}.bacts .bact{flex-direction:column;justify-content:center;text-align:center;gap:6px;padding:10px 6px;min-height:92px}.bacts .bact small{display:none}.bacts .bact b{font-size:14px;line-height:1.2}
.bact{display:flex;gap:14px;align-items:center;min-height:64px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:10px 14px;text-decoration:none;color:var(--ink)}
.bact svg{flex:none;color:var(--teal-d)}.bact b{display:block;font-size:16.5px}.bact small{display:block;font-size:13.5px;color:var(--muted)}
.bact.wide{margin-top:22px}
.bhead{display:flex;gap:10px;align-items:center;margin:0 0 6px}.bhead .btn{min-height:48px;flex:none}
.bht{min-width:0;display:flex;flex-direction:column}.bht b{font-size:16px;line-height:1.25}.bht small{font-size:13px;color:var(--muted)}
.bpnav{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0 10px}.bpnav .btn{min-height:56px}
.bcsw{margin:6px 0}.bsrc{font-size:13px}
.btoc{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:50;display:flex;align-items:flex-end;justify-content:center}
.btocb{background:var(--card);width:100%;max-width:760px;max-height:82vh;overflow:auto;border-radius:22px 22px 0 0;padding:12px 14px calc(80px + var(--safe-b))}
.btoch{display:flex;justify-content:space-between;align-items:center;gap:10px;position:sticky;top:-12px;background:var(--card);padding:8px 0}.btoch b{font-size:18px}
.btocb ol{list-style:none;margin:0;padding:0}.btocb li button{width:100%;text-align:left;min-height:52px;border:0;border-bottom:1px solid var(--line);background:none;color:var(--ink);font:inherit;font-size:16px;padding:10px 6px}
.btocb li button[aria-current=true]{color:var(--teal-d);font-weight:700;background:var(--teal-bg)}
.bq{display:flex;gap:8px;margin:6px 0 10px}.bq input{flex:1;min-width:0;min-height:54px;font-size:18px;border:2px solid var(--line);border-radius:14px;padding:0 14px;background:var(--card);color:var(--ink);font-family:var(--ui)}
.bfind .ahl{margin-top:16px}
#scanV{width:100%;border-radius:16px;margin-top:10px;background:#000}
.blist{display:grid;gap:8px}
.bres{display:flex;gap:12px;align-items:center;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:8px;font:inherit;color:var(--ink);min-height:64px}
.bres b{display:block;font-size:16px}.bres small{color:var(--muted);font-size:13.5px}
.bwork{display:flex;gap:16px;align-items:flex-start;margin:14px 0}.bwork h2{font-family:"Literata",Georgia,serif;font-size:22px;margin:4px 0 6px;line-height:1.25}.bwork p{margin:0 0 4px;color:var(--muted)}
.bok{background:var(--teal-bg);border-radius:14px;padding:12px 14px;font-size:16.5px;line-height:1.45}
.bcopy{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;font-size:16.5px;line-height:1.5}.bcopy p{margin:0 0 10px}
.bopts{display:grid;gap:8px}.bopts .btn{min-height:54px;justify-content:flex-start;gap:10px}
.bload{margin-top:30vh;text-align:center}
/* Discover feed: one passage per screen, vertical swipe */
body.feedmode main{padding-bottom:0}
.feedtop{display:flex;align-items:center;gap:10px;justify-content:space-between;font-size:13.5px;color:var(--muted);padding:2px 2px 8px}.feedtop .btn{min-height:44px;flex:none}
.feed{height:calc(100dvh - 210px - var(--safe-b) - var(--safe-t));overflow-y:auto;scroll-snap-type:y mandatory;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;border-radius:20px}
body.hostbar .feed{height:calc(100dvh - 280px - var(--safe-b) - var(--safe-t))}
.fcard{height:100%;scroll-snap-align:start;scroll-snap-stop:always;box-sizing:border-box;display:flex;flex-direction:column;gap:14px;padding:18px 16px;background:var(--card);border:1px solid var(--line);border-radius:20px;margin-bottom:12px;overflow:hidden}
.savedl .fcard{height:auto;min-height:0}
.fcov{display:flex;gap:14px;align-items:flex-end}
.fcov .acov.fc{width:64px;height:96px;flex:none;font-size:8px}.fcov .acov.fc .atit{font-size:10px}
.fkc{width:96px;flex:none;border-radius:14px;overflow:hidden}.fkc img,.fkc svg{width:100%;display:block}
.fmeta{min-width:0}.fmeta b{display:block;font-family:"Literata",Georgia,serif;font-size:19px;line-height:1.25}.fmeta small{color:var(--muted);font-size:14px}
.fx{margin:0;flex:1;overflow:auto;font-family:var(--rfont);letter-spacing:var(--rletter);word-spacing:var(--rword);font-size:clamp(19px,5.2vw,23px);line-height:1.6;padding:6px 2px;border-left:3px solid var(--teal-l);padding-left:14px}
.fx .fw{border-radius:5px}.fx .fw.cur{background:var(--hl);color:var(--hl-ink,inherit)}
.fbtns{display:grid;grid-template-columns:1fr 1fr;gap:8px}.fbtns .btn{min-height:54px}.fbtns .fkeep{grid-column:1/-1}
.fheart[aria-pressed=true]{color:#C2185B;border-color:#E9A6C1}.fh{font-size:20px}
.fswipe{margin:0;text-align:center;font-size:13px;color:var(--muted)}

.tabs .tab span{white-space:nowrap}

/* v1.5 natural voice */
.vbadge{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;border-radius:999px;padding:4px 12px;margin:2px 0 10px;background:var(--teal-bg);color:var(--teal-d)}
.vbadge.dev{background:var(--card);color:var(--muted);border:1px solid var(--line)}
.linkb{border:0;background:none;color:inherit;font-size:16px;padding:0 2px;min-height:0;cursor:pointer}
.vlist{display:flex;flex-direction:column;gap:8px}
.vopt{min-height:56px;border:2px solid var(--line);background:var(--card);color:var(--ink);border-radius:14px;padding:8px 14px;text-align:left;display:flex;flex-direction:column;gap:2px;cursor:pointer}
.vopt b{font-size:16px;font-weight:600}.vopt small{font-size:13px;color:var(--muted);display:flex;gap:8px;align-items:center}
.vopt[aria-pressed="true"]{border-color:var(--teal-d);background:var(--teal-bg);box-shadow:inset 0 0 0 1px var(--teal-d)}
.vt{font-style:normal;font-size:12px;font-weight:700;border-radius:999px;padding:1px 8px;background:var(--line);color:var(--ink)}
.vt.natural{background:#D7F3EA;color:#0E6B57}.vt.novelty{background:#F6E1E1;color:#8A3B3B}
.vmore{margin-top:8px}.vmore summary{cursor:pointer;color:var(--teal-d);font-weight:600;padding:8px 2px;min-height:44px}
.vrow{margin-top:10px}.vnote,.vtip{font-size:14px}
/* v1.5 first-words lists: 5 words per page, big picture next to each word, page arrows on top */
.book.wl .bart{display:none}.book.wl{margin-bottom:6px}
.reader-wrap.paged.wl .pic{display:inline-block;width:1.7em;font-size:1.25em;vertical-align:middle}
.reader-wrap.paged.wl .pic img.e3d{width:1.5em;height:1.5em}
.reader-wrap.paged.wl .rtext p.pg{padding:6px 0;border-bottom:1px solid var(--line)}.reader-wrap.paged.wl .rtext p.pg:last-child{border-bottom:0}
/* v1.7 Listen to a book */
.lentry{display:flex;align-items:center;gap:14px;padding:16px 18px;margin:6px 0 16px;border-radius:18px;background:var(--ink);color:var(--card);text-decoration:none;min-height:72px}
.lentry .lei{font-size:30px;width:52px;height:52px;border-radius:14px;background:rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;flex:none}
.lentry b{display:block;font-size:19px}.lentry small{display:block;opacity:.8;font-size:14px;margin-top:2px}.lentry .lgo{margin-left:auto;font-size:26px;opacity:.7}
.listen .lgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:14px}
.listen .lgrid .btile{width:auto}
.lbtn{margin-top:10px}
.lplayer .lhead{display:flex;gap:12px;align-items:center;margin:4px 0 8px}.lplayer .lhead b{display:block;font-size:18px}.lplayer .lhead small{display:block;color:var(--muted);font-size:13px}
.ltext{font-family:var(--rfont);font-size:var(--rsize);letter-spacing:var(--rletter);word-spacing:var(--rword);line-height:var(--rline);overflow-wrap:break-word}
.ltext p{margin:0 0 .8em}.ltext .lch{font-size:15px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:6px 0 10px}
.ltext .lw{border-radius:4px;cursor:pointer}
.ltext .lw.cur{background:var(--hl);color:var(--hl-ink);box-shadow:0 0 0 .08em var(--hl)}
.lpad{height:190px}
.lbar{position:fixed;left:0;right:0;bottom:0;z-index:16;background:var(--card);border-top:1px solid var(--line);padding:6px 8px calc(10px + var(--safe-b));box-shadow:0 -6px 20px rgba(0,0,0,.08);max-width:760px;margin:0 auto}
.lprog{height:4px;background:var(--line);border-radius:2px;overflow:hidden;margin:0 6px 6px}.lprog i{display:block;height:100%;background:var(--teal);width:0}
.lrow{display:flex;justify-content:space-between;align-items:center;gap:2px}
.lb{flex:1;min-width:0;height:52px;border:0;background:none;color:var(--ink);font-size:24px;border-radius:14px;display:flex;align-items:center;justify-content:center;gap:1px;cursor:pointer}
.lb small{font-size:11px;font-weight:700}
.lb:active{background:var(--teal-bg)}
.lb.lplay{flex:1.4;height:62px;background:var(--teal);color:#08332D;font-size:28px;border-radius:999px;max-width:76px}
.lrow2{display:flex;gap:6px;margin-top:6px}.lrow2 .btn{flex:1;min-height:44px;font-size:15px;padding:6px 8px}
body:has(.lbar) .toolbar{display:none}
body.hostbar .lbar{bottom:70px;border-bottom:1px solid var(--line)}
body.hostbar .lpad{height:260px}
