@charset "UTF-8";
/* ============================================================
   安昱泌尿科診所 — 暖色視覺系統
   暖米白頁底、軟黑文字、琥珀點綴、藥丸按鈕與大量留白
   ============================================================ */

/* ---------- 1. Design Tokens ---------- */
:root {
  --ground:      #F5F4F2;
  --surface:     #FFFFFF;
  --ground-2:    #E6E6E3;
  --ink:         #404040;
  --ink-soft:    #8C8C8C;
  --ink-faint:   #CCCCCA;
  --accent:      #F2B230;
  --accent-deep: #F2A200;
  --line:        #E6E6E3;
  --ok:          #7FA65A;

  /* 舊選擇器相容別名，全部收斂到暖色系統。 */
  --primary:      var(--accent);
  --primary-dark: var(--accent-deep);
  --primary-08:   rgba(242, 178, 48, .10);
  --primary-16:   rgba(242, 178, 48, .22);
  --eyebrow:      var(--ink-faint);
  --ground-alt:   var(--ground-2);
  --footer-bg:    var(--ground-2);
  --text:         var(--ink);
  --text-mid:     var(--ink);
  --text-soft:    var(--ink);
  --text-mute:    var(--ink-soft);
  --line-mid:     var(--ink-faint);

  --shadow-card: 3px 3px 30px rgba(193, 147, 83, .15);
  --shadow: var(--shadow-card);
  --shadow-lift: 3px 6px 34px rgba(193, 147, 83, .22);
  --radius-card: 10px;
  --radius-sm: 5px;
  --radius-pill: 100px;

  --sans:    "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", sans-serif;
  --display: "Montserrat", "Noto Sans TC", sans-serif;

  /* 字級 */
  --fs-xs: .875rem;    /* 14 */
  --fs-sm: 1rem;       /* 16 */
  --fs-md: 1.125rem;   /* 18 */
  --fs-lg: 1.375rem;   /* 22 */
  --fs-xl: 1.75rem;    /* 28 */
  --fs-2xl: 2.25rem;   /* 36 */

  /* 空間 */
  --gap-1: .5rem;
  --gap-2: 1rem;
  --gap-3: 1.5rem;
  --gap-4: 2rem;
  --gap-5: 3rem;
  --gap-6: 4.5rem;

  --radius: var(--radius-pill);
  --wrap: 1180px;
  --wrap-narrow: 826px;
  --measure: var(--wrap-narrow);
  --header-h: 76px;
}

/* ---------- 2. Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-h) + 16px);
}
body, h1, h2, h3, h4, p, figure, blockquote, dl, dd, ul, ol { margin: 0; }
ul[class], ol[class] { list-style: none; padding: 0; }
img, svg, iframe { max-width: 100%; display: block; }
button, input, select, textarea { font: inherit; color: inherit; }
button { background: none; border: 0; cursor: pointer; }
a { color: inherit; text-decoration: none; transition: color .18s ease; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

/* ---------- 3. Base ---------- */
body {
  font-family: var(--sans);
  font-size: var(--fs-sm);
  line-height: 1.8;
  letter-spacing: .05em;
  color: var(--ink);
  background: var(--ground);
  -webkit-font-smoothing: antialiased;
  /* clip 而非 hidden：hidden 會讓 body 成為捲動容器，使 scroll 事件失效 */
  overflow-x: clip;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}
main { flex: 1; }

h1, h2, h3, h4 {
  font-family: var(--sans);
  font-weight: 500;
  line-height: 1.45;
  color: var(--ink);
  text-wrap: balance;
}
h1 { font-size: clamp(1.5rem, 1.1rem + 1.8vw, 2rem); }
h2 { font-size: clamp(1.25rem, 1.05rem + 1vw, 1.625rem); }
h3 { font-size: var(--fs-md); }
h4 { font-size: var(--fs-sm); }

p + p { margin-top: 1em; }
strong { font-weight: 700; color: var(--ink); }
a:hover { color: var(--accent-deep); }

:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; }

.wrap { width: min(100% - 2.5rem, var(--wrap)); margin-inline: auto; }
@media (max-width: 640px) { .wrap { width: min(100% - 1.75rem, var(--wrap)); } }

.tnum { font-variant-numeric: tabular-nums; }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip-link {
  position: absolute; left: 1rem; top: -100px; z-index: 999;
  background: var(--primary); color: #fff; padding: .6rem 1rem;
  transition: top .2s ease;
}
.skip-link:focus { top: 1rem; color: #fff; }

/* ---------- 4. 區塊標題：英文是主角，中文為說明 ---------- */
.sec-title { text-align: left; margin-bottom: var(--gap-5); }
.sec-title .en {
  display: block;
  font-family: var(--display);
  font-size: clamp(2rem, 1.65rem + 1.6vw, 2.625rem);
  font-weight: 500;
  letter-spacing: .02em;
  color: var(--ink);
  line-height: 1.2;
  text-transform: none;
}
.sec-title .zh {
  display: block;
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--ink);
  letter-spacing: .1em;
  margin-top: .35rem;
}
.sec-title .lede {
  margin-top: .8rem; color: var(--ink);
  font-size: var(--fs-sm); max-width: 60ch;
}
.sec-title--center { text-align: center; }
.sec-title--center .lede { margin-inline: auto; }

/* ---------- 5. 按鈕：藥丸形＋右側圓形箭頭 ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  padding: .65rem 4rem .75rem 1.875rem; border-radius: var(--radius-pill);
  font-size: var(--fs-xs); font-weight: 500; line-height: 1.5;
  border: 1px solid transparent; white-space: nowrap;
  letter-spacing: .05em; position: relative;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.btn::after {
  content: ""; position: absolute; right: 10px; top: 50%;
  transform: translateY(-50%); width: 28px; height: 28px; border-radius: 50%;
  background-color: var(--surface);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23F2B230' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h9M9 4l4 4-4 4'/%3E%3C/svg%3E");
  background-position: center; background-size: 12px; background-repeat: no-repeat;
}
.btn--primary { background: var(--primary); color: #fff; }
.btn--primary:hover { background: var(--primary-dark); color: #fff; }
.btn--outline { border-color: var(--line); color: var(--ink); background: var(--surface); }
.btn--outline:hover { background: var(--accent); border-color: var(--accent); color: #fff; }
.btn--ghost { border-color: var(--line); color: var(--ink); background: var(--surface); }
.btn--ghost:hover { border-color: var(--primary); color: var(--primary); }
.btn--lg { padding-block: .8rem .9rem; font-size: var(--fs-sm); }
.btn svg { width: 17px; height: 17px; flex: none; }

.cta-pair { display: flex; flex-wrap: wrap; gap: .75rem; }
.cta-pair--center { justify-content: center; }

/* ---------- 6. 卡片 / 表格 ---------- */
.card {
  background: var(--surface); border: 0;
  border-radius: var(--radius-card); box-shadow: var(--shadow-card);
}

