/* ==========================================================
   TWISA 新官網站內樣式（共用樣式之後）
   先載 twisa-base.css（原檔不改），本檔只補官網需要的元件。
   色票、字體、斷點（719／720／1023／1024）、容器寬一律用 base 的 token，不另調色。
   ========================================================== */

/* ---------- SAMPLE 提示列（只在示意資料時輸出） ---------- */
.sample-strip{margin:0;padding:6px var(--gutter);background:var(--gold);color:var(--on-gold);font-size:14px;font-weight:700;text-align:center;line-height:1.5}

/* ---------- 頂列：logo、主選單（桌機下拉）、語言切換、加入按鈕、手機漢堡 ---------- */
.topbar .brand.logo img{height:40px;width:auto;max-width:none}
.topbar .brand .mark{font-size:20px;letter-spacing:.08em}
.topbar .brand .full{display:none;font-family:var(--sans);font-size:15px;font-weight:500;letter-spacing:0;color:var(--ink)}
@media (min-width:720px){.topbar .brand.logo img{height:46px}.topbar .brand .full{display:inline}}
.top-right{display:flex;align-items:center;gap:clamp(12px,1.6vw,24px);min-width:0}

.mainnav > ul{display:flex;align-items:center;gap:clamp(12px,1.5vw,28px);list-style:none;margin:0;padding:0}
.mainnav li{position:relative}
.mainnav > ul > li > a,.mainnav > ul > li > span{display:inline-flex;align-items:center;min-height:60px;white-space:nowrap;font-weight:500}
.mainnav a[aria-current="page"],.mainnav a.is-section{color:var(--teal-text);box-shadow:inset 0 -3px 0 var(--teal)}
.mainnav .has-sub > a::after{content:"";width:6px;height:6px;margin-left:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);opacity:.6}
.mainnav .sub{display:none;position:absolute;top:100%;left:-14px;z-index:40;min-width:220px;margin:0;padding:8px;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow)}
.mainnav li:hover > .sub,.mainnav li:focus-within > .sub{display:block}
.mainnav .sub a{display:flex;align-items:center;min-height:40px;padding:0 12px;border-radius:8px;white-space:nowrap;box-shadow:none}
.mainnav .sub a:hover{background:var(--surface-2)}
.mainnav .sub a[aria-current="page"]{background:var(--surface-2);box-shadow:none}

/* 語言切換：中文｜English｜日本語 */
.langs{display:none;align-items:center;list-style:none;margin:0;padding:0;font-size:14px}
.langs li + li::before{content:"｜";color:var(--line-strong);margin:0 2px}
.langs a{color:var(--muted);text-decoration:none;display:inline-flex;align-items:center;min-height:40px}
.langs a:hover{color:var(--teal-text);text-decoration:underline}
.langs a[aria-current="true"]{color:var(--ink);font-weight:700}
.langs .pending{color:var(--muted);cursor:default}
@media (min-width:1024px){.langs{display:flex}}
@media (min-width:1024px) and (max-width:1199px){.topbar .brand.logo img{height:40px}.mainnav{font-size:14px}.langs{font-size:13px}}

/* 手機與平板：原生 details 漢堡選單，不用 JS */
.mmenu{position:static}
.mmenu > summary{list-style:none;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border:2px solid var(--teal-text);border-radius:var(--radius-sm);color:var(--teal-text);font-weight:700;font-size:15px;cursor:pointer}
.mmenu > summary::-webkit-details-marker{display:none}
.burger,.burger::before,.burger::after{display:block;width:18px;height:2px;background:currentColor;border-radius:2px}
.burger{position:relative}
.burger::before,.burger::after{content:"";position:absolute;left:0}
.burger::before{top:-6px}.burger::after{top:6px}
.mmenu[open] .burger{background:transparent}
.mmenu[open] .burger::before{top:0;transform:rotate(45deg)}
.mmenu[open] .burger::after{top:0;transform:rotate(-45deg)}
.mmenu-panel{position:absolute;left:0;right:0;top:100%;max-height:calc(100vh - 60px);overflow-y:auto;background:var(--surface);border-bottom:1px solid var(--line);box-shadow:0 12px 24px rgba(21,55,52,.10);padding:8px var(--gutter) 20px}
.topbar .mmenu-panel nav{display:block}
.mmenu-panel ul{list-style:none;margin:0;padding:0}
.mmenu-panel > nav > ul > li{border-bottom:1px solid var(--line)}
.mmenu-panel a,.mmenu-panel nav span{display:flex;align-items:center;min-height:48px;font-size:17px;font-weight:700;color:var(--ink);text-decoration:none}
.mmenu-panel li ul{padding:0 0 8px 16px}
.mmenu-panel li ul a{min-height:44px;font-size:16px;font-weight:400;color:var(--muted)}
.mmenu-panel a[aria-current="page"]{color:var(--teal-text)}
.langs--m{display:flex;margin-top:12px;font-size:16px}
.langs--m a{min-height:44px}
@media (min-width:1024px){.mmenu{display:none}}

/* ---------- 首屏 ---------- */
.hero .eyebrow{display:flex;flex-wrap:wrap;gap:8px 10px;margin:0 0 18px}
.hero .intro{margin:0 0 24px;color:var(--muted);font-size:16px;line-height:1.75;max-width:34em}
.hero .name-en{margin:-6px 0 14px;color:var(--muted);font-size:15px;letter-spacing:.04em}
.hero .cta-row{margin-top:4px}
.hero .ics-row{margin:10px 0 0;font-size:15px}
.hero .ics-row a{display:inline-flex;align-items:center;min-height:36px;text-decoration:underline}
.hero-bottom{padding-bottom:40px}
.hero .facts{background:transparent}
@media (min-width:1024px){
  .hero .intro{font-size:clamp(17px,1.35vw,19px);line-height:1.85}
  .hero-bottom{padding-bottom:56px}
  .hero--home h1{font-size:clamp(34px,3.6vw,56px)}
}
.hero-img{width:100%;height:auto;border-radius:var(--radius);border:1px solid var(--line)}

/* 首屏右欄卡片 */
.aside-facts{display:grid;gap:0;padding-top:clamp(12px,1.4vw,20px);padding-bottom:clamp(12px,1.4vw,20px)}
.aside-facts .af{display:grid;grid-template-columns:minmax(5.5em,auto) minmax(0,1fr);gap:16px;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--line)}
.aside-facts .af:last-child{border-bottom:0}
.aside-facts .n{font-family:var(--serif);font-size:clamp(32px,3vw,44px);font-weight:700;line-height:1.1;color:var(--teal-text)}
.aside-facts .l{font-size:15px;color:var(--ink);line-height:1.6}
.aside-logos ul{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;list-style:none;margin:0 0 18px;padding:0}
.aside-logos li{display:flex;align-items:center;justify-content:center;min-height:76px;padding:8px;border:1px solid var(--line);border-radius:10px;background:var(--surface);text-align:center}
.aside-logos img{height:44px;width:auto;max-width:100%;object-fit:contain}
.aside-logos .t{font-size:13px;line-height:1.4;color:var(--muted)}
.aside-card .h{font-family:var(--serif);font-size:clamp(21px,1.8vw,26px);line-height:1.4;margin:0 0 10px}
.aside-card p{margin:0 0 18px}
.aside-card .k{display:block;margin:0 6px 0 0;font-size:13px;font-weight:700;letter-spacing:.08em;color:var(--muted)}
.aside-card .btn{width:100%}
.toc-card ol{margin:0;padding:0;list-style:none;counter-reset:toc}
.toc-card li{counter-increment:toc;border-top:1px solid var(--line)}
.toc-card li:first-child{border-top:0}
.toc-card a{display:grid;grid-template-columns:2.4em minmax(0,1fr);align-items:center;min-height:52px;color:var(--ink);text-decoration:none;font-weight:500;font-size:17px}
.toc-card a::before{content:counter(toc,decimal-leading-zero);font-size:13px;font-weight:700;color:var(--teal-text);letter-spacing:.08em}
.toc-card a:hover{color:var(--teal-text)}
.nl-issue{font-family:var(--serif);font-size:clamp(28px,2.6vw,40px);font-weight:700;line-height:1.2;margin:4px 0 6px}
.muted{color:var(--muted)}

