/* CURVE STUDIO — editorial, quiet luxury.
   Layout: ivory ground, hairline rules, generous whitespace, split hero, arch-topped imagery echoing the studio. */
:root{
  --ivory:#F6F2EC;      /* page ground */
  --bone:#EDE6DC;       /* soft band */
  --sand:#D9CCBC;       /* hairline accents */
  --taupe:#8B7B6E;      /* secondary text */
  --cocoa:#5A4D44;      /* brand mid */
  --espresso:#2E2621;   /* brand dark */
  --ink:#231D19;        /* running text */
  --beige:#EADFD1;      /* text on dark */
  --line:rgba(46,38,33,.16);
  --line-light:rgba(234,223,209,.28);
  --display:"Cormorant Garamond","Cormorant",Garamond,"Times New Roman",serif;
  --ui:"Jost","Helvetica Neue",Helvetica,Arial,sans-serif;
  --gutter:clamp(20px,5vw,72px);
  --max:1320px;
  --radius:6px;         /* subtle, consistent image rounding */
  --ease:cubic-bezier(.2,.7,.2,1);
  color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ivory);color:var(--ink);font-family:var(--ui);font-weight:300;font-size:16.5px;line-height:1.7;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
p{margin:0}
h1,h2,h3{font-family:var(--display);font-weight:300;margin:0;line-height:1.02;letter-spacing:-.005em;text-wrap:balance}
em{font-style:italic}
.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}
.label{font-family:var(--ui);font-size:.68rem;font-weight:400;letter-spacing:.28em;text-transform:uppercase}
.muted{color:var(--taupe)}
.rule{height:1px;background:var(--line);border:0;margin:0}
:focus-visible{outline:1px solid var(--cocoa);outline-offset:4px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}

/* links & buttons */
.btn{display:inline-flex;align-items:center;gap:14px;font-family:var(--ui);font-size:.7rem;font-weight:400;letter-spacing:.26em;text-transform:uppercase;padding:17px 30px;border:1px solid currentColor;transition:background .4s var(--ease),color .4s var(--ease),border-color .4s var(--ease)}
.btn--dark{background:var(--espresso);color:var(--beige);border-color:var(--espresso)}
.btn--dark:hover{background:transparent;color:var(--espresso)}
.btn--ghost:hover{background:var(--espresso);color:var(--beige);border-color:var(--espresso)}
.btn--light{color:var(--beige);border-color:var(--line-light)}
.btn--light:hover{background:var(--beige);color:var(--espresso);border-color:var(--beige)}
.link{display:inline-flex;align-items:center;gap:14px;font-size:.7rem;font-weight:400;letter-spacing:.26em;text-transform:uppercase;padding-bottom:6px;border-bottom:1px solid currentColor;transition:gap .4s var(--ease)}
.link:hover{gap:22px}
.arrow{display:inline-block;width:28px;height:1px;background:currentColor;position:relative}
.arrow::after{content:"";position:absolute;right:0;top:-3px;width:7px;height:7px;border-top:1px solid currentColor;border-right:1px solid currentColor;transform:rotate(45deg)}

/* header */
.site-header{position:sticky;top:env(safe-area-inset-top,0px);z-index:50;background:rgba(246,242,236,.92);backdrop-filter:saturate(1.2) blur(10px);-webkit-backdrop-filter:saturate(1.2) blur(10px);border-bottom:1px solid var(--line)}
.site-header .bar{display:flex;align-items:center;justify-content:space-between;gap:24px;height:84px}
.brand img{height:34px;width:auto}
.nav{display:flex;align-items:center;gap:clamp(18px,2.6vw,40px)}
.nav a:not(.btn){font-size:.68rem;font-weight:400;letter-spacing:.26em;text-transform:uppercase;color:var(--cocoa);position:relative;padding-block:6px}
.nav a:not(.btn)::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:currentColor;transition:right .4s var(--ease)}
.nav a:not(.btn):hover::after,.nav a[aria-current="page"]::after{right:0}
.nav .btn{padding:13px 22px}
.menu-toggle{display:none;background:none;border:0;padding:10px 0;cursor:pointer;color:var(--espresso);font-family:var(--ui);font-size:.68rem;letter-spacing:.26em;text-transform:uppercase}
@media (max-width:920px){
  .menu-toggle{display:block}
  .nav{position:fixed;inset:84px 0 auto 0;flex-direction:column;align-items:flex-start;gap:22px;background:var(--ivory);padding:28px var(--gutter) 36px;border-bottom:1px solid var(--line);transform:translateY(-8px);opacity:0;pointer-events:none;transition:opacity .35s var(--ease),transform .35s var(--ease)}
  .nav.is-open{opacity:1;transform:none;pointer-events:auto}
  .nav a:not(.btn){font-size:.8rem}
}

