:root{
  color-scheme:light;
  --bg:#FAF9F7; --surface:#FFFFFF; --sidebar:#F2F0EC; --text:#1F1E1D; --muted:#6B6862;
  --border:#E7E4DE; --border-soft:#EFECE6; --accent:#16303C; --accent-ink:#FFFFFF;
  --alert:#B3382E; --alert-ink:#FFFFFF; --ok:#2E7D5B; --chip:#EDEAE4; --hover:#E9E6E0; --user-bub:#16303C; --user-ink:#F5F4F1;
  --ink-deep:#0E1A21;--ink-deep-2:#14242C;--paper:#F6F5F2;--paper-2:#FBFAF8;--gold:#C9B27A;
  --hall-library:#5E8CA3;--hall-thinktank:#7A2E2E;--hall-studio:#8A6A2F;
  --on-ink:#EEEAE2;--on-ink-muted:#9BA6AA;--line-on-ink:rgba(255,255,255,.10);
  --line-on-ink-2:rgba(255,255,255,.22);--hover-on-ink:rgba(255,255,255,.06);
  --active-on-ink:rgba(255,255,255,.10);--glow-gold:rgba(201,178,122,.10);
  --display:'Cormorant Garamond','Noto Serif TC',Georgia,serif;--stamp:#B3382E;
  --r-xs:4px;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-full:999px;
  --shadow-1:0 1px 2px rgba(31,30,29,.04),0 2px 6px rgba(31,30,29,.05);
  --shadow-2:0 8px 24px rgba(31,30,29,.12);
  --shadow-3:0 20px 60px rgba(31,30,29,.22);
  --scrim:rgba(0,0,0,.4);--ease:cubic-bezier(.2,.7,.3,1);
  --serif:Georgia,'Songti TC','Noto Serif TC',serif;
  --sans:-apple-system,BlinkMacSystemFont,'Noto Sans TC','Segoe UI',sans-serif;
  --fs-2xs:11px;--fs-xs:12px;--fs-sm:13px;--fs-base:15px;--fs-md:16px;
  --fs-lg:18px;--fs-xl:20px;--fs-2xl:24px;--fs-3xl:30px;
  --sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-6:24px;--sp-8:32px;--sp-12:48px;
}
[data-theme=dark]{
  color-scheme:dark;
  --bg:#1F1E1D; --surface:#262523; --sidebar:#191817; --text:#EDEBE7; --muted:#9A968E;
  --border:#33312E; --border-soft:#2C2A27; --accent:#8FB3C4; --accent-ink:#14232B;
  --alert:#D96C5F; --alert-ink:#1F1E1D; --ok:#6FBF95; --chip:#2E2C29; --hover:#302E2B; --user-bub:#3A4E5A; --user-ink:#F0EFEC;
  --ink-deep:#0E1A21;--ink-deep-2:#14242C;--paper:#14242C;--paper-2:#0E1A21;--gold:#C9B27A;
  --hall-library:#5E8CA3;--hall-thinktank:#7A2E2E;--hall-studio:#8A6A2F;
  --on-ink:#EEEAE2;--on-ink-muted:#9BA6AA;--line-on-ink:rgba(255,255,255,.10);
  --line-on-ink-2:rgba(255,255,255,.22);--hover-on-ink:rgba(255,255,255,.06);
  --active-on-ink:rgba(255,255,255,.10);--glow-gold:rgba(201,178,122,.10);
  --display:'Cormorant Garamond','Noto Serif TC',Georgia,serif;--stamp:var(--gold);
  --shadow-1:0 1px 3px rgba(0,0,0,.4);--shadow-2:0 8px 24px rgba(0,0,0,.5);
  --shadow-3:0 20px 60px rgba(0,0,0,.6);--scrim:rgba(0,0,0,.55);
}
/* OrderLens 智庫 UI — Claude 式暖調中性 + 學術點綴 */
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;font-family:var(--sans);background:var(--bg);color:var(--text);
  display:flex;height:100dvh;overflow:hidden}
a{color:inherit}
button{font-family:inherit;cursor:pointer}

/* ── 側欄 ── */
/* v3.87:側欄收成 84px 純圖示導覽軌(第一層=館);第二層館內頁在 #hallTabs */
#side{width:84px;flex:0 0 84px;background:var(--ink-deep);color:var(--on-ink);border-right:1px solid var(--line-on-ink);
  display:flex;flex-direction:column;align-items:center;padding:var(--sp-6) var(--sp-2) var(--sp-3);gap:var(--sp-2)}
.brand{display:flex;gap:var(--sp-3);align-items:center;padding:2px 6px;border-radius:var(--r-sm);text-decoration:none}
.brand:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.b-mark{display:inline-flex;width:36px;height:36px;align-items:center;justify-content:center;color:var(--gold)}
.b-mark svg{width:30px;height:30px}
.b-name{color:var(--on-ink);font-family:var(--display);font-size:var(--fs-xl);letter-spacing:.04em}
.btn-new{display:block;width:100%;padding:10px 12px;border:1px solid var(--border);
  border-radius:var(--r-md);background:var(--surface);color:var(--text);font-size:var(--fs-sm);text-align:left;
  box-shadow:var(--shadow-1);transition:background .15s var(--ease)}
.btn-new:hover{background:var(--hover)}
.s-scroll{flex:1;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:var(--sp-1)}
.s-label{font-family:var(--display);font-size:var(--fs-base);color:var(--gold);letter-spacing:.08em;
  padding:12px 8px 5px}
#convList,#projList{display:flex;flex-direction:column;gap:var(--sp-1)}
.s-sub-label{padding:var(--sp-3) var(--sp-2) var(--sp-1);color:var(--muted);font-size:var(--fs-2xs)}
.s-empty{padding:var(--sp-1) var(--sp-2);color:var(--muted);font-size:var(--fs-xs)}
.cv{display:flex;align-items:center;gap:var(--sp-2);padding:7px 8px;border-radius:var(--r-sm);font-size:var(--fs-sm);
  color:var(--text);cursor:pointer;white-space:nowrap}
.cv:hover{background:var(--hover)}
.cv:focus-visible,.drop:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.cv.on{background:var(--hover);font-weight:600}
.cv-t{flex:1;overflow:hidden;text-overflow:ellipsis}
.cv .mg-actions{flex:0 0 auto}
.s-nav{display:flex;flex-direction:column;gap:var(--sp-1)}
.nv{position:relative;display:flex;align-items:center;gap:var(--sp-2);padding:7px 8px;border-radius:var(--r-sm);font-size:var(--fs-sm);
  text-decoration:none;color:var(--on-ink);transition:background .15s var(--ease)}
.nv:hover{background:var(--hover-on-ink)}
.nv.on{background:var(--active-on-ink)}
.nv.on::before{content:"";position:absolute;left:0;width:2px;height:16px;border-radius:var(--r-full);background:var(--accent)}
.nv-ic{width:16px;height:16px;display:inline-flex;color:var(--on-ink-muted)}
.nv-radar .nv-ic{color:var(--gold)}
.badge{margin-left:auto;background:var(--alert);color:var(--alert-ink);font-size:var(--fs-2xs);font-weight:700;
  border-radius:var(--r-sm);padding:1px 7px;min-width:12px;text-align:center}
.badge:empty{display:none}
/* 版權頁式 ledger:標籤 … 點狀引導線 … 襯線數字(與入庫紀錄列的 dotted 同詞彙) */
.s-stats{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:auto;
  padding:var(--sp-3) var(--sp-2) 0;border-top:1px solid var(--border-soft)}
.s-stat{display:flex;align-items:baseline;gap:var(--sp-2);font-size:var(--fs-2xs);color:var(--muted)}
.s-stat i{flex:1;min-width:var(--sp-3);border-bottom:1px dotted var(--border)}
.s-stat b{color:var(--text);font-family:var(--serif);font-size:var(--fs-sm);font-weight:600;
  font-variant-numeric:tabular-nums}
.s-foot{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--sp-1);
  padding:var(--sp-2) var(--sp-1) 0;border-top:1px solid var(--border);color:var(--muted);
  font-size:var(--fs-2xs);line-height:1.5;text-align:center}
.s-legal{border:0;background:none;padding:0;color:var(--text);font:inherit;text-decoration:underline;
  text-underline-offset:2px;cursor:pointer}
.ico-btn{display:inline-flex;align-items:center;justify-content:center;border:none;background:none;color:var(--text);font-size:var(--fs-base);padding:5px 7px;
  border-radius:var(--r-sm);text-decoration:none;line-height:1}
.ico-btn:hover{background:var(--hover);color:var(--text)}
#scrim{display:none;position:fixed;inset:0;background:var(--scrim);z-index:40}
#side .btn-new{border-color:var(--line-on-ink-2);background:transparent;color:var(--on-ink);box-shadow:none}
#side .btn-new:hover,#side .cv:hover{background:var(--hover-on-ink)}
#side .cv,#side .s-legal{color:var(--on-ink)}
#side .s-sub-label,#side .s-empty,#side .s-stat,#side .s-foot{color:var(--on-ink-muted)}
#side .s-stats,#side .s-foot{border-color:var(--line-on-ink)}
#side .s-stat i{border-color:var(--line-on-ink-2)}
#side .s-stat b{color:var(--on-ink)}
#side .ico-btn{color:var(--on-ink)}
#side :is(a,button,summary):focus-visible{outline:2px solid var(--gold);outline-offset:-2px}

/* ── 主區 ── */
#main{flex:1;min-width:0;display:flex;flex-direction:column;height:100dvh}
#mhead{position:relative;z-index:30;display:flex;align-items:flex-end;gap:var(--sp-3);min-height:76px;padding:var(--sp-4) var(--sp-8) var(--sp-3);
  border-bottom:1px solid var(--border-soft);background:var(--bg)}
#menuBtn{display:none}
#mtitle{font-family:var(--display);font-size:var(--fs-3xl);font-size:calc(var(--fs-xl) * 2);letter-spacing:0;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:500;line-height:1;flex:1;min-width:0;color:var(--accent)}
.head-menu{position:relative;display:flex}
.head-menu .mg-menu{z-index:2;min-width:210px;max-width:calc(100vw - 24px)}
.me-seal{width:30px;height:30px;padding:0;border:1px solid var(--accent);border-radius:50%;
  color:var(--accent);font-family:var(--serif);font-size:var(--fs-sm);font-weight:600}
.me-head{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-2);border-bottom:1px solid var(--border-soft)}
.me-head strong{color:var(--text);font-size:var(--fs-sm);overflow-wrap:anywhere}
.me-head span{color:var(--muted);font-size:var(--fs-2xs)}
.view{display:none;flex:1;min-height:0;flex-direction:column}
body[data-view=home] #view-home{display:flex}
.home-banner{margin:0 0 var(--sp-4);padding:var(--sp-3) var(--sp-4);border:1px solid var(--alert);border-radius:var(--r-md);color:var(--on-ink);background:var(--hover-on-ink);font-size:var(--fs-sm)}
body[data-view=chat] #view-chat{display:flex}
body[data-view=review] #view-review{display:flex}
body[data-view=upload] #view-upload{display:flex}
body[data-view=personal] #view-personal{display:flex}
body[data-view=account] #view-account{display:flex}
body[data-view=admin] #view-admin{display:flex}
body[data-view=reader] #view-reader{display:flex}
body[data-view=writing] #view-writing{display:flex}
body[data-view=reading] #view-reading{display:flex}
body[data-view=log] #view-log{display:flex}
body[data-view=dash] #view-dash{display:flex}
body[data-view=advisors] #view-advisors{display:flex}
body[data-view=roundtable] #view-roundtable{display:flex}
body[data-view=board] #view-board{display:flex}
body[data-view=taxonomy] #view-taxonomy{display:flex}
body[data-view=trash] #view-trash{display:flex}
.v-pad{flex:1;overflow-y:auto;padding:22px;max-width:860px;margin:0 auto;width:100%}

/* ── 門廳 ── */
#view-home{background:radial-gradient(circle at 78% 10%,var(--glow-gold),transparent 60%),var(--ink-deep);color:var(--on-ink)}
body[data-view=home] #mhead{border-color:var(--line-on-ink);background:var(--ink-deep);color:var(--on-ink)}
body[data-view=home] #mhead .ico-btn{color:var(--on-ink)}
body[data-view=home] #mhead .me-seal{border-color:var(--gold);color:var(--gold)}
body[data-view=home] #mhead :is(a,button):focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.home-shell{flex:1;overflow-y:auto;width:100%;max-width:1200px;margin:0 auto;padding:var(--sp-8) var(--sp-12)}
.home-shell > .hero-t{display:flex;flex-direction:column;gap:var(--sp-2);margin:var(--sp-4) 0 var(--sp-8);text-wrap:balance}
.home-hero-title{font-family:var(--display);font-size:calc(var(--fs-3xl) * 2.4);font-weight:400;line-height:1.05;
  letter-spacing:-.01em;color:var(--on-ink)}
.home-facts-line{max-width:60ch;color:var(--on-ink-muted);font-size:var(--fs-base);line-height:1.6}
.home-halls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-4)}
.hall-card{display:flex;min-width:0;min-height:calc(var(--sp-12) * 5);flex-direction:column;
  padding:var(--sp-6);border:1px solid var(--line-on-ink);border-top-width:3px;border-radius:var(--r-sm);
  background:transparent;cursor:pointer;transition:transform 260ms var(--ease),background 260ms var(--ease)}
.hall-card[data-hall=library]{border-top-color:var(--hall-library)}
.hall-card[data-hall=thinktank]{border-top-color:var(--hall-thinktank)}
.hall-card[data-hall=studio]{border-top-color:var(--hall-studio)}
.hall-card[data-hall=me]{border-top-color:var(--gold)}
.hall-card:hover{transform:translateY(-6px);background:var(--hover-on-ink)}
.hall-card:focus-visible,.hall-go:focus-visible,.home-recent-row:focus-visible{
  outline:2px solid var(--gold);outline-offset:2px}
.hall-head{display:flex;align-items:center;gap:var(--sp-2);padding-bottom:var(--sp-3);border-bottom:0}
.hall-head h2{flex:1;margin:0;font-family:var(--display);font-size:calc(var(--fs-xl) * 2.2);font-weight:500;
  line-height:1;text-wrap:balance}
.hall-icon{display:inline-flex;color:var(--on-ink-muted)}
.hall-icon svg,.home-recent-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.hall-count{color:var(--on-ink-muted);font-family:var(--display);font-size:var(--fs-lg);font-variant-numeric:tabular-nums}
.hall-links{display:grid;grid-template-columns:auto auto;align-content:start;justify-content:start;gap:var(--sp-2);padding-top:var(--sp-3)}
.hall-links h3{margin:0;font-size:var(--fs-md);font-weight:400}
.hall-row{grid-column:1/-1;order:-1;width:100%}
.hall-row .hall-go{border-bottom:1px dotted var(--line-on-ink-2);border-radius:0;padding:var(--sp-2) 0;color:var(--on-ink-muted)}
.hall-row .hall-go::after{content:"›";color:var(--gold)}
.hall-go{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:var(--sp-2);
  border-radius:var(--r-sm);color:var(--on-ink);text-decoration:none}
.hall-go:hover{background:var(--hover-on-ink);color:var(--on-ink)}
.pill-light,.pill-ghost{margin-top:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-full);
  font-size:var(--fs-sm);white-space:nowrap}