/* ---------- 區塊標題列（標題左、動作右） ---------- */
.head-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 24px;margin:0 0 clamp(24px,3vw,40px)}
.head-row .sec-head{margin:0}
.sec-head h2 .count{font-family:var(--sans);font-size:15px;font-weight:500;color:var(--muted);margin-left:10px;vertical-align:middle}
.side-act{margin:0 0 8px}
@media (min-width:1024px){
  .sec-split > :first-child{position:sticky;top:84px}
  .sec-split > .sec-head{margin-bottom:0}
}

/* ---------- 區塊陣列內文 ---------- */
.blocks{min-width:0}
.blocks > *{margin:0 0 1.1em}
.blocks > :last-child{margin-bottom:0}
.blocks > p,.blocks > .blk-note{max-width:66ch}
.blocks h3{font-size:21px;line-height:1.45;margin:1.6em 0 .5em}
.blocks > h3:first-child{margin-top:0}
.blk-list{padding-left:1.3em;max-width:66ch}
.blk-list li + li{margin-top:.35em}
.blk-list li::marker{color:var(--teal-text)}
@media (min-width:1024px){.blk-list.is-long{columns:2;column-gap:var(--col-gap);max-width:none}.blk-list.is-long li{break-inside:avoid}}
.blk-links{display:grid;gap:12px;grid-template-columns:minmax(0,1fr);list-style:none;padding:0}
@media (min-width:720px){.blk-links{grid-template-columns:repeat(2,minmax(0,1fr))}}
.link-card{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:12px 18px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);text-decoration:none;font-weight:500;line-height:1.5}
a.link-card::after{content:"";flex:0 0 auto;width:8px;height:8px;border-top:2px solid var(--teal-text);border-right:2px solid var(--teal-text);transform:rotate(45deg)}
a.link-card:hover{border-color:var(--teal);color:var(--teal-text)}
.link-card.is-text{color:var(--muted);background:var(--surface-2)}
.blk-img img{width:100%;height:auto;border-radius:var(--radius-sm);border:1px solid var(--line)}
.blk-img figcaption{margin-top:8px;font-size:14px;color:var(--muted)}
.blk-note{padding:12px 16px;border-left:4px solid var(--gold);background:var(--surface-2);border-radius:0 10px 10px 0;font-size:16px}
.blk-note .lbl{display:inline-block;margin-right:10px;padding:0 8px;border-radius:6px;background:var(--gold);color:var(--on-gold);font-size:13px;font-weight:700;letter-spacing:.08em}

/* 表格：桌機正常表格；手機每列變成一張小卡（欄名在左），不產生橫向捲動 */
.tbl-wrap{max-width:100%}
.blk-table{width:100%;border-collapse:collapse;font-size:16px;line-height:1.6}
.blk-table th{text-align:left;font-size:13px;font-weight:700;letter-spacing:.08em;color:var(--muted);padding:0 16px 10px 0;border-bottom:2px solid var(--ink)}
.blk-table td{padding:14px 16px 14px 0;border-bottom:1px solid var(--line);vertical-align:top}
@media (max-width:719px){
  .tbl-wrap:not(.is-scroll) .blk-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .tbl-wrap:not(.is-scroll) .blk-table,.tbl-wrap:not(.is-scroll) .blk-table tbody,.tbl-wrap:not(.is-scroll) .blk-table tr,.tbl-wrap:not(.is-scroll) .blk-table td{display:block;width:100%}
  .tbl-wrap:not(.is-scroll) .blk-table{border-top:2px solid var(--ink)}
  .tbl-wrap:not(.is-scroll) .blk-table tr{padding:10px 0;border-bottom:1px solid var(--line)}
  .tbl-wrap:not(.is-scroll) .blk-table td{display:grid;grid-template-columns:6.4em minmax(0,1fr);gap:12px;padding:4px 0;border:0}
  .tbl-wrap:not(.is-scroll) .blk-table td::before{content:attr(data-label);font-size:14px;color:var(--muted)}
}
/* 四欄以上的表：在自己的容器內橫向捲動，頁面不跟著變寬 */
.tbl-wrap.is-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;border-radius:4px}
.tbl-wrap.is-scroll .blk-table{min-width:calc(4 * 8.5em)}
/* 欄數 class（CSP 不准 style 屬性，build.py 輸出 cols-N，N 取 4 到 10） */
.tbl-wrap.is-scroll.cols-5 .blk-table{min-width:calc(5 * 8.5em)}
.tbl-wrap.is-scroll.cols-6 .blk-table{min-width:calc(6 * 8.5em)}
.tbl-wrap.is-scroll.cols-7 .blk-table{min-width:calc(7 * 8.5em)}
.tbl-wrap.is-scroll.cols-8 .blk-table{min-width:calc(8 * 8.5em)}
.tbl-wrap.is-scroll.cols-9 .blk-table{min-width:calc(9 * 8.5em)}
.tbl-wrap.is-scroll.cols-10 .blk-table{min-width:calc(10 * 8.5em)}
.tbl-wrap.is-scroll .blk-table th,.tbl-wrap.is-scroll .blk-table td{white-space:normal;min-width:7em}
.tbl-wrap.is-scroll .blk-table th:first-child,.tbl-wrap.is-scroll .blk-table td:first-child{position:sticky;left:0;background:var(--bg);z-index:1}
.band--alt .tbl-wrap.is-scroll .blk-table th:first-child,.band--alt .tbl-wrap.is-scroll .blk-table td:first-child{background:var(--surface-2)}
@media (min-width:1024px){.tbl-wrap.is-scroll .blk-table{min-width:0}}

