.theme-toggle{--toggle-size:2.25rem;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:var(--control);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:1px solid var(--control-border);border-radius:var(--radius-sm);background:var(--control);align-items:stretch;display:inline-flex;overflow:hidden}.ui-style-select__option{border:0;border-right:1px solid var(--control-border);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;margin:0;padding:.35rem .65rem;font-size:.78rem;font-weight:560}.ui-style-select__option:last-child{border-right:0}.ui-style-select__option:hover{color:var(--ink)}.ui-style-select__option--active{color:var(--ink);background:color-mix(in srgb, var(--accent) 22%, transparent)}.ui-style-select__option:focus-visible{outline:2px solid var(--accent-strong);outline-offset:-2px;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}}.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:.04em;text-transform:uppercase;font-size:.72rem}.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:.08em;text-transform:uppercase;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:.7rem 1rem;font-size:.72rem;font-weight:650;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{border-bottom:1px solid var(--line);flex-shrink:0;align-items:center;min-height:3.25rem;padding:.55rem;display:flex}.reader-tools__toggle{border-radius:var(--radius-sm);width:100%;min-height:2.15rem;color:var(--ink-soft);font:inherit;letter-spacing:.04em;text-transform:uppercase;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;justify-content:center;align-items:center;gap:.45rem;padding:.35rem .4rem;font-size:.78rem;font-weight:600;display:flex}.reader-tools__toggle:hover,.reader-tools__toggle:focus-visible{color:var(--ink);background:var(--control);outline:none}.reader-tools__toggle:active{transform:scale(.97)}.reader-tools--collapsed .reader-tools__toggle-text{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.reader-tools__toggle-glyph{font-size:1.1rem;line-height:1}.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 .15rem;padding:0 1rem 1rem}.reader-tools__title{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:1.15rem;font-weight:600;line-height:1.25}.reader-tools__author{color:var(--ink-soft);margin:.3rem 0 .85rem;font-size:.88rem}.reader-tools__shelf{color:var(--accent-strong);font-size:.88rem;font-weight:550;text-decoration:none}.reader-tools__shelf:hover,.reader-tools__shelf:focus-visible{outline:none;text-decoration:underline}.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:.08em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 .55rem;font-size:.72rem;font-weight:650}.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__toggle,.reader-tools__font{transition:none}.reader-tools__toggle: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__chrome{flex-shrink:0;justify-content:flex-end;align-items:center;min-height:1rem;display:flex}.reader-viewport__progress{color:var(--ink-soft);font-variant-numeric:tabular-nums;letter-spacing:.04em;margin:0;font-size:.8rem;font-weight:500}.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:.12em;text-transform:uppercase;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:.7rem}.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:end;gap:1rem;display:flex}.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}@media (prefers-reduced-motion:reduce){.backup-actions__btn{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-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;transition-duration:var(--duration-ui,.16s);transition-timing-function:var(--ease-out,cubic-bezier(.23, 1, .32, 1));border:0;outline:1px solid oklch(0% 0 0/.1);align-items:flex-end;padding:.85rem;text-decoration:none;display:flex;position:relative}.app-shell--dark .shelf-book__cover{outline-color:oklch(100% 0 0/.1)}.shelf-book__cover:hover,.shelf-book__cover:focus-visible{outline-color:var(--accent);transform:translateY(-4px)}.shelf-book__cover:active{transform:translateY(-2px)scale(.97)}.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;width:100%;margin-top:.7rem}.shelf-book__title{letter-spacing:-.01em;margin:0;font-size:.9rem;font-weight:650}.shelf-book__author{color:var(--ink-soft);margin:.2rem 0 0;font-size:.8rem}.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}}.gallery-shelf{width:min(100%,72rem);color:var(--ink);margin-inline:auto}.gallery-shelf__header{justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.35rem;display:flex}.gallery-shelf__title{font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 .25rem;font-size:clamp(1.75rem,2.8vw,2.2rem);font-weight:600}.gallery-shelf__actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.35rem .55rem;display:flex}.gallery-shelf__import{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}.gallery-shelf__import:hover,.gallery-shelf__import:focus-visible{color:var(--accent-strong);background-color:var(--control);outline:none}.gallery-shelf__import:disabled{opacity:.45;cursor:not-allowed}.gallery-shelf__error{color:#c45a5a}.gallery-shelf__board{border-radius:var(--radius-lg);background-color:var(--desk-lift);border:1px solid var(--line);padding:1.35rem 1.15rem;position:relative}.gallery-shelf__row{grid-template-columns:repeat(auto-fill,minmax(8.75rem,1fr));align-items:start;gap:1.35rem 1rem;min-height:14rem;margin:0;padding:0;list-style:none;display:grid}.gallery-shelf__loading{place-items:center;min-height:14rem;padding:1.5rem .5rem;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:#f4f0e8;text-shadow:0 1px 2px #0006;text-align:left;margin:0;font-size:.95rem;line-height:1.25}.gallery-cover__badge{letter-spacing:.02em;border-radius:var(--radius-sm);color:#f4f0e8;background:#00000080;margin:0;padding:.2rem .45rem;font-size:.68rem;font-weight:600;position:absolute;top:.55rem;right:.55rem}.shelf-add{width:100%;max-width:9.5rem;margin-inline:auto}.shelf-add__tile{aspect-ratio:2/3;border:1px dashed color-mix(in srgb, var(--ink) 22%, transparent);border-radius:var(--radius-sm);width:100%;color:var(--ink-soft);cursor:pointer;font:inherit;transition-property:color,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;flex-direction:column;justify-content:center;align-items:center;gap:.45rem;display:flex}.shelf-add__tile:hover,.shelf-add__tile:focus-visible{color:var(--accent-strong);border-color:var(--accent);background-color:var(--control);outline:none}.shelf-add__tile:disabled{opacity:.45;cursor:not-allowed}.shelf-add__plus{font-size:1.6rem;font-weight:500;line-height:1}.shelf-add__label{font-size:.84rem;font-weight:550}@media (prefers-reduced-motion:reduce){.gallery-shelf__import,.shelf-add__tile{transition:none}}.app-shell{--desk:#12151a;--desk-lift:#181c22;--lamp:transparent;--ink:#eceff3;--ink-soft:#eceff3a8;--line:#eceff31a;--accent:#7a9eae;--accent-strong:#9bc0cd;--page:#1c1f24;--page-ink:#e8eaed;--control:#ffffff0a;--control-border:#eceff329;--radius-sm:.5rem;--radius-md:.75rem;--radius-lg:1rem;--shadow-soft:0 12px 28px #00000038;--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:.16s;--duration-theme:.28s;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:#eceae4;--desk-lift:#f7f5f0;--ink:#1a1c1f;--ink-soft:#1a1c1fa3;--line:#1a1c1f1a;--accent:#3d6a78;--accent-strong:#2f5561;--page:#faf8f3;--page-ink:#1a1c1f;--control:#1a1c1f0a;--control-border:#1a1c1f24;--shadow-soft:0 12px 28px #1a1c1f14}.app-shell--ui-modern{--radius-sm:.35rem;--radius-md:.45rem;--radius-lg:.55rem;--shadow-soft:0 4px 14px #00000029;--font-display:"Manrope", "Segoe UI", sans-serif;--line:color-mix(in srgb, var(--ink) 14%, transparent)}.app-shell--ui-modern.app-shell--light{--shadow-soft:0 4px 14px #1a1c1f0f}.app-shell--ui-minimal{--radius-sm:.2rem;--radius-md:.25rem;--radius-lg:.3rem;--shadow-soft:none;--desk-lift:var(--desk);--control:transparent;--accent:color-mix(in srgb, var(--ink) 55%, #7a9eae);--accent-strong:var(--ink)}.app-shell__header{border-bottom:1px solid var(--line);background-color:var(--desk-lift);transition-property:background-color,border-color,color;transition-duration:var(--duration-theme);transition-timing-function:var(--ease-theme);flex-shrink:0;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1.5rem;display:flex}.app-shell--ui-minimal .app-shell__header{padding-block:.65rem}.app-shell__prefs{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.65rem;display:flex}.app-shell__brand{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);margin:0;font-size:1.2rem;font-weight:550}.app-shell__main{flex:1;justify-content:center;height:auto;min-height:0;padding:1.5rem 1.75rem 2rem;display:flex;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}.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}}*,: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}
