/* ============================================================
   Coeur 圓圓點點 — 前台主題
   Brand tokens (附錄 A：色票)
   ============================================================ */
:root{
  /* ===== 主色：莫蘭迪藍系（取自 coeur2022.com/Nutrition-facts.html） ===== */
  --color-primary  : #6B8EAD;   /* 主色 — 莫蘭迪藍 */
  --color-primary-d: #557593;   /* 深藍（hover） */
  --color-accent   : #C5A059;   /* 副色 — 暖金（保留原網站搭配） */
  --color-soft     : #EEF2F6;   /* 淺藍背景 */
  --color-cream    : #F9F7F2;   /* 米白主背景 */
  --color-dark     : #2E3E4F;   /* 深藍灰（文字） */
  --color-mute     : #7A8A9A;   /* 次文字 */
  --color-morandi  : #9DA89A;
  --color-gold-line: #D8DEE5;   /* 邊框 — 淡藍灰 */
  --color-success  : #5C8D5A;
  --color-danger   : #B14B4B;

  --font-h-cn: "Noto Serif TC","PingFang TC","微軟正黑體",serif;
  --font-b-cn: "Noto Sans TC","PingFang TC","微軟正黑體",sans-serif;
  --font-h-en: "Cormorant Garamond","Playfair Display",serif;
  --font-b-en: "Inter","Helvetica","Arial",sans-serif;

  --radius   : 8px;
  --shadow-sm: 0 2px 8px rgba(46,62,79,.06);
  --shadow-md: 0 8px 24px rgba(46,62,79,.10);
}

*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
html{scroll-behavior:smooth}

/* ============================================================
   全站品牌氛圍：點陣 / 滑鼠 / 啟動動畫
   ============================================================ */

/* 背景品牌點陣 canvas — fixed 在 body 後 */
#brand-dots{
  position:fixed;inset:0;width:100%;height:100%;
  z-index:-1;pointer-events:none;opacity:.55;
}

/* 滑鼠跟隨小圓點（品牌符號：圓） */
#cursor-dot{
  position:fixed;top:0;left:0;width:8px;height:8px;
  background:var(--color-primary);border-radius:50%;
  pointer-events:none;z-index:9999;
  transform:translate3d(-100px,-100px,0);
  transition:width .25s ease,height .25s ease,background .25s ease,opacity .3s ease;
  mix-blend-mode:multiply;opacity:.7;
}
#cursor-dot.hover{
  width:32px;height:32px;background:var(--color-accent);
  opacity:.35;
}
@media (hover: none){#cursor-dot{display:none}}

/* Hero WebGL 光暈層 — 蓋在 hero 圖上、文字下 */
.hero{position:relative}
.hero .hero-webgl{
  position:absolute;inset:0;width:100%;height:100%;
  z-index:1;pointer-events:none;
  mix-blend-mode:screen;opacity:.7;
}

/* ---------- Loading Splash 開站啟動動畫 ---------- */
#loading-splash{
  position:fixed;inset:0;z-index:9000;
  background:linear-gradient(135deg,var(--color-cream),var(--color-soft));
  display:flex;align-items:center;justify-content:center;
  animation:splash-fade-out .8s ease 1.6s forwards;
}
#loading-splash.gone{display:none}
.splash-inner{text-align:center}
.splash-inner img{
  height:120px;margin:0 auto 24px;
  animation:splash-logo-in .8s cubic-bezier(.2,.7,.3,1) forwards;
  opacity:0;transform:scale(.85);
  filter:drop-shadow(0 4px 12px rgba(46,62,79,.18));
}
.splash-tagline{
  display:flex;align-items:center;justify-content:center;gap:18px;
  font-family:var(--font-h-en);font-style:italic;font-size:24px;
  color:var(--color-primary);letter-spacing:.18em;margin-bottom:10px;
  opacity:0;animation:splash-text-in .8s ease .4s forwards;
}
.splash-cn{font-family:var(--font-h-cn);font-style:normal;letter-spacing:.32em;font-weight:500}
.splash-dot{
  width:6px;height:6px;border-radius:50%;background:var(--color-accent);
  display:inline-block;animation:splash-dot-pulse 1.2s ease infinite .8s;
}
.splash-sub{
  font-family:var(--font-h-en);font-style:italic;font-size:13px;
  color:var(--color-mute);letter-spacing:.2em;
  opacity:0;animation:splash-text-in .8s ease .65s forwards;
}
@keyframes splash-logo-in{to{opacity:1;transform:scale(1)}}
@keyframes splash-text-in{to{opacity:1}}
@keyframes splash-dot-pulse{
  0%,100%{transform:scale(1);opacity:1}
  50%{transform:scale(1.6);opacity:.55}
}
@keyframes splash-fade-out{to{opacity:0;visibility:hidden}}

/* ---------- Typography 精緻化：文章內標題裝飾 ---------- */
.section h2::before{
  content:"";display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--color-accent);margin-right:14px;vertical-align:middle;
  transform:translateY(-3px);
  box-shadow:-12px 0 0 -2px var(--color-primary);
}
.section h2::after{
  content:"";display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--color-accent);margin-left:14px;vertical-align:middle;
  transform:translateY(-3px);
  box-shadow:12px 0 0 -2px var(--color-primary);
}

@media (prefers-reduced-motion: reduce){
  #brand-dots,#cursor-dot,.hero-webgl{display:none}
  #loading-splash{display:none !important}
}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
}
body{
  font-family:var(--font-b-cn);
  color:var(--color-dark);
  background:var(--color-cream);
  line-height:1.78;
  font-size:15px;
  letter-spacing:.02em;
  font-feature-settings:"palt" 1, "kern" 1;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--color-primary);text-decoration:none;transition:color .2s ease}
