@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 400 600; font-display: swap; src: url('../fonts/dm-sans-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 400 600; font-display: swap; src: url('../fonts/dm-sans-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 500 700; font-display: swap; src: url('../fonts/manrope-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 500 700; font-display: swap; src: url('../fonts/manrope-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Newsreader'; font-style: normal; font-weight: 500 600; font-display: swap; src: url('../fonts/newsreader-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Newsreader'; font-style: normal; font-weight: 500 600; font-display: swap; src: url('../fonts/newsreader-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }

:root {
    --font-size: 100%;
    --cream: #f4eee7;
    --cream-deep: #e9ded2;
    --paper: #fbf8f3;
    --green-950: #0b2f24;
    --green-900: #10372b;
    --green-800: #174839;
    --green-600: #4f806c;
    --green-300: #a8c4b5;
    --sage: #d9e4dc;
    --ink: #14241f;
    --muted: #68756f;
    --white: #fff;
    --line: rgba(16, 55, 43, .16);
    --shadow: 0 28px 80px rgba(27, 52, 43, .11);
    --radius-lg: 40px;
    --radius-md: 24px;
    --shell: min(1180px, calc(100vw - 48px));
    --header-height: 94px;
    --focus: #a84f23;
}

*, *::before, *::after { box-sizing: border-box; }
html { width: 100%; max-width: 100%; overflow-x: hidden; overflow-x: clip; font-size: var(--font-size); scroll-behavior: smooth; scroll-padding-top: var(--header-height); }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }
.lenis.lenis-smooth iframe { pointer-events: none; }
body {
    width: 100%; max-width: 100%; margin: 0;
    color: var(--ink);
    background: var(--cream);
    font-family: 'DM Sans', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-size: 16px;
    line-height: 1.65;
    overflow-x: hidden; overflow-x: clip; overscroll-behavior-x: none; touch-action: pan-y; -webkit-overflow-scrolling: touch;
}
body.nav-open,
body.dialog-open { overflow: hidden; touch-action: none; }
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 4px; }
h1, h2, h3, p { margin-top: 0; }
h1, h2 { font-family: 'Newsreader', Georgia, serif; font-weight: 500; letter-spacing: -.055em; line-height: .98; }
h3 { font-family: 'Manrope', 'DM Sans', sans-serif; letter-spacing: -.045em; line-height: 1.08; }
h1 { font-size: clamp(3.4rem, 7.2vw, 7rem); }
h2 { font-size: clamp(2.45rem, 5vw, 4.85rem); }
h3 { font-size: clamp(1.35rem, 2vw, 1.75rem); }
::selection { color: var(--white); background: var(--green-600); }