/* ---------- 理監事人物卡 ---------- */
.people{list-style:none;margin:0;padding:0}
.person{display:grid;grid-template-columns:64px minmax(0,1fr);gap:16px;align-items:start}
.person .ph{width:64px;height:64px;border-radius:50%;overflow:hidden;background:var(--surface-2);border:1px solid var(--line)}
.person .ph img{width:100%;height:100%;object-fit:cover}
.person .ph.initial{display:flex;align-items:center;justify-content:center;border-color:var(--teal);font-family:var(--serif);font-size:26px;font-weight:700;color:var(--teal-text)}
.person .role{display:inline-block;margin:0 0 6px;padding:1px 8px;border-radius:6px;background:var(--surface-2);font-size:13px;font-weight:700;color:var(--teal-text)}
.person h3{font-size:19px;line-height:1.4;margin:0 0 4px}
.person .lines{list-style:none;margin:0;padding:0;font-size:15px;line-height:1.6;color:var(--muted)}
.band--alt .person .role{background:var(--bg)}
@media (min-width:1024px){.blocks .people.grid--4{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* 照片型人物卡（理監事頁：照片＋姓名＋資歷） */
.people--photo .person{display:flex;flex-direction:column;gap:14px}
.people--photo .ph{width:112px;height:112px;border-radius:50%;overflow:hidden;border:1px solid var(--line);background:var(--surface-2);flex:0 0 auto}
.people--photo .ph img{width:100%;height:100%;object-fit:cover;object-position:center top}
.people--photo .blocks > p{font-size:17px;margin:0 0 .4em}
.people--photo .blocks > p:first-child{font-size:19px;line-height:1.5}
.people--photo .blk-list{padding-left:1.1em;font-size:15px;line-height:1.65;color:var(--ink)}
@media (max-width:719px){.people--photo .person{display:grid;grid-template-columns:80px minmax(0,1fr);gap:16px;align-items:start}.people--photo .ph{width:80px;height:80px}}
@media (min-width:1024px){.grid--feature > .person.person--photo,.people--photo.grid--2 > .person{display:grid;grid-template-columns:112px minmax(0,1fr);gap:24px;align-items:start}}

/* ---------- 活動卡（沿用 events 總表樣式） ---------- */
.date{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:8px 0 10px;border:1px solid var(--teal);border-radius:10px;background:var(--bg);text-align:center;line-height:1.15;height:max-content}
.date .m{font-size:13px;font-weight:700;color:var(--teal-text)}
.date .d{font-size:28px;font-weight:700;margin:2px 0}
.date .w{font-size:13px;color:var(--muted)}
.series{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 4px;font-size:14px;font-weight:700;color:var(--teal-text)}
.badge{font-size:13px;font-weight:700;padding:0 9px;border-radius:999px;background:var(--gold);color:var(--on-gold)}
.badge--muted{background:var(--surface-2);color:var(--muted);border:1px solid var(--line-strong)}
.meta{margin:0 0 8px;padding:0;list-style:none;font-size:15px;line-height:1.6}
.meta li{display:grid;grid-template-columns:minmax(2.6em,auto) minmax(0,1fr);gap:8px}
.meta li + li{margin-top:2px}
.meta b{font-weight:500;color:var(--muted)}
.ev-list{list-style:none;margin:0;padding:0}
.ev h3{font-size:19px;line-height:1.5;margin:0 0 8px;font-weight:700}
.ev h3 a{color:var(--ink);text-decoration:none}
.ev h3 a:hover{color:var(--teal-text);text-decoration:underline}
.ev .summary{margin:0 0 14px;font-size:16px;line-height:1.75}
.ev.past .date{border-color:var(--line-strong)}
.ev.past .date .m{color:var(--muted)}
.ev.past h3{font-size:17px}
@media (max-width:719px){
  .ev-list{gap:0;border-top:1px solid var(--ink)}
  .ev.card{display:grid;grid-template-columns:64px minmax(0,1fr);column-gap:16px;padding:22px 0;border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none;background:transparent}
  .ev .ev-a,.ev .ev-b,.ev .ev-top{display:contents}
  .ev .date{grid-column:1;grid-row:1 / span 6}
  .ev .ev-a > *,.ev .ev-b > *,.ev .ev-top > :not(.date){grid-column:2}
  .ev .btn{justify-self:start}
  .empty-card{border-radius:0;border:0;border-top:1px solid var(--ink);background:transparent;padding:20px 0}
  .empty-card .acts{margin-top:14px}
}
@media (min-width:720px){
  .ev.card{display:flex;flex-direction:column}
  .ev-top{display:grid;grid-template-columns:80px minmax(0,1fr);gap:18px;align-items:center;margin:0 0 16px}
  .ev .date{padding:10px 0 12px}
  .ev .date .d{font-size:34px}
  .ev h3{font-size:21px;margin:0 0 14px}
  .ev.past h3{font-size:19px}
  .ev-b{display:flex;flex-direction:column;flex:1}
  .ev .meta{padding:14px 0 0;margin:0 0 14px;border-top:1px solid var(--line)}
  .ev .summary{margin:0 0 22px}
  .ev .btn{margin-top:auto;align-self:flex-start}
}
@media (min-width:1024px){
  .grid--feature > .ev.card,.ev.card.is-wide{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(32px,4vw,64px);align-items:start;padding:clamp(28px,3vw,44px)}
  .grid--feature > .ev h3,.ev.is-wide h3{font-size:clamp(22px,1.9vw,28px);line-height:1.45;margin:0}
  .grid--feature > .ev .ev-top,.ev.is-wide .ev-top{grid-template-columns:96px minmax(0,1fr);margin-bottom:22px}
  .grid--feature > .ev .date .d,.ev.is-wide .date .d{font-size:42px}
  .grid--feature > .ev .meta,.ev.is-wide .meta{display:flex;flex-wrap:wrap;gap:8px 36px;margin-bottom:18px;border-top:0;padding-top:0}
  .grid--feature > .ev .meta li,.ev.is-wide .meta li{display:flex;gap:10px}
  .grid--feature > .ev .meta li + li,.ev.is-wide .meta li + li{margin-top:0}
  .grid--feature > .ev .summary,.ev.is-wide .summary{font-size:17px;max-width:46em}
  .ev.is-wide{grid-column:1 / -1}
}
.empty-card p{margin:0;color:var(--muted)}
.empty-card .acts{display:flex;flex-wrap:wrap;gap:12px}
@media (min-width:720px){.empty-card{display:grid;gap:20px}}
@media (min-width:1024px){.empty-card{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:var(--col-gap)}.empty-card p{font-size:18px;color:var(--ink)}.empty-card .acts{justify-content:flex-end}}

/* 首屏「最近一場」卡 */
.next-card .k{display:flex;align-items:center;gap:10px}
.next-head{display:grid;grid-template-columns:104px minmax(0,1fr);gap:22px;align-items:center;margin:14px 0 16px}
.next-card .date{padding:14px 0 16px}
.next-card .date .d{font-size:48px}
.next-card h3{font-size:clamp(19px,1.5vw,23px);line-height:1.5;margin:0}
.next-card .meta{margin:0 0 22px;padding:16px 0 0;border-top:1px solid var(--line)}
.next-card .btn{width:100%}

/* 單場活動頁 */
.ev-datecard{display:grid;grid-template-columns:120px minmax(0,1fr);gap:24px;align-items:center}
.ev-datecard .date{padding:16px 0 18px}
.ev-datecard .date .d{font-size:56px}
.ev-datecard p{margin:0}
.ev-datecard .big{font-family:var(--serif);font-size:clamp(20px,1.7vw,26px);font-weight:700;line-height:1.4;margin:2px 0 4px}
.action-card .back{margin:16px 0 0;font-size:15px;text-align:center}
.action-card .where .btn{width:auto}

/* ---------- 新聞列 ---------- */
.news-rows{list-style:none;margin:0;padding:0;border-top:2px solid var(--ink);min-width:0}
.news-row{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:6px 12px;padding:18px 0;border-bottom:1px solid var(--line)}
.news-row .nd{font-size:15px;font-weight:700;color:var(--blue-text)}
.news-row .tag{justify-self:start}
.news-row .nb{grid-column:1 / -1}
.news-row h3{font-size:18px;line-height:1.55;margin:0}
.news-row h3 a{color:var(--ink);text-decoration:none}
.news-row h3 a:hover{color:var(--teal-text);text-decoration:underline}
.news-row p{margin:4px 0 0;font-size:15px;line-height:1.7;color:var(--muted)}
@media (min-width:720px){
  .news-row{grid-template-columns:110px 120px minmax(0,1fr);align-items:baseline;gap:24px;padding:20px 0}
  .news-row .nb{grid-column:auto}
}
.band--alt .news-row .tag{background:var(--bg)}
.news-feature .meta-line{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 8px;font-size:15px;font-weight:700;color:var(--blue-text)}
.news-feature h3{font-size:clamp(20px,1.6vw,24px);line-height:1.5;margin:0 0 10px}
.news-feature p{margin:0 0 20px;color:var(--muted)}
.news-feature .btn{width:100%}
.news-feature .nc-img{width:100%;height:auto;border-radius:10px;margin:0 0 16px}
.more-news ul{list-style:none;margin:0 0 18px;padding:0}
.more-news li{display:grid;grid-template-columns:minmax(0,1fr);gap:2px;padding:12px 0;border-bottom:1px solid var(--line)}
.more-news li:first-child{padding-top:4px}
.more-news .nd{font-size:13px;font-weight:700;color:var(--blue-text)}
.more-news li a{color:var(--ink);text-decoration:none;font-weight:500;line-height:1.55}
.more-news li a:hover{color:var(--teal-text);text-decoration:underline}

/* ---------- 會員 logo 牆 ---------- */
.mem-wall{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr));list-style:none;margin:0;padding:0}
@media (min-width:720px){.mem-wall{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}}
@media (min-width:1024px){.mem-wall{grid-template-columns:repeat(6,minmax(0,1fr))}.mem-wall--home{grid-template-columns:repeat(4,minmax(0,1fr))}}
.mem-a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;height:100%;min-height:132px;padding:16px 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);text-decoration:none;text-align:center}
a.mem-a:hover{border-color:var(--teal);box-shadow:var(--shadow)}
.mem-logo{display:flex;align-items:center;justify-content:center;min-height:56px;width:100%}
.mem-logo img{height:44px;width:auto;max-width:min(100%,220px);object-fit:contain}
.mem-logo.is-text{font-family:var(--serif);font-size:16px;font-weight:700;color:var(--teal-text);line-height:1.35}
.mem-name{font-size:14px;line-height:1.5;color:var(--muted)}
.mem-group + .mem-group{margin-top:clamp(28px,3vw,44px)}
.mem-group .lbl{font-size:14px;font-weight:700;letter-spacing:.1em;color:var(--muted);margin:0 0 14px;padding-bottom:10px;border-bottom:2px solid var(--ink)}

/* ---------- 優惠卡 ---------- */
.offer-list{list-style:none;margin:0;padding:0}
.offer{display:flex;flex-direction:column}
.offer h3{font-size:20px;line-height:1.5;margin:0 0 8px}
.offer .summary{margin:0 0 12px;font-size:16px}
.offer .valid{margin:0 0 18px;font-size:15px;color:var(--muted)}
.offer .valid b{font-weight:500}
.offer .btn{margin-top:auto;align-self:flex-start}
.offer-img{width:100%;height:auto;border-radius:10px;margin:0 0 16px}