.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; border-radius: var(--radius-sm); }
table { border-collapse: collapse; width: 100%; font-size: var(--fs-xs); background: var(--surface); }
th, td { padding: .85rem 1rem; text-align: left; border: 1px solid var(--line); vertical-align: top; }
thead th { background: var(--primary); color: #fff; font-weight: 500; white-space: nowrap; }
tbody th { background: var(--ground-alt); font-weight: 500; color: var(--text-mid); }

/* ---------- 7. Header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 100;
  background: var(--surface); border-bottom: 1px solid var(--line);
}
.header-inner { display: flex; align-items: center; gap: var(--gap-3); height: var(--header-h); }

.brand { display: flex; align-items: center; gap: .6rem; flex: none; }
.brand:hover { color: inherit; }
.brand-mark { width: 40px; height: 40px; flex: none; }
.brand-text { display: flex; flex-direction: column; line-height: 1.25; }
.brand-name { font-size: var(--fs-md); font-weight: 500; color: var(--ink); }
.brand-sub {
  font-family: var(--display); font-size: .68rem;
  letter-spacing: .14em; color: var(--ink-soft);
}

.nav { margin-left: auto; }
.nav-list { display: flex; align-items: center; gap: 1.6rem; }
.nav-list > li { position: relative; }
.nav-link {
  font-size: var(--fs-xs); color: var(--text-mid); padding: .5rem 0;
  display: inline-flex; align-items: center; gap: .25rem; position: relative;
}
.nav-link::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0;
  height: 2px; background: var(--primary); transform: scaleX(0);
  transition: transform .2s ease;
}
.nav-link:hover::after, .nav-link[aria-current="page"]::after,
.nav-link[data-branch-active="true"]::after { transform: scaleX(1); }
.nav-link[aria-current="page"], .nav-link[data-branch-active="true"] { color: var(--primary); }
.nav-link .chev { width: 11px; height: 11px; transition: transform .2s ease; }
.has-sub:hover .chev, .has-sub:focus-within .chev { transform: rotate(180deg); }

.subnav {
  position: absolute; top: 100%; left: 50%;
  transform: translateX(-50%) translateY(8px);
  min-width: 200px; padding: .4rem; background: var(--surface);
  border: 0; border-radius: var(--radius-card); box-shadow: var(--shadow-card);
  opacity: 0; visibility: hidden;
  transition: opacity .18s ease, transform .18s ease, visibility .18s;
}
.has-sub:hover .subnav, .has-sub:focus-within .subnav {
  opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0);
}
.subnav a { display: block; padding: .55rem .8rem; font-size: var(--fs-xs); color: var(--text-soft); }
.subnav a:hover { background: var(--ground-alt); color: var(--primary); }

/* 診療項目：分類 → 術式兩層 mega menu */
.subnav--mega {
  position: fixed; top: var(--header-h); left: 50%;
  width: min(960px, calc(100vw - 2rem)); min-width: 0;
  grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0;
  padding: .9rem; transform: translateX(-50%) translateY(8px);
}
.has-sub:hover .subnav--mega, .has-sub:focus-within .subnav--mega {
  transform: translateX(-50%) translateY(0);
}
.subnav-group { min-width: 0; padding: .25rem .55rem; }
.subnav-group + .subnav-group { border-left: 1px solid var(--line); }
.subnav .subnav-category {
  padding: .55rem .65rem; color: var(--primary); font-weight: 500;
  border-bottom: 1px solid var(--line); margin-bottom: .25rem;
}
.subnav-items a { padding: .42rem .65rem; line-height: 1.45; }
.subnav a[aria-current="page"] { color: var(--primary); background: var(--ground-alt); }

.header-cta { display: flex; gap: .5rem; flex: none; }
.header-cta .btn { padding: .55rem 3rem .6rem 1rem; }
.header-cta .btn::after { right: 7px; width: 24px; height: 24px; }

.nav-toggle {
  display: none; width: 44px; height: 44px; margin-left: auto;
  align-items: center; justify-content: center;
}
.nav-toggle span { display: block; width: 22px; height: 2px; background: var(--primary); position: relative; }
.nav-toggle span::before, .nav-toggle span::after {
  content: ""; position: absolute; left: 0; width: 22px; height: 2px;
  background: var(--primary); transition: transform .2s ease;
}
.nav-toggle span::before { top: -7px; }
.nav-toggle span::after { top: 7px; }
.nav-toggle[aria-expanded="true"] span { background: transparent; }
.nav-toggle[aria-expanded="true"] span::before { transform: translateY(7px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span::after { transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 1080px) {
  .nav-toggle { display: flex; }
  .header-cta { display: none; }
  .nav {
    position: fixed; inset: var(--header-h) 0 0 0; margin: 0;
    background: var(--surface); border-top: 1px solid var(--line);
    padding: var(--gap-3) 1.25rem calc(var(--gap-6) + 60px);
    overflow-y: auto; transform: translateX(100%); transition: transform .25s ease;
  }
  .nav[data-open="true"] { transform: translateX(0); }
  .nav-list { flex-direction: column; align-items: stretch; gap: 0; }
  .nav-list > li { border-bottom: 1px solid var(--line); }
  .nav-link { padding: .95rem 0; font-size: var(--fs-sm); justify-content: space-between; }
  .nav-link::after { display: none; }
  .subnav {
    position: static; transform: none; opacity: 1; visibility: visible;
    border: 0; box-shadow: none; padding: 0 0 .7rem .8rem; min-width: 0;
  }
  .subnav--mega {
    display: block; width: auto; transform: none;
    padding: 0 0 .8rem .65rem;
  }
  .has-sub:hover .subnav--mega, .has-sub:focus-within .subnav--mega { transform: none; }
  .subnav-group { padding: .35rem 0; }
  .subnav-group + .subnav-group { border-left: 0; border-top: 1px solid var(--line); }
  .subnav .subnav-category { margin: 0; border-bottom: 0; padding: .65rem .4rem .35rem; }
  .subnav-items { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .subnav-items a { padding: .35rem .4rem; }
  .has-sub .chev { display: none; }
}

@media (max-width: 560px) {
  .subnav-items { grid-template-columns: 1fr; }
}

/* ---------- 8. 關鍵字列（原站首頁頂部） ---------- */
.keyword-bar {
  background: var(--ground); border-bottom: 1px solid var(--line);
  padding: .7rem 0; font-size: .8125rem; color: var(--ink-soft);
}
.keyword-bar ul { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; justify-content: center; }
.keyword-bar li { position: relative; }
.keyword-bar li + li::before {
  content: ""; position: absolute; left: -.65rem; top: 50%;
  width: 1px; height: 11px; background: var(--line-mid); transform: translateY(-50%);
}

/* ---------- 9. Section 節奏 ---------- */
.section { padding: clamp(6rem, 8vw, 7.5rem) 0; }
.section--tight { padding: clamp(4rem, 6vw, 6rem) 0; }
.section--alt { background: var(--ground-2); }
@media (max-width: 900px) {
  .section, .section--tight { padding: 4rem 0; }
}

/* ---------- 10. Hero：滿版形象＋左下白卡 ---------- */
.hero { background: var(--ground); padding: 2rem 0 7rem; text-align: left; }
.hero-stage { position: relative; }
.hero-figure { margin: 0; }
.hero-figure .photo-slot { border-radius: 0; min-height: 560px; }
.hero-card {
  position: absolute; left: 3rem; bottom: -4rem; z-index: 2;
  width: min(620px, calc(100% - 6rem)); padding: 2.25rem 2.5rem;
  background: var(--surface); border-radius: var(--radius-card); box-shadow: var(--shadow-card);
}
.hero .en {
  font-family: var(--display); font-size: clamp(1.5rem, 1.1rem + 2vw, 2.25rem);
  font-weight: 500; color: var(--accent-deep); line-height: 1.3; letter-spacing: .02em;
}
.hero h1 { margin-top: 1rem; font-size: clamp(1.375rem, 1.1rem + 1.4vw, 1.75rem); color: var(--ink); }
.hero .lede {
  margin: 1.2rem 0 0; max-width: 62ch;
  color: var(--ink); font-size: var(--fs-sm);
}
.hero .cta-pair { margin-top: var(--gap-3); }
@media (max-width: 780px) {
  .hero { padding: 1rem 0 4rem; }
  .hero-figure .photo-slot { min-height: 0; }
  .hero-card {
    position: relative; left: auto; bottom: auto; width: calc(100% - 1.5rem);
    margin: -2rem auto 0; padding: 1.6rem 1.35rem;
  }
}

/* 診所介紹（原站 in03） */
.intro-grid {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: var(--gap-5); align-items: center;
}
@media (max-width: 900px) { .intro-grid { grid-template-columns: 1fr; gap: var(--gap-3); } }
.intro-grid h2 { margin-bottom: 1rem; }
.intro-grid p { font-size: var(--fs-xs); }

.value-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--gap-3);
  margin-top: var(--gap-4);
}
@media (max-width: 860px) { .value-grid { grid-template-columns: repeat(2, 1fr); } }
.value-card {
  background: var(--surface); padding: 1.6rem 1.4rem;
  border-radius: var(--radius-card); box-shadow: var(--shadow-card);
}
.value-card .num {
  font-family: var(--display); font-size: var(--fs-xl); font-weight: 600;
  color: var(--accent); line-height: 1;
}
.value-card h3 { margin: .6rem 0 .5rem; color: var(--ink); font-size: var(--fs-md); }
.value-card p { font-size: .8125rem; line-height: 1.8; }

/* 數字實績 */
.stats-band { padding: 5rem 0; background: var(--surface); }
.stats-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--gap-3); }
.stat { text-align: center; padding: 1rem; }
.stat-number {
  display: block; font-family: var(--display); font-size: clamp(2.8rem, 5vw, 3.25rem);
  font-weight: 600; line-height: 1; color: var(--accent); letter-spacing: .01em;
}
.stat span { display: block; margin-top: .75rem; font-size: var(--fs-sm); font-weight: 500; color: var(--ink); }
@media (max-width: 720px) {
  .stats-band { padding: 4rem 0; }
  .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* 首頁就診流程：圓形節點與橫向連線 */
.journey { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--gap-3); counter-reset: visit-step; }
.journey li { position: relative; padding-top: 5.6rem; }
.journey li::before {
  counter-increment: visit-step; content: counter(visit-step, decimal-leading-zero);
  position: absolute; top: 0; left: 0; z-index: 2;
  width: 4.25rem; height: 4.25rem; border-radius: 50%;
  display: grid; place-items: center; background: var(--surface); box-shadow: var(--shadow-card);
  font-family: var(--display); font-size: var(--fs-lg); font-weight: 600; color: var(--accent);
}
.journey li:not(:last-child)::after {
  content: ""; position: absolute; top: 2.1rem; left: 4.25rem;
  width: calc(100% - 2.6rem); height: 1px; background: var(--line);
}
.journey h3 { margin-bottom: .55rem; font-size: var(--fs-md); }
.journey p { font-size: var(--fs-sm); color: var(--ink); }
@media (max-width: 820px) {
  .journey { grid-template-columns: 1fr; gap: 2rem; }
  .journey li { min-height: 4.25rem; padding: .35rem 0 0 5.4rem; }
  .journey li:not(:last-child)::after { top: 4.25rem; left: 2.1rem; width: 1px; height: 2rem; }
}

