@charset "UTF-8";
/* 換氣呼吸 Come Up for Air｜全站樣式 v7（以 v5「沉浸式精品版」為底）
   概念：整個網站是一次下潛。往下捲，底色從水面的淺米一路沉到深褐；五杯是水面之下的五個章節；
   到尾屏「浮上來的那一刻」再回到淺色。底色由 JS 依畫面中央的區塊切換（html[data-tone]），慢慢轉色。
   只用主視覺海報的五色；大字用 Noto Serif TC 300，20px 以下的中文改 400；細線、大留白。
   字型分工：中文標題與「一句話認識這本書」Noto Serif TC、內文 Noto Sans TC、英文與數字 Bodoni Moda（時尚雜誌的襯線體）。
   （試過霞鶩文楷，但它的「為」長得像「爲」，核心句會和書籤看起來不同，所以不用。）中文最小 13px（在酒吧的燈光下也要讀得到）。
   注意：content 裡不放中文或全形符號（有些環境會用錯的編碼讀這支檔案，會變成亂碼）。 */

:root{
  --clay:#8E3F21;--clay-deep:#6E2E19;--umber:#3F2419;--sand:#EADFC6;--sand-light:#F4ECDD;
  --max:1320px;--gutter:20px;--sec:clamp(80px,13vw,200px);
  --sans:"Noto Sans TC","PingFang TC","Heiti TC","Microsoft JhengHei",sans-serif;
  --serif:"Noto Serif TC","Songti TC","PMingLiU",serif;
  --en:"Bodoni Moda","Didot","Bodoni 72",Georgia,serif;
  --breath:10s;
  --ease:cubic-bezier(.2,.7,.1,1);
}
@media (min-width:800px){:root{--gutter:56px}}

/* ---------- 色調：沒有 JS 時每個區塊自己上色；有 JS 時只看 html 目前的色調 ---------- */
html:not(.js) [data-tone=light],html[data-tone=light]{--bg:var(--sand-light);--fg:var(--umber);--stage:var(--sand)}
html:not(.js) [data-tone=sand],html[data-tone=sand]{--bg:var(--sand);--fg:var(--umber);--stage:var(--sand-light)}
html:not(.js) [data-tone=clay],html[data-tone=clay]{--bg:var(--clay);--fg:var(--sand);--stage:var(--clay-deep)}
html:not(.js) [data-tone=deep],html[data-tone=deep]{--bg:var(--clay-deep);--fg:var(--sand);--stage:var(--umber)}
html:not(.js) [data-tone=umber],html[data-tone=umber]{--bg:var(--umber);--fg:var(--sand);--stage:var(--clay-deep)}
html:not(.js) [data-tone]{background-color:var(--bg);color:var(--fg)}
[data-tone]{--fynbos-fill:var(--bg)}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;overflow-x:clip;background:var(--bg)}
body{margin:0;background-color:var(--bg);color:var(--fg);font-family:var(--sans);font-size:15px;line-height:2;letter-spacing:.04em;-webkit-font-smoothing:antialiased;overflow-x:clip;transition:background-color 1.4s ease,color 1.4s ease}
img{max-width:100%;height:auto;display:block}
[hidden]{display:none!important}
a{color:inherit}
p{margin:0 0 1.1em;text-wrap:pretty}
:focus-visible{outline:1px solid currentColor;outline-offset:5px}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}
.skip{position:absolute;left:var(--gutter);top:-60px;z-index:200;background:var(--umber);color:var(--sand);padding:10px 14px}
.skip:focus{top:10px}
.chap{position:relative;padding:var(--sec) 0}

/* 細細的布紋顆粒，蓋在整頁上（取自主視覺的布料底紋） */
body::after{content:"";position:fixed;inset:0;z-index:80;pointer-events:none;background:url("/assets/texture-fabric.jpg") center/700px;opacity:.07;mix-blend-mode:soft-light}

/* ---------- 字 ---------- */
h1,h2,h3{font-family:var(--serif);font-weight:300;margin:0;letter-spacing:.06em}
/* 英文小標：Bodoni 斜體，像雜誌的欄目名 */
.kicker{display:flex;align-items:center;gap:14px;margin:0 0 28px;font-family:var(--en);font-style:italic;font-size:16px;font-weight:400;letter-spacing:.03em}
.kicker i{font-style:normal;font-size:16px;letter-spacing:.06em;padding-right:14px;border-right:1px solid currentColor}
.display{font-size:clamp(34px,4.6vw,72px);line-height:1.25;letter-spacing:.05em;margin:0 0 36px}
.statement{font-size:clamp(31px,7.6vw,124px);line-height:1.2;letter-spacing:.04em;margin:0 0 clamp(40px,8vw,120px)}
@media (min-width:900px){.statement .ln:nth-child(2){padding-left:14vw}.statement .ln:nth-child(3){padding-left:7vw}}
.lead{font-size:16px;max-width:34em}
.small{font-size:13px;line-height:1.9}
.tag{display:inline-block;font-family:var(--sans);font-size:12.5px;letter-spacing:.14em;border:1px solid currentColor;border-radius:999px;padding:1px 10px;margin-left:14px;vertical-align:middle;font-weight:400;white-space:nowrap}
.ln{display:block;overflow:hidden;padding-bottom:.06em}
.ln>span{display:block}
@media (min-width:900px){.ln>span{white-space:nowrap}}

/* ---------- 按鈕與連結 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 30px;border:1px solid var(--fg);background:var(--fg);color:var(--bg);font-family:var(--sans);font-size:14px;font-weight:400;letter-spacing:.14em;line-height:1.3;text-decoration:none;border-radius:999px;cursor:pointer;transition:background-color .5s var(--ease),color .5s var(--ease)}
.btn:hover{background:transparent;color:var(--fg)}
.btn.line{background:transparent;color:var(--fg)}
.btn.line:hover{background:var(--fg);color:var(--bg)}
.btn.small{min-height:38px;padding:0 18px;font-size:13px}
.cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:40px}
.cta.center{justify-content:center}
.link{position:relative;display:inline-flex;gap:10px;font-size:13.5px;letter-spacing:.12em;text-decoration:none;padding-bottom:4px}
.link::after{content:"";position:absolute;left:0;right:0;bottom:0;border-bottom:1px solid currentColor;transform-origin:left;transition:transform .6s var(--ease)}
.link:hover::after{transform:scaleX(.3)}

/* ---------- 材料圖示（svg/notes.svg）：單線、跟著底色換色 ---------- */
.ic{width:24px;height:24px;flex:none;fill:none;stroke:currentColor;stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round;overflow:visible}
.notes{display:grid;grid-template-columns:repeat(auto-fill,minmax(62px,1fr));gap:18px 4px;margin:0;padding:0;list-style:none;max-width:460px}
.notes li{display:grid;justify-items:center;align-content:start;gap:8px;text-align:center;font-size:13px;line-height:1.45;letter-spacing:.04em}
.notes .ic{width:38px;height:38px;stroke-width:.95}
@media (min-width:1000px){.notes{gap:22px 8px}.notes li{font-size:13.5px}.notes .ic{width:44px;height:44px;stroke-width:.9}}

