:root{
  --ink:#1c211b;
  --cream:#f4f0e7;
  --paper:#fbf8f1;
  --sage:#c6ccb8;
  --red:#9b3b2f;
  --line:rgba(28,33,27,.16);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"DM Sans",sans-serif}
a{color:inherit;text-decoration:none}
.site-header{position:sticky;top:0;z-index:20;height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 4vw;background:rgba(251,248,241,.88);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.brand{font-size:13px;font-weight:600;letter-spacing:.13em}.brand span{font-family:"Newsreader",serif;font-size:24px;font-weight:500;letter-spacing:.02em;margin-left:5px}
nav{display:flex;gap:28px;align-items:center;font-size:13px}nav a{opacity:.8}.nav-book{border-bottom:1px solid;padding-bottom:2px;opacity:1}
.menu{display:none;background:none;border:0;font:inherit}
.hero{min-height:calc(100vh - 78px);display:grid;grid-template-columns:1.03fr .97fr;padding:5vw 4vw 4vw;gap:5vw;align-items:center}
.eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:11px;font-weight:600;margin:0 0 22px}
.hero h1,.section h2,.modal h2{font-family:"Newsreader",serif;font-weight:400;letter-spacing:-.035em}
.hero h1{font-size:clamp(58px,7.4vw,118px);line-height:.84;margin:0 0 34px}.hero h1 em,.story h2 em{font-weight:400}
.hero-text{max-width:520px;font-size:17px;line-height:1.7;color:#4f554d}
.hero-actions{display:flex;gap:24px;align-items:center;margin-top:32px}.btn{display:inline-flex;justify-content:center;align-items:center;min-height:49px;padding:0 24px;font-size:13px;font-weight:600;border:1px solid var(--ink)}.btn-dark{background:var(--ink);color:var(--paper)}.text-link{font-size:13px;border-bottom:1px solid}
.hero-art{position:relative;min-height:610px;display:flex;align-items:center;justify-content:center;background:#d6d0c3;overflow:hidden}
.paper{width:64%;height:72%;background:#ece4d1;position:relative;box-shadow:0 24px 70px rgba(38,30,18,.15);transform:rotate(-2deg)}
.paper p{position:absolute;bottom:6%;right:8%;font-family:serif;font-size:22px;color:var(--red)}
.sun{position:absolute;width:94px;height:94px;border-radius:50%;background:#b6493d;top:13%;right:14%}
.branch{position:absolute;width:65%;height:11px;background:#5d4938;left:16%;bottom:34%;transform:rotate(-29deg);border-radius:100%}
.flower{position:absolute;width:120px;height:120px}.flower-a{left:10%;top:24%}.flower-b{right:14%;bottom:17%;transform:scale(.75)}
.flower i{position:absolute;width:54px;height:54px;border-radius:50% 50% 45% 50%;background:#c98984;left:33px;top:5px;transform-origin:27px 54px}.flower i:nth-child(2){transform:rotate(72deg)}.flower i:nth-child(3){transform:rotate(144deg)}.flower i:nth-child(4){transform:rotate(216deg)}.flower i:nth-child(5){transform:rotate(288deg)}.flower b{position:absolute;width:35px;height:35px;background:#d9ad52;border-radius:50%;left:42px;top:42px}
.hero-note{position:absolute;left:24px;bottom:20px;font-family:"Newsreader";font-size:19px}
.trust-strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px 4vw;display:flex;justify-content:space-between;gap:20px;text-transform:uppercase;letter-spacing:.09em;font-size:10px}
.section{padding:110px 4vw}.section-head{display:grid;grid-template-columns:1fr 1.4fr .8fr;gap:30px;align-items:end;margin-bottom:45px}.section-head .eyebrow{align-self:start}.section h2{font-size:clamp(45px,5.5vw,82px);line-height:.95;margin:0}.section-head>p:last-child{font-size:14px;line-height:1.65;color:#5c6258}
.cards{display:grid;grid-template-columns:1.25fr 1fr;gap:14px;max-width:1100px}.class-card{border:1px solid var(--line);background:var(--cream);display:flex;flex-direction:column;min-height:600px}.card-visual{height:290px;position:relative;overflow:hidden}.peony-visual{background:radial-gradient(circle at 35% 45%,#d6a29b 0 8%,transparent 8.5%),radial-gradient(circle at 45% 37%,#b76d68 0 10%,transparent 10.5%),radial-gradient(circle at 55% 48%,#d8b2a7 0 9%,transparent 9.5%),linear-gradient(145deg,#c8c5b6,#ebe5d7)}.fan-visual{background:conic-gradient(from 220deg at 50% 100%,#eadbc4,#d6b77d,#c4a46f,#eadbc4 68%,#b14f44 69% 70%,#eadbc4 72%)}.nacre-visual{background:linear-gradient(130deg,#24201c,#24201c 45%,#6d918d 46%,#d3c9c2 48%,#8d6d93 50%,#24201c 52%)}
.card-visual span{position:absolute;top:16px;left:16px;background:var(--paper);padding:7px 10px;font-size:10px;text-transform:uppercase;letter-spacing:.08em}
.card-body{padding:27px;display:flex;flex-direction:column;justify-content:space-between;gap:35px;flex:1}.mini{text-transform:uppercase;letter-spacing:.1em;font-size:9px}.card-body h3{font-family:"Newsreader";font-size:34px;font-weight:400;margin:12px 0}.card-body p:not(.mini){font-size:13px;line-height:1.65;color:#565b53}.card-bottom{border-top:1px solid var(--line);padding-top:20px;display:flex;align-items:end;justify-content:space-between;gap:14px}.card-bottom strong{font-family:"Newsreader";font-size:29px;font-weight:400;display:block}.card-bottom small{font-size:10px;color:#666}.book-button{background:none;border:0;border-bottom:1px solid var(--ink);padding:0 0 4px;cursor:pointer;font-weight:600}
.story{background:var(--ink);color:var(--paper);display:grid;grid-template-columns:1.2fr .8fr;gap:12vw}.story h2{font-size:clamp(48px,6vw,90px)}.story-copy{padding-top:50px}.story-copy p{font-size:15px;line-height:1.8;color:#d7d8d1}

.about{display:grid;grid-template-columns:.8fr 1.2fr;gap:9vw;align-items:center}.about-art{height:650px;background:#d3cec0;padding:13%}.portrait-placeholder{height:100%;background:#a6aba0;display:flex;align-items:flex-end;padding:30px;font-family:"Newsreader";font-size:45px;line-height:.85}.about-copy{max-width:660px}.about-copy h2{margin-bottom:30px}.about-copy>p:not(.eyebrow){font-size:16px;line-height:1.8;color:#555b53}.signature{font-family:"Newsreader";font-style:italic;font-size:44px;margin-top:35px}
.quote{background:var(--cream);text-align:center}.quote blockquote{font-family:"Newsreader";font-size:clamp(34px,5vw,68px);line-height:1.1;max-width:1180px;margin:auto;font-weight:400}
.visit{display:grid;grid-template-columns:1fr 1fr;gap:12vw;border-top:1px solid var(--line)}.visit-main h2{margin-bottom:35px}.visit-main p{line-height:1.7}.muted{color:#777}.visit-side{padding-top:45px}.detail{padding:22px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;font-size:12px;line-height:1.6}.detail span{color:#777}.detail b{text-align:right;font-weight:500}.full{width:100%;margin-top:25px}
footer{padding:40px 4vw;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;font-size:11px}footer p:nth-child(2){text-align:center}footer p:last-child{text-align:right}
.modal{position:fixed;inset:0;z-index:50;display:none}.modal.open{display:block}.modal-backdrop{position:absolute;inset:0;background:rgba(20,20,15,.56)}.modal-panel{position:absolute;right:0;top:0;height:100%;width:min(520px,92vw);background:var(--paper);padding:70px 45px}.modal-close{position:absolute;right:24px;top:20px;border:0;background:none;font-size:30px;cursor:pointer}.modal h2{font-size:50px;margin:0 0 35px}.booking-summary{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 0;display:flex;justify-content:space-between}.booking-summary div{display:flex;flex-direction:column;gap:5px}.booking-summary span{font-size:10px;text-transform:uppercase;letter-spacing:.1em}.booking-summary strong{font-size:16px}.modal-copy{font-size:13px;line-height:1.65;color:#62675e;margin:25px 0}.modal small{display:block;text-align:center;margin-top:13px;color:#777}
.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}.reveal.visible{opacity:1;transform:none}
@media(max-width:900px){
  nav{display:none}.menu{display:block}
  .hero{grid-template-columns:1fr;padding-top:70px}.hero-art{min-height:520px}.paper{width:70%}
  .trust-strip{overflow:auto;justify-content:flex-start}.trust-strip span{white-space:nowrap}
  .section{padding:80px 5vw}.section-head{grid-template-columns:1fr}.cards{grid-template-columns:1fr}.class-card{min-height:auto}.card-visual{height:330px}
  .story,.about,.visit{grid-template-columns:1fr}.story{gap:30px}.story-copy{padding-top:0}.about-art{height:520px}
  .gallery-band{grid-template-columns:1fr 1fr;height:580px}
  footer{grid-template-columns:1fr;gap:16px}footer p:nth-child(2),footer p:last-child{text-align:left}
}
@media(max-width:520px){
  .site-header{height:65px}.hero{min-height:auto;padding:55px 5vw 28px}.hero h1{font-size:58px}.hero-art{min-height:430px}.paper{width:76%;height:70%}.hero-actions{align-items:flex-start;flex-direction:column}
  .gallery-band{height:500px}.section h2{font-size:48px}.card-bottom{align-items:center}.about-art{height:420px}.modal-panel{padding:65px 25px}
}

.disabled-button{opacity:.45;cursor:not-allowed;border-bottom-style:dashed}
.special-event .card-bottom strong{font-size:22px;line-height:1.15}


.gallery-section{padding-top:105px;padding-bottom:105px;background:var(--paper)}
.gallery-head{margin-bottom:35px}
.photo-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  grid-auto-rows:260px;
  gap:10px;
}
.photo{margin:0;overflow:hidden;background:#ddd}
.photo img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .55s ease;
}
.photo:hover img{transform:scale(1.025)}
.photo-wide{grid-column:span 2}
.photo-tall{grid-row:span 2}
@media(max-width:900px){
  .photo-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:240px}
  .photo-wide{grid-column:span 2}
}
@media(max-width:520px){
  .gallery-section{padding-left:0;padding-right:0}
  .gallery-section .gallery-head{padding:0 5vw}
  .photo-grid{grid-template-columns:1fr 1fr;grid-auto-rows:180px;gap:5px}
  .photo-wide{grid-column:span 2}
  .photo-tall{grid-row:span 2}
}

/* v4: supplied logo */
.logo-brand{display:flex;align-items:center;opacity:1}
.logo-brand img{display:block;width:190px;max-height:48px;object-fit:contain;object-position:left center}
footer .logo-brand img{width:220px}

/* v4: natural-ratio masonry gallery — prevents blank grid holes and blurry crops */
.masonry-gallery{
  columns:4;
  column-gap:10px;
}
.masonry-item{
  margin:0 0 10px;
  break-inside:avoid;
  overflow:hidden;
  background:#e7e2d8;
}
.masonry-item img{
  width:100%;
  height:auto;
  display:block;
  transition:transform .45s ease;
}
.masonry-item:hover img{transform:scale(1.018)}
@media(max-width:900px){
  .masonry-gallery{columns:2}
  .logo-brand img{width:170px}
}
@media(max-width:520px){
  .masonry-gallery{columns:2;column-gap:5px}
  .masonry-item{margin-bottom:5px}
  .logo-brand img{width:145px}
  footer .logo-brand img{width:180px}
}

/* v6 founder profile */
.about-section{
  display:grid;
  grid-template-columns:minmax(280px,.82fr) minmax(340px,1fr);
  gap:clamp(45px,7vw,110px);
  align-items:center;
}
.about-photo{overflow:hidden;max-width:540px}
.about-photo img{
  width:100%;
  aspect-ratio:4/5;
  object-fit:cover;
  object-position:center 35%;
  display:block;
}
.about-copy{max-width:650px}
.about-copy h2{margin-bottom:28px}
.about-copy p:not(.eyebrow){font-size:17px;line-height:1.75;margin:0 0 18px}
@media(max-width:760px){
  .about-section{grid-template-columns:1fr;gap:35px}
  .about-photo{max-width:100%}
  .about-photo img{aspect-ratio:4/4.6}
}

.footer-vat{
  margin:10px 0 0;
  font-size:11px;
  line-height:1.4;
  letter-spacing:.03em;
  opacity:.55;
  text-align:left;
}

.footer-brand-block{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
}

.course-options{display:grid;gap:8px;margin-top:20px}
.course-option{padding:12px 0;border-top:1px solid rgba(29,39,32,.16);display:flex;flex-direction:column;gap:4px}
.course-option:last-child{border-bottom:1px solid rgba(29,39,32,.16)}
.course-option strong{font-size:15px;font-weight:600}
.course-option small{font-size:12px;opacity:.68}
.course-note{margin-top:14px!important;font-size:12px!important;line-height:1.5!important;opacity:.62}
.regular-visual{background:linear-gradient(145deg,#d8d2c4,#eee9df)}

/* Two equal-width class options */
.classes-grid{
  grid-template-columns:repeat(2, minmax(0, 1fr));
}
.classes-grid .class-card{
  width:100%;
}
@media(max-width:760px){
  .classes-grid{
    grid-template-columns:1fr;
  }
}


/* Refined class section layout */
#workshops .section-head{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  column-gap:48px;
  margin-bottom:64px;
}

#workshops .section-head .eyebrow{
  grid-column:1;
  justify-self:start;
  margin:0;
}

#workshops .section-head h2{
  grid-column:2;
  justify-self:center;
  margin:0;
  white-space:nowrap;
  text-align:center;
  line-height:1;
}

#workshops .section-head > p:last-child{
  grid-column:3;
  justify-self:end;
  max-width:360px;
  margin:0;
  text-align:left;
}

#workshops .classes-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:18px;
  width:100%;
}

#workshops .classes-grid .class-card{
  width:100%;
  min-width:0;
  margin:0;
}

@media(max-width:1000px){
  #workshops .section-head{
    grid-template-columns:1fr;
    gap:20px;
    text-align:center;
  }
  #workshops .section-head .eyebrow,
  #workshops .section-head h2,
  #workshops .section-head > p:last-child{
    grid-column:1;
    justify-self:center;
  }
  #workshops .section-head > p:last-child{
    text-align:center;
  }
}

@media(max-width:760px){
  #workshops .section-head h2{
    white-space:normal;
  }
  #workshops .classes-grid{
    grid-template-columns:1fr;
  }
}

a.book-button{text-decoration:none;display:inline-flex;align-items:center;justify-content:center;}

.footer-location-row{
  display:flex;
  align-items:center;
  gap:8px;
}
.footer-location-row p{margin:0}
.google-maps-link{
  width:19px;
  height:19px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  opacity:.62;
  transition:opacity .2s ease, transform .2s ease;
}
.google-maps-link:hover{opacity:1;transform:translateY(-1px)}
.google-maps-link svg{width:100%;height:100%;fill:currentColor;display:block}

.visit-address{display:flex;align-items:flex-end;gap:8px}.visit-address p{margin-bottom:0}.visit-address .google-maps-link{margin-bottom:3px;width:17px;height:17px;opacity:.6}

.hero-video-wrap{padding:0;background:#d6d0c3}
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}

/* Class banner images */
.class-banner{background:none;}
.class-banner img{width:100%;height:100%;object-fit:cover;display:block;}
.class-banner span{position:absolute;z-index:2;}

/* v26 — equal class cards */
#workshops .workshop-grid,
#workshops .class-grid,
.choose-class .workshop-grid,
.choose-class .class-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 20px;
  align-items: stretch;
}

