/* ===================================================================
   萊恩咖啡 — 首頁專屬樣式（自 index.html <style> 原樣抽出）
   =================================================================== */
:root{
  --espresso:#5e3411;    /* 深咖啡 —— 退居重音（頁尾／引言／聯繫塊） */
  --mocha:#7a5230;       /* 木質棕 */
  --caramel:#cf7e4f;     /* 陶土橘 —— 新主色，溫暖有活力 */
  --clay:#d98a5c;        /* 陶土橘亮 */
  --milk:#f7ead4;        /* 奶茶米 */
  --cream:#fcf8f1;       /* 燕麥奶白 —— 主底，大面積留白 */
  --paper:#f7efe1;       /* 奶油紙 —— 次要區塊底 */
  --latte:#ece0ca;
  --sage:#9aaa86;        /* 抹茶綠 —— 輔色／自然點綴 */
  --butter:#f4e4c1;      /* 奶油黃 —— 童趣跳色 */
  --terracotta:#d98a5c;
  --ink:#4d3a2a;         /* 可可棕 —— 柔和文字，不刺眼 */
  --soft:#7d6a54;
  --line:#e0d2b8;
  --kai:'LXGW WenKai TC','Noto Serif TC',serif;
  --serif:'Noto Serif TC',serif;
  --sans:'Noto Sans TC',sans-serif;
  --display:'Cormorant Garamond',serif;
  --hand-en:'Caveat',cursive;
  --hand-zh:'Long Cang',cursive;
  --shadow:0 22px 60px -28px rgba(94,52,17,.5);
  --shadow-sm:0 10px 30px -16px rgba(94,52,17,.4);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:var(--sans);color:var(--ink);line-height:1.95;
  background-color:var(--cream);
  background-image:
    radial-gradient(circle at 18% 8%,rgba(236,224,202,.55),transparent 30%),
    radial-gradient(circle at 85% 70%,rgba(247,234,212,.5),transparent 35%);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:hidden;
}
h1,h2,h3,h4{font-family:var(--kai);font-weight:400;line-height:1.5;letter-spacing:.02em}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
.wrap{width:min(1240px,90vw);margin-inline:auto}