/* ---------- 頂欄：透明、跟著色調換色；往下捲收起，往上捲出現 ---------- */
.top{position:fixed;top:0;left:0;right:0;z-index:60;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px var(--gutter);color:var(--fg);transition:transform .6s var(--ease),background-color 1.4s ease,color 1.4s ease,padding .4s}
.top.scrolled{background:var(--bg);padding-top:12px;padding-bottom:12px;border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent)}
.top.away{transform:translateY(-110%)}
.hero-on .top:not(.scrolled){color:var(--sand)}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-family:var(--serif);font-weight:400;font-size:15px;letter-spacing:.2em;white-space:nowrap}
.brand i{width:24px;height:24px;background:currentColor;-webkit-mask:url("/assets/denkyem-sand.png") center/contain no-repeat;mask:url("/assets/denkyem-sand.png") center/contain no-repeat}
.brand span{font-family:var(--en);font-style:italic;font-size:14px;letter-spacing:.02em;display:none}
@media (min-width:700px){.brand span{display:inline}}
.nav{display:none;gap:36px;font-size:13.5px;letter-spacing:.18em}
.nav a{text-decoration:none;position:relative;padding:4px 0}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;border-bottom:1px solid currentColor;transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}
.nav a:hover::after{transform:scaleX(1);transform-origin:left}
@media (min-width:1000px){.nav{display:flex}}
.top .btn{background:transparent;color:inherit;border-color:currentColor}
.top .btn:hover{background:var(--fg);color:var(--bg)}
.hero-on .top:not(.scrolled) .btn:hover{background:var(--sand);color:var(--umber)}

/* ---------- 右側章節刻度 ---------- */
.rail{position:fixed;right:14px;top:50%;z-index:50;transform:translateY(-50%);display:none;flex-direction:column;gap:20px;padding-left:22px;font-size:12px;letter-spacing:.16em;color:var(--fg);transition:color 1.4s ease,opacity .6s}
.rail a{text-decoration:none;opacity:.45;transition:opacity .4s;display:flex;gap:10px;align-items:baseline}
.rail a i{font-family:var(--en);font-style:normal;font-size:14px;width:1.6em;text-align:left}
/* 只顯示羅馬數字，字放在數字左邊、只在滑過時出現，避免壓到內文 */
.rail a span{position:absolute;right:100%;margin-right:10px;white-space:nowrap;opacity:0;transform:translateX(6px);transition:opacity .4s,transform .4s var(--ease);pointer-events:none}
.rail a{position:relative}
.rail a:hover span{opacity:1;transform:none}
.rail a.on{opacity:1}
.rail-line{position:absolute;left:0;top:0;bottom:0;border-left:1px solid color-mix(in srgb,currentColor 35%,transparent)}
.rail-bubble{position:absolute;left:-5px;top:calc(var(--p,0) * 100%);width:9px;height:9px;border:1px solid currentColor;border-radius:50%;background:var(--bg);transition:background-color 1.4s}
@media (min-width:1200px){.rail{display:flex}}
.hero-on .rail{opacity:0;pointer-events:none}

/* ---------- 游標：一顆跟著你的氣泡（只在有滑鼠的裝置） ---------- */
.cursor{position:fixed;left:0;top:0;z-index:90;width:34px;height:34px;margin:-17px 0 0 -17px;border:1px solid var(--fg);border-radius:50%;pointer-events:none;display:grid;place-items:center;font-family:var(--serif);font-size:13px;letter-spacing:.1em;color:transparent;transition:width .45s var(--ease),height .45s var(--ease),margin .45s var(--ease),background-color .45s,color .3s,border-color 1.4s,opacity .3s}
.cursor.hover{width:54px;height:54px;margin:-27px 0 0 -27px}
.cursor.label{width:78px;height:78px;margin:-39px 0 0 -39px;background:var(--fg);color:var(--bg)}
.cursor.gone{opacity:0}
.hero-on .cursor{border-color:var(--sand)}

/* ---------- 開場：先換一口氣，水面再升起來 ---------- */
.intro-veil{display:none}
html.intro{overflow:hidden}
html.intro .intro-veil{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:30px;position:fixed;inset:0;z-index:150;background:var(--umber);color:var(--sand);clip-path:inset(0 0 0 0);transition:clip-path 1.2s cubic-bezier(.75,0,.2,1)}
html.intro-out .intro-veil{clip-path:inset(0 0 100% 0)}
.intro-breath{position:relative;width:180px;height:180px;display:grid;place-items:center}
.intro-breath span{position:absolute;inset:0;border:1px solid currentColor;border-radius:50%;opacity:0;animation:intro-ring 2.6s ease-in-out forwards}
.intro-breath span:nth-child(2){inset:26px;animation-delay:.15s}
.intro-breath span:nth-child(3){inset:52px;animation-delay:.3s}
.intro-breath img{width:58px;animation:intro-croc 2.6s ease-in-out forwards}
.intro-cue{position:relative;height:2em;width:6em;margin:0;font-family:var(--serif);font-size:17px;letter-spacing:.5em;text-align:center}
.intro-cue span{position:absolute;inset:0;opacity:0}
.intro-cue .in{animation:cue-a 2.6s forwards}
.intro-cue .out{animation:cue-b 2.6s forwards}
@keyframes intro-ring{0%{transform:scale(.5);opacity:0}50%{transform:scale(1);opacity:.85}100%{transform:scale(.8);opacity:.3}}
@keyframes intro-croc{0%{opacity:0;translate:0 8px}50%{opacity:1;translate:0 -6px}100%{opacity:1;translate:0 0}}
@keyframes cue-a{0%{opacity:0}12%,42%{opacity:1}52%,100%{opacity:0}}
@keyframes cue-b{0%,48%{opacity:0}60%,100%{opacity:1}}

/* ---------- 首屏 ---------- */
.hero{position:relative;min-height:100svh;display:grid;grid-template-rows:1fr auto;overflow:hidden;color:var(--sand);background:var(--umber)}
.hero-media{position:absolute;inset:0;overflow:hidden}
.hero-media img{width:100%;height:115%;object-fit:cover;object-position:60% 50%;transform:scale(1.12);transition:transform 3.2s var(--ease);will-change:transform}
.ready .hero-media img{transform:scale(1)}
.hero-shade{position:absolute;inset:0;background:var(--umber);opacity:var(--shade,.58)}
.hero-inner{position:relative;z-index:2;align-self:center;justify-self:center;text-align:center;padding:96px var(--gutter) 16px;max-width:760px}
.hero-k{font-family:var(--en);font-size:15px;letter-spacing:.06em;margin:0 0 24px;display:flex;flex-direction:column;gap:2px}
@media (min-width:700px){.hero-k{flex-direction:row;justify-content:center;gap:0}.hero-k span+span::before{content:"|";margin:0 18px;opacity:.6}}
.hero .wordmark{width:auto;height:min(36vh,360px);margin:0 auto}
.hero .pitch{font-family:var(--serif);font-weight:400;font-size:clamp(18px,2vw,24px);line-height:1.8;letter-spacing:.12em;margin:28px 0 0}
.hero .cta{justify-content:center;margin-top:32px}
.hero .btn{background:var(--sand);color:var(--umber);border-color:var(--sand)}
.hero .btn:hover,.hero .btn.line{background:transparent;color:var(--sand)}
.hero .btn.line:hover{background:var(--sand);color:var(--umber)}
.hero-foot{position:relative;z-index:2;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:16px;padding:0 var(--gutter) 26px;font-size:13px;letter-spacing:.16em}
.hero-foot .en{font-family:var(--en);font-style:italic;font-size:15px;letter-spacing:.02em;text-align:right}
.dive{display:flex;flex-direction:column;align-items:center;gap:12px;text-decoration:none;font-size:13px;letter-spacing:.3em}
.dive-line{position:relative;width:1px;height:56px;overflow:hidden;background:color-mix(in srgb,currentColor 30%,transparent)}
.dive-line::after{content:"";position:absolute;left:0;top:-50%;width:1px;height:50%;background:currentColor;animation:dive 2.4s var(--ease) infinite}
@keyframes dive{to{top:100%}}
@media (max-width:699px){.hero-foot{grid-template-columns:1fr}.hero-foot>span{display:none}}

