:root{--ink-bg: #ffffff;--ink-fg: #111111;--ink-fg-soft: #444444;--ink-line: #cccccc;--ink-line-strong: #111111;--ink-surface: #f4f4f4;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, monospace;--step--1: clamp(.938rem, .881rem + .283vw, 1.1rem);--step-0: clamp(1.125rem, 1.038rem + .435vw, 1.375rem);--step-1: clamp(1.35rem, 1.222rem + .641vw, 1.719rem);--step-2: clamp(1.619rem, 1.434rem + .924vw, 2.15rem);--step-3: clamp(1.944rem, 1.685rem + 1.293vw, 2.688rem);--step-4: clamp(2.331rem, 1.975rem + 1.783vw, 3.356rem);--step-5: clamp(2.8rem, 2.315rem + 2.424vw, 4.194rem);--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.7;--weight-normal: 400;--weight-medium: 500;--weight-bold: 700;--space-3xs: clamp(.281rem, .26rem + .109vw, .344rem);--space-2xs: clamp(.563rem, .519rem + .217vw, .688rem);--space-xs: clamp(.844rem, .779rem + .326vw, 1.031rem);--space-s: clamp(1.125rem, 1.038rem + .435vw, 1.375rem);--space-m: clamp(1.688rem, 1.557rem + .652vw, 2.063rem);--space-l: clamp(2.25rem, 2.076rem + .87vw, 2.75rem);--space-xl: clamp(3.375rem, 3.114rem + 1.304vw, 4.125rem);--space-2xl: clamp(4.5rem, 4.152rem + 1.739vw, 5.5rem);--space-3xl: clamp(6.75rem, 6.228rem + 2.609vw, 8.25rem);--measure: 65ch;--measure-narrow: 45ch;--border-thin: 1px;--border-medium: 2px;--border-thick: 3px;--radius-sm: 2px;--radius-md: 4px;--tap-min: 44px;--tap-comfortable: 48px;--focus-width: 3px;--focus-offset: 2px;--eink-transition: 0ms}[data-reading-mode=sepia]{--ink-bg: #f5f1e8;--ink-fg: #3a3a3a;--ink-fg-soft: #666666;--ink-line: #d4cfc4;--ink-line-strong: #3a3a3a;--ink-surface: #ebe5d9}[data-reading-mode=dark]{--ink-bg: #0d0d0d;--ink-fg: #f0f0f0;--ink-fg-soft: #888888;--ink-line: #2a2a2a;--ink-line-strong: #f0f0f0;--ink-surface: #1a1a1a}[data-reading-mode=eink]{--ink-bg: #d4cfc7;--ink-fg: #252422;--ink-fg-soft: #4a463f;--ink-line: #8a857c;--ink-line-strong: #252422;--ink-surface: #c8c2b8}.book-card{border:var(--border-thin) solid var(--ink-line-strong);background:var(--ink-bg)}.book-card__head{display:flex;align-items:flex-start;gap:var(--space-2xs);padding:var(--space-xs)}@media(min-width:30rem){.book-card__head{gap:var(--space-s);padding:var(--space-s)}}.book-card__toggle{display:flex;align-items:flex-start;gap:var(--space-xs);flex:1;min-width:0;padding:0;background:none;border:none;cursor:pointer;text-align:left;color:inherit}.book-card__icon{flex-shrink:0;color:var(--ink-fg)}.book-card__info{display:flex;flex-direction:column;gap:var(--space-3xs);min-width:0}.book-card__title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:calc(2em * var(--leading-tight));font-size:var(--step-0);font-weight:var(--weight-bold);line-height:var(--leading-tight);color:var(--ink-fg)}.book-card__meta{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--step--1);font-weight:var(--weight-normal);color:var(--ink-fg)}.book-card__desc{margin:0;padding:0 var(--space-s) var(--space-s);font-size:var(--step--1);line-height:var(--leading-normal);color:var(--ink-fg)}.book-card__actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2xs);padding:0 var(--space-xs) var(--space-xs)}@media(min-width:30rem){.book-card__actions{padding:0 var(--space-s) var(--space-s)}}.book-card__bookmark,.book-card__chevron{display:flex;align-items:center;justify-content:center;min-width:var(--tap-min);min-height:var(--tap-min);background:none;border:none;cursor:pointer;color:var(--ink-fg)}.book-card__badge{display:flex;align-items:center;justify-content:center;min-width:var(--tap-min);min-height:var(--tap-min);padding:0 var(--space-3xs);font-size:var(--step--1);font-weight:var(--weight-bold);line-height:1;border:var(--border-thin) solid currentColor;background:none}.book-card__badge--ok{color:var(--ink-fg);border-style:solid}.book-card__offline-ready{display:flex;align-items:center;gap:var(--space-3xs)}.book-card__offload{min-height:var(--tap-min);padding:0 var(--space-3xs);background:none;border:var(--border-thin) solid var(--ink-line-strong);color:var(--ink-fg);cursor:pointer;font-size:var(--step--1);font-weight:var(--weight-medium)}.book-card__badge--partial{color:var(--ink-fg);border-style:dashed}.book-card__badge--loading{color:var(--ink-fg);border-style:dashed;border-color:var(--ink-line-strong)}.book-card__badge--error{cursor:pointer;color:var(--ink-bg);background:var(--ink-fg);border-color:var(--ink-fg)}.book-card__badge--none{cursor:pointer;color:var(--ink-fg);border-style:dotted;border-color:var(--ink-line-strong)}.book-card__badge:disabled{cursor:default}.chapter-list{display:flex;flex-direction:column;border-top:var(--border-medium) solid var(--ink-line-strong)}.chapter-list__item{display:flex;align-items:center;gap:var(--space-2xs);min-height:var(--tap-comfortable);padding:var(--space-2xs) var(--space-s);background:none;border:none;border-bottom:var(--border-thin) solid var(--ink-line);cursor:pointer;text-align:left;color:var(--ink-fg)}.chapter-list__item:last-child{border-bottom:none}.chapter-list__item.is-active{background:var(--ink-fg);color:var(--ink-bg)}.chapter-list__num{display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;flex-shrink:0;font-size:var(--step--1);font-weight:var(--weight-bold);background:var(--ink-surface);color:var(--ink-fg);border:var(--border-thin) solid var(--ink-line-strong)}.chapter-list__item.is-active .chapter-list__num{background:var(--ink-bg);color:var(--ink-fg)}.chapter-list__title{font-size:var(--step-0)}.library{width:100%;max-width:1440px;margin:0 auto;padding:var(--space-s);padding-bottom:calc(var(--tap-min) + var(--space-xl) + env(safe-area-inset-bottom));scroll-padding-bottom:calc(var(--tap-min) + var(--space-xl) + env(safe-area-inset-bottom))}.library__header{text-align:center;padding:var(--space-m) 0}.library__title{display:flex;align-items:center;justify-content:center;gap:var(--space-2xs);margin:0 0 var(--space-3xs);font-size:var(--step-3);font-weight:var(--weight-bold);color:var(--ink-fg)}.library__subtitle{margin:0;font-size:var(--step--1);color:var(--ink-fg-soft)}.library__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,24rem),1fr));gap:var(--space-s);align-content:start}.offline-panel{margin:0 0 var(--space-s);border:var(--border-thin) solid var(--ink-line-strong);background:var(--ink-bg)}.offline-panel__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-s);padding:var(--space-s);border-bottom:var(--border-thin) solid var(--ink-line)}.offline-panel__title{display:flex;align-items:center;gap:var(--space-2xs);margin:0 0 var(--space-3xs);font-size:var(--step-1);line-height:var(--leading-tight)}.offline-panel__summary{margin:0;color:var(--ink-fg-soft);font-size:var(--step--1)}.offline-panel__net{display:inline-flex;align-items:center;gap:var(--space-3xs);min-height:var(--tap-min);padding:0 var(--space-2xs);border:var(--border-thin) solid var(--ink-line-strong);font-size:var(--step--1);font-weight:var(--weight-medium);white-space:nowrap}.offline-panel__net.is-offline{background:var(--ink-fg);color:var(--ink-bg)}.offline-panel__list{display:grid}.offline-panel__row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-s);padding:var(--space-xs) var(--space-s);border-bottom:var(--border-thin) solid var(--ink-line)}.offline-panel__row:last-child{border-bottom:none}.offline-panel__book{min-width:0}.offline-panel__book-title{display:block;overflow-wrap:anywhere;font-size:var(--step--1);font-weight:var(--weight-bold);line-height:var(--leading-tight)}.offline-panel__book-meta{display:block;margin-top:var(--space-3xs);color:var(--ink-fg-soft);font-size:var(--step--1);line-height:var(--leading-tight)}.offline-panel__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-3xs)}.offline-panel__button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3xs);min-height:var(--tap-min);padding:0 var(--space-2xs);background:var(--ink-bg);border:var(--border-thin) solid var(--ink-line-strong);color:var(--ink-fg);cursor:pointer;font-size:var(--step--1);font-weight:var(--weight-medium)}.offline-panel__button:disabled{cursor:default;color:var(--ink-fg-soft);border-color:var(--ink-line)}@media(max-width:44rem){.offline-panel__head,.offline-panel__row{align-items:flex-start;grid-template-columns:1fr}.offline-panel__head{flex-direction:column}.offline-panel__actions{justify-content:flex-start}}.audiobook-player{position:sticky;top:0;z-index:100;background:var(--ink-bg);border:var(--border-medium) solid var(--ink-line-strong);border-radius:var(--radius-md);padding:var(--space-s);margin-bottom:var(--space-m)}.player-error{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2xs);padding:var(--space-2xs);margin-bottom:var(--space-s);background:var(--ink-surface);border:var(--border-medium) solid var(--ink-line-strong);border-radius:var(--radius-md);color:var(--ink-fg);font-size:var(--step--1);font-weight:var(--weight-bold)}.player-error button{min-width:var(--tap-min);min-height:var(--tap-min);background:none;border:none;color:var(--ink-fg);cursor:pointer;font-size:var(--step-0)}.player-controls{display:grid;grid-template-columns:auto auto auto 1fr auto;grid-template-areas:"prev play next time speed" "seek seek seek seek seek";gap:var(--space-2xs);align-items:center;margin-bottom:var(--space-s)}.player-controls>button:nth-of-type(1){grid-area:prev}.player-controls>.play-button{grid-area:play}.player-controls>button:nth-of-type(3){grid-area:next}.player-controls>.progress-bar{grid-area:seek}.player-controls>.time-display{grid-area:time;min-width:0}.player-controls>.speed-control{grid-area:speed}.player-controls>button:nth-of-type(1),.player-controls>button:nth-of-type(3){min-width:var(--tap-min);padding:0}.player-controls button{min-height:var(--tap-min);background:var(--ink-bg);border:var(--border-medium) solid var(--ink-line-strong);border-radius:var(--radius-md);color:var(--ink-fg);cursor:pointer;padding:var(--space-3xs) var(--space-2xs);display:flex;align-items:center;justify-content:center}.player-controls button:disabled{color:var(--ink-fg-soft);border-color:var(--ink-line);cursor:not-allowed}.play-button{width:var(--tap-comfortable);height:var(--tap-comfortable);border-radius:50%!important;background:var(--ink-fg)!important;color:var(--ink-bg)!important}@media(max-width:47.99rem){.play-button{width:4rem!important;height:4rem!important;margin:0 auto}}.progress-bar{width:auto;min-width:0;justify-self:stretch;height:var(--space-2xs);-webkit-appearance:none;appearance:none;background:var(--ink-bg);border:var(--border-medium) solid var(--ink-line-strong);outline:none}.progress-bar::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:var(--space-s);height:var(--space-s);background:var(--ink-fg);border:var(--border-medium) solid var(--ink-bg);border-radius:50%;cursor:pointer}.progress-bar::-moz-range-thumb{width:var(--space-s);height:var(--space-s);background:var(--ink-fg);border:var(--border-medium) solid var(--ink-bg);border-radius:50%;cursor:pointer}.time-display{font-size:var(--step--1);color:var(--ink-fg);font-variant-numeric:tabular-nums;text-align:center}.speed-control{min-height:var(--tap-min);background:var(--ink-bg);border:var(--border-medium) solid var(--ink-line-strong);border-radius:var(--radius-md);color:var(--ink-fg);padding:var(--space-3xs) var(--space-2xs);font-size:var(--step--1);cursor:pointer}.highlighted-text{font-family:var(--font-serif);line-height:var(--leading-relaxed);font-size:var(--step-0);color:var(--ink-fg);max-height:50vh;overflow-y:auto;padding:var(--space-s);background:var(--ink-bg);border:var(--border-thin) solid var(--ink-line);border-radius:var(--radius-md)}.highlighted-text span.active{background:var(--ink-fg);color:var(--ink-bg);font-weight:var(--weight-bold);padding:0 var(--space-3xs)}.audiobook-bar{border:var(--border-thin) solid var(--ink-line)}.audiobook-bar__head{display:flex;align-items:stretch;background:var(--ink-surface)}.audiobook-bar__toggle{display:flex;align-items:center;gap:var(--space-2xs);flex:1;min-width:0;min-height:var(--tap-comfortable);padding:var(--space-2xs) var(--space-s);background:var(--ink-surface);border:none;cursor:pointer;color:var(--ink-fg);font-size:var(--step--1);font-weight:var(--weight-medium);text-align:left}.audiobook-bar__label{flex:1;min-width:0}.audiobook-bar__cache{display:inline-flex;align-items:center;justify-content:flex-end;gap:var(--space-3xs);color:var(--ink-fg-soft);font-size:var(--step--1);font-weight:var(--weight-medium);white-space:nowrap}.audiobook-bar__cache.is-complete{color:#2e7d32}.audiobook-bar__clear{display:inline-flex;align-items:center;justify-content:center;min-width:var(--tap-min);min-height:var(--tap-comfortable);background:var(--ink-surface);border:none;border-left:var(--border-thin) solid var(--ink-line);color:var(--ink-fg);cursor:pointer}.audiobook-bar .audiobook-player{position:static;border:none;border-top:var(--border-thin) solid var(--ink-line);border-radius:0;margin-bottom:0}[data-reading-mode=dark] .audiobook-bar__cache.is-complete{color:#81c784}@media(max-width:36rem){.audiobook-bar__toggle{padding-inline:var(--space-2xs)}.audiobook-bar__cache{max-width:45%;overflow:hidden;text-overflow:ellipsis}}.reading-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-2xs);padding:var(--space-2xs) var(--space-s);background:var(--ink-surface);border-bottom:var(--border-thin) solid var(--ink-line)}.reading-controls__modes{display:flex;flex-wrap:wrap;gap:var(--space-3xs)}.reading-controls__mode{display:flex;align-items:center;justify-content:center;gap:var(--space-3xs);min-height:var(--tap-min);padding:var(--space-3xs) var(--space-2xs);background:var(--ink-bg);border:var(--border-thin) solid var(--ink-line-strong);color:var(--ink-fg);cursor:pointer;font-size:var(--step--1);font-weight:var(--weight-medium);white-space:nowrap}.reading-controls__mode.is-active{background:var(--ink-fg);color:var(--ink-bg);border-color:var(--ink-fg)}.reading-controls__font{display:flex;align-items:center;gap:var(--space-3xs);border:var(--border-thin) solid var(--ink-line-strong);background:var(--ink-bg);padding:0 var(--space-2xs)}.reading-controls__fontbtn{min-width:var(--tap-min);min-height:var(--tap-min);background:none;border:none;color:var(--ink-fg);cursor:pointer;font-size:var(--step-0);font-weight:var(--weight-bold);line-height:1}.reading-controls__fontval{min-width:3rem;text-align:center;font-size:var(--step--1);color:var(--ink-fg-soft)}.annotation-panel{background:var(--ink-surface);border:var(--border-thin) solid var(--ink-line-strong);padding:var(--space-s)}.annotation-title{font-size:var(--step-0);font-weight:var(--weight-bold);color:var(--ink-fg);margin:0 0 var(--space-s) 0}.annotation-input{display:flex;flex-direction:column;gap:var(--space-2xs);margin-bottom:var(--space-s);padding-bottom:var(--space-s);border-bottom:var(--border-thin) solid var(--ink-line)}.annotation-text-input,.annotation-note-input,.annotation-edit-input{background:var(--ink-bg);border:var(--border-thin) solid var(--ink-line);color:var(--ink-fg);padding:var(--space-2xs);font-family:inherit;font-size:var(--step--1);line-height:var(--leading-normal)}.annotation-text-input::placeholder,.annotation-note-input::placeholder{color:var(--ink-fg-soft)}.annotation-btn{min-height:var(--tap-min);background:var(--ink-fg);color:var(--ink-bg);border:none;padding:var(--space-2xs);font-size:var(--step--1);font-weight:var(--weight-medium);cursor:pointer;display:flex;align-items:center;gap:var(--space-3xs);justify-content:center}.annotation-btn:disabled{background:var(--ink-line);color:var(--ink-fg-soft);cursor:not-allowed}.annotations-list{display:flex;flex-direction:column;gap:var(--space-xs)}.no-annotations{font-size:var(--step--1);color:var(--ink-fg-soft);margin:0;font-style:italic}.annotation-item{background:var(--ink-bg);border:var(--border-thin) solid var(--ink-line);padding:var(--space-2xs);display:flex;flex-direction:column;gap:var(--space-2xs)}.annotation-highlight{font-size:var(--step--1);color:var(--ink-fg-soft);margin:0;font-style:italic;border-left:var(--border-medium) solid var(--ink-line-strong);padding-left:var(--space-2xs)}.annotation-note{font-size:var(--step--1);color:var(--ink-fg);margin:0;line-height:var(--leading-normal)}.annotation-actions{display:flex;gap:var(--space-2xs)}.edit-annotation,.delete-annotation{display:flex;align-items:center;justify-content:center;min-height:var(--tap-min);min-width:var(--tap-min);background:none;border:var(--border-thin) solid var(--ink-line-strong);color:var(--ink-fg);cursor:pointer;padding:var(--space-3xs) var(--space-2xs);font-size:var(--step--1)}.annotation-edit{display:flex;flex-direction:column;gap:var(--space-2xs)}.annotation-edit-buttons{display:flex;gap:var(--space-2xs)}.save-btn,.cancel-btn{flex:1;min-height:var(--tap-min);background:var(--ink-fg);color:var(--ink-bg);border:none;padding:var(--space-3xs);font-size:var(--step--1);font-weight:var(--weight-medium);cursor:pointer}.cancel-btn{background:var(--ink-surface);color:var(--ink-fg);border:var(--border-thin) solid var(--ink-line-strong)}.page-reader{display:flex;flex-direction:column;height:100%;background:var(--ink-bg);border:var(--border-thin) solid var(--ink-line-strong)}.page-content{flex:1;padding:var(--space-m);overflow:hidden;min-height:0}.page-nav{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2xs);border-top:var(--border-thin) solid var(--ink-line-strong);padding:var(--space-2xs) var(--space-s);background:var(--ink-surface);flex-shrink:0}.page-nav-btn{display:flex;align-items:center;justify-content:center;background:var(--ink-bg);border:var(--border-thin) solid var(--ink-line-strong);color:var(--ink-fg);cursor:pointer;padding:var(--space-2xs) var(--space-s);min-width:var(--tap-comfortable);min-height:var(--tap-min)}.page-nav-btn:disabled{color:var(--ink-fg-soft);border-color:var(--ink-line);cursor:not-allowed}.page-counter{font-size:var(--step--1);color:var(--ink-fg-soft);font-family:var(--font-mono);letter-spacing:.5px}.reader{width:100%;max-width:1440px;margin:0 auto}.reader__bar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:var(--space-2xs);padding:var(--space-3xs) var(--space-2xs);background:var(--ink-bg);border-bottom:var(--border-medium) solid var(--ink-line-strong)}.reader__iconbtn{display:flex;align-items:center;justify-content:center;min-width:var(--tap-min);min-height:var(--tap-min);flex-shrink:0;background:none;border:none;cursor:pointer;color:var(--ink-fg)}.reader__iconbtn.is-on{background:var(--ink-fg);color:var(--ink-bg)}.reader__heading{flex:1;min-width:0;display:flex;flex-direction:column;line-height:var(--leading-tight)}.reader__crumb{font-size:var(--step--1);color:var(--ink-fg-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reader__title{font-size:var(--step-0);font-weight:var(--weight-bold);color:var(--ink-fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reader__progress{position:absolute;left:0;bottom:calc(var(--border-medium) * -1);height:var(--border-medium);background:var(--ink-fg)}.reader__body{display:grid;grid-template-columns:1fr;gap:var(--space-m);padding:var(--space-s)}.reader__main{min-width:0;display:flex;flex-direction:column;gap:var(--space-s);padding-bottom:calc(var(--tap-min) * 2 + var(--space-l) + env(safe-area-inset-bottom));scroll-padding-bottom:calc(var(--tap-min) * 2 + var(--space-l) + env(safe-area-inset-bottom))}.reader__loading{display:flex;align-items:center;justify-content:center;min-height:40vh;color:var(--ink-fg-soft);font-size:var(--step-0)}.reader__text{font-family:var(--font-serif);font-size:var(--ink-font-size, var(--step-0));line-height:var(--leading-relaxed);color:var(--ink-fg);max-width:var(--measure);margin-inline:auto}.reader__text h1{font-size:var(--step-3);margin:0 0 var(--space-s);padding-bottom:var(--space-3xs);border-bottom:var(--border-medium) solid var(--ink-line-strong)}.reader__text h2{font-size:var(--step-2);margin:var(--space-m) 0 var(--space-2xs)}.reader__text h3{font-size:var(--step-1);margin:var(--space-s) 0 var(--space-2xs)}.reader__text p{margin:0 0 var(--space-s)}.reader__text blockquote{margin:var(--space-s) 0;padding:var(--space-2xs) var(--space-s);border-left:var(--border-thick) solid var(--ink-line-strong);background:var(--ink-surface)}.reader__text blockquote p{margin:0}.reader__text code{font-family:var(--font-mono);font-size:.9em;background:var(--ink-surface);border:var(--border-thin) solid var(--ink-line);padding:.1em .3em}.reader__text pre{background:var(--ink-surface);border:var(--border-thin) solid var(--ink-line-strong);padding:var(--space-s);overflow-x:auto}.reader__text pre code{background:none;border:none;padding:0}.reader__text ul,.reader__text ol{margin:0 0 var(--space-s);padding-left:var(--space-m)}.reader__text li{margin-bottom:var(--space-3xs)}.reader__text hr{border:none;border-top:var(--border-medium) solid var(--ink-line-strong);margin:var(--space-l) 0}.reader__text a{color:var(--ink-fg);text-decoration:underline}.reader__text img{max-width:100%}.reader__paged{height:calc(100vh - 7rem);min-height:24rem}.reader__chapnav{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2xs);padding-top:var(--space-s);border-top:var(--border-thin) solid var(--ink-line)}.reader__navbtn{display:flex;align-items:center;gap:var(--space-3xs);min-height:var(--tap-comfortable);padding:var(--space-2xs) var(--space-s);background:var(--ink-bg);border:var(--border-medium) solid var(--ink-line-strong);color:var(--ink-fg);cursor:pointer;font-size:var(--step--1);font-weight:var(--weight-medium)}.reader__navbtn:disabled{color:var(--ink-fg-soft);border-color:var(--ink-line);cursor:not-allowed}.reader__navlabel{font-size:var(--step--1);color:var(--ink-fg-soft);font-family:var(--font-mono)}.reader__notes{display:none}.reader__body--notes .reader__notes{display:block}@media(min-width:75rem){.reader__body{grid-template-columns:1fr minmax(18rem,22rem)}.reader__notes{display:block;position:sticky;top:5rem;align-self:start}}*,*:before,*:after{box-sizing:border-box;transition:none}.app{min-height:100vh;display:flex;flex-direction:column;color-scheme:light;background:var(--ink-bg);color:var(--ink-fg);font-family:var(--font-sans)}.app[data-reading-mode=dark]{color-scheme:dark}.app__status-stack{position:fixed;left:var(--space-s);bottom:var(--space-s);z-index:50;display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3xs)}.app__status-pill{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3xs);min-height:var(--tap-min);padding:var(--space-3xs) var(--space-2xs);background:var(--ink-bg);border:var(--border-medium) solid var(--ink-line-strong);color:var(--ink-fg);font-size:var(--step--1);font-weight:var(--weight-medium);white-space:nowrap}.app__status-pill:is(button){cursor:pointer}.app__book-status-row{display:flex;align-items:stretch;gap:var(--space-3xs)}.app__network-status.is-offline,.app__book-status.is-missing{background:var(--ink-fg);color:var(--ink-bg);border-color:var(--ink-fg)}.app__book-status.is-loading{background:var(--ink-bg);color:var(--ink-fg)}.app__book-status.is-error{background:var(--ink-bg);color:#b91c1c}.app__book-status.is-downloaded{background:var(--ink-bg);color:var(--ink-fg)}[data-reading-mode=dark] .app__book-status.is-error{color:#ff8a80}.app__offload-link{min-height:var(--tap-min);padding:var(--space-3xs) var(--space-2xs);background:var(--ink-bg);border:var(--border-medium) solid var(--ink-line-strong);color:var(--ink-fg);cursor:pointer;font-size:var(--step--1);font-weight:var(--weight-medium)}.app__theme-toggle{position:fixed;right:var(--space-s);bottom:var(--space-s);z-index:50;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3xs);min-height:var(--tap-min);padding:var(--space-3xs) var(--space-2xs);background:var(--ink-bg);border:var(--border-medium) solid var(--ink-line-strong);color:var(--ink-fg);cursor:pointer;font-size:var(--step--1);font-weight:var(--weight-medium);white-space:nowrap}.app__theme-toggle.is-active{background:var(--ink-fg);color:var(--ink-bg);border-color:var(--ink-fg)}.app>:first-child{flex:1}.app__footer{border-top:var(--border-thin) solid var(--ink-line);padding:var(--space-2xs);text-align:center;font-size:var(--step--1);color:var(--ink-fg-soft);background:var(--ink-surface)}.app__version{font-family:var(--font-mono);letter-spacing:.5px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important}}