.pill-light{border:1px solid var(--on-ink);background:var(--on-ink);color:var(--ink-deep);font-weight:600}
.pill-light:hover{background:var(--paper);color:var(--ink-deep)}
.pill-ghost{border:1px solid var(--line-on-ink-2);background:transparent;color:var(--on-ink)}
.hall-card-me{grid-column:1/-1;min-height:0;flex-direction:row;align-items:center;gap:var(--sp-6)}
.hall-card-me .hall-head{flex:1;padding-bottom:0}
.hall-card-me .hall-links{display:flex;padding-top:0}
.home-recent{margin-top:var(--sp-8)}
.home-recent h2{margin:0 0 var(--sp-3);color:var(--gold);font-family:var(--display);font-size:var(--fs-lg);font-weight:500}
#homeRecent{display:flex;flex-direction:column;border-top:1px solid var(--line-on-ink)}
.home-recent-row{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-3);
  border:0;border-bottom:1px solid var(--line-on-ink);background:none;color:var(--on-ink);font:inherit;text-align:left}
.home-recent-row:hover{background:var(--hover-on-ink)}
.home-recent-icon{display:inline-flex;color:var(--gold)}
.home-recent-copy{display:flex;min-width:0;flex:1;align-items:baseline;gap:var(--sp-3)}
.home-recent-copy strong{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--display);font-size:var(--fs-sm)}
.home-recent-copy small{color:var(--on-ink-muted);font-size:var(--fs-xs);white-space:nowrap}
.home-recent-empty{padding:var(--sp-6);border-bottom:1px solid var(--line-on-ink);color:var(--on-ink-muted);
  font-size:var(--fs-sm);text-align:center}
@media(max-width:768px){
  .home-shell{padding:var(--sp-4)}
  .home-shell > .hero-t{margin-bottom:var(--sp-6)}
  .home-hero-title{font-size:calc(var(--fs-3xl) * 1.45)}
  .home-halls{grid-template-columns:1fr}
  .hall-card{min-height:0}
  .hall-card-me{grid-column:auto;flex-direction:column;align-items:stretch;gap:0}
  .hall-card-me .hall-head{padding-bottom:var(--sp-3)}
  .hall-card-me .hall-links{padding-top:var(--sp-3)}
  .home-recent-copy{align-items:flex-start;flex-direction:column;gap:var(--sp-1)}
  .home-recent-copy small{white-space:normal}
}

/* ── 站內閱讀器 ── */
.rd-shell{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;background:var(--surface)}
.rd-head{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-3) var(--sp-8);
  border-bottom:1px solid var(--border);background:var(--paper)}
.rd-byline{flex:1;min-width:20ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);
  font-family:var(--serif);font-size:var(--fs-sm)}
body[data-view=reader] #mtitle{font-size:var(--fs-xl);font-weight:600;white-space:nowrap;text-overflow:ellipsis}
.rd-pager{display:flex;align-items:center;gap:var(--sp-2)}
.rd-page{color:var(--muted);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;white-space:nowrap}
.rd-jump{display:flex;align-items:center;gap:var(--sp-1);color:var(--muted);font-size:var(--fs-xs)}
.rd-jump input{width:7ch;padding:var(--sp-1) var(--sp-2);border:1px solid var(--border);
  border-radius:var(--r-sm);background:var(--surface);color:var(--text);font:inherit;font-size:var(--fs-md)}
.rd-head > .chip-btn{display:inline-flex;align-items:center;text-decoration:none;white-space:nowrap}
/* 三欄(v4.5):左右留白變工作區,紙張維持 68ch 不被拉寬 */
.rd-body{flex:1;min-height:0;display:grid;grid-template-columns:220px minmax(0,1fr) 300px;overflow:hidden}
.rd-side{overflow-y:auto;padding:var(--sp-4);background:var(--paper);font-size:var(--fs-xs)}
.rd-side-l{border-right:1px solid var(--border)}
.rd-side-r{border-left:1px solid var(--border)}
.rd-side-h{margin:0 0 var(--sp-2);font-family:var(--serif);font-size:var(--fs-sm);font-weight:600;color:var(--accent)}
.rd-paras button{display:block;width:100%;padding:var(--sp-1) var(--sp-2);border:0;border-radius:var(--r-sm);
  background:none;color:var(--text);font:inherit;font-size:var(--fs-2xs);text-align:left;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;position:relative}
@media (hover:none){.rd-paras button::before{content:"";position:absolute;inset:-12px -4px}}
.rd-paras button:hover{background:var(--hover);color:var(--accent)}
.rd-note{margin-bottom:var(--sp-3);padding:var(--sp-3);border:1px solid var(--border-soft);
  border-radius:var(--r-sm);background:var(--surface)}
.rd-note-src{margin:0 0 var(--sp-2);padding-left:var(--sp-2);border-left:2px solid var(--gold);
  color:var(--muted);font-size:var(--fs-2xs);line-height:1.5}
.rd-note-body{margin:0 0 var(--sp-2);font-size:var(--fs-xs);line-height:1.6}
.rd-hl{background:color-mix(in srgb, var(--gold) 35%, transparent);border-radius:var(--r-sm);padding:0 1px}
/* 視窗變窄時先收左欄、再收右欄 —— 正文寬度優先,不能為了塞側欄把行寬擠掉(v4.5 §3) */
@media(max-width:1200px){.rd-body{grid-template-columns:minmax(0,1fr) 300px}.rd-side-l{display:none}}
@media(max-width:1000px){.rd-body{grid-template-columns:minmax(0,1fr)}.rd-side-r{display:none}}
.rd-toc{flex:0 0 240px;overflow-y:auto;padding:var(--sp-4);border-right:1px solid var(--border);
  background:var(--surface)}
.rd-toc::before{content:attr(aria-label);display:block;margin-bottom:var(--sp-2);font-family:var(--serif);
  font-size:var(--fs-lg)}
.rd-toc button{display:block;width:100%;padding:var(--sp-2);border:0;border-radius:var(--r-sm);
  background:none;color:var(--text);font:inherit;font-size:var(--fs-sm);line-height:1.4;text-align:left}
.rd-toc button:hover,.rd-toc button.on{background:var(--hover);color:var(--accent)}
.rd-prose{flex:1;min-width:0;overflow-y:auto;padding:var(--sp-6) var(--sp-4);background:var(--paper-2);
  font-family:var(--serif);font-size:calc((var(--fs-md) + var(--fs-lg))/2)}
/* 每一頁一張白紙:內容寬 68ch,紙緣留白 sp-12,陰影浮在紙台上(v3.89 §3) */
.rd-sheet{box-sizing:content-box;max-width:68ch;min-height:60vh;margin:0 auto var(--sp-6);padding:var(--sp-12) var(--sp-12);
  background:var(--surface);border:1px solid var(--border-soft);box-shadow:var(--shadow-2);line-height:1.85}
.rd-page-title{font-family:var(--display);font-size:var(--fs-2xl);font-weight:600;line-height:1.35;color:var(--accent);
  margin-top:0;margin-bottom:var(--sp-6);text-wrap:balance}
.rd-prose p{margin-top:0;margin-bottom:var(--sp-4);text-indent:0;text-wrap:pretty}
.rd-loading,.rd-scan{color:var(--muted)}
.rd-selbar{position:fixed;z-index:60;left:50%;bottom:calc(var(--sp-6) + env(safe-area-inset-bottom));
  transform:translateX(-50%);display:flex;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--line-on-ink-2);
  border-radius:var(--r-full);background:var(--ink-deep);color:var(--on-ink);box-shadow:var(--shadow-2)}
.rd-selbar .no{border-color:var(--line-on-ink-2);color:var(--on-ink)}
.rd-selbar button{min-height:44px}
@media(max-width:768px){
  .rd-head{padding:var(--sp-2) var(--sp-3)}
  .rd-byline{order:-1;flex-basis:calc(100% - 12ch)}
  .rd-body{display:flex;flex-direction:column}
  .rd-side{display:none}          /* 手機維持單欄,不動既有閱讀體驗 */
  .rd-toc{display:flex;flex:0 0 auto;gap:var(--sp-1);overflow-x:auto;overflow-y:hidden;
    padding:var(--sp-2);border-right:0;border-bottom:1px solid var(--border);white-space:nowrap}
  .rd-toc::before{display:none}
  .rd-toc button{width:auto;flex:0 0 auto}
  .rd-prose{padding:var(--sp-3) var(--sp-3) calc(var(--sp-12) * 2)}
  .rd-sheet{padding:var(--sp-6) var(--sp-4);margin-bottom:var(--sp-3);min-height:0}
  .rd-pager{position:absolute;z-index:30;left:0;right:0;bottom:0;padding:var(--sp-2) var(--sp-4) calc(var(--sp-2) + env(safe-area-inset-bottom));
    border-top:1px solid var(--border);background:var(--surface)}
  .rd-pager .rd-page{display:none}
  .rd-pager > button{flex:1}
}
@media(hover:none){
  .rd-head button,.rd-head a,.rd-jump input,.rd-toc button,.rd-selbar button{min-height:44px}
}

/* ── 寫作專區 ── */
.wr-shell{flex:1;min-height:0;width:100%;max-width:1400px;margin:0 auto;display:grid;
  grid-template-columns:230px minmax(0,1fr) 270px;background:var(--surface);border-inline:1px solid var(--border)}
.wr-side{min-height:0;overflow-y:auto;padding:var(--sp-3);border-right:1px solid var(--border);
  background:var(--sidebar)}
#wrList{display:flex;flex-direction:column;gap:var(--sp-1);margin-top:var(--sp-3)}
.wr-row{display:flex;align-items:center;gap:var(--sp-1);border-radius:var(--r-sm)}
.wr-item{flex:1;min-width:0;border:0;background:none;color:var(--text);padding:8px;text-align:left;
  border-radius:var(--r-sm);font:inherit;cursor:pointer}
.wr-item:hover,.wr-item.on{background:var(--hover)}
.wr-item strong,.wr-item small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wr-item strong{font-family:var(--serif);font-size:var(--fs-sm);font-weight:600}
.wr-item small{color:var(--muted);font-size:var(--fs-2xs);margin-top:var(--sp-1)}
.wr-editor{min-width:0;min-height:0;display:flex;flex-direction:column;padding:var(--sp-6)}
.wr-ai-bar{display:flex;gap:var(--sp-2);flex-wrap:wrap;padding-bottom:var(--sp-2)}
.wr-ai-out{flex:0 1 auto;min-height:0;margin-bottom:var(--sp-3);padding:var(--sp-3);
  border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg)}
.wr-ai-head{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2)}
.wr-ai-head strong{flex:1;font-family:var(--serif);font-size:var(--fs-sm)}
.wr-ai-body{max-height:240px;overflow-y:auto;color:var(--text)}
.wr-ai-body blockquote{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);
  border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--muted)}
.wr-ai-refs .refs,.wr-ai-refs .citations{max-width:none;padding-inline:0}
.wr-ai-foot{display:flex;justify-content:flex-end;margin-top:var(--sp-2)}
.wr-bar{display:flex;align-items:center;gap:var(--sp-2);padding-bottom:var(--sp-3);
  border-bottom:1px solid var(--border)}
#wrTitle{flex:1;min-width:0;border:0;background:none;color:var(--text);font-family:var(--serif);
  font-size:var(--fs-xl);padding:6px 2px;outline:none}
#wrTitle:focus{outline:2px solid var(--accent);outline-offset:2px}
#wrStatus{color:var(--muted);font-size:var(--fs-2xs);white-space:nowrap}
#wrBody{flex:1;min-height:0;width:100%;resize:none;border:0;background:var(--surface);color:var(--text);
  padding:var(--sp-6) max(var(--sp-3),calc((100% - 72ch)/2));font-family:var(--serif);
  font-size:var(--fs-md);line-height:1.8;outline:none}
#wrBody:focus{outline:2px solid var(--accent);outline-offset:-2px}
.wr-body{background:var(--paper-2);padding-inline:max(var(--sp-4),calc((100% - 68ch)/2));font-family:var(--serif);line-height:1.85}
.wr-preview{flex:1;min-height:0;width:100%;max-width:none}
.wr-cite-panel{min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:var(--sp-3);
  padding:var(--sp-3);border-left:1px solid var(--border);background:var(--sidebar)}
.wr-cite-head{align-items:center;margin-top:0}
.wr-cite-head h2{flex:1;margin:0;font-family:var(--serif);font-size:var(--fs-lg)}
.wr-cite-results{flex:1;min-height:0;overflow-y:auto}
.wr-cite-results .pick-it{flex-wrap:wrap;padding:var(--sp-3) 0;border-bottom:1px solid var(--border-soft);border-radius:0;font-size:var(--fs-sm)}
.wr-cite-results .pick-it > .nm{flex:1 1 100%;font-family:var(--serif)}
.wr-cite-results .pick-it > .chip-btn{margin-left:auto}
.wr-cite-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap;border-top:1px solid var(--border);
  padding-top:var(--sp-3)}
@media(max-width:900px){
  .wr-shell{grid-template-columns:210px minmax(0,1fr);grid-template-rows:minmax(0,1fr) minmax(170px,28dvh)}
  .wr-cite-panel{grid-column:1/-1;border-left:0;border-top:1px solid var(--border)}
}
@media(max-width:700px){
  .wr-shell{grid-template-columns:1fr;grid-template-rows:minmax(120px,20dvh) minmax(0,1fr) minmax(170px,28dvh);border-inline:0}
  .wr-side{border-right:0;border-bottom:1px solid var(--border)}
  .wr-editor{padding:var(--sp-3)}
  .wr-ai-body{max-height:180px}
  .wr-bar{flex-wrap:wrap}
  #wrTitle{flex-basis:100%}
  .wr-cite-panel{grid-column:1}
}

/* chip 家族(v3.58) */
.tag,.bd-tag,.src-chip,.zchip,.read-badge,.ref-chip,.school-chip,.warn-chip{
  font-size:var(--fs-xs);padding:2px 8px;border-radius:var(--r-sm)}

/* ── 布告欄 ── */
.bd-shell{display:flex;flex-direction:column;gap:var(--sp-4)}
.bd-head{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;border-bottom:1px solid var(--border);padding-bottom:12px}
.bd-head h2{font-family:var(--serif);font-size:var(--fs-xl);margin:0;flex:1;min-width:180px;text-wrap:balance}
.bd-intro{color:var(--muted);font-size:var(--fs-sm);line-height:1.65;max-width:68ch;margin:0}
.bd-tags{display:inline-flex;gap:var(--sp-1);flex-wrap:wrap}
.bd-tag{border:1px solid var(--border);color:var(--muted);background:var(--chip)}
.bd-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--border)}
.bd-crumb{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;font-size:var(--fs-xs);color:var(--muted);
  margin-bottom:4px}
.bd-crumb-link{position:relative;border:0;background:none;padding:0;font:inherit;color:var(--muted);cursor:pointer;
  border-bottom:1px solid transparent}
.bd-crumb-link::before{content:"";position:absolute;inset:-8px -4px}
/* 觸控裝置要 44px:視覺盒只有 15px,-8px 只撐到 31px,靠 ::before 再撐開,不動版面 */
@media (hover:none){.bd-crumb-link::before{inset:-15px -8px}}
.bd-crumb-link:hover{color:var(--text);border-bottom-color:var(--muted)}
.bd-crumb-link:focus-visible{color:var(--text);outline:2px solid var(--accent);outline-offset:2px;
  border-radius:var(--r-xs)}
.bd-crumb-sep{color:var(--muted);user-select:none}
.bd-crumb-cur{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:34ch}
/* 名字縮寫印章沿用顧問卡片的視覺語言,不另立一套 */
.bd-seal{flex:0 0 28px;width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;
  justify-content:center;font-family:var(--serif);font-size:var(--fs-xs);letter-spacing:.02em;
  color:var(--accent);border:1px solid var(--accent);background:transparent}
.bd-item{width:100%;display:flex;align-items:flex-start;gap:var(--sp-3);text-align:left;padding:16px 4px;border:0;
  border-bottom:1px solid var(--border);background:none;color:var(--text);cursor:pointer;
  transition:background .16s var(--ease)}
