/*
Theme Name: Server Hosting Experts
Theme URI: https://www.serverhostingexperts.com/
Author: Server Hosting Experts
Description: Block theme for serverhostingexperts.com. A cinematic light-blueprint register: a full-bleed isometric figure in which three workloads move between dedicated, virtualised and private-cloud architectures, and a staged migration sequence on a night-ink band.
Version: 2.3.7
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 8.1
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: serverhostingexperts
*/

/* ========================================================================
   1. Tokens and base
   ======================================================================== */
:root {
	--sx-paper: #ffffff;
	--sx-canvas: #f4f6f8;
	--sx-mist: #eef3fa;
	--sx-ink: #0a1424;
	--sx-graphite: #22282f;
	--sx-slate: #4d5663;
	--sx-steel: #8b95a1;
	--sx-steel-text: #5d6773;
	--sx-grid: #e4e9ee;
	--sx-blue: #1f6feb;
	--sx-blue-deep: #1a5fcc;
	--sx-sky: #7fb0ff;
	--sx-copper: #b46a2a;
	--sx-copper-deep: #98561a;
	--sx-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', 'Courier New', monospace;
	--sx-wide: 76rem;
	--sx-pad: clamp(1.25rem, 4vw, 2.5rem);
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body { margin: 0; overflow-wrap: break-word; overflow-x: clip; }
img, svg { max-width: 100%; }
.sx-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible, .sx-scroll:focus-visible {
	outline: 3px solid var(--sx-blue-deep);
	outline-offset: 2px;
}
.sx-wrap { max-width: var(--sx-wide); margin: 0 auto; padding-left: var(--sx-pad); padding-right: var(--sx-pad); }
.sx-kicker, .sx-figure__kicker, .sx-eyebrow { font-family: var(--sx-mono); font-size: 0.8125rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--sx-steel-text); margin: 0; }
.sx-eyebrow { margin-bottom: 0.6rem; }
.sx-big { font-size: clamp(2rem, 1rem + 3.4vw, 3.9rem); line-height: 1.04; letter-spacing: -0.03em; font-weight: 600; margin: 0 0 1.25rem; }

