html.reader-mode,body.reader-mode{height:100vh;height:100dvh;overflow:hidden}body.reader-mode{display:flex;flex-direction:column}.reader-wrap{flex:1;min-height:0;display:flex;flex-direction:column}.reader-sommaire-wrap{position:relative}.reader-sommaire{display:none;flex-direction:column;position:absolute;bottom:calc(100% + var(--space-2));left:0;width:22rem;max-width:calc(100vw - var(--space-8));max-height:60dvh;overflow-y:auto;overscroll-behavior:contain;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-2)0;z-index:100}.reader-sommaire.is-open{display:flex}.reader-sommaire__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.reader-sommaire__item{display:grid;grid-template-columns:1.5rem 1fr minmax(6rem,max-content);align-items:baseline;gap:var(--space-2);width:100%;text-align:left;background:0 0;border:none;padding:var(--space-2)var(--space-4);cursor:pointer;transition:background 150ms ease}.reader-sommaire__item:hover{background:var(--surface-hover)}.reader-sommaire__item:focus-visible{outline:2px solid var(--focus-outline);outline-offset:-2px}.reader-sommaire__num{font-family:var(--font-ui);font-size:.75rem;font-weight:600;color:var(--text-secondary);text-align:right}.reader-sommaire__title{font-family:var(--font-ui);font-size:.875rem;font-weight:500;color:var(--text);text-align:left;line-height:1.35}.reader-sommaire__author{font-family:var(--font-ui);font-size:.8125rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reader-viewport{flex:1;position:relative;overflow:hidden;background:var(--bg-alt);display:flex;align-items:center;justify-content:center;min-height:0}.reader-canvas-wrap{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;transition:transform 280ms cubic-bezier(.4,0,.2,1),opacity 280ms ease}.reader-canvas-wrap canvas{display:block;max-width:100%;max-height:100%;box-shadow:var(--shadow-lg)}.reader-canvas-wrap--enter-left{transform:translateX(-100%);opacity:0;will-change:transform,opacity}.reader-canvas-wrap--enter-right{transform:translateX(100%);opacity:0;will-change:transform,opacity}.reader-canvas-wrap--active{transform:translateX(0);opacity:1}.reader-canvas-wrap--exit-left{transform:translateX(-100%);opacity:0;will-change:transform,opacity}.reader-canvas-wrap--exit-right{transform:translateX(100%);opacity:0;will-change:transform,opacity}@media(prefers-reduced-motion:reduce){.reader-canvas-wrap{transition:opacity 200ms ease}.reader-canvas-wrap--enter-left,.reader-canvas-wrap--enter-right{transform:none;opacity:0}.reader-canvas-wrap--exit-left,.reader-canvas-wrap--exit-right{transform:none;opacity:0}}.reader-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg-alt);z-index:10;transition:opacity 200ms ease}.reader-loading.is-hidden{opacity:0;pointer-events:none}.reader-spinner{width:2rem;height:2rem;border:2px solid var(--border);border-top-color:var(--text-muted);border-radius:50%;animation:reader-spin 600ms linear infinite}@keyframes reader-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.reader-spinner{animation:none;opacity:.5}}.reader-nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--space-4);padding-left:max(var(--space-4),env(safe-area-inset-left,0));padding-right:max(var(--space-4),env(safe-area-inset-right,0));padding-bottom:env(safe-area-inset-bottom,0);height:calc(3rem + env(safe-area-inset-bottom,0));flex-shrink:0;background:var(--surface);border-top:1px solid var(--border);position:relative;z-index:101}.reader-nav__left{display:flex;align-items:center;gap:var(--space-3);justify-content:flex-start}.reader-nav__center{display:flex;align-items:center;justify-content:center;gap:var(--space-4)}.reader-nav__right{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-3)}.reader-nav__back{display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-ui);font-size:.875rem;font-weight:500;color:var(--text-secondary);text-decoration:none;white-space:nowrap;flex-shrink:0}.reader-nav__back:hover{color:var(--text);text-decoration:none}.reader-nav__back:focus-visible{outline:2px solid var(--focus-outline);outline-offset:2px;border-radius:var(--radius-sm)}.reader-nav__sommaire-toggle{display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-ui);font-size:.875rem;font-weight:500;color:var(--text-secondary);background:0 0;border:1px solid var(--border);border-radius:var(--radius-full);padding:.25rem .75rem;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background 150ms ease,border-color 150ms ease,color 150ms ease}.reader-nav__sommaire-toggle:hover{color:var(--text);border-color:var(--text-secondary);background:var(--bg-alt)}.reader-nav__sommaire-toggle:focus-visible{outline:2px solid var(--focus-outline);outline-offset:2px}.reader-nav__btn{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--radius-full);border:1px solid var(--border);background:0 0;color:var(--text);cursor:pointer;transition:background 150ms ease,border-color 150ms ease}.reader-nav__btn:hover:not(:disabled){background:var(--bg-alt);border-color:var(--text-secondary)}.reader-nav__btn:disabled{opacity:.35;cursor:not-allowed}.reader-nav__btn:focus-visible{outline:2px solid var(--focus-outline);outline-offset:2px}.reader-nav__counter{font-family:var(--font-ui);font-size:.875rem;color:var(--text-secondary);min-width:6rem;text-align:center;font-variant-numeric:tabular-nums}.reader-nav__tagline{font-family:var(--font-ui);font-size:.75rem;color:var(--text-secondary);white-space:nowrap}@media(max-width:640px){.reader-nav__tagline{display:none}.reader-nav{gap:var(--space-2);padding-left:var(--space-2);padding-right:var(--space-2)}.reader-nav__sommaire-toggle{padding:.25rem .5rem}.reader-nav__sommaire-toggle .reader-nav__sommaire-label{display:none}.reader-nav__counter{min-width:4rem;font-size:.75rem}.reader-nav__btn{width:2.75rem;height:2.75rem}.reader-nav__back-label{display:none}.reader-nav__download-label{display:none}}.dark.reader-mode body::before{display:none}