/* ---------- I 水面 ---------- */
.about-body{display:grid;gap:4px 56px;max-width:980px;margin-left:auto}
@media (min-width:900px){.about-body{grid-template-columns:1fr 1fr}}
.trio{list-style:none;margin:clamp(40px,10vw,150px) 0 0;padding:0;display:grid;gap:12px}
.trio a{display:block;text-decoration:none;color:inherit}
.trio figure{margin:0;position:relative}
.trio .img{position:relative;overflow:hidden}
.trio .img>img{width:100%;height:100%;object-fit:cover;scale:1.14}
.trio .covers{background:var(--stage);display:flex;align-items:center;justify-content:center;padding:0 16px}
.trio .covers img{width:27%;height:auto;scale:1;margin-left:-9%;mix-blend-mode:multiply;transform:rotate(-5deg) translateY(6px);transition:transform .9s var(--ease)}
.trio .covers img:first-child{margin-left:0}
.trio .covers img:nth-child(even){transform:rotate(4deg) translateY(-10px)}
.t2:hover .covers img{transform:none}
.trio figcaption{display:grid;gap:2px}
.trio .n{font-family:var(--en);font-size:16px;letter-spacing:.04em}
.trio b{font-family:var(--serif);font-weight:400;font-size:21px;letter-spacing:.1em}
.trio figcaption span:last-child{font-size:13.5px;line-height:1.8;max-width:24em}
/* 手機：雜誌式，號碼、標題、一句話直接壓在照片上（照片蓋一層平塗的深褐，字才讀得清楚） */
@media (max-width:899px){
  .trio .img{aspect-ratio:16/10}
  .trio .t2 .img{aspect-ratio:16/12;align-items:flex-start;padding-top:6%}
  .trio .img::after{content:"";position:absolute;inset:0;background:var(--umber);opacity:.5;pointer-events:none}
  .trio .t2 .img::after{display:none}
  .trio figcaption{position:absolute;left:0;right:0;bottom:0;z-index:1;padding:14px 18px 14px;color:var(--sand)}
  .trio .t2 figcaption{color:var(--fg)}
  .trio b{font-size:20px}
}
/* 電腦：照片在上、字在下，三張高低錯落 */
@media (min-width:900px){
  .trio{grid-template-columns:repeat(12,1fr);gap:0 24px}
  .trio .img{margin-bottom:22px}
  .t1{grid-column:1/6}.t1 .img{aspect-ratio:3/4}
  .t2{grid-column:7/10;margin-top:220px}.t2 .img{aspect-ratio:4/5}
  .t3{grid-column:10/13;margin-top:70px}.t3 .img{aspect-ratio:4/5}
}

.marquee{overflow:hidden;margin-top:var(--sec);padding:34px 0;border-top:1px solid color-mix(in srgb,currentColor 25%,transparent);border-bottom:1px solid color-mix(in srgb,currentColor 25%,transparent)}
.marquee div{display:flex;align-items:center;width:max-content;animation:marquee 70s linear infinite}
.marquee span{font-family:var(--serif);font-weight:300;font-size:clamp(40px,7vw,104px);line-height:1.1;letter-spacing:.08em;white-space:nowrap}
.marquee span:nth-of-type(3n+2){color:transparent;-webkit-text-stroke:1px var(--fg);font-family:var(--en);font-style:italic;font-weight:400;letter-spacing:.01em}
.marquee i{font-style:normal;font-size:28px;margin:0 .9em}
@keyframes marquee{to{transform:translateX(-50%)}}

/* ---------- 水面（細細的兩道波線，慢慢漂） ---------- */
/* 水流帶：照窗貼上的水流帶重畫（svg/band.svg）。緞帶與圓點是赭紅，鏤空的紋樣透出底色；慢慢往左流 */
.surface{position:relative;height:150px;overflow:hidden;color:var(--fg);--cutbg:var(--bg)}
html:not(.js) .surface{background:var(--up);color:var(--down);--cutbg:var(--up)}
.surface-band{position:absolute;left:0;bottom:4px;height:110px;display:flex;animation:drift 60s linear infinite}
.surface .band{height:100%;width:auto;flex:none;display:block;overflow:visible}
.band-rib{fill:var(--clay)}
.band-cut{fill:var(--cutbg);transition:fill 1.4s ease}
.band-dot{fill:none;stroke:var(--clay);stroke-width:7;stroke-linecap:round}
@media (max-width:699px){.surface{height:118px}.surface-band{height:84px}}
.surface-label{position:absolute;top:14px;left:max(var(--gutter),calc((100% - var(--max)) / 2 + var(--gutter)));font-family:var(--en);font-style:italic;font-size:15px;letter-spacing:.02em}
@keyframes drift{to{transform:translateX(-50%)}}

/* ---------- 氣泡 ---------- */
.bubbles{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;container-type:size}
.bubbles span{position:absolute;bottom:-20px;left:var(--x);width:var(--s);height:var(--s);border:1px solid currentColor;border-radius:50%;opacity:0;animation:rise var(--d) ease-in infinite;animation-delay:var(--w)}
@keyframes rise{0%{transform:translate(0,0);opacity:0}12%{opacity:.5}50%{transform:translate(10px,-50cqh)}85%{opacity:.3}100%{transform:translate(-4px,calc(-100cqh - 40px));opacity:0}}
.chap>.wrap{position:relative;z-index:1}

