/* ==========================================================================
   About Us page
   Builds on the style.css tokens (colours, fonts, buttons). Fluid: sections share a side gutter (--gx)
   and clamp() type, and stack below 1024px.
   Sections: 01 hero · 02 who we are · 03 numbers · 04 purpose · 05 approach · 06 team · 07 why us · 08 CTA
   ========================================================================== */

.page-about {
    --gx: clamp(20px, 4vw, 60px);          /* side gutter: 60px on the 1920 design */
    --py: clamp(56px, 6.2vw, 110px);       /* section rhythm */
    --ink: var(--c-near-black);
    --hair: #E4E4EA;
}

/* .page clips overflow-x, which would break sticky/clip tricks; clip does not create a scroll container */
.ab.page { gap: 0; align-items: stretch; overflow-x: clip; }
.ab > section { position: relative; width: 100%; }
.ab ul, .ab ol, .ab dl, .ab dd { list-style: none; margin: 0; padding: 0; }
.ab-wrap { width: 100%; max-width: 1920px; margin-inline: auto; padding-inline: var(--gx); }
.ab-section { padding-block: var(--py); }

/* ---------- Shared type ---------- */
.ab-eyebrow { display: inline-flex; align-items: center; gap: 12px; margin-bottom: 18px; font: 600 14px/1.4 var(--font-body); letter-spacing: .12em; text-transform: uppercase; color: var(--c-red); }
.ab-eyebrow::before { content: ""; flex: none; width: 18px; height: 2px; background: var(--c-red); }
.ab-title { margin-bottom: 20px; font-family: var(--font-display); font-weight: 500; font-size: clamp(28px, 2.9vw, 54px); line-height: 1.1; letter-spacing: -.01em; color: var(--ink); overflow-wrap: break-word; }
.ab-title em { font-style: normal; color: var(--c-red); }
.ab-title--light { color: var(--c-white); }
.ab-p { max-width: 36em; margin-bottom: 18px; font-weight: 500; font-size: 17px; line-height: 28px; color: var(--c-body-gray); }
.ab-p--light { color: var(--c-border-gray); }
.ab-copy .btn { margin-top: 12px; }

/* two-column rows: copy on one side, pictures / diagram on the other */
.ab-split { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(28px, 5vw, 96px); align-items: center; }
.ab-split--rev { grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); }
.ab-pic { display: block; width: 100%; height: 100%; object-fit: cover; object-position: right center; border-radius: 12px; }

/* ---------- Scroll reveal (class added by main.js; without JS everything simply shows) ---------- */
.ab-js [data-reveal] { opacity: 0; transform: translateY(24px); transition: opacity .8s ease, transform .8s cubic-bezier(.22, .8, .24, 1); transition-delay: calc(var(--d, 0) * 90ms); }
.ab-js [data-reveal].is-in { opacity: 1; transform: none; }

/* round pink-ringed icon used on the light sections (same icons as the home page numbers) */
.ab-ico { display: grid; place-items: center; flex: none; width: 54px; height: 54px; background: color-mix(in srgb, var(--c-red) 9%, var(--c-white)); border: 1px solid color-mix(in srgb, var(--c-red) 35%, var(--c-white)); border-radius: 50%; }

/* ---------- Shared header + footer: responsive overrides, scoped to this page ---------- */
.page-about .topbar { height: auto; min-height: 84px; }
.page-about .topbar__inner,
.page-about .subnav__list { width: 100%; max-width: 1920px; padding-inline: var(--gx); }
.page-about .topbar__inner { padding-block: 10px; }
.page-about .logo img { width: clamp(150px, 20vw, 297px); height: auto; }
.page-about .menu-drawer__top, .page-about .menu-drawer__bottom { margin-inline: 24px; }
.page-about .menu-drawer__grid { padding-inline: 24px; }

.page-about .site-footer__inner { padding-inline: var(--gx); }
.page-about .footer-brand__about img { max-width: 100%; height: auto; }
.page-about .office__info p { width: auto; }

