/* =============================================
   RESET & BASE
============================================= */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; font-size: 16px; }
body {
  font-family: 'Sora', sans-serif;
  background: #FAFAF8;
  color: #1E1E1E;
  line-height: 1.65;
  max-width: 100vw;
  overflow-x: hidden;
}
img { display: block; max-width: 100%; }
a { text-decoration: none; color: inherit; }
ul { list-style: none; }
button { cursor: pointer; border: none; background: none; font-family: inherit; }
input, textarea, select { font-family: inherit; }

/* =============================================
   TOKENS
============================================= */
:root {
  --sage:      #7A8C6E;
  --sage-lt:   #A4B896;
  --sage-dk:   #4E5F44;
  --terra:     #C4623A;
  --terra-lt:  #D9825E;
  --cream:     #FAFAF8;
  --cream-dk:  #F1EEE8;
  --sand:      #E8E0D4;
  --ink:       #1E1E1E;
  --ink-lt:    #3A3A3A;
  --muted:     #7A7268;
  --muted-lt:  #ADA49A;
  --white:     #FFFFFF;
  --border:    #E0D8CE;
  --shadow-sm: 0 2px 8px rgba(30,30,30,.06);
  --shadow-md: 0 6px 24px rgba(30,30,30,.10);
  --shadow-lg: 0 16px 56px rgba(30,30,30,.14);
  --r-sm: 6px; --r-md: 14px; --r-lg: 22px; --r-xl: 32px;
  --t: 0.28s ease;
}

/* =============================================
   TYPOGRAPHY
============================================= */
@import url('https://fonts.googleapis.com/css2?family=Sora:wght@300;400;500;600;700&family=Fraunces:ital,wght@0,300;0,600;0,700;1,300;1,600&family=Space+Mono:wght@400;700&display=swap');

h1, h2, h3, h4 { font-family: 'Fraunces', serif; line-height: 1.1; font-weight: 600; }
em { font-style: italic; }

.page-title { font-size: clamp(42px, 6vw, 88px); font-weight: 700; color: var(--ink); line-height: 1.0; }
.section-title { font-size: clamp(28px, 3.5vw, 52px); font-weight: 600; color: var(--ink); line-height: 1.15; }
.lead { font-size: clamp(16px, 1.8vw, 20px); color: var(--muted); line-height: 1.75; }

.tag {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: 'Space Mono', monospace;
  font-size: 13px; letter-spacing: .18em; text-transform: uppercase;
  color: var(--offwhite); margin-bottom: 20px;
}
.section-divider { color: var(--muted); margin: 60px 0px -80px 0px; }
.tag::before { content:''; display:block; width:20px; height:2px; background:var(--terra); border-radius:2px; }

/* =============================================
   LAYOUT
============================================= */
.wrap { width: 90%; max-width: 1200px; /* controls how wide content can go */ margin: 0 auto; }
@media (max-width:640px) { .wrap { padding: 0 20px; } }

.section-pad { padding: 120px 0; }
@media (max-width:768px) { .section-pad { padding: 72px 0; } }

/* =============================================
   SCROLL PROGRESS
============================================= */
#progress-bar {
  position: fixed; top:0; left:0; height: 3px;
  width: 0%; background: var(--terra);
  z-index: 9999; transition: width .08s linear;
  border-radius: 0 2px 2px 0;
}

/* =============================================
   NAVBAR
============================================= */
#navbar {
  position: fixed; top:0; left:0; right:0; z-index: 1000;
  transition: background var(--t), box-shadow var(--t);
}
#navbar.scrolled { background: rgba(250,250,248,.65); backdrop-filter: blur(14px); box-shadow: 0 1px 0 var(--border); }

.nav-wrap { display: flex; align-items: center; justify-content: space-between; max-width: 1240px; margin: 0 auto; padding: 22px 40px; }

.nav-logo { display: flex; align-items: center; gap: 12px; }
.nav-logo-mark {
  width: 40px; height: 40px; border-radius: var(--r-sm);
  background: var(--sage-dk);
  display: flex; align-items: center; justify-content: center;
  font-family: 'Fraunces', serif; font-size: 16px; font-weight: 700; color: #fff; letter-spacing: .03em;
}
.nav-logo-text { display: flex; flex-direction: column; }
.nav-logo-text strong { font-family: 'Fraunces', serif; font-size: 15px; font-weight: 600; color: var(--ink); line-height: 1.2; }
.nav-logo-text span { font-family: 'Space Mono', monospace; font-size: 8px; letter-spacing: .18em; color: var(--muted); text-transform: uppercase; }