.bd-item:hover{background:var(--hover)}
.bd-item:focus-visible{background:var(--hover);outline:2px solid var(--accent);outline-offset:-2px}
.bd-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--sp-1)}
.bd-line{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;min-width:0}
.bd-line b{font-family:var(--serif);font-size:var(--fs-md);line-height:1.3;overflow-wrap:anywhere}
.bd-sub{color:var(--muted);font-size:var(--fs-sm);line-height:1.5;overflow-wrap:anywhere;max-width:68ch}
.bd-meta{display:flex;flex-direction:column;align-items:flex-end;gap:var(--sp-1);text-align:right;flex-shrink:0}
.bd-count{font-size:var(--fs-xs);color:var(--text);white-space:nowrap;font-variant-numeric:tabular-nums}
.bd-last{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap}
.bd-item:hover .bd-last,.bd-item:focus-visible .bd-last{color:var(--text)}
.bd-form{display:flex;gap:var(--sp-2);align-items:flex-start;flex-wrap:wrap;padding:12px;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--r-md)}
.bd-form input[type=text],.bd-form textarea{flex:1;min-width:180px;min-height:44px;padding:11px 12px;
  border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg);color:var(--text);font:inherit;
  font-size:var(--fs-md)}
.bd-form > .fld{flex:1;min-width:180px}
.bd-form > .fld:has(textarea){flex-basis:100%}
.bd-form input:disabled,.bd-form textarea:disabled{background:var(--surface);color:var(--muted);cursor:not-allowed}
.bd-form textarea{flex-basis:100%;resize:vertical;line-height:1.6;max-width:68ch}
.bd-check{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--muted);padding:8px 4px}
.bd-tools{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center}
.bd-status{padding:8px 12px;border:1px solid var(--alert);border-radius:var(--r-sm);color:var(--alert);
  background:var(--surface);font-size:var(--fs-sm)}
.bd-thread-meta{flex-basis:100%;display:flex;align-items:center;gap:var(--sp-2);color:var(--muted);
  font-size:var(--fs-sm);flex-wrap:wrap}
/* 首篇是主題本體,用左緣把它跟回覆分開。兩者左內距相加相等(16 = 14+2),文字仍對齊,
   不用負 margin —— 負 margin 在手機上會把邊框推出內容溝槽外 */
.bd-post{padding:16px 2px 16px 16px;border-bottom:1px solid var(--border-soft)}
.bd-post.op{border-left:2px solid var(--accent);padding-left:14px}
.bd-post-head{display:flex;gap:var(--sp-2);align-items:center;color:var(--muted);font-size:var(--fs-xs);flex-wrap:wrap}
.bd-author{color:var(--text);font-family:var(--serif);font-size:var(--fs-sm);letter-spacing:.05em}
.bd-post-side{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2)}
.bd-post-time{font-variant-numeric:tabular-nums;white-space:nowrap}
.bd-post-act{margin-left:auto;display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-1);
  flex:0 0 96px;opacity:0;pointer-events:none;transition:opacity .16s var(--ease)}
.bd-post:hover .bd-post-act,.bd-post:focus-within .bd-post-act{opacity:1;pointer-events:auto}
.bd-post-act .bd-mute{min-width:44px;min-height:44px}
.bd-mute,.arch .act button{font-size:var(--fs-xs);padding:2px var(--sp-3);border:1px solid var(--border);
  border-radius:var(--r-full);background:none;color:var(--text);cursor:pointer}
.arch .act button{min-height:calc(var(--sp-8) + var(--sp-1));white-space:nowrap}
.bd-mute:hover,.arch .act button:hover{color:var(--accent);border-color:var(--accent)}
.icon-btn.bd-danger,.icon-btn.bd-danger:hover{color:var(--alert);border-color:var(--alert)}
.bd-post-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.75;font-size:var(--fs-base);margin-top:8px;
  max-width:68ch;padding-left:36px}
.bd-tomb{margin:8px 0 0 36px;max-width:68ch;padding:10px;border:1px dashed var(--border);
  border-radius:var(--r-sm);color:var(--muted);font-family:var(--serif);font-style:italic;font-size:var(--fs-base)}
.bd-post.just-posted{animation:bd-posted 1.2s ease-out}
@keyframes bd-posted{from{background:var(--hover)}to{background:var(--bg)}}
.bd-members{border-top:1px solid var(--border);padding-top:12px;font-size:var(--fs-xs);color:var(--muted)}
.bd-member{display:inline-flex;align-items:center;gap:var(--sp-1);margin:4px 4px 0 0}
.bd-member button{min-height:44px;min-width:44px;padding:4px;font-size:var(--fs-xs)}
@media (hover:none){.bd-post-act{opacity:1;pointer-events:auto}}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important}
  .hall-card{transition:none}
  .hall-card:hover{transform:none}
}

/* ── 對話 ── */
#msgscroll{flex:1;overflow-y:auto;min-height:0}
#msgs{max-width:780px;margin:0 auto;padding:26px 20px 10px;display:flex;flex-direction:column;gap:var(--sp-4)}
.welcome{text-align:center;margin:9vh auto 0;max-width:520px}
.welcome p.hero-t{font-family:var(--serif);font-size:var(--fs-2xl);letter-spacing:.04em;margin:0 0 10px;color:var(--text)}
.welcome p{color:var(--muted);font-size:var(--fs-base);line-height:1.7;margin:0 0 26px}
.sug{display:flex;flex-direction:column;gap:var(--sp-2)}
.sug button{padding:12px 16px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);
  color:var(--text);font-size:var(--fs-sm);text-align:left;box-shadow:var(--shadow-1);
  transition:background .15s var(--ease)}
.sug button:hover{background:var(--hover)}
.msg{display:flex;flex-direction:column;gap:var(--sp-1)}
.msg.user{align-items:flex-end}
.bub{max-width:86%;padding:11px 15px;border-radius:var(--r-lg);font-size:var(--fs-base);line-height:1.7;
  white-space:normal;overflow-wrap:anywhere}
.msg.user .bub{background:var(--user-bub);color:var(--user-ink);border-bottom-right-radius:var(--r-xs)}
.msg.user .bub{white-space:pre-wrap}
.msg.ai .bub{background:var(--surface);border:1px solid var(--border);border-bottom-left-radius:var(--r-xs);
  box-shadow:var(--shadow-1);max-width:96%}
.who{font-size:var(--fs-2xs);color:var(--muted);padding:0 4px;font-family:var(--serif);letter-spacing:.05em;
  display:flex;align-items:center;gap:var(--sp-1)}
.refs{display:flex;flex-wrap:wrap;gap:var(--sp-1);padding:2px 4px}
.ref-chip,.school-chip,.warn-chip{background:var(--chip);color:var(--muted);border:1px solid var(--border)}
.ref-chip{color:var(--text);font-family:inherit}
button.ref-chip{cursor:pointer}
.ref-chip[aria-expanded]::after{content:"⌄";margin-left:var(--sp-1);color:var(--muted)}
.ref-chip[aria-expanded=true]::after{content:"⌃";color:var(--accent)}
.ref-chip[aria-expanded=true]{color:var(--accent);border-color:var(--accent)}
.school-chip{color:var(--accent);border-color:var(--accent);background:transparent}
[data-theme=dark] .school-chip{color:var(--accent)}
.warn-chip{color:var(--alert);border-color:var(--alert);background:transparent}
.strict-chip{font-weight:600}
.citations{max-width:96%;display:flex;flex-direction:column;gap:var(--sp-2);padding:0 4px}
.citation-set{display:flex;flex-direction:column;gap:var(--sp-2)}
.citation{margin:0;padding:var(--sp-2) var(--sp-3);border-left:2px solid var(--accent);
  background:var(--surface);box-shadow:var(--shadow-1);font-size:var(--fs-xs);line-height:1.65}
.citation-head{margin-bottom:var(--sp-1);color:var(--muted);font-family:var(--serif);font-size:var(--fs-2xs);
  letter-spacing:.04em}
.citation-head-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-2);
  flex-wrap:wrap;margin-bottom:var(--sp-1)}
.citation-head-row .citation-head{margin-bottom:0}
.citation-open{position:relative;color:var(--accent);font-size:var(--fs-2xs);letter-spacing:.04em;
  text-decoration:none;white-space:nowrap}
.citation-open::before{content:"";position:absolute;inset:-8px -4px}
@media (hover:none){.citation-open::before{inset:-15px -8px}}
.citation-open:hover,.citation-open:focus-visible{text-decoration:underline}
.citation-open:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.citation p{margin:0;color:var(--text)}
.cursor{display:inline-block;width:8px;height:15px;background:var(--alert);vertical-align:-2px;
  animation:bk .8s steps(1) infinite}
@keyframes bk{50%{opacity:0}}
/* 圓桌 */
.rt-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:var(--sp-3);max-width:96%}
.rt-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:11px 13px;
  box-shadow:var(--shadow-1)}
.rt-card h3{margin:0 0 2px;font-family:var(--serif);font-size:var(--fs-base)}
.rt-card .rt-a{font-size:var(--fs-sm);line-height:1.65;white-space:normal;overflow-wrap:anywhere;
  max-height:300px;overflow-y:auto;margin-top:7px}
.rt-syn{background:var(--surface);border:1px solid var(--accent);border-radius:var(--r-md);padding:12px 15px;
  max-width:96%;box-shadow:var(--shadow-1)}
.rt-syn .who2{font-family:var(--serif);font-size:var(--fs-xs);color:var(--accent);letter-spacing:.08em;margin-bottom:6px}
.rt-syn .rt-a{font-size:var(--fs-base);line-height:1.7;white-space:normal;overflow-wrap:anywhere}

.md-table-wrap{max-width:100%;overflow-x:auto;margin:0 0 var(--sp-3)}
.md-table-wrap table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
.md-table-wrap th,.md-table-wrap td{padding:var(--sp-2);border:1px solid var(--border);text-align:left;vertical-align:top}
.md-table-wrap th{background:var(--chip);color:var(--text);font-weight:600}

:is(.bub,.rt-a,#noteBody,.wr-ai-body) .md-h{font-family:var(--serif);font-size:var(--fs-md);letter-spacing:.03em;
  color:var(--accent);margin:var(--sp-4) 0 var(--sp-2);padding-bottom:var(--sp-1);border-bottom:1px solid var(--border)}
:is(.bub,.rt-a,#noteBody,.wr-ai-body) .md-sub{font-size:var(--fs-base);border-bottom:0;padding-bottom:0}
:is(.bub,.rt-a,#noteBody,.wr-ai-body) p{font-size:var(--fs-base);line-height:1.75;margin:0 0 var(--sp-3)}
:is(.bub,.rt-a,#noteBody,.wr-ai-body) ul,:is(.bub,.rt-a,#noteBody,.wr-ai-body) ol{margin:0 0 var(--sp-3);padding-left:var(--sp-4)}
:is(.bub,.rt-a,#noteBody,.wr-ai-body) li{font-size:var(--fs-base);line-height:1.75;margin-bottom:var(--sp-1)}
:is(.bub,.rt-a,#noteBody) blockquote{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);
  border-left:3px solid var(--border);border-radius:0 var(--r-sm) var(--r-sm) 0;background:var(--bg);color:var(--muted)}
:is(.bub,.rt-a,#noteBody,.wr-ai-body) code{font-family:ui-monospace,Menlo,monospace;font-size:var(--fs-xs);
  background:var(--chip);padding:1px 5px;border-radius:var(--r-xs)}
:is(.bub,.rt-a,#noteBody,.wr-ai-body) hr{border:0;border-top:1px solid var(--border-soft);margin:var(--sp-4) 0}
.bub > :first-child,.rt-a > :first-child,#noteBody > :first-child,.wr-ai-body > :first-child{margin-top:0}
.bub > :last-child,.rt-a > :last-child,#noteBody > :last-child,.wr-ai-body > :last-child{margin-bottom:0}

/* ── 輸入區 ── */
#composer{max-width:780px;width:100%;margin:0 auto;padding:8px 20px calc(14px + env(safe-area-inset-bottom))}
.c-box{display:flex;align-items:flex-end;gap:var(--sp-2);background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-lg);padding:10px 10px 10px 16px;box-shadow:var(--shadow-1)}
.c-box:focus-within{border-color:var(--accent)}
#q{flex:1;border:none;background:none;resize:none;font-family:inherit;font-size:var(--fs-md);line-height:1.55;
  color:var(--text);max-height:180px;outline:none}
#send{width:34px;height:34px;flex:0 0 34px;border:none;border-radius:var(--r-md);background:var(--accent);
  color:var(--accent-ink);font-size:var(--fs-md)}
#send.stop{width:auto;flex-basis:auto;padding-inline:var(--sp-3);font-size:var(--fs-xs);white-space:nowrap}
#send:disabled{opacity:.4;cursor:default}
.c-tools{display:flex;gap:var(--sp-2);margin-top:8px;flex-wrap:wrap;align-items:center}
.c-tools select{font-family:inherit;font-size:var(--fs-md);color:var(--text);background:var(--chip);
  border:1px solid var(--border);border-radius:var(--r-sm);padding:2px 8px;max-width:46%}
.chip-btn{font-size:var(--fs-xs);color:var(--text);background:var(--chip);border:1px solid var(--border);
  border-radius:var(--r-sm);padding:4px 10px}
.chip-btn.on,.chip-btn:hover{color:var(--accent);border-color:var(--accent)}
#advBtn{display:inline-flex;align-items:center;gap:var(--sp-1);min-width:0;max-width:100%;flex:1 1 220px}
#advBtnText{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#advBtn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round;flex:0 0 14px}
#advPanel,#scopePanel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:12px 14px;
  margin-bottom:8px;box-shadow:var(--shadow-1)}
#advPanel .pick-row,#scopePanel .pick-row{margin-bottom:var(--sp-2)}
#advPickList{max-height:280px}
#advPickList .nm{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}
.pick-check{margin-left:auto;color:var(--accent);font-weight:700}
#rtList{display:flex;flex-direction:column;gap:var(--sp-1);max-height:200px;overflow-y:auto}
.rt-sch{font-size:var(--fs-2xs);color:var(--muted);letter-spacing:.1em;margin:7px 0 2px}
.rt-p{display:flex;gap:var(--sp-2);align-items:center;font-size:var(--fs-sm);padding:4px 2px;cursor:pointer}
.scope-mode{display:flex;align-items:center;gap:var(--sp-2);color:var(--text);font-size:var(--fs-sm);cursor:pointer}
.scope-mode input{accent-color:var(--accent)}
.scope-head{display:flex;justify-content:space-between;gap:var(--sp-3);margin:var(--sp-2) 0;
  color:var(--muted);font-size:var(--fs-2xs)}
.scope-head span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}
#scopePickList{max-height:240px}
.rt-cost{font-size:var(--fs-2xs);color:var(--muted)}
.btn-pri{display:inline-flex;min-height:44px;align-items:center;justify-content:center;background:var(--accent);color:var(--accent-ink);
  border:1px solid var(--accent);border-radius:var(--r-full);padding:var(--sp-2) var(--sp-4);font-size:var(--fs-sm);font-weight:600}

