/* ===========================================================================
   五泰房屋 2026-08-19 實體課 deck 設計系統（共用）
   骨架沿用 Agent Skill 工作坊母版，配色與字型換成五泰口徑（承 8/11 deck）
   每一章 deck 都 <link> 這支 + deck-stage.js。風格的單一真相在這裡。
   硬規則：無 emoji、無圓角色條卡片、無自繪 SVG 插畫、最小字級 24px、
   中英之間半形空格、全形標點（句中不用半形逗號、不用破折號）。
   =========================================================================== */

@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@300;400;500;700;900&family=JetBrains+Mono:wght@400;600&display=swap");

deck-stage:not(:defined){visibility:hidden}
*{margin:0;padding:0;box-sizing:border-box}

:root{
  --bg:#fbfcfc;            /* 冷白紙底（五泰） */
  --bg-ink:#003648;        /* 深青底（封面、章節幕、最值錢頁） */
  --ink:#12232a;           /* 紙底文字 */
  --ink-soft:#4a5c63;      /* 次級 */
  --ink-faint:#7d8d94;     /* 三級／索引數字 */
  --on-ink:#e4eef0;        /* 深底文字 */
  --on-ink-soft:#b9c8cc;
  --rule:rgba(18,35,42,.16);
  --rule-ink:rgba(228,238,240,.24);
  --panel:#eef4f5;         /* 圖片／程式碼底板 */
  --teal:#1B5C6D;          /* 強調一（腳本／第一類） */
  --gold:#E65C12;          /* 強調二（主 Agent／時間戳／第二類）＝五泰橘 */
  --rust:#a33e03;          /* 強調三（子代理／禁令／第三類） */

  --font-display:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;
  --font-serif:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;
  --font-body:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;
  --font-mono:"JetBrains Mono","SF Mono","Noto Sans TC",monospace;

  --t-display:104px;
  --t-title:58px;
  --t-subtitle:40px;
  --t-lede:32px;
  --t-body:27px;
  --t-small:25px;
  --t-kicker:25px;

  --pad-x:124px;
  --pad-y:90px;
}

/* deck-stage 把 <section> 撐滿，但不撐裡面的 wrapper；給 wrapper 真高度，
   讓垂直排版填滿 1080，full-bleed 圖另計（object-fit 自處理）。 */
section[data-label] > *:not(img):not(picture):not(video):not(svg):not(canvas){
  height:100%;
  box-sizing:border-box;
}

.slide{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font-body);
  padding:var(--pad-y) var(--pad-x);
  display:flex;
  flex-direction:column;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
.slide.ink{background:var(--bg-ink);color:var(--on-ink)}

/* ---------- 共用標題區 ---------- */
.kicker{
  font-family:var(--font-mono);
  font-size:var(--t-kicker);
  letter-spacing:.32em;
  text-transform:uppercase;
  color:var(--teal);
  font-weight:600;
}
.kicker::before{content:"";display:inline-block;width:9px;height:9px;background:var(--gold);border-radius:50%;margin-right:14px;vertical-align:middle;transform:translateY(-2px)}
.ink .kicker{color:var(--gold)}
.ink .kicker::before{background:var(--on-ink)}
.title{
  font-family:var(--font-serif);
  font-weight:900;
  font-size:var(--t-title);
  line-height:1.18;
  letter-spacing:-.01em;
  margin-top:24px;
}
.title em{font-style:normal;color:var(--teal)}
.ink .title em{color:var(--gold)}
.lede{
  font-size:var(--t-lede);
  line-height:1.4;
  color:var(--ink-soft);
  max-width:none;
  white-space:nowrap;
  margin-top:20px;
  font-weight:300;
}
.ink .lede{color:var(--on-ink-soft)}
.hr{height:1px;background:var(--rule);border:0;margin:38px 0}
.ink .hr{background:var(--rule-ink)}
.grow{flex:1 1 auto}              /* 把後面內容推到底，或撐開留白 */