a:hover{color:var(--color-primary-d)}
::selection{background:var(--color-primary);color:#fff}

h1,h2,h3,h4,h5{
  font-family:var(--font-h-cn);font-weight:500;color:var(--color-dark);
  line-height:1.4;margin:0 0 .55em;letter-spacing:.06em;
}
h1{font-size:38px;letter-spacing:.10em;font-weight:600}
h2{font-size:30px;letter-spacing:.08em}
h3{font-size:21px;letter-spacing:.05em}
h4{font-size:17px;letter-spacing:.04em;font-weight:600}
p{margin:0 0 1em}

.container{width:100%;max-width:1180px;margin:0 auto;padding:0 24px}

/* Buttons */
.btn{
  display:inline-block;padding:11px 26px;border-radius:999px;
  font-family:var(--font-b-cn);font-size:14px;font-weight:500;letter-spacing:.12em;
  background:var(--color-primary);color:#fff;border:1px solid var(--color-primary);
  cursor:pointer;transition:all .25s ease;text-align:center;line-height:1.4;
}
.btn:hover{background:var(--color-primary-d);border-color:var(--color-primary-d);color:#fff;transform:translateY(-1px);box-shadow:0 6px 16px rgba(46,62,79,.15)}
.btn-outline{background:transparent;color:var(--color-primary)}
.btn-outline:hover{background:var(--color-primary);color:#fff}
.btn-accent{background:var(--color-accent);border-color:var(--color-accent);color:#fff}
.btn-accent:hover{background:#b08e4e;border-color:#b08e4e;color:#fff}
.btn-dark{background:var(--color-dark);border-color:var(--color-dark)}
.btn-sm{padding:7px 16px;font-size:12px;letter-spacing:.1em}
.btn-lg{padding:14px 34px;font-size:15px;letter-spacing:.14em}
.btn-block{display:block;width:100%}
.btn-danger{background:var(--color-danger);border-color:var(--color-danger)}

/* ============================================================
   Header — 精緻品牌風格
   ============================================================ */
.site-header{
  background:#fff;border-bottom:1px solid var(--color-gold-line);
  position:sticky;top:0;z-index:100;
  box-shadow:0 1px 3px rgba(46,62,79,.04);
  backdrop-filter:saturate(180%) blur(8px);
  background:rgba(255,255,255,.96);
}
.site-header .inner{
  display:flex;align-items:center;justify-content:space-between;
  padding:6px 0;gap:24px;
}
.site-header .logo img{
  height:108px;display:block;
  filter:drop-shadow(0 2px 4px rgba(46,62,79,.16));
  transition:transform .35s cubic-bezier(.2,.7,.3,1);
}
.site-header .logo:hover img{transform:scale(1.03)}

.site-header .header-right{
  display:flex;align-items:center;gap:18px;
}

.site-header nav{display:flex;gap:22px;flex-wrap:wrap;align-items:center}
.site-header nav a{
  color:var(--color-dark);font-weight:500;font-size:13.5px;
  letter-spacing:.12em;padding:8px 2px;position:relative;
  font-feature-settings:"palt" 1;
}
.site-header nav a::after{
  content:'';position:absolute;bottom:-2px;left:50%;width:0;height:1.5px;
  background:var(--color-primary);transition:all .3s ease;transform:translateX(-50%);
}
.site-header nav a:hover{color:var(--color-primary)}
.site-header nav a:hover::after{width:100%}
/* 當前頁面導覽 active 狀態（依 URL 自動判斷） */
.site-header nav a.active{
  color:var(--color-primary);font-weight:600;
}
.site-header nav a.active::after{
  width:100%;background:var(--color-accent);height:2px;
}

.site-header .nav-divider{
  width:1px;height:22px;background:var(--color-gold-line);
}

.site-header .tools{display:flex;gap:6px;align-items:center}

.site-header .tools .tool-link{
  display:inline-flex;align-items:center;gap:5px;
  color:var(--color-mute);font-size:12.5px;letter-spacing:.1em;
  padding:7px 10px;border-radius:999px;transition:all .2s ease;
}
.site-header .tools .tool-link:hover{color:var(--color-primary);background:var(--color-soft)}
.site-header .tools .tool-link .ic{font-size:14px;line-height:1}
.site-header .tools .tool-link.tool-link-quiet{color:var(--color-mute);font-weight:400}

.site-header .tools .tool-cta{
  display:inline-flex;align-items:center;gap:6px;
  background:var(--color-primary);color:#fff;
  padding:8px 18px;border-radius:999px;
  font-size:12.5px;font-weight:500;letter-spacing:.12em;
  border:1px solid var(--color-primary);transition:all .25s ease;
}
.site-header .tools .tool-cta::before{content:"📨";font-size:13px}
.site-header .tools .tool-cta:hover{
  background:var(--color-primary-d);border-color:var(--color-primary-d);
  color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px rgba(46,62,79,.18);
}

.cart-badge{
  background:var(--color-accent);color:#fff;border-radius:10px;
  padding:1px 7px;font-size:10px;margin-left:3px;font-weight:700;letter-spacing:0;
}

/* Hero */
.hero{
  position:relative;height:600px;overflow:hidden;
  background:var(--color-dark) center/cover;
  display:flex;align-items:center;color:#fff;
}
.hero::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(46,62,79,.18) 0%,rgba(46,62,79,.55) 100%);
}
.hero .container{position:relative;z-index:2}
.hero h1{
  color:#fff;font-size:56px;letter-spacing:.14em;line-height:1.3;
  margin-bottom:.3em;font-weight:500;
  text-shadow:0 2px 16px rgba(0,0,0,.45);
}
.hero .en{
  font-family:var(--font-h-en);font-size:26px;color:var(--color-gold-line);
  font-style:italic;margin-bottom:1.4em;letter-spacing:.18em;
}
.hero .sub{
  font-size:16px;color:#fff;opacity:.94;max-width:620px;
  letter-spacing:.08em;line-height:1.9;
}

/* Section */
.section{padding:88px 0}
.section-light{background:#fff}
.section-soft{background:var(--color-soft)}
.section h2{
  text-align:center;margin-bottom:14px;
  font-size:32px;letter-spacing:.14em;font-weight:500;
}
.section .lead{
  text-align:center;color:var(--color-mute);margin-bottom:56px;
  font-family:var(--font-h-en);font-style:italic;
  font-size:16px;letter-spacing:.16em;
}
.section .lead::after{
  content:'';display:block;width:48px;height:1px;background:var(--color-gold-line);margin:22px auto 0;
}

/* Grid services 6 */
.services-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:28px;
}
.service-card{
  background:#fff;padding:40px 26px;border-radius:var(--radius);
  text-align:center;border:1px solid var(--color-gold-line);
  transition:all .35s cubic-bezier(.2,.7,.3,1);
}
.service-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-md);border-color:var(--color-primary)}
.service-card .icon{
  font-family:var(--font-h-en);font-size:44px;color:var(--color-primary);
  margin-bottom:.4em;font-style:italic;letter-spacing:.05em;
}
.service-card h3{font-size:19px;margin-bottom:.6em;letter-spacing:.1em}
.service-card p{color:var(--color-mute);font-size:13.5px;line-height:1.85;min-height:62px;letter-spacing:.02em}
.service-card .more{
  display:inline-block;margin-top:18px;font-size:12px;color:var(--color-primary);
  letter-spacing:.12em;font-family:var(--font-h-en);font-style:italic;
  border-bottom:1px solid var(--color-gold-line);padding-bottom:2px;
}

/* Product grid */
.product-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px}
.product-card{
  background:#fff;border-radius:var(--radius);overflow:hidden;
  border:1px solid var(--color-gold-line);
  transition:all .35s cubic-bezier(.2,.7,.3,1);
  display:flex;flex-direction:column;
}
.product-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:var(--color-primary)}
.product-card .img{aspect-ratio:1/1;background:var(--color-soft);overflow:hidden;display:flex;align-items:center;justify-content:center;padding:28px;transition:background .25s}
.product-card:hover .img{background:var(--color-cream)}
.product-card .img img{max-height:100%;object-fit:contain;transition:transform .4s ease}
.product-card:hover .img img{transform:scale(1.05)}
.product-card .body{padding:18px 20px 22px;flex:1;display:flex;flex-direction:column}
.product-card h4{
  font-family:var(--font-h-cn);font-size:16px;margin:0 0 6px;
  color:var(--color-dark);font-weight:600;line-height:1.5;letter-spacing:.04em;
}
.product-card .subtitle{color:var(--color-mute);font-size:12.5px;margin-bottom:10px;min-height:18px;letter-spacing:.02em;line-height:1.6}
.product-card .price{font-family:var(--font-b-en);font-weight:600;color:var(--color-primary);font-size:18px;margin-top:auto}
.product-card .price del{color:var(--color-mute);font-weight:400;font-size:14px;margin-right:6px}
.product-card .price.price-inquiry,
.price-inquiry{
  font-family:var(--font-b-cn);font-size:14px;font-weight:600;
  color:var(--color-primary);background:var(--color-soft);
  padding:5px 12px;border-radius:6px;display:inline-block;
  border:1px solid var(--color-gold-line);letter-spacing:.05em;
}
.price-inquiry-block{
  padding:18px 0;border-top:1px solid var(--color-gold-line);border-bottom:1px solid var(--color-gold-line);
  margin-bottom:24px;
}
.price-inquiry-block .price{
  font-family:var(--font-b-cn);font-weight:700;font-size:24px;color:var(--color-primary);
  background:none;padding:0;border:0;display:inline-block;
}
.product-card .tags{margin-bottom:6px;display:flex;gap:6px}
.tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:10px;background:var(--color-accent);color:#fff;letter-spacing:.05em}
.tag-hot{background:var(--color-danger)}
.tag-new{background:var(--color-success)}

/* Breadcrumb */
.breadcrumb{padding:14px 0;color:var(--color-mute);font-size:13px;background:var(--color-cream);border-bottom:1px solid var(--color-gold-line)}
.breadcrumb a{color:var(--color-mute)}
.breadcrumb .sep{margin:0 8px;color:var(--color-gold-line)}