/* 圖片槽位（交付時換實拍照） */
.photo-slot {
  position: relative; overflow: hidden;
  background: var(--ground-2); color: var(--ink-faint);
  border-radius: var(--radius-sm); display: grid; place-items: center;
}
.photo-slot .slot-label {
  position: relative; z-index: 1; text-align: center;
  font-size: var(--fs-xs); letter-spacing: .08em; line-height: 1.9;
}
.photo-slot .slot-label svg { width: 28px; height: 28px; margin: 0 auto .5rem; opacity: .5; }
.photo-slot--hero { aspect-ratio: 16 / 9; }
.photo-slot--wide { aspect-ratio: 16 / 9; }
.photo-slot--portrait { aspect-ratio: 3 / 4; }
.photo-slot--square { aspect-ratio: 1 / 1; }

/* ---------- 11. 最新消息（原站 news_part） ---------- */
.news-list { border-top: 1px solid var(--line); }
.news-item {
  display: flex; gap: var(--gap-3); align-items: baseline;
  padding: 1.15rem .5rem; border-bottom: 1px solid var(--line);
  transition: background-color .18s ease, padding-left .18s ease;
}
.news-item:hover { background: var(--surface); padding-left: 1rem; color: inherit; }
.news-item .date {
  font-family: var(--display); font-size: var(--fs-xs); color: var(--primary);
  flex: none; letter-spacing: .03em;
}
.news-item .t { font-size: var(--fs-xs); color: var(--text-soft); }
.news-item:hover .t { color: var(--primary); }
@media (max-width: 640px) {
  .news-item { flex-direction: column; gap: .3rem; }
}

/* ---------- 12. 診療項目（原站 in05：編號 01-10 卡片） ---------- */
.service-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--gap-3); }
.service-grid--category { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.service-card {
  display: flex; flex-direction: column; gap: .5rem;
  padding: 1.6rem 1.35rem; background: var(--surface);
  border-radius: var(--radius-card); box-shadow: var(--shadow-card);
  transition: box-shadow .2s ease;
}
.service-card:hover { box-shadow: var(--shadow-lift); color: inherit; }
.service-card .num {
  font-family: var(--display); font-size: var(--fs-xl); font-weight: 600;
  color: var(--accent); letter-spacing: .02em;
}
.service-card h3 { font-size: var(--fs-sm); color: var(--text-mid); }
.service-card:hover h3 { color: var(--primary); }
.service-card p { font-size: .8125rem; line-height: 1.75; color: var(--text-soft); }
@media (max-width: 1080px) { .service-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px)  { .service-grid { grid-template-columns: repeat(2, 1fr); } .service-card { padding: 1.2rem .95rem; } }

.procedure-group + .procedure-group { margin-top: var(--gap-6); }
.procedure-group__head {
  display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 1rem;
  align-items: start; max-width: var(--measure); margin-bottom: var(--gap-3);
}
.procedure-group__head > .num {
  font-family: var(--display); color: var(--accent); font-size: 3.25rem; font-weight: 600; line-height: 1;
}
.procedure-group__head h2 { color: var(--ink); margin-bottom: .45rem; }
.procedure-group__head p { color: var(--text-soft); font-size: var(--fs-xs); }

@media (max-width: 640px) {
  .service-grid--category { grid-template-columns: 1fr; }
  .procedure-group__head { grid-template-columns: 1fr; gap: .35rem; }
}

/* ---------- 13. 自我檢測（原站 in08：三張橫幅卡） ---------- */
.test-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gap-3); }
@media (max-width: 900px) { .test-grid { grid-template-columns: 1fr; } }
.test-card {
  position: relative; overflow: hidden;
  border: 0; border-radius: var(--radius-card); background: var(--surface); box-shadow: var(--shadow-card);
  display: flex; flex-direction: column;
  transition: box-shadow .2s ease;
}
.test-card:hover { box-shadow: var(--shadow-lift); color: inherit; }
.test-card .cap { padding: 1.4rem 1.35rem; display: flex; flex-direction: column; gap: .5rem; flex: 1; }
.test-card .meta { font-size: .75rem; color: var(--text-mute); font-family: var(--display); letter-spacing: .04em; }
.test-card h3 { font-size: var(--fs-md); color: var(--text-mid); }
.test-card:hover h3 { color: var(--primary); }
.test-card p { font-size: .8125rem; }
.test-card .go {
  margin-top: auto; padding-top: .7rem;
  font-size: var(--fs-xs); color: var(--primary); font-weight: 500;
}