/* ===== 頁面載入動畫（為你沖一杯溫暖）===== */
.preloader{position:fixed;inset:0;z-index:9999;background:var(--cream);display:flex;align-items:center;justify-content:center;transition:opacity .6s ease,visibility .6s ease}
.preloader.done{opacity:0;visibility:hidden}
.pl-inner{text-align:center}
.pl-logo{position:relative;width:128px;height:128px;margin:0 auto;display:flex;align-items:center;justify-content:center}
.pl-logo img{width:76px;height:auto;animation:plBreathe 2.4s ease-in-out infinite}
@keyframes plBreathe{0%,100%{transform:scale(1);opacity:.9}50%{transform:scale(1.06);opacity:1}}
.pl-ring{position:absolute;inset:0;width:100%;height:100%;animation:plSpin 1.5s linear infinite}
.pl-ring circle{fill:none;stroke:var(--clay);stroke-width:2.5;stroke-linecap:round;stroke-dasharray:55 230}
@keyframes plSpin{to{transform:rotate(360deg)}}
.pl-logo .steam{position:absolute;top:-14px;left:0;right:0;height:22px;z-index:2}
.pl-logo .steam span{position:absolute;width:4px;height:16px;background:linear-gradient(var(--mocha),transparent);border-radius:4px;opacity:0;animation:plSteam 2.2s ease-in-out infinite}
@keyframes plSteam{0%{opacity:0;transform:translateY(6px) scaleY(.6)}40%{opacity:.5}100%{opacity:0;transform:translateY(-14px) scaleY(1.2)}}
.pl-brand{font-family:var(--kai);font-weight:700;font-size:1.32rem;color:var(--espresso);letter-spacing:.2em;margin-top:1.7rem}
.pl-text{font-family:var(--sans);font-size:.82rem;color:var(--soft);font-weight:300;margin-top:.45rem;letter-spacing:.06em;display:flex;align-items:center;justify-content:center}
.pl-dots{display:inline-flex;margin-left:5px}
.pl-dots i{width:4px;height:4px;border-radius:50%;background:var(--caramel);margin-left:3px;animation:plDot 1.2s infinite}
.pl-dots i:nth-child(2){animation-delay:.2s}.pl-dots i:nth-child(3){animation-delay:.4s}
@keyframes plDot{0%,100%{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}
@media(prefers-reduced-motion:reduce){.pl-logo img,.pl-ring,.pl-logo .steam span,.pl-dots i{animation:none}.pl-logo img{opacity:1}}

/* —— 生活誌標籤系統 —— */
.kicker{font-family:var(--display);font-style:italic;font-size:1.3rem;color:var(--caramel);letter-spacing:.06em}
.label{font-family:var(--sans);font-weight:500;font-size:.72rem;letter-spacing:.42em;color:var(--caramel);text-transform:uppercase}
.rule{width:54px;height:1px;background:var(--sage);display:inline-block;vertical-align:middle}
/* 手寫旁註 + 紙膠帶 */
.hand{font-family:var(--hand-en);color:var(--mocha);font-size:1.6rem;line-height:1.2;transform:rotate(-4deg)}
.hand-zh{font-family:var(--hand-zh);color:var(--mocha);font-size:1.5rem;line-height:1.3}
.tape{position:absolute;width:104px;height:30px;background:rgba(154,170,134,.45);
  box-shadow:0 2px 8px rgba(94,52,17,.12);z-index:5;
  backdrop-filter:blur(1px);border-left:1px dashed rgba(255,255,255,.45);border-right:1px dashed rgba(255,255,255,.45)}

/* ============ 報頭 ============ */
header{position:fixed;top:0;left:0;right:0;z-index:60;transition:.45s ease;border-bottom:1px solid transparent}
header.scrolled{background:rgba(252,248,240,.9);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;padding:.8rem 0}
.brand{display:flex;align-items:center;gap:.85rem}
.brand img{height:46px;width:auto;flex-shrink:0}
.brand .zh{font-family:var(--kai);font-weight:700;font-size:1.18rem;color:var(--espresso);letter-spacing:.1em}
.brand .en{font-family:var(--display);font-size:.68rem;letter-spacing:.3em;color:var(--caramel);display:block}
header.top .brand .zh{color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.4)}
header.top .brand .en{color:var(--milk);text-shadow:0 2px 12px rgba(0,0,0,.4)}
.menu{display:flex;align-items:center;gap:2.2rem}
.menu a{font-size:.9rem;font-weight:500;letter-spacing:.06em;color:var(--espresso);position:relative}
header.top .menu a{color:#f7ead4;text-shadow:0 1px 10px rgba(0,0,0,.45)}
.menu a:not(.btn)::after{content:"";position:absolute;left:0;bottom:-5px;width:0;height:1px;background:currentColor;transition:.3s}
.menu a:not(.btn):hover::after{width:100%}
.has-sub{position:relative;display:inline-flex;align-items:center}
.has-sub .sub-trigger{display:inline-flex;align-items:center;gap:.3rem}
.has-sub .caret{font-size:.6rem;transition:.3s}
.has-sub:hover .caret{transform:rotate(180deg)}
.submenu{position:absolute;top:150%;left:50%;transform:translateX(-50%) translateY(8px);min-width:190px;
  background:var(--cream);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);
  padding:.6rem;opacity:0;visibility:hidden;transition:.3s;z-index:60}