/* Product detail */
.product-detail{display:grid;grid-template-columns:1fr 1fr;gap:48px;padding:48px 0}
.product-detail .gallery{background:var(--color-soft);border-radius:var(--radius);padding:32px;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center}
.product-detail .info h1{font-size:32px}
.product-detail .subtitle{color:var(--color-mute);font-size:16px;margin-bottom:24px}
.product-detail .price-block{padding:18px 0;border-top:1px solid var(--color-gold-line);border-bottom:1px solid var(--color-gold-line);margin-bottom:24px}
.product-detail .price-block .price{font-family:var(--font-b-en);font-weight:700;font-size:36px;color:var(--color-primary)}
.product-detail .price-block del{color:var(--color-mute);font-size:18px;margin-right:14px;font-weight:400}
.spec-pick{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 24px}
.spec-pick label{padding:8px 18px;border:1px solid var(--color-gold-line);border-radius:var(--radius);cursor:pointer;font-size:14px;background:#fff;transition:all .2s}
.spec-pick input{display:none}
.spec-pick input:checked + span,.spec-pick label:hover{border-color:var(--color-primary);background:var(--color-primary);color:#fff}
.qty-row{display:flex;align-items:center;gap:14px;margin-bottom:20px}
.qty-row input{width:60px;text-align:center;padding:8px;border:1px solid var(--color-gold-line);border-radius:var(--radius);font-size:15px}
.product-actions{display:flex;gap:12px;margin-bottom:24px}
.desc-box{margin-top:48px;background:#fff;padding:32px;border-radius:var(--radius);border:1px solid var(--color-gold-line)}
.desc-box h3{border-bottom:2px solid var(--color-gold-line);padding-bottom:12px;display:inline-block}
.product-desc-body p{margin:0 0 1em;line-height:1.95}
.product-desc-body h4{font-size:18px;color:var(--color-primary);margin:24px 0 12px;padding:6px 0 6px 12px;border-left:3px solid var(--color-primary);background:linear-gradient(90deg,var(--color-soft),transparent)}
.product-desc-body blockquote{
  border-left:3px solid var(--color-accent);background:var(--color-soft);
  padding:14px 20px;margin:18px 0;border-radius:0 var(--radius) var(--radius) 0;
  font-style:italic;color:var(--color-dark);font-family:var(--font-h-cn);
}
.product-desc-body ul{padding-left:22px;margin:14px 0}
.product-desc-body ul li{margin-bottom:8px;line-height:1.85}
.product-desc-body ul li::marker{color:var(--color-primary)}
.product-desc-body strong{color:var(--color-primary);font-weight:600}
.product-desc-body em{color:var(--color-accent);font-style:normal;font-weight:500}

/* Tables */
.table-cart{width:100%;border-collapse:collapse;background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}
.table-cart th,.table-cart td{padding:14px 12px;text-align:left;border-bottom:1px solid var(--color-gold-line)}
.table-cart th{background:var(--color-soft);color:var(--color-dark);font-weight:600;font-size:14px}
.table-cart td{font-size:14px}
.table-cart .img{width:64px}
.table-cart .img img{width:64px;height:64px;object-fit:cover;border-radius:6px}
.table-cart .qty input{width:60px;text-align:center;padding:5px;border:1px solid var(--color-gold-line);border-radius:6px}
.table-cart .right{text-align:right}

.cart-summary{
  background:#fff;border:1px solid var(--color-gold-line);
  border-radius:var(--radius);padding:24px;margin-top:24px;
}
.cart-summary .row{display:flex;justify-content:space-between;padding:6px 0}
.cart-summary .total{font-size:20px;color:var(--color-primary);font-weight:700;border-top:2px solid var(--color-gold-line);padding-top:14px;margin-top:8px}

/* Forms */
.form-row{margin-bottom:18px}
.form-row label{display:block;font-size:14px;color:var(--color-dark);margin-bottom:6px;font-weight:500}
.form-row label .req{color:var(--color-danger);margin-left:3px}
.form-row input[type=text],.form-row input[type=email],.form-row input[type=password],.form-row input[type=tel],.form-row input[type=number],.form-row input[type=date],.form-row textarea,.form-row select{
  width:100%;padding:10px 14px;border:1px solid var(--color-gold-line);border-radius:var(--radius);
  font-size:15px;background:#fff;font-family:inherit;
  transition:border .2s;
}
.form-row input:focus,.form-row textarea:focus,.form-row select:focus{outline:none;border-color:var(--color-primary)}
.form-row .help{color:var(--color-mute);font-size:12px;margin-top:4px}
.form-card{background:#fff;border:1px solid var(--color-gold-line);border-radius:var(--radius);padding:32px;max-width:480px;margin:48px auto;box-shadow:var(--shadow-sm)}
.form-card h2{text-align:center;margin-bottom:24px}

.alert{padding:12px 18px;border-radius:var(--radius);margin-bottom:18px;font-size:14px}
.alert-error{background:#fbe9e9;color:var(--color-danger);border:1px solid #f3c9c9}
.alert-success{background:#e8f3e8;color:var(--color-success);border:1px solid #c9e3c9}
.alert-info{background:var(--color-soft);color:var(--color-dark);border:1px solid var(--color-gold-line)}

/* Steps */
.steps{display:flex;justify-content:center;gap:24px;margin:32px 0 48px}
.steps .step{padding:8px 18px;border-radius:20px;background:#fff;border:1px solid var(--color-gold-line);font-size:14px;color:var(--color-mute)}
.steps .step.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}

/* Footer */
.site-footer{
  background:var(--color-dark);color:#cfd8e1;padding:64px 0 28px;margin-top:80px;
}
.site-footer a{color:#cfd8e1;letter-spacing:.04em}
.site-footer a:hover{color:#fff}
.site-footer .grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:44px;margin-bottom:40px}
.site-footer h4{
  color:#fff;font-size:13px;letter-spacing:.18em;font-weight:500;
  border-bottom:1px solid #475a6e;padding-bottom:12px;margin-bottom:18px;
  text-transform:uppercase;font-family:var(--font-h-en);font-style:italic;
}
.site-footer ul{list-style:none;padding:0;margin:0;line-height:2.1;font-size:13.5px}
.site-footer ul.footer-contact{line-height:1.5}
.site-footer ul.footer-contact li{
  display:flex;align-items:flex-start;gap:10px;padding:7px 0;
  font-size:13.5px;line-height:1.7;letter-spacing:.03em;
}
.site-footer ul.footer-contact li svg{
  width:16px;height:16px;flex:0 0 16px;margin-top:3px;
  fill:none;stroke:var(--color-accent);stroke-width:1.4;
  stroke-linecap:round;stroke-linejoin:round;
}
.site-footer ul.footer-contact li a,
.site-footer ul.footer-contact li span{color:#cfd8e1;flex:1;min-width:0;word-break:break-word}
.site-footer ul.footer-contact li a:hover{color:#fff;text-decoration:underline;text-underline-offset:3px}
.site-footer .copyright{
  text-align:center;padding-top:28px;border-top:1px solid #475a6e;
  font-size:12px;opacity:.8;letter-spacing:.08em;font-family:var(--font-h-en);
}
.site-footer .brand-info p{font-size:13px;line-height:1.9;margin:4px 0;letter-spacing:.04em}
.site-footer .footer-logo{
  height:92px;margin-bottom:18px;
  filter:drop-shadow(0 2px 6px rgba(0,0,0,.3));
}

/* Pagination */
.pagination{display:flex;gap:6px;justify-content:center;margin:32px 0}
.pagination a,.pagination span{
  padding:8px 14px;border:1px solid var(--color-gold-line);border-radius:6px;
  font-size:14px;background:#fff;color:var(--color-dark);
}
.pagination .current{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}

/* News */
.article-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.article-card{background:#fff;border:1px solid var(--color-gold-line);border-radius:var(--radius);overflow:hidden}
.article-card .img{aspect-ratio:16/9;background:var(--color-soft)}
.article-card .body{padding:18px}
.article-card h3{font-size:18px;margin-bottom:8px}
.article-card .date{color:var(--color-mute);font-size:13px;font-family:var(--font-b-en)}
.article-card .summary{font-size:14px;color:var(--color-mute);margin-top:10px}

.article-detail{background:#fff;padding:48px;border-radius:var(--radius);border:1px solid var(--color-gold-line);max-width:820px;margin:48px auto}
.article-detail .meta{color:var(--color-mute);font-size:13px;margin-bottom:24px;font-family:var(--font-b-en)}

/* ============================================================
   法務文件樣式 (legal-doc) — 服務條款 / 隱私權 / 配送 / 退換貨
   ============================================================ */
.legal-doc{font-size:15px;line-height:1.95;color:var(--color-dark)}
.legal-doc .legal-meta{
  font-size:12px;color:var(--color-mute);text-align:right;font-family:var(--font-b-en);
  margin-bottom:8px;padding-bottom:14px;border-bottom:1px dashed var(--color-gold-line);
}
.legal-doc .legal-intro{
  font-size:15px;line-height:1.95;background:var(--color-soft);
  padding:18px 22px;border-left:3px solid var(--color-primary);border-radius:0 var(--radius) var(--radius) 0;
  margin:24px 0 32px;color:var(--color-dark);
}
.legal-doc h3{
  font-family:var(--font-h-cn);font-size:18px;color:var(--color-primary);
  margin:32px 0 12px;padding:8px 0 8px 14px;border-left:4px solid var(--color-primary);
  background:linear-gradient(90deg,var(--color-soft) 0%,transparent 60%);
  font-weight:600;
}
.legal-doc p{margin:0 0 .85em}
.legal-doc ol{padding-left:22px;margin:8px 0 18px}
.legal-doc ol li{margin-bottom:8px;padding-left:6px}
.legal-doc ol li::marker{color:var(--color-primary);font-weight:600}
.legal-doc strong{color:var(--color-primary);font-weight:600}
.legal-doc a{color:var(--color-primary);border-bottom:1px solid var(--color-gold-line)}
.legal-doc a:hover{color:var(--color-primary-d);border-bottom-color:var(--color-primary)}

.legal-doc .legal-contact{
  background:var(--color-soft);border:1px solid var(--color-gold-line);
  border-radius:var(--radius);padding:24px 28px;margin-top:40px;
}
.legal-doc .legal-contact h4{
  color:var(--color-primary);font-size:18px;margin-bottom:14px;
  padding-bottom:10px;border-bottom:1px solid var(--color-gold-line);
}
.legal-doc .legal-contact ul{list-style:none;padding:0;margin:10px 0 0}
.legal-doc .legal-contact ul li{padding:5px 0;font-size:14px;color:var(--color-dark)}
.legal-doc .legal-contact strong{display:inline-block;min-width:90px;color:var(--color-mute);font-weight:500}

.legal-doc .legal-table{
  width:100%;border-collapse:collapse;margin:14px 0 22px;
  background:#fff;border:1px solid var(--color-gold-line);border-radius:6px;overflow:hidden;
  font-size:14px;
}
.legal-doc .legal-table thead{background:var(--color-soft)}
.legal-doc .legal-table th{
  padding:11px 14px;text-align:left;font-weight:600;color:var(--color-primary);
  border-bottom:2px solid var(--color-primary);font-size:13px;letter-spacing:.03em;
}
.legal-doc .legal-table td{padding:10px 14px;border-bottom:1px solid var(--color-gold-line);vertical-align:top;line-height:1.7}
.legal-doc .legal-table tr:last-child td{border-bottom:0}
.legal-doc .legal-table tbody tr:hover{background:var(--color-cream)}

/* ============================================================
   文章富文本樣式 — .article-rich
   ============================================================ */
.article-rich{font-size:15.5px;line-height:1.95;color:var(--color-dark)}
.article-rich .article-lead{
  font-size:17px;line-height:1.95;background:var(--color-soft);
  padding:22px 26px;border-left:3px solid var(--color-primary);
  border-radius:0 var(--radius) var(--radius) 0;
  margin:0 0 36px;color:var(--color-dark);letter-spacing:.02em;
}
.article-rich h3{
  font-family:var(--font-h-cn);font-size:21px;color:var(--color-primary);
  margin:36px 0 14px;padding:6px 0 6px 14px;
  border-left:4px solid var(--color-primary);
  background:linear-gradient(90deg,var(--color-soft) 0%,transparent 60%);
  font-weight:600;letter-spacing:.05em;
}
.article-rich p{margin:0 0 1.1em}
.article-rich strong{color:var(--color-primary);font-weight:600}
.article-rich .article-tip{
  background:linear-gradient(135deg,#fff9ed 0%,#fef3d8 100%);
  border:1px dashed var(--color-accent);border-radius:var(--radius);
  padding:18px 24px;margin:28px 0;font-size:14.5px;
  color:#7a5a1e;line-height:1.85;position:relative;
}
.article-rich .article-tip::before{
  content:"";position:absolute;top:0;left:-1px;height:100%;width:4px;
  background:var(--color-accent);border-radius:var(--radius) 0 0 var(--radius);
}

/* ---- Q&A 摺疊面板 ---- */
.article-rich .article-faq{margin:18px 0 36px;display:flex;flex-direction:column;gap:8px}
.article-rich .article-faq details{
  background:#fff;border:1px solid var(--color-gold-line);border-radius:var(--radius);
  padding:0;transition:all .25s ease;overflow:hidden;
}
.article-rich .article-faq details[open]{
  border-color:var(--color-primary);box-shadow:var(--shadow-sm);
}
.article-rich .article-faq summary{
  cursor:pointer;padding:14px 18px 14px 46px;font-weight:600;font-size:14.5px;
  color:var(--color-dark);position:relative;list-style:none;
  transition:color .2s ease;
}
.article-rich .article-faq summary::-webkit-details-marker{display:none}
.article-rich .article-faq summary::before{
  content:"+";position:absolute;left:14px;top:50%;transform:translateY(-50%);
  width:22px;height:22px;border-radius:50%;background:var(--color-primary);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:16px;line-height:1;
  font-weight:400;transition:transform .3s ease,background .3s ease;
}
.article-rich .article-faq details[open] summary::before{
  content:"−";transform:translateY(-50%) rotate(180deg);background:var(--color-accent);
}
.article-rich .article-faq summary:hover{color:var(--color-primary)}
.article-rich .article-faq details p{
  margin:0;padding:0 18px 16px 46px;font-size:14px;line-height:1.85;color:var(--color-mute);
  border-top:1px dashed var(--color-gold-line);padding-top:14px;
}

/* ---- 文末 CTA ---- */
.article-rich .article-cta{
  text-align:center;background:linear-gradient(135deg,var(--color-soft),var(--color-cream));
  padding:36px 24px;border-radius:var(--radius);margin:36px 0 0;
  border:1px solid var(--color-gold-line);
}

@media (max-width:575px){
  .article-rich .article-lead{font-size:15px;padding:18px 20px}
  .article-rich h3{font-size:18px}
  .article-rich .article-faq summary{padding-left:42px;font-size:14px}
}
.legal-doc ul{padding-left:22px;margin:6px 0 12px}
.legal-doc ul li{margin-bottom:4px;line-height:1.85}
.legal-doc ul li::marker{color:var(--color-primary)}

@media (max-width:575px){
  .legal-doc .legal-table{font-size:12.5px}
  .legal-doc .legal-table th,
  .legal-doc .legal-table td{padding:8px 10px}
}

@media print{
  .breadcrumb,.site-header,.site-footer{display:none !important}
  .article-detail{box-shadow:none !important;border:0 !important;padding:0 !important;max-width:100% !important}
  .legal-doc h3{break-after:avoid}
}

/* Filters */
.filter-bar{
  background:#fff;padding:16px 20px;border:1px solid var(--color-gold-line);border-radius:var(--radius);
  margin-bottom:32px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;
}
.filter-bar select{padding:8px 12px;border:1px solid var(--color-gold-line);border-radius:6px;font-size:14px;background:#fff}

/* RWD */
@media (max-width:991px){
  .site-header .inner{padding:4px 0;gap:14px}
  .site-header .logo img{height:88px}
  .site-header .header-right{gap:12px}
  .site-header nav{gap:16px}
  .site-header nav a{font-size:12.5px;letter-spacing:.08em}
  .product-grid{grid-template-columns:repeat(2,1fr)}
  .services-grid{grid-template-columns:repeat(2,1fr)}
  .article-grid{grid-template-columns:repeat(2,1fr)}
  .product-detail{grid-template-columns:1fr;gap:24px}
  .site-footer .grid{grid-template-columns:repeat(2,1fr)}
  h1{font-size:32px}h2{font-size:26px}
  .section h2{font-size:26px}
  .hero h1{font-size:42px;letter-spacing:.1em}
}
@media (max-width:575px){
  .site-header .inner{padding:8px 0;gap:8px}
  .site-header .logo img{height:88px;filter:drop-shadow(0 1px 2px rgba(46,62,79,.18))}
  .site-header nav{display:none}
  .site-header .nav-divider{display:none}
  .site-header .header-right{gap:6px;margin-left:auto}
  .site-header .tools{gap:4px}
  .site-header .tools .tool-link .lbl{display:none}
  .site-header .tools .tool-link{padding:9px 10px}
  .site-header .tools .tool-link .ic{font-size:18px}
  .site-header .tools .tool-cta{padding:8px 14px;font-size:12px;letter-spacing:.08em}
  .hero{height:420px}
  .hero h1{font-size:32px;letter-spacing:.08em}
  .hero .en{font-size:18px;letter-spacing:.12em;margin-bottom:1em}
  .hero .sub{font-size:14px}
  .section{padding:60px 0}
  .product-grid{grid-template-columns:repeat(2,1fr);gap:16px}
  .services-grid,.article-grid{grid-template-columns:1fr}
  .site-footer .grid{grid-template-columns:1fr}
  h1{font-size:26px;letter-spacing:.06em}h2{font-size:22px}
  .container{padding:0 18px}
}

/* Member Center */
.member-layout{display:grid;grid-template-columns:240px 1fr;gap:24px;padding:32px 0}
.member-side{background:#fff;border-radius:var(--radius);padding:18px;border:1px solid var(--color-gold-line);height:fit-content}
.member-side a{display:block;padding:10px 14px;color:var(--color-dark);border-radius:6px;font-size:14px}
.member-side a:hover,.member-side a.active{background:var(--color-soft);color:var(--color-primary)}
.member-main{background:#fff;border-radius:var(--radius);padding:32px;border:1px solid var(--color-gold-line)}
@media (max-width:768px){.member-layout{grid-template-columns:1fr}}

/* About / Service */
.about-hero{padding:80px 0;background:linear-gradient(135deg,var(--color-soft),var(--color-cream));text-align:center}
.about-hero h1{font-size:42px}
.about-hero p{font-size:17px;color:var(--color-mute);max-width:680px;margin:24px auto}
.about-content{padding:64px 0;background:#fff}
.about-content .container{max-width:780px}
.about-content p{font-size:16px;margin-bottom:1.2em;color:var(--color-dark)}

/* Map for contact */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px;padding:48px 0}
.contact-info p{font-size:15px;margin:8px 0}
.contact-info .icon{display:inline-block;width:24px;color:var(--color-primary)}
@media (max-width:768px){.contact-grid{grid-template-columns:1fr}}

/* ============================================================
   品牌故事頁專屬樣式 (about-rich)
   ============================================================ */
.about-rich .about-block{padding:56px 0;border-bottom:1px solid var(--color-gold-line)}
.about-rich .about-block:last-child{border-bottom:0}

.about-rich .kicker{
  font-family:var(--font-h-en);font-style:italic;color:var(--color-primary);
  font-size:18px;letter-spacing:.18em;margin-bottom:8px;text-transform:uppercase;
}
.about-rich .about-h{font-family:var(--font-h-cn);font-size:32px;color:var(--color-primary);font-weight:600;margin:0 0 18px}
.about-rich .about-h.center{text-align:center}
.about-rich .about-h-sub{font-size:22px;color:var(--color-accent);font-weight:500;margin:16px 0}
.about-rich .about-lead{font-size:17px;color:var(--color-dark);line-height:1.9;margin-bottom:32px}
.about-rich .about-lead.center{text-align:center;color:var(--color-mute)}
.about-rich .about-philosophy{text-align:center;padding-top:30px;padding-bottom:30px}

.about-rich .about-section-num{
  font-family:var(--font-h-en);font-style:italic;font-size:48px;
  color:var(--color-accent);line-height:1;margin-bottom:8px;letter-spacing:.05em;
}
.about-rich .about-section-title{
  font-family:var(--font-h-cn);font-size:30px;color:var(--color-primary);
  margin-bottom:28px;font-weight:600;display:inline-block;border-bottom:2px solid var(--color-primary);padding-bottom:8px;
}
.about-rich .about-section-soft{
  background:var(--color-soft);margin:0 -80px;padding-left:80px;padding-right:80px;
  border-radius:0;
}

.about-rich p{font-size:16px;line-height:2;color:var(--color-dark);margin-bottom:1.1em}
.about-rich strong{color:var(--color-primary);font-weight:600}
.about-rich .callout-h{
  display:inline-block;background:var(--color-primary);color:#fff;
  padding:6px 16px;border-radius:20px;font-size:15px;margin:14px 0 10px;font-weight:500;
}

.about-rich .about-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}
.about-rich .about-grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin:24px 0}
.about-rich .about-img img{width:100%;border-radius:var(--radius);box-shadow:var(--shadow-md)}
.about-rich .about-img-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:32px}
.about-rich .about-img-row img{width:100%;border-radius:var(--radius);box-shadow:var(--shadow-sm)}

.about-rich .patisserie-card{
  background:#fff;border:1px solid var(--color-gold-line);border-radius:var(--radius);
  padding:28px 22px;text-align:center;transition:all .25s ease;
}
.about-rich .patisserie-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:var(--color-primary)}
.about-rich .patisserie-card .icon{font-size:40px;margin-bottom:10px}
.about-rich .patisserie-card h4{font-family:var(--font-h-cn);font-size:18px;color:var(--color-accent);margin-bottom:10px;font-weight:600}
.about-rich .patisserie-card h4 span{display:block;font-family:var(--font-h-en);font-style:italic;font-size:14px;color:var(--color-mute);margin-top:2px;font-weight:400}
.about-rich .patisserie-card p{font-size:13px;color:var(--color-mute);line-height:1.8;margin:0;text-align:left}

.about-rich .service-mini{
  display:block;background:#fff;border:1px solid var(--color-gold-line);
  border-radius:var(--radius);padding:24px 18px;text-align:center;transition:all .25s ease;color:inherit;
}
.about-rich .service-mini:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--color-primary);color:inherit}
.about-rich .service-mini .icon{
  width:64px;height:64px;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;
  color:var(--color-primary);
  position:relative;transition:color .35s ease,transform .4s cubic-bezier(.2,.7,.3,1);
}
.about-rich .service-mini .icon::after{
  content:"";position:absolute;inset:auto 0 -10px 0;height:1px;
  background:linear-gradient(90deg,transparent,var(--color-gold-line),transparent);
  width:60%;margin:0 auto;
}
.about-rich .service-mini .icon svg{
  width:54px;height:54px;
  stroke:currentColor;
  filter:drop-shadow(0 1px 2px rgba(107,142,173,.18));
  transition:transform .5s cubic-bezier(.2,.7,.3,1);
}
.about-rich .service-mini:hover .icon{color:var(--color-accent);transform:translateY(-2px)}
.about-rich .service-mini:hover .icon svg{transform:scale(1.08) rotate(-3deg)}
.about-rich .service-mini h4{font-family:var(--font-h-en);font-style:italic;color:var(--color-primary);font-size:18px;margin:6px 0 4px;font-weight:500;letter-spacing:.08em;transition:color .25s ease}
.about-rich .service-mini:hover h4{color:var(--color-accent)}
.about-rich .service-mini p{color:var(--color-dark);font-size:14px;font-weight:500;margin:0;letter-spacing:.05em}

/* 法式甜點 4 卡的線描圖示 ─ 套用一致風格 */
.about-rich .patisserie-card .icon{
  width:64px;height:64px;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;
  color:var(--color-primary);
}
.about-rich .patisserie-card .icon svg{
  width:56px;height:56px;stroke:currentColor;
  filter:drop-shadow(0 1px 2px rgba(107,142,173,.18));
  transition:transform .5s cubic-bezier(.2,.7,.3,1);
}
.about-rich .patisserie-card:hover .icon{color:var(--color-accent)}
.about-rich .patisserie-card:hover .icon svg{transform:scale(1.1) rotate(3deg)}

/* SVG 線條進入視窗時「自描」效果 */
.about-rich .service-mini.is-visible .icon svg path,
.about-rich .service-mini.is-visible .icon svg circle,
.about-rich .service-mini.is-visible .icon svg rect,
.about-rich .patisserie-card.is-visible .icon svg path,
.about-rich .patisserie-card.is-visible .icon svg circle,
.about-rich .patisserie-card.is-visible .icon svg rect{
  stroke-dasharray:200;stroke-dashoffset:200;
  animation:line-draw 1.6s cubic-bezier(.7,0,.3,1) forwards;
}
.about-rich .service-mini.is-visible .icon svg circle[fill],
.about-rich .patisserie-card.is-visible .icon svg circle[fill]{
  animation:line-draw 1.6s cubic-bezier(.7,0,.3,1) forwards,fade-in .8s ease forwards;
  stroke-dasharray:30;stroke-dashoffset:30;
}
@keyframes line-draw{
  to{stroke-dashoffset:0}
}
@keyframes fade-in{
  from{opacity:0}to{opacity:1}
}

.about-rich .about-cta{
  text-align:center;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-d));
  color:#fff;border-radius:var(--radius);padding:56px 32px;margin-top:32px;
}
.about-rich .about-cta h3{color:#fff;font-size:26px;margin-bottom:16px;font-weight:600;letter-spacing:.05em}
.about-rich .about-cta p{color:#e8eef4;font-size:16px;line-height:1.9;margin-bottom:24px}

@media (max-width:991px){
  .about-rich .about-grid-2{grid-template-columns:1fr;gap:24px}
  .about-rich .about-grid-4{grid-template-columns:repeat(2,1fr)}
  .about-rich .about-section-soft{margin:0;padding-left:0;padding-right:0}
  .about-rich .about-h{font-size:26px}
  .about-rich .about-section-title{font-size:24px}
}
@media (max-width:575px){
  .about-rich .about-grid-4{grid-template-columns:1fr}
  .about-rich .about-img-row{grid-template-columns:1fr}
}

/* ============================================================
   全站動效系統 — Reveal on Scroll / Micro-interactions
   ============================================================ */

/* ---- 進場動效（Reveal）---- */
.reveal{opacity:0;will-change:transform,opacity;transition:opacity .9s cubic-bezier(.2,.7,.3,1),transform .9s cubic-bezier(.2,.7,.3,1)}
.reveal-up{transform:translateY(36px)}
.reveal-down{transform:translateY(-30px)}
.reveal-left{transform:translateX(-40px)}
.reveal-right{transform:translateX(40px)}
.reveal-zoom{transform:scale(.94)}
.reveal-fade{transform:none}
.reveal.is-visible{opacity:1;transform:none}

/* stagger 延遲：搭配 JS 加上 --i 順序 */
.stagger > *{opacity:0;transform:translateY(28px);transition:opacity .8s cubic-bezier(.2,.7,.3,1),transform .8s cubic-bezier(.2,.7,.3,1);transition-delay:calc(var(--i,0) * 70ms)}
.stagger.is-visible > *{opacity:1;transform:none}

/* Section h2 / lead 自動淡入 */
.section h2,.section .lead{opacity:0;transform:translateY(20px);transition:opacity .9s ease,transform .9s ease}
.section.is-visible h2,.section.is-visible .lead{opacity:1;transform:none}
.section.is-visible .lead{transition-delay:.15s}

/* ---- Hero 動效：Ken Burns 慢推鏡 + 字組依序進場 ---- */
.hero{position:relative}
.hero::before{
  content:"";position:absolute;inset:0;
  background:inherit;background-size:cover;background-position:center;
  animation:hero-zoom 16s ease-out forwards;z-index:0;
}
.hero::after{z-index:1}
.hero .container{z-index:2}
@keyframes hero-zoom{
  from{transform:scale(1.0)}
  to{transform:scale(1.08)}
}

/* Hero 內文：自動依序淡入上升 */
.hero .container > *{opacity:0;transform:translateY(28px);animation:hero-text-in .9s cubic-bezier(.2,.7,.3,1) forwards}
.hero .container > *:nth-child(1){animation-delay:.25s}
.hero .container > *:nth-child(2){animation-delay:.45s}
.hero .container > *:nth-child(3){animation-delay:.65s}
.hero .container > *:nth-child(4){animation-delay:.85s}
@keyframes hero-text-in{
  from{opacity:0;transform:translateY(28px)}
  to{opacity:1;transform:translateY(0)}
}

/* Hero 標題加微微的字距 hover 動畫 */
.hero h1{transition:letter-spacing .6s ease}
.hero:hover h1{letter-spacing:.16em}

/* ---- 裝飾性 ornamental divider ---- */
.ornament{
  display:flex;align-items:center;justify-content:center;gap:14px;
  margin:30px auto;color:var(--color-primary);max-width:380px;
}
.ornament::before,.ornament::after{
  content:"";flex:1;height:1px;
  background:linear-gradient(90deg,transparent 0%,var(--color-gold-line) 50%,transparent 100%);
}
.ornament .diamond{
  font-size:11px;letter-spacing:.4em;text-transform:uppercase;
  font-family:var(--font-h-en);font-style:italic;color:var(--color-accent);
}

/* ---- Sticky Header 捲動縮小 ---- */
.site-header{transition:padding .35s ease,background .35s ease,box-shadow .35s ease}
.site-header .logo img{transition:height .35s ease,transform .35s cubic-bezier(.2,.7,.3,1),filter .35s ease}
.site-header.shrunk{box-shadow:0 4px 18px rgba(46,62,79,.10)}
.site-header.shrunk .logo img{height:72px}
.site-header.shrunk .inner{padding:2px 0}
@media (max-width:575px){
  .site-header.shrunk .logo img{height:64px}
}

/* Logo 微浮動（休止狀態的呼吸感） */
.site-header .logo img{animation:logo-breath 6s ease-in-out infinite}
.site-header.shrunk .logo img{animation:none}
@keyframes logo-breath{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-3px)}
}

/* ============================================================
   浮貼按鈕群 — LINE CTA（always）+ 回頂（scroll 後）
   ============================================================ */
#floating-line{
  position:fixed;right:24px;bottom:24px;z-index:95;
  display:inline-flex;align-items:center;gap:8px;
  padding:12px 18px 12px 14px;border-radius:999px;
  background:#06C755;color:#fff;
  font-family:var(--font-b-cn);font-size:14px;font-weight:600;letter-spacing:.08em;
  box-shadow:0 8px 24px rgba(6,199,85,.35),0 4px 8px rgba(46,62,79,.18);
  text-decoration:none;transition:all .3s cubic-bezier(.2,.7,.3,1);
  animation:line-pulse 2.6s ease-out infinite;
}
#floating-line svg{width:22px;height:22px;flex:0 0 22px;display:block}
#floating-line .lbl{display:inline-block;line-height:1}
#floating-line:hover{
  background:#05B048;color:#fff;
  transform:translateY(-3px) scale(1.03);
  box-shadow:0 12px 32px rgba(6,199,85,.45),0 6px 14px rgba(46,62,79,.2);
  animation:none;
}
#floating-line:active{transform:translateY(-1px) scale(1)}
@keyframes line-pulse{
  0%{box-shadow:0 8px 24px rgba(6,199,85,.35),0 4px 8px rgba(46,62,79,.18),0 0 0 0 rgba(6,199,85,.55)}
  60%{box-shadow:0 8px 24px rgba(6,199,85,.35),0 4px 8px rgba(46,62,79,.18),0 0 0 18px rgba(6,199,85,0)}
  100%{box-shadow:0 8px 24px rgba(6,199,85,.35),0 4px 8px rgba(46,62,79,.18),0 0 0 0 rgba(6,199,85,0)}
}

/* 回頂鈕 — 移到 LINE 按鈕的上方（疊樓設計） */
#back-to-top{
  position:fixed;right:32px;bottom:84px;z-index:90;
  width:42px;height:42px;border-radius:50%;border:0;
  background:#fff;color:var(--color-primary);cursor:pointer;
  font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--color-gold-line);
  box-shadow:0 4px 14px rgba(46,62,79,.12);
  opacity:0;visibility:hidden;transform:translateY(10px) scale(.85);
  transition:all .35s cubic-bezier(.2,.7,.3,1);
}
#back-to-top.show{opacity:1;visibility:visible;transform:none}
#back-to-top:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary);transform:translateY(-2px);box-shadow:0 8px 20px rgba(46,62,79,.2)}

@media (max-width:575px){
  #floating-line{
    right:16px;bottom:16px;padding:10px 14px 10px 12px;
    font-size:12.5px;gap:6px;
  }
  #floating-line svg{width:18px;height:18px;flex:0 0 18px}
  #back-to-top{right:22px;bottom:72px;width:38px;height:38px;font-size:16px}
}

/* ---- 按鈕 ripple 微光效果 ---- */
.btn{position:relative;overflow:hidden}
.btn::after{
  content:"";position:absolute;top:50%;left:50%;width:0;height:0;
  background:rgba(255,255,255,.35);border-radius:50%;
  transform:translate(-50%,-50%);transition:width .6s ease,height .6s ease;
  pointer-events:none;
}
.btn:active::after{width:300px;height:300px;transition:0s}

/* ---- 產品 / 服務 / 文章卡片增強動效 ---- */
.product-card,.service-card,.article-card,.cookie-card,.patisserie-card,.ingredient-card{
  transition:transform .45s cubic-bezier(.2,.7,.3,1),
             box-shadow .45s cubic-bezier(.2,.7,.3,1),
             border-color .35s ease;
}
.product-card .img img{transition:transform .55s cubic-bezier(.2,.7,.3,1)}

/* ---- 圖片 lazy fade-in ---- */
img[loading="lazy"]{
  opacity:0;transition:opacity .6s ease;
}
img[loading="lazy"].loaded,
img[loading="lazy"][complete]{opacity:1}

/* ---- Tools cta pulse 提醒（沒互動時，每 7s 輕脈動） ---- */
.site-header .tools .tool-cta{position:relative}
.site-header .tools .tool-cta::after{
  content:"";position:absolute;inset:0;border-radius:inherit;
  border:2px solid var(--color-primary);
  animation:cta-pulse 3.6s ease-out infinite;
  pointer-events:none;
}
@keyframes cta-pulse{
  0%{transform:scale(1);opacity:.7}
  70%{transform:scale(1.22);opacity:0}
  100%{transform:scale(1.22);opacity:0}
}

/* ---- 導覽 hover 變色 + underline glide ---- */
.site-header nav a{transition:color .25s ease}

/* ---- Hero CTA 按鈕進場 + 持續浮動 ---- */
.hero .btn{animation:hero-cta-float 4s ease-in-out 1.4s infinite}
@keyframes hero-cta-float{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-4px)}
}