/* ---------- 14. 門診時間表（原站 CLINIC TIME） ---------- */
.hours-layout { display: grid; grid-template-columns: 1.15fr .85fr; gap: var(--gap-4); align-items: start; }
.hours-layout > * { min-width: 0; }
@media (max-width: 900px) { .hours-layout { grid-template-columns: 1fr; } }

.hours-table th, .hours-table td { text-align: center; padding: .8rem .5rem; }
.hours-table thead th:first-child { text-align: left; }
.hours-table tbody th { text-align: left; white-space: nowrap; }
.hours-table .slot { font-size: .72rem; color: var(--text-mute); display: block; }
.hours-table tbody th .slot { color: var(--text-soft); }
.dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; background: var(--ok); }
.dot--off { background: var(--line-mid); }
.hours-note { font-size: var(--fs-xs); color: var(--text-soft); margin-top: var(--gap-2); display: grid; gap: .35rem; }
.hours-note li { padding-left: 1.1rem; position: relative; }
.hours-note li::before { content: "◎"; position: absolute; left: 0; color: var(--primary); }

.map-card { padding: var(--gap-3); display: grid; gap: .85rem; }
.map-embed { aspect-ratio: 16 / 10; border-radius: var(--radius-sm); overflow: hidden; background: var(--ground-2); }
.map-embed iframe { width: 100%; height: 100%; border: 0; }
.info-row { display: flex; gap: .7rem; font-size: var(--fs-xs); align-items: flex-start; }
.info-row svg { width: 17px; height: 17px; color: var(--primary); flex: none; margin-top: .3em; }
.info-row b { display: block; color: var(--text-mid); font-weight: 500; }

/* ---------- 15. 衛教／影音卡 ---------- */
.article-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--gap-3); }
@media (max-width: 1080px) { .article-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px)  { .article-grid { grid-template-columns: 1fr; } }
.article-card {
  display: flex; flex-direction: column; overflow: hidden;
  background: var(--surface); border: 0; border-radius: var(--radius-card); box-shadow: var(--shadow-card);
  transition: box-shadow .2s ease;
}
.article-card:hover { box-shadow: var(--shadow-lift); color: inherit; }
.article-card .thumb { aspect-ratio: 16 / 10; overflow: hidden; background: var(--ground-alt); }
.article-card .thumb img { width: 100%; height: 100%; object-fit: cover; }
.article-card .body { padding: 1.2rem 1.15rem; display: flex; flex-direction: column; gap: .5rem; flex: 1; }
.article-card .date { font-family: var(--display); font-size: .75rem; color: var(--primary); letter-spacing: .04em; }
.article-card h3 { font-size: var(--fs-xs); line-height: 1.7; color: var(--text-mid); font-weight: 500; }
.article-card:hover h3 { color: var(--primary); }
.article-card p { font-size: .8125rem; line-height: 1.75; }

.video-card .thumb { position: relative; }
.video-card .thumb::after {
  content: ""; position: absolute; inset: 0; background: rgba(64, 64, 64, .25);
  opacity: 0; transition: opacity .2s ease;
}
.video-card:hover .thumb::after { opacity: 1; }
.video-card .play {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 46px; height: 46px; border-radius: 50%; background: var(--surface);
  display: grid; place-items: center; z-index: 1;
}
.video-card .play svg { width: 17px; height: 17px; color: var(--primary); margin-left: 2px; }

.more-row { text-align: center; margin-top: var(--gap-4); }

