/* ==========================================================
   TWISA 活動網站共用樣式 twisa-base.css（方向 A：滿版色帶＋雜誌式分欄）
   版本 v1.0 定稿，2026-10-19（A 稿為底，併入 B 稿四項與評審必修十條）
   用法：整段複製進各站 <style> 最前面，站內專屬樣式寫在它後面。
   不跨網域引用這個檔；每站各自內嵌一份，改版時以本檔為正本重貼。
   斷點：手機 0 至 719、平板 720 至 1023、桌機 1024 以上。容器在 1630 寬以上停在 1440。
   正本：~/assistant/sites/twisa/_shared/twisa-base.css；規格：同目錄 TWISA網站共用樣式規格.md。
   ========================================================== */

/* ---------- 1. 色票（沿用 CIX 原值） ---------- */
:root{
  color-scheme: light;
  --bg:#FFFFFF;
  --surface:#FFFFFF;
  --surface-2:#F1F8F6;
  --ink:#153734;
  --muted:#5C726F;
  --line:#E2EDEA;
  --line-strong:#C9DCD8;
  --teal:#21BAB0;        /* 大面積、主按鈕底 */
  --teal-text:#0E7C71;   /* 白底上的青綠字 */
  --on-teal:#06211E;     /* 青綠底上的字 */
  --blue:#5085BA;
  --blue-text:#3C6692;
  --gold:#EFC63B;
  --gold-text:#B2860F;
  --on-gold:#2A1F00;
  --shadow:0 1px 2px rgba(21,55,52,.04),0 6px 20px rgba(21,55,52,.06);

  /* 深色帶（ink 帶）上的對應色 */
  --ink-band:#153734;
  --on-ink:#FFFFFF;
  --on-ink-muted:#B7CFCB;
  --on-ink-line:rgba(255,255,255,.16);
  --teal-on-ink:#6FE0D6;

  /* 字體 */
  --sans:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;
  --serif:"Noto Serif TC","Songti TC",Georgia,serif;

  /* 版面 */
  --container:clamp(1240px, 76vw, 1440px);    /* 內容容器上限：1630 寬以下 1240，往上跟著長到 1440 */
  --gutter:clamp(20px, 4.4vw, 64px);          /* 左右側距，390 寬約 20，1440 寬 64 */
  --col-gap:clamp(20px, 2.8vw, 40px);         /* 格線欄距 */
  --band-y:clamp(56px, 7vw, 104px);           /* 色帶上下內距 */
  --radius:16px;
  --radius-sm:12px;
}