/* ---------- II 水面之下 ---------- */
.proverb-grid{display:grid;gap:64px;justify-items:center;text-align:center}
.breath{position:relative;width:200px;height:200px;margin:0 auto 18px;display:grid;place-items:center}
.breath .ring{position:absolute;inset:0;border:1px solid currentColor;border-radius:50%;opacity:.5;animation:breathe var(--breath) ease-in-out infinite}
.breath .ring:nth-child(2){inset:26px;animation-delay:.3s}
.breath .ring:nth-child(3){inset:52px;animation-delay:.6s}
.breath .croc{width:78px;animation:bob var(--breath) ease-in-out infinite}
.breath-cue{font-size:13px;letter-spacing:.14em;margin:0}
.breath-cue .cue{display:block;position:relative;height:1.9em;margin-bottom:6px;font-family:var(--serif);font-size:17px;letter-spacing:.5em}
.breath-cue .cue span{position:absolute;inset:0;animation:cue-in var(--breath) linear infinite}
.breath-cue .cue .out{animation-name:cue-out}
@keyframes breathe{0%,100%{transform:scale(.7);opacity:.2}40%{transform:scale(1);opacity:.85}}
@keyframes bob{0%,100%{translate:0 5px}40%{translate:0 -7px}}
@keyframes cue-in{0%,34%{opacity:1}42%,94%{opacity:0}100%{opacity:1}}
@keyframes cue-out{0%,34%{opacity:0}42%,94%{opacity:1}100%{opacity:0}}
.tate{margin:0;font-family:var(--serif);font-weight:300;font-size:clamp(34px,7vw,52px);line-height:1.7;letter-spacing:.16em}
.proverb-body{max-width:30em;font-size:14.5px;text-align:left}
@media (min-width:900px){
  .proverb-grid{grid-template-columns:1fr auto 1fr;align-items:center;text-align:left;gap:80px}
  .tate{writing-mode:vertical-rl;font-size:clamp(48px,5.4vw,84px);line-height:1.5;letter-spacing:.24em}
}

/* ---------- III 酒單（含「怎麼參加」四步） ---------- */
.menu-head{max-width:640px}
.how{margin:clamp(40px,5vw,64px) 0 0;padding:20px 0 0;border-top:1px solid color-mix(in srgb,currentColor 25%,transparent)}
.how-k{font-family:var(--en);font-style:italic;font-size:16px;margin:0 0 14px}
.how ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:14px 20px}
.how li{display:grid;grid-template-columns:26px 1fr;gap:8px;align-items:baseline;font-size:13.5px;line-height:1.7}
.hn{font-family:var(--en);font-size:28px;line-height:1}
@media (min-width:900px){.how ol{grid-template-columns:repeat(4,1fr);gap:32px}.how li{font-size:14.5px;grid-template-columns:40px 1fr}.hn{font-size:40px}}
.menu{list-style:none;margin:clamp(40px,5vw,72px) 0 0;padding:0;border-bottom:1px solid color-mix(in srgb,currentColor 25%,transparent)}
.menu a{display:grid;grid-template-columns:40px 1fr;gap:6px 16px;align-items:baseline;padding:28px 0;border-top:1px solid color-mix(in srgb,currentColor 25%,transparent);text-decoration:none;transition:padding .6s var(--ease)}
.m-no{font-family:var(--en);font-size:20px;letter-spacing:.02em}
.m-name{font-family:var(--serif);font-weight:400;font-size:clamp(30px,3.6vw,52px);line-height:1.2;letter-spacing:.1em}
.m-core{grid-column:2;font-family:var(--serif);font-size:16px;line-height:1.75;letter-spacing:.06em}
.m-core i{display:block;font-style:normal;font-family:var(--sans);font-size:13px;letter-spacing:.2em;margin-bottom:4px;opacity:.75}
.m-book{grid-column:2;font-size:13px;line-height:1.7;letter-spacing:.06em}
@media (min-width:900px){
  .menu a{grid-template-columns:80px minmax(0,1.1fr) minmax(0,1.6fr) minmax(0,.9fr);gap:32px;padding:40px 0}
  .m-name{font-weight:300}
  .m-core,.m-book{grid-column:auto}
  .menu a:hover{padding-left:24px}
}
.menu-foot{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px 24px;margin:24px 0 0;font-size:13px}