/* ---------- 16. 麵包屑 ---------- */
.breadcrumb {
  padding: .9rem 0; font-size: .8125rem; color: var(--text-mute);
  border-bottom: 1px solid var(--line); background: var(--ground-alt);
}
.breadcrumb ol { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.breadcrumb li::after { content: "›"; margin-left: .4rem; color: var(--line-mid); }
.breadcrumb li:last-child::after { content: none; }
.breadcrumb [aria-current="page"] { color: var(--text-soft); }

/* ---------- 17. 內頁 Hero：淺色、大英文、小中文 ---------- */
.page-hero {
  background: var(--ground-2); color: var(--ink);
  padding: clamp(4rem, 7vw, 6.5rem) 0; text-align: left;
}
.page-hero .en {
  font-family: var(--display); font-size: clamp(2rem, 1.7rem + 1.4vw, 2.625rem);
  font-weight: 500; letter-spacing: .02em; color: var(--ink);
}
.page-hero h1 { color: var(--ink); margin-top: .45rem; font-size: var(--fs-lg); letter-spacing: .1em; }
.page-hero .lede {
  color: var(--ink); font-size: var(--fs-sm);
  margin: 1rem 0 0; max-width: 58ch;
}
.page-hero .cta-pair { margin-top: var(--gap-3); }
.page-hero .btn--outline { border-color: var(--line); color: var(--ink); background: var(--surface); }
.page-hero .btn--outline:hover { background: var(--accent); border-color: var(--accent); color: #fff; }
.page-hero .btn--primary { background: var(--accent); color: #fff; }
.page-hero .btn--primary:hover { background: var(--accent-deep); color: #fff; }

/* ---------- 18. 落地頁元件 ---------- */
.lead-text { font-size: var(--fs-sm); line-height: 2; color: var(--text-soft); max-width: 68ch; margin-inline: auto; text-align: center; }

.checklist { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--gap-3); }
@media (max-width: 720px) { .checklist { grid-template-columns: 1fr; } }
.checklist li {
  display: flex; gap: .8rem; align-items: flex-start;
  padding: 1.2rem 1.3rem; background: var(--surface); font-size: var(--fs-xs);
  border-radius: var(--radius-card); box-shadow: var(--shadow-card);
}
.checklist svg { width: 18px; height: 18px; color: var(--primary); flex: none; margin-top: .22em; }

.timeline { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--gap-2); counter-reset: step; }
@media (max-width: 860px) { .timeline { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .timeline { grid-template-columns: 1fr; } }
.timeline li {
  position: relative; padding: 1.5rem 1.25rem 1.35rem;
  background: var(--surface); border: 0; border-radius: var(--radius-card); box-shadow: var(--shadow-card);
}
.timeline li::before {
  counter-increment: step; content: counter(step, decimal-leading-zero);
  font-family: var(--display); font-size: var(--fs-xl); font-weight: 600; color: var(--accent);
  position: absolute; top: .8rem; right: 1rem; line-height: 1;
}
.timeline h4 { font-size: var(--fs-sm); color: var(--primary); margin-bottom: .4rem; }
.timeline p { font-size: .8125rem; line-height: 1.75; }

.fee-card { padding: var(--gap-4); display: grid; gap: 1.1rem; max-width: 760px; margin-inline: auto; }
.fee-rows { display: grid; gap: .8rem; }
.fee-row {
  display: flex; justify-content: space-between; align-items: baseline; gap: 1rem;
  padding-bottom: .8rem; border-bottom: 1px dashed var(--line); font-size: var(--fs-xs);
}
.fee-row:last-child { border-bottom: 0; padding-bottom: 0; }
.fee-row .amount { font-size: var(--fs-md); color: var(--primary); white-space: nowrap; font-weight: 500; }
.fee-note { font-size: var(--fs-xs); color: var(--ink); background: var(--ground); padding: 1rem 1.15rem; border-radius: var(--radius-sm); }

.faq { display: grid; gap: .5rem; max-width: 880px; margin-inline: auto; }
.faq details { background: var(--surface); border: 0; border-radius: var(--radius-card); box-shadow: var(--shadow-card); overflow: hidden; }
.faq summary {
  cursor: pointer; padding: 1.05rem 3rem 1.05rem 1.25rem; position: relative;
  font-size: var(--fs-xs); font-weight: 500; color: var(--text-mid); list-style: none;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::before { content: "Q"; font-family: var(--display); color: var(--primary); margin-right: .6rem; }
.faq summary::after {
  content: ""; position: absolute; right: 1.3rem; top: 50%;
  width: 8px; height: 8px; margin-top: -6px;
  border-right: 2px solid var(--primary); border-bottom: 2px solid var(--primary);
  transform: rotate(45deg); transition: transform .2s ease;
}
.faq details[open] summary::after { transform: rotate(-135deg); margin-top: -2px; }
.faq summary:hover { color: var(--primary); }
.faq .answer { padding: 0 1.25rem 1.2rem 2.6rem; font-size: var(--fs-xs); color: var(--text-soft); }

.notice {
  border-left: 3px solid var(--accent); background: var(--surface);
  padding: 1.15rem 1.35rem; font-size: var(--fs-xs); color: var(--text-soft);
  max-width: 880px; margin-inline: auto; border-radius: 0 var(--radius-card) var(--radius-card) 0;
  box-shadow: var(--shadow-card);
}
.notice b { color: var(--primary); display: block; margin-bottom: .3rem; font-weight: 500; }

/* 醫師卡 */
.doctor-feature { display: grid; grid-template-columns: 300px 1fr; gap: var(--gap-4); align-items: start; }
@media (max-width: 860px) { .doctor-feature { grid-template-columns: 1fr; } .doctor-feature .photo-slot { max-width: 240px; } }
.doctor-feature .creds { display: grid; gap: var(--gap-3); margin-top: var(--gap-3); }
.doctor-feature .photo-slot--portrait { aspect-ratio: 1; border-radius: 50%; }
.cred-block h4 { font-size: var(--fs-xs); color: var(--primary); margin-bottom: .45rem; font-weight: 500; }
.cred-list { display: grid; gap: .3rem; font-size: var(--fs-xs); }
.cred-list li { padding-left: 1.1rem; position: relative; }
.cred-list li::before { content: "+"; position: absolute; left: 0; color: var(--primary); }

.team-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: var(--gap-3); }
.team-card { padding: var(--gap-3); }
.team-card .photo-slot { margin: 0 auto 1.2rem; aspect-ratio: 1; border-radius: 50%; }
.team-card h3 { font-size: var(--fs-md); color: var(--text-mid); }
.team-card .role { font-size: var(--fs-xs); color: var(--primary); margin-bottom: .9rem; }

/* 相關項目 */
.related-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: var(--gap-2); }
.related-card {
  padding: 1.25rem; background: var(--surface); border: 0;
  border-radius: var(--radius-card); box-shadow: var(--shadow-card);
  display: flex; flex-direction: column; gap: .3rem;
  transition: box-shadow .2s ease;
}
.related-card:hover { box-shadow: var(--shadow-lift); color: inherit; }
.related-card .kicker { font-family: var(--display); font-size: .7rem; letter-spacing: .1em; color: var(--primary); }
.related-card h4 { font-size: var(--fs-sm); color: var(--text-mid); }
.related-card p { font-size: .8125rem; }

/* 底部 CTA 帶：維持淺色，不大面積鋪琥珀 */
.cta-band { background: var(--ground-2); color: var(--ink); padding: clamp(4rem, 6vw, 6rem) 0; text-align: center; }
.cta-band h2 { color: var(--ink); }
.cta-band p { color: var(--ink); margin: .8rem auto 0; max-width: 54ch; font-size: var(--fs-sm); }
.cta-band .cta-pair { margin-top: var(--gap-3); }
.cta-band .btn--primary { background: var(--accent); color: #fff; }
.cta-band .btn--primary:hover { background: var(--accent-deep); color: #fff; }
.cta-band .btn--outline { border-color: var(--line); color: var(--ink); background: var(--surface); }
.cta-band .btn--outline:hover { background: var(--accent); border-color: var(--accent); color: #fff; }

/* ---------- 19. 文章頁 ---------- */
.article-layout { display: grid; grid-template-columns: minmax(0, var(--measure)) 290px; gap: var(--gap-5); justify-content: center; }
@media (max-width: 1020px) { .article-layout { grid-template-columns: minmax(0, var(--measure)); } }

.prose { font-size: var(--fs-md); line-height: 2; color: var(--text-soft); }
.prose h2 {
  margin: var(--gap-4) 0 1rem; padding-left: .85rem;
  border-left: 4px solid var(--primary); color: var(--text-mid);
}
.prose h3 { margin: var(--gap-3) 0 .6rem; font-size: var(--fs-md); color: var(--primary); }
.prose p { margin-bottom: 1.15rem; }
.prose ul { display: grid; gap: .6rem; margin: 0 0 1.35rem; padding: 0; list-style: none; }
.prose ul li { position: relative; padding-left: 1.35rem; }
.prose ul li::before {
  content: ""; position: absolute; left: 0; top: .82em;
  width: 6px; height: 6px; background: var(--primary);
}
@media (max-width: 640px) { .prose { font-size: 1.0625rem; } }

.article-aside { display: grid; gap: var(--gap-3); align-content: start; position: sticky; top: calc(var(--header-h) + 1.5rem); }
@media (max-width: 1020px) { .article-aside { position: static; } }
.aside-card { padding: var(--gap-3); display: grid; gap: .8rem; }
.aside-card h4 { font-size: var(--fs-sm); color: var(--primary); }
.aside-card p { font-size: var(--fs-xs); }

.article-meta { display: flex; flex-wrap: wrap; gap: .7rem; align-items: center; font-size: var(--fs-xs); color: var(--text-mute); margin-top: .9rem; }
.byline {
  display: flex; align-items: center; gap: .9rem; flex-wrap: wrap;
  padding: 1rem 1.25rem; background: var(--ground-alt); font-size: var(--fs-xs);
}
.byline .avatar {
  width: 42px; height: 42px; border-radius: 50%; flex: none;
  background: var(--primary); display: grid; place-items: center; color: #fff;
}
.byline b { color: var(--text-mid); font-weight: 500; }

/* ---------- 20. Footer（暖灰淺色） ---------- */
.site-footer { background: var(--footer-bg); color: var(--text-soft); padding: var(--gap-5) 0 var(--gap-3); }
.footer-grid { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1.2fr; gap: var(--gap-4); }
@media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; gap: var(--gap-3); } }
@media (max-width: 560px) { .footer-grid { grid-template-columns: 1fr; } }
.site-footer h4 { color: var(--accent-deep); font-size: var(--fs-sm); margin-bottom: .9rem; font-weight: 500; }
.footer-links { display: grid; gap: .5rem; font-size: var(--fs-xs); }
.footer-brand p { font-size: var(--fs-xs); margin-top: .9rem; line-height: 1.9; }
.footer-hours { font-size: var(--fs-xs); display: grid; gap: .45rem; }
.footer-bottom {
  margin-top: var(--gap-4); padding-top: var(--gap-2);
  border-top: 1px solid var(--line-mid);
  display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
  font-size: .75rem; color: var(--text-mute);
}
.footer-disclaimer { font-size: .75rem; color: var(--text-mute); line-height: 1.9; margin-top: var(--gap-2); }

/* ---------- 21. 行動端 sticky bar ---------- */
.mobile-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
  display: none; grid-template-columns: repeat(3, 1fr);
  background: var(--surface); border-top: 1px solid var(--line);
  box-shadow: 0 -2px 18px rgba(193, 147, 83, .15);
  padding-bottom: env(safe-area-inset-bottom);
  transform: translateY(110%); transition: transform .25s ease;
}
.mobile-bar[data-visible="true"] { transform: translateY(0); }
.mobile-bar button, .mobile-bar a {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .18rem;
  padding: .6rem 0; font-size: .72rem; color: var(--text-mid);
  border-right: 1px solid var(--line);
}
.mobile-bar > *:last-child { border-right: 0; }
.mobile-bar svg { width: 19px; height: 19px; color: var(--primary); }
@media (max-width: 1080px) { .mobile-bar { display: grid; } }

.sheet-backdrop {
  position: fixed; inset: 0; z-index: 95; background: rgba(64, 64, 64, .42);
  opacity: 0; visibility: hidden; transition: opacity .2s ease, visibility .2s;
}
.sheet-backdrop[data-open="true"] { opacity: 1; visibility: visible; }
.sheet {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 96; background: var(--surface);
  border-radius: 12px 12px 0 0;
  padding: 1.25rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom));
  max-height: 82vh; overflow-y: auto;
  transform: translateY(100%); transition: transform .28s cubic-bezier(.32, .72, 0, 1);
}
.sheet[data-open="true"] { transform: translateY(0); }
.sheet-handle { width: 38px; height: 4px; background: var(--line-mid); border-radius: 2px; margin: 0 auto 1rem; }
.sheet h3 { font-size: var(--fs-md); margin-bottom: .9rem; color: var(--primary); }
.sheet-close { display: block; width: 100%; margin-top: 1rem; }