/* ── 審核台 ── */
.card{background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-md);padding:14px 16px;margin-bottom:12px;box-shadow:var(--shadow-1)}
.pk-head,.pk-tools{display:flex;align-items:center;gap:var(--sp-2)}
.pk-head .t{flex:1}
.pk-box{accent-color:var(--accent)}
.pk-tools{flex-wrap:wrap;padding:var(--sp-2);margin-bottom:var(--sp-3);border-bottom:1px solid var(--border)}
.pk-tools .ok{margin-left:auto}
.card .t{margin:0;font-family:var(--serif);font-size:var(--fs-base);font-weight:700;overflow-wrap:anywhere;line-height:1.45}
.bib-authors{color:var(--muted);font-size:var(--fs-sm);margin-top:var(--sp-1)}
.bib-source{display:block;color:var(--text);font-size:var(--fs-sm);font-style:italic;margin:var(--sp-1) 0}
.card > a.ref-chip{display:inline-block;margin:var(--sp-1) 0}
.bib-rel{color:var(--muted);font-size:var(--fs-xs);margin:var(--sp-2) 0}
.card .m{font-size:var(--fs-2xs);color:var(--muted);margin:4px 0}
.card .warn{color:var(--alert)}
.card .s{background:var(--bg);border:1px solid var(--border-soft);border-radius:var(--r-sm);
  padding:10px 12px;font-size:var(--fs-base);white-space:pre-wrap;line-height:1.65;margin:8px 0}
.tags{display:flex;flex-wrap:wrap;gap:var(--sp-1)}
.tag{background:var(--chip);color:var(--muted)}
.row{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-top:10px;align-items:center}
.row select,.row input[type=text]{padding:5px 9px;border:1px solid var(--border);border-radius:var(--r-sm);
  font-size:var(--fs-md);background:var(--surface);color:var(--text);font-family:inherit}
.ok{background:transparent;color:var(--alert);border:1px solid var(--alert);border-radius:var(--r-sm);
  padding:7px 14px;font-family:var(--serif);font-weight:700;font-size:var(--fs-sm)}
.ok:not(:disabled):hover{background:var(--alert);color:var(--alert-ink)}
/* 核准是主要動作:.ok 的透明底/紅框不得蓋掉 .btn-pri 的墨藍實心(v3.96 順手修:白字壓透明底看起來像空框)*/
.ok.btn-pri{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.ok.btn-pri:not(:disabled):hover{background:var(--text);border-color:var(--text);color:var(--surface)}
.no{background:none;border:1px solid var(--border);color:var(--text);border-radius:var(--r-full);padding:var(--sp-2) var(--sp-4);font-size:var(--fs-sm)}
.rv-meta{font-weight:600}
.rv-edit{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;margin-top:8px}
.rv-edit select,.rv-pick{padding:5px 9px;border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--surface);color:var(--text);font:inherit;font-size:var(--fs-md)}
.rv-pick{min-width:min(280px,100%)}
.rv-edit select:focus-visible,.rv-pick:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.empty{border:1px dashed var(--border-soft);border-radius:var(--r-md);padding:var(--sp-8);text-align:center}
.empty-ic{display:inline-flex;color:var(--accent);margin-bottom:var(--sp-2)}
.empty-ic svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.empty-t{margin:0;color:var(--text);font-family:var(--serif);font-size:var(--fs-base)}
.empty-d{margin:var(--sp-1) auto 0;max-width:52ch;color:var(--muted);font-size:var(--fs-sm);line-height:1.6}

/* ── 上傳 ── */
.up-tabs,#adminTabs{margin-bottom:var(--sp-4)}
.rv-upload{margin:0 0 12px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r-md);
  background:var(--surface)}
.rv-upload legend{padding:0 5px;font-size:var(--fs-xs);color:var(--muted)}
.rv-choices{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap}
.rv-choices label{display:flex;gap:var(--sp-1);align-items:center;font-size:var(--fs-sm);cursor:pointer}
.rv-choices input{accent-color:var(--accent)}
.rv-upload > .rv-pick{display:block;margin-top:10px;width:min(420px,100%)}
.drop{border:2px dashed var(--border);border-radius:var(--r-lg);padding:52px 20px;text-align:center;
  color:var(--text);font-size:var(--fs-base);cursor:pointer;background:var(--surface)}
.drop.over{border-color:var(--accent);color:var(--accent)}
.drop.is-busy{color:var(--muted);cursor:wait}
.drop-ic{font-size:var(--fs-3xl);margin-bottom:8px}
.hint{font-size:var(--fs-base);color:var(--muted);margin-top:12px;text-align:center}
.zt-panel{display:flex;flex-direction:column;gap:var(--sp-3)}
.zt-panel h2{margin:0;font-family:var(--serif);font-size:var(--fs-lg);font-weight:400}
.zt-copy{margin:0;color:var(--muted);font-size:var(--fs-sm);line-height:1.6;overflow-wrap:anywhere}
.zt-setup{display:flex;align-items:flex-end;gap:var(--sp-3);flex-wrap:wrap;margin-top:var(--sp-3)}
.zt-setup .fld{flex:1 1 220px}
.zt-browser{display:grid;grid-template-columns:minmax(180px,1fr) minmax(0,2fr);
  gap:var(--sp-3);margin:var(--sp-3) 0}
#ztCollections .zt-branch{display:flex;flex-direction:column;gap:var(--sp-1)}
#ztCollections .zt-branch .zt-branch{padding-inline-start:var(--sp-4)}
.zt-items{display:flex;flex-direction:column;border-top:1px solid var(--border);min-width:0}
.zt-item{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-2);
  border-bottom:1px solid var(--border-soft);cursor:pointer;min-width:0}
.zt-item:hover{background:var(--hover)}
.zt-item input{accent-color:var(--accent);flex:0 0 auto}
.zt-item-body{display:flex;flex-direction:column;align-items:flex-start;min-width:0;overflow-wrap:anywhere}
.zt-item-body strong{font-family:var(--serif);font-size:var(--fs-base);line-height:1.45}
.zt-item-body .bib-authors,.zt-item-body .bib-source,.zt-item-body .bib-rel{display:block}
.radar-panel{max-width:820px}
.radar-form{display:flex;flex-direction:column;gap:var(--sp-4)}
.radar-form h2{margin:0;font-family:var(--serif);font-size:var(--fs-lg);font-weight:400;color:var(--accent)}
.radar-form textarea{min-height:calc(var(--sp-12) * 3);padding:var(--sp-3);border:1px solid var(--border);
  border-radius:var(--r-sm);background:var(--surface);color:var(--text);font:inherit;font-size:var(--fs-md);
  line-height:1.8;resize:vertical}
.radar-form .src-editor{padding:var(--sp-2);background:var(--surface)}
.radar-form .src-editor input{flex:1 1 180px;min-width:180px;margin:0;padding:var(--sp-2);
  border:0;background:transparent;color:var(--text);font:inherit;font-size:var(--fs-md)}
.radar-form .scope-mode{min-height:44px;padding:var(--sp-3) var(--sp-4);border:1px solid var(--border-soft);
  border-radius:var(--r-sm);background:var(--paper-2)}
.radar-form .d-note{max-width:68ch;line-height:1.7}
.radar-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2);padding-top:var(--sp-2)}
@media(max-width:700px){.zt-browser{grid-template-columns:1fr}}

/* ── 紀錄 ── */
.chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:16px}
.ct-chip-count{font-size:var(--fs-2xs);margin-left:var(--sp-1)}
/* 觸控:chip 只有 23px 高,::before 每側只能撐到「間距的一半」,否則吃掉鄰居的命中區。
   6px 間距只給得起 3px,量到的專屬命中區因此只有 28px。拉開間距才撐得出 44px。
   這條**必須放在 .chips 基底之後** —— 同特異度比先後,寫在前面的 @media 會被基底蓋掉(實測踩過)。*/
@media (hover:none){.chips{row-gap:24px;column-gap:10px}}
.zchip{padding:var(--sp-1) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-full);
  background:var(--paper-2);color:var(--text);cursor:pointer;white-space:nowrap}   /* 數字再大也不在膠囊內折行(v3.98) */
.ct-chip-count{font-variant-numeric:tabular-nums}
.zchip.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}
.arch{display:flex;gap:var(--sp-3);font-size:var(--fs-sm);padding:8px 4px;border-bottom:1px dotted var(--border);
  align-items:baseline}
/* 索書號印章:LCC 後裝的是「JZ-07.04 · Farrell 2019」而不是兩個字元 —— 不得斷行 */
.stamp{font-family:var(--display);font-size:var(--fs-base);color:var(--stamp);font-weight:600;
  flex:0 0 auto;white-space:nowrap;font-variant-numeric:tabular-nums}
.arch .f{flex:1;overflow-wrap:anywhere;font-family:var(--display);font-size:var(--fs-base);font-weight:600;line-height:1.3}
.arch .d{color:var(--muted);font-size:var(--fs-2xs);flex:0 0 auto}
.ct-entry{flex:1;min-width:0;display:flex;flex-direction:column}
.ct-entry .bib-authors{margin-top:var(--sp-1);overflow-wrap:anywhere}

/* ── 蒸餾 modal ── */
.modal{position:fixed;inset:0;background:var(--scrim);z-index:70;display:flex;backdrop-filter:blur(2px);
  align-items:center;justify-content:center;padding:20px}
.modal-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:20px 22px;width:100%;max-width:420px;display:flex;flex-direction:column;gap:var(--sp-3);
  box-shadow:var(--shadow-3)}
.modal-card h3{margin:0 0 var(--sp-1);font-family:var(--display);font-size:var(--fs-2xl);font-weight:600;letter-spacing:0;color:var(--accent)}
.modal-card input[type=text],.modal-card input[type=password],.modal-card select{padding:7px 11px;border:1px solid var(--border);
  border-radius:var(--r-sm);background:var(--bg);color:var(--text);font-size:var(--fs-md);font-family:inherit}
.d-cost{font-size:var(--fs-2xs);color:var(--muted)}
.d-note{font-size:var(--fs-2xs);color:var(--muted)}
.modal-card input[type=file]{font-size:var(--fs-md);color:var(--text)}
.modal-actions{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:4px}
#noteTools{margin-right:auto;display:flex;gap:var(--sp-2)}
.modal-card textarea{padding:7px 11px;border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--bg);color:var(--text);font-size:var(--fs-md);font-family:inherit;resize:vertical}
.src-editor{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1);padding:var(--sp-1);
  border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg)}
.src-editor:focus-within{border-color:var(--accent)}
.src-chips{display:contents}
.src-chip{display:inline-flex;align-items:center;gap:var(--sp-1);max-width:100%;
  border:1px solid var(--border);background:var(--chip);color:var(--text)}
.src-chip > span{overflow-wrap:anywhere}
.src-chip button{border:0;border-radius:var(--r-sm);padding:0 var(--sp-1);background:transparent;color:var(--text);
  font-size:var(--fs-base);line-height:1}
.src-chip button:hover{background:var(--hover)}
.modal-card .src-editor input[type=text]{flex:1 1 160px;min-width:160px;margin:0;padding:var(--sp-1);
  border:0;background:transparent}
.mg-sec{display:flex;flex-direction:column;gap:var(--sp-2);border-top:1px solid var(--border-soft);padding-top:var(--sp-3)}
.mg-t{font-family:var(--serif);font-size:var(--fs-md);letter-spacing:.04em;color:var(--text)}
.mg-row{display:flex;align-items:flex-end;gap:var(--sp-2);flex-wrap:wrap}
.mg-field{display:flex;flex:0 1 220px;min-width:180px;flex-direction:column;gap:var(--sp-1);
  font-size:var(--fs-xs);color:var(--muted)}
.mg-field input,.mg-field select{width:100%}
.mg-field-narrow{flex:0 0 auto;min-width:9ch}
.mg-field-narrow select,.mg-role{min-width:9ch;width:auto}
.btn-pri.sm{align-self:flex-end;padding:6px 12px;font-size:var(--fs-xs)}
.mg-roster{border-top:1px solid var(--border-soft)}
.mg-roster-head{display:grid;grid-template-columns:28px minmax(92px,.8fr) auto minmax(150px,1.3fr) 28px;
  align-items:center;gap:var(--sp-2);padding:var(--sp-1) 0;font-size:var(--fs-2xs);color:var(--muted)}
.mg-user{display:grid;grid-template-columns:28px minmax(92px,.8fr) auto minmax(150px,1.3fr) 28px;
  align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);padding:var(--sp-2) 0;
  color:var(--muted);border-bottom:1px solid var(--border-soft)}
.mg-identity{display:flex;align-items:center;gap:var(--sp-1);flex-wrap:wrap;min-width:0}
.mg-user b{color:var(--text);font-weight:600;overflow-wrap:anywhere}
.mg-roster-meta{font-size:var(--fs-xs);color:var(--muted);min-width:0}
.mg-actions{position:relative;justify-self:end}
.mg-actions > summary{list-style:none;cursor:pointer}
.mg-actions > summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.mg-actions > summary::-webkit-details-marker,.mg-provider > summary::-webkit-details-marker{display:none}
.mg-menu{position:absolute;z-index:1;right:0;top:calc(100% + var(--sp-1));min-width:160px;padding:var(--sp-1);
  border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);box-shadow:var(--shadow-2)}
.mg-menu button,.mg-menu a{display:block;width:100%;border:0;border-radius:var(--r-sm);padding:var(--sp-2);background:none;
  color:var(--text);font:inherit;font-size:var(--fs-sm);text-align:left}
.mg-menu a{text-decoration:none;cursor:pointer;white-space:nowrap}
.mg-menu button:not(:disabled):hover,.mg-menu a:hover{background:var(--hover)}
.mg-menu hr{border:0;border-top:1px solid var(--border-soft);margin:var(--sp-1) 0}
.mg-menu .mg-danger{color:var(--alert)}
.card .row .no.mg-danger{color:var(--alert);border-color:var(--alert)}
.mg-menu .mg-danger:not(:disabled):hover{background:var(--hover)}
.mg-menu .menu-split{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}
.menu-split span:last-child,.menu-check{margin-left:auto;color:var(--accent);font-size:var(--fs-2xs)}
.mg-add{align-self:flex-start}
.mg-add > summary{display:inline-flex;list-style:none}
.mg-add > summary::-webkit-details-marker{display:none}
.mg-add[open] > summary{margin-bottom:var(--sp-3)}
.mg-add-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4)}
.mg-add-method{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-2);min-width:0}
.mg-invite-result{display:flex;align-items:flex-end;gap:var(--sp-2);width:100%}
.mg-invite-result .mg-field{flex:1 1 260px}
.mg-invite-result input[readonly]{background:var(--chip)}
.mg-field-wide{flex:0 1 auto}
/* 我的 › 帳號:第一節不要頂線(v-pad 上緣已經是分界) */
.ac-shell > .mg-sec:first-child{border-top:0;padding-top:0}
.ac-seg{display:flex;gap:var(--sp-1);flex-wrap:wrap}
.mg-msg{min-height:16px;font-size:var(--fs-2xs);color:var(--muted)}
.mg-msg.err,.mg-provider-error{color:var(--alert)}
.mg-provider-table{border-top:1px solid var(--border-soft)}
.mg-provider-table-head,.mg-provider-head{display:grid;grid-template-columns:.8fr 1.2fr 1fr 2fr;align-items:center;
  gap:var(--sp-2)}
.mg-provider-table-head{padding:var(--sp-1);font-size:var(--fs-2xs);color:var(--muted)}
.mg-provider{border-bottom:1px solid var(--border-soft)}
.mg-provider:last-child{border-bottom:0}
.mg-provider-head{cursor:pointer;padding:5px var(--sp-1);font-size:var(--fs-xs)}
.mg-provider-tasks,.mg-provider-model{color:var(--muted);font-size:var(--fs-2xs);line-height:1.35}
.mg-provider-status{color:var(--muted);font-size:var(--fs-2xs)}
.mg-state-icon{margin-right:4px;color:var(--muted)}
.mg-provider-status.ok,.mg-provider-status.ok .mg-state-icon{color:var(--ok)}
.mg-provider-status.err,.mg-provider-status.err .mg-state-icon{color:var(--alert)}
.mg-provider-controls{display:flex;align-items:flex-end;gap:var(--sp-2);padding:var(--sp-3) var(--sp-1);
  border-top:1px solid var(--border-soft)}
