/* Immersive book reader: paper themes, column pagination and page-turn motion.
   Loaded after book-market.css so it owns the reading surface. */

.reader-shell{
  --reader-bg:#f6f2e8; --reader-ink:#302b24; --reader-muted:#8b8172; --reader-accent:#2f5d8a;
  --reader-rule:rgba(48,43,36,.14); --reader-panel:#fffdf7; --reader-texture:none;
  --reader-font-size:18px; --reader-leading:1.95; --reader-measure:38em; --reader-gap:72px;
  --reader-serif:"Songti SC","STSong","Source Han Serif SC","Noto Serif CJK SC",Georgia,serif;
  --reader-sans:"Hiragino Sans GB","PingFang SC","Heiti SC","Microsoft YaHei",sans-serif;
  --reader-font:var(--reader-serif);
}
.reader-shell[data-font="sans"]{--reader-font:var(--reader-sans)}
.reader-shell[data-theme="paper"]{--reader-bg:#f6f2e8;--reader-ink:#302b24;--reader-muted:#8b8172;--reader-accent:#2f5d8a;--reader-rule:rgba(48,43,36,.14);--reader-panel:#fffdf7;
  --reader-texture:radial-gradient(circle at 18% 22%,rgba(140,120,80,.05),transparent 42%),radial-gradient(circle at 82% 78%,rgba(120,110,90,.05),transparent 45%)}
.reader-shell[data-theme="kraft"]{--reader-bg:#e3cda6;--reader-ink:#3a2d1c;--reader-muted:#8a7350;--reader-accent:#8c4327;--reader-rule:rgba(74,56,28,.22);--reader-panel:#f3e6cd;
  --reader-texture:radial-gradient(circle at 12% 18%,rgba(120,86,40,.16),transparent 38%),radial-gradient(circle at 76% 62%,rgba(104,74,36,.14),transparent 42%),radial-gradient(circle at 44% 92%,rgba(150,116,64,.12),transparent 40%),repeating-linear-gradient(96deg,rgba(120,92,48,.05) 0 2px,transparent 2px 5px)}
.reader-shell[data-theme="sepia"]{--reader-bg:#f0e2c6;--reader-ink:#493a24;--reader-muted:#95805c;--reader-accent:#a2532b;--reader-rule:rgba(73,58,36,.18);--reader-panel:#f9f0dc;
  --reader-texture:radial-gradient(circle at 24% 30%,rgba(150,110,60,.08),transparent 46%),radial-gradient(circle at 80% 70%,rgba(120,90,50,.07),transparent 44%)}
