.theme-toggle{--toggle-size:2rem;width:var(--toggle-size);height:var(--toggle-size);min-width:var(--toggle-size);border-radius:var(--radius-sm);color:var(--ink-soft);cursor:pointer;transition-property:color,background-color;transition-duration:var(--duration-theme,.28s);transition-timing-function:var(--ease-theme,cubic-bezier(.2, 0, 0, 1));background:0 0;border:0;place-items:center;padding:0;display:inline-grid}.theme-toggle:hover,.theme-toggle:focus-visible{color:var(--ink);background-color:color-mix(in srgb, var(--ink) 7%, transparent);outline:none}.theme-toggle:active{color:var(--ink)}.theme-toggle__icons{place-items:center;width:18px;height:18px;display:grid;position:relative}.theme-toggle__icon{opacity:0;transition-property:opacity;transition-duration:var(--duration-theme,.28s);transition-timing-function:var(--ease-theme,cubic-bezier(.2, 0, 0, 1));grid-area:1/1;display:block}.theme-toggle[data-theme=dark] .theme-toggle__icon--sun,.theme-toggle[data-theme=light] .theme-toggle__icon--moon{opacity:1}@media (prefers-reduced-motion:reduce){.theme-toggle,.theme-toggle__icon{transition:none}}.ui-style-select{border-radius:var(--radius-sm);background:0 0;border:0;align-items:stretch;gap:.1rem;display:inline-flex;overflow:hidden}.ui-style-select__option{border-radius:var(--radius-sm);color:var(--ink-soft);font:inherit;letter-spacing:-.01em;cursor:pointer;transition:color var(--duration-ui) var(--ease-out), background-color var(--duration-ui) var(--ease-out);background:0 0;border:0;margin:0;padding:.32rem .5rem;font-size:.74rem;font-weight:550}.ui-style-select__option:hover{color:var(--ink)}.ui-style-select__option--active{color:var(--ink);background:color-mix(in srgb, var(--ink) 7%, transparent)}.ui-style-select__option:focus-visible{outline:2px solid var(--accent-strong);outline-offset:1px;z-index:1}.loading-panel{border:1px solid var(--line,#e8e4dc1f);border-radius:var(--radius-md,.7rem);background:linear-gradient(165deg, color-mix(in srgb, var(--ink,#fff) 5%, transparent), transparent 55%), color-mix(in srgb, var(--desk,#10141b) 86%, black);width:min(100%,22rem);color:var(--ink,#e8e4dc);box-shadow:var(--shadow-soft,0 18px 40px #00000047);padding:1.2rem 1.3rem}.loading-panel__title{font-family:var(--font-display,Georgia, serif);letter-spacing:-.02em;margin:0;font-size:1.12rem}.loading-panel__detail,.loading-panel__fraction,.loading-panel__percent{color:var(--ink-soft,#e8e4dcb8);margin:.35rem 0 0;font-size:.9rem}.loading-panel__track{background:color-mix(in srgb, var(--ink,#fff) 10%, transparent);border-radius:999px;height:.4rem;margin-top:.9rem;overflow:hidden}.loading-panel__bar{border-radius:inherit;background:linear-gradient(90deg, var(--accent,#7a9eae), var(--accent-strong,#8eb6c4));width:0;height:100%;transition-property:width;transition-duration:.18s;transition-timing-function:ease}.loading-panel__track--indeterminate .loading-panel__bar{width:40%;animation:1.1s ease-in-out infinite loading-panel-slide}@keyframes loading-panel-slide{0%{transform:translate(-120%)}to{transform:translate(280%)}}@media (prefers-reduced-motion:reduce){.loading-panel__track--indeterminate .loading-panel__bar{width:55%;animation:none}.loading-panel__bar{transition:none}}.cover-editor{z-index:20;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#080a0eb8;place-items:center;padding:1.5rem;display:grid;position:fixed;inset:0}.cover-editor__panel{background:linear-gradient(165deg, var(--desk-lift,#1c232c), var(--desk,#12161c));border:1px solid var(--line,#e8e4dc1f);border-radius:var(--radius-lg,1rem);width:min(100%,26rem);color:var(--ink,#e8e4dc);box-shadow:var(--shadow-soft,0 18px 40px #00000047);padding:1.25rem}.cover-editor__header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.cover-editor__header h2{font-family:var(--font-display,Georgia, serif);letter-spacing:-.02em;margin:0;font-size:1.3rem}.cover-editor__header button,.cover-editor__style,.cover-editor__save{border:1px solid var(--control-border,#e8e4dc38);background:var(--control,#ffffff0a);color:inherit;font:inherit;cursor:pointer;border-radius:var(--radius-sm,.45rem);padding:.4rem .7rem;font-weight:550;transition-property:transform,border-color,background-color;transition-duration:.14s;transition-timing-function:ease}.cover-editor__header button:active,.cover-editor__style:active,.cover-editor__save:active:not(:disabled){transform:scale(.96)}.cover-editor__field{border:0;gap:.45rem;margin:0 0 1rem;padding:0;font-size:.9rem;display:grid}.cover-editor__field input[type=text],.cover-editor__field input:not([type]){border:1px solid var(--control-border,#e8e4dc2e);border-radius:var(--radius-sm,.45rem);width:100%;color:inherit;font:inherit;background:#00000040;padding:.55rem .65rem}.cover-editor__swatches,.cover-editor__styles{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.cover-editor__swatch{border-radius:var(--radius-sm,.45rem);cursor:pointer;border:2px solid #0000;width:1.7rem;height:1.7rem}.cover-editor__swatch--active{border-color:var(--accent-strong,#f4f0e8)}.cover-editor__style--active,.cover-editor__save{background:color-mix(in srgb, var(--accent,#7a9eae) 22%, transparent);border-color:var(--accent,#7a9eae)}.cover-editor__preview{aspect-ratio:2/3;border-radius:var(--radius-md,.7rem);outline-offset:-1px;outline:1px solid oklch(100% 0 0/.1);align-items:flex-end;width:8.5rem;margin:0 auto 1rem;padding:.75rem;display:flex}.cover-editor__error{color:#f0b4b4}.cover-editor__save{width:100%}.cover-editor__save:disabled{opacity:.5;cursor:not-allowed}@media (prefers-reduced-motion:reduce){.cover-editor__header button,.cover-editor__style,.cover-editor__save{transition:none}.cover-editor__header button:active,.cover-editor__style:active,.cover-editor__save:active:not(:disabled){transform:none}}.book-inspect{z-index:80;place-items:center;padding:1.25rem;display:grid;position:fixed;inset:0}.book-inspect__backdrop{cursor:pointer;background:#0000009e;border:0;position:absolute;inset:0}.book-inspect__panel{z-index:1;border-radius:var(--radius-lg);border:1px solid var(--line);background:var(--desk-lift);width:min(100%,58rem);box-shadow:var(--shadow-soft);position:relative;overflow:hidden}.book-inspect__header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:1rem;padding:1rem 1.15rem .85rem;display:flex}.book-inspect__kicker{letter-spacing:-.01em;color:var(--ink-soft);margin:0 0 .2rem;font-size:.78rem;font-weight:550}.book-inspect__title{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:1.35rem;font-weight:600}.book-inspect__meta{color:var(--ink-soft);margin:.35rem 0 0;font-size:.86rem}.book-inspect__close{border:1px solid var(--control-border);background:var(--control);color:var(--ink);font:inherit;border-radius:var(--radius-sm);cursor:pointer;padding:.35rem .7rem;font-size:.85rem}.book-inspect__stage{cursor:grab;touch-action:none;background:var(--desk);height:min(74vh,42rem);position:relative;overflow:hidden}.book-inspect__stage:active{cursor:grabbing}.book-inspect__canvas{width:100%;height:100%;display:block}.book-inspect__hint{letter-spacing:-.01em;color:var(--ink-soft);opacity:.7;pointer-events:none;z-index:1;margin:0;font-size:.78rem;font-weight:550;position:absolute;top:.85rem;left:50%;transform:translate(-50%)}.gallery-footer{z-index:1;text-align:center;margin-top:auto;padding:2.5rem 0 .5rem;position:relative}.gallery-footer__fade{font-family:var(--font-ui);letter-spacing:.04em;text-transform:lowercase;color:var(--ink-soft);opacity:.38;transition:opacity var(--duration-ui,.18s) var(--ease-out,cubic-bezier(.23, 1, .32, 1));margin:0;font-size:.78rem;font-weight:500}.gallery-footer:hover .gallery-footer__fade,.gallery-footer:focus-within .gallery-footer__fade{opacity:.72}.gallery-footer__link{color:inherit;border-bottom:1px solid color-mix(in srgb, currentColor 28%, transparent);transition:border-color var(--duration-ui,.16s) var(--ease-out,cubic-bezier(.23, 1, .32, 1));text-decoration:none}.gallery-footer__link:hover,.gallery-footer__link:focus-visible{border-bottom-color:color-mix(in srgb, currentColor 70%, transparent);outline:none}.book-context-menu{z-index:40;border:1px solid var(--line);border-radius:var(--radius-md);background-color:var(--desk-lift);min-width:10.5rem;box-shadow:var(--shadow-soft);gap:.1rem;padding:.3rem;display:grid;position:fixed}.book-context-menu__item{color:var(--ink);font:inherit;text-align:left;border-radius:calc(var(--radius-sm) - .05rem);cursor:pointer;transition-property:background-color,color;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;border:0;padding:.5rem .65rem;font-size:.9rem;font-weight:500}.book-context-menu__item:hover,.book-context-menu__item:focus-visible{background-color:var(--control);outline:none}.book-context-menu__item--danger{color:#c45a5a}@media (prefers-reduced-motion:reduce){.book-context-menu__item{transition:none}}.shelf-book{flex-direction:column;align-items:stretch;width:100%;max-width:9.5rem;margin-inline:auto;display:flex}.shelf-book__cover-wrap{position:relative}.shelf-book__cover{aspect-ratio:2/3;width:100%;color:inherit;cursor:pointer;border-radius:var(--radius-sm);outline-offset:-1px;transition-property:transform,outline-color,box-shadow;transition-duration:var(--duration-ui,.18s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));border:0;outline:1px solid oklch(0% 0 0/.14);align-items:flex-end;padding:.85rem;text-decoration:none;display:flex;position:relative;box-shadow:0 8px 18px #0000002e}.app-shell--dark .shelf-book__cover{outline-color:oklch(100% 0 0/.1);box-shadow:0 10px 22px #00000059}.app-shell--light .shelf-book__cover{box-shadow:0 8px 16px #24262a1f}.shelf-book__cover:hover,.shelf-book__cover:focus-visible{outline-color:var(--accent);transform:translateY(-5px);box-shadow:0 14px 26px #00000038}.shelf-book__cover:active{transform:translateY(-2px)scale(.98)}.shelf-book__cover--empty{opacity:.9}.shelf-book__more{z-index:2;border-radius:var(--radius-sm);color:#f4f0e8;width:1.7rem;height:1.7rem;font:inherit;cursor:pointer;opacity:0;transition-property:opacity,background-color,transform;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:#00000073;border:0;place-items:center;font-size:1rem;font-weight:700;line-height:1;display:grid;position:absolute;top:.4rem;right:.4rem}.shelf-book__cover-wrap:hover .shelf-book__more,.shelf-book__cover-wrap:focus-within .shelf-book__more,.shelf-book__more:focus-visible{opacity:1;outline:none}.shelf-book__more:hover,.shelf-book__more:focus-visible{background:#0000009e}.shelf-book__more:active{transform:scale(.97)}.shelf-book__meta{text-align:left;flex-direction:column;gap:.15rem;width:100%;margin-top:.65rem;display:flex}.shelf-book__author{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.72rem;font-weight:500;line-height:1.25;overflow:hidden}.shelf-book__title{letter-spacing:-.015em;white-space:nowrap;text-overflow:ellipsis;min-height:1.3em;margin:0;font-size:.88rem;font-weight:600;line-height:1.3;overflow:hidden}.shelf-book__error{color:#c45a5a;margin:.35rem 0 0;font-size:.75rem}@media (prefers-reduced-motion:reduce){.shelf-book__cover,.shelf-book__more{transition:none}.shelf-book__cover:hover,.shelf-book__cover:focus-visible,.shelf-book__cover:active,.shelf-book__more:active{transform:none}.shelf-book__more{opacity:1}}.shelf-flat-stack{flex-direction:column;gap:1rem;width:100%;padding-bottom:.35rem;display:flex}.shelf-flat-bay{border-radius:var(--radius-md);border:1px solid var(--line);background:var(--desk-lift);width:100%;overflow:hidden}.shelf-flat-bay__row{flex-wrap:wrap;align-items:start;gap:1rem 1.1rem;margin:0;padding:1.1rem 1.15rem;list-style:none;display:flex}.shelf-flat-bay__row>.shelf-book{flex:none;width:8.5rem;max-width:none;margin-inline:0}.shelf-add--flat-bay{flex:none;width:auto;max-width:none;margin-inline:0;padding-top:5.375rem}.shelf-add--flat-bay .shelf-add__btn{border:1px solid var(--control-border);border-radius:var(--radius-sm);min-height:2rem;color:var(--ink-soft);font:inherit;letter-spacing:-.01em;cursor:pointer;white-space:nowrap;transition-property:color,border-color,background-color,transform;transition-duration:var(--duration-ui,.18s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;align-items:center;gap:.3rem;padding:.3rem .7rem;font-size:.8rem;font-weight:550;display:inline-flex}.shelf-add--flat-bay .shelf-add__btn:hover,.shelf-add--flat-bay .shelf-add__btn:focus-visible{color:var(--accent-strong);border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent);outline:none}.shelf-add--flat-bay .shelf-add__btn:active:not(:disabled){transform:scale(.97)}.shelf-add--flat-bay .shelf-add__btn:disabled{opacity:.45;cursor:not-allowed}.shelf-add--flat-bay .shelf-add__plus{font-size:.95rem;font-weight:500;line-height:1}@media (prefers-reduced-motion:reduce){.shelf-add--flat-bay .shelf-add__btn{transition:none}.shelf-add--flat-bay .shelf-add__btn:active:not(:disabled){transform:none}}.shelf-webgl{background:var(--desk);width:100%;height:100%;min-height:0;position:relative;overflow:hidden}.shelf-webgl:after{content:"";pointer-events:none;z-index:1;opacity:.55;background:radial-gradient(80% 70% at 50% 42%,#0000 35%,#00000047 100%);position:absolute;inset:0}.app-shell--light .shelf-webgl:after{opacity:.45;background:radial-gradient(80% 70% at 50% 42%,#0000 40%,#24262a1f 100%)}.shelf-webgl__host{z-index:0;width:100%;height:100%;position:relative}.shelf-webgl__canvas{touch-action:pan-y;width:100%;height:100%;display:block}.shelf-webgl__canvas.is-pannable{cursor:grab}.shelf-webgl__canvas.is-panning{cursor:grabbing}.shelf-webgl__hud{z-index:3;border-radius:var(--radius-sm);border:1px solid color-mix(in srgb, var(--line) 90%, transparent);background:color-mix(in srgb, var(--desk-lift) 94%, transparent);min-width:10.5rem;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:auto;padding:.5rem .55rem .55rem;position:absolute;transform:translate(-50%,calc(-100% - .75rem))}.shelf-webgl__hud-title{font-family:var(--font-display);letter-spacing:-.015em;white-space:nowrap;text-overflow:ellipsis;max-width:14rem;margin:0 0 .4rem;font-size:.84rem;font-weight:600;overflow:hidden}.shelf-webgl__hud-actions{gap:.28rem;display:flex}.shelf-webgl__hud-actions button{background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--ink);font:inherit;border-radius:calc(var(--radius-sm) - .05rem);cursor:pointer;transition:background-color var(--duration-ui,.18s) var(--ease-out,cubic-bezier(.23, 1, .32, 1)), transform var(--duration-ui,.18s) var(--ease-out,cubic-bezier(.23, 1, .32, 1));border:0;padding:.34rem .55rem;font-size:.72rem;font-weight:650}.shelf-webgl__hud-actions button:hover,.shelf-webgl__hud-actions button:focus-visible{background:color-mix(in srgb, var(--accent) 30%, transparent);outline:none}.shelf-webgl__hud-actions button:active{transform:scale(.97)}.shelf-webgl__add{z-index:2;border:1px solid var(--control-border);background:color-mix(in srgb, var(--desk-lift) 90%, transparent);color:var(--ink-soft);font:inherit;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition-property:color,border-color,background-color,transform;transition-duration:var(--duration-ui,.18s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));border-radius:999px;padding:.48rem .8rem;font-size:.8rem;font-weight:600;position:absolute;bottom:1.1rem;right:1.1rem}.shelf-webgl__add:hover,.shelf-webgl__add:focus-visible{border-color:var(--accent);color:var(--accent-strong);outline:none}.shelf-webgl__add:active{transform:scale(.98)}@media (prefers-reduced-motion:reduce){.shelf-webgl__hud-actions button,.shelf-webgl__add{transition:none}.shelf-webgl__hud-actions button:active,.shelf-webgl__add:active{transform:none}}.gallery-shelf{width:100%;color:var(--ink);padding-inline:1rem;flex-direction:column;flex:auto;align-self:stretch;min-height:100%;margin-inline:0;padding-top:.9rem;display:flex;position:relative}.gallery-shelf:not(.gallery-shelf--stage3d):before{content:"";pointer-events:none;background:radial-gradient(ellipse 70% 45% at 50% 0%, color-mix(in srgb, var(--accent) 7%, transparent), transparent 70%);opacity:.9;position:absolute;inset:0}.gallery-shelf:not(.gallery-shelf--stage3d){max-width:70rem;margin-inline:auto}.gallery-shelf--stage3d{height:100%;min-height:calc(100dvh - var(--app-header-h,3.15rem));padding-inline:0;padding-top:0}.gallery-shelf--stage3d .gallery-shelf__error{padding-inline:1rem;padding-top:.65rem}.gallery-shelf--stage3d .gallery-shelf__board{min-height:0;overflow:hidden}.gallery-shelf__title--sr{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.gallery-shelf__error{z-index:1;color:#c45a5a;margin:0 0 .7rem;font-size:.88rem;position:relative}.gallery-shelf__board{z-index:1;flex:auto;min-height:0;position:relative}.gallery-shelf__loading{border-radius:var(--radius-md);border:1px solid var(--line);background:color-mix(in srgb, var(--desk-lift) 88%, transparent);place-items:center;min-height:16rem;padding:1.75rem .75rem;display:grid}.gallery-cover{border:0}.gallery-cover--classic,.gallery-cover--modern,.gallery-cover--minimal{border-radius:var(--radius-sm)}.gallery-cover__text{font-family:var(--font-display);color:var(--cover-ink,#ece4d5);text-shadow:var(--cover-ink-shadow,0 1px 2px #00000073);text-align:left;text-wrap:balance;margin:0;font-size:.95rem;line-height:1.45}.gallery-cover__badge{letter-spacing:.02em;border-radius:var(--radius-sm);color:#f6f1e6;background:#2b2620b8;margin:0;padding:.2rem .45rem;font-size:.68rem;font-weight:600;position:absolute;top:.55rem;right:.55rem}.reader-progress{flex:none;align-items:center;gap:.65rem;min-width:0;display:flex}.reader-progress__meter{flex:none;place-items:center;width:2.5rem;height:2.5rem;display:grid;position:relative}.reader-progress__ring{width:100%;height:100%;position:absolute;inset:0;transform:rotate(-90deg)}.reader-progress__track,.reader-progress__value{stroke-width:2.4px}.reader-progress__track{stroke:color-mix(in srgb, var(--ink) 12%, transparent)}.reader-progress__value{stroke:var(--accent-strong);stroke-linecap:round;transition:stroke-dasharray var(--duration-ui,.18s) var(--ease-out,cubic-bezier(.23, 1, .32, 1))}.reader-progress__percent{z-index:1;font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--ink-soft);font-size:.62rem;font-weight:600;line-height:1;position:relative}.reader-progress__pages{color:var(--ink-soft);font-variant-numeric:tabular-nums;letter-spacing:-.015em;white-space:nowrap;align-items:baseline;gap:.18rem;margin:0;font-size:.86rem;font-weight:550;display:flex}.reader-progress__page{color:var(--ink);font-weight:600}.reader-progress__sep{opacity:.55}@media (prefers-reduced-motion:reduce){.reader-progress__value{transition:none}}.reader-bookmarks__add{text-align:center;width:100%;display:block}.reader-bookmarks__body{border-top:1px solid var(--line)}.reader-bookmarks__body .reader-tools__empty{padding:.65rem .1rem .15rem}.reader-bookmarks__list{scrollbar-width:none;-ms-overflow-style:none;background:0 0;border:0;border-radius:0;max-height:min(28vh,14rem);margin:0;padding:0;list-style:none;overflow:auto}.reader-bookmarks__list::-webkit-scrollbar{display:none}.reader-bookmarks__item{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto auto;align-items:stretch;display:grid}.reader-bookmarks__item--editing{grid-template-columns:minmax(0,1fr) auto}.reader-bookmarks__item:last-child{border-bottom:0}.reader-bookmarks__jump{width:100%;color:var(--ink);text-align:left;font:inherit;cursor:pointer;transition-property:background-color,color;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;border:0;gap:.15rem;padding:.55rem .65rem;display:grid}.reader-bookmarks__jump:hover,.reader-bookmarks__jump:focus-visible{background:var(--control);color:var(--accent-strong);outline:none}.reader-bookmarks__label{font-size:.88rem;font-weight:560}.reader-bookmarks__meta{color:var(--ink-soft);font-size:.72rem}.reader-bookmarks__edit{align-items:center;min-width:0;padding:.35rem .45rem;display:flex}.reader-bookmarks__input{border:1px solid var(--control-border);border-radius:var(--radius-sm);background:var(--desk-lift);width:100%;min-width:0;color:var(--ink);font:inherit;padding:.35rem .5rem;font-size:.88rem}.reader-bookmarks__input:focus{outline:2px solid var(--accent-strong);outline-offset:0}.reader-bookmarks__rename,.reader-bookmarks__remove{border:0;border-left:1px solid var(--line);color:var(--ink-soft);cursor:pointer;width:2.1rem;transition-property:color,background-color;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;font-size:.95rem;line-height:1}.reader-bookmarks__remove{font-size:1.1rem}.reader-bookmarks__rename:hover,.reader-bookmarks__rename:focus-visible,.reader-bookmarks__remove:hover,.reader-bookmarks__remove:focus-visible{color:var(--ink);background:var(--control);outline:none}@media (prefers-reduced-motion:reduce){.reader-bookmarks__jump,.reader-bookmarks__rename,.reader-bookmarks__remove{transition:none}}.reader-search__form{gap:.55rem;display:grid}.reader-search__field{gap:.25rem;display:grid}.reader-search__label{color:var(--ink-soft);letter-spacing:-.01em;text-transform:none;font-size:.78rem;font-weight:550}.reader-search__input{border:1px solid var(--control-border);border-radius:var(--radius-sm);background:var(--desk-lift);width:100%;min-width:0;color:var(--ink);font:inherit;padding:.45rem .55rem;font-size:.88rem}.reader-search__input:focus{outline:2px solid var(--accent-strong);outline-offset:0}.reader-search__controls{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.reader-search__scope{border:1px solid var(--line);border-radius:var(--radius-sm);display:inline-flex;overflow:hidden}.reader-search__scope-btn{color:var(--ink-soft);font:inherit;cursor:pointer;transition-property:color,background-color;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;border:0;padding:.35rem .55rem;font-size:.74rem;font-weight:560}.reader-search__scope-btn+.reader-search__scope-btn{border-left:1px solid var(--line)}.reader-search__scope-btn--active{background:var(--control);color:var(--ink)}.reader-search__scope-btn:hover,.reader-search__scope-btn:focus-visible{color:var(--ink);background:var(--control);outline:none}.reader-search__status{color:var(--ink-soft);margin:.55rem 0 0;font-size:.76rem}.reader-search__nav{justify-content:space-between;align-items:center;gap:.5rem;margin-top:.55rem;display:flex}.reader-search__count{color:var(--ink-soft);font-size:.74rem}.reader-search__nav-actions{gap:.25rem;display:inline-flex}.reader-search__nav-btn{border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink-soft);cursor:pointer;width:1.8rem;height:1.8rem;transition-property:color,background-color,border-color;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;font-size:1rem;line-height:1}.reader-search__nav-btn:hover,.reader-search__nav-btn:focus-visible{color:var(--ink);background:var(--control);outline:none}.reader-search__list{border-top:1px solid var(--line);scrollbar-width:none;-ms-overflow-style:none;max-height:min(28vh,14rem);margin:.45rem 0 0;padding:0;list-style:none;overflow:auto}.reader-search__list::-webkit-scrollbar{display:none}.reader-search__result{border:0;border-bottom:1px solid var(--line);width:100%;color:var(--ink);text-align:left;font:inherit;cursor:pointer;transition-property:background-color,color;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;padding:.55rem .65rem;display:block}.reader-search__result:last-child{border-bottom:0}.reader-search__result:hover,.reader-search__result:focus-visible{background:var(--control);color:var(--accent-strong);outline:none}.reader-search__result--active{background:color-mix(in srgb, var(--accent-strong) 12%, transparent);color:var(--ink)}.reader-search__excerpt{white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;line-height:1.45;display:block;overflow:hidden}@media (prefers-reduced-motion:reduce){.reader-search__scope-btn,.reader-search__nav-btn,.reader-search__result{transition:none}}.reader-toc{margin:0;padding:0;list-style:none}.reader-toc--nested{margin:0}.reader-toc__item{border-bottom:1px solid var(--line);margin:0}.reader-toc__item:last-child{border-bottom:0}.reader-toc--nested .reader-toc__item:last-child{border-bottom:1px solid var(--line)}.reader-toc__row{grid-template-columns:1.35rem minmax(0,1fr);align-items:start;gap:.15rem;min-height:2.15rem;display:grid}.reader-toc__toggle,.reader-toc__toggle-spacer{flex-shrink:0;width:1.35rem;height:1.35rem;margin-top:.38rem}.reader-toc__toggle{border-radius:var(--radius-sm);color:var(--ink-soft);cursor:pointer;transition-property:color,background-color;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.reader-toc__toggle:hover,.reader-toc__toggle:focus-visible{color:var(--ink);background:var(--control);outline:none}.reader-toc__toggle-glyph{font-size:.72rem;line-height:1}.reader-toc__link{width:100%;color:var(--ink);text-align:left;font:inherit;cursor:pointer;transition-property:background-color,color;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;border:0;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:.45rem;padding:.5rem .55rem .5rem 0;font-size:.86rem;line-height:1.35;display:grid}.reader-toc__link:hover,.reader-toc__link:focus-visible{color:var(--accent-strong);outline:none}.reader-toc__row:hover .reader-toc__link,.reader-toc__row:focus-within .reader-toc__link{background:0 0}.reader-toc__row:hover,.reader-toc__row:focus-within{background:var(--control)}.reader-toc__number{font-variant-numeric:tabular-nums;letter-spacing:.02em;min-width:1.6rem;color:var(--ink-soft);flex-shrink:0;padding-top:.08rem;font-size:.74rem;font-weight:650}.reader-toc__label{overflow-wrap:anywhere;min-width:0}@media (prefers-reduced-motion:reduce){.reader-toc__toggle,.reader-toc__link{transition:none}}.reader-tools-section{border:0;border-top:1px solid var(--line);background:0 0;border-radius:0;margin:0}.reader-tools-section__toggle{width:100%;color:var(--ink-soft);font:inherit;letter-spacing:-.01em;text-transform:none;cursor:pointer;transition-property:color,background-color;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;border:0;border-radius:0;justify-content:space-between;align-items:center;gap:.5rem;padding:.75rem 1rem;font-size:.82rem;font-weight:600;display:flex}.reader-tools-section__toggle:hover,.reader-tools-section__toggle:focus-visible{color:var(--ink);background:var(--control);outline:none}.reader-tools-section__title{text-align:left}.reader-tools-section__glyph{font-size:.75rem;line-height:1}.reader-tools-section__body{padding:0 1rem .85rem}.reader-tools-section__body>.reader-bookmarks{margin-top:.2rem}.reader-tools-section__body>.reader-tools__empty,.reader-tools-section__body>.reader-tools__toc-scroll,.reader-tools-section__body>.reader-tools__row,.reader-tools-section__body>.reader-tools__fonts,.reader-tools-section__body>.reader-tools__soon{margin-top:.15rem}@media (prefers-reduced-motion:reduce){.reader-tools-section__toggle{transition:none}}.reader-tools{--tools-collapsed:3.25rem;--tools-open:18.5rem;width:var(--tools-collapsed);border-right:1px solid var(--line);background-color:var(--desk-lift);height:100%;min-height:0;transition-property:width,background-color,border-color;transition-duration:.24s, var(--duration-theme,.28s), var(--duration-theme,.28s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1)), var(--ease-theme,cubic-bezier(.2, 0, 0, 1)), var(--ease-theme,cubic-bezier(.2, 0, 0, 1));flex-direction:column;flex-shrink:0;align-self:stretch;display:flex;overflow:hidden}.reader-tools--open{width:var(--tools-open)}.reader-tools__chrome{flex-shrink:0;justify-content:center;align-items:center;min-height:3.25rem;padding:.55rem;display:flex}.reader-tools__icon-btn{border-radius:var(--radius-sm);width:2rem;height:2rem;color:var(--ink-soft);cursor:pointer;transition-property:color,background-color,transform;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;border:0;flex:none;place-items:center;padding:0;display:inline-grid}.reader-tools__icon-btn:hover,.reader-tools__icon-btn:focus-visible{color:var(--ink);background:var(--control);outline:none}.reader-tools__icon-btn:active{transform:scale(.97)}.reader-tools__panel{opacity:0;pointer-events:none;min-height:0;transition-property:opacity;transition-duration:.18s;transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));scrollbar-width:none;-ms-overflow-style:none;flex:1;padding:.85rem 0 1.25rem;overflow:auto}.reader-tools__panel::-webkit-scrollbar{display:none}.reader-tools--open .reader-tools__panel{opacity:1;pointer-events:auto}.reader-tools__meta{border-bottom:0;margin:0 0 .35rem;padding:.15rem 2.75rem 1.1rem 1rem;position:relative}.reader-tools__title-row{display:block}.reader-tools__title{font-family:var(--font-display);letter-spacing:-.025em;text-wrap:balance;margin:0;font-size:1.2rem;font-weight:600;line-height:1.22}.reader-tools__title-row .reader-tools__icon-btn{position:absolute;top:.1rem;right:.85rem}.reader-tools__author{color:var(--ink-soft);margin:.2rem 0 .85rem;font-size:.86rem}.reader-tools__shelf{color:var(--ink-soft);font-size:.84rem;font-weight:550;text-decoration:none}.reader-tools__shelf:hover,.reader-tools__shelf:focus-visible{color:var(--accent-strong);outline:none;text-decoration:none}.reader-tools__section{margin-bottom:1.15rem}.reader-tools__toc-scroll{border:0;border-top:1px solid var(--line);scrollbar-width:none;-ms-overflow-style:none;background:0 0;border-radius:0;max-height:min(42vh,22rem);overflow:auto}.reader-tools__toc-scroll::-webkit-scrollbar{display:none}.reader-tools__heading{letter-spacing:-.01em;text-transform:none;color:var(--ink-soft);margin:0 0 .55rem;font-size:.8rem;font-weight:600}.reader-tools__row{grid-template-columns:auto 1fr auto;align-items:center;gap:.45rem;display:grid}.ui-btn.reader-tools__action-btn{letter-spacing:.01em;min-height:1.65rem;padding:.18rem .5rem;font-family:inherit;font-size:.72rem;font-weight:560;line-height:1.2}.reader-tools__value{text-align:center;font-variant-numeric:tabular-nums;color:var(--ink-soft);font-size:.9rem}.reader-tools__fonts{gap:.35rem;display:grid}.reader-tools__font{color:var(--ink);text-align:left;border-radius:var(--radius-sm);cursor:pointer;transition-property:transform,border-color,background-color;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;border:1px solid #0000;padding:.55rem .65rem;font-size:.95rem}.reader-tools__font:hover,.reader-tools__font:focus-visible{background:var(--control);outline:none}.reader-tools__font:active{transform:scale(.97)}.reader-tools__font--active{border-color:var(--line);background:var(--control)}.reader-tools__empty{color:var(--ink-soft);margin:0;font-size:.86rem;line-height:1.45}.reader-tools__section--soon{opacity:.72}.reader-tools__soon{color:var(--ink-soft);margin:0;padding-left:1.05rem;font-size:.86rem;line-height:1.55}@media (width<=820px){.reader-tools{z-index:12;height:100%;box-shadow:var(--shadow-soft);position:absolute;inset:0 auto 0 0}.reader-tools--collapsed{box-shadow:none}}@media (prefers-reduced-motion:reduce){.reader-tools,.reader-tools__panel,.reader-tools__icon-btn,.reader-tools__font{transition:none}.reader-tools__icon-btn:active,.reader-tools__font:active{transform:none}}.reader-viewport{width:100%;min-height:0;color:var(--ink);flex-direction:column;flex:1;gap:.45rem;display:flex}.reader-viewport--error{border-radius:var(--radius-md);color:#c45a5a;background:#c45a5a14;border:1px solid #c45a5a66;padding:1.25rem}.reader-viewport__error-detail{color:var(--ink-soft)}.reader-viewport__desk{flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative}.reader-viewport__stage{grid-template-columns:2.25rem minmax(0,1fr) 2.25rem;align-items:stretch;gap:.35rem;width:100%;height:100%;min-height:0;max-height:100%;display:grid}.reader-viewport__edge{border-radius:var(--radius-sm);color:var(--ink-soft);font:inherit;cursor:pointer;writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:.04em;text-transform:none;height:min(12rem,40%);transition-property:color,background-color;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;border:0;align-self:center;font-size:.78rem;font-weight:550}.reader-viewport__edge:disabled{opacity:.35;cursor:not-allowed}.reader-viewport__edge--prev{transform:rotate(180deg)}.reader-viewport__edge:hover:not(:disabled),.reader-viewport__edge:focus-visible{color:var(--accent-strong);background:var(--control);outline:none}.reader-viewport__book{align-items:stretch;min-width:0;height:100%;min-height:0;display:flex;position:relative}.reader-viewport__frame{border:1px solid var(--line);border-radius:var(--radius-md);background-color:var(--page);width:100%;height:100%;min-height:0;transition-property:background-color,border-color;transition-duration:var(--duration-theme,.28s);transition-timing-function:var(--ease-theme,cubic-bezier(.2, 0, 0, 1));flex:1;position:relative;overflow:hidden}.reader-viewport__gutter{pointer-events:none;z-index:2;opacity:0;background:color-mix(in srgb, var(--page-ink,var(--ink)) 14%, transparent);width:1px;transition-property:opacity;transition-duration:.16s;transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.reader-viewport--spread .reader-viewport__gutter{opacity:1}@media (width<=959px){.reader-viewport__edge{writing-mode:horizontal-tb;letter-spacing:.04em;align-self:stretch;height:auto}.reader-viewport__edge--prev{transform:none}}.reader-viewport__host{z-index:1;position:absolute;inset:0}.reader-viewport__host iframe{background:0 0!important;border:0!important}.reader-viewport__flip{pointer-events:none;opacity:0;z-index:3;background:color-mix(in srgb, var(--desk) 18%, transparent);position:absolute;inset:0}.reader-viewport__loading{z-index:4;background:color-mix(in srgb, var(--page) 94%, transparent);place-items:center;margin:0;padding:1rem;display:grid;position:absolute;inset:0}@media (prefers-reduced-motion:reduce){.reader-viewport__flip{display:none}.reader-viewport__gutter,.reader-viewport__edge{transition:none}}.reader-page{width:100%;height:100%;color:var(--ink);background-color:var(--desk);min-width:0;min-height:0;transition-property:background-color,color;transition-duration:var(--duration-theme,.28s);transition-timing-function:var(--ease-theme,cubic-bezier(.2, 0, 0, 1));align-items:stretch;margin:0;display:flex;position:relative;overflow:hidden}.reader-page__stage{flex-direction:column;flex:1;gap:.5rem;min-width:0;height:100%;min-height:0;padding:.75rem 1.25rem 1rem;display:flex}.reader-page__header{flex-shrink:0;justify-content:space-between;align-items:center;gap:1rem;display:flex}.reader-page__heading{min-width:0}.reader-page__heading h1{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 .1rem;font-size:clamp(1.1rem,1.5vw,1.3rem);font-weight:600}.reader-page__heading p{color:var(--ink-soft);margin:0;font-size:.86rem}.reader-page__boot{place-items:center;width:100%;height:100%;min-height:18rem;padding:2rem;display:grid}@media (width<=820px){.reader-page__stage{padding-left:3.75rem}}.backup-confirm{z-index:50;background:#0000008c;place-items:center;padding:1.5rem;display:grid;position:fixed;inset:0}.backup-confirm__panel{border:1px solid var(--line);border-radius:var(--radius-lg);background-color:var(--desk-lift);width:min(100%,24rem);box-shadow:var(--shadow-soft);color:var(--ink);padding:1.25rem 1.3rem 1.15rem}.backup-confirm__title{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:1.2rem}.backup-confirm__body{color:var(--ink-soft);margin:.65rem 0 0;font-size:.94rem;line-height:1.5}.backup-confirm__actions{justify-content:flex-end;gap:.5rem;margin-top:1.15rem;display:flex}.backup-confirm__cancel,.backup-confirm__ok{border-radius:var(--radius-sm);font:inherit;cursor:pointer;border:0;min-height:2.2rem;padding:.45rem .8rem;font-size:.9rem;font-weight:550}.backup-confirm__cancel{color:var(--ink-soft);background:0 0}.backup-confirm__cancel:hover,.backup-confirm__cancel:focus-visible{color:var(--ink);background:var(--control);outline:none}.backup-confirm__ok{background:color-mix(in srgb, var(--accent) 28%, transparent);color:var(--ink)}.backup-confirm__ok:hover,.backup-confirm__ok:focus-visible{background:color-mix(in srgb, var(--accent) 40%, transparent);outline:none}.backup-confirm__cancel:disabled,.backup-confirm__ok:disabled{opacity:.5;cursor:not-allowed}.backup-actions{flex-wrap:wrap;align-items:center;gap:.35rem .55rem;display:flex}.backup-actions__btn{color:var(--ink-soft);font:inherit;cursor:pointer;border-radius:var(--radius-sm);transition-property:color,background-color;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;border:0;padding:.35rem .45rem;font-size:.92rem;font-weight:550}.backup-actions__btn:hover,.backup-actions__btn:focus-visible{color:var(--accent-strong);background-color:var(--control);outline:none}.backup-actions__btn:disabled{opacity:.45;cursor:not-allowed}.backup-actions__note,.backup-actions__error{width:100%;margin:0;font-size:.82rem}.backup-actions__note{color:var(--ink-soft)}.backup-actions__error{color:#c45a5a}.backup-actions--menu{flex-direction:column;gap:.15rem;width:100%;display:flex}.backup-actions--menu .backup-actions__btn{text-align:left;justify-content:flex-start;width:100%;padding:.45rem .55rem;font-size:.84rem}.backup-actions--menu .backup-actions__note,.backup-actions--menu .backup-actions__error{width:auto;padding:.2rem .55rem .35rem}@media (prefers-reduced-motion:reduce){.backup-actions__btn{transition:none}}.library-overflow{position:relative}.library-overflow__trigger{border-radius:var(--radius-sm);width:2rem;height:2rem;color:var(--ink-soft);font:inherit;cursor:pointer;transition-property:color,background-color,transform;transition-duration:var(--duration-ui,.18s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;border:0;place-items:center;font-size:1.05rem;font-weight:600;line-height:1;display:grid}.library-overflow__trigger:hover,.library-overflow__trigger:focus-visible{color:var(--ink);background:color-mix(in srgb, var(--ink) 7%, transparent);outline:none}.library-overflow__trigger:active{transform:scale(.97)}.library-overflow__trigger[aria-expanded=true]{color:var(--ink);background:color-mix(in srgb, var(--ink) 9%, transparent)}.library-overflow__menu{z-index:20;border:1px solid var(--line);border-radius:var(--radius-md);background:color-mix(in srgb, var(--desk-lift) 96%, transparent);min-width:11rem;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);flex-direction:column;gap:.12rem;padding:.35rem;display:flex;position:absolute;top:calc(100% + .45rem);right:0}.library-overflow__menu[hidden]{display:none}.library-overflow__item,.library-overflow .backup-actions__btn{text-align:left;width:100%;color:var(--ink);font:inherit;border-radius:calc(var(--radius-sm) - .05rem);cursor:pointer;background:0 0;border:0;justify-content:flex-start;padding:.45rem .55rem;font-size:.84rem;font-weight:550}.library-overflow__item:hover,.library-overflow__item:focus-visible,.library-overflow .backup-actions__btn:hover,.library-overflow .backup-actions__btn:focus-visible{background:var(--control);color:var(--accent-strong);outline:none}.library-overflow__item:disabled,.library-overflow .backup-actions__btn:disabled{opacity:.45;cursor:not-allowed}.library-overflow .backup-actions{flex-direction:column;gap:.15rem;width:100%;display:flex}.library-overflow .backup-actions__note,.library-overflow .backup-actions__error{width:auto;padding:.2rem .55rem .35rem}@media (prefers-reduced-motion:reduce){.library-overflow__trigger{transition:none}.library-overflow__trigger:active{transform:none}}.shelf-mode-select{border:1px solid var(--control-border);border-radius:var(--radius-md);background:0 0;align-items:stretch;gap:.08rem;padding:.1rem;display:inline-flex;overflow:hidden}.shelf-mode-select__option{border-radius:calc(var(--radius-md) - .05rem);color:var(--ink-soft);font:inherit;letter-spacing:-.01em;cursor:pointer;transition:color var(--duration-ui,.18s) var(--ease-out,cubic-bezier(.23, 1, .32, 1)), background-color var(--duration-ui,.18s) var(--ease-out,cubic-bezier(.23, 1, .32, 1));background:0 0;border:0;margin:0;padding:.34rem .78rem;font-size:.76rem;font-weight:560}.shelf-mode-select__option:hover{color:var(--ink)}.shelf-mode-select__option--active{color:var(--ink);background:color-mix(in srgb, var(--ink) 8%, transparent)}.shelf-mode-select__option:focus-visible{outline:2px solid var(--accent-strong);outline-offset:1px;z-index:1}.library-hero{isolation:isolate;flex:auto;align-items:center;width:100%;min-height:100%;padding:clamp(1.25rem,3.5vh,3rem) clamp(1.25rem,5vw,4.5rem);display:flex;position:relative;overflow:visible}.library-hero:before{content:"";z-index:-1;background:radial-gradient(58% 62% at 72% 30%, color-mix(in srgb, var(--accent) 26%, transparent), transparent 68%), radial-gradient(70% 55% at 6% 8%, color-mix(in srgb, var(--desk-lift) 95%, transparent), transparent 60%);opacity:.9;pointer-events:none;position:absolute;inset:0}.app-shell--light .library-hero:before{background:radial-gradient(58% 62% at 72% 30%, color-mix(in srgb, var(--accent) 20%, transparent), transparent 66%), radial-gradient(80% 60% at 4% 0%, #fffaf1eb, transparent 62%);opacity:1}.library-hero:after{content:"";z-index:-1;background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--ink) 14%, transparent) 30%, color-mix(in srgb, var(--ink) 14%, transparent) 70%, transparent);pointer-events:none;height:1px;position:absolute;bottom:22%;left:0;right:0}.library-hero--dropping:before{opacity:1;background:radial-gradient(70% 80% at 50% 40%, color-mix(in srgb, var(--accent) 32%, transparent), transparent 72%)}.library-hero__inner{grid-template-columns:minmax(0,1fr);grid-template-areas:"copy""packs""foot";align-content:center;gap:clamp(2.3rem,4.4vw,3.7rem);width:min(100%,84rem);margin:0 auto;display:grid}@media (width>=62rem){.library-hero__inner{grid-template-columns:minmax(24rem,.95fr) minmax(22rem,1.05fr);grid-template-areas:"copy stage""packs packs""foot foot";align-items:start;column-gap:clamp(2rem,4vw,4rem)}}.library-hero__copy{animation:hero-rise .62s var(--ease-out) both;flex-direction:column;grid-area:copy;gap:1rem;display:flex}.library-hero__eyebrow{letter-spacing:.16em;text-transform:uppercase;color:color-mix(in srgb, var(--accent-strong) 80%, var(--ink-soft));margin:0;font-size:.72rem;font-weight:650}.library-hero__title{flex-direction:column;gap:.35rem;margin:0;display:flex}.library-hero__wordmark{font-family:var(--font-display);letter-spacing:-.05em;color:var(--ink);font-size:clamp(3.6rem,8vw,6.75rem);font-weight:500;line-height:.86}.library-hero__tagline{max-width:22ch;font-family:var(--font-ui);letter-spacing:-.025em;color:color-mix(in srgb, var(--ink) 88%, var(--desk));font-size:clamp(1.15rem,2vw,1.6rem);font-weight:550;line-height:1.18}.library-hero__lede{max-width:44ch;color:var(--ink-soft);margin:0;font-size:1rem;line-height:1.6}.library-hero__actions{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-top:.35rem;display:flex}.library-hero__cta{appearance:none;border:1px solid color-mix(in srgb, var(--accent) 60%, var(--control-border));border-radius:var(--radius-md);background:color-mix(in srgb, var(--accent) 22%, var(--desk-lift));color:var(--ink);font:inherit;letter-spacing:-.015em;cursor:pointer;box-shadow:var(--shadow-soft);transition:background-color var(--duration-ui) var(--ease-out), border-color var(--duration-ui) var(--ease-out), transform var(--duration-ui) var(--ease-out);padding:.85rem 1.6rem;font-size:1rem;font-weight:650}.library-hero__cta:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 34%, var(--desk-lift));border-color:var(--accent-strong);transform:translateY(-1px)}.library-hero__cta:active:not(:disabled){transform:translateY(0)}.library-hero__cta:focus-visible{outline:2px solid var(--accent-strong);outline-offset:3px}.library-hero__cta:disabled{opacity:.55;cursor:wait}.library-hero__drop-hint{color:var(--ink-soft);margin:0;font-size:.9rem}.library-hero--dropping .library-hero__drop-hint{color:var(--accent-strong)}.library-hero__facts{letter-spacing:.01em;color:var(--ink-soft);flex-wrap:wrap;gap:.4rem 1.35rem;margin:.35rem 0 0;padding:0;font-size:.82rem;list-style:none;display:flex}.library-hero__facts li{position:relative}.library-hero__facts li+li:before{content:"";background:color-mix(in srgb, var(--ink) 35%, transparent);border-radius:50%;width:3px;height:3px;position:absolute;top:50%;left:-.72rem;transform:translateY(-50%)}.library-hero__error{color:color-mix(in srgb, #c45b5b 78%, var(--ink));margin:.25rem 0 0;font-size:.9rem}.library-hero__stage{pointer-events:none;perspective:1500px;perspective-origin:55% 48%;grid-area:stage;min-height:clamp(30rem,52vh,36rem);display:none;position:relative;overflow:visible}@media (width>=62rem){.library-hero__stage{display:block}}.library-hero__fan{transform-style:preserve-3d;transform:rotateY(calc(-10deg + var(--pointer-x,0) * 10deg)) rotateX(calc(3deg + var(--pointer-y,0) * -6deg));transition:transform .42s var(--ease-out);position:absolute;inset:0}.library-hero__row{transform-style:preserve-3d;transform:translateY(calc((var(--row) - .2) * 6.72rem)) translateZ(calc(var(--row) * -48px));position:absolute;inset:0}.library-hero__book{--strip:3.78rem;aspect-ratio:2/3;border-radius:.16rem var(--radius-sm) var(--radius-sm) .16rem;outline-offset:-1px;width:clamp(6.48rem,8.64vw,8.1rem);transform:translate(-50%, -50%) translateX(calc((var(--i) - var(--mid)) * var(--strip))) translateY(calc((var(--i) - var(--mid)) * -.34rem)) rotate(calc((var(--i) - var(--mid)) * 2.2deg)) translateZ(calc(var(--i) * 10px));transition:transform .38s var(--ease-out), opacity .3s var(--ease-out), filter .3s var(--ease-out);animation:hero-deal .64s var(--ease-out) both;animation-delay:calc((var(--row) * 90ms) + (var(--i) * 45ms));outline:1px solid oklch(0% 0 0/.16);flex-direction:column;justify-content:flex-end;gap:.1rem;margin:0;padding:.66rem .6rem;display:flex;position:absolute;top:18.5rem;left:50%;box-shadow:-8px 12px 24px #0000004d}.library-hero__row .library-hero__book:last-child{--strip:3.78rem}.library-hero__book:before{content:"";border-radius:inherit;background:linear-gradient(90deg,oklch(0% 0 0/.32),oklch(0% 0 0/.06) 65%,#0000);width:.4rem;position:absolute;inset:0 auto 0 0}.library-hero__row:last-child .library-hero__book:last-child:after{content:"";opacity:.85;background:repeating-linear-gradient(#e3dbcb,#e3dbcb 2px,#bdb5a5 2px 3px);border-radius:0 .1rem .1rem 0;width:.2rem;position:absolute;top:.22rem;bottom:.22rem;right:-.2rem}.library-hero__book--dim{opacity:.38;filter:saturate(.55);transform:translate(-50%, -50%) translateX(calc((var(--i) - var(--mid)) * var(--strip))) translateY(calc((var(--i) - var(--mid)) * -.34rem + .66rem)) rotate(calc((var(--i) - var(--mid)) * 2.2deg)) translateZ(calc(var(--i) * 10px - 28px))}.library-hero__book-title,.library-hero__book-author{width:calc(var(--strip) - .7rem);overflow-wrap:normal;-webkit-hyphens:none;hyphens:none;text-wrap:balance}.library-hero__row .library-hero__book:last-child .library-hero__book-title,.library-hero__row .library-hero__book:last-child .library-hero__book-author{width:auto}.library-hero__book-title{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:.74rem;font-weight:550;line-height:1.15}.library-hero__book-author{letter-spacing:.02em;opacity:.82;margin:0;font-size:.66rem}.library-hero__packs{z-index:1;animation:hero-rise .62s var(--ease-out) both;flex-direction:column;grid-area:packs;gap:.85rem;animation-delay:90ms;display:flex;position:relative}.library-hero__packs-head{flex-direction:column;gap:.2rem;display:flex}.library-hero__packs-title{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin:0;font-size:.78rem;font-weight:650}.library-hero__packs-note{color:var(--ink-soft);margin:0;font-size:.88rem}.library-hero__pack-list{grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.6rem;margin:0;padding:0;list-style:none;display:grid}.library-hero__pack{appearance:none;text-align:left;cursor:pointer;width:100%;height:100%;font:inherit;color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-md);background:color-mix(in srgb, var(--desk-lift) 82%, transparent);transition:border-color var(--duration-ui) var(--ease-out), background-color var(--duration-ui) var(--ease-out), transform var(--duration-ui) var(--ease-out);flex-direction:column;gap:.3rem;padding:.85rem .95rem .9rem;display:flex}.library-hero__pack:hover:not(:disabled),.library-hero__pack:focus-visible{border-color:color-mix(in srgb, var(--accent) 55%, var(--line));background:var(--desk-lift);transform:translateY(-2px)}.library-hero__pack:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px}.library-hero__pack:disabled{opacity:.55;cursor:wait}.library-hero__pack-spines{gap:2px;max-width:100%;height:1.35rem;margin-bottom:.15rem;display:flex;overflow:hidden}.library-hero__pack-spine{border-radius:1px;flex:1 1 0;width:auto;min-width:.18rem;max-width:.42rem;box-shadow:inset -1px 0 oklch(0% 0 0/.25)}.library-hero__pack-name{letter-spacing:-.015em;font-weight:650}.library-hero__pack-meta{color:var(--ink-soft);font-size:.85rem;line-height:1.4}.library-hero__pack-count{letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb, var(--accent-strong) 70%, var(--ink-soft));margin-top:auto;padding-top:.35rem;font-size:.74rem}.library-hero__foot{border-top:1px solid var(--line);animation:hero-rise .62s var(--ease-out) both;flex-wrap:wrap;grid-area:foot;justify-content:space-between;align-items:center;gap:.75rem 1.5rem;padding-top:1rem;animation-delay:.16s;display:flex}.library-hero__ghost{appearance:none;color:var(--ink-soft);font:inherit;cursor:pointer;text-underline-offset:.18em;text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--ink-soft) 45%, transparent);text-decoration-color:color-mix(in srgb, var(--ink-soft) 45%, transparent);background:0 0;border:0;padding:.25rem 0;font-size:.92rem}.library-hero__ghost:hover:not(:disabled){color:var(--ink)}.library-hero__ghost:focus-visible{outline:2px solid var(--accent-strong);outline-offset:3px}.library-hero__restore{flex-wrap:wrap;align-items:center;gap:.4rem .7rem;display:flex}.library-hero__restore-label{color:var(--ink-soft);font-size:.88rem}.library-hero__restore .backup-actions{gap:.35rem;display:flex}.library-hero--busy{justify-content:center}.library-hero__busy-panel{flex-direction:column;gap:1rem;width:min(100%,26rem);margin:0 auto;display:flex}.library-hero__busy-title{font-family:var(--font-display);letter-spacing:-.035em;color:var(--ink);margin:0;font-size:clamp(1.6rem,3vw,2.25rem);font-weight:500}.app-shell--ui-minimal .library-hero:before,.app-shell--ui-minimal .library-hero:after{display:none}.app-shell--ui-minimal .library-hero__pack,.app-shell--ui-minimal .library-hero__cta{box-shadow:none;background:0 0}.app-shell--ui-modern .library-hero__wordmark{letter-spacing:-.055em;font-weight:650}.app-shell--light .library-hero__book{outline-color:oklch(0% 0 0/.1);box-shadow:0 18px 34px #24262a2e}@keyframes hero-rise{0%{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:translateY(0)}}@keyframes hero-deal{0%{opacity:0;transform:translate(-50%, -38%) translateX(calc((var(--i) - var(--mid)) * .7rem)) rotate(calc((var(--i) - var(--mid)) * 1deg)) translateZ(0)}}@media (prefers-reduced-motion:reduce){.library-hero__copy,.library-hero__packs,.library-hero__foot,.library-hero__book{animation:none}.library-hero__fan,.library-hero__book,.library-hero__pack{transition:none}}.app-shell{--desk:#10131a;--desk-lift:#161a22;--lamp:transparent;--ink:#eceff3;--ink-soft:#eceff39e;--line:#eceff317;--accent:#6f93a3;--accent-strong:#8fb4c2;--page:#1c1f24;--page-ink:#e8eaed;--control:#ffffff09;--control-border:#eceff324;--radius-sm:.4rem;--radius-md:.55rem;--radius-lg:.85rem;--shadow-soft:0 10px 28px #06080c8c;--font-display:"Fraunces", "Iowan Old Style", Georgia, serif;--font-ui:"Manrope", "Segoe UI", sans-serif;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-theme:cubic-bezier(.2, 0, 0, 1);--duration-ui:.18s;--duration-theme:.28s;--app-header-h:3.15rem;background-color:var(--desk);height:100%;min-height:100%;color:var(--ink);font-family:var(--font-ui);transition-property:background-color,color;transition-duration:var(--duration-theme);transition-timing-function:var(--ease-theme);flex-direction:column;display:flex}.app-shell--light{--desk:#e2e4e7;--desk-lift:#eceef1;--ink:#24262a;--ink-soft:#24262a94;--line:#24262a1a;--accent:#456978;--accent-strong:#355562;--page:#f4f5f6;--page-ink:#24262a;--control:#24262a0a;--control-border:#24262a24;--shadow-soft:0 10px 26px #24262a14}.app-shell--ui-modern{--desk:#0e1116;--desk-lift:#151920;--line:#eceff324;--control:#ffffff0e;--control-border:#eceff32e;--radius-sm:.28rem;--radius-md:.36rem;--radius-lg:.44rem;--shadow-soft:0 1px 0 #ffffff0a, 0 8px 20px #05070a73;--font-display:"Manrope", "Segoe UI", sans-serif;--app-header-h:2.95rem;--duration-ui:.14s}.app-shell--ui-modern.app-shell--light{--desk:#dfe2e6;--desk-lift:#e8ebef;--line:#24262a24;--control:#24262a0d;--control-border:#24262a29;--shadow-soft:0 1px 0 #ffffff8c, 0 6px 16px #24262a12}.app-shell--ui-modern .app-shell__brand{letter-spacing:-.045em;font-weight:650}.app-shell--ui-modern .app-shell__header{background-color:color-mix(in srgb, var(--desk-lift) 88%, transparent)}.app-shell--ui-minimal{--radius-sm:.12rem;--radius-md:.16rem;--radius-lg:.2rem;--shadow-soft:none;--desk-lift:var(--desk);--control:transparent;--control-border:color-mix(in srgb, var(--ink) 16%, transparent);--line:color-mix(in srgb, var(--ink) 11%, transparent);--accent:color-mix(in srgb, var(--ink) 48%, #6f93a3);--accent-strong:var(--ink);--font-display:"Manrope", "Segoe UI", sans-serif;--app-header-h:2.85rem}.app-shell--ui-minimal.app-shell--light{--accent:color-mix(in srgb, var(--ink) 42%, #456978)}.app-shell--ui-minimal .app-shell__brand{letter-spacing:-.02em;font-size:1.1rem;font-weight:500}.app-shell--ui-minimal .app-shell__header{border-bottom-color:color-mix(in srgb, var(--ink) 14%, transparent)}.app-shell--ui-minimal .shelf-flat-bay,.app-shell--ui-minimal .gallery-shelf__loading{box-shadow:none;background:0 0}.app-shell--ui-minimal .reader-tools{background-color:#0000}.app-shell--ui-minimal .shelf-book__cover{box-shadow:none}.app-shell__header{min-height:var(--app-header-h);border-bottom:1px solid var(--line);transition-property:background-color,border-color,color;transition-duration:var(--duration-theme);transition-timing-function:var(--ease-theme);background-color:#0000;flex-shrink:0;justify-content:space-between;align-items:center;gap:.75rem 1rem;padding:.45rem 1.1rem;display:flex;position:relative}.app-shell__header--library{display:flex}.app-shell__header--setup{border-bottom-color:#0000}.app-shell--ui-minimal .app-shell__header{padding-block:.4rem}.app-shell__brand-block{flex:1 1 0;align-items:baseline;gap:.6rem;min-width:0;display:flex}.app-shell__brand{font-family:var(--font-display);letter-spacing:-.03em;color:var(--ink);text-wrap:balance;margin:0;font-size:1.22rem;font-weight:560;line-height:1}.app-shell__count{color:var(--ink-soft);font-variant-numeric:tabular-nums;letter-spacing:.01em;white-space:nowrap;margin:0;font-size:.78rem;font-weight:520}.app-shell__mode{z-index:1;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.app-shell__prefs{flex-wrap:nowrap;flex:1 1 0;justify-content:flex-end;align-items:center;gap:.28rem;min-width:0;display:flex}@media (width<=720px){.app-shell__header--library{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand prefs""mode mode";row-gap:.45rem;display:grid}.app-shell__header--library .app-shell__brand-block{flex:unset;grid-area:brand}.app-shell__header--library .app-shell__mode{grid-area:mode;justify-self:start;position:static;transform:none}.app-shell__header--library .app-shell__prefs{flex:unset;grid-area:prefs}}.app-shell__main{flex:1;justify-content:center;align-items:stretch;height:auto;min-height:0;padding:.65rem 0 .85rem;display:flex;overflow:auto}.app-shell__main:has(.gallery-shelf--stage3d){padding:0;overflow:hidden}.app-shell__main:has(.library-hero){padding:0;overflow:auto}.app-shell__main--flush{justify-content:stretch;align-items:stretch;padding:0;overflow:hidden}.app-shell__main--flush>*{flex:auto;width:100%;min-width:0;height:100%;min-height:0}.library-home-loading{flex:1;justify-content:center;align-items:center;padding:2rem 1rem;display:flex}.library-home-error{max-width:28rem;color:color-mix(in srgb, #c45b5b 75%, var(--ink));margin:2rem auto}.ui-btn{border:1px solid var(--control-border);background:var(--control);color:var(--ink);font:inherit;cursor:pointer;border-radius:var(--radius-sm);min-height:2.25rem;transition-property:transform,border-color,background-color,color;transition-duration:var(--duration-ui);transition-timing-function:var(--ease-out);padding:.45rem .85rem;font-weight:500}.ui-btn:hover:not(:disabled),.ui-btn:focus-visible{border-color:var(--accent);color:var(--accent-strong);outline:none}.ui-btn:active:not(:disabled){transform:scale(.97)}.ui-btn:disabled{opacity:.4;cursor:not-allowed}@media (prefers-reduced-motion:reduce){.app-shell,.app-shell__header,.ui-btn{transition:none}.ui-btn:active:not(:disabled){transform:none}}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial}}}@layer theme{:root,:host{--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--ease-out:cubic-bezier(0, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.fixed{position:fixed}.block{display:block}.contents{display:contents}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;min-height:100%;margin:0}body{-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-family:Manrope,Segoe UI,sans-serif;line-height:1.5;overflow:hidden}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}