/* hero */
.hero{padding-block:clamp(36px,6vw,80px) clamp(64px,8vw,110px)}
.hero .grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(36px,6vw,96px);align-items:end}
.hero h1{font-size:clamp(3.2rem,7.4vw,7rem);color:var(--espresso)}
.hero h1 em{color:var(--cocoa)}
.hero .copy{display:grid;gap:34px;padding-bottom:clamp(0px,3vw,40px)}
.hero .lede{font-family:var(--display);font-size:clamp(1.25rem,1.8vw,1.55rem);line-height:1.45;color:var(--cocoa);max-width:30ch}
.hero .actions{display:flex;flex-wrap:wrap;gap:22px 30px;align-items:center}
.hero figure{margin:0;position:relative}
.hero figure img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 35%;border-radius:var(--radius)}
.hero figcaption{position:absolute;left:-1px;bottom:28px;transform:translateX(-50%) rotate(-90deg);transform-origin:center;white-space:nowrap;color:var(--taupe)}
@media (max-width:820px){.hero .grid{grid-template-columns:1fr}.hero figure{order:-1}.hero figure img{aspect-ratio:4/4.4}.hero figcaption{display:none}}

/* strip */
.strip{border-block:1px solid var(--line)}
.strip p{padding:22px 0;text-align:center;color:var(--cocoa);max-width:none;line-height:2.2}
.strip span{margin-inline:clamp(10px,2.4vw,28px);color:var(--sand)}

/* section heads */
.section{padding-block:clamp(84px,11vw,160px)}
.head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,6vw,96px);align-items:end;margin-bottom:clamp(44px,6vw,80px)}
.head h2{font-size:clamp(2.4rem,4.8vw,4.2rem);color:var(--espresso)}
.head p{color:var(--cocoa);max-width:52ch}
.head .label{display:block;margin-bottom:22px;color:var(--taupe)}
@media (max-width:820px){.head{grid-template-columns:1fr}}

/* statement */
.statement{text-align:center}
.statement h2{font-size:clamp(2.6rem,6vw,5.4rem);color:var(--espresso)}
.statement h2 em{color:var(--cocoa)}
.statement .cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(28px,5vw,80px);max-width:960px;margin:clamp(40px,5vw,64px) auto 0;text-align:left;color:var(--cocoa)}
@media (max-width:720px){.statement .cols{grid-template-columns:1fr}}

/* classes */
.classes .grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,2.6vw,40px)}
.class-card{display:grid;gap:26px;align-content:start}
.class-card .media{overflow:hidden;border-radius:var(--radius);background:var(--bone)}
.class-card img{width:100%;aspect-ratio:3/4;object-fit:cover;transition:transform 1.4s var(--ease)}
.class-card:hover img{transform:scale(1.035)}
.class-card .meta{display:flex;justify-content:space-between;gap:12px;color:var(--taupe);padding-bottom:16px;border-bottom:1px solid var(--line)}
.class-card h3{font-size:clamp(1.9rem,2.5vw,2.4rem);color:var(--espresso)}
.class-card p{color:var(--cocoa);font-size:.95rem}
@media (max-width:900px){.classes .grid{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.classes .grid{grid-template-columns:1fr}}

/* method band */
.method{position:relative;color:var(--beige);background:var(--espresso);overflow:hidden}
.method .grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:min(92vh,820px)}
.method .img{position:relative}
.method .img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.method .txt{padding:clamp(64px,9vw,140px) clamp(28px,6vw,110px);display:grid;gap:30px;align-content:center}
.method h2{font-size:clamp(2.4rem,4.6vw,4.2rem);color:var(--beige)}
.method h2 em{color:var(--sand)}
.method p{color:var(--beige);opacity:.86;max-width:48ch}
.method .label{color:var(--sand)}
@media (max-width:820px){.method .grid{grid-template-columns:1fr}.method .img{min-height:60vh}}