/* ---------- 電子報期數 ---------- */
.issue-years{min-width:0}
.issue-year{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;padding:18px 0;border-top:1px solid var(--line)}
.issue-year:first-child{border-top:2px solid var(--ink)}
.issue-year h3{margin:0;font-size:18px;color:var(--blue-text)}
.issue-chips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;list-style:none;margin:0;padding:0}
@media (min-width:720px){.issue-year{grid-template-columns:80px minmax(0,1fr);gap:24px;align-items:start}.issue-chips{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1024px){.issue-chips{grid-template-columns:repeat(4,minmax(0,1fr))}}
.issue-chip{display:flex;align-items:center;justify-content:center;min-height:48px;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);text-decoration:none;font-weight:500;font-size:15px;text-align:center}
a.issue-chip:hover{border-color:var(--teal);color:var(--teal-text)}

/* ---------- 深色帶：電子報＋聯絡 ---------- */
.ink-grid{display:grid;gap:48px;grid-template-columns:minmax(0,1fr)}
@media (min-width:720px){.ink-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--col-gap)}}
@media (min-width:1024px){.ink-grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(40px,5vw,80px)}}
.band--ink .nl-latest .k{font-size:13px;font-weight:700;letter-spacing:.08em;color:var(--on-ink-muted);margin:0}
.band--ink .nl-month{margin:0 0 20px;color:var(--on-ink-muted)}
.band--ink .btn-primary{color:var(--on-teal)}
.contact dl{margin:0;display:grid;border-top:2px solid var(--on-ink-line)}
.contact .row{display:grid;grid-template-columns:4.5em minmax(0,1fr);gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--on-ink-line)}
.contact dt{font-size:14px;color:var(--on-ink-muted)}
.contact dd{margin:0;overflow-wrap:anywhere}
.contact dd a{display:inline-flex;align-items:center;min-height:44px;font-size:19px;font-weight:500}

/* ---------- 頁尾（覆寫 base 的兩端排法為三欄） ---------- */
.site-foot{padding:40px 0 48px}
.site-foot p{margin:0}
.site-foot .f-logo{height:44px;width:auto;margin:0 0 12px}
.site-foot .f-name{font-family:var(--serif);font-size:17px;font-weight:700;color:var(--ink)}
.site-foot .k{display:inline-block;min-width:5em;margin-right:8px;color:var(--muted)}
.site-foot a{color:var(--ink)}
.site-foot .f-links{display:flex;flex-wrap:wrap;gap:4px 20px;list-style:none;margin:0 0 6px;padding:0}
.site-foot .f-links a{display:inline-flex;align-items:center;min-height:40px}
.site-foot .wrap{gap:20px}
@media (min-width:1024px){
  .site-foot .wrap{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr);align-items:start;gap:12px var(--col-gap)}
  .site-foot .f-links{justify-content:flex-end}
}

/* 手機底部報名列：只在單場活動頁有報名連結時出現 */
.sticky .meta{margin:0}

/* ---------- 真內容新增欄位（timeline、people、優惠、電子報） ---------- */
.people--photo .pb{min-width:0}
.people--photo .role{display:inline-block;margin:0 0 6px;padding:1px 8px;border-radius:6px;background:var(--surface-2);font-size:13px;font-weight:700;color:var(--teal-text)}
.band--alt .people--photo .role{background:var(--bg)}
.people--photo h3{font-size:19px;line-height:1.45;margin:0 0 4px}
.people--photo h3 .name-en{display:block;font-size:14px;font-weight:500;color:var(--muted);letter-spacing:.02em}
.people--photo .committee{margin:0 0 8px;font-size:14px;line-height:1.6;color:var(--teal-text);font-weight:500}
.people--photo .lines{list-style:none;margin:0;padding:8px 0 0;border-top:1px solid var(--line);font-size:15px;line-height:1.65;color:var(--ink)}
.people--photo .lines li + li{margin-top:2px}

.tl-body{min-width:0}
.tl-row h3 a{color:var(--ink)}
.tl-more{margin-top:6px}
.tl-more > summary{display:inline-flex;align-items:center;min-height:36px;cursor:pointer;color:var(--teal-text);font-size:15px;font-weight:500}
.tl-more p{margin:6px 0 0;font-size:15px;line-height:1.75;color:var(--ink);max-width:66ch}
.tl-imgs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}
.tl-imgs img{width:100%;height:auto;border-radius:10px;border:1px solid var(--line)}
.tl-all{margin-top:20px}
.tl-all > summary{list-style:none;cursor:pointer}
.tl-all > summary::-webkit-details-marker{display:none}
.tl-all[open] > summary{margin-bottom:12px}
.tl-head-imgs{display:none}
@media (min-width:1024px){
  .tl-head-imgs{display:grid;gap:12px;margin-top:24px}
  .tl-head-imgs img{width:100%;height:auto;border-radius:10px;border:1px solid var(--line)}
}

.news-row .valid{margin:4px 0 0;font-size:14px;color:var(--muted)}

.offer-head{display:flex;align-items:center;gap:14px;margin:0 0 12px}
.offer-logo{height:40px;width:auto;max-width:140px;object-fit:contain}
.offer-head .series{margin:0}
.offer-facts{margin:0 0 18px;display:grid;gap:8px;font-size:15px}
.offer-facts > div{display:grid;grid-template-columns:5.5em minmax(0,1fr);gap:8px;padding-top:8px;border-top:1px solid var(--line)}
.offer-facts dt{color:var(--muted)}
.offer-facts dd{margin:0}
.offer-facts code{font-family:ui-monospace,Menlo,monospace;font-size:15px;font-weight:700;padding:1px 6px;border-radius:6px;background:var(--surface-2);color:var(--ink);overflow-wrap:anywhere}

.issue-chips li{display:flex;flex-direction:column;gap:4px;min-width:0}
.issue-chip{flex-direction:column;gap:2px;line-height:1.4}
.issue-chip .ml{font-size:13px;font-weight:400;color:var(--muted)}
.issue-chips .alts{display:flex;flex-wrap:wrap;gap:0 10px;font-size:13px;justify-content:center}
.issue-chips .alts a{display:inline-flex;align-items:center;min-height:28px;color:var(--muted)}
.nl-card{display:grid;gap:18px}
.nl-cover{width:100%;height:auto;max-height:260px;object-fit:cover;object-position:top;border-radius:10px;border:1px solid var(--line)}
@media (min-width:1024px){.nl-card{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center}.nl-cover{max-height:none}}

/* 手機選單裡的語言列不吃選單大字樣式 */
.mmenu-panel .langs{align-items:center}
.mmenu-panel .langs a,.mmenu-panel .langs .pending{display:inline-flex;align-items:center;min-height:44px;font-size:16px;font-weight:400;color:var(--muted)}
.mmenu-panel .langs a[aria-current="true"]{color:var(--ink);font-weight:700}
.mmenu-panel .langs .pending{color:var(--muted)}
/* 長標籤（例：近期動態的來源單位）在窄欄內換行，不壓到標題 */
.news-row .tag{white-space:normal;max-width:100%;line-height:1.45;padding-top:3px;padding-bottom:3px}

/* 多段短內容的卡片格線（會員名錄 A 到 Z） */
.compact-card h3{font-family:var(--serif);font-size:20px;line-height:1.4;margin:0 0 12px;padding-bottom:10px;border-bottom:2px solid var(--ink)}
.compact-card .blocks > p{font-size:15px;line-height:1.7}
.compact-card .blk-links{grid-template-columns:minmax(0,1fr)}
.compact-card .link-card{min-height:44px;padding:8px 14px;font-size:15px}

/* 圖＋說明重複的卡片格線 */
.media-cards{list-style:none;margin:0;padding:0}
.media-card{display:flex;flex-direction:column;gap:12px;padding:14px}
.media-card > img{width:100%;height:auto;border-radius:10px;border:1px solid var(--line)}
.media-card .blk-links{grid-template-columns:minmax(0,1fr)}
.media-card .link-card{min-height:44px;padding:8px 12px;font-size:15px}
.media-card .blocks > p{font-size:15px}

/* 近期動態開頭第一張是白色 logo，淺底看不見，墊深色底（旗艦 10/19） */
.tl-head-imgs img:first-child{background:var(--ink);padding:14px}