@media (max-width: 1199px) {
    .page-about .subnav__list { gap: 16px; }
    .page-about .subnav__btn { font-size: 15px; white-space: nowrap; }
}
@media (max-width: 1199px) {   /* below 1200 the layout is fluid (no zoom-fit); the 4-column footer stacks */
    .page-about .site-footer__top { flex-direction: column; gap: 40px; }
    .page-about .footer-brand { width: 100%; }
    .page-about .footer-links { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 32px; padding-left: 0; }
    .page-about .footer-links .v-line { display: none; }
    .page-about .footer-col { width: auto; }
}
@media (max-width: 1180px) {
    .page-about .subnav { display: none; }
    .page-about .offices { flex-direction: column; gap: 20px; }
}
@media (max-width: 720px) {
    .page-about .bottom-bar { flex-direction: column; gap: 12px; text-align: center; }
    .page-about .bottom-bar__links { flex-wrap: wrap; justify-content: center; }
    .page-about .office__phone { font-size: 17px; }
}
@media (max-width: 640px) {
    .page-about .menu-toggle { width: auto; font-size: 18px; }
}
@media (max-width: 560px) {
    .page-about .btn--header { display: none; }
    .page-about .topbar__inner { justify-content: space-between; }
    .page-about .menu-drawer__grid { grid-template-columns: 1fr; }
}


/* ==========================================================================
   01 Hero
   ========================================================================== */