.nav-links-center { display: flex; align-items: center; gap: 8px; }
.nav-links-center a {
  font-size: 13px; font-weight: 500; color: var(--muted);
  padding: 8px 16px; border-radius: 99px;
  transition: background var(--t), color var(--t);
}
.nav-links-center a:hover { background: var(--cream-dk); color: var(--ink); }
.nav-links-center a.active { background: var(--sage-dk); color: #fff; }

.nav-cta {
  background: var(--terra); color: #fff;
  font-size: 13px; font-weight: 600;
  padding: 10px 24px; border-radius: 99px;
  transition: background var(--t), transform var(--t);
}
.nav-cta:hover { background: var(--terra-lt); transform: translateY(-7px); }

.nav-hamburger { display: none; flex-direction: column; gap: 5px; padding: 4px; }
.nav-hamburger span { display:block; width:22px; height:2px; background:var(--ink); border-radius:2px; transition:all var(--t); }

.mobile-nav {
  display: none; flex-direction: column;
  background: rgba(250,250,248,.97); backdrop-filter: blur(14px);
  border-top: 1px solid var(--border);
  padding: 20px 40px 28px;
}
.mobile-nav.open { display: flex; }
.mobile-nav a { padding: 13px 0; font-size: 15px; font-weight: 500; color: var(--muted); border-bottom: 1px solid var(--border); transition: color var(--t); }
.mobile-nav a:hover, .mobile-nav a.active { color: var(--sage-dk); }
.mobile-nav .mobile-cta { margin-top: 18px; background: var(--terra); color: #fff; text-align: center; padding: 14px; border-radius: 99px; font-weight: 600; border: none; transition:all var(--t); }
.mobile-cta:hover { background:var(--cream-dk); transform:translateY(-7px); }

@media (max-width: 960px) { .nav-links-center { display:none; } .nav-cta { display:none; } .nav-hamburger { display:flex; } }
@media (max-width: 640px) { .nav-wrap { padding: 16px 20px; } }

/* =============================================
   BUTTONS
============================================= */
.btn-primary {
  display: inline-flex; align-items: center; gap: 10px;
  background: var(--sage-dk); color: #fff;
  font-size: 14px; font-weight: 600;
  padding: 14px 28px; border-radius: 99px;
  transition: background var(--t), transform var(--t), box-shadow var(--t);
}
.btn-primary:hover { background: var(--sage); transform: translateY(-7px); box-shadow: 0 10px 28px rgba(78,95,68,.28); }
.btn-primary svg { width:16px; height:16px; }

.btn-terra {
  display: inline-flex; align-items: center; gap: 10px;
  background: var(--terra); color: #fff;
  font-size: 14px; font-weight: 600;
  padding: 14px 28px; border-radius: 99px;
  transition: background var(--t), transform var(--t), box-shadow var(--t);
}
.btn-terra:hover { background: var(--terra-lt); transform: translateY(-7px); box-shadow: 0 10px 28px rgba(196,98,58,.28); }

.btn-outline {
  display: inline-flex; align-items: center; gap: 10px;
  border: 1.5px solid var(--border); color: var(--ink);
  font-size: 14px; font-weight: 500;
  padding: 13px 28px; border-radius: 99px;
  transition: all var(--t);
}
.btn-outline:hover { border-color: var(--sage-dk); color: var(--sage-dk); background: rgba(78,95,68,.05); transform: translateY(-7px); }

/* =============================================
   PAGE HERO (shared)
============================================= */
.page-hero {
  padding: 160px 0 100px;
  position: relative; overflow: hidden;
  background: var(--cream-dk);
}
.page-hero::before {
  content: '';
  position: absolute; top: -120px; right: -100px;
  width: 500px; height: 500px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(122,140,110,.15) 0%, transparent 70%);
  pointer-events: none;
}
.page-hero-inner { position: relative; z-index: 1; }
.page-hero-kicker { margin-bottom: 24px; }

/* =============================================
   CARDS
============================================= */
.card {
  background: var(--white); border: 1px solid var(--border);
  border-radius: var(--r-lg); padding: 36px;
  transition: border-color var(--t), box-shadow var(--t), transform var(--t);
}
.card:hover { border-color: var(--sage-lt); box-shadow: var(--shadow-md); transform: translateY(-4px); }

/* =============================================
   DIVIDER
============================================= */
.divider { height: 1px; background: var(--border); margin: 40px 0; }

/* =============================================
   TOAST
============================================= */
#toast {
  position: fixed; bottom: 28px; right: 28px;
  background: var(--ink); color: #fff;
  padding: 14px 22px; border-radius: var(--r-md);
  border-left: 4px solid var(--terra);
  font-size: 14px; font-weight: 500;
  box-shadow: var(--shadow-lg); z-index: 9999;
  transform: translateY(100px); opacity: 0;
  transition: all .4s ease;
}
#toast.show { transform: translateY(0); opacity: 1; }