/* schedule / bsport */
.bsport-frame{border-top:1px solid var(--line);padding-top:clamp(28px,4vw,48px);min-height:320px}
.bsport-fallback{display:none;text-align:center;padding:48px 20px;border:1px solid var(--line);border-radius:var(--radius);color:var(--cocoa)}
.bsport-fallback p{margin-bottom:24px;font-family:var(--display);font-size:1.4rem}
.bsport-frame.is-fallback .bsport-fallback{display:block}

/* offers */
.offers{background:var(--bone)}
.offers .grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line)}
.offer{padding:clamp(34px,4vw,56px) clamp(22px,3vw,44px) clamp(34px,4vw,48px);display:grid;gap:18px;align-content:start}
.offer+.offer{border-left:1px solid var(--line)}
.offer .price{font-family:var(--display);font-weight:300;font-size:clamp(3.2rem,5.4vw,4.8rem);line-height:1;color:var(--espresso);font-variant-numeric:lining-nums}
.offer .price small{font-family:var(--ui);font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--taupe);margin-left:6px}
.offer h3{font-size:1.7rem;color:var(--espresso)}
.offer p{color:var(--cocoa);font-size:.94rem}
.offers .foot{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:18px;border-top:1px solid var(--line);padding-top:32px;margin-top:8px}
@media (max-width:820px){.offers .grid{grid-template-columns:1fr}.offer+.offer{border-left:0;border-top:1px solid var(--line)}}

/* app */
.app{background:var(--espresso);color:var(--beige);overflow:hidden}
.app .grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(36px,6vw,96px);align-items:center}
.app h2{font-size:clamp(2.6rem,5vw,4.6rem);color:var(--beige)}
.app p{color:var(--beige);opacity:.84;max-width:44ch}
.app .copy{display:grid;gap:30px}
.app .label{color:var(--sand)}
.stores{display:flex;flex-wrap:wrap;gap:14px}
.phones{position:relative;display:flex;justify-content:center;align-items:flex-end;gap:0;min-height:440px}
.phones img{width:min(46%,250px);height:auto}
.phones img:first-child{margin-right:-6%;transform:translateY(-36px)}
@media (max-width:820px){.app .grid{grid-template-columns:1fr}.phones{min-height:0}}

/* founder */
.founder figure{margin:0}
.founder img{width:100%;aspect-ratio:16/7;object-fit:cover;filter:grayscale(1) contrast(1.02);border-radius:var(--radius)}
.founder .quote{display:grid;grid-template-columns:minmax(0,.4fr) minmax(0,1fr);gap:clamp(24px,5vw,80px);padding-top:clamp(44px,6vw,80px)}
.founder blockquote{margin:0;font-family:var(--display);font-weight:300;font-style:italic;font-size:clamp(1.9rem,3.6vw,3.2rem);line-height:1.15;color:var(--espresso)}
.founder .by{display:grid;gap:10px;align-content:start;color:var(--taupe)}
.founder .by p{color:var(--cocoa);max-width:30ch}
@media (max-width:720px){.founder .quote{grid-template-columns:1fr}.founder img{aspect-ratio:4/3}}

/* visit */
.visit .grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(36px,6vw,96px);align-items:center}
.visit img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:var(--radius)}
.visit dl{margin:0;display:grid;gap:26px}
.visit dt{color:var(--taupe);margin-bottom:6px}
.visit dd{margin:0;font-family:var(--display);font-size:1.45rem;line-height:1.35;color:var(--espresso)}
.visit dd a{border-bottom:1px solid var(--line)}
.visit dd a:hover{border-color:currentColor}
@media (max-width:820px){.visit .grid{grid-template-columns:1fr}.visit img{aspect-ratio:4/4}}

/* page hero (sub pages) */
.page-hero{position:relative;color:var(--beige);background:var(--espresso)}
.page-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.62}
.page-hero .wrap{position:relative;padding-block:clamp(120px,16vw,220px) clamp(56px,7vw,96px);display:grid;gap:22px}
.page-hero h1{font-size:clamp(3rem,7vw,6.2rem);color:var(--beige)}
.page-hero h1 em{color:var(--sand)}
.page-hero p{max-width:52ch;opacity:.9}

/* price list */
.pricelist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(36px,6vw,96px)}
.pricelist h3{font-size:2rem;color:var(--espresso);margin-bottom:10px}
.prow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 24px;padding:20px 0;border-top:1px solid var(--line);align-items:baseline}
.prow:last-child{border-bottom:1px solid var(--line)}
.prow .n{font-family:var(--display);font-size:1.3rem;color:var(--espresso)}
.prow .v{font-family:var(--display);font-size:1.6rem;color:var(--espresso);font-variant-numeric:lining-nums tabular-nums}
.prow .d{grid-column:1/-1;font-size:.82rem;color:var(--taupe);letter-spacing:.02em}
@media (max-width:820px){.pricelist{grid-template-columns:1fr}}