.reader-shell[data-theme="green"]{--reader-bg:#dfe9d8;--reader-ink:#2b3a29;--reader-muted:#71806c;--reader-accent:#2c6b45;--reader-rule:rgba(43,58,41,.16);--reader-panel:#eef5ea}
.reader-shell[data-theme="gray"]{--reader-bg:#e9ebee;--reader-ink:#2a2f36;--reader-muted:#7b828c;--reader-accent:#2f5f9e;--reader-rule:rgba(42,47,54,.14);--reader-panel:#f7f8fa}
.reader-shell[data-theme="night"]{--reader-bg:#16191d;--reader-ink:#c4bfb4;--reader-muted:#7e7a73;--reader-accent:#d0a55f;--reader-rule:rgba(255,255,255,.14);--reader-panel:#1e2227;
  --reader-texture:radial-gradient(circle at 30% 20%,rgba(120,140,170,.06),transparent 50%)}
.reader-shell[data-theme="ink"]{--reader-bg:#0d0f11;--reader-ink:#b6b2a9;--reader-muted:#6f6c66;--reader-accent:#9fb8d0;--reader-rule:rgba(255,255,255,.12);--reader-panel:#15181b}

.reader-shell.market-reader-page{padding:14px 4% 40px;max-width:1280px;margin:0 auto}
.reader-shell .reader-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:0 0 12px;border-bottom:1px solid var(--reader-rule)}
.reader-shell .reader-bar-main{display:flex;align-items:baseline;gap:12px;min-width:0}
.reader-shell .reader-bar-main strong{font:500 15px/1.4 var(--reader-serif);color:var(--reader-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.reader-shell .reader-bar-main small{font-size:11px;color:var(--reader-muted);white-space:nowrap}
.reader-shell .reader-bar-actions{display:flex;align-items:center;gap:6px}
.reader-shell .reader-icon-button{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px;padding:0 12px;border:1px solid var(--reader-rule);background:transparent;color:var(--reader-ink);border-radius:8px;font:500 13px/1 var(--reader-sans);cursor:pointer}
.reader-shell .reader-icon-button:hover{background:color-mix(in srgb,var(--reader-ink) 8%,transparent)}
.reader-shell .reader-layout{display:grid;grid-template-columns:236px minmax(0,1fr);gap:26px;align-items:start}
.reader-shell .reader-sidebar{position:sticky;top:16px;max-height:calc(100vh - 40px);overflow:auto}
.reader-shell .reader-sidebar>details{background:var(--reader-panel);border:1px solid var(--reader-rule);border-radius:8px;padding:0 14px}
.reader-shell .reader-sidebar summary{padding:13px 0;cursor:pointer;font-size:13px;color:var(--reader-ink);display:flex;align-items:center;gap:8px}
.reader-shell .reader-sidebar .market-contents{list-style:none;margin:0;padding:0 0 10px}
.reader-shell .reader-paper{background:var(--reader-bg);background-image:var(--reader-texture);color:var(--reader-ink);border:1px solid var(--reader-rule);border-radius:10px;padding:30px clamp(18px,4vw,52px) 28px;min-width:0;box-shadow:0 18px 40px -34px rgba(0,0,0,.45)}
.reader-shell .reader-kicker{display:flex;justify-content:space-between;gap:10px;font:400 10px/1.6 var(--reader-sans);letter-spacing:.14em;color:var(--reader-muted);text-transform:uppercase}
.reader-shell .reader-flow h1{font:500 clamp(22px,3.4vw,30px)/1.5 var(--reader-serif);margin:16px 0 14px;color:var(--reader-ink)}
.reader-shell .reader-divider{width:52px;height:1px;background:var(--reader-accent);opacity:.6;margin-bottom:22px}
.reader-shell .market-reading-text{font-family:var(--reader-font);font-size:var(--reader-font-size);line-height:var(--reader-leading);color:var(--reader-ink);white-space:pre-wrap;word-break:break-word}
.reader-shell .market-reading-text .reader-dialogue{color:var(--reader-accent)}

.reader-shell .reader-stage{position:relative;overflow:hidden;width:100%;max-width:var(--reader-measure);margin-inline:auto}
.reader-shell .reader-stage.reader-stage-scroll{overflow:visible;height:auto}
.reader-shell .reader-flow{position:relative;height:100%;will-change:transform;transition:transform .34s cubic-bezier(.22,.61,.36,1)}
.reader-shell .reader-stage-scroll .reader-flow{height:auto;column-width:auto;column-count:auto;transform:none !important;transition:none}
.reader-shell[data-mode="paged"] .reader-flow{column-width:var(--reader-col-width,600px);column-gap:var(--reader-gap);column-fill:auto;height:100%}
.reader-shell[data-mode="paged"] .reader-stage{height:clamp(380px,62vh,720px)}
.reader-shell .reader-turn-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2;background:var(--reader-bg);background-image:var(--reader-texture)}
.reader-shell .reader-turn-layer .reader-flow{position:absolute;top:0;left:0;width:100%;height:100%;padding:0}
.reader-shell .reader-turn-shade{position:absolute;top:0;bottom:0;width:64px}
.reader-shell .reader-turn-shade[data-direction="forward"]{right:0;background:linear-gradient(90deg,transparent,rgba(0,0,0,.18))}
.reader-shell .reader-turn-shade[data-direction="backward"]{left:0;background:linear-gradient(270deg,transparent,rgba(0,0,0,.18))}
.reader-shell[data-theme="night"] .reader-turn-shade[data-direction="forward"],
.reader-shell[data-theme="ink"] .reader-turn-shade[data-direction="forward"]{background:linear-gradient(90deg,transparent,rgba(0,0,0,.5))}
.reader-shell .reader-progress{font:400 11px/1 var(--reader-sans);color:var(--reader-muted);text-align:right;padding:10px 2px 0;letter-spacing:.06em}
.reader-shell .reader-hint{font:400 11px/1.7 var(--reader-sans);color:var(--reader-muted);padding:8px 2px 0}

.reader-shell .reader-sheet{position:fixed;inset:0;z-index:70;display:flex;justify-content:flex-end;background:rgba(12,12,12,.42)}
.reader-shell .reader-sheet[hidden]{display:none}
.reader-shell .reader-sheet-backdrop{position:absolute;inset:0;border:0;background:transparent;padding:0;cursor:pointer}
.reader-shell .reader-sheet-panel{position:relative;z-index:1;margin:0;width:min(420px,100%);height:100%;overflow:auto;background:var(--reader-panel);color:var(--reader-ink);border-left:1px solid var(--reader-rule);padding:20px 20px 40px;box-shadow:-20px 0 50px -30px rgba(0,0,0,.6)}
.reader-shell .reader-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--reader-rule)}
.reader-shell .reader-sheet-head h2{font:500 17px/1.4 var(--reader-serif);margin:0}
.reader-shell .reader-sheet-body{display:grid;gap:16px;padding:18px 0}
.reader-shell .reader-option{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.reader-shell .reader-option-column{display:block}
.reader-shell .reader-option-label{font:500 12px/1.6 var(--reader-sans);color:var(--reader-muted);letter-spacing:.04em}
.reader-shell .reader-choices{display:flex;gap:6px;flex-wrap:wrap}
.reader-shell .reader-choice{min-height:38px;padding:0 13px;border:1px solid var(--reader-rule);background:transparent;color:var(--reader-ink);border-radius:8px;font:500 12px/1 var(--reader-sans);cursor:pointer}
.reader-shell .reader-choice.active,.reader-shell .reader-choice[aria-pressed="true"]{background:var(--reader-accent);border-color:var(--reader-accent);color:#fff}
.reader-shell[data-theme="night"] .reader-choice.active,.reader-shell[data-theme="ink"] .reader-choice.active{color:#14161a}
.reader-shell .reader-stepper{display:flex;align-items:center;gap:8px}
.reader-shell .reader-size-value{min-width:34px;text-align:center;font:600 15px/1 var(--reader-sans)}
.reader-shell .reader-swatches{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;margin-top:10px}
.reader-shell .reader-swatch{display:flex;align-items:center;gap:7px;min-height:42px;padding:0 10px;border:1px solid var(--reader-rule);border-radius:8px;background:transparent;color:var(--reader-ink);font:400 11px/1 var(--reader-sans);cursor:pointer}
.reader-shell .reader-swatch.active{border-color:var(--reader-accent);box-shadow:inset 0 0 0 1px var(--reader-accent)}
.reader-shell .reader-swatch-dot{width:16px;height:16px;border-radius:50%;border:1px solid rgba(0,0,0,.18);flex:none}
.reader-shell .reader-swatch-dot[data-theme-dot="paper"]{background:#f6f2e8}
.reader-shell .reader-swatch-dot[data-theme-dot="kraft"]{background:#e3cda6}
.reader-shell .reader-swatch-dot[data-theme-dot="sepia"]{background:#f0e2c6}
.reader-shell .reader-swatch-dot[data-theme-dot="green"]{background:#dfe9d8}
.reader-shell .reader-swatch-dot[data-theme-dot="gray"]{background:#e9ebee}
.reader-shell .reader-swatch-dot[data-theme-dot="night"]{background:#16191d}
.reader-shell .reader-swatch-dot[data-theme-dot="ink"]{background:#0d0f11}
.reader-shell .reader-toggle{display:inline-flex;align-items:center;gap:8px;min-height:38px;padding:0 13px;border:1px solid var(--reader-rule);border-radius:8px;background:transparent;color:var(--reader-ink);font:500 12px/1 var(--reader-sans);cursor:pointer}
.reader-shell .reader-toggle>span{width:30px;height:17px;border-radius:999px;background:color-mix(in srgb,var(--reader-ink) 20%,transparent);position:relative;transition:background .2s}
.reader-shell .reader-toggle>span:after{content:'';position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:#fff;transition:transform .2s}
.reader-shell .reader-toggle.active{border-color:var(--reader-accent);color:var(--reader-accent)}
.reader-shell .reader-toggle.active>span{background:var(--reader-accent)}
.reader-shell .reader-toggle.active>span:after{transform:translateX(13px)}
.reader-shell .reader-sheet-note{font:400 11px/1.9 var(--reader-sans);color:var(--reader-muted);border-top:1px solid var(--reader-rule);padding-top:14px}

.reader-shell .market-reader-navigation{display:flex;gap:10px;margin-top:26px;padding-top:20px;border-top:1px solid var(--reader-rule);flex-wrap:wrap}
.reader-shell .market-reader-navigation .button{flex:1 1 auto;min-height:44px}
.reader-shell .market-reader-end{margin-top:18px;text-align:center;font:400 11px/1.9 var(--reader-sans);color:var(--reader-muted);letter-spacing:.1em}
.reader-shell .market-read-receipt{padding:18px 0 0;border-top:1px solid var(--reader-rule);margin-top:22px}

/* Immersive: the reader becomes the whole screen and hides the site chrome. */
.reader-shell[data-immersive="true"]{position:fixed;inset:0;z-index:60;max-width:none;margin:0;padding:0;background:var(--reader-bg);background-image:var(--reader-texture);overflow:hidden;display:flex;flex-direction:column}
.reader-shell[data-immersive="true"] .reader-bar{padding:calc(8px + env(safe-area-inset-top)) 14px 8px;border-bottom:1px solid var(--reader-rule);background:color-mix(in srgb,var(--reader-bg) 92%,transparent);backdrop-filter:blur(8px);transition:opacity .24s,transform .24s}
.reader-shell[data-immersive="true"][data-chrome="hidden"] .reader-bar{opacity:0;transform:translateY(-102%);pointer-events:none}
.reader-shell[data-immersive="true"] .reader-layout{display:block;flex:1;min-height:0;overflow:hidden}
.reader-shell[data-immersive="true"] .reader-sidebar{display:none}
.reader-shell[data-immersive="true"] .reader-paper{background:transparent;background-image:none;border:0;border-radius:0;box-shadow:none;padding:14px clamp(16px,5vw,64px) calc(14px + env(safe-area-inset-bottom));height:100%;display:flex;flex-direction:column;overflow:auto}
.reader-shell[data-immersive="true"][data-mode="paged"] .reader-paper{overflow:hidden}
.reader-shell[data-immersive="true"] .reader-stage{flex:1;min-height:0;height:auto}
.reader-shell[data-immersive="true"][data-mode="paged"] .reader-stage{height:100%}
.reader-shell[data-immersive="true"][data-mode="paged"] .reader-flow{height:100%}
.reader-shell[data-immersive="true"][data-mode="paged"] .market-read-receipt,
.reader-shell[data-immersive="true"][data-mode="paged"] .market-reader-navigation,
.reader-shell[data-immersive="true"][data-mode="paged"] .market-reader-end,
.reader-shell[data-immersive="true"][data-mode="paged"] .market-chapter-feedback{display:none}
body.reading-immersive{overflow:hidden}
body.reading-immersive .prototype-banner,
body.reading-immersive .site-header,
body.reading-immersive .community-strip{display:none}

@media(max-width:900px){
  .reader-shell .reader-layout{grid-template-columns:minmax(0,1fr)}
  .reader-shell .reader-sidebar{position:static;max-height:none;padding:0;margin-bottom:14px}
  .reader-shell .reader-sidebar .market-contents{max-height:190px;overflow:auto}
}
@media(max-width:700px){
  .reader-shell.market-reader-page{padding:10px 3% 30px}
  .reader-shell .reader-paper{padding:20px 16px 22px;border-radius:8px}
  .reader-shell .reader-bar{flex-wrap:nowrap;gap:8px}
  .reader-shell .reader-bar-main small{display:none}
  .reader-shell .reader-icon-button{min-width:42px;min-height:42px;padding:0 10px}
  .reader-shell[data-immersive="true"] .reader-paper{padding:12px clamp(14px,4.5vw,26px) calc(10px + env(safe-area-inset-bottom))}
  .reader-shell .reader-bar-actions{gap:5px}
  .reader-shell .reader-bookmark-quick,.reader-shell .reader-bookmark-entry{min-width:auto;padding:0 9px;white-space:nowrap}
  .reader-shell .reader-bar-progress{display:none}
  .reader-shell[data-mode="paged"] .reader-stage{height:min(66vh,540px)}
  .reader-shell[data-immersive="true"][data-mode="paged"] .reader-stage{height:100%}
  .reader-shell .reader-turn-shade{width:38px}
}
@media(max-width:380px){
  /* The bar carries six controls once bookmarks are on; on the narrowest
     phones the actions take their own row instead of overflowing. */
  .reader-shell .reader-bar{flex-wrap:wrap;row-gap:6px}
  .reader-shell .reader-bar-actions{flex:1 1 100%;justify-content:flex-end}
  .reader-shell .reader-bar-main{gap:6px}
  .reader-shell .reader-bar-main .button{padding:0 6px}
  .reader-shell .reader-bar-actions{gap:4px}
  .reader-shell .reader-icon-button{padding:0 8px}
  .reader-shell .reader-bookmark-quick,.reader-shell .reader-bookmark-entry{padding:0 6px;font-size:12px}
  .reader-shell .reader-paper{padding:18px 13px 20px}
  .reader-shell .reader-swatches{grid-template-columns:repeat(auto-fill,minmax(72px,1fr))}
}
@media(prefers-reduced-motion:reduce){
  .reader-shell .reader-flow{transition:none !important}
}

/* Bookmarks: one tap in the bar, a panel with every saved position. Offsets,
   not page numbers, are stored, so a theme or font change cannot move them. */
.reader-shell .reader-bookmark-count{display:inline-block;min-width:14px;margin-left:5px;font-size:10px;color:var(--reader-muted)}
.reader-shell .reader-bookmark-entry.has-bookmarks{border-color:var(--reader-accent);color:var(--reader-accent)}
.reader-shell .reader-bookmark-entry.has-bookmarks .reader-bookmark-count{color:var(--reader-accent)}
.reader-shell .reader-bookmark-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.reader-shell .reader-bookmark{display:flex;align-items:stretch;gap:0;border:1px solid var(--reader-rule);border-radius:8px;background:color-mix(in srgb,var(--reader-ink) 4%,transparent);overflow:hidden}
.reader-shell .reader-bookmark-open{flex:1 1 auto;min-width:0;display:grid;gap:3px;padding:10px 12px;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}
.reader-shell .reader-bookmark-open:hover{background:color-mix(in srgb,var(--reader-ink) 7%,transparent)}
.reader-shell .reader-bookmark-meta{font:400 10px/1.5 var(--reader-sans);color:var(--reader-muted);letter-spacing:.04em}
.reader-shell .reader-bookmark-open strong{font:400 12px/1.7 var(--reader-sans);color:var(--reader-ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.reader-shell .reader-bookmark-remove{flex:none;padding:0 12px;border:0;border-left:1px solid var(--reader-rule);background:transparent;color:var(--reader-muted);font:500 11px/1 var(--reader-sans);cursor:pointer}
.reader-shell .reader-bookmark-remove:hover{color:#b4362a;background:color-mix(in srgb,#b4362a 10%,transparent)}
.reader-shell .reader-bookmark-add{width:100%;display:grid;gap:5px;padding:12px 14px;border:1px dashed color-mix(in srgb,var(--reader-accent) 55%,transparent);border-radius:8px;background:color-mix(in srgb,var(--reader-accent) 9%,transparent);color:var(--reader-accent);text-align:left;cursor:pointer;font:500 13px/1.5 var(--reader-sans)}
.reader-shell .reader-bookmark-add small{font:400 11px/1.6 var(--reader-sans);color:var(--reader-muted);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reader-shell .reader-bookmark-empty{margin:0;font:400 12px/1.9 var(--reader-sans);color:var(--reader-muted)}
.reader-shell .market-bookmark-tag{display:inline-block;margin-left:6px;padding:1px 5px;border-radius:4px;background:color-mix(in srgb,var(--reader-accent) 18%,transparent);color:var(--reader-accent);font:500 9px/1.6 var(--reader-sans);font-style:normal;vertical-align:middle}
.market-resume-note{margin:14px 0 0;font:400 12px/1.9 var(--sans);color:var(--muted);display:flex;gap:6px;align-items:baseline}
.market-resume-note span{color:var(--green)}