/* 活動：八張這類三欄會留洞的數量，桌機改四欄 */
@media (min-width:1024px){.grid--4w{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (min-width:720px) and (max-width:1023px){.grid--4w{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* 沒有日期的活動：不畫日期方塊 */
.ev-top--nodate{grid-template-columns:minmax(0,1fr)!important}
.next-head--nodate{grid-template-columns:minmax(0,1fr)}
.date--y{justify-content:center;min-height:72px}
.date--y .d{font-size:22px!important}
/* 資訊格欄數跟著實際有的欄位數 */
@media (min-width:1024px){
  .facts--1{grid-template-columns:minmax(0,1fr)}
  .facts--2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .facts--3{grid-template-columns:repeat(3,minmax(0,1fr))}
}
/* 期限已過 */
.tag--muted{background:var(--surface-2);color:var(--muted)}
.valid.is-expired{color:var(--muted)}
@media (max-width:719px){
  .ev--nodate.card{grid-template-columns:minmax(0,1fr)}
  .ev--nodate .ev-a > *,.ev--nodate .ev-b > *,.ev--nodate .ev-top > :not(.date){grid-column:1}
}
.contact--solo > .sec-head{margin-bottom:0}

/* 規格 v1.1 第二條：同一資訊桌機只出現一次。首屏最近一場已顯示的活動、頂列已有的加入鈕，桌機隱藏；手機首屏右欄隱藏、頂列無加入鈕，所以照列（旗艦 10/19） */
@media (min-width:1024px){.dup-desk,.hide-desk{display:none!important}}

/* ==========================================================
   B 稿「臺灣資安產業的入口」（2026-10-19 晚）
   只用 base 的 token；卡片層次收斂成：首屏一張面板、活動卡、名錄列，其餘用細線分隔
   ========================================================== */
[hidden]{display:none!important}
.nb{display:inline-block;white-space:nowrap}
h1,h2,h3{text-wrap:balance}

/* ---------- 頂列：五項導覽＋大選單 ---------- */
.topbar .wrap{position:relative}
.mainnav > ul{gap:clamp(16px,2.1vw,36px)}
.mainnav > ul > li > a{font-size:16px}
.langs li + li::before{content:"／";color:var(--line-strong);margin:0 4px}
.langs a{min-width:24px;justify-content:center}
.mainnav .has-mega{position:static}
.mega{display:none;position:absolute;left:max(var(--gutter), env(safe-area-inset-left,0px));right:max(var(--gutter), env(safe-area-inset-right,0px));top:100%;z-index:40}
.has-mega:hover > .mega,.has-mega:focus-within > .mega{display:block}
.mega-in{display:grid;gap:clamp(28px,3vw,48px);padding:28px 32px 30px;background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--teal);border-radius:0 0 var(--radius) var(--radius);box-shadow:0 18px 40px rgba(21,55,52,.12)}
.mega-in.has-find{grid-template-columns:minmax(0,2.4fr) minmax(0,9.6fr)}
.mg-k{margin:0 0 12px;font-size:13px;font-weight:700;letter-spacing:.12em;color:var(--muted)}
.mg-links{list-style:none;margin:0;padding:0}
.mainnav .mg-links a{display:flex;align-items:center;min-height:40px;font-weight:500;box-shadow:none}
.mainnav .mg-links a[aria-current="page"]{color:var(--teal-text)}
.mg-cols{display:grid;gap:24px;grid-template-columns:repeat(4,minmax(0,1fr))}
.mg-cols--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.mainnav .mg-h{display:block;margin:0 0 6px;padding-bottom:8px;border-bottom:2px solid var(--line-strong);font-family:var(--serif);font-size:17px;font-weight:700;color:var(--ink)}
.mainnav .mg-col.is-made .mg-h{border-color:var(--teal)}
.mg-col ul{list-style:none;margin:0;padding:0}
.mainnav .mg-col li a{display:block;padding:5px 0;font-size:14px;line-height:1.5;color:var(--ink);white-space:normal}
.mainnav .mg-col li a:hover,.mainnav .mg-h:hover{color:var(--teal-text);text-decoration:underline}
.mg-proj{list-style:none;margin:0;padding:0;display:grid;gap:20px;grid-template-columns:repeat(3,minmax(0,1fr))}
.mg-proj--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.mainnav .mg-proj a{display:flex;flex-direction:column;gap:6px;height:100%;padding:18px 20px;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);white-space:normal}
.mainnav .mg-proj a:hover{border-color:var(--teal)}
.mg-proj b{font-family:var(--serif);font-size:18px;line-height:1.4}
.mg-proj span{font-size:14px;line-height:1.65;color:var(--muted)}
.mg-proj .host{margin-top:auto;padding-top:6px;color:var(--teal-text);font-weight:700}

/* ---------- 首屏 ---------- */
.hero--b .eyebrow{margin-bottom:22px}
.hero--b .eyebrow .org{display:inline-flex;align-items:center;gap:12px;font-size:15px;font-weight:700;letter-spacing:.1em;color:var(--teal-text)}
.hero--b .eyebrow .org::before{content:"";width:22px;height:3px;border-radius:2px;background:var(--gold)}
.hero--b h1{font-size:clamp(34px,4.6vw,66px);line-height:1.22;letter-spacing:.02em;margin-bottom:22px}
.hero--b .intro{max-width:30em}
.quick ul{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px;margin:28px 0 0;padding:8px 0 0;border-top:1px solid var(--line)}
.q-a{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none;font-weight:700;font-size:16px}
.q-a::after{content:"";flex:0 0 auto;width:7px;height:7px;border-top:2px solid var(--teal-text);border-right:2px solid var(--teal-text);transform:rotate(45deg)}
.q-a:hover{color:var(--teal-text)}
@media (min-width:720px){
  .quick ul{display:flex;flex-wrap:wrap;gap:4px 32px;border-top:0;padding-top:0}
  .q-a{border-bottom:0;min-height:44px;justify-content:flex-start}
}
.hero-panel{padding:clamp(24px,2.6vw,36px)}
.kfacts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.kfacts:has(> .kf:only-child){grid-template-columns:minmax(0,1fr)}
.kf{margin:0;padding:0 16px;border-left:1px solid var(--line);min-width:0}
.kf:first-child{padding-left:0;border-left:0}
.kf .n{display:block;font-family:var(--serif);font-size:clamp(30px,3vw,46px);font-weight:700;line-height:1.1;color:var(--ink)}
.kf .l{display:block;margin-top:8px;font-size:14px;line-height:1.55;color:var(--muted)}
.obar{margin-top:26px;padding-top:22px;border-top:1px solid var(--line)}
.obar .k{margin:0;font-size:13px;font-weight:700;letter-spacing:.1em;color:var(--muted)}
.ob{display:flex;gap:3px;height:10px;margin:12px 0 10px;border-radius:999px;overflow:hidden}
.ob-s{flex-basis:0}
/* 會員組成比例條：build.py 輸出 g-N（N 為整數百分比 1 到 100），CSP 不准 style 屬性所以用 class */
.ob-s.g-1{flex-grow:1}.ob-s.g-2{flex-grow:2}.ob-s.g-3{flex-grow:3}.ob-s.g-4{flex-grow:4}.ob-s.g-5{flex-grow:5}.ob-s.g-6{flex-grow:6}.ob-s.g-7{flex-grow:7}.ob-s.g-8{flex-grow:8}.ob-s.g-9{flex-grow:9}.ob-s.g-10{flex-grow:10}.ob-s.g-11{flex-grow:11}.ob-s.g-12{flex-grow:12}.ob-s.g-13{flex-grow:13}.ob-s.g-14{flex-grow:14}.ob-s.g-15{flex-grow:15}.ob-s.g-16{flex-grow:16}.ob-s.g-17{flex-grow:17}.ob-s.g-18{flex-grow:18}.ob-s.g-19{flex-grow:19}.ob-s.g-20{flex-grow:20}.ob-s.g-21{flex-grow:21}.ob-s.g-22{flex-grow:22}.ob-s.g-23{flex-grow:23}.ob-s.g-24{flex-grow:24}.ob-s.g-25{flex-grow:25}.ob-s.g-26{flex-grow:26}.ob-s.g-27{flex-grow:27}.ob-s.g-28{flex-grow:28}.ob-s.g-29{flex-grow:29}.ob-s.g-30{flex-grow:30}.ob-s.g-31{flex-grow:31}.ob-s.g-32{flex-grow:32}.ob-s.g-33{flex-grow:33}.ob-s.g-34{flex-grow:34}.ob-s.g-35{flex-grow:35}.ob-s.g-36{flex-grow:36}.ob-s.g-37{flex-grow:37}.ob-s.g-38{flex-grow:38}.ob-s.g-39{flex-grow:39}.ob-s.g-40{flex-grow:40}.ob-s.g-41{flex-grow:41}.ob-s.g-42{flex-grow:42}.ob-s.g-43{flex-grow:43}.ob-s.g-44{flex-grow:44}.ob-s.g-45{flex-grow:45}.ob-s.g-46{flex-grow:46}.ob-s.g-47{flex-grow:47}.ob-s.g-48{flex-grow:48}.ob-s.g-49{flex-grow:49}.ob-s.g-50{flex-grow:50}.ob-s.g-51{flex-grow:51}.ob-s.g-52{flex-grow:52}.ob-s.g-53{flex-grow:53}.ob-s.g-54{flex-grow:54}.ob-s.g-55{flex-grow:55}.ob-s.g-56{flex-grow:56}.ob-s.g-57{flex-grow:57}.ob-s.g-58{flex-grow:58}.ob-s.g-59{flex-grow:59}.ob-s.g-60{flex-grow:60}.ob-s.g-61{flex-grow:61}.ob-s.g-62{flex-grow:62}.ob-s.g-63{flex-grow:63}.ob-s.g-64{flex-grow:64}.ob-s.g-65{flex-grow:65}.ob-s.g-66{flex-grow:66}.ob-s.g-67{flex-grow:67}.ob-s.g-68{flex-grow:68}.ob-s.g-69{flex-grow:69}.ob-s.g-70{flex-grow:70}.ob-s.g-71{flex-grow:71}.ob-s.g-72{flex-grow:72}.ob-s.g-73{flex-grow:73}.ob-s.g-74{flex-grow:74}.ob-s.g-75{flex-grow:75}.ob-s.g-76{flex-grow:76}.ob-s.g-77{flex-grow:77}.ob-s.g-78{flex-grow:78}.ob-s.g-79{flex-grow:79}.ob-s.g-80{flex-grow:80}.ob-s.g-81{flex-grow:81}.ob-s.g-82{flex-grow:82}.ob-s.g-83{flex-grow:83}.ob-s.g-84{flex-grow:84}.ob-s.g-85{flex-grow:85}.ob-s.g-86{flex-grow:86}.ob-s.g-87{flex-grow:87}.ob-s.g-88{flex-grow:88}.ob-s.g-89{flex-grow:89}.ob-s.g-90{flex-grow:90}.ob-s.g-91{flex-grow:91}.ob-s.g-92{flex-grow:92}.ob-s.g-93{flex-grow:93}.ob-s.g-94{flex-grow:94}.ob-s.g-95{flex-grow:95}.ob-s.g-96{flex-grow:96}.ob-s.g-97{flex-grow:97}.ob-s.g-98{flex-grow:98}.ob-s.g-99{flex-grow:99}.ob-s.g-100{flex-grow:100}
.ob--product .ob-s,.ob-s.ob--product,.ob-l.ob--product i{background:var(--teal)}
.ob-s.ob--service,.ob-l.ob--service i{background:var(--blue)}
.ob-s.ob--reseller,.ob-l.ob--reseller i{background:var(--gold)}
.ob-s.ob--other,.ob-l.ob--other i{background:var(--line-strong)}
.ob-legend{list-style:none;margin:0;padding:0}
.ob-l a{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:12px;align-items:center;min-height:46px;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none;font-weight:500}
.ob-l:last-child a{border-bottom:0}
.ob-l i{width:12px;height:12px;border-radius:3px}
.ob-l .n{font-size:15px;color:var(--muted)}
.ob-l a:hover .t{color:var(--teal-text);text-decoration:underline}

/* ---------- 依需求找廠商：類別入口磚（細線格，不用陰影卡） ---------- */
.ct-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);border-top:2px solid var(--ink)}
@media (min-width:720px){.ct-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--col-gap)}}
@media (min-width:1024px){.ct-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.ct-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}}
.ct a{display:flex;flex-direction:column;gap:8px;height:100%;padding:22px 0 24px;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none}
.ct-h{display:flex;justify-content:space-between;gap:12px;font-family:var(--serif);font-size:clamp(19px,1.5vw,22px);font-weight:700;line-height:1.45}
.ct-h::after{content:"";flex:0 0 auto;width:8px;height:8px;margin-top:.6em;border-top:2px solid var(--teal-text);border-right:2px solid var(--teal-text);transform:rotate(45deg)}
.ct a:hover .ct-h{color:var(--teal-text)}
.ct-n{display:flex;flex-wrap:wrap;gap:2px 14px;font-size:14px;color:var(--muted)}
.ct-n b{color:var(--teal-text)}
.ct-logos{display:flex;align-items:center;gap:14px;margin-top:auto;padding-top:10px}
.ct-logos span{display:flex;align-items:center;flex:0 1 96px;height:36px;min-width:0}
.ct-logos img{max-height:32px;width:auto;max-width:100%;object-fit:contain}

