/* ==========================================================
   明逸資訊 官方網站 - 前台樣式 (v4：簡約清新、專業形象)
   設計原則：白底、細線條、單一品牌色、少裝飾、少動畫
   品牌色可在後台「網站設定 → 基本資料」調整 (--tw-primary)
   ========================================================== */
:root{
  --tw-primary:#1f5a96;
  --tw-blue:var(--tw-primary);
  --tw-navy:color-mix(in srgb,var(--tw-primary) 78%,#0b1b2e);
  --tw-sky:color-mix(in srgb,var(--tw-primary) 7%,#fff);
  --tw-bg:#ffffff; --tw-alt:#f6f8fa; --tw-card:#ffffff; --tw-border:#e3e8ee; --tw-text:#1f2933; --tw-muted:#667085;
  --tw-radius:8px;
  --tw-shadow:none;
  --tw-shadow-lg:0 8px 28px rgba(16,24,40,.12);
}
[data-bs-theme=dark]{
  --tw-bg:#0f1720; --tw-alt:#131d28; --tw-card:#16212d; --tw-border:#263443; --tw-text:#e5eaf0; --tw-muted:#94a3b8;
  --tw-sky:#1a2736; --tw-navy:#0b1219;
}
html{scroll-behavior:smooth}
body{font-family:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--tw-bg);color:var(--tw-text);line-height:1.75;-webkit-font-smoothing:antialiased}
a{color:var(--tw-primary);text-underline-offset:3px}
[data-bs-theme=dark] a{color:#8cbcff}
img{max-width:100%}
.skip-link{position:absolute;left:-999px;top:8px;background:#000;color:#fff;padding:.5rem 1rem;border-radius:6px;z-index:2000}
.skip-link:focus{left:8px}
:focus-visible{outline:2px solid color-mix(in srgb,var(--tw-primary) 60%,transparent);outline-offset:2px;border-radius:4px}
[hidden]{display:none!important}

/* ---------- 回頂端 / Toast ---------- */
.read-progress{display:none}
.to-top{position:fixed;right:18px;bottom:22px;width:40px;height:40px;border:1px solid var(--tw-border);border-radius:50%;background:var(--tw-card);color:var(--tw-text);font-size:16px;z-index:1500;opacity:0;transform:translateY(10px);transition:.2s}
.to-top.show{opacity:1;transform:none}
.to-top:hover{border-color:var(--tw-primary);color:var(--tw-primary)}
.toast-wrap{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:2200;display:grid;gap:8px}
.tw-toast{background:#1f2933;color:#fff;padding:.5rem 1rem;border-radius:6px;font-size:.9rem}

/* ---------- 頂部資訊列 + 導覽列 ---------- */
.topbar{background:var(--tw-alt);color:var(--tw-muted);font-size:.8rem;padding:.3rem 0;border-bottom:1px solid var(--tw-border)}
.topbar a{color:var(--tw-muted);text-decoration:none;margin-left:1.2rem}
.topbar a:hover{color:var(--tw-primary)}
.site-nav{position:sticky;top:0;z-index:1040;background:var(--tw-card);border-bottom:1px solid var(--tw-border)}
.site-nav .navbar{padding:.45rem 0}
.navbar-brand{display:flex;align-items:center;gap:.6rem;font-weight:700;color:var(--tw-text)!important;margin-right:1.5rem}
.brand-logo{height:40px;width:auto}
.brand-text{font-size:1.05rem;line-height:1.2;white-space:nowrap}
.site-nav .navbar-nav{flex-wrap:nowrap}
.site-nav .nav-link{color:var(--tw-text);font-weight:500;font-size:.95rem;padding:.6rem .75rem!important;white-space:nowrap;position:relative}
.site-nav .nav-link::after{content:"";position:absolute;left:.75rem;right:.75rem;bottom:.15rem;height:2px;background:var(--tw-primary);transform:scaleX(0);transition:transform .18s;transform-origin:left}
.site-nav .nav-link:hover::after,.site-nav .nav-link.active::after{transform:scaleX(1)}
.site-nav .nav-link:hover,.site-nav .nav-link.active,.site-nav .nav-link.show{color:var(--tw-primary)}
.site-nav .dropdown-toggle::after{border-width:.28em .28em 0;margin-left:.4em;vertical-align:.12em}
.site-nav .nav-link.dropdown-toggle::after{position:static;display:inline-block;height:0;background:none;transform:none;border-top-color:currentColor}
.dropdown-menu{border:1px solid var(--tw-border);border-radius:var(--tw-radius);box-shadow:var(--tw-shadow-lg);background:var(--tw-card);--bs-dropdown-link-active-bg:var(--tw-sky);--bs-dropdown-link-active-color:var(--tw-primary)}
.dropdown-item{color:var(--tw-text);font-size:.92rem}
.dropdown-item:hover{background:var(--tw-sky);color:var(--tw-primary)}
.more-menu{min-width:11rem;padding:.35rem}
.more-menu .dropdown-item{border-radius:6px;padding:.4rem .7rem}
.ext-mark{margin-left:.35rem;color:var(--tw-muted);font-size:.8em}
.btn-brand{background:var(--tw-primary);border:1px solid var(--tw-primary);color:#fff;font-weight:500;border-radius:6px;padding:.4rem 1rem}
.btn-brand:hover,.btn-brand:focus{background:color-mix(in srgb,var(--tw-primary) 85%,#000);border-color:color-mix(in srgb,var(--tw-primary) 85%,#000);color:#fff}
.btn-brand:disabled{opacity:.65}
.btn-outline-brand{border:1px solid var(--tw-primary);color:var(--tw-primary);border-radius:6px;background:transparent}
.btn-outline-brand:hover{background:var(--tw-primary);color:#fff}
.icon-btn{border:0;background:transparent;color:var(--tw-muted);width:38px;height:38px;border-radius:6px;display:inline-grid;place-items:center}
.icon-btn:hover{background:var(--tw-sky);color:var(--tw-primary)}
.i-sun{display:none}
[data-bs-theme=dark] .i-sun{display:block}
[data-bs-theme=dark] .i-moon{display:none}
.navbar-toggler{border:1px solid var(--tw-border);padding:.3rem .5rem}
[data-bs-theme=dark] .navbar-toggler-icon{filter:invert(1)}

/* 大型下拉選單 (公告分類設為「下拉選單」時) */
.has-mega{position:static}
.mega-menu{width:min(960px,calc(100vw - 24px));left:50%!important;right:auto!important;transform:translateX(-50%);padding:1.1rem 1.3rem .5rem;margin-top:.4rem}
.mega-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1rem 1.6rem}
.mega-head{font-size:.78rem;font-weight:700;color:var(--tw-muted);letter-spacing:.08em;border-bottom:1px solid var(--tw-border);padding-bottom:.3rem;margin-bottom:.3rem}
.mega-menu .dropdown-item{border-radius:6px;padding:.3rem .5rem;white-space:normal}
.mega-foot{border-top:1px solid var(--tw-border);margin-top:.8rem;padding:.55rem 0;text-align:right;font-size:.9rem}
@media (max-width:1199.98px){
  .site-nav .navbar-collapse{padding:.5rem 0 1rem;border-top:1px solid var(--tw-border);margin-top:.5rem}
  .site-nav .navbar-nav{flex-wrap:wrap}
  .mega-menu{position:static!important;transform:none!important;width:100%;box-shadow:none;border:0;padding:.2rem .6rem}
  .site-nav .nav-link::after{display:none}
  .more-menu{box-shadow:none;border:0;padding-left:.6rem}
}

/* ---------- 搜尋浮層 ---------- */
.search-overlay{position:fixed;inset:0;background:rgba(15,23,32,.45);z-index:2000;display:flex;justify-content:center;align-items:flex-start;padding:9vh 14px 0}
.search-overlay[hidden]{display:none}
.search-box{width:min(660px,100%);background:var(--tw-card);border-radius:10px;box-shadow:var(--tw-shadow-lg);overflow:hidden}
.search-input-wrap{display:flex;align-items:center;gap:.7rem;padding:.85rem 1.1rem;border-bottom:1px solid var(--tw-border);color:var(--tw-muted)}
.search-input-wrap input{flex:1;border:0;background:transparent;font-size:1.05rem;color:var(--tw-text);outline:0;min-width:0}
.search-close{border:1px solid var(--tw-border);background:transparent;color:var(--tw-muted);border-radius:4px;font-size:.72rem;padding:.1rem .45rem}
.search-results{max-height:55vh;overflow:auto;padding:.4rem}
.search-hint{padding:1.2rem;color:var(--tw-muted);font-size:.9rem;text-align:center}
.sr-item{display:flex;gap:.7rem;align-items:baseline;padding:.55rem .8rem;border-radius:6px;text-decoration:none;color:var(--tw-text)}
.sr-item:hover,.sr-item.sel{background:var(--tw-sky)}
.sr-item .t{flex:1;min-width:0}
.sr-item .d{font-size:.78rem;color:var(--tw-muted);white-space:nowrap}
.sr-more{display:block;text-align:center;padding:.7rem;font-size:.9rem}
mark{background:#fff1c2;color:#5b4300;padding:0 .1em;border-radius:2px}

/* ---------- 首頁 ---------- */
.hero{padding:1.5rem 0 0}
.hero-carousel{border-radius:var(--tw-radius);overflow:hidden;background:var(--tw-alt);border:1px solid var(--tw-border)}
.hero-slide{display:block;position:relative;color:#fff}
.hero-slide img{width:100%;height:100%;display:block;object-fit:cover}
.hero-cap{position:absolute;left:0;right:0;bottom:0;padding:1.6rem 1.4rem .9rem;background:linear-gradient(transparent,rgba(0,0,0,.5));font-weight:500;font-size:1rem}
.hero-carousel .carousel-indicators [data-bs-target]{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px}
.hero-plain{background:var(--tw-sky);color:var(--tw-text);padding:3.5rem 0;text-align:center;border-bottom:1px solid var(--tw-border)}
.hero-plain h1{font-weight:700;letter-spacing:2px;font-size:1.8rem}
.hero-plain p{margin:0;color:var(--tw-muted)}
.home-body{padding-top:2rem;padding-bottom:3rem}
/* 首頁版面 (後台「首頁版面」可調整)：每一列為一個 container，欄內元件由上而下排列 */
.home-row{padding-top:1.4rem}
.home-row.home-first{padding-top:2rem}
.home-row.home-last{padding-bottom:3rem}
.home-widget+.home-widget{margin-top:1.1rem}
.page-row+.page-row{margin-top:1.4rem}
.home-widget>.side-card:last-child,.home-widget>.block-card:last-child{margin-bottom:0}
.hero-plain-card{border:1px solid var(--tw-border);border-radius:var(--tw-radius)}

/* ---------- 區塊標題 / 卡片 ---------- */
.section-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.9rem;padding-bottom:.6rem;border-bottom:1px solid var(--tw-border)}
.section-title{font-size:1.2rem;font-weight:700;margin:0;color:var(--tw-text)}
.section-title.sm{font-size:1.05rem;margin-bottom:.9rem;padding-bottom:.5rem;border-bottom:1px solid var(--tw-border)}
.section-more{font-size:.88rem;text-decoration:none;font-weight:500}
.section-more:hover{text-decoration:underline}
.side-card,.block-card,.article-card{background:var(--tw-card);border:1px solid var(--tw-border);border-radius:var(--tw-radius);padding:1.1rem 1.2rem;margin-bottom:1.1rem}
.article-card{padding:1.8rem 2rem}
.side-title,.block-title{font-size:1rem;font-weight:700;margin:0 0 .7rem;padding-bottom:.55rem;border-bottom:1px solid var(--tw-border)}
.side-list{list-style:none;margin:0 0 .4rem;padding:0}
.side-list a{display:flex;justify-content:space-between;gap:.8rem;padding:.5rem 0;border-bottom:1px solid var(--tw-border);text-decoration:none;color:var(--tw-text);font-size:.92rem}
.side-list li:last-child a{border-bottom:0}
.side-list a:hover .t{color:var(--tw-primary)}
.side-list .t{flex:1;min-width:0}
.side-list .d{color:var(--tw-muted);font-size:.78rem;white-space:nowrap;padding-top:.15rem}
.sticky-side{position:sticky;top:84px}
.ico-lock{vertical-align:-.12em;opacity:.7}
.mini-timeline{list-style:none;margin:0 0 .6rem;padding:0 0 0 .9rem;border-left:2px solid var(--tw-border)}
.mini-timeline li{position:relative;padding:.3rem 0 .6rem .8rem}
.mini-timeline li::before{content:"";position:absolute;left:-1.42rem;top:.8rem;width:9px;height:9px;border-radius:50%;background:var(--tw-primary);border:2px solid var(--tw-card)}
.mini-timeline .when{display:block;font-size:.78rem;font-weight:700;color:var(--tw-primary)}
.content-block img{max-width:100%;height:auto;border-radius:6px}
.content-block iframe{max-width:100%}
.quick-zone{background:var(--tw-alt);padding:2.2rem 0 1.2rem;margin-top:1rem;border-top:1px solid var(--tw-border)}
.quick-zone .block-card{margin-bottom:0}
.quick-zone .content-block img{margin:2px}

/* ---------- 公告即時篩選面板 ---------- */
.news-panel{background:var(--tw-card);border:1px solid var(--tw-border);border-radius:var(--tw-radius);padding:1.1rem}
.filter-search{position:relative;display:flex;align-items:center;background:var(--tw-card);border:1px solid var(--tw-border);border-radius:6px;padding:0 .8rem;color:var(--tw-muted);transition:border-color .15s,box-shadow .15s}
.filter-search:focus-within{border-color:var(--tw-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--tw-primary) 14%,transparent)}
.filter-search input{flex:1;border:0;background:transparent;padding:.6rem .6rem;color:var(--tw-text);outline:0;min-width:0}
.filter-clear{border:0;background:transparent;color:var(--tw-muted);font-size:1.3rem;line-height:1}
.chip-row{display:flex;gap:.4rem;overflow-x:auto;padding:.7rem 0 .2rem;scrollbar-width:thin;flex-wrap:wrap}
.chip{border:1px solid var(--tw-border);background:var(--tw-card);color:var(--tw-text);border-radius:999px;padding:.2rem .8rem;font-size:.85rem;white-space:nowrap;transition:.15s}
.chip small{margin-left:.4rem;opacity:.55;font-size:.72rem}
.chip:hover{border-color:var(--tw-primary);color:var(--tw-primary)}
.chip.active{background:var(--tw-primary);border-color:var(--tw-primary);color:#fff}
.chip.active small{opacity:.85}
.chip-tag{--tag-bg:#64748b;--tag-fg:#fff;font-size:.8rem;padding:.12rem .7rem}
.chip-tag .dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--tag-bg);margin-right:.4rem}
.chip-tag.active{background:var(--tag-bg);border-color:var(--tag-bg);color:var(--tag-fg)}
.chip-tag.active .dot{background:var(--tag-fg)}
.filter-row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding-top:.7rem;font-size:.86rem;color:var(--tw-muted)}
.date-field input{border:1px solid var(--tw-border);background:var(--tw-card);color:var(--tw-text);border-radius:6px;padding:.2rem .5rem;font-size:.86rem}
.switch-field{margin-left:auto;cursor:pointer;user-select:none}
.news-status{margin:.9rem 0 .3rem;font-size:.86rem;color:var(--tw-muted);min-height:1.5em}
.news-list{position:relative;min-height:80px;transition:opacity .15s}
.news-list.loading{opacity:.45;pointer-events:none}
.news-item{display:flex;gap:1rem;align-items:center;padding:.85rem .5rem;border-bottom:1px solid var(--tw-border);text-decoration:none;color:var(--tw-text);transition:background .15s}
.news-item:last-child{border-bottom:0}
.news-item:hover{background:var(--tw-alt);color:var(--tw-text)}
.news-item:hover .news-title{color:var(--tw-primary)}
.news-date{flex:0 0 58px;text-align:center;border-right:1px solid var(--tw-border);padding:.1rem .6rem .1rem 0;line-height:1.2}
.nd-y{display:block;font-size:.68rem;color:var(--tw-muted)}
.nd-md{display:block;font-weight:700;color:var(--tw-text);font-size:1rem}
.news-main{flex:1;min-width:0}
.news-meta{display:flex;gap:.35rem;flex-wrap:wrap;margin-bottom:.15rem}
.nb{font-size:.7rem;font-weight:500;padding:.05rem .5rem;border-radius:4px;background:var(--tw-sky);color:var(--tw-primary)}
.nb-top{background:#fff4d6;color:#7a5600}
.nb-tag{background:#64748b;color:#fff}
.nb-lock{background:#f3f4f6;color:#4b5563}
[data-bs-theme=dark] .nb-lock{background:#243140;color:#cbd5e1}
[data-bs-theme=dark] .nb-top{background:#3b3010;color:#f6dc8a}
.news-title{font-size:.98rem;font-weight:600;margin:0;line-height:1.5;overflow-wrap:anywhere;transition:color .15s}
.news-excerpt{margin:.15rem 0 0;font-size:.84rem;color:var(--tw-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.news-arrow{font-size:1.3rem;color:var(--tw-border);transition:.15s}
.news-item:hover .news-arrow{color:var(--tw-primary);transform:translateX(3px)}
.news-empty{text-align:center;padding:2.2rem 1rem;color:var(--tw-muted)}
.news-empty .emoji{display:none}
.news-pager{margin-top:.9rem}
.page-link{border-radius:6px!important;margin:0 2px;border:1px solid var(--tw-border);color:var(--tw-text);background:var(--tw-card)}
.page-link:hover{color:var(--tw-primary);background:var(--tw-sky)}
.page-item.active .page-link{background:var(--tw-primary);border-color:var(--tw-primary);color:#fff}
.skeleton .sk{height:70px;margin:.5rem 0;border-radius:6px;background:var(--tw-alt)}

/* ---------- 內頁橫幅 / 文章 ---------- */
.page-banner{background:var(--tw-alt);color:var(--tw-text);padding:1.6rem 0 1.4rem;border-bottom:1px solid var(--tw-border)}
.page-banner-article{padding:.8rem 0}
.page-banner .breadcrumb{margin:0 0 .4rem;font-size:.84rem}
.page-banner .breadcrumb a{color:var(--tw-muted);text-decoration:none}
.page-banner .breadcrumb a:hover{color:var(--tw-primary)}
.page-banner .breadcrumb-item.active{color:var(--tw-text)}
.page-banner-article .breadcrumb{margin:0}
.page-banner-title{font-size:clamp(1.4rem,3.6vw,1.9rem);font-weight:700;margin:0}
.page-banner-sub{margin:.35rem 0 0;color:var(--tw-muted)}
.article-head{border-bottom:1px solid var(--tw-border);padding-bottom:1rem;margin-bottom:1.2rem}
.article-badges{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.5rem}
.article-badges .nb{font-size:.76rem;padding:.12rem .6rem}
.article-title{font-size:clamp(1.35rem,3.2vw,1.8rem);font-weight:700;line-height:1.4;margin:0 0 .6rem;overflow-wrap:anywhere}
.article-meta{display:flex;gap:1.1rem;flex-wrap:wrap;color:var(--tw-muted);font-size:.86rem}
.article-tools{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.8rem}
.tool-btn{border:1px solid var(--tw-border);background:var(--tw-card);color:var(--tw-muted);border-radius:6px;padding:.12rem .65rem;font-size:.82rem}
.tool-btn:hover{border-color:var(--tw-primary);color:var(--tw-primary)}
.news-content,.page-content{font-size:var(--article-size,1.02rem);line-height:1.9;overflow-wrap:anywhere}
.news-content img{max-width:100%;height:auto;border-radius:6px}
.news-content iframe,.news-content video{max-width:100%}
.news-content table{max-width:100%;border-collapse:collapse}
.news-content table td,.news-content table th{border:1px solid var(--tw-border);padding:.4rem .6rem}
.news-content blockquote{border-left:3px solid var(--tw-primary);background:var(--tw-alt);margin:1rem 0;padding:.7rem 1rem;border-radius:0 6px 6px 0}
.table-scroll{overflow-x:auto;margin:1rem 0}
.attach-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.8rem;margin-top:1.4rem}
.attach-gallery img{width:100%;height:160px;object-fit:cover;border:1px solid var(--tw-border);border-radius:6px}
.attach-box{margin-top:1.6rem;background:var(--tw-alt);border:1px solid var(--tw-border);border-radius:var(--tw-radius);padding:1rem 1.1rem}
.attach-box h5{font-size:.98rem;font-weight:700;margin-bottom:.6rem}
.attach-list,.dl-list{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.attach-list a,.dl-item{display:flex;align-items:center;gap:.8rem;background:var(--tw-card);border:1px solid var(--tw-border);border-radius:6px;padding:.55rem .8rem;text-decoration:none;color:var(--tw-text);transition:.15s}
.attach-list a:hover,.dl-item:hover{border-color:var(--tw-primary);color:var(--tw-text)}
.ext{flex:0 0 44px;height:32px;border-radius:5px;background:var(--tw-sky);color:var(--tw-primary);font-size:.66rem;font-weight:700;display:grid;place-items:center;letter-spacing:.5px}
.nm{flex:1;min-width:0;overflow-wrap:anywhere}
.nm small{display:block;color:var(--tw-muted)}
.sz{font-size:.78rem;color:var(--tw-muted);white-space:nowrap}
.dl-cats .list-group-item{border-color:var(--tw-border);background:transparent;color:var(--tw-text)}
.dl-cats .list-group-item.active{background:var(--tw-sky);color:var(--tw-primary);border-color:var(--tw-border);font-weight:600}
.dl-cats .badge{background:var(--tw-alt)!important;color:var(--tw-muted)}

/* ---------- 密碼解鎖卡 ---------- */
.lock-card{max-width:440px;margin:1.5rem auto;text-align:center;background:var(--tw-card);border:1px solid var(--tw-border);border-radius:var(--tw-radius);padding:2rem 1.8rem}
.lock-card.shake{animation:shake .4s}
@keyframes shake{20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
.lock-ico{width:60px;height:60px;margin:0 auto .8rem;border-radius:50%;background:var(--tw-sky);color:var(--tw-primary);display:grid;place-items:center}
.lock-ico .ico-lock{opacity:1}
.lock-card h2{font-size:1.2rem;font-weight:700}
.pw-field{position:relative;margin:1rem 0 .6rem}
.pw-field .form-control{padding-right:4rem;text-align:center;letter-spacing:.15em}
.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:transparent;font-size:.8rem;color:var(--tw-muted);padding:.3rem .6rem}
.pw-eye:hover{color:var(--tw-primary)}
.lock-msg{display:none;color:#b42318;background:#fef3f2;border-radius:6px;padding:.5rem .8rem;font-size:.9rem;margin-bottom:.8rem}
.lock-msg.show{display:block}
[data-bs-theme=dark] .lock-msg{background:#3b1c1a;color:#fecaca}
.lock-tip{font-size:.82rem;color:var(--tw-muted);margin:1rem 0 0}
.unlock-reveal{animation:reveal .35s ease}
@keyframes reveal{from{opacity:0;transform:translateY(8px)}}

/* ---------- FAQ / 時間軸 / 表單 ---------- */
.faq-bar{display:flex;gap:.7rem;margin-bottom:.8rem}
.faq-bar .filter-search{flex:1}
.faq-acc .accordion-item{border-color:var(--tw-border);background:var(--tw-card);margin-bottom:.5rem;border-radius:var(--tw-radius)!important;overflow:hidden}
.faq-acc .accordion-button{background:var(--tw-card);color:var(--tw-text);font-weight:600;box-shadow:none}
.faq-acc .accordion-button:not(.collapsed){background:var(--tw-sky);color:var(--tw-primary)}
.vtimeline{position:relative;max-width:820px;margin:0 auto;padding-left:1.8rem;border-left:2px solid var(--tw-border)}
.vt-year{margin:1.6rem 0 .8rem -1.8rem}
.vt-year span{display:inline-block;background:var(--tw-primary);color:#fff;font-weight:700;border-radius:4px;padding:.15rem .9rem;margin-left:-.9rem}
.vt-item{position:relative;display:flex;gap:1rem;margin-bottom:1rem}
.vt-item::before{content:"";position:absolute;left:-2.28rem;top:.8rem;width:11px;height:11px;border-radius:50%;background:var(--tw-primary);border:3px solid var(--tw-bg)}
.vt-date{flex:0 0 70px;font-weight:700;color:var(--tw-primary);padding-top:.5rem;font-size:.9rem}
.vt-card{flex:1;background:var(--tw-card);border:1px solid var(--tw-border);border-radius:var(--tw-radius);padding:.8rem 1rem}
.vt-card h3{font-size:1rem;font-weight:600;margin:0}
.vt-card p{margin:.4rem 0 0;color:var(--tw-muted);font-size:.92rem}
.form-control,.form-select{border-radius:6px;border-color:var(--tw-border);background-color:var(--tw-card);color:var(--tw-text)}
.form-control:focus,.form-select:focus{border-color:var(--tw-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--tw-primary) 14%,transparent)}
.form-control.is-invalid{border-color:#dc3545}
.btn-lg{font-size:1rem}

/* ---------- 頁尾 ---------- */
.site-footer{background:var(--tw-alt);color:var(--tw-muted);padding:2.2rem 0 1.2rem;border-top:1px solid var(--tw-border);font-size:.92rem}
.quick-zone+.site-footer{margin-top:0}
.site-footer a{color:var(--tw-muted);text-decoration:none}
.site-footer a:hover{color:var(--tw-primary);text-decoration:underline}
.footer-brand{font-size:1.1rem;font-weight:700;color:var(--tw-text)}
.footer-sub{font-size:.88rem;margin-bottom:.6rem}
.footer-contact{list-style:none;margin:0;padding:0;font-size:.88rem;line-height:1.9}
.footer-links{margin:0 0 .5rem}
.footer-links a{margin-left:1.2rem}
.site-footer hr{border-color:var(--tw-border);opacity:1;margin:1.4rem 0 1rem}
.footer-copy{color:var(--tw-muted)}
@media (max-width:767.98px){.footer-links a{margin:0 1rem 0 0}}

/* ---------- 其他 ---------- */
.reveal{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media (max-width:575.98px){
  .article-card{padding:1.1rem 1rem}
  .news-date{flex-basis:50px}
  .news-arrow{display:none}
  .switch-field{margin-left:0}
  .vt-item{flex-direction:column;gap:.2rem}
}
@media print{
  .topbar,.site-nav,.site-footer,.quick-zone,.article-tools,.to-top,.side-card,.page-banner,.btn,.toast-wrap{display:none!important}
  body{background:#fff;color:#000}
  .article-card{border:0;padding:0}
}
.hero-carousel .carousel-item,.hero-carousel .hero-slide{height:100%}
.article-tools[hidden]{display:none}

/* 深色模式 Logo / 頁尾自訂內容 (2026-11) */
.brand-logo-dark{display:none}
[data-bs-theme=dark] .brand-logo-light{display:none}
[data-bs-theme=dark] .brand-logo-dark{display:inline-block}
.footer-custom img{max-width:100%;height:auto}
.footer-custom h1,.footer-custom h2,.footer-custom h3,.footer-custom h4,.footer-custom h5,.footer-custom h6{color:var(--tw-text);font-size:1rem;font-weight:700;margin-bottom:.6rem}
.footer-custom p{margin-bottom:.5rem}
.footer-logo{max-width:100%;object-fit:contain}