/* ---------- 封面／章節幕 ---------- */
.cover{justify-content:center}
.cover .eyebrow{font-family:var(--font-mono);font-size:var(--t-kicker);letter-spacing:.3em;text-transform:uppercase;color:var(--gold)}
.cover h1{font-family:var(--font-serif);font-weight:700;font-size:var(--t-display);line-height:1.14;letter-spacing:-.015em;margin-top:40px}
.cover .deck-sub{font-size:var(--t-subtitle);font-weight:300;color:var(--on-ink-soft);margin-top:34px;max-width:28em;line-height:1.5}
.cover .meta{font-family:var(--font-mono);font-size:var(--t-small);color:var(--on-ink-soft);letter-spacing:.04em;margin-top:60px;display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.cover .meta .dot{width:5px;height:5px;border-radius:50%;background:var(--rust);display:inline-block}
/* 大編號章節幕（封面變體）：把 .chno 放進 .cover */
.chno{font-family:var(--font-display);font-size:200px;font-weight:600;color:var(--rule);line-height:.8;letter-spacing:-.02em}

/* ---------- 多欄索引列表（2 / 3 / 4 欄） ---------- */
.cols{display:grid;gap:0;flex:1 1 auto;align-content:center}
.cols-2{grid-template-columns:repeat(2,1fr)}
.cols-3{grid-template-columns:repeat(3,1fr)}
.cols-4{grid-template-columns:repeat(4,1fr)}
.col{padding:0 44px;border-left:1px solid var(--rule)}
.col:first-child{padding-left:0;border-left:0}
.ink .col{border-left-color:var(--rule-ink)}
.idx{font-family:var(--font-mono);font-size:var(--t-small);color:var(--ink-faint);letter-spacing:.1em}
.col h3{font-family:var(--font-serif);font-size:34px;font-weight:600;margin-top:18px;line-height:1.3}
.col p{font-size:var(--t-body);line-height:1.64;color:var(--ink-soft);margin-top:16px;font-weight:300}
.ink .col p{color:var(--on-ink-soft)}
.col p b,.col p strong{color:var(--ink);font-weight:600}
.ink .col p b,.ink .col p strong{color:var(--on-ink)}

/* ---------- 大編號流程（取代「步驟卡」） ---------- */
.numbers{display:grid;grid-template-columns:repeat(4,1fr);gap:46px 40px;flex:1 1 auto;align-content:center}
.num-item{display:flex;flex-direction:column;gap:12px}
.num-item .num{font-family:var(--font-display);font-size:84px;font-weight:600;line-height:.9;color:var(--ink)}
.num-item .num-lb{font-size:30px;font-weight:500;color:var(--ink)}
.ink .num-item .num-lb{color:var(--on-ink)}
.num-item.teal .num{color:var(--teal)} .num-item.gold .num{color:var(--gold)} .num-item.rust .num{color:var(--rust)}

/* ---------- 三角色欄 ---------- */
.roles{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
.role{padding:0 40px;border-left:1px solid var(--rule)}
.role:first-child{padding-left:0;border-left:0}
.role .rh{font-family:var(--font-serif);font-size:33px;font-weight:700;line-height:1.2}
.role.teal .rh{color:var(--teal)} .role.gold .rh{color:var(--gold)} .role.rust .rh{color:var(--rust)}
.role .rt{font-size:var(--t-body);color:var(--ink-soft);line-height:1.6;margin-top:18px;font-weight:300}
.role .rt b{color:var(--ink);font-weight:600}

/* ---------- 圖例 ---------- */
.legend{display:flex;gap:38px;align-items:center;font-size:var(--t-small);color:var(--ink-soft);font-weight:400}
.ink .legend{color:var(--on-ink-soft)}
.legend i{font-style:normal}
.legend .sw{display:inline-block;width:30px;height:4px;border-radius:2px;margin-right:12px;vertical-align:middle}

/* ---------- 編輯表格 ---------- */
table.map{width:100%;border-collapse:collapse}
table.map td,table.map th{text-align:left;padding:18px 8px;border-bottom:1px solid var(--rule);vertical-align:baseline}
.ink table.map td,.ink table.map th{border-bottom-color:var(--rule-ink)}
table.map thead th{font-family:var(--font-mono);font-size:var(--t-small);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);font-weight:600;padding-bottom:14px}
table.map .fn{font-family:var(--font-mono);font-size:26px;color:var(--teal);font-weight:600;white-space:nowrap}
table.map .do{font-size:var(--t-body);color:var(--ink);font-weight:300}
.ink table.map .do{color:var(--on-ink)}
table.map .st{font-family:var(--font-mono);font-size:var(--t-small);color:var(--gold);font-weight:600;white-space:nowrap;text-align:right}

/* ---------- 鍵值清單（定義／對照） ---------- */
.kv{display:flex;flex-direction:column}
.kv-row{display:grid;grid-template-columns:minmax(180px,auto) 1fr;gap:34px;align-items:baseline;padding:20px 0;border-bottom:1px solid var(--rule)}
.kv-row:last-child{border-bottom:0}
.ink .kv-row{border-bottom-color:var(--rule-ink)}
.kv-row .k{font-family:var(--font-serif);font-size:30px;font-weight:600;color:var(--ink)}
.ink .kv-row .k{color:var(--on-ink)}
.kv-row .v{font-size:var(--t-body);color:var(--ink-soft);font-weight:300;line-height:1.55}
.ink .kv-row .v{color:var(--on-ink-soft)}

/* ---------- 禁令清單（✕ + 標題 + 說明） ---------- */
.donts{display:flex;flex-direction:column;gap:0}
.dont{display:grid;grid-template-columns:50px 1fr;gap:24px;align-items:baseline;padding:13px 0;border-bottom:1px solid var(--rule)}
.dont:last-of-type{border-bottom:0}
.ink .dont{border-bottom-color:var(--rule-ink)}
.dont .x{font-family:var(--font-serif);font-size:32px;color:var(--rust);font-weight:700;line-height:1}
.dont .dt{font-size:29px;font-weight:600;color:var(--ink)}
.ink .dont .dt{color:var(--on-ink)}
.dont .dd{font-size:var(--t-small);font-weight:300;color:var(--ink-soft);margin-top:6px;line-height:1.45}
.ink .dont .dd{color:var(--on-ink-soft)}
.dont .dd code,.dont .dd b{font-family:var(--font-mono);font-size:.92em;color:var(--gold);font-weight:600}

/* ---------- 引言／金句 ---------- */
.pull{font-family:var(--font-serif);font-size:42px;line-height:1.45;font-weight:600;letter-spacing:-.005em;max-width:30em}
.pull .mk{color:var(--teal)}
.ink .pull{font-size:38px;line-height:1.42}
.ink .pull .mk{color:var(--gold)}
.pull-cap{font-family:var(--font-mono);font-size:var(--t-small);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:18px}
.ink .pull-cap{color:var(--on-ink-soft)}

/* ---------- 巨大數字（統計） ---------- */
.stat{font-family:var(--font-display);font-size:180px;font-weight:600;line-height:.9;color:var(--teal);letter-spacing:-.02em}
.stat.gold{color:var(--gold)} .stat.rust{color:var(--rust)}
.stat-cap{font-size:var(--t-subtitle);font-weight:300;color:var(--ink-soft);margin-top:20px;max-width:24em;line-height:1.45}

/* ---------- 圖片：截圖／示意（aspect-fit + 框 + 說明） ---------- */
.figure{display:flex;flex-direction:column;gap:14px;align-items:flex-start}
.figure .frame{border:1px solid var(--rule);background:#fff;border-radius:4px;box-shadow:0 1px 2px rgba(31,36,32,.06),0 18px 40px -22px rgba(31,36,32,.4);overflow:hidden;display:flex}
.figure img{display:block;max-width:100%;max-height:100%;object-fit:contain}
.figure .cap{font-family:var(--font-mono);font-size:22px;color:var(--ink-faint);letter-spacing:.02em}
.figrow{display:grid;gap:34px;flex:1 1 auto;align-items:center}
.figrow.two{grid-template-columns:1fr 1fr}
.figrow.split{grid-template-columns:1fr 1fr}   /* 圖＋文 */

/* ---------- 程式碼／純文字檔（深底） ---------- */
.code{background:#22251f;color:#e9e4d6;font-family:var(--font-mono);font-size:24px;line-height:1.6;border-radius:6px;padding:28px 32px;white-space:pre-wrap;word-break:break-word;overflow:hidden}
.code .kw{color:#cf9c4e} .code .str{color:#9bbf8f} .code .cmt{color:#8f897a}

/* ---------- 小註腳／來源 ---------- */
.note-line{font-size:var(--t-body);color:var(--ink-soft);font-weight:300;line-height:1.6}
.note-line b{color:var(--ink);font-weight:600}
.ink .note-line{color:var(--on-ink-soft)}
.ink .note-line b{color:var(--on-ink)}
.src{font-family:var(--font-mono);font-size:22px;color:var(--ink-faint);letter-spacing:.02em;line-height:1.6}

/* ---------- 時間軸（4 點等距） ---------- */
.rail{display:flex;justify-content:space-between;align-items:center;position:relative;margin:54px 0 14px;padding:0 10px}
.rail::before{content:"";position:absolute;left:0;right:0;top:50%;height:2px;background:var(--rule)}
.stop{position:relative;display:flex;flex-direction:column;align-items:center;background:var(--bg);padding:0 14px}
.stop .ts{font-family:var(--font-mono);font-size:30px;font-weight:600;color:var(--gold);margin-bottom:18px}
.stop .pin{width:15px;height:15px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 5px var(--bg)}
.stop .tag{font-size:var(--t-small);color:var(--ink-soft);margin-top:18px}

/* ---------- 回總覽角標（章與章之間的導覽） ---------- */
.home-link{position:fixed;top:30px;right:34px;z-index:30;font-family:var(--font-mono);font-size:20px;letter-spacing:.08em;color:var(--ink-faint);text-decoration:none;background:rgba(244,240,230,.82);padding:8px 14px;border-radius:20px;border:1px solid var(--rule);backdrop-filter:blur(6px)}
.home-link:hover{color:var(--teal)}

@media print{.home-link{display:none}}

/* ---------- 每頁品牌角標（Ordilux）＋ 版權（全簡報共用） ----------
   套在除主封面外的每一頁；主封面用 .deck-cover 排除（它自帶大署名），
   個別頁若需關閉可加 .no-chrome。logo 路徑相對於本檔（_shared/）。 */
.slide{position:relative}
.slide:not(.deck-cover):not(.no-chrome)::before{
  content:"";position:absolute;right:50px;bottom:24px;
  width:116px;height:30px;
  background:url(ordilux-logo.png) no-repeat right center;
  background-size:contain;opacity:1;pointer-events:none;z-index:5;
}
.slide.ink:not(.deck-cover):not(.no-chrome)::before{
  background-image:url(ordilux-logo-light.png);opacity:.95;
}
/* 版權：每一頁都有，小字貼最底（內容頁需保留底部留白才不撞，見密度修正） */
.slide:not(.deck-cover):not(.no-chrome)::after{
  content:"© 2026 大序光河科技 Ordilux ｜ 僅供五泰房屋內部教學使用，未經授權請勿外流";
  position:absolute;left:var(--pad-x);bottom:18px;
  font-family:var(--font-mono);font-size:14px;letter-spacing:.02em;
  color:var(--ink-faint);white-space:nowrap;pointer-events:none;z-index:5;opacity:.9;
}
.slide.ink:not(.deck-cover):not(.no-chrome)::after{color:#cbc4b2}

/* ---------- 五泰版保底修正 ----------
   母版章內嵌樣式用了大量 !important 的頁級覆蓋，會把深底頁的大標壓回紙底墨色，
   在 #003648 上幾乎看不見。這裡把深底頁的標題顏色釘死。 */
.slide.ink .title,
.slide.ink h1,
.slide.ink h2{color:var(--on-ink)!important}
.slide.ink .title em{color:var(--gold)!important}

/* ---------- 垂直置中的根本解 ----------
   母版每章內嵌樣式都有一條：
     .slide, section.slide, section[data-label] > .slide, .pNN-slide …
       { justify-content: flex-start !important }
   其中 section[data-label] > .slide 的特異性是 (0,2,1)，高於 .slide.cover
   的 (0,2,0)，所以在 deck.css 或章內嵌樣式寫 .slide.cover{…!important}
   一律輸，padding 同理。這裡用 (0,3,1) 壓過去，涵蓋所有頁，只排除
   注意 :not(.__never) 不排除任何元素，純粹是把特異性補到 (0,3,1)：母版那條
   選擇器同為 (0,2,1) 且在章內嵌樣式裡後載入，平手時它會贏。
   實測母版那條規則把每一頁都釘成 flex-start，包含原本以為是 space-between 的
   p24，所以這裡不做例外。內容本來就滿版的頁不受影響。 */
section[data-label] > .slide:not(.__never){justify-content:center !important}

/* ---------- 版心與標題呼吸 ----------
   母版把 padding 壓成 70px/50px，標題貼著上緣、底部收束線又撞到頁尾的版權列；
   .lede 距主標只有 6px，主標的 em 有 3px 底線時會直接撞上。
   同樣用 (0,3,1) 壓過母版那批 !important。 */
section[data-label] > .slide:not(.__never){
  padding-top:96px !important;
  padding-bottom:88px !important;
}
section[data-label] > .slide:not(.__never) .lede{margin-top:20px !important}
section[data-label] > .slide:not(.__never) .title{margin-top:18px !important}