/* Buttons */
.sx-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 0.7rem 1.4rem; font-weight: 600; font-size: 1rem; line-height: 1.25; text-decoration: none; border: 2px solid var(--sx-blue-deep); border-radius: 0; cursor: pointer; font-family: inherit; text-align: center; transition: background-color .2s, color .2s, border-color .2s; }
.sx-btn--primary { background: var(--sx-blue-deep); color: #fff; }
.sx-btn--primary:hover { background: var(--sx-ink); border-color: var(--sx-ink); color: #fff; }
.sx-btn--ghost { background: transparent; color: var(--sx-blue-deep); }
.sx-btn--ghost:hover { background: var(--sx-blue-deep); color: #fff; }
.sx-btn--light { background: #fff; border-color: #fff; color: var(--sx-ink); }
.sx-btn--light:hover { background: transparent; color: #fff; }
.sx-btn--outline-light { background: transparent; border-color: rgba(255, 255, 255, .7); color: #fff; }
.sx-btn--outline-light:hover { background: #fff; color: var(--sx-ink); }
.sx-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin: 1.5rem 0 0; }

/* ========================================================================
   2. Header, skip link, footer
   ======================================================================== */
.sx-skip { position: absolute; left: 0.75rem; top: -4rem; z-index: 100; background: var(--sx-ink); color: #fff; padding: 0.75rem 1rem; min-height: 44px; font-weight: 600; text-decoration: none; }
.sx-skip:focus { top: 0.5rem; color: #fff; }
.sx-header { position: sticky; top: 0; z-index: 50; border-bottom: 1px solid var(--sx-grid); background: rgba(255, 255, 255, .94); backdrop-filter: blur(8px); }
.sx-header__in { max-width: 90rem; margin: 0 auto; padding: 0.6rem var(--sx-pad); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.25rem 1.5rem; }
.sx-logo { display: inline-flex; align-items: center; gap: 0.7rem; min-height: 44px; text-decoration: none; color: var(--sx-graphite); }
.sx-logo svg { flex: none; display: block; }
.sx-logo__word { font-weight: 600; letter-spacing: 0.11em; font-size: 0.8125rem; line-height: 1.15; text-transform: uppercase; color: var(--sx-graphite); }
.sx-nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0 1.1rem; }
.sx-nav a { display: inline-flex; align-items: center; min-height: 44px; font-size: 0.9375rem; font-weight: 500; text-decoration: none; color: var(--sx-slate); border-bottom: 2px solid transparent; }
.sx-nav a:hover, .sx-nav a[aria-current="page"] { color: var(--sx-graphite); border-bottom-color: var(--sx-blue); }
.sx-menu-btn { display: none; align-items: center; min-height: 44px; padding: .4rem 1rem; font: inherit; font-weight: 600; color: var(--sx-ink); background: #fff; border: 2px solid var(--sx-ink); cursor: pointer; }
.sx-menu-btn::after { content: "+"; margin-left: .6rem; font-weight: 400; }
.sx-nav.is-open .sx-menu-btn::after { content: "\2212"; }
@media (max-width: 61.99rem) {
	.sx-header { position: sticky; }
	.sx-header__in { flex-wrap: nowrap; padding-top: .35rem; padding-bottom: .35rem; }
	.sx-nav--js .sx-menu-btn { display: inline-flex; }
	.sx-nav--js ul { display: none; position: absolute; left: 0; right: 0; top: 100%; z-index: 60; flex-direction: column; background: #fff; border-bottom: 1px solid var(--sx-ink); padding: .25rem var(--sx-pad) 1rem; box-shadow: 0 18px 30px rgba(10, 20, 36, .12); }
	.sx-nav--js.is-open ul { display: flex; }
	.sx-nav--js a { width: 100%; min-height: 48px; font-size: 1.0625rem; border-bottom: 1px solid var(--sx-grid); }
	.sx-nav:not(.sx-nav--js) ul { display: flex; flex-wrap: wrap; }
	.sx-header__in { position: relative; }
}
.sx-footer { background: var(--sx-ink); color: #c9d6e8; margin-block-start: 0 !important; }
.wp-site-blocks > * + * { margin-block-start: 0; }
.sx-footer__in { max-width: 90rem; margin: 0 auto; padding: 4rem var(--sx-pad) 2.5rem; display: grid; gap: 2.5rem; grid-template-columns: 1fr; }
@media (min-width: 52rem) { .sx-footer__in { grid-template-columns: 1.4fr 1fr 1.1fr; gap: 4rem; } }
.sx-footer h2 { font-family: var(--sx-mono); font-size: 0.8125rem; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; color: #9fb3d1; margin: 0 0 0.75rem; }
.sx-footer p, .sx-footer li { font-size: 0.9375rem; margin: 0 0 0.6rem; }
.sx-footer ul { list-style: none; margin: 0; padding: 0; }
.sx-footer a { color: #b9d4ff; }
.sx-footer a:hover { color: #fff; }
.sx-footer nav a { display: inline-block; min-height: 44px; line-height: 44px; }
.sx-footer .sx-logo { margin-bottom: 0.75rem; color: #fff; }
.sx-footer .sx-logo__word { color: #fff; }
.sx-footer .sx-logo svg { background: #fff; padding: 3px; }
.sx-footer a:focus-visible { outline-color: #fff; }
.sx-footer__bar { max-width: 90rem; margin: 0 auto; padding: 1.25rem var(--sx-pad) 2rem; border-top: 1px solid #1d2d48; font-family: var(--sx-mono); font-size: 0.8125rem; color: #9fb3d1; }

/* ========================================================================
   3. Home hero and figure
   ======================================================================== */
.sx-hero { position: relative; overflow: hidden; background: linear-gradient(180deg, var(--sx-mist) 0%, #fff 82%); border-bottom: 1px solid var(--sx-grid); }
.sx-hero::before { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: 1;
	background-image: repeating-linear-gradient(30deg, #bccbe0 0 1px, transparent 1px 64px), repeating-linear-gradient(-30deg, #bccbe0 0 1px, transparent 1px 64px);
	-webkit-mask-image: radial-gradient(ellipse 70% 80% at 68% 55%, #000 10%, transparent 75%); mask-image: radial-gradient(ellipse 70% 80% at 68% 55%, #000 10%, transparent 75%); }
.sx-hero__top { position: relative; max-width: 90rem; margin: 0 auto; padding: clamp(2rem, 4vw, 3.5rem) var(--sx-pad) 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.5rem; align-items: center; }
.sx-hero__copy { position: relative; z-index: 2; }
.sx-hero h1 { margin: 0.9rem 0 1.1rem; font-size: clamp(2.4rem, 1rem + 3.2vw, 4rem); line-height: 1.03; letter-spacing: -0.035em; font-weight: 600; color: var(--sx-ink); }
.sx-hero h1 em { font-style: normal; font-weight: 300; color: var(--sx-blue-deep); }
.sx-lede { font-size: clamp(1.05rem, 0.95rem + 0.4vw, 1.25rem); line-height: 1.55; color: var(--sx-slate); margin: 0; max-width: 34rem; }
.sx-hero__note { font-size: 0.9375rem; color: var(--sx-steel-text); max-width: 34rem; margin: 1.5rem 0 0; }
.sx-figure { position: relative; margin: 0; z-index: 1; }
.sx-figure__stage { overflow: hidden; }
.sx-svg { display: block; width: 100%; height: auto; overflow: visible; }
.sx-figure .sx-figure__kicker { margin-top: .25rem; text-align: right; padding-right: .25rem; }
@media (min-width: 75rem) {
	.sx-hero__top { grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.5fr); gap: 0; }
	.sx-figure { margin-right: 0; }
	.sx-figure__stage { overflow: visible; }
}
@media (max-width: 74.99rem) {
	.sx-hero__top { padding-top: 1.1rem; gap: .9rem; }
	.sx-hero__copy { display: contents; }
	.sx-hero .sx-kicker { order: 1; }
	.sx-hero h1 { order: 2; margin: 0; }
	.sx-hero .sx-lede { order: 3; font-size: 1.0625rem; line-height: 1.45; }
	.sx-hero .sx-actions { order: 4; margin: 0; }
	.sx-figure { order: 5; }
	.sx-hero__note { order: 6; margin: 0; }
	.sx-figure__stage svg { width: 100%; }
	.sx-figure .sx-figure__kicker { text-align: left; }
}
@media (max-width: 39.99rem) {
	.sx-hero .sx-legend { display: grid; }
	.e-tbg { display: none; }
	.sx-svg--d .lab, .sx-svg--d .e-wt { display: none; }
	.sx-hero .sx-actions .sx-btn { flex: 1 1 100%; }
	.sx-hero .sx-btn--ghost { min-height: 44px; }
}
.sx-rail { position: relative; z-index: 2; list-style: none; margin: 0 auto; padding: 1.25rem var(--sx-pad) 2.25rem; max-width: 90rem; display: grid; gap: 1.25rem; grid-template-columns: 1fr; }
@media (min-width: 52rem) { .sx-rail { grid-template-columns: repeat(3, 1fr); gap: 2rem; } }
.sx-st { display: block; border-top: 4px solid var(--sx-blue); padding-inline: .75rem; padding-bottom: .75rem; background: #fff; padding-top: .8rem; font-size: 0.9375rem; line-height: 1.5; }
.sx-st__k { display: block; font-family: var(--sx-mono); font-size: 0.8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--sx-ink); font-weight: 600; margin-bottom: .3rem; }
.sx-st__t { display: block; color: var(--sx-slate); }
.sx-st { box-shadow: 0 1px 0 var(--sx-grid); }
.sx-legend { display: none; list-style: none; margin: .5rem 0 0; padding: 0; grid-template-columns: repeat(3, 1fr); gap: .5rem; }
.sx-lg { border-top: 4px solid #9db8e6; background: #fff; padding: .45rem .5rem; font-family: var(--sx-mono); font-size: .8125rem; font-weight: 600; color: var(--sx-ink); line-height: 1.25; }
.sx-trade { display: block; margin-top: .45rem; color: var(--sx-copper-deep); font-weight: 500; }

/* elevation drawing parts */
.sx-svg rect, .sx-svg path, .sx-svg polygon { stroke-linejoin: round; }
.e-ground { fill: none; stroke: #0f1d33; stroke-width: 3; }
.e-gbar { fill: #d3deee; }
.e-sh { fill: #bfcfe6; stroke: none; }
.e-hatch { fill: none; stroke: #3a4452; stroke-width: 1.2; }
.e-ch { fill: #fff; stroke: #0f1d33; stroke-width: 2.6; }
.e-pan { fill: #dde8f6; stroke: #5d6773; stroke-width: 1; }
.e-vent { fill: none; stroke: #5d6773; stroke-width: 1; }
.e-dk { fill: #dfe7f1; stroke: #0f1d33; stroke-width: 1.5; }
.e-w { fill: #1a5fcc; stroke: #0a2c69; stroke-width: 2; }
.e-wt { font-family: var(--sx-mono); font-size: 17px; font-weight: 700; letter-spacing: .08em; fill: #fff; }
.e-cu { fill: rgba(180, 106, 42, .08); stroke: #98561a; stroke-width: 1.5; stroke-dasharray: 5 4; }
.e-cut { fill: #8a4d14; }
.e-hv { fill: rgba(31, 111, 235, .16); stroke: #1a5fcc; stroke-width: 2; stroke-dasharray: 7 5; }
.e-ar { fill: #fbf1e6; stroke: #98561a; stroke-width: 2.6; }
.e-brk { fill: none; stroke: #98561a; stroke-width: 2; }
.e-orch { fill: rgba(31, 111, 235, .2); stroke: #1a5fcc; stroke-width: 2; }
.e-pool { fill: none; stroke: #98561a; stroke-width: 2; stroke-dasharray: 9 6; }
.e-store { fill: #d6e3f6; stroke: #1a5fcc; stroke-width: 2; stroke-dasharray: 3 5; }
.e-flow { fill: none; stroke: #1a5fcc; stroke-width: 2; stroke-dasharray: 4 5; }
.e-dim { fill: none; stroke: #0f1d33; stroke-width: 1.2; }
.e-arr { fill: #0f1d33; }
.e-tb { fill: #fff; stroke: #0f1d33; stroke-width: 1.5; }
.led { fill: #1f6feb; }
.lab { font-family: var(--sx-mono); font-size: 16px; letter-spacing: .06em; fill: #1f2733; font-weight: 500; }
.lab-b { fill: #1a5fcc; font-weight: 700; }
.e-view { font-size: 17px; }

/* base = end state C (pooled design). Motion below only runs when allowed. */
.sx-ga, .sx-gb { opacity: 0; } .sx-gc { opacity: 1; }
.sx-v1 { transform: translate(280px, 290px); } .sx-v2 { transform: translate(470px, 290px); } .sx-v3 { transform: translate(90px, 290px); }

/* ========================================================================
   4. Sections: statement, migration (night band), compare, routes, closer
   ======================================================================== */
.sx-reveal { transition: opacity .8s ease, transform .8s cubic-bezier(.2, .7, .2, 1); }
.sx-js .sx-reveal:not(.is-in) { opacity: 0; transform: translateY(28px); }

.sx-statement { background: #fff; padding: clamp(4rem, 9vw, 8rem) 0; }
.sx-statement__in { max-width: 90rem; margin: 0 auto; padding: 0 var(--sx-pad); display: grid; gap: 2.5rem; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 62rem) { .sx-statement__in { grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 5rem; align-items: end; } }
.sx-statement h2 { margin: 0; font-size: clamp(2.7rem, 1rem + 6.4vw, 7rem); line-height: .98; letter-spacing: -0.045em; font-weight: 600; color: var(--sx-ink); }
.sx-statement h2 span { display: block; font-weight: 300; color: var(--sx-blue-deep); }
.sx-statement__p { font-size: clamp(1.1rem, 1rem + .5vw, 1.4rem); line-height: 1.5; color: var(--sx-graphite); margin: 0 0 1.75rem; }
.sx-defs { margin: 0; border-top: 1px solid var(--sx-ink); }
.sx-defs > div { display: grid; grid-template-columns: 8.5rem 1fr; gap: .25rem 1rem; padding: .9rem 0; border-bottom: 1px solid var(--sx-grid); }
.sx-defs dt { font-family: var(--sx-mono); font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--sx-ink); font-weight: 600; padding-top: .15rem; }
.sx-defs dd { margin: 0; font-size: .9688rem; color: var(--sx-slate); }
@media (max-width: 30rem) { .sx-defs > div { grid-template-columns: 1fr; } }
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.sx-statement h2 span { animation: sx-drift linear forwards; animation-timeline: view(); animation-range: entry 0% cover 38%; }
		@keyframes sx-drift { from { transform: translateX(-3.5rem); opacity: .15; } to { transform: none; opacity: 1; } }
	}
}

.sx-mig { position: relative; background: var(--sx-ink); color: #c9d6e8; padding: clamp(4rem, 8vw, 7rem) 0; overflow: hidden; }
.sx-mig::before { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .5;
	background-image: linear-gradient(#14233b 1px, transparent 1px), linear-gradient(90deg, #14233b 1px, transparent 1px); background-size: 56px 56px;
	-webkit-mask-image: radial-gradient(ellipse 80% 70% at 50% 45%, #000, transparent 85%); mask-image: radial-gradient(ellipse 80% 70% at 50% 45%, #000, transparent 85%); }
.sx-mig__in { position: relative; max-width: 80rem; margin: 0 auto; padding: 0 var(--sx-pad); }
.sx-mig .sx-eyebrow, .sx-mig .sx-figure__kicker { color: #9fb3d1; }
.sx-mig h2 { margin: 0 0 1rem; max-width: 46rem; color: #fff; font-size: clamp(2rem, 1rem + 3.4vw, 3.9rem); line-height: 1.05; letter-spacing: -0.03em; font-weight: 600; }
.sx-mig__head p { max-width: 40rem; font-size: 1.0625rem; color: #c9d6e8; }
.sx-mig a { color: #b9d4ff; }
.sx-mig a:hover { color: #fff; }
.sx-mig__fig { margin: 2.5rem 0 0; }
.sx-mig__fig .sx-figure__kicker { margin-top: .75rem; }
.m-svg { display: block; width: 100%; height: auto; transition: opacity .35s ease; }
.sx-mig__fig.is-dim .m-svg { opacity: .1; }
.sx-mig__fig.is-snap *, .sx-mig__fig.is-snap { transition: none !important; }
.m-svg--v { display: none; max-width: 26rem; margin: 0 auto; }
@media (max-width: 52rem) { .m-svg--h { display: none; } .m-svg--v { display: block; } }
.m-svg rect, .m-svg path { stroke-linecap: round; stroke-linejoin: round; }
.m-frame { fill: rgba(255, 255, 255, .03); stroke: #2f4a73; stroke-width: 1.5; }
.m-cap { font-family: var(--sx-mono); font-size: 14px; letter-spacing: .12em; fill: #9fb3d1; }
.m-node { fill: #11213a; stroke: #5b7aa8; stroke-width: 1.5; }
.m-lab { font-family: var(--sx-mono); font-size: 14px; letter-spacing: .1em; fill: #dce6f5; }
.m-tick { fill: #5aa0ff; opacity: 0; transition: opacity .6s; }
.m-dep { fill: none; stroke: #5aa0ff; stroke-width: 1.6; stroke-dasharray: 1; stroke-dashoffset: 1; opacity: .55; transition: stroke-dashoffset 1.2s ease, opacity .6s, stroke-width .6s; }
.m-beam { fill: rgba(90, 160, 255, .28); opacity: 0; }
.m-slotr { fill: none; stroke: #5b7aa8; stroke-width: 1.5; stroke-dasharray: 6 5; }
.m-fill { fill: #1f6feb; opacity: 0; transition: opacity .7s ease; transition-delay: calc(var(--i) * .45s); }
.m-lane { fill: none; stroke: #2f4a73; stroke-width: 1.5; }
.m-seed { fill: none; stroke: #5aa0ff; stroke-width: 3; stroke-dasharray: 10 8; opacity: 0; transition: opacity .6s; }
.m-arrow { fill: none; stroke-width: 3; opacity: 0; transition: opacity .6s; }
.m-seedh { stroke: #5aa0ff; } .m-backh { stroke: #e0955a; }
.m-seedt, .m-backt { opacity: 0; transition: opacity .6s; }
.m-seedt { fill: #7fb0ff; } .m-backt { fill: #e8a46a; }
.m-users { fill: #11213a; stroke: #5b7aa8; stroke-width: 1.5; }
.m-t { fill: none; stroke: #5aa0ff; stroke-width: 2.5; transition: opacity .6s; }
.m-t-src { opacity: 1; }
.m-t-tgt { opacity: .3; stroke-dasharray: 4 7; }
.m-back { fill: none; stroke: #e0955a; stroke-width: 2.5; stroke-dasharray: 8 6; opacity: 0; transition: opacity .6s; }
.s1 .m-tick { opacity: 1; }
.s2 .m-dep { stroke-dashoffset: 0; }
.s3 .m-fill { opacity: .62; } .s3 .m-seed, .s3 .m-seedh { opacity: .35; }
.cur-3 .m-seed, .cur-3 .m-seedh, .cur-3 .m-seedt { opacity: 1; }
.s4 .m-seed, .s4 .m-seedh { opacity: 0; }
.s4 .m-t-src { opacity: .3; stroke-dasharray: 4 7; } .s4 .m-t-tgt { opacity: 1; stroke-dasharray: none; }
.s5 .m-back, .s5 .m-backh, .s5 .m-backt { opacity: 1; }
.cur-1 .m-beam { opacity: 1; }
.cur-2 .m-dep { opacity: 1; stroke-width: 3; stroke: #9cc8ff; }
.cur-2 .m-node { stroke: #9cc8ff; }
.sx-mig__ctl { margin: 1.25rem 0 0; display: flex; }
.sx-mig__ctl .sx-btn { min-height: 44px; padding: .4rem 1rem; font-size: .9375rem; }
.sx-steps { list-style: none; margin: 1.5rem 0 0; padding: 0; display: grid; gap: .75rem; grid-template-columns: 1fr; }
@media (min-width: 40rem) { .sx-steps { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 64rem) { .sx-steps { grid-template-columns: repeat(5, 1fr); gap: 1.25rem; } }
.sx-step { display: block; width: 100%; height: 100%; text-align: left; font: inherit; color: #c9d6e8; background: transparent; border: 0; border-top: 3px solid #2f4a73; padding: .85rem .1rem .5rem; cursor: pointer; transition: border-color .3s, color .3s; }
.sx-step:hover { border-top-color: #5aa0ff; }
.sx-step:focus-visible { outline-color: #fff; }
.sx-step__n { display: block; font-family: var(--sx-mono); font-size: .8125rem; letter-spacing: .1em; color: var(--sx-sky); }
.sx-step__t { display: block; font-size: 1.125rem; font-weight: 600; color: #fff; margin: .15rem 0 .3rem; }
.sx-step__d { display: block; font-size: .9375rem; line-height: 1.5; color: #c9d6e8; }
.sx-step.is-cur { border-top-color: #5aa0ff; }
.sx-step.is-cur .sx-step__t { color: #cfe3ff; }

.sx-section { padding: clamp(3.5rem, 7vw, 6.5rem) 0; }
.sx-band { background: var(--sx-canvas); border-top: 1px solid var(--sx-grid); border-bottom: 1px solid var(--sx-grid); }
.sx-compare__grid { display: grid; gap: 2rem; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 70rem) { .sx-compare__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 2.1fr); gap: 3rem; align-items: start; } .sx-compare__head { position: sticky; top: 6rem; } }
.sx-compare__head p { font-size: 1.0625rem; max-width: 30rem; }
.sx-compare__head .sx-big { font-size: clamp(1.9rem, 1.2rem + 1.5vw, 2.6rem); }
.sx-spec { width: 100%; min-width: 40rem; border-collapse: collapse; font-size: 0.9375rem; background: #fff; }
.sx-spec caption { text-align: left; font-family: var(--sx-mono); font-size: 0.8125rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--sx-steel-text); padding-bottom: 0.6rem; }
.sx-spec th, .sx-spec td { text-align: left; vertical-align: top; padding: 0.8rem 0.9rem; border-top: 1px solid var(--sx-grid); }
.sx-spec thead th { border-top: 2px solid var(--sx-ink); border-bottom: 1px solid var(--sx-ink); font-family: var(--sx-mono); font-size: 0.8125rem; font-weight: 500; letter-spacing: 0.06em; text-transform: uppercase; color: var(--sx-ink); background: #fff; }
.sx-spec tbody th { font-weight: 600; color: var(--sx-graphite); width: 20%; }
.sx-spec td.sx-copper { color: var(--sx-copper-deep); font-weight: 500; }
.sx-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }

.sx-routes-sec { background: #fff; }
.sx-routes { margin-top: 2.5rem; border-top: 2px solid var(--sx-ink); }
.sx-route { display: grid; gap: .5rem 2rem; grid-template-columns: minmax(0, 1fr); padding: 2rem 0; border-bottom: 1px solid var(--sx-grid); }
@media (min-width: 52rem) { .sx-route { grid-template-columns: 6rem minmax(0, 1.4fr) minmax(0, 1fr); padding: 2.5rem 0; } }
.sx-route__n { margin: 0; font-size: clamp(2.5rem, 2rem + 2vw, 3.75rem); font-weight: 300; line-height: 1; letter-spacing: -.04em; color: var(--sx-blue-deep); }
.sx-route h3 { font-size: clamp(1.4rem, 1.1rem + 1vw, 2rem); letter-spacing: -.02em; margin: .1rem 0 .6rem; }
.sx-route p { margin: 0 0 .5rem; max-width: 34rem; }
.sx-route .sx-eyebrow { margin-bottom: 0; }
.sx-route ul { list-style: none; margin: 0; padding: 0; align-self: start; }
.sx-route li { border-bottom: 1px solid var(--sx-grid); }
.sx-route li:last-child { border-bottom: 0; }
.sx-route li a { display: flex; justify-content: space-between; align-items: center; min-height: 48px; font-weight: 500; text-decoration: none; }
.sx-route li a::after { content: "\2192"; margin-left: 1rem; transition: transform .2s; }
.sx-route li a:hover { text-decoration: underline; text-underline-offset: 4px; }
.sx-route li a:hover::after { transform: translateX(4px); }

.sx-closer { position: relative; overflow: hidden; color: #fff; background: linear-gradient(135deg, #1a5fcc 0%, #0f3f93 60%, #0a2a63 100%); padding: clamp(4rem, 8vw, 7rem) 0; }
.sx-closer::before { content: ""; position: absolute; inset: 0; opacity: .25; pointer-events: none;
	background-image: repeating-linear-gradient(30deg, #fff 0 1px, transparent 1px 64px), repeating-linear-gradient(-30deg, #fff 0 1px, transparent 1px 64px);
	-webkit-mask-image: linear-gradient(90deg, transparent 20%, #000); mask-image: linear-gradient(90deg, transparent 20%, #000); }
.sx-closer__in { position: relative; max-width: 80rem; margin: 0 auto; padding: 0 var(--sx-pad); }
.sx-closer h2 { color: #fff; margin: 0 0 1rem; max-width: 40rem; font-size: clamp(2rem, 1rem + 3.4vw, 3.6rem); line-height: 1.05; letter-spacing: -.03em; font-weight: 600; }
.sx-closer p { max-width: 38rem; font-size: 1.125rem; color: #e6efff; }

/* ========================================================================
   5. Pages, articles, archives
   ======================================================================== */
.sx-pagehead { position: relative; overflow: hidden; background: linear-gradient(180deg, var(--sx-mist), #fff); border-bottom: 1px solid var(--sx-grid); padding: clamp(1.25rem, 3vw, 2.25rem) max(var(--sx-pad), calc((100% - 90rem) / 2 + var(--sx-pad))) clamp(1.75rem, 4vw, 3.25rem); }
.sx-pagehead::before { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: 1;
	background-image: repeating-linear-gradient(30deg, #c3d1e5 0 1px, transparent 1px 64px), repeating-linear-gradient(-30deg, #c3d1e5 0 1px, transparent 1px 64px);
	-webkit-mask-image: linear-gradient(90deg, transparent 40%, #000); mask-image: linear-gradient(90deg, transparent 40%, #000); }
.sx-pagehead > * { position: relative; max-width: none !important; margin-left: 0 !important; margin-right: 0 !important; }
.sx-title { margin: .5rem 0 0; font-size: clamp(2.1rem, 1.2rem + 3.4vw, 4rem); line-height: 1.04; letter-spacing: -0.035em; font-weight: 600; color: var(--sx-ink); max-width: 60rem; }
.sx-main { padding: clamp(2rem, 4vw, 3.5rem) max(var(--sx-pad), calc((100% - 90rem) / 2 + var(--sx-pad))) 6rem; }
.sx-main > * { max-width: none !important; margin-left: 0 !important; margin-right: 0 !important; }
.sx-page .sx-pagehead, .sx-page .sx-main { padding-left: max(var(--sx-pad), calc((100% - 90rem) / 2 + var(--sx-pad))) !important; padding-right: max(var(--sx-pad), calc((100% - 90rem) / 2 + var(--sx-pad))) !important; }
.sx-page .sx-prose { padding-left: 0 !important; padding-right: 0 !important; }
.sx-main--rail { display: grid; gap: 2.5rem; grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 64rem) { .sx-main--rail { grid-template-columns: minmax(0, 1fr) 19rem; gap: 3rem; } .sx-side { position: sticky; top: 5.5rem; } }
.sx-prose > :first-child { margin-top: 0 !important; }
.sx-side { margin-top: 0 !important; border-top: 2px solid var(--sx-ink); padding-top: 1rem; font-size: .9688rem; }
.sx-side p { margin: 0; }
.sx-side__h { font-family: var(--sx-mono); font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--sx-ink); font-weight: 600; margin: 0 0 .5rem !important; }
.sx-side ol, .sx-side ul { list-style: none; margin: 0 0 1.75rem; padding: 0; }
.sx-side li { border-bottom: 1px solid var(--sx-grid); }
.sx-side a { display: flex; align-items: center; min-height: 44px; text-decoration: none; font-weight: 500; line-height: 1.3; }
.sx-side a:hover { text-decoration: underline; text-underline-offset: 3px; }
.sx-side__toc[hidden] { display: none; }
.sx-crumbs { font-family: var(--sx-mono); font-size: 0.8125rem; color: var(--sx-steel-text); margin: 0 auto; }
.sx-crumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0 0.5rem; }
.sx-crumbs li { display: inline-flex; align-items: center; min-height: 32px; }
.sx-crumbs li + li::before { content: "/"; margin-right: 0.5rem; color: var(--sx-steel); }
.sx-crumbs a { color: var(--sx-blue-deep); display: inline-flex; align-items: center; min-height: 44px; }
.sx-prose { font-size: 1.125rem; line-height: 1.72; }
.sx-prose.sx-prose > * { max-width: none !important; margin-left: 0 !important; margin-right: 0 !important; }
.sx-prose.sx-prose > p, .sx-prose.sx-prose > ul, .sx-prose.sx-prose > ol, .sx-prose.sx-prose > h3, .sx-prose.sx-prose > .sx-audience { max-width: 54rem !important; }
.sx-prose h2 { margin-top: 3.25rem; padding-top: 1.1rem; border-top: 2px solid var(--sx-ink); font-size: clamp(1.6rem, 1.2rem + 1.2vw, 2.25rem); letter-spacing: -.025em; }
.sx-prose h3 { margin-top: 2.25rem; font-size: 1.3rem; }
.sx-prose p, .sx-prose li { max-width: 54rem; }
.sx-prose > p:first-of-type { font-size: 1.3rem; line-height: 1.55; color: var(--sx-graphite); }
.sx-prose ul, .sx-prose ol { padding-left: 1.4rem; }
.sx-prose li { margin: 0.4rem 0; }
.sx-prose code { font-family: var(--sx-mono); font-size: 0.875em; background: var(--sx-canvas); padding: 0.1em 0.35em; border: 1px solid var(--sx-grid); }
.sx-prose pre { font-family: var(--sx-mono); font-size: 0.875rem; line-height: 1.55; background: var(--sx-ink); color: #dce6f5; border-left: 4px solid var(--sx-blue); padding: 1.1rem 1.25rem; overflow-x: auto; margin: 1.5rem 0; }
.sx-prose pre code { background: transparent; border: 0; padding: 0; font-size: inherit; color: inherit; }
.sx-prose table { width: 100%; border-collapse: collapse; font-size: 0.9375rem; margin: 0; }
.sx-prose .wp-block-table { overflow-x: auto; margin: 1.75rem 0; }
.sx-prose th, .sx-prose td { text-align: left; vertical-align: top; padding: 0.65rem 0.85rem; border: 1px solid var(--sx-grid); }
.sx-prose thead th, .sx-prose th { background: var(--sx-canvas); color: var(--sx-graphite); font-weight: 600; }
.sx-prose figcaption { font-family: var(--sx-mono); font-size: 0.8125rem; color: var(--sx-steel-text); margin-top: 0.5rem; }
.sx-prose a { text-underline-offset: 3px; }
.sx-prose .sx-next { margin-top: 3.5rem; border-top: 2px solid var(--sx-ink); padding-top: 0.5rem; }
.sx-prose .sx-next h2 { border-top: 0; margin-top: 1rem; padding-top: 0; }
.sx-note { border-left: 4px solid var(--sx-blue); background: var(--sx-mist); padding: 1.1rem 1.35rem; }
.sx-note > :first-child, .sx-trade-note > :first-child { margin-top: 0; } .sx-note > :last-child, .sx-trade-note > :last-child { margin-bottom: 0; }
.sx-trade-note { border-left: 4px solid var(--sx-copper); background: #faf5ef; padding: 1.1rem 1.35rem; }
.sx-audience { border-top: 2px solid var(--sx-ink); border-bottom: 1px solid var(--sx-grid); padding: 1rem 0; font-size: 1.0625rem; }
.sx-audience p { margin: 0; }
.sx-audience strong { font-family: var(--sx-mono); font-size: 0.8125rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--sx-steel-text); font-weight: 500; display: block; margin-bottom: 0.25rem; }
.wp-block-post-title { margin: 0.25rem 0 1rem; }
.sx-archive-item { padding: 1.5rem 0; border-top: 1px solid var(--sx-grid); }
.sx-archive-item h2 { font-size: clamp(1.4rem, 1.1rem + 1vw, 1.9rem); letter-spacing: -.02em; margin: 0 0 0.4rem; }
.sx-archive-item h2 a { text-decoration: none; color: var(--sx-ink); }
.sx-archive-item h2 a:hover { color: var(--sx-blue-deep); text-decoration: underline; text-underline-offset: 4px; }
.sx-main .wp-block-query { max-width: 56rem; }
.sx-main .wp-block-query-pagination { gap: 1rem; margin-top: 2rem; }
.sx-main .wp-block-search { margin-top: 1.25rem; max-width: 36rem; }

/* ========================================================================
   6. Migration readiness planner (selectors used by assets/js/tool.js)
   ======================================================================== */
.sx-tool { margin: 2rem 0; }
.sx-tool form { display: grid; gap: 0; }
.sx-tool fieldset { border: 0; border-top: 1px solid var(--sx-graphite); margin: 0; padding: 1.25rem 0 1.5rem; min-width: 0; }
.sx-tool legend { font-family: var(--sx-mono); font-size: 0.875rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--sx-graphite); font-weight: 500; padding: 0 0.75rem 0 0; }
.sx-tool .sx-help { font-size: 0.9375rem; color: var(--sx-steel-text); margin: 0.25rem 0 0.75rem; max-width: 46rem; }
.sx-opt { display: flex; align-items: flex-start; gap: 0.7rem; min-height: 44px; padding: 0.55rem 0.75rem; border: 1px solid var(--sx-grid); margin: 0 0 -1px; cursor: pointer; background: var(--sx-paper); }
.sx-opt:hover { background: var(--sx-canvas); }
.sx-opt input { width: 22px; height: 22px; margin: 0.15rem 0 0; flex: none; accent-color: var(--sx-blue-deep); }
.sx-opt span { font-size: 1rem; line-height: 1.45; }
.sx-opt:has(input:checked) { border-color: var(--sx-blue-deep); background: #eef4fe; position: relative; z-index: 1; }
.sx-grid2 { display: grid; gap: 1rem 1.5rem; grid-template-columns: 1fr; }
@media (min-width: 40rem) { .sx-grid2 { grid-template-columns: 1fr 1fr; } }
.sx-field label { display: block; font-weight: 600; color: var(--sx-graphite); margin-bottom: 0.3rem; font-size: 0.9688rem; }
.sx-field input, .sx-field select, .sx-tool textarea { width: 100%; min-height: 44px; padding: 0.55rem 0.7rem; font: inherit; color: var(--sx-graphite); background: var(--sx-paper); border: 1px solid var(--sx-steel); border-radius: 0; }
.sx-field .sx-hint { display: block; font-size: 0.875rem; color: var(--sx-steel-text); margin-top: 0.25rem; }
.sx-tool details { border: 1px solid var(--sx-grid); padding: 0.25rem 1rem 1rem; margin-top: 1rem; }
.sx-tool summary { min-height: 44px; display: flex; align-items: center; cursor: pointer; font-weight: 600; color: var(--sx-graphite); }
.sx-result { border-top: 3px solid var(--sx-blue); background: var(--sx-canvas); padding: 1.25rem 1.5rem 1.5rem; margin-top: 2rem; }
.sx-result:empty { display: none; }
.sx-result h2 { margin-top: 0; padding-top: 0; border-top: 0; font-size: 1.6rem; }
.sx-result h3 { font-size: 1.15rem; margin: 1.75rem 0 0.5rem; }
.sx-level { font-family: var(--sx-mono); font-size: 0.8125rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--sx-steel-text); margin: 0; }
.sx-math { font-family: var(--sx-mono); font-size: 0.875rem; line-height: 1.7; background: var(--sx-paper); border: 1px solid var(--sx-grid); border-left: 4px solid var(--sx-copper); padding: 0.9rem 1.1rem; overflow-x: auto; white-space: pre-wrap; margin: 0.75rem 0; }
.sx-result ol, .sx-result ul { padding-left: 1.3rem; }
.sx-result li { margin: 0.35rem 0; }
.sx-result table { width: 100%; border-collapse: collapse; font-size: 0.9375rem; background: var(--sx-paper); }
.sx-result th, .sx-result td { text-align: left; padding: 0.5rem 0.7rem; border: 1px solid var(--sx-grid); vertical-align: top; }
.sx-result th { background: var(--sx-canvas); font-weight: 600; color: var(--sx-graphite); }
.sx-summary { width: 100%; min-height: 12rem; font-family: var(--sx-mono); font-size: 0.875rem; line-height: 1.55; }
.sx-tool-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1rem; }
.sx-warnbox { border-left: 4px solid var(--sx-copper); padding: 0.6rem 1rem; background: var(--sx-paper); margin: 0.75rem 0; }
.sx-checklist { list-style: none; padding-left: 0 !important; }
.sx-checklist li { display: flex; gap: 0.6rem; align-items: flex-start; }
.sx-checklist li::before { content: ""; flex: none; width: 16px; height: 16px; margin-top: 0.3rem; border: 2px solid var(--sx-steel); }

/* ========================================================================

/* ========================================================================
   7. Print
   ======================================================================== */
@media print {
	.sx-reveal { opacity: 1 !important; transform: none !important; }
	.sx-statement h2 span { animation: none !important; transform: none !important; opacity: 1 !important; }
	.sx-header, .sx-footer, .sx-skip, .sx-tool form, .sx-tool-actions, .sx-hero, .sx-mig, .sx-closer, .sx-crumbs { display: none !important; }
	body { color: #000; background: #fff; }
	.sx-result { background: #fff; border: 1px solid #000; }
	a { color: #000; text-decoration: underline; }
}

/* ========================================================================
   8. Hero figure: base state is the pooled design (state C), so reduced
   motion and no-CSS-animation browsers show a meaningful end state.
   One 18s cycle; each element has its own keyframes at 24/33/57/66/91 %.
   ======================================================================== */
.sx-svg text { pointer-events: none; }
@media (prefers-reduced-motion: no-preference) {
.sx-v1{animation:sx-v1 18s ease-in-out infinite}
.sx-v2{animation:sx-v2 18s ease-in-out infinite}
.sx-v3{animation:sx-v3 18s ease-in-out infinite}
.sx-ga{animation:sx-ga 18s ease-in-out infinite}
.sx-gb{animation:sx-gb 18s ease-in-out infinite}
.sx-gc{animation:sx-gc 18s ease-in-out infinite}
.sx-lg-a{animation:sx-sa 18s ease-in-out infinite}.sx-lg-b{animation:sx-sb 18s ease-in-out infinite}.sx-lg-c{animation:sx-sc 18s ease-in-out infinite}
.sx-st-a{animation:sx-sa 18s ease-in-out infinite}.sx-st-b{animation:sx-sb 18s ease-in-out infinite}.sx-st-c{animation:sx-sc 18s ease-in-out infinite}
.sx-flow3{animation:sx-fl3 3s linear infinite}.sx-flow9{animation:sx-fl9 9s linear infinite}.led{animation:sx-led 3s steps(1) infinite}
@keyframes sx-fl3{to{stroke-dashoffset:-18}}@keyframes sx-fl9{to{stroke-dashoffset:-30}}@keyframes sx-led{0%{opacity:1}50%{opacity:.2}}

@keyframes m-sweepv{0%{transform:translateY(0)}100%{transform:translateY(180px)}}
@keyframes m-sweep{0%{transform:translateX(0)}100%{transform:translateX(278px)}}
.m-beam{animation:m-sweep 2.4s ease-in-out infinite alternate}
.m-svg--v .m-beam{animation-name:m-sweepv}
@keyframes m-flow{to{stroke-dashoffset:-36}}
.cur-3 .m-seed{animation:m-flow 1.2s linear infinite}
.cur-5 .m-back{animation:m-flow 1.6s linear infinite reverse}
}
@media (prefers-reduced-motion: reduce) { .sx-reveal, .m-dep, .m-fill, .m-tick { transition: none !important; } }
@keyframes sx-sa{0%,24%{border-top-color:#1f6feb;background:#eaf2ff}33%,91%{border-top-color:#9db8e6;background:#fff}100%{border-top-color:#1f6feb;background:#eaf2ff}}
@keyframes sx-sb{0%,24%{border-top-color:#9db8e6;background:#fff}33%,57%{border-top-color:#1f6feb;background:#eaf2ff}66%,100%{border-top-color:#9db8e6;background:#fff}}
@keyframes sx-sc{0%,57%{border-top-color:#9db8e6;background:#fff}66%,91%{border-top-color:#1f6feb;background:#eaf2ff}100%{border-top-color:#9db8e6;background:#fff}}
@keyframes sx-v1{0%{transform:translate(375px,290px)}24%{transform:translate(375px,290px)}33%{transform:translate(375px,282px)}57%{transform:translate(375px,282px)}66%{transform:translate(280px,290px)}91%{transform:translate(280px,290px)}100%{transform:translate(375px,290px)}}
@keyframes sx-v2{0%{transform:translate(645px,290px)}24%{transform:translate(645px,290px)}33%{transform:translate(545px,282px)}57%{transform:translate(545px,282px)}66%{transform:translate(470px,290px)}91%{transform:translate(470px,290px)}100%{transform:translate(645px,290px)}}
@keyframes sx-v3{0%{transform:translate(105px,290px)}24%{transform:translate(105px,290px)}33%{transform:translate(205px,282px)}57%{transform:translate(205px,282px)}66%{transform:translate(90px,290px)}91%{transform:translate(90px,290px)}100%{transform:translate(105px,290px)}}
@keyframes sx-ga{0%{opacity:1}24%{opacity:1}27%{opacity:0}94%{opacity:0}100%{opacity:1}}
@keyframes sx-gb{0%{opacity:0}30%{opacity:0}33%{opacity:1}57%{opacity:1}60%{opacity:0}100%{opacity:0}}
@keyframes sx-gc{0%{opacity:0}63%{opacity:0}66%{opacity:1}91%{opacity:1}94%{opacity:0}100%{opacity:0}}

/* ========================================================================
   9. MISSION-012 refinement (v2.3.0): atmosphere, depth, section transitions
   ======================================================================== */
html { background: var(--sx-ink); }
body { background: #fff; }
.sx-hero { background:
	radial-gradient(ellipse 55% 60% at 70% 38%, rgba(31, 111, 235, .13), transparent 70%),
	radial-gradient(ellipse 40% 50% at 8% 0%, rgba(180, 106, 42, .07), transparent 70%),
	linear-gradient(180deg, #e6eefb 0%, #f4f8fe 55%, #fff 92%); }
.sx-hero::after { content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 0;
	background: linear-gradient(100deg, transparent 38%, rgba(255, 255, 255, .55) 50%, transparent 62%);
	background-size: 260% 100%; background-position: 130% 0; mix-blend-mode: soft-light; opacity: .9; }
.sx-hero__top, .sx-rail { z-index: 1; }
.sx-svg { filter: drop-shadow(0 24px 22px rgba(15, 29, 51, .14)); }
.sx-figure .sx-figure__kicker { font-size: .75rem; letter-spacing: .06em; }
.sx-st { box-shadow: 0 1px 0 var(--sx-grid), 0 14px 24px -18px rgba(15, 29, 51, .35); }
.sx-mig { clip-path: polygon(0 clamp(1.5rem, 4vw, 4rem), 100% 0, 100% 100%, 0 100%); padding-top: calc(clamp(4rem, 8vw, 7rem) + clamp(1.5rem, 4vw, 4rem)); margin-top: calc(-1 * clamp(1.5rem, 4vw, 4rem)); }
.sx-mig::after { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 40%; pointer-events: none;
	background: radial-gradient(ellipse 60% 100% at 70% 0%, rgba(31, 111, 235, .28), transparent 75%); }
.sx-statement { position: relative; z-index: 0; }
.sx-pagehead { background:
	radial-gradient(ellipse 50% 90% at 85% 0%, rgba(31, 111, 235, .13), transparent 70%),
	linear-gradient(180deg, #e6eefb, #fff); }
.sx-closer { background: radial-gradient(ellipse 50% 80% at 85% 0%, rgba(127, 176, 255, .35), transparent 70%), linear-gradient(135deg, #1a5fcc 0%, #0f3f93 60%, #0a2a63 100%); }
@media (prefers-reduced-motion: no-preference) {
	.sx-hero::after { animation: sx-sheen 14s ease-in-out infinite; }
	@keyframes sx-sheen { 0%, 12% { background-position: 130% 0; } 60%, 100% { background-position: -30% 0; } }
}
@media (prefers-reduced-motion: reduce) { .sx-hero::after { display: none; } }

/* ========================================================================
   10. v2.3.1: cutover logic, failure-domain figure, shaped edges, footer
   ======================================================================== */
/* Migration: seeding label retires at once; at cutover the target is solid and live. */
.m-seedt { transition: opacity .12s; }
.m-cutt { opacity: 0; fill: #9cc8ff; transition: opacity .12s; }
.cur-4 .m-cutt { opacity: 1; transition-duration: .45s; }
.s4 .m-slotr { stroke: #7fb0ff; stroke-dasharray: none; stroke-width: 2; }
.s4 .m-fill { opacity: .95; }
.s4 .m-frame-t { stroke: #5aa0ff; stroke-width: 2; }

/* Shaped edges, mirrored: migration band bottom and closer top/bottom */
.sx-mig { --edge: clamp(1.5rem, 4vw, 4rem); position: relative; z-index: 2;
	clip-path: polygon(0 var(--edge), 100% 0, 100% 100%, 0 calc(100% - var(--edge))); padding-bottom: calc(clamp(4rem, 8vw, 7rem) + var(--edge)); }
.sx-blast, .sx-compare { position: relative; z-index: 0; }
.sx-blast { margin-top: calc(-1 * clamp(1.5rem, 4vw, 4rem)); padding-top: calc(clamp(3.5rem, 7vw, 6.5rem) + clamp(1.5rem, 4vw, 4rem)); padding-bottom: clamp(3.5rem, 7vw, 6.5rem);
	background: radial-gradient(ellipse 60% 70% at 15% 0%, #fff6e8, transparent 70%), #efe9df; color: var(--sx-ink); }
.sx-closer { --edge: clamp(1.5rem, 4vw, 4rem); position: relative; z-index: 2;
	clip-path: polygon(0 0, 100% var(--edge), 100% 100%, 0 calc(100% - var(--edge))); padding-bottom: calc(clamp(4rem, 8vw, 7rem) + var(--edge)); }
.sx-footer { position: relative; z-index: 0; margin-top: calc(-1 * clamp(1.5rem, 4vw, 4rem)) !important; padding-top: clamp(1.5rem, 4vw, 4rem); }

/* Failure-domain figure */
.sx-blast .sx-eyebrow, .sx-blast .sx-figure__kicker { color: #6b5a44; }
.sx-blast__head { max-width: 46rem; }
.sx-blast__note { margin-top: 1.5rem; }
.sx-blast__head p { font-size: 1.0625rem; color: #3b3f46; }
.sx-blast__grid { display: grid; gap: 1.25rem; grid-template-columns: 1fr; margin-top: 2.25rem; }
@media (min-width: 72rem) { .sx-blast__grid { grid-template-columns: repeat(3, 1fr); gap: 1.5rem; } }
.sx-blast__p { margin: 0; background: #fffdf9; border: 1px solid #d9cfbd; border-top: 4px solid var(--sx-ink); padding: 1rem 1rem 1.1rem; box-shadow: 0 24px 40px -28px rgba(10, 20, 36, .45); }
.sx-blast__p h3 { margin: 0 0 .5rem; font-size: 1.25rem; letter-spacing: -.01em; }
.sx-blast__p h3 span { font-family: var(--sx-mono); font-size: .8125rem; letter-spacing: .1em; color: var(--sx-copper-deep); margin-right: .5rem; }
.sx-blast__p figcaption { font-size: .9688rem; line-height: 1.5; color: #3b3f46; margin-top: .4rem; }
.b-svg { display: block; width: 100%; height: auto; }
.b-svg text { font-family: var(--sx-mono); font-size: 15px; letter-spacing: .02em; }
.b-host { fill: #fff; stroke: #0f1d33; stroke-width: 2.2; }
.b-hv { fill: rgba(31, 111, 235, .10); stroke: #1a5fcc; stroke-width: 1.5; stroke-dasharray: 6 4; }
.b-store { fill: #fbf1e6; stroke: #98561a; stroke-width: 2; }
.b-orch { fill: rgba(31, 111, 235, .16); stroke: #1a5fcc; stroke-width: 1.5; }
.b-disk { fill: #dfe7f1; stroke: #0f1d33; stroke-width: 1; }
.b-cap { fill: #1f2733; font-size: 15px; }
.b-w rect { fill: #1a5fcc; stroke: #0a2c69; stroke-width: 1.5; transition: fill .5s, stroke .5s; }
.b-w text { fill: #fff; font-weight: 700; transition: fill .5s; }
.b-dn rect { fill: #fbefe3; stroke: #98561a; stroke-dasharray: 4 3; }
.b-dn text { fill: #8a4d14; }
.b-fault rect { fill: rgba(180, 106, 42, .10); stroke: #b46a2a; stroke-width: 2.5; }
.b-fault circle { fill: #b46a2a; stroke: none; }
.b-svg .b-fault text { fill: #fff; font-weight: 700; }
.b-fault { transition: opacity .45s; }
.b-st { font-weight: 700; font-size: 15px; transition: opacity .4s; }
.b-st-pre { fill: #1a5fcc; opacity: 0; }
.b-st-post { fill: #8a4d14; }
/* intact -> fault -> effect, only when JS drives it (base state above is the complete outcome) */
.sx-blast-js .b-fault { opacity: 0; }
.sx-blast-js .b-dn rect { fill: #1a5fcc; stroke: #0a2c69; stroke-dasharray: none; }
.sx-blast-js .b-dn text { fill: #fff; }
.sx-blast-js .b-wn { opacity: 0; }
.sx-blast-js .b-st-pre { opacity: 1; transition-delay: 0s; }
.sx-blast-js .b-st-post { opacity: 0; transition-delay: 0s; }
.sx-blast-js .hit .b-fault { opacity: 1; transition-delay: .7s; }
.sx-blast-js .hit .b-dn rect { fill: #fbefe3; stroke: #98561a; stroke-dasharray: 4 3; transition-delay: .7s; }
.sx-blast-js .hit .b-dn text { fill: #8a4d14; transition-delay: .7s; }
.sx-blast-js .hit .b-wn { opacity: 1; transition: opacity .5s 2.2s; }
.sx-blast-js .hit .b-st-pre { opacity: 0; transition-delay: .7s; }
.sx-blast-js .hit .b-st-post { opacity: 1; transition-delay: .7s; }
.b-st-mid { display: none; fill: #8a4d14; }
.sx-blast-js .b-st-mid { display: block; opacity: 0; }
.sx-blast-js .hit .b-st-mid { animation: sx-mid 2.2s forwards; }
.sx-blast-js .sx-blast__p--c .b-st-post { transition-delay: 0s; }
.sx-blast-js .hit.sx-blast__p--c .b-st-post { transition-delay: 2.2s; }
@keyframes sx-mid { 0%, 31% { opacity: 0; } 36%, 94% { opacity: 1; } 100% { opacity: 0; } }
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.sx-blast__p { animation: sx-rise linear both; animation-timeline: view(); animation-range: entry 0% entry 55%; }
		.sx-blast__p--b { animation-range: entry 8% entry 63%; } .sx-blast__p--c { animation-range: entry 16% entry 71%; }
		@keyframes sx-rise { from { transform: translateY(2.5rem); opacity: .2; } to { transform: none; opacity: 1; } }
	}
}

/* Compare table rows: staggered reveal */
.sx-js .sx-spec tbody tr { opacity: 0; transform: translateY(14px); transition: opacity .6s ease, transform .6s ease; transition-delay: calc(var(--r, 0) * 90ms); }
.sx-js .sx-spec.is-in tbody tr { opacity: 1; transform: none; }
.sx-spec tbody tr:last-child { background: linear-gradient(90deg, rgba(180, 106, 42, .08), transparent); }

/* Footer: compact, ruled, link spacing tightened */
.sx-footer { background: radial-gradient(ellipse 50% 120% at 85% 100%, rgba(31, 111, 235, .22), transparent 70%), var(--sx-ink); }
.sx-footer__in { padding-top: 3.5rem; gap: 2rem; }
.sx-footer ul { border-top: 1px solid #1d2d48; }
.sx-footer li { margin: 0; border-bottom: 1px solid #14233b; }
.sx-footer nav a { display: block; min-height: 0; line-height: 1.35; padding: .55rem 0; text-decoration: none; color: #c9d6e8; transition: color .2s, padding-left .2s; }
.sx-footer nav a:hover { color: #fff; padding-left: .4rem; }
.sx-footer__bar { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .4rem 2rem; }

/* ========================================================================
   11. v2.3.2: night-slate lit hero, tablet blast layout, migration label floor
   Hero register: deep teal-slate with a warm copper key light; the migration
   band below stays navy-ink, with a white statement between them.
   ======================================================================== */
:is(.sx-compare, .sx-routes-sec, .sx-closer, .sx-statement, .sx-hero) { margin-block-start: 0; }

.sx-hero { --edge: clamp(1.5rem, 4vw, 4rem); color: #dfe9ea; border-bottom: 0;
	background:
		radial-gradient(ellipse 46% 55% at 80% 18%, rgba(232, 166, 93, .30), transparent 68%),
		radial-gradient(ellipse 60% 50% at 62% 100%, rgba(63, 140, 255, .16), transparent 70%),
		radial-gradient(ellipse 40% 60% at 4% 100%, rgba(60, 150, 160, .20), transparent 70%),
		linear-gradient(180deg, #0b161a 0%, #11242a 55%, #0c1a1f 100%);
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - var(--edge)), 0 100%);
	padding-bottom: var(--edge); box-shadow: inset 0 -80px 120px -60px rgba(0, 0, 0, .5); }
.sx-hero::before { background-image: repeating-linear-gradient(30deg, rgba(143, 176, 184, .13) 0 1px, transparent 1px 64px), repeating-linear-gradient(-30deg, rgba(143, 176, 184, .13) 0 1px, transparent 1px 64px);
	-webkit-mask-image: radial-gradient(ellipse 70% 80% at 70% 50%, #000 10%, transparent 78%); mask-image: radial-gradient(ellipse 70% 80% at 70% 50%, #000 10%, transparent 78%); }
.sx-hero::after { background: linear-gradient(100deg, transparent 38%, rgba(240, 183, 120, .16) 50%, transparent 62%); background-size: 260% 100%; mix-blend-mode: screen; opacity: 1; }
.sx-hero .sx-kicker, .sx-hero .sx-figure__kicker { color: #9fb5b8; }
.sx-hero h1 { color: #f6f1e7; }
.sx-hero h1 em { color: #f0b778; }
.sx-hero .sx-lede { color: #c3d0d2; }
.sx-hero__note { color: #9fb0b3; }
.sx-hero .sx-btn { border-color: #e8a65d; }
.sx-hero .sx-btn--primary { background: #e8a65d; color: #1a1208; }
.sx-hero .sx-btn--primary:hover { background: #f6c58c; border-color: #f6c58c; color: #1a1208; }
.sx-hero .sx-btn--ghost { color: #f0d9b8; border-color: rgba(240, 217, 184, .6); }
.sx-hero .sx-btn--ghost:hover { background: #f0d9b8; color: #1a1208; }
.sx-hero a:focus-visible, .sx-hero button:focus-visible { outline-color: #fff; }
.sx-hero .sx-svg { filter: drop-shadow(0 34px 38px rgba(0, 0, 0, .6)) drop-shadow(0 0 40px rgba(232, 166, 93, .10)); }
.sx-hero .sx-figure__stage::after { content: ""; position: absolute; left: 4%; right: 4%; bottom: 14%; height: 18%; pointer-events: none;
	background: radial-gradient(ellipse 50% 100% at 50% 0%, rgba(232, 166, 93, .20), transparent 70%); }
.sx-hero .sx-figure__stage { position: relative; }
.sx-hero .sx-figure .sx-figure__kicker { margin-top: 1rem; }

/* elevation drawing, night register */
.sx-hero .e-ground { stroke: #cfe0e4; }
.sx-hero .e-gbar { fill: #22383f; }
.sx-hero .e-sh { fill: rgba(0, 0, 0, .38); }
.sx-hero .e-hatch { stroke: #5d7880; }
.sx-hero .e-ch { fill: #152a31; stroke: #a9c6cd; }
.sx-hero .e-pan { fill: #21393f; stroke: #6b8890; }
.sx-hero .e-vent { stroke: #6b8890; }
.sx-hero .e-dk { fill: #1d373e; stroke: #8fb0b8; }
.sx-hero .e-w { fill: #2f7cf0; stroke: #a9d0ff; }
.sx-hero .e-cu { fill: rgba(232, 166, 93, .10); stroke: #e8a65d; }
.sx-hero .e-cut { fill: #f0b778; }
.sx-hero .e-hv { fill: rgba(63, 140, 255, .18); stroke: #7fb0ff; }
.sx-hero .e-ar { fill: rgba(232, 166, 93, .12); stroke: #e8a65d; }
.sx-hero .e-brk { stroke: #e8a65d; }
.sx-hero .e-orch { fill: rgba(63, 140, 255, .24); stroke: #7fb0ff; }
.sx-hero .e-pool { stroke: #e8a65d; }
.sx-hero .e-store { fill: rgba(63, 140, 255, .14); stroke: #7fb0ff; }
.sx-hero .e-flow { stroke: #7fb0ff; }
.sx-hero .e-dim { stroke: #9fb5b8; }
.sx-hero .e-arr { fill: #9fb5b8; }
.sx-hero .e-tb { fill: #0e1d22; stroke: #6b8890; }
.sx-hero .led { fill: #f0b778; }
.sx-hero .lab { fill: #dfe9ea; }
.sx-hero .lab-b { fill: #f0b778; }

/* rail cards, night register */
.sx-hero .sx-st { background: rgba(255, 255, 255, .04); border-top-color: #e8a65d; box-shadow: 0 18px 30px -22px rgba(0, 0, 0, .7); }
.sx-hero .sx-st__k { color: #fff; }
.sx-hero .sx-st__t { color: #c3d0d2; }
.sx-hero .sx-trade { color: #f0b778; }
.sx-hero .sx-lg { background: rgba(255, 255, 255, .05); border-top-color: #3d5961; color: #dfe9ea; }
.sx-hero .sx-legend { margin-top: .75rem; }
@media (prefers-reduced-motion: no-preference) {
	.sx-lg-a, .sx-st-a { animation-name: sx-da; } .sx-lg-b, .sx-st-b { animation-name: sx-db; } .sx-lg-c, .sx-st-c { animation-name: sx-dc; }
	@keyframes sx-da { 0%, 24% { border-top-color: #e8a65d; background: rgba(232, 166, 93, .14); } 33%, 91% { border-top-color: #3d5961; background: rgba(255, 255, 255, .04); } 100% { border-top-color: #e8a65d; background: rgba(232, 166, 93, .14); } }
	@keyframes sx-db { 0%, 24% { border-top-color: #3d5961; background: rgba(255, 255, 255, .04); } 33%, 57% { border-top-color: #e8a65d; background: rgba(232, 166, 93, .14); } 66%, 100% { border-top-color: #3d5961; background: rgba(255, 255, 255, .04); } }
	@keyframes sx-dc { 0%, 57% { border-top-color: #3d5961; background: rgba(255, 255, 255, .04); } 66%, 91% { border-top-color: #e8a65d; background: rgba(232, 166, 93, .14); } 100% { border-top-color: #3d5961; background: rgba(255, 255, 255, .04); } }
}
/* mobile: a larger, centre-cropped stage instead of a tiny drawing */


/* Migration: labels stay >= 12px; vertical figure takes over below 60rem */
.m-cap, .m-lab { font-size: 18px; }
.m-svg--v .m-cap, .m-svg--v .m-lab { font-size: 14px; }
@media (max-width: 60rem) { .m-svg--h { display: none; } .m-svg--v { display: block; max-width: 30rem; } }
.sx-mig__fig:focus-visible { outline: 3px solid #fff; outline-offset: 8px; }

/* Blast: tablet = two across with the third spanning, svg width capped */
.b-svg { max-width: 26rem; margin-inline: auto; }
@media (min-width: 40rem) and (max-width: 71.99rem) {
	.sx-blast__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sx-blast__p--c { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 24rem) minmax(0, 1fr); grid-template-areas: "h s" "c s"; column-gap: 2rem; align-content: center; }
	.sx-blast__p--c h3 { grid-area: h; align-self: end; } .sx-blast__p--c .b-svg { grid-area: s; width: 100%; } .sx-blast__p--c figcaption { grid-area: c; align-self: start; }
}

/* ========================================================================
   12. v2.3.3: legible mobile hero stage, AA contrast, quick view swaps,
   routes as three lit panels, closer in the hero palette, 404 graphic
   ======================================================================== */
/* Desktop and tablet draw the wide elevation; phones get a purpose-drawn vertical stage with real labels */
.sx-svg--m { display: none; }
@media (max-width: 39.99rem) {
	.sx-svg--d { display: none; }
	.sx-svg--m { display: block; }
	.sx-svg--m .lab { font-size: 12px; letter-spacing: .02em; }
	.sx-svg--m .e-wt { font-size: 12px; letter-spacing: 0; }
	.sx-svg--m .lab-b { font-size: 12.5px; }
	.sx-ma, .sx-mb { opacity: 0; } .sx-mc { opacity: 1; }
	.sx-legend { grid-template-columns: 1fr 1.15fr 1.3fr; }
	.sx-lg { font-size: .75rem; letter-spacing: -.01em; padding: .45rem .35rem; }
}
@media (max-width: 39.99rem) and (prefers-reduced-motion: no-preference) {
	.sx-ma { animation: sx-ma 18s linear infinite; } .sx-mb { animation: sx-mb 18s linear infinite; } .sx-mc { animation: sx-mc 18s linear infinite; }
	@keyframes sx-ma { 0%, 32% { opacity: 1; } 33%, 99% { opacity: 0; } 100% { opacity: 1; } }
	@keyframes sx-mb { 0%, 32% { opacity: 0; } 33%, 65% { opacity: 1; } 66%, 100% { opacity: 0; } }
	@keyframes sx-mc { 0%, 65% { opacity: 0; } 66%, 98% { opacity: 1; } 99%, 100% { opacity: 0; } }
	.sx-lg-a, .sx-st-a { animation-name: sx-la; } .sx-lg-b, .sx-st-b { animation-name: sx-lb; } .sx-lg-c, .sx-st-c { animation-name: sx-lc; }
	@keyframes sx-la { 0%, 32% { border-top-color: #e8a65d; background: rgba(232, 166, 93, .14); } 33%, 99% { border-top-color: #3d5961; background: rgba(255, 255, 255, .04); } 100% { border-top-color: #e8a65d; background: rgba(232, 166, 93, .14); } }
	@keyframes sx-lb { 0%, 32% { border-top-color: #3d5961; background: rgba(255, 255, 255, .04); } 33%, 65% { border-top-color: #e8a65d; background: rgba(232, 166, 93, .14); } 66%, 100% { border-top-color: #3d5961; background: rgba(255, 255, 255, .04); } }
	@keyframes sx-lc { 0%, 65% { border-top-color: #3d5961; background: rgba(255, 255, 255, .04); } 66%, 98% { border-top-color: #e8a65d; background: rgba(232, 166, 93, .14); } 99%, 100% { border-top-color: #3d5961; background: rgba(255, 255, 255, .04); } }
}
/* Reduced motion or no animation: only the shown view (C) is lit */
.sx-hero .sx-st-a, .sx-hero .sx-st-b, .sx-hero .sx-lg-a, .sx-hero .sx-lg-b { border-top-color: #3d5961; background: rgba(255, 255, 255, .04); }
.sx-hero .sx-st-c, .sx-hero .sx-lg-c { border-top-color: #e8a65d; background: rgba(232, 166, 93, .14); }

/* AA: workload label and orchestration layer */
.sx-hero .e-w { fill: #1a5fcc; stroke: #a9d0ff; }
.sx-hero .e-orch { fill: rgba(10, 36, 90, .85); stroke: #7fb0ff; }

/* Quick view swaps (about 0.2s) so label contrast never sags through a long crossfade */
@keyframes sx-ga { 0%, 24% { opacity: 1; } 25%, 99% { opacity: 0; } 100% { opacity: 1; } }
@keyframes sx-gb { 0%, 32% { opacity: 0; } 33%, 57% { opacity: 1; } 58%, 100% { opacity: 0; } }
@keyframes sx-gc { 0%, 65% { opacity: 0; } 66%, 91% { opacity: 1; } 92%, 100% { opacity: 0; } }

/* Rollback: the source stays clearly legible (standby, dashed); only the target path is solid */
.s4 .m-t-src, .s5 .m-t-src { opacity: .8; stroke-dasharray: 4 7; }
.s5 .m-t-src { opacity: .85; }

/* Routes: three lit panels instead of a list */
.sx-routes { display: grid; grid-template-columns: 1fr; gap: 1.25rem; border-top: 0; margin-top: 2.5rem; }
@media (min-width: 62rem) { .sx-routes { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; } }
.sx-route { display: flex; flex-direction: column; position: relative; padding: 1.75rem 1.5rem 1.25rem; border: 1px solid var(--sx-grid); background: linear-gradient(180deg, #f7f9fb, #fff 60%); overflow: hidden; }
.sx-route::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: linear-gradient(90deg, #e8a65d, #b46a2a); transform-origin: left; transform: scaleX(1); transition: transform 1s cubic-bezier(.2, .7, .2, 1) .2s; }
.sx-js .sx-route.sx-reveal:not(.is-in)::before { transform: scaleX(0); }
.sx-route:hover { border-color: #c9b79b; box-shadow: 0 22px 36px -26px rgba(10, 20, 36, .5); }
.sx-route__n { font-size: clamp(3rem, 2rem + 3vw, 4.5rem); color: transparent; -webkit-text-stroke: 1.5px var(--sx-copper-deep); font-weight: 600; margin-bottom: .5rem; }
.sx-route__main { flex: 1 1 auto; }
.sx-route ul { margin-top: 1.25rem; border-top: 1px solid var(--sx-ink); }
.sx-route p { max-width: none; }

/* Closer in the hero palette */
.sx-closer { background:
	radial-gradient(ellipse 50% 90% at 88% 0%, rgba(232, 166, 93, .30), transparent 70%),
	radial-gradient(ellipse 60% 70% at 10% 100%, rgba(60, 150, 160, .22), transparent 70%),
	linear-gradient(135deg, #0f2a31 0%, #12343b 55%, #0b1a1f 100%); }
.sx-closer::before { opacity: .12; }
.sx-closer h2 { color: #f6f1e7; }
.sx-closer p { color: #c3d0d2; }
.sx-closer .sx-btn--light { background: #e8a65d; border-color: #e8a65d; color: #1a1208; }
.sx-closer .sx-btn--light:hover { background: #f6c58c; border-color: #f6c58c; color: #1a1208; }
.sx-closer .sx-btn--outline-light { border-color: rgba(240, 217, 184, .65); color: #f0d9b8; }
.sx-closer .sx-btn--outline-light:hover { background: #f0d9b8; color: #1a1208; }

/* 404 graphic: a rack with one missing unit */
.sx-404fig { margin: 0 0 2rem; max-width: 26rem; }
.sx-404fig svg { display: block; width: 100%; height: auto; }
.sx-404fig .k-u { fill: #fff; stroke: var(--sx-graphite); stroke-width: 2; }
.sx-404fig .k-b { fill: var(--sx-blue-deep); stroke: var(--sx-blue-deep); }
.sx-404fig .k-m { fill: rgba(180, 106, 42, .08); stroke: var(--sx-copper-deep); stroke-width: 2; stroke-dasharray: 6 5; }
.sx-404fig text { font-family: var(--sx-mono); font-size: 13px; letter-spacing: .08em; fill: var(--sx-graphite); }
.sx-404fig .k-t { fill: var(--sx-copper-deep); font-weight: 700; }
.sx-404fig figcaption { font-family: var(--sx-mono); font-size: .75rem; letter-spacing: .06em; color: var(--sx-steel-text); margin-top: .5rem; }
.sx-main > .sx-404fig { max-width: 26rem !important; }
.sx-route h3 { line-height: 1.15; margin: .1rem 0 .6rem; }
.sx-route ul { width: 100%; }

/* ========================================================================
   13. v2.3.4: strictly sequential text swaps, 360 label floor, rollback
   legibility, compare caption, 404 composition, row focus
   ======================================================================== */
/* Mobile hero views: old fully out, short blank, then new in (never both visible) */
@keyframes sx-ma { 0% { opacity: 1; } 32% { opacity: 1; } 32.2% { opacity: 0; } 98.8% { opacity: 0; } 99% { opacity: 1; } 100% { opacity: 1; } }
@keyframes sx-mb { 0% { opacity: 0; } 32.8% { opacity: 0; } 33% { opacity: 1; } 65% { opacity: 1; } 65.2% { opacity: 0; } 100% { opacity: 0; } }
@keyframes sx-mc { 0% { opacity: 0; } 65.8% { opacity: 0; } 66% { opacity: 1; } 98% { opacity: 1; } 98.2% { opacity: 0; } 100% { opacity: 0; } }
/* Desktop hero views: same rule */
@keyframes sx-ga { 0% { opacity: 1; } 24% { opacity: 1; } 24.2% { opacity: 0; } 99.5% { opacity: 0; } 99.7% { opacity: 1; } 100% { opacity: 1; } }
@keyframes sx-gb { 0% { opacity: 0; } 32.8% { opacity: 0; } 33% { opacity: 1; } 57% { opacity: 1; } 57.2% { opacity: 0; } 100% { opacity: 0; } }
@keyframes sx-gc { 0% { opacity: 0; } 65.8% { opacity: 0; } 66% { opacity: 1; } 91% { opacity: 1; } 91.2% { opacity: 0; } 100% { opacity: 0; } }

/* Failure-domain captions: pre out, then mid or post in, never together */
.sx-blast-js .b-st-pre, .sx-blast-js .b-st-post { transition-duration: .12s; }
.sx-blast-js .hit .b-st-pre { transition-delay: .7s; }
.sx-blast-js .hit .b-st-post { transition-delay: 1s; }
.sx-blast-js .hit.sx-blast__p--c .b-st-post { transition-delay: 2.4s; }
.sx-blast-js .hit .b-wn { transition: opacity .5s 2.4s; }
.sx-blast-js .hit .b-st-mid { animation: sx-mid2 2.5s forwards; }
@keyframes sx-mid2 { 0%, 38% { opacity: 0; } 42%, 86% { opacity: 1; } 88%, 100% { opacity: 0; } }

/* 360 floor: let the mobile stage use the gutter so 12px labels render at >= 12px */
@media (max-width: 39.99rem) { .sx-hero .sx-figure__stage { margin-inline: -.75rem; } }

/* Rollback: the source stays bright and legible */
.s4 .m-node, .s5 .m-node { stroke: #9cc8ff; fill: #172c4d; }
.s4 .m-frame:not(.m-frame-t), .s5 .m-frame:not(.m-frame-t) { stroke: #6b8dc0; }
.s4 .m-svg .m-lab:not(.m-lab-t), .s5 .m-svg .m-lab:not(.m-lab-t) { fill: #fff; }

/* Compare: caption lives outside the scroller; row focus follows the reader */
.sx-compare__cap { margin: 0 0 .6rem; }
.sx-spec tbody tr { transition: background-color .3s; }
.sx-spec tbody tr.is-focus { background: #fff7ec; }
.sx-spec tbody tr.is-focus > th { color: var(--sx-copper-deep); box-shadow: inset 3px 0 0 var(--sx-copper); }

/* 404: two-up composition, large rack */
.sx-main > .sx-404fig { max-width: none !important; margin: 0 0 2rem; }
@media (min-width: 52rem) {
	.sx-main--404 { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 3rem; align-items: center; }
	.sx-main--404 > .sx-404fig { margin: 0; }
	.sx-main--404 > p { font-size: 1.25rem; line-height: 1.6; }
}
.sx-404fig .k-l { fill: var(--sx-steel); }
.sx-404fig .k-v { stroke: var(--sx-steel); stroke-width: 1.5; }
.sx-404fig text { font-size: 14px; }
