:root{--bg:#ecdcb4;--surface:#f5ead0;--text:#3a2a18;--muted:#7d6748;--line:#d9c59a;--accent:#7a4a1a;--on-accent:#fff7e6;--warn-bg:#f0c27d;--warn-text:#5c3300;--serif:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--ui:-apple-system, BlinkMacSystemFont, system-ui, "Segoe UI", sans-serif;--reader-size:20px;--reader-lh:1.6;--head:56px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=light]{--bg:#faf8f4;--surface:#fff;--text:#1f1d1a;--muted:#736c63;--line:#e4ded3;--accent:#7a4a1a;--on-accent:#fff;--warn-bg:#fbd9a8;--warn-text:#6b3a00}:root[data-theme=dark]{--bg:#1b1a18;--surface:#262421;--text:#e4d9c4;--muted:#9a8f7e;--line:#3a3631;--accent:#d6a75f;--on-accent:#1b1a18;--warn-bg:#5a3d14;--warn-text:#f5d39b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font:16px/1.45 var(--ui);-webkit-tap-highlight-color:transparent;margin:0}button{font:inherit;color:inherit;touch-action:manipulation;cursor:pointer}a{color:inherit;text-decoration:none}h1,h2,h3{margin:0;font-weight:600}.muted{color:var(--muted)}.small{font-size:13px}.pad{padding:0 4px}.screen{max-width:640px;padding:calc(var(--safe-top) + 20px) 16px calc(var(--safe-bottom) + 88px);margin:0 auto}.page-head{margin:8px 4px 20px}.page-head h1{font:600 32px/1.15 var(--serif)}.row-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.eyebrow{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-size:13px}.streak{color:var(--muted);margin-top:6px;font-size:15px}.card{background:var(--surface);border:1px solid var(--line);border-radius:18px;flex-direction:column;gap:8px;margin-bottom:14px;padding:18px;display:flex}.card.empty{align-items:flex-start}.card.empty p{margin:0 0 8px}.book-title{font:600 25px/1.2 var(--serif)}.chapter{font-family:var(--serif);color:var(--muted);font-style:italic}.meta-line{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;font-size:15px;display:flex}.meta-line.small{font-size:13px}.today-card .primary{margin-top:10px}.book-line .title{font:600 19px/1.25 var(--serif)}.done{text-align:center;align-items:center;padding:28px 18px}.done p{margin:0}.done-mark{background:var(--accent);width:52px;height:52px;color:var(--on-accent);border-radius:50%;place-items:center;display:grid}.done h2{font:600 24px/1.2 var(--serif)}.badge{background:var(--line);color:var(--text);border-radius:999px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-block}.badge.warn{background:var(--warn-bg);color:var(--warn-text)}.bar{background:var(--line);border-radius:2px;height:4px;overflow:hidden}.bar>div{background:var(--accent);border-radius:2px;height:100%}.primary,.secondary{border-radius:13px;min-height:48px;padding:0 18px;font-size:16px;font-weight:600}.primary{background:var(--accent);color:var(--on-accent);border:0}.secondary{color:var(--accent);border:1.5px solid var(--line);background:0 0}.big{min-height:56px;font-size:18px}.primary.small{min-height:44px;padding:0 16px;font-size:15px}.dev{width:100%;margin-bottom:14px}button:disabled{opacity:.4}.icon-btn{width:44px;height:44px;color:var(--text);background:0 0;border:0;border-radius:12px;flex:none;place-items:center;display:grid}.toast{white-space:pre-line;background:var(--surface);border:1px solid var(--line);border-radius:14px;margin-bottom:14px;padding:12px 14px;font-size:14px}.books{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.book-row{background:var(--surface);border:1px solid var(--line);border-radius:18px;align-items:flex-start;gap:4px;padding:14px 6px 14px 16px;display:flex}.book-main{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.book-main .title{font:600 18px/1.25 var(--serif)}.book-main .muted{margin-top:-4px;font-size:14px}.tabbar{z-index:10;padding-bottom:var(--safe-bottom);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar a{min-height:56px;color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:11px;display:flex}.tabbar a.on{color:var(--accent)}.sheet-backdrop{z-index:30;background:#0000004d;justify-content:center;align-items:flex-end;animation:.15s ease-out fade;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);width:100%;max-width:640px;max-height:78vh;padding:8px 16px calc(var(--safe-bottom) + 16px);font-family:var(--ui);border-radius:20px 20px 0 0;animation:.2s ease-out rise;overflow-y:auto}.sheet-grip{background:var(--line);border-radius:3px;width:38px;height:5px;margin:0 auto 10px}.sheet-title{font:600 18px/1.3 var(--serif);margin:4px 4px 12px}@keyframes rise{0%{opacity:0;transform:translateY(40px)}}@keyframes fade{0%{opacity:0}}.actions{flex-direction:column;gap:8px;display:flex}.actions button{border:1px solid var(--line);background:var(--bg);border-radius:13px;min-height:50px;font-weight:500}.actions .danger{color:#b3261e}:root[data-theme=dark] .actions .danger{color:#ff8a80}.actions .plain{color:var(--muted);background:0 0;border:0}.pick-list{flex-direction:column;gap:6px;display:flex}.pick{text-align:left;border:1px solid var(--line);background:var(--bg);border-radius:13px;flex-direction:column;align-items:flex-start;gap:2px;min-height:52px;padding:10px 14px;display:flex}.pick .title{font:600 16px/1.3 var(--serif)}.pick .muted{font-size:13px}.pick.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.type-controls{flex-direction:column;gap:6px;display:flex}.row{justify-content:space-between;align-items:center;gap:12px;min-height:52px;display:flex}.row-label{font-size:15px}.segmented{background:var(--line);border-radius:12px;align-items:center;gap:2px;padding:3px;display:inline-flex}.segmented button{min-width:48px;min-height:40px;font-family:var(--serif);background:0 0;border:0;border-radius:9px;place-items:center;padding:0 10px;display:grid}.segmented button.on{background:var(--surface);box-shadow:0 1px 2px #0000001f}.segmented .value{text-align:center;font-variant-numeric:tabular-nums;min-width:34px;font-size:15px}.swatches{gap:8px;display:flex}.swatch{border:1px solid var(--line);border-radius:12px;min-width:66px;min-height:44px;padding:0 8px;font-size:13px;font-weight:600}.swatch-sepia{color:#3a2a18;background:#ecdcb4}.swatch-light{color:#1f1d1a;background:#fff}.swatch-dark{color:#e4d9c4;background:#1b1a18}.swatch.on{outline:2.5px solid var(--accent);outline-offset:1px}.preview-text{font:var(--reader-size) / var(--reader-lh) var(--serif);margin:8px 0 0}.reader{min-height:100vh}.reading-progress{z-index:21;background:var(--accent);transform-origin:0;height:2px;transition:transform .2s linear;position:fixed;top:0;left:0;right:0}.reader-head{z-index:20;height:calc(var(--head) + var(--safe-top));padding:var(--safe-top) 6px 0;background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line);align-items:center;gap:2px;transition:transform .25s;display:flex;position:fixed;top:0;left:0;right:0}.reader-head.hidden{transform:translateY(-100%)}.reader-title{text-align:center;flex:1;min-width:0;line-height:1.2}.reader-title .title{font:600 15px/1.25 var(--serif);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.reader-title .muted{white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.type-btn{font:600 17px var(--serif)}.page{max-width:36em;padding:calc(var(--head) + var(--safe-top) + 20px) 22px calc(var(--safe-bottom) + 48px);font-family:var(--serif);font-size:var(--reader-size);line-height:var(--reader-lh);-webkit-hyphens:manual;hyphens:manual;overflow-wrap:break-word;margin:0 auto}.page p{margin:0 0 .8em}.page .chapter-title{font:600 1.3em/1.3 var(--serif);text-align:center;-webkit-hyphens:manual;hyphens:manual;margin:1.2em 0}.page .chapter-title:first-child{margin-top:.4em}.page .subhead{font:700 .78em/1.4 var(--ui);letter-spacing:.06em;color:var(--muted);margin:1.6em 0 .8em}.page .scene{text-align:center;color:var(--muted);margin:1em 0}.page .earlier{width:100%;font-family:var(--ui);margin-bottom:1.5em}.page .finish{border-top:1px solid var(--line);text-align:center;font-family:var(--ui);flex-direction:column;gap:12px;margin:2.5em 0 1em;padding-top:1.8em;font-size:16px;display:flex}.page .finish p{color:var(--muted);margin:0}.page .the-end{text-align:center;color:var(--muted);margin:2em 0;font-style:italic}.sentinel{height:1px}.page{touch-action:manipulation;-webkit-touch-callout:default}.page .lw{-webkit-text-decoration:underline dotted color-mix(in srgb, var(--accent) 75%, transparent);text-decoration:underline dotted color-mix(in srgb, var(--accent) 75%, transparent);text-underline-offset:.22em;text-decoration-thickness:2px}::highlight(active-word){background-color:color-mix(in srgb, var(--accent) 22%, transparent)}.popover{z-index:25;background:var(--surface);width:min(420px,100vw - 24px);max-height:40vh;color:var(--text);border:1px solid var(--line);font:15px/1.45 var(--ui);border-radius:16px;flex-direction:column;animation:.12s ease-out pop;display:flex;position:fixed;box-shadow:0 10px 30px #0000002e,0 2px 6px #00000014}@keyframes pop{0%{opacity:0;transform:translateY(4px)scale(.98)}}.pop-head{align-items:center;gap:4px;padding:10px 6px 0 14px;display:flex}.pop-word{flex-wrap:wrap;flex:1;align-items:baseline;gap:4px 8px;min-width:0;display:flex}.pop-word .w{font:600 21px/1.2 var(--serif)}.pop-word .base{color:var(--muted);font-size:15px}.pop-meta{color:var(--muted);gap:8px;padding:0 14px;font-size:13px;display:flex}.pop-meta .pos{font-style:italic}.pop-body{min-height:0;padding:6px 14px 4px;overflow-y:auto}.pop-body p{margin:4px 0}.senses{margin:4px 0;padding-left:1.3em}.senses li{margin:2px 0}.senses.single{padding-left:0;list-style:none}.example{font-family:var(--serif);color:var(--muted);font-style:italic}.ru{flex-wrap:wrap;align-items:center;gap:10px;margin:8px 0 4px;display:flex}.chip{border:1.5px solid var(--line);letter-spacing:.04em;min-width:48px;min-height:34px;color:var(--muted);background:0 0;border-radius:999px;padding:0 12px;font-size:13px;font-weight:700}.chip.on{border-color:var(--accent);color:var(--accent)}.ru-text{font-size:15px}.ru-text a{color:var(--accent);text-decoration:underline}.pop-actions{border-top:1px solid var(--line);gap:8px;padding:8px 10px 10px;display:flex}.pop-actions button{flex:1;min-height:46px}.pop-actions .on{opacity:.85}.skeleton{flex-direction:column;gap:8px;padding:6px 0;display:flex}.skeleton i{background:var(--line);border-radius:6px;height:12px;animation:1s ease-in-out infinite alternate pulse;display:block}.skeleton i+i{width:70%}@keyframes pulse{to{opacity:.45}}.link{color:var(--accent);font:inherit;background:0 0;border:0;min-height:0;padding:0;text-decoration:underline}.row-card{flex-direction:row;align-items:center;gap:10px;padding:14px 16px}.ok-dot{background:var(--accent);width:30px;height:30px;color:var(--on-accent);border-radius:50%;flex:none;place-items:center;display:grid}.summary{grid-template-columns:repeat(3,1fr);gap:8px;width:100%;margin-top:6px;display:grid}.summary div{flex-direction:column;align-items:center;gap:2px;display:flex}.summary b{font:600 26px/1.1 var(--serif);font-variant-numeric:tabular-nums}.summary span{color:var(--muted);font-size:12px}.review{flex-direction:column;max-width:640px;min-height:100vh;margin:0 auto;display:flex}.review-head{padding:calc(var(--safe-top) + 6px) 6px 0;justify-content:space-between;align-items:center;display:flex}.review-count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:14px}.review-progress{background:var(--line);border-radius:2px;height:3px;margin:4px 16px 0;overflow:hidden}.review-progress div{background:var(--accent);height:100%;transition:width .25s}.flash{padding:28px 20px calc(var(--safe-bottom) + 170px);flex-direction:column;flex:1;gap:14px;display:flex}.cloze{font:400 calc(var(--reader-size) + 2px) / 1.55 var(--serif);margin:0}.blank{background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--accent);letter-spacing:.08em;border-radius:6px;padding:0 .25em;font-weight:600;display:inline-block}.blank.filled{letter-spacing:normal}.flash-src{font-style:italic}.answer-bar{z-index:5;padding:12px 12px calc(var(--safe-bottom) + 12px);background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);position:fixed;bottom:0;left:0;right:0}.answer-bar .wide{width:100%;max-width:616px;margin:0 auto;display:block}.grades{grid-template-columns:repeat(4,1fr);gap:8px;max-width:616px;margin:0 auto;display:grid}.grade{border:1.5px solid var(--line);background:var(--surface);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:64px;display:flex}.g-label{font-size:15px;font-weight:600}.g-when{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.grade-again .g-label{color:#b3261e}:root[data-theme=dark] .grade-again .g-label{color:#ff8a80}.grade-good{background:var(--accent);border-color:var(--accent)}.grade-good .g-label,.grade-good .g-when{color:var(--on-accent)}.review-done{margin:40px 16px}.word-details{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding-top:6px;display:flex}.sheet .word-details{border-top:0;margin-bottom:12px;padding-top:0}.wd-head{justify-content:space-between;align-items:center;display:flex}.wd-word{font:600 26px/1.2 var(--serif)}.word-details .pop-meta{padding:0}.wd-sentence{border-left:3px solid var(--line);font:italic 16px/1.5 var(--serif);margin:6px 0;padding:8px 12px}.wd-sentence cite{font:13px var(--ui);color:var(--muted);margin-top:4px;font-style:normal;display:block}mark{background:color-mix(in srgb, var(--accent) 22%, transparent);color:inherit;border-radius:3px;padding:0 2px}.search{border:1px solid var(--line);background:var(--surface);width:100%;min-height:46px;color:var(--text);font:16px var(--ui);border-radius:13px;margin-bottom:10px;padding:0 14px}.chips{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.chips .chip{letter-spacing:0;min-height:38px;font-weight:600}.word-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.word-row{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:14px;align-items:center;gap:10px;width:100%;min-height:60px;padding:10px 14px;display:flex}.wr-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.wr-word{font:600 18px/1.25 var(--serif)}.wr-def{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.wr-side{flex-direction:column;flex:none;align-items:flex-end;gap:4px;display:flex}.badge.good{background:var(--accent);color:var(--on-accent)}.edit{flex-direction:column;gap:10px;display:flex}.edit textarea{border:1px solid var(--line);background:var(--bg);width:100%;color:var(--text);font:16px/1.45 var(--ui);resize:vertical;border-radius:12px;padding:10px 12px}.tiles{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px;display:grid}.tile{background:var(--surface);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:2px;padding:12px 10px;display:flex}.tile b{font:600 24px/1.1 var(--serif);font-variant-numeric:tabular-nums}.tile span{color:var(--muted);font-size:12px}.chart-title{font:600 16px/1.3 var(--ui)}.bars{margin:0}.bars-readout{color:var(--muted);margin:2px 0 6px;font-size:14px}.bars-readout b{color:var(--text);font-variant-numeric:tabular-nums}.bars svg{width:100%;height:auto;display:block;overflow:visible}.bars .bar{fill:color-mix(in srgb, var(--accent) 55%, var(--surface))}.bars .bar.on{fill:var(--accent)}.bars .grid{stroke:var(--line);stroke-width:1px;stroke-dasharray:2 3}.bars .baseline{stroke:var(--line);stroke-width:1px}.bars .axis{fill:var(--muted);font:10px var(--ui)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.tabbar a{font-size:10.5px}.no-margin{margin:0}.warn-text{color:var(--warn-text);background:var(--warn-bg);border-radius:10px;padding:8px 10px}.banner{border-color:var(--warn-bg)}.banner p{margin:0;font-size:15px}.banner-actions{align-items:center;gap:8px;display:flex}.plain-btn{min-height:44px;color:var(--muted);background:0 0;border:0;padding:0 14px;font-weight:600}.home-btn{min-height:44px;color:var(--accent);font:600 15px var(--ui);background:0 0;border:0;border-radius:12px;flex:none;align-items:center;gap:0;padding:0 8px 0 2px;display:flex}.reader-title{margin-right:4px}