.mg-provider-controls .mg-field:first-child{flex:1 1 260px}
.mg-provider-controls .mg-field:nth-child(2){flex:0 1 auto;min-width:9ch}
.mg-provider-controls button{white-space:nowrap}
.mg-provider-error{min-height:14px;font-size:var(--fs-2xs)}
button:disabled,select:disabled{cursor:not-allowed;opacity:.55}

/* ── toast ── */
#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:var(--surface);
  color:var(--text);padding:var(--sp-2) var(--sp-2) var(--sp-2) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-full);font-size:var(--fs-sm);z-index:60;
  box-shadow:var(--shadow-2);max-width:86vw;display:flex;align-items:center;gap:var(--sp-3)}
#toast .chip-btn{color:var(--accent);border-color:var(--border);background:var(--chip);white-space:nowrap}

/* ── 行動版 ── */
@media (max-width:768px){
  #msgs{padding:18px 14px 8px}
  #composer{padding:6px 12px calc(10px + env(safe-area-inset-bottom))}
  .c-tools select{max-width:42%}
  .bub{max-width:92%}
  .rt-grid{grid-template-columns:1fr}
  .v-pad{padding:16px 14px}
}
button:focus-visible,a:focus-visible,select:focus-visible,textarea:focus-visible,input:focus-visible{
  outline:2px solid var(--accent);outline-offset:1px}

/* ── 搜尋 / 紀錄操作 / 儀表板 / 筆記 ── */
#view-reading{background:var(--paper)}
body[data-view=reading] #mhead{border-color:var(--border);background:var(--paper)}
body[data-view=reading] #mtitle{color:var(--accent);font-family:var(--display);font-size:calc(var(--fs-xl) * 2);font-weight:500}
.reading-shell{max-width:1180px;padding:var(--sp-6) var(--sp-8)}
.reading-head{margin-bottom:var(--sp-4)}
.reading-search{margin-left:auto}
.reading-search input{width:min(100%,320px);padding:var(--sp-2) var(--sp-4);border:1px solid var(--border);
  border-radius:var(--r-full);background:var(--surface);color:var(--text);font:inherit;font-size:var(--fs-md)}
/* 帳本格(v3.93):一張 grid,所有列(續讀 + 各分區)共用同一組欄寬 → 年份/狀態/動作各列同一垂直線 */
.shelf-board{display:grid;grid-template-columns:max-content minmax(0,1fr) fit-content(22ch) 5ch max-content max-content max-content max-content;
  column-gap:var(--sp-4);border-top:1px solid var(--border)}
#readingContinue,#readingContinueList,#readingShelf,.reading-group,.shelf-list{display:contents}
.shelf-head,.shelf-row{grid-column:1/-1;display:grid;grid-template-columns:subgrid;align-items:center;min-height:44px;
  padding:0 var(--sp-2);border-bottom:1px solid var(--border-soft);color:var(--text);text-decoration:none}
.shelf-head{position:sticky;top:0;z-index:1;min-height:36px;background:var(--paper);border-bottom-color:var(--border);
  color:var(--muted);font-size:var(--fs-2xs);letter-spacing:.04em}
.shelf-row:hover{background:var(--hover)}
.shelf-board :is(.reading-continue h2,.reading-zone){grid-column:1/-1;margin:var(--sp-6) 0 var(--sp-2);
  font-family:var(--serif);font-size:var(--fs-md);font-weight:600;color:var(--accent)}
#readingShelf > :not(.reading-group),.reading-group > :not(.shelf-list){grid-column:1/-1}
.shelf-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--serif);font-size:var(--fs-sm)}
.shelf-author{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:var(--fs-xs)}
.shelf-year{color:var(--muted);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;text-align:right}
.shelf-row .bd-tag,.shelf-row .read-badge{justify-self:start}
.shelf-note{display:inline-flex;justify-content:center}
.shelf-row .pill-read{min-height:32px;padding:var(--sp-1) var(--sp-3);justify-self:end}
.reading-continue-page{justify-self:end;color:var(--muted);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;white-space:nowrap}
.reading-zone code{margin-right:var(--sp-1);font-family:var(--display);font-size:var(--fs-base);color:var(--stamp)}
.reading-note{display:inline-flex;color:var(--muted)}
.reading-note svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.pill-read{padding:var(--sp-2) var(--sp-4);border:1px solid var(--accent);border-radius:var(--r-full);
  background:var(--accent);color:var(--accent-ink);font:inherit;font-size:var(--fs-sm);font-weight:600}
.pill-read:hover{background:var(--text);border-color:var(--text);color:var(--surface)}
#view-log{background:var(--paper)}
body[data-view=log] #mhead{border-color:var(--border);background:var(--paper)}
body[data-view=log] #mtitle{color:var(--accent);font-family:var(--display);font-size:calc(var(--fs-xl) * 2);font-weight:500}
#view-log .v-pad{max-width:1180px;padding:var(--sp-6) var(--sp-8)}
#searchBox{width:min(100%,320px);box-sizing:border-box;padding:var(--sp-2) var(--sp-4);border:1px solid var(--border);
  border-radius:var(--r-full);background:var(--surface);color:var(--text);font-size:var(--fs-md);font-family:inherit}
#searchBox:focus{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:1px}
.ct-facets{display:flex;align-items:flex-end;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-3)}
.ct-facets label{display:flex;flex-direction:column;gap:var(--sp-1);color:var(--muted);font-size:var(--fs-2xs)}
.ct-facets select{padding:5px 30px 5px 9px;border:1px solid var(--border);border-radius:var(--r-sm);
  background-color:var(--surface);color:var(--text);font:inherit;font-size:var(--fs-sm)}
.ct-total{color:var(--muted);font-size:var(--fs-xs);margin-bottom:var(--sp-2)}
.ct-pager{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-4) 0}
.ct-page{color:var(--muted);font-size:var(--fs-xs);font-variant-numeric:tabular-nums}
/* 刪除區(v3.97):同一套帳本格語法,五欄 */
.trash-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-4)}
.trash-head .hint{margin:0}
.trash-board{display:grid;grid-template-columns:minmax(0,1fr) max-content max-content max-content max-content;column-gap:var(--sp-4);border-top:1px solid var(--border)}
#trashList{display:contents}
#trashList > :not(.trash-row){grid-column:1/-1}
.trash-row{grid-column:1/-1;display:grid;grid-template-columns:subgrid;align-items:center;min-height:44px;padding:0 var(--sp-2);border-bottom:1px solid var(--border-soft)}
.trash-row:hover{background:var(--hover)}
.trash-row .act{display:flex;gap:var(--sp-2);justify-content:flex-end}
.chip-btn.mg-danger,.no.mg-danger{color:var(--alert);border-color:var(--alert)}
/* 目錄(v3.95):與書架同一帳本格;#logList 只是 grid 的透明容器,館務動作在 ⋯ 列選單 */
#logList{display:contents}
#logList > :not(.shelf-row){grid-column:1/-1}
.shelf-row .act{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2)}
.shelf-date{color:var(--muted);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;white-space:nowrap}
.tx-draft-zone{display:flex;align-items:baseline;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-2) 0;border-bottom:1px solid var(--border-soft)}
.tx-draft-zone code{color:var(--stamp);font-family:var(--display)}
.refile-row{grid-column:1/-1;display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;
  padding:var(--sp-3) var(--sp-2);border-bottom:1px solid var(--border-soft);background:var(--paper-2)}
.mg-menu .mg-note{display:block;padding:var(--sp-2);color:var(--muted);font-size:var(--fs-xs)}
.arch .act{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:var(--sp-1)}
@media (hover:none){.arch .act{gap:8px}}
.read-badge{border:1px solid var(--border);color:var(--muted);flex:0 0 auto}
.read-badge.r1{color:var(--ok);border-color:var(--ok)}
.read-badge.r2{color:var(--alert);border-color:var(--alert)}
.db-t{font-family:var(--serif);font-size:var(--fs-lg);font-weight:normal;letter-spacing:.04em;color:var(--accent);
  margin:var(--sp-8) 0 var(--sp-3)}
#dashHero{display:grid;grid-template-columns:1fr auto;align-items:end;gap:var(--sp-8);
  padding-bottom:var(--sp-6);border-bottom:1px solid var(--border)}
.dh-total{display:flex;align-items:baseline;gap:var(--sp-3)}
.dh-total .dh-num{font-family:var(--serif);font-size:var(--fs-3xl);font-variant-numeric:tabular-nums}
.dh-label{color:var(--muted);font-size:var(--fs-xs)}
.dh-minors{display:flex;align-items:baseline;gap:var(--sp-8)}
.dh-pair{display:flex;align-items:baseline;gap:var(--sp-2)}
.dh-pair .dh-num{font-family:var(--serif);font-size:var(--fs-xl);font-variant-numeric:tabular-nums}
.dh-pair .dh-label{font-size:var(--fs-2xs);white-space:nowrap}
.dh-alert{color:var(--alert)}
/* 整份清單共用一組欄寬(display:contents),否則每列各自解 auto 欄,軌道起點逐列漂移。
   第一欄 fit-content(40%):對齊到最長區名,超過 40% 才 ellipsis */
#dashZones{display:grid;grid-template-columns:fit-content(40%) minmax(0,1fr) auto;
  align-items:center;column-gap:var(--sp-3);row-gap:var(--sp-2);font-size:var(--fs-xs)}
.zbar{display:contents}
#dashZones > .empty{grid-column:1 / -1}
.zbar .zl{display:flex;gap:var(--sp-2);min-width:0;align-items:baseline}
.zbar .zc{flex:0 0 auto;color:var(--muted);font-family:var(--serif);font-size:var(--fs-xs)}
.zbar .zname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:var(--fs-sm)}
.zbar .zt{background:var(--border-soft);border-radius:var(--r-xs);height:var(--sp-2);overflow:hidden}
.zbar .zf{height:100%;background:var(--accent);border-radius:var(--r-xs)}
.zbar .zn{text-align:right;font-family:var(--serif);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}
.read-track{display:flex;width:100%;height:var(--sp-3);overflow:hidden;border-radius:var(--r-xs);background:var(--chip)}
.read-seg{height:100%}
.read-seg.unread{background:var(--chip)}
.read-seg.read{background:var(--accent)}
.read-seg.deep{background:var(--ok)}
.read-legend{display:flex;gap:var(--sp-6);margin-top:var(--sp-3)}
.read-key{display:flex;align-items:center;gap:var(--sp-2);min-width:0}
.read-dot,.bk-dot{width:var(--sp-2);height:var(--sp-2);border-radius:50%;flex:0 0 var(--sp-2);background:currentColor}
.read-dot.unread{color:var(--chip);border:1px solid var(--border)}
.read-dot.read{color:var(--accent)}
.read-dot.deep{color:var(--ok)}
.read-name{color:var(--muted);font-size:var(--fs-xs)}
.read-n{color:var(--text);font-family:var(--serif);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}
.usage-total{font-family:var(--serif);font-size:var(--fs-md);padding-bottom:var(--sp-3)}
.usage-provider{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-3);padding:var(--sp-2) 0;
  border-top:1px solid var(--border-soft)}
.usage-name{color:var(--muted);font-size:var(--fs-xs)}
.usage-value{font-family:var(--serif);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;text-align:right}
.bk-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) 0;border-top:1px solid var(--border-soft);
  font-size:var(--fs-xs);flex-wrap:wrap}
.bk-state{font-weight:600}
.bk-dest,.bk-error{color:var(--muted)}
@media (max-width:768px){
  body[data-view=reading] #mtitle{font-size:var(--fs-2xl)}
  .reading-shell{padding:var(--sp-4)}
  .reading-search{flex:1 1 100%;margin-left:0}
  .reading-search input{width:100%}
  .shelf-board{display:block}
  .shelf-head{display:none}
  #readingContinue,#readingContinueList,#readingShelf,.reading-group,.shelf-list{display:block}
  .shelf-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3);padding:var(--sp-2) var(--sp-1)}
  .shelf-title{order:-2;flex:1 1 calc(100% - 8rem);white-space:normal;line-height:1.4}
  .shelf-author,.shelf-row .bd-tag,.shelf-note:empty{display:none}
  .shelf-row .pill-read,.shelf-row .act,.reading-continue-page{order:-1;margin-left:auto}
  .shelf-row .pill-read{padding:var(--sp-1) var(--sp-2)}
  body[data-view=log] #mtitle{font-size:var(--fs-2xl)}
  #view-log .v-pad{padding:var(--sp-4)}
  #logList{display:block}
  .shelf-date{display:none}
  .trash-board,#trashList{display:block}
  .trash-board .shelf-head{display:none}
  .trash-row{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);padding:var(--sp-2) var(--sp-1)}
  .trash-row .shelf-title{flex:1 1 100%;white-space:normal}
  .trash-row .act{margin-left:auto}
  #dashHero{grid-template-columns:1fr;gap:var(--sp-3)}
  .dh-minors{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-3)}
  .dh-pair{flex-direction:column;align-items:flex-start;gap:var(--sp-1)}
  .read-legend{gap:var(--sp-3)}
}
.modal-card.wide{max-width:640px;max-height:82dvh}
.legal-card{max-width:640px;max-height:82dvh;overflow-y:auto}
.legal-card p{margin:0;color:var(--text);font-size:var(--fs-base);line-height:1.75}
#noteMeta{display:flex;flex-wrap:wrap;gap:var(--sp-1)}
#noteBody{white-space:normal;overflow-y:auto;font-size:var(--fs-base);line-height:1.75;
  background:var(--bg);border:1px solid var(--border-soft);border-radius:var(--r-sm);padding:12px;
  max-height:56dvh;margin:0;font-family:inherit}
.mg-zone{display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--muted);padding:2px 0}
.mg-zone-label,.mg-zone-actions{display:flex;align-items:center;gap:var(--sp-2)}
.mg-zone.edit{display:flex;flex-wrap:wrap}
/* LCC 碼長度不一(K-01 vs KNQ-01 (LCC KNQ3800)),欄位靠固定下限對齊,不靠碼本身等寬 */
.mg-zone > b,.mg-zone-label > b{min-width:7ch;flex:0 0 auto;font-family:var(--serif);color:var(--text)}
.mg-code-preview{margin:0;font-family:var(--serif);font-size:var(--fs-xs);color:var(--muted)}
.mg-subs-edit{flex:1 1 100%;display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--sp-2)}
.mg-subs-l{flex:1 1 100%;font-size:var(--fs-2xs);letter-spacing:.06em;color:var(--muted)}
.mg-sub{display:flex;flex-direction:column;gap:var(--sp-1)}
.mg-sub .mg-sub-lcc{flex:0 0 auto;min-width:0;width:100%}

/* ── 協作專案 ── */
.s-proj{display:flex;align-items:center;justify-content:space-between}
.mini-add{border:none;background:none;color:var(--text);font-size:var(--fs-sm);cursor:pointer;
  padding:0 4px;border-radius:var(--r-xs)}
.mini-add:hover{color:var(--accent);background:var(--hover)}
.cv .cv-ic{flex:0 0 auto;font-size:var(--fs-2xs);color:var(--muted)}
.cv-ic svg,.who svg,#rtGo svg,#rtLink svg{width:14px;height:14px;stroke:currentColor;
  fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:0 0 14px}
.nv-ic svg,.ico-btn svg,.mg-zone-actions svg,.modal-title svg{width:16px;height:16px;stroke:currentColor;
  fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:0 0 16px}