/* ---------- 小測驗 ---------- */
.quiz{display:none}
.js .quiz{display:block}
.quiz-grid{display:grid;gap:44px}
@media (min-width:900px){.quiz-grid{grid-template-columns:5fr 7fr;gap:96px;align-items:start}}
.q-prog{position:relative;height:1px;margin:0 0 28px;background:color-mix(in srgb,currentColor 25%,transparent)}
.q-prog span{position:absolute;left:0;top:-1px;height:3px;width:calc(var(--p,.25) * 100%);background:currentColor;transition:width .6s var(--ease)}
.quiz fieldset{border:0;margin:0;padding:0;min-width:0}
.quiz legend{font-family:var(--serif);font-weight:400;font-size:clamp(21px,2.6vw,30px);line-height:1.6;letter-spacing:.06em;margin-bottom:22px;padding:0}
.quiz .count{display:block;font-family:var(--en);font-size:15px;letter-spacing:.06em;margin:0 0 12px}
.opt{display:flex;gap:16px;align-items:flex-start;padding:16px 4px;border-top:1px solid color-mix(in srgb,currentColor 25%,transparent);cursor:pointer;font-size:15px;line-height:1.7;transition:padding .4s var(--ease)}
.opt:last-of-type{border-bottom:1px solid color-mix(in srgb,currentColor 25%,transparent)}
.opt:hover{padding-left:14px}
.opt input{appearance:none;-webkit-appearance:none;flex:0 0 15px;width:15px;height:15px;margin:6px 0 0;border:1px solid currentColor;border-radius:50%;display:grid;place-content:center}
.opt input::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;transform:scale(0);transition:transform .2s}
.opt input:checked::before{transform:scale(1)}
.ot{display:grid;gap:1px}
.ot small{font-size:13px;line-height:1.6;opacity:.8}
.quiz .btns{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.quiz .err{font-size:13px;margin:12px 0 0;min-height:1.6em}
.result .count{font-family:var(--en);font-size:20px;letter-spacing:.04em;margin:0}
.result h3{font-size:clamp(44px,6vw,80px);letter-spacing:.12em;margin-top:4px}
.reasons{list-style:none;margin:20px 0 28px;padding:0}
.reasons li{display:grid;grid-template-columns:3.4em 1fr;gap:0 14px;padding:12px 0;border-top:1px solid color-mix(in srgb,currentColor 28%,transparent)}
.reasons li:last-child{border-bottom:1px solid color-mix(in srgb,currentColor 28%,transparent)}
.rk{grid-row:1/3;font-size:13px;letter-spacing:.18em;padding-top:3px}
.ra{font-size:13px;line-height:1.7;opacity:.8}
.rb{font-family:var(--serif);font-size:16px;line-height:1.7;letter-spacing:.04em}
.result .book{font-size:13px;margin-top:16px}
.second{margin:30px 0 0;padding:20px 22px;border:1px solid color-mix(in srgb,currentColor 35%,transparent)}
.second-k{font-size:13px;letter-spacing:.2em;margin:0 0 4px}
.second-name{font-family:var(--serif);font-size:24px;letter-spacing:.1em;text-decoration:none;border-bottom:1px solid color-mix(in srgb,currentColor 40%,transparent)}
.second-name .no{font-family:var(--en);font-size:20px;letter-spacing:.04em;margin-right:12px}
.second .reasons{margin:14px 0 0}

/* ---------- 五個章節：雜誌封面 ----------
   手機：照片區在上（4:5），酒名往上壓進照片下緣；電腦：照片區佔右邊七欄、滿版高，酒名橫跨到照片上。
   字只有三層：酒名（全站最大）＞材料圖示＞其他資訊。 */
.chapter{--name:clamp(60px,17vw,100px);position:relative;padding:0 0 var(--sec);overflow:hidden}
.ch-photo{position:relative;width:100%;aspect-ratio:4/5;max-height:80svh;background:var(--stage);overflow:hidden;transition:background-color 1.4s ease}
.ch-photo .shot{width:100%;height:112%;object-fit:cover}
.still2{position:absolute;inset:0;container-type:size;--gy:16cqh;--bx:calc(38cqw + 32cqh * var(--ar, .39))}
.still2.wide{--bx:37cqw;--cx:20.5cqw;--cy:calc(var(--gy) + 13.7cqw)}
.ch-ground{position:absolute;left:0;right:0;bottom:var(--gy);border-top:1px solid color-mix(in srgb,currentColor 35%,transparent)}
.ch-plant{position:absolute;left:60%;bottom:var(--gy);height:70%;transform:translateX(-50%);transform-origin:50% 100%;opacity:.4;animation:sway var(--breath) ease-in-out infinite}
.ch-plant .fynbos{height:100%;width:auto;color:var(--fg)}
.ch-bottle{position:absolute;bottom:var(--gy);left:38%;height:64%;width:auto;will-change:transform}
.still2.wide .ch-bottle{height:auto;width:50%;left:12%}
.ch-book{position:absolute;bottom:var(--gy);right:5%;height:22%;width:auto;transform-origin:0 100%;rotate:-5deg;will-change:transform}
@keyframes sway{0%,100%{rotate:-1.6deg}40%{rotate:1.6deg}}
.ch-title{position:relative;z-index:2;padding:0 var(--gutter);margin-top:calc(var(--name) * -.62 - 30px)}
.ch-sub{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin:0 0 8px;font-size:13.5px;letter-spacing:.14em}
.ch-sub span{font-family:var(--en);font-size:16px;letter-spacing:.04em}
.ch-name{font-family:var(--serif);font-weight:300;font-size:var(--name);line-height:1.08;letter-spacing:.12em;margin:0}
.ch-name .tag{font-size:12.5px;vertical-align:.9em}
.ch-info{position:relative;z-index:2;padding:30px var(--gutter) 0;max-width:600px}
.ch-info .notes{margin-top:6px}
.oneline-k{font-size:13px;letter-spacing:.2em;margin:0 0 8px;display:flex;align-items:center;gap:12px}
.oneline-k::before{content:"";width:28px;border-top:1px solid currentColor}
.oneline-t{font-family:var(--serif);font-weight:400;font-size:clamp(20px,2vw,27px);line-height:1.75;letter-spacing:.06em;margin:0;text-wrap:pretty}
.ch-base{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin:26px 0 0;font-family:var(--serif);font-size:15.5px;letter-spacing:.08em}
.ch-base span{font-family:var(--sans);font-size:13px;letter-spacing:.18em;padding-right:14px;border-right:1px solid color-mix(in srgb,currentColor 40%,transparent)}
.ch-base em{font-family:var(--en);font-style:italic;font-size:15px;letter-spacing:.01em}
.chapter .go{margin-top:30px}
@media (min-width:1000px){
  .chapter{--name:clamp(104px,10.5vw,180px);--inset:max(var(--gutter),calc((100vw - var(--max)) / 2 + var(--gutter)));min-height:100svh;padding:0;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:1fr auto auto 1fr}
  .ch-photo{grid-column:6/13;grid-row:1/-1;aspect-ratio:auto;max-height:none;height:100%}
  .ch-title{grid-column:1/10;grid-row:2;margin:0;padding:0 0 0 var(--inset)}
  .ch-info{grid-column:1/6;grid-row:3;padding:36px 48px 0 var(--inset);max-width:none}
  .still2{--gy:14cqh}
  .still2.wide{--bx:39cqw;--cx:23.8cqw;--cy:calc(var(--gy) + 12.6cqw)}
  .ch-plant{left:50%;height:72%}
  .ch-bottle{left:38%;height:64%}
  .still2.wide .ch-bottle{left:16%;width:46%}
  .ch-book{right:12%;height:28%}
  .flip .ch-photo{grid-column:1/8}
  .flip .ch-title{grid-column:4/13;text-align:right;padding:0 var(--inset) 0 0}
  .flip .ch-sub{justify-content:flex-end}
  .flip .ch-info{grid-column:8/13;padding:36px var(--inset) 0 48px}
}


/* ---------- 子頁封面上的「名字的意象」：跟著酒瓶與書的位置（--gy 地面、--bx 瓶身中心、--cx/--cy 茶杯） ---------- */
.cm{position:absolute;pointer-events:none;color:var(--fg);fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;overflow:visible}
/* 餘波：從瓶底一圈一圈散開 */
.cm-ripple{left:var(--bx);bottom:var(--gy);width:96cqw;aspect-ratio:5/1;translate:-50% 50%;stroke-width:1.1}
.cm-ripple ellipse{transform-box:fill-box;transform-origin:center;opacity:.55;animation:cm-ripple var(--breath) ease-out infinite}
.cm-ripple ellipse:nth-child(2){animation-delay:-2.5s}.cm-ripple ellipse:nth-child(3){animation-delay:-5s}.cm-ripple ellipse:nth-child(4){animation-delay:-7.5s}
@keyframes cm-ripple{0%{transform:scale(.35);opacity:0}15%{opacity:.75}100%{transform:scale(1.25);opacity:0}}
/* 足跡：繞酒瓶一圈，又回到起點 */
.cm-trail{left:var(--bx);bottom:var(--gy);width:84cqw;aspect-ratio:4/1;translate:-50% 50%}
.cm-trail .dots{stroke-width:4.2;stroke-dasharray:.1 12;opacity:.8;animation:cm-march 7s linear infinite}
.cm-trail .t-ring{stroke-width:1.4}
.cm-trail .t-dot{fill:currentColor;stroke:none}
@keyframes cm-march{to{stroke-dashoffset:-48.4}}
/* 相信之後：一封手寫的信，一行一行寫向書（每一行的開始時間 --w 與長度 --d 由 tools/draw-letter.mjs 算好） */
.cm-letter{left:2cqw;bottom:var(--gy);width:92cqw;aspect-ratio:2/1;stroke-width:.85;opacity:.85}
.cm-letter path{stroke-dasharray:1;stroke-dashoffset:1;animation:cm-write var(--d) linear var(--w) forwards}
@keyframes cm-write{to{stroke-dashoffset:0}}
/* 夢鏡：地面下的倒影，水面慢慢流 */
.still2.is-mirror{--gy:30cqh}
.is-mirror .ch-book{rotate:0deg}
.cm-refl{position:absolute;top:calc(100% - var(--gy));width:auto;transform:scaleY(-1);opacity:.3;filter:blur(.6px);pointer-events:none;animation:cm-shimmer var(--breath) ease-in-out infinite}
.cm-refl.r-bottle{left:38%;height:64%}
.cm-refl.r-book{right:5%;height:22%}
@keyframes cm-shimmer{0%,100%{opacity:.22}40%{opacity:.36}}
.cm-water{left:0;bottom:0;width:200%;height:var(--gy);stroke-width:1;opacity:.45;animation:drift 30s linear infinite}
.cm-water path{vector-effect:non-scaling-stroke}
/* 徒然：從茶杯浮起的圓，越往上越空 */
.cm-fade{left:var(--cx);bottom:var(--cy);width:0;height:0}
.cm-fade span{position:absolute;left:-7px;bottom:0;width:14px;height:14px;border:1.3px solid var(--fg);border-radius:50%;background:var(--fg);opacity:0;animation:cm-fade var(--breath) ease-out infinite;animation-delay:calc(var(--k) * -2s)}
@media (min-width:1000px){.still2.is-mirror{--gy:28cqh}.cm-refl.r-book{right:12%;height:28%}}
/* 手機上酒名壓在地面線下方：足跡和波紋在地面以下的那一半會碰到「No.0N 配《書名》」，所以地面抬高一點；
   植物跟著變矮，才不會碰到「← 回到五杯」 */
@media (max-width:999px){.still2.is-trail,.still2.is-ripple{--gy:24cqh}.is-trail .ch-plant,.is-ripple .ch-plant{height:60%}}
@keyframes cm-fade{0%{transform:translate(0,0) scale(.5);opacity:0;background:var(--fg)}12%{opacity:.9}40%{background:var(--fg)}70%{background:transparent}100%{transform:translate(var(--dx),-34cqh) scale(1.15);opacity:0;background:transparent}}

/* ---------- IV 開普：四支酒，手機兩欄、電腦四欄（不用左右滑） ---------- */
.spirits-head{display:grid;gap:8px 96px;align-items:end}
@media (min-width:900px){.spirits-head{grid-template-columns:auto 1fr}.spirits-head .kicker{grid-column:1/-1}.spirits-head .display{margin:0}.spirits-head p:last-child{max-width:34em;margin:0}}
.gallery{list-style:none;margin:clamp(48px,7vw,104px) 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:36px 16px}
.gallery a{display:grid;gap:2px;text-decoration:none}
.gallery .frame{aspect-ratio:4/5;overflow:hidden;background:var(--bg);border-radius:999px 999px 0 0;margin-bottom:14px;transition:background-color 1.4s}
.gallery .frame img{width:100%;height:100%;object-fit:cover;mix-blend-mode:multiply;transition:transform 1.4s var(--ease)}
.gallery a:hover .frame img{transform:scale(1.04)}
.g-no{font-family:var(--en);font-size:16px}
.gallery b{font-family:var(--serif);font-weight:400;font-size:17px;line-height:1.5;letter-spacing:.06em}
.gallery .en{font-family:var(--en);font-style:italic;font-size:14px;line-height:1.4}
.gallery .use{font-size:13px;line-height:1.6;margin-top:8px}
.gallery .more{font-size:13px;text-decoration:underline;text-underline-offset:4px}
@media (min-width:900px){.gallery{grid-template-columns:repeat(4,1fr);gap:28px}.gallery li:nth-child(even){margin-top:80px}.gallery b{font-size:20px}}
/* 什麼是 Fynbos：手機收起來，電腦預設打開 */
.fynbos-more{margin-top:var(--sec)}
.fynbos-more summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 0;border-top:1px solid color-mix(in srgb,currentColor 25%,transparent);border-bottom:1px solid color-mix(in srgb,currentColor 25%,transparent);font-family:var(--serif);font-weight:300;font-size:clamp(24px,3vw,40px);letter-spacing:.1em;line-height:1.3}
.fynbos-more summary::-webkit-details-marker{display:none}
.fynbos-more summary::after{content:"+";font-family:var(--en);font-size:34px;font-weight:400;line-height:1;transition:transform .5s var(--ease)}
.fynbos-more[open] summary::after{transform:rotate(45deg)}
.fynbos-facts{display:grid;gap:40px;margin:40px 0 0;padding:0;list-style:none}
.fynbos-facts li{display:grid;grid-template-columns:84px 1fr;gap:20px;align-items:center}
.fynbos-facts .fynbos{max-height:136px;width:auto;color:var(--fg)}
.fynbos-facts b{display:block;font-family:var(--serif);font-weight:400;font-size:18px;letter-spacing:.06em;margin-bottom:8px}
.fynbos-facts p{margin:0;font-size:13.5px;line-height:1.95}
.fynbos-facts .latin{font-family:var(--en);font-style:italic;font-size:14px;display:block;margin-bottom:8px}
.fynbos .b{fill:var(--fynbos-fill)}
@media (min-width:900px){.fynbos-facts{grid-template-columns:repeat(3,1fr);gap:64px;margin-top:56px}.fynbos-facts li{grid-template-columns:1fr;align-items:start}.fynbos-facts .fynbos{height:220px;max-height:none}}
.spirits .cta{margin-top:80px}

