@import url("https://fonts.googleapis.com/css2?family=Jost:wght@300;400;500&family=Noto+Sans+SC:wght@300;400;500&display=swap");
:root{
  color-scheme:light;
  --ink:#231F20; --stone:#D3D0C7; --porcelain:#F7F5F1; --white:#FFFFFF;
  --sage:#B8CCC5; --sage-deep:#4E6B63; --grey:#6B6560; --sand:#C9B48F; --sand-text:#7A6745; --blush:#E6CDD1;
  --line:#E2DED6; --stone-soft:#ECEAE4;
  --en:"Jost","Noto Sans SC",system-ui,sans-serif;
  --cn:"Noto Sans SC","Jost",system-ui,sans-serif;
  --capsule:467/570;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
body{margin:0;background:var(--porcelain);color:var(--ink);font-family:var(--en);font-weight:300;font-size:15px;line-height:1.75;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,p,ul,ol{margin:0}
h1,h2,h3,h4{font-weight:300;text-wrap:balance}
ul,ol{padding:0;list-style:none}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
button{font:inherit;color:inherit}
svg.logo{display:block;fill:currentColor;overflow:visible}
:focus-visible{outline:2px solid var(--sage-deep);outline-offset:3px}
.en{font-family:var(--en)}
.caps{font-family:var(--en);text-transform:uppercase;letter-spacing:.24em;font-size:11.5px;font-weight:400}
.muted{color:var(--grey)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* language: data-lang on <html> toggles .l-en / .l-zh spans */
html[data-lang="en"] .l-zh{display:none}
html[data-lang="zh"] .l-en{display:none}

/* buttons: full-radius, one primary (deep sage) per screen */
.btn{display:inline-flex;align-items:center;gap:.6em;font-family:var(--en);font-size:13px;letter-spacing:.1em;padding:13px 28px;border-radius:999px;border:1px solid transparent;cursor:pointer;transition:background .2s,color .2s,border-color .2s;white-space:nowrap}
.btn-p{background:var(--sage-deep);color:#fff}
.btn-p:hover{background:#3f574f}
.btn-s{background:transparent;border-color:var(--ink);color:var(--ink)}
.btn-s:hover{background:var(--ink);color:var(--porcelain)}
.btn-t{padding:2px 0;border-radius:0;border-bottom:1px solid var(--ink)}
.btn-t:hover{color:var(--sage-deep);border-color:var(--sage-deep)}
.pill{display:inline-block;font-family:var(--en);font-size:11.5px;padding:3px 12px;border-radius:999px;letter-spacing:.04em}
.pill.sage{background:var(--sage)} .pill.sand{background:var(--sand)} .pill.blush{background:var(--blush)} .pill.line{border:1px solid var(--line);background:var(--porcelain)}

/* capsule: the only graphic shape in the system */
.capsule{aspect-ratio:var(--capsule);border-radius:999px;overflow:hidden;position:relative}
.capsule img{width:100%;height:100%;object-fit:cover}
.capsule.sage{background:linear-gradient(170deg,#DCE5E1,#B8CCC5 60%,#A9BDB6)}
.capsule.stone{background:linear-gradient(170deg,#E9E5DD,#D3D0C7)}
.capsule.line{border:1px solid var(--ink);background:none}
.sand-rule{display:block;width:48px;height:1px;background:var(--sand)}

/* line icons: 24 grid, 1.25 stroke, round caps, no fill */
.ico{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* language switch */
.lang{display:inline-flex;font-family:var(--en);font-size:12px;letter-spacing:.14em;border:1px solid var(--line);border-radius:999px;overflow:hidden}
.lang button{background:none;border:0;padding:5px 12px;cursor:pointer;color:var(--grey)}
.lang button[aria-pressed="true"]{background:var(--ink);color:var(--porcelain)}

/* accordion (FAQ) */
.acc details{border-bottom:1px solid var(--line)}
.acc summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:20px;align-items:center;padding:20px 0;font-size:16px;font-weight:400}
.acc summary::-webkit-details-marker{display:none}
.acc summary::after{content:"+";font-family:var(--en);font-size:22px;font-weight:300;color:var(--grey);transition:transform .25s}
.acc details[open] summary::after{transform:rotate(45deg)}
.acc .a{padding:0 0 22px;color:#4a4542;max-width:62ch}

/* scroll reveal */
.rv{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease}
.rv.in{opacity:1;transform:none}

/* image placeholders (swap for real photography via /public later) */
.ph{background:linear-gradient(160deg,#C9D7D2,#B8CCC5 60%,#A9BDB6);position:relative;overflow:hidden}
.ph.warm{background:linear-gradient(180deg,#E9E5DD,#D3D0C7)}
.ph>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