.modal-title{display:flex;align-items:center;gap:var(--sp-2)}
#rtGo,#rtLink{display:inline-flex;align-items:center;gap:var(--sp-1)}

/* ── 可收合側欄分組 ── */
details.sec > summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:var(--sp-1)}
details.sec > summary::-webkit-details-marker{display:none}
details.sec > summary::before{content:"▸";font-size:var(--fs-2xs);color:var(--text);transition:transform .15s var(--ease)}
details.sec[open] > summary::before{transform:rotate(90deg)}
details.sec > summary > span{flex:1}


/* ── 顧問總覽:學者卡片 ── */
.adv-toolbar{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4);flex-wrap:wrap}
.adv-toolbar .pick-row{flex:1 1 320px}
.adv-toolbar select{min-width:160px;padding:6px 11px;border:1px solid var(--border);border-radius:var(--r-sm);
  background-color:var(--bg);color:var(--text);font-size:var(--fs-md);font-family:inherit}
.mg-d{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:10px 14px;
  box-shadow:var(--shadow-1);transition:transform .2s var(--ease),box-shadow .2s var(--ease)}
.mg-d:hover{transform:translateY(-1px);box-shadow:var(--shadow-2)}
.mg-d > summary{cursor:pointer;font-size:var(--fs-sm);color:var(--accent);font-family:var(--serif);letter-spacing:.04em}
.mg-d[open] > summary{margin-bottom:9px}
/* .fld 包起來後由 .fld 的 gap 管間距,input 自己的 margin 歸零免得雙倍 */
.mg-d .fld{margin-bottom:var(--sp-2)}
.mg-d .fld input,.mg-d .fld select,.mg-d .fld textarea{margin-bottom:0}
.mg-d input,.mg-d select,.mg-d textarea{display:block;width:100%;box-sizing:border-box;margin-bottom:7px;
  padding:6px 10px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg);
  color:var(--text);font-size:var(--fs-md);font-family:inherit}
.adv-sch{display:flex;align-items:baseline;gap:var(--sp-2);margin:22px 0 10px;
  font-family:var(--serif);font-size:var(--fs-md);font-weight:normal;letter-spacing:.06em;color:var(--accent)}
.adv-sch::after{content:"";flex:1;height:1px;background:var(--border)}
.adv-sch .n{font-size:var(--fs-2xs);color:var(--muted);letter-spacing:0}
.adv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--sp-4)}

.sch-card{position:relative;display:flex;flex-direction:column;gap:var(--sp-2);min-height:158px;
  padding:16px 16px 13px;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);
  box-shadow:var(--shadow-1);transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s var(--ease)}
.sch-card::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;border-radius:var(--r-lg) var(--r-lg) 0 0;
  background:linear-gradient(90deg,var(--accent),var(--alert))}
.sch-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-2);border-color:var(--accent)}
.sch-top{display:flex;align-items:center;gap:var(--sp-3);min-width:0;margin-top:2px}
.sch-seal{flex:0 0 34px;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-family:var(--serif);font-size:var(--fs-xs);letter-spacing:.02em;
  color:var(--accent);border:1px solid var(--accent);background:transparent}
.sch-name{flex:1;min-width:0;margin:0;font-family:var(--serif);font-size:var(--fs-base);line-height:1.25;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.icon-btn{flex:0 0 26px;width:26px;height:26px;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--border);border-radius:var(--r-sm);background:none;color:var(--text);padding:0;
  transition:color .18s var(--ease),border-color .18s var(--ease),background .18s var(--ease)}
.icon-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--hover)}
.icon-btn.danger:hover{color:var(--alert);border-color:var(--alert)}
.icon-btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.sch-src{margin:0;font-size:var(--fs-2xs);line-height:1.5;color:var(--muted);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sch-school{align-self:flex-start}
.sch-foot{display:flex;align-items:center;gap:var(--sp-2);margin-top:auto;padding-top:9px;
  border-top:1px solid var(--border-soft)}
.sch-state{font-size:var(--fs-2xs);color:var(--muted)}
.sch-state.ready{color:var(--ok);font-weight:600}
.sch-foot .sp{flex:1}
.adv-empty-action{margin-top:var(--sp-4)}

/* ── 學者檔案閱讀頁 ── */
.prof-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
  width:min(980px,96vw);height:min(86dvh,860px);display:flex;flex-direction:column;overflow:hidden;
  box-shadow:var(--shadow-3)}
.prof-head{display:flex;align-items:center;gap:var(--sp-4);padding:18px 22px;border-bottom:1px solid var(--border)}
.prof-seal{flex:0 0 48px;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-family:var(--serif);font-size:var(--fs-lg);color:var(--accent);
  border:2px solid var(--accent)}
.prof-id{flex:1;min-width:0}
.prof-id h2{margin:0;font-family:var(--serif);font-size:var(--fs-xl);letter-spacing:.02em;line-height:1.2}
.prof-meta{display:flex;align-items:center;gap:var(--sp-2);margin-top:5px;flex-wrap:wrap}
.prof-src{font-size:var(--fs-2xs);color:var(--muted)}
.prof-body{flex:1;min-height:0;display:flex}
.prof-toc{flex:0 0 194px;border-right:1px solid var(--border);padding:16px 12px;overflow-y:auto;
  background:var(--bg)}
.prof-toc .tl{font-size:var(--fs-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);
  padding:0 8px 8px}
.prof-toc a{display:block;padding:6px 9px;border-radius:var(--r-sm);font-size:var(--fs-xs);color:var(--muted);
  text-decoration:none;border-left:2px solid transparent;transition:color .15s var(--ease),background .15s var(--ease)}
.prof-toc a:hover{background:var(--hover);color:var(--text)}
.prof-toc a.on{color:var(--accent);border-left-color:var(--accent);font-weight:600}
.prof-doc{flex:1;min-width:0;overflow-y:auto;padding:26px 34px 44px;scroll-behavior:smooth}
.prof-doc h3[id]{font-family:var(--serif);font-size:var(--fs-md);letter-spacing:.04em;color:var(--accent);
  margin:30px 0 12px;padding-bottom:7px;border-bottom:1px solid var(--border)}
.prof-doc h3[id]:first-child{margin-top:0}
.prof-doc h3:not([id]){font-family:var(--serif);font-size:var(--fs-base);margin:18px 0 7px}
.prof-doc p{margin:0 0 12px;font-size:var(--fs-base);line-height:1.78;max-width:68ch}
.prof-doc ul{margin:0 0 14px;padding-left:20px;max-width:68ch}
.prof-doc li{font-size:var(--fs-base);line-height:1.75;margin-bottom:6px}
.prof-doc strong{font-weight:650}
.prof-doc em{font-style:italic;color:var(--text)}
.prof-doc code{font-family:ui-monospace,Menlo,monospace;font-size:var(--fs-xs);
  background:var(--chip);padding:1px 5px;border-radius:var(--r-xs)}
.prof-doc blockquote{margin:0 0 14px;padding:9px 14px;border-left:3px solid var(--border);
  background:var(--bg);border-radius:0 var(--r-sm) var(--r-sm) 0;font-size:var(--fs-sm);color:var(--muted)}
.prof-foot{display:flex;align-items:center;gap:var(--sp-2);padding:12px 20px;border-top:1px solid var(--border)}
.prof-foot .sp{flex:1}
.prof-empty{color:var(--muted);font-size:var(--fs-base);padding:40px 0;text-align:center}

/* ── 蒸餾精靈 ── */
.modal-card.wiz{max-width:640px;width:min(640px,96vw);padding:0;gap:0;max-height:88dvh}
.wiz-head{padding:18px 22px 0}
.wiz-head h3{margin:0 0 14px}
.wiz-steps{display:flex;gap:var(--sp-2);list-style:none;margin:0;padding:0}
.wiz-steps li{flex:1;display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-2xs);color:var(--muted);
  padding-bottom:10px;border-bottom:2px solid var(--border);transition:color .2s var(--ease),border-color .2s var(--ease)}
.wiz-steps li button{width:100%;border:0;padding:0;background:none;color:inherit;font:inherit;text-align:left}
.wiz-steps li button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.wiz-steps li span{width:19px;height:19px;border-radius:50%;border:1px solid currentColor;
  display:flex;align-items:center;justify-content:center;font-size:var(--fs-2xs);flex:0 0 19px}
.wiz-steps li.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}
.wiz-steps li.done{color:var(--ok);border-bottom-color:var(--ok)}
.wiz-body{flex:1;min-height:0;overflow-y:auto;padding:20px 22px}
.wiz-pane{display:none;flex-direction:column;gap:var(--sp-4)}
.wiz-pane.on{display:flex}
.d-source-pane{display:flex;flex-direction:column;gap:var(--sp-4)}
.d-source-pane textarea{padding:7px 11px;border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--bg);color:var(--text);font-size:var(--fs-md);font-family:inherit;resize:vertical}
.fld{display:flex;flex-direction:column;gap:var(--sp-1)}
.fld > span{font-size:var(--fs-2xs);letter-spacing:.06em;color:var(--muted)}
.fld > em{font-size:var(--fs-2xs);color:var(--muted);font-style:normal;line-height:1.5}
.fld input,.fld select{padding:7px 11px;border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--bg);color:var(--text);font-size:var(--fs-md);font-family:inherit}
.fld input:focus,.fld select:focus{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:1px}
.drop.sm{padding:26px 16px;border-radius:var(--r-md)}
.drop-ic svg{width:30px;height:30px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.drop.sm .drop-ic svg{width:22px;height:22px;stroke-width:1.6}
.mat-list{display:flex;flex-direction:column;gap:var(--sp-1)}
.mat{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);padding:7px 10px;border-radius:var(--r-sm);
  background:var(--bg);border:1px solid var(--border-soft)}
.mat svg{width:14px;height:14px;flex:0 0 14px;stroke:currentColor;fill:none;stroke-width:1.6;color:var(--muted)}
.mat .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mat .sz{color:var(--muted);font-size:var(--fs-2xs)}
.mat-empty{font-size:var(--fs-xs);color:var(--muted);padding:4px 2px}
.asp-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2);margin-top:4px}
.asp{display:flex;align-items:center;gap:var(--sp-2);padding:9px 11px;border:1px solid var(--border);
  border-radius:var(--r-md);font-size:var(--fs-xs);cursor:pointer;background:var(--bg);transition:border-color .18s var(--ease)}
.asp:has(input:checked){border-color:var(--accent);color:var(--accent)}
.cost-box{border:1px solid var(--muted);border-radius:var(--r-md);padding:12px 15px;background:var(--bg)}
.cost-n{font-family:var(--serif);font-size:var(--fs-base);color:var(--text)}
.cost-note{font-size:var(--fs-2xs);color:var(--muted);margin-top:4px}
.wiz-foot{display:flex;align-items:center;gap:var(--sp-2);padding:14px 22px;border-top:1px solid var(--border)}
.wiz-foot .sp{flex:1}
.run-box{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);padding:26px 0}
.run-spin{width:34px;height:34px;border:3px solid var(--border);border-top-color:var(--alert);
  border-radius:50%;animation:sp .9s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
.run-txt{font-size:var(--fs-sm)}
.run-timer{font-family:var(--serif);font-size:var(--fs-xl);color:var(--muted)}
.run-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:center}
.run-list li{font-size:var(--fs-2xs);padding:3px 9px;border-radius:var(--r-sm);background:var(--chip);color:var(--muted)}
@media (max-width:768px){
  .prof-card{width:100vw;height:100dvh;border-radius:0}
  /* v3.58 mobile toc */
  .prof-body{flex-direction:column}
  .prof-toc{display:flex;flex:0 0 auto;gap:var(--sp-1);overflow-x:auto;overflow-y:hidden;
    border-right:0;border-bottom:1px solid var(--border);padding:var(--sp-2);white-space:nowrap}
  .prof-toc .tl{display:none}
  .prof-toc a{flex:0 0 auto;padding:var(--sp-1) var(--sp-2);border:1px solid var(--border)}
  .prof-toc a.on{border-color:var(--accent)}
  .prof-doc{padding:20px 18px 40px}
  .asp-grid{grid-template-columns:1fr}
  .mg-row,.mg-provider-controls{flex-direction:column;align-items:stretch}
  .mg-row button,.mg-provider-controls button{align-self:flex-end}
  .mg-add-grid{grid-template-columns:1fr}
  .mg-roster-head{grid-template-columns:28px minmax(0,1fr) auto 28px}
  .mg-roster-head span:nth-child(4){display:none}
  .mg-user{grid-template-columns:28px minmax(0,1fr) auto 28px}
  .mg-roster-meta{grid-column:2 / 4}
  .mg-actions{grid-column:4;grid-row:1}
  .mg-provider-table-head{display:none}
  .mg-provider-head{grid-template-columns:1fr 1.4fr;padding-block:var(--sp-2)}
  .bd-form{flex-direction:column;align-items:stretch}
  .bd-crumb-cur{max-width:20ch}
  /* 觸控目標下限 44px:留言列的刪除/禁言在桌機是 31px,手機按不準 */
  .bd-post-head button,.bd-tools button,.bd-item{min-height:44px}
  .bd-post-head button{padding-inline:12px}
  .bd-post-body{padding-left:0}
  .bd-tomb{margin-left:0}
  .bd-meta{flex-direction:row;gap:var(--sp-2);align-items:baseline}
  .bd-item{gap:var(--sp-2)}
  .bd-crumb-cur{max-width:20ch}
  .bd-form input[type=text],.bd-form textarea{width:100%;min-width:0}
}

.pick-row{display:flex;gap:var(--sp-2);align-items:center}
.pick-row input{flex:1;padding:6px 11px;border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--bg);color:var(--text);font-size:var(--fs-md);font-family:inherit}
.pick-list{max-height:210px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--r-md);
  padding:6px;display:flex;flex-direction:column;gap:var(--sp-1);background:var(--bg)}
.pick-it{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:6px 8px;border:0;border-radius:var(--r-sm);
  background:transparent;color:var(--text);font:inherit;font-size:var(--fs-xs);text-align:left;cursor:pointer}
.pick-it:hover{background:var(--hover)}
.pick-it[aria-selected=true]{background:var(--hover);color:var(--accent)}
.pick-it .zn{font-family:var(--serif);font-size:var(--fs-2xs);color:var(--alert);border:1px solid var(--alert);
  border-radius:var(--r-xs);padding:0 4px;flex:0 0 auto;white-space:nowrap}
.pick-it .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pick-it .sz{font-size:var(--fs-2xs);color:var(--muted)}
.mat.arch{border-color:var(--accent)}

/* ── 原生表單控件 ── */
.c-tools select,.row select,.fld select,.mg-field select,.rv-edit select,.modal-card select,.mg-d select,.adv-toolbar select,
.ct-facets select{
  appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%236B6862' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right var(--sp-2) center;background-size:16px;
  padding-right:var(--sp-8);color:var(--text)}

/* ── 登入 / 邀請 ── */
body.auth{display:block;min-height:100dvh;height:auto;overflow:auto;padding:0;background:var(--ink-deep)}
.auth-split{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);min-height:100dvh}
.auth-ground{display:flex;min-width:0;flex-direction:column;justify-content:space-between;padding:var(--sp-12) calc(var(--sp-12) * 1.5);
  border-right:1px solid var(--line-on-ink);background:radial-gradient(circle at 20% 30%,var(--glow-gold),transparent 60%),var(--ink-deep);
  color:var(--on-ink)}
.auth-brand{display:flex;align-items:center;gap:var(--sp-4);font-family:var(--display);font-size:calc(var(--fs-2xl) + var(--sp-1));font-weight:500}
.auth-mark{display:inline-flex;width:44px;height:44px;align-items:center;justify-content:center;color:var(--accent)}
.auth-mark svg{width:36px;height:36px}
.auth-halls{display:flex;flex-direction:column;font-family:var(--display);font-size:calc(var(--fs-3xl) * 3);font-weight:400;
  line-height:1.02;letter-spacing:-.01em}
