:root{
  --ocean-deep:#073763; --ocean:#0B5394; --ocean-light:#3D85C6;
  --gold:#B45F06; --gold-light:#F1C232; --sand:#FFF8E1;
  --foam:#F8FAFC; --ink:#0E1726; --muted:#5C6B85; --border:#E5E7EB;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:"Microsoft JhengHei","PingFang TC","Noto Sans TC",-apple-system,BlinkMacSystemFont,sans-serif;color:var(--ink);background:var(--foam);line-height:1.7;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:var(--ocean);text-decoration:none}

/* ===== Nav ===== */
.nav{position:sticky;top:0;background:rgba(255,255,255,.95);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:100}
.nav-inner{max-width:1280px;margin:0 auto;padding:14px 28px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{display:flex;align-items:center;gap:12px;color:inherit}
.brand-mark{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,var(--ocean) 0%,var(--ocean-deep) 100%);display:grid;place-items:center;color:var(--gold-light);font-weight:900;font-size:20px;box-shadow:0 4px 12px rgba(11,83,148,.3)}
.brand-text{display:flex;flex-direction:column;line-height:1.1}
.brand-text strong{font-size:18px;color:var(--ocean-deep);letter-spacing:.5px}
.brand-text span{font-size:11px;color:var(--muted);letter-spacing:2px}
.nav-links{display:flex;gap:24px;font-size:15px}
.nav-links a{color:var(--ink);font-weight:500;transition:color .2s;position:relative;padding:6px 2px}
.nav-links a:hover{color:var(--ocean)}
.nav-links a.active{color:var(--ocean)}
.nav-links a.active::after{content:"";position:absolute;bottom:-22px;left:0;right:0;height:3px;background:var(--gold)}
.cta{display:inline-block;padding:9px 22px;background:var(--gold);color:#fff;border-radius:24px;font-weight:600;border:none;cursor:pointer;font-size:14px;transition:all .2s}
.cta:hover{background:#8C4900;transform:translateY(-1px);color:#fff}
.cta.lg{padding:14px 36px;font-size:16px}
.cta-ghost{display:inline-block;padding:9px 22px;background:transparent;color:#fff;border:2px solid #fff;border-radius:24px;font-weight:600;font-size:14px;transition:all .2s}
.cta-ghost:hover{background:#fff;color:var(--ocean-deep)}
.menu-toggle{display:none;background:none;border:none;font-size:24px;color:var(--ocean-deep);cursor:pointer}

/* ===== Hero ===== */
.hero{position:relative;background:linear-gradient(135deg,var(--ocean-deep) 0%,var(--ocean) 60%,var(--ocean-light) 100%);color:#fff;padding:96px 28px 120px;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 80% 20%,rgba(241,194,50,.18) 0%,transparent 50%),radial-gradient(circle at 20% 80%,rgba(61,133,198,.3) 0%,transparent 50%)}
.hero::after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:80px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 80' preserveAspectRatio='none'><path fill='%23F8FAFC' d='M0,40 C360,80 720,0 1440,40 L1440,80 L0,80 Z'/></svg>") no-repeat;background-size:cover}
.hero-inner{max-width:1280px;margin:0 auto;position:relative;z-index:1}
.crumb{font-size:13px;letter-spacing:3px;color:rgba(255,255,255,.7);margin-bottom:18px;text-transform:uppercase}
.hero h1{font-size:56px;font-weight:800;letter-spacing:2px;margin-bottom:18px;line-height:1.2}
.hero h1 .gold{color:var(--gold-light)}
.hero p{font-size:19px;color:rgba(255,255,255,.88);max-width:720px;line-height:1.7}
.hero-actions{margin-top:32px;display:flex;gap:14px;flex-wrap:wrap}
.hero-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:48px;max-width:780px}
.stat{background:rgba(255,255,255,.08);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.15);border-radius:14px;padding:22px}
.stat-num{font-size:38px;font-weight:800;color:var(--gold-light);font-family:"Inter","Microsoft JhengHei",sans-serif}
.stat-lab{font-size:13px;color:rgba(255,255,255,.78);margin-top:4px}

/* ===== Sections ===== */
.section{max-width:1280px;margin:0 auto;padding:80px 28px}
.section.tight{padding:48px 28px}
.section-head{text-align:center;margin-bottom:56px}
.section-head h2{font-size:36px;font-weight:800;color:var(--ocean-deep);margin-bottom:14px;letter-spacing:1px}
.section-head h2 .ribbon{display:inline-block;width:48px;height:4px;background:var(--gold);margin-right:14px;vertical-align:middle}
.section-head p{color:var(--muted);font-size:16px;max-width:640px;margin:0 auto}

/* ===== Cards generic ===== */
.cards-3{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.cards-4{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.card{background:#fff;border-radius:18px;padding:32px 28px;box-shadow:0 6px 20px rgba(7,55,99,.06);transition:all .25s;border:1px solid #EEF1F5}
.card:hover{transform:translateY(-4px);box-shadow:0 16px 40px rgba(7,55,99,.16);border-color:var(--ocean-light)}
.card-icon{width:54px;height:54px;border-radius:14px;background:linear-gradient(135deg,var(--ocean) 0%,var(--ocean-deep) 100%);display:grid;place-items:center;color:var(--gold-light);font-size:24px;margin-bottom:18px}
.card h3{font-size:20px;font-weight:700;color:var(--ocean-deep);margin-bottom:10px}
.card p{color:var(--muted);font-size:15px;line-height:1.7}

/* ===== Mission/Spirit ===== */
.spirit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.spirit{background:linear-gradient(180deg,#fff 0%,var(--foam) 100%);border-radius:20px;padding:40px 32px;border:1px solid var(--border);position:relative;overflow:hidden}
.spirit::before{content:"";position:absolute;top:0;left:0;right:0;height:5px;background:linear-gradient(90deg,var(--ocean) 0%,var(--ocean-light) 100%)}
.spirit-tag{display:inline-block;background:var(--sand);color:var(--gold);padding:5px 12px;border-radius:14px;font-size:11px;font-weight:700;letter-spacing:1.5px;margin-bottom:18px}
.spirit h3{font-size:28px;font-weight:800;color:var(--ocean-deep);margin-bottom:12px}
.spirit p{color:var(--muted);font-size:15px}

/* ===== Featured president ===== */
.featured-card{background:#fff;border-radius:24px;overflow:hidden;box-shadow:0 20px 60px rgba(7,55,99,.12);display:grid;grid-template-columns:380px 1fr}
.featured-photo{background:linear-gradient(135deg,var(--ocean) 0%,var(--ocean-deep) 100%);position:relative;display:grid;place-items:center;color:#fff;font-size:120px;min-height:380px}
.featured-info{padding:48px 56px;display:flex;flex-direction:column;justify-content:center}
.feat-tag{display:inline-block;background:var(--sand);color:var(--gold);padding:6px 14px;border-radius:20px;font-size:12px;font-weight:700;letter-spacing:1.5px;margin-bottom:18px;align-self:flex-start}
.feat-name{font-size:42px;font-weight:800;color:var(--ocean-deep);margin-bottom:6px}
.feat-title{font-size:16px;color:var(--muted);margin-bottom:24px}
.feat-quote{font-size:18px;color:var(--ink);font-style:italic;border-left:4px solid var(--gold);padding-left:20px;margin-bottom:28px;line-height:1.7}

/* ===== Gallery ===== */
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.gphoto{aspect-ratio:4/5;background:linear-gradient(135deg,var(--ocean) 0%,var(--ocean-deep) 100%);border-radius:14px;display:grid;place-items:center;color:rgba(255,255,255,.4);font-size:48px;cursor:pointer;transition:all .25s;position:relative;overflow:hidden}
.gphoto::after{content:attr(data-cat);position:absolute;bottom:0;left:0;right:0;padding:14px;background:linear-gradient(transparent,rgba(0,0,0,.7));color:#fff;font-size:14px;font-weight:600;text-align:center}
.gphoto:hover{transform:scale(1.02);box-shadow:0 12px 30px rgba(7,55,99,.25)}

/* ===== Timeline ===== */
.tl{position:relative;max-width:880px;margin:0 auto;padding-left:40px}
.tl::before{content:"";position:absolute;left:14px;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--ocean) 0%,var(--ocean-light) 100%);border-radius:2px}
.tl-item{position:relative;padding:20px 0 28px}
.tl-item::before{content:"";position:absolute;left:-31px;top:30px;width:14px;height:14px;border-radius:50%;background:var(--gold);border:3px solid #fff;box-shadow:0 0 0 2px var(--gold)}
.tl-year{font-size:13px;letter-spacing:2px;color:var(--gold);font-weight:700;margin-bottom:6px}
.tl-title{font-size:20px;font-weight:700;color:var(--ocean-deep);margin-bottom:8px}
.tl-desc{color:var(--muted);font-size:15px}

/* ===== CTA banner ===== */
.cta-banner{background:linear-gradient(135deg,var(--ocean-deep) 0%,var(--ocean) 100%);color:#fff;padding:80px 28px;text-align:center;position:relative;overflow:hidden}
.cta-banner::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 30% 50%,rgba(241,194,50,.12) 0%,transparent 60%)}
.cta-banner-inner{max-width:780px;margin:0 auto;position:relative}
.cta-banner h3{font-size:36px;font-weight:800;margin-bottom:16px;letter-spacing:1px}
.cta-banner p{font-size:17px;color:rgba(255,255,255,.85);margin-bottom:32px}

/* ===== Form ===== */
.form{max-width:680px;margin:0 auto;background:#fff;padding:48px;border-radius:20px;box-shadow:0 10px 40px rgba(7,55,99,.08)}
.field{margin-bottom:22px}
.field label{display:block;font-size:14px;font-weight:600;color:var(--ocean-deep);margin-bottom:8px}
.field input, .field textarea, .field select{width:100%;padding:14px 16px;border:2px solid var(--border);border-radius:12px;font-size:15px;font-family:inherit;transition:border-color .2s}
.field input:focus, .field textarea:focus, .field select:focus{outline:none;border-color:var(--ocean)}
.field textarea{min-height:120px;resize:vertical}
.btn-submit{width:100%;padding:16px;background:linear-gradient(135deg,var(--ocean) 0%,var(--ocean-deep) 100%);color:#fff;border:none;border-radius:12px;font-size:16px;font-weight:700;cursor:pointer;transition:all .2s;font-family:inherit}
.btn-submit:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(7,55,99,.3)}

/* ===== Contact ===== */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start}
.contact-info{background:#fff;padding:40px;border-radius:20px;box-shadow:0 6px 20px rgba(7,55,99,.06)}
.contact-info h3{font-size:24px;color:var(--ocean-deep);margin-bottom:24px}
.contact-row{display:flex;gap:14px;align-items:flex-start;padding:16px 0;border-bottom:1px solid var(--border)}
.contact-row:last-child{border-bottom:none}
.contact-row .ico{width:42px;height:42px;border-radius:10px;background:var(--foam);display:grid;place-items:center;color:var(--ocean);font-size:18px;flex-shrink:0}
.contact-row .lab{font-size:12px;color:var(--muted);letter-spacing:1.5px;margin-bottom:2px}
.contact-row .val{color:var(--ink);font-size:15px;font-weight:500}
.map-embed{aspect-ratio:1/1;background:linear-gradient(135deg,#cfe2f3 0%,#9fc5e8 100%);border-radius:20px;display:grid;place-items:center;color:var(--ocean-deep);font-size:60px;box-shadow:0 6px 20px rgba(7,55,99,.06)}

/* ===== Footer ===== */
footer{background:#0A1929;color:rgba(255,255,255,.7);padding:64px 28px 28px}
.foot-inner{max-width:1280px;margin:0 auto}
.foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px;margin-bottom:40px}
.foot-brand h3{color:#fff;font-size:22px;margin-bottom:14px}
.foot-brand p{color:rgba(255,255,255,.6);font-size:14px;line-height:1.8}
.foot-col h4{color:#fff;font-size:14px;letter-spacing:2px;margin-bottom:18px;text-transform:uppercase}
.foot-col a{display:block;color:rgba(255,255,255,.7);padding:6px 0;font-size:14px;transition:color .2s}
.foot-col a:hover{color:var(--gold-light)}
.foot-bottom{padding-top:28px;border-top:1px solid rgba(255,255,255,.1);text-align:center;font-size:13px;color:rgba(255,255,255,.5)}

/* ===== Page header (subpages) ===== */
.page-header{background:linear-gradient(135deg,var(--ocean-deep) 0%,var(--ocean) 100%);color:#fff;padding:72px 28px 96px;position:relative;overflow:hidden}
.page-header::after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:60px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 60' preserveAspectRatio='none'><path fill='%23F8FAFC' d='M0,30 C360,60 720,0 1440,30 L1440,60 L0,60 Z'/></svg>") no-repeat;background-size:cover}
.page-header-inner{max-width:1280px;margin:0 auto;position:relative;z-index:1}
.page-header h1{font-size:42px;font-weight:800;letter-spacing:1px;margin-bottom:10px}
.page-header p{color:rgba(255,255,255,.85);font-size:17px;max-width:680px}

/* ===== Presidents grid ===== */
.pres-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:24px}
.pres-card{background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 6px 20px rgba(7,55,99,.06);transition:all .25s;border:1px solid #EEF1F5}
.pres-card:hover{transform:translateY(-4px);box-shadow:0 16px 40px rgba(7,55,99,.16);border-color:var(--ocean-light)}
.pres-photo{height:200px;background:linear-gradient(135deg,#3D85C6 0%,#073763 100%);position:relative;display:grid;place-items:center;color:rgba(255,255,255,.5);font-size:80px}
.pres-photo.alt-1{background:linear-gradient(135deg,#0B5394 0%,#073763 100%)}
.pres-photo.alt-2{background:linear-gradient(135deg,#3D85C6 0%,#0B5394 100%)}
.pres-photo.alt-3{background:linear-gradient(135deg,#1F4E79 0%,#0B5394 100%)}
.pres-medal{position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:50%;background:var(--gold);color:#fff;display:grid;place-items:center;font-size:14px;font-weight:800;box-shadow:0 4px 12px rgba(180,95,6,.4)}
.pres-info{padding:20px 22px}
.pres-term{font-size:11px;color:var(--gold);font-weight:700;letter-spacing:1.5px;margin-bottom:6px}
.pres-name{font-size:20px;font-weight:700;color:var(--ocean-deep);margin-bottom:4px}
.pres-job{font-size:13px;color:var(--muted);margin-bottom:12px}
.pres-tag{display:inline-block;background:var(--foam);color:var(--ocean);font-size:11px;padding:4px 10px;border-radius:12px;font-weight:600}

/* ===== Filter ===== */
.filter-bar{max-width:1280px;margin:-50px auto 40px;padding:24px 28px;background:#fff;border-radius:16px;box-shadow:0 12px 40px rgba(7,55,99,.1);position:relative;z-index:2;display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.search-input{flex:1;min-width:240px;padding:14px 18px;border:2px solid var(--border);border-radius:12px;font-size:15px;font-family:inherit}
.search-input:focus{outline:none;border-color:var(--ocean)}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{padding:9px 16px;border:2px solid var(--border);border-radius:24px;background:#fff;color:var(--muted);font-size:13px;font-weight:600;cursor:pointer;transition:all .2s}
.chip:hover{border-color:var(--ocean);color:var(--ocean)}
.chip.on{background:var(--ocean);color:#fff;border-color:var(--ocean)}
.chip.gold.on{background:var(--gold);border-color:var(--gold)}

/* ===== RWD ===== */
@media (max-width:880px){
  .nav-links{display:none}
  .nav-links.open{display:flex;position:absolute;top:70px;left:0;right:0;background:#fff;flex-direction:column;padding:20px;border-bottom:1px solid var(--border);box-shadow:0 8px 20px rgba(0,0,0,.05)}
  .menu-toggle{display:block}
  .hero h1{font-size:36px}
  .hero-stats{grid-template-columns:repeat(2,1fr)}
  .featured-card{grid-template-columns:1fr}
  .featured-photo{min-height:240px;font-size:80px}
  .featured-info{padding:32px 24px}
  .feat-name{font-size:32px}
  .cards-3,.cards-4,.spirit-grid{grid-template-columns:1fr}
  .contact-grid{grid-template-columns:1fr;gap:24px}
  .foot-grid{grid-template-columns:1fr 1fr}
  .section-head h2,.cta-banner h3,.page-header h1{font-size:28px}
  .form{padding:32px 24px}
}

/* --- 上線前補強 v2 --- */
.soon{color:#94A3B8;font-size:inherit;cursor:default}
.photo{display:block;width:100%;height:100%;object-fit:cover;border-radius:inherit}
.featured-photo.has-img,.pres-photo.has-img,.gphoto.has-img{padding:0;overflow:hidden}
.gphoto.has-img{aspect-ratio:4/3;background:#0b2a4a}
.gphoto.has-img img{width:100%;height:100%;object-fit:cover}
.gcap{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(0deg,rgba(4,30,55,.82),transparent);color:#fff;font-size:13px;padding:18px 12px 10px;text-align:left}
.gphoto{position:relative}
.hero-photo{margin:28px auto 0;max-width:920px;border-radius:18px;overflow:hidden;box-shadow:0 24px 60px rgba(4,30,55,.45)}
.hero-photo img{width:100%;display:block}
.note{background:#FFF7ED;border:1px solid #FED7AA;color:#9A3412;border-radius:10px;padding:10px 14px;font-size:13px;margin-top:12px}
.skip-link{position:absolute;left:-9999px}.skip-link:focus{left:12px;top:12px;background:#fff;padding:8px 14px;border-radius:8px;z-index:999}
.has-mono .mono{font-size:54px;font-weight:800;color:rgba(255,255,255,.92);font-family:"Noto Serif TC",serif;line-height:1}
.has-mono{display:flex;align-items:center;justify-content:center}

/* === 設計審查優化 v3：a11y / 觸控 / 層級 === */
:focus-visible{outline:3px solid var(--ocean);outline-offset:2px;border-radius:4px}
.hero h1{font-size:clamp(30px,6vw,56px)}
.cta,.cta-ghost{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
.chip{min-height:40px;display:inline-flex;align-items:center}
.menu-toggle{padding:8px 10px;line-height:1;border-radius:8px}
@media (max-width:880px){
  .nav-links.open a{padding:14px 4px;border-bottom:1px solid var(--border);font-size:16px}
  .hero-actions .cta,.hero-actions .cta-ghost{flex:1 1 auto;text-align:center}
  .pres-grid{grid-template-columns:repeat(2,1fr);gap:14px}
  .gallery-grid{grid-template-columns:repeat(2,1fr)}
}
/* 數字可信度註解 */
.stat-src{font-size:11px;color:rgba(255,255,255,.6);margin-top:14px;max-width:780px;line-height:1.6}
/* 會長引言 */
.lead-quote{max-width:820px;margin:26px auto 0;background:rgba(255,255,255,.08);border-left:4px solid var(--gold-light);border-radius:0 12px 12px 0;padding:18px 22px;color:rgba(255,255,255,.95);font-size:17px;line-height:1.8}
.lead-quote cite{display:block;margin-top:8px;font-size:14px;color:var(--gold-light);font-style:normal}
/* FAQ 手風琴 */
.faq{max-width:880px;margin:0 auto}
.faq details{background:#fff;border:1px solid var(--border);border-radius:12px;margin-bottom:12px;overflow:hidden}
.faq summary{padding:18px 22px;font-weight:700;color:var(--ocean-deep);cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center}
.faq summary::after{content:"＋";color:var(--gold);font-size:20px}
.faq details[open] summary::after{content:"－"}
.faq details p{padding:0 22px 18px;color:var(--muted);line-height:1.8}
.cost-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;max-width:980px;margin:0 auto 8px}
@media(max-width:880px){.cost-grid{grid-template-columns:1fr}}
.cost-card{background:var(--sand);border:1px solid #F1E4B8;border-radius:14px;padding:24px;text-align:center}
.cost-card .big{font-size:22px;font-weight:800;color:var(--ocean-deep);margin:6px 0}
