/* aaaplusconsulting.com — AAA+ Consulting (APP-owned stylesheet). v1.
 *
 * Design source: Claude Design "APLUS" export (2026-07-19, archived at
 * ~/design/aaaplusconsulting.com/APLUS on control). Editorial consultancy
 * look: warm cream paper, deep evergreen ink, teal primary, bronze detail
 * accents, Newsreader serif display over Hanken Grotesk UI. Sharp 2px
 * buttons, hairline rules, monospace uppercase eyebrows with a bronze dash.
 *
 * Type: Newsreader (display serif, variable 400-600 + italic) + Hanken
 * Grotesk (UI/body, variable 400-700). Self-hosted (CSP zero external
 * origins). Zero inline styles. Site classes are .ap-*; module bands
 * re-theme via the --mod-* token contract only (m-* selectors are
 * core-owned and never redefined here). Shop/cart surfaces are unstyled on
 * purpose (feature OFF for this app) — restyle from the template's stock
 * sheet if commerce ever activates.
 */

@font-face {
    font-family: 'Hanken Grotesk';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('../fonts/hankengrotesk-400-700-cyrillic-ext-4b1753.woff2') format('woff2');
    unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
    font-family: 'Hanken Grotesk';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('../fonts/hankengrotesk-400-700-vietnamese-560d9f.woff2') format('woff2');
    unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
    font-family: 'Hanken Grotesk';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('../fonts/hankengrotesk-400-700-latin-ext-2cba32.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: 'Hanken Grotesk';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('../fonts/hankengrotesk-400-700-latin-38c384.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: italic;
    font-weight: 400 600;
    font-display: swap;
    src: url('../fonts/newsreader-i400-600-vietnamese-95ca8e.woff2') format('woff2');
    unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
    font-family: 'Newsreader';
    font-style: italic;
    font-weight: 400 600;
    font-display: swap;
    src: url('../fonts/newsreader-i400-600-latin-ext-ee0be5.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: italic;
    font-weight: 400 600;
    font-display: swap;
    src: url('../fonts/newsreader-i400-600-latin-3e7cd7.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: 400 600;
    font-display: swap;
    src: url('../fonts/newsreader-400-600-vietnamese-44c2f2.woff2') format('woff2');
    unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
    font-family: 'Newsreader';
    font-style: normal;
    font-weight: 400 600;
    font-display: swap;
    src: url('../fonts/newsreader-400-600-latin-ext-a40c62.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: 400 600;
    font-display: swap;
    src: url('../fonts/newsreader-400-600-latin-5d70b1.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;
}

/* ══════════ tokens ══════════ */
:root {
    --site-bg:        #f6f3ed;   /* cream paper */
    --site-alt:       #fbfaf6;   /* lighter warm band */
    --site-card:      #ffffff;
    --site-ink:       #16302e;   /* evergreen near-black */
    --site-fg:        #475650;
    --site-muted:     #5a6a64;
    --site-faint:     #7b8a85;
    --site-nav:       #3a4a46;
    --site-teal:      #1d767c;
    --site-teal-2:    #15595e;   /* hover */
    --site-teal-soft: #e9f1ef;   /* check chips */
    --site-bronze:    #bf8b4f;
    --site-bronze-2:  #cf9a5b;   /* hover on dark */
    --site-deep:      #0d3a3d;   /* dark band */
    --site-deep-2:    #0a2e30;   /* footer / hover on deep */
    --site-line:      rgba(21, 48, 46, .10);
    --site-line-2:    rgba(21, 48, 46, .18);
    --site-input:     #fbfaf6;

    --site-serif: 'Newsreader', Georgia, 'Times New Roman', serif;
    --site-sans:  'Hanken Grotesk', system-ui, -apple-system, sans-serif;
    --site-mono:  ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

    --shell-max: 1240px;
    --shell-pad: 40px;
    --r-btn: 2px;
    --r-in: 3px;
    --r-md: 5px;
    --r-lg: 6px;
}

/* ── module token contract: default (cream) band ── */
:root {
    --mod-bg:        var(--site-bg);
    --mod-fg:        var(--site-ink);
    --mod-muted:     var(--site-fg);
    --mod-accent:    var(--site-teal);
    --mod-accent-fg: #ffffff;
    --mod-surface:   var(--site-card);
    --mod-line:      var(--site-line);
    --mod-radius:    var(--r-md);
    --mod-maxw:      var(--shell-max);
    --mod-space:     32px;   /* band padding ×3 = 96px; grid gap ×1 */
}

/* ── band variants (scope the tokens; modules restyle themselves) ── */
.ap-band-paper {
    --mod-bg: var(--site-alt);
    border-block: 1px solid rgba(21, 48, 46, .08);
}
.ap-band-ink {
    --mod-bg:        var(--site-deep);
    --mod-fg:        #ffffff;
    --mod-muted:     #a9c4c0;
    --mod-accent:    var(--site-bronze);
    --mod-accent-fg: var(--site-ink);
    --mod-surface:   rgba(255, 255, 255, .06);
    --mod-line:      rgba(255, 255, 255, .14);
}
.ap-band-teal {
    --mod-bg:        var(--site-teal);
    --mod-fg:        #ffffff;
    --mod-muted:     #cfe6e3;
    --mod-accent:    #ffffff;
    --mod-accent-fg: var(--site-ink);
    --mod-surface:   #ffffff;
    --mod-line:      rgba(255, 255, 255, .22);
}

/* ══════════ base ══════════ */
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
[hidden] { display: none !important; }   /* the attribute must beat any author `display` */
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body.site {
    font-family: var(--site-sans);
    background: var(--site-bg);
    color: var(--site-ink);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}
body.site ::selection { background: var(--site-teal); color: #fff; }
a { color: inherit; }

.site-main { flex: 1; width: 100%; }
.site-main h1, .site-main h2, .site-main h3, .site-main h4, .ap-serif {
    font-family: var(--site-serif);
    font-weight: 500;
    letter-spacing: -.01em;
}
.site-main h1 { font-size: clamp(2.4rem, 5vw, 3.75rem); line-height: 1.05; letter-spacing: -.02em; }
.site-main h2 { font-size: clamp(1.8rem, 3.4vw, 2.625rem); line-height: 1.1; }
.site-main h3 { font-size: 1.44rem; line-height: 1.2; }
.site-main p  { line-height: 1.65; }

/* italic teal highlight inside display headings */
.ap-hl { font-style: italic; color: var(--site-teal); }
.ap-band-ink .ap-hl, .ap-band-teal .ap-hl { color: var(--site-bronze); }

.shell { max-width: var(--shell-max); margin-inline: auto; padding-inline: var(--shell-pad); }

.skip-link {
    position: absolute; inset-inline-start: -9999px;
    padding: 8px 14px; background: var(--site-ink); color: #fff; z-index: 100;
}
.skip-link:focus { inset-inline-start: 8px; inset-block-start: 8px; }

/* ── eyebrow: mono uppercase + bronze dash (site pattern; NOT m-eyebrow) ── */
.ap-eyebrow {
    display: flex; align-items: center; gap: 12px;
    margin-block-end: 22px;
    font-family: var(--site-mono);
    font-size: .75rem; letter-spacing: .2em; text-transform: uppercase;
    color: var(--site-teal);
}
.ap-eyebrow a { color: inherit; text-decoration: none; }
.ap-eyebrow a:hover { color: var(--site-ink); }
.ap-eyebrow::before {
    content: ''; inline-size: 30px; block-size: 1px;
    background: var(--site-bronze); flex: none;
}
.ap-eyebrow--center { justify-content: center; }
.ap-eyebrow--center::after {
    content: ''; inline-size: 30px; block-size: 1px;
    background: var(--site-bronze); flex: none;
}
.ap-band-ink .ap-eyebrow { color: var(--site-bronze); }

/* ══════════ header ══════════ */
/* with the staff adminbar (fixed, 32px) the sticky header docks BELOW it */
body.has-adminbar { --adminbar-h: 32px; }
body.has-adminbar .site-header { inset-block-start: var(--adminbar-h); }
.site-header {
    position: sticky; inset-block-start: 0; z-index: 50;
    background: rgba(246, 243, 237, .82);
    -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
    border-block-end: 1px solid var(--site-line);
}
.site-header-bar {
    display: flex; align-items: center; justify-content: space-between; gap: 18px;
    min-block-size: 78px;
}
.site-brand { display: flex; align-items: center; text-decoration: none; color: var(--site-ink); }
.site-brand img { block-size: 38px; inline-size: auto; display: block; }
.site-brand span { font-family: var(--site-serif); font-size: 1.35rem; font-weight: 500; }

.site-header-right { display: flex; align-items: center; gap: clamp(12px, 1.6vw, 24px); min-inline-size: 0; }

.site-nav { display: flex; align-items: center; gap: clamp(12px, 1.8vw, 26px); }
.site-nav > a, .site-nav-sub > a {
    font-size: .91rem; font-weight: 500; letter-spacing: .01em;
    color: var(--site-nav); text-decoration: none;
}
.site-nav > a:hover, .site-nav-sub > a:hover,
.site-nav > a.on, .site-nav-sub > a.on { color: var(--site-teal); }
.site-nav-sub { position: relative; display: inline-flex; align-items: center; }
/* parents with a submenu wear a chevron */
.site-nav-sub > a::after {
    content: ''; display: inline-block; inline-size: 6px; block-size: 6px;
    margin-inline-start: 7px; margin-block-end: 2px;
    border-inline-end: 1.6px solid currentColor; border-block-end: 1.6px solid currentColor;
    transform: rotate(45deg);
}
/* generous hover runway: taller link + an invisible bridge over the gap,
   so the pointer never falls out on its way to the panel */
.site-nav-sub > a { padding-block: 27px; }
.site-nav-drop {
    position: absolute; inset-block-start: calc(100% - 16px); inset-inline-start: -14px;
    display: none; flex-direction: column; min-inline-size: 210px;
    padding: 8px;
    background: #fff; border: 1px solid var(--site-line-2); border-radius: 4px;
    box-shadow: 0 18px 44px -18px rgba(13, 58, 61, .45);
    z-index: 60;
}
.site-nav-drop::before {
    content: ''; position: absolute; inset-block-start: -14px;
    inset-inline: 0; block-size: 14px;
}
.site-nav-sub:hover .site-nav-drop, .site-nav-sub:focus-within .site-nav-drop { display: flex; }
.site-nav-drop a {
    padding: 9px 11px; border-radius: 3px;
    font-size: .88rem; color: var(--site-ink); text-decoration: none;
}
.site-nav-drop a:hover, .site-nav-drop a.on { background: #f4f1ea; color: var(--site-teal); }

.site-header-sep { inline-size: 1px; block-size: 22px; background: var(--site-line-2); }

/* header action row — olga's uniform 38px control family, in the APLUS
   palette: hairline borders, tracked uppercase micro-labels, teal hover,
   solid teal CTA block */
.site-actions { display: flex; align-items: center; gap: 9px; }
.site-icon-btn {
    display: inline-flex; align-items: center; justify-content: center;
    inline-size: 38px; block-size: 38px; border-radius: var(--r-btn);
    border: 1px solid var(--site-line-2); color: var(--site-nav);
    transition: color .15s, border-color .15s;
}
.site-icon-btn:hover { border-color: var(--site-teal); color: var(--site-teal); }
.site-icon-btn svg { inline-size: 17px; block-size: 17px; }

.site-access {
    display: inline-flex; align-items: center; justify-content: center;
    inline-size: 38px; block-size: 38px;
    border: 1px solid var(--site-line-2); border-radius: var(--r-btn);
    color: var(--site-nav); text-decoration: none;
    transition: color .15s, border-color .15s;
}
/* icon-only control (Dani): the label stays for screen readers */
.site-access span {
    position: absolute; inline-size: 1px; block-size: 1px;
    overflow: hidden; clip-path: inset(50%); white-space: nowrap;
}
.site-access:hover { border-color: var(--site-teal); color: var(--site-teal); }
.site-access svg { inline-size: 15px; block-size: 15px; }

.site-btn {
    display: inline-flex; align-items: center; gap: 7px;
    block-size: 38px; padding-inline: 14px; border-radius: var(--r-btn);
    background: var(--site-teal); color: #fff;
    font-size: .69rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
    line-height: 1; text-decoration: none; white-space: nowrap;
    transition: background .15s ease;
}
.site-btn:hover { background: var(--site-teal-2); }

/* language selector (details/summary, CSS-only) */
.site-lang { position: relative; }
.site-lang summary {
    display: inline-flex; align-items: center; gap: 6px;
    block-size: 38px; padding-inline: 10px;
    border: 1px solid var(--site-line-2); border-radius: var(--r-btn);
    font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
    line-height: 1; color: var(--site-nav); cursor: pointer; list-style: none;
    transition: color .15s, border-color .15s;
}
.site-lang summary::-webkit-details-marker { display: none; }
.site-lang summary:hover { border-color: var(--site-teal); color: var(--site-teal); }
.site-lang summary svg { inline-size: 15px; block-size: 15px; }
.site-lang summary .chev { inline-size: 11px; block-size: 11px; }
.site-lang[open] summary .chev { transform: rotate(180deg); }
.site-lang-panel {
    position: absolute; inset-block-start: calc(100% + 9px); inset-inline-end: 0;
    min-inline-size: 268px; padding: 6px; z-index: 60;
    background: #fff; border: 1px solid var(--site-line-2); border-radius: 4px;
    box-shadow: 0 18px 44px -18px rgba(13, 58, 61, .45);
    display: grid; grid-template-columns: 1fr 1fr; gap: 2px;
}
.site-lang-panel a {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 9px 11px; border-radius: 3px;
    font-size: .875rem; color: var(--site-ink); text-decoration: none;
}
.site-lang-panel a:hover { background: #f4f1ea; }
.site-lang-panel a .c {
    font-family: var(--site-mono); font-size: .69rem; letter-spacing: .06em;
    color: var(--site-faint);
}
.site-lang-panel a.on .c { color: var(--site-teal); }

/* burger (mobile) */
.site-burger { display: none; position: relative; }
.site-burger summary {
    display: inline-flex; align-items: center; justify-content: center;
    inline-size: 38px; block-size: 38px; border: 1px solid var(--site-line-2);
    border-radius: var(--r-btn); color: var(--site-ink); cursor: pointer; list-style: none;
}
.site-burger summary::-webkit-details-marker { display: none; }
.site-burger svg { inline-size: 20px; block-size: 20px; }
.site-burger-panel {
    position: absolute; inset-block-start: calc(100% + 10px); inset-inline-end: 0;
    display: flex; flex-direction: column; min-inline-size: 230px; padding: 8px; z-index: 60;
    background: #fff; border: 1px solid var(--site-line-2); border-radius: 4px;
    box-shadow: 0 18px 44px -18px rgba(13, 58, 61, .45);
}
.site-burger-panel a {
    padding: 11px 13px; border-radius: 3px;
    font-size: .95rem; font-weight: 500; color: var(--site-ink); text-decoration: none;
}
.site-burger-panel a.sub { padding-inline-start: 26px; font-weight: 400; color: var(--site-fg); }
.site-burger-panel a:hover, .site-burger-panel a.on { background: #f4f1ea; color: var(--site-teal); }

/* ══════════ breadcrumbs ══════════ */
.site-crumbs { max-width: var(--shell-max); margin-inline: auto; padding: 20px var(--shell-pad) 0; font-size: .84rem; }
.site-crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; }
.site-crumbs li + li::before { content: "/"; color: var(--site-faint); margin-inline-end: 6px; }
.site-crumbs a { color: var(--site-faint); text-decoration: none; }
.site-crumbs a:hover { color: var(--site-teal); }
.site-crumbs [aria-current] { color: var(--site-fg); }

/* ══════════ footer ══════════ */
.site-footer { background: var(--site-deep-2); color: #cfe0dd; }
.site-footer-grid {
    /* 30% brand · 20% + 20% link columns · 30% offices (Dani, 2026-07-20) */
    display: grid; grid-template-columns: 3fr 2fr 2fr 3fr; gap: 40px 72px;
    padding-block: 72px 48px;
    border-block-end: 1px solid rgba(255, 255, 255, .10);
}
.site-footer-offices { display: flex; flex-direction: column; gap: 26px; }
.site-footer-brand img { block-size: 46px; inline-size: auto; display: block; }
.site-footer-brand > span { font-family: var(--site-serif); font-size: 1.3rem; color: #fff; }
.site-footer-brand p {
    margin: 18px 0 22px; max-inline-size: 300px;
    font-size: .9rem; line-height: 1.65; color: #9fb9b5;
}
.site-footer-social { display: flex; gap: 10px; }
.site-footer-social a {
    display: inline-flex; align-items: center; justify-content: center;
    inline-size: 34px; block-size: 34px; border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, .18); color: #cfe0dd;
}
.site-footer-social a:hover { border-color: var(--site-bronze); color: var(--site-bronze); }
.site-footer-social svg { inline-size: 15px; block-size: 15px; }
.site-footer-head {
    margin-block-end: 18px;
    font-family: var(--site-mono);
    font-size: .72rem; letter-spacing: .16em; text-transform: uppercase;
    color: #7fc3c0;
}
.site-footer-col { display: flex; flex-direction: column; gap: 12px; }
.site-footer-col a {
    display: inline-flex; align-items: baseline; gap: 9px;
    font-size: .9rem; color: #cfe0dd; text-decoration: none;
}
/* bronze arrow marker (the site's link language), slides on hover */
.site-footer-col a::before {
    content: '→'; flex: none; font-size: .82em; color: var(--site-bronze);
    transition: transform .15s ease;
}
.site-footer-col a:hover { color: #fff; }
.site-footer-col a:hover::before { transform: translateX(3px); }
.site-footer-office { font-size: .875rem; line-height: 1.7; color: #9fb9b5; font-style: normal; }
.site-footer-legal {
    display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap;
    padding-block: 26px 30px;
    font-size: .81rem; color: #7f9591;
}
.site-footer-legal-links { display: flex; gap: 24px; flex-wrap: wrap; }
.site-footer-legal-links a { color: #9fb9b5; text-decoration: none; }
.site-footer-legal-links a:hover { color: #fff; }

/* ══════════ site patterns (.ap-*) — used by authored bodies ══════════ */

/* trust strip: areas of expertise, serif items with bronze dots */
.ap-strip { border-block: 1px solid var(--site-line); }
.ap-strip-row {
    max-width: var(--shell-max); margin-inline: auto;
    display: flex; align-items: center; justify-content: space-between;
    gap: 24px; flex-wrap: wrap;
    padding: 22px var(--shell-pad);
}
.ap-strip-label {
    font-family: var(--site-mono);
    font-size: .72rem; letter-spacing: .16em; text-transform: uppercase;
    color: var(--site-faint);
}
.ap-strip-items { display: flex; align-items: center; gap: 38px; flex-wrap: wrap; }
.ap-strip-items span, .ap-strip-items a { font-family: var(--site-serif); font-size: 1.19rem; color: var(--site-nav); }
.ap-strip-items a { text-decoration: none; }
.ap-strip-items a:hover { color: var(--site-teal); }
.ap-strip-items :is(span, a) + :is(span, a)::before {
    content: ''; display: inline-block; vertical-align: middle;
    inline-size: 4px; block-size: 4px; border-radius: 50%;
    background: var(--site-bronze); margin-inline-end: 38px;
}

/* photo frame (for when Dani's real images land) */
.ap-photo {
    inline-size: 100%; block-size: auto; display: block;
    border: 1px solid var(--site-line); border-radius: var(--r-md);
    object-fit: cover;
}
.ap-photo--tall { aspect-ratio: 4 / 5; }
.ap-photo--band { aspect-ratio: 21 / 8; }
.ap-photo--wide { aspect-ratio: 16 / 7; }
.ap-photo--card { aspect-ratio: 16 / 10; }

/* image placeholder — the DESIGN's hatched box, verbatim (the site ships
   with these until the owner's photos arrive; label = mono uppercase) */
.ap-ph {
    display: flex; align-items: center; justify-content: center;
    inline-size: 100%;
    background: repeating-linear-gradient(135deg, #e3ede9 0 16px, #ecf2ee 16px 32px);
    border: 1px solid var(--site-line); border-radius: var(--r-md);
}
.ap-ph span {
    padding: 8px; text-align: center;
    font-family: var(--site-mono);
    font-size: .75rem; letter-spacing: .12em; text-transform: uppercase;
    color: #5d6e68;
}
.ap-ph--tall { aspect-ratio: 4 / 5; }
.ap-ph--band { aspect-ratio: 21 / 8; }
.ap-ph--wide { aspect-ratio: 16 / 7; }
.ap-ph--card { aspect-ratio: 16 / 10; }
.ap-ph--map  { aspect-ratio: 16 / 9; border: 0; border-radius: 0; }
.ap-band-ink .ap-ph, .ap-band-teal .ap-ph, .ap-quote .ap-ph {
    background: repeating-linear-gradient(135deg, rgba(255, 255, 255, .06) 0 16px, rgba(255, 255, 255, .11) 16px 32px);
    border-color: rgba(255, 255, 255, .14);
}
.ap-band-ink .ap-ph span, .ap-band-teal .ap-ph span, .ap-quote .ap-ph span { color: #9fb9b5; }
.ap-quote .ap-ph { aspect-ratio: 4 / 3; }
.ap-quote .ap-photo { aspect-ratio: 4 / 3; }

/* centered lone CTA row */
.ap-tc { text-align: center; margin: 0; }

/* floating stat chip over the hero photo */
.ap-scene { position: relative; }
.ap-float-stat {
    position: absolute; inset-inline-start: -28px; inset-block-end: -28px;
    inline-size: 280px; padding: 26px 28px; border-radius: 4px;
    background: var(--site-deep); color: #eaf3f1;
    box-shadow: 0 24px 50px -24px rgba(13, 58, 61, .7);
}
.ap-float-stat strong {
    display: block; font-family: var(--site-serif); font-weight: 600;
    font-size: 2.75rem; line-height: 1; color: #fff;
}
.ap-float-stat strong::after { content: '.'; color: var(--site-bronze); }
.ap-float-stat span {
    display: block; margin-block-start: 10px;
    font-size: .84rem; line-height: 1.5; color: #a9c4c0;
}

/* name chip pinned to a portrait */
.ap-name-chip {
    position: absolute; inset-inline-end: -24px; inset-block-start: -24px;
    padding: 16px 20px; border-radius: 4px;
    background: var(--site-bg); border: 1px solid var(--site-line-2);
}
.ap-name-chip strong { display: block; font-family: var(--site-serif); font-weight: 500; font-size: 1.13rem; }
.ap-name-chip span { display: block; margin-block-start: 3px; font-size: .78rem; letter-spacing: .04em; color: var(--site-faint); }

/* check list (about block) */
.ap-checks { display: flex; flex-direction: column; gap: 14px; margin: 0; padding: 0; list-style: none; }
.ap-checks li { display: flex; align-items: center; gap: 14px; font-weight: 500; color: #26352f; }
.ap-band-ink .ap-checks li { color: var(--mod-fg); }
.ap-checks li::before {
    content: '✓'; flex: none;
    inline-size: 22px; block-size: 22px; border-radius: 50%;
    background: var(--site-teal-soft); color: var(--site-teal);
    display: inline-flex; align-items: center; justify-content: center;
    font-size: .8rem; font-weight: 700;
}

/* numbered mono index (01 / A / STEP 01) */
.ap-num {
    font-family: var(--site-mono);
    font-size: .75rem; letter-spacing: .1em; color: var(--site-bronze);
}

/* numbered service cell grid (1px-gap mosaic) */
.ap-mosaic {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px;
    background: var(--site-line); border: 1px solid var(--site-line);
    border-radius: var(--r-md); overflow: hidden;
}
.ap-cell {
    position: relative;
    display: flex; flex-direction: column; min-block-size: 230px;
    padding: 34px 30px; background: var(--site-alt);
    text-decoration: none; color: inherit;
}
a.ap-cell:hover { background: #fff; }
.ap-cell h3 { margin: 16px 0 12px; font-size: 1.44rem; }
.ap-cell p { margin: 0; font-size: .91rem; line-height: 1.6; color: var(--site-muted); }
/* enriched service cells (oyco's area-card DNA): teal line icon, serif
   ghost numeral watermark, always-on tracked view link */
.ap-cell .ic { color: var(--site-teal); }
.ap-cell .ic svg { inline-size: 26px; block-size: 26px; display: block; }
.ap-cell-ghost {
    position: absolute; inset-block-start: 20px; inset-inline-end: 26px;
    font-family: var(--site-serif); font-weight: 500; font-size: 3.2rem;
    line-height: 1; color: var(--site-ink); opacity: .07; pointer-events: none;
}

.ap-cell--card { background: #fff; min-block-size: 150px; }
a.ap-cell--card:hover { background: var(--site-alt); }
/* the dark accent cell carries a full service card (home: Legal Services) */
.ap-cell--dark { background: var(--site-deep); }
a.ap-cell--dark:hover { background: var(--site-deep-2); }
.ap-cell--dark h3 { color: #fff; }
.ap-cell--dark .ic { color: var(--site-bronze); }
.ap-cell--dark .ap-cell-ghost { color: #fff; opacity: .09; }
.ap-cell--dark p { color: #a9c4c0; }
.ap-cell--dark .ap-view { color: #cfe0dd; }
a.ap-cell--dark:hover .ap-view { color: #fff; }
.ap-mosaic-more { margin: 20px 0 0; text-align: end; }
/* breathing room for a lone CTA after running text/checks */
.ap-more { margin-block-start: 30px; }

/* "door" cards (home · Straight to the point): compact deep links —
   bronze desk kicker + serif hook + pinned view arrow */
.ap-doors { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.ap-door {
    display: flex; flex-direction: column; gap: 9px;
    padding: 22px 22px 18px; background: #fff;
    border: 1px solid var(--site-line); border-radius: var(--r-md);
    text-decoration: none; color: inherit;
    transition: border-color .18s ease, transform .18s ease;
}
.ap-door:hover { border-color: var(--site-teal); transform: translateY(-2px); }
.ap-door .k {
    font-family: var(--site-mono); font-size: .64rem; font-weight: 600;
    letter-spacing: .14em; text-transform: uppercase; color: var(--site-bronze);
}
.ap-door strong {
    font-family: var(--site-serif); font-weight: 500;
    font-size: 1.13rem; line-height: 1.32; color: var(--site-ink);
}
.ap-door .ap-view { padding-block-start: 12px; }
.ap-door:hover .ap-view { color: var(--site-ink); }
@media (max-width: 1000px) { .ap-doors { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px)  { .ap-doors { grid-template-columns: 1fr; } }
.ap-view {
    margin-block-start: auto; padding-block-start: 14px;
    font-size: .68rem; font-weight: 800; letter-spacing: .14em;
    text-transform: uppercase; color: var(--site-teal);
}
a.ap-cell:hover .ap-view, a.m-card:hover .ap-view { color: var(--site-ink); }

/* service link-cards (category pages) */
.ap-svc-card { position: relative; display: flex; flex-direction: column; }
.ap-svc-card h3 { margin: 14px 0 10px; }
.ap-svc-card > p { margin: 0 0 16px; font-size: .93rem; line-height: 1.6; color: var(--site-muted); }

/* card titles with an inline icon CHIP (category cells & cards): soft-teal
   square that lights up with the card */
.ap-cell--card h3, .ap-svc-card h3 { display: flex; align-items: center; gap: 12px; }
.ap-cell--card h3 .ap-bico, .ap-svc-card h3 .ap-bico {
    flex: none; inline-size: 36px; block-size: 36px;
    align-items: center; justify-content: center;
    background: var(--site-teal-soft); border-radius: 6px;
    transition: background .18s ease, color .18s ease;
}
.ap-cell--card h3 .ap-bico svg, .ap-svc-card h3 .ap-bico svg { inline-size: 20px; block-size: 20px; }
a.ap-cell:hover h3 .ap-bico, a.m-card:hover h3 .ap-bico { background: var(--site-teal); color: #fff; }

/* big stats row */
.ap-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 36px; }
.ap-stat { text-align: center; padding: 20px; }
.ap-stat + .ap-stat { border-inline-start: 1px solid var(--site-line); }
.ap-stat strong {
    display: block; font-family: var(--site-serif); font-weight: 600;
    font-size: clamp(3rem, 5vw, 4.5rem); line-height: 1; color: var(--site-teal);
}
.ap-stat strong::after {
    content: ''; display: block; inline-size: 40px; block-size: 1px;
    background: var(--site-bronze); margin: 20px auto;
}
.ap-stat span { font-size: 1rem; color: var(--site-fg); }
.ap-stat--min { text-align: start; padding: 0; }
.ap-stat--min strong { font-size: 2.88rem; }
.ap-stat--min strong::after { display: none; }
.ap-stat--min span { display: block; margin-block-start: 8px; font-size: .875rem; color: var(--site-muted); }

/* office maps: palette-toned embeds; colors bloom on hover (oyco port) */
.ap-map { position: relative; overflow: hidden; background: var(--site-alt); aspect-ratio: 16 / 9; }
.ap-map iframe {
    position: absolute; inset: 0; inline-size: 100%; block-size: 100%; border: 0;
    /* aplus wash: quiet desaturation, no hue shift — the filter hits the whole
       iframe, and Dani wants the Google pin to stay RED */
    filter: grayscale(.3) saturate(.8) contrast(1.02);
    transition: filter .45s ease;
}
.ap-office:hover .ap-map iframe { filter: none; }
@media (prefers-reduced-motion: reduce) { .ap-map iframe { transition: none; } }

/* office cards — oyco's anatomy in the aplus palette: media slot on top,
   kicker + h3, labelled hairline info rows, tracked arrow link */
.ap-office .m-card__body { padding: 26px 28px 28px; }
.ap-office h3 { margin: 6px 0 8px; font-size: 1.5rem; }
.ap-office .m-card__body > p { margin: 0 0 6px; font-size: .95rem; color: var(--site-fg); }
.ap-officeinfo { margin-block: 16px 4px; border-block-start: 1px solid var(--site-line); }
.ap-officeinfo > div {
    display: flex; gap: 14px; padding-block: 10px;
    border-block-end: 1px solid var(--site-line);
    font-size: .9rem; color: var(--site-fg);
}
.ap-officeinfo .lbl {
    flex: 0 0 78px; padding-block-start: 4px;
    font-size: .66rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase;
    color: var(--site-faint);
}
.ap-office .m-link-arrow {
    margin-block-start: 12px; gap: 8px;
    font-size: .72rem; font-weight: 800; letter-spacing: .18em; text-transform: uppercase;
    color: var(--site-teal);
}
.ap-office .m-link-arrow:hover { color: var(--site-ink); text-decoration: none; }

/* pull quote (dark panel; flattens inside an ink band) */
.ap-band-ink .ap-quote { background: transparent; padding: 0; border-radius: 0; }
.ap-quote {
    display: grid; grid-template-columns: .7fr 1.3fr; gap: 48px; align-items: center;
    padding: 60px; border-radius: var(--r-lg);
    background: var(--site-deep); color: #eaf3f1;
}
.ap-quote blockquote { margin: 0; }
.ap-quote blockquote p {
    margin: 0 0 22px; font-family: var(--site-serif); font-style: italic;
    font-size: 1.63rem; line-height: 1.4; color: #fff;
}
.ap-quote cite { display: block; font-style: normal; font-size: .94rem; font-weight: 600; color: var(--site-bronze); }
.ap-quote cite span { display: block; margin-block-start: 3px; font-size: .84rem; font-weight: 400; color: #a9c4c0; }

/* category pill tabs (service pages) */
.ap-tabs { display: flex; gap: 12px; flex-wrap: wrap; margin-block-start: 36px; }
.ap-tabs a, .ap-tabs span {
    display: inline-flex; align-items: center; padding: 9px 17px;
    border-radius: var(--r-btn); border: 1px solid var(--site-line-2);
    font-size: .84rem; font-weight: 600; color: var(--site-nav); text-decoration: none;
}
.ap-tabs a:hover { border-color: var(--site-teal); color: var(--site-teal); }
.ap-tabs span { background: var(--site-teal); border-color: var(--site-teal); color: #fff; }

/* same-colour seam: a section that follows a sibling of the SAME band
   pulls in close (the 96+96 cream void reads as dead space) */
.m-section.ap-tight { padding-block-start: 24px; }
.m-section:has(+ .m-section.ap-tight) { padding-block-end: 48px; }

/* editorial split: capabilities column centres against the prose */
.ap-edsplit { align-items: center; }

/* crumbed pages: the first band starts close under the breadcrumb trail
   (crumbs and the back link are one navigation moment, not two bands) */
.site-crumbs + .m-section { padding-block-start: 28px; }

/* back link + related strip */
.ap-back {
    display: inline-flex; align-items: center; gap: 8px; margin-block-end: 28px;
    font-size: .84rem; font-weight: 600; color: var(--site-faint); text-decoration: none;
}
.ap-back:hover { color: var(--site-teal); }
.ap-related { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.ap-related a {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    padding: 15px 17px; border: 1px solid var(--site-line-2); border-radius: 4px;
    background: #fff; font-size: .91rem; font-weight: 500;
    color: var(--site-ink); text-decoration: none;
}
.ap-related a:hover { border-color: var(--site-teal); color: var(--site-teal); }
.ap-related a::after { content: '→'; color: var(--site-bronze); }

/* practice sections (services index): index letter + lead | linked rows */
.ap-svcrow {
    display: grid; grid-template-columns: .45fr .55fr;
    gap: 40px clamp(32px, 5vw, 56px); align-items: start;
}
.ap-svcrow h2 { font-size: 2rem; margin: 12px 0 14px; }
.ap-svcrow .ap-svclead > p { margin: 0 0 22px; font-size: .97rem; line-height: 1.6; color: var(--site-muted); max-inline-size: 42ch; }
.ap-svcrow .m-link-arrow {
    gap: 8px; font-size: .72rem; font-weight: 800; letter-spacing: .18em;
    text-transform: uppercase; color: var(--site-teal);
}
.ap-svcrow .m-link-arrow:hover { color: var(--site-ink); text-decoration: none; }
@media (max-width: 900px) { .ap-svcrow { grid-template-columns: 1fr; } }

/* bordered service rows (services index) */
.ap-rows { display: flex; flex-direction: column; }
.ap-rows > a { display: flex; gap: 16px; align-items: flex-start; padding-block: 22px; text-decoration: none; color: inherit; }
.ap-rows .ap-bico { flex: none; padding-block-start: 3px; }
.ap-rows > a + a { border-block-start: 1px solid var(--site-line); }
.ap-rows h3 { margin: 0 0 8px; font-size: 1.31rem; }
.ap-rows > a:hover h3 { color: var(--site-teal); }
.ap-rows p { margin: 0; font-size: .91rem; line-height: 1.6; color: var(--site-muted); }

/* dotted two-column list (services index, audience panels) — works as a
   div-of-links, a div-of-spans or a plain ul */
.ap-dotlist { display: grid; grid-template-columns: 1fr 1fr; gap: 13px 28px; align-content: center; margin: 0; padding: 0; list-style: none; }
.ap-dotlist a, .ap-dotlist span, .ap-dotlist li {
    display: flex; align-items: center; gap: 10px;
    font-size: .94rem; color: #26352f; text-decoration: none;
}
.ap-dotlist a:hover { color: var(--site-teal); }
.ap-dotlist a::before, .ap-dotlist span::before, .ap-dotlist li::before {
    content: ''; inline-size: 5px; block-size: 5px; border-radius: 50%;
    background: var(--site-bronze); flex: none;
}

/* CTA panel (rounded, teal or ink) */
.ap-panel {
    display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center;
    padding: 64px; border-radius: var(--r-lg);
    background: var(--site-teal); color: #fff;
}
.ap-panel--ink { background: var(--site-deep); --mod-accent: var(--site-bronze); --mod-accent-fg: var(--site-ink); }
.ap-panel--row { display: flex; align-items: center; justify-content: space-between; gap: 40px; flex-wrap: wrap; padding: 52px 56px; }
.ap-panel h2 { margin: 0 0 16px; color: #fff; }
.ap-panel--row h2 { margin: 0 0 8px; font-size: 1.88rem; }
.ap-panel p { margin: 0; font-size: 1.03rem; line-height: 1.6; color: #cfe6e3; }
.ap-panel--ink p { color: #a9c4c0; }
.ap-panel-lines { margin-block-start: 30px; display: flex; flex-direction: column; gap: 10px; font-size: .94rem; color: #e7f4f2; }

/* full-bleed contact CTA band (home): teal edge-to-edge, flush to the
   footer — the m-section is the body's last node, so its own teal padding
   meets the footer with no cream gap */
.ap-cta-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.ap-cta-grid h2 { margin: 0 0 16px; }
.ap-cta-grid > div > p { margin: 0; font-size: 1.03rem; line-height: 1.6; color: var(--mod-muted); }
/* the white form card keeps ink text inside dark bands (token re-scope) */
.ap-band-teal .m-form, .ap-band-ink .m-form,
.ap-band-teal .m-sent, .ap-band-ink .m-sent {
    --mod-fg: var(--site-ink); --mod-muted: var(--site-muted); --mod-line: var(--site-line);
}
@media (max-width: 900px) { .ap-cta-grid { grid-template-columns: 1fr; } }

/* what-we-handle box (service leaf sidebar) + generic aside card */
.ap-handle {
    padding: 34px 36px; border: 1px solid var(--site-line); border-radius: var(--r-lg);
    background: var(--site-alt);
}
.ap-handle-head {
    margin-block-end: 20px;
    font-family: var(--site-mono);
    font-size: .72rem; letter-spacing: .16em; text-transform: uppercase;
    color: var(--site-teal);
}
.ap-handle h3 { margin: 0 0 12px; }
.ap-handle > p { margin: 0 0 26px; font-size: .94rem; line-height: 1.6; color: var(--site-muted); }
.ap-handle > p:last-child { margin-block-end: 0; }
.ap-handle .ap-checks + p { margin-block-start: 24px; }

/* wide centered section head (one-line display headline; balanced when it wraps) */
.m-sect-head.ap-wide { max-width: 56em; }
.m-sect-head.ap-wide h2 { text-wrap: balance; }

/* inline mini-stat row (investment closer) */
.ap-statrow { display: flex; gap: 48px; margin-block-start: 28px; flex-wrap: wrap; }
.ap-statrow .ap-stat + .ap-stat { border-inline-start: 0; }

/* editorial two-column prose (under a photo band) */
.ap-cols2 {
    display: grid; grid-template-columns: 1fr 1fr; gap: 24px 56px;
    margin-block-start: 44px;
}
.ap-cols2 p { margin: 0; font-size: 1.02rem; line-height: 1.75; color: var(--site-fg); }
@media (max-width: 900px) { .ap-cols2 { grid-template-columns: 1fr; } }

/* prose | compact ledger split (investment: editorial left, Where-capital-
   goes as a hairline list right — one section, no band gap) */
.ap-splitledger {
    display: grid; grid-template-columns: 1.05fr .95fr;
    gap: 32px clamp(32px, 5vw, 72px);
    margin-block-start: 44px; align-items: start;
}
.ap-prose p { margin: 0 0 1em; font-size: 1.02rem; line-height: 1.85; color: var(--site-fg); }
.ap-prose p:last-child { margin-block-end: 0; }
.ap-splitledger h2 { font-size: 1.75rem; margin: 0 0 10px; }
.ap-ledger > div {
    display: flex; gap: 14px; padding-block: 13px;
    border-block-end: 1px solid var(--site-line);
}
.ap-ledger > div:first-child { border-block-start: 1px solid var(--site-line); }
.ap-ledger .ap-bico { flex: none; padding-block-start: 2px; }
.ap-ledger h3 { margin: 0 0 3px; font-size: 1.06rem; }
.ap-ledger p { margin: 0; font-size: .85rem; line-height: 1.55; color: var(--site-muted); }
.ap-splitledger .ap-statrow { margin-block-start: 38px; }
.ap-splitledger .m-link-arrow {
    margin-block-start: 16px; gap: 8px;
    font-size: .72rem; font-weight: 800; letter-spacing: .18em; text-transform: uppercase;
    color: var(--site-teal);
}
.ap-splitledger .m-link-arrow:hover { color: var(--site-ink); text-decoration: none; }
@media (max-width: 900px) { .ap-splitledger { grid-template-columns: 1fr; } }

/* why-cards (investment pillars): icon chip, serif title, capability list */
.ap-whycard { display: flex; flex-direction: column; }
.ap-whycard .ic {
    display: inline-flex; align-items: center; justify-content: center;
    inline-size: 44px; block-size: 44px; border-radius: 50%;
    background: var(--site-teal-soft); color: var(--site-teal);
    margin-block-end: 16px;
}
.ap-whycard .ic svg { inline-size: 22px; block-size: 22px; }
.ap-whycard h3 { margin: 0 0 10px; }
.ap-whycard > p { margin: 0 0 20px; font-size: .93rem; line-height: 1.62; color: var(--site-muted); }
.ap-whycard ul {
    margin: auto 0 0; padding: 14px 0 0; list-style: none;
    border-block-start: 1px solid var(--site-line);
    display: flex; flex-direction: column; gap: 8px;
}
.ap-whycard li {
    display: flex; align-items: center; gap: 10px;
    font-size: .85rem; color: #26352f;
}
.ap-whycard li::before {
    content: ''; inline-size: 5px; block-size: 5px; border-radius: 50%;
    background: var(--site-bronze); flex: none;
}

/* after-the-deal: full-bleed ink band, copy | 2×2 service minis */
.ap-afterpanel {
    display: grid; grid-template-columns: .9fr 1.1fr;
    gap: clamp(32px, 4vw, 56px); align-items: center;
    color: #eaf3f1;
}
.ap-afterpanel .ap-eyebrow { color: var(--site-bronze); }
.ap-afterpanel h2 { margin: 0 0 14px; color: #fff; }
.ap-afterpanel > div > p { margin: 0; font-size: 1rem; line-height: 1.65; color: #a9c4c0; }
.ap-afterpanel .m-link-arrow {
    margin-block-start: 22px; gap: 8px;
    font-size: .72rem; font-weight: 800; letter-spacing: .18em; text-transform: uppercase;
    color: var(--site-bronze-2);
}
.ap-afterpanel .m-link-arrow:hover { color: #fff; text-decoration: none; }
.ap-aftergrid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.ap-aftergrid > div {
    padding: 20px 22px; border-radius: 4px;
    background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .12);
}
.ap-aftergrid .ap-bico { color: var(--site-bronze); margin-block-end: 10px; }
.ap-aftergrid h3 { margin: 0 0 6px; font-size: 1.05rem; color: #fff; }
.ap-aftergrid p { margin: 0; font-size: .84rem; line-height: 1.55; color: #a9c4c0; }
@media (max-width: 900px) { .ap-afterpanel { grid-template-columns: 1fr; } }
@media (max-width: 620px) { .ap-aftergrid { grid-template-columns: 1fr; } }

/* segmented audience switcher (advisory): 3-way CSS-only radio tabs */
.ap-seg input[type="radio"] { position: absolute; opacity: 0; pointer-events: none; }
#apw-biz:focus-visible ~ .ap-seg-tabs label[for="apw-biz"],
#apw-com:focus-visible ~ .ap-seg-tabs label[for="apw-com"],
#apw-ind:focus-visible ~ .ap-seg-tabs label[for="apw-ind"] {
    outline: 2px solid var(--site-teal); outline-offset: 2px; }
.ap-seg-tabs { display: flex; gap: 8px; margin-block-end: 30px; flex-wrap: wrap; }
.ap-seg-tabs label { padding: 10px 18px; border: 1px solid var(--site-line-2);
    border-radius: var(--r-btn); cursor: pointer;
    font-size: .72rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase;
    color: var(--site-muted); transition: color .15s, border-color .15s, background .15s; }
.ap-seg-tabs label:hover { color: var(--site-teal); border-color: var(--site-teal); }
#apw-biz:checked ~ .ap-seg-tabs label[for="apw-biz"],
#apw-com:checked ~ .ap-seg-tabs label[for="apw-com"],
#apw-ind:checked ~ .ap-seg-tabs label[for="apw-ind"] {
    background: var(--site-teal); border-color: var(--site-teal); color: #fff; }
.ap-seg-panel { display: none; }
#apw-biz:checked ~ .ap-seg-body .ap-seg-panel--biz { display: block; }
#apw-com:checked ~ .ap-seg-body .ap-seg-panel--com { display: block; }
#apw-ind:checked ~ .ap-seg-body .ap-seg-panel--ind { display: block; }
/* panel fills the band: blurb column | dotted capabilities column */
.ap-seg-grid { display: grid; grid-template-columns: .9fr 1.1fr; gap: 24px 64px; align-items: start; }
.ap-seg-grid > p, .ap-seg-copy p { margin: 0; font-size: 1.02rem; line-height: 1.7; color: var(--site-fg); }
.ap-seg-copy p + p { margin-block-start: 14px; }
@media (max-width: 900px) { .ap-seg-grid { grid-template-columns: 1fr; } }

/* bento row icon chip (investment opportunity ledger) */
.ap-bico { display: inline-flex; color: var(--site-teal); }
.ap-bico svg { inline-size: 22px; block-size: 22px; }

/* FAQ + aside card closer: questions lead, conversion rides */
.ap-faqgrid .ap-callblock { margin-block-start: 30px; border-block-start: 0; padding-block-start: 0; }
.ap-faqgrid { display: grid; grid-template-columns: 1.15fr .85fr; gap: clamp(28px, 4vw, 56px); align-items: start; }
.ap-faqgrid .m-faq { grid-template-columns: 1fr; margin-block-start: 0; }
/* a placement that PREFILLS the service (data-live-prefill-service) marks
   its form container ap-noservice — the implied select is never asked */
.ap-noservice .m-form__field:has(select[name="service"]) { display: none; }
@media (max-width: 900px) { .ap-faqgrid { grid-template-columns: 1fr; } }

/* page head row: big h1 | side paragraph, baseline-aligned (the mock's
   1.1/0.9 grid — m-sect-row wraps under a display-size h1) */
.ap-headrow { display: grid; grid-template-columns: 1.1fr .9fr; gap: 40px 64px; align-items: end; margin-block-end: calc(var(--mod-space, 32px) * 1.5); }
.ap-headrow .m-sect-head { margin-block-end: 0; max-width: none; }
/* variant: eyebrow OUTSIDE the grid, title vertically CENTRED against the
   side copy (category heads — one-line h1 vs a tall paragraph) */
.ap-headrow--fit { align-items: center; margin-block-end: 0; }
.ap-headrow--fit .ap-tabs { margin-block-start: 26px; }
.ap-headrow--fit + .ap-photo, .ap-headrow--fit + .ap-ph,
.ap-tabs + .ap-photo, .ap-tabs + .ap-ph { margin-block-start: 40px; }
@media (max-width: 900px) { .ap-headrow { grid-template-columns: 1fr; gap: 18px; } }

/* fiscal-calendar ledger (tax-advisory leaf): month chip + line */
.ap-cal { max-inline-size: 820px; }
.ap-cal > div {
    display: flex; gap: 18px; padding-block: 13px;
    border-block-end: 1px solid var(--site-line);
    font-size: .95rem; line-height: 1.55; color: var(--site-fg);
}
.ap-cal > div:first-child { border-block-start: 1px solid var(--site-line); }
.ap-cal .lbl {
    flex: 0 0 92px; padding-block-start: 3px;
    font-family: var(--site-mono);
    font-size: .7rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;
    color: var(--site-bronze);
}

/* claims ledger (banking-law): numbered rows of substance, two columns */
.ap-claims {
    max-inline-size: none;
    display: grid; grid-template-columns: 1fr 1fr;
    column-gap: clamp(32px, 5vw, 64px);
}
.ap-claims > div { align-items: flex-start; }
.ap-claims > div:nth-child(-n+2) { border-block-start: 1px solid var(--site-line); }
.ap-claims .lbl { flex-basis: 34px; }
.ap-claims strong { display: block; margin-block-end: 3px; font-family: var(--site-serif); font-weight: 500; font-size: 1.06rem; color: var(--site-ink); }
@media (max-width: 900px) {
    .ap-claims { grid-template-columns: 1fr; }
    .ap-claims > div:nth-child(2) { border-block-start: 0; }
}

/* mini mono kicker (column heads inside bodies) */
.ap-kicker {
    font-family: var(--site-mono);
    font-size: .72rem; letter-spacing: .16em; text-transform: uppercase;
    color: var(--site-faint);
}

/* steps: bronze top-border columns (investment "how we work") */
.ap-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; }
.ap-steps--3 { grid-template-columns: repeat(3, 1fr); }
.ap-step { border-block-start: 2px solid var(--mod-line, var(--site-line-2)); padding-block-start: 22px; }
.ap-step:first-child { border-block-start-color: var(--site-bronze); }
.ap-step .ap-num { font-size: .8rem; }
.ap-step h3 { margin: 14px 0 10px; font-size: 1.31rem; }
.ap-step p { margin: 0; font-size: .875rem; line-height: 1.6; color: var(--mod-muted, var(--site-muted)); }

/* ══════════ live form — oyco's compact geometry, aplus palette ══════════
   ONE card (ours, white): the core's m-form box is neutralized inside it.
   Micro tracked-uppercase labels, 38px fields, 96px textarea, teal submit
   at the header-button scale. */
.ap-form-card { background: #fff; border-radius: var(--r-md); padding: 30px; color: var(--site-ink); }
.ap-form-card--line { border: 1px solid var(--site-line); padding: 40px; }
.ap-form-card .m-form { gap: 14px 12px; padding: 0; border: 0; background: transparent; }
.ap-form-card .m-form__field {
    gap: .4em; font-size: .68rem; font-weight: 800;
    letter-spacing: .12em; text-transform: uppercase; color: var(--site-muted);
}
.m-form input:not([type="checkbox"]), .m-form select, .m-form textarea {
    inline-size: 100%; border: 1px solid var(--site-line-2); border-radius: var(--r-in);
    background: var(--site-input); color: var(--site-ink);
    font-family: var(--site-sans);
}
.m-form input:focus, .m-form select:focus, .m-form textarea:focus {
    outline: none; border-color: var(--site-teal);
}
.m-form input::placeholder, .m-form textarea::placeholder { color: var(--site-faint); }
.ap-form-card .m-form__field input,
.ap-form-card .m-form__field select {
    block-size: 38px; padding: 0 11px; font-size: .93rem; line-height: 36px;
    letter-spacing: normal; text-transform: none; font-weight: 400;
}
.ap-form-card .m-form__field textarea {
    padding: 8px 11px; font-size: .93rem; letter-spacing: normal;
    text-transform: none; font-weight: 400;
    block-size: 96px; min-block-size: 0; resize: vertical;
}
.ap-form-card .m-form__check { font-size: .8rem; color: var(--site-fg); align-items: center; }
.ap-form-card .m-form__check input { block-size: auto; }
.ap-form-card .m-form__submit {
    block-size: 38px; padding: 0 20px; border: 0;
    font-size: .72rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase;
    border-radius: var(--r-btn); background: var(--site-teal); color: #fff;
    font-family: var(--site-sans); cursor: pointer;
}
.ap-form-card .m-form__submit:hover { background: var(--site-teal-2); filter: none; }
/* full name + the service select get the whole row; email + phone pair up */
.ap-form-card .m-form__field:has(input[name="name"]),
.ap-form-card .m-form__field:has(select) { grid-column: 1 / -1; }
.m-alert {
    padding: 12px 14px; border: 1px solid #d9a05b; border-radius: var(--r-in);
    background: #fdf3e4; color: #7a5220; font-size: .875rem;
}
.m-sent .m-sent__badge { background: var(--site-teal-soft); color: var(--site-teal); }
.m-sent h3 { font-family: var(--site-serif); font-weight: 500; }

/* ══════════ contact + book pages (oyco port, aplus palette) ══════════ */
.ap-pagehead .m-sect-head { max-width: none; margin-block-end: 0; }
.ap-pagehead h1 { max-width: 30ch; margin: 0; }
.ap-pagehead .m-sect-head__sub { max-width: 68ch; }

.ap-contactgrid { display: grid; grid-template-columns: 1fr 1fr;
    gap: clamp(28px, 4vw, 56px); align-items: start; }
.ap-cstack { display: grid; gap: 18px; }
.ap-cstack .ap-cdirect { margin-block-end: 4px; }
.ap-cstack .ap-cintro { margin-block: 6px 4px; }
.ap-cintro h2 { font-size: 1.5rem; margin: 0 0 8px; }
.ap-cintro p { margin: 0; font-size: .95rem; line-height: 1.65; color: var(--site-fg); }
.ap-officeinfo a { color: inherit; text-decoration: none; }
.ap-officeinfo a:hover { color: var(--site-teal); }

/* direct block: round icon + small-caps label over the value */
.ap-cdirect { display: grid; grid-template-columns: auto 1fr;
    gap: 4px 16px; align-items: center;
    border-block-end: 1px solid var(--site-line-2); padding-block-end: 20px; }
.ap-cdirect .ic { grid-row: 1 / 3; display: grid; place-items: center;
    inline-size: 48px; block-size: 48px; border-radius: 50%;
    border: 1px solid var(--site-line-2); background: #fff; color: var(--site-teal); }
.ap-cdirect .ic svg { inline-size: 20px; block-size: 20px; }
.ap-cdirect .lbl { display: block; margin-block-end: 4px;
    font-size: .66rem; font-weight: 800; letter-spacing: .14em;
    text-transform: uppercase; color: var(--site-faint); }
.ap-cdirect .mail { margin: 0; font-size: 1.05rem; font-weight: 700; }
.ap-cdirect .mail a { color: var(--site-ink); text-decoration: none; }
.ap-cdirect .mail a:hover { color: var(--site-teal); }
.ap-cdirect > div > p:last-child { margin: 2px 0 0; font-size: .88rem; color: var(--site-muted); }

/* collapsed office cards (native details/summary — the map loads on open).
   No photo thumb (images arrive at the end): identity column + actions. */
details.ap-officecard { padding: 0; }
details.ap-officecard summary {
    display: grid; grid-template-columns: 1fr auto;
    align-items: center; gap: 4px 18px;
    padding: 20px clamp(24px, 3.4vw, 40px);
    cursor: pointer; list-style: none; }
.ap-officecard summary::-webkit-details-marker { display: none; }
.ap-officecard summary .ap-kicker { grid-column: 1; grid-row: 1; white-space: nowrap; }
.ap-officecard summary .nm { grid-column: 1; grid-row: 2;
    display: inline-flex; align-items: center; gap: 9px;
    font-family: var(--site-serif); font-weight: 500;
    font-size: 1.3rem; color: var(--site-ink); transition: color .15s; }
.ap-officecard summary .nm svg { inline-size: 16px; block-size: 16px; flex: none; color: var(--site-bronze); }
.ap-officecard summary:hover .nm { color: var(--site-teal); }
.ap-officecard summary .st { grid-column: 2; grid-row: 1;
    align-self: center; justify-self: end; margin: 0;
    display: inline-flex; align-items: center; gap: 6px;
    padding: 0 10px; min-block-size: 22px; border-radius: 999px; white-space: nowrap;
    font-size: .7rem; font-weight: 700; letter-spacing: .04em; }
.ap-officecard summary .st:empty { display: none; }
.ap-officecard summary .st::before { content: ''; inline-size: 6px; block-size: 6px;
    border-radius: 50%; background: currentColor; }
.ap-officecard summary .st.ap-open { color: #2e7d5b;
    background: color-mix(in srgb, #2e7d5b 10%, transparent); }
.ap-officecard summary .st.ap-closedst { color: var(--site-muted); background: var(--site-bg); }
.ap-officecard summary .ph { grid-column: 2; grid-row: 2;
    justify-self: end; font-size: .95rem; font-weight: 700; }
.ap-officecard summary .ph a { color: var(--site-ink); text-decoration: none; }
.ap-officecard summary .ph a:hover { color: var(--site-teal); }
.ap-officecard summary .vm { grid-column: 1 / 3; grid-row: 3;
    justify-self: start; align-self: start; margin-block-start: 8px;
    display: inline-flex; align-items: center; gap: 6px;
    padding: 3px 10px; border: 1px solid var(--site-line-2);
    border-radius: var(--r-btn); white-space: nowrap;
    font-size: .66rem; font-weight: 800; letter-spacing: .1em;
    text-transform: uppercase; color: var(--site-teal);
    transition: color .15s, border-color .15s; }
.ap-officecard summary:hover .vm { color: var(--site-ink); border-color: var(--site-ink); }
.ap-officecard summary .vm svg { inline-size: 14px; block-size: 14px; transition: transform .2s ease; }
.ap-officecard summary .vm .hide { display: none; }
details[open].ap-officecard summary .vm .show { display: none; }
details[open].ap-officecard summary .vm .hide { display: inline; }
details[open].ap-officecard summary .vm svg { transform: rotate(180deg); }
.ap-officecard__body { padding: 2px clamp(24px, 3.4vw, 40px) clamp(24px, 3.4vw, 40px); }
.ap-officecard .ap-cmap { aspect-ratio: 1.85 / 1; border-radius: var(--r-in);
    border: 1px solid var(--site-line); margin-block-end: 12px; }
.ap-officecard .ap-officeinfo { margin-block-start: 4px; }

/* weekly-hours dropdown (site.js injects toggle + panel) */
.ap-hours-toggle { margin-inline-start: auto; padding: 2px; background: none;
    border: 0; cursor: pointer; color: var(--site-faint); flex: none;
    transition: color .15s, transform .2s; }
.ap-hours-toggle svg { inline-size: 14px; block-size: 14px; display: block; }
.ap-hours-toggle:hover { color: var(--site-ink); }
.ap-hours-toggle.open { transform: rotate(180deg); }
.ap-officeinfo > div.ap-hours-panel { display: none; padding: 8px 0 10px 92px;
    border-block-end: 1px solid var(--site-line); }
.ap-officeinfo > div.ap-hours-panel.open { display: block; }
.ap-hours-panel > div { display: flex; justify-content: space-between;
    font-size: .84rem; color: var(--site-fg); padding-block: 3px; }
.ap-hours-panel > div.today { font-weight: 700; color: var(--site-ink); }
.ap-hours-panel > div > span:last-child { color: var(--site-muted); }
.ap-hours-panel > div.today > span:last-child { color: var(--site-ink); }

/* form card headline + block CTA */
.ap-form-card h2 { font-family: var(--site-serif); font-weight: 500; font-size: 1.4rem; margin: 0 0 4px; }
.ap-formsub { margin: 0 0 18px; font-size: .87rem; color: var(--site-muted); }
.ap-btn-block { justify-content: center; inline-size: 100%; }

/* book page: what-to-expect + prefer-to-call */
.ap-expect { display: grid; gap: 20px; margin-block: 18px 32px; }
.ap-expect > div { display: grid; grid-template-columns: auto 1fr; gap: 2px 16px; }
.ap-expect .n { grid-row: 1 / 3; padding-block-start: 3px;
    font-family: var(--site-mono); font-size: .8rem; letter-spacing: .1em;
    color: var(--site-bronze); }
.ap-expect .t { font-family: var(--site-serif); font-weight: 500;
    font-size: 1.15rem; color: var(--site-ink); }
.ap-expect .b { font-size: .93rem; line-height: 1.6; color: var(--site-fg); }
.ap-callblock { border-block-start: 1px solid var(--site-line-2); padding-block-start: 20px; }
.ap-callblock h2, .ap-callblock h3 { font-size: 1.5rem; margin: 0 0 6px; }
.ap-callblock .row { display: flex; justify-content: space-between;
    align-items: flex-start; gap: 18px; padding-block: 13px;
    border-block-end: 1px solid var(--site-line); }
.ap-callblock .row:last-child { border-block-end: 0; }
.ap-callblock .who strong { display: block; font-size: .95rem; color: var(--site-ink); }
.ap-callblock .who .sub { display: block; margin-block-start: 2px;
    font-size: .78rem; color: var(--site-muted); }
.ap-callblock .num { flex: none; font-size: .98rem; font-weight: 700;
    color: var(--site-ink); text-decoration: none; }
.ap-callblock .num:hover { color: var(--site-teal); }
/* callblock on the teal band (home CTA): whites + translucent hairlines */
.ap-band-teal .ap-callblock { margin-block-start: 30px; border-block-start-color: rgba(255, 255, 255, .25); }
.ap-band-teal .ap-callblock .row { border-block-end-color: rgba(255, 255, 255, .18); }
.ap-band-teal .ap-callblock .who strong, .ap-band-teal .ap-callblock .num { color: #fff; }
.ap-band-teal .ap-callblock .who .sub { color: #cfe6e3; }
.ap-band-teal .ap-callblock .num:hover { color: var(--site-bronze-2); }

/* hybrid dual form (oyco's Start-today band): CSS-only radio tabs switching
   message / appointment panels. Base = light context (bordered ghost tabs,
   active fills ink); the teal band re-dresses them in whites. */
.ap-hybrid input[type="radio"] { position: absolute; opacity: 0; pointer-events: none; }
#aph-msg:focus-visible ~ .ap-hybrid-tabs label[for="aph-msg"],
#aph-book:focus-visible ~ .ap-hybrid-tabs label[for="aph-book"] {
    outline: 2px solid var(--site-teal); outline-offset: 2px; }
.ap-hybrid-tabs { display: flex; gap: 8px; margin-block-end: 14px; flex-wrap: wrap; }
.ap-hybrid-tabs label { padding: 10px 18px; border: 1px solid var(--site-line-2);
    border-radius: var(--r-btn); cursor: pointer;
    font-size: .72rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase;
    color: var(--site-muted); transition: color .15s, border-color .15s, background .15s; }
.ap-hybrid-tabs label:hover { color: var(--site-teal); border-color: var(--site-teal); }
#aph-msg:checked ~ .ap-hybrid-tabs label[for="aph-msg"],
#aph-book:checked ~ .ap-hybrid-tabs label[for="aph-book"] {
    background: var(--site-teal); border-color: var(--site-teal); color: #fff; }
.ap-hybrid-panel { display: none; }
#aph-msg:checked ~ .ap-hybrid-body .ap-hybrid-panel--msg { display: block; }
#aph-book:checked ~ .ap-hybrid-body .ap-hybrid-panel--book { display: block; }
/* the teal band re-dress (home CTA) */
.ap-band-teal #aph-msg:focus-visible ~ .ap-hybrid-tabs label[for="aph-msg"],
.ap-band-teal #aph-book:focus-visible ~ .ap-hybrid-tabs label[for="aph-book"] { outline-color: #fff; }
.ap-band-teal .ap-hybrid-tabs label { border-color: rgba(255, 255, 255, .35); color: #cfe6e3; }
.ap-band-teal .ap-hybrid-tabs label:hover { color: #fff; border-color: #fff; }
.ap-band-teal #aph-msg:checked ~ .ap-hybrid-tabs label[for="aph-msg"],
.ap-band-teal #aph-book:checked ~ .ap-hybrid-tabs label[for="aph-book"] {
    background: #fff; border-color: #fff; color: var(--site-ink); }

/* booking form rows: type/service full · date+time pair · name full ·
   phone+email pair (oyco's row logic) */
.ap-bookform .m-form__field:has(select) { grid-column: auto; }
.ap-bookform .m-form__field:has(select[name="type"]),
.ap-bookform .m-form__field:has(select[name="service"]) { grid-column: 1 / -1; }
.ap-bookform .m-form__field:has(input[type="email"]) { grid-column: auto; }

@media (max-width: 900px) {
    .ap-contactgrid { grid-template-columns: 1fr; }
    /* /book: on phones the FORM leads — a "Book now" tap wants the form */
    .ap-bookgrid > aside { order: -1; }
}
@media (max-width: 640px) {
    .ap-callblock .row { flex-direction: column; gap: 6px; }
}

/* ══════════ motion (gated: .ap-js + prefers-reduced-motion) ══════════ */
.ap-js .ap-r { opacity: 0; translate: 0 18px; transition: opacity .55s ease, translate .55s ease; }
.ap-js .ap-r.in { opacity: 1; translate: 0 0; }
/* hero entrance on load (home) — pure CSS, no JS needed */
@media (prefers-reduced-motion: no-preference) {
    .m-hero .ap-eyebrow, .m-hero h1, .m-hero .m-hero__lead, .m-hero .m-actions,
    .m-hero .ap-scene {
        animation: ap-rise .7s ease backwards;
    }
    .m-hero h1 { animation-delay: .08s; }
    .m-hero .m-hero__lead { animation-delay: .16s; }
    .m-hero .m-actions { animation-delay: .24s; }
    .m-hero .ap-scene { animation-delay: .2s; }
}
@keyframes ap-rise {
    from { opacity: 0; transform: translateY(16px); }
    to   { opacity: 1; transform: none; }
}

/* hero composition (Dani, 2026-07-20): text was optically low — the core
   module centers against the taller scene column; align to the top with a
   small optical offset instead */
.m-hero--split { align-items: start; }
@media (min-width: 900px) {
    .m-hero--split > div:first-child { padding-block-start: 38px; }
}
/* living hero: slow Ken-Burns drift on the artwork (clipped by .ap-clip so
   the float-stat chip outside the frame is never cut) + a gentle bob on
   the stat chip. Both sit still under prefers-reduced-motion. */
.ap-clip { display: block; overflow: hidden; border-radius: var(--r-md); }
.ap-clip .ap-photo { border-radius: 0; }
@media (prefers-reduced-motion: no-preference) {
    .m-hero .ap-clip .ap-photo {
        animation: ap-slowzoom 18s ease-in-out infinite alternate;
    }
    .m-hero .ap-float-stat {
        animation: ap-rise .7s ease .35s backwards, ap-bob 6s ease-in-out 1.5s infinite alternate;
    }
}
@keyframes ap-slowzoom {
    from { transform: scale(1) translateX(0); }
    to   { transform: scale(1.07) translateX(-1.5%); }
}
@keyframes ap-bob {
    from { transform: translateY(0); }
    to   { transform: translateY(-9px); }
}

/* ══════════ search overlay + page ══════════ */
.site-search-dialog { border: 0; border-radius: var(--r-lg); padding: 0; inline-size: min(640px, 92vw); background: #fff; color: var(--site-ink); box-shadow: 0 30px 80px -30px rgba(13, 58, 61, .5); }
.site-search-dialog::backdrop { background: rgba(13, 58, 61, .4); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
.site-search-box { display: flex; align-items: center; gap: 10px; padding: 16px 18px; border-block-end: 1px solid var(--site-line); }
.site-search-box input { flex: 1; border: 0; outline: none; font-family: var(--site-sans); font-size: 1rem; background: transparent; color: var(--site-ink); }
.site-search-results { max-block-size: 55vh; overflow: auto; padding: 8px; }
.site-search-results a { display: block; padding: 12px 14px; border-radius: 4px; text-decoration: none; color: var(--site-ink); }
.site-search-results a:hover, .site-search-results a.sel { background: #f4f1ea; }
.site-search-results .t { font-weight: 600; }
.site-search-results .e { display: block; margin-block-start: 3px; font-size: .84rem; color: var(--site-muted); }
.site-search-results .e mark { background: transparent; color: var(--site-teal); font-weight: 600; }
.site-search-empty { padding: 26px 14px; text-align: center; color: var(--site-faint); font-size: .91rem; }
.search-page-form { display: flex; gap: 10px; margin-block: 26px 34px; }
.search-page-form input {
    flex: 1; padding: 13px 14px; border: 1px solid var(--site-line-2); border-radius: var(--r-in);
    background: #fff; font-family: var(--site-sans); font-size: .94rem; color: var(--site-ink);
}
.search-page-form button {
    padding: 13px 22px; border: 0; border-radius: var(--r-btn);
    background: var(--site-teal); color: #fff; font-weight: 600; cursor: pointer;
}
.search-page-list { display: flex; flex-direction: column; gap: 10px; padding: 0; margin: 0 0 60px; list-style: none; }
.search-page-list a { display: block; padding: 16px; border: 1px solid var(--site-line); border-radius: var(--r-md); background: #fff; text-decoration: none; color: var(--site-ink); }
.search-page-list a:hover { border-color: var(--site-teal); }

/* ══════════ cookie banner ══════════ */
.cookie-consent {
    position: fixed; inset-block-end: 20px; inset-inline-start: 20px; z-index: 90;
    max-inline-size: 380px; padding: 22px 24px; border-radius: var(--r-lg);
    background: var(--site-deep); color: #eaf3f1;
    box-shadow: 0 24px 50px -24px rgba(13, 58, 61, .8);
}
.cookie-consent p { margin: 0 0 16px; font-size: .84rem; line-height: 1.55; color: #a9c4c0; }
.cookie-consent p a { color: #fff; }
.cookie-consent-actions { display: flex; gap: 10px; }
.cookie-consent-actions button {
    flex: 1; padding: 10px 14px; border-radius: var(--r-btn);
    font-family: var(--site-sans); font-size: .84rem; font-weight: 600; cursor: pointer;
}
.cookie-consent-accept { border: 0; background: var(--site-teal); color: #fff; }
.cookie-consent-accept:hover { background: #229099; }
.cookie-consent-decline { border: 1px solid rgba(255, 255, 255, .25); background: transparent; color: #cfe0dd; }
.cookie-consent-decline:hover { border-color: #fff; color: #fff; }

/* ══════════ entry body (Markdown pages: legal etc. via core page.php) ══════════ */
.page-plain { max-inline-size: 760px; margin-inline: auto; padding: 64px var(--shell-pad) 96px; }
.entry { line-height: 1.7; color: var(--site-fg); }
.entry h1, .entry h2, .entry h3, .entry h4 { color: var(--site-ink); line-height: 1.25; margin: 1.5em 0 .5em; }
.entry > h1:first-child, .entry > h2:first-child, .entry > h3:first-child { margin-top: 0; }
.entry a { color: var(--site-teal); }
.entry ul, .entry ol { padding-inline-start: 1.5em; }
.entry blockquote { margin: 20px 0; padding: 4px 20px; border-inline-start: 3px solid var(--site-bronze); color: var(--site-muted); }
.entry pre { background: #fff; border: 1px solid var(--site-line); border-radius: var(--r-md); padding: 14px 18px; overflow-x: auto; }
.entry pre code { background: none; padding: 0; }
.entry code { background: rgba(21, 48, 46, .06); padding: 2px 6px; border-radius: 4px; font-size: .9em; }
.entry img { max-width: 100%; height: auto; border-radius: var(--r-md); }
.entry table { border-collapse: collapse; margin: 20px 0; display: block; max-width: 100%; overflow-x: auto; }
.entry th, .entry td { border: 1px solid var(--site-line-2); padding: 8px 14px; text-align: start; }
.entry th { color: var(--site-ink); }
.entry hr { border: none; border-top: 1px solid var(--site-line); margin: 36px 0; }

/* ══════════ generic posts look (blog OFF today; minimal dignity if it ever turns on) ══════════ */
.post-header { margin-bottom: 24px; }
.post-header h1 { margin: 0 0 8px; }
.post-meta { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 0; color: var(--site-muted); font-size: .9rem; }
.post-cats::before { content: '·'; margin-inline-end: 14px; }
.post-cover { width: 100%; height: auto; border-radius: var(--r-md); margin-bottom: 28px; }
.post-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 36px; }
.post-tag { padding: 3px 10px; border: 1px solid var(--site-line-2); border-radius: 999px; color: var(--site-muted); font-size: .8rem; }

/* draft badge sits over cream */
.draft-badge { background: var(--site-bronze); color: #fff; }

/* ══════════ responsive ══════════ */
@media (max-width: 1080px) {
    .site-nav { display: none; }
    .site-burger { display: inline-flex; }
    .site-header-sep { display: none; }
}
@media (max-width: 900px) {
    :root { --shell-pad: 24px; --mod-space: 26px; }
    .ap-mosaic { grid-template-columns: 1fr 1fr; }
    .ap-steps { grid-template-columns: 1fr 1fr; }
    .ap-related { grid-template-columns: 1fr 1fr; }
    .ap-stats { grid-template-columns: 1fr; gap: 8px; }
    .ap-stat + .ap-stat { border-inline-start: 0; border-block-start: 1px solid var(--site-line); }
    .ap-quote { grid-template-columns: 1fr; padding: 36px; }
    .ap-panel { grid-template-columns: 1fr; padding: 40px 32px; }
    .site-footer-grid { grid-template-columns: 1fr 1fr; }
    .ap-float-stat { inset-inline-start: 12px; inset-block-end: -24px; inline-size: auto; max-inline-size: 260px; }
    .ap-name-chip { inset-inline-end: 10px; inset-block-start: -18px; }
}
/* header on phones (oyco recipe): tight bar, small brand, icon squares */
@media (max-width: 760px) {
    .site-header .shell { padding-inline: 12px; }
    .site-header-bar { min-block-size: 60px; gap: 10px; }
    .site-actions { gap: 7px; }
    .site-brand img { block-size: 26px; }
    .site-access svg { inline-size: 17px; block-size: 17px; }
    .site-lang summary { inline-size: 38px; block-size: 38px; padding: 0; gap: 0; display: grid; place-items: center; }
    .site-lang summary svg { display: none; }
    .site-lang summary > span { display: block; font-size: .72rem; letter-spacing: .08em; }
    .site-btn { display: none; }   /* header CTA yields to burger on phones (oyco) */
}
@media (max-width: 760px) {
    /* wrapped strip: words only — the dot separators orphan at line starts */
    .ap-strip-items { gap: 10px 22px; }
    .ap-strip-items :is(span, a) + :is(span, a)::before { display: none; margin: 0; }
    /* photo bands regain height on phones (21/8 turns into a sliver) */
    .ap-ph--band { aspect-ratio: 16 / 9; }
}
/* collapsed office cards on phones: status row, name, phone, full-width pill */
@media (max-width: 700px) {
    details.ap-officecard summary { grid-template-columns: 1fr auto; gap: 4px 12px; padding: 18px 20px; }
    .ap-officecard summary .ap-kicker { grid-column: 1; grid-row: 1; }
    .ap-officecard summary .st { grid-column: 2; grid-row: 1; }
    .ap-officecard summary .nm { grid-column: 1 / 3; grid-row: 2; }
    .ap-officecard summary .ph { grid-column: 1 / 3; grid-row: 3; justify-self: start; }
    .ap-officecard summary .ph a { white-space: nowrap; }
    .ap-officecard summary .vm { grid-column: 1 / 3; grid-row: 4; justify-self: stretch; justify-content: center; margin-block-start: 10px; padding: 9px; }
    .ap-officecard__body { padding: 0 20px 20px; }
}
@media (max-width: 620px) {
    :root { --shell-pad: 18px; }
    .ap-mosaic, .ap-steps, .ap-related, .ap-dotlist { grid-template-columns: 1fr; }
    .site-footer-grid { grid-template-columns: 1fr; gap: 34px; }
    .site-footer-legal { flex-direction: column; align-items: flex-start; }
}
