:root{
  --night:#0a101b;--night-2:#111a28;--night-3:#182536;--paper:#f6f1e7;--paper-2:#eee7da;--white:#fffdf8;
  --ink:#121a24;--muted:#586877;--line:#d5cdbf;--gold:#e5a23d;--gold-soft:#f5dba7;--aqua:#63cfc6;--aqua-soft:#cfeee9;
  --clay:#ca7158;--red:#b84142;--indigo:#6d76d7;--shadow:0 28px 70px rgba(20,29,39,.12);--shadow-sm:0 12px 32px rgba(20,29,39,.08);
  /* Type scale. Every heading maps to one of these five steps. Before this there
     were 42 independent font-size rules on headings, with h3 alone ranging from
     12px to 57.6px, so the same element level looked different on every page. */
  --fs-display-1:clamp(2.5rem,4.2vw,3.9rem);
  --fs-display-2:clamp(1.7rem,2.4vw,2.35rem);
  --fs-display-3:clamp(1.42rem,1.9vw,1.85rem);
  --fs-heading:1.32rem;
  --fs-subheading:1.12rem;
  --fs-label:.78rem;
  --map-ink:#f6f1e7;--on-dark-red:#ef5f5f;--on-dark-muted:#8fa0ae;--clay-text:#a74931;--indigo-text:#5259c4;--radius:22px;--radius-sm:14px;--container:min(1180px,calc(100vw - 40px));--display:Georgia,'Times New Roman',serif;--sans:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}
html[data-theme=dark]{--clay-text:#d98a72;--indigo-text:#8f97e6;--paper:#0a101b;--paper-2:#111a28;--white:#182536;--ink:#f6f1e7;--muted:#aab7c1;--line:#2d3d50;--shadow:0 30px 70px rgba(0,0,0,.3);--shadow-sm:0 12px 32px rgba(0,0,0,.22)}
@media (prefers-color-scheme:dark){html[data-theme=system]{--clay-text:#d98a72;--indigo-text:#8f97e6;--paper:#0a101b;--paper-2:#111a28;--white:#182536;--ink:#f6f1e7;--muted:#aab7c1;--line:#2d3d50;--shadow:0 30px 70px rgba(0,0,0,.3);--shadow-sm:0 12px 32px rgba(0,0,0,.22)}}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:124px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.65;text-rendering:optimizeLegibility;overflow-x:hidden}body.dialog-open{overflow:hidden}img,svg{max-width:100%;display:block}a{color:inherit;text-decoration-thickness:.08em;text-underline-offset:.2em}button,input,select,textarea{font:inherit;color:inherit}.container{width:var(--container);margin-inline:auto}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;z-index:999;left:16px;top:12px;transform:translateY(-160%);background:var(--gold);color:var(--night);padding:10px 16px;border-radius:8px;font-weight:800}.skip-link:focus{transform:none}*:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
.icon{width:1.25em;height:1.25em;flex:0 0 auto}.eyebrow,.kicker{margin:0 0 .8rem;color:var(--clay);font-size:.79rem;line-height:1.2;font-weight:850;text-transform:uppercase;letter-spacing:.15em}.kicker{color:var(--aqua)}h1,h2,h3{margin:0 0 .8em;line-height:1.08;letter-spacing:-.035em}h1,h2{font-family:var(--display);font-weight:500}h1{font-size:var(--fs-display-1)}h2{font-size:var(--fs-display-2)}h3{font-size:var(--fs-heading);letter-spacing:-.015em}p{margin:0 0 1rem;color:var(--muted)}.large-copy{font-size:clamp(1.15rem,2vw,1.55rem);line-height:1.55}.section{padding:clamp(54px,5.2vw,88px) 0;position:relative}.section-dark{background:var(--night);color:#f6f1e7}.section-dark p,.section-dark .split-heading>p{color:#aebbc5}.section-dark .eyebrow{color:var(--gold)}.section-muted{background:var(--paper-2)}.split-heading{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.7fr);gap:clamp(28px,3.4vw,54px);align-items:start;margin-bottom:clamp(24px,2.6vw,38px)}.split-heading h2{text-wrap:balance;margin-bottom:0}.split-heading>p{margin:0;padding-top:6px}.split-heading>p{font-size:1.05rem;max-width:46ch;justify-self:end}.section-action{margin-top:36px}
.button{display:inline-flex;align-items:center;justify-content:center;gap:.65rem;min-height:50px;padding:.8rem 1.2rem;border:1px solid var(--gold);border-radius:999px;background:var(--gold);color:var(--night);font-size:.9rem;font-weight:850;text-decoration:none;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.button:hover{transform:translateY(-2px);box-shadow:0 12px 25px rgba(229,162,61,.22)}.button-secondary{background:transparent;color:currentColor;border-color:var(--line)}.section-dark .button-secondary{border-color:#536070;color:#f6f1e7}.button-small{min-height:42px;padding:.6rem 1rem;font-size:.82rem}.button[disabled]{opacity:.58;cursor:not-allowed;transform:none}.button-text{border:0;background:none;padding:.6rem;color:var(--muted);font-weight:800;cursor:pointer}.arrow-link{display:inline-flex;align-items:center;gap:.55rem;font-weight:800;text-decoration:none}.arrow-link .icon{transition:transform .2s}.arrow-link:hover .icon{transform:translateX(4px)}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}
.site-header{position:sticky;top:0;z-index:100;background:color-mix(in srgb,var(--paper) 84%,transparent);backdrop-filter:blur(18px);border-bottom:1px solid transparent;transition:border-color .2s,box-shadow .2s}.site-header.scrolled{border-color:var(--line);box-shadow:0 5px 25px rgba(17,26,40,.06)}.header-inner{height:104px;display:flex;align-items:center;gap:30px}.brand{display:flex;align-items:center;gap:15px;text-decoration:none;min-width:max-content}.logo-mark{width:70px;height:70px;display:grid;place-items:center}.logo-mark svg{overflow:visible}.logo-horizon{stroke:currentColor;stroke-width:4;stroke-linecap:round}.logo-sun{fill:var(--gold)}.logo-n{stroke:var(--night);stroke-width:4;fill:none;stroke-linecap:round;stroke-linejoin:round}.logo-line{stroke:var(--aqua);stroke-width:2.5;stroke-linecap:round}.logo-word{display:flex;flex-direction:column;font-family:var(--display);font-size:2.05rem;line-height:.92}.logo-word span{font-family:var(--sans);font-size:.7rem;line-height:1.5;letter-spacing:.18em;text-transform:uppercase;font-weight:850;color:var(--muted)}.brand small{display:none}.desktop-nav{display:flex;align-items:center;gap:26px;margin-left:auto}.desktop-nav a{font-size:.99rem;font-weight:750;text-decoration:none;color:var(--muted);white-space:nowrap}.desktop-nav a:hover,.desktop-nav a[aria-current=page]{color:var(--ink)}.header-actions{display:flex;align-items:center;gap:9px}.icon-button{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:transparent;cursor:pointer}.menu-button{display:none}.theme-sun{display:none}html[data-theme=dark] .theme-sun{display:block}html[data-theme=dark] .theme-moon{display:none}@media (prefers-color-scheme:dark){html[data-theme=system] .theme-sun{display:block}html[data-theme=system] .theme-moon{display:none}}.mobile-menu,.search-dialog{border:0;padding:0;background:transparent;max-width:none;max-height:none}.mobile-menu::backdrop,.search-dialog::backdrop{background:rgba(3,8,15,.72);backdrop-filter:blur(9px)}.mobile-menu{width:min(480px,100vw);height:100dvh;margin:0 0 0 auto;background:var(--paper);color:var(--ink);padding:24px}.mobile-menu-head{display:flex;align-items:center;justify-content:space-between}.mobile-menu nav{display:flex;flex-direction:column;gap:5px;margin-top:50px}.mobile-menu nav>a:not(.button){font-family:var(--display);font-size:2rem;text-decoration:none;padding:12px 0;border-bottom:1px solid var(--line)}.mobile-menu .button{margin-top:22px}
.home-hero{position:relative;padding:clamp(60px,7vw,105px) 0 clamp(80px,9vw,130px);overflow:hidden}.home-hero:before{content:"";position:absolute;right:-10vw;top:-16vw;width:58vw;height:58vw;border-radius:50%;background:radial-gradient(circle,var(--gold-soft),transparent 67%);opacity:.42;pointer-events:none}.home-hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(420px,.82fr);gap:60px;align-items:center;position:relative}.hero-copy h1{max-width:17ch}.hero-lede{font-size:clamp(1.15rem,1.7vw,1.42rem);line-height:1.55;max-width:64ch}.hero-proof{display:flex;flex-wrap:wrap;gap:9px 22px;margin-top:28px;color:var(--muted);font-size:.82rem;font-weight:750}.hero-proof span{display:flex;align-items:center;gap:8px}.hero-proof span:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--aqua)}.visual-caption{font-size:.80rem;text-align:center;margin:14px 0 0}.systems-map{border:1px solid var(--line);border-radius:28px;background:var(--white);padding:16px;box-shadow:var(--shadow);position:relative}.systems-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.systems-tabs button{border:0;border-radius:11px;background:transparent;padding:10px 6px;color:var(--muted);font-size:.75rem;font-weight:800;cursor:pointer}.systems-tabs button[aria-selected=true]{background:var(--night);color:#f6f1e7}.systems-stage{min-height:395px;display:grid;grid-template-columns:1fr 50px 1.2fr 50px 1fr;gap:4px;align-items:center;padding:28px 8px}.source-cluster{display:grid;gap:9px}.source-cluster span,.decision-card,.nigat-core{border-radius:14px;border:1px solid var(--line);background:var(--paper);padding:13px 12px;font-size:.75rem}.source-cluster span{font-weight:750;box-shadow:var(--shadow-sm)}.flow-lines{height:220px;display:flex;flex-direction:column;justify-content:space-around}.flow-lines i,.flow-line-out{display:block;height:1px;background:linear-gradient(90deg,var(--line),var(--aqua));position:relative}.flow-lines i:after,.flow-line-out:after{content:"";position:absolute;right:-1px;top:-3px;border-left:6px solid var(--aqua);border-top:3px solid transparent;border-bottom:3px solid transparent}.nigat-core{display:flex;min-height:170px;flex-direction:column;justify-content:center;text-align:center;background:var(--night);color:#f6f1e7;border-color:transparent}.nigat-core span{color:var(--gold);font-size:.74rem;text-transform:uppercase;letter-spacing:.16em}.nigat-core strong{font-size:1.1rem;margin:.6rem 0}.nigat-core small{color:#aebbc5}.decision-card{min-height:160px;display:flex;flex-direction:column;justify-content:center}.decision-card span{color:var(--clay);font-weight:850;text-transform:uppercase;letter-spacing:.12em}.decision-card strong{font-size:.92rem;margin:.6rem 0}.decision-card small{color:var(--muted)}.systems-map.update .nigat-core,.systems-map.update .decision-card{animation:scaleIn .5s var(--ease-out)}@keyframes pulse-panel{from{transform:translateY(5px);opacity:.7}to{transform:none;opacity:1}}
.trust-strip{border-block:1px solid var(--line);background:var(--white)}.trust-grid{display:grid;grid-template-columns:repeat(4,1fr)}.trust-grid>div{display:flex;gap:13px;padding:25px 20px;border-right:1px solid var(--line)}.trust-grid>div:last-child{border-right:0}.trust-grid .icon{width:23px;color:var(--clay)}.trust-grid span{font-size:.81rem;color:var(--muted)}.trust-grid strong{display:block;color:var(--ink);font-size:.85rem;margin-bottom:2px}.section-dark .trust-grid strong{color:#f6f1e7}
.solution-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.solution-card{position:relative;display:flex;flex-direction:column;min-height:430px;padding:28px;border:1px solid var(--line);border-radius:var(--radius);background:var(--white);box-shadow:var(--shadow-sm);overflow:hidden}.solution-card:before,.product-card:before{content:"";position:absolute;inset:0 auto auto 0;width:100%;height:4px;background:var(--aqua)}[data-accent=gold]:before{background:var(--gold)}[data-accent=clay]:before{background:var(--clay)}[data-accent=indigo]:before{background:var(--indigo)}.solution-icon{width:47px;height:47px;display:grid;place-items:center;background:var(--paper-2);border-radius:13px;margin-bottom:35px;color:var(--clay)}.solution-card h3{font-size:var(--fs-heading)}.solution-card h3 a{text-decoration:none}.solution-card ul,.outcome-panel ul,.industry-grid ul{padding:0;margin:18px 0;list-style:none;display:grid;gap:9px}.solution-card li,.outcome-panel li,.industry-grid li{display:flex;gap:8px;color:var(--muted);font-size:.84rem}.solution-card li .icon,.outcome-panel li .icon,.industry-grid li .icon{color:var(--aqua);margin-top:.23em}.solution-card .arrow-link{margin-top:auto}.solution-card:nth-child(4),.solution-card:nth-child(5){grid-column:span 1}.section-dark .solution-card{background:var(--night-2);border-color:#2b3b4e}.section-dark .solution-card p,.section-dark .solution-card li{color:#aebbc5}
.problem-section{background:linear-gradient(135deg,var(--paper-2),var(--paper))}.problem-explorer{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(0,1.2fr);gap:28px}.problem-buttons{display:grid}.problem-buttons button{display:grid;grid-template-columns:48px 1fr;align-items:center;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;padding:18px 10px;color:var(--muted);cursor:pointer;font-weight:750}.problem-buttons button span{font-size:.75rem;color:var(--clay-text)}.problem-buttons button[aria-selected=true]{color:var(--ink);padding-left:22px;background:var(--white);border-radius:12px;border-color:transparent;box-shadow:var(--shadow-sm)}.problem-result{display:flex;flex-direction:column;justify-content:center;min-height:430px;padding:45px;background:var(--night);color:#f6f1e7;border-radius:28px;position:relative;overflow:hidden}.problem-result:after{content:"";position:absolute;width:240px;height:240px;border:1px solid rgba(99,207,198,.3);border-radius:50%;right:-80px;bottom:-100px}.problem-result h3{font-family:var(--display);font-size:var(--fs-display-3);font-weight:500;max-width:34ch}.problem-result p{color:#aebbc5;max-width:55ch}.problem-result.update{animation:pulse-panel .4s}.signal-line{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--aqua);margin:24px 0;font-size:.86rem}
.product-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}.product-grid-large .product-card{min-height:490px}.product-card{position:relative;padding:34px;border:1px solid #2b3b4e;border-radius:26px;background:var(--night-2);color:#f6f1e7;overflow:hidden}.product-card:after{content:"";position:absolute;width:260px;height:260px;border:1px solid rgba(255,255,255,.08);border-radius:50%;right:-120px;bottom:-130px}.product-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.status{display:inline-flex;align-items:center;gap:7px;border:1px solid #526176;border-radius:999px;padding:6px 10px;font-size:.76rem;line-height:1;font-weight:800;color:#cbd4dc;white-space:nowrap}.status i{width:7px;height:7px;border-radius:50%;background:var(--gold)}.status[data-status=validation] i{background:var(--aqua)}.product-card h3{font-family:var(--display);font-size:var(--fs-display-3);font-weight:500;margin-top:50px}.product-card h3 a{text-decoration:none}.product-headline{font-size:1.15rem!important;color:#f6f1e7!important;max-width:40ch}.product-card p{color:#aebbc5}.product-actions{display:flex;gap:24px;flex-wrap:wrap;margin-top:35px}.product-card .arrow-link{position:relative;z-index:1}.method-rail{border-top:1px solid var(--line)}.method-rail article{display:grid;grid-template-columns:80px 1fr;padding:30px 0;border-bottom:1px solid var(--line)}.method-rail article>span,.work-steps article>span,.role-grid article>span,.use-case-grid article>span{color:var(--clay-text);font-size:.75rem;font-weight:850;letter-spacing:.15em}.method-rail h3{margin-bottom:5px}.method-rail p{margin:0;max-width:70ch}.reveal{opacity:0;transform:translateY(18px);transition:opacity .55s ease,transform .55s ease}.reveal.visible{opacity:1;transform:none}
.diagnostic-section{background:var(--night);color:#f6f1e7}.diagnostic-shell{display:grid;grid-template-columns:.8fr 1.2fr;gap:60px;align-items:start}.diagnostic-copy{padding-top:25px}.diagnostic-copy h2{max-width:26ch}.diagnostic-copy p{color:#aebbc5}.diagnostic-copy ul{list-style:none;padding:0;display:grid;gap:9px;color:#aebbc5}.diagnostic-copy li{display:flex;align-items:center;gap:9px}.diagnostic-copy .icon{color:var(--aqua)}.diagnostic{background:var(--paper);color:var(--ink);border-radius:28px;padding:34px}.diagnostic-progress{display:grid;gap:8px;margin-bottom:30px;font-size:.77rem;font-weight:800;color:var(--muted)}progress{width:100%;height:5px;border:0;background:var(--line);accent-color:var(--aqua)}.diagnostic fieldset{border:0;padding:0;margin:0}.diagnostic legend{font-family:var(--display);font-size:2rem;line-height:1.2;margin-bottom:22px}.diagnostic label{display:flex;align-items:flex-start;gap:10px;padding:14px;border:1px solid var(--line);border-radius:12px;margin-bottom:9px;cursor:pointer;background:var(--white)}.diagnostic label:has(input:checked){border-color:var(--aqua);box-shadow:0 0 0 2px color-mix(in srgb,var(--aqua) 30%,transparent)}.diagnostic input[type=radio]{margin-top:.3em}.diagnostic fieldset.error{animation:shake .28s}@keyframes shake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}.diagnostic-controls{display:flex;justify-content:space-between;align-items:center;margin-top:24px}.diagnostic-result{padding:8px}.diagnostic-result h3{font-family:var(--display);font-size:var(--fs-display-3)}
.industry-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.industry-grid article{padding:25px;border-left:1px solid var(--line)}.industry-grid h3{font-size:var(--fs-heading)}.industry-grid h3 a{text-decoration:none}.industry-grid-large{grid-template-columns:repeat(2,1fr)}.industry-grid-large article{border:1px solid var(--line);border-radius:var(--radius);background:var(--white);box-shadow:var(--shadow-sm);padding:34px}.industry-grid-large h2{font-size:var(--fs-display-3)}.insight-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.insight-grid article{padding:25px;border-top:2px solid var(--gold)}.insight-grid h3,.insight-grid h2{font-family:var(--display);font-weight:500;font-size:var(--fs-heading)}.insight-grid a{text-decoration:none}.insight-grid-large article{border:1px solid var(--line);border-radius:var(--radius);padding:34px;background:var(--white)}.faq-list{max-width:900px}.faq-list details{border-bottom:1px solid var(--line)}.faq-list summary{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:21px 0;font-weight:850;cursor:pointer;list-style:none}.faq-list summary::-webkit-details-marker{display:none}.faq-list summary .icon{transition:transform .2s}.faq-list details[open] summary .icon{transform:rotate(90deg)}.faq-list details p{max-width:70ch;padding-bottom:18px}
.page-hero{padding:clamp(48px,4.6vw,78px) 0}.page-hero-compact{padding-bottom:60px}.page-hero-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.65fr);gap:70px;align-items:center}.page-hero h1{font-size:var(--fs-display-1);max-width:19ch}.page-hero aside{align-self:stretch}.hero-aside-card,.product-status-card{height:100%;min-height:270px;display:flex;flex-direction:column;justify-content:flex-end;padding:28px;border-radius:24px;background:var(--night);color:#f6f1e7;position:relative;overflow:hidden}.hero-aside-card:before,.product-status-card:before{content:"";position:absolute;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,var(--gold),transparent 66%);opacity:.3;top:-130px;right:-80px}.hero-aside-card span{color:var(--aqua);font-size:.78rem;text-transform:uppercase;letter-spacing:.15em}.hero-aside-card strong{font-family:var(--display);font-size:1.55rem;line-height:1.3;font-weight:500}.product-status-card{justify-content:space-between}.product-status-card p{color:#aebbc5}.breadcrumbs{padding-top:25px}.breadcrumbs ol{list-style:none;padding:0;margin:0;display:flex;gap:9px;align-items:center;color:var(--muted);font-size:.79rem}.breadcrumbs li+li:before{content:"/";margin-right:9px;color:var(--line)}.breadcrumbs a{text-decoration:none}.service-detail{display:grid;grid-template-columns:1.1fr .9fr;gap:60px}.outcome-panel{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:30px;box-shadow:var(--shadow-sm)}.use-case-grid,.role-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.use-case-grid article,.role-grid article{border:1px solid #2b3b4e;border-radius:16px;padding:24px;background:var(--night-2);min-height:180px}.use-case-grid h3,.role-grid h3{font-size:var(--fs-subheading);margin-top:30px}.role-grid{grid-template-columns:repeat(3,1fr)}.role-grid article{background:var(--white);border-color:var(--line);color:var(--ink)}.role-grid article p{font-size:.88rem}.process-list{list-style:none;padding:0;border-top:1px solid var(--line)}.process-list li{display:grid;grid-template-columns:80px 1fr;padding:25px 0;border-bottom:1px solid var(--line)}.process-list span{color:var(--clay);font-weight:850}.process-list p{margin:0;font-size:1.1rem}.boundaries,.two-column{display:grid;grid-template-columns:.8fr 1.2fr;gap:60px}.boundaries ul,.boundary-list{margin:0;padding:0;list-style:none;display:grid;gap:12px}.boundaries li,.boundary-list li{padding:13px 0;border-bottom:1px solid var(--line);color:var(--muted)}.comparison-table{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.comparison-table>div{display:grid;grid-template-columns:.8fr .8fr 1.4fr}.comparison-table span{padding:18px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.comparison-head{background:var(--night);color:#f6f1e7;font-weight:850}.shared-core{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:clamp(32px,4vw,64px);align-items:center}.shared-core-diagram{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}.shared-core-diagram span{padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--white);font-weight:800}.shared-core-diagram .icon{color:var(--clay)}
.journey-demo{display:grid;grid-template-columns:.7fr 1.3fr;gap:30px}.journey-steps{display:grid;align-content:start}.journey-steps button{display:grid;grid-template-columns:36px 1fr;align-items:center;gap:8px;text-align:left;background:transparent;border:0;border-bottom:1px solid #2b3b4e;color:#aebbc5;padding:15px;cursor:pointer;font-weight:750}.journey-steps button span{color:var(--gold)}.journey-steps button[aria-selected=true]{background:var(--night-3);color:#f6f1e7;border-radius:11px}.journey-screen{display:grid;justify-items:center}.journey-phone{width:min(390px,100%);min-height:560px;border:10px solid #263548;border-radius:45px;background:var(--paper);color:var(--ink);box-shadow:0 35px 75px rgba(0,0,0,.3);overflow:hidden}.phone-top{display:flex;justify-content:space-between;padding:22px;background:var(--night);color:#f6f1e7}.phone-top small{color:var(--gold)}.journey-scene{padding:38px 28px}.journey-scene>span{color:var(--clay);font-weight:850}.journey-scene h3{font-family:var(--display);font-size:var(--fs-display-3);margin-top:45px}.journey-art{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:60px}.journey-art i{display:block;height:75px;border-radius:14px;background:var(--aqua-soft)}.journey-art i:first-child{grid-column:1/-1;height:120px;background:linear-gradient(135deg,var(--gold-soft),var(--paper-2))}.journey-art i:last-child{background:color-mix(in srgb,var(--clay) 30%,var(--paper))}.demo-disclosure{font-size:.78rem;color:#aebbc5;margin-top:18px;text-align:center}
.rcd-demo{border:1px solid #2b3b4e;border-radius:24px;background:var(--night-2);overflow:hidden}.demo-toolbar{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid #2b3b4e}.demo-toolbar>div{display:flex;flex-direction:column}.demo-label{color:var(--aqua);font-size:.75rem;text-transform:uppercase;letter-spacing:.15em}.rcd-workspace{display:grid;grid-template-columns:.75fr 1.25fr 1fr;min-height:520px}.doc-list,.requirement-matrix{padding:22px}.doc-list{border-right:1px solid #2b3b4e}.requirement-matrix{border-left:1px solid #2b3b4e}.doc-list h3,.requirement-matrix h3{font-size:var(--fs-label);color:#aebbc5}.doc-item{width:100%;display:flex;gap:9px;text-align:left;background:transparent;border:1px solid transparent;border-radius:10px;color:#aebbc5;padding:11px;cursor:pointer}.doc-item.selected{background:var(--night-3);border-color:#3a4a5e;color:#f6f1e7}.doc-item>.icon,.doc-item>span:first-child{width:20px}.doc-item strong,.doc-item small{display:block}.doc-item strong{font-size:.80rem}.doc-item small{font-size:.76rem;margin-top:2px}.doc-item small[data-tone=complete]{color:var(--aqua)}.doc-item small[data-tone=warning]{color:var(--gold)}.doc-item small[data-tone=critical]{color:#ee8585}.evidence-view{display:flex;flex-direction:column;padding:22px}.document-page{flex:1;min-height:330px;border-radius:8px;background:#f9f5eb;padding:34px;position:relative}.document-lines{display:grid;gap:14px}.document-lines i{height:8px;border-radius:4px;background:#d3cbbd}.document-lines i:nth-child(2),.document-lines i:nth-child(5){width:74%}.document-page mark{position:absolute;left:32px;bottom:55px;background:#ffe099;color:#4a3211;padding:6px 8px;border-radius:5px;font-size:.75rem}.evidence-caption{padding-top:15px}.evidence-caption span{display:block;color:var(--aqua);font-size:.75rem;text-transform:uppercase;letter-spacing:.12em}.evidence-caption p{font-size:.81rem;color:#aebbc5}.matrix-list{display:grid;gap:8px}.finding{display:flex;width:100%;align-items:center;justify-content:space-between;text-align:left;border:1px solid #3a4a5e;border-radius:10px;background:var(--night-3);color:#f6f1e7;padding:12px;cursor:pointer}.finding span{display:flex;flex-direction:column;font-size:.78rem}.finding strong{color:var(--aqua);font-size:.74rem}.finding small{font-size:.75rem}.finding[data-tone=warning] small{color:var(--gold)}.finding[data-tone=critical] small{color:#ee8585}.finding[data-tone=complete] small{color:var(--aqua)}.empty-state{font-size:.81rem}.reviewer-boundary{display:flex;gap:12px;padding:18px 22px;border-top:1px solid #2b3b4e}.reviewer-boundary .icon{color:var(--gold);width:26px}.reviewer-boundary p{margin:0;font-size:.79rem;color:#aebbc5}.reviewer-boundary strong{color:#f6f1e7}
.demo-index{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}.demo-index article{position:relative;padding:36px;border:1px solid var(--line);border-radius:var(--radius);background:var(--white);box-shadow:var(--shadow-sm)}.demo-index article:before{content:"";position:absolute;inset:0 0 auto;height:4px;background:var(--aqua)}.demo-index article[data-accent=gold]:before{background:var(--gold)}.work-steps article{display:grid;grid-template-columns:90px 1fr;gap:20px;padding:45px 0;border-bottom:1px solid var(--line)}.work-steps article:first-child{border-top:1px solid var(--line)}.work-steps h2{font-size:var(--fs-display-3)}.artifact{display:grid;grid-template-columns:100px 1fr;gap:15px;border-left:3px solid var(--aqua);padding-left:18px;margin-top:25px}.artifact strong{font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;color:var(--clay)}.offer-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.offer-grid article{padding:28px;border:1px solid #2b3b4e;border-radius:16px;background:var(--night-2)}.offer-grid article>span{color:var(--aqua);font-weight:850}.offer-grid p{color:#aebbc5}.offer-grid strong{display:block;margin-top:25px;color:var(--gold);font-size:.86rem}.principles-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.principles-grid article{padding:25px;border-top:2px solid var(--gold)}.art-card{height:100%;min-height:320px;border-radius:24px;background:center/cover url('/assets/art/art-about-dark.jpg');display:flex;align-items:flex-end;padding:25px;overflow:hidden}.art-card span{background:rgba(10,16,27,.82);color:#f6f1e7;padding:12px;border-radius:10px;font-weight:750}.article-page{max-width:850px;padding:90px 0}.article-page h1{font-size:var(--fs-display-1)}.article-deck{font-size:1.35rem}.article-body{margin-top:60px}.article-body h2{font-size:var(--fs-display-3);margin-top:60px}.article-body p{font-size:1.05rem}.article-cta{margin-top:70px;padding:30px;border:1px solid var(--line);border-radius:var(--radius);background:var(--white)}
.contact-grid{display:grid;grid-template-columns:.7fr 1.3fr;gap:60px}.deliverable-list{list-style:none;padding:0;margin:35px 0}.deliverable-list li{display:grid;grid-template-columns:50px 1fr;padding:18px 0;border-bottom:1px solid var(--line)}.deliverable-list span{color:var(--clay);font-size:.75rem;font-weight:850}.contact-note{padding:20px;background:var(--paper-2);border-radius:14px}.contact-form{display:grid;gap:18px;padding:34px;border:1px solid var(--line);border-radius:var(--radius);background:var(--white);box-shadow:var(--shadow-sm)}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}.contact-form label{display:grid;gap:6px}.contact-form label>span{font-size:.81rem;font-weight:800}.contact-form input,.contact-form textarea,.contact-form select{width:100%;border:1px solid var(--line);border-radius:10px;background:var(--paper);padding:12px}.contact-form textarea{resize:vertical}.contact-form .checkbox{display:flex;align-items:flex-start;gap:10px}.contact-form .checkbox input{width:auto;margin-top:.35em}.honeypot{position:absolute!important;left:-9999px!important}.form-status{min-height:1.4em;font-size:.82rem}.form-status.success{color:#087c6a}.legal-page{max-width:880px}.legal-page h2{font-size:var(--fs-display-3);margin-top:55px}.not-found{min-height:75vh;display:grid;align-items:center}.not-found h1{max-width:18ch}.final-cta{padding:90px 0;background:linear-gradient(115deg,var(--clay),var(--gold));color:var(--night)}.final-cta .container{display:grid;grid-template-columns:1fr auto;gap:35px;align-items:center}.final-cta h2{font-size:var(--fs-display-2);max-width:36ch}.final-cta p{color:#332218;max-width:60ch}.final-cta .button{background:var(--night);border-color:var(--night);color:#f6f1e7}
.site-footer{background:var(--night);color:#f6f1e7;padding:70px 0 30px}.footer-grid{display:grid;grid-template-columns:1.5fr repeat(3,1fr);gap:45px}.site-footer h2{font-family:var(--sans);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:.14em;color:var(--gold)}.site-footer ul{list-style:none;padding:0;display:grid;gap:8px}.site-footer a{text-decoration:none;color:#c5d0d8;font-size:.83rem}.site-footer a:hover{color:#fff}.footer-brand .brand{color:#f6f1e7;margin-bottom:22px}.footer-brand p{color:#8999a6;font-size:.82rem}.footer-bottom{display:flex;justify-content:space-between;gap:20px;margin-top:50px;padding-top:25px;border-top:1px solid #2b3b4e}.footer-bottom p{margin:0;color:#84939f;font-size:.78rem}.footer-bottom nav{display:flex;gap:18px}.footer-bottom a{font-size:.78rem}
.search-dialog{width:100vw;height:100dvh;margin:0;border:0;background:rgba(10,16,27,.72);padding:8vh 20px}.search-panel{width:min(760px,100%);margin:auto;background:var(--paper);color:var(--ink);border-radius:24px;padding:30px;box-shadow:0 40px 100px rgba(0,0,0,.35)}.search-head{display:flex;justify-content:space-between;gap:20px}.search-head h2{font-size:var(--fs-display-3)}.search-input{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:14px;padding:13px;margin:20px 0}.search-input input{width:100%;border:0;background:transparent;outline:0}.search-results{display:grid;gap:7px;max-height:50vh;overflow:auto}.search-result{display:grid;padding:12px;border-radius:9px;text-decoration:none}.search-result:hover{background:var(--paper-2)}.search-result span{font-weight:850}.search-result small{color:var(--muted)}.search-hint{font-size:.82rem}.toast{position:fixed;z-index:999;right:20px;bottom:20px;max-width:390px;padding:13px 17px;border-radius:12px;background:var(--night);color:#fff;box-shadow:var(--shadow);opacity:0;transform:translateY(20px);pointer-events:none;transition:.25s}.toast.show{opacity:1;transform:none}
@media(max-width:1080px){.desktop-nav{display:none}.menu-button{display:grid}.header-actions .button-small{display:none}.home-hero-grid{grid-template-columns:1fr}.hero-copy h1{max-width:20ch}.hero-visual{max-width:750px}.solution-grid{grid-template-columns:repeat(2,1fr)}.trust-grid{grid-template-columns:repeat(2,1fr)}.trust-grid>div:nth-child(2){border-right:0}.trust-grid>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.industry-grid{grid-template-columns:repeat(2,1fr)}.use-case-grid{grid-template-columns:repeat(2,1fr)}.footer-grid{grid-template-columns:1.5fr repeat(2,1fr)}.footer-grid>div:last-child{grid-column:2}.rcd-workspace{grid-template-columns:.8fr 1.2fr}.requirement-matrix{grid-column:1/-1;border-left:0;border-top:1px solid #2b3b4e}.matrix-list{grid-template-columns:repeat(2,1fr)}}
@media(max-width:780px){:root{--container:min(100% - 28px,1180px)}h1{font-size:clamp(2rem,8.5vw,2.9rem)}h2{font-size:clamp(1.55rem,6vw,2rem)}.section{padding:75px 0}.split-heading,.page-hero-grid,.service-detail,.two-column,.boundaries,.shared-core,.contact-grid,.diagnostic-shell,.journey-demo{grid-template-columns:1fr;gap:30px}.split-heading>p{justify-self:start}.page-hero aside{min-height:250px}.systems-stage{grid-template-columns:1fr 20px 1.2fr;min-height:420px}.flow-line-out,.decision-card{grid-column:1/-1}.decision-card{min-height:100px}.systems-tabs{grid-template-columns:repeat(2,1fr)}.problem-explorer{grid-template-columns:1fr}.problem-result{min-height:350px;padding:30px}.solution-grid,.product-grid,.industry-grid,.insight-grid,.demo-index,.offer-grid,.principles-grid,.role-grid{grid-template-columns:1fr}.solution-card{min-height:auto}.trust-grid{grid-template-columns:1fr}.trust-grid>div{border-right:0;border-bottom:1px solid var(--line)}.use-case-grid{grid-template-columns:1fr}.rcd-workspace{grid-template-columns:1fr}.doc-list,.requirement-matrix{border:0;border-bottom:1px solid #2b3b4e}.matrix-list{grid-template-columns:1fr}.journey-phone{min-height:500px}.footer-grid{grid-template-columns:1fr 1fr}.footer-brand{grid-column:1/-1}.footer-grid>div:last-child{grid-column:auto}.footer-bottom{flex-direction:column}.final-cta .container{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.comparison-table>div{grid-template-columns:1fr}.comparison-table span{border-right:0}.comparison-head span:not(:first-child){display:none}.work-steps article{grid-template-columns:45px 1fr}.work-steps h2{font-size:var(--fs-display-3)}.artifact{grid-template-columns:1fr}.industry-grid-large{grid-template-columns:1fr}}
@media(max-width:480px){.header-inner{height:80px}.logo-word{font-size:1.4rem}.logo-mark{width:56px;height:56px}.header-actions{gap:5px}.icon-button{width:38px;height:38px}.home-hero{padding-top:45px}.hero-actions{flex-direction:column}.hero-actions .button{width:100%}.systems-map{padding:10px}.systems-stage{padding:20px 0}.source-cluster span{padding:10px 7px}.nigat-core{min-height:145px;padding:8px}.product-card{padding:26px}.diagnostic{padding:24px}.diagnostic legend{font-size:1.65rem}.journey-steps button{grid-template-columns:28px 1fr}.rcd-demo{margin-inline:-6px}.demo-toolbar{align-items:flex-start;gap:12px;flex-direction:column}.footer-grid{grid-template-columns:1fr}.footer-grid>div:last-child{grid-column:auto}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.reveal{opacity:1;transform:none}}
@media(forced-colors:active){.button,.status,.solution-card,.product-card,.outcome-panel,.contact-form{border:1px solid CanvasText}.status i{forced-color-adjust:none}.section-dark{border-block:1px solid CanvasText}}
@media print{.site-header,.site-footer,.hero-actions,.search-dialog,.toast,.diagnostic-section,.final-cta{display:none!important}.section,.page-hero{padding:30px 0}.section-dark{background:#fff;color:#000}.product-card,.solution-card{break-inside:avoid;box-shadow:none}.container{width:100%}}

/* ============================================================
   MOTION LAYER — added 2026-08-19
   Principles: animate transform/opacity only; no inline styles
   (CSP style-src 'self'); every effect off under reduced motion.
   ============================================================ */
:root{
  --ease-out:cubic-bezier(.22,1,.36,1);
  --ease-spring:cubic-bezier(.34,1.4,.64,1);
  --dur-fast:.18s;--dur:.34s;--dur-slow:.62s;--dur-amb:22s;
}

/* ---- 1. Hero entrance choreography ---------------------------- */
@keyframes riseIn{from{opacity:0;transform:translate3d(0,26px,0)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes scaleIn{from{opacity:0;transform:translate3d(0,32px,0) scale(.985)}to{opacity:1;transform:none}}
.js .home-hero .eyebrow,
.js .home-hero h1,
.js .home-hero .hero-lede,
.js .home-hero .hero-actions,
.js .home-hero .hero-proof{opacity:0;animation:riseIn .8s var(--ease-out) forwards}
.js .home-hero .eyebrow{animation-delay:.05s}
.js .home-hero h1{animation-delay:.14s}
.js .home-hero .hero-lede{animation-delay:.26s}
.js .home-hero .hero-actions{animation-delay:.38s}
.js .home-hero .hero-proof{animation-delay:.5s}
.js .home-hero .hero-visual{opacity:0;animation:scaleIn 1s var(--ease-out) .3s forwards}

/* ---- 2. Ambient aurora behind the hero ------------------------ */
@keyframes drift{
  0%{transform:translate3d(-6%,-4%,0) scale(1)}
  50%{transform:translate3d(6%,4%,0) scale(1.12)}
  100%{transform:translate3d(-6%,-4%,0) scale(1)}
}
.home-hero{position:relative;isolation:isolate}
.home-hero::before{
  content:"";position:absolute;inset:-20% -10% auto -10%;height:120%;z-index:-1;
  background:
    radial-gradient(38% 44% at 22% 30%,color-mix(in oklab,var(--gold) 26%,transparent),transparent 70%),
    radial-gradient(34% 40% at 78% 62%,color-mix(in oklab,var(--aqua) 22%,transparent),transparent 72%);
  filter:blur(46px);opacity:.5;pointer-events:none;
  animation:drift var(--dur-amb) ease-in-out infinite;
}

/* ---- 3. Scroll reveal: stagger + settle ----------------------- */
.reveal{opacity:0;transform:translate3d(0,24px,0);
  transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}
.reveal.visible{opacity:1;transform:none}
.reveal:nth-child(2){transition-delay:.07s}
.reveal:nth-child(3){transition-delay:.14s}
.reveal:nth-child(4){transition-delay:.21s}
.reveal:nth-child(5){transition-delay:.28s}
.reveal:nth-child(6){transition-delay:.35s}
.reveal:nth-child(7){transition-delay:.42s}
.reveal:nth-child(8){transition-delay:.49s}

/* section headings rise as they enter */
.split-heading{opacity:0;transform:translate3d(0,18px,0);
  transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}
.split-heading.visible{opacity:1;transform:none}

/* ---- 4. Card hover choreography ------------------------------- */
.solution-card,.product-card,.method-rail article,.industry-grid article,
.insight-grid article,.role-grid article{
  transition:transform var(--dur) var(--ease-out),
             box-shadow var(--dur) var(--ease-out),
             border-color var(--dur) var(--ease-out);
  will-change:transform}
.solution-card:hover,.product-card:hover,.method-rail article:hover,
.industry-grid article:hover,.insight-grid article:hover,.role-grid article:hover{
  transform:translate3d(0,-6px,0);
  border-color:color-mix(in oklab,var(--gold) 55%,var(--line));
  box-shadow:0 22px 48px rgba(20,29,39,.16)}
.solution-card:hover .icon,.product-card:hover .icon{transform:translateX(4px)}
.solution-card .icon,.product-card .icon{transition:transform var(--dur) var(--ease-out)}

/* ---- 5. Navigation underline sweep ---------------------------- */
.desktop-nav a{position:relative}
.desktop-nav a::after{
  content:"";position:absolute;left:0;right:0;bottom:-4px;height:2px;
  background:var(--gold);border-radius:2px;
  transform:scaleX(0);transform-origin:right;
  transition:transform var(--dur) var(--ease-out)}
.desktop-nav a:hover::after,.desktop-nav a:focus-visible::after,
.desktop-nav a[aria-current]::after{transform:scaleX(1);transform-origin:left}

/* ---- 6. Button sheen ------------------------------------------ */
.button{position:relative;overflow:hidden;
  transition:transform var(--dur) var(--ease-spring),box-shadow var(--dur) var(--ease-out)}
.button::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(105deg,transparent 38%,rgba(255,255,255,.42) 50%,transparent 62%);
  transform:translateX(-120%);transition:transform .62s var(--ease-out)}
.button:hover::before{transform:translateX(120%)}
.button:hover{transform:translate3d(0,-2px,0)}
.button:active{transform:translate3d(0,0,0) scale(.985)}

/* ---- 7. Systems map: living data flow ------------------------- */
@keyframes flowSweep{
  0%{background-position:-50% 0;opacity:0}
  10%{opacity:1}
  90%{opacity:1}
  100%{background-position:150% 0;opacity:0}}
@keyframes corePulse{
  0%,100%{box-shadow:0 0 0 0 color-mix(in oklab,var(--gold) 34%,transparent)}
  55%{box-shadow:0 0 0 10px transparent}}
/* pulse rides on ::before so the existing ::after arrowheads survive */
.systems-stage .flow-lines i::before,.systems-stage .flow-line-out::before{
  content:"";position:absolute;left:0;right:0;top:-1px;height:3px;border-radius:3px;pointer-events:none;
  background:linear-gradient(90deg,transparent 0%,var(--gold) 50%,transparent 100%);
  background-size:50% 100%;background-repeat:no-repeat;
  filter:blur(.4px);
  animation:flowSweep 2.8s linear infinite}
.systems-stage .flow-lines i:nth-child(2)::before{animation-delay:.4s}
.systems-stage .flow-lines i:nth-child(3)::before{animation-delay:.8s}
.systems-stage .flow-lines i:nth-child(4)::before{animation-delay:1.2s}
.systems-stage .flow-line-out::before{animation-delay:1.7s;
  background:linear-gradient(90deg,transparent 0%,var(--aqua) 50%,transparent 100%);
  background-size:50% 100%;background-repeat:no-repeat}
.systems-stage .nigat-core{animation:corePulse 3.4s ease-in-out infinite}
.systems-stage .source-cluster span{
  transition:transform var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}
.systems-stage .source-cluster span:hover{transform:translateX(3px);
  border-color:color-mix(in oklab,var(--gold) 60%,var(--line))}
.systems-tabs button{transition:color var(--dur-fast),background var(--dur-fast),transform var(--dur-fast) var(--ease-out)}
.systems-tabs button:hover{transform:translateY(-1px)}

/* ---- 8. Misc polish ------------------------------------------- */
.site-header{transition:border-color var(--dur),box-shadow var(--dur),backdrop-filter var(--dur)}
.site-header.scrolled{box-shadow:0 8px 30px rgba(20,29,39,.10)}
.faq-list details summary{transition:color var(--dur-fast)}
.trust-strip span{transition:transform var(--dur) var(--ease-out)}
.trust-strip span:hover{transform:translateY(-2px)}
.arrow-link:hover .icon{transform:translateX(6px)}
a,button{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:4px}

/* ---- 9. Reduced motion: switch everything off ----------------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
  .js .home-hero .eyebrow,.js .home-hero h1,.js .home-hero .hero-lede,
  .js .home-hero .hero-actions,.js .home-hero .hero-proof,
  .js .home-hero .hero-visual{opacity:1;animation:none}
  .home-hero::before{animation:none}
  .reveal,.split-heading{opacity:1;transform:none}
  .systems-stage .flow-lines i::before,.systems-stage .flow-line-out::before{display:none}
  .systems-stage .nigat-core{animation:none}
}

/* ============================================================
   SIGNATURE VISUALS — logo sunrise, ambient data field,
   neural model canvas. Added 2026-08-19.
   ============================================================ */

/* ---- Logo: larger, and it rises like a dawn ------------------- */
.logo-mark{width:74px;height:74px}
.logo-word{font-size:1.85rem}
.logo-word span{font-size:.66rem}
.footer-brand .logo-mark{width:62px;height:62px}
.footer-brand .logo-word{font-size:1.7rem}

@keyframes rayEnter{
  from{opacity:0;transform:scale(.4) rotate(-6deg)}
  to  {opacity:1;transform:none}}

@keyframes sunRise{from{opacity:0;transform:translateY(9px) scale(.72)}to{opacity:1;transform:none}}
@keyframes shieldDraw{to{stroke-dashoffset:0}}


.logo-shield{fill:none;stroke:currentColor;stroke-width:2.1;stroke-linejoin:round;opacity:.5}
.logo-ray{fill:var(--gold);transform-box:view-box;transform-origin:32px 40px}
.logo-horizon{stroke:currentColor;stroke-width:2.6;stroke-linecap:round;fill:none}
.logo-sun{fill:var(--gold);transform-box:view-box;transform-origin:32px 40px}
.logo-n{stroke:var(--night);stroke-width:2.6;fill:none;stroke-linecap:round;stroke-linejoin:round}
.logo-line{stroke:var(--aqua);stroke-width:2;stroke-linecap:round;fill:none;
  transform-box:view-box;transform-origin:32px 47px}

/* one entrance, then static. An always-moving mark in a sticky header
   competes with the content on every page. */
.js .brand .logo-shield{stroke-dasharray:150;stroke-dashoffset:150;
  animation:shieldDraw .9s var(--ease-out) .05s forwards}
.js .brand .logo-sun{opacity:0;animation:sunRise .7s var(--ease-spring) .34s forwards}
.js .brand .logo-ray{opacity:0;animation:rayEnter .5s var(--ease-spring) both}
.js .brand .r1{animation-delay:.52s}.js .brand .r2{animation-delay:.58s}
.js .brand .r3{animation-delay:.64s}.js .brand .r4{animation-delay:.70s}
.js .brand .r5{animation-delay:.76s}.js .brand .r6{animation-delay:.82s}

/* hover is a single transition, not a loop. It rides on the <g> wrapper
   because the rays themselves stay under animation fill after entrance,
   which would otherwise block a transition on the same properties. */
.logo-rays{transform-box:view-box;transform-origin:32px 40px;
  transition:transform var(--dur) var(--ease-spring)}
.brand:hover .logo-rays,.brand:focus-visible .logo-rays{transform:scale(1.1)}
.logo-line{transition:transform var(--dur) var(--ease-out)}
.brand:hover .logo-line,.brand:focus-visible .logo-line{transform:scaleX(1.05)}
.brand .logo-mark svg{transition:transform var(--dur) var(--ease-spring)}
.brand:hover .logo-mark svg{transform:translateY(-2px) scale(1.06)}

.brand .logo-word{transition:letter-spacing var(--dur) var(--ease-out)}
.brand:hover .logo-word{letter-spacing:.005em}

/* ---- Ambient data field behind the hero ----------------------- */
.hero-field{position:absolute;inset:0;width:100%;height:100%;
  z-index:-1;pointer-events:none;opacity:.85}
.home-hero::before{z-index:-2}
.home-hero > .container{position:relative;z-index:1}

/* ---- Reduced motion ------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  .js .brand .logo-shield{stroke-dashoffset:0;animation:none}
  .js .brand .logo-sun,.js .brand .logo-ray{opacity:1;transform:none;animation:none}
  .js .brand .logo-line{animation:none;transform:none}
  .logo-rays,.logo-line{transition:none}
  .hero-field{display:none}
}

/* ============================================================
   HERO SPACING + ART CARD FRAMING FIX — 2026-08-19
   1) .8em on a clamp(3rem,6vw,6rem) h1 produced a 66px gap at
      desktop. Clamp the display-heading margin instead.
   2) .art-card stretched to the left column's height, cropping a
      2000x1000 (2:1) image into a ~1:1.9 portrait sliver.
   ============================================================ */
.page-hero h1,.home-hero h1{margin-bottom:clamp(18px,.36em,40px)}
.page-hero .eyebrow,.home-hero .eyebrow{margin-bottom:clamp(10px,.9em,18px)}

.page-hero aside{align-self:center}
.art-card{height:auto;aspect-ratio:4/3;min-height:0;max-height:520px;position:relative}
@media (max-width:900px){
  .art-card{aspect-ratio:16/9;max-height:340px}
}

/* pan the backdrop, not the card - scaling the card would scale its caption too */
@keyframes artPan{0%,100%{background-position:center 42%}50%{background-position:center 58%}}
.art-card{background-size:cover;background-position:center 42%;
  animation:artPan 26s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.art-card{animation:none;background-position:center}}

/* ---- Art card variants -----------------------------------------
   Was: one hardcoded image on .art-card, used by About only, with
   five unused images shipping in every build. Now each variant
   carries its own art and .art-dawn follows the active theme.      */
.art-card{aspect-ratio:3/2}
.art-about{background-image:url('/assets/art/art-about-dark.jpg')}
.art-aqua {background-image:url('/assets/art/art-aqua-dark.jpg')}
.art-clay {background-image:url('/assets/art/art-clay-dark.jpg')}
.art-gold {background-image:url('/assets/art/art-gold-dark.jpg')}
.art-dawn {background-image:url('/assets/art/art-dawn-dark.jpg')}
html[data-theme=light] .art-dawn{background-image:url('/assets/art/art-dawn-light.jpg')}
@media (prefers-color-scheme:light){
  html[data-theme=system] .art-dawn{background-image:url('/assets/art/art-dawn-light.jpg')}
}
@media (max-width:900px){.art-card{aspect-ratio:16/9;max-height:340px}}

/* ---- Wordmark descriptor -------------------------------------
   Was --muted, a cool grey at hue 209deg - almost the exact
   opposite of the gold at 36deg, which is why it read as a
   default rather than a choice. These sit on the gold's hue axis,
   desaturated, and both clear 4.5:1 on their own ground.
   Light also improves on the old grey: 5.27 vs 5.09.            */
:root{--wordmark:#6f6250}
@media (prefers-color-scheme:dark){html[data-theme=system]{--wordmark:#bdae95}}
html[data-theme=dark]{--wordmark:#bdae95}
.logo-word span{color:var(--wordmark)}
/* the footer sits on --night in every theme, so it takes the dark value */
.footer-brand .logo-word span{color:#bdae95}
@media (min-width:860px){}

/* ---- Work / proof artifacts ------------------------------------ */
.proof-legend{display:flex;flex-wrap:wrap;gap:10px 26px;margin-bottom:26px;
  font-size:.82rem;color:var(--muted)}
.proof-legend span{display:inline-flex;align-items:center;gap:9px}
.proof-legend i{width:9px;height:9px;border-radius:50%;display:inline-block;flex:0 0 9px}
.proof-legend .k-artifact{background:var(--gold)}
.proof-legend .k-synth{background:var(--aqua)}
.proof-legend .k-none{background:var(--line)}
.proof-grid{display:grid;gap:18px;grid-template-columns:1fr}
@media (min-width:680px){.proof-grid{grid-template-columns:1fr 1fr}}
@media (min-width:1040px){.proof-grid{grid-template-columns:repeat(3,1fr)}}
.proof-card{border:1px solid var(--line);border-radius:18px;background:var(--white);
  padding:24px;display:flex;flex-direction:column;gap:10px;
  transition:transform var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out),
             box-shadow var(--dur) var(--ease-out)}
.proof-card:hover{transform:translate3d(0,-5px,0);
  border-color:color-mix(in oklab,var(--gold) 50%,var(--line));
  box-shadow:0 20px 44px rgba(20,29,39,.14)}
.proof-card h3{font-size:var(--fs-subheading);margin:0}
.proof-card p{margin:0;font-size:.92rem;color:var(--body,var(--muted))}
.proof-kind{display:inline-block;font-size:.76rem;letter-spacing:.1em;text-transform:uppercase;
  font-weight:700;padding:5px 10px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}
.proof-aqua .proof-kind{border-color:color-mix(in oklab,var(--aqua) 55%,var(--line));color:var(--aqua)}
.proof-gold .proof-kind{border-color:color-mix(in oklab,var(--gold) 55%,var(--line))}
.proof-indigo .proof-kind{border-color:color-mix(in oklab,var(--indigo) 50%,var(--line))}
.proof-clay .proof-kind{border-color:color-mix(in oklab,var(--clay) 50%,var(--line))}

/* ---- "Available on request" list -------------------------------
   Not .deliverable-list: that one is a 50px marker column for a
   numbered sequence (01/02/03). This is an unordered set, so it
   takes a plain marker and no implied order.                      */
.request-block{border:1px solid var(--line);border-radius:20px;
  background:var(--white);padding:26px;box-shadow:var(--shadow-sm)}
.request-block h3{font-size:var(--fs-label);letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted);margin:0}
.request-list{list-style:none;padding:0;margin:18px 0 0}
.request-list li{position:relative;padding:14px 0 14px 22px;
  border-bottom:1px solid var(--line);font-size:.94rem;line-height:1.55}
.request-list li::before{content:"";position:absolute;left:0;top:1.35em;
  width:7px;height:7px;border-radius:50%;background:var(--gold)}
.request-list li:last-child{border-bottom:0;padding-bottom:0}

/* ---- Journey demo: model / control disclosure -------------------
   The company sells Data and AI, so the product demo has to show the
   decision architecture, not just the marketplace steps.            */
.journey-detail{display:grid;gap:14px;margin-top:22px}
@media (min-width:760px){.journey-detail{grid-template-columns:1fr 1fr}}
.jd-row{border:1px solid var(--line);border-radius:16px;padding:18px 20px;
  background:var(--white);border-left-width:3px}
.jd-ai{border-left-color:var(--indigo)}
.jd-control{border-left-color:var(--aqua)}
.jd-label{display:block;font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;
  font-weight:750;color:var(--muted);margin-bottom:7px}
.jd-ai .jd-label{color:var(--indigo-text)}
.jd-control .jd-label{color:var(--aqua)}
.jd-row p{margin:0;font-size:.92rem;line-height:1.55}


/* ============================================================
   INDUSTRY INTELLIGENCE DEMOS — 2026-08-20
   Static-first shells with client-side public/synthetic data.
   ============================================================ */
.demo-showcase-section{overflow:hidden}.demo-preview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.demo-preview-card{position:relative;padding:30px;border:1px solid var(--line);border-radius:22px;background:var(--white);box-shadow:var(--shadow-sm);overflow:hidden}.section-dark .demo-preview-card{background:var(--night-2);border-color:#2b3b4e}.demo-preview-card:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--gold)}.demo-preview-card[data-accent=aqua]:before{background:var(--aqua)}.demo-preview-card[data-accent=indigo]:before{background:var(--indigo)}.demo-preview-card[data-accent=clay]:before{background:var(--clay)}.demo-preview-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-bottom:24px;color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;font-weight:800}.section-dark .demo-preview-top{color:#aebbc5}.demo-preview-card h3{font-family:var(--display);font-weight:500;font-size:var(--fs-display-3)}.demo-preview-card .product-headline{font-weight:800;color:var(--ink)}.section-dark .demo-preview-card .product-headline{color:#f6f1e7}.technique-tags,.driver-chips{display:flex;flex-wrap:wrap;gap:7px;margin:22px 0}.technique-tags span,.driver-chips span{border:1px solid var(--line);border-radius:999px;padding:5px 9px;font-size:.76rem;font-weight:750;color:var(--muted)}.section-dark .technique-tags span{border-color:#3b4b5e;color:#b8c5cf}.industry-demo-callout{margin:22px 0;padding:18px;border-left:3px solid var(--gold);background:color-mix(in srgb,var(--paper-2) 72%,transparent);border-radius:0 12px 12px 0}.industry-demo-callout span{display:block;font-size:.76rem;text-transform:uppercase;letter-spacing:.12em;font-weight:850;color:var(--clay)}.industry-demo-callout strong{display:block;margin:.35rem 0}.industry-demo-callout p{font-size:.84rem;margin:0}.card-actions{display:flex;flex-wrap:wrap;gap:18px;margin-top:22px}

.intelligence-demo{--demo-surface:var(--white);--demo-elevated:var(--paper);--demo-border:var(--line);position:relative;border:1px solid var(--demo-border);border-radius:28px;background:var(--demo-surface);color:var(--ink);box-shadow:var(--shadow);overflow:hidden}.section-dark .intelligence-demo{--demo-surface:var(--night-2);--demo-elevated:var(--night);--demo-border:#304154;color:#f6f1e7}.intelligence-demo.demo-error:after{content:"Demo data could not be loaded.";display:block;padding:20px;background:color-mix(in srgb,var(--red) 12%,var(--demo-surface));color:var(--red);font-weight:800}.demo-source-bar{display:flex;align-items:center;justify-content:space-between;gap:22px;padding:17px 22px;border-bottom:1px solid var(--demo-border);background:var(--demo-elevated)}.demo-source-bar>div{display:flex;align-items:center;gap:12px;min-width:0}.demo-source-bar strong{font-size:.80rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.demo-source-bar a{display:inline-flex;align-items:center;gap:7px;font-size:.75rem;font-weight:800;text-decoration:none;white-space:nowrap}.demo-label{display:inline-flex;align-items:center;border:1px solid currentColor;border-radius:999px;padding:4px 8px;color:var(--clay-text);font-size:.74rem;line-height:1.2;text-transform:uppercase;letter-spacing:.09em;font-weight:900;white-space:nowrap}.section-dark .demo-label{color:var(--gold)}.demo-controls{display:flex;align-items:end;gap:14px;flex-wrap:wrap;padding:20px 22px;border-bottom:1px solid var(--demo-border)}.demo-controls label{display:grid;gap:6px;min-width:170px}.demo-controls label>span{font-size:.76rem;text-transform:uppercase;letter-spacing:.1em;font-weight:850;color:var(--muted)}.section-dark .demo-controls label>span{color:#aebbc5}.demo-controls select,.demo-controls input:not([type=range]){min-height:42px;border:1px solid var(--demo-border);border-radius:10px;background:var(--demo-elevated);padding:7px 10px}.range-control{flex:1;min-width:220px}.range-control.grow{flex:2}.range-control output{color:var(--gold);font-weight:900;margin-left:4px}.range-control input{accent-color:var(--gold);width:100%}.segmented-control{display:flex;border:1px solid var(--demo-border);border-radius:12px;padding:4px;background:var(--demo-elevated)}.segmented-control button{border:0;border-radius:8px;padding:8px 12px;background:transparent;color:var(--muted);font-size:.78rem;font-weight:800;cursor:pointer}.segmented-control button.active{background:var(--night);color:#f6f1e7}.section-dark .segmented-control button.active{background:var(--gold);color:var(--night)}
.demo-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--demo-border)}.demo-kpi-grid article{padding:20px 22px;border-right:1px solid var(--demo-border)}.demo-kpi-grid article:last-child{border-right:0}.demo-kpi-grid span{display:block;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.09em;font-weight:850}.section-dark .demo-kpi-grid span{color:#9fb0bd}.demo-kpi-grid strong{display:block;margin:4px 0;font-family:var(--display);font-size:clamp(1.7rem,3vw,2.5rem);font-weight:500;line-height:1.1;text-transform:capitalize}.demo-kpi-grid small{display:block;color:var(--muted);font-size:.76rem}.section-dark .demo-kpi-grid small{color:#8fa0ad}
.demo-workspace{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.65fr);min-height:520px}.demo-workspace-wide{grid-template-columns:minmax(0,1.55fr) minmax(300px,.65fr)}.demo-panel{padding:22px;background:var(--demo-surface);border:1px solid var(--demo-border);border-radius:18px}.intelligence-demo>.demo-workspace .demo-panel{border-radius:0;border:0}.intelligence-demo>.demo-workspace .demo-panel+ .demo-panel{border-left:1px solid var(--demo-border)}.demo-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}.demo-panel-head h3{margin-bottom:0}.demo-visual-panel{min-width:0}.demo-side-panel{background:var(--demo-elevated)!important}.demo-caption{font-size:.78rem;margin:12px 0 0}.demo-map,.demo-network{width:100%;min-height:390px;border:1px solid var(--demo-border);border-radius:16px;background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--aqua) 7%,transparent),transparent 65%),var(--demo-elevated);overflow:visible}.demo-legend{display:flex;flex-wrap:wrap;gap:10px;font-size:.75rem;color:var(--muted)}.demo-legend span{display:inline-flex;align-items:center;gap:5px}.demo-legend i{width:8px;height:8px;border-radius:50%;background:var(--aqua)}.demo-legend i[data-tone=critical]{background:var(--red)}.demo-legend i[data-tone=warning]{background:var(--gold)}.demo-legend i[data-tone=complete]{background:var(--aqua)}.map-request{stroke:var(--demo-surface);stroke-width:.22;cursor:pointer;transition:r .18s,opacity .18s}.map-request:hover,.map-request:focus{r:2;opacity:1}.tone-critical{fill:var(--red)}.tone-warning{fill:var(--gold)}.tone-complete{fill:var(--aqua)}.map-assignment{fill:none;stroke:var(--gold);stroke-width:.65;stroke-dasharray:2 1}.map-label,.network-label{font-size:2.6px;fill:currentColor;font-weight:800;paint-order:stroke;stroke:var(--demo-elevated);stroke-width:.6px}.scenario-result{margin:14px 0 24px;padding:16px;border:1px solid var(--demo-border);border-radius:14px;background:var(--demo-surface)}.scenario-result span{display:block;color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;font-weight:850}.scenario-result strong{display:block;font-family:var(--display);font-size:2.2rem;line-height:1.15}.scenario-result small{display:block;color:var(--muted)}.demo-ranked-list{display:grid;gap:8px;max-height:300px;overflow:auto}.demo-ranked-list button,.demo-ranked-list>div{display:flex;justify-content:space-between;gap:12px;width:100%;padding:11px;border:1px solid var(--demo-border);border-radius:11px;background:var(--demo-surface);color:inherit;text-align:left;cursor:pointer}.demo-ranked-list button:hover,.demo-ranked-list button.selected{border-color:var(--gold);transform:translateX(2px)}.demo-ranked-list strong{display:block}.demo-ranked-list span{font-size:.78rem}.demo-ranked-list small{font-size:.75rem;color:var(--muted);text-align:right}.empty-state{font-size:.8rem;margin:0;padding:18px;border:1px dashed var(--demo-border);border-radius:12px}.demo-table-wrap{overflow:auto;border-top:1px solid var(--demo-border);padding:0 22px 22px}.demo-table{width:100%;border-collapse:collapse;font-size:.79rem}.demo-table caption{text-align:left;padding:17px 0 10px;font-weight:850;color:var(--muted)}.demo-table th,.demo-table td{text-align:left;padding:10px;border-bottom:1px solid var(--demo-border);vertical-align:top}.demo-table th{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.demo-table td small{display:block;color:var(--muted);font-size:.74rem}.table-score{display:inline-flex;min-width:42px;justify-content:center;border-radius:999px;padding:3px 7px;background:var(--paper-2);font-weight:850}.section-dark .table-score{background:var(--night-3)}.table-score[data-tone=critical]{color:var(--red)}.table-score[data-tone=warning]{color:var(--gold)}.table-score[data-tone=complete]{color:var(--aqua)}
.network-flow{stroke:var(--indigo);stroke-width:.35}.network-move{stroke:var(--gold);stroke-linecap:round;stroke-dasharray:2 1;animation:dashMove 1.4s linear infinite}.network-node-dot{stroke:var(--demo-surface);stroke-width:.7}.network-node-dot.deficit{fill:var(--red)}.network-node-dot.surplus{fill:var(--aqua)}.network-node-dot.balanced{fill:var(--muted)}@keyframes dashMove{to{stroke-dashoffset:-6}}.finding-facts{display:grid;gap:0;margin:18px 0 0}.finding-facts>div{display:grid;grid-template-columns:120px 1fr;gap:12px;padding:11px 0;border-bottom:1px solid var(--demo-border)}.finding-facts dt{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:850}.finding-facts dd{margin:0;font-size:.81rem}.risk-pill{display:inline-flex;align-items:center;min-height:28px;border:1px solid var(--demo-border);border-radius:999px;padding:4px 8px;font-size:.75rem;font-weight:850;text-transform:capitalize}.risk-pill[data-tone=critical]{color:var(--red);border-color:var(--red)}.risk-pill[data-tone=warning]{color:var(--gold);border-color:var(--gold)}.risk-pill[data-tone=complete]{color:var(--aqua);border-color:var(--aqua)}.demo-timeline{list-style:none;padding:0;margin:12px 0;display:grid;gap:7px}.demo-timeline li{position:relative;padding:9px 10px 9px 25px;border-left:1px solid var(--demo-border);font-size:.78rem}.demo-timeline li:before{content:"";position:absolute;left:-4px;top:15px;width:7px;height:7px;border-radius:50%;background:var(--aqua)}.demo-timeline li[data-tone=warning]:before{background:var(--gold)}.demo-timeline span,.demo-timeline strong{display:block}.demo-timeline span{color:var(--muted);font-size:.74rem}.reviewer-boundary{display:flex;gap:12px;align-items:flex-start;padding:17px 22px;border-top:1px solid var(--demo-border);background:var(--demo-elevated)}.reviewer-boundary .icon{color:var(--aqua);margin-top:2px}.reviewer-boundary p{margin:0;font-size:.78rem}
.manufacturing-demo-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.65fr);gap:0}.manufacturing-demo-grid>.demo-panel{border-radius:0;border-width:0 1px 1px 0}.manufacturing-demo-grid>.demo-panel:nth-child(2n){border-right:0}.demo-chart{width:100%;min-height:260px;background:var(--demo-elevated);border:1px solid var(--demo-border);border-radius:14px}.chart-grid{stroke:var(--demo-border);stroke-width:1}.chart-axis{fill:var(--muted);font-size:10px}.chart-band{fill:color-mix(in srgb,var(--aqua) 18%,transparent)}.chart-line{fill:none;stroke-width:3}.chart-line.actual{stroke:var(--muted)}.chart-line.predicted{stroke:var(--gold)}.chart-line.sensor-0{stroke:var(--gold)}.chart-line.sensor-1{stroke:var(--aqua)}.chart-line.sensor-2{stroke:var(--indigo)}.chart-line.sensor-3{stroke:var(--clay)}.chart-line.sensor-4{stroke:var(--muted)}.chart-cursor{stroke:var(--red);stroke-width:1.3;stroke-dasharray:4 3}.chart-cursor-label{fill:var(--red);font-size:10px;font-weight:850}.cost-comparison{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}.cost-comparison div{padding:14px;border:1px solid var(--demo-border);border-radius:12px;background:var(--demo-elevated)}.cost-comparison span{display:block;font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.cost-comparison strong{display:block;font-size:1.4rem}.model-scorecard dl{display:grid;grid-template-columns:1fr 1fr;margin:0}.model-scorecard dl>div{padding:12px;border:1px solid var(--demo-border);margin:-1px 0 0 -1px}.model-scorecard dt{font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.model-scorecard dd{margin:4px 0 0;font-size:1.25rem;font-weight:850}
.demo-explainer{display:grid;grid-template-columns:1.2fr .8fr .8fr;gap:36px;padding:38px;border:1px solid var(--line);border-radius:24px;background:var(--white);box-shadow:var(--shadow-sm)}.demo-explainer ul{list-style:none;padding:0;margin:0;display:grid;gap:9px}.demo-explainer .icon{color:var(--aqua);margin-top:3px}
@media(max-width:1050px){.demo-kpi-grid{grid-template-columns:repeat(2,1fr)}.demo-kpi-grid article:nth-child(2){border-right:0}.demo-kpi-grid article:nth-child(-n+2){border-bottom:1px solid var(--demo-border)}.demo-explainer{grid-template-columns:1fr 1fr}.demo-explainer>div:first-child{grid-column:1/-1}}
@media(max-width:800px){.demo-preview-grid{grid-template-columns:1fr}.demo-source-bar{align-items:flex-start;flex-direction:column}.demo-source-bar strong{white-space:normal}.demo-controls{align-items:stretch}.demo-controls label,.range-control{width:100%;min-width:0}.demo-controls .button{width:100%}.demo-workspace,.demo-workspace-wide,.manufacturing-demo-grid{grid-template-columns:1fr}.intelligence-demo>.demo-workspace .demo-panel+ .demo-panel{border-left:0;border-top:1px solid var(--demo-border)}.demo-map,.demo-network{min-height:310px}.manufacturing-demo-grid>.demo-panel{border-right:0}.demo-explainer{grid-template-columns:1fr;padding:26px}.demo-explainer>div:first-child{grid-column:auto}.finding-facts>div{grid-template-columns:1fr}.cost-comparison{grid-template-columns:1fr}}
@media(max-width:520px){.intelligence-demo{margin-inline:-10px;border-radius:20px}.demo-kpi-grid{grid-template-columns:1fr}.demo-kpi-grid article{border-right:0;border-bottom:1px solid var(--demo-border)!important}.demo-controls,.demo-panel,.demo-table-wrap{padding-inline:16px}.demo-source-bar{padding-inline:16px}.segmented-control{width:100%;display:grid;grid-template-columns:1fr 1fr}.segmented-control button{padding:8px 6px}.demo-map,.demo-network{min-height:260px}.demo-preview-card{padding:24px}}
@media(prefers-reduced-motion:reduce){.network-move{animation:none}}
@media(forced-colors:active){.intelligence-demo,.demo-panel,.demo-table th,.demo-table td,.demo-preview-card{border-color:CanvasText}.map-request,.network-node-dot{forced-color-adjust:none}}
.demo-attribution{margin:10px 0 0;font-size:.75rem;line-height:1.5;color:var(--muted)}

/* ---- RCD evidence graph -----------------------------------------
   Documents flow into the configured checks, findings flow out.
   Labelled "configured checks", not an AI core: the product's own
   boundary is versioned deterministic rules, with the consequential
   decision left to a credentialed reviewer.                        */
.rcd-graph{position:relative;display:grid;gap:20px;
  grid-template-columns:1fr;align-items:start;margin:18px 0}
@media (min-width:900px){.rcd-graph{grid-template-columns:minmax(0,1fr) minmax(0,.9fr) minmax(0,1fr)}}
.rcd-wires{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;overflow:visible}
.rcd-graph>.graph-col{position:relative;z-index:2}
.graph-col h3{font-size:var(--fs-label);letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);margin:0 0 10px}
.graph-core{display:flex;flex-direction:column;justify-content:center;gap:12px;min-height:100%}
.rcd-core{border:1px solid var(--line);border-radius:16px;padding:16px 18px;text-align:center;
  background:var(--white);transition:border-color var(--dur),box-shadow var(--dur),transform var(--dur)}
.rcd-core.is-active{border-color:var(--gold);transform:translateY(-2px);
  box-shadow:0 0 0 6px color-mix(in oklab,var(--gold) 12%,transparent)}
.core-kicker{display:block;font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;
  font-weight:750;color:var(--gold)}
.rcd-core strong{display:block;font-family:var(--display);font-size:1.05rem;margin-top:3px}
.rcd-core small{display:block;font-size:.78rem;color:var(--muted);margin-top:5px;line-height:1.45}
.rcd-trace{margin:0;font-size:.77rem;line-height:1.5;color:var(--muted);text-align:center}
.rcd-wire{fill:none;stroke-width:1.6;stroke-dasharray:5 6;opacity:.85}
.wire-in{stroke:var(--aqua)}
.wire-out{stroke:var(--gold)}
@media (prefers-reduced-motion:no-preference){
  .rcd-wire{animation:wireFlow .9s linear infinite}
  @keyframes wireFlow{to{stroke-dashoffset:-22}}
}
.req-card{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:9px;
  background:var(--white);opacity:.45;transition:opacity var(--dur),border-color var(--dur),transform var(--dur)}
.req-card.is-live{opacity:1;transform:translateX(2px)}
.req-card.is-live[data-req-index]{border-color:color-mix(in oklab,var(--aqua) 45%,var(--line))}
.req-code{display:inline-block;font-family:var(--mono,ui-monospace,monospace);font-size:.75rem;
  font-weight:750;letter-spacing:.06em}
.req-card strong{display:block;font-size:.86rem;margin-top:3px}
.req-card small{display:block;font-size:.75rem;margin-top:2px}
.rcd-evidence{display:grid;gap:18px;grid-template-columns:1fr;margin-top:6px}
@media (min-width:760px){.rcd-evidence{grid-template-columns:1.1fr 1fr}}
.demo-boundary{margin:16px 0 0;font-size:.79rem;line-height:1.55;color:var(--muted)}
.graph-node{border:1px solid var(--line);border-radius:12px;padding:10px 13px;margin-bottom:8px;
  background:var(--white);font-size:.84rem}
.graph-node strong{display:block;font-weight:650}
.graph-node small{display:block;font-size:.75rem;margin-top:2px}
.health-graph{margin-top:20px}

/* ---- Evidence graph: balance the three columns -------------------
   Was top-aligned with 6 nodes on the left against 4 on the right, so
   the wire fan was lopsided and the trace text sat on top of the
   curves. Centre every column on the core's axis and lift the trace
   out of the grid entirely.                                        */
@media (min-width:900px){
  .rcd-graph{grid-template-columns:1fr minmax(230px,.8fr) 1fr;align-items:center;
    column-gap:28px}
}
.graph-core{min-height:0;justify-content:center}
.rcd-core{width:100%}
.rcd-graph .graph-in,.rcd-graph .graph-out{display:flex;flex-direction:column;justify-content:center}
.rcd-graph .graph-col h3{text-align:center}
.rcd-trace{margin:4px auto 18px;max-width:62ch;text-align:center;
  font-size:.79rem;color:var(--muted);line-height:1.55}
/* keep the evidence halves the same height and top-aligned */
.rcd-evidence{align-items:start}
.rcd-evidence .document-page{max-height:300px;overflow:hidden}
.rcd-evidence .evidence-meta{display:flex;flex-direction:column;gap:8px}

/* ---- Evidence graph: tighten the span, balance the evidence row ---
   At 1280px the columns measured 401/321/401 with a 455px-tall graph,
   so the hub was narrower than its own inputs and the wires ran ~400px
   of shallow curve. And the evidence row put a 330px document mock
   beside 133px of text, leaving ~200px of dead space.               */
@media (min-width:900px){
  .rcd-graph{max-width:900px;margin-inline:auto;column-gap:20px;
    grid-template-columns:minmax(0,1fr) minmax(240px,.86fr) minmax(0,1fr)}
}
/* compact nodes: these are short labels, not cards */
.rcd-graph .doc-item,.rcd-graph .graph-node{padding:8px 11px;margin-bottom:6px;border-radius:10px}
.rcd-graph .doc-item strong,.rcd-graph .graph-node strong{font-size:.82rem;line-height:1.25}
.rcd-graph .doc-item small,.rcd-graph .graph-node small{font-size:.76rem}
.rcd-graph .req-card{padding:9px 12px;margin-bottom:6px;border-radius:10px}
.rcd-graph .req-card strong{font-size:.82rem;line-height:1.25}
.rcd-graph .req-card small{font-size:.76rem}
.rcd-core{padding:14px 16px}
.rcd-core small{font-size:.75rem}

/* evidence row: give the text the wider half and cap the page mock */
@media (min-width:760px){
  .rcd-evidence{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:24px;align-items:stretch}
}
.rcd-evidence .document-page{max-height:210px;min-height:210px}
.rcd-evidence .evidence-meta{justify-content:center}
.rcd-evidence .evidence-meta p{margin:0;font-size:.92rem;line-height:1.6}
.task-tag{display:inline-block;min-width:44px;font-size:.72rem;letter-spacing:.1em;
  text-transform:uppercase;font-weight:750;color:var(--gold);padding-top:2px}
.rcd-graph .doc-item{display:flex;gap:9px;align-items:flex-start;text-align:left;width:100%}

/* ---- Graph type sizes: undo the over-compaction -------------------
   Tightening the layout dropped node labels to .82rem and captions to
   .66rem, which is ~10.6px - too small to read comfortably. Restored
   to readable sizes and the graph widened to carry them.           */
@media (min-width:900px){
  .rcd-graph{max-width:1000px;column-gap:24px}
}
.rcd-graph .doc-item strong,.rcd-graph .graph-node strong,
.rcd-graph .req-card strong{font-size:.95rem;line-height:1.3}
.rcd-graph .doc-item small,.rcd-graph .graph-node small,
.rcd-graph .req-card small{font-size:.8rem;line-height:1.4}
.rcd-graph .doc-item,.rcd-graph .graph-node,
.rcd-graph .req-card{padding:11px 14px;margin-bottom:8px}
.rcd-core{padding:18px 20px}
.rcd-core .core-kicker{font-size:.76rem}
.rcd-core strong{font-size:1.2rem}
.rcd-core small{font-size:.8rem;line-height:1.5}
.task-tag{font-size:.75rem;min-width:48px}
.rcd-graph .graph-col h3{font-size:var(--fs-label)}
.rcd-trace{font-size:.85rem}

/* ---- Task contents panel (replaces the decorative page mock) ----- */
.task-contents{border:1px solid var(--line);border-radius:16px;padding:20px;background:var(--white)}
.task-contents ul{list-style:none;padding:0;margin:12px 0 0}
.task-contents li{position:relative;padding:7px 0 7px 20px;font-size:.88rem;line-height:1.45;
  border-bottom:1px solid var(--line)}
.task-contents li:last-child{border-bottom:0}
.task-contents li::before{content:"";position:absolute;left:0;top:1.05em;width:6px;height:6px;
  border-radius:50%;background:var(--aqua)}
.task-note{margin:14px 0 0;font-size:.8rem;line-height:1.55;color:var(--muted);
  border-top:1px solid var(--line);padding-top:12px}
.rcd-demo .segmented-control{margin:0 12px}
.demo-provenance{margin:10px 0 0;font-size:.77rem;line-height:1.6;color:var(--muted);
  border-top:1px solid var(--line);padding-top:12px}
.demo-provenance em{font-style:normal;font-weight:700;color:var(--ink)}
.rcd-graph .req-card{width:100%;text-align:left;background:var(--white);cursor:pointer;
  border:1px solid var(--line);font:inherit;color:inherit}
.rcd-graph .req-card:hover{border-color:color-mix(in oklab,var(--gold) 45%,var(--line))}
.rcd-graph .req-card.selected{border-color:var(--gold);
  box-shadow:0 0 0 3px color-mix(in oklab,var(--gold) 14%,transparent)}

/* ---- Task list: consistent rows, no odd filled card -------------
   The selected task was rendering as a filled panel while its
   siblings were plain rows, so one item looked like a different
   component. Selection is now a left accent on the same row.      */
.rcd-graph .doc-item{background:transparent;border:1px solid transparent;
  border-left:2px solid transparent;border-radius:8px;transition:border-color var(--dur),background var(--dur)}
.rcd-graph .doc-item:hover{border-left-color:color-mix(in oklab,var(--gold) 45%,transparent)}
.rcd-graph .doc-item.selected{background:transparent;border-left-color:var(--gold)}
.rcd-graph .doc-item.selected strong{color:var(--gold)}

/* ---- Footnotes: readable measure, centred ----------------------- */
.demo-boundary,.demo-provenance{max-width:74ch;margin-inline:auto;text-align:left}
.demo-boundary{margin-top:22px;font-size:.8rem;line-height:1.65}
.demo-provenance{margin-top:14px;padding-top:14px;font-size:.79rem;line-height:1.7}
@media (min-width:900px){
  .demo-boundary,.demo-provenance{padding-inline:8px}
}

/* ---- Reason code status ------------------------------------------
   Status is blank until the review runs, then: green for supported,
   a slow amber pulse for needs review, a slow red pulse for
   unsupported. Pulsing stops under reduced motion.                  */
.rcd-graph .req-card{opacity:.45;transition:opacity var(--dur) var(--ease-out),
  border-color var(--dur) var(--ease-out),transform var(--dur) var(--ease-out)}
.rcd-graph .req-card.is-live{opacity:1}
.rcd-graph .req-card.judged[data-state="complete"]{
  border-color:color-mix(in oklab,var(--aqua) 60%,var(--line))}
.rcd-graph .req-card.judged[data-state="complete"] .req-code{color:var(--aqua)}

@keyframes statusWarn{
  0%,100%{box-shadow:0 0 0 0 color-mix(in oklab,var(--gold) 42%,transparent)}
  50%    {box-shadow:0 0 0 7px transparent}}
@keyframes statusFail{
  0%,100%{box-shadow:0 0 0 0 color-mix(in oklab,var(--red) 48%,transparent)}
  50%    {box-shadow:0 0 0 7px transparent}}

.rcd-graph .req-card.judged[data-state="warning"]{border-color:var(--gold);
  animation:statusWarn 2.6s ease-in-out infinite}
.rcd-graph .req-card.judged[data-state="critical"]{border-color:var(--red);
  animation:statusFail 2.2s ease-in-out infinite}
.rcd-graph .req-card.judged[data-state="critical"] .req-code{color:var(--red)}

/* wires only travel while the review is running */
.rcd-wire{animation:none}
.rcd-graph.is-running .rcd-wire{animation:wireFlow .9s linear infinite}

@media (prefers-reduced-motion:reduce){
  .rcd-graph .req-card.judged[data-state="warning"],
  .rcd-graph .req-card.judged[data-state="critical"]{animation:none}
  .rcd-graph.is-running .rcd-wire{animation:none}
}

/* ---- Graph wiring: readable at 12 outputs -------------------------
   With the late period's twelve codes the right column runs far taller
   than the seven tasks, so a centre-to-centre fan was both steep and
   hidden behind the opaque cards. Wires now meet the facing edge, sit
   under the cards deliberately, and read as connective tissue.      */
.rcd-wires{z-index:0}
.rcd-graph>.graph-col{z-index:1}
.rcd-wire{stroke-width:1.3;opacity:.55}
.rcd-graph.is-running .rcd-wire{opacity:.9}
.rcd-dot{opacity:.85}
.rcd-dot.wire-in{fill:var(--aqua)}
.rcd-dot.wire-out{fill:var(--gold)}

/* compact the code cards so twelve of them do not tower over seven tasks */
.rcd-graph .req-card{padding:8px 12px;margin-bottom:5px;border-radius:9px}
.rcd-graph .req-card strong{font-size:.88rem;line-height:1.25}
.rcd-graph .req-card small{font-size:.77rem}
.rcd-graph .req-code{font-size:.74rem;letter-spacing:.08em}
/* give the columns a little breathing room from the wires */
@media (min-width:900px){
  .rcd-graph{column-gap:34px;max-width:1040px}
}
/* two-line code card: code and status share the first line */
.rcd-graph .req-card{padding:7px 12px;margin-bottom:5px}
.req-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.req-head small{font-size:.78rem;white-space:nowrap}
.rcd-graph .req-card strong{display:block;font-size:.86rem;line-height:1.3;margin-top:1px}

/* ---- Simulated packet states ------------------------------------- */
.codes-idle{margin:0;padding:22px 16px;border:1px dashed var(--line);border-radius:12px;
  font-size:.86rem;color:var(--muted);text-align:center}
.request-list li[data-doc-state],.task-contents li[data-doc-state]{display:flex;
  justify-content:space-between;gap:14px;align-items:baseline}
.task-contents li span[data-tone]{font-size:.75rem;white-space:nowrap;font-weight:650}
.task-contents li[data-doc-state="missing"]{opacity:.72}
.rcd-graph .doc-item[data-state="critical"]{border-left-color:var(--red)}
.rcd-graph .doc-item[data-state="warning"]{border-left-color:var(--gold)}
.rcd-graph .doc-item[data-state="complete"]{border-left-color:var(--aqua)}
.period-wrap{display:flex;flex-direction:column;align-items:center;gap:6px}
.period-note{font-size:.78rem;color:var(--muted);max-width:34ch;text-align:center;line-height:1.45}
/* attract mode reads as a demonstration, not a control the visitor missed */
.rcd-demo.is-attract [data-rcd-run]{opacity:.6}
.rcd-demo.is-attract .segmented-control button.active{
  box-shadow:0 0 0 3px color-mix(in oklab,var(--gold) 18%,transparent)}

/* ---- Source annotation --------------------------------------------
   Clicking a reason code opens the document, page and field it was
   checked against, with the checked line called out. Page-level
   citation is the product's actual claim, so the demo shows it.     */
.doc-annot{margin-top:14px;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.annot-head{display:flex;justify-content:space-between;gap:12px;padding:9px 12px;
  background:var(--paper-2,var(--paper));font-size:.79rem;font-weight:650}
.annot-head span:last-child{color:var(--muted);font-weight:500;white-space:nowrap}
.annot-page{padding:14px 12px;display:flex;flex-direction:column;gap:7px;background:var(--white)}
.annot-page>i{display:block;height:7px;border-radius:3px;background:var(--line);opacity:.5}
.annot-page>i:nth-child(2){width:72%}
.annot-page>i:nth-child(4){width:88%}
.annot-page>i:nth-child(5){width:64%}
.annot-target{height:auto!important;background:transparent!important;opacity:1!important;
  display:flex!important;flex-wrap:wrap;gap:4px 10px;align-items:baseline;
  padding:8px 10px;border-radius:8px;border-left:3px solid var(--line)}
.annot-target em{font-style:normal;font-size:.8rem;font-weight:650}
.annot-target b{font-weight:500;font-size:.78rem;color:var(--muted)}
.doc-annot[data-state="complete"] .annot-target{border-left-color:var(--aqua);
  background:color-mix(in oklab,var(--aqua) 9%,transparent)!important}
.doc-annot[data-state="warning"] .annot-target{border-left-color:var(--gold);
  background:color-mix(in oklab,var(--gold) 11%,transparent)!important}
.doc-annot[data-state="critical"] .annot-target{border-left-color:var(--red);
  background:color-mix(in oklab,var(--red) 10%,transparent)!important}

/* ---- Geospatial decision lab -------------------------------------
   Real NYC borough geometry from NYC Open Data, rendered as SVG so the
   page makes no third-party requests and still works offline.        */
.geo-controls{display:flex;flex-wrap:wrap;gap:16px 22px;align-items:flex-end;
  padding:14px 18px;border:1px solid var(--line);border-radius:14px;
  background:var(--white);margin-bottom:16px}
.geo-controls label{display:flex;flex-direction:column;gap:5px;font-size:.75rem;
  letter-spacing:.09em;text-transform:uppercase;font-weight:700;color:var(--muted)}
.geo-controls b{color:var(--gold);font-size:.82rem}
.geo-controls select,.geo-controls input[type=range]{font:inherit;font-size:.86rem;
  text-transform:none;letter-spacing:0;font-weight:500;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:7px 10px}
.geo-controls input[type=range]{padding:0;min-width:150px;accent-color:var(--gold)}
.geo-controls .button{margin-left:auto}

.geo-workspace{display:grid;gap:16px;grid-template-columns:1fr;margin:16px 0}
@media (min-width:960px){.geo-workspace{grid-template-columns:minmax(0,1fr) 310px}}
.geo-map-frame{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--night)}
.geo-map{display:block;width:100%;height:auto;background:var(--night)}
.geo-poly{fill:color-mix(in oklab,var(--aqua) 7%,transparent);
  stroke:color-mix(in oklab,var(--aqua) 34%,transparent);stroke-width:.9;
  transition:fill .35s ease,stroke .35s ease}
.geo-poly.is-dim{fill:transparent;stroke:color-mix(in oklab,var(--line) 40%,transparent)}
.geo-hole{fill:var(--night);stroke:none}
.geo-reach{fill:color-mix(in oklab,var(--aqua) 9%,transparent);
  stroke:color-mix(in oklab,var(--aqua) 45%,transparent);stroke-width:1.2;stroke-dasharray:5 5;
  transition:r .45s cubic-bezier(.22,1,.36,1)}
.geo-pt{fill:color-mix(in oklab,var(--map-ink) 66%,transparent)}
.geo-pt.is-high{fill:var(--gold)}
.geo-hot{cursor:pointer}
.geo-hot-halo{fill:color-mix(in oklab,var(--line) 30%,transparent);
  stroke:var(--muted);stroke-width:1.4;transition:all .3s var(--ease-out)}
.geo-hot.is-reached .geo-hot-halo{fill:color-mix(in oklab,var(--gold) 22%,transparent);stroke:var(--gold)}
.geo-hot.is-active .geo-hot-halo{fill:color-mix(in oklab,var(--gold) 45%,transparent);
  stroke:#fff;stroke-width:2}
.geo-hot-label{fill:var(--night);font-size:9px;font-weight:800;text-anchor:middle;pointer-events:none}
.geo-legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin:0;padding:10px 14px;
  font-size:.75rem;color:var(--muted);border-top:1px solid var(--line)}
.geo-legend span{display:inline-flex;align-items:center;gap:7px}
.geo-legend i{width:8px;height:8px;border-radius:50%}
.geo-legend .k-pt{background:color-mix(in oklab,var(--map-ink) 66%,transparent)}
.geo-legend .k-hot{background:var(--gold)}
.geo-legend .k-cold{background:var(--muted)}

.geo-side{border:1px solid var(--line);border-radius:14px;background:var(--white);padding:16px;
  display:flex;flex-direction:column;gap:9px}
.geo-side h3{font-size:var(--fs-label);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0}
.queue-item{width:100%;text-align:left;border:1px solid var(--line);border-radius:10px;
  padding:9px 11px;background:var(--paper);font:inherit;color:inherit;cursor:pointer;
  transition:border-color var(--dur),transform var(--dur) var(--ease-out)}
.queue-item strong{display:block;font-size:.82rem}
.queue-item small{display:block;font-size:.75rem;color:var(--muted);margin-top:2px}
.queue-item.is-out{opacity:.55}
.queue-item.is-active{border-color:var(--gold);transform:translateX(2px)}
.geo-note{margin:4px 0 0;font-size:.77rem;line-height:1.5;color:var(--muted)}
.geo-table tr[data-row]{cursor:pointer;transition:background var(--dur)}
.geo-table tr[data-row].is-active{background:color-mix(in oklab,var(--gold) 10%,transparent)}
.geo-demo.is-auto .geo-controls select{border-color:color-mix(in oklab,var(--gold) 45%,var(--line))}

/* ---- Predictive maintenance workspace ---------------------------- */
.rul-chart-frame{border:1px solid var(--line);border-radius:14px;background:var(--night);overflow:hidden}
.rul-chart-head{display:flex;justify-content:space-between;gap:12px;padding:11px 14px;
  font-size:.77rem;letter-spacing:.06em;text-transform:uppercase;font-weight:700;
  color:var(--muted);border-bottom:1px solid var(--line)}
.rul-chart-head b{color:var(--gold)}
.rul-chart{display:block;width:100%;height:auto}
.rul-grid{stroke:color-mix(in oklab,var(--line) 45%,transparent);stroke-width:.8}
.rul-axis{fill:var(--muted);font-size:10px}
.rul-band{fill:color-mix(in oklab,var(--aqua) 16%,transparent)}
.rul-true{fill:none;stroke:color-mix(in oklab,var(--paper) 70%,transparent);stroke-width:1.6;stroke-dasharray:4 4}
.rul-pred{fill:none;stroke:var(--aqua);stroke-width:2.2}
.rul-cursor{stroke:var(--gold);stroke-width:1.2;stroke-dasharray:3 4}
.rul-dot{fill:var(--gold);stroke:var(--night);stroke-width:1.5}
.geo-legend .k-band{background:color-mix(in oklab,var(--aqua) 40%,transparent)}
.geo-legend .k-pred{background:var(--aqua)}
.geo-legend .k-true{background:color-mix(in oklab,var(--paper) 70%,transparent)}

.rul-badge{margin:0;padding:9px 12px;border-radius:9px;font-size:.81rem;font-weight:750;
  text-align:center;border:1px solid var(--line);letter-spacing:.03em}
.rul-badge[data-state="healthy"]{color:var(--aqua);border-color:var(--aqua);
  background:color-mix(in oklab,var(--aqua) 12%,transparent)}
.rul-badge[data-state="watch"]{color:var(--gold);border-color:var(--gold);
  background:color-mix(in oklab,var(--gold) 14%,transparent)}
.rul-badge[data-state="critical"]{color:var(--red);border-color:var(--red);
  background:color-mix(in oklab,var(--red) 13%,transparent)}
.cost-card{border:1px solid var(--line);border-radius:10px;padding:11px 13px;background:var(--paper)}
.cost-card span{display:block;font-size:.75rem;letter-spacing:.11em;text-transform:uppercase;
  font-weight:750;color:var(--muted)}
.cost-card strong{display:block;font-size:1.15rem;margin-top:3px;font-variant-numeric:tabular-nums}
.cost-card small{display:block;font-size:.78rem;color:var(--muted);margin-top:3px;line-height:1.4}

.rul-sub{font-size:.77rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:18px 0 10px}
.sensor-grid{display:grid;gap:12px;grid-template-columns:1fr}
@media (min-width:720px){.sensor-grid{grid-template-columns:repeat(3,1fr)}}
.sensor-card{margin:0;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--white)}
.sensor-card figcaption{font-size:.76rem;letter-spacing:.08em;text-transform:uppercase;
  font-weight:750;color:var(--muted);margin-bottom:8px}
.sensor-card svg{display:block;width:100%;height:52px}
.sensor-card polyline{fill:none;stroke:var(--gold);stroke-width:1.4;vector-effect:non-scaling-stroke}
.sensor-card line{stroke:var(--aqua);stroke-width:1;vector-effect:non-scaling-stroke;stroke-dasharray:2 3}
.sensor-card span{display:block;font-size:.78rem;color:var(--muted);margin-top:6px;font-variant-numeric:tabular-nums}
.rul-metrics{margin-top:18px}

/* fleet rebalancing map */
.fleet-map-frame{position:relative;border:1px solid var(--line);border-radius:var(--radius-sm);
  overflow:hidden;background:var(--paper-2)}
.fleet-map{display:block;width:100%;height:auto}
.fleet-map-hint{position:absolute;left:10px;bottom:8px;margin:0;font-size:.75rem;color:var(--muted);
  background:color-mix(in srgb,var(--paper) 82%,transparent);padding:2px 8px;border-radius:99px;
  pointer-events:none}
.fleet-zone-base{fill:var(--line);fill-opacity:.24;stroke:var(--line);stroke-width:.6}
.fleet-zone{stroke:var(--white);stroke-width:.9;cursor:pointer;
  transition:fill-opacity .3s ease,opacity .25s ease}
.fleet-zone[data-state=deficit]{fill:var(--red)}
.fleet-zone[data-state=surplus]{fill:var(--aqua)}
.fleet-zone[data-state=balanced]{fill:var(--muted)}
.fleet-zone:focus{outline:none;stroke:var(--gold);stroke-width:2}
.fleet-flow{fill:none;stroke:var(--muted);stroke-width:1;stroke-linecap:round}
.fleet-move{fill:none;stroke:var(--gold);stroke-linecap:round;opacity:.92;
  transition:opacity .25s ease}
.fleet-arrowhead{fill:var(--gold)}
.fleet-move.is-animated{stroke-dasharray:7 9;animation:fleet-run 1.5s linear infinite}
@keyframes fleet-run{to{stroke-dashoffset:-16}}
.fleet-labels text{font:600 10.5px/1 var(--sans);fill:var(--ink);paint-order:stroke;
  stroke:var(--paper);stroke-width:2.6;pointer-events:none}
.is-dim{opacity:.14}
.fleet-zone.is-dim{fill-opacity:.06}
.demo-ranked-moves [data-move-row]{cursor:pointer;transition:opacity .2s ease}
.demo-ranked-moves [data-move-row].is-dim{opacity:.3}
.cost-card-head{margin:0 0 7px;font-size:.75rem;letter-spacing:.11em;text-transform:uppercase;
  color:var(--muted)}
.cost-compare{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cost-compare div{min-width:0}
.cost-compare span{display:block;font-size:.74rem;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted)}
.cost-compare strong{display:block;font-size:1.05rem;margin-top:2px;font-variant-numeric:tabular-nums}
.cost-compare div:first-child strong{color:var(--gold)}
.cost-card-note{margin:8px 0 0;font-size:.75rem;color:var(--muted);line-height:1.45}
@media(prefers-reduced-motion:reduce){.fleet-move.is-animated{animation:none}}

/* FHIR evidence readiness: traceability graph + inspector */
.trace-graph{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 92px minmax(0,1.25fr);grid-template-rows:minmax(62px,auto) 1fr;gap:0;align-items:stretch;min-height:400px}
.trace-col{display:grid;grid-row:1 / span 2;grid-template-rows:subgrid;gap:0;min-width:0}.trace-stack{display:grid;gap:13px;align-content:center}
.trace-col h3.col-head,.trace-col h4{margin:0 0 11px;font-size:var(--fs-label);text-transform:uppercase;letter-spacing:.1em;
  color:var(--muted);font-weight:850}
.trace-col-right{grid-column:3}
.trace-wires{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.trace-wire{fill:none;stroke:var(--muted);stroke-width:1.5;opacity:.42;
  transition:opacity .25s ease,stroke-width .25s ease}
.trace-wire[data-state=complete]{stroke:var(--aqua)}
.trace-wire[data-state=warning]{stroke:var(--gold)}
.trace-wire[data-state=critical]{stroke:var(--red)}
.trace-wire.is-live{stroke-dasharray:5 7;animation:trace-run 1.9s linear infinite}
@keyframes trace-run{to{stroke-dashoffset:-24}}
.trace-wire.is-active{opacity:1;stroke-width:3;animation-duration:1s}
.trace-node{position:relative;z-index:2;display:block;width:100%;text-align:left;cursor:pointer;
  padding:10px 12px;border:1px solid var(--demo-border);border-radius:11px;
  background:var(--demo-surface);color:inherit;border-left-width:4px;
  transition:border-color .2s ease,transform .2s ease}
.trace-node strong{display:block;font-size:.81rem;line-height:1.3}
.trace-node small{display:block;font-size:.75rem;color:var(--muted);margin-top:2px}
.trace-node[data-state=complete]{border-left-color:var(--aqua)}
.trace-node[data-state=warning]{border-left-color:var(--gold)}
.trace-node[data-state=critical]{border-left-color:var(--red)}
.trace-node:hover{transform:translateX(2px)}
.trace-node.is-active{border-color:var(--gold);background:var(--demo-elevated)}
.evidence-inspector{display:flex;flex-direction:column;gap:9px;min-width:0}
.evidence-inspector .kicker[data-tier=structural]{color:var(--aqua)}
.evidence-inspector .kicker[data-tier=program]{color:var(--gold)}
.evidence-inspector .kicker[data-tier=clinical]{color:var(--clay)}
.evidence-rule{margin:0;font-size:.79rem;color:var(--muted);line-height:1.45}
.evidence-path-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:8px 10px;border:1px solid var(--demo-border);border-radius:9px;background:var(--demo-surface)}
.evidence-path-row span{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);
  font-weight:850}
.evidence-path-row code{font-size:.75rem;word-break:break-all}
.evidence-expect{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.evidence-expect div{padding:8px 10px;border:1px solid var(--demo-border);border-radius:9px;
  background:var(--demo-surface);min-width:0}
.evidence-expect span{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;
  color:var(--muted);font-weight:850}
.evidence-expect strong{display:block;font-size:.9rem;margin-top:2px;font-variant-numeric:tabular-nums}
.evidence-expect strong[data-state=critical]{color:var(--red)}
.evidence-expect strong[data-state=complete]{color:var(--aqua)}
.evidence-sub{margin:0;font-size:.76rem;line-height:1.45}
.evidence-json{border:1px solid var(--demo-border);border-radius:10px;overflow:hidden;
  background:var(--demo-surface)}
.evidence-json-head{padding:6px 10px;border-bottom:1px solid var(--demo-border);font-size:.72rem;
  text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:850}
.evidence-json pre{margin:0;padding:9px 10px;max-height:210px;overflow:auto;
  font-size:.76rem;line-height:1.5;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.evidence-json pre div{white-space:pre;min-height:1em}
.evidence-json .json-hit{background:color-mix(in srgb,var(--gold) 26%,transparent);border-radius:3px}
.evidence-json .json-absent{color:var(--red);font-style:italic}
.evidence-boundary{margin:0;font-size:.79rem;color:var(--muted);line-height:1.5;
  padding-top:8px;border-top:1px solid var(--demo-border)}
.tier-chip{display:inline-block;padding:2px 7px;border-radius:999px;font-size:.74rem;font-weight:850;
  border:1px solid currentColor;white-space:nowrap}
.tier-chip[data-tier=structural]{color:var(--aqua)}
.tier-chip[data-tier=program]{color:var(--gold)}
.tier-chip[data-tier=clinical]{color:var(--clay)}
.evidence-table tbody tr{cursor:pointer}
.evidence-table tbody tr.is-active{background:var(--demo-elevated)}
.evidence-table code{font-size:.76rem;word-break:break-all}
.row-clinical{opacity:.72}
.row-clinical td{font-style:normal}
.table-score[data-tone=neutral]{color:var(--muted)}
@media(max-width:900px){.trace-graph{grid-template-columns:1fr;gap:12px}
  .trace-col-right{grid-column:1}.trace-wires{display:none}}
@media(prefers-reduced-motion:reduce){.trace-wire.is-live{animation:none}}

/* Map interaction: zoom controls and hover readout ------------------------------------
   The demo maps were static images in practice - no pan, zoom or hover existed. Controls
   are real buttons so they are keyboard reachable; the readout is a positioned panel
   rather than a native SVG <title>, which cannot be styled and appears too slowly to
   feel like inspection. */
.intelligence-demo [data-service-map],.intelligence-demo [data-logistics-map]{touch-action:none;cursor:grab}
.intelligence-demo [data-panning=true]{cursor:grabbing}
.intelligence-demo [data-service-map]:focus-visible,.intelligence-demo [data-logistics-map]:focus-visible{outline:2px solid var(--aqua);outline-offset:2px}
.demo-map-frame{position:relative}
.map-controls{position:absolute;right:12px;top:12px;display:flex;flex-direction:column;gap:6px;z-index:2}
.map-control{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--demo-border,var(--line));border-radius:9px;background:var(--demo-elevated,var(--paper));color:inherit;font-size:1rem;font-weight:800;line-height:1;cursor:pointer}
.map-control:hover{border-color:var(--aqua)}
.map-control:focus-visible{outline:2px solid var(--aqua);outline-offset:2px}
.map-readout{position:absolute;left:var(--readout-x,0);top:var(--readout-y,0);transform:translate(14px,-50%);pointer-events:none;z-index:3;min-width:170px;max-width:270px;padding:11px 13px;border:1px solid var(--demo-border,var(--line));border-radius:11px;background:var(--demo-elevated,var(--paper));box-shadow:var(--shadow);font-size:.86rem;line-height:1.45}
.map-readout[data-side=left]{transform:translate(calc(-100% - 14px),-50%)}
.map-readout[hidden]{display:none}
.map-readout strong{display:block;font-size:.95rem;margin-bottom:3px}
.map-readout dl{display:grid;grid-template-columns:auto auto;gap:2px 12px;margin:6px 0 0}
.map-readout dt{color:var(--muted);font-size:.8rem}
.map-readout dd{margin:0;font-weight:800;font-size:.8rem;text-align:right;font-variant-numeric:tabular-nums}
.section-dark .map-readout dt{color:#9fb0bd}
/* Labels and strokes keep their size as the map scales, so zooming reveals detail
   instead of magnifying it. */
[data-viewport] .fleet-label text,[data-viewport] .service-label text{font-size:calc(12px / var(--map-zoom,1))}
[data-viewport] .fleet-zone,[data-viewport] .fleet-zone-base{stroke-width:calc(1px / var(--map-zoom,1))}
@media (prefers-reduced-motion:reduce){.map-readout{transition:none}}

/* Hotspot captions: place and dominant complaint, drawn under each ring. */
.geo-hot-caption{fill:color-mix(in oklab,var(--map-ink) 82%,transparent);font-size:7.5px;
  font-weight:700;text-anchor:middle;pointer-events:none;paint-order:stroke;
  stroke:var(--night);stroke-width:2.4px;stroke-linejoin:round}
.geo-hot.is-reached .geo-hot-caption{fill:var(--gold)}

/* Evidence demo: intent line, pipeline strip, readable field rows */
.demo-intent{margin:0;padding:14px 22px 0;font-size:.86rem;line-height:1.6;max-width:74ch}
.pipeline-strip{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap;
  padding:14px 22px 0}
.pipeline-stage{flex:1 1 170px;min-width:0;padding:10px 12px;border:1px solid var(--demo-border);
  border-radius:11px;background:var(--demo-surface)}
.pipeline-stage span{display:block;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);font-weight:850}
.pipeline-stage strong{display:block;font-size:.9rem;margin-top:2px;line-height:1.3}
.pipeline-stage small{display:block;font-size:.76rem;color:var(--muted);margin-top:3px;line-height:1.4}
.pipeline-stage.is-core{border-color:var(--gold);background:color-mix(in oklab,var(--gold) 8%,var(--demo-surface))}
.pipeline-stage.is-core span{color:var(--gold)}
.pipeline-arrow{align-self:center;width:16px;height:2px;background:var(--demo-border);position:relative;flex:0 0 auto}
.pipeline-arrow:after{content:"";position:absolute;right:-1px;top:-3px;border:4px solid transparent;
  border-left-color:var(--demo-border)}
.evidence-fields{border:1px solid var(--demo-border);border-radius:10px;overflow:hidden;
  background:var(--demo-surface)}
.evidence-fields-head{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:6px 10px;border-bottom:1px solid var(--demo-border);font-size:.72rem;
  text-transform:uppercase;letter-spacing:.09em;color:var(--muted);font-weight:850}
.evidence-raw-toggle{border:1px solid var(--demo-border);border-radius:999px;background:transparent;
  color:var(--muted);font:inherit;font-size:.72rem;text-transform:none;letter-spacing:0;
  padding:2px 9px;cursor:pointer}
.evidence-raw-toggle:hover{border-color:var(--gold);color:var(--gold)}
.evidence-fields dl,.evidence-fields>dl{margin:0}
.field-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:8px;
  padding:7px 10px;border-bottom:1px solid color-mix(in oklab,var(--demo-border) 55%,transparent)}
.field-row:last-child{border-bottom:0}
.field-row dt{margin:0;font-size:.78rem;font-weight:700;word-break:break-word}
.field-row dd{margin:0;font-size:.78rem;min-width:0;word-break:break-word}
.field-row dd small{display:block;font-size:.72rem;color:var(--muted);margin-top:1px}
.field-row[data-state=critical] dd{color:var(--red)}
.field-row[data-state=warning] dd{color:var(--gold)}
.field-row.is-focus{background:color-mix(in oklab,var(--gold) 12%,transparent)}
.evidence-fields pre{margin:0;padding:9px 10px;max-height:210px;overflow:auto;
  border-top:1px solid var(--demo-border);
  font-size:.76rem;line-height:1.5;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.evidence-fields pre div{white-space:pre;min-height:1em}
.evidence-fields pre[hidden]{display:none}
@media(max-width:700px){.pipeline-arrow{display:none}}

/* Manhattan street layer: revealed on zoom, never part of the resting view. */
.street-layer{pointer-events:none}
.street-layer .street{fill:none;stroke:var(--map-ink);stroke-opacity:.20;
  stroke-width:calc(0.7px / var(--map-zoom, 1));stroke-linecap:round;
  transition:stroke-opacity .3s ease}
.street-layer .street[data-t="2"]{stroke-opacity:.13;stroke-width:calc(0.5px / var(--map-zoom, 1))}
.street-layer[data-tier="0"] .street{stroke-opacity:0}
.street-layer[data-tier="1"] .street[data-t="2"]{stroke-opacity:0}
.street-layer .street-label{fill:var(--map-ink);fill-opacity:.62;
  font-size:calc(7px / var(--map-zoom, 1));font-weight:650;text-anchor:middle;
  paint-order:stroke;stroke:var(--night);stroke-width:calc(2px / var(--map-zoom, 1));
  stroke-linejoin:round;transition:fill-opacity .3s ease}
.street-layer[data-labels="off"] .street-label{fill-opacity:0;stroke-opacity:0}
.street-layer[data-tier="1"] .street-label[data-t="2"]{fill-opacity:0;stroke-opacity:0}

/* Evidence engine: the step that turns resources into verdicts. */
.trace-graph{grid-template-columns:minmax(0,1fr) minmax(140px,.8fr) minmax(0,1.05fr);column-gap:44px}
.trace-core{position:relative;z-index:2;grid-row:2;align-self:center;padding:12px 13px;border-radius:13px;
  border:1px solid var(--gold);background:color-mix(in oklab,var(--gold) 9%,var(--demo-elevated))}
.trace-core .core-kicker{display:block;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--gold);font-weight:850}
.trace-core strong{display:block;font-size:.92rem;margin-top:3px;line-height:1.25}

.trace-core em{display:block;font-style:normal;font-size:.74rem;font-weight:750;margin-top:7px;
  padding-top:7px;border-top:1px solid var(--demo-border);font-variant-numeric:tabular-nums}
.trace-wire-in{stroke-dasharray:4 6}
/* Licence and limits, present but not in the way. */
.demo-legal{margin:7px 0 0}
.demo-legal summary{cursor:pointer;font-size:.75rem;font-weight:750;color:var(--muted);
  list-style:none;display:inline-flex;align-items:center;gap:6px}
.demo-legal summary::-webkit-details-marker{display:none}
.demo-legal summary:before{content:"+";font-weight:850;color:var(--gold)}
.demo-legal[open] summary:before{content:"−"}
.demo-legal summary:hover{color:var(--gold)}
.demo-legal p{margin:7px 0 0;font-size:.75rem;line-height:1.55;color:var(--muted);max-width:80ch}
@media(max-width:900px){.trace-graph{grid-template-columns:1fr;column-gap:0}}

/* <small> shrinks against its parent by default; pin it so the floor holds. */
.intelligence-demo small{font-size:.74rem}
.trace-node small,.pipeline-stage small{font-size:.75rem}
.geo-pt-focus{fill:none;stroke:var(--gold);stroke-width:1.4;pointer-events:none}

/* Engine card: alive while it works, still once it has answered. */
.trace-core{overflow:hidden}
.core-pulse{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .3s ease}
.trace-core[data-phase=running] .core-pulse{opacity:1}
.core-pulse i{position:absolute;left:50%;top:26px;width:8px;height:8px;margin-left:-4px;
  border-radius:50%;border:1px solid var(--gold);opacity:0;
  animation:core-ring 1.9s ease-out infinite}
.core-pulse i:nth-child(2){animation-delay:.63s}
.core-pulse i:nth-child(3){animation-delay:1.26s}
@keyframes core-ring{
  0%{transform:scale(1);opacity:.75}
  100%{transform:scale(7);opacity:0}
}
.core-phase{margin:6px 0 0;font-size:.76rem;font-weight:700;color:var(--gold);
  min-height:1.2em;font-variant-numeric:tabular-nums}
.trace-core[data-phase=done] .core-phase{color:var(--aqua)}
.core-progress{height:2px;margin:6px 0 2px;border-radius:2px;
  background:color-mix(in oklab,var(--demo-border) 70%,transparent);overflow:hidden}
.core-progress span{display:block;height:100%;width:0;border-radius:2px;background:var(--gold);
  transition:width .42s cubic-bezier(.22,1,.36,1)}
.trace-core[data-phase=done] .core-progress span{background:var(--aqua)}


.trace-wire.is-pending{opacity:0}
@media(prefers-reduced-motion:reduce){
  .core-pulse{display:none}
  .core-progress span{transition:none}
  .trace-wire.is-pending{opacity:.42}
}
.rcd-core{position:relative;overflow:hidden}
.rcd-core .core-phase{margin:7px 0 0;font-size:.76rem;font-weight:700;color:var(--gold);
  min-height:1.2em;font-variant-numeric:tabular-nums}
.rcd-core[data-phase=done] .core-phase{color:var(--aqua)}
.rcd-core em{display:block;font-style:normal;font-size:.74rem;font-weight:750;margin-top:8px;
  padding-top:8px;border-top:1px solid #2b3b4e;color:#aebbc5;font-variant-numeric:tabular-nums}
.rcd-core .core-progress{background:#2b3b4e}

/* Work moving through the processing layer, and results labelled on the output side. */
.core-stream{display:flex;gap:4px;margin-top:9px;height:4px;opacity:0;transition:opacity .3s ease}
.trace-core[data-phase=running] .core-stream,
.rcd-core[data-phase=running] .core-stream{opacity:1}
.core-stream i{flex:1;border-radius:2px;background:var(--gold);opacity:.18;
  animation:core-feed 1.1s ease-in-out infinite}
.core-stream i:nth-child(2){animation-delay:.09s}
.core-stream i:nth-child(3){animation-delay:.18s}
.core-stream i:nth-child(4){animation-delay:.27s}
.core-stream i:nth-child(5){animation-delay:.36s}
.core-stream i:nth-child(6){animation-delay:.45s}
@keyframes core-feed{0%,100%{opacity:.16;transform:scaleY(.5)}45%{opacity:1;transform:scaleY(1)}}
.col-split{display:block;font-style:normal;font-weight:750;font-size:.74rem;color:var(--muted);
  margin-top:3px;letter-spacing:0;text-transform:none;font-variant-numeric:tabular-nums}
.graph-out h3 .col-split{color:#aebbc5}
@media(prefers-reduced-motion:reduce){.core-stream i{animation:none;opacity:.5}}

/* subgrid carries the alignment; without it the columns keep their own rows and the
   stacks sit a little high rather than breaking. */
@supports not (grid-template-rows: subgrid){
  .trace-col{grid-row:auto;grid-template-rows:minmax(62px,auto) 1fr}
}
@media(max-width:900px){
  .trace-col{grid-row:auto;grid-template-rows:auto auto}
  .trace-graph{grid-template-rows:auto}
  .trace-col-left{order:1}
  .trace-core{grid-row:auto;order:2;align-self:stretch}
  .trace-col-right{order:3;grid-column:1}
}

/* The engine's network view: fires forward under load, sweeps back between passes. */
.neuro{margin-top:9px;height:62px;opacity:.5;transition:opacity .45s ease}
.neuro[data-neuro-state=running]{opacity:1}
.neuro[data-neuro-state=done]{opacity:.72}
.neuro-svg{display:block;width:100%;height:62px;overflow:visible}

.neuro-edge{fill:none;stroke:var(--gold);stroke-width:.5;stroke-opacity:.13;
  stroke-dasharray:5 190;stroke-dashoffset:190}
.neuro[data-neuro-state=running] .neuro-edge{
  animation:neuro-fire 1.55s cubic-bezier(.4,0,.5,1) infinite;stroke-opacity:.5}
.neuro[data-neuro-state=done] .neuro-edge{stroke-opacity:.2;stroke-dashoffset:0;stroke-dasharray:none}
@keyframes neuro-fire{
  0%{stroke-dashoffset:190;stroke-opacity:0}
  18%{stroke-opacity:.85}
  70%{stroke-dashoffset:0;stroke-opacity:.1}
  100%{stroke-dashoffset:0;stroke-opacity:0}
}

.neuro-node{fill:var(--gold);fill-opacity:.28;transition:fill-opacity .4s ease}
.neuro-node.is-in{fill:var(--aqua);fill-opacity:.55}
.neuro[data-neuro-state=running] .neuro-node{animation:neuro-pop 1.55s ease-in-out infinite}
.neuro[data-neuro-state=done] .neuro-node.is-out{fill:var(--aqua);fill-opacity:.95}
.neuro[data-neuro-state=done] .neuro-node{fill-opacity:.4}
@keyframes neuro-pop{
  0%,100%{fill-opacity:.22;r:1.8}
  22%{fill-opacity:1;r:2.7}
  60%{fill-opacity:.3;r:1.9}
}

/* the backward pass, wider and cooler than the forward one, and much less frequent */
.neuro-back{fill:var(--aqua);opacity:0}
.neuro[data-neuro-state=running] .neuro-back{
  animation:neuro-attend 4.6s cubic-bezier(.55,0,.45,1) infinite}
@keyframes neuro-attend{
  0%,58%{transform:translateX(196px);opacity:0}
  64%{opacity:.16}
  88%{opacity:.06}
  100%{transform:translateX(-30px);opacity:0}
}

@media(prefers-reduced-motion:reduce){
  .neuro-edge,.neuro-node,.neuro-back{animation:none!important}
  .neuro-edge{stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:.24}
  .neuro-node{fill-opacity:.5}
}

/* Move between demos without going back to the index. */
.demo-switch{padding-top:0}
.demo-switch-head{display:flex;align-items:flex-end;justify-content:space-between;gap:22px;
  flex-wrap:wrap;margin-bottom:20px}
.demo-switch-head h2{margin:0}
.demo-switch-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.demo-switch-card{position:relative;display:flex;flex-direction:column;gap:5px;
  padding:18px 18px 46px;border:1px solid var(--line);border-radius:var(--radius-sm);
  text-decoration:none;color:inherit;background:var(--white);
  transition:border-color var(--dur) var(--ease-out),transform var(--dur) var(--ease-out)}
.demo-switch-card:hover,.demo-switch-card:focus-visible{border-color:var(--gold);transform:translateY(-3px)}
.demo-switch-card.is-next{border-color:var(--gold)}
.demo-switch-flag{position:absolute;top:-9px;left:16px;background:var(--gold);color:var(--night);
  font-size:.7rem;font-weight:850;letter-spacing:.09em;text-transform:uppercase;
  padding:2px 8px;border-radius:999px}
.demo-switch-cat{font-size:.74rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted)}
.demo-switch-card strong{font-family:var(--display);font-size:1.14rem;line-height:1.2}
.demo-switch-card small{font-size:.82rem;color:var(--muted);line-height:1.45}
.demo-switch-card i{position:absolute;left:18px;bottom:16px;color:var(--gold);
  transition:transform var(--dur) var(--ease-out)}
.demo-switch-card:hover i{transform:translateX(5px)}
@media(max-width:640px){.demo-switch-card{padding-bottom:42px}}

/* Products: the four stages, described rather than named. Four bare chips in a
   half-width column left most of the section empty. */
.shared-core-flow{list-style:none;margin:0;padding:0;display:grid;gap:0}
.shared-core-flow li{position:relative;display:grid;grid-template-columns:44px 1fr;
  gap:14px;padding:16px 0 16px 0;align-items:start}
.shared-core-flow li+li{border-top:1px solid var(--line)}
.shared-core-flow li:before{content:"";position:absolute;left:21px;top:0;bottom:0;width:1px;
  background:var(--line)}
.shared-core-flow li:first-child:before{top:50%}
.shared-core-flow li:last-child:before{bottom:50%}
.shared-core-flow span{position:relative;z-index:1;display:grid;place-items:center;
  width:44px;height:44px;border-radius:50%;border:1px solid var(--gold);
  background:var(--paper);color:var(--gold);
  font-size:.8rem;font-weight:850;font-variant-numeric:tabular-nums}
.section-dark .shared-core-flow span{background:var(--night-2)}
.shared-core-flow span{grid-column:1;grid-row:1 / span 2}.shared-core-flow strong{grid-column:2;grid-row:1;display:block;font-family:var(--display);font-size:1.22rem;line-height:1.2}
.shared-core-flow small{grid-column:2;grid-row:2;display:block;font-size:.86rem;color:var(--muted);line-height:1.5;margin-top:3px}
.shared-core h2{text-wrap:balance}
.section-tight{padding-block:0}
@media(max-width:820px){
  .shared-core{grid-template-columns:1fr}
  .shared-core-flow li{padding:13px 0}
}

/* Every section paid full padding at both ends, so consecutive ones left 212px of
   dead space between them at 1180px and 270px on a wide screen. A section that
   follows another only pays for the join. */
.section + .section,
.page-hero + .section,
.section + .final-cta{padding-top:clamp(26px,2.6vw,42px)}
.section-dark + .section,
.section + .section-dark{padding-top:clamp(40px,4vw,66px)}

/* The decision-gate card: the three outcomes a gate can have, rather than a
   gradient panel with a caption at the bottom. */
.gate-card{justify-content:flex-start}
.gate-card>span{font-size:.74rem;font-weight:850;letter-spacing:.11em;text-transform:uppercase;
  color:var(--gold)}
.gate-card>strong{display:block;font-family:var(--display);font-size:1.5rem;line-height:1.2;
  margin:6px 0 14px}
.gate-list{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.gate-list li{position:relative;padding-left:22px;font-size:.88rem;line-height:1.45;color:#cfd8de}
.gate-list li:before{content:"";position:absolute;left:0;top:.5em;width:9px;height:9px;
  border-radius:50%;border:1.5px solid var(--gold)}
.gate-list li:nth-child(3):before{border-color:var(--clay)}

/* About: the argument, given room to be read. */
.prose-wide{max-width:min(74ch,100%)}
.prose-wide h2{margin:6px 0 18px;text-wrap:balance}
.prose-wide p{font-size:1.02rem;line-height:1.72;margin:0 0 16px;max-width:70ch}
.prose-wide p:last-child{margin-bottom:0;font-weight:650;color:var(--ink)}
.section-dark .prose-wide p:last-child{color:var(--paper)}

.reality-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(258px,1fr))}
.reality-grid article{padding:22px;border:1px solid var(--line);border-radius:var(--radius-sm);
  background:var(--white)}
.section-dark .reality-grid article{background:var(--night-2);border-color:#2b3b4e}
.reality-grid h3{font-family:var(--display);font-size:var(--fs-subheading);line-height:1.25;margin:0 0 9px}
.reality-grid p{margin:0;font-size:.9rem;line-height:1.6;color:var(--muted)}

.commitment-list{display:grid;gap:0}
.commitment-list article{display:grid;grid-template-columns:56px 1fr;gap:18px;
  padding:22px 0;align-items:start}
.commitment-list article+article{border-top:1px solid var(--line)}
.commitment-list>article>span{display:grid;place-items:center;width:44px;height:44px;
  border-radius:50%;border:1px solid var(--gold);color:var(--gold);
  font-size:.82rem;font-weight:850;font-variant-numeric:tabular-nums}
.commitment-list h3{font-family:var(--display);font-size:var(--fs-subheading);line-height:1.25;margin:0 0 7px}
.commitment-list p{margin:0;font-size:.94rem;line-height:1.62;color:var(--muted);max-width:72ch}

.about-card{justify-content:flex-start}
.about-card>span{font-size:.74rem;font-weight:850;letter-spacing:.11em;text-transform:uppercase;
  color:var(--gold)}
.about-card>strong{display:block;font-family:var(--display);font-size:1.42rem;line-height:1.24;
  margin:7px 0 12px}
.about-card>p{margin:0;font-size:.9rem;line-height:1.6;color:#cfd8de}
@media(max-width:640px){.commitment-list article{grid-template-columns:44px 1fr;gap:13px}}

/* ---- Mobile QA fixes ------------------------------------------------------
   A grid or flex child defaults to min-width:auto, so the 720px demo table
   sized its whole column and dragged the source bar to 420px inside a 390px
   viewport, where an ancestor clipped it. The dataset line was unreachable. */
.intelligence-demo,
.intelligence-demo>*,
.demo-workspace>*,
.demo-table-wrap{min-width:0}
.demo-table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.demo-source-bar{max-width:100%;flex-wrap:wrap}
.demo-source-bar>div{min-width:0;flex:1 1 auto}
.demo-source-bar strong{overflow-wrap:anywhere}

@media(max-width:768px){
  /* WCAG 2.5.5: a touch target needs about 44px. Footer and utility links were
     rendering 15 to 20px tall, which is a miss on any phone. */
  .site-footer a,
  .footer-col a,
  .breadcrumbs a,
  .arrow-link{display:inline-flex;align-items:center;min-height:44px}
  .icon-button{min-width:44px;min-height:44px}
  .segmented-control button,
  .evidence-raw-toggle,
  .map-control{min-height:44px}
  .demo-controls select,
  .demo-controls input[type=range]{min-height:44px}
}

/* Contrast: --red reads 3.51:1 and --muted 3.32:1 on the dark demo surfaces, both
   under the 4.5:1 AA threshold for body-size text. Dark contexts use lifted tokens;
   the brand colours are unchanged on light backgrounds. */
.table-score[data-tone=critical]{color:var(--on-dark-red)}
.finding[data-tone=critical] small,
.doc-item small[data-tone=critical],
.health-doc-list em[data-tone=critical]{color:var(--on-dark-red)}
.field-row[data-state=critical] dd{color:var(--on-dark-red)}
@media(max-width:768px){
  .demo-source-bar a,
  .arrow-link,
  .demo-legal summary{min-height:44px;display:inline-flex;align-items:center}
  .button-small{min-height:44px}
}

/* Promoted from h3 to h2 for heading order; the visual size is unchanged. */
.demo-panel-head .panel-title{font-family:var(--display);font-size:var(--fs-subheading);line-height:1.25;
  margin:0;font-weight:600}

/* QA: the systems-map captions were missed by the type lift and sat at 10px, and
   its tabs measured 40px on a phone, four short of the touch target minimum. */
.nigat-core small,
.decision-card small,
.source-cluster span{font-size:.74rem}
.card-title{font-family:var(--display);font-size:var(--fs-heading);line-height:1.2;margin:0 0 8px}
.card-title a{text-decoration:none;color:inherit}
@media(max-width:768px){
  .systems-tabs button{min-height:44px}
  .problem-buttons button,
  .segmented-control button{min-height:44px}
  .demo-switch-card,
  .insight-card a,
  .use-case-grid a,
  .footer-col li a,
  .legal-links a{min-height:44px;display:flex;align-items:center}
}
/* Contrast: the numbered step markers and remaining eyebrows sat at 4.43:1,
   just under the 4.5:1 AA floor for text this size. */
.work-steps article>span,
.deliverable-list span,
.shared-core-flow span{color:var(--gold)}
.eyebrow{color:var(--clay)}

/* --clay reads 4.43:1 on paper, a shade under the AA floor for text this size.
   A darker variant is used where clay carries small text; the brand colour is
   unchanged wherever it is a fill or a large display element. */
.eyebrow,
.deliverable-list span,
.work-steps article>span{color:var(--clay-text)}

/* A card's title link was the only touch target on a card the size of a hand.
   Stretch it over the card: the whole card becomes tappable, which is both the
   better interaction and what the 44px minimum is actually asking for. */
.solution-card,.product-card,.insight-card,.demo-switch-card{position:relative}
.solution-card .card-title a::after,
.product-card .card-title a::after,
.insight-card h3 a::after{content:"";position:absolute;inset:0;z-index:1}
.solution-card a:not(.card-title a),
.product-card a:not(.card-title a),
.insight-card a:not(h3 a){position:relative;z-index:2}

/* A card title was a 25px anchor on a card the size of a hand. It now fills its
   own row and stretches over the card, so the target matches what it looks like. */
.solution-card .card-title a,
.product-card .card-title a,
.insight-card h3 a{display:block;min-height:44px;display:flex;align-items:center}
/* contact: the honeypot is a deliberate spam trap and must stay out of the
   accessibility tree rather than be given a label */
.honeypot{position:absolute!important;left:-9999px!important;width:1px!important;
  height:1px!important;overflow:hidden!important}
.geo-table caption{text-align:left;padding:0 0 8px;font-weight:850;color:var(--muted);
  font-size:.74rem}

/* Industry cards title through h3 rather than .card-title; same 44px rule. */
.use-case-grid article h3 a,
.industry-card h3 a,
article > h3 > a{display:flex;align-items:center;min-height:44px}

.journey-title{font-family:var(--display);font-size:var(--fs-heading);line-height:1.24;margin:0 0 8px}

/* A range input carried a fixed min-width, which overflowed once the demo was
   embedded in a narrower industry page column. */
.geo-controls input[type=range],
.range-control input[type=range],
.demo-controls input[type=range]{min-width:0;width:100%;max-width:100%}
.geo-controls label,
.demo-controls label{min-width:0;max-width:100%}
.demo-controls,.geo-controls{flex-wrap:wrap}
/* Inline links inside running prose are exempt from the 44px target rule
   (WCAG 2.5.5 inline exception), but a standalone contact link is not. */
.contact-note a,
.legal-page a[href^="mailto:"]{display:inline-flex;align-items:center;min-height:44px}

/* The embedded demo's selects sat at 34px inside the narrower industry column. */
@media(max-width:768px){
  .geo-controls select,
  .demo-controls select,
  .geo-controls .button,
  .demo-controls .button{min-height:44px}
}

/* Measure: prose was running to 134 characters a line on the legal and insight
   pages, roughly twice a comfortable measure. Constrained where the text is meant
   to be read rather than scanned. */
.legal-page p,
.legal-page li,
.article-body p,
.article-body li,
.insight-body p,
.insight-body li,
.prose-wide p,
.work-steps article p,
.two-column p{max-width:74ch}
.legal-page,.article-body,.insight-body{max-width:min(78ch,100%)}
.demo-disclosure,.demo-caption,.geo-note,.rcd-trace{max-width:74ch}

/* Card titles carry the link on the insight and industry grids too, and the
   44px rule applies from the tablet breakpoint down, not only on phones. */
@media(max-width:1024px){
  .insight-card h2 a,.insight-card h3 a,
  .industry-card h2 a,.industry-card h3 a,
  .use-case-grid article h3 a,
  .solution-card .card-title a,
  .product-card .card-title a,
  article > h2 > a, article > h3 > a{display:flex;align-items:center;min-height:44px}
}

/* ---- Demo explainer -------------------------------------------------------
   The problem statement is a paragraph of prose, not a heading. It was set as
   an h2 at up to 48px display serif while the lists beside it ran at 13px, a
   ratio near 4:1 that made two of the three columns look like footnotes.
   It now reads as the lead paragraph it is. */
.demo-explainer{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr) minmax(0,.85fr);
  gap:clamp(24px,3vw,44px);align-items:start}
.explainer-problem{min-width:0}
.problem-statement{font-family:var(--display);font-size:clamp(1.12rem,1.5vw,1.32rem);
  line-height:1.55;font-weight:400;margin:10px 0 0;max-width:46ch;text-wrap:pretty}
.explainer-col{min-width:0}
.demo-explainer .eyebrow{margin:0}
.demo-explainer ul{margin-top:10px;gap:11px}
.demo-explainer li{display:grid;grid-template-columns:16px 1fr;gap:9px;align-items:start;
  font-size:.92rem;line-height:1.5;color:var(--muted)}
.demo-explainer li .icon{width:16px;height:16px;margin-top:3px;color:var(--aqua);flex:none}
.demo-explainer li span{min-width:0}
@media(max-width:900px){
  .demo-explainer{grid-template-columns:1fr 1fr}
  .demo-explainer>.explainer-problem{grid-column:1/-1}
  .problem-statement{max-width:60ch}
}
@media(max-width:600px){
  .demo-explainer{grid-template-columns:1fr}
  .demo-explainer>.explainer-problem{grid-column:auto}
}

/* ---- Navigation rail ------------------------------------------------------
   The header painted --paper at 84% opacity over a --paper page, so in dark
   mode it was 84% of the colour already behind it and simply vanished. Its
   shadow was rgba(17,26,40,.06), invisible on near-black, and the border only
   appeared once scrolled.

   The fix is a change of object rather than a change of opacity: the nav and
   its actions now sit inside a rail that reads as a distinct surface floating
   over the page, with the wordmark left outside it so the brand still breathes.
   Every value is a token, so it holds in both themes. */
.site-header:not(.scrolled){background:transparent;backdrop-filter:none;border-bottom:0}
.header-inner{gap:24px}

.nav-rail{
  display:flex;align-items:center;gap:22px;margin-left:auto;
  padding:8px 8px 8px 26px;border-radius:999px;
  background:var(--rail-bg);
  border:1px solid var(--rail-border);
  box-shadow:var(--rail-shadow), inset 0 1px 0 var(--rail-sheen);
  backdrop-filter:blur(16px) saturate(1.2);
  transition:border-color .25s var(--ease-out),box-shadow .25s var(--ease-out),
    background-color .25s var(--ease-out);
}
.site-header.scrolled .nav-rail{
  background:var(--rail-bg-scrolled);
  border-color:var(--rail-border-strong);
  box-shadow:var(--rail-shadow-strong), inset 0 1px 0 var(--rail-sheen);
}
.site-header.scrolled{border-bottom:0;box-shadow:none}

/* Inside a capsule the old underline fought the container edge, so the current
   page is marked by a filled pill instead. */
.desktop-nav{gap:5px;margin-left:0}
.desktop-nav a{
  position:relative;padding:9px 13px;border-radius:999px;
  color:var(--muted);transition:color .18s var(--ease-out),background-color .18s var(--ease-out);
}
.desktop-nav a::after{display:none}
.desktop-nav a:hover{color:var(--ink);background:var(--rail-item-hover)}
.desktop-nav a[aria-current=page]{
  color:var(--ink);background:var(--rail-item-active);
  box-shadow:inset 0 0 0 1px var(--rail-item-active-line);
}
.header-actions{gap:6px}
/* the rail is the container now, so the buttons inside it drop their own */
.nav-rail .icon-button{border-color:transparent;background:transparent}
.nav-rail .icon-button:hover{background:var(--rail-item-hover);border-color:var(--rail-border)}
.nav-rail .button{box-shadow:0 2px 10px color-mix(in oklab,var(--gold) 30%,transparent)}

/* light surfaces */
:root{
  --rail-bg:color-mix(in srgb,var(--white) 88%,transparent);
  --rail-bg-scrolled:color-mix(in srgb,var(--white) 96%,transparent);
  --rail-border:color-mix(in srgb,var(--line) 90%,transparent);
  --rail-border-strong:color-mix(in srgb,var(--gold) 34%,var(--line));
  --rail-sheen:rgba(255,255,255,.7);
  --rail-shadow:0 6px 20px rgba(20,29,39,.08);
  --rail-shadow-strong:0 10px 30px rgba(20,29,39,.14);
  --rail-item-hover:color-mix(in srgb,var(--ink) 6%,transparent);
  --rail-item-active:color-mix(in srgb,var(--gold) 15%,transparent);
  --rail-item-active-line:color-mix(in srgb,var(--gold) 40%,transparent);
}
/* dark surfaces: lift off the page rather than blending into it */
html[data-theme=dark]{
  --rail-bg:color-mix(in srgb,var(--white) 76%,transparent);
  --rail-bg-scrolled:color-mix(in srgb,var(--white) 92%,transparent);
  --rail-border:color-mix(in srgb,var(--line) 96%,transparent);
  --rail-border-strong:color-mix(in srgb,var(--gold) 40%,var(--line));
  --rail-sheen:rgba(255,255,255,.07);
  --rail-shadow:0 10px 30px rgba(0,0,0,.42);
  --rail-shadow-strong:0 14px 40px rgba(0,0,0,.55);
  --rail-item-hover:color-mix(in srgb,var(--paper) 55%,transparent);
  --rail-item-active:color-mix(in srgb,var(--gold) 17%,transparent);
  --rail-item-active-line:color-mix(in srgb,var(--gold) 46%,transparent);
}
@media(prefers-color-scheme:dark){html[data-theme=system]{
  --rail-bg:color-mix(in srgb,var(--white) 76%,transparent);
  --rail-bg-scrolled:color-mix(in srgb,var(--white) 92%,transparent);
  --rail-border:color-mix(in srgb,var(--line) 96%,transparent);
  --rail-border-strong:color-mix(in srgb,var(--gold) 40%,var(--line));
  --rail-sheen:rgba(255,255,255,.07);
  --rail-shadow:0 10px 30px rgba(0,0,0,.42);
  --rail-shadow-strong:0 14px 40px rgba(0,0,0,.55);
  --rail-item-hover:color-mix(in srgb,var(--paper) 55%,transparent);
  --rail-item-active:color-mix(in srgb,var(--gold) 17%,transparent);
  --rail-item-active-line:color-mix(in srgb,var(--gold) 46%,transparent);
}}
@media(max-width:1024px){
  .nav-rail{padding:7px;gap:0}
}
@media(prefers-reduced-motion:reduce){.nav-rail{transition:none}}

/* The rail resolved to rgb(21,32,48) against a rgb(10,16,27) page: a ratio of
   1.16, which is measurable and not visible. Painted opaquely at #243654 it is
   1.57, with a hairline that reads against the rail itself rather than only
   against the page. */
html[data-theme=dark]{
  --rail-bg:#20304a;
  --rail-bg-scrolled:#243654;
  --rail-border:#42566f;
  --rail-border-strong:color-mix(in srgb,var(--gold) 52%,#42566f);
  --rail-sheen:rgba(255,255,255,.10);
  --rail-shadow:0 12px 34px rgba(0,0,0,.5);
  --rail-shadow-strong:0 16px 44px rgba(0,0,0,.62);
  --rail-item-hover:rgba(255,255,255,.08);
  --rail-item-active:color-mix(in srgb,var(--gold) 22%,transparent);
  --rail-item-active-line:color-mix(in srgb,var(--gold) 58%,transparent);
}
@media(prefers-color-scheme:dark){html[data-theme=system]{
  --rail-bg:#20304a;
  --rail-bg-scrolled:#243654;
  --rail-border:#42566f;
  --rail-border-strong:color-mix(in srgb,var(--gold) 52%,#42566f);
  --rail-sheen:rgba(255,255,255,.10);
  --rail-shadow:0 12px 34px rgba(0,0,0,.5);
  --rail-shadow-strong:0 16px 44px rgba(0,0,0,.62);
  --rail-item-hover:rgba(255,255,255,.08);
  --rail-item-active:color-mix(in srgb,var(--gold) 22%,transparent);
  --rail-item-active-line:color-mix(in srgb,var(--gold) 58%,transparent);
}}
/* light: cream page, so the rail goes white and the border does more work */
:root{
  --rail-bg:#fffdf8;
  --rail-bg-scrolled:#ffffff;
  --rail-border:#c9bfae;
  --rail-border-strong:color-mix(in srgb,var(--gold) 46%,#c9bfae);
  --rail-shadow:0 8px 24px rgba(20,29,39,.12);
  --rail-shadow-strong:0 12px 32px rgba(20,29,39,.18);
}
.nav-rail{backdrop-filter:none}
/* the group carried fill:#000, invisible on a dark ground if it ever paints */
.logo-rays{fill:none}

/* ---- Sticky header backdrop ----------------------------------------------
   The rail carried a surface but the wordmark did not, so once the page
   scrolled, body copy ran straight underneath the logo with nothing behind it.
   At rest the header stays transparent, which is what the hero is composed
   for. From the first scroll it takes an opaque backdrop, so nothing passes
   under the brand again. */
.site-header{transition:background-color .25s var(--ease-out),box-shadow .25s var(--ease-out)}
.site-header.scrolled{
  background-color:var(--header-scrolled);
  backdrop-filter:blur(20px) saturate(1.15);
  border-bottom:1px solid var(--header-scrolled-line);
  box-shadow:0 8px 28px 0 var(--header-scrolled-shadow);
}
:root{
  --header-scrolled:rgba(246,241,231,.94);
  --header-scrolled-line:#d5cdbf;
  --header-scrolled-shadow:rgba(20,29,39,.10);
}
html[data-theme=dark]{
  --header-scrolled:rgba(10,16,27,.96);
  --header-scrolled-line:#22303f;
  --header-scrolled-shadow:rgba(0,0,0,.45);
}
@media(prefers-color-scheme:dark){html[data-theme=system]{
  --header-scrolled:rgba(10,16,27,.96);
  --header-scrolled-line:#22303f;
  --header-scrolled-shadow:rgba(0,0,0,.45);
}}
/* the mark needs room to sit against text without touching it */
.brand{padding-right:6px}

/* ---- Brand plate ----------------------------------------------------------
   The rail carried a surface and the wordmark did not, so once the page
   scrolled, body copy ran underneath the logo with nothing behind it. Rather
   than depend on the header's own background, the brand gets the same
   treatment as the rail: its own plate, so the two read as a matched pair
   floating over the page and nothing can pass beneath either. */
.brand{
  padding:8px 20px 8px 12px;border-radius:999px;
  background:var(--rail-bg);
  border:1px solid var(--rail-border);
  box-shadow:var(--rail-shadow), inset 0 1px 0 var(--rail-sheen);
  transition:border-color .25s var(--ease-out),box-shadow .25s var(--ease-out),
    background-color .25s var(--ease-out);
}
.site-header.scrolled .brand{
  background:var(--rail-bg-scrolled);
  border-color:var(--rail-border-strong);
  box-shadow:var(--rail-shadow-strong), inset 0 1px 0 var(--rail-sheen);
}
.footer-brand .brand{background:transparent;border:0;box-shadow:none;padding:0}
.mobile-menu-head .brand{background:transparent;border:0;box-shadow:none;padding:0}
@media(max-width:1024px){.brand{padding:6px 14px 6px 8px}}
@media(prefers-reduced-motion:reduce){.brand{transition:none}}

/* The brand plate and the rail are one pair; a 9px difference in height reads
   as a mistake rather than a hierarchy. */
.brand,.nav-rail{min-height:76px;box-sizing:border-box}
.brand{padding:0 22px 0 14px;align-items:center}
.nav-rail{padding:0 10px 0 26px}
.header-inner{height:110px;align-items:center}
@media(max-width:1024px){
  .brand,.nav-rail{min-height:60px}
  .brand{padding:0 14px 0 8px}
  .nav-rail{padding:0 7px}
  .header-inner{height:84px}
}

/* ---- Small screens, declared last so they win the cascade -----------------
   The desktop mark at 74px plus the wordmark pushed the header to 408px inside
   a 390px viewport. On a phone the lockup carries the mark and "Nigat"; the
   sub-label is dropped rather than shrunk to an unreadable size. */
@media(max-width:1024px){
  .logo-mark{width:54px;height:54px}
  .logo-word{font-size:1.6rem}
  .brand,.nav-rail{min-height:62px}
  .brand{padding:0 14px 0 8px;gap:10px}
  .nav-rail{padding:0 6px}
  .header-inner{height:86px;gap:12px}
}
@media(max-width:560px){
  .logo-mark{width:46px;height:46px}
  .logo-word{font-size:1.34rem}
  .logo-word span{display:none}
  .brand{padding:0 12px 0 6px;gap:8px}
  .brand,.nav-rail{min-height:56px}
  .header-inner{height:76px;gap:8px}
}

/* Work page: artifact + demonstration cards
----------------------------------- */
.proof-card .proof-link,.proof-card .proof-links{margin-top:auto;padding-top:6px}
.proof-dataset{margin:0;font-size:.9rem;color:var(--muted)}
.proof-links{display:flex;flex-wrap:wrap;gap:6px 22px;margin:0}
.proof-note{margin-top:24px}
.proof-note p{margin:0;max-width:86ch;font-size:.92rem;color:var(--muted)}
.request-note{margin:18px 0 0;font-size:.88rem;color:var(--muted)}
@media (min-width:1040px){.proof-grid-2{grid-template-columns:repeat(2,1fr)}}

/* About: reality cards adopt the solution-card treatment
----------------------------------- */
.reality-grid article{position:relative;overflow:hidden;display:flex;flex-direction:column;padding:28px;border-radius:var(--radius);transition:transform var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}
.reality-grid article:before{content:"";position:absolute;inset:0 auto auto 0;width:100%;height:4px;background:var(--aqua)}
.reality-grid article[data-accent=clay]:before{background:var(--clay)}
.reality-grid article[data-accent=gold]:before{background:var(--gold)}
.reality-grid article[data-accent=indigo]:before{background:var(--indigo)}
.reality-grid article:hover{transform:translate3d(0,-6px,0);border-color:color-mix(in oklab,var(--gold) 55%,var(--line));box-shadow:0 22px 48px rgba(20,29,38,.2)}
.reality-grid .solution-icon{margin-bottom:22px}
.reality-grid .kicker{margin-bottom:9px;color:var(--aqua);font-size:.79rem;line-height:1.2;font-weight:850}
/* the icon tile used --paper-2, which equals the card background inside a dark section */
.section-dark .solution-icon{background:var(--night-3)}
/* .section-dark .solution-card p (0,2,1) was beating .kicker (0,1,0), greying the label */
.section-dark .solution-card .kicker{color:var(--aqua)}
.reality-grid h3{margin:0 0 10px}

/* About: fit columns + differentiator links
----------------------------------- */
.fit-grid{display:grid;grid-template-columns:1fr;gap:20px}
.fit-col{padding:26px;border:1px solid var(--line);border-radius:var(--radius);background:var(--white)}
.fit-col h3{margin:0 0 6px;font-family:var(--display);font-size:var(--fs-subheading);line-height:1.25}
.fit-col .boundary-list li:last-child{border-bottom:0}
.fit-yes{border-top:3px solid var(--aqua)}
.fit-no{border-top:3px solid var(--clay)}
.section-muted .fit-col{background:var(--paper)}
.difference-list .arrow-link{margin-top:12px}
@media (min-width:860px){.fit-grid{grid-template-columns:1fr 1fr;gap:22px}}
.scope-note{max-width:88ch}
.scope-note p{color:var(--muted);font-size:.94rem;line-height:1.62}
.solution-card-compact{min-height:0}
.solution-headline{font-family:var(--display);font-size:1.05rem;line-height:1.4}
.section-dark .solution-card-compact .solution-headline{color:#d8e2e9}
.product-card-compact{min-height:0}
.legal-meta{margin:0 0 26px;padding:12px 16px;border-left:3px solid var(--gold);background:color-mix(in srgb,var(--gold) 9%,transparent);font-size:.9rem;color:var(--muted)}
.legal-page h2{margin-top:34px}
.status-mail-link{font-weight:700;text-decoration:underline;text-underline-offset:.15em}