/* ---------- 活動：最近一場橫式大卡＋行事曆 ---------- */
.ev.is-next{border-top:4px solid var(--teal)}
.ev-acts{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:auto}
.ev .ev-acts .btn{margin-top:0}
.ev-cal{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin:0}
.ics-a{display:inline-flex;align-items:center;min-height:36px;font-size:14px;color:var(--muted);text-decoration:underline}
.next-cal{margin-top:12px}
.next-cal .btn{flex:1 1 auto}
@media (min-width:1024px){.ev.is-wide .ev-b{display:flex;flex-direction:column}.ev.is-wide .ev-acts{margin-top:8px}}
.ev-body .where{margin-top:28px;padding-top:20px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px}
.ev-body .where .name{margin:0;font-weight:700}

/* ---------- 動態與消息：兩欄並排的精簡列 ---------- */
.dual{display:grid;gap:56px;grid-template-columns:minmax(0,1fr)}
@media (min-width:1024px){.dual{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(40px,5vw,80px)}}
.dual-col{min-width:0}
.dual-col .head-row .sec-head,.dual-col > .sec-head{margin-bottom:0}
.dual-col > .sec-head{margin-bottom:clamp(24px,3vw,40px)}
.cr-list{list-style:none;margin:0;padding:0;border-top:2px solid var(--ink)}
.cr{padding:16px 0;border-bottom:1px solid var(--line)}
.cr-m{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin:0 0 4px;font-size:14px;font-weight:700;color:var(--blue-text)}
.cr-m .tag{font-size:13px;font-weight:500;padding:0 10px;white-space:normal;line-height:1.6}
.band--alt .cr-m .tag{background:var(--bg)}
.cr h3{margin:0;font-size:17px;line-height:1.6;font-weight:500}
.cr h3 a{color:var(--ink);text-decoration:none}
.cr h3 a:hover{color:var(--teal-text);text-decoration:underline}

/* ---------- 協會專案 ---------- */
.ini-grid{list-style:none;margin:0;padding:0;display:grid;gap:32px var(--col-gap);grid-template-columns:minmax(0,1fr)}
@media (min-width:720px){.ini-grid--2,.ini-grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1024px){.ini-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}}
.ini{display:flex;flex-direction:column;gap:10px;padding-top:20px;border-top:3px solid var(--teal);min-width:0}
.ini h3{margin:0;font-family:var(--serif);font-size:21px;line-height:1.4}
.ini p{margin:0;font-size:15px;line-height:1.8}
.ini-a{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-top:auto;padding-top:6px;min-height:44px;font-weight:700}
.ini-a .host{font-size:14px;font-weight:400;color:var(--muted)}
.ini-logo{height:40px;width:auto;object-fit:contain}

/* ---------- 關於 TWISA（信任區） ---------- */
.ab-links{list-style:none;margin:28px 0 0;padding:0;border-top:1px solid var(--line)}
.arrow-link{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none;font-weight:500}
.arrow-link::after{content:"";width:7px;height:7px;border-top:2px solid var(--teal-text);border-right:2px solid var(--teal-text);transform:rotate(45deg)}
.arrow-link:hover{color:var(--teal-text)}
.ab-grid{display:grid;gap:32px;grid-template-columns:minmax(0,1fr)}
@media (min-width:1024px){.ab-grid{grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:clamp(32px,4vw,64px);align-items:start}}
.ab-p{margin:0 0 28px;font-size:clamp(17px,1.35vw,19px);line-height:1.85;max-width:66ch}
.pillars{list-style:none;margin:0;padding:0;border-top:2px solid var(--ink)}
.pillars li{display:grid;grid-template-columns:2.6em minmax(0,1fr);gap:14px;align-items:baseline;padding:14px 0;border-bottom:1px solid var(--line);font-size:16px}
.pillars .n{font-family:var(--serif);font-size:30px;font-weight:700;line-height:1;color:var(--teal-text)}
.ab-fig{margin:0}
.ab-fig img{width:100%;max-width:340px;height:auto;border-radius:var(--radius)}
.ab-side .kfacts{margin-top:24px}
@media (max-width:719px){.ab-fig{display:none}.kf .n{font-size:28px}.kf{padding:0 10px}}

