/* v21 — 2026-09-18 — Phase A overrides (loads after the page bundles). Keep this file small; every rule cites its plan row. */

/* A18 — reveal: visible by default; pending state only when JS has announced itself. */
[data-reveal],[data-reveal-stagger]>*{opacity:1;transform:none}
html.reveal-ready [data-reveal]:not(.is-visible),
html.reveal-ready [data-reveal-stagger]:not(.is-visible)>*{opacity:0;transform:translateY(8px)}
[data-reveal],[data-reveal-stagger]>*{transition:opacity .24s cubic-bezier(.22,1,.36,1),transform .24s cubic-bezier(.22,1,.36,1);transition-delay:var(--reveal-delay,0s)}
/* never move decision-critical text: proof labels, headings inside forms, the hero */
html.reveal-ready .svc-proof[data-reveal],
html.reveal-ready form [data-reveal],
html.reveal-ready form [data-reveal-stagger]>*,
html.reveal-ready h1[data-reveal]{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){[data-reveal],[data-reveal-stagger]>*{opacity:1!important;transform:none!important;transition:none!important}}

/* A7 — DESIGN-009: lead paragraph on dark sections (the bundle's override was scoped to a component id the section does not carry) */
.section-dark .sh__lead{color:#c4c9d6}

/* A5 / D-HE — language menu hidden until Hebrew and French pages exist */
.nav__lang:has(.lang[hidden]),.nav__mobile-lang:has(.lang[hidden]){display:none}

/* A2 — contact field and chip boundaries ≥ 3:1 (#7c86a3 on #fff = 3.5:1, on #f7f8fc = 3.3:1) */
.field[data-astro-cid-uw5kdbxl] input[data-astro-cid-uw5kdbxl],
.field[data-astro-cid-uw5kdbxl] textarea[data-astro-cid-uw5kdbxl],
.chip[data-astro-cid-uw5kdbxl]{border-color:#7c86a3}
.field[data-astro-cid-uw5kdbxl] input[data-astro-cid-uw5kdbxl]:focus,
.field[data-astro-cid-uw5kdbxl] textarea[data-astro-cid-uw5kdbxl]:focus{border-color:var(--brand-indigo)}
.field[data-astro-cid-uw5kdbxl][data-invalid] input[data-astro-cid-uw5kdbxl],
.field[data-astro-cid-uw5kdbxl][data-invalid] textarea[data-astro-cid-uw5kdbxl]{border-color:var(--error)}
/* A25 — 44 px chips on touch layouts */
@media (max-width:767px){.chip[data-astro-cid-uw5kdbxl]{min-height:44px}}
/* A1 — the comparable-engagement panel is display:none until a situation is chosen; the accordion runs after [hidden] is lifted */
.reveal[data-astro-cid-uw5kdbxl][hidden]{display:none}
/* A20 — enquiry context label */
.topic-note{display:inline-flex;align-items:center;gap:.5rem;margin:0 0 1rem;padding:.35rem .7rem;border-radius:999px;background:#eef0f8;color:#1e2440;font-size:.8125rem}
.topic-note[hidden]{display:none}

/* A17 — TECH-018: under rotation the H1 stays in the accessibility tree; the beats render as a sibling block */
.hero--rotate .hero__title[data-astro-cid-j7pv25f6]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.hero__beats-block[data-astro-cid-j7pv25f6]{margin-bottom:1.5rem}
.hero__beats-block[data-astro-cid-j7pv25f6] .hero__beats[data-astro-cid-j7pv25f6]{display:none}
.hero--rotate .hero__beats-block[data-astro-cid-j7pv25f6] .hero__beats[data-astro-cid-j7pv25f6]{display:grid;align-items:end}
[data-hero-rotate]:not(.hero--rotate) .hero__beats-block[data-astro-cid-j7pv25f6]{display:none}
.hero--rotate .hero__headline[data-astro-cid-j7pv25f6]{display:block}

/* A26 — What-we-do H1: keep "One senior team." together on narrow screens */
@media (max-width:430px){.phero__title{font-size:min(var(--step-4),10.6vw);max-width:none}}

/* A14 — related-work lists on service, industry and insight pages */
.related-work{margin:1.25rem 0 0;padding:1rem 0 0;border-top:1px solid #d9deea}
.related-work__label{display:block;margin-bottom:.5rem}
.related-work ul{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}
.related-work a{color:inherit;text-decoration:underline;text-underline-offset:.2em;text-decoration-color:#0891b2}
.related-work a:hover{color:#0891b2}
.section-dark .related-work{border-top-color:rgba(255,255,255,.14)}

/* A6 — consent preference dialog (TECH-005) */
.consent-dialog{border:1px solid #c9cfe2;border-radius:12px;padding:1.5rem;max-width:32rem;width:calc(100% - 2rem);color:#1e2440;background:#fff;box-shadow:0 24px 60px rgba(11,15,26,.28)}
.consent-dialog::backdrop{background:rgba(11,15,26,.45)}
.consent-dialog h2{font-size:1.125rem;margin:0 0 .5rem}
.consent-dialog p{margin:0 0 1rem;line-height:1.55;font-size:.95rem}
.consent-dialog__actions{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:flex-end}
.consent-dialog button{min-height:44px;padding:.6rem 1.1rem;border-radius:8px;border:1px solid #7c86a3;background:#fff;color:#1e2440;font:inherit;cursor:pointer;transition:transform .16s cubic-bezier(.22,1,.36,1)}
.consent-dialog button:active{transform:scale(.97)}
.consent-dialog button.is-primary{background:#0a3a8c;border-color:#0a3a8c;color:#fff}
.consent-dialog button:focus-visible{outline:2px solid #0891b2;outline-offset:2px}

/* A19 — the longer CTA label needs the tighter desktop gap at every width, not only 1300–1439 px (v12-origin nav bundle) */
@media (min-width:1300px){.nav__inner,.nav__links{gap:1rem}.nav__link,.nav__cta .btn{white-space:nowrap}}