/* ---------- 22. 行動端可讀性 ---------- */
@media (max-width: 640px) {
  .checklist li, .faq .answer, .timeline p, .fee-row, .fee-note,
  .notice, .service-card p, .related-card p, .article-card p,
  .test-card p, .hours-note, .intro-grid p { font-size: .9375rem; }
  .sec-title .lede, .lead-text { font-size: 1rem; }
  table { font-size: .9375rem; }
  .site-footer { padding-bottom: calc(var(--gap-4) + 64px); }
}

/* ============================================================
   23. ART Clinic ASADA-inspired layout translation
   僅轉譯空間、比例、資訊層級與互動語言；素材與內容皆為安昱所有。
   ============================================================ */
:root {
  --radius-card: 16px;
  --radius-sm: 10px;
  --header-h: 88px;
}

.site-header { border-bottom: 0; box-shadow: 0 8px 28px rgba(193, 147, 83, .08); }
.header-inner { gap: 1.75rem; }
.brand-mark { width: 44px; height: 44px; }
.brand-name { letter-spacing: .08em; }
.nav-list { gap: 1.8rem; }
.nav-link { letter-spacing: .08em; }

/* 桌機側邊資訊籤：對應參考站固定診療入口。 */
.side-utility {
  position: fixed; z-index: 80; right: 0; top: 34%;
  display: grid; background: var(--surface); border-radius: 14px 0 0 14px;
  box-shadow: var(--shadow-card); overflow: hidden;
}
.side-utility a {
  width: 58px; min-height: 126px; padding: 1rem .5rem;
  display: flex; flex-direction: column; align-items: center; gap: .65rem;
  font-size: .75rem; line-height: 1.55; letter-spacing: .16em; text-align: center;
  border-bottom: 1px solid var(--line); background: var(--surface);
}
.side-utility a:last-child { border-bottom: 0; }
.side-utility a:hover { color: var(--ink); background: var(--ground); }
.side-utility svg { width: 20px; height: 20px; color: var(--accent); flex: none; }
.side-utility--line svg { color: var(--ok); }
@media (max-width: 1080px) { .side-utility { display: none; } }

/* 首頁大圖與浮動資訊卡。 */
.art-hero { padding: 1.75rem 0 10rem; }
.art-hero .hero-stage { isolation: isolate; }
.art-hero .hero-figure {
  position: relative; height: clamp(540px, 52vw, 650px); overflow: hidden;
  border-radius: 20px; background: var(--ground-2);
}
.art-hero .hero-figure > img {
  width: 100%; height: 100%; object-fit: cover; object-position: center;
  filter: saturate(.72) sepia(.06); transform: scale(1.01);
}
.hero-ribbon,
.hero-ribbon::before {
  content: ""; position: absolute; pointer-events: none;
  background: rgba(242, 178, 48, .34); transform: rotate(-8deg);
}
.hero-ribbon { width: 72%; height: 96px; left: -8%; top: 48%; }
.hero-ribbon::before { width: 78%; height: 64px; left: 52%; top: -74px; }
.hero-message {
  position: absolute; z-index: 2; left: clamp(2rem, 6vw, 5.2rem); top: clamp(3rem, 9vw, 7rem);
  max-width: 450px; color: var(--surface); text-shadow: 0 2px 18px rgba(64, 64, 64, .32);
}
.hero-message span {
  font-family: var(--display); font-size: .75rem; letter-spacing: .14em; font-weight: 600;
}
.hero-message p {
  margin-top: 1rem; font-size: clamp(1.8rem, 2.7vw, 2.6rem); line-height: 1.55;
  font-weight: 500; letter-spacing: .08em;
}
.art-hero .hero-card {
  left: auto; right: 2.8rem; bottom: -7.2rem; width: min(560px, calc(100% - 6rem));
  padding: 2.3rem 2.5rem 2.2rem;
}
.art-hero .hero-card .en {
  font-size: .78rem; letter-spacing: .16em; color: var(--accent-deep); font-weight: 600;
}
.art-hero .hero-card h1 { font-size: clamp(1.45rem, 2vw, 1.85rem); line-height: 1.55; }
.art-hero .hero-card .lede { font-size: .9375rem; line-height: 1.9; }
.hero-access {
  position: absolute; z-index: 3; left: 2.8rem; bottom: -4rem;
  width: 150px; height: 150px; border-radius: 50%; background: var(--surface);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; box-shadow: var(--shadow-card); line-height: 1.5;
}
.hero-access span, .hero-access small { font-size: .72rem; letter-spacing: .08em; }
.hero-access strong { margin: .3rem 0; font-size: 1rem; color: var(--accent-deep); font-weight: 500; }
.hero-access:hover { color: var(--ink); transform: translateY(-3px); }