/* ---------- 2. 基底 ---------- */
*{box-sizing:border-box}
/* 防橫向捲動一律用 clip，不准用 hidden：hidden 會讓 body 變成捲動容器，position:sticky 全部失效 */
html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;overflow-x:clip}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.75;-webkit-font-smoothing:antialiased;overflow-x:clip}
img{max-width:100%;display:block}
a{color:var(--teal-text);text-underline-offset:3px}
h1,h2,h3,p{overflow-wrap:anywhere}
.num{font-variant-numeric:tabular-nums}
.serif{font-family:var(--serif)}
.skip{position:absolute;left:-9999px;top:0;background:var(--ink);color:#fff;padding:8px 14px;z-index:50}
.skip:focus{left:12px;top:12px}
[id]{scroll-margin-top:72px}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* focus：只畫一層框。先清掉瀏覽器預設，再只在 focus-visible 畫 outline，不另加 box-shadow。
   程式聚焦的容器（main、section 等 tabindex="-1" 的跳轉目標）一律不畫框，否則整個主區會被框起來 */
:where(a,button,input,select,textarea,summary,[tabindex]):focus{outline:none}
:focus-visible{outline:3px solid var(--blue);outline-offset:3px;border-radius:4px}
[tabindex="-1"]:focus,[tabindex="-1"]:focus-visible{outline:none}
.btn:focus-visible{border-radius:var(--radius-sm)}
.band--ink :focus-visible{outline-color:var(--teal-on-ink)}

/* ---------- 3. 容器 ---------- */
.wrap{width:100%;max-width:calc(var(--container) + 2 * var(--gutter));margin:0 auto;
  padding-left:max(var(--gutter), env(safe-area-inset-left,0px));
  padding-right:max(var(--gutter), env(safe-area-inset-right,0px))}

/* ---------- 4. 色帶（區塊） ---------- */
.band{padding:var(--band-y) 0;background:var(--bg)}
.band--alt{background:var(--surface-2)}
.band--ink{background:var(--ink-band);color:var(--on-ink)}
.band--ink a{color:var(--teal-on-ink)}
.band--tight{padding:clamp(36px,4vw,56px) 0}

/* 區塊標題：金色短槓＋序號＋襯線標題 */
.sec-head{display:flex;flex-direction:column;gap:6px;margin:0 0 clamp(24px,3vw,40px)}
.sec-head .idx{display:inline-flex;align-items:center;gap:10px;font-size:13px;font-weight:700;letter-spacing:.14em;color:var(--teal-text)}
.sec-head .idx::before{content:"";width:22px;height:3px;background:var(--gold);border-radius:2px}
.sec-head h2{font-family:var(--serif);font-weight:700;font-size:clamp(26px, 2.4vw, 36px);line-height:1.3;margin:0}
.sec-head .lede{margin:6px 0 0;color:var(--muted);max-width:60ch}
.band--ink .sec-head .idx{color:var(--teal-on-ink)}
.band--ink .sec-head .lede{color:var(--on-ink-muted)}

/* ---------- 5. 格線 ---------- */
.grid{display:grid;gap:var(--col-gap);grid-template-columns:minmax(0,1fr)}
@media (min-width:720px){
  .grid--2,.grid--3,.grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (min-width:1024px){
  .grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
}
/* 列表格線依卡片數決定欄數（見規格第 5 節）：
   1 張用 .grid--feature（桌機橫式大卡），2 張 .grid--2，3 張 .grid--3，4 張以上 .grid--3 或 .grid--4。
   不准用三欄格線只放兩張卡留空洞 */
@media (min-width:1024px){.grid--feature > *{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--col-gap);align-items:center}}
/* 雜誌式分欄：主欄 66ch 文字＋側欄。桌機 7:5，左標右文版用 .split--head */
.split{display:grid;gap:var(--col-gap);grid-template-columns:minmax(0,1fr)}
@media (min-width:1024px){
  .split{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start;gap:clamp(40px,5vw,80px)}
  .split--head{grid-template-columns:minmax(0,3fr) minmax(0,9fr)}
  .split--3{grid-template-columns:minmax(0,3fr) minmax(0,6fr) minmax(0,3.4fr)}
}
.prose p{margin:0 0 1em;max-width:66ch}
.prose p:last-child{margin-bottom:0}
.prose--lead p{font-size:clamp(17px,1.35vw,19px);line-height:1.85}

/* ---------- 6. 按鈕 ---------- */
.btn{-webkit-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 26px;font:inherit;font-size:17px;font-weight:700;line-height:1.3;text-decoration:none;border:2px solid transparent;border-radius:var(--radius-sm);cursor:pointer}
.btn-primary{background:var(--teal);color:var(--on-teal);border-color:var(--teal)}
.btn-primary:hover{filter:brightness(.96)}
.btn-ghost{background:transparent;color:var(--teal-text);border-color:var(--teal-text)}
.btn-ghost:hover{background:var(--surface-2)}
.band--ink .btn-ghost{color:var(--on-ink);border-color:var(--on-ink-muted)}
.band--ink .btn-ghost:hover{background:rgba(255,255,255,.08)}
.btn.is-closed{background:var(--surface-2);color:var(--muted);border-color:var(--line);cursor:not-allowed}
.btn-sm{min-height:40px;padding:0 18px;font-size:15px}
.cta-row{display:flex;flex-wrap:wrap;gap:12px}
.cta-row .btn{flex:1 1 100%}
@media (min-width:720px){.cta-row .btn{flex:0 0 auto}}
@media (prefers-reduced-motion:no-preference){.btn{transition:background-color .15s,color .15s,border-color .15s,filter .15s}}

/* 標籤與徽章 */
.tag{display:inline-flex;align-items:center;border:1px solid var(--line-strong);padding:2px 12px;font-size:14px;line-height:1.6;color:var(--ink);background:var(--bg);border-radius:999px;white-space:nowrap}
.tag--gold{background:var(--gold);border-color:var(--gold);color:var(--on-gold);font-weight:700}
.tag--teal{background:var(--surface-2);border-color:var(--teal);color:var(--teal-text);font-weight:700}

/* ---------- 7. 卡片 ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(20px,2.4vw,32px);box-shadow:var(--shadow);min-width:0}
.card--flat{box-shadow:none}
.card--tint{background:var(--surface-2);box-shadow:none}
.card--accent{border-top:4px solid var(--teal)}
.band--alt .card{background:var(--surface)}
.band--ink .card{background:rgba(255,255,255,.05);border-color:var(--on-ink-line);box-shadow:none;color:var(--on-ink)}
.card .k{font-size:13px;font-weight:700;letter-spacing:.08em;color:var(--muted);margin:0 0 6px}
.band--ink .card .k{color:var(--on-ink-muted)}

/* 行動卡（報名、日曆、地圖）：放在簡介右欄，只在該區塊內黏住；不得重複首屏資訊格的日期、費用、截止 */
.action-card{display:none}
.action-card .btn{width:100%}
.action-card .btn + .btn{margin-top:12px}
.action-card .ics{margin:8px 0 0;font-size:15px;text-align:center}
.action-card .ics a{display:inline-flex;align-items:center;min-height:36px;text-decoration:underline}
.action-card .where{margin:20px 0 0;padding-top:18px;border-top:1px solid var(--line)}
.action-card .where p{margin:0;line-height:1.6}
.action-card .where .name{font-weight:700}
.action-card .where address{font-style:normal;color:var(--muted);font-size:15px;margin:2px 0 12px}
@media (min-width:1024px){.action-card{display:block;position:sticky;top:84px}}

/* ---------- 8. 頂列 ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);backdrop-filter:saturate(1.2) blur(6px)}
.topbar .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:60px}
.topbar .brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-family:var(--serif);font-weight:700;font-size:18px;letter-spacing:.06em;color:var(--teal-text)}
.topbar nav{display:none;align-items:center;gap:28px;font-size:15px}
.topbar nav a{color:var(--ink);text-decoration:none}
.topbar nav a:hover{color:var(--teal-text)}
.topbar .top-cta{display:none}
@media (min-width:1024px){
  .topbar nav{display:flex}
  .topbar .top-cta{display:inline-flex}
}

/* ---------- 9. 主視覺（首屏左右並排） ---------- */
.hero{position:relative;overflow:hidden;background:linear-gradient(180deg,#EAF6F5 0,#FFFFFF 78%);border-bottom:1px solid var(--line)}
.hero::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,var(--teal),var(--blue))}
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:28px;padding:36px 0 40px}
.hero h1{font-family:var(--serif);font-weight:700;font-size:clamp(28px, 3.6vw, 56px);line-height:1.3;margin:0 0 16px;word-break:keep-all;text-wrap:balance}
.hero .visual{display:none}
@media (min-width:1024px){
  .hero-grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:clamp(32px,4vw,72px);padding:clamp(64px,6vw,96px) 0 clamp(48px,4.5vw,72px)}
  .hero .visual{display:block}
}

