:root{
    /* ── 曦光 · 淺色主題（預設）── */
    --bg:#f6f7f9; --card:#ffffff; --surface:#ffffff;
    --ink:#14161c; --text:#3b414d; --ink-2:#5b6472; --ink-3:#8b92a1; --muted:#8b92a1; --muted-2:#5b6472;
    --line:#e4e7ec; --line-2:#eceef2; --hairline:#eceef2; --table-head:#f1f3f7; --dot-faint:#c7cdd8;
    --grad:linear-gradient(135deg,#6366f1,#22d3ee);
    --grad-120:linear-gradient(120deg,#6366f1,#22d3ee);
    --grad-90:linear-gradient(90deg,#6366f1,#22d3ee);
    --accent-i:#6366f1; --accent-c:#22d3ee; --accent-text:#149cbb;
    --blue:#149cbb; --blue-soft:#e8f5f9;
    --ok:#0ea472; --green:#0ea472; --green-soft:#e3f5ee;
    --warn:#e0870a; --orange:#e0870a; --orange-soft:#fbf0dc;
    --danger:#f43f5e; --red:#f43f5e; --red-soft:#fdeaed;
    --tag:#7b8494; --gray-soft:#f1f3f7;
    --bar-bg:rgba(255,255,255,.72); --sidebar-bg:#ffffff;
    --bar-doing:#6366f1; --bar-todo:#C7C7CC; --bar-done:#0ea472; --bar-late:#f43f5e;
    --glow:radial-gradient(closest-side,rgba(99,102,241,.20),transparent);
    --radius-sm:10px; --radius:15px; --radius-lg:16px;
    --shadow-sm:0 1px 2px rgba(20,22,28,.05),0 2px 8px -4px rgba(20,22,28,.12);
    --shadow-md:0 18px 44px -26px rgba(20,22,28,.42);
    --shadow-lg:0 30px 70px -34px rgba(20,22,28,.5);
    --font-serif:"Noto Serif TC",serif; --font-mono:"Space Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  }
  [data-theme="dark"]{
    /* ── 星軌 · 深色主題 ── */
    --bg:#0d0f16; --card:#11131b; --surface:#11131b;
    --ink:#f2f3f8; --text:#b6bccb; --ink-2:#8a90a2; --ink-3:#7b8194; --muted:#7b8194; --muted-2:#8a90a2;
    --line:#1e222d; --line-2:#262b38; --hairline:#262b38; --table-head:#171a24; --dot-faint:#5a6072;
    --grad:linear-gradient(135deg,#22d3ee,#a855f7);
    --grad-120:linear-gradient(120deg,#22d3ee,#a855f7);
    --grad-90:linear-gradient(90deg,#22d3ee,#a855f7);
    --accent-i:#22d3ee; --accent-c:#a855f7; --accent-text:#c084fc;
    --blue:#c084fc; --blue-soft:rgba(34,211,238,.10);
    --ok:#34d399; --green:#34d399; --green-soft:rgba(52,211,153,.12);
    --warn:#fbbf24; --orange:#fbbf24; --orange-soft:rgba(251,191,36,.12);
    --danger:#fb7185; --red:#fb7185; --red-soft:rgba(251,113,133,.12);
    --tag:#868da0; --gray-soft:#171a24;
    --bar-bg:rgba(17,19,27,.72); --sidebar-bg:#0f1119;
    --bar-doing:#22d3ee; --bar-todo:#4b5364; --bar-done:#34d399; --bar-late:#fb7185;
    --glow:radial-gradient(closest-side,rgba(168,85,247,.24),transparent);
    --shadow-sm:0 1px 2px rgba(0,0,0,.5),0 2px 10px -4px rgba(0,0,0,.6);
    --shadow-md:0 24px 60px -28px rgba(0,0,0,.72);
    --shadow-lg:0 30px 80px -30px rgba(0,0,0,.75);
  }
  *{margin:0;padding:0;box-sizing:border-box}
  [hidden]{display:none!important}
  html,body{height:100%}
  body{background:var(--bg);color:var(--text);
    font-family:"Noto Sans TC",-apple-system,BlinkMacSystemFont,"PingFang TC","Helvetica Neue",sans-serif;
    font-size:14.5px;line-height:1.8;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
    text-rendering:optimizeLegibility;transition:background .25s ease,color .25s ease}
  button,input,select,textarea{font:inherit}
  button:focus-visible,a:focus-visible,[contenteditable="true"]:focus-visible{outline:3px solid color-mix(in srgb,var(--accent-i) 34%,transparent);outline-offset:2px}
  .skip-link{position:fixed;left:12px;top:8px;z-index:999;transform:translateY(-160%);background:var(--ink);color:var(--card);padding:8px 12px;border-radius:8px;text-decoration:none}
  .skip-link:focus{transform:translateY(0)}
  .gate-screen{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;background:var(--bg)}
  .gate-card{width:min(390px,100%);background:var(--card);border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:var(--shadow-lg)}
  .gate-card .wordmark{margin-bottom:20px}
  .gate-card h1{font-family:var(--font-serif);font-size:26px;color:var(--ink);margin-bottom:6px}
  .gate-card p{font-size:13px;color:var(--muted-2);margin-bottom:16px}
  .gate-card label{display:block;font-size:12px;font-weight:700;color:var(--ink);margin-bottom:5px}
  .gate-card input{width:100%;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);padding:10px 12px}
  .gate-card button{width:100%;border:0;border-radius:10px;background:var(--grad);color:#fff;padding:10px 12px;font-weight:700;margin-top:12px;cursor:pointer}
  .gate-error{min-height:22px;color:var(--danger);font-size:12px;margin-top:7px}

  /* ── 毛玻璃頂欄 ── */
  .topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:16px;height:52px;padding:0 22px;
    background:rgba(255,255,255,.72);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);
    border-bottom:1px solid var(--line)}
  .wordmark{font-size:16px;font-weight:700;letter-spacing:-.01em}
  .proj{font-size:12.5px;color:var(--ink-2)}
  .proj b{color:var(--ink);font-weight:600}
  .engine{margin-left:auto;font-size:11.5px;color:var(--ink-2);background:var(--gray-soft);border-radius:99px;padding:4px 12px}
  .engine i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--green);margin-right:6px;vertical-align:1px}

  .gear{margin-left:auto;border:none;background:transparent;font-size:16px;cursor:pointer;padding:4px;border-radius:8px}
  .gear:hover{background:var(--gray-soft)}
  .gear+.engine{margin-left:0}
  .model-sel{margin-left:8px;font-size:12px;border:1px solid var(--line);border-radius:8px;padding:3px 8px;background:var(--gray-soft);color:var(--ink,#222);cursor:pointer;max-width:230px}
  .model-sel:disabled{opacity:.5;cursor:not-allowed}
  .modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.32);z-index:200;display:grid;place-items:center}
  .modal{background:#fff;border-radius:16px;width:min(480px,92vw);padding:22px 24px;box-shadow:0 24px 80px rgba(0,0,0,.25)}
  .modal h3{font-size:16px;font-weight:700;margin-bottom:4px}
  .modal .sub{font-size:12.5px;color:var(--ink-3);margin-bottom:14px}
  .src-opt{display:flex;gap:10px;align-items:flex-start;border:1.5px solid var(--line);border-radius:12px;padding:12px 14px;margin:8px 0;cursor:pointer}
  .src-opt.sel{border-color:var(--blue);background:var(--blue-soft)}
  .src-opt input[type=radio]{margin-top:3px}
  .src-opt .t{font-size:13.5px;font-weight:600}
  .src-opt .d{font-size:12px;color:var(--ink-2)}
  .src-url{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit;font-size:12.5px;margin-top:6px;background:var(--bg)}
  .modal-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:14px}
  .btn-ghost{border:1px solid var(--line);background:#fff;border-radius:var(--radius-sm);padding:8px 16px;font:inherit;font-size:13px;cursor:pointer;color:var(--ink);transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}
  .btn-ghost:hover{border-color:rgba(17,17,26,.18);background:#FAFAFB;box-shadow:var(--shadow-sm)}

  /* ── 模組膠囊 ── */
  .stages{display:flex;gap:4px;align-items:center}
  .stage{font-size:12px;padding:5px 14px;border-radius:99px;color:var(--ink-3);font-weight:500;border:1px solid transparent;background:transparent;cursor:pointer;white-space:nowrap;transition:transform .18s ease,box-shadow .18s ease,background .18s ease,color .18s ease,border-color .18s ease}
  .stage.on{background:var(--ink);color:#fff;cursor:pointer;box-shadow:0 2px 8px rgba(17,17,26,.18)}
  .stage.on2{color:var(--ink-2);cursor:pointer;border:1px solid var(--line);background:#fff}
  .stage.on2:hover{color:var(--ink);border-color:rgba(17,17,26,.16);box-shadow:var(--shadow-sm);transform:translateY(-1px)}

  /* ── 專案總覽：先看風險與下一步，再進工具 ── */
  .home-wrap{max-width:1240px;margin:18px auto 60px;padding:0 24px}
  .home-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:18px}
  .home-kicker{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}
  .home-hero h1{font-family:var(--font-serif);font-size:38px;line-height:1.2;color:var(--ink);margin:5px 0 3px}
  .home-hero p{color:var(--muted-2);font-size:13px}
  .home-primary{border:0;border-radius:12px;background:var(--grad);color:#fff;padding:10px 16px;font-weight:700;cursor:pointer;box-shadow:var(--shadow-sm);white-space:nowrap}
  .home-primary:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}
  .health-grid{display:grid;grid-template-columns:1.3fr repeat(3,1fr);gap:12px;margin-bottom:16px}
  .health-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow-sm)}
  .health-card .k{font-size:11.5px;color:var(--muted);margin-bottom:5px}
  .health-card .v{font-family:var(--font-mono);font-size:26px;line-height:1.2;color:var(--ink);font-weight:700}
  .health-card .s{font-size:11.5px;color:var(--muted-2);margin-top:4px}
  .health-card.health-score{background:linear-gradient(145deg,color-mix(in srgb,var(--accent-i) 12%,var(--card)),var(--card))}
  .health-meter{height:6px;background:var(--line);border-radius:99px;margin-top:12px;overflow:hidden}
  .health-meter span{display:block;height:100%;border-radius:inherit;background:var(--grad)}
  .home-columns{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(290px,.75fr);gap:16px}
  .home-panel{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:var(--shadow-sm)}
  .home-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
  .home-panel-head h2{font-size:16px;color:var(--ink)}
  .risk-count{font-family:var(--font-mono);font-size:11px;color:var(--danger);background:var(--red-soft);padding:3px 8px;border-radius:99px}
  .risk-list{display:grid;gap:10px}
  .risk-card{border:1px solid var(--line);border-left:4px solid var(--danger);border-radius:12px;padding:13px 14px;background:var(--surface)}
  .risk-card.medium{border-left-color:var(--warn)}
  .risk-card.low{border-left-color:var(--ok)}
  .risk-title{font-weight:700;color:var(--ink);line-height:1.5}
  .risk-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:11.5px;color:var(--muted);margin:5px 0 8px}
  .risk-action{font-size:12px;color:var(--muted-2);line-height:1.6}
  .risk-card button{margin-top:9px;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:8px;padding:5px 10px;font-size:12px;cursor:pointer}
  .risk-card button:hover{border-color:var(--accent-i);color:var(--accent-text)}
  .next-list{display:grid;gap:10px;counter-reset:next}
  .next-item{display:grid;grid-template-columns:30px 1fr;gap:9px;align-items:start}
  .next-item::before{counter-increment:next;content:counter(next);display:grid;place-items:center;width:26px;height:26px;border-radius:8px;background:var(--blue-soft);color:var(--accent-text);font-family:var(--font-mono);font-weight:700;font-size:11px}
  .next-item b{display:block;color:var(--ink);font-size:13px;line-height:1.5}
  .next-item span{display:block;color:var(--muted);font-size:11.5px;line-height:1.5}
  .home-all-risks{width:100%;margin-top:14px;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:10px;padding:8px 12px;cursor:pointer}

  /* ── 甘特圖 ── */
  .gantt-wrap{margin:10px 20px 0;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);
    box-shadow:var(--shadow-md);padding:20px 0 12px;height:calc(100vh - 118px);overflow:auto}
  .gantt-head{display:flex;justify-content:space-between;align-items:center;padding:0 24px 12px}
  .gantt-head h2{font-size:18px;font-weight:700;letter-spacing:-.01em}
  .gantt-legend{font-size:11.5px;color:var(--ink-3);display:flex;gap:14px}
  .gantt-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}
  .gantt-svg{display:block;min-width:100%}
  .gantt-anchors{display:flex;gap:18px;align-items:center;padding:0 24px 8px;flex-wrap:wrap}
  .gantt-anchors label{font-size:12px;color:var(--ink-2);display:flex;align-items:center;gap:6px}
  .gantt-anchors input{border:1px solid var(--line);border-radius:7px;padding:4px 8px;font:inherit;font-size:12.5px;background:var(--bg)}
  .gantt-anchors button{border:1px solid var(--line);background:#fff;border-radius:7px;padding:4px 12px;font:inherit;font-size:12px;cursor:pointer;color:var(--ink-2)}
  .gantt-anchors button:hover{background:var(--gray-soft)}
  .gantt-anchors .edited{font-size:11px;color:var(--orange);font-weight:600}
  .gantt-hint{font-size:11.5px;color:var(--ink-3);padding:0 24px 10px}
  .gantt-svg rect.task{cursor:grab}
  .gantt-svg rect.task:active{cursor:grabbing}
  .gantt-svg rect.task-edge{cursor:ew-resize}

  /* ── 分段控制器（Apple segmented control）── */
  .seg-wrap{display:flex;justify-content:center;padding:16px 0 4px}
  .seg{display:flex;background:var(--gray-soft);border-radius:11px;padding:3px;box-shadow:inset 0 1px 2px rgba(17,17,26,.05)}
  .seg button{border:none;background:transparent;font:inherit;font-size:13px;font-weight:500;color:var(--ink-2);
    padding:6px 22px;border-radius:8px;cursor:pointer;transition:.18s ease}
  .seg button:hover{color:var(--ink)}
  .seg button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(17,17,26,.14),0 1px 1px rgba(17,17,26,.06);font-weight:600}

  /* ── 三欄工作區 ── */
  .plan-wrap{display:grid;grid-template-columns:252px 1fr;height:calc(100vh - 118px);margin:10px 20px 0;
    background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;
    box-shadow:var(--shadow-md)}

  .toc{border-right:1px solid var(--line);overflow-y:auto;padding:14px 8px}
  .toc-h{font-size:11px;font-weight:600;letter-spacing:.08em;color:var(--ink-3);padding:6px 12px 4px;text-transform:uppercase}
  .toc a{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:7px 12px;font-size:13px;
    color:var(--ink-2);cursor:pointer;border-radius:8px;margin:1px 0}
  .toc a:hover{background:var(--gray-soft)}
  .toc a.on{background:var(--blue-soft);color:var(--blue);font-weight:600}
  .b{font-size:10.5px;padding:1.5px 8px;border-radius:99px;white-space:nowrap;font-weight:500}
  .b-ok{background:var(--green-soft);color:var(--green)} .b-cond{background:var(--orange-soft);color:var(--orange)}
  .b-est{background:var(--orange-soft);color:var(--orange)} .b-stop{background:var(--gray-soft);color:var(--ink-3)}
  .b-warn{background:var(--red-soft);color:var(--red)}

  .doc{overflow-y:auto;padding:0 44px 90px;position:relative}
  .doc-status{position:sticky;top:0;margin:0 -44px 22px;padding:9px 44px;z-index:5;
    background:rgba(255,255,255,.86);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
    border-bottom:1px solid var(--line);font-size:12px;color:var(--ink-3);display:flex;gap:14px;align-items:center}
  .dot{width:6px;height:6px;border-radius:50%;background:var(--green);display:inline-block;margin-right:5px}
  .doc h1{font-size:26px;font-weight:700;letter-spacing:-.02em;margin:14px 0 4px}
  .doc h2{font-size:18px;font-weight:700;letter-spacing:-.01em;margin:32px 0 10px}
  .doc h3{font-size:15px;font-weight:600;margin:20px 0 6px}
  .doc .meta{font-size:12.5px;color:var(--ink-3);margin-bottom:18px}
  .doc p{margin:8px 0}
  .doc ul,.doc ol{margin:8px 0 8px 22px}
  .doc [contenteditable]{outline:none;border-radius:6px}
  .doc [contenteditable="true"]:hover{background:#F7F9FC}
  .doc [contenteditable="true"]:focus{background:var(--blue-soft);box-shadow:0 0 0 1px rgba(0,113,227,.25)}
  .doc img{max-width:100%;border-radius:10px;border:1px solid var(--line)}
  .posmap{margin:14px 0}
  .posmap svg{width:100%;max-width:620px;display:block;margin:0 auto}
  .persona-face{width:158px;height:196px;border-radius:14px;object-fit:cover;float:right;margin:6px 0 14px 22px;
    border:none;box-shadow:0 4px 18px rgba(0,0,0,.14)}

  /* ── Persona 卡片（照片左側、一人一卡）── */
  .p-card{display:grid;grid-template-columns:200px 1fr;gap:26px;background:#FBFBFD;border:1px solid var(--line);
    border-radius:18px;padding:24px 28px;margin:20px 0;box-shadow:0 4px 22px rgba(0,0,0,.06)}
  .p-photo img{width:100%;height:250px;object-fit:cover;border-radius:14px;box-shadow:0 4px 14px rgba(0,0,0,.12);
    border:none;display:block}
  .p-photo .p-cap{font-size:10.5px;color:var(--ink-3);text-align:center;margin-top:8px}
  .p-rel{margin-top:14px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;text-align:center}
  .p-rel .k{font-size:11px;color:var(--ink-3)}
  .p-rel .v{font-size:15px;font-weight:700;color:var(--orange);letter-spacing:2px}
  .p-head{display:flex;align-items:center;gap:10px;font-size:17.5px;font-weight:700;letter-spacing:-.01em;margin-bottom:2px}
  .p-body h4{font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--blue);margin:15px 0 4px}
  .p-body ul{margin:2px 0 2px 20px}
  .p-body li{margin:2.5px 0}
  @media (max-width:768px){
    .p-card{grid-template-columns:1fr;padding:16px 18px;gap:14px}
    .p-photo img{max-width:170px;height:210px;margin:0 auto}
    .p-photo .p-cap{margin-top:6px}
  }

  /* ── 圖片示意位（標語/賣點配圖：有圖顯圖、沒圖顯提示詞卡）── */
  .img-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:10px 0 16px}
  .img-grid.one{grid-template-columns:1fr;max-width:620px}
  .img-slot{border:1.5px dashed rgba(0,0,0,.16);border-radius:12px;padding:13px 15px;background:#FAFAFC;font-size:12px;color:var(--ink-2)}
  .img-slot .t{font-weight:700;color:var(--ink);font-size:12.5px;margin-bottom:5px}
  .img-slot .st{font-size:11px;color:var(--orange);margin-bottom:6px}
  .img-slot .prompt{font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:11px;background:#fff;border:1px solid var(--line);
    border-radius:8px;padding:8px 10px;color:#3A3A3C;line-height:1.7}
  .img-slot img{width:100%;border-radius:8px;margin-bottom:8px;display:block}
  @media (max-width:768px){.img-grid{grid-template-columns:1fr}}

  /* ── 素材產出（M5：銷售頁區塊圖＋廣告圖，一鍵 Codex 生成）── */
  .mat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:4px 0 8px}
  .mat-card{border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:#fff;
    display:flex;flex-direction:column;gap:8px}
  .mat-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
  .mat-head b{font-size:13px;line-height:1.4}
  .mat-aspect{border:1px solid var(--line);border-radius:7px;padding:3px 6px;font:inherit;font-size:11.5px;background:var(--bg);flex-shrink:0}
  .mat-badge{font-size:11.5px;font-weight:600;display:flex;align-items:center;gap:4px}
  .mat-spin{display:inline-block;animation:matspin 1s linear infinite}
  @keyframes matspin{to{transform:rotate(360deg)}}
  .mat-prompt,.mat-style-ta{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit;font-size:12px;
    background:var(--bg);resize:vertical;height:78px;line-height:1.5}
  .mat-prompt:focus,.mat-style-ta:focus{outline:none;border-color:var(--blue);background:#fff}
  .mat-prev img{width:100%;border-radius:8px;display:block;border:1px solid var(--line)}
  .mat-actions{display:flex;gap:8px;flex-wrap:wrap}
  .mat-actions .btn-ghost,.mat-actions a.btn-ghost{padding:5px 12px;font-size:12px;text-decoration:none;color:var(--ink)}
  @media (max-width:900px){.mat-grid{grid-template-columns:1fr 1fr}}
  @media (max-width:768px){.mat-grid{grid-template-columns:1fr}}

  /* ── 素材：三列式銷售頁瀏覽排版（標題｜Prompt｜圖片，由上而下＝整頁順序）── */
  .mat-rows-head{display:grid;grid-template-columns:172px 1fr 300px;gap:18px;
    font-size:11.5px;font-weight:700;color:var(--ink-3);border-bottom:1px solid var(--line)}
  .mat-rows{margin:0}
  .mat-row{display:grid;grid-template-columns:172px 1fr 300px;gap:18px;padding:18px 0;
    border-bottom:1px solid var(--line);align-items:start}
  .mat-row:last-child{border-bottom:none}
  .mr-title{display:flex;flex-direction:column;gap:7px}
  .mr-idx{width:22px;height:22px;border-radius:50%;background:var(--ink);color:#fff;
    font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
  .mr-title b{font-size:13.5px;line-height:1.45}
  .mr-title .mr-ar{font-size:11px;color:var(--ink-3)}
  .mr-prompt{display:flex;flex-direction:column;gap:8px}
  .mr-prompt .mat-prompt{height:104px}
  .mr-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
  .mr-controls .btn-ghost,.mr-controls a.btn-ghost{padding:5px 12px;font-size:12px;text-decoration:none;color:var(--ink)}
  .mr-img{width:100%}
  .mr-img img{width:100%;border-radius:10px;display:block;border:1px solid var(--line)}
  .mr-ph{width:100%;border:1.5px dashed var(--line);border-radius:10px;background:var(--bg);
    display:flex;align-items:center;justify-content:center;color:var(--ink-3);font-size:12px;text-align:center;padding:10px;box-sizing:border-box}
  @media (max-width:900px){.mat-rows-head,.mat-row{grid-template-columns:140px 1fr 220px}}
  @media (max-width:768px){.mat-rows-head{display:none}.mat-row{grid-template-columns:1fr;gap:10px;padding:16px 0}
    .mr-title{flex-direction:row;align-items:center;flex-wrap:wrap}}

  /* ── 素材：風格與矩陣設定面板 ── */
  .mat-style-head{cursor:pointer;user-select:none}
  .mat-style-head h3{margin:0;font-size:15px}
  .mat-mx-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
  .mat-mx-cell{border:1px solid var(--line);border-radius:10px;padding:8px;background:var(--bg)}
  .mat-mx-cell input{width:100%;border:1px solid var(--line);border-radius:7px;padding:6px 8px;font:inherit;font-size:12px;background:#fff;box-sizing:border-box}
  .mat-mx-cell input.mat-mx-name{font-weight:700;margin-bottom:6px}
  .mat-mx-cell input:focus{outline:none;border-color:var(--blue)}
  @media (max-width:768px){.mat-mx-grid{grid-template-columns:1fr}}

  /* ── 1.9 架構圖（HTML 精準版）── */
  .arch-flow{display:flex;gap:6px;align-items:stretch;margin:12px 0;flex-wrap:wrap}
  .arch-step{flex:1;min-width:118px;background:#FBFBFD;border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:11.5px;line-height:1.55}
  .arch-step b{display:block;font-size:12.5px;margin-bottom:3px}
  .arch-step .d{color:var(--ink-3);font-size:10.5px}
  .arch-arrow{align-self:center;color:var(--ink-3);font-size:14px}
  .arch-stack{max-width:600px;margin:10px 0}
  .arch-sec{border:1px solid var(--line);border-radius:10px;padding:9px 14px;margin:6px 0;background:#fff;
    display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12.5px}
  .arch-sec .src{color:var(--ink-3);font-size:10.5px;white-space:nowrap}
  .arch-sec.hero{background:var(--ink);color:#fff}.arch-sec.hero .src{color:rgba(255,255,255,.6)}
  .arch-sec.cta{background:var(--blue);color:#fff}.arch-sec.cta .src{color:rgba(255,255,255,.7)}
  .arch-kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:10px 0}
  .arch-kpi .k{background:#FBFBFD;border:1px solid var(--line);border-radius:12px;padding:10px 12px;text-align:center}
  .arch-kpi .k b{display:block;font-size:17px;letter-spacing:-.01em}
  .arch-kpi .k span{font-size:11px;color:var(--ink-3)}
  @media (max-width:768px){.arch-kpi{grid-template-columns:1fr 1fr}.arch-flow{flex-direction:column}.arch-arrow{transform:rotate(90deg);align-self:flex-start;margin-left:20px}}

  /* ── 短影音腳本直式卡 ── */
  .vs-card{border:1px solid var(--line);border-radius:14px;margin:14px 0;overflow:hidden;background:#fff}
  .vs-card .vs-h{background:#FAFAFC;padding:10px 16px;font-weight:700;font-size:13.5px;border-bottom:1px solid var(--line);
    display:flex;gap:10px;align-items:center}
  .vs-card table{margin:0;border:none;border-radius:0}
  .vs-card th{width:120px;background:#FBFBFD;font-size:12px;vertical-align:top}
  .doc td img{max-width:130px;max-height:130px;object-fit:contain;background:#fff;display:block}
  .doc table{border-collapse:separate;border-spacing:0;width:100%;margin:12px 0;font-size:13px;
    border:1px solid var(--line);border-radius:10px;overflow:hidden}
  .doc th{text-align:left;font-weight:600;background:#FAFAFC;padding:8px 12px;border-bottom:1px solid var(--line)}
  .doc td{padding:8px 12px;border-bottom:1px solid var(--line)}
  .doc tr:last-child td{border-bottom:none}
  .doc .calc{font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:12.5px;background:#F5F5F7;
    border-radius:10px;padding:12px 16px;margin:10px 0;color:#3A3A3C;line-height:1.8}
  .doc .alert{background:var(--orange-soft);border:1px solid color-mix(in srgb,var(--warn) 30%,transparent);border-radius:10px;padding:12px 16px;margin:12px 0;font-size:13px;color:var(--warn)}
  .doc .alert strong{color:var(--warn)}
  .doc .assume{color:var(--orange);font-size:12px}
  .pass{color:var(--green);font-weight:600}.edge{color:var(--orange);font-weight:600}.fail{color:var(--red);font-weight:600}
  .doc td.pe-price{background:var(--blue-soft);cursor:text;font-weight:600}
  .doc td.pe-price:focus{background:#fff;box-shadow:inset 0 0 0 2px var(--blue)}
  .gap-li{display:flex;gap:12px;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}
  .gap-li b{min-width:130px;color:var(--orange);font-weight:600}

  /* ── 對話修改（右下角浮動，平時收合）── */
  .chat-fab{position:fixed;right:26px;bottom:26px;z-index:90;width:54px;height:54px;border-radius:50%;
    background:var(--blue);color:#fff;border:none;font-size:22px;cursor:pointer;
    box-shadow:0 6px 20px rgba(0,113,227,.4);transition:.2s}
  .chat-fab:hover{transform:scale(1.06)}
  .chat-fab .n{position:absolute;top:-3px;right:-3px;min-width:19px;height:19px;border-radius:99px;
    background:var(--red);color:#fff;font-size:11px;font-weight:700;line-height:19px;padding:0 5px;display:none}
  .chat{position:fixed;right:26px;bottom:92px;z-index:90;width:370px;height:min(540px,calc(100vh - 140px));
    display:flex;flex-direction:column;background:#FBFBFD;border:1px solid var(--line);border-radius:18px;
    box-shadow:0 18px 50px rgba(0,0,0,.18);overflow:hidden;
    transform-origin:bottom right;transition:.18s;opacity:1}
  .chat.closed{opacity:0;transform:scale(.9) translateY(8px);pointer-events:none}
  .chat-h{padding:13px 16px;border-bottom:1px solid var(--line);font-weight:600;font-size:13.5px;
    display:flex;justify-content:space-between;align-items:center;background:#fff}
  .chat-x{border:none;background:var(--gray-soft);width:24px;height:24px;border-radius:50%;cursor:pointer;
    color:var(--ink-2);font-size:13px;margin-left:8px}
  .chat-mode{font-size:11px;color:var(--ink-2);background:var(--gray-soft);border-radius:99px;padding:2px 10px;font-weight:500}
  .msgs{flex:1;overflow-y:auto;padding:16px 14px;display:flex;flex-direction:column;gap:8px}
  .msg{max-width:88%;padding:8px 13px;border-radius:18px;font-size:13px;line-height:1.55}
  .m-user{align-self:flex-end;background:var(--blue);color:#fff;border-bottom-right-radius:5px}
  .m-sys{align-self:flex-start;background:#E9E9EB;color:var(--ink);border-bottom-left-radius:5px}
  .m-sys b{font-weight:600}
  .m-sys .copy{display:inline-block;margin-top:7px;font-size:12px;color:var(--blue);cursor:pointer;font-weight:600}
  .queue-note{align-self:stretch;font-size:11.5px;color:var(--ink-3);background:var(--gray-soft);border-radius:10px;padding:8px 12px;line-height:1.6}
  .chat-in{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line);background:#fff}
  .chat-in textarea{flex:1;resize:none;height:38px;max-height:100px;border:1px solid var(--line);border-radius:19px;
    padding:8px 14px;font:inherit;font-size:13px;background:var(--bg)}
  .chat-in textarea:focus{outline:none;border-color:var(--blue);background:#fff}
  .send{align-self:flex-end;width:38px;height:38px;border-radius:50%;background:var(--blue);color:#fff;border:none;
    font-size:16px;cursor:pointer;flex-shrink:0}
  .send:hover{filter:brightness(1.1)}

  /* ── Brief 表單 ── */
  .brief-wrap{max-width:820px;margin:6px auto 70px;padding:0 24px}
  .brief-head{display:flex;justify-content:space-between;align-items:flex-end;margin:14px 0 16px}
  .brief-head h1{font-size:24px;font-weight:700;letter-spacing:-.02em}
  .completeness{font-size:12.5px;color:var(--ink-2)}
  .completeness b{color:var(--green);font-size:17px;font-weight:700}
  .fs{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px 24px;margin-bottom:14px;
    box-shadow:var(--shadow-sm)}
  .fs h3{font-size:15px;font-weight:700;margin-bottom:4px}
  .fs .sub{font-size:12px;color:var(--ink-3);margin-bottom:12px}
  .row{display:grid;grid-template-columns:180px 1fr;gap:12px;align-items:start;padding:9px 0;border-bottom:1px solid var(--line)}
  .row:last-child{border-bottom:none}
  .row label{font-size:13px;color:var(--ink-2);padding-top:7px}
  .row label .req{color:var(--red);margin-left:2px}
  .row input,.row select{width:100%;border:1px solid var(--line);border-radius:9px;padding:8px 12px;font:inherit;
    font-size:13.5px;background:var(--bg)}
  .row input:focus,.row select:focus{outline:none;border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px rgba(0,113,227,.12)}
  .hint{font-size:11.5px;color:var(--ink-3);margin-top:4px}
  .fee-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}
  .fee-grid .row{grid-template-columns:125px 1fr}
  .brief-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:10px}
  .btn-save{padding:11px 20px;border:1px solid var(--blue);border-radius:var(--radius-sm);background:#fff;color:var(--blue);
    font:600 14px var(--font-sans,system-ui);cursor:pointer;transition:background .15s,color .15s,box-shadow .15s}
  .btn-save:hover,.btn-save.is-dirty{background:var(--blue-soft);box-shadow:0 0 0 3px rgba(0,113,227,.1)}
  .btn-save:focus-visible{outline:3px solid rgba(0,113,227,.22);outline-offset:2px}
  .btn-save.is-saving{cursor:progress;opacity:.72}
  .brief-save-status{font-size:11.5px;color:var(--green);font-weight:600;font-variant-numeric:tabular-nums}
  .btn-primary{background:var(--blue);color:#fff;border:none;border-radius:var(--radius-sm);padding:12px 26px;font-size:14px;
    cursor:pointer;font-weight:600;letter-spacing:-.01em;box-shadow:0 1px 2px rgba(0,113,227,.32),0 5px 14px rgba(0,113,227,.24);
    transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}
  .btn-primary:hover{filter:brightness(1.05);box-shadow:0 2px 4px rgba(0,113,227,.36),0 9px 22px rgba(0,113,227,.3);transform:translateY(-1px)}
  .btn-primary:active{transform:translateY(0);filter:brightness(.98)}
  .brief-note{flex-basis:100%;font-size:12px;color:var(--ink-3)}

  /* ── 動態試算儀錶板 ── */
  .calc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:12px 0}
  .cg{background:var(--bg);border-radius:12px;padding:12px 14px}
  .cg b{display:block;font-size:12px;color:var(--ink-2);margin-bottom:8px;font-weight:600}
  .cg label{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;color:var(--ink-2);padding:3px 0}
  .cg input{width:96px;border:1px solid var(--line);border-radius:7px;padding:5px 8px;font:inherit;font-size:13px;
    text-align:right;background:#fff}
  .cg input:focus{outline:none;border-color:var(--blue)}
  .tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:6px 0 10px}
  .tile{background:linear-gradient(155deg,#26262B,#141416);color:#fff;border-radius:var(--radius);padding:15px 17px;box-shadow:var(--shadow-md)}
  .tile.warn{background:linear-gradient(155deg,#E5324A,#C1000F)}
  .tile .t-k{font-size:11.5px;opacity:.75;font-weight:500}
  .tile .t-v{font-size:24px;font-weight:700;letter-spacing:-.02em;margin:3px 0 1px;font-variant-numeric:tabular-nums}
  .tile .t-s{font-size:11px;opacity:.7;line-height:1.5}
  .calc-foot{font-size:12.5px;color:var(--ink-2);line-height:1.9;border-top:1px solid var(--line);padding-top:10px}
  .calc-foot b{font-variant-numeric:tabular-nums}
  @media (max-width:768px){.calc-grid,.tiles{grid-template-columns:1fr 1fr}}

  .data-table{border-collapse:collapse;width:100%;font-size:13px;background:#fff}
  .data-table th{text-align:left;font-weight:600;background:#FAFAFC;padding:7px 10px;border:1px solid var(--line);font-size:12px}
  .data-table td{padding:6px 10px;border:1px solid var(--line);font-variant-numeric:tabular-nums}
  .data-table td[contenteditable]:focus{outline:none;background:var(--blue-soft)}
  .data-table td.del{color:var(--red);cursor:pointer;text-align:center;width:36px}

  .sens-charts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0 4px}
  .sens-charts svg{width:100%;background:#fff;border:1px solid var(--line);border-radius:12px}
  .sens-roas-control{display:inline-flex;align-items:center;gap:6px;margin-left:14px;font-size:12px;font-weight:700;color:var(--ink-2)}
  .sens-roas-control input{width:68px;border:1px solid var(--blue);border-radius:7px;padding:4px 7px;background:#fff;
    color:var(--ink);font:700 13px var(--font-mono,monospace);text-align:right}
  .sens-roas-control input:focus{outline:3px solid rgba(0,113,227,.16);outline-offset:1px}
  .sens-ad-rate{display:inline-block;margin-left:6px;padding:4px 8px;border-radius:999px;background:var(--blue-soft);color:var(--blue);font-size:11.5px;font-weight:700}
  @media (max-width:900px){.sens-charts{grid-template-columns:1fr}}

  /* ── Brainstorm 分頁 ── */
  .bs-wrap{display:grid;grid-template-columns:1fr 320px;gap:14px;height:calc(100vh - 118px);margin:10px 20px 0}
  .bs-chat{background:var(--card);border:1px solid var(--line);border-radius:16px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 2px 16px rgba(0,0,0,.05)}
  .bs-msgs{flex:1;overflow-y:auto;padding:22px;display:flex;flex-direction:column;gap:10px}
  .bs-start{max-width:480px;margin:40px auto;display:flex;flex-direction:column;gap:10px}
  .bs-start h2{font-size:22px;font-weight:700;letter-spacing:-.02em}
  .bs-start .sub2{font-size:13px;color:var(--ink-2);margin-bottom:6px}
  .bs-start input{border:1px solid var(--line);border-radius:10px;padding:10px 14px;font:inherit;font-size:14px;background:var(--bg)}
  .bs-start input:focus{outline:none;border-color:var(--blue);background:#fff}
  .bs-msgs .msg{max-width:78%;white-space:pre-wrap}
  .bs-in{border-top:1px solid var(--line)}
  .typing{align-self:flex-start;color:var(--ink-3);font-size:13px;padding:6px 12px}
  .typing i{animation:blink 1.2s infinite;font-style:normal}
  @keyframes blink{0%,100%{opacity:.2}50%{opacity:1}}
  .bs-card{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow-y:auto;box-shadow:0 2px 16px rgba(0,0,0,.05)}
  .bs-card-h{padding:13px 16px;border-bottom:1px solid var(--line);font-weight:600;font-size:13.5px;display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:#fff}
  .d-item{padding:12px 16px;border-bottom:1px solid var(--line)}
  .d-item .k{font-size:12px;color:var(--ink-3)}
  .d-item .v{font-size:13.5px;font-weight:600;margin:2px 0}
  .d-item .ai{font-size:12px;color:var(--ink-2)}
  .d-item.decided{border-left:3px solid var(--green)}
  .d-item.pending{border-left:3px solid var(--orange)}

  /* ── 匯出 PDF（列印模式：只顯示 print-root 全章節）── */
  #print-root{display:none}
  body.printing>*{display:none!important}
  body.printing #print-root{display:block!important;padding:20px 6px;background:#fff;overflow:visible}
  body.printing{background:#fff}
  .pr-cover{text-align:center;padding:230px 0 60px;page-break-after:always}
  .pr-cover h1{font-size:34px;font-weight:700;letter-spacing:-.02em}
  #print-root section{page-break-after:always}
  #print-root section:last-child{page-break-after:auto}
  @media print{@page{margin:13mm}}

  /* ── 手機版 ── */
  @media (max-width:768px){
    .topbar{height:auto;min-height:52px;gap:8px;padding:8px 12px;display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;overflow:visible}
    .wordmark{font-size:17px}
    .proj{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px}
    .stages{grid-column:1/-1;order:5;overflow-x:auto;margin:0 -12px -8px;padding:3px 12px 8px;scrollbar-width:none}
    .stages::-webkit-scrollbar{display:none}
    .stage{flex:0 0 auto;padding:5px 11px}
    .model-sel,.engine{display:none}
    .gear{margin-left:0}
    .flowbar{display:none}
    .home-wrap{margin:14px auto 40px;padding:0 12px}
    .home-hero{align-items:flex-start;margin-bottom:14px}
    .home-hero h1{font-size:28px}
    .home-hero p{font-size:12px}
    .home-primary{padding:8px 11px;font-size:12px}
    .health-grid{grid-template-columns:1fr 1fr;gap:8px}
    .health-card{padding:13px}
    .health-card .v{font-size:21px}
    .home-columns{grid-template-columns:1fr}
    .home-panel{padding:14px}
    .plan-wrap{grid-template-columns:1fr;height:auto;margin:8px 10px 0;border-radius:12px}
    .toc{display:flex;overflow-x:auto;padding:8px;border-right:none;border-bottom:1px solid var(--line);gap:4px}
    .toc-h{display:none}
    .toc a{flex-shrink:0;white-space:nowrap;padding:6px 12px}
    .doc{padding:0 18px 60px;min-height:60vh}
    .doc-status{margin:0 -18px 14px;padding:8px 18px}
    .doc h1{font-size:32px!important;line-height:1.18;overflow-wrap:anywhere}
    .doc h2{font-size:22px}
    .doc-status{flex-wrap:wrap;gap:8px}
    .doc-actions{width:100%;margin-left:0!important;justify-content:flex-end}
    .doc-export{display:none}
    .doc table{display:block;overflow-x:auto}
    .row{grid-template-columns:1fr;gap:4px}
    .row label{padding-top:0}
    .fee-grid{grid-template-columns:1fr}
    .brief-wrap{padding:0 14px}
    .chat{right:10px;left:10px;width:auto;bottom:84px}
    .chat-fab{right:16px;bottom:16px}
    .persona-face{width:112px;height:140px;margin:2px 0 8px 12px}
  }

  /* ═══════════════════════════════════════════════
     設計規範覆蓋層 — 曦光/星軌 雙主題（docs/設計規範.md）
     只換視覺，不動 DOM / class / id
     ═══════════════════════════════════════════════ */

  /* — 玻璃頂欄 + 狀態列跟隨主題 — */
  .topbar{background:var(--bar-bg);border-bottom:1px solid var(--line)}
  .doc-status{background:var(--bar-bg)!important}

  /* — 品牌字：群募(墨襯線) + OS(漸層 mono)（對照 3a/3b）— */
  .wordmark{font-family:var(--font-serif);font-weight:900;font-size:19px;letter-spacing:0;white-space:nowrap;flex-shrink:0;
    color:var(--ink);display:inline-flex;align-items:baseline;gap:5px}
  .wordmark .wm-os{font-family:var(--font-mono);font-weight:700;font-size:12px;letter-spacing:.12em;
    background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}

  /* — 頁面主標題（hero）：巨型襯線 48–56px 漸層填色 §6.4 — */
  .doc h1,.brief-head h1,.gantt-head h2,.mat-head h1,.calc-head h1,.adcreative-head h1{
    font-family:var(--font-serif);font-weight:900;letter-spacing:-.01em;line-height:1.12;
    background:var(--grad-120);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;
    width:fit-content}
  .doc h1{font-size:52px;margin:6px 0 4px} .brief-head h1{font-size:44px} .gantt-head h2{font-size:34px}
  /* 章節編號：Space Mono 小上標 */
  .doc h1 .h1-num{font-family:var(--font-mono);font-weight:700;font-size:16px;letter-spacing:.08em;
    -webkit-text-fill-color:var(--muted);color:var(--muted);margin-left:12px;vertical-align:.5em}

  /* — 區段標題：襯線 900 + 56×4 漸層底線 §3 — */
  .doc h2{font-family:var(--font-serif);font-weight:900;font-size:26px;color:var(--ink);position:relative;padding-bottom:12px;margin:40px 0 14px}
  .doc h2::after{content:"";position:absolute;left:0;bottom:0;width:56px;height:4px;border-radius:2px;background:var(--grad-90)}
  .doc h3{font-family:var(--font-serif);font-weight:700;color:var(--ink)}

  /* — 主導覽 §6.1：純文字，當前=ink 700 + 3px 漸層底線（非膠囊）— */
  .stages{gap:6px;align-items:center}
  .stage{background:transparent!important;border:none!important;box-shadow:none!important;border-radius:0;
    padding:6px 6px;font-size:14px;font-weight:500;color:var(--muted);position:relative;transition:color .18s ease}
  .stage.on{background:transparent!important;color:var(--ink)!important;font-weight:700;box-shadow:none!important}
  .stage.on::after{content:"";position:absolute;left:6px;right:6px;bottom:-16px;height:3px;border-radius:2px;background:var(--grad-90)}
  .stage.on2{background:transparent!important;border:none!important;color:var(--muted)!important}
  .stage.on2:hover{background:transparent!important;color:var(--ink)!important;box-shadow:none!important;transform:none!important;border:none!important}

  /* — 次層 Segmented（Brief/Brainstorm/企劃書）同款：當前=底線 §5.112 — */
  .seg{background:var(--gray-soft)}
  .seg button.on{background:var(--card);color:var(--ink)}

  /* — 側欄章節列 §6.3：固定三欄 grid（編號｜標題｜標籤），對齊不換行 — */
  .toc a{position:relative;display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:7px;
    padding-left:10px;padding-right:10px;white-space:nowrap;transition:background .15s ease,transform .15s ease}
  .toc a:hover{transform:translateX(2px)}
  .toc a.on{background:linear-gradient(90deg,var(--blue-soft),transparent 80%);color:var(--ink);font-weight:600}
  .toc a.on::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:2px;background:var(--grad)}
  .toc a .n{font-family:var(--font-mono);font-size:12px;color:var(--muted);letter-spacing:.02em;text-align:left}
  .toc a.on .n{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
  .toc a .tt{overflow:hidden;text-overflow:ellipsis}
  /* 章節右側標籤：一律 tag 單色 mono、無底、靠右 */
  .toc a .b,.toc a .b-ok,.toc a .b-cond,.toc a .b-est,.toc a .b-stop,.toc a .b-warn{
    justify-self:end;background:transparent!important;color:var(--tag)!important;font-family:var(--font-mono);
    font-weight:700;font-size:11px;letter-spacing:.02em;padding:0!important;border-radius:0!important}
  .toc-h{font-family:var(--font-mono);letter-spacing:.14em}
  /* 手機橫向捲動列時退回 inline-flex，避免 grid 撐開 */
  @media (max-width:768px){
    .toc a{display:inline-flex;gap:6px}
    .toc a .tt{overflow:visible}
  }

  /* — 主 CTA：漸層按鈕 — */
  .btn-primary{background:var(--grad);box-shadow:0 8px 20px -8px var(--accent-i)}
  .btn-primary:hover{filter:brightness(1.04);box-shadow:0 10px 26px -8px var(--accent-i)}
  .btn-ghost{background:var(--card);color:var(--ink)}
  .btn-ghost:hover{background:var(--gray-soft);border-color:var(--accent-i)}

  /* — 數字 / 標籤 / 代碼：Space Mono — */
  .tile .t-v,.tile .t-k,.data-table td,.calc-foot b,.gantt-legend,.engine,.mat-abadge{font-family:var(--font-mono)}
  .tile .t-v{letter-spacing:-.5px}

  /* — 統計磚：跟隨主題的漸層卡（取代寫死深色）— */
  .tile{background:linear-gradient(150deg,var(--accent-i),var(--accent-c));color:#fff;box-shadow:var(--shadow-md)}
  .tile.warn{background:linear-gradient(150deg,var(--danger),#b91c3c)}

  /* — 可編輯區 hover/focus 跟隨主題 — */
  .doc [contenteditable="true"]:hover{background:var(--line-2)}
  .doc [contenteditable="true"]:focus{background:var(--blue-soft);box-shadow:0 0 0 1px var(--accent-i)}
  .btn-ghost:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
  .row input:focus,.row select:focus{border-color:var(--accent-i);background:var(--card);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-i) 20%,transparent)}
  .data-table td[contenteditable]:focus{background:var(--blue-soft)}

  /* — 卡片類統一吃 --card（深色不再白底）— */
  .adc,.sp-row{background:var(--card)}
  .adc-img{background:var(--gray-soft)}
  .gantt-anchors input,.gantt-anchors button{background:var(--card)}

  /* — 試算頁 §8：補 hero 巨型襯線標題 + 面板/輸入對齊規範 — */
  .calc-hero{margin:4px 0 20px}
  .calc-crumb{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--muted);margin-bottom:6px}
  .calc-hero h1{font-family:var(--font-serif);font-weight:900;font-size:44px;line-height:1.12;width:fit-content;margin:0;
    background:var(--grad-120);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
  .calc-hero-sub{font-size:13px;color:var(--muted-2);margin-top:8px;line-height:1.7}
  .calc-sec-label{font-family:var(--font-serif);font-weight:700;font-size:16px;color:var(--ink);position:relative;
    padding-left:12px}
  .calc-sec-label::before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:4px;border-radius:2px;background:var(--grad-90)}
  .cg{background:var(--bg);border:1px solid var(--line);border-radius:12px}
  .cg b{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--muted);font-weight:700}
  .cg label{color:var(--muted-2)}
  .cg input{background:var(--card);color:var(--ink);font-family:var(--font-mono)}
  .cg input:focus{border-color:var(--accent-i);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-i) 18%,transparent)}
  .sens-charts svg{background:var(--card);border-color:var(--line)}

  /* — 頂欄狀態膠囊 §6.2 + 模型選單描邊 — */
  .engine{background:var(--surface);border:1px solid var(--line);border-radius:20px;color:var(--muted-2);
    font-family:var(--font-mono);font-size:11.5px;letter-spacing:.02em;padding:5px 13px}
  .engine i{background:var(--ok);box-shadow:0 0 8px var(--ok)}
  .model-sel{background:var(--surface);border:1px solid var(--line);border-radius:20px;color:var(--ink);
    font-family:var(--font-mono);font-size:11.5px;letter-spacing:.02em;padding:5px 12px}
  .gear{color:var(--muted)}
  .proj{font-family:var(--font-mono);color:var(--muted);letter-spacing:.02em}
  .proj b{color:var(--ink)}

  /* — 流程進度條：新手一眼知道「做到哪、下一步」 — */
  .flowbar{display:flex;gap:2px;align-items:center;justify-content:center;flex-wrap:wrap;
    padding:7px 22px;background:var(--bar-bg);border-bottom:1px solid var(--line-2);
    backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);font-size:12px}
  .fb-step{display:flex;align-items:center;gap:5px;padding:3px 11px;border-radius:99px;cursor:pointer;
    color:var(--muted);font-family:var(--font-mono);letter-spacing:.01em;transition:color .15s,background .15s;white-space:nowrap}
  .fb-step:hover{color:var(--ink)}
  .fb-step.done{color:var(--ok)}
  .fb-step.next{background:var(--blue-soft);color:var(--accent-text);font-weight:700}
  .fb-step.warn{color:var(--warn)}
  .fb-arrow{color:var(--dot-faint);font-size:10px;user-select:none}
  @media(max-width:768px){.flowbar{display:none;overflow-x:auto;justify-content:flex-start;padding:7px 12px}}

  /* — 主題切換鈕 — */
  .theme-toggle{border:1px solid var(--line);background:var(--card);color:var(--ink);
    width:32px;height:32px;border-radius:9px;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;
    transition:border-color .15s,background .15s,transform .15s;flex-shrink:0}
  .theme-toggle:hover{border-color:var(--accent-i);transform:translateY(-1px)}

/* ── 文案 + 法規檢核（素材頁一素材一文案；class 版，可全域重用）── */
  .mat-copy-wrap{margin-top:10px;border-top:1px dashed var(--line);padding-top:10px}
  .mc-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}
  .mc-head b{font-size:12.5px}
  .mat-abadge{font-weight:700;font-size:12px;cursor:pointer;white-space:nowrap}
  .mc-btns{margin-left:auto;display:flex;gap:6px}
  .mc-btns .btn-ghost{padding:3px 10px;font-size:12px}
  .mat-copy{width:100%;min-height:74px;font:inherit;font-size:12.5px;line-height:1.55;padding:8px 10px;
    border:1px solid var(--line);border-radius:9px;resize:vertical;background:#fff;color:var(--ink-1)}
  .mat-apanel{margin-top:8px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#FBFBFD;font-size:12.5px}
  .audit-sum{font-weight:700;margin-bottom:6px}
  .audit-sum.red{color:#D70015}.audit-sum.yellow{color:#C77700}.audit-sum.green{color:#248A3D}
  .audit-issue{border-left:3px solid #C7C7CC;padding:5px 0 5px 10px;margin:7px 0}
  .audit-issue.red{border-color:#D70015}.audit-issue.yellow{border-color:#C77700}
  .ai-q{font-weight:600;color:#1D1D1F}
  .ai-m{color:#6E6E73;font-size:11.5px;margin:2px 0}
  .ai-fix{color:#248A3D;font-size:11.5px}
  /* ── 區塊標頭 ── */
  .mat-sec-head{padding:20px 24px 10px;display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
  .mat-sec-head b{font-size:15px}
  .mat-sec-sub{font-weight:400;color:var(--ink-3);font-size:12px;margin-left:6px}
  .mat-sec-btns{display:flex;gap:6px;flex-wrap:wrap}
  .mat-sec-btns .btn-ghost{padding:5px 12px;font-size:12.5px}
  /* ── prompt 收合（次要，圖＋文案為主）── */
  .mat-fold{border:1px solid var(--line);border-radius:9px;background:var(--bg);font-size:11.5px}
  .mat-fold>summary{cursor:pointer;padding:6px 10px;color:var(--ink-2);user-select:none;list-style:none;font-size:11.5px}
  .mat-fold>summary::-webkit-details-marker{display:none}
  .mat-fold[open]>summary{border-bottom:1px solid var(--line);font-weight:600}
  .mat-fold .fold-body{padding:8px 10px;display:flex;flex-direction:column;gap:7px}
  .mat-fold .mat-prompt{height:78px;margin:0}
  .mat-fold .mr-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
  .mat-fold .mr-controls .btn-ghost,.mat-fold .mr-controls a.btn-ghost{padding:4px 11px;font-size:12px;text-decoration:none;color:var(--ink)}
  /* ── 銷售頁 row（圖左｜文案右，卡片化）── */
  .sp-row{display:grid;grid-template-columns:300px 1fr;gap:18px;padding:16px;margin:0 24px 12px;
    border:1px solid var(--line);border-radius:var(--radius);background:#fff;align-items:start;
    box-shadow:var(--shadow-sm);transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease}
  .sp-row:hover{box-shadow:var(--shadow-md);border-color:rgba(17,17,26,.14);transform:translateY(-1px)}
  .sp-img{width:100%}
  .sp-img img{width:100%;border-radius:10px;display:block;border:1px solid var(--line)}
  .sp-ph{width:100%;border:1.5px dashed var(--line);border-radius:10px;background:var(--bg);
    display:flex;align-items:center;justify-content:center;color:var(--ink-3);font-size:12px;text-align:center;padding:26px 10px;box-sizing:border-box}
  .sp-main{display:flex;flex-direction:column;gap:9px}
  .sp-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .sp-idx{width:22px;height:22px;border-radius:50%;background:var(--ink);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
  .sp-head b{font-size:13.5px;line-height:1.4}
  .sp-head .sp-ar{font-size:11px;color:var(--ink-3)}
  .sp-row .mat-copy-wrap{margin-top:2px;border-top:none;padding-top:0}
  @media(max-width:768px){.sp-row{grid-template-columns:1fr;margin:0 16px 12px}}
  /* ── 廣告：受眾分組 + 投放卡（圖上文案下）── */
  .mat-adgroup{margin:0 0 4px}
  .mat-adgroup-label{padding:16px 24px 8px;font-size:12.5px;font-weight:700;color:var(--ink-2);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .mat-adgroup-label .tag{background:var(--ink);color:#fff;border-radius:99px;font-size:11px;padding:2px 11px;font-weight:700}
  .mat-adgroup-label .sub{font-weight:400;color:var(--ink-3);font-size:11.5px}
  .ad-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:0 24px}
  .adc{border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow:hidden;display:flex;flex-direction:column;
    box-shadow:var(--shadow-sm);transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease}
  .adc:hover{box-shadow:var(--shadow-md);border-color:rgba(17,17,26,.14);transform:translateY(-2px)}
  .adc-img{width:100%;aspect-ratio:1/1;background:var(--bg);display:flex;align-items:center;justify-content:center;color:var(--ink-3);font-size:12px;border-bottom:1px solid var(--line)}
  .adc-img img{width:100%;height:100%;object-fit:cover;display:block}
  .adc-body{padding:11px 13px;display:flex;flex-direction:column;gap:8px}
  .adc-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
  .adc-top b{font-size:12px;line-height:1.35}
  .adc .mat-copy-wrap{margin-top:0;border-top:none;padding-top:0}
  @media(max-width:1000px){.ad-cards{grid-template-columns:1fr 1fr}}
  @media(max-width:680px){.ad-cards{grid-template-columns:1fr}}