/* =============================================
   FOOTER
============================================= */
footer {
  background: var(--sage-dk); color: rgba(255,255,255,.75);
  padding: 72px 0 0;
}
.footer-inner { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1.3fr; gap: 48px; padding-bottom: 60px; }

.footer-brand { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; }
.footer-brand .nav-logo-mark { background: rgba(255,255,255,.15); }
.footer-brand-name { font-family: 'Fraunces', serif; font-size: 17px; font-weight: 600; color: #fff; }
.footer-brand-sub { font-family: 'Space Mono', monospace; font-size: 8px; letter-spacing: .15em; color: rgba(255,255,255,.4); text-transform: uppercase; }

.footer-desc { font-size: 14px; line-height: 1.75; color: rgba(255,255,255,.55); margin-bottom: 28px; }
.footer-contact-line { display: flex; align-items: center; gap: 10px; font-size: 13px; color: rgba(255,255,255,.55); margin-bottom: 10px; }
.footer-contact-line svg { width: 14px; height: 14px; color: var(--terra-lt); flex-shrink: 0; }

.footer-col h5 { font-family: 'Fraunces', serif; font-size: 16px; font-weight: 600; color: #fff; margin-bottom: 20px; }
.footer-col a { display: block; font-size: 13px; color: rgba(255,255,255,.55); margin-bottom: 12px; transition: color var(--t); }
.footer-col a:hover { color: rgba(255,255,255,.9); }

.footer-nl-form { display: flex; gap: 8px; margin-top: 8px; }
.footer-nl-form input { flex:1; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18); border-radius: 99px; padding: 10px 16px; font-size: 13px; color: #fff; outline: none; transition: border-color var(--t); }
.footer-nl-form input::placeholder { color: rgba(255,255,255,.3); }
.footer-nl-form input:focus { border-color: var(--terra-lt); }
.footer-nl-form button { background: var(--terra); border: none; border-radius: 99px; padding: 10px 18px; color: #fff; font-size: 13px; font-weight: 600; transition: background var(--t); white-space: nowrap; }
.footer-nl-form button:hover { background: var(--terra-lt); }

.footer-bottom { border-top: 1px solid rgba(255,255,255,.1); padding: 24px 0; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; }
.footer-bottom p { font-family: 'Space Mono', monospace; font-size: 10px; letter-spacing: .06em; color: rgba(255,255,255,.3); }
.footer-back-top { display: flex; align-items: center; gap: 8px; font-family: 'Space Mono', monospace; font-size: 10px; letter-spacing: .1em; color: rgba(255,255,255,.4); transition: color var(--t); }
.footer-back-top svg { width: 16px; height: 16px; }
.footer-back-top:hover { color: rgba(255,255,255,.8); }

@media (max-width: 1024px) { .footer-inner { grid-template-columns: 1fr 1fr; gap: 40px; } }
@media (max-width: 640px) { .footer-inner { grid-template-columns: 1fr; gap: 32px; } .footer-bottom { flex-direction: column; align-items: flex-start; } }

/* =============================================
   ANIMATIONS
============================================= */
.fade-up { opacity: 0; transform: translateY(32px); transition: opacity .7s ease, transform .7s ease; }
.fade-up.visible { opacity: 1; transform: none; }
.fade-left { opacity: 0; transform: translateX(-32px); transition: opacity .7s ease, transform .7s ease; }
.fade-left.visible { opacity: 1; transform: none; }
.fade-right { opacity: 0; transform: translateX(32px); transition: opacity .7s ease, transform .7s ease; }
.fade-right.visible { opacity: 1; transform: none; }
.stagger > * { opacity: 0; transform: translateY(24px); transition: opacity .6s ease, transform .6s ease; }
.stagger.visible > *:nth-child(1) { opacity:1; transform:none; transition-delay:.05s; }
.stagger.visible > *:nth-child(2) { opacity:1; transform:none; transition-delay:.15s; }
.stagger.visible > *:nth-child(3) { opacity:1; transform:none; transition-delay:.25s; }
.stagger.visible > *:nth-child(4) { opacity:1; transform:none; transition-delay:.35s; }
.stagger.visible > *:nth-child(5) { opacity:1; transform:none; transition-delay:.45s; }
.stagger.visible > *:nth-child(6) { opacity:1; transform:none; transition-delay:.55s; }
.stagger.visible > *:nth-child(7) { opacity:1; transform:none; transition-delay:.65s; }
.stagger.visible > *:nth-child(8) { opacity:1; transform:none; transition-delay:.75s; }

/* =============================================
   MODAL (shared)
============================================= */
.modal-bg {
  position: fixed; inset: 0; z-index: 3000;
  background: rgba(30,30,30,.6); backdrop-filter: blur(6px);
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
  opacity: 0; pointer-events: none;
  transition: opacity .3s ease;
}
.modal-bg.open { opacity: 1; pointer-events: all; }
.modal-box {
  background: var(--white); border-radius: var(--r-xl);
  padding: 48px; max-width: 600px; width: 100%;
  max-height: 90vh; overflow-y: auto;
  transform: translateY(20px) scale(.97);
  transition: transform .3s ease;
  box-shadow: var(--shadow-lg);
  position: relative;
}
.modal-bg.open .modal-box { transform: none; }
.modal-close {
  position: absolute; top: 20px; right: 20px;
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--cream-dk); border: none;
  display: flex; align-items: center; justify-content: center;
  color: var(--muted); transition: all var(--t);
}
.modal-close svg { width:16px; height:16px; }
.modal-close:hover { background: var(--terra); color: #fff; transform: rotate(90deg); }
.modal-box h3 { font-family:'Fraunces',serif; font-size:28px; font-weight:600; color:var(--ink); margin-bottom:12px; }
.modal-box .modal-sub { font-size:15px; color:var(--muted); line-height:1.7; margin-bottom:20px; }
.modal-divider { height:1px; background:var(--border); margin:20px 0; }
.modal-box h4 { font-family:'Fraunces',serif; font-size:18px; font-weight:600; color:var(--ink); margin-bottom:12px; margin-top:20px; }
.modal-list { display:flex; flex-direction:column; gap:9px; }
.modal-list li { display:flex; align-items:flex-start; gap:10px; font-size:14px; color:var(--muted); line-height:1.6; }
.modal-list li::before { content:''; display:block; width:5px; height:5px; border-radius:50%; background:var(--terra); flex-shrink:0; margin-top:8px; }
.modal-box > p { font-size:15px; color:var(--muted); line-height:1.75; }
.modal-cta { display:flex; align-items:center; justify-content:center; gap:10px; margin-top:28px; }
@media (max-width:540px) { .modal-box { padding:28px 20px; } }

/* =============================================
   SPINNER
============================================= */
@keyframes spin { to { transform: rotate(360deg); } }
.spin-anim { animation: spin .8s linear infinite; display: inline-block; }

/* ============================================
   PAGE-SPECIFIC: INDEX (HOME)
============================================= */
.home-hero {
  min-height: 100vh; display: flex; flex-direction: column;
  justify-content: flex-end; position: relative; overflow: hidden;
}
.home-hero-bg { position:absolute; inset:0; }
.home-hero-bg img { width:100%; height:100%; object-fit:cover; }
.home-hero-bg::after {
  content:''; position:absolute; inset:0;
  background: linear-gradient(135deg, rgba(78,95,68,.92) 0%, rgba(30,30,30,.65) 60%, rgba(196,98,58,.3) 100%);
}
.home-hero-content { position:relative; z-index:2; padding: 0 0 80px; }
.home-hero-content .wrap { display:grid; grid-template-columns: 1fr 1fr; gap:60px; align-items:flex-end; }
.home-hero-right { display:flex; flex-direction:column; align-items:flex-end; justify-content:flex-end; }

.home-h1 { font-size: clamp(76px, 28vw, 130px); font-weight: 700; color: #fff; line-height: .98; margin-bottom: 40px; }
.home-h1 em { font-style: italic; color: rgba(255,255,255,.6); }

.home-hero-desc { font-size: 16px; color: rgba(255,255,255,.7); line-height: 1.8; max-width: 340px; margin-bottom: 32px; text-align: right; }
.home-hero-btns { display:flex; gap:12px; flex-wrap:wrap; justify-content:flex-end; }

.home-scroll-indicator { position:absolute; bottom:32px; left:50%; transform:translateX(-50%); z-index:2; display:flex; flex-direction:column; align-items:center; gap:8px; }
.home-scroll-indicator span { font-family:'Space Mono',monospace; font-size:9px; letter-spacing:.18em; color:rgba(255,255,255,.4); text-transform:uppercase; }
.scroll-line { width:1px; height:48px; background:linear-gradient(to bottom, rgba(255,255,255,.4), transparent); animation:scroll-line 2s ease infinite; }
@keyframes scroll-line { 0%,100%{opacity:1;transform:scaleY(1);} 50%{opacity:.3;transform:scaleY(.5);} }

.home-stats { background:var(--cream-dk); border-top:1px solid var(--border); }
.home-stats-grid { display:grid; grid-template-columns:repeat(4,1fr); }
.hsg-item { padding:48px 40px; border-right:1px solid var(--border); }
.hsg-item:last-child { border-right:none; }
.hsg-num { font-family:'Fraunces',serif; font-size:clamp(40px,4vw,64px); font-weight:700; color:var(--sage-dk); line-height:1; margin-bottom:8px; }
.hsg-lbl { font-size:13px; color:var(--muted); letter-spacing:.02em; }

.home-practices { background:var(--cream); }
.home-practices-header { display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:60px; gap:20px; }
.home-practices-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
.hpc { background:var(--white); border:1px solid var(--border); border-radius:var(--r-lg); padding:32px; transition:all var(--t); cursor:pointer; }
.hpc:hover { border-color:var(--sage); box-shadow:var(--shadow-md); transform:translateY(-4px); }
.hpc-icon { width:44px; height:44px; border-radius:var(--r-sm); background:var(--cream-dk); display:flex; align-items:center; justify-content:center; margin-bottom:20px; transition:background var(--t); }
.hpc:hover .hpc-icon { background:rgba(78,95,68,.12); }
.hpc-icon svg { width:22px; height:22px; color:var(--sage-dk); }
.hpc h3 { font-family:'Fraunces',serif; font-size:18px; font-weight:600; color:var(--ink); margin-bottom:8px; line-height:1.3; }
.hpc p { font-size:13px; color:var(--muted); line-height:1.65; }
.hpc-arrow { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:600; color:var(--terra); margin-top:16px; opacity:0; transform:translateX(-4px); transition:all var(--t); }
.hpc-arrow svg { width:14px; height:14px; }
.hpc:hover .hpc-arrow { opacity:1; transform:none; }

.home-cta-band { background:var(--terra); padding:80px 0; }
.home-cta-inner { display:flex; align-items:center; justify-content:space-between; gap:40px; flex-wrap:wrap; }
.home-cta-inner h2 { font-family:'Fraunces',serif; font-size:clamp(28px,3.5vw,48px); font-weight:700; color:#fff; max-width:500px; line-height:1.2; }
.btn-white { display:inline-flex; align-items:center; gap:10px; background:#fff; color:var(--terra); font-size:14px; font-weight:600; padding:14px 32px; border-radius:99px; transition:all var(--t); }
.btn-white:hover { background:var(--cream-dk); transform:translateY(-7px); }

@media (max-width:960px) { .home-hero-content .wrap { grid-template-columns:1fr; } .home-hero-right { align-items:flex-start; } .home-hero-desc { text-align:left; } .home-hero-btns { justify-content:flex-start; } .home-practices-grid { grid-template-columns:repeat(2,1fr); } .home-stats-grid { grid-template-columns:repeat(2,1fr); } .hsg-item { border-bottom:1px solid var(--border); } }
@media (max-width:540px) { .home-practices-grid { grid-template-columns:1fr; } .home-stats-grid { grid-template-columns:1fr 1fr; } }

/* =============================================
   PAGE: ABOUT
============================================= */
.about-story { background:var(--cream); }
.about-story-grid { display:grid; grid-template-columns:5fr 7fr; gap:80px; align-items:center; }
.about-img-group { position:relative; }
.about-img-main { border-radius:var(--r-xl); width:100%; height:520px; object-fit:cover; }
.about-img-secondary { position:absolute; bottom:-40px; right:-32px; width:200px; height:240px; object-fit:cover; border-radius:var(--r-lg); border:6px solid var(--cream); box-shadow:var(--shadow-lg); }
.about-years-badge { position:absolute; top:32px; left:32px; background:var(--terra); color:#fff; border-radius:var(--r-md); padding:20px 24px; }
.ayb-num { font-family:'Fraunces',serif; font-size:48px; font-weight:700; line-height:1; }
.ayb-lbl { font-size:12px; font-weight:500; margin-top:4px; letter-spacing:.06em; }

.about-text-col h2 { margin-bottom:24px; }
.about-text-col p { font-size:16px; color:var(--muted); line-height:1.8; margin-bottom:16px; }
.about-values { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-top:40px; }
.av-item { background:var(--cream-dk); border-radius:var(--r-md); padding:24px; }
.av-num { font-family:'Space Mono',monospace; font-size:10px; color:var(--terra); letter-spacing:.12em; margin-bottom:10px; }
.av-title { font-family:'Fraunces',serif; font-size:17px; font-weight:600; color:var(--ink); margin-bottom:6px; }
.av-desc { font-size:13px; color:var(--muted); line-height:1.6; }

.about-awards { background:var(--sage-dk); padding:80px 0; }
.about-awards h2 { color:#fff; text-align:center; margin-bottom:48px; }
.awards-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.award-card { background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.12); border-radius:var(--r-lg); padding:32px; text-align:center; transition:background var(--t); }
.award-card:hover { background:rgba(255,255,255,.14); }
.award-icon { width:52px; height:52px; border-radius:50%; background:rgba(196,98,58,.25); display:flex; align-items:center; justify-content:center; margin:0 auto 16px; }
.award-icon svg { width:24px; height:24px; color:var(--terra-lt); }
.award-card h4 { font-family:'Fraunces',serif; font-size:18px; font-weight:600; color:#fff; margin-bottom:8px; }
.award-card p { font-size:13px; color:rgba(255,255,255,.5); line-height:1.6; }

@media (max-width:960px) { .about-story-grid { grid-template-columns:1fr; gap:60px; } .about-img-main { height:360px; } .about-img-secondary { width:140px; height:170px; right:-10px; } .about-values { grid-template-columns:1fr; } .awards-grid { grid-template-columns:1fr 1fr; } }
@media (max-width:540px) { .awards-grid { grid-template-columns:1fr; } }

/* =============================================
   PAGE: PRACTICE
============================================= */
.practice-intro { background:var(--cream); }
.practice-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.pa-full-card { background:var(--white); border:1px solid var(--border); border-radius:var(--r-lg); padding:36px; cursor:pointer; transition:all var(--t); display:flex; flex-direction:column; }
.pa-full-card:hover { border-color:var(--sage); box-shadow:var(--shadow-md); transform:translateY(-5px); }
.pa-card-header { display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:20px; }
.pa-card-num-badge { font-family:'Space Mono',monospace; font-size:10px; color:var(--muted-lt); letter-spacing:.1em; }
.pa-card-icon2 { width:48px; height:48px; border-radius:var(--r-sm); background:rgba(122,140,110,.1); display:flex; align-items:center; justify-content:center; transition:background var(--t); }
.pa-full-card:hover .pa-card-icon2 { background:rgba(78,95,68,.15); }
.pa-card-icon2 svg { width:22px; height:22px; color:var(--sage-dk); }
.pa-full-card h3 { font-family:'Fraunces',serif; font-size:22px; font-weight:600; color:var(--ink); margin-bottom:10px; line-height:1.25; }
.pa-full-card > p { font-size:14px; color:var(--muted); line-height:1.7; flex:1; margin-bottom:20px; }
.pa-card-footer { display:flex; align-items:center; justify-content:space-between; border-top:1px solid var(--border); padding-top:16px; margin-top:auto; }
.pa-card-footer span { font-size:12px; font-weight:600; color:var(--terra); text-transform:uppercase; letter-spacing:.08em; }
.pa-card-footer svg { width:16px; height:16px; color:var(--terra); transition:transform var(--t); }
.pa-full-card:hover .pa-card-footer svg { transform:translate(3px,-3px); }

@media (max-width:960px) { .practice-grid { grid-template-columns:repeat(2,1fr); } }
@media (max-width:540px) { .practice-grid { grid-template-columns:1fr; } }

/* =============================================
   PAGE: TEAM
============================================= */
.team-page-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:32px; }
.team-profile-card { background:var(--white); border:1px solid var(--border); border-radius:var(--r-xl); overflow:hidden; cursor:pointer; transition:all var(--t); }
.team-profile-card:hover { box-shadow:var(--shadow-lg); transform:translateY(-5px); border-color:var(--sage-lt); }
.tpc-photo { position:relative; height:340px; overflow:hidden; }
.tpc-photo img { width:100%; height:100%; object-fit:cover; transition:transform .8s ease; filter:saturate(.8); }
.team-profile-card:hover .tpc-photo img { transform:scale(1.04); filter:saturate(1); }
.tpc-photo-badge { position:absolute; top:20px; right:20px; background:var(--sage-dk); color:#fff; border-radius:var(--r-sm); padding:6px 14px; font-family:'Space Mono',monospace; font-size:10px; letter-spacing:.1em; }
.tpc-body { padding:32px; }
.tpc-name { font-family:'Fraunces',serif; font-size:28px; font-weight:600; color:var(--ink); margin-bottom:6px; }
.tpc-role { font-size:13px; font-weight:600; color:var(--terra); margin-bottom:4px; text-transform:uppercase; letter-spacing:.06em; }
.tpc-spec { font-family:'Space Mono',monospace; font-size:10px; color:var(--muted-lt); margin-bottom:18px; letter-spacing:.08em; }
.tpc-bio { font-size:14px; color:var(--muted); line-height:1.7; margin-bottom:20px; }
.tpc-footer { display:flex; align-items:center; justify-content:space-between; border-top:1px solid var(--border); padding-top:18px; }
.tpc-footer span { font-size:12px; font-weight:600; color:var(--sage-dk); text-transform:uppercase; letter-spacing:.08em; }
.tpc-footer svg { width:18px; height:18px; color:var(--sage-dk); transition:transform var(--t); }
.team-profile-card:hover .tpc-footer svg { transform:translate(3px,0); }

@media (max-width:768px) { .team-page-grid { grid-template-columns:1fr; } .tpc-photo { height:280px; } }

/* =============================================
   PAGE: INSIGHTS
============================================= */
.insights-page-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:32px; }
.insight-full-card { background:var(--white); border:1px solid var(--border); border-radius:var(--r-xl); overflow:hidden; transition:all var(--t); }
.insight-full-card:hover { box-shadow:var(--shadow-md); transform:translateY(-4px); border-color:var(--sage-lt); }
.ifc-image { height:220px; overflow:hidden; position:relative; }
.ifc-image img { width:100%; height:100%; object-fit:cover; transition:transform .8s ease; }
.insight-full-card:hover .ifc-image img { transform:scale(1.04); }
.ifc-tag { position:absolute; top:16px; left:16px; background:var(--terra); color:#fff; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.12em; padding:5px 12px; border-radius:99px; }
.ifc-body { padding:32px; }
.ifc-date { font-family:'Space Mono',monospace; font-size:10px; color:var(--muted-lt); letter-spacing:.1em; margin-bottom:12px; }
.ifc-body h3 { font-family:'Fraunces',serif; font-size:22px; font-weight:600; color:var(--ink); margin-bottom:12px; line-height:1.3; }
.ifc-preview { font-size:14px; color:var(--muted); line-height:1.7; margin-bottom:20px; }
.ifc-expand { display:none; }
.ifc-expand p { font-size:14px; color:var(--muted); line-height:1.8; margin-bottom:20px; }
.ifc-author { display:flex; align-items:center; gap:12px; padding-top:16px; border-top:1px solid var(--border); margin-top:16px; }
.ifc-author img { width:40px; height:40px; border-radius:50%; object-fit:cover; }
.ifc-author strong { display:block; font-size:14px; color:var(--ink); font-weight:600; }
.ifc-author span { font-size:12px; color:var(--muted); }
.ifc-toggle { display:flex; align-items:center; gap:8px; font-size:13px; font-weight:600; color:var(--terra); background:none; border:none; padding:0; transition:gap var(--t); }
.ifc-toggle svg { width:16px; height:16px; transition:transform var(--t); }
.ifc-toggle.open svg { transform:rotate(180deg); }
.ifc-toggle:hover { gap:12px; }

@media (max-width:768px) { .insights-page-grid { grid-template-columns:1fr; } }

/* =============================================
   PAGE: CONTACT
============================================= */
.contact-page-grid { display:grid; grid-template-columns:2fr 3fr; gap:72px; align-items:start; }
.contact-info-col h2 { margin-bottom:20px; }
.contact-info-col .lead { margin-bottom:48px; }
.ci-item { display:flex; gap:18px; margin-bottom:32px; }
.ci-icon { width:48px; height:48px; border-radius:var(--r-md); background:rgba(122,140,110,.12); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.ci-icon svg { width:20px; height:20px; color:var(--sage-dk); }
.ci-label { font-family:'Space Mono',monospace; font-size:10px; text-transform:uppercase; letter-spacing:.12em; color:var(--muted-lt); margin-bottom:6px; }
.ci-value { font-size:15px; color:var(--ink); line-height:1.6; }
.ci-map { border-radius:var(--r-xl); overflow:hidden; height:220px; background:var(--cream-dk); display:flex; align-items:center; justify-content:center; margin-top:32px; border:1px solid var(--border); }
.ci-map-placeholder { text-align:center; }
.ci-map-placeholder svg { width:40px; height:40px; color:var(--sage-lt); margin-bottom:10px; }
.ci-map-placeholder p { font-size:13px; color:var(--muted-lt); }

.contact-form-col { background:var(--white); border:1px solid var(--border); border-radius:var(--r-xl); padding:48px; box-shadow:var(--shadow-sm); }
.contact-form-col h3 { font-family:'Fraunces',serif; font-size:26px; font-weight:600; color:var(--ink); margin-bottom:32px; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.form-group { margin-bottom:22px; }
.form-group label { display:block; font-family:'Space Mono',monospace; font-size:10px; text-transform:uppercase; letter-spacing:.12em; color:var(--muted); margin-bottom:8px; }
.form-group input,
.form-group select,
.form-group textarea { width:100%; padding:13px 16px; border:1.5px solid var(--border); border-radius:var(--r-md); font-size:14px; color:var(--ink); background:var(--cream); outline:none; transition:border-color var(--t); }
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus { border-color:var(--sage-dk); background:var(--white); }
.form-group input::placeholder,
.form-group textarea::placeholder { color:var(--muted-lt); }
.form-group textarea { min-height:130px; resize:vertical; }
.form-submit { width:100%; display:flex; align-items:center; justify-content:center; gap:10px; background:var(--sage-dk); color:#fff; font-size:15px; font-weight:600; padding:16px; border-radius:99px; margin-top:8px; transition:all var(--t); }
.form-submit:hover { background:var(--sage); transform:translateY(-7px); box-shadow:0 10px 28px rgba(78,95,68,.28); }
.form-submit:disabled { opacity:.7; cursor:not-allowed; transform:none; }
.form-note { font-size:12px; color:var(--muted-lt); text-align:center; margin-top:12px; }
.form-success { display:none; text-align:center; padding:60px 20px; }
.form-success.show { display:block; }
.fs-icon { width:64px; height:64px; border-radius:50%; background:rgba(78,95,68,.1); display:flex; align-items:center; justify-content:center; margin:0 auto 20px; }
.fs-icon svg { width:32px; height:32px; color:var(--sage-dk); }
.form-success h3 { font-family:'Fraunces',serif; font-size:26px; color:var(--ink); margin-bottom:10px; }
.form-success p { font-size:15px; color:var(--muted); }

@media (max-width:960px) { .contact-page-grid { grid-template-columns:1fr; } .contact-form-col { padding:32px 24px; } .form-row { grid-template-columns:1fr; } }

/* =============================================
   TESTIMONIALS
============================================= */
.testimonials-section { padding: 100px 0; }
.testimonials-inner { display: grid; grid-template-columns: 1fr 1.6fr; gap: 80px; align-items: center; }

.testimonials-left h2 { color: var(--offwhite); }
.t-nav-controls { display: flex; align-items: center; gap: 16px; margin-top: 40px; }
.t-ctrl-btn { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border2); display: flex; align-items: center; justify-content: center; color: var(--muted); transition: all var(--t); }
.t-ctrl-btn svg { width: 18px; height: 18px; }
.t-ctrl-btn:hover { border-color: var(--copper); color: var(--copper); }
.t-ctrl-dots { display: flex; gap: 8px; align-items: center; color:#C4623A;}
.t-ctrl-dot { width: 8px; height: 8px; border-radius: 50%; background: #C4623A; border: none; transition: all var(--t); }
.t-ctrl-dot.active { background-color: white; }

.testimonials-right { position: relative; }
.big-quote { font-family: 'Cormorant Garamond', serif; font-size: 180px; line-height: .7; color: var(--copper); opacity: .15; position: absolute; top: -20px; left: -20px; pointer-events: none; }
blockquote { font-family: 'Cormorant Garamond', serif; font-size: clamp(20px, 2.5vw, 30px); font-weight: 300; color: var(--offwhite); line-height: 1.6; margin-bottom: 32px; position: relative; z-index: 1; transition: opacity .35s ease, transform .35s ease; }
.t-star-row { display: flex; gap: 4px; margin-bottom: 24px; }
.t-star-row svg { width: 16px; height: 16px; color: var(--copper); }
.t-client-name { font-family: 'Cormorant Garamond', serif; font-size: 20px; font-weight: 600; color: var(--offwhite); }
.t-client-title { font-size: 13px; color: var(--muted); margin-top: 4px; transition: opacity .35s ease; }
.test-bckg {background: rgba(34, 30, 28, 0.25); height: 100%; }

@media (max-width: 900px) { .testimonials-inner { grid-template-columns: 1fr; gap: 48px; } .big-quote { font-size: 100px; } }

/* =============================================
   UTILITIES
============================================= */
.container { max-width: 1320px; margin: 0 auto; padding: 0 40px; }
@media (max-width:640px) { .container { padding: 0 20px; } }

/* =============================================
   TYPOGRAPHY
============================================= */
.section-tag {
  font-family: 'DM Mono', monospace;
  font-size: 11px; font-weight: 500;
  text-transform: uppercase; letter-spacing: .18em;
  color: var(--copper);
  margin-bottom: 16px;
  display: flex; align-items: center; gap: 10px;
}
.section-tag::before { content:''; display:block; width:28px; height:1px; background:var(--copper); }
.section-tag.light { color: var(--copper-lt); }
.section-tag.light::before { background: var(--copper-lt); }

/* =============================================
   SCROLL MOUSE IMAGE
============================================= */
.scroll-hint { position:absolute; bottom:32px; left:50%; transform:translateX(-50%); z-index:2; margin-top:-30px; }
.mouse { width:24px; height:40px; border:2px solid rgba(255,255,255,.3); border-radius:12px; display:flex; justify-content:center; margin-top:-30px; }
.wheel { width:4px; height:8px; background-color:#C4623A; border-radius:2px; animation:scroll-bounce 2s infinite; margin-top:-30px; }
@keyframes scroll-bounce { 0%,100%{transform:translateY(0);opacity:1;} 50%{transform:translateY(8px);opacity:.5;} }

/* =============================================
   PAGE TRANSITIONS
============================================= */