.has-sub:hover .submenu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.submenu a{display:block;padding:.55rem .9rem;border-radius:7px;font-size:.88rem;color:var(--ink)!important;text-shadow:none!important;letter-spacing:.04em;transition:.2s}
.submenu a::after{display:none!important}
.submenu a:hover{background:var(--paper);color:var(--caramel)!important;transform:translateX(8px)}
.submenu a .en{display:block;font-family:var(--display);font-style:italic;font-size:.72rem;color:var(--sage);letter-spacing:.05em}
.btn{border:1px solid currentColor;padding:.55rem 1.35rem;border-radius:2px;font-weight:500;letter-spacing:.1em;font-size:.82rem;transition:.3s}
.btn:hover{background:var(--espresso);color:#fff!important;border-color:var(--espresso);text-shadow:none!important}
.menu-toggle{display:none;background:none;border:0;cursor:pointer;flex-direction:column;gap:5px}
.menu-toggle span{width:26px;height:2px;background:var(--espresso);transition:.3s}
header.top .menu-toggle span{background:#fff}

/* ============ 封面 HERO ============ */
.hero{min-height:100vh;display:flex;align-items:flex-end;color:#fff;position:relative;overflow:hidden;padding-bottom:clamp(90px,13vh,150px);background:#2a1709;isolation:isolate}
.hero-wave{position:absolute;left:0;right:0;bottom:-1px;z-index:3;width:100%;line-height:0;pointer-events:none}
.hero-wave svg{display:block;width:100%;height:clamp(64px,9vw,118px)}
.hero-wave .wp>use{animation:waveMove 20s cubic-bezier(.55,.5,.45,.5) infinite;will-change:transform}
.hero-wave .wp>use:nth-child(1){animation-duration:11s;animation-delay:-2s}
.hero-wave .wp>use:nth-child(2){animation-duration:15s;animation-delay:-3s}
.hero-wave .wp>use:nth-child(3){animation-duration:21s;animation-delay:-4s}
.hero-wave .wp>use:nth-child(4){animation-duration:27s;animation-delay:-5s}
@keyframes waveMove{0%{transform:translateX(-90px)}100%{transform:translateX(85px)}}
/* 圖片由後台「版型圖片」透過 --hero-bg 注入；後面的 url 是 fallback，PHP 沒給值也不會變空白 */
.hero-bg{position:absolute;inset:-3%;z-index:0;background:var(--hero-bg,url('../images/hero-space.webp')) center 40%/cover no-repeat;transform:scale(1.06);animation:kenburns 26s ease-in-out infinite alternate;will-change:transform}
@keyframes kenburns{0%{transform:scale(1.06) translate(0,0)}100%{transform:scale(1.18) translate(-2%,-2%)}}
.hero-tint{position:absolute;inset:0;z-index:1;background:rgba(74,42,18,.42);mix-blend-mode:multiply}
.hero-grad{position:absolute;inset:0;z-index:2;background:linear-gradient(180deg,rgba(34,18,7,.72)0%,rgba(34,18,7,.34)32%,rgba(34,18,7,.46)60%,rgba(26,13,4,.92)100%)}
.hero-vig{position:absolute;inset:0;z-index:2;background:radial-gradient(130% 110% at 50% 30%,transparent 38%,rgba(26,13,4,.72)100%)}
.hero-grain{position:absolute;inset:-60%;z-index:2;opacity:.07;mix-blend-mode:overlay;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:grain 6s steps(5) infinite}
@keyframes grain{0%,100%{transform:translate(0,0)}20%{transform:translate(-2%,1.5%)}40%{transform:translate(1.5%,-2%)}60%{transform:translate(-1.5%,1%)}80%{transform:translate(2%,1.5%)}}
.hero-motes{position:absolute;inset:0;z-index:2;overflow:hidden;pointer-events:none}
.mote{position:absolute;bottom:-8%;border-radius:50%;background:radial-gradient(circle,rgba(255,239,206,.95),rgba(255,239,206,0)70%);animation:floatUp linear infinite}
@keyframes floatUp{0%{transform:translateY(0) translateX(0);opacity:0}12%{opacity:.7}88%{opacity:.45}100%{transform:translateY(-112vh) translateX(24px);opacity:0}}
.hero-sheen{position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(105deg,transparent 38%,rgba(255,243,219,.16)50%,transparent 62%);transform:translateX(-130%);animation:sheen 2.8s cubic-bezier(.4,0,.2,1) .5s 1 forwards}
@keyframes sheen{to{transform:translateX(130%)}}
.hero .wrap{position:relative;z-index:4;width:min(1240px,90vw);will-change:transform,opacity}
.masthead{position:absolute;top:13vh;left:0;right:0;z-index:4;text-align:center;color:#fff;opacity:0;animation:upIn 1s ease forwards .3s}
.masthead .issue{font-family:var(--sans);font-weight:500;font-size:.72rem;letter-spacing:.5em;text-transform:uppercase;color:var(--milk);opacity:.92}
.masthead .issue .dot{display:inline-block;margin:0 .9rem;opacity:.6}
@keyframes upIn{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
.hero-headline{max-width:880px}
.hero-headline .label{color:var(--milk);display:block;margin-bottom:1.1rem;opacity:0;animation:upIn .9s ease forwards .25s}
.hero h1{font-size:clamp(3rem,8.5vw,7rem);font-weight:300;color:#fff;letter-spacing:.04em;line-height:1.04;text-shadow:0 6px 40px rgba(0,0,0,.45)}
.hero h1 .ch{display:inline-block;opacity:0;transform:translateY(.5em) scale(.94);filter:blur(12px);animation:chIn .95s cubic-bezier(.2,.75,.25,1) forwards;animation-delay:calc(var(--d)*.085s + .5s)}
@keyframes chIn{to{opacity:1;transform:none;filter:blur(0)}}
.hero h1 .ch.em{font-family:var(--display);font-style:italic;font-weight:500;color:var(--milk)}
.hero .tagline{margin-top:1.4rem;display:flex;align-items:center;gap:1.4rem;flex-wrap:wrap;opacity:0;animation:upIn 1s ease forwards 1.15s}
.hero .tagline .zh{font-family:var(--serif);font-weight:300;font-size:clamp(1.1rem,2.5vw,1.5rem);letter-spacing:.34em;background:linear-gradient(100deg,#ffffff 28%,#ffe6bd 50%,#ffffff 72%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimZh 7s linear infinite 1.6s}
@keyframes shimZh{to{background-position:-220% 0}}
.hero .tagline .en{font-family:var(--hand-en);font-size:1.9rem;color:var(--milk);transform:rotate(-3deg);animation:enFloat 4s ease-in-out infinite 1.8s}
@keyframes enFloat{0%,100%{transform:rotate(-3deg) translateY(0)}50%{transform:rotate(-3deg) translateY(-5px)}}
.hero-foot{margin-top:2.6rem;display:flex;align-items:center;gap:2rem;flex-wrap:wrap;opacity:0;animation:upIn 1s ease forwards 1.4s}
.hero-foot a.go{font-family:var(--sans);font-weight:500;letter-spacing:.18em;font-size:.85rem;color:#fff;border-bottom:1px solid rgba(255,255,255,.6);padding-bottom:.4rem;transition:.3s}
.hero-foot a.go:hover{color:var(--milk);border-color:var(--milk);padding-left:.4rem}
.hero-foot .lead{max-width:360px;font-weight:300;font-size:.92rem;color:#f1e6d4;text-shadow:0 1px 12px rgba(0,0,0,.4)}
.scroll-cue{position:absolute;left:50%;bottom:3.2vh;transform:translateX(-50%);z-index:4;display:flex;flex-direction:column;align-items:center;gap:.6rem;color:var(--milk);opacity:0;animation:upIn 1s ease forwards 1.9s}
.scroll-cue span{font-family:var(--display);font-style:italic;font-size:.82rem;letter-spacing:.2em}
.scroll-cue .ln{width:1px;height:48px;background:rgba(247,234,212,.35);position:relative;overflow:hidden}
.scroll-cue .ln::after{content:"";position:absolute;left:0;top:-60%;width:100%;height:60%;background:var(--milk);animation:cue 1.9s ease-in-out infinite}
@keyframes cue{0%{top:-60%}100%{top:100%}}
@media(prefers-reduced-motion:reduce){
  .hero-bg,.hero-grain,.mote,.hero-sheen,.hero .tagline .en,.scroll-cue .ln::after,.hero-wave .wp>use{animation:none!important}
  .hero h1 .ch{animation:none!important;opacity:1;transform:none;filter:none}
  .masthead,.hero-headline .label,.hero .tagline,.hero-foot,.scroll-cue{opacity:1!important;animation:none!important}
  .hero .tagline .zh{color:#fff;background:none;-webkit-text-fill-color:#fff}
}

/* ============ 通用刊物區段 ============ */
section{position:relative}
.sec{padding:clamp(5rem,10vw,9rem) 0}
.sec-head{display:flex;align-items:baseline;gap:1.2rem;margin-bottom:3.5rem}
.sec-head .no{font-family:var(--display);font-style:italic;font-size:2.4rem;color:var(--line)}
.sec-head h2{font-size:clamp(1.8rem,4vw,2.9rem);font-weight:300;color:var(--espresso)}
.sec-head .label{margin-left:auto;align-self:center}

/* ============ 給萊恩的信（故事） ============ */
.letter{background:var(--paper);overflow:hidden}
.letter-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:5rem;align-items:center}
.letter-text .kicker{margin-bottom:.4rem}
.letter-text h2{font-size:clamp(2rem,4.4vw,3.1rem);font-weight:300;color:var(--espresso);margin:.4rem 0 1.8rem;line-height:1.3}
.letter-text h2 b{font-weight:600}
.letter-text p{color:var(--soft);font-weight:300;margin-bottom:1.3rem;font-size:1.02rem}
.letter-text p .drop{float:left;font-family:var(--display);font-size:4.2rem;line-height:.8;font-weight:500;color:var(--caramel);margin:.35rem .7rem -.2rem 0}
.letter-text .sign{font-family:var(--hand-zh);font-size:1.9rem;color:var(--mocha);margin-top:1.4rem}
.scrap{position:relative;height:560px}
.polaroid{position:absolute;background:#fffdf8;padding:14px 14px 52px;box-shadow:var(--shadow);border-radius:2px}
.polaroid img{width:100%;height:100%;object-fit:cover;display:block}
.polaroid .cap{position:absolute;left:0;right:0;bottom:14px;text-align:center;font-family:var(--hand-zh);font-size:1.25rem;color:var(--mocha);white-space:nowrap}
.p1{width:62%;aspect-ratio:4/5;top:0;left:4%;transform:rotate(-5deg);z-index:2}
.p1 img{height:calc(100% - 0px)}
.p2{width:46%;aspect-ratio:1;bottom:0;right:2%;transform:rotate(6deg);z-index:3}
.stamp{position:absolute;top:-22px;right:4%;width:122px;height:122px;border-radius:50%;background:var(--espresso);color:var(--milk);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;z-index:4;transform:rotate(-10deg);box-shadow:var(--shadow-sm);border:2px dashed var(--butter)}
.stamp .y{font-family:var(--display);font-size:1.9rem;line-height:1}
.stamp .t{font-size:.58rem;letter-spacing:.2em;margin-top:.2rem}

/* ============ 服務（雜誌目錄） ============ */
.offer{background:var(--cream)}
.offer-intro{max-width:560px;color:var(--soft);font-weight:300;margin-bottom:3rem}
.offer-list{border-top:1px solid var(--line)}
.offer-row{display:grid;grid-template-columns:60px 1.4fr 2fr 110px;gap:1.5rem;align-items:center;
  padding:1.7rem 0;border-bottom:1px solid var(--line);transition:.4s;position:relative}
.offer-row .idx{font-family:var(--display);font-style:italic;font-size:1.3rem;color:var(--caramel)}
.offer-row h3{font-size:1.45rem;font-weight:400;color:var(--espresso);transition:.4s}
.offer-row .desc{color:var(--soft);font-weight:300;font-size:.92rem}
.offer-row .more{justify-self:end;font-size:.8rem;letter-spacing:.15em;color:var(--caramel);opacity:0;transform:translateX(-8px);transition:.4s}
.offer-row:hover{padding-left:1.4rem;background:linear-gradient(90deg,var(--paper),transparent)}
.offer-row:hover h3{color:var(--caramel)}
.offer-row:hover .more{opacity:1;transform:none}
.offer-row .peek{position:absolute;right:130px;top:50%;width:170px;aspect-ratio:4/3;transform:translateY(-50%) scale(.85) rotate(4deg);
  border-radius:3px;overflow:hidden;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:.45s;z-index:6;background:#fff;padding:7px 7px 7px}
.offer-row .peek img{width:100%;height:100%;object-fit:cover}
.offer-row:hover .peek{opacity:1;transform:translateY(-50%) scale(1) rotate(4deg)}

/* ============ 空間（拼貼相簿） ============ */
.album{background:var(--paper)}
.album .band{text-align:center;max-width:680px;margin:0 auto 3.6rem}
.album .band h2{font-size:clamp(1.9rem,4.4vw,3rem);font-weight:300;color:var(--espresso);margin:.8rem 0}
.album .band p{color:var(--soft);font-weight:300}
.collage{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:118px;gap:1.4rem}
.ph{overflow:hidden;border-radius:3px;box-shadow:var(--shadow-sm);background:#fffdf8;padding:8px;position:relative}
.ph img{width:100%;height:100%;object-fit:cover;border-radius:1px;transition:.8s ease}
.ph:hover img{transform:scale(1.08)}
.ph .note{position:absolute;bottom:14px;left:14px;right:14px;font-family:var(--hand-zh);color:#fff;font-size:1.2rem;text-shadow:0 2px 10px rgba(0,0,0,.6);z-index:2}
.c1{grid-column:span 5;grid-row:span 3;transform:rotate(-1.2deg)}
.c2{grid-column:span 4;grid-row:span 2;transform:rotate(1deg)}
.c3{grid-column:span 3;grid-row:span 2;transform:rotate(-1deg)}
.c4{grid-column:span 4;grid-row:span 2;transform:rotate(1.4deg)}
.c5{grid-column:span 3;grid-row:span 2}
.c6{grid-column:span 5;grid-row:span 2;transform:rotate(-.8deg)}

/* ============ 甜點（編輯精選） ============ */
.menu-sec{background:var(--cream)}
.sweet-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}
.sweet{position:relative}
.sweet .img{aspect-ratio:4/5;overflow:hidden;border-radius:4px;box-shadow:var(--shadow-sm)}
.sweet .img img{width:100%;height:100%;object-fit:cover;transition:.8s}
.sweet:hover .img img{transform:scale(1.07)}
.sweet .meta{padding:1.3rem .2rem 0}
.sweet .meta .label{color:var(--caramel)}
.sweet .meta h3{font-size:1.4rem;font-weight:400;color:var(--espresso);margin:.5rem 0 .5rem}
.sweet .meta p{font-size:.9rem;color:var(--soft);font-weight:300}

/* ============ 最新消息（首頁區塊，沿用 sweet 卡設計語彙） ============ */
.homenews-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}
.homenews{background:#fffdf8;border:1px solid var(--line);border-radius:4px;padding:1.8rem 1.7rem;box-shadow:var(--shadow-sm);transition:.35s;display:block}
.homenews:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.homenews .date{font-family:var(--display);font-style:italic;color:var(--caramel);font-size:.95rem;letter-spacing:.08em}
.homenews h3{font-size:1.25rem;font-weight:500;color:var(--espresso);margin:.5rem 0 .6rem;line-height:1.5}
.homenews p{font-size:.9rem;color:var(--soft);font-weight:300}
@media(max-width:900px){.homenews-grid{grid-template-columns:1fr}}

/* ============ 引言 ============ */
.pull{padding:clamp(5rem,9vw,7.5rem) 0;background:var(--espresso);color:var(--milk);text-align:center;position:relative;overflow:hidden}
.pull::before{content:"";position:absolute;inset:0;background:var(--pull-bg,url('../images/space-6.webp')) center/cover;opacity:.12;filter:saturate(.6)}
.pull .kicker{color:var(--terracotta);position:relative}
.pull blockquote{font-family:var(--kai);font-weight:300;font-size:clamp(1.5rem,3.6vw,2.5rem);line-height:1.75;max-width:880px;margin:1.2rem auto 0;letter-spacing:.04em;position:relative}
.pull blockquote b{font-weight:500}
.pull .by{display:block;margin-top:1.8rem;font-family:var(--hand-en);font-size:1.7rem;color:var(--milk);transform:rotate(-3deg)}

/* ============ 聯繫 ============ */
.visit{background:var(--paper)}
.visit-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;box-shadow:var(--shadow);border-radius:4px;overflow:hidden}
.visit-l{background:var(--espresso);color:var(--milk);padding:clamp(2.6rem,5vw,4rem)}
.visit-l .kicker{color:var(--terracotta)}
.visit-l h2{color:#fff;font-weight:300;font-size:2.2rem;margin:.5rem 0 .3rem}
.visit-l .en{font-family:var(--display);font-style:italic;color:var(--milk);letter-spacing:.1em;margin-bottom:2.2rem}
.vrow{display:flex;gap:1rem;align-items:flex-start;padding:1.1rem 0;border-top:1px solid rgba(247,234,212,.18)}
.vrow .k{font-size:.7rem;letter-spacing:.28em;color:var(--terracotta);min-width:88px;padding-top:.35rem;text-transform:uppercase}
.vrow .v{font-weight:300;font-size:.96rem}
.socials{display:flex;gap:.7rem;margin-top:2rem}
.socials a{padding:.55rem 1.1rem;border:1px solid rgba(247,234,212,.4);border-radius:2px;font-size:.75rem;letter-spacing:.18em;transition:.3s}
.socials a:hover{background:var(--milk);color:var(--espresso);border-color:var(--milk)}
.visit-r{background:var(--cream);padding:clamp(2.6rem,5vw,4rem);display:flex;flex-direction:column;justify-content:center}
.visit-r .label{color:var(--caramel)}
.visit-r h3{font-size:1.8rem;font-weight:300;color:var(--espresso);margin:.6rem 0 .7rem}
.visit-r p{color:var(--soft);font-weight:300;margin-bottom:2rem}
.bk{display:flex;align-items:center;justify-content:space-between;padding:1.15rem 1.5rem;border-radius:3px;margin-bottom:.9rem;font-weight:500;letter-spacing:.08em;transition:.35s}
.bk .ar{font-family:var(--display);font-size:1.3rem}
.bk-line{background:#06c755;color:#fff}
.bk-rsv{background:var(--espresso);color:#fff}
.bk:hover{transform:translateX(7px)}
.visit-r .note{font-family:var(--hand-zh);color:var(--mocha);font-size:1.3rem;margin-top:1rem;text-align:center}

/* ============ 頁尾 ============ */
footer{background:var(--espresso);color:var(--latte);padding:3.4rem 0 2.2rem;text-align:center}
footer .flogo{width:60px;margin:0 auto 1rem;opacity:.95}
footer .fname{font-family:var(--display);letter-spacing:.32em;font-size:.88rem;color:var(--milk)}
footer .fslogan{font-family:var(--hand-en);font-size:1.5rem;color:var(--terracotta);margin:.3rem 0 1.4rem}
footer .fnav{display:flex;gap:1.3rem;justify-content:center;flex-wrap:wrap;margin-bottom:1.4rem}
footer .copy{font-size:.74rem;color:rgba(247,234,212,.45);letter-spacing:.06em}

/* 進場動畫 */
.reveal{opacity:0;transform:translateY(36px);transition:1s cubic-bezier(.2,.7,.3,1)}
.reveal.in{opacity:1;transform:none}

/* 響應式 */
@media(max-width:900px){
  /* 手機版關閉 backdrop-filter：避免它成為 fixed 選單抽屜的定位框 */
  header.scrolled{backdrop-filter:none;-webkit-backdrop-filter:none}
  .brand img{height:40px}
  .menu{position:fixed;inset:0 0 0 auto;width:80%;max-width:340px;background:var(--cream);flex-direction:column;justify-content:flex-start;align-items:flex-start;padding:5rem 1.8rem 2rem;gap:1.3rem;transform:translateX(100%);transition:.4s;box-shadow:-20px 0 60px -30px rgba(0,0,0,.5);border-left:1px solid var(--line);overflow-y:auto}
  .menu.open{transform:none}
  .menu a{color:var(--espresso)!important;text-shadow:none!important;font-size:1.1rem}
  .has-sub{display:block;width:100%}
  .has-sub .caret{display:none}
  .submenu{position:static;transform:none;opacity:1;visibility:visible;box-shadow:none;border:0;border-left:1px solid var(--line);border-radius:0;margin:.5rem 0 .3rem .4rem;padding:0 0 0 .9rem;min-width:0}
  .has-sub:hover .submenu{transform:none}
  .submenu a{font-size:.98rem!important}
  .menu-toggle{display:flex}
  .menu-toggle.x span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .menu-toggle.x span:nth-child(2){opacity:0}
  .menu-toggle.x span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .letter-grid{grid-template-columns:1fr;gap:4.5rem}
  .scrap{width:100%;max-width:340px;height:440px;margin:0 auto}
  .stamp{width:100px;height:100px;top:-14px;right:0}
  .stamp .y{font-size:1.6rem}.stamp .t{font-size:.55rem}
  .offer-row{grid-template-columns:40px 1fr;gap:.6rem .9rem}
  .offer-row .desc{grid-column:2}
  .offer-row .more{display:none}
  .offer-row .peek{display:none}
  .collage{grid-template-columns:repeat(6,1fr);grid-auto-rows:100px}
  .c1,.c6{grid-column:span 6}.c2,.c3,.c4,.c5{grid-column:span 3}
  .sweet-grid{grid-template-columns:1fr}
  .visit-grid{grid-template-columns:1fr}
}
@media(max-width:520px){
  .sec-head{flex-wrap:wrap;gap:.6rem}.sec-head .label{margin-left:0;width:100%}
  .collage{grid-template-columns:repeat(2,1fr)}.c1,.c2,.c3,.c4,.c5,.c6{grid-column:span 2;grid-row:span 2}
  .hero-foot{flex-direction:column;align-items:flex-start;gap:1.2rem}
  .masthead{top:11vh}
  .masthead .issue{font-size:.6rem;letter-spacing:.22em;line-height:1.8}
  .masthead .issue .dot{margin:0 .4rem}
  .hero .tagline{gap:.6rem}
  .hero .tagline .zh{letter-spacing:.18em}
  .scroll-cue{display:none}
}

/* ---- 首頁底部聯繫資訊卡（自 contact 頁抽出，Item 5） ---- */
.info-wrap{display:grid;grid-template-columns:1fr 1.1fr;gap:3rem;align-items:start}
.info-card{background:var(--cream);border:1px solid var(--line);border-radius:16px;padding:2.4rem;box-shadow:var(--shadow-sm)}
.info-item{display:flex;gap:1.1rem;align-items:flex-start;padding:1.2rem 0;border-bottom:1px solid var(--line)}
.info-item:last-child{border-bottom:0}
.info-item .ic{width:44px;height:44px;border-radius:12px;background:var(--butter);display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}
.info-item .tx b{display:block;font-size:.8rem;letter-spacing:.14em;color:var(--caramel);margin-bottom:.3rem}
.info-item .tx{font-size:1rem;color:var(--ink);font-weight:300}
.info-item .tx a{color:var(--espresso);font-weight:500}
.info-item .tx a:hover{color:var(--caramel)}
.hours{width:100%;border-collapse:collapse;margin-top:.4rem}
.hours td{padding:.55rem 0;font-size:.95rem;font-weight:300;color:var(--soft);border-bottom:1px dashed var(--line)}
.hours tr:last-child td{border-bottom:0}
.hours td:last-child{text-align:right;color:var(--espresso);font-weight:500;white-space:nowrap}
.hours .off td:last-child{color:#b5662f}
.map-box{border-radius:16px;overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--line);height:100%;min-height:460px}
.map-box iframe{width:100%;height:100%;min-height:460px;border:0;display:block}
.socials-row{display:flex;gap:.8rem;margin-top:1.6rem;flex-wrap:wrap}
.socials-row a{flex:1;min-width:120px;text-align:center;padding:.85rem 1rem;border-radius:10px;font-weight:500;letter-spacing:.05em;font-size:.9rem;transition:.3s}
.s-line{background:#06c755;color:#fff}.s-ig{background:var(--mocha);color:#fff}.s-fb{background:var(--espresso);color:#fff}
.socials-row a:hover{transform:translateY(-3px)}
@media(max-width:900px){.info-wrap{grid-template-columns:1fr;gap:2rem}.map-box{min-height:340px}.map-box iframe{min-height:340px}}