#workshops .workshop-card,
#workshops .class-card,
.choose-class .workshop-card,
.choose-class .class-card {
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  box-sizing: border-box;
}

#workshops .workshop-card img,
#workshops .class-card img,
.choose-class .workshop-card img,
.choose-class .class-card img {
  width: 100% !important;
  aspect-ratio: 16 / 9 !important;
  height: auto !important;
  object-fit: cover !important;
  display: block;
}

@media (max-width: 760px) {
  #workshops .workshop-grid,
  #workshops .class-grid,
  .choose-class .workshop-grid,
  .choose-class .class-grid {
    grid-template-columns: 1fr !important;
  }
}


/* Mobile navigation */
.mobile-nav{display:none}
@media(max-width:900px){
  .site-header{position:sticky}
  .menu{position:relative;z-index:22;cursor:pointer}
  .mobile-nav{
    position:absolute;top:100%;left:0;right:0;z-index:21;
    display:flex;flex-direction:column;gap:0;
    padding:10px 5vw 20px;background:var(--paper);
    border-bottom:1px solid var(--line);
    opacity:0;visibility:hidden;transform:translateY(-8px);
    pointer-events:none;transition:opacity .2s ease,transform .2s ease,visibility .2s;
  }
  .mobile-nav.open{opacity:1;visibility:visible;transform:none;pointer-events:auto}
  .mobile-nav a{padding:14px 0;border-bottom:1px solid var(--line);font-size:15px}
  .mobile-nav a:last-child{border-bottom:0}
  .mobile-nav .mobile-book{font-weight:600}
}

/* v32 — mobile card spacing + white cards + refined mobile menu */
#workshops .class-card{
  background:#fff;
}

@media(max-width:760px){
  #workshops .class-card{
    background:#fff;
    min-height:0 !important;
  }
  #workshops .class-card .card-body{
    padding:24px 22px 26px;
    gap:24px;
    justify-content:flex-start;
    flex:0 0 auto;
  }
  #workshops .class-card .card-bottom{
    margin-top:4px;
  }
}

@media(max-width:900px){
  .menu{
    font-size:13px;
    color:#4b382c;
  }
  .mobile-nav a{
    font-size:13px;
    color:#4b382c;
    padding:11px 0;
  }
}

/* v33 — tighter mobile class cards */
@media(max-width:760px){
  #workshops .class-card .card-visual{
    height:auto !important;
    min-height:0 !important;
  }
  #workshops .class-card .card-body{
    padding:20px 22px 24px !important;
    gap:20px !important;
  }
  #workshops .class-card .book-button{
    font-size:13px !important;
    line-height:1.2;
    font-weight:600 !important;
    white-space:nowrap;
    flex-shrink:0;
  }
}
