.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);overflow-wrap:anywhere}.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-4) var(--s-5);border:none;border-radius:24px 24px 0 0;box-shadow:none}.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-full);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-feature-settings:"tnum";font-variant-numeric:tabular-nums;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-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:var(--fs-xs)}.reader-pageinput{width:56px;height:34px;text-align:center;font-family:var(--font-sans);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:var(--fs-sm);color:var(--ink);border:1px solid var(--line-strong);border-radius:14px;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{border-color:var(--accent);box-shadow:none;outline:2px solid var(--accent);outline-offset:2px}.reader-progress{height:3px;background:var(--surface-3);border-inline:none;overflow:hidden}.reader-progress__bar{height:100%;background:var(--accent)}.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(--surface-3);border:none;border-radius:0 0 24px 24px;touch-action:pan-y}.reader-canvas{border-radius:var(--r-xs);box-shadow:var(--shadow-md);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:14px;background:var(--accent);box-shadow:var(--shadow-md);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-sans);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;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)}.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{display:none}.reader-toolbar{flex-wrap:wrap}.reader-toolbar__group:last-child{margin-left:auto}.reader-tbtn--label{min-width:44px;padding-inline:var(--s-2)}.reader-stage{padding:var(--s-4) var(--s-1)}.reader-pageinput,.reader-tbtn{height:44px}}@media (max-width:719px),(pointer:coarse){.reader-toolbar{flex-wrap:wrap}.reader-tbtn{min-width:44px;height:44px;flex-shrink:0}.reader-pageinput{min-height:44px;font-size:16px}}.reader-head{align-items:center;flex-wrap:nowrap;padding:18px 24px;border-radius:26px;background:var(--pastel-mint);border:1px solid var(--line);gap:20px}.reader-head__meta{min-width:0;flex:1 1}.reader-head__eyebrow{display:block;margin-bottom:6px;font-size:11px;font-weight:650;color:var(--ink-2)}.reader-title{font-family:var(--font-sans);font-size:clamp(22px,2.5vw,30px);font-weight:750;letter-spacing:-.035em}.reader-author{font-family:var(--font-sans);font-style:normal}.reader-head__art{width:84px;height:72px;flex:0 0 84px;object-fit:contain}.reader-head>.badge{flex:none;background:var(--surface)}.reader-toolbar{border:1px solid var(--line);border-bottom:0;padding:14px 20px;background:var(--surface)}.reader-stage{background:var(--surface-2);border:1px solid var(--line);border-top:0;padding-block:28px}.reader-pageinput{background:var(--surface-2);border-radius:12px}.reader-tbtn{border-radius:50%}.reader-tbtn--label{border-radius:20px}.reader-error__card,.reader-loading__card{border:1px solid var(--line);border-radius:28px;background:var(--surface);padding:28px}.reader-state-art{display:block;width:160px;height:136px;object-fit:contain;margin:0 auto 18px}@media (max-width:620px){.reader-head{display:grid;grid-template-columns:minmax(0,1fr) 60px;padding:18px;grid-gap:10px 12px;gap:10px 12px}.reader-head__art{width:60px;height:60px;flex-basis:60px}.reader-head>.badge{grid-column:1/-1;justify-self:start}.reader-title{font-size:22px}.reader-toolbar{padding:12px}.reader-head__eyebrow{font-size:10px}}