:root{
    --bg:#F7F1E8; --ink:#2B2420; --ink-soft:#6E6053; --ink-faint:#A69684; --line:#E5DAC9; --accent:#8B6A4F;
    box-sizing:border-box;
    padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px);
  }
  html{scroll-padding-top:env(safe-area-inset-top,0px);}
  *{box-sizing:border-box;}
  body{margin:0; background:var(--bg); color:var(--ink); font-family:'Work Sans',sans-serif; font-weight:300; line-height:1.7; -webkit-font-smoothing:antialiased;}
  h1,h2,h3{font-family:'Fraunces',serif; font-weight:440; margin:0; letter-spacing:-0.01em; color:var(--ink);}
  a{color:inherit;}
  .wrap{max-width:1180px; margin:0 auto; padding:0 32px;}

  header{position:sticky; top:env(safe-area-inset-top,0px); z-index:10; background:rgba(247,241,232,0.92); backdrop-filter:saturate(180%) blur(6px); border-bottom:1px solid var(--line);}
  .nav{display:flex; justify-content:space-between; align-items:center; padding:20px 32px;}
  .brand img{height:30px; width:auto; display:block;}
  .tabs{list-style:none; display:flex; gap:36px; margin:0; padding:0;}
  .tabs button{
    background:none; border:none; font-family:'Work Sans',sans-serif; font-size:0.78rem; letter-spacing:0.14em;
    text-transform:uppercase; color:var(--ink-faint); padding:4px 0; cursor:pointer; position:relative;
    transition:color .25s ease;
  }
  .tabs button::after{
    content:''; position:absolute; left:0; right:0; bottom:-4px; height:1px; background:var(--ink);
    transform:scaleX(0); transform-origin:left; transition:transform .3s ease;
  }
  .tabs button:hover{color:var(--ink);}
  .tabs button.active{color:var(--ink);}
  .tabs button.active::after{transform:scaleX(1);}
  .book-btn{
    border:1px solid var(--ink); color:var(--ink); padding:9px 20px; border-radius:0; text-decoration:none;
    font-size:0.72rem; letter-spacing:0.12em; text-transform:uppercase; white-space:nowrap; transition:background .25s ease, color .25s ease;
  }
  .book-btn:hover{background:var(--ink); color:var(--bg);}
  button.book-btn{background:none; font-family:'Work Sans',sans-serif; cursor:pointer; display:inline-block;}
  .hamburger{display:none; flex-direction:column; justify-content:center; gap:5px; width:32px; height:32px; background:none; border:none; cursor:pointer; padding:0;}
  .hamburger span{display:block; width:100%; height:1px; background:var(--ink);}

  .menu-overlay{
    display:none; position:fixed; inset:0; z-index:100; background:var(--bg);
    flex-direction:column; padding:32px; padding-top:calc(24px + env(safe-area-inset-top,0px));
    overflow-y:auto;
  }
  .menu-overlay.open{display:flex;}
  .menu-close{position:absolute; top:calc(24px + env(safe-area-inset-top,0px)); right:28px; background:none; border:none; font-size:1.8rem; line-height:1; color:var(--ink); cursor:pointer;}
  .menu-links{display:flex; flex-direction:column; gap:6px; margin-top:56px;}
  .menu-links button{
    background:none; border:none; text-align:left; font-family:'Fraunces',serif; font-size:1.8rem; font-weight:440;
    color:var(--ink); padding:14px 0; border-bottom:1px solid var(--line); cursor:pointer;
  }
  .menu-links button.active{color:var(--ink-soft);}
  .menu-section{margin-top:40px;}
  .menu-label{font-size:0.72rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--ink-faint); display:block; margin-bottom:12px;}
  .menu-section p{margin:0 0 8px; color:var(--ink-soft); font-size:0.98rem;}
  .menu-section a{color:var(--ink-soft);}
  .menu-domain{
    margin-top:auto; align-self:center; border:1px solid var(--line); border-radius:30px; padding:12px 28px;
    text-decoration:none; color:var(--ink); font-size:0.9rem; margin-top:48px;
  }

  main{min-height:60vh;}
  .panel{display:none; padding:96px 0; animation:fadein .5s ease;}
  .panel.active{display:block;}
  @keyframes fadein{from{opacity:0; transform:translateY(6px);} to{opacity:1; transform:translateY(0);}}

  .hero{text-align:center; padding-top:40px; padding-bottom:8px;}
  .hero-logo{max-width:340px; width:78%; height:auto; margin:0 auto 44px; display:block;}
  .hero .eyebrow{font-size:0.72rem; letter-spacing:0.22em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:22px;}
  .hero-title{font-family:'Fraunces',serif; font-weight:440; font-size:2.6rem; line-height:1.25; margin:0 0 26px;}
  .hero-sub{max-width:50ch; margin:0 auto 26px; color:var(--ink-soft); font-size:1.05rem; font-weight:400; line-height:1.6;}
  .hero p.lead{max-width:50ch; margin:0 auto; color:var(--ink-soft); font-size:1.2rem; font-weight:300; line-height:1.75;}
  .home-block{max-width:560px; margin:0 auto;}
  .home-block .lead{max-width:52ch; margin-left:auto; margin-right:auto;}
  .hero-split{display:flex; align-items:center; gap:56px; text-align:left; padding-top:24px; padding-bottom:16px;}
  .hero-split .hero-text{flex:1 1 54%; min-width:0;}
  .hero-split .hero-text .eyebrow{font-size:0.72rem; letter-spacing:0.22em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:18px;}
  .hero-split .hero-title{font-size:2.4rem; line-height:1.22; margin:0 0 22px;}
  .hero-split .hero-sub{color:var(--ink-soft); font-size:1rem; font-weight:400; line-height:1.6; margin:0 0 20px;}
  .hero-split .lead{color:var(--ink-soft); font-size:1.05rem; font-weight:300; line-height:1.75; margin:0; max-width:46ch;}
  .hero-photo-side{flex:1 1 46%; min-width:0;}
  .hero-photo-side img{width:100%; height:100%; max-height:500px; object-fit:cover; display:block; border-radius:22px; filter:grayscale(100%) contrast(94%) brightness(103%);}
  @media (max-width:820px){
    .hero-split{flex-direction:column; text-align:center; padding-top:12px;}
    .hero-split .hero-text{order:1;}
    .hero-photo-side{order:0; width:100%;}
    .hero-photo-side img{max-height:420px; border-radius:18px;}
    .hero-split .lead{margin-left:auto; margin-right:auto;}
  }

  .gallery-row{display:grid; grid-template-columns:repeat(3,1fr); gap:14px; max-width:960px; margin:40px auto 0;}
  .gallery-row img{width:100%; height:280px; object-fit:cover; display:block; border-radius:14px; filter:grayscale(100%) contrast(94%) brightness(103%);}
  @media (max-width:700px){
    .gallery-row{grid-template-columns:1fr; gap:12px;}
    .gallery-row img{height:320px;}
  }

  .classes-hero-photo{width:100vw; position:relative; left:50%; margin-left:-50vw; margin-bottom:56px; overflow:hidden;}
  .classes-hero-img{width:100%; height:440px; object-fit:cover; object-position:center center; display:block; filter:grayscale(100%) contrast(94%) brightness(103%);}
  .classes-list{max-width:640px; margin:0 auto;}
  .format-item{padding:30px 0; border-top:1px solid var(--line);}
  .format-item:first-child{border-top:none; padding-top:0;}
  .format-item h3{font-size:1.3rem; font-weight:440; margin:0 0 8px;}
  .format-item .desc{color:var(--ink-soft); font-size:0.93rem; max-width:52ch; margin:0;}
  @media (max-width:600px){ .classes-hero-img{height:300px;} }

  .hero-full{min-height:76vh; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:32px 0 24px;}
  .hero-full-logo{max-width:560px; width:82%; height:auto; margin:0 auto; display:block;}
  .hero-full-ctas{display:flex; gap:16px; margin-top:40px; flex-wrap:wrap; justify-content:center;}
  .hero-cta-primary, .hero-cta-secondary{
    font-family:'Work Sans',sans-serif; font-size:0.74rem; letter-spacing:0.12em; text-transform:uppercase;
    padding:14px 30px; cursor:pointer; transition:background .25s ease, color .25s ease, opacity .25s ease; white-space:nowrap;
  }
  .hero-cta-primary{background:var(--ink); color:var(--bg); border:1px solid var(--ink);}
  .hero-cta-primary:hover{opacity:0.85;}
  .hero-cta-secondary{background:none; color:var(--ink); border:1px solid var(--ink);}
  .hero-cta-secondary:hover{background:var(--ink); color:var(--bg);}
  .scroll-cue{margin-top:56px; display:flex; justify-content:center;}
  .scroll-cue span{width:1px; height:44px; background:linear-gradient(to bottom, var(--ink-faint), transparent); display:block; animation:scrollcue 2.2s ease-in-out infinite;}
  @keyframes scrollcue{0%{opacity:0.2; transform:translateY(-4px);} 50%{opacity:1; transform:translateY(6px);} 100%{opacity:0.2; transform:translateY(-4px);}}
  @media (max-width:600px){
    .hero-full{min-height:66vh;}
    .hero-full-logo{width:90%;}
    .hero-cta-primary, .hero-cta-secondary{padding:13px 22px; font-size:0.7rem;}
  }

  .founder-block{display:flex; align-items:center; gap:36px; margin:48px 0; padding-top:40px; border-top:1px solid var(--line);}
  .founder-avatar{width:240px; height:240px; border-radius:50%; object-fit:cover; flex:none;}
  .founder-text h3{font-size:1.5rem; margin-bottom:8px; letter-spacing:0.02em;}
  .founder-role{font-size:0.82rem; letter-spacing:0.04em; color:var(--ink-faint); margin:0 0 16px; line-height:1.5; text-transform:uppercase;}
  .founder-bio{font-size:0.95rem; color:var(--ink-soft); margin:0 0 12px; max-width:52ch;}
  .founder-tagline{font-family:'Fraunces',serif; font-size:1.05rem; font-weight:440; color:var(--ink); margin:16px 0 0; font-style:italic;}
  @media (max-width:640px){
    .founder-block{flex-direction:column; text-align:center; gap:22px;}
    .founder-avatar{width:200px; height:200px;}
    .founder-bio, .founder-tagline{margin-left:auto; margin-right:auto;}
  }

  .transit-info{display:flex; gap:40px; margin-top:22px; flex-wrap:wrap;}
  .transit-info strong{display:block; font-size:0.78rem; letter-spacing:0.06em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:6px;}
  .transit-info p{margin:0; font-size:0.92rem; color:var(--ink-soft);}

  .partners-block{max-width:640px; margin:56px auto 0; border-top:1px solid var(--line); padding-top:40px; text-align:center;}
  .partners-intro{color:var(--ink-soft); font-size:0.95rem; max-width:48ch; margin:0 auto;}
  .partner-chips{display:flex; flex-wrap:wrap; gap:12px; justify-content:center; margin-top:22px;}
  .partner-chip{border:1px solid var(--line); padding:10px 22px; font-size:0.78rem; letter-spacing:0.04em; border-radius:30px; color:var(--ink-soft);}

  .price-buy{display:flex; flex-direction:column; align-items:flex-end; gap:10px; flex:none;}
  .price-buy .price{white-space:nowrap;}
  .price-buy-btn{font-size:0.68rem; letter-spacing:0.1em; text-transform:uppercase; border:1px solid var(--ink); padding:8px 16px; text-decoration:none; color:var(--ink); white-space:nowrap; transition:background .2s ease, color .2s ease;}
  .price-buy-btn:hover{background:var(--ink); color:var(--bg);}
  @media (max-width:760px){
    .price-card{align-items:flex-start;}
    .price-buy{flex-direction:row; align-items:center; justify-content:space-between; width:100%; margin-top:14px;}
  }
  .closing-line{margin-top:22px; font-family:'Work Sans',sans-serif; font-size:0.85rem; font-weight:400; color:var(--ink-soft); font-style:normal; letter-spacing:0.02em;}

  .rule{width:36px; height:1px; background:var(--ink); margin:88px auto 0;}

  .section-head{text-align:center; max-width:640px; margin:0 auto 56px;}
  .section-title{font-size:2rem; margin-bottom:14px;}
  .section-sub{color:var(--ink-soft); font-size:1rem;}

  .overview-list{max-width:680px; margin:0 auto;}
  .overview-item{display:flex; align-items:baseline; gap:28px; padding:26px 0; border-top:1px solid var(--line);}
  .overview-item:last-child{border-bottom:1px solid var(--line);}
  .overview-item .idx{font-family:'Fraunces',serif; font-size:1rem; color:var(--ink-faint); width:24px; flex:none;}
  .overview-item h3{font-size:1.25rem; font-weight:440; flex:none; width:190px;}
  .overview-item p{margin:0; color:var(--ink-soft); font-size:0.94rem;}

  .classes-grid{max-width:640px; margin:0 auto; display:grid; grid-template-columns:1fr; gap:44px;}
  .class-card{padding-top:36px; border-top:1px solid var(--line);}
  .class-card:first-child{border-top:none; padding-top:0;}
  .class-photo-band{width:100vw; position:relative; left:50%; margin-left:-50vw; margin-bottom:32px; overflow:hidden;}
  .class-photo-band::before, .class-photo-band::after{content:''; position:absolute; left:0; right:0; height:64px; pointer-events:none; z-index:1;}
  .class-photo-band::before{top:0; background:linear-gradient(to bottom, var(--bg), rgba(247,241,232,0));}
  .class-photo-band::after{bottom:0; background:linear-gradient(to top, var(--bg), rgba(247,241,232,0));}
  .class-card-img{width:100%; height:460px; object-fit:cover; object-position:center; display:block; filter:grayscale(100%) contrast(94%) brightness(103%);}
  .class-card h3{font-size:1.3rem; font-weight:440; margin:0 0 8px;}
  .class-card .desc{color:var(--ink-soft); font-size:0.93rem; max-width:52ch; margin:0;}
  .class-row-meta{display:flex; align-items:center; gap:12px; margin-top:14px;}
  .class-row-meta .dur{color:var(--ink-faint); font-size:0.82rem; letter-spacing:0.05em;}
  .class-row-meta .lvl{font-size:0.7rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--ink-soft); border:1px solid var(--line); padding:5px 12px;}
  .class-feature-tag{font-size:0.72rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--ink-faint); display:block; margin-bottom:10px;}
  .price-note{color:var(--ink-faint); font-size:0.82rem; text-align:center; margin-top:24px; font-style:italic;}

  .studio-grid{max-width:720px; margin:0 auto; display:grid; grid-template-columns:1fr; gap:0;}
  .studio-grid p{color:var(--ink-soft); font-size:1.05rem; margin:0 0 26px; max-width:56ch;}
  .studio-grid p.pull{font-family:'Fraunces',serif; font-size:1.4rem; color:var(--ink); font-weight:340; line-height:1.5; margin:44px 0; padding-left:22px; border-left:1px solid var(--ink);}
  .studio-contact{margin-top:12px; font-size:0.94rem; color:var(--ink-soft);}
  .studio-contact strong{color:var(--ink); font-weight:500;}

  .quote-block{max-width:520px; margin:72px auto 0; text-align:center; border-top:1px solid var(--line); padding-top:48px;}
  .quote-block p{font-family:'Fraunces',serif; font-size:1.4rem; font-weight:340; line-height:1.5; margin:0; color:var(--ink);}
  .quote-block em{font-style:italic;}

  .price-label{display:block; font-size:0.68rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:10px;}

  .price-list{max-width:680px; margin:0 auto;}
  .price-card{padding:34px 0; border-top:1px solid var(--line); display:flex; justify-content:space-between; align-items:flex-start; gap:24px;}
  .price-list .price-card:last-of-type{border-bottom:1px solid var(--line);}
  .price-card h3{font-size:1.2rem; margin-bottom:8px; font-weight:440;}
  .price-card p{margin:0; color:var(--ink-soft); font-size:0.92rem; max-width:42ch;}
  .price-card .price{font-family:'Fraunces',serif; font-size:1.5rem; white-space:nowrap; font-weight:400;}

  .booking-cta{max-width:560px; margin:64px auto 0; text-align:center; border-top:1px solid var(--line); padding-top:56px;}
  .booking-cta h3{font-size:1.5rem; margin-bottom:14px; font-weight:440;}
  .booking-cta p{color:var(--ink-soft); max-width:42ch; margin:0 auto 28px; font-size:0.98rem;}
  .booking-cta a{
    display:inline-block; border:1px solid var(--ink); color:var(--ink); padding:13px 32px; text-decoration:none;
    font-size:0.78rem; letter-spacing:0.12em; text-transform:uppercase; transition:background .25s ease, color .25s ease;
  }
  .booking-cta a:hover{background:var(--ink); color:var(--bg);}
  .via-note{display:block; margin-top:16px; font-size:0.78rem; color:var(--ink-faint); font-style:italic;}

  .location-photo{margin-top:48px;}
  .location-photo img{width:100%; height:320px; object-fit:cover; display:block; border-radius:16px;}
  .map-link{display:inline-block; margin-top:18px; font-size:0.82rem; letter-spacing:0.04em; text-decoration:none; color:var(--ink-soft); border-bottom:1px solid var(--line); padding-bottom:2px; transition:color .2s, border-color .2s;}
  .map-link:hover{color:var(--ink); border-color:var(--ink);}
  @media (max-width:600px){ .location-photo img{height:240px; border-radius:12px;} }

  .contact-form-block{margin-top:64px; border-top:1px solid var(--line); padding-top:48px;}
  .contact-form-block h3{font-size:1.3rem; font-weight:440; margin-bottom:10px;}
  .form-intro{color:var(--ink-soft); font-size:0.94rem; margin:0 0 28px; max-width:44ch;}
  #contact-form{display:flex; flex-direction:column; gap:20px; max-width:480px;}
  #contact-form label{display:flex; flex-direction:column; gap:8px; font-size:0.78rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--ink-faint);}
  #contact-form input, #contact-form textarea{
    font-family:'Work Sans',sans-serif; font-size:0.98rem; font-weight:300; color:var(--ink);
    border:none; border-bottom:1px solid var(--line); padding:8px 2px; background:transparent; outline:none;
    transition:border-color .2s;
  }
  #contact-form input:focus, #contact-form textarea:focus{border-color:var(--ink);}
  #contact-form textarea{resize:vertical;}
  #contact-form button{
    align-self:flex-start; margin-top:8px; border:1px solid var(--ink); background:var(--ink); color:var(--bg);
    padding:12px 28px; font-size:0.78rem; letter-spacing:0.12em; text-transform:uppercase; cursor:pointer;
    transition:background .25s ease, color .25s ease;
  }
  #contact-form button:hover{background:var(--bg); color:var(--ink);}
  .form-status{font-size:0.85rem; color:var(--ink-soft); margin:4px 0 0; min-height:1.2em;}

  footer{border-top:1px solid var(--line); padding:40px 0; font-size:0.76rem; letter-spacing:0.04em; color:var(--ink-faint); text-transform:uppercase;}
  footer .wrap{display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px;}
  .footer-who{display:flex; flex-direction:column; gap:4px; text-transform:none; letter-spacing:0;}
  .footer-name{font-family:'Fraunces',serif; font-size:1rem; color:var(--ink); letter-spacing:-0.01em; text-transform:none;}
  .footer-meta{display:flex; flex-direction:column; gap:4px; text-align:right;}
  @media (max-width:500px){ .footer-meta{text-align:left;} }

  @media (max-width:760px){
    .tabs{display:none;}
    .hamburger{display:flex;}
    .book-btn{padding:8px 14px; font-size:0.68rem;}
    .nav{padding-bottom:14px;}
    .overview-item{flex-wrap:wrap;}
    .overview-item h3{width:auto;}
    .class-card-img{height:280px;}
    .class-photo-band::before, .class-photo-band::after{height:40px;}
    .studio-grid p.pull{font-size:1.2rem;}
    .price-card{flex-direction:column;}
  }
