/* Songbirds Music — shared design system ("Songbook on a Branch")
   Relative-linked from every page so paths work at /sites/songbirds/ and at the domain root. */

:root{
  --paper:#FBF6EE;
  --paper-2:#F4EAD6;
  --paper-3:#EFE3CC;
  --grape:#4E2C7A;
  --grape-2:#6B3FA0;
  --lilac:#B89AD8;
  --lilac-wash:#EFE7F7;
  --marigold:#EF9A33;
  --marigold-soft:#F6C079;
  --leaf:#5E9E5A;
  --branch:#7A5A43;
  --ink:#39304A;
  --ink-soft:#6E6579;
  --shadow: 24px 30px 60px -34px rgba(78,44,122,.35);
  --r-lg: 32px;
  --r-md: 20px;
  --maxw: 1160px;
}

*{box-sizing:border-box;}
html{font-size:18px; scroll-behavior:smooth; overflow-x:hidden;}
body{
  margin:0;
  font-family:"Hanken Grotesk", system-ui, sans-serif;
  color:var(--ink);
  background:var(--paper);
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
body::before{
  content:"";
  position:fixed; inset:0; z-index:0; pointer-events:none;
  opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.045'/%3E%3C/svg%3E");
}
.wrap{position:relative; z-index:1;}

h1,h2,h3{font-family:"Caprasimo", Georgia, serif; font-weight:400; line-height:1.04; letter-spacing:-.01em; color:var(--grape); margin:0;}
a{color:var(--grape-2); text-underline-offset:3px; text-decoration-thickness:1.5px;}
img{max-width:100%; display:block;}

.container{max-width:var(--maxw); margin:0 auto; padding:0 26px;}
.script{font-family:"Caveat", cursive; color:var(--marigold); font-weight:700;}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:.55em;
  font-family:"Hanken Grotesk",sans-serif; font-weight:700; font-size:1.02rem;
  padding:.92em 1.5em; border-radius:999px; text-decoration:none; cursor:pointer;
  border:2px solid transparent; transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
  line-height:1;
}
.btn-primary{ background:var(--grape); color:#fff; box-shadow:0 14px 24px -12px rgba(78,44,122,.7); }
.btn-primary:hover{ background:var(--grape-2); transform:translateY(-2px); box-shadow:0 18px 30px -12px rgba(78,44,122,.75); }
.btn-ghost{ background:transparent; color:var(--grape); border-color:var(--grape); }
.btn-ghost:hover{ background:var(--grape); color:#fff; transform:translateY(-2px); }
.btn-sun{ background:var(--marigold); color:#5a3410; box-shadow:0 14px 24px -12px rgba(239,154,51,.8); }
.btn-sun:hover{ background:#f0a949; transform:translateY(-2px); }

/* ---------- masthead / multi-page nav ---------- */
.masthead{ padding:18px 0 6px; position:relative; z-index:50; }
.masthead .container{ display:flex; align-items:center; justify-content:space-between; gap:18px; }
.brand{ display:flex; align-items:center; gap:12px; text-decoration:none; }
.brand img{ height:60px; width:auto; }
.mast-nav{ display:flex; align-items:center; gap:24px; }
.mast-nav a.navlink{ color:var(--ink); text-decoration:none; font-weight:600; font-size:.96rem; position:relative; padding:4px 0; }
.mast-nav a.navlink:hover{ color:var(--grape); }
.mast-nav a.navlink.current{ color:var(--grape); }
.mast-nav a.navlink.current::after{ content:""; position:absolute; left:0; right:0; bottom:-2px; height:2.5px; background:var(--marigold); border-radius:3px; }
.mast-phone{ color:var(--ink); font-weight:700; text-decoration:none; white-space:nowrap; }
.mast-phone:hover{ color:var(--grape); }

/* hamburger */
.navtoggle{ display:none; flex-direction:column; gap:5px; width:44px; height:44px; align-items:center; justify-content:center; background:var(--lilac-wash); border:none; border-radius:12px; cursor:pointer; }
.navtoggle span{ display:block; width:22px; height:2.5px; background:var(--grape); border-radius:3px; transition:transform .25s ease, opacity .2s ease; }
.navtoggle[aria-expanded="true"] span:nth-child(1){ transform:translateY(7.5px) rotate(45deg); }
.navtoggle[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.navtoggle[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7.5px) rotate(-45deg); }

/* ---------- hero (home) ---------- */
.hero{ position:relative; padding:46px 0 12px; }
.hero-grid{ display:grid; grid-template-columns:1.05fr .95fr; gap:60px; align-items:center; }
.eyebrow{ display:inline-flex; align-items:center; gap:.5em; font-weight:700; letter-spacing:.04em; text-transform:uppercase; font-size:.74rem; color:var(--grape-2); background:var(--lilac-wash); padding:.5em 1em; border-radius:999px; margin-bottom:.4em; }
.hero h1{ font-size:clamp(2.9rem, 6.4vw, 5rem); margin:.32em 0 .26em; }
.hero h1 .hl{ color:var(--grape); padding:0 .05em; background-image:linear-gradient(transparent 60%, var(--marigold-soft) 60%, var(--marigold-soft) 92%, transparent 92%); -webkit-box-decoration-break:clone; box-decoration-break:clone; }
.hero .lede{ font-size:1.24rem; color:var(--ink); max-width:30ch; margin:0 0 1.6em; }
.hero .lede b{ color:var(--grape); font-weight:700; }
.hero-actions{ display:flex; flex-wrap:wrap; gap:14px; align-items:center; }
.hero-meta{ margin-top:1.6em; display:flex; flex-wrap:wrap; align-items:center; gap:8px 16px; color:var(--ink-soft); font-size:.95rem; font-weight:500; }
.hero-meta .dot{ width:5px; height:5px; border-radius:50%; background:var(--lilac); }

.hero-art{ position:relative; }
.photo-arch{ position:relative; border-radius:50% 50% 50% 50% / 40% 40% 60% 60%; overflow:hidden; border:10px solid #fff; box-shadow:var(--shadow); aspect-ratio:4/4.4; background:var(--lilac-wash); rotate:1.6deg; }
.photo-arch img{ width:100%; height:100%; object-fit:cover; }
.hero-art .float-bird{ position:absolute; width:104px; right:-18px; top:-44px; rotate:6deg; filter:drop-shadow(0 12px 16px rgba(78,44,122,.22)); animation:bob 5.5s ease-in-out infinite; }
.badge-est{ position:absolute; left:-30px; bottom:24px; width:118px; height:118px; border-radius:50%; background:var(--grape); color:#fff; display:grid; place-content:center; text-align:center; box-shadow:0 18px 30px -14px rgba(78,44,122,.8); rotate:-8deg; }
.badge-est b{ font-family:"Caprasimo",serif; font-size:1.5rem; display:block; line-height:1; letter-spacing:.02em; }
.badge-est span{ font-size:.6rem; letter-spacing:.12em; text-transform:uppercase; opacity:.85; margin-top:3px; }

@keyframes bob{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-12px); } }

/* drifting notes */
.notes{ position:absolute; inset:0; overflow:visible; pointer-events:none; z-index:2; }
.notes span{ position:absolute; color:var(--grape-2); opacity:0; font-size:1.5rem; animation:drift 7s linear infinite; }
@keyframes drift{
  0%{ opacity:0; transform:translateY(10px) rotate(0); }
  15%{ opacity:.55; } 85%{ opacity:.4; }
  100%{ opacity:0; transform:translateY(-90px) rotate(18deg); }
}

/* ---------- interior page hero (clean centered header — simple pages) ---------- */
.page-hero{ position:relative; padding:46px 0 14px; text-align:center; }
.page-hero .kicker{ display:block; }
.page-hero h1{ font-size:clamp(2.4rem, 5vw, 3.7rem); margin:.05em 0 .25em; }
.page-hero p.intro{ font-size:1.16rem; color:var(--ink); max-width:56ch; margin:0 auto; }
.page-hero .float-bird{ width:72px; margin:0 auto 8px; filter:drop-shadow(0 10px 14px rgba(78,44,122,.2)); }

/* ---------- About hero (page-specific: story text + photo) ---------- */
.about-hero{ position:relative; padding:48px 0 18px; }
.about-hero .container{ display:grid; grid-template-columns:1.05fr .9fr; gap:54px; align-items:center; }
.about-hero .kicker{ display:block; }
.about-hero h1{ font-size:clamp(2.5rem, 5.2vw, 3.9rem); margin:.05em 0 .3em; }
.about-hero p.intro{ font-size:1.18rem; color:var(--ink); max-width:46ch; margin:0; }
.about-hero .a-media{ position:relative; }
.about-hero .a-media .frame{ border-radius:48% 48% 48% 48% / 42% 42% 58% 58%; overflow:hidden; border:10px solid #fff; box-shadow:var(--shadow); aspect-ratio:1 / 0.92; rotate:1.6deg; background:var(--lilac-wash); }
.about-hero .a-media .frame img{ width:100%; height:100%; object-fit:cover; }
.about-hero .a-media .float-bird{ position:absolute; width:78px; right:-12px; top:-32px; rotate:6deg; filter:drop-shadow(0 12px 16px rgba(78,44,122,.22)); }

/* ---------- branch divider ---------- */
.branch-row{ margin:8px 0; display:flex; justify-content:center; }
.branch-row svg{ width:min(760px, 92%); height:auto; overflow:visible; }

/* ---------- section frame ---------- */
section{ position:relative; }
.sec{ padding:74px 0; }
.sec-head{ max-width:64ch; }
.sec-head.center{ margin:0 auto; text-align:center; }
.sec-head.split{ display:grid; grid-template-columns:1fr 1fr; gap:46px; align-items:end; max-width:none; }
.sec-head.split .lead{ margin:0; max-width:50ch; }
.kicker{ font-family:"Caveat",cursive; color:var(--marigold); font-size:1.7rem; font-weight:700; line-height:1; display:block; margin-bottom:.1em; }
.sec h2{ font-size:clamp(2.1rem, 4.4vw, 3.2rem); }
.lead{ font-size:1.1rem; color:var(--ink); max-width:58ch; margin-top:.6em; }

/* ---------- mission ---------- */
.mission{ background:linear-gradient(180deg, transparent, var(--paper-2) 30%, var(--paper-2) 70%, transparent); }
.mission-card{ max-width:620px; margin:0 auto; }
.mission-card .kicker{ display:block; }
.mission-card p.big{ font-family:"Caprasimo",serif; color:var(--grape); font-size:clamp(1.75rem, 3.2vw, 2.35rem); line-height:1.14; letter-spacing:-.01em; margin:.12em 0 .5em; }
.mission-card .nest{ color:var(--marigold); }
.mission-card p.sub{ font-size:1.12rem; color:var(--ink); margin:0; }

/* ---------- songbook / programs ---------- */
.songbook{ max-width:920px; margin:2.6em auto 0; }
.verse{ display:grid; grid-template-columns:auto 1fr auto; gap:30px; align-items:center; padding:30px 4px; border-top:2px dashed var(--paper-3); position:relative; }
.verse:last-child{ border-bottom:2px dashed var(--paper-3); }
.verse .track{ font-family:"Caprasimo",serif; font-size:2.4rem; line-height:1; width:64px; height:64px; border-radius:50%; display:grid; place-content:center; color:#fff; }
.verse.v1 .track{ background:var(--grape-2); }
.verse.v2 .track{ background:var(--marigold); color:#5a3410; }
.verse.v3 .track{ background:var(--leaf); }
.verse.v4 .track{ background:var(--lilac); }
.verse .vmain h3{ font-size:1.5rem; color:var(--grape); margin-bottom:.12em; }
.verse .ages{ display:inline-block; font-weight:700; font-size:.78rem; letter-spacing:.03em; text-transform:uppercase; color:var(--grape-2); background:var(--lilac-wash); padding:.32em .8em; border-radius:999px; margin-bottom:.5em; }
.verse.v2 .ages{ color:#8a5212; background:#fbe7c8; }
.verse.v3 .ages{ color:#3c6b39; background:#e2efe1; }
.verse .vmain p{ margin:0; color:var(--ink); font-size:1.03rem; max-width:52ch; }
.verse .vlink{ white-space:nowrap; font-weight:700; text-decoration:none; color:var(--grape); border-bottom:2px solid var(--marigold-soft); padding-bottom:2px; }
.verse .vlink:hover{ color:var(--grape-2); border-color:var(--marigold); }
.songbook-foot{ text-align:center; margin-top:34px; }

/* ---------- schedule grid ---------- */
.schedule-wrap{ max-width:980px; margin:2.2em auto 0; }
.legend{ display:flex; flex-wrap:wrap; gap:14px 22px; justify-content:center; margin-bottom:22px; }
.legend span{ display:inline-flex; align-items:center; gap:8px; font-weight:600; font-size:.92rem; color:var(--ink); }
.legend i{ width:16px; height:16px; border-radius:5px; display:inline-block; }
.swatch-mt{ background:var(--grape-2); } .swatch-baby{ background:var(--lilac); } .swatch-cyb{ background:var(--leaf); } .swatch-com{ background:var(--marigold); }
.sched{ width:100%; border-collapse:separate; border-spacing:6px; }
.sched th{ font-family:"Hanken Grotesk",sans-serif; font-weight:700; color:var(--grape); font-size:.86rem; text-transform:uppercase; letter-spacing:.04em; padding:8px 4px; }
.sched td{ background:var(--paper); border:1.5px solid var(--paper-3); border-radius:12px; padding:10px 8px; text-align:center; font-size:.86rem; vertical-align:top; min-width:64px; }
.sched td.empty{ background:transparent; border:1.5px dashed var(--paper-3); color:var(--lilac); }
.slot{ display:block; border-radius:9px; padding:7px 6px; color:#fff; font-weight:700; font-size:.8rem; margin-bottom:5px; line-height:1.2; }
.slot:last-child{ margin-bottom:0; }
.slot small{ display:block; font-weight:600; opacity:.92; font-size:.72rem; }
.slot-mt{ background:var(--grape-2); } .slot-baby{ background:var(--lilac); color:#3a2456; } .slot-cyb{ background:var(--leaf); } .slot-com{ background:var(--marigold); color:#5a3410; }
.sched-note{ text-align:center; color:var(--ink-soft); font-size:.92rem; margin-top:16px; }

/* ---------- tuition note ---------- */
.tuition{ max-width:920px; margin:2.4em auto 0; background:var(--lilac-wash); border-radius:var(--r-lg); padding:36px 40px; }
.tuition h3{ font-size:1.5rem; margin-bottom:.3em; }
.tuition p{ color:var(--ink); margin:0 0 1.2em; max-width:62ch; }

/* ---------- steps ---------- */
.steps{ max-width:880px; margin:2.4em auto 0; display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.step{ background:var(--paper); border:1.5px solid var(--paper-3); border-radius:var(--r-md); padding:26px 22px; text-align:center; box-shadow:0 12px 24px -20px rgba(78,44,122,.5); }
.step .n{ font-family:"Caprasimo",serif; font-size:1.4rem; width:50px; height:50px; border-radius:50%; background:var(--grape); color:#fff; display:grid; place-content:center; margin:0 auto .7em; }
.step h4{ font-family:"Caprasimo",serif; font-weight:400; color:var(--grape); font-size:1.2rem; margin:0 0 .3em; }
.step p{ margin:0; font-size:.95rem; color:var(--ink-soft); }

/* ---------- teachers ---------- */
.teachers{ background:linear-gradient(180deg, transparent, var(--lilac-wash) 22%, var(--lilac-wash) 78%, transparent); }
.teacher-grid{ display:grid; grid-template-columns:1fr 1fr; gap:34px; margin-top:2.4em; }
.tcard{ background:var(--paper); border-radius:var(--r-lg); padding:28px; box-shadow:var(--shadow); display:flex; gap:24px; align-items:flex-start; border:1px solid #fff; }
.tcard .tphoto{ flex:0 0 132px; }
.tcard .tphoto .frame{ width:132px; height:158px; border-radius:46% 46% 46% 46% / 38% 38% 62% 62%; overflow:hidden; border:6px solid #fff; box-shadow:0 14px 24px -16px rgba(78,44,122,.6); rotate:-2deg; background:var(--lilac-wash); }
.tcard .tphoto .frame img{ width:100%; height:100%; object-fit:cover; }
.tcard .tphoto.noimg .frame{ display:grid; place-content:center; background:var(--paper-2); }
.tcard .tphoto.noimg .frame img{ width:74px; height:auto; }
.tname{ font-size:1.55rem; color:var(--grape); }
.trole{ font-weight:700; color:var(--marigold); font-size:.86rem; letter-spacing:.04em; text-transform:uppercase; margin:.1em 0 .7em; }
.tcard p{ margin:0 0 .8em; font-size:.99rem; color:var(--ink); }
.three-words{ display:flex; gap:8px; flex-wrap:wrap; margin-top:.4em; }
.three-words span{ font-family:"Caveat",cursive; font-size:1.25rem; font-weight:700; color:var(--grape-2); background:var(--lilac-wash); padding:.05em .7em; border-radius:999px; }
.creds{ margin-top:1.1em; font-size:.82rem; color:var(--ink-soft); line-height:1.5; border-top:1.5px dashed var(--paper-3); padding-top:.9em; }

/* ---------- testimonials ---------- */
.quotes{ display:grid; grid-template-columns:1.3fr .7fr; gap:28px; margin-top:2.2em; align-items:stretch; }
.qbig{ background:var(--grape); color:#fff; border-radius:var(--r-lg); padding:42px 40px; position:relative; box-shadow:var(--shadow); }
.qbig::before{ content:"\201C"; font-family:"Caprasimo",serif; font-size:6rem; line-height:.7; color:var(--marigold); position:absolute; top:20px; left:26px; opacity:.85; }
.qbig blockquote{ margin:42px 0 0; font-size:1.3rem; line-height:1.42; font-weight:500; }
.qbig cite{ display:block; margin-top:1.1em; font-style:normal; font-weight:700; color:var(--marigold-soft); font-size:.98rem; }
.qside{ display:flex; flex-direction:column; gap:20px; }
.qmini{ background:var(--paper); border:1.5px solid var(--paper-3); border-radius:var(--r-md); padding:24px; box-shadow:0 14px 28px -22px rgba(78,44,122,.6); }
.qmini p{ margin:0 0 .6em; font-size:1rem; color:var(--ink); }
.qmini cite{ font-style:normal; font-weight:700; color:var(--grape); font-size:.86rem; }
.yelp-strip{ background:var(--marigold-soft); border-radius:var(--r-md); padding:20px 22px; display:flex; align-items:center; gap:14px; color:#5a3410; font-weight:600; }
.yelp-strip b{ font-family:"Caprasimo",serif; font-size:1.9rem; color:#5a3410; line-height:1; }
.yelp-strip a{ color:#5a3410; font-weight:800; }

/* ---------- families cards ---------- */
.fam-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; margin-top:2.2em; align-items:start; }
.fam-card{ background:var(--paper); border:1.5px solid var(--paper-3); border-radius:var(--r-lg); padding:32px; box-shadow:var(--shadow); display:flex; flex-direction:column; }
.svg-ic{ width:24px; height:24px; stroke:currentColor; fill:none; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; display:block; }
.fam-card .ic{ width:54px; height:54px; border-radius:16px; display:grid; place-content:center; margin-bottom:14px; background:var(--lilac-wash); color:var(--grape); }
.fam-card .ic .svg-ic{ width:27px; height:27px; }
.fam-card .ic.ic-sun{ background:var(--marigold); color:#fff; }
.fam-card .ic.ic-leaf{ background:var(--leaf); color:#fff; }
.fam-card .ic.ic-grape{ background:var(--grape-2); color:#fff; }
.fam-card.feature{ grid-column:1 / -1; background:var(--grape); color:#fff; }
.fam-card.feature h3, .fam-card.feature .ic{ color:#fff; }
.fam-card.feature .ic{ background:rgba(255,255,255,.16); }
.fam-card.feature p, .fam-card.feature li{ color:#e9defa; }
.fam-card h3{ font-size:1.4rem; margin:0 0 .4em; }
.fam-card p{ margin:0 0 1em; color:var(--ink); font-size:1rem; }
.fam-card ul{ margin:0 0 1.2em; padding-left:1.1em; color:var(--ink); }
.fam-card ul li{ margin-bottom:.45em; }
.fam-card .btn{ margin-top:auto; align-self:flex-start; }
.fam-card.feature .btn-sun{ align-self:flex-start; }

/* ---------- faq ---------- */
.faq-wrap{ max-width:840px; margin:2.2em auto 0; }
.faq-tabs{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin-bottom:30px; }
.faq-tab{ font-family:"Hanken Grotesk",sans-serif; font-weight:700; font-size:.95rem; color:var(--grape); background:var(--paper); border:2px solid var(--lilac); border-radius:999px; padding:.55em 1.2em; cursor:pointer; transition:all .2s ease; }
.faq-tab:hover{ background:var(--lilac-wash); }
.faq-tab.active{ background:var(--grape); color:#fff; border-color:var(--grape); }
.faq-panel{ display:none; }
.faq-panel.active{ display:block; animation:fadeUp .4s ease; }
@keyframes fadeUp{ from{ opacity:0; transform:translateY(8px); } to{ opacity:1; transform:none; } }
.faq-item{ border:1.5px solid var(--paper-3); border-radius:16px; margin-bottom:12px; background:var(--paper); overflow:hidden; }
.faq-q{ width:100%; text-align:left; background:none; border:none; cursor:pointer; padding:20px 54px 20px 22px; font-family:"Caprasimo",serif; color:var(--grape); font-size:1.1rem; line-height:1.25; position:relative; }
.faq-q::after{ content:"+"; position:absolute; right:22px; top:50%; transform:translateY(-50%); font-family:"Hanken Grotesk",sans-serif; font-size:1.6rem; font-weight:400; color:var(--marigold); transition:transform .25s ease; }
.faq-item.open .faq-q::after{ transform:translateY(-50%) rotate(45deg); }
.faq-item.open .faq-q{ color:var(--grape-2); }
.faq-a{ max-height:0; overflow:hidden; transition:max-height .3s ease; }
.faq-a-inner{ padding:0 22px 20px; color:var(--ink); font-size:1rem; }
.faq-a-inner p{ margin:0 0 .7em; } .faq-a-inner p:last-child{ margin-bottom:0; }
.faq-a-inner ul{ margin:.2em 0 .6em; padding-left:1.1em; } .faq-a-inner li{ margin-bottom:.4em; }

/* ---------- contact ---------- */
.contact-grid{ display:grid; grid-template-columns:1fr 1fr; gap:40px; margin-top:2.2em; align-items:start; }
.reach{ background:var(--paper); border:1.5px solid var(--paper-3); border-radius:var(--r-lg); padding:6px 28px; box-shadow:var(--shadow); }
.reach .row{ display:flex; gap:16px; align-items:center; padding:18px 0; border-bottom:1.5px dashed var(--paper-3); }
.reach .row:last-child{ border-bottom:0; }
.reach .chip{ flex:0 0 46px; width:46px; height:46px; border-radius:14px; background:var(--lilac-wash); color:var(--grape); display:grid; place-content:center; }
.reach .chip .svg-ic{ width:24px; height:24px; }
.reach .lbl{ display:block; font-weight:700; color:var(--grape); font-size:.72rem; letter-spacing:.06em; text-transform:uppercase; margin-bottom:2px; }
.reach .row a, .reach .row .val{ color:var(--ink); text-decoration:none; font-weight:600; font-size:1rem; line-height:1.4; }
.reach .row a:hover{ color:var(--grape); }
.owner-card{ background:var(--lilac-wash); border-radius:var(--r-lg); padding:28px; margin-top:16px; text-align:center; }
.owner-card .frame{ width:96px; height:96px; border-radius:50%; overflow:hidden; margin:0 auto 12px; border:5px solid #fff; box-shadow:0 12px 22px -14px rgba(78,44,122,.6); }
.owner-card .frame img{ width:100%; height:100%; object-fit:cover; }
.owner-card .name{ font-family:"Caprasimo",serif; color:var(--grape); font-size:1.3rem; }
.owner-card .role{ color:var(--marigold); font-weight:700; font-size:.84rem; text-transform:uppercase; letter-spacing:.04em; }

.form-card{ background:var(--paper); border:1.5px solid var(--paper-3); border-radius:var(--r-lg); padding:32px; box-shadow:var(--shadow); }
.form-card h3{ font-size:1.5rem; margin-bottom:.2em; }
.form-card p.note{ color:var(--ink-soft); font-size:.95rem; margin:0 0 1.2em; }
.field{ margin-bottom:14px; }
.field label{ display:block; font-weight:600; font-size:.86rem; color:var(--grape); margin-bottom:5px; }
.field input, .field textarea{ width:100%; font-family:"Hanken Grotesk",sans-serif; font-size:1rem; color:var(--ink); background:var(--paper-2); border:1.5px solid var(--paper-3); border-radius:12px; padding:12px 14px; }
.field input:focus, .field textarea:focus{ outline:none; border-color:var(--grape-2); background:#fff; }
.field textarea{ min-height:120px; resize:vertical; }
.map-embed{ width:100%; aspect-ratio:16/9; border:0; border-radius:var(--r-md); margin-top:2.2em; box-shadow:var(--shadow); display:block; }

/* ---------- visit ---------- */
.visit-grid{ display:grid; grid-template-columns:1fr 1fr; gap:40px; margin-top:2.2em; align-items:start; }
.visit-card{ background:var(--paper); border:1.5px solid var(--paper-3); border-radius:var(--r-lg); padding:32px; box-shadow:var(--shadow); }
.visit-card h3{ font-size:1.45rem; margin-bottom:.5em; }
.info-line{ display:flex; gap:12px; align-items:flex-start; padding:12px 0; border-bottom:1.5px dashed var(--paper-3); }
.info-line:last-child{ border-bottom:0; }
.info-line .ic{ flex:0 0 30px; color:var(--grape); display:flex; align-items:center; justify-content:center; }
.info-line .ic .svg-ic{ width:22px; height:22px; }
.info-line a{ color:var(--grape); font-weight:700; text-decoration:none; }
.info-line a:hover{ text-decoration:underline; }
.hours{ list-style:none; margin:0; padding:0; }
.hours li{ display:flex; justify-content:space-between; padding:8px 0; border-bottom:1.5px dashed var(--paper-3); font-size:.98rem; }
.hours li:last-child{ border-bottom:0; }
.hours .day{ color:var(--ink); font-weight:600; }
.hours .time{ color:var(--ink-soft); }
.hours .closed{ color:var(--lilac); }
.visit-cta{ margin-top:1.4em; display:flex; flex-wrap:wrap; gap:12px; }

/* ---------- about: "what you'll find" — capped block, centered, text left ---------- */
.belief{ max-width:720px; margin:0 auto; }
.about-note{ max-width:60ch; margin:34px auto 0; color:var(--ink); font-size:1rem; text-align:center; }
.about-values{ display:grid; grid-template-columns:1fr 1fr; gap:28px 40px; margin-top:2.2em; }
.av{ display:flex; gap:16px; align-items:flex-start; }
.av .avic{ flex:0 0 48px; width:48px; height:48px; border-radius:14px; display:grid; place-content:center; color:#fff; }
.av .avic.c1{ background:var(--grape-2); } .av .avic.c2{ background:var(--marigold); } .av .avic.c3{ background:var(--leaf); } .av .avic.c4{ background:var(--lilac); }
.av .avic .svg-ic{ width:25px; height:25px; }
.av b{ display:block; font-family:"Caprasimo",serif; font-weight:400; color:var(--grape); font-size:1.14rem; margin-bottom:.12em; }
.av span{ font-size:.98rem; color:var(--ink-soft); line-height:1.5; }

/* ---------- about: teacher profiles (clear top-to-bottom flow) ---------- */
.teacher-grid.stack{ grid-template-columns:1fr; gap:24px; }
.tprofile{ display:grid; grid-template-columns:180px 1fr; gap:34px; background:var(--paper); border-radius:var(--r-lg); padding:34px; box-shadow:var(--shadow); align-items:start; }
.tprofile .tbody{ max-width:62ch; }
.tprofile .tphoto .frame{ width:160px; height:192px; border-radius:46% 46% 46% 46% / 40% 40% 60% 60%; overflow:hidden; border:6px solid #fff; box-shadow:0 14px 24px -16px rgba(78,44,122,.6); rotate:-2deg; background:var(--lilac-wash); }
.tprofile .tphoto .frame img{ width:100%; height:100%; object-fit:cover; }
.tprofile .tphoto.noimg .frame{ display:grid; place-content:center; background:var(--paper-2); }
.tprofile .tphoto.noimg .frame img{ width:84px; height:auto; }
.tprofile .tname{ font-family:"Caprasimo",serif; color:var(--grape); font-size:1.65rem; line-height:1; }
.tprofile .trole{ font-weight:700; color:var(--marigold); font-size:.8rem; letter-spacing:.05em; text-transform:uppercase; margin:.4em 0 0; }
.tprofile .ttag{ font-family:"Caveat",cursive; color:var(--grape-2); font-size:1.5rem; font-weight:700; line-height:1; margin:.25em 0 .75em; }
.tprofile p.bio{ margin:0 0 .8em; color:var(--ink); font-size:1rem; }
.tprofile .tcreds{ margin-top:.5em; border-top:1.5px dashed var(--paper-3); padding-top:.9em; }
.tprofile .tcreds .clbl{ display:block; font-weight:700; color:var(--grape); text-transform:uppercase; letter-spacing:.05em; font-size:.72rem; margin-bottom:.35em; }
.tprofile .tcreds p{ font-size:.85rem; color:var(--ink-soft); line-height:1.55; margin:0; }

/* ---------- cta band (soft) ---------- */
.softcta{ text-align:center; }
.softcta .inner{ max-width:720px; margin:0 auto; background:var(--lilac-wash); border-radius:var(--r-lg); padding:44px 32px; }
.softcta h2{ font-size:clamp(1.8rem,3.6vw,2.6rem); }
.softcta p{ color:var(--ink); margin:.6em auto 1.4em; max-width:46ch; }
.softcta .actions{ display:flex; flex-wrap:wrap; gap:12px; justify-content:center; }

/* ---------- footer ---------- */
footer{ background:var(--grape); color:#efe7f7; padding:60px 0 26px; margin-top:30px; position:relative; }
.foot-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:30px; }
.foot-brand img{ height:60px; filter:brightness(0) invert(1); opacity:.96; }
.foot-brand p{ margin:1em 0 0; font-size:.95rem; color:#d7c8ec; max-width:34ch; }
footer h4{ font-family:"Caprasimo",serif; font-weight:400; font-size:1.15rem; color:#fff; margin:0 0 .7em; }
footer ul{ list-style:none; margin:0; padding:0; }
footer li{ margin-bottom:.5em; }
footer a{ color:#e4d9f3; text-decoration:none; }
footer a:hover{ color:#fff; text-decoration:underline; }
.foot-bottom{ margin-top:40px; padding-top:18px; border-top:1px solid rgba(255,255,255,.18); display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px; font-size:.84rem; color:#c5b4de; }
.foot-bottom a{ color:#c5b4de; }

/* ---------- mobile sticky bar ---------- */
.callbar{ position:fixed; left:0; right:0; bottom:0; z-index:40; display:none; gap:10px; padding:10px 14px calc(10px + env(safe-area-inset-bottom)); background:rgba(251,246,238,.94); backdrop-filter:blur(8px); border-top:1.5px solid var(--paper-3); box-shadow:0 -10px 30px -18px rgba(78,44,122,.5); }
.callbar .btn{ flex:1; justify-content:center; padding:.9em 1em; font-size:1rem; }

/* ---------- reveal ---------- */
.reveal{ opacity:0; transform:translateY(26px); transition:opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1); }
.reveal.in{ opacity:1; transform:none; }
.d1{ transition-delay:.08s; } .d2{ transition-delay:.16s; } .d3{ transition-delay:.24s; } .d4{ transition-delay:.32s; }

/* ---------- responsive ---------- */
@media (max-width: 980px){
  .mast-nav{ position:fixed; top:0; right:0; bottom:0; width:min(82vw,340px); background:var(--paper); flex-direction:column; align-items:flex-start; justify-content:flex-start; gap:6px; padding:90px 30px 30px; box-shadow:-20px 0 50px -20px rgba(78,44,122,.5); transform:translateX(100%); transition:transform .3s cubic-bezier(.2,.7,.2,1); z-index:45; }
  .mast-nav.open{ transform:translateX(0); }
  .mast-nav a.navlink{ font-size:1.15rem; padding:8px 0; width:100%; border-bottom:1.5px dashed var(--paper-3); }
  .mast-nav a.navlink.current::after{ display:none; }
  .mast-nav .mast-phone{ font-size:1.1rem; margin-top:6px; }
  .mast-nav .btn{ margin-top:12px; }
  .navtoggle{ display:flex; position:relative; z-index:60; }
  .navscrim{ position:fixed; inset:0; background:rgba(40,24,66,.4); opacity:0; pointer-events:none; transition:opacity .3s ease; z-index:44; }
  .navscrim.show{ opacity:1; pointer-events:auto; }

  .hero-grid{ grid-template-columns:1fr; gap:30px; }
  .hero-art{ max-width:440px; margin:0 auto; }
  .sec-head.split{ grid-template-columns:1fr; gap:12px; align-items:start; }
  .mission-split{ grid-template-columns:1fr; gap:18px; }
  .teacher-grid{ grid-template-columns:1fr; }
  .about-hero .container{ grid-template-columns:1fr; gap:26px; }
  .about-hero .a-media{ max-width:380px; }
  .about-values{ grid-template-columns:1fr; gap:20px; max-width:none; }
  .tprofile{ grid-template-columns:1fr; gap:18px; justify-items:start; }
  .quotes{ grid-template-columns:1fr; }
  .visit-grid, .contact-grid{ grid-template-columns:1fr; }
  .fam-grid{ grid-template-columns:1fr; }
  .steps{ grid-template-columns:1fr; }
  .values{ grid-template-columns:1fr 1fr; }
  .foot-grid{ grid-template-columns:1fr 1fr; }
}
@media (max-width: 680px){
  html{ font-size:17px; }
  .sec{ padding:54px 0; }
  .verse{ grid-template-columns:auto 1fr; gap:18px; }
  .verse .vlink{ grid-column:2; justify-self:start; }
  .badge-est{ width:96px; height:96px; left:-4px; }
  .badge-est b{ font-size:1.25rem; }
  .hero-art .float-bird{ right:-6px; width:84px; top:-32px; }
  .foot-grid{ grid-template-columns:1fr; }
  .contact-cards{ grid-template-columns:1fr; }
  .values{ grid-template-columns:1fr 1fr; }
  .callbar{ display:flex; }
  body{ padding-bottom:74px; }
  .qbig{ padding:34px 26px; }
  .sched-scroll{ overflow-x:auto; -webkit-overflow-scrolling:touch; margin:0 -26px; padding:0 26px; }
  .sched{ min-width:560px; }
}
@media (prefers-reduced-motion: reduce){
  *{ animation:none !important; scroll-behavior:auto !important; }
  .reveal{ opacity:1 !important; transform:none !important; }
}