.ab-hero { background: #000; color: var(--c-white); overflow: hidden; }
.ab-hero__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 70% 60%; }
.ab-hero::before { content: ""; position: absolute; z-index: 1; inset: 0; pointer-events: none; background: linear-gradient(90deg, #000 0%, rgba(0, 0, 0, .7) 34%, rgba(0, 0, 0, 0) 66%); }
.ab-hero__top { position: relative; z-index: 5; }
.ab-hero__grid { position: relative; z-index: 2; padding-block: clamp(28px, 3.4vw, 60px) clamp(64px, 7vw, 124px); }
.ab-crumb { margin-bottom: clamp(28px, 3.6vw, 64px); font-size: 18px; line-height: 26px; color: #D2D3D2; }   /* same as the breadcrumb on the service pages */
.ab-crumb a { color: inherit; }
.ab-crumb a:hover { color: var(--c-white); }
.ab-crumb span { color: var(--c-white); }
.ab-hero__title { margin-bottom: 22px; font-family: var(--font-display); font-weight: 500; font-size: clamp(36px, 3.7vw, 72px); line-height: 1.04; letter-spacing: -.02em; color: var(--c-light-bg); }
.ab-hero__title em { font-style: normal; color: var(--c-red); }
.ab-hero__lead { max-width: 25em; margin-bottom: 30px; font-weight: 500; font-size: clamp(16px, 1.1vw, 20px); line-height: 1.6; color: var(--c-white); }
.ab-hero__btns { display: flex; flex-wrap: wrap; gap: 14px 18px; }
.ab-hero__words { position: absolute; right: var(--gx); bottom: clamp(70px, 8vw, 150px); font-family: var(--font-display); font-weight: 500; font-size: clamp(13px, 1.1vw, 20px); line-height: 1.5; letter-spacing: .12em; text-align: right; text-transform: uppercase; color: rgba(255, 255, 255, .5); pointer-events: none; }

/* ==========================================================================
   02 Who we are
   ========================================================================== */
.ab-who { background: var(--c-white); }
.ab-who__pics { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 14px; aspect-ratio: 1.5; }
.ab-who__big { grid-row: 1 / 3; }
.ab-who__small { object-position: center; }
.ab-statcard { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 12px; text-align: center; background: var(--c-near-black); border-radius: 12px; color: var(--c-white); }
.ab-statcard strong { font-family: var(--font-body); font-weight: 600; font-size: clamp(22px, 2vw, 34px); line-height: 1.1; }
.ab-statcard span:last-child { font-size: 14px; line-height: 20px; color: var(--c-border-gray); }

/* ==========================================================================
   03 Numbers (dark band)
   ========================================================================== */
.ab-stats { background: #000; color: var(--c-white); padding-block: clamp(28px, 3.4vw, 52px); }
.ab-stats__row { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 24px 12px; }
.ab-stat { display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; }
.ab-stat dt { font-weight: 600; font-size: clamp(20px, 1.8vw, 32px); line-height: 1.2; color: var(--c-white); font-variant-numeric: tabular-nums; }
.ab-stat dd { font-weight: 500; font-size: 15px; line-height: 20px; color: var(--c-border-gray); }

/* ==========================================================================
   04 Our purpose
   ========================================================================== */
.ab-purpose { background: var(--c-white); }
.ab-purpose__pics { display: grid; grid-template-columns: minmax(0, .62fr) minmax(0, 1.38fr); grid-template-rows: minmax(0, 1.25fr) minmax(0, 1fr); gap: 14px; aspect-ratio: 1.3; }
.ab-purpose__big { grid-column: 1 / 3; }
.ab-purpose__idea { display: grid; place-items: center; color: var(--c-white); background: var(--c-near-black); border-radius: 12px; }
/* these two pictures fade to white on their left side: zoom in on the right part */
.ab-zoom { display: block; overflow: hidden; border-radius: 12px; }
.ab-zoom img { border-radius: 0; transform: scale(1.65); transform-origin: 90% 50%; }
.ab-points { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; margin-top: 30px; }
.ab-points li { display: flex; flex-direction: column; gap: 6px; }
.ab-points .ab-ico { margin-bottom: 8px; }
.ab-points strong { font-weight: 600; font-size: 16px; line-height: 22px; color: var(--ink); }
.ab-points li > span:last-child { font-size: 14px; line-height: 20px; color: var(--c-body-gray); }

/* ==========================================================================
   05 Our approach (dark)
   ========================================================================== */
.ab-approach { background: radial-gradient(ellipse 60% 70% at 78% 50%, rgba(196, 32, 48, .14), transparent 70%), #000; color: var(--c-white); }
.ab-orbit svg { display: block; width: 100%; height: auto; }
.ab-orbit__ring { fill: none; stroke: rgba(255, 255, 255, .22); stroke-width: 1.5; stroke-dasharray: 3 7; }
.ab-orbit__link { stroke: var(--c-red); stroke-width: 1.5; }
.ab-orbit__core { fill: #0B0B0F; stroke: #2F323C; stroke-width: 2; }
.ab-orbit__center { font: 600 17px var(--font-body); letter-spacing: .06em; fill: var(--c-white); }
.ab-orbit__node rect { fill: #0B0B0F; stroke: #3A3D4A; stroke-width: 1.5; }
.ab-orbit__node circle { fill: #0B0B0F; stroke: var(--c-red); stroke-width: 1.5; }
.ab-orbit__node text { font: 500 24px var(--font-body); fill: var(--c-white); }
.ab-orbit__node { transition: transform .3s; }

/* ==========================================================================
   06 Our team
   ========================================================================== */
.ab-team { background: var(--c-white); }
.ab-team__pics { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 14px; aspect-ratio: 1.55; }
.ab-team__big { grid-row: 1 / 3; object-position: 88% center; }

/* ==========================================================================
   08 Why businesses choose us
   ========================================================================== */
.ab-why { background: var(--c-light-bg); }
.ab-why__head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 20px 48px; margin-bottom: clamp(28px, 3.4vw, 52px); }
.ab-why__head .ab-title { margin-bottom: 0; }
.ab-why__head .ab-p { max-width: 28em; margin-bottom: 4px; }
.ab-why__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.ab-reason { display: flex; align-items: flex-start; gap: 16px; padding: 24px 22px; background: var(--c-white); border: 1px solid var(--hair); border-radius: 12px; box-shadow: 0 4px 16px rgba(0, 0, 0, .06); transition: transform .3s, box-shadow .3s; }
.ab-reason:hover { transform: translateY(-4px); box-shadow: 0 12px 28px rgba(0, 0, 0, .12); }
.ab-reason h3 { margin-bottom: 6px; font-weight: 600; font-size: 17px; line-height: 24px; color: var(--ink); }
.ab-reason p { font-size: 14px; line-height: 21px; color: var(--c-body-gray); }

/* ==========================================================================
   09 Call to action (dark, red swoosh)
   ========================================================================== */
.ab-cta { overflow: hidden; background: #000; color: var(--c-white); }
.ab-cta__swoosh { position: absolute; left: 0; bottom: 0; width: min(46%, 760px); height: 100%; overflow: visible; opacity: .55; pointer-events: none; }
.ab-cta__swoosh path { fill: none; stroke: var(--c-red); stroke-width: 3; filter: drop-shadow(0 0 8px rgba(196, 32, 48, .7)); }
.ab-cta__inner { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 32px 48px; padding-block: clamp(40px, 5vw, 84px); }
.ab-cta__copy { padding-left: clamp(0px, 8vw, 150px); }
.ab-cta__copy .ab-title { margin-bottom: 0; }
.ab-cta__btns { display: flex; flex-wrap: wrap; gap: 14px 18px; }

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 1100px) {
    .ab-stats__row { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .ab-why__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1024px) {
    .ab-split, .ab-split--rev { grid-template-columns: minmax(0, 1fr); }
    .ab-split--rev .ab-purpose__pics { order: 2; }
    .ab-hero__words { display: none; }
    .ab-hero::before { background: linear-gradient(180deg, rgba(0, 0, 0, .55), #000 95%); }
    .ab-orbit { width: min(680px, 100%); margin-inline: auto; }
    .ab-cta__inner { flex-direction: column; align-items: flex-start; }
    .ab-cta__copy { padding-left: 0; }
}
@media (max-width: 768px) {
    .ab-points { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 560px) {
    .ab-stats__row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ab-why__grid { grid-template-columns: minmax(0, 1fr); }
    .ab-hero__btns .btn, .ab-cta__btns .btn { width: 100%; }
    .ab-who__pics { aspect-ratio: auto; grid-template-columns: minmax(0, 1fr); grid-template-rows: none; }
    .ab-who__big { grid-row: auto; aspect-ratio: 1.4; }
    .ab-who__small { aspect-ratio: 1.6; }
    .ab-statcard { padding: 22px; }
    .ab-team__pics { aspect-ratio: auto; grid-template-columns: minmax(0, 1fr); grid-template-rows: none; }
    .ab-team__big { grid-row: auto; aspect-ratio: 1.4; }
    .ab-team__a, .ab-team__b { aspect-ratio: 1.6; }
}

@media (prefers-reduced-motion: reduce) {
    .ab *, .ab *::before, .ab *::after { transition-duration: .01ms !important; transition-delay: 0s !important; }
    .ab-js [data-reveal] { opacity: 1; transform: none; }
}

/* Who we are: heading sits higher and closer to the text; the picture grid starts level with the heading */
.ab-who { padding-top: clamp(48px, 5vw, 88px); }
.ab-who .ab-split { align-items: start; }
.ab-who .ab-title { margin-bottom: 12px; }

/* dark stat card: bigger icon and number, softer label */
.ab-statcard { gap: 10px; padding: 20px; background: radial-gradient(circle at 50% 0%, #20202c 0%, var(--c-near-black) 70%); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .08); }
.ab-statcard .metric__icon { width: 56px; height: 56px; }
.ab-statcard .metric__icon img { width: 26px; height: 26px; }
.ab-statcard strong { font-size: clamp(30px, 2.8vw, 46px); letter-spacing: -.01em; }
.ab-statcard span:last-child { font-size: 15px; line-height: 22px; letter-spacing: .02em; color: rgba(255, 255, 255, .72); }

/* numbers strip: same white card with dividers as the other pages */
.ab > section.ab-metrics { width: var(--container); max-width: 100%; margin: clamp(28px, 3.4vw, 56px) auto; }
@media (max-width: 1199px) { .ab > section.ab-metrics { width: calc(100% - 2 * var(--pad, 24px)); } }

/* purpose: the dark idea tile gets a soft glow, a ring around the bulb and a red accent */
.ab-purpose__idea { position: relative; overflow: hidden; background: radial-gradient(circle at 50% 38%, #2a2230 0%, var(--c-near-black) 68%); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .08); }
.ab-purpose__idea::before { content: ""; position: absolute; width: 112px; height: 112px; border-radius: 50%; border: 1px solid rgba(196, 32, 48, .65); background: radial-gradient(circle, rgba(196, 32, 48, .22) 0%, rgba(196, 32, 48, 0) 70%); box-shadow: 0 0 40px rgba(196, 32, 48, .35); }
.ab-purpose__idea::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--c-red); }
.ab-purpose__idea svg { position: relative; width: 52px; height: 52px; color: #fff; filter: drop-shadow(0 0 8px rgba(255, 255, 255, .35)); }

/* approach diagram: labels fit inside their pills, and the diagram sits closer to the text */
.ab-orbit__node text { font-size: 18px; }
@media (min-width: 1101px) { .ab-approach .ab-split { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(12px, 1.6vw, 28px); } }

/* Who we are: heading and the two intro paragraphs run across the top of the section */
.ab-who__intro { margin-bottom: clamp(40px, 4.4vw, 80px); }
.ab-who__lead { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 clamp(24px, 4vw, 72px); }
.ab-who__lead .ab-p { max-width: none; }
.ab-who .ab-title { margin-bottom: 16px; }
@media (max-width: 900px) { .ab-who__lead { grid-template-columns: minmax(0, 1fr); } }

/* call-to-action band: the same navy band with grid lines as on the other pages */
.ab > section.ab-cta-band { width: 100%; }
.ab-cta-band .ab-cta__btns { flex-wrap: nowrap; align-items: center; gap: 20px; }
@media (max-width: 1199px) {
    .ab-cta-band { height: auto; flex-direction: column; align-items: flex-start; gap: 24px; padding: 36px var(--pad, 24px); }
    .ab-cta-band .ab-cta__btns { flex-wrap: wrap; }
}

/* Who we are intro: centred stack, heading first and the two paragraphs under it */
.ab-who__intro { text-align: center; }
.ab-who__lead { display: block; max-width: none; }
.ab-who__lead .ab-p { max-width: none; margin-inline: auto; }
.ab-who__lead .ab-p:last-child { margin-bottom: 0; }
.ab-who__intro .ab-title { max-width: none; }

/* Who we are, lower half: text fills its column so there is no empty band between it and the pictures */
@media (min-width: 1101px) { .ab-who .ab-split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(56px, 7vw, 120px); } }
@media (max-width: 1100px) { .ab-who .ab-split { gap: 32px; } }
.ab-who .ab-copy .ab-p { max-width: none; }
.ab-who__lead .ab-p { max-width: 60em; }   /* intro paragraph wraps onto two centred lines */

/* phones: enlarge the approach diagram so the labels stay readable (the empty margin of the drawing is cropped) */
@media (max-width: 640px) {
    .ab-orbit { overflow: hidden; }
    .ab-orbit svg { width: 132%; max-width: none; margin-left: -16%; }
    .ab-orbit__node text { font-size: 19px; }
}

/* Our Commitment: a dark band with the heading on the left and the two paragraphs on the right */
.ab-commit { padding-block: 0; }
.ab-commit__box { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: clamp(24px, 4vw, 72px); align-items: center; padding: clamp(28px, 4vw, 56px) var(--gx, clamp(20px, 4vw, 60px)); max-width: none; background: linear-gradient(135deg, #0b0b12 0%, #1b1b3a 100%); border-radius: 0; }
.ab-commit__box .ab-title { margin-bottom: 0; color: var(--c-white); }
.ab-commit__box .ab-eyebrow { color: var(--c-white); }
.ab-commit__copy { padding-left: clamp(16px, 2vw, 28px); border-left: 3px solid var(--c-red); }
.ab-commit__copy .ab-p { max-width: none; color: var(--c-border-gray); }
.ab-commit__copy .ab-p:last-child { margin-bottom: 0; }
@media (max-width: 900px) { .ab-commit__box { grid-template-columns: minmax(0, 1fr); } }
.ab-commit .ab-eyebrow::before { display: none; }

/* "idea" tile: it keeps moving on its own – the ring breathes and sends out ripples, the bulb glows and floats, the bottom line sweeps */
.ab-purpose__idea::before { animation: ab-idea-ring 3.2s ease-in-out infinite; }
.ab-purpose__idea svg { animation: ab-idea-bulb 3.2s ease-in-out infinite; }
.ab-purpose__idea::after { background: linear-gradient(90deg, rgba(196, 32, 48, .25) 0%, var(--c-red) 50%, rgba(196, 32, 48, .25) 100%); background-size: 200% 100%; animation: ab-idea-line 2.8s linear infinite; }
@keyframes ab-idea-ring {
    0%, 100% { transform: scale(1); box-shadow: 0 0 40px rgba(196, 32, 48, .35), 0 0 0 0 rgba(196, 32, 48, .45); }
    50% { transform: scale(1.08); box-shadow: 0 0 56px rgba(196, 32, 48, .55), 0 0 0 34px rgba(196, 32, 48, 0); }
}
@keyframes ab-idea-bulb {
    0%, 100% { transform: translateY(0) scale(1); filter: drop-shadow(0 0 6px rgba(255, 255, 255, .25)); }
    50% { transform: translateY(-4px) scale(1.07); filter: drop-shadow(0 0 16px rgba(255, 255, 255, .8)); }
}
@keyframes ab-idea-line { to { background-position: -200% 0; } }
@media (prefers-reduced-motion: reduce) { .ab-purpose__idea::before, .ab-purpose__idea svg, .ab-purpose__idea::after { animation: none; } }

/* capability diagram: the dotted ring turns, light runs along the red links, the centre pulses and the pills float one after another */
.ab-orbit__ring { transform-box: fill-box; transform-origin: center; animation: ab-orbit-spin 60s linear infinite; }
.ab-orbit__link { stroke-dasharray: 5 9; animation: ab-orbit-flow 1.4s linear infinite; }
.ab-orbit__core { transform-box: fill-box; transform-origin: center; animation: ab-orbit-core 3.4s ease-in-out infinite; }
.ab-orbit__node { transform-box: fill-box; transform-origin: center; animation: ab-orbit-float 4.2s ease-in-out infinite; cursor: default; }
.ab-orbit__node:nth-of-type(2) { animation-delay: -.7s; }
.ab-orbit__node:nth-of-type(3) { animation-delay: -1.4s; }
.ab-orbit__node:nth-of-type(4) { animation-delay: -2.1s; }
.ab-orbit__node:nth-of-type(5) { animation-delay: -2.8s; }
.ab-orbit__node:nth-of-type(6) { animation-delay: -3.5s; }
.ab-orbit__node rect, .ab-orbit__node circle { transition: stroke .3s, fill .3s; }
.ab-orbit__node:hover rect { stroke: var(--c-red); fill: #1a0d10; }
.ab-orbit__node:hover circle { fill: var(--c-red); }
@keyframes ab-orbit-spin { to { transform: rotate(360deg); } }
@keyframes ab-orbit-flow { to { stroke-dashoffset: -28; } }
@keyframes ab-orbit-core { 0%, 100% { stroke: #2F323C; transform: scale(1); } 50% { stroke: var(--c-red); transform: scale(1.04); } }
@keyframes ab-orbit-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
@media (prefers-reduced-motion: reduce) { .ab-orbit__ring, .ab-orbit__link, .ab-orbit__core, .ab-orbit__node { animation: none; } }