/* ---------- 地下一樓：手機上字壓在照片上 ---------- */
.crafts{display:grid;padding:0}
.crafts-media{overflow:hidden;position:relative}
.crafts-media img{width:100%;height:100%;object-fit:cover;scale:1.16}
.crafts-text{padding:var(--sec) var(--gutter);max-width:640px}
@media (max-width:899px){
  .crafts{grid-template-areas:"x";color:var(--sand)}
  .crafts-media,.crafts-text{grid-area:x}
  .crafts-media::after{content:"";position:absolute;inset:0;background:var(--umber);opacity:.6}
  .crafts-text{position:relative;z-index:1;align-self:end;padding:120px var(--gutter) 72px}
}
@media (min-width:900px){.crafts{grid-template-columns:1fr 1fr;min-height:100svh}.crafts-text{align-self:center;padding:var(--sec) clamp(48px,6vw,110px)}}

/* ---------- 歌單、品酒會 ---------- */
.music-grid,.tasting-grid{display:grid;gap:48px}
@media (min-width:900px){.music-grid,.tasting-grid{grid-template-columns:1fr 1fr;gap:96px;align-items:center}}
.spotify{display:block;border:0;border-radius:12px;width:100%;height:152px;min-height:152px}
@media (min-width:900px){.music .spotify{height:352px}}
.facts-list{margin:0;padding:0}
.facts-list div{display:grid;grid-template-columns:6.5em 1fr;gap:12px;padding:16px 0;border-top:1px solid color-mix(in srgb,currentColor 25%,transparent);font-size:14.5px}
.facts-list div:last-child{border-bottom:1px solid color-mix(in srgb,currentColor 25%,transparent)}
.facts-list dt{letter-spacing:.16em;font-size:13px;padding-top:3px}
.facts-list dd{margin:0}
.facts-list a{text-underline-offset:5px}

