:root{
  --ink:#0A0A0B; --ink-2:#1A1A1D; --ink-3:#26262A;
  --paper:#FFFFFF; --bone:#FAFAF8; --bone-t:#F4EFE6;
  --line:rgba(10,10,11,.14); --line-d:rgba(244,239,230,.16);
  --mut:rgba(10,10,11,.6); --mut-d:rgba(244,239,230,.66);
  --blue:#0655FF; --blue-2:#0A48E0; --blue-3:#0334B8; --signal:#B5FF3C;
  --ease:cubic-bezier(.2,.7,.2,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:24px}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.55 "IBM Plex Sans",system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--blue);text-decoration:none;text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{text-decoration-thickness:2px}
strong,b{font-weight:500;color:var(--ink)}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:2px}
.mono{font-family:"IBM Plex Mono",ui-monospace,monospace}
.wrap{max-width:1200px;margin:0 auto;padding:0 32px}
.prose{max-width:70ch}
.prose p{margin:0 0 1.1em}
.prose p:last-child{margin-bottom:0}
h1,h2{text-wrap:pretty;font-weight:500;margin:0}
h2{font-size:clamp(30px,3.6vw,46px);letter-spacing:-.025em;line-height:1.1;margin:14px 0 26px;max-width:24ch}
h3{font:500 13px/1.4 "IBM Plex Mono",ui-monospace,monospace;text-transform:uppercase;letter-spacing:.11em;color:var(--ink);margin:0 0 10px}
.eyebrow{display:flex;align-items:center;gap:12px;font:400 12.5px/1 "IBM Plex Mono",ui-monospace,monospace;text-transform:uppercase;letter-spacing:.12em;color:var(--mut)}
.eyebrow .idx{color:var(--blue);font-weight:500}
.eyebrow::before{content:"";width:7px;height:7px;background:var(--blue);flex:none}
.block{padding:92px 0}
.block--tight{padding:64px 0}
sup.cite{line-height:0;font-size:.62em;vertical-align:super}
sup.cite a{font-family:"IBM Plex Mono",ui-monospace,monospace;text-decoration:none;color:var(--blue);padding:0 2px}
sup.cite a:hover{text-decoration:underline}
figure{margin:0}
figcaption{font:400 13px/1.6 "IBM Plex Mono",ui-monospace,monospace;color:var(--mut);padding-top:14px;max-width:66ch}
.figframe{position:relative;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--ink)}
.figframe svg{display:block;width:100%;height:auto}
/* tables */
.tbl{width:100%;border-collapse:collapse;font-size:15.5px;line-height:1.5}
.tbl th{font:500 12px/1.4 "IBM Plex Mono",ui-monospace,monospace;text-transform:uppercase;letter-spacing:.09em;color:var(--mut);text-align:left;padding:12px 18px 12px 0;border-bottom:1px solid var(--ink)}
.tbl td{padding:15px 18px 15px 0;border-bottom:1px solid var(--line);vertical-align:top;color:rgba(10,10,11,.78)}
.tbl td:first-child{font-weight:500;color:var(--ink)}
.tbl tr:last-child td{border-bottom:0}
.tblwrap{overflow-x:auto}
/* hero */
.hero{position:relative;background:var(--ink);color:var(--bone-t);overflow:clip}
.hero .underlay{position:absolute;inset:0}
.hero .underlay svg{width:100%;height:100%;display:block}
.hero .scrim{position:absolute;inset:0;background:linear-gradient(178deg,rgba(10,10,11,.32) 0%,rgba(10,10,11,.42) 40%,rgba(10,10,11,.72) 78%,rgba(10,10,11,.94) 100%),linear-gradient(90deg,rgba(10,10,11,.5) 0%,rgba(10,10,11,.18) 45%,rgba(10,10,11,0) 70%)}
.hero .wrap{position:relative;z-index:1;padding-top:36px;padding-bottom:88px}
.crumb{font:400 12.5px/1 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.04em;color:var(--mut-d);display:flex;gap:10px;flex-wrap:wrap}
.crumb a{color:var(--mut-d);text-decoration:none}
.crumb a:hover{color:var(--bone-t);text-decoration:underline}
.crumb .sep{opacity:.5}
.hero-eyebrow{margin-top:96px;display:inline-flex;align-items:center;gap:10px;font:400 12.5px/1 "IBM Plex Mono",ui-monospace,monospace;text-transform:uppercase;letter-spacing:.12em;color:var(--mut-d);border:1px solid var(--line-d);border-radius:999px;padding:10px 18px;background:rgba(10,10,11,.35)}
.hero-eyebrow .dot{width:6px;height:6px;background:var(--signal);border-radius:50%;flex:none}
.hero h1{font-size:clamp(42px,6.4vw,84px);letter-spacing:-.035em;line-height:1.02;margin:26px 0 0;max-width:15ch;color:#fff}
.capsule{max-width:62ch;margin-top:28px;font-size:clamp(17px,1.6vw,20px);line-height:1.6;color:rgba(244,239,230,.88)}
.capsule p{margin:0}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;margin-top:52px;max-width:860px;border:1px solid var(--line-d);border-radius:14px;overflow:hidden;background:var(--line-d)}
.stat{background:rgba(10,10,11,.72);padding:26px 28px}
.stat .v{font:italic 400 clamp(52px,5.4vw,76px)/1 "IBM Plex Serif",Georgia,serif;color:#fff}
.stat .v .tick{color:var(--blue);font-style:normal}
.stat .l{font:400 12px/1.5 "IBM Plex Mono",ui-monospace,monospace;text-transform:uppercase;letter-spacing:.1em;color:var(--mut-d);margin-top:12px}
.authorband{display:flex;flex-wrap:wrap;gap:26px 40px;margin-top:52px;max-width:760px}
.authorband .au{display:flex;align-items:center;gap:14px;min-width:0}
.authorband img{width:52px;height:52px;object-fit:cover;border-radius:8px;border:1px solid var(--line-d);flex:none}
.authorband .initials{width:52px;height:52px;border-radius:8px;border:1px solid var(--line-d);background:rgba(244,239,230,.08);display:flex;align-items:center;justify-content:center;font:500 15px/1 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.06em;color:#fff;flex:none}
.authorband .who{font-size:15px;line-height:1.45;color:rgba(244,239,230,.72)}
.authorband .who .nm{display:block;font-weight:500;color:#fff}
.authorband .who .rl{font:400 12px/1.5 "IBM Plex Mono",ui-monospace,monospace;text-transform:uppercase;letter-spacing:.1em;color:rgba(244,239,230,.62)}
.dates{font:400 12.5px/1 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.05em;color:var(--mut-d);margin-top:22px}
.ctarow{display:flex;flex-wrap:wrap;gap:14px;margin-top:36px;align-items:center}
.btn{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:11px 26px;border-radius:999px;font:500 15px/1.2 "IBM Plex Sans",system-ui,sans-serif;text-decoration:none;border:1px solid transparent;cursor:pointer;transition:background .22s var(--ease),border-color .22s var(--ease),color .22s var(--ease)}
.btn .arr{transition:transform .22s var(--ease)}
.btn:hover .arr{transform:translateX(4px)}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:var(--blue-2)}
.btn-ghost{border-color:rgba(244,239,230,.38);color:#fff;background:transparent}
.btn-ghost:hover{border-color:#fff}
.btn-ink{background:var(--ink);color:#fff}
.btn-ink:hover{background:var(--ink-2)}
.btn-paper{background:#fff;color:var(--blue)}
.btn-paper:hover{background:var(--bone-t)}
/* section index */
.index{border-bottom:1px solid var(--line);padding:44px 0}
.index .ttl{font:500 12px/1 "IBM Plex Mono",ui-monospace,monospace;text-transform:uppercase;letter-spacing:.12em;color:var(--mut);margin-bottom:22px}
.index ol{list-style:none;margin:0;padding:0;columns:2;column-gap:56px}
.index li{break-inside:avoid;border-top:1px solid var(--line)}
.index a{display:flex;gap:16px;align-items:baseline;padding:10px 2px;font:400 13.5px/1.5 "IBM Plex Mono",ui-monospace,monospace;color:var(--ink);text-decoration:none}
.index a .n{color:var(--blue);flex:none}
.index a:hover{background:var(--bone)}
/* quick answers */
.qa-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:8px}
.qa{background:var(--bone);border:1px solid var(--line);border-radius:14px;padding:28px 30px;transition:background .22s var(--ease)}
.qa:hover{background:#fff}
.qa .q{display:flex;gap:12px;align-items:baseline;font-weight:500;font-size:17px;line-height:1.4}
.qa .q .qn{font:500 12px/1.6 "IBM Plex Mono",ui-monospace,monospace;color:var(--blue);flex:none;letter-spacing:.06em}
.qa .a{font-size:15.5px;line-height:1.6;color:var(--mut);margin-top:12px}
.factstrip{margin-top:44px;border:1px solid var(--line);border-top:2px solid var(--ink);border-radius:14px;background:var(--bone);padding:8px 30px 12px;position:relative}
.factstrip .tbl th{border-bottom:1px solid var(--line)}
.factstrip .tbl td{border-bottom:0;font-weight:500;color:var(--ink);padding-bottom:22px}
.factstrip .tbl td:first-child{color:var(--blue)}
.factstrip .tbl th:last-child,.factstrip .tbl td:last-child{padding-right:0}
.factlab{position:absolute;top:-11px;left:26px;background:var(--bone);padding:0 10px;font:500 11px/1 "IBM Plex Mono",ui-monospace,monospace;text-transform:uppercase;letter-spacing:.14em;color:var(--blue)}
/* chips */
.chiprow{display:flex;flex-wrap:wrap;gap:10px;margin:26px 0}
.chip{font:400 12.5px/1.3 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.02em;border:1px solid var(--line);border-radius:4px;padding:9px 13px;background:var(--bone);color:var(--ink)}
.chip::before{content:"■ ";color:var(--blue);font-size:8px;vertical-align:2px}
/* split layouts */
.split{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:64px;align-items:start}
.split--rev{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
/* pull quote */
.pull{margin:44px 0;padding-left:26px;border-left:2px solid var(--blue)}
.pull p{font:italic 400 clamp(25px,2.6vw,34px)/1.32 "IBM Plex Serif",Georgia,serif;color:var(--blue);margin:0;max-width:26ch;text-wrap:pretty}
/* cta slim */
.cta-slim{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.cta-slim a{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:26px 2px;font:500 17px/1.4 "IBM Plex Sans",system-ui,sans-serif;color:var(--ink);text-decoration:none}
.cta-slim a .arr{color:var(--blue);font-size:22px;transition:transform .22s var(--ease)}
.cta-slim a:hover .arr{transform:translateX(4px)}
.cta-slim a:hover{color:var(--blue)}
/* blue CTA bands */
.ctaband{position:relative;overflow:clip;color:#fff;background:linear-gradient(115deg,#0858FF 0%,#0A48E0 55%,#0334B8 100%)}
.ctaband::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.14) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.14) 1px,transparent 1px);background-size:60px 60px;-webkit-mask-image:radial-gradient(120% 100% at 18% 0%,#000 28%,transparent 76%);mask-image:radial-gradient(120% 100% at 18% 0%,#000 28%,transparent 76%)}
.ctaband .wrap{position:relative;z-index:1}
.ctaband h2,.ctaband .bigline{color:#fff}
.ctaband .eyebrow{color:rgba(255,255,255,.78)}
.ctaband .eyebrow::before{background:var(--signal)}
.ctaband .eyebrow .idx{color:#fff}
.ctaband .trustline{color:rgba(255,255,255,.78)}
.btn-onblue{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.42)}
.btn-onblue:hover{background:rgba(255,255,255,.24);border-color:#fff}
.ctaband .btn-ghost{border-color:rgba(255,255,255,.42)}
.ctaband .btn-ghost:hover{border-color:#fff;background:rgba(255,255,255,.1)}
/* ink bands */
.band{background:var(--ink);color:var(--bone-t);position:relative;overflow:clip}
.band::before{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--line-d) 1px,transparent 1px),linear-gradient(90deg,var(--line-d) 1px,transparent 1px);background-size:64px 64px;opacity:.35;-webkit-mask-image:linear-gradient(180deg,#000 0%,transparent 72%);mask-image:linear-gradient(180deg,#000 0%,transparent 72%)}
.band .wrap{position:relative;z-index:1}
.band h2,.band .bigline{color:#fff}
.bigline{font-size:clamp(28px,3.4vw,44px);font-weight:500;letter-spacing:-.025em;line-height:1.14;max-width:24ch;margin:14px 0 0}
.trustline{font:400 13px/1.6 "IBM Plex Mono",ui-monospace,monospace;color:var(--mut-d);margin-top:20px}
/* steps + D2 */
.steps{list-style:none;counter-reset:st;margin:0;padding:0}
.steps li{counter-increment:st;display:flex;gap:20px;padding:18px 0;border-top:1px solid var(--line);font-size:16px;line-height:1.6;color:rgba(10,10,11,.8)}
.steps li::before{content:counter(st,decimal-leading-zero);font:500 13px/1.9 "IBM Plex Mono",ui-monospace,monospace;color:var(--blue);flex:none}
.steps li:last-child{border-bottom:1px solid var(--line)}
.steps li{break-inside:avoid}
/* walls / fixes */
.fixgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:12px}
.fix{border:1px solid var(--line);border-radius:14px;padding:26px 28px;background:var(--bone)}
.fix p{font-size:15.5px;line-height:1.6;color:rgba(10,10,11,.78);margin:12px 0 0}
aside.note{font:400 13.5px/1.7 "IBM Plex Mono",ui-monospace,monospace;color:var(--mut);border:1px dashed var(--line);border-radius:8px;padding:16px 20px;margin:34px 0;max-width:60ch}
/* form */
.leadform{isolation:isolate;background:linear-gradient(115deg,#0858FF 0%,#0A48E0 55%,#0334B8 100%);border-radius:22px;position:relative;overflow:clip;color:#fff;padding:64px}
.leadform::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.14) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.14) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(120% 90% at 20% 0%,#000 30%,transparent 75%);mask-image:radial-gradient(120% 90% at 20% 0%,#000 30%,transparent 75%)}
.leadform .in{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:56px;align-items:start}
.leadform h2{color:#fff;max-width:14ch}
.leadform .sub{color:rgba(255,255,255,.82);font-size:16px;max-width:44ch}
.fields{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.field{display:flex;flex-direction:column;gap:8px}
.field--full{grid-column:1 / -1}
.field label{font:500 12px/1 "IBM Plex Mono",ui-monospace,monospace;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.85)}
.field label .req{color:var(--signal)}
.field input,.field textarea{font:400 15.5px/1.5 "IBM Plex Sans",system-ui,sans-serif;color:#fff;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.28);border-radius:8px;padding:13px 16px;min-height:48px}
.field textarea{min-height:120px;resize:vertical}
.field input::placeholder,.field textarea::placeholder{color:rgba(255,255,255,.45)}
.field input:focus-visible,.field textarea:focus-visible{outline:2px solid #fff;outline-offset:1px}
.formfoot{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:22px;margin-top:6px}
.formfoot .micro{font:400 12.5px/1.6 "IBM Plex Mono",ui-monospace,monospace;color:rgba(255,255,255,.75);max-width:38ch}
.formmsg{grid-column:1 / -1;font:400 13px/1.6 "IBM Plex Mono",ui-monospace,monospace;color:#fff;min-height:1em}
.dotp{position:absolute;width:5px;height:5px;border-radius:50%}
/* faq */
.faqgroup{margin-top:44px}
.faq details{border-top:1px solid var(--line)}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{display:flex;gap:18px;align-items:flex-start;padding:21px 2px;cursor:pointer;font:500 17px/1.45 "IBM Plex Sans",system-ui,sans-serif;list-style:none;transition:color .2s var(--ease)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::marker{content:""}
.faq summary .fn{font:500 12px/1.9 "IBM Plex Mono",ui-monospace,monospace;color:var(--blue);flex:none;letter-spacing:.06em;width:40px}
.faq summary .qt{flex:1;min-width:0}
.faq summary .pm{margin-left:18px;flex:none;width:22px;height:22px;position:relative;top:2px;border:1px solid var(--line);border-radius:50%;transition:transform .3s var(--ease),border-color .2s var(--ease),background .2s var(--ease)}
.faq summary .pm::before,.faq summary .pm::after{content:"";position:absolute;top:50%;left:50%;width:9px;height:1.5px;background:var(--ink);transform:translate(-50%,-50%);transition:opacity .25s var(--ease)}
.faq summary .pm::after{transform:translate(-50%,-50%) rotate(90deg)}
.faq summary:hover{color:var(--blue)}
.faq summary:hover .pm{border-color:var(--blue)}
.faq summary:hover .pm::before,.faq summary:hover .pm::after{background:var(--blue)}
.faq details[open] summary{color:var(--blue)}
.faq details[open] summary .pm{transform:rotate(180deg);border-color:var(--blue);background:var(--blue)}
.faq details[open] summary .pm::before{background:#fff}
.faq details[open] summary .pm::after{opacity:0}
.faq .answ{display:grid;grid-template-rows:0fr;transition:grid-template-rows .32s var(--ease)}
.faq details[open] .answ{grid-template-rows:1fr}
.faq .answ>div{overflow:hidden}
.faq .ans{margin:0;padding:0 2px 24px 58px;font-size:15.5px;line-height:1.65;color:var(--mut);max-width:72ch}
@media (prefers-reduced-motion: reduce){.faq .answ,.faq summary .pm{transition:none}}
/* sources */
.sources{background:var(--bone);border:1px solid var(--line);border-radius:14px;padding:30px 34px}
.sources h3{margin-bottom:16px}
.sources ol{list-style:none;margin:0;padding:0}
.sources li{display:flex;gap:14px;font:400 13px/1.7 "IBM Plex Mono",ui-monospace,monospace;color:var(--mut);padding:8px 0}
.sources li .sn{color:var(--blue);flex:none}
/* service cards */
.svc-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:8px}
a.svc{display:flex;flex-direction:column;gap:12px;background:var(--bone);border:1px solid var(--line);border-radius:14px;padding:28px;text-decoration:none;color:var(--ink);transition:background .22s var(--ease),border-color .22s var(--ease)}
a.svc:hover{background:#fff;border-color:var(--ink)}
a.svc .t{display:flex;justify-content:space-between;gap:14px;font-weight:500;font-size:17px;line-height:1.35}
a.svc .t .arr{color:var(--blue);transition:transform .22s var(--ease)}
a.svc:hover .t .arr{transform:translateX(4px)}
a.svc .d{font-size:14.5px;line-height:1.6;color:var(--mut)}
.proseline{margin-top:40px;font-size:16px;line-height:1.7;color:rgba(10,10,11,.78);max-width:75ch}
/* case cards */
.case-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:8px}
a.case{display:flex;flex-direction:column;gap:14px;background:var(--ink);border:1px solid var(--ink-3);border-radius:14px;padding:30px;color:var(--bone-t);text-decoration:none;transition:background .22s var(--ease)}
a.case:hover{background:var(--ink-2)}
a.case .k{font:400 11.5px/1 "IBM Plex Mono",ui-monospace,monospace;text-transform:uppercase;letter-spacing:.12em;color:var(--mut-d)}
a.case .t{font-weight:500;font-size:18px;line-height:1.35;color:#fff}
a.case .d{font-size:14.5px;line-height:1.6;color:var(--mut-d)}
a.case .arr{color:var(--blue);margin-top:auto;transition:transform .22s var(--ease)}
a.case:hover .arr{transform:translateX(4px)}
/* cite */
.citeblock{border-top:1px solid var(--line);padding:36px 0 80px}
.citeblock .lbl{font:500 12px/1 "IBM Plex Mono",ui-monospace,monospace;text-transform:uppercase;letter-spacing:.12em;color:var(--mut);margin-bottom:14px}
.citeblock p{font:400 13.5px/1.7 "IBM Plex Mono",ui-monospace,monospace;color:rgba(10,10,11,.75);margin:0;max-width:80ch}
/* sticky */
.sticky{position:fixed;left:50%;bottom:22px;transform:translate(-50%,14px);opacity:0;pointer-events:none;z-index:60;display:flex;align-items:center;gap:6px;background:var(--ink);color:#fff;border:1px solid var(--ink-3);border-radius:999px;padding:7px 7px 7px 20px;box-shadow:0 30px 60px -30px rgba(10,10,11,.5),0 2px 6px rgba(10,10,11,.12);transition:opacity .3s var(--ease),transform .3s var(--ease)}
.sticky.on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.sticky .sdot{width:6px;height:6px;border-radius:50%;background:var(--signal);margin-right:8px}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.sticky a{color:#fff;text-decoration:none;font:500 14.5px/1 "IBM Plex Sans",system-ui,sans-serif;display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px}
.sticky a:hover{background:var(--ink-2)}
.sticky button{appearance:none;background:transparent;border:0;color:var(--mut-d);font:400 16px/1 "IBM Plex Mono",ui-monospace,monospace;width:36px;height:36px;border-radius:50%;cursor:pointer}
.sticky button:hover{color:#fff;background:var(--ink-2)}
@media (prefers-reduced-motion: reduce){.sticky .sdot{animation:none}}
/* reveal system: applied only when JS confirms motion is allowed */
html.anim .rv{opacity:0;transform:translateY(10px)}
html.anim .go .rv,html.anim .rv.go{opacity:1;transform:none;transition:opacity .6s var(--ease) var(--d,0s),transform .6s var(--ease) var(--d,0s)}
/* diagram label type */
.dg text{font-family:"IBM Plex Mono",ui-monospace,monospace;letter-spacing:.06em}
/* full-bleed bands */
html,body{overflow-x:clip}
.figbleed{border-radius:0;border-left:0;border-right:0}
.p2band{aspect-ratio:21/9;min-height:360px}
@media (max-width:680px){.p2band{aspect-ratio:3/2;min-height:0}}
.dgbleed{border-top:1px solid var(--line);border-bottom:1px solid var(--line);border-left:0;border-right:0;border-radius:0;background:var(--bone);padding:clamp(24px,4vw,56px) 32px}
.dgin{max-width:1760px;margin:0 auto}
.capw{max-width:none}
.capw .wrap span{display:block;max-width:66ch}
/* hero 3d scene */
.hero-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);column-gap:48px;align-items:center}
.hero-txt{min-width:0}
/* prompt column */
.hero-prompt{min-width:0;display:flex;align-items:center}
.pcard{width:100%;border:1px solid var(--line-d);border-radius:12px;background:rgba(10,10,11,.55);padding:20px 20px 22px}
.pcard .phead{display:flex;align-items:center;gap:8px;font:400 11px/1 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.14em;color:var(--mut-d);text-transform:uppercase;padding-bottom:14px;border-bottom:1px solid var(--line-d)}
.pcard .phead i{width:6px;height:6px;border-radius:50%;background:var(--signal);font-style:normal}
.pline{margin:0;font:400 13px/1.8 "IBM Plex Mono",ui-monospace,monospace;color:rgba(244,239,230,.82);white-space:nowrap;overflow:hidden;width:0;animation:type 15s steps(44,end) var(--pd,0s) infinite both}
.pline:first-of-type{margin-top:14px}
.pcard{align-self:center}
.pline .kw{color:#6E9BFF}
.pcaret{display:inline-block;width:8px;height:15px;background:var(--blue);vertical-align:-2px;margin-top:6px;animation:blink 1.1s steps(1,end) infinite}
@keyframes type{0%{width:0}9%{width:100%}88%{width:100%}92%,100%{width:0}}
@keyframes blink{0%,50%{opacity:1}51%,100%{opacity:0}}
.hero-scene{position:relative;min-width:0;min-height:460px;pointer-events:none;overflow:hidden}
.hero-scene .lvl-stage{justify-content:flex-end}
.lvl-stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;perspective:1600px}
.lvl{position:relative;width:420px;height:400px;flex:none;transform-style:preserve-3d;transform:rotateX(57deg) rotateZ(-38deg) scale(var(--ls,.94))}
.orb{position:absolute;inset:0;transform-style:preserve-3d;animation:orbit 56s linear 2.8s infinite}
.lvl-floor{position:absolute;inset:-90px;transform:translateZ(-1px);background:radial-gradient(closest-side,rgba(6,85,255,.3),rgba(6,85,255,.1) 52%,transparent 74%),repeating-linear-gradient(0deg,rgba(244,239,230,.09) 0 1px,transparent 1px 40px),repeating-linear-gradient(90deg,rgba(244,239,230,.09) 0 1px,transparent 1px 40px)}
.elv{position:absolute;transform-style:preserve-3d}
.blk{position:absolute;transform-style:preserve-3d;animation:drop .7s cubic-bezier(.26,.9,.32,1.02) var(--dd,0s) both}
.blk .f{position:absolute;display:block;animation:facein .7s linear var(--dd,0s) both}
.ft{inset:0;background:var(--ct)}
.fn{left:0;top:0;width:100%;transform-origin:top;transform:rotateX(90deg);background:var(--cd)}
.fs{left:0;bottom:0;width:100%;transform-origin:bottom;transform:rotateX(-90deg);background:var(--cy)}
.fw{left:0;top:0;height:100%;transform-origin:left;transform:rotateY(-90deg);background:var(--cd)}
.fe{right:0;top:0;height:100%;transform-origin:right;transform:rotateY(90deg);background:var(--cx)}
.tG{--ct:#CBCED5;--cy:#A9ADB7;--cx:#8F939E;--cd:#787D88}
.tG2{--ct:#D6D9DF;--cy:#B4B8C1;--cx:#9AA0AA;--cd:#828792}
.tB{--ct:#2E68FF;--cy:#0655FF;--cx:#0334B8;--cd:#062A86}
.tL{--ct:#B5FF3C;--cy:#8FD32B;--cx:#6FA61F;--cd:#5C8A17}
@keyframes drop{0%{transform:translateZ(430px)}72%{transform:translateZ(0)}86%{transform:translateZ(12px)}100%{transform:translateZ(0)}}
@keyframes facein{0%{opacity:0}22%,100%{opacity:1}}
@keyframes orbit{from{transform:rotateZ(0deg)}to{transform:rotateZ(360deg)}}
@media (min-width:1280px){
  .hero .wrap{max-width:1560px}
  .hero-grid{grid-template-columns:minmax(220px,2.2fr) minmax(0,6.6fr) minmax(430px,4fr);column-gap:clamp(40px,3.4vw,72px)}
  .hero-prompt{order:1;justify-content:flex-start}
  .hero-txt{order:2}
  .hero-scene{order:3}
  .hero h1{max-width:18ch}
  .capsule{max-width:70ch}
  .stats{max-width:none}
}
@media (max-width:1279px){.hero-prompt{display:none}}
@media (max-width:1360px){.lvl{--ls:.84}}
@media (max-width:1240px){.lvl{--ls:.76}}
@media (max-width:1120px){.hero-grid{display:flex;flex-direction:column}.hero-scene .lvl-stage{justify-content:center}.hero-txt{order:1}.hero-prompt{order:2;display:flex;margin-top:40px;max-width:440px}.hero-scene{order:3;min-height:340px;margin-top:40px}.lvl{--ls:.74}}
@media (prefers-reduced-motion: reduce){.pline{animation:none;width:100%}.pcaret{animation:none}}
@media (prefers-reduced-motion: reduce){.blk,.blk .f,.orb{animation:none}}
/* s03 manual blockout */
.man{position:relative;border:1px solid var(--line);border-radius:14px;background:var(--bone);overflow:hidden;padding:clamp(18px,2.4vw,34px)}
.man svg{display:block;width:100%;height:auto}
.man .an{animation-duration:16s;animation-timing-function:linear;animation-iteration-count:infinite;animation-fill-mode:both;animation-play-state:paused;opacity:0}
.man.go .an{animation-play-state:running}
.man .m1{animation-name:mp1}.man .m2{animation-name:mp2}.man .m3{animation-name:mp3}
.man .m4{animation-name:mp4}.man .m5{animation-name:mp5}.man .m6{animation-name:mp6}
.man .mrev{animation-name:mrev}
.man .an{transform-box:fill-box;transform-origin:center}
@keyframes mp1{0%,6%{opacity:0;transform:translateY(-34px)}9.5%{opacity:1;transform:translateY(0)}11%{transform:translateY(-3px)}12.5%,76%{opacity:1;transform:translateY(0)}79%,100%{opacity:0;transform:translateY(0)}}
@keyframes mp2{0%,15%{opacity:0;transform:translateY(-34px)}18.5%{opacity:1;transform:translateY(0)}20%{transform:translateY(-3px)}21.5%,76%{opacity:1;transform:translateY(0)}79%,100%{opacity:0}}
@keyframes mp3{0%,24%{opacity:0;transform:translateY(-34px)}27.5%{opacity:1;transform:translateY(0)}29%{transform:translateY(-3px)}30.5%,76%{opacity:1;transform:translateY(0)}79%,100%{opacity:0}}
@keyframes mp4{0%,33%{opacity:0;transform:translateY(-34px)}36.5%{opacity:1;transform:translateY(0)}38%{transform:translateY(-3px)}39.5%,76%{opacity:1;transform:translateY(0)}79%,100%{opacity:0}}
@keyframes mp5{0%,42%{opacity:0;transform:translateY(-34px)}45.5%{opacity:1;transform:translateY(0)}47%{transform:translateY(-3px)}48.5%,76%{opacity:1;transform:translateY(0)}79%,100%{opacity:0}}
@keyframes mp6{0%,51%{opacity:0;transform:translateY(-34px)}54.5%{opacity:1;transform:translateY(0)}56%{transform:translateY(-3px)}57.5%,76%{opacity:1;transform:translateY(0)}79%,100%{opacity:0}}
@keyframes mrev{0%,77%{opacity:0}80%{opacity:1}94%{opacity:1}97%,100%{opacity:0}}
@media (prefers-reduced-motion: reduce){.man .an{animation:none;opacity:1}.man .mrev{opacity:0}}
/* s11 running pipeline */
.pipe{position:relative;background:var(--ink);border-top:1px solid var(--ink-3);border-bottom:1px solid var(--ink-3);overflow:hidden}
.pipe::before{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--line-d) 1px,transparent 1px),linear-gradient(90deg,var(--line-d) 1px,transparent 1px);background-size:64px 64px;opacity:.3;-webkit-mask-image:radial-gradient(120% 100% at 50% 0%,#000 20%,transparent 78%);mask-image:radial-gradient(120% 100% at 50% 0%,#000 20%,transparent 78%)}
.pipe-in{position:relative;max-width:1800px;margin:0 auto;padding:clamp(28px,3.4vw,56px) 32px}
.pipe svg{display:block;width:100%;height:auto}
.pipe .an{animation-duration:15s;animation-timing-function:linear;animation-iteration-count:infinite;animation-fill-mode:both;animation-delay:var(--d,0s);animation-play-state:paused}
.pipe.go .an{animation-play-state:running}
.pipe .fx{animation-name:pfade;opacity:0}
.pipe .pk{animation-name:pmove;opacity:0;offset-rotate:0deg}
.pipe .bd{animation-name:pdrop;opacity:0}
.pipe .pulse{animation-name:ppulse}
.pipe .tick{animation-name:ptick}
@keyframes pfade{0%{opacity:0;transform:translateY(5px)}3%{opacity:1;transform:none}93%{opacity:1;transform:none}96%,100%{opacity:0;transform:none}}
@keyframes pmove{0%{opacity:0;offset-distance:0%}2%{opacity:1}12%{opacity:1;offset-distance:100%}13%,100%{opacity:0;offset-distance:100%}}
@keyframes pdrop{0%{opacity:0;transform:translateY(-40px)}4%{opacity:1;transform:translateY(0)}6%{transform:translateY(-4px)}8%{transform:translateY(0)}93%{opacity:1;transform:none}97%,100%{opacity:0}}
@keyframes ppulse{0%,4%{opacity:.15;transform:scale(.9)}8%{opacity:.9;transform:scale(1.08)}14%{opacity:.15;transform:scale(.9)}100%{opacity:.15;transform:scale(.9)}}
@keyframes ptick{0%,49%{opacity:1}50%,100%{opacity:.25}}
.pipe .pulse,.pipe .bd{transform-box:fill-box;transform-origin:center}
@media (prefers-reduced-motion: reduce){.pipe .an{animation:none}.pipe .fx,.pipe .bd{opacity:1}.pipe .pk{opacity:0}}
/* 3d motion */
html.anim .stat.rv{transform:perspective(900px) rotateX(-55deg);transform-origin:50% 100%}
html.anim .go .stat.rv{opacity:1;transform:none}
html.anim .rv3d{opacity:0;transform:perspective(1300px) rotateX(9deg) translateY(26px);transform-origin:center top}
html.anim .go .rv3d,html.anim .rv3d.go{opacity:1;transform:none;transition:opacity .8s var(--ease),transform .8s var(--ease)}
@media (hover:hover){.svc-grid,.case-grid{perspective:1100px}a.svc,a.case{transition:background .22s var(--ease),border-color .22s var(--ease),transform .3s var(--ease)}a.svc:hover,a.case:hover{transform:translateY(-4px) rotateX(1.6deg)}}
/* responsive */
@media (max-width:980px){
  .split,.split--rev{grid-template-columns:1fr;gap:44px}
  .leadform{padding:44px 32px}
  .leadform .in{grid-template-columns:1fr;gap:36px}
  .fixgrid,.svc-grid,.case-grid{grid-template-columns:1fr 1fr}
  .index ol{columns:1}
}
@media (max-width:680px){
  .block{padding:64px 0}
  .wrap{padding:0 22px}
  .stats{grid-template-columns:1fr}
  .qa-grid,.fixgrid,.svc-grid,.case-grid,.fields{grid-template-columns:1fr}
  .hero-eyebrow{margin-top:64px}
  .faq .ans{padding-left:2px}
  .faq summary .fn{width:auto}
}


p.trust {
    background: none;
    padding: 0;
}
.form-row {
    display: grid;
    gap: 14px;
    margin-bottom: 14px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}.form-row.single { grid-template-columns: 1fr; }
.field { display: flex; flex-direction: column; gap: 6px; }
.field label { font-family: "IBM Plex Mono", monospace; font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase; color: #fff; }
.field input, .field select, .field textarea {
     width: 100%;
    background: rgba(255, 255, 255, .1);
    border: 1px solid rgba(255, 255, 255, .34);
    border-radius: 8px;
    padding: 14px 16px;
    font: inherit;
    font-size: 15.5px;
    color: #fff;
    min-height: 48px;
}

input::placeholder,
textarea::placeholder {
   color: #fff;
    opacity: .8;
}
.contact_form_case .btn-primary {
    background: #fff;
    color: var(--ink);
}
.field textarea { resize: vertical; min-height: 100px; }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--blue); }
.field select { appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23bababa' stroke-width='2'><polyline points='6 9 12 15 18 9'/></svg>"); background-repeat: no-repeat; background-position: right 14px center; padding-right: 36px; }
.req { color: var(--blue); }
.form-foot { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-top: 8px; flex-wrap: wrap; }
.form-fine { font-family: "IBM Plex Mono", monospace; font-size: 10.5px; color: var(--muted-dark); letter-spacing: 0.04em; }

.btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-height: 48px;
    padding: 13px 22px;
    border-radius: 999px;
    font-family: var(--sans);
    font-weight: 600;
    font-size: 15.5px;
    text-decoration: none;
    border: 1px solid transparent;
    cursor: pointer;
    transition: background .18s var(--ease), color .18s var(--ease), border-color .18s var(--ease);
}
.field p {
    margin: 0;
}