.article-layout .article-body:not(.collection-overview){font-size:calc(21px * var(--reader-scale,1))}
.reading-controls{position:fixed;left:max(22px,env(safe-area-inset-left));bottom:calc(22px + env(safe-area-inset-bottom));z-index:70;display:flex;align-items:center;gap:4px;width:190px;height:44px;padding:3px 5px;border:1px solid var(--rule);border-radius:24px;background:var(--paper);color:var(--muted);box-shadow:0 2px 10px #0000000a}
.reading-controls[hidden]{display:none}
.reading-controls button{display:flex;align-items:center;justify-content:center;flex:none;width:32px;height:36px;padding:0;border:0;border-radius:18px;background:none;color:var(--ink);font-family:var(--body)}
.reading-controls button:hover:not(:disabled){background:var(--theme-chip);color:var(--accent)}
.reading-controls button:disabled{opacity:.35;cursor:default}
.reading-controls .reading-smaller{font-size:14px}
.reading-controls .reading-larger{font-size:23px}
.reading-controls input{appearance:none;-webkit-appearance:none;flex:1;min-width:0;width:100px;height:36px;margin:0;background:transparent;border:0;cursor:pointer;touch-action:pan-y}
.reading-controls input::-webkit-slider-runnable-track{height:3px;border-radius:2px;background:var(--rule)}
.reading-controls input::-moz-range-track{height:3px;border-radius:2px;background:var(--rule)}
.reading-controls input::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:14px;height:14px;margin-top:-5.5px;background:var(--accent);border:0;border-radius:50%}
.reading-controls input::-moz-range-thumb{width:14px;height:14px;background:var(--accent);border:0;border-radius:50%}
.reading-controls button:focus-visible{outline-offset:0}
.theme-toggle{transition:transform .18s ease}
:root[data-reader-active=true] .theme-toggle{transform:translateY(-54px)}
@media(max-width:850px){.article-layout .article-body:not(.collection-overview){font-size:calc(20px * var(--reader-scale,1))}}
@media(max-width:560px){.article-layout .article-body:not(.collection-overview){font-size:calc(19px * var(--reader-scale,1))}}
@media(max-width:600px){.reading-controls{left:max(14px,env(safe-area-inset-left));bottom:calc(14px + env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){.theme-toggle{transition:none}}

/* Mobile: a quiet edge handle keeps preferences reachable while reading. */
.reader-preferences{display:contents}
.reading-settings-toggle{display:none}
@media(max-width:850px){
 .reading-settings-toggle{position:fixed;right:0;bottom:calc(80px + env(safe-area-inset-bottom));z-index:76;display:flex;align-items:center;justify-content:center;width:32px;height:48px;padding:0;border:1px solid var(--rule);border-right:0;border-radius:12px 0 0 12px;background:var(--paper);color:var(--muted);-webkit-tap-highlight-color:transparent}
 .reading-settings-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s ease}
 .reading-settings-toggle[aria-expanded=true]{color:var(--accent)}
 .reading-settings-toggle[aria-expanded=true] svg{transform:rotate(180deg)}
 .reader-preferences{display:flex;position:fixed;right:40px;bottom:calc(80px + env(safe-area-inset-bottom));z-index:75;width:216px;padding:12px;flex-direction:column;align-items:flex-start;gap:10px;background:var(--paper);border:1px solid var(--rule);border-radius:12px;box-shadow:0 6px 20px #00000012;transform:translateX(calc(100% + 44px));visibility:hidden;pointer-events:none;transition:transform .22s ease,visibility .22s}
 :root[data-reading-settings=open] .reader-preferences{transform:translateX(0);visibility:visible;pointer-events:auto}
 .reader-preferences .theme-toggle,.reader-preferences .reading-controls{position:relative;left:auto;bottom:auto;transform:none;box-shadow:none}
 :root[data-reader-active=true] .reader-preferences .theme-toggle{transform:none}
 .reader-preferences .reading-controls{width:190px}
 .reading-settings-toggle:focus-visible{outline-offset:-4px}
}
@media(prefers-reduced-motion:reduce){.reader-preferences,.reading-settings-toggle svg{transition:none}}