/* ---------- 深色帶：電子報（左標右文） ---------- */
.nl-band > .ink-col{display:contents}


/* ---------- 會員名錄（分類版） ---------- */
.dir-grid{display:grid;gap:24px;grid-template-columns:minmax(0,1fr)}
@media (min-width:1024px){
  .dir-grid{grid-template-columns:minmax(0,3fr) minmax(0,9fr);gap:clamp(40px,5vw,80px);align-items:start}
  .dir-nav{position:sticky;top:84px;max-height:calc(100vh - 100px);overflow:auto;padding-right:4px}
}
.dir-nav-d > summary{list-style:none;display:flex;align-items:center;justify-content:space-between;min-height:50px;padding:0 18px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);font-weight:700;cursor:pointer}
.dir-nav-d > summary::-webkit-details-marker{display:none}
.dir-nav-d > summary::after{content:"";width:8px;height:8px;border-right:2px solid var(--teal-text);border-bottom:2px solid var(--teal-text);transform:rotate(45deg) translateY(-2px)}
.dir-nav-d[open] > summary{margin-bottom:12px}
.dir-nav ul{list-style:none;margin:0;padding:0}
.dir-nav > details > ul{border-top:2px solid var(--ink)}
.dn-g{padding:14px 0 12px;border-bottom:1px solid var(--line)}
.dn-h{display:flex;align-items:center;gap:8px;margin-bottom:4px;font-family:var(--serif);font-size:17px;font-weight:700;color:var(--ink);text-decoration:none}
.dn-h::before{content:"";width:10px;height:10px;border-radius:3px;background:var(--line-strong)}
.dn-g.is-made .dn-h::before{background:var(--teal)}
.dn-g:nth-child(2).is-made .dn-h::before{background:var(--blue)}
.dn-g li a{display:flex;justify-content:space-between;gap:12px;padding:5px 0 5px 18px;font-size:14px;line-height:1.5;color:var(--ink);text-decoration:none}
.dn-g li a:hover,.dn-h:hover{color:var(--teal-text);text-decoration:underline}
.dn-g li .n{color:var(--muted)}
.dir-filter{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;margin:0 0 24px;padding:10px 12px 10px 18px;background:var(--surface-2);border-radius:var(--radius-sm)}
.band--alt .dir-filter{background:var(--surface)}
.dir-filter b{color:var(--teal-text)}
.dir-note{margin:-8px 0 20px;font-size:.875rem;color:var(--muted);line-height:1.6}
.dir-group + .dir-group{margin-top:clamp(48px,5vw,72px)}
.dg-h{margin:0;padding-bottom:12px;border-bottom:2px solid var(--ink);font-family:var(--serif);font-size:clamp(24px,2.2vw,32px);line-height:1.3}
.dir-group.is-made .dg-h{border-color:var(--teal)}
.dg-h .n{margin-left:6px;font-family:var(--sans);font-size:15px;font-weight:500;color:var(--muted)}
.dir-cat{padding-top:28px}
.dir-cat .anchor{display:block;height:0}
.dir-cat h3{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:0 0 2px;font-size:18px;line-height:1.5}
.dir-cat h3 .n{font-size:14px;font-weight:500;color:var(--muted)}
.de-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);column-gap:var(--col-gap)}
@media (min-width:720px){.de-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
.de{display:grid;grid-template-columns:104px minmax(0,1fr);gap:16px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line);min-width:0}
.de-logo{display:flex;align-items:center;justify-content:center;width:104px;height:56px;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.de-logo img{max-height:40px;max-width:100%;width:auto;object-fit:contain}
.de-logo.is-text{font-family:var(--serif);font-weight:700;color:var(--teal-text)}
.de-b{min-width:0}
.de-name{margin:0;font-size:16px;font-weight:700;line-height:1.5}
.de-off{margin:2px 0 0;font-size:14px;line-height:1.6;color:var(--muted)}
.de-site{display:inline-flex;align-items:center;min-height:32px;font-size:14px;font-weight:500;overflow-wrap:anywhere}

/* ---------- 頁尾：網站地圖＋聯絡（大字 email、可複製；地址分行附地圖） ---------- */
.site-foot{padding-top:0}
.sitemap{padding:44px 0 36px;margin-bottom:36px;border-bottom:1px solid var(--line)}
.site-foot .sitemap .wrap{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px var(--col-gap)}
@media (min-width:720px){.site-foot .sitemap .wrap{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1024px){.site-foot .sitemap .sm-grid--5{grid-template-columns:repeat(5,minmax(0,1fr))}.site-foot .sitemap .wrap > :last-child{text-align:left}}
.sm-h{margin:0 0 8px;font-size:14px;font-weight:700;letter-spacing:.08em;color:var(--ink)}
.sitemap ul{list-style:none;margin:0;padding:0}
.site-foot .sitemap a{display:inline-flex;align-items:center;min-height:36px;color:var(--muted);text-decoration:none;font-size:15px;line-height:1.45}
.site-foot .sitemap a:hover{color:var(--ink);text-decoration:underline}
.site-foot .wrap > .f-social{text-align:left}
@media (min-width:1024px){.site-foot > .wrap{grid-template-columns:minmax(0,1.15fr) minmax(0,1.25fr) minmax(0,1.4fr) minmax(0,.8fr);gap:24px var(--col-gap)}}
.site-foot .k{display:block;min-width:0;margin:0 0 4px;font-size:13px;font-weight:700;letter-spacing:.08em;color:var(--muted)}
.site-foot .f-reg .k{display:inline-block;margin:0 8px 0 0}
.f-contact > div + div{margin-top:18px}
.f-mail-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.site-foot .f-email{font-size:clamp(20px,1.7vw,24px);font-weight:700;line-height:1.35;color:var(--ink);text-decoration:none;overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}
.site-foot .f-email:hover{text-decoration:underline}
.f-copybtn{min-height:44px}
.f-copybtn.is-done{background:var(--teal);border-color:var(--teal);color:var(--on-teal)}
@media (max-width:719px){.f-copybtn{min-height:48px;min-width:96px}}
.f-phone a{display:inline-flex;align-items:center;min-height:40px;font-size:18px;font-weight:500}
.f-addr + .f-addr{margin-top:16px}
.site-foot .f-addr .v{color:var(--ink);font-size:15px;line-height:1.65}
.site-foot .f-map{display:inline-flex;align-items:center;gap:6px;min-height:40px;font-size:14px;font-weight:700;color:var(--teal-text)}
.f-map::after{content:"↗";font-weight:400}
.site-foot .f-links{flex-direction:column;gap:0;justify-content:flex-start}
.site-foot .soc{display:inline-flex;align-items:center;gap:10px;min-height:40px;color:var(--ink);text-decoration:none}
.site-foot .soc:hover span{text-decoration:underline}
.site-foot .soc svg{flex:0 0 auto;color:var(--teal-text)}
.site-foot .f-copy.num,.site-foot p.f-copy{margin-top:12px}

@media (min-width:1024px){.dir-nav-d > summary{display:none}}
.de-also{margin:14px 0 0;font-size:14px;line-height:1.75;color:var(--muted)}
.de-also .k{font-weight:700;margin-right:4px}
.de-also a{color:var(--teal-text)}
.nl-band .nl-latest{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px var(--col-gap)}
.nl-band .nl-latest .k{flex-basis:100%}
.nl-band .nl-latest .nl-issue{margin:0}
.nl-band .nl-latest .nl-month{margin:0;flex:1 1 auto}
/* 名錄快速介紹（會員手冊摘錄）：原生 details，一張卡內展開 */
.de{align-items:start}
.de-logo{margin-top:4px}
.de-more{margin-top:4px}
.de-more > summary{display:inline-flex;align-items:center;gap:6px;min-height:36px;cursor:pointer;font-size:14px;font-weight:700;color:var(--teal-text);list-style:none}
.de-more > summary::-webkit-details-marker{display:none}
.de-more > summary::after{content:"";width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px)}
.de-more[open] > summary::after{transform:rotate(-135deg) translateY(-1px)}
.de-pf{margin-top:6px;padding:14px 16px;border-left:3px solid var(--teal);background:var(--surface-2);border-radius:0 10px 10px 0}
.band--alt .de-pf{background:var(--surface)}
.de-pf p{margin:0}
.de-legal{font-weight:700;font-size:15px;margin-bottom:4px!important}
.de-intro{font-size:15px;line-height:1.75}
.de-src{margin-top:6px!important;font-size:13px;color:var(--muted)}
.de-cat{margin-top:6px!important;font-size:13px;color:var(--muted)}
.de-cat span{font-weight:700;margin-right:8px}
.next-card .next-cal .btn{width:auto}

/* HrJ 2026-10-19 23:40「我不要兩邊有空白的設計／講過幾次了／要滿版」（HRJ-202610192340-bbc670）：內容容器不設上限，任何寬度都只留側距 --gutter，取代規格 1440 上限。 */
:root{--container:calc(100vw - 2 * var(--gutter))}
.wrap{max-width:none}

/* 卡片格線區塊（機關、委員會、目標）；logo 小圖、不放大（HrJ 23:42「圖放太大了 很難看還變模糊」） */
.org-cards{list-style:none;margin:0;padding:0}
.org-card{display:flex;flex-direction:column;gap:10px}
.org-card h3{margin:0;font-size:19px;line-height:1.5}
.org-card p{margin:0}
.org-logo{height:56px;display:flex;align-items:center}
.org-logo img{max-height:56px;max-width:100%;width:auto;height:auto;object-fit:contain}
.org-links{margin-top:auto !important;display:flex;flex-wrap:wrap;gap:6px 16px}
.org-link{color:var(--teal-text);font-weight:500}
/* 內文圖片一律不放大超過原始尺寸 */
.blk-img img{width:auto;max-width:100%;height:auto}

/* 十大分類磚（HrJ 23:53）：編號、客戶端說明、空類別淡化 */
.ct-no{display:block;font-size:13px;letter-spacing:.12em;color:var(--teal-text);margin-bottom:4px}
.ct-note{display:block;font-size:14px;line-height:1.6;color:var(--muted);margin:6px 0 10px}
.ct--empty .ct-h{color:var(--muted)}
@media (min-width:1024px){.ct-grid--5{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media (min-width:720px) and (max-width:1023px){.ct-grid--5{grid-template-columns:repeat(2,minmax(0,1fr))}}

.org-links .btn{color:var(--teal-text)}

/* 表單投稿即時串接（form-feed.js）：新項目沒有單篇頁，卡片內用原生 details 展開內文；樣式同名錄 .de-more */
.ff-more{margin-top:4px}
.ff-more > summary{display:inline-flex;align-items:center;gap:6px;min-height:44px;cursor:pointer;font-size:15px;font-weight:700;color:var(--teal-text);list-style:none}
.ff-more > summary::-webkit-details-marker{display:none}
.ff-more > summary::after{content:"";width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px)}
.ff-more[open] > summary::after{transform:rotate(-135deg) translateY(-1px)}
.ff-body{padding-top:8px}
.ff-body p{margin:0 0 12px;line-height:1.75}
.ff-body h4{margin:16px 0 8px}
.ff-img{display:block;max-width:100%;height:auto;border-radius:var(--radius-sm);margin:0 0 12px}
.ev-acts .ff-more{width:100%}

/* 卡片格線不撐同高、間距收緊（HrJ 23:56「太長太空了吧」） */
.org-cards{align-items:start}
.org-card{gap:8px;padding:20px 22px}
.org-card h3{font-size:17px}
.org-logo{height:44px}
.org-logo img{max-height:44px}
.org-links{margin-top:6px !important}
.org-more > summary{cursor:pointer;color:var(--teal-text);font-size:15px;font-weight:500;min-height:32px;display:inline-flex;align-items:center}
.org-more[open] > summary{margin-bottom:6px}
.org-more p,.org-more li{font-size:15px}

/* 提示詞複製區塊（HrJ 00:44） */
.copy-blk{margin:0;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);padding:16px 18px;display:flex;flex-direction:column;gap:12px;max-width:none}
.copy-blk pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:15px;line-height:1.75;color:var(--ink)}
.copy-blk .btn{align-self:flex-start}
.fold > summary{cursor:pointer;color:var(--teal-text);font-weight:500;min-height:40px;display:flex;align-items:center}

