/* OJAI · SLOW VALLEY — JSLALALAND */
:root{
  --cream:#fbf6ef;--paper:#f5ece0;--ink:#2b2632;--ink2:#5a5263;--muted:#8b8291;--line:rgba(43,38,50,.12);
  --pink:#e8919f;--blush:#f6d3d3;--peach:#f2bd98;--lav:#b6a4d2;--sage:#8fae8b;--terra:#c8704f;--honey:#d6a256;--indigo:#4f6d97;
  --sky-top:#e9b7c3;--sky-bot:#f6c39a;--ridge:#c9a3b0;--pinkness:0;
  --serif:'Fraunces','Noto Serif TC',Georgia,serif;--zh:'LXGW WenKai TC','Noto Serif TC',serif;--hand:'Caveat','LXGW WenKai TC',cursive;
  --body:'Noto Sans TC',system-ui,-apple-system,'PingFang TC',sans-serif;--mono:'IBM Plex Mono',ui-monospace,monospace;
  --r:18px;--shadow:0 10px 30px -12px rgba(60,40,60,.28);--ease:cubic-bezier(.2,.8,.2,1);
  --dockH:0px;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;background:var(--cream)}
body{margin:0;font-family:var(--body);color:var(--ink);background:var(--cream);line-height:1.65;font-size:16px;overflow-x:hidden}
html.sheet-open body,html.menu-open body,html.intro-on body{overflow:hidden}
img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
mark{background:linear-gradient(transparent 55%,color-mix(in srgb,var(--c,#e8919f) 45%,transparent) 55%);color:inherit;padding:0 .1em}
html[data-lang="zh"] .e,html[data-lang="en"] .z{display:none!important}
.ic{width:1.15em;height:1.15em;flex:none;vertical-align:-.2em}
.ic.big{width:44px;height:44px}
.fine{font-size:.82rem;color:var(--muted);margin:.8rem 0 0}
.kick{font-family:var(--hand);font-size:1.35rem;color:var(--terra);margin:0;line-height:1.2}
.link{color:var(--ink2);text-decoration:underline;text-underline-offset:3px;font-size:.92rem;display:inline-flex;align-items:center;gap:.25em}
.btn{display:inline-flex;align-items:center;gap:.45em;padding:.7em 1.15em;border-radius:999px;background:var(--ink);color:#fff;font-weight:600;font-size:.95rem;text-decoration:none;transition:transform .25s var(--ease),box-shadow .25s,background .25s;box-shadow:var(--shadow)}
.btn:hover{transform:translateY(-2px)}
.btn.ghost{background:rgba(255,255,255,.75);color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line)}
.btn.pinkb{background:linear-gradient(120deg,#e98d9d,#f2b493);color:#3a1f27}
.grain:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.35;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .45 0 0 0 0 .4 0 0 0 .18 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ---------- progress, top bar, home pin ---------- */
#prog{position:fixed;left:0;top:0;height:3px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--sage),var(--pink),var(--honey),var(--lav),var(--indigo));z-index:70}
.home-pin{position:fixed;left:max(12px,env(safe-area-inset-left));top:max(10px,env(safe-area-inset-top));z-index:80;display:flex;align-items:center;gap:.5rem;padding:.35rem .85rem .35rem .35rem;border-radius:999px;background:rgba(251,246,239,.82);backdrop-filter:blur(12px) saturate(1.3);-webkit-backdrop-filter:blur(12px) saturate(1.3);box-shadow:0 6px 22px -10px rgba(40,30,40,.45),inset 0 0 0 1px rgba(255,255,255,.6);text-decoration:none;color:var(--ink);transition:transform .3s var(--ease)}
.home-pin:hover{transform:translateY(-1px)}
.home-pin .hp-mark{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#241c16;color:#fbf6ef;font-family:var(--serif);font-weight:700;font-size:.82rem;letter-spacing:.02em}
.home-pin b{font-family:var(--serif);font-weight:600;letter-spacing:.14em;font-size:.72rem;line-height:1.1}
.home-pin small{display:block;font-family:var(--body);letter-spacing:0;font-weight:400;font-size:.68rem;color:var(--ink2)}
.topbar{position:fixed;right:max(12px,env(safe-area-inset-right));top:max(10px,env(safe-area-inset-top));z-index:80;display:flex;gap:.45rem}
.topbar>button{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:rgba(251,246,239,.82);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 6px 22px -10px rgba(40,30,40,.45),inset 0 0 0 1px rgba(255,255,255,.6);font-weight:700;font-size:.85rem}
.topbar>button.on{background:var(--ink);color:#fff}
.menu{position:fixed;inset:0;z-index:79;background:rgba(43,38,50,.45);backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity .3s}
html.menu-open .menu{opacity:1;pointer-events:auto}
.menu nav{position:absolute;right:12px;top:62px;width:min(340px,calc(100% - 24px));background:var(--cream);border-radius:22px;padding:1rem;box-shadow:var(--shadow);transform:translateY(-8px);transition:transform .35s var(--ease)}
html.menu-open .menu nav{transform:none}
.menu a{display:flex;gap:.8rem;align-items:baseline;padding:.55rem .6rem;border-radius:12px;text-decoration:none;font-weight:600}
.menu a:hover{background:var(--paper)}
.menu a i{font-style:normal;font-family:var(--mono);font-size:.75rem;color:var(--muted);width:1.6em}
.menu .mn-home{margin-top:.5rem;border-top:1px solid var(--line);padding-top:.8rem;font-weight:500;color:var(--ink2)}

/* ---------- intro: one breath ---------- */
.intro{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background:radial-gradient(circle at 50% 60%,#f3c6c9 0%,#d9a6c0 35%,#3b3150 100%);color:#fff;transition:opacity .9s,visibility .9s}
.intro.out{opacity:0;visibility:hidden}
.intro-c{position:absolute;width:38vmin;height:38vmin;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.75),rgba(255,214,214,.25) 60%,transparent 70%);transform:scale(.45);animation:inhale 2.6s var(--ease) forwards}
.intro.ex .intro-c{animation:exhale 2.1s ease-in-out forwards}
@keyframes inhale{to{transform:scale(1.35)}}
@keyframes exhale{from{transform:scale(1.35)}to{transform:scale(.7);opacity:.6}}
.intro-word{position:relative;font-family:var(--zh);font-size:clamp(1.6rem,5vw,2.6rem);letter-spacing:.3em;transition:opacity .6s}
.intro.title .intro-word{opacity:0}
.intro-t{position:absolute;text-align:center;opacity:0;transform:translateY(12px);transition:opacity 1s .2s,transform 1.2s .2s var(--ease)}
.intro.title .intro-t{opacity:1;transform:none}
.intro-t b{display:block;font-family:var(--serif);font-weight:300;font-size:clamp(4rem,18vw,10rem);letter-spacing:.18em;line-height:1;background:linear-gradient(100deg,#fff 20%,#ffd5d5 45%,#fff 70%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:sweep 2.4s ease forwards}
.intro-t span{font-family:var(--hand);font-size:1.5rem}
@keyframes sweep{from{background-position:120% 0}to{background-position:-20% 0}}
.intro-skip{position:absolute;bottom:max(24px,env(safe-area-inset-bottom));font-family:var(--mono);font-size:.75rem;letter-spacing:.2em;color:rgba(255,255,255,.85);padding:.6rem 1rem;border-radius:99px;border:1px solid rgba(255,255,255,.4)}

/* ---------- hero ---------- */
.hero{position:relative;height:100svh;min-height:600px;overflow:hidden;color:#fff;--hy:0}
.hero-slides{position:absolute;inset:0;transform:translateY(calc(var(--hy)*14%)) scale(calc(1 + var(--hy)*.06))}
.hs{position:absolute;inset:0;margin:0;opacity:0;transition:opacity 1.6s ease}
.hs.on{opacity:1}
.hs img{width:100%;height:100%;object-fit:cover;transform:scale(1.12);transition:transform 9s linear}
.hs.on img{transform:scale(1.01)}
.hs figcaption{position:absolute;right:max(18px,env(safe-area-inset-right));top:calc(70px + env(safe-area-inset-top));font-size:.76rem;max-width:min(340px,64%);text-align:right;line-height:1.45;padding:.45rem .75rem;border-radius:12px;background:rgba(22,14,28,.5);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);text-shadow:0 1px 2px rgba(0,0,0,.4)}
.hs figcaption small{display:block;font-size:.7rem;opacity:.85}
.hs figcaption a{color:#fff}
.hero-sky{position:absolute;inset:0;background:linear-gradient(90deg,rgba(22,14,28,.62) 0%,rgba(22,14,28,.42) 34%,rgba(22,14,28,.12) 62%,transparent 80%),linear-gradient(180deg,color-mix(in srgb,var(--sky-top) 45%,transparent) 0%,transparent 30%,rgba(22,14,28,.18) 52%,rgba(22,14,28,.8) 100%);pointer-events:none}
.hero-pink{position:absolute;inset:0;background:radial-gradient(120% 70% at 80% 30%,rgba(255,150,175,.55),transparent 60%);opacity:var(--pinkness);mix-blend-mode:screen;pointer-events:none}
.hero-in{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:0 max(20px,4vw) calc(70px + var(--dockH));max-width:1280px;margin:0 auto}
.hero h1{margin:0;font-family:var(--serif);font-weight:400;letter-spacing:.16em;font-size:clamp(4.4rem,17vw,12rem);line-height:.88;text-shadow:0 2px 6px rgba(20,10,25,.35),0 8px 44px rgba(20,10,25,.55)}
.hero h1 span{display:inline-block;opacity:0;transform:translateY(.25em);animation:up 1s var(--ease) forwards}
.hero h1 span:nth-child(2){animation-delay:.12s}.hero h1 span:nth-child(3){animation-delay:.24s}.hero h1 span:nth-child(4){animation-delay:.36s}
@keyframes up{to{opacity:1;transform:none}}
.hero .sub{font-family:var(--zh);font-weight:600;font-size:clamp(1.15rem,3.2vw,1.7rem);margin:.6rem 0 .2rem;text-shadow:0 1px 3px rgba(0,0,0,.55),0 2px 18px rgba(0,0,0,.5)}
.hero .sub2{font-family:var(--hand);font-size:clamp(1.2rem,3vw,1.6rem);margin:0 0 1.2rem;text-shadow:0 1px 3px rgba(0,0,0,.55),0 2px 16px rgba(0,0,0,.45)}
.live{display:grid;grid-template-columns:auto 1fr;gap:.2rem 1rem;align-items:center;max-width:560px;padding:1rem 1.15rem;border-radius:20px;background:rgba(26,18,32,.55);backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}
.live-clock{grid-row:span 3;font-family:var(--serif);font-size:2.4rem;line-height:1;font-weight:400;font-variant-numeric:tabular-nums}
.live-clock small{display:block;font-family:var(--mono);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;opacity:.8;margin-top:.35rem}
#liveMsg{font-weight:700;font-size:1.02rem}
#liveSub,#liveWx{font-size:.85rem;opacity:.9}
.live-phase{display:inline-block;font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;padding:.15rem .5rem;border-radius:99px;background:rgba(255,255,255,.18);margin-left:.4rem;vertical-align:1px}
.hero-cta{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1rem}
.hero-dots{position:absolute;right:max(18px,4vw);bottom:calc(24px + var(--dockH));display:flex;gap:6px;z-index:2}
.hero-dots button{width:22px;height:4px;border-radius:4px;background:rgba(255,255,255,.4);transition:background .3s,width .3s}
.hero-dots button.on{background:#fff;width:34px}
.scroll-cue{position:absolute;left:50%;bottom:calc(14px + var(--dockH));transform:translateX(-50%);font-family:var(--mono);font-size:.6rem;letter-spacing:.3em;opacity:.75;animation:bob 2.4s ease-in-out infinite}
@keyframes bob{50%{transform:translate(-50%,6px)}}

/* ---------- note ---------- */
.note{position:relative;max-width:900px;margin:0 auto;padding:4.5rem 22px 2.5rem;text-align:center}
.note p.big{font-family:var(--zh);font-size:clamp(1.35rem,3.6vw,2rem);line-height:1.55;margin:.4rem 0 1rem}
html[data-lang="en"] .note p.big{font-family:var(--serif);font-style:italic;font-weight:300}
.note .sign{font-family:var(--hand);font-size:1.5rem;color:var(--terra)}
.el-strip{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap;margin-top:1.4rem}
.el-strip a{display:flex;align-items:center;gap:.4rem;padding:.45rem .9rem .45rem .45rem;border-radius:99px;background:var(--c2);text-decoration:none;font-weight:600;font-size:.9rem;transition:transform .25s var(--ease)}
.el-strip a:hover{transform:translateY(-3px) rotate(-1deg)}
.el-strip a i{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--c);color:#fff;font-style:normal;font-family:var(--zh);font-weight:700}

/* ---------- chapters ---------- */
main>section.ch{position:relative;padding:4.2rem max(18px,4vw) 3.6rem;max-width:1240px;margin:0 auto}
.ch-h{position:relative;margin-bottom:1.6rem}
.ch-n{position:absolute;right:0;top:-1.2rem;font-family:var(--serif);font-weight:200;font-size:clamp(5rem,14vw,9rem);line-height:1;color:transparent;-webkit-text-stroke:1.2px color-mix(in srgb,var(--cc,#e8919f) 70%,transparent);opacity:.55;pointer-events:none}
.ch-h h2{margin:.15rem 0 .1rem;font-family:var(--zh);font-weight:700;font-size:clamp(2rem,6vw,3.3rem);line-height:1.12;letter-spacing:.02em}
html[data-lang="en"] .ch-h h2{font-family:var(--serif);font-weight:400}
.ch-h .alt{font-family:var(--serif);font-style:italic;color:var(--muted);font-size:1.05rem;margin:0}
html[data-lang="en"] .ch-h .alt{font-family:var(--zh);font-style:normal}
.ch-h .lede{max-width:680px;color:var(--ink2);margin:.8rem 0 0}
.ch-h h2 .sw{background:linear-gradient(100deg,var(--ink) 30%,var(--cc,#e8919f) 50%,var(--ink) 70%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;background-position:100% 0;transition:background-position 1.6s ease}
.ch-h.in h2 .sw{background-position:0 0}
.rv{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.rv.in{opacity:1;transform:none}
html:not(.js) .rv{opacity:1;transform:none}
.divider{height:70px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 70' preserveAspectRatio='none'%3E%3Cpath d='M0 50 C150 20 260 60 400 38 S650 8 800 34 S1050 64 1200 30' fill='none' stroke='%23e8919f' stroke-width='1.5' stroke-dasharray='3 7' opacity='.6'/%3E%3C/svg%3E") center/100% 100% no-repeat}

/* ---------- 01 pink ---------- */
.ch-pink{--cc:#e8919f}
.pink-wrap{display:grid;grid-template-columns:1.5fr 1fr;gap:1.4rem;align-items:start}
.pano-box{position:relative;border-radius:26px;overflow:hidden;box-shadow:var(--shadow);background:#2a2440}
#pano{display:block;width:100%;height:auto;--t:#9cc3e6;--b:#f4e2cd;--r:#a8a0a8;--rh:#ccc;--p:0;--n:0;--g:0}
.pano-stop1{stop-color:var(--t)}.pano-stop2{stop-color:var(--b)}
.pano-far{fill:var(--r);transition:fill .2s}
.pano-glow{fill:#ff9db3;opacity:calc(var(--p)*.9)}
.pano-gold{fill:#ffcf8a;opacity:calc(var(--g)*.35)}
.pano-mid{fill:color-mix(in srgb,var(--r) 40%,#3f3a4f)}
.pano-near{fill:color-mix(in srgb,var(--r) 18%,#2b2738)}
.pano-oak{fill:#252231}
.pano-star{fill:#fff;opacity:0}
#panoSun{fill:#fff3c9;filter:url(#sunGlow)}
.pano-clock{position:absolute;left:16px;top:14px;color:#fff;font-family:var(--serif);font-size:2rem;text-shadow:0 2px 14px rgba(0,0,0,.35);font-variant-numeric:tabular-nums;line-height:1}
.pano-clock small{display:block;font-family:var(--mono);font-size:.62rem;letter-spacing:.14em;opacity:.85;margin-top:.3rem}
.pano-dir{position:absolute;right:14px;top:16px;color:#fff;font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;opacity:.85}
.pink-ctl{padding:1rem 1rem .4rem;background:#fff;border-radius:0 0 26px 26px}
.pink-ctl input[type=range]{width:100%;accent-color:#e07f93;height:28px}
.pink-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;justify-content:space-between}
.pink-row label{display:flex;gap:.4rem;align-items:center;font-size:.9rem;font-weight:600}
.pink-row input[type=date]{font:inherit;border:1.5px solid var(--line);border-radius:12px;padding:.35rem .6rem;background:var(--cream)}
#pinkQuick{display:flex;gap:.35rem}
#pinkQuick button,#pinkPlay{font-size:.8rem;padding:.4rem .75rem;border-radius:99px;background:var(--paper);font-weight:600}
#pinkPlay.on{background:#e07f93;color:#fff}
#pinkMeter{height:8px;border-radius:8px;background:var(--paper);overflow:hidden;margin:.6rem 0 .2rem}
#pinkMeter i{display:block;height:100%;background:linear-gradient(90deg,#f2b493,#e8919f,#b6a4d2);transition:width .2s}
#pinkMeterV{font-family:var(--mono);font-size:.72rem;color:var(--muted)}
#pinkSay{font-family:var(--zh);font-size:1.15rem;margin:.4rem 0 .6rem;min-height:3.2em}
html[data-lang="en"] #pinkSay{font-family:var(--serif);font-style:italic}
.pink-side h3{font-family:var(--zh);margin:.3rem 0 .6rem;font-size:1.3rem}
#pinkFacts{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:1rem}
#pinkFacts div{background:#fff;border-radius:16px;padding:.7rem .8rem;box-shadow:inset 0 0 0 1px var(--line)}
#pinkFacts span{display:block;font-size:.75rem;color:var(--muted);margin-top:.2rem}
#pinkFacts b{font-family:var(--serif);font-size:1.25rem;font-weight:500}
#pinkFacts .ic{color:#e07f93}
.why-pink{font-size:.92rem;color:var(--ink2);background:linear-gradient(135deg,#fff,#fbe9e7);border-radius:18px;padding:.9rem 1rem;margin:0 0 1rem}
.spots{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(190px,1fr);gap:.8rem;overflow-x:auto;scroll-snap-type:x mandatory;padding:.3rem .1rem 1rem;margin-top:1.2rem}
.spot{scroll-snap-align:start;text-align:left;background:#fff;border-radius:20px;overflow:hidden;box-shadow:0 8px 24px -16px rgba(60,40,60,.5);transition:transform .35s var(--ease)}
.spot .cov{aspect-ratio:4/3}
.spot b{display:block;padding:.6rem .8rem 0;font-size:.95rem}
.spot span{display:block;padding:.1rem .8rem .8rem;font-size:.82rem;color:var(--ink2)}

/* cover tiles */
.cov{position:relative;overflow:hidden;background:var(--paper)}
.cov img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.card:hover .cov img,.spot:hover .cov img{transform:scale(1.05)}
.cov-ic{display:grid;place-items:center;background:radial-gradient(circle at 30% 25%,#fff8 0,transparent 40%),linear-gradient(150deg,var(--c2),color-mix(in srgb,var(--c) 55%,var(--c2)));color:#fff}
.cov-ic i{position:absolute;right:10px;bottom:4px;font-style:normal;font-family:var(--zh);font-size:3.4rem;line-height:1;color:rgba(255,255,255,.55)}
.cov-ic .ic{filter:drop-shadow(0 2px 6px rgba(0,0,0,.15))}
.cov.sm{width:64px;height:64px;border-radius:14px;flex:none}
.cov.sm .ic.big{width:28px;height:28px}
.cov.sm i{font-size:1.4rem;right:5px;bottom:1px}

/* ---------- 02 elements ---------- */
.ch-wuxing{--cc:#7fa77a}
.wx-wrap{display:grid;grid-template-columns:minmax(300px,440px) 1fr;gap:1.6rem;align-items:start}
#wheel{width:100%;height:auto;overflow:visible}
.wh-ring{fill:none;stroke:var(--line);stroke-width:1.2;stroke-dasharray:2 6}
.wh-sheng{fill:none;stroke:#c9a8a0;stroke-width:1.6;color:#c9a8a0}
.wh-ke{stroke:var(--line);stroke-width:1;stroke-dasharray:3 5}
.wh-node{cursor:pointer;outline:none}
.wh-halo{fill:var(--c2);opacity:0;transform:scale(.8);transition:opacity .4s,transform .5s var(--ease)}
.wh-dot{fill:var(--c);stroke:#fff;stroke-width:3;transition:transform .4s var(--ease)}
.wh-node:hover .wh-dot,.wh-node:focus .wh-dot{transform:scale(1.07)}
.wh-node.on .wh-halo{opacity:1;transform:scale(1.25);animation:pulse 2.6s ease-in-out infinite}
@keyframes pulse{50%{transform:scale(1.4);opacity:.6}}
.wh-k{fill:#fff;font-family:var(--zh);font-size:26px;font-weight:700;text-anchor:middle}
.wh-e{fill:#fff;font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-anchor:middle;text-transform:uppercase;opacity:.9}
.wh-c1{font-family:var(--zh);font-size:22px;text-anchor:middle;fill:var(--ink)}
.wh-c2{font-family:var(--hand);font-size:17px;text-anchor:middle;fill:var(--terra)}
#elPanel{background:linear-gradient(160deg,#fff 0%,var(--c2) 140%);border-radius:28px;padding:1.4rem;box-shadow:var(--shadow);transition:background .5s}
.elp-head{display:flex;gap:1rem;align-items:center}
.elp-k{width:72px;height:72px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--c);color:#fff;font-family:var(--zh);font-size:2.4rem;font-weight:700;box-shadow:0 10px 24px -10px var(--c)}
.elp-head h3{margin:0;font-family:var(--zh);font-size:1.5rem;line-height:1.3}
.elp-head p{margin:.15rem 0 0;color:var(--ink2)}
.elp-tab{display:grid;grid-template-columns:repeat(3,1fr);gap:.4rem;margin:1rem 0}
.elp-tab div{background:rgba(255,255,255,.7);border-radius:12px;padding:.45rem .6rem}
.elp-tab dt{font-size:.7rem;color:var(--muted)}.elp-tab dd{margin:0;font-weight:600;font-size:.9rem}
.elp-rx{font-family:var(--zh);font-size:1.12rem;line-height:1.6;margin:.4rem 0 1rem}
html[data-lang="en"] .elp-rx{font-family:var(--serif)}
.elp-rx b{display:block;font-family:var(--hand);font-size:1.25rem;color:var(--terra);font-weight:400}
.elp-ps{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.5rem}
.mini{display:flex;gap:.6rem;align-items:center;text-align:left;background:rgba(255,255,255,.85);border-radius:16px;padding:.4rem;transition:transform .25s var(--ease)}
.mini:hover{transform:translateX(3px)}
.mini span{font-weight:600;font-size:.9rem;line-height:1.3}
.mini small{display:block;font-weight:400;color:var(--muted);font-size:.78rem}
.elp-act{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:1rem}
[data-bowl].ring{animation:ring .9s ease}
@keyframes ring{20%{transform:rotate(-4deg) scale(1.04)}40%{transform:rotate(3deg)}60%{transform:rotate(-2deg)}}

/* ---------- 03 quiz ---------- */
.ch-quiz{--cc:#d6a256}
#quizBox{max-width:820px;margin:0 auto;background:#fff;border-radius:28px;padding:1.6rem;box-shadow:var(--shadow)}
.qz-top{display:flex;align-items:center;gap:.8rem;font-family:var(--mono);font-size:.75rem;color:var(--muted);flex-wrap:wrap}
.qz-top i{flex:1;min-width:80px;height:5px;border-radius:5px;background:var(--paper);position:relative;overflow:hidden}
.qz-top i:after{content:"";position:absolute;inset:0;width:var(--w);background:linear-gradient(90deg,var(--sage),var(--pink),var(--honey));transition:width .5s var(--ease)}
#quizBox h3{font-family:var(--zh);font-size:clamp(1.35rem,3.5vw,1.8rem);margin:1rem 0}
html[data-lang="en"] #quizBox h3{font-family:var(--serif)}
.qz-a{display:grid;gap:.55rem}
.qz-a button{text-align:left;padding:.85rem 1.1rem;border-radius:16px;background:var(--cream);box-shadow:inset 0 0 0 1.5px var(--line);font-weight:600;transition:transform .25s var(--ease),box-shadow .25s,background .25s;animation:up .6s var(--ease) both;animation-delay:var(--d)}
.qz-a button:hover{background:#fff;box-shadow:inset 0 0 0 2px var(--c);transform:translateX(4px)}
.qz-back{margin-top:1rem}
.qz-res{display:grid;grid-template-columns:auto 1fr;gap:1.2rem;align-items:start}
.qz-k{width:110px;height:110px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 30%,#fff7 0,transparent 45%),var(--c);color:#fff;font-family:var(--zh);font-size:3.6rem;font-weight:700;animation:pop .7s var(--ease)}
@keyframes pop{from{transform:scale(.4) rotate(-20deg);opacity:0}}
.qz-res h3{margin:.1rem 0 .4rem!important}
.qz-sheng{font-family:var(--hand);font-size:1.3rem;color:var(--terra);margin:.4rem 0}
.qz-bars{list-style:none;padding:0;margin:.6rem 0;display:grid;gap:.3rem}
.qz-bars li{display:flex;align-items:center;gap:.5rem;font-family:var(--zh)}
.qz-bars i{flex:1;height:8px;border-radius:8px;background:var(--paper);position:relative;overflow:hidden}
.qz-bars i:after{content:"";position:absolute;inset:0;width:var(--w);background:var(--c);border-radius:8px;animation:grow 1s var(--ease)}
@keyframes grow{from{width:0}}

/* ---------- 04 planner ---------- */
.ch-plan{--cc:#b6a4d2}
.plan-wrap{display:grid;grid-template-columns:minmax(280px,360px) 1fr;gap:1.4rem;align-items:start}
#planForm{background:#fff;border-radius:26px;padding:1.2rem;box-shadow:var(--shadow);display:grid;gap:.85rem;position:sticky;top:76px}
#planForm label{display:grid;gap:.3rem;font-size:.82rem;font-weight:700;color:var(--ink2)}
#planForm select,#planForm input[type=date]{font:inherit;font-weight:500;border:1.5px solid var(--line);border-radius:12px;padding:.55rem .7rem;background:var(--cream);color:var(--ink)}
#planEls{display:grid;grid-template-columns:repeat(5,1fr);gap:.35rem}
#planEls button{border-radius:14px;padding:.45rem 0;background:var(--c2);display:grid;justify-items:center;line-height:1.1;transition:transform .25s,box-shadow .25s}
#planEls b{font-family:var(--zh);font-size:1.3rem}
#planEls span{font-size:.68rem}
#planEls button.on{background:var(--c);color:#fff;transform:translateY(-2px);box-shadow:0 8px 16px -8px var(--c)}
.chk{display:flex!important;grid-template-columns:none!important;align-items:center;gap:.5rem!important;font-weight:600!important}
.chk input{accent-color:var(--ink);width:18px;height:18px}
.chks{display:flex;gap:1rem;flex-wrap:wrap}
#planForm .btn{justify-content:center}
.plan-empty{display:grid;place-items:center;text-align:center;color:var(--muted);padding:3rem 1rem;border:2px dashed var(--line);border-radius:26px;min-height:280px}
.pl-head{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:flex-end;margin-bottom:1rem}
.pl-head h3{margin:.1rem 0 0;font-family:var(--zh);font-size:1.4rem}
.pl-tools{display:flex;gap:.4rem;flex-wrap:wrap}
.pl-tools .btn{font-size:.82rem;padding:.55em .9em}
.pl-list{list-style:none;padding:0;margin:0;position:relative}
.pl-list:before{content:"";position:absolute;left:62px;top:8px;bottom:8px;width:2px;background:linear-gradient(var(--sage),var(--pink),var(--lav),var(--indigo));opacity:.45}
.pl-list li{display:grid;grid-template-columns:54px 1fr;gap:16px;margin-bottom:.7rem;animation:up .6s var(--ease) both}
.pl-list li:nth-child(2){animation-delay:.05s}.pl-list li:nth-child(3){animation-delay:.1s}.pl-list li:nth-child(4){animation-delay:.15s}.pl-list li:nth-child(5){animation-delay:.2s}.pl-list li:nth-child(6){animation-delay:.25s}.pl-list li:nth-child(7){animation-delay:.3s}.pl-list li:nth-child(8){animation-delay:.35s}
.pl-list time{font-family:var(--mono);font-size:.8rem;font-weight:500;text-align:right;padding-top:.9rem;position:relative}
.pl-list time:after{content:"";position:absolute;right:-14px;top:1.1rem;width:10px;height:10px;border-radius:50%;background:var(--c,#ccc);box-shadow:0 0 0 3px var(--cream)}
.pl-drive>div{display:flex;gap:.5rem;align-items:center;font-size:.86rem;color:var(--ink2);padding:.7rem 0}
.pl-home>div{color:var(--ink)}
.pl-note{grid-column:1/-1;margin:-.3rem 0 0;font-size:.82rem;color:var(--ink2);background:var(--paper);border-radius:12px;padding:.55rem .75rem}
.pl-list li.pl-day{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin:1.2rem 0 .8rem;padding:.75rem 1rem;border-radius:18px;background:linear-gradient(110deg,var(--c),var(--c2));color:#fff;position:relative;z-index:1;box-shadow:0 10px 24px -18px rgba(60,40,60,.7)}
.pl-list li.pl-day:first-child{margin-top:0}
.pl-day>div{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .7rem}
.pl-day b{font-family:var(--serif);font-size:1.25rem;font-weight:600}
.pl-day span{font-size:.84rem;opacity:.95}
.pl-day span:last-child{font-family:var(--mono);font-size:.74rem}
.pl-rt{display:flex;align-items:center;gap:.3rem;flex:none;color:#fff;text-decoration:none;font-size:.8rem;font-weight:600;background:rgba(255,255,255,.22);padding:.45rem .7rem;border-radius:999px}
.pl-rt:hover{background:rgba(255,255,255,.35)}
.pl-card{background:#fff;border-radius:20px;box-shadow:0 8px 22px -16px rgba(60,40,60,.55);overflow:hidden;border-left:5px solid var(--c)}
.pl-main{display:flex;gap:.8rem;text-align:left;padding:.7rem;width:100%}
.pl-main small{display:block;font-family:var(--mono);font-size:.68rem;color:var(--muted);letter-spacing:.06em}
.pl-main b{display:block;font-size:1.02rem;line-height:1.3}
.pl-main em{display:block;font-style:normal;font-size:.84rem;color:var(--ink2);margin-top:.15rem}
.pl-act{display:flex;gap:.2rem;border-top:1px solid var(--line);padding:.25rem .4rem}
.pl-act>*{display:flex;align-items:center;gap:.25rem;font-size:.78rem;padding:.35rem .55rem;border-radius:10px;text-decoration:none;color:var(--ink2)}
.pl-act>*:hover{background:var(--paper)}
.pl-act>:last-child{margin-left:auto}

/* ---------- 05 map ---------- */
.ch-map{--cc:#4f6d97}
.map-top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.6rem;margin-bottom:.8rem}
.chips{display:flex;gap:.35rem;flex-wrap:wrap}
.chips button{padding:.4rem .8rem;border-radius:99px;background:#fff;box-shadow:inset 0 0 0 1.5px var(--line);font-size:.85rem;font-weight:600;transition:background .25s,color .25s}
.chips button.on{background:var(--c,var(--ink));color:#fff;box-shadow:none}
.map-box{position:relative;border-radius:28px;overflow:hidden;box-shadow:var(--shadow);background:#f3e7d6}
#vmap{display:block;width:100%;height:auto;max-height:78vh;touch-action:pan-y}
.m-range{fill:#d8ccbf}.m-range.s{fill:#e2d6c3}
.m-bluff{fill:color-mix(in srgb,#c9b0b9 calc(100% - var(--pinkness)*100%),#ef9fb1)}
.m-lake{fill:#9fc0d6}
.m-grove{fill:url(#grove)}
.m-road{fill:none;stroke:#fff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round}
.m-road.h33,.m-road.h150{stroke:#fff;filter:drop-shadow(0 0 1px #b9a993)}
.m-road.sm{stroke-width:3.5;stroke-dasharray:1 7}
.m-trail{fill:none;stroke:#7fa77a;stroke-width:3;stroke-dasharray:6 6;opacity:.85}
.m-lab{font-size:14px;fill:var(--ink2);text-anchor:middle;font-weight:600;paint-order:stroke;stroke:#f3e7d6;stroke-width:4px}
.m-lab.mt{font-family:var(--hand);font-size:19px;fill:#8a7d72;font-weight:400}
.m-lab.pinkl{font-family:var(--hand);font-size:21px;fill:#c4607a;font-weight:400}
.m-lab.town{font-family:var(--serif);font-style:italic;font-size:15px}
.m-lab.water{fill:#4f6d97}.m-lab.dir{font-size:12px;fill:var(--muted)}.m-lab.sbl{text-anchor:start}
.m-lab.trl{fill:#5d8a58;font-size:12px}.m-lab.rd{font-family:var(--mono);font-size:11px;fill:#9b8d7c}
.m-dt circle{fill:none;stroke:var(--terra);stroke-width:1.5;stroke-dasharray:3 3}
.m-dt text{font-family:var(--mono);font-size:10px;text-anchor:middle;fill:var(--terra);letter-spacing:.1em}
.dz .m-dt{opacity:0}
.m-compass circle{fill:rgba(255,255,255,.6)}.m-compass path{fill:var(--terra)}.m-compass text{font-family:var(--mono);font-size:11px;text-anchor:middle;fill:var(--ink2)}
.m-pin{cursor:pointer;outline:none}
.m-pin circle{fill:var(--c);stroke:#fff;stroke-width:2.5;transition:r .25s}
.m-pin.own circle{stroke:#ffd9a8;stroke-width:3.5}
.m-pin .m-ic{color:#fff;pointer-events:none}
.m-pin text{font-size:11px;font-weight:700;text-anchor:middle;fill:var(--ink);paint-order:stroke;stroke:#f6ecdf;stroke-width:3.5px;pointer-events:none;opacity:0;transition:opacity .25s}
.m-pin:hover .m-name,.m-pin:focus .m-name{opacity:1}
.m-num{fill:#fff!important;stroke:none!important;opacity:1!important;font-family:var(--mono);font-size:15px!important;font-weight:500!important}
.map-list{list-style:none;padding:0;margin:.8rem 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.3rem}
.map-list button{display:flex;align-items:center;gap:.45rem;width:100%;text-align:left;padding:.35rem .5rem;border-radius:12px;font-size:.84rem;font-weight:600;transition:background .2s}
.map-list button:hover{background:#fff}
.map-list b,.map-list i{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--c);color:#fff;font-style:normal;font-family:var(--mono);font-size:.72rem}
.map-list i{font-family:var(--zh);font-size:.8rem}
.map-list em{font-style:normal;font-size:.62rem;font-weight:700;color:#9a5d1d;background:#fff1d8;border-radius:99px;padding:0 .4rem;margin-left:auto}
.m-pin:hover circle,.m-pin:focus circle{r:18}
.map-legend{display:flex;flex-wrap:wrap;gap:.8rem;font-size:.8rem;color:var(--ink2);margin-top:.6rem;align-items:center}
.map-legend i{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:.3rem;vertical-align:-1px}
.walk{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:1rem;background:#fff;border-radius:20px;padding:.8rem 1rem;box-shadow:inset 0 0 0 1px var(--line)}
.walk select{font:inherit;border:1.5px solid var(--line);border-radius:10px;padding:.35rem .5rem;background:var(--cream);max-width:44vw}
#walkOut{font-weight:600;flex-basis:100%}

/* ---------- 06 places ---------- */
.ch-places{--cc:#c8704f}
.pl-top{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:space-between;align-items:center;margin-bottom:.8rem}
#placeTabs button i{font-style:normal;font-family:var(--zh);margin-right:.25rem}
.search{display:flex;align-items:center;gap:.4rem;background:#fff;border-radius:99px;padding:.35rem .8rem;box-shadow:inset 0 0 0 1.5px var(--line)}
.search input{border:0;outline:0;font:inherit;background:none;width:12em}
#placeRail{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(232px,268px);gap:1rem;overflow-x:auto;scroll-snap-type:x mandatory;padding:.4rem .2rem 1.2rem;scrollbar-width:thin}
.card{position:relative;scroll-snap-align:start;text-align:left;background:#fff;border-radius:24px;overflow:hidden;box-shadow:0 12px 30px -20px rgba(60,40,60,.6);transition:transform .4s var(--ease),box-shadow .4s;opacity:0;transform:translateY(20px)}
.card.in{opacity:1;transform:none;transition-delay:var(--d)}
html:not(.js) .card{opacity:1;transform:none}
.card .cov{aspect-ratio:4/5}
.card .cov:after{content:"";position:absolute;inset:auto 0 0 0;height:40%;background:linear-gradient(transparent,rgba(30,20,30,.35))}
.cd-el{position:absolute;left:10px;top:10px;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--c);color:#fff;font-family:var(--zh);font-weight:700;box-shadow:0 4px 12px -4px rgba(0,0,0,.4)}
.cd-j,.cd-new,.cd-n{position:absolute;top:12px;font-size:.68rem;font-weight:700;padding:.18rem .55rem;border-radius:99px;letter-spacing:.03em}
.cd-j{right:10px;background:#fff7e6;color:#9a5d1d}
.cd-new{left:50px;background:#2b2632;color:#fff;font-family:var(--mono)}
.cd-n{right:10px;top:auto;bottom:calc(100% - (min(268px,100%) * 1.25) + 10px);background:rgba(0,0,0,.45);color:#fff;display:flex;gap:.2rem;align-items:center}
.cd-near{position:absolute;left:10px;bottom:calc(100% - (min(268px,100%) * 1.25) + 10px);font-size:.68rem;font-weight:700;padding:.18rem .55rem;border-radius:99px;background:rgba(255,255,255,.88);color:#3d3442;letter-spacing:.03em}
.cd-t{display:block;padding:.75rem .95rem 1rem}
.cd-t small{display:block;font-size:.72rem;color:var(--muted)}
.cd-t b{display:block;font-size:1.06rem;line-height:1.25;margin:.1rem 0}
.cd-t i{display:block;font-style:normal;font-family:var(--zh);color:var(--c);font-size:.95rem}
.cd-t em{display:block;font-style:normal;font-size:.85rem;color:var(--ink2);margin-top:.3rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.empty{color:var(--muted)}

/* ---------- sheet ---------- */
.sheet{position:fixed;inset:0;z-index:120}
.sheet-bg{position:absolute;inset:0;background:rgba(30,24,36,.45);backdrop-filter:blur(4px);opacity:0;transition:opacity .35s}
.sheet.on .sheet-bg{opacity:1}
.sheet-panel{position:absolute;right:0;top:0;bottom:0;width:min(580px,100%);background:var(--cream);box-shadow:-20px 0 60px -20px rgba(0,0,0,.4);transform:translateX(102%);transition:transform .45s var(--ease);display:flex;flex-direction:column}
.sheet.on .sheet-panel{transform:none}
.sheet-x{position:absolute;right:12px;top:12px;z-index:3;width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.9);display:grid;place-items:center;box-shadow:var(--shadow)}
#sheetBody{overflow-y:auto;flex:1;overscroll-behavior:contain}
.gal{position:relative;aspect-ratio:4/5;max-height:62vh;width:100%;background:#1f1a24;overflow:hidden}
.gal figure{position:absolute;inset:0;margin:0;opacity:0;transition:opacity .5s;cursor:zoom-in}
.gal figure.on{opacity:1}
.gal img{width:100%;height:100%;object-fit:cover}
.gal figcaption{position:absolute;left:0;right:0;bottom:0;padding:2.4rem 1rem .8rem;background:linear-gradient(transparent,rgba(0,0,0,.6));color:#fff;font-size:.86rem}
.gal figcaption small,.gal figcaption a{display:block;font-size:.7rem;opacity:.85;color:#fff}
.gal-p,.gal-n{position:absolute;top:45%;width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.85);display:grid;place-items:center;z-index:2}
.gal-p{left:10px}.gal-n{right:10px}
.gal-c{position:absolute;left:12px;top:12px;font-family:var(--mono);font-size:.72rem;color:#fff;background:rgba(0,0,0,.4);padding:.15rem .5rem;border-radius:99px}
.gal-none{display:grid;aspect-ratio:auto;max-height:none;background:none}
.gal-none .cov{aspect-ratio:16/9}
.gal-none p{margin:.5rem 1.2rem 0;font-size:.82rem;color:var(--muted)}
.sh-in{padding:1.2rem 1.3rem 2.4rem}
.sh-tags{display:flex;flex-wrap:wrap;gap:.35rem;margin:0 0 .6rem}
.tg{display:inline-flex;gap:.25rem;align-items:center;font-size:.72rem;font-weight:700;padding:.2rem .6rem;border-radius:99px;background:var(--paper);color:var(--ink2)}
.tg.el{background:var(--c);color:#fff}.tg.j{background:#fff1d8;color:#8f5417}.tg.new{background:var(--ink);color:#fff;font-family:var(--mono)}
.sh-in h2{margin:0;font-family:var(--serif);font-weight:500;font-size:1.9rem;line-height:1.15}
.sh-in h2 small{display:block;font-family:var(--zh);font-size:1.05rem;color:var(--c);margin-top:.2rem}
.sh-area{display:flex;gap:.3rem;align-items:center;color:var(--muted);font-size:.86rem;margin:.4rem 0}
.sh-line{font-family:var(--zh);font-size:1.15rem;line-height:1.6}
html[data-lang="en"] .sh-line{font-family:var(--serif)}
.sh-js{margin:1rem 0;padding:1rem 1.1rem;border-radius:18px;background:#fff;box-shadow:inset 3px 0 0 var(--c);font-family:var(--zh);font-size:1.02rem}
.sh-js b{display:block;font-family:var(--hand);font-size:1.3rem;font-weight:400;color:var(--terra)}
.sh-hi{padding-left:1.1rem;margin:.6rem 0}
.sh-hi li{margin:.3rem 0}
.sh-hi li::marker{color:var(--c)}
.sh-tip,.sh-best{background:var(--c2);border-radius:16px;padding:.75rem .95rem;margin:.6rem 0;font-size:.92rem}
.sh-best{background:#fff;box-shadow:inset 0 0 0 1px var(--line)}
.sh-tip b,.sh-best b{display:flex;gap:.3rem;align-items:center;font-size:.78rem;letter-spacing:.04em;margin-bottom:.15rem}
.sh-info{margin:1rem 0;display:grid;gap:.4rem}
.sh-info div{display:grid;grid-template-columns:26px 1fr;gap:.4rem;font-size:.9rem}
.sh-info dt{color:var(--muted);text-align:center;font-weight:700}.sh-info dd{margin:0}
.sh-act{display:flex;flex-wrap:wrap;gap:.45rem;margin:1rem 0}
.sh-act .btn{font-size:.85rem}
.sh-more{font-size:.85rem;color:var(--muted);line-height:2}

/* lightbox */
.lb{position:fixed;inset:0;z-index:150;background:rgba(18,14,22,.94);display:grid;place-items:center;opacity:0;transition:opacity .3s}
.lb.on{opacity:1}
.lb img{max-width:94vw;max-height:80vh;object-fit:contain;border-radius:6px}
.lb p{color:#fff;text-align:center;font-size:.9rem;margin:.6rem 1rem 0}
.lb p small,.lb p a{display:block;color:#ddd;font-size:.72rem}
.lb>button{position:absolute;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.15);color:#fff;display:grid;place-items:center}
#lbX{right:14px;top:14px}#lbP{left:10px;top:50%}#lbN2{right:10px;top:50%}
#lbN{position:absolute;top:22px;left:50%;transform:translateX(-50%);color:#fff;font-family:var(--mono);font-size:.75rem}

/* ---------- 07 year ---------- */
.ch-year{--cc:#d6a256}
#yearStrip{display:grid;grid-template-columns:repeat(12,minmax(64px,1fr));gap:.4rem;overflow-x:auto;padding-bottom:.5rem}
#yearStrip button{display:grid;justify-items:center;gap:.15rem;padding:.6rem .2rem;border-radius:18px;background:#fff;box-shadow:inset 0 0 0 1px var(--line);transition:transform .25s var(--ease),background .25s}
#yearStrip button:hover{transform:translateY(-3px)}
#yearStrip button.on{background:var(--c2);box-shadow:inset 0 0 0 2px var(--c)}
#yearStrip button.now small:after{content:" •";color:var(--terra)}
#yearStrip small{font-weight:700;font-size:.78rem}
.yb{position:relative;width:10px;height:70px;border-radius:10px;background:var(--paper);overflow:hidden}
.yb u{position:absolute;left:0;right:0;bottom:calc(var(--lo)*100%);top:calc((1 - var(--hi))*100%);background:linear-gradient(var(--c),color-mix(in srgb,var(--c) 40%,#fff));border-radius:10px}
#yearStrip b{font-family:var(--serif);font-weight:500;font-size:.9rem}
#yearStrip em{font-style:normal;font-family:var(--mono);font-size:.62rem;color:var(--muted)}
#yearStrip span{font-family:var(--zh);font-size:.95rem;color:var(--c)}
.year-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:1.2rem;margin-top:1.2rem}
#yearCard{background:linear-gradient(150deg,#fff,var(--c2));border-radius:26px;padding:1.3rem;box-shadow:var(--shadow)}
#yearCard h3{font-family:var(--zh);font-size:1.4rem;line-height:1.5;margin:.3rem 0}
html[data-lang="en"] #yearCard h3{font-family:var(--serif);font-weight:500}
.yc-row{display:flex;flex-wrap:wrap;gap:.4rem 1rem;font-size:.86rem;color:var(--ink2)}
.yc-row span{display:flex;gap:.3rem;align-items:center}
#yearEvents{list-style:none;padding:0;margin:0;display:grid;gap:.45rem}
#yearEvents li{display:grid;grid-template-columns:88px 1fr;gap:.1rem .8rem;background:#fff;border-radius:16px;padding:.65rem .8rem;box-shadow:inset 4px 0 0 var(--c)}
#yearEvents .ev-d{grid-row:span 2;font-family:var(--serif);font-weight:500;color:var(--c);font-size:1rem;align-self:center}
#yearEvents b{font-size:.92rem;line-height:1.35}
#yearEvents small{color:var(--muted);font-size:.75rem}

/* ---------- 08 breathe ---------- */
.ch-breathe{--cc:#4f6d97}
.br-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:1.4rem;align-items:stretch}
.br-box{position:relative;border-radius:30px;overflow:hidden;background:radial-gradient(circle at 50% 45%,#f9e3e1,#e9cfe0 45%,#5b5f93 120%);min-height:440px;display:grid;place-items:center;color:var(--ink);box-shadow:var(--shadow)}
#brBtn{position:relative;width:min(300px,70vw);aspect-ratio:1;border-radius:50%;display:grid;place-items:center}
.br-c{position:absolute;inset:18%;border-radius:50%;background:radial-gradient(circle at 40% 35%,#fff,#ffdede 50%,#e8a5b6);box-shadow:0 0 60px 10px rgba(255,190,205,.55);transform:scale(.62);transition:transform var(--s,4s) ease-in-out}
.br-c.in{transform:scale(1.1)}.br-c.hold{transform:scale(1.1)}.br-c.out{transform:scale(.62)}
.br-c:before,.br-c:after{content:"";position:absolute;inset:-14%;border-radius:50%;border:1.5px solid rgba(255,255,255,.6);animation:rip 4s ease-out infinite}
.br-c:after{animation-delay:2s}
@keyframes rip{from{transform:scale(.85);opacity:.9}to{transform:scale(1.35);opacity:0}}
.br-txt{position:relative;text-align:center;pointer-events:none}
#brLab{display:block;font-family:var(--zh);font-size:1.35rem}
#brCnt{display:block;font-family:var(--serif);font-size:3rem;line-height:1;font-weight:300;min-height:1em}
#bowls{display:flex;gap:.45rem;justify-content:center;flex-wrap:wrap;margin:1rem 0 .4rem}
#bowls button{width:68px;height:68px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff 0,var(--c2) 45%,var(--c) 120%);display:grid;place-items:center;align-content:center;line-height:1.05;box-shadow:0 8px 18px -10px var(--c),inset 0 -6px 12px rgba(0,0,0,.08);transition:transform .25s var(--ease)}
#bowls button:hover{transform:translateY(-3px)}
#bowls b{font-family:var(--zh);font-size:1.35rem}
#bowls span{font-size:.62rem;color:var(--ink2)}
.br-side{display:grid;gap:1rem;align-content:start}
.card-box{background:#fff;border-radius:26px;padding:1.2rem;box-shadow:var(--shadow)}
.card-box h3{font-family:var(--zh);margin:.1rem 0 .4rem;font-size:1.25rem}
#oracle{display:grid;justify-items:center;gap:.6rem;margin-top:.6rem;perspective:900px}
.or-deck{position:relative;width:180px;height:250px;display:grid;place-items:center}
.or-deck i{position:absolute;inset:0;border-radius:18px;background:repeating-linear-gradient(45deg,#e9b8c3 0 10px,#f2ccd1 10px 20px);box-shadow:0 6px 16px -10px rgba(0,0,0,.4);border:5px solid #fff}
.or-deck i:nth-child(1){transform:rotate(-7deg)}.or-deck i:nth-child(2){transform:rotate(-3deg)}.or-deck i:nth-child(3){transform:rotate(2deg)}.or-deck i:nth-child(4){transform:rotate(5deg)}
.or-deck span{position:relative;background:#fff;border-radius:99px;padding:.4rem .8rem;font-weight:700;font-size:.85rem;box-shadow:var(--shadow);transition:transform .3s}
.or-deck:hover span{transform:scale(1.06)}
.or-card{width:220px;height:300px}
.or-in{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform 1s var(--ease)}
.or-card.flip .or-in{transform:rotateY(180deg)}
.or-back,.or-front{position:absolute;inset:0;border-radius:20px;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.or-back{background:repeating-linear-gradient(45deg,#e9b8c3 0 10px,#f2ccd1 10px 20px);border:6px solid #fff;box-shadow:var(--shadow)}
.or-front{transform:rotateY(180deg);background:linear-gradient(160deg,#fff,var(--c2));border:6px solid #fff;box-shadow:var(--shadow);display:grid;align-content:center;justify-items:center;text-align:center;padding:1rem;gap:.6rem}
.or-k{width:58px;height:58px;border-radius:50%;background:var(--c);color:#fff;display:grid;place-items:center;font-family:var(--zh);font-size:1.8rem;font-weight:700}
.or-front p{font-family:var(--zh);font-size:1.12rem;margin:0;line-height:1.55}
html[data-lang="en"] .or-front p{font-family:var(--serif);font-style:italic}

/* ---------- 09 before ---------- */
.ch-before{--cc:#8fae8b}
#byTabs{position:sticky;top:64px;z-index:5;padding:.4rem 0;background:linear-gradient(var(--cream) 70%,transparent)}
#byBody{background:#fff;border-radius:26px;padding:1.3rem;box-shadow:var(--shadow);margin-top:.6rem;animation:up .5s var(--ease)}
.go-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.5rem;margin-bottom:1rem}
.go{background:var(--cream);border-radius:16px;padding:.7rem .8rem}
.go b{display:block;font-size:.9rem}.go span{font-family:var(--mono);font-size:.72rem;color:var(--muted)}.go em{display:block;font-style:normal;font-family:var(--serif);font-size:1.25rem}
.rules{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.6rem}
.rules li{display:grid;grid-template-columns:auto 1fr;gap:.1rem .6rem;background:var(--cream);border-radius:16px;padding:.8rem}
.rules .ic{grid-row:span 2;color:var(--terra);width:1.5em;height:1.5em}
.rules b{font-size:.95rem}.rules span{font-size:.86rem;color:var(--ink2)}
.pack{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.45rem}
.pack label{display:flex;gap:.6rem;align-items:flex-start;background:var(--cream);border-radius:14px;padding:.7rem;cursor:pointer}
.pack input{accent-color:var(--sage);width:20px;height:20px;margin-top:.15rem}
.pack small{display:block;color:var(--muted);font-size:.78rem}
.pack input:checked+span b{text-decoration:line-through;opacity:.6}
.faq details{border-bottom:1px solid var(--line);padding:.8rem .2rem}
.faq summary{font-weight:700;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:1rem}
.faq summary:after{content:"+";font-family:var(--mono);color:var(--terra)}
.faq details[open] summary:after{content:"–"}
.faq p{margin:.5rem 0 0;color:var(--ink2)}

/* ---------- 10 book, links, credits ---------- */
.ch-book{--cc:#e8919f}
.book{display:grid;grid-template-columns:auto 1fr;gap:1.6rem;align-items:center;background:linear-gradient(135deg,#fff,#fbe6e3);border-radius:30px;padding:1.6rem;box-shadow:var(--shadow)}
.book-cover{display:block;width:168px;aspect-ratio:736/1002;border-radius:3px 8px 8px 3px;overflow:hidden;position:relative;box-shadow:10px 14px 30px -12px rgba(60,30,40,.6),0 2px 6px rgba(60,30,40,.18);transform:rotate(-4deg);transition:transform .5s var(--ease)}
.book-cover img{width:100%;height:100%;object-fit:cover;display:block}
.book-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.18),rgba(255,255,255,.12) 4%,transparent 9%);pointer-events:none}
.book-cover:hover{transform:rotate(0) scale(1.03)}
.book h3{font-family:var(--zh);margin:.2rem 0;font-size:1.4rem}
.sites{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.6rem;margin-top:1.2rem}
.sites a{display:block;padding:.9rem 1rem;border-radius:18px;background:#fff;text-decoration:none;box-shadow:inset 0 0 0 1px var(--line);transition:transform .25s var(--ease)}
.sites a:hover{transform:translateY(-3px)}
.sites b{display:block}.sites span{font-size:.82rem;color:var(--muted)}
.credits{max-width:980px;margin:0 auto;padding:2rem 22px 4rem;text-align:center;font-size:.82rem;color:var(--ink2)}
.credits h2{font-family:var(--serif);font-weight:300;letter-spacing:.2em;font-size:2rem;margin:.2rem 0 1rem}
.credits ul{list-style:none;padding:0;margin:0 0 1rem;display:grid;gap:.25rem}
.credits a{color:var(--ink2)}
.textver{max-width:980px;margin:0 auto;padding:0 22px 6rem}
.textver details{background:#fff;border-radius:20px;padding:1rem 1.2rem;box-shadow:inset 0 0 0 1px var(--line)}
.textver summary{cursor:pointer;font-weight:700}
.textver h3{font-size:1.05rem;margin:1.2rem 0 .2rem}
.textver p,.textver li{font-size:.88rem;color:var(--ink2)}

/* ---------- dock & rail ---------- */
.dock{position:fixed;left:50%;transform:translateX(-50%);bottom:max(10px,env(safe-area-inset-bottom));z-index:60;display:flex;gap:2px;padding:5px;border-radius:22px;background:rgba(251,246,239,.86);backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);box-shadow:0 10px 30px -12px rgba(40,30,40,.5),inset 0 0 0 1px rgba(255,255,255,.7);transition:transform .4s var(--ease),opacity .4s}
html.sheet-open .dock{transform:translate(-50%,140%);opacity:0}
.dock a{display:grid;justify-items:center;gap:1px;padding:.35rem .5rem;border-radius:16px;text-decoration:none;font-size:.62rem;font-weight:700;color:var(--ink2);min-width:54px;white-space:nowrap}
.dock a .ic{width:20px;height:20px}
.dock a.on{background:var(--ink);color:#fff}
.rail{display:none}
@media (min-width:1100px){
  .dock{display:none}
  .rail{display:flex;flex-direction:column;gap:.2rem;position:fixed;right:14px;top:50%;transform:translateY(-50%);z-index:50}
  .rail a{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;text-decoration:none;font-size:.72rem;font-weight:700;color:var(--ink2)}
  .rail a span{opacity:0;transform:translateX(6px);transition:opacity .25s,transform .25s;background:rgba(251,246,239,.9);padding:.15rem .5rem;border-radius:99px}
  .rail a:hover span,.rail a.on span{opacity:1;transform:none}
  .rail a i{font-style:normal;font-family:var(--mono);font-size:.6rem;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:rgba(251,246,239,.9);box-shadow:inset 0 0 0 1px var(--line)}
  .rail a.on i{background:var(--ink);color:#fff}
}
@media (max-width:1099px){:root{--dockH:64px}
  .hero-in{padding-bottom:calc(148px + env(safe-area-inset-bottom))}
  .hero-sky{background:linear-gradient(180deg,color-mix(in srgb,var(--sky-top) 45%,transparent) 0%,transparent 22%,rgba(22,14,28,.35) 45%,rgba(22,14,28,.86) 100%)}
  .hero-dots{bottom:calc(132px + env(safe-area-inset-bottom));right:18px}
  .scroll-cue{display:none}
}
@media (max-width:760px){
  .map-box{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
  .map-box:not(.dz) #vmap{width:780px;max-width:none;max-height:none}
  .map-box:after{content:"← 左右滑 →";position:sticky;left:0;display:block;text-align:center;font-family:var(--mono);font-size:.62rem;color:var(--muted);padding:.2rem 0 .4rem}
  html[data-lang="en"] .map-box:after{content:"← swipe →"}
  .map-box.dz:after{display:none}
}
#toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:var(--ink);color:#fff;padding:.6rem 1rem;border-radius:99px;font-size:.88rem;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s;z-index:300}
#toast.on{opacity:1;transform:translate(-50%,0)}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .pink-wrap,.wx-wrap,.plan-wrap,.year-grid,.br-grid{grid-template-columns:1fr}
  #planForm{position:relative;top:0}
  .sheet-panel{top:6vh;width:100%;border-radius:24px 24px 0 0;transform:translateY(102%);overflow:hidden}
  .gal{max-height:46vh}
  .book{grid-template-columns:1fr;justify-items:center;text-align:center}
}
@media (max-width:560px){
  body{font-size:15px}
  .home-pin b{font-size:.62rem}.home-pin small{display:none}
  .live{grid-template-columns:1fr}.live-clock{grid-row:auto;font-size:1.9rem}.live-clock small{display:inline;margin-left:.4rem}
  .qz-res{grid-template-columns:1fr;justify-items:start}.qz-k{width:84px;height:84px;font-size:2.7rem}
  .elp-tab{grid-template-columns:repeat(2,1fr)}
  .pl-list:before{left:48px}.pl-list li{grid-template-columns:40px 1fr;gap:14px}.pl-list time{font-size:.7rem}
  #yearStrip{grid-template-columns:repeat(12,58px)}
  .ch-n{font-size:4.6rem;top:-.4rem}
}
@media (prefers-reduced-motion:reduce){
  *,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .rv,.card{opacity:1;transform:none}
}