.auth-ground > p{max-width:40ch;margin:var(--sp-6) 0;color:var(--on-ink-muted);font-size:var(--fs-md);line-height:1.75}
.auth-lang{color:var(--on-ink-muted);font-size:var(--fs-xs)}
.auth-lang a{display:inline-flex;align-items:center;padding:var(--sp-1);color:var(--on-ink-muted);text-decoration:none}
.auth-lang a.cur{color:var(--on-ink);font-weight:600;text-decoration:underline;text-decoration-color:var(--gold);
  text-underline-offset:3px;text-decoration-thickness:1px}
.auth-lang a:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.auth-paper{display:flex;align-items:center;justify-content:center;padding:var(--sp-12);background:var(--paper)}
.auth-card{position:relative;background:var(--paper);color:var(--text);border:0;border-radius:var(--r-lg);
  padding:calc(var(--sp-12) - var(--sp-1)) var(--sp-12) var(--sp-8);box-shadow:var(--shadow-3)}
.auth-card h1{margin:0 0 var(--sp-2);color:var(--accent);font-family:var(--display);font-size:calc(var(--fs-3xl) + var(--sp-1));
  font-weight:600;line-height:1.1;letter-spacing:0}
.auth-card h2{margin:var(--sp-4) 0 var(--sp-2);color:var(--accent);font-family:var(--display);font-size:var(--fs-xl)}
.auth-card p{margin:0 0 var(--sp-4);color:var(--muted);font-size:var(--fs-sm);line-height:1.6}
.auth-card form{display:flex;flex-direction:column;gap:var(--sp-4)}
.auth-field{display:flex;flex-direction:column;gap:var(--sp-2);color:var(--text);font-size:var(--fs-sm);font-weight:600}
.auth-card input[type=text],.auth-card input[type=email],.auth-card input[type=password]{width:100%;height:48px;padding:0 var(--sp-4);
  border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--text);font:inherit;font-size:var(--fs-md)}
.auth-check{display:flex;min-height:44px;align-items:center;gap:var(--sp-2);color:var(--text);font-size:var(--fs-sm)}
.auth-check input{accent-color:var(--accent)}
.auth-card button,.ok-modal a{display:flex;width:100%;min-height:48px;align-items:center;justify-content:center;padding:var(--sp-3);
  border:0;border-radius:var(--r-full);background:var(--accent);color:var(--accent-ink);font:inherit;
  font-size:var(--fs-base);font-weight:600;letter-spacing:.04em;text-align:center;text-decoration:none}
.auth-error{color:var(--alert);font-size:var(--fs-sm);line-height:1.5}
.auth-credential{display:flex;flex-direction:column;gap:var(--sp-2);margin:var(--sp-4) 0;padding:var(--sp-4);
  border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);font-size:var(--fs-sm);line-height:1.6}
.auth-credential strong{color:var(--alert);font-family:var(--display);font-size:var(--fs-base);letter-spacing:.06em}
.auth-credential span{color:var(--muted)}
.auth-signup{margin:var(--sp-4) 0 0!important;text-align:center}
.auth-signup a{display:inline-block;padding:var(--sp-3) var(--sp-2);color:var(--accent);text-decoration:none}
.ok-modal{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:var(--sp-8);border-radius:var(--r-lg);background:var(--paper);text-align:center}
.ok-modal h2{margin:0 0 var(--sp-3);font-size:var(--fs-xl)}
.ok-modal p{margin-bottom:var(--sp-4);font-size:var(--fs-sm)}
@media (max-width:768px){
  .auth-split{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .auth-ground{min-height:160px;padding:var(--sp-6);border-right:0;border-bottom:1px solid var(--line-on-ink)}
  .auth-brand{font-size:var(--fs-xl)}
  .auth-mark{width:36px;height:36px}
  .auth-mark svg{width:28px;height:28px}
  .auth-halls{flex-direction:row;gap:var(--sp-3);font-size:var(--fs-2xl)}
  .auth-ground > p{display:none}
  .auth-paper{align-items:flex-start;padding:var(--sp-6) var(--sp-4)}
  .auth-card{padding:var(--sp-8) var(--sp-6);box-shadow:none}
}
/* v3.70: 學派管理列的部門法/子資料夾一覽 */
.mg-zone-subs{display:block;font-size:var(--fs-xs);color:var(--muted);
  max-width:46ch;white-space:normal;line-height:1.5;margin-top:2px}

/* ── R8 round 2:shared editorial surfaces ── */
.tabs-ul{display:flex;align-items:flex-end;gap:var(--sp-6);min-height:44px;margin:0;padding:0;
  border-bottom:1px solid var(--border);background:transparent;list-style:none}
.tabs-ul li{display:flex;min-height:44px;align-items:flex-end;padding:0;border-bottom:2px solid transparent}
.tabs-ul li button{display:flex;min-height:44px;align-items:center;padding:0 var(--sp-1);border:0;background:none;
  color:var(--text-soft);font:inherit;font-size:var(--fs-sm)}
.tabs-ul li.on{border-bottom-color:var(--accent);color:var(--accent)}
.tabs-ul li.on button{color:var(--accent);font-weight:600}
.tabs-ul li > span{display:none}
.up-tabs,#adminTabs{margin-bottom:var(--sp-6)}
.rd-head.tabs-ul{align-items:center;border-bottom:1px solid var(--border);padding:var(--sp-3) var(--sp-8);min-height:auto}
body[data-view="home"] #mtitle{color:var(--on-ink)}

#view-review,#view-upload,#view-advisors,#view-roundtable,#view-board,#view-personal,
#view-account,#view-admin{background:var(--paper)}
#view-review .v-pad,#view-upload .v-pad,#view-advisors .v-pad,#view-board .v-pad,#view-personal .v-pad{
  max-width:1200px;padding:var(--sp-6) var(--sp-8)}

/* 圖書館:審核、入庫、分類法 */
#view-taxonomy{background:var(--paper)}
.tx-shell{display:grid;grid-template-columns:minmax(220px,.72fr) minmax(400px,1.7fr) minmax(260px,.9fr);
  flex:1;min-height:0;width:100%}
.tx-create,.tx-ledger,.tx-templates{min-width:0;overflow-y:auto;padding:var(--sp-6)}
.tx-create{border-right:1px solid var(--border);background:var(--paper-2)}
.tx-ledger{padding-inline:var(--sp-8)}
.tx-templates{display:flex;flex-direction:column;gap:var(--sp-3);border-left:1px solid var(--border);
  background:var(--surface)}
.tx-panel-head{margin-bottom:var(--sp-6)}
.tx-panel-head h2{margin:0;font-family:var(--display);font-size:var(--fs-2xl);font-weight:600;color:var(--text)}
.tx-panel-head p{margin:var(--sp-2) 0 0;color:var(--muted);font-size:var(--fs-sm);line-height:1.6}
.tx-disciplines{margin-bottom:var(--sp-6);border-block:1px solid var(--border-soft)}
.tx-disc-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);
  padding:var(--sp-3) 0;border-bottom:1px solid var(--border-soft);font-size:var(--fs-sm)}
.tx-disc-row:last-child{border-bottom:0}
.tx-disc-row span{font-family:var(--display);font-size:var(--fs-md)}
.tx-disc-row b{color:var(--muted);font-size:var(--fs-xs);font-weight:500;font-variant-numeric:tabular-nums}
.tx-create-form{display:flex;flex-direction:column;gap:var(--sp-3)}
.tx-create-form :is(.mg-field,.fld){width:100%;min-width:0}
.tx-create-form .mg-code-preview{min-height:1lh;color:var(--stamp)}
.tx-l10n-row{display:grid;grid-template-columns:1fr}
#mSchoolAdd{align-self:stretch;gap:var(--sp-2)}
#mSchoolAdd svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
#view-taxonomy #mZoneList{border-top:1px solid var(--border)}
#view-taxonomy .mg-zone{padding:var(--sp-3) var(--sp-1)}
#view-taxonomy .mg-zone-label{min-width:0;flex-wrap:wrap}
#view-taxonomy .mg-zone-subs{flex-basis:100%;max-width:68ch;padding-left:calc(7ch + var(--sp-2))}
#view-taxonomy .mg-zone-actions{align-self:flex-start}
#view-taxonomy .mg-zone.edit{padding-block:var(--sp-4);background:var(--surface)}
#view-taxonomy .mg-zone.edit > b{align-self:center;color:var(--stamp);font-size:var(--fs-base)}
.tx-templates > .chip-btn{width:100%;min-height:44px;border-radius:var(--r-full);background:transparent}
.pending-card{padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);
  box-shadow:none}
.pending-card .stamp{color:var(--stamp);font-family:var(--display);font-size:var(--fs-base);min-width:max-content}
.pending-card .t{font-family:var(--display);font-size:var(--fs-lg);font-weight:600}
.pending-card .m{font-size:var(--fs-xs)}
.pending-card .warn{padding:var(--sp-2) var(--sp-3);border:1px solid var(--gold);border-radius:var(--r-sm);
  background:var(--glow-gold);color:var(--text)}
.pending-card .row{padding-top:var(--sp-3);border-top:1px solid var(--border-soft)}
.pending-card .ok.btn-pri,.pk-tools .ok.btn-pri{color:var(--accent-ink);font-family:var(--sans);font-weight:600}
.pk-box{width:20px;height:20px;accent-color:var(--accent)}
.pk-tools{min-height:44px;padding:0 0 var(--sp-4);border-bottom:1px solid var(--border);background:transparent}
.drop{border-width:1px;background:var(--paper-2);box-shadow:none}
.drop-ic{display:inline-flex;color:var(--accent)}
.rv-upload,.zt-panel{background:var(--surface)}
.zt-panel{padding:var(--sp-6);border:1px solid var(--border);border-radius:var(--r-md)}
.mg-zone{min-height:52px;padding:var(--sp-2) var(--sp-1);border-bottom:1px solid var(--border-soft)}
.mg-zone:hover{background:var(--hover)}
.mg-zone-label > b{color:var(--stamp);font-family:var(--display);font-size:var(--fs-base)}
.mg-zone-label > span:not(.bd-tag){font-family:var(--display);font-size:var(--fs-md);color:var(--text)}
.mg-zone-subs{font-family:var(--sans)!important;font-size:var(--fs-xs)!important;color:var(--muted)!important}
#mLawTpl,#mIpeTpl{min-height:44px;border-radius:var(--r-full);background:transparent}

/* 閱讀器 */
.rd-head .no,.rd-head .chip-btn{min-height:44px;border-radius:var(--r-full);background:var(--surface)}
.rd-page{font-variant-numeric:tabular-nums}
.rd-toc{font-size:var(--fs-xs)}
.rd-toc button{font-size:var(--fs-xs);border-radius:0;border-bottom:1px solid transparent}
.rd-toc button.on{border-bottom-color:var(--accent);background:transparent}

/* 智庫:顧問、對話、圓桌、公告、檔案 */
#view-advisors .v-pad{max-width:1240px}
.adv-manual{margin-bottom:var(--sp-6);padding:var(--sp-6);border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--surface)}
.adv-manual h2{margin:0 0 var(--sp-4);font-family:var(--display);font-size:var(--fs-xl);font-weight:600}
.adv-manual-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4)}
.adv-manual-content{grid-column:1/-1}
.adv-manual :is(input,select,textarea){width:100%;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);
  border-radius:var(--r-sm);background:var(--paper-2);color:var(--text);font:inherit;font-size:var(--fs-md)}
.adv-manual textarea{resize:vertical}
.adv-manual-add{grid-column:1/-1;justify-self:end;margin:0;border-color:var(--border);background:var(--surface);color:var(--text)}
.adv-manual-add:hover{border-color:var(--accent);background:var(--hover);color:var(--accent)}
.advisor-card{min-height:calc(var(--sp-12) * 4);padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--surface);box-shadow:none}
.advisor-card::before{display:none}
.advisor-card:hover{transform:translateY(-1px);box-shadow:var(--shadow-1)}
.adv-mark{display:flex;flex:0 0 44px;width:44px;height:44px;align-items:center;justify-content:center;
  border:1px solid var(--stamp);border-radius:0;color:var(--stamp);font-family:var(--display);font-size:var(--fs-xl)}
.advisor-card .sch-name{font-family:var(--serif);font-size:var(--fs-xl);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.advisor-card .sch-src{font-size:var(--fs-sm);line-height:1.6}
.advisor-card .sch-foot{padding-top:var(--sp-3)}
.adv-sch{font-family:var(--display);font-size:var(--fs-lg);color:var(--muted)}

.rt-page{flex:1;min-height:0;overflow-y:auto;width:100%;max-width:1200px;margin:0 auto;padding:var(--sp-6) var(--sp-8)}
.rt-setup{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,320px);border:1px solid var(--border);
  border-radius:var(--r-sm);background:var(--surface)}
.rt-main{display:flex;min-width:0;flex-direction:column;gap:var(--sp-6);padding:var(--sp-6)}
.rt-question > span,.rt-search > span{font-size:var(--fs-xs)}
#rtQ{width:100%;min-height:132px;padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);
  border-radius:var(--r-sm);background:var(--paper-2);color:var(--text);font-family:var(--serif);font-size:var(--fs-md);
  line-height:1.7;resize:vertical}
.rt-section-head{display:flex;align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-3)}
.rt-section-head h2,.rt-recent h2{margin:0;font-family:var(--display);font-size:var(--fs-xl);font-weight:600}
.rt-section-head p{margin:0;color:var(--muted);font-size:var(--fs-sm);line-height:1.6}
.rt-search{margin-bottom:var(--sp-3)}
.rt-search input{padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--paper-2);color:var(--text);font:inherit;font-size:var(--fs-md)}
#view-roundtable #rtList{max-height:none;overflow:visible;flex-flow:row wrap;gap:var(--sp-2)}
#view-roundtable .rt-sch{flex-basis:100%;margin-top:var(--sp-2)}
#view-roundtable .rt-p{min-height:40px;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);
  border-radius:var(--r-full);background:var(--surface)}
#view-roundtable .rt-p:has(input:checked){border-color:var(--hall-thinktank);color:var(--hall-thinktank);background:var(--paper-2)}
#view-roundtable .rt-p input{accent-color:var(--hall-thinktank)}
.rt-summary{display:flex;min-width:0;flex-direction:column;gap:var(--sp-4);padding:var(--sp-6);
  border-left:1px solid var(--border);background:var(--paper-2)}
.rt-summary .rt-cost{font-family:var(--display);font-size:var(--fs-lg);line-height:1.5;color:var(--accent)}
.rt-summary #rtGo{margin-top:auto}
#rtLink{text-decoration:none}
.rt-recent{margin-top:var(--sp-8)}
.rt-recent h2{margin-bottom:var(--sp-3)}
#rtRecentList{border-top:1px solid var(--border)}
.rt-recent-row{display:flex;align-items:baseline;gap:var(--sp-4);width:100%;min-height:52px;padding:var(--sp-3) var(--sp-1);
  border:0;border-bottom:1px solid var(--border);background:none;color:var(--text);font:inherit;text-align:left}
.rt-recent-row:hover{background:var(--hover)}
.rt-recent-row strong{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-family:var(--display);font-size:var(--fs-md);font-weight:600}
.rt-recent-row span,.rt-recent-empty{color:var(--muted);font-size:var(--fs-xs)}
.rt-recent-empty{padding:var(--sp-6);border-bottom:1px solid var(--border);text-align:center}

