:root{
  --bg:#10161D; --panel:#1A222B; --panel-2:#161D25;
  --ink:#E8EDF2; --ink-2:#9AA8B5; --line:#2C3947;
  --accent:#7FB4D6; --accent-soft:#1D3140;
  --tally:#E05B57; --tally-soft:#352022;
  --demo-bg:#2E2712; --demo-line:#6E5A1E; --demo-ink:#E6C25F;
  --pause-bg:#262038; --pause-line:#4E4374; --pause-ink:#BCABEE;
  --note-bg:#152926; --note-line:#3C6962; --note-ink:#6FBCB0;
  --ppt-bg:#1E2630; --ppt-ink:#9AA8B5;
  --serif:'Charter','Iowan Old Style',Georgia,'Times New Roman',serif;
  --sans:-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei','Noto Sans CJK SC',sans-serif;
  --mono:ui-monospace,'SF Mono','Cascadia Code',Consolas,'Liberation Mono',monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6}
a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* ---------- doc title ---------- */
.doctitle{max-width:1320px;margin:16px auto 0;padding:0 20px;display:flex;align-items:center;gap:8px;
  font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.12em;color:var(--ink-2)}
.doctitle .dot{width:8px;height:8px;border-radius:50%;background:var(--tally);flex:none}

/* ---------- minimap (narrow viewport) ---------- */
.mmap{position:fixed;right:5px;top:50%;transform:translateY(-50%);z-index:60;display:none;flex-direction:column;gap:5px}
.mmap a{display:flex;align-items:center;justify-content:center;width:26px;height:24px;
  border:1px solid var(--line);border-radius:6px;background:rgba(26,34,43,.92);
  color:var(--ink-2);font-family:var(--mono);font-size:10px;font-weight:700;text-decoration:none}
.mmap a.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}

/* ---------- layout ---------- */
.layout{display:grid;grid-template-columns:264px minmax(0,1fr);gap:24px;max-width:1320px;margin:0 auto;padding:22px 20px 80px}
.rail{position:sticky;top:16px;align-self:start;display:flex;flex-direction:column;gap:6px;max-height:calc(100vh - 32px);overflow:auto;padding-right:2px}
.rail a{display:block;text-decoration:none;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:9px 11px}
.rail a:hover{border-color:var(--accent)}
.rail a.active{border-color:var(--accent);background:var(--accent-soft)}
.rail .r1{display:flex;align-items:baseline;gap:8px}
.rail .code{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--accent);letter-spacing:.06em}
.rail .t{font-size:13.5px;font-weight:600}
.rail .r2{font-family:var(--mono);font-size:11px;color:var(--ink-2);margin-top:3px}
.legend{margin-top:8px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 11px;font-size:12px;color:var(--ink-2);line-height:1.7}
.legend b{color:var(--ink);font-weight:600}
.legend .key{font-family:var(--mono);font-size:11px;border:1px solid var(--line);border-radius:4px;padding:0 5px;background:var(--panel-2)}
.swatch{display:inline-block;width:9px;height:9px;border-radius:2px;vertical-align:baseline;margin-right:4px}

/* ---------- script ---------- */
.script{min-width:0}
.colhead{display:grid;grid-template-columns:1fr 1fr;gap:0 22px;padding:0 18px;margin-bottom:8px;
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--ink-2)}
.sec{margin-bottom:34px}
.sec-head{padding:4px 2px 12px}
.eyebrow{font-family:var(--mono);font-size:11.5px;font-weight:700;letter-spacing:.16em;color:var(--accent)}
.sec-head h2{font-size:22px;margin-top:4px;line-height:1.3}
.sec-head h2 small{font-family:var(--serif);font-weight:500;font-style:italic;color:var(--ink-2);font-size:15px;margin-left:8px}
.sec-head .meta{display:block;margin-top:5px;font-family:var(--mono);font-size:12px;color:var(--ink-2)}

.step{cursor:pointer}
.block{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:0 22px;
  background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-bottom:10px}
.block .gut{position:absolute;top:5px;right:10px;font-family:var(--mono);font-size:10.5px;font-weight:700;color:var(--ink-2);opacity:.6}
.block .en{font-family:var(--serif);font-size:17.5px;line-height:1.66}
.block .zh{font-size:16.5px;line-height:1.95;border-left:1px solid var(--line);padding-left:22px}
.block.current{border-color:var(--tally);background:var(--tally-soft)}
.block.current::before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:4px;background:var(--tally);border-radius:10px 0 0 10px}
.block.current .zh{border-left-color:var(--tally)}
.block:hover{border-color:var(--accent)}
.block.current:hover{border-color:var(--tally)}

