:root{--ink:#18251f;--sage:#6f897b;--moss:#355447;--paper:#f8f7f2;--line:#d8dfd8;--brass:#b9853f;--muted:#5f6c65}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 "DM Sans",sans-serif}.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 max(22px,calc((100vw - 1160px)/2));background:var(--paper)}.brand{color:var(--ink);font:600 23px/1 "Playfair Display",serif;text-decoration:none}.brand span{display:block;margin-top:5px;color:var(--sage);font:600 10px/1 "DM Sans",sans-serif;letter-spacing:1.6px;text-transform:uppercase}.text-button{border:0;background:transparent;color:var(--moss);font:600 14px "DM Sans";cursor:pointer}.hero{min-height:600px;background:linear-gradient(90deg,rgba(18,37,30,.78),rgba(18,37,30,.36) 58%,rgba(18,37,30,.04)),url("../assets/sound-healing-studio-hero.png") center/cover;display:grid;align-items:end;padding:clamp(44px,8vw,112px) max(22px,calc((100vw - 1160px)/2))}.hero-copy{max-width:560px;color:white;padding-bottom:30px}.eyebrow{margin:0 0 12px;color:var(--brass);font-size:12px;font-weight:700;letter-spacing:1.6px;text-transform:uppercase}.hero h1,h2,h3{font-family:"Playfair Display",serif;font-weight:600}.hero h1{font-size:clamp(44px,6vw,75px);line-height:1.03;margin:0 0 20px}.hero p:not(.eyebrow){font-size:18px;max-width:470px;margin:0 0 30px}.primary-button,.secondary-button{min-height:46px;border-radius:4px;padding:0 20px;font:600 14px "DM Sans";cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.primary-button{border:1px solid var(--brass);background:var(--brass);color:#fff}.primary-button:disabled,.secondary-button:disabled{opacity:.55;cursor:not-allowed}.secondary-button{border:1px solid var(--moss);background:transparent;color:var(--moss)}.flow,.sessions,.how{padding:86px max(22px,calc((100vw - 930px)/2))}.section-heading{max-width:570px}.section-heading h2,.how h2{margin:0 0 12px;font-size:clamp(31px,4vw,46px);line-height:1.1}.section-heading>p:not(.eyebrow){margin:0;color:var(--muted)}.phone-form{margin-top:36px;max-width:650px}.phone-form label,.dialog-card label{display:block;margin-bottom:8px;font-size:13px;font-weight:700}.input-row{display:flex;gap:10px}input{height:48px;width:100%;border:1px solid #b9c7bd;border-radius:4px;background:#fff;padding:0 14px;color:var(--ink);font:16px "DM Sans"}input:focus{outline:2px solid #a8bdaf;outline-offset:1px}.form-note{min-height:22px;margin:10px 0 0;color:var(--muted);font-size:13px}.error{color:#a12d28}.account-panel{margin:30px 0 0;padding:22px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:18px}.welcome,.credits{margin:0}.credits{color:var(--muted)}.credits strong{font:600 36px/1 "Playfair Display";color:var(--moss)}.sessions{background:#eef2ed}.session-list{display:grid;gap:12px;margin-top:35px}.session-card{background:#fff;border:1px solid var(--line);border-radius:6px;padding:24px;display:flex;justify-content:space-between;gap:22px}.session-card h3{font-size:24px;margin:2px 0 8px}.session-date{color:var(--sage);font-size:13px;font-weight:700;margin:0}.session-instructor,.spots{margin:0;color:var(--muted)}.session-action{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:12px}.how{background:var(--moss);color:white;display:grid;grid-template-columns:1fr 1fr;gap:80px}.how .eyebrow{color:#d5b47c}.how ol{list-style:none;margin:0;padding:0}.how li{display:grid;grid-template-columns:48px 1fr;gap:15px;padding:17px 0;border-top:1px solid rgba(255,255,255,.2)}.how span{color:#d5b47c;font-weight:700}.hidden{display:none!important}.empty-state{margin-top:30px;color:var(--muted)}dialog{border:0;background:transparent;padding:20px;max-width:540px;width:100%}dialog::backdrop{background:rgba(16,30,24,.62)}.dialog-card{position:relative;background:var(--paper);padding:38px;border-radius:6px;box-shadow:0 18px 50px rgba(0,0,0,.22)}.dialog-card h2{margin:0 0 10px;font-size:32px}.dialog-card>p:not(.eyebrow):not(.form-note){margin:0 0 25px;color:var(--muted)}.dialog-card .primary-button{width:100%;margin-top:22px}.icon-button{position:absolute;right:15px;top:12px;border:0;background:transparent;color:var(--muted);font-size:28px;cursor:pointer}.booking-row{padding:14px 0;border-top:1px solid var(--line);display:grid;gap:3px}.booking-row span{color:var(--sage);font-size:13px;font-weight:700}.booking-row small{color:var(--muted)}@media(max-width:650px){.topbar{height:64px}.hero{min-height:520px}.input-row{display:grid}.input-row .primary-button{width:100%}.session-card{display:grid}.session-action{align-items:flex-start;text-align:left}.how{grid-template-columns:1fr;gap:30px}.flow,.sessions,.how{padding-top:58px;padding-bottom:58px}.dialog-card{padding:32px 24px}.account-panel{align-items:flex-start;flex-direction:column}}
.cancel-link{justify-self:start;border:0;padding:0;background:transparent;color:#9a4c35;font:600 13px "DM Sans";cursor:pointer;text-decoration:underline}
/* Bilingual + buy-classes additions (2026-07-13). CJK fallbacks: DM Sans and
   Playfair have no Chinese glyphs, so the system CJK fonts take over. */
body,input,.text-button,.primary-button,.secondary-button,.cancel-link{font-family:"DM Sans","PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif}
.hero h1,h2,h3,.credits strong{font-family:"Playfair Display","Songti SC","Noto Serif SC",serif}
.topbar-actions{display:flex;align-items:center;gap:18px}
.topbar-actions .text-button{text-decoration:none}
.lang-toggle{border:1px solid var(--line);border-radius:999px;padding:5px 13px;color:var(--muted)}
.how li em{font-style:normal}
.buy-panel{margin-top:30px;padding:26px;background:#fff;border:1px solid var(--line);border-radius:6px;max-width:650px}
.buy-panel h3{margin:0 0 8px;font-size:22px}
.buy-panel p{margin:0 0 18px;color:var(--muted)}
.buy-panel .form-note{margin:0 0 12px}
@media(max-width:650px){.topbar-actions{gap:12px}.topbar-actions .text-button{font-size:13px}}
