@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@500;600;700&display=swap');

:root {
  --ink: #202b2a;
  --muted: #62706c;
  --green: #173d37;
  --green-2: #24574a;
  --gold: #c7a451;
  --cream: #f6f4ef;
  --paper: #fffefa;
  --line: #e2e0d8;
  --shadow: 0 18px 55px rgba(23, 45, 39, .12);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: 'DM Sans', Arial, sans-serif; line-height: 1.65; }
a { color: inherit; }
img { display: block; max-width: 100%; }
.wrap { width: min(1160px, calc(100% - 44px)); margin-inline: auto; }
.eyebrow { margin: 0 0 13px; color: var(--gold); font-weight: 700; font-size: .76rem; letter-spacing: .16em; text-transform: uppercase; }
h1,h2,h3 { margin-top: 0; line-height: 1.12; }
h1,h2 { font-family: 'Playfair Display', Georgia, serif; font-weight: 500; }
h1 { font-size: clamp(2.6rem, 5.5vw, 5.1rem); letter-spacing: -.035em; }
h2 { font-size: clamp(2rem, 3.7vw, 3.3rem); letter-spacing: -.025em; }
h3 { font-size: 1.15rem; }
p { margin: 0 0 1rem; }
.site-header { position: sticky; top: 0; z-index: 20; background: rgba(255,254,250,.96); border-bottom: 1px solid rgba(226,224,216,.8); backdrop-filter: blur(12px); }
.header-inner { min-height: 88px; display: flex; align-items: center; justify-content: space-between; gap: 28px; }
.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; min-width: 220px; }
.brand img { width: 55px; height: 55px; object-fit: contain; }
.brand span { color: var(--green); font-size: .92rem; line-height: 1.2; font-weight: 700; letter-spacing: .01em; }
.brand small { display: block; margin-top: 4px; color: var(--muted); font-size: .65rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; }
.nav { display: flex; flex-shrink: 0; align-items: center; gap: clamp(16px, 2.4vw, 34px); }
.nav a { color: #35413e; font-size: .9rem; white-space: nowrap; text-decoration: none; transition: color .2s; }
.nav a:hover,.nav a[aria-current="page"] { color: var(--green-2); }
.nav .nav-cta { padding: 11px 17px; color: white; background: var(--green); border-radius: 4px; }
.menu-toggle { display: none; border: 0; background: transparent; color: var(--green); font: inherit; font-size: 1.55rem; }
.hero { position: relative; overflow: hidden; color: white; background: var(--green); }
.hero::before { content: ''; position: absolute; inset: 0 0 0 45%; background: linear-gradient(90deg,var(--green) 0%,rgba(23,61,55,.35) 32%,rgba(23,61,55,.1) 100%),url('assets/brand-abstract.webp') center/cover; opacity: .82; }
.hero-inner { position: relative; min-height: 620px; display: grid; align-items: center; padding-block: 70px; }
.hero-copy { max-width: 680px; }
.hero h1 { max-width: 700px; margin-bottom: 21px; }
.hero .lede { max-width: 650px; color: rgba(255,255,255,.84); font-size: 1.12rem; }
.hero .lede strong { color: white; font-family: 'Playfair Display',Georgia,serif; font-size: 1.3em; font-weight: 500; }
.hero .eyebrow { color: #e5ca81; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.button { display: inline-flex; justify-content: center; align-items: center; min-height: 48px; padding: 0 21px; color: var(--green); background: #fffefa; border: 1px solid #fffefa; border-radius: 3px; font-size: .9rem; font-weight: 700; text-decoration: none; }
.button.outline { color: white; background: transparent; border-color: rgba(255,255,255,.55); }
.hero-note { display: flex; gap: 16px; align-items: center; margin-top: 48px; color: rgba(255,255,255,.8); font-size: .88rem; }
.hero-note strong { color: white; font-size: 1.65rem; font-family: 'Playfair Display',Georgia,serif; font-weight: 500; }
.section { padding-block: 94px; }
.section.soft { background: var(--cream); }
.section.dark { color: white; background: var(--green); }
.section-heading { max-width: 720px; margin: 0 auto 47px; text-align: center; }
.section-heading p { color: var(--muted); }
.section.dark .section-heading p { color: rgba(255,255,255,.7); }
.grid { display: grid; gap: 22px; }
.grid.services { grid-template-columns: repeat(2,minmax(0,1fr)); }
.card { padding: 30px; background: white; border: 1px solid var(--line); border-radius: 5px; box-shadow: 0 10px 26px rgba(35,53,46,.035); }
.card .number { display: inline-block; margin-bottom: 19px; color: var(--gold); font-family: 'Playfair Display',Georgia,serif; font-size: 1.55rem; }
.card h3 { color: var(--green); }
.card p { margin-bottom: 0; color: var(--muted); font-size: .95rem; }
.steps { grid-template-columns: repeat(4,1fr); counter-reset: steps; }
.step { position: relative; padding: 25px 22px 25px 0; border-top: 1px solid rgba(255,255,255,.25); }
.step::before { counter-increment: steps; content: '0' counter(steps); display: block; margin: -3px 0 19px; color: #e5ca81; font-family: 'Playfair Display',Georgia,serif; font-size: 1.45rem; }
.step p { color: rgba(255,255,255,.72); font-size: .91rem; }
.testimonial-grid { grid-template-columns: repeat(3,1fr); }
.quote { padding: 28px; background: #fff; border: 1px solid var(--line); }
.quote .mark { color: var(--gold); font-family: Georgia,serif; font-size: 3.5rem; line-height: .75; }
.quote blockquote { margin: 15px 0 21px; color: #495550; font-family: 'Playfair Display',Georgia,serif; font-size: 1.04rem; line-height: 1.55; }
.quote cite { color: var(--green); font-size: .83rem; font-style: normal; font-weight: 700; }
.partners { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 46px; }
.partners img { width: auto; height: 55px; max-width: 190px; object-fit: contain; filter: grayscale(1); opacity: .72; }
.partner-name { min-width: 142px; padding: 12px 20px; color: #53615b; border: 1px solid var(--line); border-radius: 3px; text-align: center; font-size: .98rem; font-weight: 700; letter-spacing: .035em; }
.contact-band { display: grid; grid-template-columns: 1fr 1fr; gap: 50px; align-items: start; }
.contact-band h2 { margin-bottom: 17px; }
.contact-list { display: grid; gap: 12px; margin-top: 26px; }
.contact-list a,.contact-list span { color: var(--green); text-decoration: none; }
.contact-form { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.contact-form label { display: grid; gap: 6px; color: #4c5a55; font-size: .82rem; font-weight: 600; }
.contact-form label.full { grid-column: 1/-1; }
input,textarea,select { width: 100%; padding: 12px 13px; color: var(--ink); background: #fff; border: 1px solid #d8dcd5; border-radius: 3px; font: inherit; }
textarea { min-height: 125px; resize: vertical; }
.contact-form button { justify-self: start; padding: 13px 23px; color: white; background: var(--green); border: 0; border-radius: 3px; font: inherit; font-weight: 700; cursor: pointer; }
.fine-print { color: var(--muted); font-size: .78rem; }
.feedback { margin-top: 55px; padding: 28px; background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.2); }
.feedback h3 { margin-bottom: 8px; }
.feedback .contact-form { margin-top: 18px; }
.feedback .contact-form label { color: rgba(255,255,255,.84); }
.feedback input,.feedback select,.feedback textarea { color: white; background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.27); }
.feedback select option { color: var(--ink); }
.feedback .contact-form button { color: var(--green); background: #fffefa; }
.page-hero { padding-block: 100px 88px; color: white; background: linear-gradient(110deg,rgba(17,55,48,.96),rgba(17,55,48,.74)),url('assets/brand-abstract.webp') center 45%/cover; }
.page-hero h1 { max-width: 800px; margin-bottom: 14px; font-size: clamp(2.7rem,5vw,4.6rem); }
.page-hero p { max-width: 700px; color: rgba(255,255,255,.77); font-size: 1.08rem; }
.page-hero h1 { max-width: 1100px; }
.page-hero p:not(.eyebrow) { max-width: 1120px; }
.content-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 55px; align-items: center; }
.feature-photo { min-height: 370px; overflow: hidden; border-radius: 4px; box-shadow: var(--shadow); }
.feature-photo img { width: 100%; height: 430px; object-fit: cover; }
.about-team-photo img { height: 320px; object-position: center 18%; }
.about-page .section:not(.philosophy-section) { padding-block: 70px; }
.about-team-photo { min-height: 0; }
.about-page .section.about-intro-section { padding-bottom: 20px; }
.principals-section { background: #edf2ef; }
.about-page .section.principals-section { padding-block: 26px 42px; }
.principals-section .section-heading { margin-bottom: 28px; }
.about-page .principals-section + .philosophy-section { padding-top: 28px; }
.about-page .philosophy-section + .section { padding-top: 28px; }
.philosophies { grid-template-columns: repeat(2,1fr); }
.philosophy-carousel { max-width: 760px; margin-inline: auto; }
.philosophy-section { padding-block: 62px 54px; }
.philosophy-section .section-heading { margin-bottom: 24px; }
.philosophy-slide { min-height: 240px; }
.philosophy-slide[hidden] { display: none; }
.philosophy-slide.slide-enter { animation: philosophy-slide-in .34s ease-out both; }
@keyframes philosophy-slide-in { from { opacity: 0; transform: translateX(var(--slide-from-x,24px)); } to { opacity: 1; transform: translateX(0); } }
.principal-quotes { grid-template-columns: repeat(2,minmax(0,1fr)); }
.principal-quote figcaption { margin-bottom: 17px; }
.principal-quote cite { color: var(--green); font-size: .93rem; font-style: normal; font-weight: 700; }
.principal-quote blockquote { margin-top: 10px; }
.carousel-controls { display: flex; align-items: center; justify-content: center; gap: 20px; margin-top: 14px; color: var(--green); font-size: .88rem; font-weight: 700; }
.carousel-controls button { display: inline-grid; place-items: center; width: 42px; height: 42px; color: var(--green); background: transparent; border: 1px solid var(--green); border-radius: 50%; font: inherit; font-size: 1.5rem; line-height: 1; cursor: pointer; }
.carousel-controls button:hover,.carousel-controls button:focus-visible { color: white; background: var(--green); }
.section.dark .carousel-controls { color: white; }
.section.dark .carousel-controls button { color: white; border-color: rgba(255,255,255,.72); }
.section.dark .carousel-controls button:hover,.section.dark .carousel-controls button:focus-visible { color: var(--green); background: white; }
.ethics-section .section-heading h2 { color: var(--gold); }
.values { grid-template-columns: repeat(2,minmax(0,1fr)); }
.value-card { padding: 22px; border-top: 2px solid var(--gold); background: white; }
.value-card p { margin: 0; color: var(--muted); font-size: .87rem; }
.team-section + .team-section { margin-top: 68px; }
.business-sections { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 34px; }
.business-sections .team-section { margin-top: 50px; }
.business-sections .team-grid { grid-template-columns: 1fr; }
.team-heading { display: flex; align-items: end; justify-content: space-between; gap: 18px; margin-bottom: 25px; padding-bottom: 17px; border-bottom: 1px solid var(--line); }
.team-heading h2 { margin: 0; color: var(--green); font-size: 2rem; }
.team-heading p { margin: 0; color: var(--muted); }
.team-grid { grid-template-columns: repeat(4,1fr); }
.person { overflow: hidden; background: white; border: 1px solid var(--line); border-radius: 5px; }
.person img { width: 100%; aspect-ratio: 4/4.65; object-fit: cover; object-position: center 23%; background: #eae7df; }
.person-copy { min-height: 120px; padding: 18px 19px 20px; }
.person-copy h3 { margin-bottom: 6px; color: var(--green); }
.person-copy p { margin: 0; color: var(--muted); font-size: .86rem; }
.adviser-link { color: var(--green-2); text-decoration: underline; text-underline-offset: 3px; }
.licensee-box { max-width: 900px; padding: 44px; background: white; border: 1px solid var(--line); box-shadow: var(--shadow); }
.licensee-box p { margin-bottom: 0; font-size: 1.09rem; line-height: 1.9; }
.policy-links { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 29px; }
.policy-links a { padding: 12px 17px; color: var(--green); border: 1px solid var(--line); text-decoration: none; font-weight: 600; }
.site-footer { padding: 54px 0 26px; color: rgba(255,255,255,.75); background: #102e29; }
.footer-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 70px; padding-bottom: 38px; }
.footer-locations { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 30px; }
.footer-brand { color: white; font-size: 1.1rem; font-weight: 700; }
.footer-grid h3 { margin-bottom: 14px; color: #f4e7bd; font-size: .96rem; }
.footer-grid p,.footer-grid a { color: rgba(255,255,255,.72); font-size: .87rem; }
.footer-grid a { display: block; margin: 7px 0; text-decoration: none; }
.footer-contact .footer-licensee-link { display: inline-block; margin-top: 18px; color: #e5ca81; text-decoration: underline; text-underline-offset: 4px; }
.disclaimer { padding: 23px 0 18px; border-top: 1px solid rgba(255,255,255,.16); font-size: .72rem; line-height: 1.7; }
.disclaimer p { margin-bottom: 9px; }
.footer-bottom { display: flex; justify-content: space-between; gap: 20px; padding-top: 17px; border-top: 1px solid rgba(255,255,255,.16); font-size: .75rem; }
.footer-bottom a { color: rgba(255,255,255,.72); }
.mobile-only { display: none; }

@media (max-width: 900px) {
  .nav { gap: 15px; }
  .services,.testimonial-grid { grid-template-columns: repeat(2,1fr); }
  .team-grid { grid-template-columns: repeat(3,1fr); }
  .steps { grid-template-columns: repeat(2,1fr); }
  .values { grid-template-columns: repeat(3,1fr); }
}
@media (max-width: 650px) {
  .wrap { width: min(100% - 32px,1160px); }
  .header-inner { min-height: 74px; }
  .brand { min-width: 0; }
  .brand img { width: 46px; height: 46px; }
  .brand span { font-size: .82rem; }
  .menu-toggle { display: block; }
  .nav { display: none; position: absolute; left: 0; right: 0; top: 74px; padding: 16px 22px 22px; flex-direction: column; align-items: stretch; background: var(--paper); border-bottom: 1px solid var(--line); }
  .nav.open { display: flex; }
  .nav a { padding: 7px 0; }
  .nav .nav-cta { padding: 11px 14px; text-align: center; }
  .hero-inner { min-height: 610px; }
  .hero::before { inset: 0; opacity: .38; }
  .hero .lede { font-size: 1rem; }
  .section { padding-block: 70px; }
  .about-page .section:not(.philosophy-section) { padding-block: 54px; }
  .about-page .section.about-intro-section { padding-bottom: 18px; }
  .about-page .section.principals-section { padding-block: 24px 36px; }
  .about-page .principals-section + .philosophy-section { padding-top: 24px; }
  .about-page .philosophy-section + .section { padding-top: 24px; }
  .philosophy-section { padding-block: 52px 42px; }
  .services,.testimonial-grid,.contact-band,.content-grid,.footer-grid,.footer-locations { grid-template-columns: 1fr; }
  .steps { gap: 8px 20px; }
  .team-grid { grid-template-columns: repeat(2,1fr); gap: 12px; }
  .business-sections { grid-template-columns: 1fr; }
  .person-copy { padding: 14px; }
  .person-copy h3 { font-size: 1rem; }
  .person-copy p { font-size: .78rem; }
  .values,.philosophies { grid-template-columns: 1fr; }
  .principal-quotes { grid-template-columns: 1fr; }
  .feature-photo img { height: 300px; }
  .about-team-photo img { height: 300px; }
  .licensee-box { padding: 26px; }
  .contact-form { grid-template-columns: 1fr; }
  .contact-form label.full { grid-column: auto; }
  .footer-grid { gap: 27px; }
  .footer-bottom { flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
  .philosophy-slide.slide-enter { animation-duration: .01ms; }
}

/* Align business team portraits with the standard staff card image size. */
.business-sections .person { max-width: 267px; }
.business-sections .person img { width: 100%; aspect-ratio: 4/4.65; object-fit: cover; object-position: center 23%; }

/* Keep the Financial Planners group close to the page hero. */
.page-hero + .section { padding-top: 34px; }

.licensee-logo { width: min(100%,360px); max-height: 160px; margin: 0 auto; object-fit: contain; }
.licensee-box .policy-links { justify-content: center; }

.licensee-summary-section { background: #fff; padding-block: 58px; }
.licensee-box { display: grid; grid-template-columns: minmax(0,1.45fr) minmax(230px,.65fr); align-items: center; gap: 60px; max-width: none; padding: 0; background: transparent; border: 0; box-shadow: none; }
.licensee-copy h2 { margin-bottom: 26px; color: var(--green); font: 700 clamp(1.8rem,3vw,2.4rem)/1.15 'DM Sans',Arial,sans-serif; letter-spacing: 0; }
.licensee-box p { margin-bottom: 22px; font-size: 1.05rem; line-height: 1.75; }
.licensee-logo { width: min(100%,195px); max-height: none; margin: 0 auto; object-fit: contain; }
.licensee-box .policy-links { justify-content: flex-start; }
@media (max-width: 650px) { .licensee-box { grid-template-columns: 1fr; gap: 30px; } .licensee-logo { width: min(72%,169px); grid-row: 1; } .licensee-copy h2 { margin-bottom: 18px; } }

/* Local appointment booking prototype. */
.booking-hero { padding: 64px 0 50px; color: white; background: linear-gradient(110deg,rgba(17,55,48,.97),rgba(17,55,48,.78)),url('assets/brand-abstract.webp') center 45%/cover; }
.booking-hero .eyebrow { color: #e5ca81; }
.booking-hero h1 { margin-bottom: 10px; font-size: clamp(2.6rem,5vw,4rem); }
.booking-hero > .wrap > p:last-child { margin: 0; color: rgba(255,255,255,.82); }
.booking-section { padding: 36px 0 76px; background: var(--cream); }
.sample-notice,.booking-lead-time { margin-bottom: 12px; padding: 13px 16px; border-radius: 4px; color: #294c44; background: #e7efeb; font-size: .9rem; }
.booking-lead-time { margin-bottom: 22px; padding: 0; color: var(--muted); background: transparent; }
.booking-location { display: flex; gap: 7px; width: fit-content; margin-bottom: 18px; padding: 5px; background: #eae8e1; border-radius: 6px; }
.location-option { min-width: 118px; padding: 10px 18px; color: var(--green); background: transparent; border: 0; border-radius: 4px; font: inherit; font-weight: 700; cursor: pointer; }
.location-option.is-selected { color: white; background: var(--green); }
.booking-layout { display: grid; grid-template-columns: minmax(0,1.15fr) minmax(300px,.85fr); gap: 22px; align-items: start; }
.calendar-panel,.times-panel,.contact-panel,.booking-confirmation { padding: 25px; background: white; border: 1px solid var(--line); border-radius: 6px; box-shadow: 0 10px 26px rgba(35,53,46,.035); }
.calendar-heading { display: grid; grid-template-columns: 44px 1fr 44px; align-items: center; margin-bottom: 18px; text-align: center; }
.calendar-heading h2,.times-panel h2,.contact-panel h2,.booking-confirmation h2 { margin: 0; color: var(--ink); font-size: 1.35rem; }
.month-control { width: 42px; height: 42px; color: var(--green); background: white; border: 1px solid var(--line); border-radius: 50%; font: inherit; font-size: 1.65rem; line-height: 1; cursor: pointer; }
.month-control:disabled { color: #c3c7c3; cursor: default; }
.calendar-weekdays,.calendar-grid { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 5px; }
.calendar-weekdays { margin-bottom: 5px; color: var(--muted); text-align: center; font-size: .78rem; }
.calendar-cell,.calendar-blank { display: grid; place-items: center; min-width: 0; aspect-ratio: 1; }
.calendar-day { position: relative; display: grid; place-items: center; width: 100%; height: 100%; padding: 0; color: var(--ink); background: transparent; border: 0; border-radius: 50%; font: inherit; cursor: pointer; }
.calendar-day:hover:not(:disabled),.calendar-day:focus-visible { outline: 2px solid #89a99e; outline-offset: 1px; }
.calendar-day:disabled { color: #c3c8c4; background: #f0f1ef; cursor: default; }
.calendar-day.is-available:not(.is-selected)::after { position: absolute; bottom: 7%; width: 4px; height: 4px; content: ''; background: var(--gold); border-radius: 50%; }
.calendar-day.is-selected { color: white; background: #00856c; font-weight: 700; }
.calendar-key { display: flex; align-items: center; gap: 8px; margin: 14px 0 0; color: var(--muted); font-size: .78rem; }
.calendar-key span { width: 7px; height: 7px; background: var(--gold); border-radius: 50%; }
.times-panel h2 { margin-bottom: 12px; }
.times-instruction { margin: 0 0 14px; color: var(--muted); font-size: .9rem; }
.time-options { display: grid; gap: 10px; }
.time-option { min-height: 62px; padding: 15px 18px; color: var(--ink); background: #fff; border: 1px solid var(--line); border-radius: 14px; text-align: left; font: inherit; font-weight: 600; cursor: pointer; transition: border-color .15s,background .15s,color .15s; }
.time-option:hover,.time-option:focus-visible { border-color: var(--green-2); }
.time-option.is-selected { color: white; background: var(--green); border-color: var(--green); }
.contact-panel { margin-top: 22px; }
.contact-panel > p { margin: 7px 0 18px; color: var(--muted); }
.selected-appointment { display: grid; gap: 3px; margin-bottom: 21px; padding: 13px 16px; color: var(--green); background: #e7efeb; border-radius: 4px; }
.selected-appointment span { font-size: .8rem; }
.booking-form { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.booking-form label { display: grid; gap: 5px; color: #4c5a55; font-size: .84rem; font-weight: 600; }
.booking-form input { min-height: 46px; }
.booking-form button { grid-column: 1/-1; justify-self: start; margin-top: 4px; background: var(--green); color: white; cursor: pointer; }
.booking-confirmation { margin-top: 22px; }
.booking-confirmation .eyebrow { margin-bottom: 8px; }
.booking-confirmation h2 { margin-bottom: 10px; }
.booking-confirmation p:not(.eyebrow) { max-width: 680px; color: var(--muted); }
.booking-confirmation button { color: white; background: var(--green); cursor: pointer; }
[hidden] { display: none !important; }
@media (max-width: 760px) { .booking-layout { grid-template-columns: 1fr; } }
@media (max-width: 520px) { .booking-hero { padding: 48px 0 38px; } .booking-section { padding: 24px 0 52px; } .sample-notice { font-size: .82rem; } .calendar-panel,.times-panel,.contact-panel,.booking-confirmation { padding: 17px; } .calendar-weekdays,.calendar-grid { gap: 3px; } .calendar-weekdays { font-size: .7rem; } .calendar-day { font-size: .9rem; } .calendar-day:disabled { background: #f1f2f0; } .calendar-day.is-available:not(.is-selected)::after { bottom: 5%; } .location-option { min-width: 0; flex: 1; } .booking-form { grid-template-columns: 1fr; } .booking-form button { grid-column: auto; } }
.booking-summary-field { grid-column: 1/-1; }
.booking-summary-field .field-hint { color: var(--muted); font-size: .78rem; font-weight: 400; }
.booking-summary-field textarea { min-height: 110px; }