.cue{position:relative;display:flex;align-items:flex-start;gap:14px;border-radius:10px;
  padding:12px 18px;margin:14px 0;border:1px dashed var(--line)}
.cue .tag{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.14em;
  padding:3px 8px;border-radius:5px;flex:none;margin-top:2px}
.cue .cbody{font-size:14.5px;line-height:1.55}
.cue .cbody b{display:block;font-size:15px}
.cue .cbody span{color:var(--ink-2);font-size:13px;font-family:var(--serif);font-style:italic}
.cue.demo{background:var(--demo-bg);border-color:var(--demo-line)}
.cue.demo .tag{background:var(--demo-ink);color:var(--demo-bg)}
.cue.demo .cbody b{color:var(--demo-ink)}
.cue.pause{background:var(--pause-bg);border-color:var(--pause-line)}
.cue.pause .tag{background:var(--pause-ink);color:var(--pause-bg)}
.cue.pause .cbody b{color:var(--pause-ink)}
.cue.ppt{background:var(--ppt-bg);border-style:solid;padding:8px 18px}
.cue.note{background:var(--pause-bg);border-color:var(--pause-line)}
.cue.note .tag{background:var(--pause-ink);color:var(--pause-bg)}
.cue.note .cbody b{color:var(--pause-ink)}
.cue.ppt .tag{background:var(--ppt-ink);color:var(--ppt-bg)}
.cue.ppt .cbody{font-size:13.5px;color:var(--ppt-ink)}
.cue.note{background:var(--note-bg);border-color:var(--note-line)}
.cue.note .tag{background:var(--note-ink);color:var(--note-bg)}
.cue.note .cbody b{color:var(--note-ink)}
.cue.current{outline:2px solid var(--tally);outline-offset:-1px}

.cue.q{background:var(--accent-soft);border-style:solid;border-color:var(--accent)}
.cue.q .tag{background:var(--accent);color:var(--panel)}
.cue.q .cbody b{color:var(--accent)}
.block .en p+p,.block .zh p+p{margin-top:10px}

.endnote{margin-top:30px;text-align:center;font-family:var(--mono);font-size:12px;color:var(--ink-2)}