/* ---- About / 服務卡 hover 邊框流動 ---- */
.service-card,.patisserie-card{position:relative}
.service-card::before,.patisserie-card::before{
  content:"";position:absolute;inset:0;border-radius:var(--radius);
  border:1px solid var(--color-primary);
  opacity:0;transform:scale(1.03);pointer-events:none;
  transition:all .35s ease;
}
.service-card:hover::before,.patisserie-card:hover::before{opacity:1;transform:scale(1)}

/* ---- 詢價 CTA 按鈕脈動光暈 ---- */
.section .btn-accent{box-shadow:0 0 0 0 rgba(197,160,89,.5);animation:accent-glow 3s ease-out infinite}
@keyframes accent-glow{
  0%{box-shadow:0 0 0 0 rgba(197,160,89,.4)}
  70%{box-shadow:0 0 0 18px rgba(197,160,89,0)}
  100%{box-shadow:0 0 0 0 rgba(197,160,89,0)}
}

/* ---- 文字 highlight underline 動畫 ---- */
.legal-doc a,
.article-detail a,
.about-content a{
  background-image:linear-gradient(transparent 95%,var(--color-primary) 95%);
  background-size:0 100%;background-repeat:no-repeat;
  transition:background-size .4s ease;
}
.legal-doc a:hover,
.article-detail a:hover,
.about-content a:hover{background-size:100% 100%}