/* 資訊格（日期、地點、費用、截止）：手機一欄條列、平板兩欄、桌機四欄 */
.facts{display:grid;margin:0;grid-template-columns:minmax(0,1fr);border-top:2px solid var(--ink)}
.fact{display:grid;grid-template-columns:6.4em minmax(0,1fr);gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}
.fact dt{font-size:14px;color:var(--muted);padding-top:2px}
.fact dd{margin:0;font-size:17px;line-height:1.6}
.fact dd span{display:block}
.fact dd span:first-child{font-weight:700}
@media (min-width:720px){
  .facts{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--col-gap)}
  .fact{grid-template-columns:minmax(0,1fr);gap:4px;padding:18px 0}
}
@media (min-width:1024px){
  .facts{grid-template-columns:repeat(4,minmax(0,1fr));column-gap:0;border-bottom:1px solid var(--line)}
  .fact{padding:22px 24px;border-bottom:0}
  .fact:first-child{padding-left:0}
  .fact + .fact{border-left:1px solid var(--line)}
}

/* ---------- 10. 議程：手機 0 至 719 時間軸，720 以上三欄表（表頭可見） ---------- */
.agenda-head{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.agenda{list-style:none;margin:0;padding:0}
.agenda li{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:2px;padding:0 0 22px 28px}
.agenda li::before{content:"";position:absolute;left:5px;top:12px;bottom:-12px;width:2px;background:var(--line-strong)}
.agenda li:last-child::before{display:none}
.agenda li::after{content:"";position:absolute;left:0;top:7px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:3px solid var(--teal)}
.agenda li.brk::after{border-color:var(--line-strong);border-width:2px}
.agenda .t{font-size:15px;font-weight:700;color:var(--blue-text)}
.agenda .c{font-size:17px;font-weight:700;line-height:1.55}
.agenda .s{font-size:15px;line-height:1.6;color:var(--muted)}
.agenda .s:empty{display:none}
.agenda li.brk .c{font-weight:400;color:var(--muted)}
@media (min-width:720px){
  .agenda-head{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto;white-space:normal;
    display:grid;grid-template-columns:140px minmax(0,1fr) minmax(0,.7fr);gap:24px;padding:0 0 10px;font-size:13px;color:var(--muted);letter-spacing:.08em;border-bottom:2px solid var(--ink)}
  .agenda li{grid-template-columns:140px minmax(0,1fr) minmax(0,.7fr);gap:24px;align-items:baseline;padding:20px 0;border-bottom:1px solid var(--line)}
  .agenda li::before,.agenda li::after{display:none}
  .agenda .t{font-size:16px}
  .agenda .c{font-weight:500}
  .agenda .s{font-size:16px}
  .agenda .s:empty{display:block}
}
@media (min-width:1024px){
  .agenda-head,.agenda li{grid-template-columns:180px minmax(0,1.4fr) minmax(0,1fr);gap:40px}
  .agenda .t{font-size:17px}
  .agenda .c{font-size:18px}
}

/* ---------- 11. 講者（兩欄卡：照片＋全文簡介） ---------- */
.spk-grid{display:grid;gap:var(--col-gap);grid-template-columns:minmax(0,1fr)}
@media (min-width:1024px){.spk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.spk{display:grid;grid-template-columns:88px minmax(0,1fr);gap:16px 20px;align-content:start}
.spk .ph{width:88px;height:88px;border-radius:50%;overflow:hidden;background:var(--surface-2);border:1px solid var(--line)}
.spk .ph img{width:100%;height:100%;object-fit:cover}
.spk .ph.initial{display:flex;align-items:center;justify-content:center;border-color:var(--teal);font-family:var(--serif);font-size:34px;font-weight:700;color:var(--teal-text)}
.spk .session{display:inline-block;font-size:13px;font-weight:700;letter-spacing:.04em;color:var(--teal-text);background:var(--surface-2);border-radius:6px;padding:2px 8px;margin:0 0 8px}
.spk h3{font-size:21px;line-height:1.4;margin:0 0 4px}
.spk .name-en{margin:0 0 6px;font-size:15px;color:var(--muted)}
.spk .titles{margin:0;padding:0;list-style:none;font-size:15px;line-height:1.6;color:var(--ink)}
.spk .titles li + li{margin-top:2px}
.spk .bio{grid-column:1 / -1;margin:0;padding-top:16px;border-top:1px solid var(--line);font-size:16px;line-height:1.85}
/* 手機拿掉卡框改上方分隔線，讓簡介行寬維持 350px 左右 */
@media (max-width:719px){
  .spk-grid{gap:0}
  .spk.card{padding:24px 0;border:0;border-top:1px solid var(--line);border-radius:0;box-shadow:none;background:transparent}
  .spk-grid > .spk.card:last-child{border-bottom:1px solid var(--line)}
}
@media (min-width:720px){
  .spk{grid-template-columns:120px minmax(0,1fr);gap:18px 24px}
  .spk .ph{width:120px;height:120px}
}

/* ---------- 12. 標誌牆（主辦／協辦／合作）：欄數跟組數走，不跟格線走 ---------- */
.logo-wall{display:grid;gap:var(--col-gap);grid-template-columns:minmax(0,1fr)}
@media (min-width:720px){.logo-wall{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1024px){.logo-wall{grid-template-columns:2fr 1fr 2fr}}
.logo-group .lbl{display:block;font-size:13px;font-weight:700;letter-spacing:.1em;color:var(--muted);margin:0 0 14px;padding-bottom:10px;border-bottom:2px solid var(--ink)}
.logo-list{display:flex;flex-wrap:wrap;align-items:center;gap:20px 36px;min-height:72px}
.logo-item{font-size:17px;font-weight:500;line-height:1.55}
.logo-item.has-logo{display:flex;align-items:center;gap:14px;min-height:56px}
.logo-item img{height:44px;width:auto;max-width:min(100%,220px);object-fit:contain}
/* 超寬條狀 logo 用資料指定寬度 {src,width}，以寬度定大小、不受 220 上限 */
.logo-item img.wide{height:auto;max-width:100%}

/* ---------- 13. 頁尾 ---------- */
.site-foot{background:var(--surface-2);border-top:1px solid var(--line);padding:32px 0 40px;font-size:14px;color:var(--muted);line-height:1.7}
.site-foot .wrap{display:grid;gap:8px}
@media (min-width:1024px){.site-foot .wrap{grid-template-columns:auto 1fr;gap:12px 48px;align-items:center}.site-foot .wrap > :last-child{text-align:right}}

/* ---------- 14. 手機底部固定報名列（720 以上隱藏） ---------- */
.sticky{position:fixed;left:0;right:0;bottom:0;z-index:20;background:rgba(255,255,255,.97);border-top:1px solid var(--line);padding:10px 16px calc(10px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:12px}
.sticky .meta{flex:1;min-width:0;font-size:14px;line-height:1.4}
.sticky .meta b{display:block;font-size:15px}
.sticky .btn{min-height:46px;padding:0 20px;font-size:16px;flex:0 0 auto}
body.has-sticky{padding-bottom:calc(76px + env(safe-area-inset-bottom))}
@media (min-width:720px){.sticky{display:none}body.has-sticky{padding-bottom:0}}

@media print{.sticky,.topbar nav,.topbar .top-cta{display:none}body{padding:0}.band--ink{background:#fff;color:var(--ink)}}