/* ---------- responsive (≤980px: minimap mode, tuned for ~500px) ---------- */
@media (max-width:980px){
  .doctitle{margin-top:12px;padding:0 38px 0 14px}
  .layout{grid-template-columns:1fr;gap:0;padding:12px 38px 80px 14px}
  .rail{display:none}
  .mmap{display:flex}
  .colhead{display:none}
  .sec{margin-bottom:26px}
  .sec-head h2{font-size:19px}
  .sec-head h2 small{display:block;margin-left:0;margin-top:2px}
  .block{grid-template-columns:1fr;padding:14px 14px 13px}
  .block .en{font-size:16.5px;line-height:1.62}
  .block .zh{font-size:16px;line-height:1.85;border-left:none;padding-left:0;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
  .block.current .zh{border-top-color:var(--tally)}
  .cue{padding:10px 12px;gap:10px;margin:12px 0}
}
/* ---------- print ---------- */
@media print{
  .doctitle,.rail,.mmap,.colhead{display:none}
  body{background:#fff;color:#000}
  .layout{display:block;padding:0;max-width:none}
  .block,.cue{break-inside:avoid;background:#fff;color:#000;border-color:#bbb}
  .block .zh,.cue .cbody span{color:#333}
  .block.current{background:#fff}
  .block.current::before{display:none}
}

/* ---------- app additions ---------- */
.dt-actions{margin-left:auto;display:flex;gap:14px}
.dt-actions a{color:var(--ink-2);text-decoration:none;font-family:var(--mono);font-size:11px;letter-spacing:.08em}
.dt-actions a:hover{color:var(--accent)}

body.mode-list .layout,body.mode-login .layout,body.mode-edit .layout{grid-template-columns:minmax(0,1fr)}
body.mode-list .rail,body.mode-login .rail,body.mode-edit .rail,
body.mode-list .mmap,body.mode-login .mmap,body.mode-edit .mmap{display:none !important}

.list{display:flex;flex-direction:column;gap:10px;max-width:680px;margin:10px auto}
.list-item{display:flex;align-items:center;gap:14px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.list-item:hover{border-color:var(--accent)}
.li-main{flex:1;min-width:0;text-decoration:none;color:var(--ink)}
.li-main b{display:block;font-size:16px}
.li-main span{font-family:var(--mono);font-size:11px;color:var(--ink-2)}
.li-edit,.li-del{font-family:var(--mono);font-size:12px;color:var(--ink-2);text-decoration:none;flex:none}
.li-edit:hover{color:var(--accent)}
.li-del:hover{color:var(--tally)}
.empty{color:var(--ink-2);text-align:center;margin-top:48px;font-size:14px}

.panelbox{max-width:340px;margin:18vh auto 0;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:24px;display:flex;flex-direction:column;gap:12px}
.panelbox h2{font-size:16px}
.panelbox input{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;color:var(--ink);padding:10px;font-size:16px}
.panelbox .warn{color:var(--tally);font-size:13px}

button{background:var(--accent-soft);border:1px solid var(--accent);color:var(--accent);border-radius:8px;padding:9px 18px;font-size:14px;cursor:pointer;font-family:var(--sans)}
button:hover{filter:brightness(1.2)}

.editor{display:flex;flex-direction:column;height:calc(100vh - 64px);gap:8px}
.ed-bar{display:flex;align-items:center;gap:12px}
#save-msg{font-family:var(--mono);font-size:11px;color:var(--ink-2)}
.ed-warn{font-family:var(--mono);font-size:11.5px;color:var(--demo-ink);line-height:1.6;max-height:90px;overflow:auto}
.ed-warn:empty{display:none}
#ed-ta{flex:1;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;color:var(--ink);font-family:var(--mono);font-size:13.5px;line-height:1.7;padding:14px;resize:none;outline:none}
#ed-ta:focus{border-color:var(--accent)}

.block.solo{grid-template-columns:1fr}
.block.solo .zh{border-left:none;padding-left:0}

/* ---------- 窄屏精简(手机演讲实测反馈):只留关键信息 ---------- */
@media (max-width:980px){
  /* 顶行不显示讲稿标题,避免把 列表/编辑 挤成两行 */
  body.mode-present #doctitle-text,body.mode-edit #doctitle-text{display:none}
  /* 章节头只留中文标题:隐藏眉题(OPENING)、英文副标题、时长备注 */
  .sec-head .eyebrow{display:none}
  .sec-head h2 small{display:none !important}
  .sec-head .meta{display:none}
  /* DEMO/PAUSE/NOTE 隐藏英文辅助行(Q 的辅助行是中文问题,保留) */
  .cue.demo .cbody span,.cue.pause .cbody span,.cue.note .cbody span{display:none}
}

/* ---------- 原位编辑 / AI 改写(演讲页选中块) ---------- */
.step{touch-action:manipulation}
#blk-tools{position:absolute;top:-14px;right:32px;display:flex;gap:6px;z-index:5}
#blk-tools button{padding:3px 10px;font-size:12px;font-family:var(--mono);border-radius:6px;background:var(--panel-2)}
.block.editing{border-color:var(--accent)}
.block.editing .zh{border-left-color:var(--accent)}
.block p[contenteditable]{outline:1px dashed var(--accent);outline-offset:3px;border-radius:2px;cursor:text}
#ai-bar{grid-column:1/-1;display:flex;gap:8px;margin-top:14px}
#ai-bar input{flex:1;min-width:0;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;color:var(--ink);padding:8px 10px;font-size:16px;font-family:var(--sans)}
#ai-bar input:focus{border-color:var(--accent);outline:none}
#ai-bar button{padding:6px 12px;font-size:13px;flex:none}
.block.busy{opacity:.55}
.block.busy #ai-bar{pointer-events:none}

/* ---------- 字号缩放:--fs 由演讲页 A−/A+ 控制,存 localStorage ---------- */
.sec-head h2{font-size:calc(22px*var(--fs,1))}
.block .en{font-size:calc(17.5px*var(--fs,1))}
.block .zh{font-size:calc(16.5px*var(--fs,1))}
.cue .cbody{font-size:calc(14.5px*var(--fs,1))}
.cue .cbody b{font-size:calc(15px*var(--fs,1))}
.cue .cbody span{font-size:calc(13px*var(--fs,1))}
.cue.ppt .cbody{font-size:calc(13.5px*var(--fs,1))}
@media (max-width:980px){
  .sec-head h2{font-size:calc(19px*var(--fs,1))}
  .block .en{font-size:calc(16.5px*var(--fs,1))}
  .block .zh{font-size:calc(16px*var(--fs,1))}
}