/* ---- Stats 區塊（首頁 4 個計數器） ---- */
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;text-align:center}
.stat-item{padding:16px}
.stat-num{
  font-family:var(--font-h-en);font-size:54px;font-weight:600;
  color:var(--color-accent);line-height:1;letter-spacing:.05em;
  display:inline-flex;align-items:baseline;gap:2px;
}
.stat-num .stat-unit{font-size:24px;color:var(--color-gold-line);margin-left:4px}
.stat-label{
  margin-top:10px;font-size:13px;color:#cfd8e1;
  letter-spacing:.18em;text-transform:uppercase;font-family:var(--font-h-en);font-style:italic;
}
@media (max-width:768px){
  .stats-grid{grid-template-columns:repeat(2,1fr);gap:32px}
  .stat-num{font-size:42px}
}

/* ---- Hero scroll hint ---- */
.hero-scroll-hint{
  position:absolute;bottom:32px;left:50%;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:8px;
  color:rgba(255,255,255,.6);font-family:var(--font-h-en);font-size:11px;letter-spacing:.5em;
  z-index:3;animation:scroll-hint-fade 2.4s ease-in-out 1.6s infinite;
}
.hero-scroll-hint .line{
  width:1px;height:42px;background:linear-gradient(180deg,rgba(255,255,255,.55) 0%,transparent 100%);
  position:relative;overflow:hidden;
}
.hero-scroll-hint .line::after{
  content:"";position:absolute;top:-12px;left:0;width:100%;height:12px;
  background:#fff;animation:scroll-hint-line 1.8s ease-in-out infinite;
}
@keyframes scroll-hint-line{
  0%{top:-12px;opacity:0}
  20%{opacity:1}
  100%{top:100%;opacity:0}
}
@keyframes scroll-hint-fade{
  0%,100%{opacity:.6;transform:translateX(-50%) translateY(0)}
  50%{opacity:1;transform:translateX(-50%) translateY(3px)}
}
@media (max-width:575px){.hero-scroll-hint{display:none}}