/* steps */
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line)}
.step{padding:34px clamp(18px,3vw,40px) 10px 0;display:grid;gap:14px}
.step+.step{padding-left:clamp(18px,3vw,40px);border-left:1px solid var(--line)}
.step .num{font-family:var(--display);font-style:italic;font-size:2.4rem;color:var(--sand);line-height:1}
.step h3{font-size:1.6rem;color:var(--espresso)}
.step p{color:var(--cocoa);font-size:.94rem}
@media (max-width:760px){.steps{grid-template-columns:1fr}.step+.step{padding-left:0;border-left:0;border-top:1px solid var(--line)}}

/* footer */
.site-footer{background:var(--ivory);border-top:1px solid var(--line);padding-block:clamp(72px,9vw,120px) 36px}
.site-footer .mark{width:min(720px,100%);margin:0 auto clamp(56px,7vw,90px)}
.fgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:36px}
.fgrid .col{display:grid;gap:10px;align-content:start;font-size:.86rem;color:var(--cocoa)}
.fgrid .col .label{color:var(--taupe);margin-bottom:8px}
.fgrid a:hover{color:var(--espresso);text-decoration:underline;text-underline-offset:4px}
.legal{margin-top:clamp(56px,7vw,90px);padding-top:26px;border-top:1px solid var(--line);display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;color:var(--taupe)}
@media (max-width:820px){.fgrid{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.fgrid{grid-template-columns:1fr}}

/* reveal */
.reveal{opacity:1;transform:none;transition:opacity 1s var(--ease),transform 1s var(--ease)}
.js .reveal.pending{opacity:0;transform:translateY(18px)}

/* gallery */
.gallery .grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(12px,1.6vw,24px);align-items:start}
.gallery figure{margin:0;overflow:hidden;background:var(--bone);border-radius:var(--radius)}
.gallery img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.gallery figure:hover img{transform:scale(1.03)}
.gallery .g1{grid-column:1/6;aspect-ratio:4/5}
.gallery .g2{grid-column:6/9;aspect-ratio:3/4;margin-top:clamp(40px,8vw,120px)}
.gallery .g3{grid-column:9/13;aspect-ratio:4/5}
.gallery .g4{grid-column:2/6;aspect-ratio:3/4}
.gallery .g5{grid-column:7/12;aspect-ratio:4/5;margin-top:-12%}
@media (max-width:760px){.gallery .grid{grid-template-columns:1fr 1fr}.gallery figure{grid-column:auto!important;margin-top:0!important;aspect-ratio:3/4!important}.gallery .g5{display:none}}

/* shop */
.shop .grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(36px,6vw,96px);align-items:center}
.shop img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:var(--radius)}
.shop .copy{display:grid;gap:26px}
.shop h2{font-size:clamp(2.4rem,4.4vw,3.8rem);color:var(--espresso)}
.shop p{color:var(--cocoa);max-width:44ch}
.shop ul{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.shop li{padding:14px 0;border-bottom:1px solid var(--line);font-family:var(--display);font-size:1.3rem;color:var(--espresso)}
@media (max-width:820px){.shop .grid{grid-template-columns:1fr}}

/* full-screen hero (home) */
.brand .logo-light{display:none}
.site-header--over{position:fixed;left:0;right:0;background:transparent;border-bottom-color:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;transition:background .4s var(--ease),border-color .4s var(--ease)}
.site-header--over:not(.is-solid) .brand .logo-dark{display:none}
.site-header--over:not(.is-solid) .brand .logo-light{display:block}
.site-header--over:not(.is-solid) .nav a:not(.btn),.site-header--over:not(.is-solid) .menu-toggle{color:var(--beige)}
.site-header--over:not(.is-solid) .nav .btn{background:transparent;border-color:var(--line-light);color:var(--beige)}
.site-header--over.is-solid{background:rgba(246,242,236,.94);border-bottom-color:var(--line);backdrop-filter:saturate(1.2) blur(10px);-webkit-backdrop-filter:saturate(1.2) blur(10px)}
@media (max-width:920px){.site-header--over .nav.is-open a:not(.btn){color:var(--cocoa)}.site-header--over .nav.is-open .btn{background:var(--espresso);color:var(--beige);border-color:var(--espresso)}}
.hero--full{position:relative;min-height:100vh;min-height:100svh;padding:0;display:flex;align-items:flex-end;background:var(--espresso);color:var(--beige);overflow:hidden}
.hero--full .hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 62%}
.hero--full::after{content:"";position:absolute;inset:0;background:
  linear-gradient(90deg,rgba(35,29,25,.62) 0%,rgba(35,29,25,.38) 38%,rgba(35,29,25,0) 68%),
  linear-gradient(180deg,rgba(35,29,25,.45) 0%,rgba(35,29,25,0) 22%,rgba(35,29,25,0) 55%,rgba(35,29,25,.55) 100%)}
