:root{
  --ink:#0f172a;--sub:#64748b;--line:#e2e8f0;--blue:#1d4ed8;--bg:#eef2f7;
  --p0:#dc2626;--p1:#ea580c;--p2:#2563eb;--p3:#94a3b8;
  --email:#2563eb;--wechat:#16a34a;--meeting:#d97706;--file:#7c3aed;--system:#dc2626;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--ink);font-family:"Microsoft JhengHei","Noto Sans TC","PingFang TC",system-ui,sans-serif;font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--blue);text-decoration:none}
button{font-family:inherit}

/* ---------- top bar ---------- */
.topbar{height:56px;background:#0b1220;color:#fff;display:flex;align-items:center;gap:18px;padding:0 16px;position:sticky;top:41px;z-index:20}
.brand{font-weight:700;letter-spacing:.5px;font-size:15px;white-space:nowrap}
.brand span{color:#93c5fd;font-weight:400;font-size:12px;margin-left:6px}
.tabs{display:flex;gap:4px;align-items:center;overflow-x:auto}
.tabs button,.tabs a{background:transparent;border:0;color:#cbd5e1;font-size:13px;padding:7px 12px;border-radius:7px;cursor:pointer;white-space:nowrap;text-decoration:none}
.tabs button:hover,.tabs a:hover{background:rgba(255,255,255,.08);color:#fff}
.tabs button.active{background:#1d4ed8;color:#fff}
.spacer{flex:1}
.env{font-size:11px;color:#94a3b8;border:1px solid #334155;border-radius:999px;padding:3px 10px;white-space:nowrap}

/* ---------- layout ---------- */
.app{display:grid;grid-template-columns:264px 1fr 430px;height:calc(100vh - 127px);overflow:hidden}
.pane{overflow-y:auto;background:#fff;border-right:1px solid var(--line)}
.pane.list{border-right:1px solid var(--line)}
.pane.detail{border-right:0;background:#fbfcfe}
.pane-head{position:sticky;top:0;background:#fff;border-bottom:1px solid var(--line);padding:10px 12px;z-index:5}

/* ---------- left ---------- */
.side{padding:12px}
.side h4{margin:14px 0 6px;font-size:11.5px;letter-spacing:1px;color:#94a3b8;font-weight:700}
.side h4:first-child{margin-top:0}
.fitem{display:flex;justify-content:space-between;align-items:center;width:100%;background:transparent;border:0;border-radius:7px;padding:7px 9px;font-size:13px;color:#334155;cursor:pointer;text-align:left}
.fitem:hover{background:#f1f5f9}
.fitem.on{background:#e0e7ff;color:#1e3a8a;font-weight:700}
.fitem .n{font-size:11.5px;color:#94a3b8;font-weight:400}
.fitem.on .n{color:#1d4ed8}
.proj-item{padding-left:9px}
.proj-item.l1{padding-left:22px}
.proj-item.l2{padding-left:35px;font-size:12px}

/* ---------- list ---------- */
.row{display:block;width:100%;text-align:left;background:#fff;border:0;border-bottom:1px solid #eef2f7;border-left:3px solid transparent;padding:10px 13px;cursor:pointer}
.row:hover{background:#f8fafc}
.row.on{background:#eff6ff;border-left-color:var(--blue)}
.r-top{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--sub)}
.src{font-size:10.5px;border-radius:4px;padding:1px 6px;color:#fff;white-space:nowrap}
.src.email{background:var(--email)}.src.wechat{background:var(--wechat)}
.src.meeting{background:var(--meeting)}.src.file{background:var(--file)}
.src.system{background:var(--system)}
.r-top .who{font-weight:700;color:#334155}
.r-top .time{margin-left:auto;font-variant-numeric:tabular-nums}
.r-sub{font-size:13.5px;font-weight:700;margin:3px 0 1px;color:#0f172a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.r-txt{font-size:12px;color:var(--sub);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.r-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px;align-items:center}
.sev{font-size:10.5px;font-weight:800;color:#fff;border-radius:4px;padding:1px 6px;letter-spacing:.5px}
.sev.P0{background:var(--p0)}.sev.P1{background:var(--p1)}.sev.P2{background:var(--p2)}.sev.P3{background:var(--p3)}
.tag{font-size:10.5px;background:#f1f5f9;border:1px solid var(--line);border-radius:4px;padding:1px 6px;color:#475569}
.tag.p{background:#e0e7ff;border-color:#c7d2fe;color:#1e3a8a}
.tag.ok{background:#dcfce7;border-color:#86efac;color:#166534}
.conf{font-size:10px;color:#94a3b8;margin-left:auto;font-variant-numeric:tabular-nums}
.empty{padding:40px 20px;text-align:center;color:#94a3b8;font-size:13px}

/* ---------- detail ---------- */
.d{padding:16px 18px 60px}
.d h2{font-size:17px;margin:0 0 6px;line-height:1.45}
.d-meta{font-size:12px;color:var(--sub);display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.d-body{background:#fff;border:1px solid var(--line);border-radius:10px;padding:13px 15px;font-size:13.5px;line-height:1.9;white-space:pre-wrap}
.d-attach{margin-top:8px;font-size:12px;color:#475569}
.ai{margin-top:14px;border:1px solid #c7d2fe;background:#f5f7ff;border-radius:10px;padding:13px 15px}
.ai-t{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;color:#1e3a8a;margin-bottom:10px}
.ai-t .badge{font-size:10px;font-weight:400;background:#e0e7ff;color:#3730a3;border-radius:999px;padding:1px 8px}
.grid4{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.cell{background:#fff;border:1px solid #e0e7ff;border-radius:8px;padding:8px 10px}
.cell label{display:block;font-size:10.5px;color:#94a3b8;margin-bottom:1px}
.cell b{font-size:13px}
.cell small{display:block;font-size:10.5px;color:#94a3b8;font-variant-numeric:tabular-nums}
.ev{margin-top:10px;border-left:3px solid #818cf8;padding:4px 10px;font-size:12px;color:#3730a3;background:#eef2ff;border-radius:0 6px 6px 0}
.issue{margin-top:12px;border:1px solid #fed7aa;background:#fffbf5;border-radius:10px;padding:12px 14px}
.issue h5{margin:0 0 6px;font-size:12.5px;color:#9a3412}
.issue ol{margin:4px 0 0;padding-left:20px;font-size:12.5px}
.issue .meta2{font-size:11.5px;color:#94a3b8;margin-top:6px}
.act{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.btn{border:1px solid var(--blue);background:var(--blue);color:#fff;border-radius:7px;padding:7px 13px;font-size:12.5px;cursor:pointer}
.btn.ghost{background:#fff;color:#1d4ed8}
.btn.warn{background:#fff;color:#b45309;border-color:#fcd34d}
.btn:disabled{opacity:.5;cursor:default}
.field{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px;color:#475569}
.field select{flex:1;padding:6px 8px;border:1px solid var(--line);border-radius:7px;background:#fff;font-size:12.5px}
.fb{margin-top:12px;font-size:11.5px;color:#64748b;border-top:1px dashed var(--line);padding-top:8px}
.fb div{margin:2px 0}
.fb b{color:#b45309}

/* ---------- status bar ---------- */
.status{position:fixed;left:0;right:0;bottom:0;height:30px;background:#0b1220;color:#94a3b8;font-size:11.5px;display:flex;align-items:center;gap:16px;padding:0 14px;z-index:30}
.status b{color:#e2e8f0;font-weight:600}
.status .dot{width:6px;height:6px;border-radius:50%;background:#22c55e;display:inline-block;margin-right:5px}

/* ---------- projects / spec ---------- */
.doc{max-width:940px;margin:0 auto;padding:28px 24px 80px}
.doc h1{font-size:22px;margin:0 0 6px}
.doc h2{font-size:17px;margin:30px 0 8px;padding-left:10px;border-left:4px solid var(--blue)}
.doc p{font-size:14px;color:#334155}
.doc table{width:100%;border-collapse:collapse;font-size:12.5px;background:#fff;margin:10px 0}
.doc th{background:#1e293b;color:#fff;text-align:left;padding:8px 10px;font-size:12px}
.doc td{padding:8px 10px;border-bottom:1px solid #eef2f7;vertical-align:top}
.doc tr:nth-child(even) td{background:#f8fafc}
.tree-row{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:10px 12px;margin:6px 0}
.tree-row.l1{margin-left:22px}.tree-row.l2{margin-left:44px}
.tree-row .nm{font-weight:700;font-size:13.5px}
.tree-row .id{font-size:10.5px;color:#94a3b8;font-family:Consolas,monospace}
.tree-row .meta{margin-left:auto;display:flex;gap:6px;align-items:center;font-size:11.5px;color:#64748b}
.st{border-radius:999px;padding:1px 9px;font-size:11px;border:1px solid}
.st.ok{color:#166534;border-color:#86efac;background:#f0fdf4}
.st.warn{color:#92400e;border-color:#fcd34d;background:#fffbeb}
.st.hot{color:#991b1b;border-color:#fca5a5;background:#fef2f2}

/* ---------- misc ---------- */
.toast{position:fixed;bottom:44px;left:50%;transform:translateX(-50%) translateY(20px);background:#0f172a;color:#fff;font-size:13px;padding:9px 18px;border-radius:999px;opacity:0;pointer-events:none;transition:.25s;z-index:50}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.hide{display:none!important}
.mob{display:none}
@media (max-width:1080px){ .mob{display:inline-block} }
@media (max-width:1080px){
  .app{grid-template-columns:220px 1fr}
  .pane.detail{display:none}
  .app.show-detail .pane.detail{display:block;position:fixed;inset:97px 0 30px 0;z-index:15}
  .app.show-detail .pane.list,.app.show-detail .pane.side{display:none}
}
@media (max-width:720px){
  .app{grid-template-columns:1fr}
  .pane.side{display:none}
}

/* ---------- 訊息單元（一封郵件 → N 件事） ---------- */
.units{margin-top:12px;border:1px solid #e2e8f0;border-radius:10px;padding:12px 14px;background:#fff}
.u-title{font-size:12.5px;font-weight:700;color:#334155;margin-bottom:8px}
.u-hint{font-weight:400;color:#94a3b8;font-size:11px;margin-left:8px}
.u{display:flex;gap:8px;align-items:flex-start;padding:6px 0;border-top:1px dashed #eef2f7;font-size:12.5px}
.u:first-of-type{border-top:0}
.u-t{flex:0 0 auto;font-size:10.5px;font-weight:700;color:#fff;border-radius:4px;padding:1px 7px;margin-top:1px}
.u-t.ask{background:#1d4ed8}.u-t.commit{background:#0d9488}.u-t.decision{background:#7c3aed}
.u-t.risk{background:#dc2626}.u-t.state{background:#94a3b8}
.u-x{flex:1;color:#334155}
.u-d{flex:0 0 auto;font-size:10.5px;color:#b45309;background:#fffbeb;border:1px solid #fcd34d;border-radius:4px;padding:0 6px}

/* ---------- 專案全景 ---------- */
.pano{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:18px 20px;margin-top:6px}
.pano-top{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:baseline;border-bottom:1px solid #eef2f7;padding-bottom:10px}
.pano .id{font-size:10.5px;color:#94a3b8;font-family:Consolas,monospace}
.status-line{margin:10px 0 4px;font-size:13.5px;color:#0f172a;background:#f8fafc;border-left:3px solid #1d4ed8;border-radius:0 6px 6px 0;padding:8px 12px}
.pano h4{font-size:12.5px;margin:18px 0 8px;color:#334155}
.pitem{display:grid;grid-template-columns:26px 1fr auto;gap:8px;align-items:baseline;padding:8px 0;border-bottom:1px solid #f1f5f9}
.rank{width:22px;height:22px;border-radius:50%;background:#e0e7ff;color:#1e3a8a;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.ptxt{font-size:13px;color:#0f172a}
.pscore{font-size:12px;font-weight:700;color:#1d4ed8;font-variant-numeric:tabular-nums}
.pwhy{grid-column:2 / 4;font-size:11px;color:#94a3b8;margin-top:-2px}
.dec{font-size:12.5px;color:#334155;padding:7px 0;border-bottom:1px solid #f1f5f9}
.ct{margin:6px 0}
.evd{margin-top:10px;font-size:12.5px;background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;padding:9px 12px;color:#78350f}
.evd .muted{color:#a16207}
/* ---------- 站內選單（與文件頁同一套） ---------- */
.sitenav{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.97);border-bottom:1px solid #e2e8f0}
.sitenav .in{height:40px;padding:0 16px;display:flex;gap:16px;align-items:center;font-size:13px;overflow-x:auto;white-space:nowrap}
.sitenav .brand{font-weight:700;margin-right:6px;color:#0f172a}
.sitenav .brand span{color:#94a3b8;font-weight:400;font-size:11.5px;margin-left:6px}
.sitenav a{color:#475569;text-decoration:none;padding-bottom:2px;margin-right:0}
.sitenav a:hover{color:#1d4ed8}
.sitenav a.on{color:#1d4ed8;font-weight:700;border-bottom:2px solid #1d4ed8}