/* ============================================================
   故事氛圍動效 — Story Atmosphere
   ============================================================ */

/* ---- Hero 飄浮粒子（如糖粉 / 麵粉飄揚） ---- */
.hero .particles{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:hidden}
.hero .particle{
  position:absolute;bottom:-10px;
  background:radial-gradient(circle,rgba(255,255,255,.9) 0%,rgba(255,255,255,.4) 40%,transparent 70%);
  border-radius:50%;filter:blur(.6px);
  animation:particle-drift 22s linear infinite;
  opacity:0;
}
@keyframes particle-drift{
  0%{transform:translate3d(0,0,0) scale(.8);opacity:0}
  8%{opacity:.85}
  85%{opacity:.6}
  100%{transform:translate3d(60px,-110vh,0) scale(.4);opacity:0}
}

/* ---- Word-by-word reveal（中文逐字浮現） ---- */
.word-reveal{display:inline-block}
.word-reveal .w{
  display:inline-block;opacity:0;transform:translateY(20px);
  transition:opacity .7s cubic-bezier(.2,.7,.3,1),transform .7s cubic-bezier(.2,.7,.3,1);
  transition-delay:calc(var(--i,0) * 70ms);
}
.word-reveal.is-visible .w{opacity:1;transform:none}
.word-reveal .w.space{width:.35em}

