/* =========================================================
   WishingSoft Theme — main.css  v2.0
   依 www.wishingsoft.com 實測計算樣式復刻。
   量測值（1280px 視窗）：
     字型      -apple-system / Microsoft JhengHei 系統字堆疊
     內文      #666666 · 16px · font-weight 300
     頁面底色  #FBFEFF
     導覽列    固定 · 高 68px · #626262 · 下框 1px rgba(255,255,255,.15)
     導覽連結  #999999 · 16px · 300 · letter-spacing 1px
     h2        30px / 36px · 700 · #111111 · letter-spacing 1px · mb 10px
     品牌藍    #24678D（標題）· #589BB7（按鈕外框）
     區塊底色  #FFFFFF · #F6F6F6 · #F4F7F8
     按鈕      透明底 · 2px 外框 · radius 3px · 10px/700 · padding 0 36px
     容器      1265px
   ========================================================= */

/* ---------- 1. Design tokens ---------- */
:root{
  /* 品牌色（實測） */
  --ws-blue:        #24678d;   /* 標題藍，全站出現最多 */
  --ws-blue-lt:     #589bb7;   /* 按鈕外框、輔助 */
  --ws-blue-dk:     #1b4e6b;

  /* 中性色（實測） */
  --ws-ink:         #111111;   /* 主標題 */
  --ws-body:        #666666;   /* 內文 */
  --ws-muted:       #999999;   /* 次要文字、導覽連結 */
  --ws-line:        #dddddd;   /* 分隔線 */
  --ws-line-soft:   #e8ebec;

  /* 底色（實測） */
  --ws-bg:          #fbfeff;   /* 頁面 */
  --ws-white:       #ffffff;
  --ws-grey:        #f6f6f6;
  --ws-tint:        #f4f7f8;
  --ws-nav:         #626262;   /* 固定導覽列 */
  --ws-dark:        #111111;

  --ws-radius:      3px;       /* 原站按鈕圓角 */
  --ws-radius-box:  4px;
  --ws-shadow:      0 1px 3px rgba(0,0,0,.06), 0 8px 24px rgba(0,0,0,.06);
  --ws-shadow-sm:   0 1px 2px rgba(0,0,0,.05);

  --ws-max:         1265px;    /* 實測容器寬 */
  --ws-gutter:      20px;
  --ws-navh:        68px;      /* 實測導覽列高 */

  --ws-font: -apple-system, BlinkMacSystemFont, "Microsoft JhengHei",
             "Segoe UI", Roboto, Ubuntu, "Droid Sans", "Helvetica Neue", sans-serif;
}

/* ---------- 2. Reset / base ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0;
  font-family:var(--ws-font);
  font-size:16px;
  font-weight:300;            /* 原站全站細體 */
  line-height:1.8;
  color:var(--ws-body);
  background:var(--ws-bg);
  padding-top:var(--ws-navh); /* 讓開固定導覽列 */
  -webkit-font-smoothing:antialiased;
}
/*
 * 頁首改由 Elementor 範本（或匯入的原站標記）輸出時，
 * 佈景主題那條 position:fixed 的導覽列不會出現，
 * 上面預留的高度就變成每一頁最上方的一塊空白，要拿掉。
 */
body.ws-chrome-custom{ padding-top:0; }
img{ max-width:100%; height:auto; display:block; }
a{ color:var(--ws-blue); text-decoration:none; transition:color .2s ease; }
a:hover{ color:var(--ws-blue-dk); }

h1,h2,h3,h4,h5{
  color:var(--ws-ink);
  font-weight:700;
  letter-spacing:1px;         /* 實測 */
  margin:0 0 10px;
}
h1{ font-size:34px; line-height:1.3; }
h2{ font-size:30px; line-height:36px; }        /* 實測 */
h3{ font-size:22px; line-height:1.45; }
h4{ font-size:17px; line-height:1.5; }
@media (max-width:640px){
  h1{ font-size:26px; }
  h2{ font-size:23px; line-height:1.4; }
  h3{ font-size:19px; }
}

p{ margin:0 0 1.2em; }
ul,ol{ margin:0 0 1.2em; padding-left:1.4em; }
li{ margin-bottom:.4em; }
strong,b{ font-weight:700; color:var(--ws-ink); }
hr{ border:0; border-top:1px solid var(--ws-line); margin:2.5rem 0; }