@media (max-width:720px){.hero--full::after{background:linear-gradient(180deg,rgba(35,29,25,.45) 0%,rgba(35,29,25,0) 18%,rgba(35,29,25,.15) 40%,rgba(35,29,25,.82) 78%,rgba(35,29,25,.9) 100%)}}
.hero--full .hero-inner{position:relative;z-index:1;width:100%;padding-block:140px clamp(48px,7vw,96px);display:flex;justify-content:space-between;align-items:flex-end;gap:32px}
.hero--full .copy{display:grid;gap:28px;max-width:760px}
.hero--full h1{font-size:clamp(3.2rem,8vw,7.4rem);color:var(--beige);line-height:.98}
.hero--full h1 em{color:var(--sand)}
.hero--full .lede{font-family:var(--display);font-size:clamp(1.2rem,1.7vw,1.5rem);line-height:1.45;color:var(--beige);opacity:.92;max-width:34ch}
.hero--full .label{color:var(--beige);opacity:.85}
.hero--full .actions{display:flex;flex-wrap:wrap;gap:20px 30px;align-items:center}
.hero--full .link{color:var(--beige)}
.btn--cream{background:var(--beige);color:var(--espresso);border-color:var(--beige)}
.btn--cream:hover{background:transparent;color:var(--beige)}
.scroll-cue{writing-mode:vertical-rl;letter-spacing:.3em;opacity:.7;padding-bottom:6px;border-right:1px solid var(--line-light);padding-right:10px}
@media (max-width:720px){.scroll-cue{display:none}.hero--full .hero-bg{object-position:50% 50%}}

/* visit (simple, no photo) */
.visit-head{text-align:center;display:grid;gap:18px;margin-bottom:clamp(40px,5vw,64px)}
.visit-head h2{font-size:clamp(2.8rem,5.6vw,4.8rem);color:var(--espresso)}
.visit-head h2 em{color:var(--cocoa)}
.visit-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:0}
.visit-grid>div{padding:34px clamp(16px,3vw,40px);display:grid;gap:10px;align-content:start;text-align:center;justify-items:center}
.visit-grid>div+div{border-left:1px solid var(--line)}
.visit-grid dt{color:var(--taupe)}
.visit-grid dd{margin:0;font-family:var(--display);font-size:1.4rem;line-height:1.4;color:var(--espresso);overflow-wrap:anywhere}
.visit-grid dd a{border-bottom:1px solid var(--line)}
.visit-grid dd a:hover{border-color:currentColor}
.visit-grid .link{margin-top:8px}
@media (max-width:760px){.visit-grid{grid-template-columns:1fr}.visit-grid>div+div{border-left:0;border-top:1px solid var(--line)}}

/* footer = contact (no duplicate info) */

.foot-nav{display:flex;flex-wrap:wrap;gap:10px 26px}
.foot-nav a:hover{color:var(--espresso)}

.visit-simple{padding-top:0;padding-bottom:clamp(56px,7vw,96px);text-align:center}
.visit-simple .wrap{display:grid;gap:18px;justify-items:center}
.visit-simple h2{font-size:clamp(2.8rem,5.6vw,4.8rem);color:var(--espresso)}
.visit-simple h2 em{color:var(--cocoa)}

/* Bsport shop blocks */
.shop-block{display:grid;gap:20px}
.shop-block+.shop-block{margin-top:clamp(56px,7vw,96px)}
.shop-block-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap}
.shop-block-head h3{font-size:clamp(1.8rem,2.6vw,2.4rem);color:var(--espresso)}
.bsport-mount{min-height:120px}
.page-hero .btn--light{color:var(--beige)}
