/* Reader three-column shell. The page body freezes; only the centre story column scrolls. */
.reader-controller-view{display:flex;flex-direction:column;min-height:0;height:100%;color:var(--text,#d8dee8);background:var(--surface,#101725)}
.reader-top-actions{display:flex;align-items:center;gap:8px}
@media(min-width:901px){.reader-top-actions [data-reader-mobile-panel]{display:none}}

.reader-three-column{
  display:grid;
  grid-template-columns:
    var(--reader-left-rail-width,280px)
    minmax(0,1fr)
    var(--reader-right-rail-width,360px);
  gap:14px;
  flex:1;min-height:0;
  height:100%;
  overflow:hidden;
}
.reader-three-column.is-resizing{cursor:col-resize;user-select:none}
.reader-three-column.is-resizing .reader-center,.reader-three-column.is-resizing .reader-session-rail,.reader-three-column.is-resizing .reader-state-rail{pointer-events:none}

/* Side rails: own scroll, frozen against the page. */
.reader-session-rail,.reader-state-rail{
  min-width:0;min-height:0;height:100%;
  overflow-y:auto;overflow-x:hidden;
  overscroll-behavior:contain;
  border:1px solid var(--line);border-radius:16px;background:var(--surface);
  position:relative;
}
.reader-session-rail{padding:14px 10px}
.reader-state-rail{padding:14px}

/* Resize handles on the inner edge of each rail. */
.reader-rail-resize-handle{
  position:absolute;top:0;bottom:0;width:10px;
  background:transparent;border:0;padding:0;margin:0;cursor:col-resize;z-index:5;
}
.reader-rail-resize-handle::before{
  content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:4px;height:38px;border-radius:99px;
  background:color-mix(in srgb,var(--reader-text,#d8dee8) 20%,transparent);
  opacity:0;transition:opacity .15s ease;
}
.reader-rail-resize-handle:hover::before,
.reader-rail-resize-handle:focus-visible::before,
.reader-rail-resize-handle.is-resizing::before{
  opacity:1;background:var(--reader-accent,#d9a441);
}
.reader-session-rail .reader-rail-resize-handle{right:-7px}
.reader-state-rail .reader-rail-resize-handle{left:-7px}
.reader-rail-resize-handle:focus-visible{outline:2px solid var(--reader-accent,#d9a441);outline-offset:1px}

.reader-rail-head,.state-rail-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 6px 12px}
.reader-rail-head strong{display:block;margin-top:3px;font-size:13px}
.reader-session-list{display:grid;gap:6px}
.reader-session-item{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:12px;width:100%;min-height:76px;padding:12px;border:1px solid transparent;border-radius:13px;background:transparent;color:var(--text);text-align:left;transition:background .15s ease,border-color .15s ease}
.reader-session-item:hover{background:var(--surface-2)}
.reader-session-item.active{border-color:color-mix(in srgb,var(--accent) 55%,transparent);background:color-mix(in srgb,var(--accent) 13%,transparent)}
.reader-session-item strong,.reader-session-item small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reader-session-item strong{font-size:14px;font-weight:700}
.reader-session-item small{margin-top:4px;color:var(--muted);font-size:11px}
.session-item-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:12px;background:var(--surface-3);color:var(--accent);font-size:20px}

.reader-state-rail{display:grid;align-content:start;gap:9px}
.reader-state-card{padding:12px;border:1px solid var(--line);border-radius:11px;background:var(--surface-2)}
.reader-state-card h3{font-size:13px}
.reader-state-card p{margin-top:8px;font-size:13px}
.reader-state-card small{display:block;margin-top:3px;color:var(--muted);font-size:11px}
.state-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:9px}
.state-stat-grid span,.state-stat-row{display:flex;justify-content:space-between;gap:7px;color:var(--muted);font-size:11px}
.state-stat-grid b,.state-stat-row b{color:var(--text);font-weight:700}
.state-stat-row{padding:7px 0;border-bottom:1px solid var(--line)}
.reader-state-link{margin-top:9px;padding:0;background:transparent;color:var(--accent);font-size:11px}
.reader-reading-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:9px}
.reader-reading-actions button{padding:6px 3px;border:1px solid var(--line);border-radius:7px;background:transparent;color:var(--muted);font-size:11px}
.reader-reading-actions button:hover{border-color:var(--accent);color:var(--accent)}

/* Round pagination bar pinned to the top of the story column. */
.reader-page-nav{display:flex;align-items:center;justify-content:center;gap:12px;margin:0 auto 14px;padding:8px;border-bottom:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 12%,transparent);color:var(--reader-quote,#9caac4);font-size:12px}
.reader-page-nav button{padding:5px 9px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 18%,transparent);border-radius:6px;background:transparent;color:inherit;cursor:pointer}
.reader-page-nav button:not(:disabled):hover{border-color:var(--reader-accent,#d9a441);color:var(--reader-accent,#d9a441)}
.reader-page-nav button:disabled{cursor:not-allowed;opacity:.35}

/* Round rail (right side) */
.reader-page-rail{display:grid;gap:10px}
.reader-page-rail-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.reader-page-rail-head h3{margin:0}
.reader-page-rail-head small{display:block;margin-top:3px;color:var(--muted)}
.reader-page-rail-actions{display:flex;gap:5px}
.reader-page-rail-actions .icon-button{width:28px;height:28px;padding:0}

.reader-page-item{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:7px;min-height:46px;padding:7px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--text);text-align:left}
.reader-page-item>span:first-child{display:grid;place-items:center;width:26px;height:26px;border-radius:7px;background:var(--surface-3);color:var(--muted);font-size:11px}
.reader-page-item b,.reader-page-item small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reader-page-item b{font-size:11px}
.reader-page-item small{margin-top:2px;color:var(--muted);font-size:10px}
.reader-page-item em{color:var(--muted);font-size:10px;font-style:normal}
.reader-page-item:hover,.reader-page-item.active{border-color:color-mix(in srgb,var(--accent) 58%,transparent);background:color-mix(in srgb,var(--accent) 12%,transparent)}
.reader-page-item.active>span:first-child{background:var(--accent);color:#211c1b}

/* Story message typography (unchanged). */
.message-rich{line-height:1.85}
.message-rich p{margin:8px 0 0;white-space:normal}
.message-rich p:first-child{margin-top:0}
.message-rich .story-heading{display:block;margin:10px 0 4px;color:var(--reader-accent,#d9a441);font-size:1.05em}
.message-rich .story-list-line{display:block;padding-left:1em}
.message-rich .story-dialogue{display:inline-block;margin:8px 0;padding:2px 8px;border-left:2px solid var(--reader-accent,#d9a441);color:var(--reader-dialogue,var(--reader-text,#d8dee8));background:color-mix(in srgb,var(--reader-accent,#d9a441) 8%,transparent);quotes:none}
.message-rich blockquote{margin:10px 0;padding:8px 12px;border-left:3px solid var(--reader-accent,#d9a441);color:var(--reader-quote,#9caac4);background:color-mix(in srgb,var(--reader-surface,#172033) 82%,transparent)}

/* Centre column: header + scrollable story + input toolbar + input bar. */
.reader-center{display:flex;flex-direction:column;min-width:0;min-height:0;height:100%;overflow:hidden;border:1px solid var(--line);border-radius:16px;background:var(--surface,#101725)}
.reader-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:16px clamp(14px,3vw,42px) 20px;scroll-behavior:smooth;background:var(--reader-bg,#101725);color:var(--reader-text,#d8dee8)}
.reader-center-empty{display:grid;place-items:center;height:100%;color:var(--reader-quote,#9caac4)}

.message-block{max-width:min(780px,100%);margin:0 auto 14px;padding:14px 16px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 14%,transparent);border-radius:10px;background:var(--reader-surface,#172033);cursor:pointer}
.message-block.message-user{margin-right:0;background:color-mix(in srgb,var(--reader-action,#d9a441) 13%,var(--reader-surface,#172033))}
.message-block.message-system{opacity:.82}
.message-block.is-selected{outline:2px solid var(--reader-accent,#d9a441);outline-offset:2px}
.message-head{display:flex;justify-content:space-between;gap:12px;color:var(--reader-quote,#9caac4);font-size:12px}
.message-block p{white-space:pre-wrap;line-height:1.75;margin:8px 0 0}

/* Message actions — always visible, old-station pill style. */
.message-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.msg-action{
  display:inline-flex;align-items:center;gap:5px;
  padding:4px 9px;border-radius:8px;
  border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 16%,transparent);
  background:transparent;color:var(--reader-quote,#9caac4);
  font-size:11px;cursor:pointer;line-height:1.4;
  transition:border-color .15s ease,color .15s ease;
}
.msg-action svg{width:12px;height:12px;flex:none}
.msg-action:hover:not(:disabled){border-color:var(--reader-accent,#d9a441);color:var(--reader-accent,#d9a441)}
.msg-action:disabled{cursor:not-allowed;opacity:.4}

.reader-load-older{display:block;margin:0 auto 14px;padding:6px 12px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 20%,transparent);border-radius:6px;color:inherit;background:transparent;cursor:pointer}
.reader-load-older:hover{border-color:var(--reader-accent,#d9a441);color:var(--reader-accent,#d9a441)}
.reader-controller-status{flex:0 0 auto;min-height:20px;padding:4px 16px;color:var(--reader-quote,#9caac4);font-size:12px}

.input-bar{display:flex;gap:10px;align-items:flex-end;padding:12px 16px;background:var(--reader-input-bar,#111a2b);border-top:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 12%,transparent)}
.input-dice{display:grid;place-items:center;flex:0 0 auto;width:44px;height:44px;border:1.5px solid color-mix(in srgb,var(--reader-accent,#d9a441) 55%,transparent);border-radius:12px;background:linear-gradient(150deg,color-mix(in srgb,var(--reader-accent,#d9a441) 18%,var(--reader-surface,#172033)),var(--reader-surface,#172033));color:var(--reader-accent,#d9a441);font-size:22px;cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.18);transition:transform .15s,box-shadow .15s,border-color .15s}
.input-dice:hover{border-color:var(--reader-accent,#d9a441);transform:translateY(-1px);box-shadow:0 6px 18px rgba(217,164,65,.28)}
.input-dice:active{transform:translateY(0)}
.input-dice:hover{border-color:var(--reader-accent,#d9a441)}
.input-bar textarea{flex:1;min-height:44px;max-height:180px;resize:vertical;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 22%,transparent);border-radius:6px;padding:10px;color:inherit;background:var(--reader-surface,#172033);font:inherit}
.input-bar button{min-width:66px;min-height:44px;background:var(--reader-action,#d9a441);color:#17120a;border-color:transparent;border-radius:6px;cursor:pointer}
.input-bar button:disabled{cursor:not-allowed;opacity:.55}

.reader-suggestions,.reader-inner-thought{max-width:min(780px,100%);margin:14px auto;padding:12px;border-left:3px solid var(--reader-accent,#d9a441);background:color-mix(in srgb,var(--reader-surface,#172033) 86%,transparent)}
.reader-suggestions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.reader-suggestions strong{flex-basis:100%}
.reader-suggestions button{border:1px solid color-mix(in srgb,var(--reader-accent,#d9a441) 50%,transparent);border-radius:16px;padding:6px 10px;color:inherit;background:transparent;cursor:pointer}
.reader-inner-thought p{white-space:pre-wrap;line-height:1.6;margin:8px 0 0}

/* Inline suggestions rendered directly below the latest assistant bubble. */
.msg-inline-suggestions{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px;padding-top:8px;border-top:1px dashed color-mix(in srgb,var(--reader-text,#d8dee8) 14%,transparent)}
.msg-suggestion{padding:5px 11px;border:1px solid color-mix(in srgb,var(--reader-accent,#d9a441) 45%,transparent);border-radius:999px;background:color-mix(in srgb,var(--reader-accent,#d9a441) 9%,transparent);color:var(--reader-accent,#d9a441);font-size:11px;cursor:pointer;transition:all .18s ease}
.msg-suggestion:hover{background:color-mix(in srgb,var(--reader-accent,#d9a441) 20%,transparent);transform:translateY(-1px)}
.msg-suggestion-loading{color:color-mix(in srgb,var(--reader-text,#d8dee8) 66%,transparent);font-size:11px}

/* Novel mode: collapse bubbles into flowing chapter text. */
.message-block.novel-mode{border-color:transparent;background:transparent;box-shadow:none;padding:6px 0}
.message-block.novel-mode .message-head{opacity:.55;font-size:10px}
.message-block.novel-mode.message-user{background:transparent;border-left:2px solid color-mix(in srgb,var(--reader-action,#d9a441) 40%,transparent);padding-left:12px;margin-right:0}

/* Round jump input in the page nav. */
.reader-page-jump{width:52px;padding:4px 6px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 22%,transparent);border-radius:6px;background:transparent;color:inherit;text-align:center;font:inherit;font-size:12px;-moz-appearance:textfield;appearance:textfield}
.reader-page-jump::-webkit-inner-spin-button,.reader-page-jump::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.reader-page-jump:focus{outline:none;border-color:var(--reader-accent,#d9a441)}

/* Dice tool panel (跑团骰子) — mirrors the legacy portal overlay. */
.dice-tool-overlay{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:18px;background:rgba(0,0,0,.6)}
.dice-tool-panel{width:min(480px,100%);max-height:min(720px,calc(100vh - 36px));display:flex;flex-direction:column;overflow:hidden;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 14%,transparent);border-radius:20px;background:var(--reader-surface,#172033);box-shadow:0 24px 70px rgba(0,0,0,.45);color:var(--reader-text,#d8dee8)}
.dice-tool-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;border-bottom:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 10%,transparent)}
.dice-tool-head h3{margin:0;font-size:17px}
.dice-close{display:grid;place-items:center;width:36px;height:36px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 14%,transparent);border-radius:9px;background:transparent;color:var(--reader-quote,#9caac4);font-size:18px;cursor:pointer}
.dice-close:hover{border-color:var(--reader-accent,#d9a441);color:var(--reader-accent,#d9a441)}
.dice-tool-body{display:grid;gap:12px;padding:14px 18px;overflow-y:auto}
.dice-quick-row{display:flex;gap:8px;flex-wrap:wrap}
.dice-quick-row button{padding:7px 13px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 18%,transparent);border-radius:8px;background:transparent;color:var(--reader-quote,#9caac4);font-size:13px;cursor:pointer}
.dice-quick-row button:hover{border-color:var(--reader-accent,#d9a441);color:var(--reader-accent,#d9a441)}
.dice-primary-row{display:flex;gap:10px;align-items:flex-end}
.dice-field{display:grid;gap:5px;flex:1;min-width:0;color:var(--reader-quote,#9caac4);font-size:11px}
.dice-field input{width:100%;padding:9px 11px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 22%,transparent);border-radius:8px;background:var(--reader-bg,#101725);color:var(--reader-text,#d8dee8);font:inherit;font-size:14px;outline:none}
.dice-field input:focus{border-color:var(--reader-accent,#d9a441)}
.dice-roll-button{padding:9px 18px;border:0;border-radius:8px;background:var(--reader-accent,#d9a441);color:#17120a;font-weight:800;font-size:14px;cursor:pointer;white-space:nowrap}
.dice-roll-button:hover{filter:brightness(1.1)}
.dice-section-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 0;background:transparent;border:0;color:var(--reader-quote,#9caac4);font-size:12px;cursor:pointer}
.dice-section-toggle:hover{color:var(--reader-accent,#d9a441)}
.dice-section-toggle svg{width:14px;height:14px}
.dice-advanced{display:grid;gap:10px;padding:12px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 10%,transparent);border-radius:10px;background:color-mix(in srgb,var(--reader-bg,#101725) 60%,transparent)}
.dice-advanced.hidden,.dice-history-section.hidden{display:none}
.dice-mode-row{display:flex;gap:6px}
.dice-mode-row button{flex:1;padding:7px 10px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 16%,transparent);border-radius:8px;background:transparent;color:var(--reader-quote,#9caac4);font-size:12px;cursor:pointer}
.dice-mode-row button.is-selected{border-color:var(--reader-accent,#d9a441);background:color-mix(in srgb,var(--reader-accent,#d9a441) 14%,transparent);color:var(--reader-accent,#d9a441);font-weight:700}
.dice-field-row{display:grid;grid-template-columns:1fr 100px;gap:10px}
.dice-form-feedback{min-height:18px;color:var(--reader-quote,#9caac4);font-size:12px}
.dice-result{display:grid;gap:8px;padding:12px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 10%,transparent);border-radius:10px;background:color-mix(in srgb,var(--reader-bg,#101725) 50%,transparent)}
.dice-empty-result,.dice-history-empty{color:var(--reader-quote,#9caac4);font-size:12px;text-align:center;padding:12px 0}
.dice-result-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.dice-result-head span{color:var(--reader-quote,#9caac4);font-size:12px}
.dice-result-head strong{font-size:28px;color:var(--reader-accent,#d9a441);font-weight:850}
.dice-result-formula{color:var(--reader-quote,#9caac4);font-size:11px}
.dice-result-detail{display:flex;flex-wrap:wrap;gap:8px;align-items:center;color:var(--reader-quote,#9caac4);font-size:12px}
.dice-outcome{padding:3px 9px;border-radius:99px;font-size:11px;font-weight:700}
.dice-outcome-success{background:rgba(120,215,162,.14);color:#78d7a2}
.dice-outcome-failure{background:rgba(255,146,157,.14);color:#ff929d}
.dice-history-list{display:grid;gap:6px;max-height:180px;overflow-y:auto}
.dice-history-item{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:10px;padding:7px 10px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 10%,transparent);border-radius:8px;background:transparent;color:var(--reader-text,#d8dee8);cursor:pointer;text-align:left;font-size:12px}
.dice-history-item:hover{border-color:var(--reader-accent,#d9a441)}
.dice-history-item strong{font-size:16px;color:var(--reader-accent,#d9a441)}
.dice-history-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dice-history-item small{color:var(--reader-quote,#9caac4);font-size:11px}
.dice-field select{width:100%;padding:9px 11px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 22%,transparent);border-radius:8px;background:var(--reader-bg,#101725);color:var(--reader-text,#d8dee8);font:inherit;font-size:14px;outline:none}
.dice-field select:focus{border-color:var(--reader-accent,#d9a441)}
.dice-damage-block{display:grid;gap:10px;padding-top:10px;border-top:1px dashed color-mix(in srgb,var(--reader-text,#d8dee8) 12%,transparent)}
.dice-damage-row{grid-template-columns:1fr 1fr}
.dice-damage-roll-button{padding:8px 12px;border:1px solid color-mix(in srgb,var(--reader-accent,#d9a441) 45%,transparent);border-radius:8px;background:transparent;color:var(--reader-accent,#d9a441);font-size:13px;font-weight:700;cursor:pointer}
.dice-damage-roll-button:hover{background:color-mix(in srgb,var(--reader-accent,#d9a441) 12%,transparent)}
.dice-roll-button:disabled,.dice-damage-roll-button:disabled{opacity:.55;cursor:wait;filter:none}
.dice-use-result{width:100%;margin-top:2px}
.dice-rolling-state{display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 0;color:var(--reader-quote,#9caac4);font-size:13px}
.dice-rolling-icon{display:inline-block;font-size:28px;line-height:1;color:var(--reader-accent,#d9a441);animation:dice-tumble .62s ease-in-out infinite}
@keyframes dice-tumble{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.12)}100%{transform:rotate(360deg) scale(1)}}
@media(prefers-reduced-motion:reduce){.dice-rolling-icon{animation:none}}
@media(max-width:600px){.dice-tool-overlay{align-items:flex-end;padding:0}.dice-tool-panel{width:100%;max-height:88vh;border-radius:18px 18px 0 0}}

/* Immersive reading: hide side rails, centre fills the viewport. */
.reader-immersive .reader-three-column{grid-template-columns:0 minmax(0,1fr) 0;gap:0}
.reader-immersive .reader-session-rail,.reader-immersive .reader-state-rail{display:none}
.reader-immersive .reader-page-nav{display:none}

/* State panel tabs (kept from previous round). */
.reader-state-tabs{display:flex;gap:6px;overflow-x:auto;padding:2px 0 4px;scrollbar-width:none}
.reader-state-tabs::-webkit-scrollbar{display:none}
.reader-state-tabs button{flex:0 0 auto;padding:7px 10px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font-size:11px;cursor:pointer}
.reader-state-tabs button:hover,.reader-state-tabs button.active{border-color:color-mix(in srgb,var(--accent) 58%,transparent);background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--text)}

/* One viewport, three independent scroll regions. */
.app-shell.is-reading{height:100dvh;min-height:0;padding:0;display:grid;grid-template-rows:74px minmax(0,1fr);grid-template-columns:minmax(0,1fr);overflow:hidden}
/* 列宽固定为视口宽：顶栏或正文里任何超宽内容都不能把整个阅读页撑出屏幕。 */
.app-shell.is-reading>*{min-width:0}
.reader-page.page{width:100%;max-width:none;height:100%;min-height:0;margin:0;padding:8px 12px 12px;display:flex;flex-direction:column;overflow:hidden}
.reader-page .reader-top{flex:none;min-height:40px;display:flex;align-items:center;gap:12px;margin:0 0 8px;padding:0}
.reader-page .reader-title{flex:1;min-width:0;text-align:left}
.reader-page .reader-title h2{font-size:17px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reader-three-column{grid-template-columns:min(var(--reader-left-rail-width,224px),20vw) minmax(0,1fr) min(var(--reader-right-rail-width,280px),24vw);gap:12px;flex:1;height:auto;min-height:0}
.reader-session-rail{display:flex;flex-direction:column;padding:10px 8px;overflow:hidden}
.reader-session-list{flex:1;min-height:0;overflow-y:auto;align-content:start;overscroll-behavior:contain}
.reader-session-item{grid-template-columns:28px minmax(0,1fr);gap:8px;min-height:66px;padding:10px 8px}
.session-item-icon{width:28px;height:34px;border-radius:8px;font-size:17px}
.reader-session-item strong{font-size:13px}
.reader-state-rail{display:flex;flex-direction:column;gap:12px;padding:12px;overflow:hidden}
.state-rail-head{padding:2px 0 0;flex:none}
.reader-state-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;flex:none;overflow:visible}
.reader-state-tabs button{padding:8px 2px;border-radius:8px;font-size:12px}
.reader-state-panels,.reader-page-rail{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}
.reader-page-rail{display:flex;flex-direction:column}
.reader-page-list{flex:1;min-height:0;max-height:none}
.reader-center{border-radius:12px}
.reader-controller-view{height:100%;overflow:hidden}
.reader-scroll{padding:20px 24px 32px;scroll-behavior:auto;overflow-anchor:none}
.reader-page-nav{flex:none;margin:0;padding:8px;min-height:42px;background:var(--surface);font-size:12px}
.reader-scroll .message-block{max-width:none;width:100%;margin:0 0 22px;padding:0;border:0;background:transparent;cursor:default}
.reader-scroll .message-head{padding:0 2px 8px;font-size:11px;opacity:.7}
.reader-scroll .message-head span{font-size:10px}
.reader-scroll .story-rendered-message{padding:20px 24px;border:1px solid color-mix(in srgb,var(--reader-text) 12%,transparent);border-radius:12px;background:var(--reader-surface)}
.reader-scroll .story-rendered-message::before{content:none}
.reader-scroll .hy-creator-user-bubble{padding:12px 18px;background:color-mix(in srgb,var(--reader-action) 8%,var(--reader-surface))}
.reader-scroll .story-content{font-size:16px;line-height:1.9}
.reader-scroll .reader-thinking-hint{margin-top:12px;padding-top:10px;border-top:1px dashed color-mix(in srgb,var(--reader-text) 14%,transparent);color:var(--reader-quote,#9caac4);font-size:12px;line-height:1.6}
.reader-scroll .reader-thinking-hint .ta-dots{display:inline-flex;gap:2px;margin-left:3px}
.reader-scroll .reader-thinking-hint .ta-dots span{animation:reader-thinking-dot 1.1s infinite ease-in-out;opacity:.35}
.reader-scroll .reader-thinking-hint .ta-dots span:nth-child(2){animation-delay:.16s}
.reader-scroll .reader-thinking-hint .ta-dots span:nth-child(3){animation-delay:.32s}
@keyframes reader-thinking-dot{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-1px)}}
.reader-scroll .chapter-gap{display:none}
.reader-scroll .message-actions{gap:8px;margin:10px 0 0}
.msg-action{padding:6px 9px;font-size:12px}
.reader-controller-status:empty{display:none}
.reader-controller-view .input-toolbar{flex:none;padding:8px 14px;gap:8px;overflow-x:auto}
.reader-controller-view .input-tool{white-space:nowrap;font-size:12px}
.reader-controller-view .input-bar{position:static;flex:none;padding:10px 14px;min-height:70px}
.reader-controller-view .input-bar textarea{min-height:44px;max-height:120px}
.reader-session-rail .reader-rail-resize-handle{right:0}
.reader-state-rail .reader-rail-resize-handle{left:0}
.reader-immersive .reader-three-column{grid-template-columns:minmax(0,1fr)}
.reader-immersive .reader-session-rail,.reader-immersive .reader-state-rail{display:none}
.reader-immersive .reader-scroll{padding-inline:clamp(20px,10vw,180px)}
.state-identity-details{padding:10px;border:1px solid var(--line);border-radius:10px;font-size:12px;color:var(--muted)}
.state-identity-details summary{cursor:pointer;color:var(--text)}
.state-identity-details p{white-space:pre-wrap;line-height:1.8;margin-top:10px}
@media(min-width:1101px){.reader-top-actions [data-reader-mobile-panel]{display:none}}
@media(max-width:1100px){
 .reader-three-column{grid-template-columns:210px minmax(0,1fr)}
 .reader-state-rail{display:none}
 .reader-top-actions [data-reader-mobile-panel=state]{display:inline-flex}
 .reader-state-rail.is-open{display:flex;position:fixed;inset:130px 12px 12px auto;width:min(360px,calc(100vw - 24px));height:auto;z-index:40;background:var(--surface);box-shadow:var(--shadow)}
}
@media(max-width:780px){
 .app-shell.is-reading{grid-template-rows:62px minmax(0,1fr)}
 .reader-page.page{padding:6px 6px 8px}
 .reader-three-column{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
 .reader-session-rail{display:none}
 .reader-session-rail.is-open{display:flex;position:fixed;inset:116px auto 12px 6px;width:min(300px,calc(100vw - 12px));height:auto;z-index:40;box-shadow:var(--shadow)}
 .reader-page .reader-top{gap:4px;min-height:40px;margin-bottom:6px}
 .reader-page .reader-title h2{font-size:14px}
 .reader-top-actions{gap:4px;max-width:none;overflow:visible}
 .reader-top-actions .button-secondary,.reader-top-actions [data-reader-mobile-panel]{display:inline-flex;padding:7px;font-size:11px}
 .reader-top>.ghost-button{font-size:12px;padding:6px}
 .reader-scroll{padding:14px 10px 24px}
 .reader-scroll .story-rendered-message{padding:16px 14px}
 .reader-scroll .story-content{font-size:15px}
 .reader-controller-view .input-bar{padding:8px;gap:6px}
 .reader-controller-view .input-bar button{min-width:42px}
 .reader-controller-view .input-toolbar{gap:6px;padding:6px 8px}
 .reader-rail-resize-handle{display:none}
}

/* Author themes paint the story canvas with their own background/colours.
   Side rails, topbar and input stay on the platform surface (outside
   [data-reader-root]). The canvas falls back to the platform surface when a
   work ships no theme. Creator bubbles keep their own background art — the
   platform must not flatten author bubble colours (user-facing request). */
.reader-scroll.theme-active{background:var(--reader-bg,var(--surface,#101725));color:var(--reader-text,var(--text,#f5f3ef))}
.reader-state-panels{display:block;align-content:start}
.reader-state-panels .state-panel{height:auto;min-height:0}
.inventory-item-list{display:grid;gap:8px}
.inventory-item{padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}
.inventory-item summary{display:flex;align-items:center;gap:10px;list-style:none;cursor:pointer}
.inventory-item summary strong{font-size:12px;line-height:1.5}
.inventory-item .inventory-slot{width:38px;height:38px;flex:none}
.inventory-item p{font-size:12px;line-height:1.7;color:var(--muted);margin-top:8px}
html[data-theme=light] .reader-page{--reader-bg:#faf8f3;--reader-surface:#fff;--reader-text:#332d28;--reader-dialogue:#664b2a;--reader-quote:#776d62;--reader-input-bar:#f0ece5}
html[data-theme=light] .dice-tool-overlay{--reader-bg:#faf8f3;--reader-surface:#fff;--reader-text:#332d28;--reader-quote:#776d62;background:rgba(51,45,40,.42)}

.reader-settings-dialog{max-height:85dvh;overflow:auto}
.reader-setting-sections{display:grid;gap:10px}
.reader-setting-sections details{border:1px solid var(--line);border-radius:10px;padding:12px}
.reader-setting-sections summary{font-weight:700;cursor:pointer}
.reader-setting-sections details>div{white-space:pre-wrap;line-height:1.85;margin-top:12px;color:var(--muted)}

body:has(.app-shell.is-reading){padding-bottom:0;overflow:hidden}

.reader-state-rail .reader-state-panels{display:block}
.reader-session-list{grid-auto-rows:max-content}

.model-settings-dialog{width:min(820px,calc(100vw - 32px));max-width:820px;max-height:90dvh;display:flex;flex-direction:column;padding:0;overflow:hidden}
.model-settings-dialog .modal-head{padding:22px 24px 16px;margin:0;border-bottom:1px solid var(--line);flex:none}
.model-settings-dialog .modal-head h2{margin:0 0 6px;font-size:21px}
.model-settings-dialog .modal-head p{margin:0;font-size:12px}
.model-settings-dialog [data-model-body]{overflow:auto;padding:22px 24px;min-height:0}
.model-settings-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}
.model-choice-group{border:0;padding:0;margin:0;min-width:0}
.model-choice-group legend{font-weight:700;margin-bottom:14px;font-size:13px}
.model-choice-grid{display:grid;grid-template-columns:1fr;gap:8px}
.model-choice{position:relative;display:flex;align-items:center;gap:10px;cursor:pointer;margin:0;padding:12px 14px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 16%,transparent);border-radius:12px;background:var(--reader-surface,#172033);transition:border-color .15s,background .15s}
.model-choice:has(input:checked){border-color:var(--reader-accent,#d9a441);background:color-mix(in srgb,var(--reader-accent,#d9a441) 12%,var(--reader-surface,#172033))}
.model-choice input{accent-color:var(--reader-accent,#d9a441);flex:none}
.model-choice span{display:flex;align-items:baseline;gap:10px;min-width:0}
.model-choice strong{flex:none;font-size:14px;color:var(--reader-text,#e8edf5)}
.model-choice small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--reader-quote,#9caac4);font-size:11.5px}
.model-choice input{position:absolute;opacity:0;width:1px;height:1px}
.model-choice span{display:flex;flex-direction:column;gap:5px;border:1px solid var(--line);border-radius:10px;padding:14px 12px;min-height:75px;background:var(--surface-2)}
.model-choice strong{font-size:14px;color:var(--text)}
.model-choice small{font-size:11px;color:var(--muted)}
.model-choice input:checked+span{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--surface));box-shadow:inset 3px 0 var(--accent)}
.model-choice input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}
.model-choice input:disabled+span{opacity:.6;cursor:wait}
.model-configuration{display:flex;flex-direction:column;gap:17px;min-width:0}
.model-configuration h3{margin:0 0 15px;font-size:20px}
.model-configuration .field{margin-bottom:12px}
.model-word-range{font-size:12px;line-height:1.7;margin:12px 0 0;color:var(--muted)}
.model-cost-note{border:1px solid var(--line);border-radius:10px;padding:14px;background:var(--surface-2)}
.model-cost-note strong{font-size:13px;color:var(--text)}
.model-cost-note p{font-size:12px;line-height:1.8;color:var(--muted);margin:8px 0 0}
.model-custom{border:1px solid var(--line);border-radius:10px;padding:14px}
.model-custom[hidden]{display:none}
.model-custom summary{cursor:pointer;font-weight:700;font-size:13px}
.model-custom p{line-height:1.7;font-size:12px;overflow-wrap:anywhere}
.model-api-actions{display:flex;flex-wrap:wrap;gap:8px}
.model-api-actions button{flex:1;white-space:nowrap}
.model-settings-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;border-top:1px solid var(--line);margin-top:24px;padding-top:16px}
.model-settings-footer p{font-size:12px;line-height:1.7;color:var(--muted);overflow-wrap:anywhere}
.model-settings-footer button{white-space:nowrap;flex:none}
.reading-preferences .muted{font-size:12px;line-height:1.7;margin-bottom:18px}
.reading-preference-toggle{display:flex;justify-content:space-between;align-items:center;gap:18px;border-top:1px solid var(--line);padding:16px 0}
.reading-preference-toggle span{display:flex;flex-direction:column;gap:6px}
.reading-preference-toggle strong{font-size:14px}
.reading-preference-toggle small{font-size:12px;color:var(--muted)}
.reading-preference-toggle input{width:20px;height:20px;accent-color:var(--accent);flex:none}
.reading-preference-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.reading-preferences [role=status]{font-size:12px;color:var(--muted);margin-top:15px;line-height:1.7}
@media(max-width:650px){
 .model-settings-dialog{max-height:92dvh}
 .model-settings-dialog .modal-head{padding:18px}
 .model-settings-dialog [data-model-body]{padding:18px}
 .model-settings-layout{grid-template-columns:1fr;gap:22px}
 .model-choice-grid{grid-template-columns:1fr;gap:8px}
 .model-choice span{padding:10px 7px;min-height:65px}
 .model-choice strong{font-size:12px}
 .model-choice small{font-size:10px}
 .model-settings-footer{gap:10px}
}

.character-settings-dialog{width:min(720px,calc(100vw - 28px));max-height:calc(100dvh - 28px);overflow:auto}
.character-settings-tabs{display:flex;flex-wrap:wrap;gap:8px;border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:18px}
.character-settings-tabs button{padding:9px 12px;border-radius:8px;background:var(--surface-2);color:var(--text);border:1px solid var(--line)}
.character-settings-tabs button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}
.character-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.character-settings-dialog .field{margin-bottom:14px}.character-settings-dialog textarea{resize:vertical;min-height:96px}
.character-settings-dialog section[hidden]{display:none}.character-settings-dialog section[data-character-section=world] p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8}
.character-settings-dialog section[data-character-section=world] details{margin:14px 0}.character-settings-dialog section[data-character-section=world] summary{cursor:pointer}
.character-settings-modules{display:grid;grid-template-columns:1fr 1fr;gap:12px}.character-settings-modules label{display:flex;align-items:center;gap:9px;padding:12px;border:1px solid var(--line);border-radius:9px}
.character-settings-footer{border-top:1px solid var(--line);margin-top:22px;padding-top:14px}.character-settings-footer>div{display:flex;justify-content:flex-end;gap:10px}.character-settings-footer p{font-size:13px;line-height:1.6}
@media(max-width:600px){.character-settings-grid{grid-template-columns:1fr}.character-settings-tabs{gap:6px}.character-settings-tabs button{padding:8px}.character-settings-modules{grid-template-columns:1fr}}
/* 会话世界工坊（对齐老站「世界 / 主控角色 / 主要角色 / 百科」），只复用主题变量 */
.character-settings-dialog.is-world-workshop{width:min(860px,calc(100vw - 28px))}
.world-settings-label{display:flex;align-items:center;justify-content:space-between;gap:10px}.world-settings-label small{color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}
.world-settings-badge{padding:2px 8px;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:11px}
.character-settings-dialog textarea[readonly]{opacity:.78;cursor:default}
.world-settings-notice{padding:10px 12px;border:1px solid color-mix(in srgb,var(--accent) 38%,var(--line));border-radius:10px;background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--text);font-size:13px;margin-bottom:16px}
.world-settings-hint{font-size:12px;margin:-8px 0 14px}
.character-settings-dialog .world-settings-block{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:0 0 14px}.character-settings-dialog .world-settings-block[open]>summary{margin-bottom:12px}
.world-settings-block summary{cursor:pointer;color:var(--text);font-weight:700;font-size:13px}.world-settings-block summary small{font-weight:400;margin-left:6px}.world-settings-block p.muted{font-size:12px}
.world-time-grid{display:grid;grid-template-columns:2fr repeat(5,minmax(0,1fr));gap:10px}.world-time-grid .field{margin-bottom:8px}
.world-faction-row,.world-npc-rule{display:grid;grid-template-columns:1fr 1.3fr 1.3fr auto;gap:8px;margin-bottom:8px;align-items:center}
.world-npc-rule{grid-template-columns:1fr 1.4fr auto auto}
.world-faction-row input,.world-npc-rule input:not([type=checkbox]){width:100%;min-width:0;padding:9px 10px;border:1px solid var(--line);border-radius:9px;outline:0;background:var(--surface-2);color:var(--text)}
.world-faction-row input:focus,.world-npc-rule input:focus{border-color:var(--accent)}
.world-faction-row button,.world-npc-rule button,.world-npc-rules>button,.world-settings-block>button{padding:8px 12px;font-size:12px}
.world-npc-rule-toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);white-space:nowrap}
.world-npc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.world-npc-head p{font-size:12px;line-height:1.7}.world-npc-head button{flex:none}
.world-npc-tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;margin-bottom:12px;scrollbar-width:thin}
.world-npc-tabs button{flex:none;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:7px 12px;border-radius:999px;background:var(--surface-2);color:var(--text);border:1px solid var(--line);font-size:12px}
.world-npc-tabs button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}
.world-npc-rules{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:14px}.world-npc-rules>.world-settings-label{margin-bottom:10px;color:var(--text);font-size:13px}
.world-npc-story{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:12px;font-size:12px;color:var(--muted);line-height:1.7}.world-npc-story strong{color:var(--text);display:block;margin-bottom:4px}
.world-npc-empty{padding:28px 16px;border:1px dashed var(--line);border-radius:12px;text-align:center}.world-npc-empty strong{color:var(--text)}.world-npc-empty p{margin-top:6px;font-size:12px}
.world-npc-actions{display:flex;justify-content:flex-end;margin-top:10px}.world-npc-actions button{color:var(--danger)}
.character-settings-dialog section[data-character-section=lore] p{line-height:1.8;margin-bottom:10px}
@media(max-width:600px){.world-time-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.world-time-grid .field:first-child{grid-column:1/-1}.world-faction-row{grid-template-columns:1fr 1fr}.world-faction-row input:first-child{grid-column:1/-1}.world-npc-rule{grid-template-columns:1fr auto auto}.world-npc-rule input[data-rule-field=trigger]{grid-column:1/-1}.world-npc-head{flex-direction:column}}
/* 工具栏与输入栏收紧：消除两者之间的空隙 */
.input-toolbar{padding-bottom:4px}
.input-bar{padding-top:8px}
/* 跑团模式：骰子嵌在输入框内左侧（对齐旧站主输入工具），输入框外观上移到容器 */
.input-bar{border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 14%,transparent);border-radius:14px;margin:8px 16px 14px;align-items:center;padding:8px 10px}
.input-bar textarea{border:0;background:transparent;box-shadow:none;padding:10px 4px}
.input-bar .input-dice,.input-bar [data-reader-action=dice]{width:38px;height:38px;border-radius:10px;flex:0 0 auto;align-self:center}
.input-bar{border:1px solid rgba(216,222,232,.16)!important;border-radius:14px!important;margin:8px 16px 14px!important}
.input-bar textarea{border:0!important;background:transparent!important}
/* 跑团骰子：SVG 线条图标 + 青色描边透明底（对齐旧站输入工具风格） */
.input-bar .input-dice,.input-bar [data-reader-action=dice]{width:34px;height:34px;border-radius:9px;border:1.5px solid color-mix(in srgb,#67e8f9 55%,transparent);background:transparent;color:#67e8f9;padding:0;display:grid;place-items:center;box-shadow:none}
.input-bar .input-dice svg,.input-bar [data-reader-action=dice] svg{width:19px;height:19px}
.input-bar .input-dice:hover{border-color:#67e8f9;background:color-mix(in srgb,#67e8f9 10%,transparent);transform:none;box-shadow:none}
.input-bar .input-dice,.input-bar [data-reader-action=dice]{min-width:34px!important;min-height:34px!important;width:34px!important;height:34px!important;padding:0!important}
/* 模型弹窗：子型号卡片（对齐旧站 senior-length-option，型号+字数+费用副行） */
.model-sub-list{display:grid;gap:8px;margin:8px 0 4px}
.model-sub{display:flex;gap:10px;align-items:flex-start;padding:11px 13px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 16%,transparent);border-radius:12px;background:var(--reader-surface,#172033);cursor:pointer;transition:border-color .15s,background .15s}
.model-sub:hover{border-color:var(--reader-accent,#d9a441)}
.model-sub:has(input:checked){border-color:var(--reader-accent,#d9a441);background:color-mix(in srgb,var(--reader-accent,#d9a441) 12%,var(--reader-surface,#172033))}
.model-sub input{margin-top:3px;accent-color:var(--reader-accent,#d9a441)}
.model-sub span{display:grid;gap:3px}
.model-sub strong{font-size:13.5px;color:var(--reader-text,#e8edf5)}
.model-sub small{color:var(--reader-quote,#9caac4);font-size:11.5px}
/* 消息消耗标签（对齐旧站 cost tag） */
.msg-cost-tag{display:inline-flex;align-items:center;padding:7px 0;color:var(--reader-quote,#9caac4);font-size:11.5px}
/* 轮次选择表格化：等宽格子，多轮不挤压 */
.reader-page-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(54px,1fr));gap:8px;overflow:auto;padding-right:2px;align-content:start}
.reader-page-cell{display:grid;place-items:center;min-height:44px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 16%,transparent);border-radius:10px;background:var(--reader-surface,#172033);color:var(--reader-text,#e8edf5);font-weight:700;font-size:14px;cursor:pointer;transition:border-color .15s,background .15s}
.reader-page-cell:hover{border-color:var(--reader-accent,#d9a441)}
.reader-page-cell.active{border-color:var(--reader-accent,#d9a441);background:color-mix(in srgb,var(--reader-accent,#d9a441) 16%,var(--reader-surface,#172033));color:var(--reader-accent,#d9a441)}

/* 浅色模式：剧情区底色不再跟随作者主题深色底（作者美化保留在消息内部） */
html[data-theme=light] .reader-scroll.theme-active{background:#faf8f3;color:#332d28}
html[data-theme=light] .reader-scroll{background:var(--reader-bg)}

/* 图库右栏内嵌：弹层改为右栏面板 */
.reader-inline-gallery{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;position:relative}
.gallery-layer-inline{position:absolute;inset:0;z-index:auto;display:flex;flex-direction:column;background:var(--reader-bg,#101725);animation:none;opacity:1}

/* 地图右栏内嵌 */
.reader-inline-map{flex:1;min-height:0;position:relative;overflow:hidden}
.reader-world-map.reader-map-inline{position:absolute;inset:0;top:0;right:0;width:100%;max-width:none;max-height:none;z-index:auto;border:0;border-radius:0;opacity:1;transform:none;box-shadow:none}



/* ===== 剧情模型弹窗：方案A 三列窄卡 + 底部详情 + 右上角标 + 单边框 ===== */
.model-settings-dialog{width:min(680px,calc(100vw - 32px));max-width:680px}
.model-settings-layout{grid-template-columns:1fr;gap:14px}
.model-choice-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.model-choice{position:relative;display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 16%,transparent);border-radius:12px;background:var(--reader-surface,#172033);cursor:pointer;transition:border-color .15s,background .15s}
.model-choice:has(input:checked){border-color:var(--accent,#f3c66a);background:color-mix(in srgb,var(--accent,#f3c66a) 8%,var(--reader-surface,#172033))}
.model-choice:has(input:focus-visible){border-color:var(--accent,#f3c66a)}
.model-choice input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
.model-choice input:focus-visible{outline:none}
.model-choice>span{display:grid;gap:3px;min-width:0}
.model-choice strong{font-size:12.5px}
.model-choice small{white-space:normal;line-height:1.4;font-size:10.5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.model-badge{position:absolute;top:-9px;right:10px;padding:2px 8px;border-radius:999px;background:var(--accent,#f3c66a);color:#261e16;font-size:9.5px;font-style:normal;font-weight:800;line-height:1.4;z-index:1}
/* 单边框：清除旧版给 input+span 画的内层框 */
.model-choice>span,.model-choice input:checked+span,.model-choice input:focus-visible+span{border:0!important;box-shadow:none!important;background:transparent!important}
.model-configuration{border-top:1px solid var(--line);padding-top:12px}
.model-configuration h3{font-size:14px;margin:0 0 4px}
.model-cost-note{background:linear-gradient(120deg,rgba(243,198,106,.08),rgba(200,155,255,.06)),var(--surface-2)}
.model-settings-footer{position:sticky;bottom:0;margin:18px -24px 0;padding:12px 24px 14px;background:var(--surface);z-index:2}
@media(max-width:700px){.model-settings-footer{bottom:0;margin:18px -18px 0;padding:12px 18px 12px}}
@media(max-width:560px){.model-choice-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ===== 剧情模型弹窗：恢复 fs 会话的旧站风格样式（fs3 reader.css 丢失块） ===== */
/* ===== 剧情模型弹窗：旧站风格（单一列表 + 右上角标 + 底部信息条） ===== */
.model-settings-dialog{width:min(560px,calc(100vw - 32px));max-width:560px}
.model-list-title{margin:0 0 10px;font-size:13px;color:var(--muted)}
.model-choice-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.model-choice{position:relative;display:flex;gap:8px;align-items:flex-start;margin:0;padding:11px 12px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 16%,transparent);border-radius:12px;background:var(--reader-surface,#172033);cursor:pointer;transition:border-color .15s,background .15s}
.model-choice.checked{border-color:var(--accent,#f3c66a);background:color-mix(in srgb,var(--accent,#f3c66a) 8%,var(--reader-surface,#172033))}
.model-choice input{width:13px;height:13px;flex:none;margin-top:2px}
.model-choice-body{display:grid;gap:3px;min-width:0}
.model-choice-body strong{font-size:13px}
.model-choice-body small{color:var(--muted);font-size:11px;line-height:1.4}
.model-choice-meta{font-style:normal;color:var(--muted);font-size:10.5px}
.model-corner-badge{position:absolute;top:-8px;right:10px;padding:2px 8px;border-radius:999px;background:var(--accent,#f3c66a);color:#261e16;font-size:10px;font-style:normal;font-weight:800;line-height:1.4}
.model-corner-badge.is-soft{background:var(--accent-2,#c89bff);color:#241a30}
.model-brief{border:1px solid var(--line);border-radius:12px;padding:12px;display:grid;gap:10px;background:var(--surface-2);margin-top:4px}
.model-brief-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12.5px}
.model-brief-label{color:var(--muted)}
.model-brief-value{color:var(--accent,#f3c66a);font-weight:700}
.model-sub-chips{display:flex;flex-wrap:wrap;gap:6px}
.model-sub-chip{padding:6px 11px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:11.5px}
.model-sub-chip.checked{border-color:var(--accent,#f3c66a);color:var(--accent,#f3c66a);background:rgba(243,198,106,.12)}
.model-view-row{grid-template-columns:auto 1fr;align-items:center;display:grid}
.model-view-row select{width:100%}
.model-cost-note{border:0;padding:0;background:transparent}
.model-custom{border:1px solid var(--line);border-radius:12px;padding:12px}
.model-settings-footer{position:sticky;bottom:0;margin:16px -24px 0;padding:12px 24px 14px;background:var(--surface);z-index:2}
@media(max-width:700px){.model-settings-footer{bottom:0;margin:16px -18px 0;padding:12px 18px 12px}.model-choice-list{grid-template-columns:1fr}}

/* 恢复吸底保存栏（fs3 footer 规则之后重申） */
.model-settings-footer{position:sticky;bottom:0;margin:24px -24px 0;padding:12px 24px 14px;background:var(--surface);z-index:2}

/* ===== 手机端编辑模型弹窗：两列紧凑卡片 ===== */
@media (max-width: 768px) {
  .model-choice-list{grid-template-columns:repeat(2,minmax(0,1fr)) !important;gap:8px !important}
  .model-choice{padding:8px 9px !important}
  .model-choice-body strong{font-size:13px}
  .model-choice-body small{display:none}
  .model-choice-meta{display:-webkit-box !important;-webkit-line-clamp:2 !important;-webkit-box-orient:vertical !important;overflow:hidden !important;font-size:10.5px !important;line-height:1.4 !important;font-style:normal !important;overflow-wrap:anywhere}
  .model-corner-badge{font-size:9px !important;padding:2px 6px !important}
  .model-list-title{font-size:12px !important}
}

/* ===== 手机端编辑模型弹窗：两列 + 对齐旧版双行紧凑卡片 ===== */
@media (max-width: 768px) {
  .model-choice-list{grid-template-columns:repeat(2,minmax(0,1fr)) !important;gap:7px !important}
  .model-choice{padding:8px 9px !important}
  .model-choice-body{display:block !important}
  .model-choice-body strong{font-size:12.5px}
  .model-choice-body small{display:inline-block;margin-left:4px;font-size:10px;opacity:.72}
  .model-choice-meta{display:block;margin-top:3px;font-size:10.5px !important;line-height:1.35 !important;font-style:normal !important}
  .model-corner-badge{font-size:9px !important;padding:2px 6px !important;top:6px !important;right:6px !important}
  .model-list-title{font-size:12px !important;margin:0 0 7px !important}
  /* 保存按钮全宽（旧版式） */
  .model-settings-footer{flex-direction:column-reverse;align-items:stretch;gap:8px;margin-bottom:0}
  .model-settings-footer .button-primary{width:100%;padding:12px}
  .model-settings-footer p{font-size:11px;text-align:center}
}

/* 手机端弹窗头部精简 */
@media (max-width: 768px) {
  .model-settings-dialog .modal-head{padding:14px 16px 10px !important}
  .model-settings-dialog .modal-head h2{font-size:16px !important;margin:0 0 3px !important}
  .model-settings-dialog .modal-head p{display:none}
  .model-settings-dialog [data-model-body]{padding:12px 14px !important}
}

/* ===== 手机端模型卡再缩小 ===== */
@media (max-width: 768px) {
  .model-choice{padding:7px 8px !important}
  .model-choice-list{gap:6px !important}
  .model-choice-body strong{font-size:12px}
  .model-choice-meta{font-size:10px !important}
}

/* ===== 手机端模型卡紧凑三期：红框尺寸 + 自定义占两列 + 叙事视角独立框 ===== */
@media (max-width: 768px) {
  .model-choice{padding:6px 8px !important}
  .model-choice-list{gap:6px !important}
  .model-choice-body strong{font-size:12px;line-height:1.3}
  .model-choice-meta{font-size:10px !important;margin-top:1px !important}
  .model-corner-badge{font-size:9px !important;padding:2px 6px !important;top:5px !important;right:6px !important}
  /* 自定义 API 独占两列 */
  .model-choice-wide{grid-column:1 / -1}
  /* 叙事视角：独立选项框 */
  .model-view-row{margin:10px 0 0;padding:10px 12px;border:1px solid color-mix(in srgb,var(--reader-text,#d8dee8) 14%,transparent);border-radius:10px;background:var(--reader-surface,#172033)}
  .model-view-row select{margin-top:6px}
}
/* 自定义 API 桌面端同样独占一行 */
.model-choice-wide{grid-column:1 / -1}

/* ===== 2026-09-29 编辑模型：卡片改按钮 + 二级型号/篇幅弹窗（对齐旧站 #hakimiModelDialog 流程） ===== */
/* 弹窗挂在 body 上，不在 .reader-page 内，--reader-surface 取不到，统一改用站点主题变量（浅色模式不再是深色卡） */
.model-settings-dialog{position:relative}
.model-choice-list .model-choice{width:100%;font:inherit;color:var(--text);text-align:left;-webkit-appearance:none;appearance:none;border-color:var(--line);background:var(--surface-2)}
.model-choice-list .model-choice:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
.model-choice-list .model-choice.checked{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface-2))}
.model-choice-list .model-choice:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.model-choice-list .model-choice.checked .model-choice-meta{color:var(--accent)}
[data-reader-model-form].is-saving .model-choice{cursor:progress;opacity:.72}
.model-brief .model-pick-button{justify-self:start;padding:7px 14px;border-radius:999px;border:1px solid color-mix(in srgb,var(--accent) 45%,var(--line));background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent);font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.model-brief .model-pick-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.model-sheet{position:absolute;inset:0;z-index:6;display:grid;place-items:center;padding:16px;background:rgba(0,0,0,.6);border-radius:inherit}
.model-sheet[hidden]{display:none}
.model-sheet-card{width:min(420px,100%);max-height:calc(100% - 8px);overflow:auto;display:grid;gap:12px;padding:18px;border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:var(--shadow)}
.model-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.model-sheet-head strong{font-size:15px;color:var(--text)}
.model-sheet-options{display:grid;gap:8px}
.model-sheet-option{display:grid;gap:4px;width:100%;padding:12px 14px;text-align:left;font:inherit;color:var(--text);border:1px solid var(--line);border-radius:12px;background:var(--surface-2);cursor:pointer;transition:border-color .15s,background .15s}
.model-sheet-option:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
.model-sheet-option.checked{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface-2));box-shadow:inset 3px 0 var(--accent);font-weight:inherit}
.model-sheet-option:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.model-sheet-option-name{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-weight:800;font-size:14px}
.model-sheet-option-badge{padding:1px 7px;border-radius:999px;background:var(--accent);color:#261e16;font-size:10px;font-style:normal;font-weight:800;line-height:1.5}
.model-sheet-option-sub{font-size:12px;line-height:1.5;color:var(--muted)}
.model-sheet-warning{margin:0;padding:10px 12px;border-radius:10px;border:1px solid color-mix(in srgb,var(--danger) 45%,transparent);background:color-mix(in srgb,var(--danger) 10%,transparent);color:var(--text);font-size:12px;line-height:1.7}
.model-sheet-warning[hidden]{display:none}
.model-sheet-actions{display:flex;justify-content:flex-end;gap:8px}
.model-sheet-actions button{width:auto;min-width:88px;margin:0}
html[data-theme="light"] .model-sheet-option.checked .model-sheet-option-name,html[data-theme="light"] .model-choice-list .model-choice.checked .model-choice-meta,html[data-theme="light"] .model-brief .model-pick-button,html[data-theme="light"] .model-brief-value{color:#9a5a1c}
@media (max-width:768px){
  .model-sheet{align-items:end;padding:10px}
  .model-sheet-card{width:100%;padding:16px;border-radius:18px 18px 14px 14px}
  .model-sheet-option{padding:12px 13px}
  .model-sheet-actions button{flex:1}
  .model-settings-dialog .model-view-row{border-color:var(--line) !important;background:var(--surface-2) !important}
}
/* AI 内容合规提示 + 内容反馈入口（对齐老站 input-compliance-hint） */
.reader-compliance-hint{flex:none;margin:-8px 16px 8px;text-align:center;font-size:11px;line-height:1.4;color:color-mix(in srgb,var(--reader-text,#d8dee8) 42%,transparent)}
.reader-compliance-hint button{padding:0;border:0;background:none;color:inherit;font:inherit;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.reader-compliance-hint button:hover,.reader-compliance-hint button:focus-visible{color:var(--reader-accent,#d9a441)}
.reader-immersive .reader-compliance-hint{display:none}

.reader-immersive .reader-top{display:none !important}
.reader-immersive .reader-page-nav{display:none !important}
.reader-immersive .reader-compliance-hint{display:none !important}
.reader-immersive .reader-controller-status{display:none}
.reader-immersive .input-toolbar{display:none}
.reader-immersive .input-bar{opacity:0;pointer-events:none;transition:opacity .2s}
.reader-immersive-input-visible .input-bar{opacity:1;pointer-events:auto}
.reader-immersive-exit{position:fixed;top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right));z-index:9999;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--line);color:var(--text);cursor:pointer;transition:background .15s}
.reader-immersive-exit:hover{background:var(--surface-3)}
@media(max-width:600px){.reader-compliance-hint{margin:-6px 8px 4px;font-size:10px}}
/* ===== r12 编辑模型弹窗：卡片内层 span 仍吃着旧版 .model-choice span 的内边距/最小高度，文字离边框太远；清掉后统一卡片与各区块间距 ===== */
.model-choice-list .model-choice .model-choice-body{padding:0;min-height:0;gap:2px}
.model-choice-list .model-choice{min-height:0;padding:9px 12px}
.model-choice-list .model-choice-body strong{line-height:1.3}
.model-choice-list .model-choice-meta{line-height:1.4}
[data-reader-model-form] .model-view-row{margin:14px 0 0;padding:8px 8px 8px 12px;gap:12px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--muted);font-size:13px}
[data-reader-model-form] .model-view-row select{margin:0;min-height:36px}
[data-reader-model-form] .model-brief{margin-top:12px}
[data-reader-model-form] .model-cost-note{margin-top:12px}
@media (max-width: 768px) {
  .model-choice-list .model-choice{padding:7px 9px !important}
  [data-reader-model-form] .model-view-row{margin:12px 0 0 !important;padding:6px 6px 6px 10px !important}
  [data-reader-model-form] .model-brief,[data-reader-model-form] .model-cost-note{margin-top:10px}
}
/* ===== r12 手机阅读页：正文优先 =====
   站点顶栏收起，阅读页顶条兼作 返回 / 标题 / 余额 / 会话 / 状态；中栏去掉外框贴满屏宽；
   轮次翻页挪到正文下方，和「AI生成」提示同一行；工具行与输入框压紧，输入框默认单行、聚焦时展开。 */
.reader-top .reader-wallet-chip{display:none}
.reader-top>.reader-back em{font-style:normal}
@media (max-width: 780px) {
  .app-shell.is-reading{grid-template-rows:minmax(0,1fr)}
  .app-shell.is-reading>.topbar{display:none}
  .reader-page.page{width:100%;padding:0 !important}
  .reader-page .reader-top{min-height:46px;margin:0;padding:0 8px 0 2px;gap:6px;border-bottom:1px solid var(--line);background:var(--surface)}
  .reader-top>.reader-back{flex:none;display:inline-grid;place-items:center;width:36px;height:36px;padding:0;font-size:18px;line-height:1}
  .reader-top>.reader-back em{display:none}
  .reader-page .reader-title{flex:1;min-width:0}
  .reader-page .reader-title h2{margin:0;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .reader-top .reader-wallet-chip{display:inline-flex;flex:none;gap:3px;padding:5px 9px;border-radius:999px;font-size:12px;cursor:pointer}
  .reader-top-actions{flex:none;gap:4px}
  .reader-top-actions .button-secondary,.reader-top-actions [data-reader-mobile-panel]{min-height:30px;padding:5px 9px;border-radius:999px;font-size:12px}
  .reader-center{border:0;border-radius:0}
  .reader-controller-view{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:minmax(0,1fr) auto auto auto auto}
  .reader-controller-view>*{grid-column:1/-1;min-width:0}
  .reader-controller-view>.reader-scroll{grid-row:1;padding:10px 8px 16px;border-radius:0}
  .reader-controller-view>.reader-compliance-hint{grid-row:2;grid-column:1;align-self:center;margin:0;padding:0 4px 0 12px;text-align:left;font-size:10.5px;line-height:1.3}
  .reader-controller-view>.reader-page-nav{grid-row:2;grid-column:2;min-height:0;margin:0;padding:4px 10px 4px 4px;gap:6px;border:0;background:transparent;font-size:12px}
  .reader-controller-view>.reader-controller-status{grid-row:3}
  .reader-controller-view>.input-toolbar{grid-row:4}
  .reader-controller-view>.input-bar{grid-row:5}
  .reader-page-nav .reader-page-nav-label{display:none}
  .reader-page-nav button{min-width:30px;padding:3px 8px;line-height:1.2}
  .reader-page-nav .reader-page-jump{width:38px;padding:2px 4px}
  .reader-scroll .story-rendered-message{padding:14px 12px}
  .reader-controller-view .input-toolbar{gap:5px;padding:4px 8px 2px;border-top:1px solid var(--line)}
  .reader-controller-view .input-toolbar .input-tool{min-height:28px;padding:3px 9px;font-size:12px}
  .reader-controller-view .input-bar{min-height:0;margin:4px 8px 8px !important;padding:3px 4px 3px 10px;gap:6px;border-radius:12px !important}
  .reader-controller-view .input-bar textarea{height:38px;min-height:38px;max-height:38px;padding:9px 2px;resize:none;line-height:20px}
  .reader-controller-view .input-bar textarea:focus{height:84px;max-height:84px;outline:none}
  .reader-controller-view .input-bar:focus-within{border-color:color-mix(in srgb,var(--accent) 55%,transparent) !important}
  .reader-session-rail.is-open,.reader-state-rail.is-open{top:52px}
  .reader-controller-view .input-bar button{min-width:54px;min-height:36px;padding:0 10px;border-radius:9px}
  .reader-immersive .reader-controller-view>.reader-compliance-hint{display:none}
  .reader-immersive .input-toolbar,.reader-immersive .reader-controller-status{display:none}
  .reader-immersive-exit{top:max(8px,env(safe-area-inset-top));right:max(8px,env(safe-area-inset-right))}

.reader-immersive .input-bar{opacity:0;pointer-events:none;transition:opacity .2s;position:fixed;bottom:0;left:0;right:0;z-index:9998;margin:0 !important;padding:12px !important;background:var(--surface);border-top:1px solid var(--line);border-radius:0 !important}
.reader-immersive-input-visible .input-bar{opacity:1;pointer-events:auto}
}
/* ===== R16 设定弹窗：地图 / 主题（阅读氛围），只用主题变量 ===== */
.reader-map-summary{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:16px;align-items:start}
.reader-map-thumb{display:grid;place-items:center;aspect-ratio:3/2;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--surface-2)}
.reader-map-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.reader-map-summary dl{display:grid;gap:10px;margin:0}
.reader-map-summary dl>div{display:flex;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}
.reader-map-summary dt{color:var(--muted);font-size:12px}.reader-map-summary dd{margin:0;color:var(--text);font-size:13px;font-weight:700;text-align:right;overflow-wrap:anywhere}
.reader-map-settings>p[data-map-feedback]{margin:14px 0 12px;font-size:13px;line-height:1.7}
.reader-map-actions{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:10px}
.reader-map-actions button:disabled{opacity:.55;cursor:not-allowed}
.reader-appearance>p.muted{font-size:13px;line-height:1.7;margin-bottom:14px}
.reader-appearance-presets{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px;margin-bottom:14px}
.reader-appearance-preset{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);color:var(--text);font-size:13px;text-align:left}
.reader-appearance-preset span{display:grid;place-items:center;flex:none;width:26px;height:26px;border-radius:7px;border:1px solid var(--line);background:var(--swatch-bg);color:var(--swatch-text);font-weight:700;font-size:13px}
.reader-appearance-preset[data-appearance-preset=follow] span{background:var(--reader-bg,var(--surface));color:var(--reader-text,var(--text))}
.reader-appearance-preset[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}
.reader-appearance-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.character-settings-dialog .reader-appearance input[type=color]{height:40px;padding:4px;cursor:pointer}
.character-settings-dialog .reader-appearance input[type=range]{padding:0;border:0;background:transparent;accent-color:var(--accent)}
.reader-appearance-preview{margin:0 0 14px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--swatch-bg);color:var(--swatch-text)}
.reader-appearance-preview strong{display:block;font-size:11px;opacity:.7;margin-bottom:6px}.reader-appearance-preview p{margin:0;line-height:1.9;font-size:15px}
.reader-appearance-bg{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.reader-appearance-bg-thumb{display:grid;place-items:center;flex:none;width:120px;aspect-ratio:16/10;overflow:hidden;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);font-size:12px}
.reader-appearance-bg-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.reader-appearance-bg-actions{display:flex;flex-wrap:wrap;gap:8px}
.reader-appearance-upload{display:inline-flex;align-items:center;cursor:pointer;color:var(--text)}
.reader-appearance-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.reader-appearance-actions [role=status]{font-size:12px}
@media(max-width:600px){.reader-map-summary{grid-template-columns:1fr}.reader-appearance-presets{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* 手机端长文本：原地只读预览（不内滚，避免与页面滚动误触），点按打开全屏编辑框 */
textarea.mobile-long-text{resize:none;overflow:hidden;max-height:7.6em;cursor:pointer;-webkit-mask-image:linear-gradient(180deg,#000 68%,transparent);mask-image:linear-gradient(180deg,#000 68%,transparent);touch-action:pan-y}
.field:has(>textarea.mobile-long-text)::after,label:has(>textarea.mobile-long-text)::after{content:"\70b9\6309\5c55\5f00\7f16\8f91";justify-self:end;margin-top:-4px;color:var(--accent);font-size:11px}
.mobile-long-text-modal{z-index:120;padding:0;place-items:stretch}
.mobile-long-text-modal .modal-card{display:flex;flex-direction:column;width:100%;max-width:none;height:100dvh;max-height:100dvh;padding:0;border:0;border-radius:0}
.mobile-long-text-modal .modal-head{flex:none;margin:0;padding:max(12px,env(safe-area-inset-top)) 16px 12px;border-bottom:1px solid var(--line)}
.mobile-long-text-modal .modal-head h3{margin:0;font-size:16px}
.mobile-long-text-modal textarea{flex:1;min-height:0;margin:0;padding:14px 16px;border:0;outline:0;resize:none;overflow:auto;overscroll-behavior:contain;background:var(--surface-2);color:var(--text);font-size:16px;line-height:1.7}
.mobile-long-text-modal .modal-actions{flex:none;align-items:center;margin:0;padding:10px 16px max(10px,env(safe-area-inset-bottom));border-top:1px solid var(--line)}
.mobile-long-text-modal .modal-actions small{margin-right:auto}

/* 沉浸阅读：看板娘浮球/面板一律隐藏（桌面与手机） */
html.reader-immersive .mascot-float-ball,html.reader-immersive .mascot-panel,html.reader-immersive .mascot-welcome-layer{display:none !important}
/* 沉浸阅读：桌面也隐藏全站顶栏与阅读框外边距，只留正文、退出键和点按呼出的输入栏 */
html.reader-immersive .app-shell.is-reading{grid-template-rows:minmax(0,1fr)}
html.reader-immersive .app-shell.is-reading>.topbar{display:none !important}
html.reader-immersive .app-shell.is-reading>.reader-page.page{width:100%;padding:0 !important}
/* 沉浸阅读：禁用输入栏 focus-within 边框（固定在底部的全宽容器，金边会显示在屏幕左右边缘） */
html.reader-immersive .reader-controller-view .input-bar:focus-within{border-color:rgba(216,222,232,.16) !important}
/* 状态栏全部 tab 统一滚动：只加 flex 布局属性，绝不声明 display（否则源码顺序会盖掉 @media(max-width:1100px) 里的 display:none） */
.reader-state-rail{flex-direction:column;overflow:hidden;min-height:0;overscroll-behavior:contain}
.reader-state-rail > .state-panel{flex:1 1 0;min-height:0;overflow:auto;overscroll-behavior:contain}
.reader-state-panels{flex:1 1 0;min-height:0;overflow:auto}
.currency-category-head{align-items:flex-start;flex-wrap:wrap;gap:8px}
.currency-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;min-width:0}
.currency-auto-toggle{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:12px;cursor:pointer}
.currency-auto-toggle input{width:16px;height:16px;margin:0;accent-color:var(--accent,#bc9b48)}
.currency-auto-toggle:has(input:disabled){opacity:.5;cursor:default}
.currency-exchange-button{width:32px;height:32px;font-size:20px;flex:0 0 32px}
.currency-exchange-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.currency-exchange-grid label{display:flex;flex-direction:column;gap:6px;min-width:0}
.currency-exchange-grid label:last-child{grid-column:1/-1}
.currency-exchange-grid select,.currency-exchange-grid input{box-sizing:border-box;width:100%;min-width:0}
.currency-settings-preference{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--line,rgba(128,128,128,.25))}
.currency-settings-preference span[role=status],.currency-conflict{font-size:12px;color:var(--muted,#999)}
[data-exchange-preview]{min-height:84px;padding:12px 0;font-size:14px}

/* Time settings live outside the reader so they remain above its fixed shell. */
.time-advance-popover{position:fixed;z-index:10035;box-sizing:border-box;display:flex;flex-direction:column;gap:5px;width:272px;max-width:calc(100vw - 16px);padding:12px;overflow-y:auto;overscroll-behavior:contain;border:1px solid color-mix(in srgb,var(--reader-text,var(--text)) 20%,transparent);border-radius:12px;background:var(--reader-surface,var(--surface));color:var(--reader-text,var(--text));box-shadow:0 16px 40px #0005}
.time-advance-head{flex:none;font-size:12px;opacity:.75;margin-bottom:2px}
.time-advance-options{display:grid;gap:5px;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.time-advance-opt{padding:8px 10px;border:1px solid transparent;border-radius:8px;background:transparent;color:inherit;text-align:left;font-size:13px}
.time-advance-opt:hover{background:color-mix(in srgb,currentColor 8%,transparent)}
.time-advance-opt.is-active{border-color:var(--reader-action,var(--accent));font-weight:700}
.time-advance-custom{display:flex;flex:none;gap:6px;margin-top:4px}
.time-advance-custom input,.time-advance-custom select{min-width:0;padding:7px 6px;border:1px solid color-mix(in srgb,var(--reader-text,var(--text)) 20%,transparent);border-radius:8px;background:var(--reader-surface,var(--surface));color:inherit;font-size:16px}
.time-advance-custom input{width:80px}
.time-advance-custom select{flex:1}
.time-advance-apply{padding:7px 10px;border-radius:8px;background:var(--reader-action,var(--accent));color:#231e18;font-size:13px;font-weight:700;white-space:nowrap}
.time-advance-clear{flex:none;margin-top:2px;padding:6px 8px;border-radius:8px;background:transparent;color:inherit;opacity:.75;font-size:12px;text-align:left}

/* Fullscreen composer is visible on entry and occupies its own row, so it cannot
   cover the last paragraph. Tapping the story can still hide/show it. */
html.reader-immersive .reader-controller-view>.input-bar{display:none;position:static;bottom:auto;left:auto;right:auto;z-index:auto;margin:0 !important;padding:10px 12px calc(10px + env(safe-area-inset-bottom,0px)) !important;border-radius:0 !important}
html.reader-immersive.reader-immersive-input-visible .reader-controller-view>.input-bar{display:flex;opacity:1;pointer-events:auto}
@media(max-width:780px){
  html.reader-immersive .reader-controller-view{grid-template-rows:minmax(0,1fr) auto}
  html.reader-immersive .reader-controller-view>.input-bar{grid-row:2;grid-column:1/-1}
}

/* The behavior uses the long field in creator and reader settings. */
.world-npc-rule { grid-template-columns: minmax(0,2fr) minmax(0,1fr) auto auto; align-items: end; }
.world-npc-rule-content, .world-npc-rule-condition { display: flex; flex-direction: column; gap: 4px; min-width: 0; font-size: 12px; color: var(--muted); }
.world-npc-rule .world-npc-rule-content textarea { box-sizing: border-box; width: 100%; min-width: 0; min-height: 64px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-2); color: var(--text); font: inherit; resize: vertical; }
@media (max-width:600px) { .world-npc-rule { grid-template-columns:minmax(0,1fr) auto auto; } .world-npc-rule-content { grid-column:1/-1; } .world-npc-rule .world-npc-rule-condition input[data-rule-field=trigger] { grid-column:auto; } }