blockquote{
  margin:1.6rem 0; padding:1rem 1.4rem;
  border-left:3px solid var(--ws-blue-lt);
  background:var(--ws-tint);
  color:var(--ws-ink);
}
table{ width:100%; border-collapse:collapse; margin:1.4rem 0; font-size:15px; }
th,td{ border:1px solid var(--ws-line); padding:.75rem .9rem; text-align:left; vertical-align:top; }
th{ background:var(--ws-tint); color:var(--ws-ink); font-weight:700; }
code,pre{ font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:.9em; }
pre{ background:#2b2b2b; color:#e6e6e6; padding:1rem 1.2rem; border-radius:var(--ws-radius); overflow-x:auto; }
:focus-visible{ outline:2px solid var(--ws-blue-lt); outline-offset:2px; }

.screen-reader-text{
  position:absolute!important; width:1px; height:1px; overflow:hidden;
  clip:rect(1px,1px,1px,1px); white-space:nowrap;
}
.skip-link{ position:absolute; left:-9999px; top:0; z-index:2000; background:#fff; padding:.7rem 1.2rem; }
.skip-link:focus{ left:0; }

/* ---------- 3. Layout ---------- */
.ws-container{ width:100%; max-width:var(--ws-max); margin-inline:auto; padding-inline:var(--ws-gutter); }
.ws-container--narrow{ max-width:860px; }
.ws-section{ padding:70px 0; }
.ws-section--soft{ background:var(--ws-grey); }      /* #f6f6f6 實測 */
.ws-section--tint{ background:var(--ws-tint); }      /* #f4f7f8 實測 */
.ws-section--white{ background:var(--ws-white); }
.ws-section--navy{ background:var(--ws-nav); color:#e0e0e0; }
.ws-section--navy h2,.ws-section--navy h3,.ws-section--navy h4{ color:#fff; }
@media (max-width:640px){ .ws-section{ padding:44px 0; } }

.ws-grid{ display:grid; gap:26px; }
.ws-grid--2{ grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); }
.ws-grid--3{ grid-template-columns:repeat(auto-fit,minmax(285px,1fr)); }
.ws-grid--4{ grid-template-columns:repeat(auto-fit,minmax(225px,1fr)); }
.ws-center{ text-align:center; }

.ws-section__head{ max-width:780px; margin:0 auto 44px; text-align:center; }
.ws-section__head h2{ color:var(--ws-blue); }   /* 原站區塊標題為品牌藍 */
.ws-section__head p{ color:var(--ws-body); font-size:16px; margin-bottom:0; }
.ws-eyebrow{
  display:block; font-size:12px; font-weight:700; letter-spacing:2px;
  text-transform:uppercase; color:var(--ws-muted); margin-bottom:10px;
}

/* ---------- 4. Buttons（原站：透明底＋2px 外框） ---------- */
.ws-btn{
  display:inline-flex; align-items:center; justify-content:center;
  height:40px; padding:0 36px;
  border:2px solid var(--ws-blue-lt); border-radius:var(--ws-radius);
  background:transparent; color:var(--ws-blue);
  font-family:inherit; font-size:12px; font-weight:700; letter-spacing:1.5px;
  line-height:1; white-space:nowrap; cursor:pointer;
  transition:background .2s ease, color .2s ease, border-color .2s ease;
}
.ws-btn:hover{ background:var(--ws-blue-lt); color:#fff; border-color:var(--ws-blue-lt); }

.ws-btn--primary{ border-color:var(--ws-blue); color:var(--ws-blue); }
.ws-btn--primary:hover{ background:var(--ws-blue); border-color:var(--ws-blue); color:#fff; }

.ws-btn--solid{ background:var(--ws-blue); border-color:var(--ws-blue); color:#fff; }
.ws-btn--solid:hover{ background:var(--ws-blue-dk); border-color:var(--ws-blue-dk); color:#fff; }

.ws-btn--ghost{ border-color:var(--ws-blue); color:var(--ws-blue); }
.ws-btn--ghost:hover{ background:var(--ws-blue); color:#fff; }

/* 深底上的按鈕（原站 hero 內為白框白字） */
.ws-btn--light,
.ws-btn--outline-light{ border-color:#fff; color:#fff; background:transparent; }
.ws-btn--light:hover,
.ws-btn--outline-light:hover{ background:#fff; color:var(--ws-ink); }

.ws-btn--sm{ height:32px; padding:0 22px; font-size:11px; }
.ws-btn-row{ display:flex; flex-wrap:wrap; gap:14px; }
.ws-btn-row--center{ justify-content:center; }

/* ---------- 5. 固定導覽列 ---------- */
.ws-header{
  position:fixed; top:0; left:0; right:0; z-index:11;   /* 實測 z-index */
  height:var(--ws-navh);
  background:var(--ws-nav);
  border-bottom:1px solid rgba(255,255,255,.15);        /* 實測 */
}
.ws-header__inner{ display:flex; align-items:center; justify-content:space-between; gap:20px; height:var(--ws-navh); }

.ws-brand{ display:flex; align-items:center; flex-shrink:0; }
.ws-brand img{ max-height:44px; width:auto; }
.ws-brand__text{ color:#fff; font-weight:700; font-size:19px; letter-spacing:.5px; }
.ws-brand__text span{ color:var(--ws-blue-lt); }

.ws-nav{ display:flex; align-items:center; margin-left:auto; }
.ws-nav ul{ list-style:none; margin:0; padding:0; display:flex; align-items:center; }
.ws-nav li{ position:relative; margin:0; }
.ws-nav > ul > li > a{
  display:flex; align-items:center; height:var(--ws-navh); padding:0 16px;
  color:var(--ws-muted);              /* 實測 #999 */
  font-size:16px; font-weight:300;    /* 實測細體 */
  letter-spacing:1px;                 /* 實測 */
}
.ws-nav > ul > li > a:hover,
.ws-nav > ul > li.current-menu-item > a,
.ws-nav > ul > li.current-menu-parent > a,
.ws-nav > ul > li.current-menu-ancestor > a{ color:#fff; }

.ws-nav ul ul{
  position:absolute; top:100%; left:0; min-width:250px; display:block;
  background:#fff; box-shadow:var(--ws-shadow); padding:8px 0;
  opacity:0; visibility:hidden; transform:translateY(6px);
  transition:opacity .2s ease, transform .2s ease, visibility .2s;
  flex-direction:column; align-items:stretch;
}
.ws-nav li:hover > ul, .ws-nav li:focus-within > ul{ opacity:1; visibility:visible; transform:translateY(0); }
.ws-nav ul ul a{
  display:block; padding:10px 20px; color:var(--ws-body);
  font-size:15px; font-weight:300; letter-spacing:.5px; white-space:nowrap;
}
.ws-nav ul ul a:hover{ background:var(--ws-tint); color:var(--ws-blue); }
.ws-nav ul ul ul{ top:0; left:100%; }

/* 右上工具區 */
.ws-header__cta{ display:flex; align-items:center; gap:14px; flex-shrink:0; }
.ws-login{
  display:inline-flex; align-items:center; height:30px; padding:0 20px;
  border:2px solid var(--ws-blue-lt); border-radius:var(--ws-radius);
  color:#fff; font-size:11px; font-weight:700; letter-spacing:1px;
}
.ws-login:hover{ background:var(--ws-blue-lt); color:#fff; }

/* 語言切換 */
.ws-lang{ display:flex; align-items:center; gap:6px; font-size:13px; letter-spacing:1px; }
.ws-lang a{ color:var(--ws-muted); font-weight:300; }
.ws-lang a:hover, .ws-lang a.is-active{ color:#fff; }
.ws-lang .sep{ color:rgba(255,255,255,.3); }

.ws-burger{ display:none; width:42px; height:42px; border:0; background:transparent; cursor:pointer; padding:9px; }
.ws-burger span{ display:block; height:2px; background:#fff; margin:5px 0; transition:transform .2s ease, opacity .2s ease; }
.ws-burger[aria-expanded="true"] span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.ws-burger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.ws-burger[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

/* ---------- 6. Hero ---------- */
.ws-hero{
  position:relative; color:#fff; overflow:hidden;
  background:#2f3b42 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Crect width='4' height='4' fill='%232f3b42'/%3E%3C/svg%3E") center/cover;
  padding:96px 0;
}
.ws-hero::before{
  content:""; position:absolute; inset:0;
  background:linear-gradient(115deg,rgba(17,17,17,.86) 0%,rgba(36,103,141,.72) 100%);
}
.ws-hero__inner{ position:relative; z-index:1; max-width:820px; }
.ws-hero h1,.ws-hero h2{ color:#fff; font-size:30px; line-height:1.4; letter-spacing:1px; margin-bottom:16px; }
.ws-hero__lead{ font-size:16px; font-weight:300; color:rgba(255,255,255,.88); margin-bottom:30px; line-height:1.9; }
@media (max-width:640px){ .ws-hero{ padding:60px 0; } .ws-hero h1,.ws-hero h2{ font-size:23px; } }

/* 內頁標題帶 */
.ws-hero--page{ padding:56px 0; background:var(--ws-nav); }
.ws-hero--page::before{ background:linear-gradient(115deg,rgba(17,17,17,.55),rgba(36,103,141,.55)); }
.ws-hero--page h1{ font-size:30px; margin-bottom:8px; }
.ws-hero__sub{ color:rgba(255,255,255,.85); font-size:16px; font-weight:300; margin:0; }

.ws-breadcrumb{ font-size:13px; color:rgba(255,255,255,.7); margin-bottom:12px; letter-spacing:.5px; }
.ws-breadcrumb a{ color:rgba(255,255,255,.9); }
.ws-breadcrumb a:hover{ color:#fff; }
.ws-breadcrumb span{ margin:0 .45em; opacity:.5; }

/* ---------- 7. Stats ---------- */
.ws-stats{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:20px; }
.ws-stat{ text-align:center; padding:16px 8px; }
.ws-stat__num{
  display:block; font-size:44px; font-weight:300;   /* 原站數字為細體大字 */
  color:var(--ws-blue); line-height:1.1; letter-spacing:0;
}
.ws-stat__label{ display:block; font-size:14px; color:var(--ws-muted); margin-top:8px; letter-spacing:.5px; }
.ws-section--navy .ws-stat__num{ color:#fff; }
.ws-section--navy .ws-stat__label{ color:rgba(255,255,255,.75); }
@media (max-width:640px){ .ws-stat__num{ font-size:34px; } }

/* ---------- 8. Cards ---------- */
.ws-card{
  background:#fff; border:1px solid var(--ws-line-soft); border-radius:var(--ws-radius-box);
  padding:30px 26px; display:flex; flex-direction:column;
  transition:box-shadow .25s ease, transform .25s ease;
}
.ws-card:hover{ box-shadow:var(--ws-shadow); transform:translateY(-3px); }
.ws-card h3{ color:var(--ws-blue); font-size:20px; margin-bottom:10px; }
.ws-card p{ font-size:15px; }
.ws-card__icon{
  width:52px; height:52px; border-radius:50%; display:grid; place-items:center;
  background:var(--ws-tint); color:var(--ws-blue);
  margin-bottom:18px; font-size:19px; font-weight:700; letter-spacing:0;
}
.ws-card ul{ padding-left:1.2em; margin-bottom:1rem; }
.ws-card li{ font-size:15px; }
.ws-card__more{ margin-top:auto; padding-top:16px; font-size:13px; font-weight:700; letter-spacing:1px; }
.ws-card__more::after{ content:" ›"; }

.ws-module__tag{ display:block; font-size:11px; letter-spacing:2px; text-transform:uppercase; color:var(--ws-muted); font-weight:700; margin-bottom:6px; }

/* 痛點卡 */
.ws-pain{ background:#fff; border-radius:var(--ws-radius-box); padding:28px 24px; border-top:3px solid var(--ws-blue-lt); box-shadow:var(--ws-shadow-sm); }
.ws-pain h4{ color:var(--ws-ink); font-size:17px; margin-bottom:8px; }
.ws-pain p{ margin:0; font-size:15px; }

/* 特色列 */
.ws-feature{ display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:48px; align-items:center; margin-bottom:60px; }
.ws-feature:last-child{ margin-bottom:0; }
.ws-feature--rev .ws-feature__media{ order:-1; }
.ws-feature h3{ color:var(--ws-blue); font-size:23px; }
.ws-feature__media img{ border-radius:var(--ws-radius-box); box-shadow:var(--ws-shadow); width:100%; }
.ws-feature__badge{
  display:inline-block; border:2px solid var(--ws-blue-lt); color:var(--ws-blue);
  font-size:11px; font-weight:700; letter-spacing:1.5px;
  padding:4px 16px; border-radius:var(--ws-radius); margin-bottom:14px;
}
.ws-feature__ph{
  aspect-ratio:4/3; border-radius:var(--ws-radius-box);
  background:var(--ws-tint); display:grid; place-items:center;
  color:var(--ws-blue-lt); font-weight:700; letter-spacing:2px; font-size:13px;
  border:1px solid var(--ws-line-soft);
}
@media (max-width:640px){ .ws-feature{ gap:26px; margin-bottom:40px; } .ws-feature--rev .ws-feature__media{ order:0; } }

/* 角色 */
.ws-role{ background:#fff; border:1px solid var(--ws-line-soft); border-radius:var(--ws-radius-box); padding:26px 24px; }
.ws-role h4{ color:var(--ws-blue); font-size:17px; margin-bottom:10px; }
.ws-role ul{ margin:0; padding-left:1.2em; font-size:15px; }

/* ---------- 9. Quotes ---------- */
.ws-quote{
  background:#fff; border:1px solid var(--ws-line-soft); border-radius:var(--ws-radius-box);
  padding:30px 26px; display:flex; flex-direction:column;
}
.ws-quote__mark{ font-size:40px; line-height:1; color:var(--ws-blue-lt); font-weight:700; margin-bottom:6px; }
.ws-quote__text{ color:var(--ws-ink); font-size:16px; font-weight:300; line-height:1.85; margin-bottom:18px; }
.ws-quote__who{ margin-top:auto; font-size:14px; color:var(--ws-muted); }
.ws-quote__who strong{ display:block; color:var(--ws-blue); font-size:15px; font-weight:700; }

/* ---------- 10. Logo wall ---------- */
.ws-logos{ display:grid; grid-template-columns:repeat(auto-fill,minmax(155px,1fr)); gap:12px; }
.ws-logo{
  display:grid; place-items:center; min-height:80px; padding:12px;
  background:#fff; border:1px solid var(--ws-line-soft); border-radius:var(--ws-radius-box);
  color:var(--ws-body); font-size:15px; font-weight:300; text-align:center; line-height:1.4;
}
.ws-filter{ display:flex; flex-wrap:wrap; gap:8px; justify-content:center; margin-bottom:34px; }
.ws-filter button,.ws-filter a{
  border:1px solid var(--ws-line); background:#fff; color:var(--ws-body);
  padding:7px 18px; border-radius:var(--ws-radius); font-family:inherit;
  font-size:13px; font-weight:300; letter-spacing:.5px; cursor:pointer; transition:all .2s ease;
}
.ws-filter button:hover,.ws-filter a:hover,
.ws-filter button.is-active,.ws-filter a.is-active{
  background:var(--ws-blue); border-color:var(--ws-blue); color:#fff; font-weight:700;
}

/* ---------- 11. Post lists ---------- */
.ws-postgrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:26px; }
.ws-post{
  background:#fff; border:1px solid var(--ws-line-soft); border-radius:var(--ws-radius-box);
  overflow:hidden; display:flex; flex-direction:column; transition:box-shadow .25s ease, transform .25s ease;
}
.ws-post:hover{ box-shadow:var(--ws-shadow); transform:translateY(-3px); }
.ws-post__thumb{ aspect-ratio:16/9; overflow:hidden; background:var(--ws-tint); }
.ws-post__thumb img{ width:100%; height:100%; object-fit:cover; transition:transform .4s ease; }
.ws-post:hover .ws-post__thumb img{ transform:scale(1.04); }
.ws-post__body{ padding:22px 24px 26px; display:flex; flex-direction:column; flex:1; }
.ws-post__meta{ font-size:13px; color:var(--ws-muted); margin-bottom:10px; display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.ws-badge{
  display:inline-block; background:var(--ws-tint); color:var(--ws-blue);
  font-size:11px; font-weight:700; letter-spacing:1px; padding:3px 10px; border-radius:var(--ws-radius);
}
.ws-post__title{ font-size:18px; line-height:1.5; margin-bottom:10px; letter-spacing:.5px; }
.ws-post__title a{ color:var(--ws-ink); }
.ws-post__title a:hover{ color:var(--ws-blue); }
.ws-post__excerpt{ font-size:15px; margin-bottom:16px; }
.ws-post__more{ margin-top:auto; font-size:13px; font-weight:700; letter-spacing:1px; }

/* ---------- 12. Single ---------- */
.ws-article{ max-width:860px; margin-inline:auto; }
.ws-article__meta{ font-size:14px; color:var(--ws-muted); margin-bottom:24px; display:flex; gap:14px; flex-wrap:wrap; align-items:center; }
.ws-article__thumb{ margin:0 0 30px; border-radius:var(--ws-radius-box); overflow:hidden; }
.ws-article .entry-content h2{ margin-top:2em; font-size:24px; color:var(--ws-blue); }
.ws-article .entry-content h3{ margin-top:1.7em; font-size:19px; }
.ws-article .entry-content > *:first-child{ margin-top:0; }
.ws-article .entry-content img{ border-radius:var(--ws-radius-box); margin:1.6rem 0; }
.ws-share{ display:flex; gap:10px; align-items:center; margin:2.4rem 0; font-size:14px; color:var(--ws-muted); }
.ws-prevnext{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:16px; margin-top:2.6rem; }
.ws-prevnext a{ display:block; padding:18px 20px; border:1px solid var(--ws-line-soft); border-radius:var(--ws-radius-box); color:var(--ws-ink); font-size:15px; }
.ws-prevnext a:hover{ border-color:var(--ws-blue-lt); background:var(--ws-tint); }
.ws-prevnext small{ display:block; color:var(--ws-muted); margin-bottom:4px; font-size:12px; letter-spacing:1px; }

/* ---------- 13. FAQ ---------- */
.ws-faq{ max-width:900px; margin-inline:auto; }
.ws-faq__item{ border:1px solid var(--ws-line-soft); border-radius:var(--ws-radius-box); background:#fff; margin-bottom:10px; overflow:hidden; }
.ws-faq__q{
  width:100%; text-align:left; background:none; border:0; cursor:pointer;
  padding:18px 52px 18px 22px; font-size:16px; font-weight:700; color:var(--ws-ink);
  font-family:inherit; letter-spacing:.5px; position:relative;
}
.ws-faq__q::after{
  content:"+"; position:absolute; right:22px; top:50%; transform:translateY(-50%);
  font-size:22px; font-weight:300; color:var(--ws-blue);
}
.ws-faq__item.is-open .ws-faq__q::after{ content:"−"; }
.ws-faq__a{ padding:0 22px 20px; font-size:15px; display:none; }
.ws-faq__item.is-open .ws-faq__a{ display:block; }

/* ---------- 14. CTA ---------- */
.ws-cta{ background:var(--ws-nav); color:#fff; border-radius:var(--ws-radius-box); padding:52px 32px; text-align:center; }
.ws-cta h2{ color:#fff; }
.ws-cta p{ color:rgba(255,255,255,.85); max-width:660px; margin-inline:auto; font-size:16px; }

/* ---------- 15. Forms ---------- */
.ws-form{ display:grid; gap:18px; }
.ws-field label{ display:block; font-weight:700; color:var(--ws-ink); margin-bottom:6px; font-size:14px; letter-spacing:.5px; }
.ws-field .req{ color:#c0392b; }
.ws-field input,.ws-field select,.ws-field textarea{
  width:100%; padding:11px 13px; border:1px solid var(--ws-line); border-radius:var(--ws-radius);
  font-family:inherit; font-size:15px; font-weight:300; color:var(--ws-ink); background:#fff;
  transition:border-color .2s ease, box-shadow .2s ease;
}
.ws-field input:focus,.ws-field select:focus,.ws-field textarea:focus{
  outline:none; border-color:var(--ws-blue-lt); box-shadow:0 0 0 3px rgba(88,155,183,.15);
}
.ws-field textarea{ min-height:150px; resize:vertical; }
.ws-form__row{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:18px; }
.ws-consent{ font-size:14px; color:var(--ws-muted); display:flex; gap:10px; align-items:flex-start; }
.ws-consent input{ width:auto; margin-top:5px; }
.ws-notice{ padding:14px 18px; border-radius:var(--ws-radius); margin-bottom:18px; font-size:15px; }
.ws-notice--ok{ background:#eaf6f0; border:1px solid #b7dfc9; color:#1d6b42; }
.ws-notice--err{ background:#fdecea; border:1px solid #f3c0bb; color:#a02b20; }

/* ---------- 16. Offices ---------- */
.ws-office{ background:#fff; border:1px solid var(--ws-line-soft); border-radius:var(--ws-radius-box); padding:28px 26px; }
.ws-office h3{ color:var(--ws-blue); font-size:19px; margin-bottom:14px; }
.ws-office dl{ margin:0; display:grid; grid-template-columns:auto 1fr; gap:8px 16px; font-size:15px; }
.ws-office dt{ color:var(--ws-muted); white-space:nowrap; }
.ws-office dd{ margin:0; color:var(--ws-ink); }

/* ---------- 17. Pagination ---------- */
.ws-pagination{ display:flex; justify-content:center; gap:6px; margin-top:44px; flex-wrap:wrap; }
.ws-pagination .page-numbers{
  display:grid; place-items:center; min-width:40px; height:40px; padding:0 12px;
  border:1px solid var(--ws-line); border-radius:var(--ws-radius);
  color:var(--ws-body); background:#fff; font-size:14px; font-weight:300;
}
.ws-pagination .page-numbers:hover{ border-color:var(--ws-blue-lt); color:var(--ws-blue); }
.ws-pagination .page-numbers.current{ background:var(--ws-blue); border-color:var(--ws-blue); color:#fff; font-weight:700; }

/* ---------- 18. Footer ---------- */
.ws-footer{ background:var(--ws-dark); color:#999; padding-top:56px; font-size:15px; font-weight:300; }
.ws-footer a{ color:#bbb; }
.ws-footer a:hover{ color:#fff; }
.ws-footer h4{ color:#fff; font-size:15px; margin-bottom:16px; letter-spacing:1px; }
.ws-footer__grid{ display:grid; grid-template-columns:1.6fr repeat(auto-fit,minmax(150px,1fr)); gap:38px; padding-bottom:44px; }
.ws-footer ul{ list-style:none; margin:0; padding:0; }
.ws-footer ul li{ margin-bottom:9px; }
.ws-footer__brand img{ max-height:44px; margin-bottom:18px; }
.ws-footer__addr{ line-height:2; }
.ws-footer__addr strong{ color:#ddd; display:block; margin-top:16px; font-weight:700; }
.ws-footer__bottom{
  border-top:1px solid rgba(255,255,255,.1); padding:18px 0;
  display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; font-size:13px; color:#777;
}
.ws-social{ display:flex; gap:10px; }
.ws-social a{
  width:34px; height:34px; border-radius:50%; display:grid; place-items:center;
  background:rgba(255,255,255,.08); color:#fff; font-size:13px; font-weight:700;
}
.ws-social a:hover{ background:var(--ws-blue); }
@media (max-width:640px){ .ws-footer__grid{ grid-template-columns:1fr; gap:28px; } }

/* ---------- 19. Widgets ---------- */
.ws-widget{ margin-bottom:2rem; }
.ws-widget .widget-title{ font-size:16px; padding-bottom:8px; border-bottom:2px solid var(--ws-blue-lt); margin-bottom:14px; }
.ws-widget ul{ list-style:none; padding:0; margin:0; }
.ws-widget li{ padding:8px 0; border-bottom:1px solid var(--ws-line-soft); font-size:15px; }

/* ---------- 20. 行動版 ---------- */
@media (max-width:1024px){
  .ws-burger{ display:block; }
  .ws-nav{
    position:fixed; inset:0 0 0 auto; width:min(330px,86vw);
    background:#4f4f4f; flex-direction:column; align-items:stretch;
    padding:88px 18px 40px; overflow-y:auto; z-index:950;
    transform:translateX(100%); transition:transform .28s ease;
  }
  .ws-nav.is-open{ transform:translateX(0); }
  .ws-nav ul{ flex-direction:column; align-items:stretch; width:100%; }
  .ws-nav > ul > li > a{ height:auto; padding:14px 6px; border-bottom:1px solid rgba(255,255,255,.1); }
  .ws-nav ul ul{
    position:static; opacity:1; visibility:visible; transform:none; box-shadow:none;
    background:transparent; padding:0 0 8px 14px; display:none;
  }
  .ws-nav li.is-expanded > ul{ display:block; }
  .ws-nav ul ul a{ color:#bbb; padding:9px 6px; }
  .ws-nav ul ul a:hover{ background:transparent; color:#fff; }
  .ws-login{ display:none; }
  .ws-nav-backdrop{
    position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:940;
    opacity:0; visibility:hidden; transition:opacity .26s ease, visibility .26s;
  }
  .ws-nav-backdrop.is-open{ opacity:1; visibility:visible; }
}
@media (max-width:640px){
  :root{ --ws-gutter:16px; --ws-navh:60px; }
  .ws-brand img{ max-height:36px; }
}

@media print{
  .ws-header,.ws-footer,.ws-cta,.ws-burger{ display:none!important; }
  body{ color:#000; padding-top:0; }
}