/* ---- Hero 標題加強對比 ---- */
.hero h1 .accent{
  color:var(--color-accent);font-style:italic;font-family:var(--font-h-en);
  display:inline-block;padding:0 8px;position:relative;
}

/* ---- 跑馬燈 Marquee（法式甜點關鍵字無限循環） ---- */
.marquee{
  background:linear-gradient(180deg,var(--color-soft) 0%,var(--color-cream) 100%);
  border-top:1px solid var(--color-gold-line);border-bottom:1px solid var(--color-gold-line);
  overflow:hidden;padding:18px 0;mask-image:linear-gradient(90deg,transparent 0%,#000 8%,#000 92%,transparent 100%);
  -webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 8%,#000 92%,transparent 100%);
}
.marquee-track{
  display:flex;gap:0;width:max-content;
  animation:marquee-slide 50s linear infinite;
}
.marquee-track:hover{animation-play-state:paused}
.marquee-item{
  font-family:var(--font-h-en);font-style:italic;font-size:20px;
  color:var(--color-primary);letter-spacing:.22em;white-space:nowrap;
  padding:0 32px;display:inline-flex;align-items:center;gap:32px;
}
.marquee-item::after{
  content:"✦";color:var(--color-accent);font-size:11px;
  font-style:normal;letter-spacing:0;display:inline-block;
}
@keyframes marquee-slide{
  from{transform:translate3d(0,0,0)}
  to{transform:translate3d(-50%,0,0)}
}

/* ---- Story Quote 引言區塊（給品牌故事頁、首頁用） ---- */
.story-quote{
  position:relative;max-width:760px;margin:64px auto;text-align:center;
  padding:60px 36px 40px;
}
.story-quote::before{
  content:"\201C";position:absolute;top:-10px;left:50%;transform:translateX(-50%);
  font-family:"Cormorant Garamond","Playfair Display",serif;
  font-size:180px;line-height:1;color:var(--color-gold-line);
  font-style:italic;font-weight:500;opacity:.6;
}
.story-quote::after{
  content:"";display:block;width:48px;height:1px;background:var(--color-accent);
  margin:30px auto 0;
}
.story-quote .quote-text{
  font-family:var(--font-h-cn);font-size:26px;letter-spacing:.14em;
  line-height:1.95;color:var(--color-dark);font-weight:500;
  position:relative;z-index:1;
}
.story-quote .quote-text em{
  color:var(--color-primary);font-style:normal;
  background-image:linear-gradient(transparent 88%,var(--color-accent) 88%,var(--color-accent) 93%,transparent 93%);
  padding:0 3px;
}
.story-quote .quote-cite{
  font-family:var(--font-h-en);font-style:italic;font-size:13px;
  color:var(--color-mute);letter-spacing:.24em;margin-top:18px;
  text-transform:uppercase;
}
.story-quote .quote-cite::before{content:"—— ";color:var(--color-accent)}

/* ---- SVG 手繪 ornament 線條自描動畫 ---- */
.svg-flourish{
  display:block;margin:8px auto 0;height:24px;width:auto;
  overflow:visible;
}
.svg-flourish path,
.svg-flourish line{
  fill:none;stroke:var(--color-accent);stroke-width:1;stroke-linecap:round;
  stroke-dasharray:240;stroke-dashoffset:240;
}
.is-visible .svg-flourish path,
.is-visible .svg-flourish line,
.svg-flourish.is-visible path,
.svg-flourish.is-visible line{
  animation:flourish-draw 2.4s cubic-bezier(.7,0,.3,1) forwards;
}
@keyframes flourish-draw{
  to{stroke-dashoffset:0}
}

/* ---- Image clip-path reveal（從左拉開）---- */
.clip-reveal{
  clip-path:inset(0 100% 0 0);
  transition:clip-path 1.4s cubic-bezier(.7,0,.3,1);
}
.is-visible .clip-reveal,
.clip-reveal.is-visible{clip-path:inset(0 0% 0 0)}

/* ---- Product 圖增強：hover 慢推鏡 ---- */
.product-card .img,
.cookie-card .cookie-img{position:relative;overflow:hidden}
.product-card .img::after,
.cookie-card .cookie-img::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(135deg,rgba(107,142,173,.0) 0%,rgba(107,142,173,.15) 100%);
  opacity:0;transition:opacity .4s ease;pointer-events:none;
}
.product-card:hover .img::after,
.cookie-card:hover .cookie-img::after{opacity:1}