/* 首屏下方快速資訊。 */
.clinic-quick { padding: 2rem 0 5.5rem; background: var(--ground); }
.quick-grid { display: grid; grid-template-columns: 1.1fr .95fr .8fr; gap: 1.25rem; align-items: stretch; }
.quick-intro { padding: 1.3rem 1rem 1.3rem 0; }
.quick-kicker {
  display: block; font-family: var(--display); font-size: .72rem; color: var(--accent-deep);
  letter-spacing: .13em; margin-bottom: .7rem;
}
.quick-intro h2 { font-size: 1.4rem; letter-spacing: .06em; }
.quick-intro p { margin-top: .65rem; font-size: .875rem; max-width: 38ch; }
.quick-card {
  display: flex; align-items: flex-start; gap: 1rem; padding: 1.45rem 1.5rem;
  border-radius: var(--radius-card); background: var(--surface); box-shadow: var(--shadow-card);
}
.quick-card > svg { width: 25px; height: 25px; color: var(--accent); flex: none; margin-top: .15rem; }
.quick-card span { display: block; font-size: .75rem; letter-spacing: .12em; color: var(--ink-soft); }
.quick-card strong { display: block; margin-top: .28rem; font-size: .875rem; font-weight: 500; }
.quick-card small { display: block; margin-top: .35rem; font-size: .72rem; color: var(--ink-soft); }
.quick-card--line { background: var(--accent); color: var(--surface); }
.quick-card--line:hover { color: var(--surface); background: var(--accent-deep); }
.quick-card--line > svg,
.quick-card--line span,
.quick-card--line small { color: var(--surface); }

/* 新聞列表採左右分欄。 */
.news-section { background: var(--surface); }
.news-layout { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 5rem; align-items: start; }
.news-layout .sec-title { margin-bottom: 0; }
.news-layout .more-row { text-align: right; margin-top: 1.5rem; }
.news-layout .news-item { padding: 1.35rem .4rem; }

/* 品牌故事與圖像拼貼。 */
.story-section { background: var(--ground); overflow: hidden; }
.story-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(3rem, 7vw, 7rem); align-items: center; }
.story-visual { position: relative; min-height: 650px; }
.story-image { position: absolute; object-fit: cover; border-radius: var(--radius-card); }
.story-image--main { left: 0; top: 0; width: 72%; height: 88%; }
.story-image--detail {
  right: 0; bottom: 0; width: 48%; height: 52%;
  border: 10px solid var(--ground); box-shadow: var(--shadow-card);
}
.story-stamp {
  position: absolute; right: 2%; top: 8%; width: 132px; height: 132px; border-radius: 50%;
  background: var(--accent); color: var(--surface); display: grid; place-content: center;
  text-align: center; font-size: .72rem; letter-spacing: .12em; line-height: 1.5;
}
.story-stamp b { display: block; color: var(--surface); font-family: var(--display); font-size: .82rem; }
.story-copy .sec-title { margin-bottom: 2.4rem; }
.story-copy > h2 { font-size: clamp(1.55rem, 2.4vw, 2.15rem); line-height: 1.7; letter-spacing: .08em; }
.story-copy > p { font-size: .9375rem; line-height: 2; }
.story-copy > .btn { margin-top: 1.8rem; }
.value-list {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-top: 7rem; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
}
.value-item { padding: 2rem 1.6rem 2.2rem; min-width: 0; }
.value-item + .value-item { border-left: 1px solid var(--line); }
.value-item .num,
.value-item .value-en { font-family: var(--display); font-size: .72rem; color: var(--accent-deep); letter-spacing: .1em; }
.value-item .value-en { margin-left: .45rem; }
.value-item h3 { margin: .85rem 0 .55rem; font-size: 1.25rem; letter-spacing: .1em; }
.value-item p { font-size: .8125rem; line-height: 1.9; }

/* 數字帶。 */
.stats-band { background: var(--ground-2); padding: 5.5rem 0; }
.stats-label {
  text-align: center; font-family: var(--display); font-size: .72rem;
  letter-spacing: .18em; color: var(--ink-soft); margin-bottom: 2.5rem;
}
.stat { position: relative; }
.stat + .stat::before {
  content: ""; position: absolute; left: calc(var(--gap-3) / -2); top: 8%;
  width: 1px; height: 84%; background: var(--ink-faint);
}