#view-chat{background:var(--paper)}
#msgs{max-width:820px;padding-top:var(--sp-6)}
.msg.ai .bub{max-width:68ch;border:1px solid var(--border);border-radius:var(--r-xs) var(--r-md) var(--r-md) var(--r-md);
  background:var(--surface);font-family:var(--serif);font-size:var(--fs-md);line-height:1.85;box-shadow:none}
.msg.user .bub{border-radius:var(--r-md) var(--r-md) var(--r-xs) var(--r-md)}
.msg.ai .refs{display:flex;flex-wrap:wrap;gap:var(--sp-2);max-width:68ch;padding:var(--sp-2) 0}
.msg.ai .ref-chip{min-height:30px;padding:var(--sp-1) var(--sp-3);border-radius:var(--r-full);background:var(--surface)}
.rag-error{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:32px;padding:var(--sp-1) var(--sp-3);
  border:1px solid var(--alert);border-radius:var(--r-full);background:var(--surface);color:var(--alert);font-weight:600}
.rag-error svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
#composer{max-width:820px;padding-top:var(--sp-3)}
.c-box{border-radius:var(--r-md);background:var(--surface);box-shadow:none}
#send{min-width:44px;width:44px;height:44px;flex-basis:44px;border-radius:var(--r-full)}
.chip-btn,.c-tools select{border-radius:var(--r-full);background:var(--surface)}
#advPanel,#scopePanel{border-radius:var(--r-md);background:var(--surface);box-shadow:none}
.rt-p{min-height:40px;padding:var(--sp-2) var(--sp-3);border:1px solid var(--hall-thinktank);
  border-radius:var(--r-full);background:var(--surface)}
.rt-card,.rt-syn{box-shadow:none}
.bd-list{border-top:1px solid var(--border)}
.bd-seal{border-radius:0;color:var(--stamp);border-color:var(--stamp);font-family:var(--display)}
.bd-post.op{padding-left:var(--sp-4);border-left:0;background:var(--paper-2)}
.bd-post-body{font-family:var(--serif);line-height:1.8}
.bd-announce{border-color:var(--hall-thinktank);color:var(--hall-thinktank)}
.citation{border:1px solid var(--border);border-radius:var(--r-sm)}
.prof-toc a{border-left:0;border-bottom:2px solid transparent;border-radius:0}
.prof-toc a.on{border-bottom-color:var(--accent)}
.prof-doc{font-family:var(--serif)}
.prof-doc p{font-size:calc((var(--fs-md) + var(--fs-lg))/2);line-height:1.8}
.prof-doc blockquote{border:1px solid var(--gold);border-radius:var(--r-sm);background:var(--paper-2)}

/* 蒸餾精靈 */
.modal-card.wiz{background:var(--paper)}
.wiz-head,.wiz-foot{background:var(--surface)}
.wiz-steps li{font-size:var(--fs-sm)}
.mat{min-height:48px;padding:var(--sp-3);border-color:var(--border);background:var(--surface)}
.asp{min-height:56px;padding:var(--sp-3);border-radius:var(--r-sm);background:var(--surface)}
.cost-box{padding:var(--sp-4);border-color:var(--border);border-radius:var(--r-sm);background:var(--surface)}

/* 寫作室 */
.wr-shell{background:var(--paper);border-color:var(--border)}
.wr-side,.wr-cite-panel{background:var(--surface)}
.wr-row{padding:var(--sp-1);border:1px solid transparent;background:var(--surface)}
.wr-row:has(.wr-item.on){border-color:var(--border);background:var(--hover)}
.wr-editor{background:var(--paper-2)}
#wrBody{background:var(--paper-2);padding:var(--sp-8) max(var(--sp-4),calc((100% - 68ch)/2));
  font-size:calc((var(--fs-md) + var(--fs-lg))/2);line-height:1.85}
.wr-preview{background:var(--paper-2);font-family:var(--serif);line-height:1.85}
.wr-preview p,.wr-preview li{font-size:var(--fs-md);line-height:1.85}
.wr-preview li{padding-left:var(--sp-6);text-indent:calc(var(--sp-6) * -1)}
.wr-ai-bar .chip-btn,.wr-cite-actions .chip-btn{min-height:40px}
.wr-ai-out{border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow-1)}
.wr-ai-body{font-family:var(--serif);line-height:1.8}

/* 我的:個人書架、帳號、站務 */
.ps-privacy{max-width:68ch;margin-inline:auto}
.ps-row{display:grid;grid-template-columns:minmax(0,1fr) max-content max-content max-content;align-items:center;
  gap:var(--sp-3);min-height:60px;padding:var(--sp-3) var(--sp-1);border-bottom:1px solid var(--border-soft)}
.ps-row:hover{background:var(--hover)}
.ps-row .f{font-family:var(--serif);font-size:var(--fs-sm)}
.ps-row .act{justify-self:end}
.manage-card{width:min(920px,96vw);max-width:920px}
.manage-card .wiz-body{background:var(--paper)}
.manage-card .mg-sec{padding:var(--sp-6);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface)}
.manage-card .mg-row{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));align-items:end}
.role-chip{min-height:32px;padding:var(--sp-1) var(--sp-8) var(--sp-1) var(--sp-3);border:1px solid var(--border);
  border-radius:var(--r-full);background-color:var(--surface);color:var(--text);font-size:var(--fs-xs);font-weight:600}
.role-chip.admin{border-color:var(--ink-deep);background-color:var(--ink-deep);color:var(--on-ink)}
.role-chip.researcher{border-color:var(--gold)}
.mg-user{min-height:52px}
.mg-provider{background:var(--surface)}

/* Modal、toast、空狀態 */
.modal{backdrop-filter:none}
.modal-card{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-3)}
.modal-actions .no,.modal-actions .btn-pri{min-height:44px}
.modal .ico-btn{width:44px;height:44px;border-radius:var(--r-full)}
.empty{padding:var(--sp-12);background:var(--paper-2)}
.empty-ic svg{width:44px;height:44px;color:var(--gold)}
.empty-t{font-family:var(--display);font-size:var(--fs-lg);color:var(--accent)}
.empty-d{font-size:var(--fs-sm);line-height:1.8}

@media(max-width:900px){
  #view-review .v-pad,#view-upload .v-pad,#view-advisors .v-pad,#view-board .v-pad,#view-personal .v-pad{
    padding:var(--sp-4)}
  .manage-card .mg-row{grid-template-columns:1fr}
  .ps-row{grid-template-columns:minmax(0,1fr) auto}
  .ps-row .d{grid-column:1}
  .ps-row .act,.ps-row .mg-actions{grid-column:2}
  .rt-setup{grid-template-columns:1fr}
  .rt-summary{border-top:1px solid var(--border);border-left:0}
}
@media(max-width:1200px){
  .tx-shell{grid-template-columns:minmax(260px,.75fr) minmax(0,1.25fr);grid-template-rows:minmax(0,1fr) auto}
  .tx-templates{grid-column:1/-1;overflow:visible;flex-direction:row;align-items:center;border-top:1px solid var(--border);
    border-left:0;padding-block:var(--sp-4)}
  .tx-templates .tx-panel-head{flex:1;margin:0}
  .tx-templates .tx-panel-head p{display:none}
  .tx-templates > .chip-btn{width:auto;white-space:nowrap}
}
@media(max-width:768px){
  #mhead{min-height:58px;padding:var(--sp-3) var(--sp-4)}
  #mtitle{font-size:var(--fs-2xl)}
  .tabs-ul{gap:var(--sp-4);overflow-x:auto}
  .rd-head.tabs-ul{padding:var(--sp-2) var(--sp-3)}
  .tabs-ul li{flex:0 0 auto}
  .pending-card .row{align-items:stretch}
  .pending-card .row select,.pending-card .row input{flex:1 1 100%}
  .advisor-card{padding:var(--sp-4)}
  .adv-manual-form{grid-template-columns:1fr}
  .adv-manual-content,.adv-manual-add{grid-column:1}
  .rt-page{padding:var(--sp-4)}
  .rt-main,.rt-summary{padding:var(--sp-4)}
  .rt-section-head,.rt-recent-row{align-items:flex-start;flex-direction:column;gap:var(--sp-1)}
  .msg.ai .bub{max-width:100%}
  .ps-row{grid-template-columns:1fr}
  .ps-row .d,.ps-row .act,.ps-row .mg-actions{grid-column:1;justify-self:start}
  .modal-card{padding:var(--sp-4)}
  .tx-shell{display:block;overflow-y:auto}
  .tx-create,.tx-ledger,.tx-templates{overflow:visible;padding:var(--sp-4)}
  .tx-create{border-right:0;border-bottom:1px solid var(--border)}
  .tx-ledger{padding-inline:var(--sp-4)}
  .tx-templates{display:flex;flex-direction:column;align-items:stretch}
  .tx-templates > .chip-btn{width:100%}
  #view-taxonomy .mg-zone{grid-template-columns:minmax(0,1fr)}
  #view-taxonomy .mg-zone-actions{justify-self:end}
  #view-taxonomy .mg-zone-subs{padding-left:0}
}
@media(hover:none){
  .bd-member button,.cv,.nv,.drop,.mini-add,.rv-choices label,.sug button,.rt-p,.wr-item,
  details.sec > summary,.pick-it,.s-legal,.mg-menu button,.mg-menu a,
  .auth-card button,.auth-lang a,.auth-signup a,.ok-modal a,.scope-mode,button.ref-chip,
  .src-chip button,.hall-go,.home-recent-row,.brand,.tabs-ul li button,.rd-pager > button,
  .role-chip,#mLawTpl,#mIpeTpl,.ok,.no,.btn-pri,.pill-read,.ico-btn,.chip-btn,.zt-item,
  .mg-actions > summary,.mg-d > summary,.wiz-steps li button,#send,#rtLink,#rtGo,.rt-cost{min-height:44px}
  .src-chip button,.mini-add,#setBtn,#meBtn,#send,.mg-actions > summary{min-width:44px}
  .zchip,.act button,.icon-btn{position:relative}
  .zchip::before,.act button::before,.icon-btn::before{content:"";position:absolute}
  .zchip::before{inset:-12px -5px}
  .act button::before{inset:-14px -3px}
  .icon-btn::before{inset:-10px}
  .bd-post-act{gap:10px}
  :is(#q,#rtQ,#mPContent,#searchBox,#readingSearch,.c-tools select,.row input,.row select,.rv-edit select,.rv-pick,.ct-facets select,
    .modal-card input:not([type=checkbox]):not([type=radio]),.modal-card select,.modal-card textarea,
    .mg-d input,.mg-d select,.mg-d textarea,.fld input,.fld select,.pick-row input,
    #view-taxonomy .mg-field input,#view-taxonomy .mg-field select,
    .adv-toolbar select){min-height:44px}
}

/* ══ v3.87 導覽軌 + 館內分頁列 ═══════════════════════════════════════════
   兩層各佔一個固定位置:館在左軌(84px),館內頁在頁首下方的分頁列。
   DOM 不變 —— 軌上的四顆館鈕就是原本四個 details 的 summary;分組內容由
   app.js 搬到 #hallTabs / #chatSide,留在軌上的東西一律不顯示。 */
#side .brand{justify-content:center;margin-bottom:var(--sp-4)}
#side .b-txt{display:none}
#side .s-scroll{align-items:center;gap:var(--sp-1)}
#sideStats{display:none}
#side details.sec > *:not(summary){display:none}
#side .s-scroll > .nv,#side summary.s-label{display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:var(--sp-1);width:64px;padding:var(--sp-2) var(--sp-1);
  border-radius:var(--r-md);font-family:var(--sans);font-size:var(--fs-2xs);font-weight:400;
  letter-spacing:.06em;line-height:1.2;text-align:center;color:var(--on-ink-muted);
  list-style:none;cursor:pointer}
#side summary.s-label::-webkit-details-marker{display:none}
#side details.sec > summary::before{display:none}     /* 軌上不再開合,揭露三角就是謊言 */
#side .s-scroll > .nv:hover,#side summary.s-label:hover{background:var(--hover-on-ink);color:var(--on-ink)}
#side .s-scroll > .nv.on,#side summary.s-label.on{background:var(--active-on-ink);color:var(--on-ink)}
#side .s-scroll > .nv.on::before{display:none}
#side .nv-ic{width:22px;height:22px;color:inherit}
#side .nv-ic svg{width:22px;height:22px;flex:0 0 22px}   /* 基底的 flex-basis:16px 會壓過 width */
#side .s-foot{flex-direction:column;gap:var(--sp-1);width:100%;padding:var(--sp-2) 0 0;line-height:1.4}
#side .s-foot [aria-hidden]{display:none}

/* 館內分頁列:沿用 .tabs-ul 底線頁籤,內容是被搬過來的 nav.s-nav */
#hallTabs{flex:0 0 auto;padding:0 var(--sp-8);overflow-x:auto}
#mhead:has(+ #hallTabs:not([hidden])){border-bottom-color:transparent}
#hallTabs .s-nav{flex-direction:row;align-items:flex-end;gap:var(--sp-6)}
/* 高度靠 padding 撐(觸控 44px 由 @media(hover:none) 的 .nv 規則統一給,
   在這裡再寫一次 min-height 會反過來蓋掉那條覆寫)*/
#hallTabs .nv{align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-1);
  border-radius:0;border-bottom:2px solid transparent;
  color:var(--muted);font-size:var(--fs-sm);white-space:nowrap}
#hallTabs .nv:hover{background:transparent;color:var(--text)}
#hallTabs .nv.on{background:transparent}
#hallTabs .nv.on::before{display:none}
#hallTabs .nv[aria-current="page"]{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}
#hallTabs .nv-ic{display:none}
#hallTabs .badge{margin-left:var(--sp-1)}
body[data-view=reading] #hallTabs,body[data-view=log] #hallTabs{background:var(--paper)}

/* 智庫的對話/專案清單:chat 頁的左欄,不進分頁列 */
body[data-view=chat] #view-chat{display:grid;grid-template-columns:280px minmax(0,1fr);
  grid-template-rows:minmax(0,1fr) auto}
#chatSide{grid-row:1 / 3;display:flex;flex-direction:column;gap:var(--sp-1);min-height:0;
  overflow-y:auto;padding:var(--sp-4) var(--sp-3);border-right:1px solid var(--border);
  background:var(--surface)}
#chatSide .btn-new{margin-bottom:var(--sp-2)}

/* 手機:導覽軌落到底部五格(門廳 + 四館),分頁列橫向捲動 */
@media (max-width:768px){
  #side{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:50;width:auto;height:auto;
    flex-direction:row;align-items:stretch;gap:0;min-height:56px;
    padding:0 0 env(safe-area-inset-bottom);border-right:0;border-top:1px solid var(--line-on-ink)}
  #side .brand,#side .s-foot{display:none}
  #side .s-scroll{flex-direction:row;align-items:stretch;gap:0;width:100%;overflow:visible}
  #side .s-scroll > *{flex:1 1 0;min-width:0}
  #side .s-scroll > details.sec{display:flex}
  #side .s-scroll > details.sec > summary{flex:1}
  #side .s-scroll > .nv,#side summary.s-label{width:auto;min-height:56px;border-radius:0;
    white-space:nowrap;overflow:hidden}
  #main{padding-bottom:calc(56px + env(safe-area-inset-bottom))}
  #hallTabs{padding:0 var(--sp-4)}
  #composer{padding-bottom:var(--sp-3)}
  #toast{bottom:calc(66px + env(safe-area-inset-bottom))}
  body[data-view=chat] #view-chat{grid-template-columns:minmax(0,1fr);
    grid-template-rows:auto minmax(0,1fr) auto}
  #chatSide{grid-row:auto;max-height:32vh;border-right:0;border-bottom:1px solid var(--border)}
}