/* ---- 卡片角落金線裝飾 hover ---- */
.product-card .body::before,
.service-card::after{
  content:"";position:absolute;top:0;left:0;width:0;height:1px;
  background:var(--color-accent);transition:width .6s ease;
}
.product-card:hover .body::before,
.service-card:hover::after{width:100%}
.product-card .body{position:relative}
.service-card{position:relative;overflow:hidden}

/* ---- 段落首字大寫 Drop-cap（給故事頁使用） ---- */
.dropcap::first-letter{
  font-family:var(--font-h-en);font-style:italic;font-size:64px;line-height:.9;
  float:left;color:var(--color-primary);margin:6px 12px 0 0;font-weight:500;
}

/* ---- 圖文 hover quote 浮現 ---- */
.story-card{position:relative;overflow:hidden;border-radius:var(--radius)}
.story-card .story-overlay{
  position:absolute;inset:0;background:linear-gradient(0deg,rgba(46,62,79,.85) 0%,transparent 60%);
  display:flex;align-items:flex-end;padding:24px;color:#fff;
  opacity:0;transition:opacity .4s ease;
}
.story-card:hover .story-overlay{opacity:1}
.story-card:hover img{transform:scale(1.04)}
.story-card img{transition:transform .8s cubic-bezier(.2,.7,.3,1)}

/* ---- 章節「進場後一道光線」掃過裝飾 ---- */
.section{position:relative}
.section .container{position:relative;z-index:1}

/* ---- 章節 num 浮水印 ---- */
.section-num{
  position:absolute;top:30px;right:5%;font-family:var(--font-h-en);font-style:italic;
  font-size:160px;color:rgba(107,142,173,.06);font-weight:500;line-height:1;
  pointer-events:none;z-index:0;letter-spacing:.05em;
}
@media (max-width:768px){.section-num{font-size:90px;top:14px}}

/* ---- Scroll progress bar 頂部進度條 ---- */
#scroll-progress{
  position:fixed;top:0;left:0;height:2px;width:0;z-index:200;
  background:linear-gradient(90deg,var(--color-primary),var(--color-accent));
  transition:width .1s ease-out;pointer-events:none;
}

/* ---- 頁腳緞帶分隔（暖金細線） ---- */
.section-light + .section-soft,
.section-soft + .section-light{
  position:relative;
}

/* ============================================================
   首頁區塊背景氛圍 — 各 section 個別主題化
   ============================================================ */
.section.section-services{
  background:
    radial-gradient(circle at center, rgba(107,142,173,.16) 1.6px, transparent 2px) 0 0 / 30px 30px,
    linear-gradient(180deg, #fbf8f2 0%, #f2eadb 100%);
  position:relative;
}
.section.section-services::before{
  content:"";position:absolute;top:-40px;right:-10%;width:520px;height:520px;
  background:radial-gradient(circle, rgba(107,142,173,.22) 0%, transparent 70%);
  pointer-events:none;z-index:0;
}
.section.section-services::after{
  content:"";position:absolute;bottom:-60px;left:-8%;width:420px;height:420px;
  background:radial-gradient(circle, rgba(197,160,89,.16) 0%, transparent 70%);
  pointer-events:none;z-index:0;
}

/* 熱銷商品 — 沿用品牌故事的雙側照片 + radial mask 手法 */
.section.section-products{
  position:relative;
  background:
    radial-gradient(circle at 50% 30%, rgba(197,160,89,.10) 0%, transparent 55%),
    linear-gradient(180deg, #fbf8f2 0%, #f2eadb 100%);
  overflow:hidden;
}
.section.section-products::before{
  content:"";position:absolute;top:0;left:-10%;width:720px;height:100%;
  background:url('../img/about/macaron5.png') center/cover no-repeat;
  opacity:.26;filter:grayscale(.15) saturate(.95);pointer-events:none;
  mask-image:radial-gradient(ellipse at center, #000 0%, rgba(0,0,0,.5) 35%, transparent 72%);
  -webkit-mask-image:radial-gradient(ellipse at center, #000 0%, rgba(0,0,0,.5) 35%, transparent 72%);
}
.section.section-products::after{
  content:"";position:absolute;top:0;right:-10%;width:720px;height:100%;
  background:url('../img/about/macaron1.png') center/cover no-repeat;
  opacity:.24;filter:grayscale(.2) saturate(.95);pointer-events:none;
  mask-image:radial-gradient(ellipse at center, #000 0%, rgba(0,0,0,.5) 35%, transparent 72%);
  -webkit-mask-image:radial-gradient(ellipse at center, #000 0%, rgba(0,0,0,.5) 35%, transparent 72%);
}
/* 區塊內容（卡片）抬起到背景之上 */
.section.section-products > .container{position:relative;z-index:2}

.section.section-stats{
  background:
    radial-gradient(circle at center, rgba(255,255,255,.12) 1.2px, transparent 1.8px) 0 0 / 30px 30px,
    radial-gradient(circle at 80% 30%, rgba(197,160,89,.42) 0%, transparent 50%),
    radial-gradient(circle at 20% 80%, rgba(107,142,173,.45) 0%, transparent 55%),
    linear-gradient(135deg, var(--color-dark) 0%, #4a6075 60%, #3d5063 100%);
}

.section.section-story{position:relative;background:linear-gradient(180deg,#fff 0%,#fbf8f2 100%);overflow:hidden}
.section.section-story::before{
  content:"";position:absolute;top:0;left:-8%;width:680px;height:100%;
  background:url('../img/about/pearl.png') center/cover no-repeat;
  opacity:.22;filter:grayscale(.2) saturate(.9);pointer-events:none;
  mask-image:radial-gradient(ellipse at center, #000 0%, transparent 70%);
  -webkit-mask-image:radial-gradient(ellipse at center, #000 0%, transparent 70%);
}
.section.section-story::after{
  content:"";position:absolute;top:0;right:-8%;width:680px;height:100%;
  background:url('../img/about/about1.png') center/cover no-repeat;
  opacity:.20;filter:grayscale(.3) saturate(.9);pointer-events:none;
  mask-image:radial-gradient(ellipse at center, #000 0%, transparent 70%);
  -webkit-mask-image:radial-gradient(ellipse at center, #000 0%, transparent 70%);
}

.section.section-news{
  background:
    repeating-linear-gradient(0deg, transparent 0px, transparent 26px, rgba(107,142,173,.12) 26px, rgba(107,142,173,.12) 27px),
    radial-gradient(circle at 80% 0%, rgba(197,160,89,.14) 0%, transparent 50%),
    linear-gradient(180deg, #e8eef5 0%, #f2eadb 100%);
  position:relative;
}

.marquee{
  background:
    radial-gradient(circle at center, rgba(107,142,173,.20) 1.4px, transparent 2px) 0 0 / 24px 24px,
    linear-gradient(180deg, #e8eef5 0%, #f5ede2 100%);
}

/* ---- Page Enter 微 fade ---- */
main{animation:page-fade .5s ease-out}
@keyframes page-fade{
  from{opacity:0;transform:translateY(10px)}
  to{opacity:1;transform:translateY(0)}
}

/* Mobile menu toggle */
.menu-toggle{display:none;background:none;border:0;font-size:22px;cursor:pointer;color:var(--color-dark)}
@media (max-width:575px){
  .menu-toggle{display:block}
  .site-header nav.open{display:flex;position:absolute;top:100%;left:0;right:0;background:#fff;flex-direction:column;padding:14px 20px;border-bottom:1px solid var(--color-gold-line)}
}