.shell { width: var(--shell); margin-inline: auto; }
.section { position: relative; padding: clamp(100px, 12vw, 170px) 0; }
.sr-only {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.skip-link {
    position: fixed; z-index: 9999; left: 16px; top: 16px; padding: 12px 18px;
    color: var(--white); background: var(--green-950); border-radius: 999px;
    transform: translateY(-150%); transition: transform .2s ease;
}
.skip-link:focus { transform: translateY(0); }

.site-header {
    position: fixed; z-index: 1000; inset: 0 0 auto;
    height: var(--header-height);
    background: linear-gradient(90deg, rgba(244, 238, 231, .86) 0 70%, rgba(217, 228, 220, .68) 100%);
    backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
    transition: background .35s ease, box-shadow .35s ease, height .35s ease;
}
.site-header.is-scrolled {
    height: 78px; background: linear-gradient(90deg, rgba(244, 238, 231, .94) 0 76%, rgba(217, 228, 220, .9) 100%);
    box-shadow: 0 1px 0 var(--line); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
}
.header-inner { height: 100%; display: flex; align-items: center; justify-content: space-between; }
.brand { display: flex; align-items: center; width: 148px; height: 78px; transition: transform .25s ease; }
.brand:hover { transform: translateY(-2px); }
.brand img { width: 100%; max-height: 74px; object-fit: contain; mix-blend-mode: multiply; }
.brand-logo-white { display: none; mix-blend-mode: normal !important; }
.site-nav { display: flex; align-items: center; gap: 26px; font-weight: 500; }
.site-nav > a:not(.nav-cta) { position: relative; }
.site-nav > a:not(.nav-cta)::after {
    content: ''; position: absolute; left: 0; right: 100%; bottom: -5px; height: 1px;
    background: var(--green-600); transition: right .3s ease;
}
.site-nav > a:hover::after, .site-nav > a.is-active::after { right: 0; }
.nav-cta {
    --button-fill: var(--green-600); --ripple-x: 50%; --ripple-y: 50%; --ripple-size: 220px;
    position: relative; isolation: isolate; overflow: hidden; display: inline-flex; align-items: center; justify-content: center;
    padding: 11px 19px; color: var(--white); border: 1px solid var(--green-900); border-radius: 999px; background: var(--green-900);
    box-shadow: 0 8px 24px rgba(16, 55, 43, .12); transition: color .25s ease, box-shadow .25s ease, transform .25s ease;
}
.nav-cta:hover { color: var(--white); box-shadow: 0 12px 28px rgba(16, 55, 43, .2); transform: translateY(-2px); }
.nav-toggle { display: none; width: 46px; height: 46px; border: 0; border-radius: 50%; background: var(--green-900); padding: 12px; }
.nav-toggle > span:not(.sr-only) { display: block; width: 100%; height: 1px; margin: 5px 0; background: var(--white); transition: .25s ease; }

.accessibility-control { position: relative; }
.accessibility-toggle {
    display: grid; place-items: center; width: 44px; height: 44px; padding: 0;
    color: var(--green-900); border: 1px solid var(--line); border-radius: 50%; background: rgba(251,248,243,.46);
    font-family: 'Manrope', sans-serif; font-size: .82rem; font-weight: 700; cursor: pointer;
    transition: color .25s ease, border-color .25s ease, background .25s ease, transform .25s ease;
}
.accessibility-toggle:hover,
.accessibility-toggle[aria-expanded="true"] { color: var(--white); border-color: var(--green-900); background: var(--green-900); transform: translateY(-2px); }
.accessibility-panel[hidden] { display: none; }
.accessibility-panel {
    position: absolute; z-index: 20; right: 0; top: calc(100% + 16px); width: min(330px, calc(100vw - 32px)); padding: 24px;
    color: var(--ink); border: 1px solid var(--line); border-radius: 22px; background: var(--paper); box-shadow: 0 24px 70px rgba(16,55,43,.18);
}
.accessibility-panel-head { display: flex; align-items: baseline; justify-content: space-between; gap: 18px; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.accessibility-panel-head strong { font-family: 'Manrope', sans-serif; font-size: 1rem; }
.accessibility-panel-head span { color: var(--muted); font-size: .7rem; }
.accessibility-setting { padding: 18px 0; border-bottom: 1px solid var(--line); }
.accessibility-setting > span { display: block; margin-bottom: 10px; color: var(--muted); font-size: .7rem; font-weight: 600; letter-spacing: .11em; text-transform: uppercase; }
.theme-options { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.theme-options button,
.font-options button,
.font-reset {
    min-height: 40px; color: var(--ink); border: 1px solid var(--line); border-radius: 11px; background: transparent;
    font-size: .78rem; font-weight: 600; cursor: pointer; transition: .2s ease;
}
.theme-options button:hover,
.font-options button:hover,
.font-reset:hover { border-color: var(--green-600); background: rgba(79,128,108,.08); }
.theme-options button[aria-pressed="true"] { color: var(--white); border-color: var(--green-900); background: var(--green-900); }
.font-options { display: grid; grid-template-columns: 46px 1fr 46px; gap: 8px; align-items: center; }
.font-options output { color: var(--green-900); font-family: 'Manrope', sans-serif; font-size: .85rem; font-weight: 700; text-align: center; }
.font-options button:disabled { cursor: not-allowed; opacity: .38; }
.font-reset { width: 100%; min-height: 34px; margin-top: 8px; border: 0; color: var(--green-600); font-size: .72rem; }
.accessibility-info-link { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 18px; color: var(--green-900); font-size: .78rem; font-weight: 600; }
.accessibility-info-link span { font-size: 1rem; }

.hero {
    position: relative; isolation: isolate; min-height: 100svh; overflow: hidden;
    display: flex; align-items: center; padding: calc(var(--header-height) + 56px) 0 92px;
    background:
        radial-gradient(circle at 79% 24%, rgba(168, 196, 181, .32), transparent 25%),
        radial-gradient(circle at 56% 78%, rgba(233, 222, 210, .74), transparent 32%),
        linear-gradient(124deg, rgba(251, 248, 243, .82), rgba(244, 238, 231, .4) 58%, rgba(217, 228, 220, .34)),
        var(--cream);
}
.hero::before {
    content: ''; position: absolute; z-index: -1; width: 50vw; height: 50vw; left: -27vw; top: -15vw;
    border: 1px solid rgba(79, 128, 108, .25); border-radius: 50%; box-shadow: 0 0 0 90px rgba(79, 128, 108, .025), 0 0 0 180px rgba(79, 128, 108, .018);
}
.hero::after {
    content: ''; position: absolute; z-index: -1; left: 30%; bottom: -32%; width: 56vw; height: 52vw;
    border: 1px solid rgba(79, 128, 108, .12); border-radius: 44% 56% 63% 37% / 52% 36% 64% 48%;
    transform: rotate(-17deg);
}
.hero-grid { display: grid; grid-template-columns: 1.05fr .95fr; align-items: center; gap: clamp(50px, 8vw, 110px); }
.hero-copy { position: relative; z-index: 2; }
.eyebrow,
.kicker { display: flex; align-items: center; gap: 12px; margin-bottom: 26px; color: var(--green-600); font-size: .76rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; }
.eyebrow::before,
.kicker::before { content: ''; width: 34px; height: 1px; background: currentColor; }
.hero h1 { max-width: 720px; margin-bottom: 28px; color: var(--green-950); }
.hero-lead { max-width: 580px; margin-bottom: 36px; color: #46584f; font-size: clamp(1.08rem, 1.8vw, 1.34rem); }
.hero-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 24px; }
.button {
    --button-fill: var(--green-600); --ripple-x: 50%; --ripple-y: 50%; --ripple-size: 360px;
    position: relative; isolation: isolate; overflow: hidden;
    display: inline-flex; align-items: center; justify-content: center; gap: 22px; min-height: 56px;
    padding: 14px 24px; border: 1px solid transparent; border-radius: 999px;
    font-weight: 600; cursor: pointer; transition: transform .25s ease, box-shadow .25s ease, color .25s ease, border-color .25s ease;
}
.button::before,
.nav-cta::before {
    content: ''; position: absolute; z-index: 0; left: var(--ripple-x); top: var(--ripple-y);
    width: var(--ripple-size); height: var(--ripple-size); border-radius: 50%; background: var(--button-fill);
    pointer-events: none; transform: translate(-50%, -50%) scale(0); transition: transform .68s cubic-bezier(.2,.78,.22,1);
}
.button:hover::before,
.nav-cta:hover::before { transform: translate(-50%, -50%) scale(1); }
.button:hover { transform: translateY(-3px); }
.button-content { position: relative; z-index: 2; display: inline-flex; align-items: center; gap: 22px; font-size: 1em; }
.button-content > span { font-size: 1.2em; transition: transform .25s ease; }
.button:hover .button-content > span { transform: translate(2px, -2px); }
.button-primary { color: var(--white); background: var(--green-900); box-shadow: 0 12px 30px rgba(16, 55, 43, .2); }
.button-primary:hover { color: var(--white); box-shadow: 0 17px 38px rgba(16, 55, 43, .25); }
.button-secondary { --button-fill: var(--green-900); color: var(--green-900); border-color: var(--line); background: transparent; }
.button-secondary:hover { color: var(--white); border-color: var(--green-900); box-shadow: none; }
.button-plain { --button-fill: var(--green-900); min-height: 44px; padding-inline: 16px; color: var(--muted); border: 0; background: transparent; }
.button-plain:hover { color: var(--white); box-shadow: none; }
.button-outline-light { --button-fill: var(--sage); color: var(--white); border-color: rgba(255,255,255,.34); background: transparent; box-shadow: none; }
.button-outline-light:hover { color: var(--green-950); border-color: var(--sage); box-shadow: none; }
.text-link { display: inline-flex; gap: 10px; align-items: center; padding: 13px 0; font-weight: 600; border-bottom: 1px solid var(--line); }
.text-link span { color: var(--green-600); transition: transform .25s ease; }
.text-link:hover span { transform: translateY(4px); }
.opening-hours { margin: 0; }
.opening-hours > div { display: flex; align-items: baseline; gap: 12px; }
.opening-hours dt { color: var(--green-600); font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.opening-hours dd { margin: 0; color: var(--ink); font-size: .86rem; font-weight: 600; }
.hero-details { margin-top: 48px; padding-top: 20px; border-top: 1px solid var(--line); }
.hero-company-line { margin: 0 0 8px; color: var(--muted); font-size: .8rem; font-weight: 600; }
.opening-hours-hero { display: flex; flex-wrap: wrap; gap: 8px 22px; }

.hero-visual { position: relative; min-height: 590px; display: grid; place-items: center; }
.hero-visual-media { animation: none; }
.hero-photo { width: min(90%, 450px); aspect-ratio: 4 / 5; margin: 0; overflow: hidden; border-radius: var(--radius-lg); box-shadow: var(--shadow); }
.hero-photo img { width: 100%; height: 100%; object-fit: cover; }
.hero-logo-display { position: relative; display: grid; place-items: center; width: min(138%, 780px); }
.hero-logo-display > img { grid-area: 1 / 1; width: 100%; max-width: none; height: auto; }
.hero-logo-dark { display: none; }
.visual-frame {
    position: relative; width: min(92%, 500px); aspect-ratio: 1; border: 1px solid rgba(16,55,43,.08); border-radius: 50%;
    background:
        radial-gradient(circle at 34% 28%, rgba(168,196,181,.2), transparent 28%),
        radial-gradient(circle at 72% 72%, rgba(79,128,108,.22), transparent 30%),
        var(--green-950);
    box-shadow: 0 34px 90px rgba(16,55,43,.19), 0 0 0 18px rgba(217,228,220,.28);
    animation: heroVisualFloat 7.5s ease-in-out infinite;
}
.visual-frame::before {
    content: ''; position: absolute; inset: -38px; border: 1px solid rgba(79,128,108,.16); border-radius: 50%;
    box-shadow: 0 0 0 30px rgba(79,128,108,.025);
}
.visual-frame::after {
    content: ''; position: absolute; inset: 8%; border: 1px solid rgba(255,255,255,.08); border-radius: 50%;
}
.visual-texture { position: absolute; inset: 0; border-radius: 50%; animation: visualOrbit 24s linear infinite; }
.visual-texture::before,
.visual-texture::after { content: ''; position: absolute; border: 1px solid rgba(255,255,255,.1); border-radius: 50%; }
.visual-texture::before { inset: 19%; box-shadow: 0 0 0 42px rgba(255,255,255,.018), 0 0 0 84px rgba(255,255,255,.012); }
.visual-texture::after { left: 50%; top: -5px; width: 10px; height: 10px; border: 0; background: var(--green-300); box-shadow: 0 0 0 9px rgba(168,196,181,.09); transform: translateX(-50%); }
.visual-core { position: absolute; left: 50%; top: 50%; width: 230px; height: 230px; transform: translate(-50%, -50%); animation: visualCorePulse 5.5s ease-in-out infinite; }
.visual-core::after {
    content: ''; position: absolute; left: 50%; top: 50%; width: 12px; height: 12px; border-radius: 50%;
    background: var(--cream); box-shadow: 0 0 0 11px rgba(244,238,231,.08); transform: translate(-50%, -50%);
}
.core-ring { position: absolute; inset: 0; border: 1px solid rgba(255,255,255,.24); border-radius: 50%; box-shadow: 0 0 0 42px rgba(255,255,255,.035), 0 0 0 84px rgba(255,255,255,.018); }
.core-ring::before { content: ''; position: absolute; inset: 50px; border-radius: 50%; background: var(--paper); box-shadow: 0 18px 44px rgba(0,0,0,.14); }
.core-leaf { position: absolute; z-index: 2; top: 81px; width: 36px; height: 68px; background: var(--green-600); border-radius: 100% 0 100% 0; }
.core-leaf-one { left: 74px; transform: rotate(38deg); }
.core-leaf-two { right: 72px; transform: rotate(218deg); background: var(--green-300); }
.visual-orbit-dot { position: absolute; z-index: 3; border-radius: 50%; }
.visual-orbit-dot-one { right: 4%; top: 29%; width: 14px; height: 14px; background: var(--sage); box-shadow: 0 0 0 9px rgba(217,228,220,.08); animation: orbitDotOne 6s ease-in-out infinite; }
.visual-orbit-dot-two { left: 11%; bottom: 19%; width: 8px; height: 8px; background: var(--green-300); box-shadow: 0 0 0 7px rgba(168,196,181,.07); animation: orbitDotTwo 7s ease-in-out infinite; }
.hero-orb { position: absolute; z-index: -1; border-radius: 50%; filter: blur(1px); }
.hero-orb-one { width: 180px; height: 180px; right: -60px; bottom: 12%; background: rgba(168,196,181,.33); }
.hero-orb-two { width: 58px; height: 58px; left: 47%; top: 18%; background: rgba(79,128,108,.13); }
.scroll-cue { position: absolute; bottom: 28px; left: 50%; display: flex; gap: 10px; align-items: center; color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .14em; transform: translateX(-50%); }
.scroll-cue > span { position: relative; width: 18px; height: 29px; border: 1px solid var(--green-600); border-radius: 999px; }
.scroll-cue > span::after { content: ''; position: absolute; left: 50%; top: 6px; width: 3px; height: 3px; border-radius: 50%; background: var(--green-600); transform: translateX(-50%); animation: scrollCue 1.8s ease-in-out infinite; }

.section-head { display: grid; grid-template-columns: 1.25fr .75fr; gap: 80px; align-items: end; margin-bottom: 70px; }
.section-head h2 { max-width: 760px; margin-bottom: 0; color: var(--green-950); }
.section-head > p { max-width: 430px; margin-bottom: 8px; color: var(--muted); font-size: 1.06rem; }
.section-head > p,
.practice-copy > .large-copy,
.trust-copy > .large-copy,
.contact-copy > p:not(.kicker),
.process .section-side > p {
    --lotus-image: url('../images/lotus-outline.svg');
    position: relative; z-index: 0; isolation: isolate; overflow: visible; padding: 12px 18px 12px 0;
    background: none;
}
.section-head > p::before,
.practice-copy > .large-copy::before,
.trust-copy > .large-copy::before,
.contact-copy > p:not(.kicker)::before,
.process .section-side > p::before {
    content: ''; position: absolute; z-index: -1; right: 0; top: 50%; width: clamp(145px, 13vw, 190px); aspect-ratio: 240 / 150;
    background: var(--lotus-image) center / contain no-repeat; pointer-events: none; transform: translateY(-50%);
}
.service-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: 1fr; gap: 18px; }
.service-card {
    --ripple-x: 100%; --ripple-y: 100%; --ripple-size: 900px;
    position: relative; isolation: isolate; min-height: 390px; overflow: hidden; padding: 34px;
    border: 1px solid var(--line); border-radius: var(--radius-md); background: rgba(251,248,243,.42);
    transition: transform .45s cubic-bezier(.2,.7,.2,1), border-color .45s ease, box-shadow .45s ease, color .3s ease;
}
.service-card::before {
    content: ''; position: absolute; z-index: 1; inset: auto -70px -100px auto; width: 210px; height: 210px;
    border: 1px solid var(--line); border-radius: 50%; transition: transform .55s ease, border-color .35s ease;
}
.service-card::after {
    content: ''; position: absolute; z-index: 0; left: var(--ripple-x); top: var(--ripple-y);
    width: var(--ripple-size); height: var(--ripple-size); border-radius: 50%; background: var(--green-900);
    pointer-events: none; transform: translate(-50%, -50%) scale(0);
    transition: transform .72s cubic-bezier(.2,.78,.22,1);
}
.service-card > * { position: relative; z-index: 2; }
.service-card:hover { z-index: 1; color: var(--white); border-color: rgba(16,55,43,.2); box-shadow: var(--shadow); transform: translateY(-12px); }
.service-card:hover::after { transform: translate(-50%, -50%) scale(1); }
.service-card:hover::before { border-color: rgba(255,255,255,.2); transform: scale(1.25); }
.card-number { display: inline-flex; align-items: center; justify-content: center; width: 46px; height: 46px; margin-bottom: 88px; border: 1px solid var(--line); border-radius: 50%; color: var(--green-600); font-size: .78rem; font-weight: 600; }
.service-card h3 { margin-bottom: 18px; }
.service-card p { color: var(--muted); transition: color .35s ease; }
.service-card:hover p, .service-card:hover .card-number { color: var(--sage); }
.service-card:hover .card-number { border-color: rgba(255,255,255,.22); }

.practice {
    overflow: hidden;
    background:
        radial-gradient(circle at 8% 78%, rgba(217,228,220,.68), transparent 27%),
        radial-gradient(circle at 93% 15%, rgba(233,222,210,.72), transparent 29%),
        var(--paper);
}
.practice::before {
    content: ''; position: absolute; left: -190px; bottom: -250px; width: 540px; height: 540px;
    border: 1px solid rgba(16,55,43,.08); border-radius: 50%; box-shadow: 0 0 0 54px rgba(16,55,43,.018), 0 0 0 108px rgba(16,55,43,.012);
}
.practice::after {
    content: ''; position: absolute; right: -170px; top: 60px; width: 410px; height: 290px;
    border: 1px solid rgba(79,128,108,.1); border-radius: 48% 52% 60% 40% / 56% 45% 55% 44%; transform: rotate(18deg);
}
.practice-grid { position: relative; z-index: 1; display: grid; grid-template-columns: .88fr 1.12fr; gap: clamp(60px, 10vw, 140px); align-items: center; }
.practice-grid--no-image { grid-template-columns: minmax(0, 820px); justify-content: center; }
.practice-grid--no-image .practice-copy { max-width: 820px; }
.practice-visual { position: relative; min-height: 610px; }
.practice-visual::before { display: none; }
.practice-photo {
    position: absolute; z-index: 2; left: 0; top: 50%; width: min(92%, 430px); aspect-ratio: 4 / 5; margin: 0;
    overflow: hidden; border: 1px solid rgba(16,55,43,.1); border-radius: 28px 6px 28px 6px;
    background: var(--sage); box-shadow: 0 30px 72px rgba(27,52,43,.13); translate: 0 -50%;
}
.practice-photo > img { width: 100%; height: 100%; object-fit: cover; object-position: center; filter: saturate(.82) contrast(.96); transition: transform .7s cubic-bezier(.2,.75,.2,1), filter .4s ease; }
.practice-photo:hover > img { filter: saturate(.92) contrast(1); transform: scale(1.025); }
.soft-arch {
    position: absolute; left: 0; right: auto; top: 50%; width: min(94%, 500px); aspect-ratio: 1; overflow: visible;
    border: 1px solid rgba(16,55,43,.1); border-radius: 50%; translate: 0 -50%;
    background:
        radial-gradient(circle at 38% 30%, rgba(255,255,255,.38), transparent 29%),
        radial-gradient(circle at 72% 76%, rgba(79,128,108,.08), transparent 30%),
        var(--sage);
    box-shadow: 0 32px 82px rgba(27,52,43,.1), 0 0 0 18px rgba(217,228,220,.35);
}
.soft-arch::before { content: ''; position: absolute; inset: 8%; border: 1px solid rgba(16,55,43,.09); border-radius: 50%; }
.soft-arch::after { content: ''; position: absolute; inset: 20%; border: 1px solid rgba(16,55,43,.1); border-radius: 50%; box-shadow: 0 0 0 34px rgba(16,55,43,.018); }
.soft-arch p {
    position: absolute; z-index: 4; left: 50%; bottom: 9%; width: max-content; max-width: calc(100% - 54px); margin: 0; padding: 13px 22px 15px;
    color: var(--green-900); border: 1px solid rgba(16,55,43,.12); border-radius: 18px; background: rgba(251,248,243,.86);
    box-shadow: 0 16px 36px rgba(16,55,43,.08); font-size: .74rem; font-weight: 600; letter-spacing: .11em; line-height: 1.25; text-align: center; text-transform: uppercase;
    transform: translateX(-50%); backdrop-filter: blur(9px); -webkit-backdrop-filter: blur(9px);
}
.soft-arch strong { display: block; margin-top: 3px; font-family: 'Newsreader', Georgia, serif; font-size: clamp(2.1rem, 3.5vw, 3.45rem); font-weight: 500; letter-spacing: -.045em; line-height: .95; text-transform: none; }
.arch-line {
    position: absolute; width: 66%; aspect-ratio: 1; left: 50%; top: 45%;
    border: 1px solid rgba(16,55,43,.13); border-radius: 50%; transform: translate(-50%, -50%);
}
.arch-line-one { box-shadow: 0 0 0 38px rgba(16,55,43,.022), 0 0 0 76px rgba(16,55,43,.014); }
.arch-line-two { width: 34%; }
.arch-sun { position: absolute; left: 50%; top: 45%; width: 108px; height: 108px; border-radius: 50%; background: var(--cream); transform: translate(-50%,-50%); box-shadow: 0 0 60px rgba(244,238,231,.72); }
.practice-leaf-mark { position: absolute; z-index: 3; left: 50%; top: 45%; width: 82px; height: 76px; transform: translate(-50%,-50%); }
.practice-leaf-mark span { position: absolute; top: 18px; width: 28px; height: 52px; border-radius: 100% 0 100% 0; background: var(--green-600); }
.practice-leaf-mark span:first-child { left: 12px; transform: rotate(38deg); }
.practice-leaf-mark span:last-child { right: 11px; background: var(--green-300); transform: rotate(218deg); }
.quote-chip { position: absolute; z-index: 5; right: -2px; top: 17%; padding: 15px 19px; color: var(--white); border: 1px solid rgba(255,255,255,.14); background: var(--green-900); border-radius: 999px; box-shadow: 0 16px 42px rgba(16,55,43,.16); font-size: .78rem; line-height: 1.45; }
.practice-copy h2 { max-width: 690px; margin-bottom: 30px; color: var(--green-950); }
.large-copy { color: #485952; font-size: clamp(1.08rem, 1.6vw, 1.26rem); }
.value-list { margin-top: 46px; border-top: 1px solid var(--line); }
.value-list > div { display: grid; grid-template-columns: 46px 1fr; gap: 22px; padding: 22px 0; border-bottom: 1px solid var(--line); }
.value-list span { color: var(--green-600); font-size: .78rem; }
.value-list p { margin: 0; color: var(--muted); }
.value-list strong { display: inline-block; min-width: 110px; color: var(--ink); }

.process { position: relative; isolation: isolate; min-height: 0; padding: 90px 0; overflow: visible; overflow-anchor: none; color: var(--white); background: var(--green-950); }
.process-stage {
    position: relative; width: 100%; overflow: hidden; background: inherit;
}
.process-stage::before { content: ''; pointer-events: none; position: absolute; width: 680px; height: 680px; right: -340px; top: -280px; border: 1px solid rgba(255,255,255,.08); border-radius: 50%; box-shadow: 0 0 0 80px rgba(255,255,255,.018), 0 0 0 160px rgba(255,255,255,.012); }
.process-stage > .shell { position: relative; z-index: 1; }
.process .section-head { grid-template-columns: 1.05fr .95fr; gap: clamp(24px, 5vw, 72px); margin-bottom: clamp(28px, 5vh, 60px); }
.process .section-side { justify-self: start; max-width: 440px; }
.process .section-side > p { --lotus-image: url('../images/lotus-outline-light.svg'); max-width: 420px; margin: 0; color: var(--green-300); }
.section-head-light h2 { color: var(--white); }
.section-head-light > p { --lotus-image: url('../images/lotus-outline-light.svg'); color: var(--green-300); }
.section-head-light .kicker { color: var(--green-300); }
.timeline { --timeline-progress: 1; position: relative; display: grid; grid-template-columns: repeat(var(--timeline-count, 4), minmax(0, 1fr)); gap: 0; }
.timeline-rail { position: absolute; left: calc(50% / var(--timeline-count, 4)); width: calc(100% - 100% / var(--timeline-count, 4)); top: 30px; height: 2px; background: rgba(255,255,255,.18); }
.timeline-rail i { display: block; width: 100%; height: 100%; background: var(--sage); transform-origin: left top; transform: scaleX(var(--timeline-progress)); }
.timeline-item {
    position: relative; z-index: 2; min-width: 0; padding: 0 clamp(8px, 1vw, 18px); text-align: center;
}
.timeline-item > span {
    position: relative; z-index: 2; display: grid; place-items: center; width: 66px; height: 66px; margin: 0 auto 52px;
    border: 1px solid rgba(168,196,181,.55); border-radius: 50%; color: var(--green-950); background: var(--sage);
    box-shadow: 0 0 0 8px rgba(168,196,181,.05); font-size: .74rem;
}
.timeline-item h3 { margin: 0 0 16px; font-size: clamp(1.15rem, 1.65vw, 1.45rem); overflow-wrap: anywhere; }
.timeline-item p { margin: 0; color: var(--green-300); font-size: .94rem; line-height: 1.5; overflow-wrap: anywhere; }
.process-actions { display: flex; justify-content: center; margin-top: 28px; }
.process-actions .button { min-height: 44px; max-width: 100%; }

/* Enhancement only after successful measurement. Static/no-JS content stays readable. */
.process.is-scroll-timeline { padding: 0; }
.is-scroll-timeline .process-stage { position: absolute; inset: 0 0 auto; height: var(--pin-height); padding: clamp(16px, 3vh, 36px) 0 max(14px, env(safe-area-inset-bottom)); }
.is-scroll-timeline[data-pin-state="pinned"] .process-stage { position: fixed; top: var(--pin-top); left: 0; right: 0; z-index: 2; }
.is-scroll-timeline[data-pin-state="after"] .process-stage { top: var(--pin-distance); }
.is-scroll-timeline .process-stage > .shell { height: 100%; display: grid; grid-template-rows: minmax(0, 1fr) auto; gap: 16px; }
.is-scroll-timeline .process-content { min-height: 0; overflow: hidden; display: flex; align-items: center; }
.is-scroll-timeline.has-content-overflow .process-content { align-items: flex-start; }
.is-scroll-timeline .process-track { width: 100%; flex: 0 0 auto; padding: 10px 0; will-change: transform; }
.process .reveal { opacity: 1; transform: none; }
.is-scroll-timeline .process-actions { position: relative; z-index: 3; margin: 0; }
.is-scroll-timeline .timeline-item {
    opacity: 0; transform: translateY(26px);
    transition: opacity .55s ease, transform .65s cubic-bezier(.2,.75,.2,1);
}
.is-scroll-timeline .timeline-item > span {
    transform: scale(.74);
    transition: transform .55s cubic-bezier(.2,.8,.2,1), box-shadow .45s ease;
}
.is-scroll-timeline .timeline-item.is-reached { opacity: 1; transform: translateY(0); }
.is-scroll-timeline .timeline-item.is-reached > span { transform: scale(1); box-shadow: 0 0 0 8px rgba(168,196,181,.08), 0 12px 26px rgba(0,0,0,.12); }
.is-short-timeline .process-stage { padding-top: 8px; padding-bottom: max(8px, env(safe-area-inset-bottom)); }
.is-short-timeline .process-stage > .shell { gap: 8px; }
.is-short-timeline .section-head { margin-bottom: 20px; gap: 24px; }
.is-short-timeline .section-head h2 { font-size: clamp(1.65rem, 3.6vw, 2.4rem); }
.is-short-timeline .kicker { margin-bottom: 6px; }
.is-short-timeline .section-side > p { font-size: .85rem; line-height: 1.4; }
.is-short-timeline .timeline-item > span { width: 44px; height: 44px; margin-bottom: 14px; }
.is-short-timeline .timeline-item h3 { font-size: .95rem; margin-bottom: 6px; }
.is-short-timeline .timeline-item p { font-size: .82rem; line-height: 1.4; }
.is-short-timeline .process-actions .button { padding: 8px 20px; font-size: .9rem; }

.process.is-vertical-timeline .section-head { grid-template-columns: 1fr; gap: 12px; margin-bottom: 22px; }
.process.is-vertical-timeline .section-head h2 { font-size: clamp(2rem, 7vw, 3rem); }
.process.is-vertical-timeline .timeline { grid-template-columns: 1fr; gap: 18px; padding-inline: 12px; }
.process.is-vertical-timeline .timeline-item { display: grid; grid-template-columns: 46px minmax(0, 1fr); gap: 0 16px; padding: 0; text-align: left; }
.process.is-vertical-timeline .timeline-item > span { grid-row: 1 / 3; width: 46px; height: 46px; margin: 0; }
.process.is-vertical-timeline .timeline-item h3 { margin-bottom: 4px; }
.process.is-vertical-timeline .timeline-item p { font-size: .88rem; }
.process.is-vertical-timeline .timeline-rail i { transform: scaleY(var(--timeline-progress)); }
.process.is-vertical-timeline .timeline-item { transform: translateY(18px); }
.process.is-vertical-timeline .timeline-item.is-reached { transform: translateY(0); }

.trust {
    overflow: hidden;
    background:
        radial-gradient(circle at 10% 18%, rgba(251,248,243,.62), transparent 27%),
        radial-gradient(circle at 88% 82%, rgba(217,228,220,.7), transparent 29%),
        var(--cream-deep);
}
.trust::before { content: ''; position: absolute; right: -170px; top: -230px; width: 560px; height: 560px; border: 1px solid rgba(16,55,43,.08); border-radius: 50%; box-shadow: 0 0 0 58px rgba(16,55,43,.016), 0 0 0 116px rgba(16,55,43,.01); }
.trust::after { content: ''; position: absolute; left: -130px; bottom: -170px; width: 360px; height: 300px; border: 1px solid rgba(79,128,108,.1); border-radius: 54% 46% 39% 61% / 45% 58% 42% 55%; transform: rotate(-18deg); }
.trust-grid { position: relative; z-index: 1; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(60px, 10vw, 150px); align-items: start; }
.trust-copy { position: static; }
.trust-copy h2 { max-width: 610px; margin-bottom: 30px; color: var(--green-950); }
.trust-statements { border-top: 1px solid var(--line); }
.statement { padding: 42px 0 45px; border-bottom: 1px solid var(--line); }
.statement span { display: block; margin-bottom: 18px; color: var(--green-600); font-size: .75rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.statement p { max-width: 480px; margin: 0; font-family: 'Newsreader', Georgia, serif; font-size: clamp(1.6rem, 2.65vw, 2.55rem); font-weight: 500; line-height: 1.08; letter-spacing: -.035em; }

.contact { overflow: hidden; background: var(--paper); }
.contact::after { content: ''; position: absolute; left: -120px; bottom: -200px; width: 420px; height: 420px; border-radius: 48% 52% 58% 42%; background: var(--sage); opacity: .45; transform: rotate(24deg); }
.contact-grid { position: relative; z-index: 1; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(60px, 8vw, 112px); align-items: stretch; }
.contact-copy { display: flex; flex-direction: column; }
.contact-copy h2 { max-width: 610px; margin-bottom: 28px; color: var(--green-950); font-size: clamp(2.8rem, 4.5vw, 4.55rem); }
.contact-copy > p:not(.kicker) { max-width: 530px; color: var(--muted); font-size: 1.06rem; }
.contact-facts { margin: auto 0 0; padding-top: 52px; border-top: 0; }
.contact-facts::before { content: ''; display: block; width: 100%; height: 1px; margin-bottom: 0; background: var(--line); }
.contact-facts > div { display: grid; grid-template-columns: 115px minmax(0, 1fr); gap: 20px; padding: 17px 0; border-bottom: 1px solid var(--line); }
.contact-facts dt { color: var(--muted); }
.contact-facts dd { min-width: 0; margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.contact-fact-link, .content-page-facts a { color: var(--green-600); text-decoration: underline; text-decoration-color: rgba(79,128,108,.42); text-underline-offset: 4px; }
.contact-fact-link:hover, .content-page-facts a:hover { text-decoration-color: currentColor; }
.contact-hours-row dd { white-space: nowrap; font-size: clamp(.84rem, 1.12vw, 1rem); }
.contact-form { display: flex; flex-direction: column; min-height: 100%; padding: clamp(30px, 5vw, 58px); color: var(--white); background: var(--green-900); border-radius: var(--radius-lg); box-shadow: var(--shadow); }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.contact-form label:not(.check) { display: block; margin-bottom: 20px; }
.contact-form label > span:first-child { display: block; margin-bottom: 8px; color: var(--green-300); font-size: .76rem; letter-spacing: .08em; text-transform: uppercase; }
.contact-form input:not([type="checkbox"]), .contact-form select, .contact-form textarea {
    width: 100%; padding: 14px 0; color: var(--white); border: 0; border-bottom: 1px solid rgba(255,255,255,.26); border-radius: 0; outline: 0; background: transparent;
    transition: border-color .25s ease;
}
.select-field { position: relative; display: block; }
.contact-form select {
    display: block; height: 52px; min-height: 52px; max-height: 52px; padding: 14px 42px 14px 0;
    color-scheme: normal; cursor: pointer; appearance: none; -webkit-appearance: none; -moz-appearance: none;
}
.contact-form select::-ms-expand { display: none; }
.contact-form select option { color: #14241f; background: #fff; }
.select-indicator {
    position: absolute; right: 3px; top: 50%; width: 9px; height: 9px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
    color: var(--white); pointer-events: none; transform: translateY(-72%) rotate(45deg);
}
.contact-form textarea { resize: vertical; min-height: 110px; }
.contact-form label.message-field { display: flex; flex: 1; flex-direction: column; min-height: 170px; }
.contact-form label.message-field textarea { flex: 1; }
.contact-form input:focus, .contact-form select:focus, .contact-form textarea:focus { border-color: var(--green-300); }
.contact-form .field-error { border-color: #f4b6a9 !important; }
.check { display: flex; align-items: flex-start; gap: 12px; margin: 30px 0; color: var(--green-300); font-size: .8rem; cursor: pointer; }
.check input { accent-color: var(--green-300); margin-top: 4px; }
.contact-form .button-primary { color: var(--green-950); background: var(--paper); box-shadow: none; }
.contact-form .button-primary { --button-fill: var(--green-300); }
.contact-form .button-primary:hover { color: var(--green-950); }
.form-note { margin: 18px 0 0; color: rgba(217,228,220,.66); font-size: .73rem; }
.form-status { margin-top: 20px; padding: 14px 16px; border-radius: 12px; color: var(--green-950); background: var(--sage); font-size: .88rem; }
.form-status.is-error { color: #571c13; background: #f4d6cf; }
.form-honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.captcha-wrap { min-height: 70px; margin: 0 0 24px; overflow: hidden; }
.form-config-note { margin: 0 0 24px; padding: 14px 16px; color: #2f120c; border-radius: 12px; background: #f4d6cf; font-size: .82rem; }
.contact-form button[disabled] { opacity: .55; cursor: not-allowed; }

.site-footer {
    position: relative; overflow: hidden; padding: 58px 0 24px; color: var(--sage);
    background:
        radial-gradient(circle at 12% 100%, rgba(79,128,108,.12), transparent 32%),
        radial-gradient(circle at 88% 8%, rgba(168,196,181,.07), transparent 27%),
        #071f18;
}
.site-footer::before {
    content: ''; position: absolute; right: -180px; bottom: -250px; width: 560px; height: 560px;
    border: 1px solid rgba(168,196,181,.08); border-radius: 50%; box-shadow: 0 0 0 72px rgba(168,196,181,.012);
}
.footer-layout { position: relative; z-index: 1; }
.footer-top {
    display: grid; grid-template-columns: 1fr 1fr 1fr; gap: clamp(36px, 7vw, 92px); align-items: center;
    padding-bottom: 36px;
}
.footer-brand { display: inline-flex; align-items: center; width: min(100%, 214px); }
.footer-brand img { width: 100%; height: auto; object-fit: contain; object-position: left center; }
.footer-claim {
    margin: 0; color: var(--green-300); font-size: .95rem; font-weight: 600; letter-spacing: .1em;
    line-height: 1.55; text-align: center; text-transform: uppercase;
}
.footer-links { display: flex; flex-direction: column; align-items: flex-end; justify-content: center; gap: 9px; font-size: 1rem; }
.footer-links a { color: rgba(217,228,220,.78); transition: color .22s ease, transform .22s ease; }
.footer-links a:hover { color: var(--white); transform: translateX(-3px); }
.footer-links a[aria-current="page"] { color: var(--white); text-decoration: underline; text-decoration-color: var(--green-600); text-underline-offset: 5px; }
.footer-meta {
    display: grid; grid-template-columns: .65fr 1.45fr .9fr; gap: 30px; align-items: center;
    padding: 22px 0 0; color: rgba(217,228,220,.68); border-top: 1px solid rgba(255,255,255,.075); font-size: .9rem;
}
.footer-meta strong { color: var(--green-300); font-weight: 600; }
.footer-company { display: inline-flex; align-items: center; justify-content: flex-end; gap: 14px; }
.footer-company > img { flex: 0 0 auto; width: 64px; height: 38px; object-fit: contain; filter: brightness(0) invert(1); opacity: .78; }
.footer-credit { display: inline-flex; align-items: center; justify-content: flex-end; gap: 13px; }
.footer-credit > span { flex: 0 0 auto; color: rgba(217,228,220,.58); font-size: .68rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.footer-credit > a { display: inline-flex; width: min(100%, 160px); transition: opacity .22s ease; }
.footer-credit > a:hover { opacity: .76; }
.footer-credit img { width: 100%; height: auto; object-fit: contain; }

.dialog-layer {
    position: fixed; z-index: 3000; inset: 0; display: grid; place-items: center; padding: 24px;
    background: rgba(7,31,24,.62); backdrop-filter: blur(9px); -webkit-backdrop-filter: blur(9px);
}
.dialog-layer[hidden] { display: none; }
.dialog-close {
    position: absolute; right: 18px; top: 18px; display: grid; place-items: center; width: 42px; height: 42px; padding: 0;
    color: var(--ink); border: 1px solid var(--line); border-radius: 50%; background: transparent; font-size: 1.35rem; line-height: 1; cursor: pointer;
}
.dialog-close[hidden] { display: none; }
.dialog-close:hover { color: var(--white); border-color: var(--green-900); background: var(--green-900); }
.dialog-kicker { margin: 0 0 18px; color: var(--green-600); font-size: .72rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.opening-notice,
.cookie-consent {
    position: relative; width: min(100%, 680px); max-height: calc(100svh - 48px); overflow: auto; padding: clamp(34px, 6vw, 62px);
    color: var(--ink); border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--paper); box-shadow: 0 34px 100px rgba(7,31,24,.3);
}
.opening-notice { width: min(100%, 620px); text-align: center; }
.opening-notice .dialog-kicker { padding-right: 0; }
.opening-notice h2,
.cookie-consent h2 { margin: 0 0 22px; color: var(--green-950); font-size: clamp(2.5rem, 6vw, 4.5rem); }
.opening-notice > p:not(.dialog-kicker),
.cookie-consent > p:not(.dialog-kicker) { margin: 0 0 28px; color: var(--muted); }
.cookie-consent { width: min(100%, 760px); }
.cookie-consent h2 { max-width: 620px; font-size: clamp(2.35rem, 5.2vw, 4rem); }
.cookie-consent > p:not(.dialog-kicker) { max-width: 650px; }
.cookie-categories { display: grid; gap: 10px; margin: 30px 0; }
.cookie-category { display: grid; grid-template-columns: 24px 1fr; gap: 14px; align-items: start; padding: 16px 18px; border: 1px solid var(--line); border-radius: 16px; }
.cookie-category input { width: 18px; height: 18px; margin: 3px 0 0; accent-color: var(--green-900); }
.cookie-category > span, .cookie-category > label { display: grid; gap: 3px; cursor: pointer; }
.cookie-category strong { color: var(--ink); font-size: .9rem; }
.cookie-category small { color: var(--muted); font-size: .78rem; line-height: 1.45; }
.cookie-category.is-required > span { cursor: default; }
.cookie-required-marker { display: grid !important; place-items: center; width: 20px; height: 20px; margin-top: 1px; color: var(--white); border-radius: 50%; background: var(--green-900); font-size: .7rem; }
.cookie-details { grid-column: 1 / -1; margin: 2px 0 0 38px; }
.cookie-details summary { width: fit-content; color: var(--green-600); font-size: .76rem; font-weight: 600; cursor: pointer; }
.cookie-detail-list { display: grid; gap: 10px; margin-top: 12px; }
.cookie-detail-list article { padding: 12px 14px; border-left: 2px solid var(--green-300); background: rgba(217,228,220,.18); }
.cookie-detail-list article p { margin: 4px 0; color: var(--muted); font-size: .78rem; line-height: 1.5; }
.cookie-actions { display: grid; grid-template-columns: 1.12fr 1.12fr .76fr; gap: 10px; }
.cookie-actions .button { min-height: 50px; padding-inline: 16px; font-size: .82rem; }
.accessibility-control-floating { --floating-edge: max(18px, calc(env(safe-area-inset-left, 0px) + 12px)); position: fixed; z-index: 1300; left: var(--floating-edge); bottom: 78px; }
.accessibility-control-floating .accessibility-panel { right: auto; top: auto; left: 0; bottom: calc(100% + 12px); width: min(330px, calc(100vw - var(--floating-edge) - 16px)); }
.accessibility-settings-launch {
    width: 48px; height: 48px; color: var(--white); border-color: rgba(255,255,255,.34); background: var(--green-900);
    box-shadow: 0 12px 32px rgba(7,31,24,.22);
}
.accessibility-settings-launch:hover,
.accessibility-settings-launch[aria-expanded="true"] { color: var(--green-950); border-color: var(--sage); background: var(--sage); }
.cookie-settings-launch {
    position: fixed; z-index: 1200; left: max(18px, calc(env(safe-area-inset-left, 0px) + 12px)); bottom: 18px; display: grid; place-items: center; width: 48px; height: 48px; padding: 0;
    color: var(--white); border: 1px solid rgba(255,255,255,.34); border-radius: 50%; background: var(--green-900); box-shadow: 0 12px 32px rgba(7,31,24,.22); cursor: pointer;
}
.cookie-settings-launch > span { position: relative; display: block; width: 19px; height: 19px; border: 2px solid currentColor; border-radius: 50%; }
.cookie-settings-launch i { position: absolute; width: 3px; height: 3px; border-radius: 50%; background: currentColor; }
.cookie-settings-launch i:nth-child(1) { left: 4px; top: 4px; }
.cookie-settings-launch i:nth-child(2) { right: 3px; top: 7px; }
.cookie-settings-launch i:nth-child(3) { left: 7px; bottom: 3px; }
.cookie-settings-launch:hover { color: var(--green-950); background: var(--sage); transform: translateY(-2px); }
.content-page {
    min-height: 100svh; padding: calc(var(--header-height) + 74px) 0 130px;
    background:
        radial-gradient(circle at 92% 9%, rgba(168,196,181,.3), transparent 25%),
        radial-gradient(circle at 8% 84%, rgba(233,222,210,.68), transparent 28%),
        var(--cream);
}
.content-page-shell { position: relative; }
.back-link { display: inline-flex; align-items: center; gap: 10px; margin-bottom: 70px; color: var(--green-600); font-size: .84rem; font-weight: 600; }
.back-link span { transition: transform .25s ease; }
.back-link:hover span { transform: translateX(-4px); }
.content-page-header { max-width: 920px; margin-bottom: 64px; }
.content-page-header h1 { max-width: 850px; margin-bottom: 30px; color: var(--green-950); font-size: clamp(3.4rem, 7vw, 6.8rem); }
.content-page-prose { max-width: 820px; color: var(--muted); font-size: clamp(1.02rem, 1.45vw, 1.18rem); line-height: 1.85; }
.content-page-facts { max-width: 900px; margin: 0; border-top: 1px solid var(--line); }
.content-page-facts > div { display: grid; grid-template-columns: minmax(150px, .34fr) minmax(0, 1fr); gap: 28px; padding: 22px 0; border-bottom: 1px solid var(--line); }
.content-page-facts dt { color: var(--muted); }
.content-page-facts dd { min-width: 0; margin: 0; color: var(--ink); font-weight: 600; overflow-wrap: anywhere; }
.content-page-action { margin-top: 42px; }
.content-page-form { max-width: 900px; min-height: auto; margin-top: 70px; }
.content-page-form-head { margin-bottom: 34px; }
.content-page-form-head h2 { margin-bottom: 18px; color: var(--white); font-size: clamp(2.3rem, 5vw, 4rem); }
.content-page-form-head p { max-width: 650px; margin: 0; color: var(--green-300); }

html[data-theme="dark"] {
    color-scheme: dark;
    --cream: #0c1b15;
    --cream-deep: #10251d;
    --paper: #13271f;
    --green-950: #edf5f0;
    --green-900: #0a2a20;
    --green-800: #174839;
    --green-600: #79aa94;
    --green-300: #b1ccbd;
    --ink: #edf5f0;
    --muted: #b4c4bc;
    --line: rgba(217,228,220,.22);
    --shadow: 0 28px 80px rgba(0,0,0,.28);
    --focus: #f0c57b;
}
html[data-theme="dark"] body { background: var(--cream); }
html[data-theme="dark"] .site-header { background: linear-gradient(90deg, rgba(10,31,24,.92), rgba(18,50,39,.88)); }
html[data-theme="dark"] .site-header.is-scrolled { background: linear-gradient(90deg, rgba(7,24,18,.97), rgba(16,48,37,.96)); }
html[data-theme="dark"] .brand img { mix-blend-mode: normal; }
html[data-theme="dark"] .brand-logo-primary { display: none; }
html[data-theme="dark"] .brand-logo-white { display: block; }
html[data-theme="dark"] .hero {
    background:
        radial-gradient(circle at 79% 24%, rgba(121,170,148,.14), transparent 25%),
        radial-gradient(circle at 56% 78%, rgba(62,91,77,.24), transparent 32%),
        linear-gradient(124deg, rgba(19,39,31,.6), rgba(12,27,21,.8)),
        var(--cream);
}
html[data-theme="dark"] .hero-lead,
html[data-theme="dark"] .large-copy,
html[data-theme="dark"] .hero-company-line { color: var(--muted); }
html[data-theme="dark"] .hero-logo-light,
html[data-theme="contrast"] .hero-logo-light { display: none; }
html[data-theme="dark"] .hero-logo-dark,
html[data-theme="contrast"] .hero-logo-dark { display: block; }
html[data-theme="dark"] .section-head > p,
html[data-theme="dark"] .practice-copy > .large-copy,
html[data-theme="dark"] .trust-copy > .large-copy,
html[data-theme="dark"] .contact-copy > p:not(.kicker) { --lotus-image: url('../images/lotus-outline-light.svg'); }
html[data-theme="dark"] .service-card,
html[data-theme="dark"] .content-page-card { background: rgba(255,255,255,.035); }
html[data-theme="dark"] .practice {
    background:
        radial-gradient(circle at 8% 78%, rgba(121,170,148,.12), transparent 27%),
        radial-gradient(circle at 93% 15%, rgba(83,111,98,.16), transparent 29%),
        var(--paper);
}
html[data-theme="dark"] .trust {
    background:
        radial-gradient(circle at 10% 18%, rgba(255,255,255,.035), transparent 27%),
        radial-gradient(circle at 88% 82%, rgba(121,170,148,.11), transparent 29%),
        var(--cream-deep);
}
html[data-theme="dark"] .contact { background: var(--paper); }
html[data-theme="dark"] .process { background: #071f18; }
html[data-theme="dark"] .timeline-item > span { color: #0b2f24; }
html[data-theme="dark"] .contact-form { background: #071f18; border: 1px solid var(--line); }
html[data-theme="dark"] .contact-form .button-primary { color: #0b2f24; background: var(--sage); }
html[data-theme="dark"] .nav-cta,
html[data-theme="dark"] .button-primary { --button-fill: #79aa94; }
html[data-theme="dark"] .nav-cta:hover,
html[data-theme="dark"] .button-primary:hover { color: #071f18; }
html[data-theme="dark"] .button-secondary,
html[data-theme="dark"] .button-plain,
html[data-theme="dark"] .button-outline-light { --button-fill: #b1ccbd; }
html[data-theme="dark"] .button-secondary:hover,
html[data-theme="dark"] .button-plain:hover,
html[data-theme="dark"] .button-outline-light:hover { color: #071f18; }
html[data-theme="dark"] .form-status { color: #0b2f24; }
html[data-theme="dark"] .form-status.is-error { color: #571c13; }
html[data-theme="dark"] .accessibility-toggle { color: var(--green-300); background: rgba(255,255,255,.035); }
html[data-theme="dark"] .accessibility-toggle:hover,
html[data-theme="dark"] .accessibility-toggle[aria-expanded="true"] { color: #0b2f24; background: var(--green-300); }
html[data-theme="dark"] .accessibility-settings-launch { color: #0b2f24; border-color: var(--green-300); background: var(--green-300); }
html[data-theme="dark"] .theme-options button[aria-pressed="true"] { color: #0b2f24; border-color: var(--green-300); background: var(--green-300); }
html[data-theme="dark"] .font-options output,
html[data-theme="dark"] .accessibility-info-link,
html[data-theme="dark"] .draft-notice strong { color: var(--green-300); }
html[data-theme="dark"] .content-page {
    background:
        radial-gradient(circle at 92% 9%, rgba(121,170,148,.12), transparent 25%),
        radial-gradient(circle at 8% 84%, rgba(83,111,98,.14), transparent 28%),
        var(--cream);
}
html[data-theme="dark"] .opening-notice,
html[data-theme="dark"] .cookie-consent { background: var(--paper); }

html[data-theme="contrast"] {
    color-scheme: dark;
    --cream: #000;
    --cream-deep: #000;
    --paper: #000;
    --green-950: #fff;
    --green-900: #000;
    --green-800: #000;
    --green-600: #fff;
    --green-300: #fff;
    --sage: #fff;
    --ink: #fff;
    --muted: #fff;
    --line: #fff;
    --shadow: none;
    --focus: #fff;
}
html[data-theme="contrast"] body,
html[data-theme="contrast"] .hero,
html[data-theme="contrast"] .practice,
html[data-theme="contrast"] .process,
html[data-theme="contrast"] .trust,
html[data-theme="contrast"] .contact,
html[data-theme="contrast"] .content-page { color: #fff; background: #000; }
html[data-theme="contrast"] .site-header,
html[data-theme="contrast"] .site-header.is-scrolled { background: #000; box-shadow: 0 2px 0 #fff; }
html[data-theme="contrast"] .brand img { mix-blend-mode: normal; }
html[data-theme="contrast"] .brand-logo-primary { display: none; }
html[data-theme="contrast"] .brand-logo-white { display: block; }
html[data-theme="contrast"] .hero::before,
html[data-theme="contrast"] .hero::after,
html[data-theme="contrast"] .practice::before,
html[data-theme="contrast"] .practice::after,
html[data-theme="contrast"] .trust::before,
html[data-theme="contrast"] .trust::after { border-color: #fff; box-shadow: none; }
html[data-theme="contrast"] .hero-lead,
html[data-theme="contrast"] .large-copy,
html[data-theme="contrast"] .section-head > p,
html[data-theme="contrast"] .value-list p,
html[data-theme="contrast"] .contact-copy > p:not(.kicker),
html[data-theme="contrast"] .content-page-header > p:not(.kicker),
html[data-theme="contrast"] .content-page-card p,
html[data-theme="contrast"] .draft-notice span { color: #fff; }
html[data-theme="contrast"] .section-head > p,
html[data-theme="contrast"] .practice-copy > .large-copy,
html[data-theme="contrast"] .trust-copy > .large-copy,
html[data-theme="contrast"] .contact-copy > p:not(.kicker),
html[data-theme="contrast"] .process .section-side > p { background-image: none; }
html[data-theme="contrast"] .section-head > p::before,
html[data-theme="contrast"] .practice-copy > .large-copy::before,
html[data-theme="contrast"] .trust-copy > .large-copy::before,
html[data-theme="contrast"] .contact-copy > p:not(.kicker)::before,
html[data-theme="contrast"] .process .section-side > p::before { display: none; }
html[data-theme="contrast"] .nav-cta,
html[data-theme="contrast"] .button-primary { --button-fill: #000; color: #000; border-color: #fff; background: #fff; box-shadow: none; }
html[data-theme="contrast"] .nav-cta:hover,
html[data-theme="contrast"] .button-primary:hover { color: #fff; }
html[data-theme="contrast"] .accessibility-toggle { color: #fff; border: 2px solid #fff; background: #000; }
html[data-theme="contrast"] .accessibility-toggle:hover,
html[data-theme="contrast"] .accessibility-toggle[aria-expanded="true"] { color: #000; background: #fff; }
html[data-theme="contrast"] .accessibility-panel,
html[data-theme="contrast"] .service-card,
html[data-theme="contrast"] .content-page-card,
html[data-theme="contrast"] .contact-form { color: #fff; border: 2px solid #fff; background: #000; box-shadow: none; }
html[data-theme="contrast"] .theme-options button,
html[data-theme="contrast"] .font-options button,
html[data-theme="contrast"] .font-reset { color: #fff; border-color: #fff; background: #000; }
html[data-theme="contrast"] .theme-options button[aria-pressed="true"] { color: #000; border-color: #fff; background: #fff; }
html[data-theme="contrast"] .font-options output,
html[data-theme="contrast"] .accessibility-info-link,
html[data-theme="contrast"] .draft-notice strong { color: #fff; }
html[data-theme="contrast"] .service-card::after { background: #fff; }
html[data-theme="contrast"] .service-card:hover,
html[data-theme="contrast"] .service-card:hover p,
html[data-theme="contrast"] .service-card:hover .card-number { color: #000; }
html[data-theme="contrast"] .timeline-rail,
html[data-theme="contrast"] .timeline-rail i { background: #fff; }
html[data-theme="contrast"] .is-scroll-timeline .timeline-item { opacity: 1; }
html[data-theme="contrast"] .timeline-item > span { color: #000; border-color: #fff; background: #fff; }
html[data-theme="contrast"] .contact-form input:not([type="checkbox"]),
html[data-theme="contrast"] .contact-form select,
html[data-theme="contrast"] .contact-form textarea { color: #fff; border-color: #fff; }
html[data-theme="contrast"] .contact-form .button-primary { color: #000; background: #fff; }
html[data-theme="contrast"] .form-status { color: #000; background: #fff; }
html[data-theme="contrast"] .contact::after { display: none; }
html[data-theme="contrast"] .site-footer { border-top: 2px solid #fff; background: #000; }
html[data-theme="contrast"] .site-footer::before { display: none; }
html[data-theme="contrast"] .footer-claim,
html[data-theme="contrast"] .footer-links a,
html[data-theme="contrast"] .footer-meta,
html[data-theme="contrast"] .footer-meta strong,
html[data-theme="contrast"] .footer-credit > span { color: #fff; }
html[data-theme="contrast"] .footer-meta { border-color: #fff; }
html[data-theme="contrast"] .footer-credit img { filter: brightness(0) invert(1); }
html[data-theme="contrast"] ::selection { color: #000; background: #fff; }
html[data-theme="contrast"] .hero-orb,
html[data-theme="contrast"] .practice-visual::before { display: none; }
html[data-theme="contrast"] .process-stage::before { border-color: #fff; box-shadow: none; }
html[data-theme="contrast"] .hero-photo { border: 2px solid #fff; box-shadow: none; }
html[data-theme="contrast"] .hero-photo img,
html[data-theme="contrast"] .practice-photo > img { filter: grayscale(1) contrast(1000%); }
html[data-theme="contrast"] .practice-photo { border: 2px solid #fff; background: #000; }
html[data-theme="contrast"] .opening-notice,
html[data-theme="contrast"] .cookie-consent,
html[data-theme="contrast"] .cookie-category { color: #fff; border-color: #fff; background: #000; box-shadow: none; }
html[data-theme="contrast"] .dialog-layer { background: #000; backdrop-filter: none; -webkit-backdrop-filter: none; }
html[data-theme="contrast"] .dialog-close,
html[data-theme="contrast"] .button-secondary,
html[data-theme="contrast"] .button-plain { --button-fill: #fff; color: #fff; border-color: #fff; background: #000; }
html[data-theme="contrast"] .dialog-close:hover,
html[data-theme="contrast"] .cookie-settings-launch:hover { color: #000; border-color: #fff; background: #fff; }
html[data-theme="contrast"] .button-secondary:hover,
html[data-theme="contrast"] .button-plain:hover { color: #000; border-color: #fff; background: #000; }
html[data-theme="contrast"] .cookie-settings-launch { color: #fff; border: 2px solid #fff; background: #000; box-shadow: none; }
html[data-theme="contrast"] .cookie-category input { accent-color: #fff; }
html[data-theme="contrast"] .cookie-category strong,
html[data-theme="contrast"] .cookie-category small,
html[data-theme="contrast"] .opening-notice > p:not(.dialog-kicker),
html[data-theme="contrast"] .cookie-consent > p:not(.dialog-kicker),
html[data-theme="contrast"] .content-page-prose,
html[data-theme="contrast"] .content-page-facts dt,
html[data-theme="contrast"] .dialog-kicker,
html[data-theme="contrast"] .opening-hours dt,
html[data-theme="contrast"] .opening-hours dd,
html[data-theme="contrast"] .form-note,
html[data-theme="contrast"] .check { color: #fff; }
html[data-theme="contrast"] .button-outline-light { --button-fill: #fff; color: #fff; border-color: #fff; background: #000; }
html[data-theme="contrast"] .button-outline-light:hover { color: #000; background: #000; }
html[data-theme="contrast"] *,
html[data-theme="contrast"] *::before,
html[data-theme="contrast"] *::after { box-shadow: none !important; text-shadow: none !important; }
html[data-theme="contrast"] .skip-link { color: #000; border: 2px solid #fff; background: #fff; }
html[data-theme="contrast"] .footer-company > img { opacity: 1; }

.reveal { opacity: 0; transform: translateY(32px); transition: opacity .85s cubic-bezier(.2,.7,.2,1) var(--delay, 0s), transform .85s cubic-bezier(.2,.7,.2,1) var(--delay, 0s); }
.reveal.is-visible { opacity: 1; transform: translateY(0); }
.hero-entrance { opacity: 0; transform: translate3d(0, 68px, 0); }
body.is-intro-ready .hero-entrance {
    animation: heroEntrance 1s cubic-bezier(.16,.76,.24,1) var(--intro-delay, 0s) forwards;
}

@keyframes heroEntrance {
    0% { opacity: 0; transform: translate3d(0, 68px, 0); }
    100% { opacity: 1; transform: translate3d(0, 0, 0); }
}
@keyframes heroVisualFloat {
    0%, 100% { transform: translate3d(0, -6px, 0) rotate(-1.2deg); }
    50% { transform: translate3d(0, 12px, 0) rotate(1.2deg); }
}
@keyframes visualOrbit { to { transform: rotate(360deg); } }
@keyframes visualCorePulse {
    0%, 100% { transform: translate(-50%, -50%) scale(1); }
    50% { transform: translate(-50%, -50%) scale(1.035); }
}
@keyframes orbitDotOne {
    0%, 100% { transform: translate3d(0, 0, 0); }
    50% { transform: translate3d(12px, -10px, 0); }
}
@keyframes orbitDotTwo {
    0%, 100% { transform: translate3d(0, 0, 0); }
    50% { transform: translate3d(-9px, 12px, 0); }
}
@keyframes scrollCue { 0% { opacity: 0; transform: translate(-50%, 0); } 40% { opacity: 1; } 100% { opacity: 0; transform: translate(-50%, 10px); } }

@media (max-width: 1020px) {
    :root { --shell: min(100% - 36px, 880px); }
    .hero-grid { grid-template-columns: 1fr .82fr; gap: 36px; }
    .site-nav { gap: 18px; }
    .hero-visual { min-height: 520px; }
    .hero-logo-display { width: min(112%, 640px); }
    .visual-frame { width: min(90%, 440px); }
    .service-card { min-height: 390px; padding: 28px; }
    .practice-grid, .contact-grid { gap: 60px; }
    .practice-visual { min-height: 570px; }
    .footer-meta { grid-template-columns: 1fr 1.5fr; }
    .footer-credit { grid-column: 1 / -1; justify-content: flex-end; }
}

@media (max-width: 780px) {
    :root { --header-height: 78px; }
    .site-header, .site-header.is-scrolled {
        height: 72px; backdrop-filter: none; -webkit-backdrop-filter: none;
        background: var(--cream); box-shadow: 0 1px 0 var(--line);
    }
    .brand { width: 118px; height: 66px; }
    .brand img { width: 100%; max-height: 64px; }
    .nav-toggle { display: block; position: relative; z-index: 2; }
    .nav-toggle[aria-expanded="true"] > span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
    .nav-toggle[aria-expanded="true"] > span:nth-child(2) { opacity: 0; }
    .nav-toggle[aria-expanded="true"] > span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
    .site-nav {
        position: fixed; z-index: 1; inset: 0; width: 100vw; height: 100dvh; min-height: 100svh; overflow-y: auto;
        display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 18px;
        padding: 108px max(28px, calc((100vw - var(--shell)) / 2)) 42px; color: var(--white); background: var(--green-950);
        visibility: hidden; opacity: 0; transform: translateY(-10px); overscroll-behavior: contain; transition: .3s ease;
    }
    .site-nav.is-open { visibility: visible; opacity: 1; transform: translateY(0); }
    html[data-theme="dark"] .site-nav,
    html[data-theme="contrast"] .site-nav { color: #fff; background: #071f18; }
    html[data-theme="contrast"] .site-nav { background: #000; }
    .site-nav > a { font-family: 'Manrope', sans-serif; font-size: clamp(1.55rem, 7vw, 2.35rem); letter-spacing: -.045em; }
    .site-nav > a:not(.nav-cta)::after { display: none; }
    .nav-cta { margin-top: 14px; border-color: rgba(255,255,255,.4); font-family: 'DM Sans', sans-serif !important; font-size: .95rem !important; }
    .site-nav .accessibility-control { width: min(100%, 360px); }
    .site-nav .accessibility-toggle { color: var(--white); border-color: rgba(255,255,255,.42); background: transparent; }
    .site-nav .accessibility-panel { position: static; width: 100%; margin-top: 12px; box-shadow: none; }
    .hero { min-height: auto; padding: 118px 0 72px; }
    .hero-grid { grid-template-columns: 1fr; gap: 0; }
    .hero-copy { display: contents; }
    .hero h1 { position: relative; z-index: 2; order: 1; margin-bottom: 0; }
    .hero-visual { order: 2; min-height: 0; width: 100%; margin: 20px 0 26px; }
    .hero-logo-display { width: min(100%, 520px); }
    .hero-photo { width: min(100%, 420px); aspect-ratio: 16 / 10; }
    .hero-lead { position: relative; z-index: 2; order: 3; margin-bottom: 28px; }
    .hero-actions { position: relative; z-index: 2; order: 4; }
    .hero-details { position: relative; z-index: 2; order: 5; }
    .scroll-cue { display: none; }
    .section { padding: 82px 0; }
    .section-head { grid-template-columns: 1fr; gap: 22px; margin-bottom: 44px; }
    .process:not(.is-scroll-timeline) .section-head { grid-template-columns: 1fr; }
    .process:not(.is-scroll-timeline) .timeline { grid-template-columns: 1fr; gap: 24px; }
    .process:not(.is-scroll-timeline) .timeline-rail { display: none; }
    .process:not(.is-scroll-timeline) .timeline-item { text-align: left; }
    .process:not(.is-scroll-timeline) .timeline-item > span { margin: 0 0 16px; }
    .section-head > p { max-width: 600px; }
    .service-grid { grid-template-columns: 1fr; }
    .service-card { min-height: 290px; padding: 26px; }
    .card-number { margin-bottom: 40px; }
    .practice-grid, .trust-grid, .contact-grid { grid-template-columns: 1fr; }
    .practice-visual { min-height: min(130vw, 650px); }
    .practice-photo { left: 50%; width: min(82vw, 430px); translate: -50% -50%; }
    .practice-visual::before { left: calc(50% + 24px); width: min(82vw, 430px); transform: translateX(-50%); }
    .trust-copy { position: static; }
    .contact-copy { min-height: auto; }
    .contact-facts { margin-top: 12px; }
    .contact-form { min-height: 620px; }
    .footer-top { grid-template-columns: 1fr; gap: 28px; }
    .footer-claim { text-align: left; }
    .footer-links { align-items: flex-start; justify-content: flex-start; }
    .footer-meta { grid-template-columns: 1fr; gap: 18px; }
    .footer-company { justify-content: flex-start; }
    .footer-credit { grid-column: auto; justify-content: flex-start; }
    .content-page { padding-top: 120px; }
    .back-link { margin-bottom: 48px; }
    .dialog-layer { padding: 14px; }
    .opening-notice,
    .cookie-consent { max-height: calc(100svh - 28px); padding: 34px 24px 28px; border-radius: 26px; }
    .dialog-close { right: 12px; top: 12px; }
    .cookie-actions { grid-template-columns: 1fr; }
    .cookie-actions .button-plain { order: 3; }
}

@media (max-width: 520px) {
    :root { --shell: calc(100% - 28px); --radius-lg: 28px; }
    body { font-size: .9375rem; }
    h1 { font-size: clamp(2.7rem, 13.5vw, 4rem); }
    .hero-actions { align-items: flex-start; flex-direction: column; gap: 10px; }
    .hero-details { margin-top: 30px; }
    .opening-hours-hero { display: grid; gap: 7px; }
    .opening-hours-hero > div { display: grid; gap: 5px; }
    .opening-hours-hero dd { max-width: 100%; font-size: .84rem; line-height: 1.45; white-space: normal; }
    .hero-visual { min-height: 0; margin: 16px 0 22px; }
    .hero-logo-display { width: 100%; max-width: 430px; }
    .hero-lead { font-size: 1rem; line-height: 1.58; }
    .service-grid { gap: 14px; }
    .service-card { min-height: 255px; padding: 22px; }
    .service-card h3 { margin-bottom: 14px; }
    .service-card p { margin-bottom: 0; }
    .card-number { width: 42px; height: 42px; margin-bottom: 30px; }
    .practice-visual { min-height: 500px; }
    .practice-photo { width: min(88vw, 390px); }
    .value-list strong { min-width: 90px; }
    .accessibility-control-floating { --floating-edge: max(26px, calc(env(safe-area-inset-left, 0px) + 16px)); }
    .cookie-settings-launch { left: max(26px, calc(env(safe-area-inset-left, 0px) + 16px)); }
    /* Keep the central CTA clear of the two floating controls on the left. */
    .process-actions .button { max-width: calc(100% - 112px); padding-inline: 16px; }
    .process-actions .button-content { min-width: 0; gap: 10px; }
    .form-row { grid-template-columns: 1fr; gap: 0; }
    .contact-form { padding: 28px 22px; }
    .contact-facts > div { grid-template-columns: 1fr; gap: 4px; }
    .contact-hours-row dd { font-size: clamp(.78rem, 3.55vw, .92rem); }
    .site-footer { padding-top: 48px; }
    .footer-brand { width: min(100%, 185px); }
    .footer-credit { align-items: flex-start; flex-direction: column; gap: 8px; }
    .footer-credit > a { width: min(100%, 154px); }
    .footer-company { align-items: flex-start; justify-content: flex-start; }
    .footer-company > img { flex: 0 0 auto; }
    .content-page-header h1 { font-size: clamp(3rem, 15vw, 4.7rem); }
    .content-page-header { margin-bottom: 46px; }
    .content-page-facts > div { grid-template-columns: 1fr; gap: 5px; padding: 17px 0; }
    .content-page-form { margin-top: 52px; }
    .cookie-details { margin-left: 0; }
}

@media (min-width: 620px) and (max-width: 780px) {
    .service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .service-card { min-height: 300px; }
}

@media (orientation: landscape) and (max-height: 680px) and (pointer: coarse) {
    :root { --header-height: 68px; --shell: min(100% - 32px, 980px); }
    .site-header,
    .site-header.is-scrolled { height: 64px; }
    .brand { width: 108px; height: 60px; }
    .brand img { max-height: 58px; }

    .hero { min-height: 100svh; padding: calc(var(--header-height) + 10px) 0 14px; }
    .hero-grid { grid-template-columns: minmax(0, 1.08fr) minmax(180px, .72fr); gap: clamp(18px, 4vw, 42px); }
    .hero-copy { display: block; min-width: 0; }
    .hero h1 { margin-bottom: 10px; font-size: clamp(2.25rem, 7vw, 4.15rem); line-height: .88; }
    .hero-lead { margin-bottom: 12px; font-size: clamp(.76rem, 1.7vw, .98rem); line-height: 1.35; }
    .hero-actions { flex-direction: row; flex-wrap: wrap; gap: 8px 14px; }
    .hero-actions .button { min-height: 40px; padding: 8px 16px; font-size: .78rem; }
    .hero-actions .text-link { padding: 8px 0; font-size: .78rem; }
    .hero-details { margin-top: 10px; padding-top: 8px; }
    .hero-company-line { margin-bottom: 3px; font-size: .64rem; line-height: 1.25; }
    .opening-hours-hero { display: block; }
    .opening-hours-hero > div { display: flex; gap: 8px; }
    .opening-hours-hero dt { font-size: .58rem; }
    .opening-hours-hero dd { font-size: .68rem; line-height: 1.3; white-space: normal; }
    .hero-visual { order: initial; min-height: 0; width: 100%; margin: 0; }
    .hero-logo-display { width: min(100%, 360px); max-width: none; margin-left: auto; }
    .hero-photo { width: min(100%, 360px); max-height: calc(100svh - var(--header-height) - 34px); aspect-ratio: 4 / 3; margin-left: auto; }
    .scroll-cue { display: none; }

    .accessibility-control-floating { left: auto; right: 14px; bottom: 70px; }
    .accessibility-control-floating .accessibility-panel { right: 0; left: auto; }
    .cookie-settings-launch { right: 14px; bottom: 14px; left: auto; }

}

@media (hover: none) {
    .service-card:hover { color: var(--ink); border-color: var(--line); box-shadow: none; transform: none; }
    .service-card:hover::after { transform: translate(-50%, -50%) scale(0); }
    .service-card:hover::before { border-color: var(--line); transform: none; }
    .service-card:hover p { color: var(--muted); }
    .service-card:hover .card-number { color: var(--green-600); border-color: var(--line); }
    .button:hover, .nav-cta:hover { transform: none; }
    .button:hover::before, .nav-cta:hover::before { transform: translate(-50%, -50%) scale(0); }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
    .reveal { opacity: 1; transform: none; }
    .hero-entrance { opacity: 1; transform: none; }
}