/* 五大診療分類：左標題、右側編號模組。 */
.care-section { background: var(--surface); }
.care-layout { display: grid; grid-template-columns: .72fr 1.28fr; gap: clamp(3rem, 7vw, 7rem); align-items: start; }
.care-heading { position: sticky; top: calc(var(--header-h) + 2rem); }
.care-heading .btn { margin-top: .5rem; }
.care-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.care-card {
  position: relative; display: flex; min-height: 330px; padding: 2rem 1.8rem;
  flex-direction: column; color: var(--ink); border-top: 1px solid var(--line);
  transition: background-color .2s ease;
}
.care-card:nth-child(even) { border-left: 1px solid var(--line); }
.care-card--featured { grid-column: 1 / -1; min-height: 290px; background: var(--ground); }
.care-card:hover { color: var(--ink); background: var(--ground); }
.care-no { font-family: var(--display); color: var(--accent-deep); font-size: .78rem; }
.care-en { margin-top: 1.5rem; font-family: var(--display); font-size: .72rem; letter-spacing: .12em; color: var(--ink-soft); }
.care-card h3 { margin: .45rem 0 .85rem; font-size: 1.45rem; letter-spacing: .1em; }
.care-card p { font-size: .8125rem; line-height: 1.95; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.care-link {
  margin-top: auto; padding-top: 1.5rem; font-size: .75rem; color: var(--accent-deep); letter-spacing: .08em;
}

/* 就診流程改成左右分割，步驟垂直排列。 */
.journey-section { background: var(--ground); }
.journey-layout { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(3rem, 7vw, 7rem); align-items: start; }
.journey-image { width: 100%; min-height: 270px; object-fit: cover; border-radius: var(--radius-card); }
.journey-layout .journey { display: grid; grid-template-columns: 1fr; gap: 0; }
.journey-layout .journey li {
  min-height: 150px; padding: 1.2rem 1rem 1.2rem 7rem; border-top: 1px solid var(--line);
}
.journey-layout .journey li:last-child { border-bottom: 1px solid var(--line); }
.journey-layout .journey li::before {
  top: 1.3rem; left: .5rem; width: 4.8rem; height: 4.8rem; box-shadow: none; border: 1px solid var(--line);
}
.journey-layout .journey li:not(:last-child)::after { display: none; }
.journey-layout .journey h3 { font-size: 1.15rem; letter-spacing: .08em; }
.journey-layout .journey p { font-size: .875rem; line-height: 1.9; }

/* 自我檢測以抽象字樣取代不必要的示意圖片。 */
.selfcheck-section { background: var(--ground-2); }
.test-card { border-radius: var(--radius-card); }
.test-visual {
  position: relative; min-height: 210px; padding: 1.8rem; overflow: hidden;
  display: flex; align-items: flex-end; background: var(--ground); color: var(--ink);
}
.test-visual::before {
  content: ""; position: absolute; width: 170px; height: 170px; border-radius: 50%;
  right: -28px; top: -34px; background: rgba(242, 178, 48, .26);
}
.test-visual span {
  position: absolute; left: 1.3rem; top: .55rem; font-family: var(--display);
  font-size: clamp(3.8rem, 7vw, 6.4rem); line-height: 1; color: var(--ink-faint); letter-spacing: -.04em;
}
.test-visual b { position: relative; z-index: 1; font-size: 1.15rem; letter-spacing: .12em; font-weight: 500; }
.test-card .cap { padding: 1.65rem; }

/* 門診、文章與影音交替淺底，形成長頁節奏。 */
.visit-section { background: var(--surface); }
.hours-panel { padding: 1.5rem; background: var(--ground); border-radius: var(--radius-card); }
.map-card { border-radius: var(--radius-card); }
.article-section { background: var(--ground-2); }
.article-section .article-card { box-shadow: none; }
.article-section .article-card:nth-child(even) { transform: translateY(2rem); }
.article-card .thumb img { transition: transform .45s ease; }
.article-card:hover .thumb img { transform: scale(1.04); }
.video-section { background: var(--surface); }

/* 內頁也沿用大片圓角、柔和留白與非對稱標題。 */
.page-hero { background: var(--ground); padding: 1.5rem 0 3.5rem; }
.page-hero .wrap {
  position: relative; overflow: hidden; padding: clamp(3rem, 7vw, 6rem);
  border-radius: 20px; background: var(--ground-2);
}
.page-hero .wrap::after {
  content: ""; position: absolute; right: -70px; bottom: -90px;
  width: 240px; height: 240px; border-radius: 50%; background: rgba(242, 178, 48, .24);
}
.page-hero .wrap > * { position: relative; z-index: 1; }
.page-hero .en { font-size: clamp(2.6rem, 5.2vw, 4.5rem); color: var(--ink-faint); letter-spacing: 0; }
.page-hero h1 { max-width: 720px; font-size: clamp(1.35rem, 2.3vw, 2rem); line-height: 1.6; }
.page-hero .lede { line-height: 1.95; }
.breadcrumb { background: var(--ground); border: 0; }
.checklist li,
.timeline li,
.related-card,
.faq details,
.fee-card,
.doctor-feature,
.team-card { border-radius: var(--radius-card); }
.cta-band { position: relative; overflow: hidden; }
.cta-band::before {
  content: ""; position: absolute; width: 240px; height: 240px; border-radius: 50%;
  left: -80px; top: -120px; background: rgba(242, 178, 48, .24);
}
.cta-band .wrap { position: relative; z-index: 1; }

@media (max-width: 960px) {
  .quick-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .quick-intro { grid-column: 1 / -1; }
  .story-grid { grid-template-columns: 1fr; }
  .story-visual { min-height: 580px; }
  .story-copy { max-width: 680px; }
  .value-list { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 5rem; }
  .value-item:nth-child(3) { border-left: 0; border-top: 1px solid var(--line); }
  .value-item:nth-child(4) { border-top: 1px solid var(--line); }
  .care-layout,
  .journey-layout { grid-template-columns: 1fr; gap: 3.5rem; }
  .care-heading { position: static; max-width: 650px; }
  .journey-image { max-width: 650px; }
}

@media (max-width: 780px) {
  :root { --header-h: 72px; }
  .art-hero { padding: 1rem 0 4rem; }
  .art-hero .hero-figure { height: 500px; }
  .hero-message { left: 1.6rem; top: 2rem; max-width: 290px; }
  .hero-message p { font-size: 1.8rem; }
  .art-hero .hero-card {
    position: relative; right: auto; bottom: auto; width: calc(100% - 1.25rem);
    margin: -4rem auto 0; padding: 1.7rem 1.4rem;
  }
  .hero-access { left: auto; right: 1.3rem; bottom: auto; top: 350px; width: 120px; height: 120px; }
  .hero-access span, .hero-access small { font-size: .64rem; }
  .hero-access strong { font-size: .82rem; }
  .clinic-quick { padding-top: 0; }
  .news-layout { grid-template-columns: 1fr; gap: 2rem; }
  .news-layout .more-row { text-align: left; }
  .story-visual { min-height: 520px; }
  .story-stamp { width: 110px; height: 110px; }
  .care-grid { grid-template-columns: 1fr; }
  .care-card--featured { grid-column: auto; }
  .care-card:nth-child(even) { border-left: 0; }
  .care-card { min-height: 280px; padding-inline: .5rem; }
  .article-section .article-card:nth-child(even) { transform: none; }
}

@media (max-width: 560px) {
  .art-hero .hero-figure { height: 420px; border-radius: 14px; }
  .art-hero .hero-figure > img { object-position: 36% center; }
  .hero-ribbon { width: 110%; left: -25%; top: 54%; }
  .hero-message { left: 1.2rem; top: 1.4rem; }
  .hero-message span { font-size: .62rem; }
  .hero-message p { margin-top: .65rem; font-size: 1.5rem; line-height: 1.65; }
  .art-hero .hero-card { margin-top: -2.4rem; }
  .art-hero .hero-card .en { font-size: .68rem; }
  .art-hero .hero-card h1 { font-size: 1.3rem; }
  .hero-access { top: 300px; right: .8rem; width: 104px; height: 104px; }
  .quick-grid { grid-template-columns: 1fr; }
  .quick-intro { grid-column: auto; padding-right: 0; }
  .quick-card { padding: 1.25rem; }
  .story-visual { min-height: 400px; }
  .story-image--main { width: 82%; height: 88%; }
  .story-image--detail { width: 51%; height: 52%; border-width: 6px; }
  .story-stamp { right: 0; width: 88px; height: 88px; font-size: .62rem; }
  .story-stamp b { font-size: .68rem; }
  .story-copy > h2 br { display: none; }
  .value-list { grid-template-columns: 1fr; margin-top: 4rem; }
  .value-item + .value-item { border-left: 0; border-top: 1px solid var(--line); }
  .stats-band { padding: 4.5rem 0; }
  .stat:nth-child(3)::before { display: none; }
  .journey-layout .journey li { min-height: 165px; padding-left: 6rem; padding-right: 0; }
  .journey-layout .journey li::before { left: 0; width: 4.2rem; height: 4.2rem; }
  .test-visual { min-height: 180px; }
  .page-hero { padding-top: .75rem; }
  .page-hero .wrap { padding: 2.8rem 1.5rem 3.2rem; border-radius: 14px; }
  .page-hero .en { font-size: 2.15rem; overflow-wrap: anywhere; }
}

/* ---------- 側邊快速欄：四項版（粉專＋電話），縮高避免小螢幕溢出 ---------- */
.side-utility { top: 30%; }
.side-utility a { min-height: 100px; padding: .85rem .5rem; }
.side-utility--fb svg { color: #1877F2; }
.side-utility--tel svg { color: var(--accent); }
@media (max-height: 640px) { .side-utility { top: 22%; } .side-utility a { min-height: 88px; gap: .45rem; } }
