.reader-page{flex-direction:column;min-height:calc(100dvh - var(--topbar-h, 64px) - var(--s-9) - var(--s-7))}.reader-head,.reader-page{display:flex;gap:var(--s-5)}.reader-head{align-items:flex-end;justify-content:space-between;flex-wrap:wrap}.reader-title{font-size:var(--fs-2xl);font-weight:var(--fw-semibold);line-height:var(--lh-tight);letter-spacing:var(--ls-tight);color:var(--ink)}.reader-author,.reader-title{font-family:var(--font-serif)}.reader-author{display:block;margin-top:var(--s-2);font-style:italic;font-size:var(--fs-sm);color:var(--ink-2)}.reader{display:flex;flex-direction:column;flex:1 1;min-width:0}.reader-toolbar{position:-webkit-sticky;position:sticky;top:var(--topbar-h,64px);z-index:var(--z-sticky);display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-3) var(--s-4);background:var(--glass-bg-2);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--line);border-bottom:none;border-radius:var(--r-lg) var(--r-lg) 0 0;box-shadow:var(--shadow-sm)}.reader-toolbar__group{display:flex;align-items:center;gap:var(--s-2);min-width:0}.reader-toolbar__sep{width:1px;height:22px;background:var(--line-strong);margin-inline:var(--s-2)}.reader-tbtn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-width:36px;height:36px;padding-inline:var(--s-3);border-radius:var(--r-sm);color:var(--ink-2);font-size:var(--fs-sm);font-weight:var(--fw-semibold);transition:background-color var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard)}.reader-tbtn:hover{background:var(--surface-3);color:var(--ink)}.reader-tbtn:disabled{opacity:.38;pointer-events:none}.reader-tbtn--label{font-family:var(--font-mono);font-size:var(--fs-xs)}.reader-pagejump{display:inline-flex;align-items:center;gap:var(--s-3);font-size:var(--fs-sm);color:var(--ink-3);white-space:nowrap}.reader-pagejump__total{font-family:var(--font-mono);font-size:var(--fs-xs)}.reader-pageinput{width:56px;height:34px;text-align:center;font-family:var(--font-mono);font-size:var(--fs-sm);background:var(--surface);color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--r-sm);transition:border-color var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard);-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.reader-pageinput::-webkit-inner-spin-button,.reader-pageinput::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.reader-pageinput:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}.reader-progress{height:3px;background:var(--surface-3);border-inline:1px solid var(--line);overflow:hidden}.reader-progress__bar{height:100%;background:var(--accent);transition:width var(--dur-base) var(--ease-out)}.reader-stage{position:relative;flex:1 1;display:flex;justify-content:safe center;align-items:flex-start;overflow:auto;min-height:320px;padding:var(--s-6) var(--s-2);background:var(--bg-sunken);border:1px solid var(--line);border-top:none;border-radius:0 0 var(--r-lg) var(--r-lg);touch-action:pan-y}.reader-canvas{border-radius:var(--r-xs);box-shadow:var(--shadow-lg);background:var(--white);transition:opacity var(--dur-fast) var(--ease-standard)}.reader-canvas[data-rendering=true]{opacity:.45}.reader-stage__spinner{position:absolute;top:var(--s-9);left:50%;transform:translateX(-50%);z-index:var(--z-raised)}.reader-loading{flex:1 1;display:grid;place-items:center;padding:var(--s-9) var(--s-4)}.reader-loading__card{width:min(100%,440px);display:flex;flex-direction:column;gap:var(--s-5);text-align:center;align-items:center}.reader-loading__cover{width:96px;height:calc(96px * 4.4 / 3);border-radius:var(--r-md);background:linear-gradient(150deg,var(--accent),var(--accent-strong));box-shadow:var(--shadow-lg);display:grid;place-items:center;color:var(--accent-contrast)}.reader-loading__title{font-family:var(--font-serif);font-size:var(--fs-xl);font-weight:var(--fw-semibold);line-height:var(--lh-snug);color:var(--ink)}.reader-loading__meta{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3)}.reader-loading__bar{width:100%;height:8px;border-radius:var(--r-full);background:var(--surface-3);overflow:hidden}.reader-loading__fill{height:100%;border-radius:var(--r-full);background:var(--accent);transition:width var(--dur-fast) var(--ease-out)}.reader-error{flex:1 1;display:grid;place-items:center;padding:var(--s-9) var(--s-4)}.reader-error__card{width:min(100%,440px);display:flex;flex-direction:column;gap:var(--s-5)}.reader-open-error{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-3);padding:var(--s-10) var(--s-5);color:var(--bad);text-align:center}.reader-open-error .t-sm{color:var(--ink-3)}@media (max-width:719px){.reader-title{font-size:var(--fs-xl)}.reader-toolbar{padding:var(--s-2) var(--s-3)}.reader-pagejump__label,.reader-tbtn--label{display:none}.reader-stage{padding:var(--s-4) var(--s-1)}.reader-pageinput,.reader-tbtn{height:44px}}