/* ---------- V 浮上 ---------- */
.finale{overflow:hidden}
.finale-media{position:absolute;inset:0;z-index:0}
.finale-media img{width:100%;height:100%;object-fit:cover;opacity:.2;mix-blend-mode:multiply}
.finale-grid{display:grid;gap:48px}
.finale .circle{border-radius:50%;overflow:hidden;aspect-ratio:1;max-width:460px;width:100%;justify-self:center}
.finale .circle img{width:100%;height:100%;object-fit:cover}
.finale .closing{font-family:var(--serif);font-weight:400;font-size:clamp(19px,2vw,24px);letter-spacing:.12em;line-height:1.9;margin:30px 0 40px}
@media (max-width:899px){.finale .circle{max-width:260px}}
@media (min-width:900px){.finale-grid{grid-template-columns:5fr 6fr;gap:110px;align-items:center}}

/* ---------- 手機：底部訂位列（首頁，離開首屏後出現） ---------- */
.reserve-bar{display:none}
@media (max-width:899px){
  .js .reserve-bar{display:grid;grid-template-columns:1.15fr 1fr;gap:8px;position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:55;transform:translateY(calc(100% + 30px));transition:transform .6s var(--ease)}
  .bar-on .reserve-bar{transform:none}
  .reserve-bar a{display:flex;align-items:center;justify-content:center;height:50px;border-radius:999px;border:1px solid var(--fg);background:var(--bg);color:var(--fg);font-size:14px;letter-spacing:.1em;text-decoration:none;white-space:nowrap;transition:background-color 1.4s,color 1.4s,border-color 1.4s}
  .reserve-bar .rb-main{background:var(--fg);color:var(--bg)}
}

/* ---------- 頁尾 ---------- */
.foot{padding:var(--sec) 0 56px;font-size:13px;line-height:2;letter-spacing:.05em}
.foot-top{display:grid;gap:56px;margin-bottom:72px}
.foot-mark{width:clamp(120px,16vw,240px)}
.foot-logos{display:flex;flex-wrap:wrap;gap:40px 80px}
.foot-row{display:flex;flex-wrap:wrap;align-items:center;gap:20px 40px}
.foot-row a{display:block}
.lg-caju{height:52px;width:auto}
.lg-wl{height:36px;width:auto}
.lg-wa{height:24px;width:auto}
@media (min-width:900px){.foot-top{grid-template-columns:auto 1fr;align-items:end}.foot-logos{justify-content:flex-end}}
.foot-grid{display:grid;gap:28px;padding-top:32px;border-top:1px solid color-mix(in srgb,currentColor 25%,transparent)}
.foot-k{font-family:var(--en);font-style:italic;font-size:15px;letter-spacing:.02em;margin-bottom:10px}
.foot p{margin:0 0 6px}
.flinks{display:flex;flex-wrap:wrap;gap:8px 24px;margin-top:12px}
@media (max-width:899px){.foot{padding:72px 0 44px}.foot-top{gap:32px;margin-bottom:40px}.foot-mark{width:96px}.foot-logos{gap:24px 48px}.lg-caju{height:44px}.lg-wl{height:30px}}
@media (min-width:900px){.foot-grid{grid-template-columns:1fr 1fr 1.2fr;gap:56px}}

/* ---------- 子頁 ----------
   每一段換一種讀法：封面（大字）→ 這一杯怎麼喝（圖）→ 杯 ⇄ 書（對照）→ 名字（詞條）→ 這本書（書卡）→ 帶走 */
.d-open{padding-bottom:var(--sec)}
.back-btn{min-height:40px;padding:0 18px;font-size:13px}
.d-open .back-btn{position:absolute;z-index:3;top:78px;left:var(--gutter)}
@media (min-width:1000px){.d-open{padding-bottom:0}.d-open .back-btn{top:96px;left:var(--inset)}}
.d-head{margin-bottom:clamp(28px,5vw,64px)}
/* 手機：子頁每段的上下留白收小一點（在店裡用手機讀，少捲幾下） */
@media (max-width:899px){.d-glass,.d-pair,.d-name,.d-book,.d-end{padding:64px 0}.d-open{padding-bottom:64px}.others{margin-top:64px}.card{padding:26px 22px}.flow li{padding-bottom:30px}}
.d-head .kicker{margin-bottom:14px}
.d-h{font-size:clamp(28px,3vw,40px);letter-spacing:.1em;margin:0}
.mini{font-size:13px;letter-spacing:.2em;margin:0 0 18px}

/* ② 這一杯怎麼喝：左邊材料圖示與基酒，右邊是喝下去的順序（一條線串起三個氣泡） */
.glass-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:56px}
.glass-grid>*,.book-grid>*,.end-grid>*,.pair>*,.quiz-grid>*{min-width:0}
@media (min-width:900px){.glass-grid{grid-template-columns:5fr 6fr;gap:96px;align-items:start}}
.g-base{margin:32px 0 14px;padding:0}
.g-base div{display:grid;grid-template-columns:5.2em 1fr;gap:12px;padding:15px 0;border-top:1px solid color-mix(in srgb,currentColor 25%,transparent);border-bottom:1px solid color-mix(in srgb,currentColor 25%,transparent)}
.g-base dt{font-size:13px;letter-spacing:.16em;padding-top:4px}
.g-base dd{margin:0}
.g-base b{display:block;font-family:var(--serif);font-weight:400;font-size:17px;letter-spacing:.08em}
.g-base span{display:block;font-size:13px;line-height:1.7;margin-top:2px}
.flow{list-style:none;margin:0;padding:0;position:relative;counter-reset:f}
.flow::before{content:"";position:absolute;left:17px;top:18px;bottom:18px;border-left:1px solid color-mix(in srgb,currentColor 35%,transparent)}
.flow li{position:relative;display:grid;grid-template-columns:36px 1fr;column-gap:20px;padding:0 0 40px;counter-increment:f}
.flow li:last-child{padding-bottom:0}
.flow li::before{content:counter(f);grid-column:1;grid-row:1/span 3;width:36px;height:36px;border:1px solid currentColor;border-radius:50%;display:grid;place-items:center;background:var(--bg);font-family:var(--en);font-size:17px;line-height:1;transition:background-color 1.4s}
.fk{grid-column:2;font-size:13px;letter-spacing:.22em;line-height:1.6;padding-top:7px}
.ft{grid-column:2;font-family:var(--serif);font-weight:400;font-size:clamp(20px,2.2vw,27px);line-height:1.6;letter-spacing:.06em;margin:4px 0 0}
.fi{grid-column:2;display:flex;flex-wrap:wrap;gap:12px;margin-top:10px}
.fi .ic{width:30px;height:30px;stroke-width:1}

/* ③ 杯 ⇄ 書 */
.pair{display:grid;gap:16px;align-items:stretch}
.pair-side{display:grid;gap:6px;align-content:start;padding:28px 24px 30px;border:1px solid color-mix(in srgb,currentColor 30%,transparent)}
.pair-ic{width:42px;height:42px;stroke-width:.9;margin-bottom:6px}
.pk{font-size:13px;letter-spacing:.24em;margin:0}
.pt{font-family:var(--serif);font-weight:400;font-size:clamp(19px,2vw,25px);line-height:1.75;letter-spacing:.06em;margin:0}
.pair-mid{width:34px;height:34px;justify-self:center;align-self:center;stroke-width:1;transform:rotate(90deg)}
@media (min-width:900px){.pair{grid-template-columns:1fr auto 1fr;gap:28px}.pair-side{padding:44px 40px}.pair-mid{width:48px;height:48px;transform:none}}