/* 活動系列入口與日期清單分開，首頁沿用活動區。 */
.event-series{margin-top:32px}
.event-series>h2{font-size:clamp(22px,2vw,28px);line-height:1.4;margin:0 0 20px}
.page-events #event-series .event-series{margin-top:0}

/* 資安告警與 AI 風險專欄，各有獨立索引與首頁入口。 */
.publication-header{padding:clamp(36px,5vw,64px) 0 28px;background:var(--surface-2);border-bottom:1px solid var(--line)}
.publication-header h1{font-family:var(--serif);font-size:clamp(32px,4vw,48px);line-height:1.3;margin:10px 0 16px}
.publication-header .intro{max-width:60em;color:var(--muted);font-size:17px;line-height:1.8;margin:0}
.publication-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:36px}
.publication-col{min-width:0;border-top:4px solid var(--teal-text);padding-top:20px}
.publication-col--security-alerts{border-top-color:var(--gold)}
.publication-col h2{font-family:var(--serif);font-size:clamp(25px,2.5vw,32px);line-height:1.4;margin:0}
.publication-col .head-row{margin-bottom:12px}
.publication-lead{font-size:15px;line-height:1.75;color:var(--muted);margin:0 0 20px}
.publication-col .news-row{grid-template-columns:auto 1fr;gap:8px 14px;align-items:center;padding:20px 0}
.publication-col .news-row .nb{grid-column:1 / -1}
.publication-col .news-rows{border-top:1px solid var(--line)}
.mmenu-panel a.is-section{color:var(--teal-text)}
@media(min-width:1024px){.publication-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:48px}}

.news-row .nb{min-width:0;white-space:normal;overflow-wrap:anywhere}

/* 首頁消息同排呈現協會消息、資安告警、AI風險專欄。 */
.publication-col--news{border-top-color:var(--ink)}
@media(min-width:1024px){
  .publication-grid--news{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:32px}
  .publication-grid--news .head-row{gap:10px}
  .publication-grid--news .head-row h2{font-size:clamp(23px,2vw,30px)}
}
@supports(grid-template-rows:subgrid){
  @media(min-width:1024px){
    .publication-grid--news{grid-template-rows:repeat(3,auto);row-gap:0}
    .publication-grid--news>.publication-col{display:grid;grid-row:span 3;grid-template-rows:subgrid;row-gap:0}
    .publication-grid--news .head-row{grid-row:1}
    .publication-grid--news .publication-lead{grid-row:2}
    .publication-grid--news .news-rows{grid-row:3}
  }
}

/* Data-backed capabilities entry: compact white first screen, existing directory/cards. */
.energy-intro{padding:28px 0 12px;background:var(--surface)}
.energy-intro h1{font-size:clamp(28px,3vw,42px);line-height:1.25;margin:0 0 10px}
.energy-intro p{margin:0;max-width:70ch;color:var(--muted)}
.energy-links{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:14px;font-weight:700}
.page-energy .band{background:var(--surface);padding-top:28px;padding-bottom:32px}
.page-energy .sec-head{margin-bottom:20px}
.energy-search{margin:16px 0 20px;max-width:720px}
.energy-search label{display:block;font-weight:700;margin-bottom:6px}
.energy-search input{width:100%;min-height:48px;padding:10px 14px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit}
.energy-search input:focus-visible{outline:3px solid var(--teal);outline-offset:2px}
.dir-result{margin:6px 0 0;color:var(--muted);font-size:14px;min-height:1.5em}
.dir-empty{padding:20px;border:1px solid var(--line);border-radius:8px}
.page-energy .de-off{color:var(--ink)}
.page-energy .dir-cat:first-of-type{padding-top:16px}
@media(max-width:719px){.energy-intro{padding-top:20px}.page-energy .band{padding-top:20px}.page-energy .dir-note{font-size:12px}.page-energy .de{grid-template-columns:80px minmax(0,1fr);gap:12px}.page-energy .de-logo{width:80px}.energy-links{font-size:14px}.page-energy .sec-head h2{font-size:24px}}