/* ② 名字：緊接在封面下面，像字典詞條；最後一行指回封面上的意象 */
.entry{max-width:860px}
.entry-k{font-size:13px;letter-spacing:.22em;margin:0 0 18px}
.parts{margin:0 0 22px;padding:0}
.parts div{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:baseline;padding:14px 0;border-top:1px solid color-mix(in srgb,currentColor 25%,transparent)}
.parts div:last-child{border-bottom:1px solid color-mix(in srgb,currentColor 25%,transparent)}
.parts dt{font-family:var(--serif);font-weight:400;font-size:28px;letter-spacing:.1em;min-width:2.3em}
.parts dd{margin:0;font-size:15px;line-height:1.8}
.entry-def{font-family:var(--serif);font-weight:400;font-size:clamp(20px,2.4vw,30px);line-height:1.85;letter-spacing:.06em;margin:0;max-width:26em}


/* ⑤ 這本書 */
.book-grid{display:grid;gap:48px;align-items:center}
.book-cover{max-width:340px;width:44%;justify-self:center}
@media (min-width:900px){.book-grid{grid-template-columns:5fr 7fr;gap:110px}.book-cover{width:100%}}
.book-title{font-family:var(--serif);font-weight:400;font-size:clamp(22px,2.4vw,30px);letter-spacing:.08em;margin:22px 0 18px}
.author{display:flex;align-items:center;gap:18px;margin:0 0 20px}
.map{width:88px;height:auto;flex:none;overflow:visible}
.map use{stroke:currentColor;stroke-width:1.15;stroke-linecap:round;fill:none;opacity:.42}
.here{fill:var(--clay)}
.here-ring{fill:none;stroke:var(--clay);stroke-width:.7;transform-box:fill-box;transform-origin:center;animation:ping var(--breath) ease-in-out infinite}
@keyframes ping{0%,100%{transform:scale(.85);opacity:.6}40%{transform:scale(1.3);opacity:1}}
.a-name{font-family:var(--en);font-size:21px;line-height:1.3;margin:0}
.a-country{font-size:14px;letter-spacing:.2em;margin:4px 0 0}
.chips{list-style:none;margin:0 0 22px;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.chips li{font-size:13px;letter-spacing:.04em;line-height:1.5;padding:5px 14px;border:1px solid color-mix(in srgb,currentColor 35%,transparent);border-radius:999px}
.synopsis{font-size:15px;line-height:2}

/* ⑥ 帶走 */
.end-grid{display:grid;gap:20px}
@media (min-width:900px){.end-grid{grid-template-columns:1.3fr 1fr;gap:28px;align-items:stretch}}
.card{padding:clamp(28px,3.4vw,48px);border:1px solid color-mix(in srgb,currentColor 25%,transparent)}
.card .kicker{margin-bottom:18px}
.card .t{font-family:var(--serif);font-weight:400;font-size:clamp(24px,2.4vw,32px);letter-spacing:.08em;margin:0 0 10px}
.card .spotify{margin:12px 0 24px}
@media (max-width:899px){.card.ig .kicker{display:none}.card.ig .t{font-size:22px}.card.ig p{font-size:14px}}

/* 其他四杯：不用回首頁就能換一杯 */
.others{margin-top:var(--sec)}
.others-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px}
.others-head .kicker{margin:0}
.others ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:28px 16px}
@media (min-width:900px){.others ul{grid-template-columns:repeat(4,1fr);gap:24px}}
.others a{display:grid;gap:2px;text-decoration:none}
.o-img{display:flex;align-items:flex-end;justify-content:center;aspect-ratio:1/1;padding:14% 0 8%;margin-bottom:12px;background:var(--stage);border-radius:999px 999px 0 0;overflow:hidden;transition:background-color 1.4s}
@media (min-width:900px){.o-img{aspect-ratio:4/5}}
.o-img img{height:100%;width:auto;max-width:80%;object-fit:contain;transition:transform .8s var(--ease)}
.others a:hover .o-img img{transform:translateY(-8px)}
.o-no{font-family:var(--en);font-size:15px}
.others b{font-family:var(--serif);font-weight:400;font-size:22px;letter-spacing:.12em}
.o-book{font-size:13px;line-height:1.6}
/* 手機：底部固定的切換列 */
.dock{display:none}
@media (max-width:899px){
  .dock{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:55;height:50px;border-radius:999px;background:var(--fg);color:var(--bg);font-size:13.5px;letter-spacing:.08em;transition:background-color 1.4s,color 1.4s}
  .dock a{display:flex;align-items:center;height:100%;padding:0 16px;text-decoration:none;white-space:nowrap}
  .dock a:last-child{justify-content:flex-end}
  .dock-home{border-left:1px solid color-mix(in srgb,var(--bg) 35%,transparent);border-right:1px solid color-mix(in srgb,var(--bg) 35%,transparent)}
  body:has(.dock) .foot{padding-bottom:120px}
}

/* 合作洽詢 */
.c-open{padding-top:clamp(150px,18vw,240px)}
.c-open .back-btn{margin:0 0 48px}
.c-open .small{max-width:34em;margin-top:18px;opacity:.85}
.c-act{margin:36px 0 0}

/* ---------- 進場動態 ---------- */
.js .reveal{opacity:0;transform:translateY(40px);filter:blur(8px);transition:opacity 1.4s ease,transform 1.6s var(--ease),filter 1.4s ease}
.js .reveal.in{opacity:1;transform:none;filter:none}
.js .lines .ln>span{transform:translateY(112%);transition:transform 1.5s var(--ease);transition-delay:calc(var(--i) * .14s)}
.js .lines.in .ln>span{transform:none}
.js .unveil{clip-path:inset(100% 0 0 0);transition:clip-path 1.8s var(--ease)}
.js .unveil.in{clip-path:inset(0 0 0 0)}
.js .rise{opacity:0;transform:translateY(28px);filter:blur(6px);transition:opacity 1.4s ease,transform 1.6s var(--ease),filter 1.4s ease}
.ready .rise{opacity:1;transform:none;filter:none}
.ready .rise:nth-child(2){transition-delay:.12s}.ready .rise:nth-child(3){transition-delay:.24s}.ready .rise:nth-child(4){transition-delay:.36s}.ready .rise:nth-child(5){transition-delay:.48s}

@media (prefers-reduced-motion:reduce){
  body,.top,.rail{transition:none}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .js .reveal,.js .rise,.js .unveil{opacity:1;transform:none;filter:none;clip-path:none}
  .js .lines .ln>span{transform:none}
  .cm-letter path{stroke-dashoffset:0}
  .cm-fade span{opacity:.85;transform:translate(calc(var(--k) * 3px),calc(var(--k) * -6cqh));background:color-mix(in srgb,var(--fg) calc(100% - var(--k) * 25%),transparent)}
  .bubbles,.breath-cue .cue,.cursor{display:none}
  .hero-media img{transform:none}
}
