/* MCP-first platform layer.
   Layout and composition only: every color, type size, border, radius, and motion value
   below is taken from the existing Biznet Gio tokens and components (styles.css,
   neo-lite-pro.css, managed-services.css, footer.css). No new visual language. */

/* ───────────── Navigation: mega menu built from mobile-nav, catalog-card, and footer patterns ───────────── */
.platform-nav{position:static}
.platform-nav .nav-item{display:flex;align-items:center}

.platform-nav .nav-chevron{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s}
.platform-nav .nav-link[aria-expanded=true]{color:var(--primary)}
.platform-nav .nav-link[aria-expanded=true] .nav-chevron{transform:rotate(180deg)}
.platform-nav [aria-current=page],.platform-nav [data-current=true]{color:var(--primary-text);box-shadow:0 2px var(--primary)}
.nav-panel{position:absolute;top:100%;left:0;right:0;z-index:60;background:var(--paper);border-bottom:1px solid var(--line);box-shadow:0 20px 30px #10121111;font-weight:400;text-align:left;cursor:default}
.nav-panel:not([hidden]){animation:content-in .35s both}
.nav-panel-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) minmax(240px,.95fr);gap:32px;max-width:1800px;margin:0 auto;padding:32px max(24px,5.2vw) 36px}
.nav-panel-grid-solutions{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(240px,.95fr)}
.nav-panel-grid-resources{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(240px,.95fr)}
.nav-group{display:flex;flex-direction:column;min-width:0}
.nav-group-heading{display:block;font-size:12px;line-height:20px;letter-spacing:.06em;color:var(--muted);padding-bottom:12px;margin-bottom:8px;border-bottom:1px solid var(--line)}
.platform-nav .nav-panel a,.platform-nav .nav-panel button{white-space:normal}
.platform-nav .nav-panel a span,.platform-nav .nav-panel button span{margin-left:0;font-size:inherit}
.platform-nav .nav-entry{display:grid;grid-template-columns:20px minmax(0,1fr);gap:12px;align-items:start;width:auto;padding:10px 8px;margin:0 -8px;text-align:left;color:var(--ink);transition:background .2s}
.platform-nav .nav-entry:hover,.platform-nav .nav-entry:focus-visible{background:var(--primary-soft);color:var(--ink)}
.platform-nav .nav-entry:hover strong{color:var(--primary-text)}
.platform-nav .nav-entry-compact{grid-template-columns:minmax(0,1fr);padding:8px}
.nav-entry .nav-icon{width:20px;height:20px;color:var(--muted);margin-top:0;transition:color .2s}
.nav-entry:hover .nav-icon{color:var(--primary)}
.nav-entry strong{display:block;font-size:14px;line-height:20px;font-weight:600;transition:color .2s}
.nav-entry small{display:block;font-size:12px;line-height:20px;color:var(--muted);font-weight:400}
.nav-tag{display:inline-block;margin-left:8px;padding:0 5px;border:1px solid #118D6233;color:var(--primary);font-style:normal;font-size:12px;line-height:18px;font-weight:400;letter-spacing:.04em;vertical-align:1px}
.nav-feature{display:flex;flex-direction:column;align-items:flex-start;gap:16px;padding:24px;background:var(--soft);border:1px solid var(--line);color:var(--ink);transition:background .2s}
.platform-nav a.nav-feature{padding:24px}
.platform-nav a.nav-feature:hover{background:var(--primary-soft);color:var(--ink)}
.nav-feature>.eyebrow{color:var(--primary-text);font-size:12px;line-height:20px}
.nav-feature>strong{font-size:20px;line-height:28px;letter-spacing:-.025em;font-weight:600}
.nav-feature-lines{display:block;font-size:12px;line-height:20px;color:var(--muted)}
.nav-feature-lines .activity-dot{display:inline-block;margin-right:8px;vertical-align:1px}
.nav-feature .text-link{margin-top:auto;font-size:14px;line-height:20px;gap:16px;padding:0}
.platform-nav .nav-feature .text-link span{font-size:16px;margin-left:0}
.nav-cta{white-space:nowrap}
@media(max-width:1260px){.platform-nav>a[href^="https://kb"]{display:none}}
@media(max-width:1150px){.site-header .portal-link{display:none}.nav-panel-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.nav-panel-grid>.nav-feature{display:none}}
@media(max-width:960px){.site-header .nav-actions .nav-cta{display:none}}

/* Mobile navigation: same row rhythm as .mobile-nav>a, grouped with native disclosure. */
.mobile-nav:not([hidden]){max-height:calc(100svh - var(--header));overflow:auto}
.mobile-nav-group>summary{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--line);cursor:pointer;list-style:none}
.mobile-nav-group>summary::-webkit-details-marker{display:none}
.mobile-nav-group>summary>span{font-size:20px;line-height:1;transition:transform .3s}
.mobile-nav-group[open]>summary{color:var(--primary)}
.mobile-nav-group[open]>summary>span{transform:rotate(45deg)}
.mobile-nav-group>div{display:flex;flex-direction:column;padding:4px 0 12px 16px;border-bottom:1px solid var(--line)}
.mobile-nav-group>div>a{padding:10px 0;font-size:14px;line-height:20px}
.mobile-nav-group>div>a small{font-size:12px;color:var(--primary);margin-left:8px}
.mobile-nav-group>div>.technical{color:var(--muted);padding:12px 0 4px}
.mobile-nav>.button{margin-top:20px;justify-content:space-between}

/* Footer: five platform groups instead of three. */
.site-footer .footer-links-platform{grid-template-columns:repeat(5,minmax(0,1fr));gap:24px}
.site-footer .footer-top:has(.footer-links-platform){grid-template-columns:minmax(0,.8fr) minmax(0,2fr)}
.footer-agent-cta{margin-top:24px;font-size:14px;line-height:20px;gap:16px}
@media(max-width:1100px){.site-footer .footer-links-platform{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:32px}}
@media(max-width:700px){.site-footer .footer-links-platform{grid-template-columns:minmax(0,1fr);gap:0}.site-footer .footer-top:has(.footer-links-platform){grid-template-columns:minmax(0,1fr)}}

/* ───────────── Homepage ───────────── */
.hero-audience{margin-top:26px;max-width:440px}
.hero-audience .scene-controls{justify-content:flex-start}
.hero-audience .scene-controls button{padding:12px 16px 12px 0;margin-right:16px}
.hero-audience .scene-controls button.active{font-weight:600}
.hero-audience>p{font-size:16px;line-height:28px;margin-top:16px;min-height:84px}
.hero-audience>p.is-switching{animation:content-in .45s both}
.hero .hero-copy>.hero-audience+.hero-ctas{margin-top:24px}

/* 01 / Chat-to-deploy workbench: AI Console panel + numbered steps. */
.mcp-section{border-bottom:1px solid var(--line)}
.mcp-workbench{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);border:1px solid var(--line);background:var(--surface)}
.mcp-workbench>.mcp-console{border:0;border-right:1px solid var(--line)}
.mcp-console .neo-ai-tabs{margin-top:24px}
.mcp-log{list-style:none;margin:0;padding:24px 0 8px;display:grid;gap:0;min-height:292px}
.mcp-log>li{display:grid;grid-template-columns:24px minmax(0,1fr);gap:16px;align-items:start;padding:16px 0;border-top:1px solid var(--line)}
.mcp-log>li:first-child{border-top:0;padding-top:0}
.mcp-log-prompt{grid-template-columns:minmax(0,1fr)!important}
.mcp-log-prompt>.technical{font-size:12px;line-height:20px;color:var(--muted)}
.mcp-log-prompt>p{font-size:20px;line-height:28px;letter-spacing:-.02em;color:var(--ink);margin-top:8px;padding-left:12px;border-left:1px solid var(--primary)}
.mcp-log-step>i{font-style:normal;color:var(--primary-text);font-size:16px;line-height:24px;text-align:center}
.mcp-log-step>i.activity-dot{width:6px;height:6px;margin:9px auto 0;background:var(--primary-text);animation:led-blink 3s steps(2) infinite}
.mcp-log-step strong{display:block;font-size:16px;line-height:24px;font-weight:600}
.mcp-log-step small{display:block;font-size:12px;line-height:20px;color:var(--muted);margin-top:2px}
.js-motion .mcp-console.is-playing .mcp-log-step{animation:content-in .45s both;animation-delay:calc(var(--step) * .35s + .15s)}
.mcp-console-foot{display:flex;justify-content:space-between;gap:16px;padding-top:16px;border-top:1px solid var(--line);font-size:8px;line-height:16px;letter-spacing:.04em;color:var(--muted)}
.mcp-steps{display:flex;flex-direction:column;padding:32px 40px 30px}
.mcp-step-list{list-style:none;margin:0;padding:0}
.mcp-step-list>li{display:grid;grid-template-columns:32px minmax(0,1fr);gap:12px;padding:24px 0;border-top:1px solid var(--line)}
.mcp-step-list>li:first-child{border-top:0;padding-top:0}
.mcp-step-list .technical{font-size:12px;line-height:28px;color:var(--primary-text)}
.mcp-step-list h3{font-size:24px;line-height:32px;letter-spacing:-.025em}
.mcp-step-list p{font-size:16px;line-height:28px;margin-top:8px;max-width:440px}
.mcp-steps>.product-footer{border-top:1px solid var(--line)}

/* 02 / Journeys: copy column + catalog-card grid (the directory card, reused). */
.journeys{border-bottom:1px solid var(--line)}

/* 03 / Agent stack: isometric layers driven by the service-list row pattern. */
.stack-section{border-bottom:1px solid var(--line)}
.stack-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:64px;align-items:center}
.stack-visual{position:relative;background:var(--soft);border:1px solid var(--line);padding:24px 24px 16px;min-width:0;overflow:hidden}
.stack-scene{width:100%;height:auto;overflow:visible;margin-top:8px}
.stack-part{transition:transform .5s cubic-bezier(.22,1,.36,1)}
.stack-part>.box-top,.stack-part>.chip-top{transition:stroke .25s,stroke-width .25s}
[data-stack-active=interface] [data-stack-part=interface],[data-stack-active=platform] [data-stack-part=platform],[data-stack-active=data] [data-stack-part=data],[data-stack-active=compute] [data-stack-part=compute],[data-stack-active=foundation] [data-stack-part=foundation]{transform:translateY(-8px)}
[data-stack-active=interface] [data-stack-part=interface]>.chip-top,[data-stack-active=platform] [data-stack-part=platform]>.box-top,[data-stack-active=data] [data-stack-part=data]>.box-top,[data-stack-active=compute] [data-stack-part=compute]>.box-top,[data-stack-active=foundation] [data-stack-part=foundation]>.box-top{stroke:var(--primary);stroke-width:2}
.stack-annotations{fill:var(--ink);font:600 8px var(--font);letter-spacing:.06em;pointer-events:none}
.stack-annotations path{fill:none;stroke:var(--primary);stroke-width:.7;opacity:.65}
.stack-annotations .stack-subtitle{fill:var(--muted);font-weight:400;letter-spacing:.04em}
.stack-annotations>g{transition:opacity .35s}
[data-stack-active] .stack-annotations>g{opacity:.4}
[data-stack-active=interface] [data-stack-label=interface],[data-stack-active=platform] [data-stack-label=platform],[data-stack-active=data] [data-stack-label=data],[data-stack-active=compute] [data-stack-label=compute],[data-stack-active=foundation] [data-stack-label=foundation]{opacity:1}
.stack-flow path{stroke-dasharray:10 120}
.stack-layers{list-style:none;margin:0;padding:0}
.stack-layers>li{border-top:1px solid var(--line)}
.stack-layers>li:last-child{border-bottom:1px solid var(--line)}
.stack-trigger{display:flex;align-items:center;gap:23px;width:100%;padding:22px 0;text-align:left;transition:color .25s}
.stack-trigger:hover,.stack-trigger[aria-pressed=true]{color:var(--primary)}
.stack-trigger[aria-pressed=true] .service-plus{transform:rotate(45deg)}
.stack-name{flex:1;font-size:20px;line-height:28px;letter-spacing:-.5px;font-weight:600}
.stack-name>small{display:block;font-size:12px;line-height:20px;letter-spacing:0;font-weight:400;color:var(--muted)}
.stack-chips{display:none;flex-wrap:wrap;gap:8px;padding:0 0 24px 39px}
.stack-trigger[aria-pressed=true]+.stack-chips{display:flex;animation:content-in .35s both}
.stack-chips>em,.chip-list>em{font:12px/18px var(--font);font-style:normal;color:var(--primary-text);border:1px solid #118D6233;padding:3px 5px;letter-spacing:.04em}

/* 06 / Recently shipped: product-stage card language at card scale. */
.shipped{border-bottom:1px solid var(--line)}
.shipped-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.shipped-card{display:flex;flex-direction:column;background:var(--surface);transition:background .2s}
.shipped-card:hover{background:var(--primary-soft)}
.shipped-card>.product-graphic{border-right:0;border-bottom:1px solid var(--line);padding:20px 20px 12px;min-height:220px}
.shipped-svg{width:100%;height:auto;margin-top:12px;overflow:visible}
.shipped-bubble{fill:var(--surface);stroke:#6F9C86;stroke-width:.8}
.shipped-bubble-agent{fill:#143A2A;stroke:#43775E}
.shipped-label{font:600 8px var(--font);letter-spacing:.06em;fill:var(--ink)}
.shipped-label-light{fill:#B9E9D2}
.shipped-chip-title{font-size:24px}
.shipped-info{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:28px 28px 24px;flex:1}
.shipped-info h3{font-size:24px;line-height:32px;letter-spacing:-.025em}
.shipped-info p{font-size:16px;line-height:28px}
.shipped-info .text-link{margin-top:auto;padding-top:12px}
.shipped-card:hover .text-link:after{transform:scaleX(1)}
.shipped-card:hover .text-link span{transform:translate(3px,-2px)}
.domain-section-platform{padding-top:104px}

/* ───────────── Product pages: NEO App ───────────── */
.app-hero-console{min-width:0}
.app-hero-console .mcp-log{min-height:0}
.deploy-tabs{grid-template-columns:repeat(6,1fr)}
.deploy-stage .chip-title{font-size:28px}
.app-compare{margin-top:96px}
.deploy-stage .product-info h3{font-size:40px}
.deploy-stage .product-specs strong{font-size:16px;line-height:24px}
.compare-table th:first-child{width:22%}
.compare-table td{white-space:normal!important}
.compare-table thead th:last-child,.compare-table td:last-child{color:var(--primary-text)}
.compare-table td:last-child strong{color:var(--ink)}
.chip-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}
.app-backend-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin-bottom:48px}
.app-backend-grid>article{border-top:1px solid var(--line);padding-top:24px}
.app-backend-grid .technical{font-size:12px;line-height:16px;color:var(--primary-text)}
.app-backend-grid h3{font-size:24px;line-height:32px;letter-spacing:-.025em;margin:12px 0}
.app-backend-grid p{font-size:16px;line-height:28px}
.app-usecases{grid-template-columns:repeat(3,minmax(0,1fr))}
.app-usecases .catalog-card{min-height:170px}
.app-related{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:40px}
.neo-plan-table .plan-use{white-space:normal;color:var(--muted);font-size:12px;line-height:20px;max-width:300px}
.app-addons{margin-top:48px}
.app-addons>.technical{display:block;font-size:12px;line-height:16px;color:var(--primary-text);margin-bottom:16px}

/* ───────────── Inner-page compositions ───────────── */
.platform-breadcrumb{padding-top:16px}
.related-section{border-top:1px solid var(--line)}
.related-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.enterprise-paths{padding-top:72px;padding-bottom:24px}
.enterprise-paths .catalog-results{grid-template-columns:repeat(3,minmax(0,1fr))}
.enterprise-paths .catalog-card{min-height:200px}
.enterprise-paths .catalog-card ul{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.enterprise-paths .catalog-card li{font:12px/18px var(--font);color:var(--primary);border:1px solid #118D6233;padding:3px 5px;letter-spacing:.04em}
.enterprise-proof{padding-bottom:72px}
.enterprise-proof .testimonial-stage{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:32px;align-items:end}
.enterprise-proof .testimonial-panel{min-height:0}
.enterprise-proof .enterprise-proof-cta{display:flex;flex-direction:column;align-items:flex-start;gap:16px;padding-left:32px;border-left:1px solid var(--line)}
.enterprise-proof .enterprise-proof-cta p{font-size:16px;line-height:28px}
.price-models{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;padding-top:56px;padding-bottom:16px}
.price-models>article{border-top:1px solid var(--line);padding-top:24px;display:flex;flex-direction:column;align-items:flex-start;gap:12px}
.price-models .technical{font-size:12px;line-height:16px;color:var(--primary-text)}
.price-models h3{font-size:24px;line-height:32px;letter-spacing:-.025em}
.price-models p{font-size:16px;line-height:28px}
.price-models strong{font-size:24px;line-height:32px;letter-spacing:-.025em}
.price-models strong small{font-size:12px;line-height:20px;font-weight:400;letter-spacing:0;color:var(--muted);margin-left:8px}
.price-models .text-link{margin-top:auto;font-size:14px;line-height:20px;gap:16px}

/* ───────────── Responsive composition ───────────── */
@media(max-width:1150px){
  .mcp-steps{padding:28px 27px 25px}
  .stack-layout{gap:40px}
  .related-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:960px){
  .hero-audience{max-width:none}
  .hero-audience>p{font-size:16px;min-height:112px}
  .mcp-workbench{grid-template-columns:1fr}
  .mcp-workbench>.mcp-console{border-right:0;border-bottom:1px solid var(--line)}
  .stack-layout{grid-template-columns:1fr}
  .shipped-grid{grid-template-columns:1fr}
  .deploy-tabs{grid-template-columns:repeat(6,minmax(120px,1fr));overflow-x:auto}
  .app-backend-grid{grid-template-columns:1fr 1fr}
  .app-usecases,.app-related{grid-template-columns:1fr 1fr}
  .enterprise-paths .catalog-results{grid-template-columns:1fr}
  .enterprise-proof .testimonial-stage{grid-template-columns:1fr}
  .enterprise-proof .enterprise-proof-cta{padding-left:0;border-left:0;padding-top:24px;border-top:1px solid var(--line)}
  .price-models{grid-template-columns:1fr;gap:24px}
}
@media(max-width:700px){
  .hero-audience .scene-controls button{margin-right:8px;padding-right:8px}
  .mcp-log-prompt>p{font-size:16px;line-height:24px}
  .mcp-steps{padding:24px}
  .mcp-step-list h3{font-size:20px;line-height:28px}
  .stack-visual{padding:16px 12px 8px}
  .stack-chips{padding-left:0}
  .shipped-info{padding:24px 20px}
  .app-backend-grid{grid-template-columns:1fr}
  .domain-section-platform{padding-top:64px}
  .deploy-stage .product-info h3{font-size:32px}
  .compare-table th:first-child{width:auto}
}
@media(prefers-reduced-motion:reduce){
  .nav-panel:not([hidden]),.hero-audience>p.is-switching,.stack-trigger[aria-pressed=true]+.stack-chips{animation:none}
  .js-motion .mcp-console.is-playing .mcp-log-step{animation:none}
}
.price-page .platform-breadcrumb{padding-top:24px}
@media(max-width:700px){
  .compare-table tr{grid-template-columns:1fr 1fr}
  .compare-table tbody th{grid-column:1/-1}
  .neo-plan-table .plan-use{grid-column:1/-1;max-width:none}
  .app-addons .neo-plan-table tr{grid-template-columns:1fr 1fr auto}
  .app-addons .neo-plan-table tbody th{grid-column:1/-1}
}
@media(max-width:700px){
  #main.app-main .neo-plan-table tbody td[data-label]:not(.neo-plan-price){display:flex}
}

/* Revision: uniform 14px type across the desktop navigation and its panels. */
.platform-nav>a span,
.platform-nav .nav-entry small,
.platform-nav .nav-group-heading,
.platform-nav .nav-tag,
.platform-nav .nav-feature>.eyebrow,
.platform-nav .nav-feature>strong,
.platform-nav .nav-feature-lines,
.platform-nav .nav-feature .text-link,
.platform-nav .nav-feature .text-link span{font-size:14px;line-height:20px}
.platform-nav .nav-tag{line-height:18px}

/* Revision: homepage section headings stack in a single column. */
.home-page .section-heading{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:24px}
.home-page .section-heading>*,.home-page .section-heading>div,.home-page .section-heading p{max-width:none;width:100%}
.home-page .section-heading .text-link{margin-top:16px}

/* Revision: compact journey board — three aligned columns, scannable product rows. */
.journeys{border-bottom:1px solid var(--line)}
.journey-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(5,auto);gap:1px;background:var(--line);border:1px solid var(--line)}
.journey{display:grid;grid-row:span 5;grid-template-rows:subgrid;row-gap:0;align-content:start;background:var(--surface);padding:28px 28px 16px}
.journey>.eyebrow{color:var(--primary-text);font-size:12px;line-height:20px}
.journey>h3{font-size:20px;line-height:28px;letter-spacing:-.025em;margin-top:12px}
.journey>p{font-size:14px;line-height:24px;margin-top:8px}
.journey-proof{display:flex;align-items:baseline;gap:12px;margin-top:20px;padding:16px 0;border-top:1px solid var(--line)}
.journey-proof>strong{font-size:28px;line-height:36px;letter-spacing:-1px;font-weight:600;white-space:nowrap}
.journey-proof>strong>span{font-size:14px;letter-spacing:0;margin-left:4px}
.journey-proof>.technical{font-size:12px;line-height:16px;color:var(--muted)}
.journey-links{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.journey-links li+li{border-top:1px solid var(--line)}
.journey-links a{display:grid;grid-template-columns:minmax(0,1fr) 16px;gap:12px;align-items:center;min-height:56px;padding:10px 8px;margin:0 -8px;transition:background .2s}
.journey-links a:hover,.journey-links a:focus-visible{background:var(--primary-soft)}
.journey-links strong{display:block;font-size:14px;line-height:20px;font-weight:600;transition:color .2s}
.journey-links a:hover strong{color:var(--primary-text)}
.journey-links small{display:block;font-size:12px;line-height:20px;color:var(--muted)}
.journey-links i{font-style:normal;font-size:16px;line-height:1;color:var(--primary);transition:transform .3s}
.journey-links a:hover i{transform:translate(3px,-2px)}
.journey-links .nav-tag{line-height:16px;margin-left:6px}
@media(max-width:960px){
  .journey-board{grid-template-columns:1fr;grid-template-rows:none}
  .journey{grid-row:auto;grid-template-rows:none}
}
@media(max-width:700px){.journey{padding:24px 20px 12px}}

/* ───────────── Revision: type normalization (all pages) ─────────────
   Navigation triggers 14px · primary body text 16px · small body text and hints 14px.
   Uppercase tracked labels (.technical / .eyebrow), index numbers, chips, data values,
   and display quotes keep their existing sizes. */
:root body .platform-nav .nav-link{font-size:14px;line-height:20px}

/* Primary body text → 16px */
:root body .hero-copy>p,
:root body .neo-hero-copy>p,
:root body .ms-hero-copy>p,
:root body .ms-lead,
:root body .price-hero-layout>div>p,
:root body .journey>p,
:root body .metric-context>p,
:root body .neo-ai-description>p,
:root body .ms-facility-grid>div>p{font-size:16px;line-height:28px;letter-spacing:0}
:root body .metric-context>p{line-height:24px}

/* Small body text and hints → 14px */
:root body .announcement,
:root body .announcement a,
:root body .announcement a span,
:root body .catalog-card>p,
:root body .journey-links small,
:root body .stack-name>small,
:root body .mcp-log-step small,
:root body .neo-spec-list dt,
:root body .neo-spec-list dd>span,
:root body .neo-summary-specs dt,
:root body .neo-summary-specs dd,
:root body .neo-summary-price>span,
:root body .neo-order-note,
:root body .neo-price-note,
:root body .neo-annual-offer>p,
:root body .neo-cashback-offer dt,
:root body .neo-promo>summary,
:root body .neo-promo-code>button,
:root body .neo-layer-description,
:root body .neo-layer-controls button,
:root body .neo-ai-tabs>button,
:root body .neo-start-price small,
:root body .neo-iops-plot small,
:root body .neo-breadcrumb,
:root body .neo-breadcrumb a,
:root body .ms-breadcrumb,
:root body .ms-breadcrumb a,
:root body .product-footer>div>span,
:root body .product-footer small,
:root body .product-specs span,
:root body .product-below p,
:root body .product-below p a,
:root body .network-facts>div>span,
:root body .network-caption,
:root body .network-mode button,
:root body .metric strong>span,
:root body .network-facts strong span,
:root body .hero-audience .scene-controls button,
:root body .domain-extension-options button span,
:root body .domain-workbench-foot>span,
:root body .domain-field-label,
:root body .domain-help,
:root body .domain-error,
:root body .testimonial-attribution>span,
:root body .footer-address,
:root body .site-footer .footer-nav-panel>a,
:root body .site-footer .footer-nav-panel>button,
:root body .ms-index nav a,
:root body .ms-mode-switch button,
:root body .ms-dc>strong,
:root body .ms-hyperscalers>span,

:root body .price-scene>p,
:root body .price-search>label,
:root body .price-search>p,
:root body .price-table-note,
:root body .price-terms button,
:root body .price-models strong small,
:root body .journey-proof>strong>span{font-size:14px;line-height:20px;letter-spacing:0}
:root body .catalog-card>p,:root body .neo-annual-offer>p{line-height:22px}
:root body .ms-chapter .ms-recovery-note{font-size:14px!important;line-height:22px!important}
:root body .ms-facility-grid p{font-size:16px!important;line-height:28px!important}
:root body .ms-chapter .ms-security-steps p{font-size:16px!important;line-height:28px!important}
:root body .ms-facility-grid strong>span,:root body .neo-performance-strip small{font-size:14px;line-height:20px}

/* ═════════════ Typography hierarchy refinement (all pages) ═════════════
   Scale (≥16px on a 4px step): 72 · 64 · 48 · 44 · 40 · 36 · 32 · 28 · 24 · 20 · 16
   Display H1 64/72 → 56/64 → 48/56 → 40/48 · tracking −0.035em → −0.03em → −0.03em → −0.025em
   Section H2 44/52 → 36/44 → 32/40 · tracking −0.025em
   Titles  L 28/36 · M 24/32 · S 20/28 · tracking −0.02em
   Body 16/28 (reading) · 16/24 (UI, single line) · Small 14/22 (reading) · 14/20 (UI)
   Labels 12/16–20 uppercase, tracking +0.06em — decorative / supplementary only (min. 12px)
   Weights: 400 and 600 only (existing Geist Regular / Semibold). */

/* Reading paragraphs at 16px: unify line height to 28px. */
:root body .section-heading p,
:root body .product-info>p,
:root body .network-copy>p,
:root body .domain-intro>p,
:root body .closing-bottom p,
:root body .neo-noscript,
:root body noscript p{line-height:28px}
:root body .mobile-nav>a,:root body .mobile-nav>button,:root body .mobile-nav-group>summary{line-height:24px}

/* Display numbers and product titles: line height = size + 8px (stays on the 4px grid at every breakpoint). */
:root body .product-info h3{line-height:calc(1em + 8px);letter-spacing:-.03em}
:root body .product-info h3>span{line-height:1}
:root body .metric strong{line-height:calc(1em + 8px);letter-spacing:-.04em}
:root body .network-facts strong{line-height:calc(1em + 8px);letter-spacing:-.03em}
:root body .product-footer strong{line-height:calc(1em + 8px);letter-spacing:-.025em}
:root body .product-specs strong{line-height:24px;letter-spacing:-.01em}
:root body .catalog-card h3{line-height:28px;letter-spacing:-.02em}
:root body .catalog-card h3>span{line-height:28px}

/* Label tiers (revised rule set):
   · 8px  — illustration details and decorative labels (scene annotations, schematic frame labels,
            console chrome, SVG text). Original component sizes are kept; no overrides needed.
   · 12px — low-priority supplementary labels (overlines, metric captions, counts, index numbers, legal).
   · 14px — readable content, including technology tags/chips. */
:root body .stack-chips>em,
:root body .chip-list>em,
:root body .enterprise-paths .catalog-card li,
:root body .journey-links .nav-tag{font-size:14px;line-height:20px;letter-spacing:.02em}
/* Revision: "Powered by" is a decorative label — 8px by request. */
:root body .technology-row>.powered-by{font-size:8px;line-height:16px;letter-spacing:.06em}
:root body .mobile-nav-group>div>a small{font-size:14px;line-height:20px}
/* 12px uppercase supplementary labels share one tracking value. */
:root body .footer-copyright,
:root body .site-footer .back-top,
:root body .price-product-index>summary>span{letter-spacing:.06em}
:root body .skip-link{line-height:24px}
/* Scaled SVG illustrations: user-unit sizes compensate the drawing scale so details render ≈8px on desktop. */
:root body .ms-iso-annotations,:root body .ms-iso-number{font-size:12px}
:root body .ms-iso-annotations .ms-iso-subtitle{transform:translateY(4px)}
:root body .neo-nvme-label{font-size:11.5px}
:root body .chip-subtitle{font-size:11px;letter-spacing:.5px}
:root body .stack-annotations{font-size:9.5px}
:root body .ms-iso-annotations .ms-iso-subtitle{transform:translateY(8px)}
:root body .ms-iso-annotations text:last-of-type{transform:translate(-26px,0)}
/* Revision: product titles in journey link rows are 16px. */
:root body .journey-links strong{font-size:16px;line-height:24px;letter-spacing:-.01em}

/* Revision: bento journey board — Agents featured (spans two rows), Aplikasi + Enterprise stacked. */
.journey-board{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);grid-template-rows:auto auto}
.journey{display:flex;flex-direction:column;grid-row:auto;grid-template-rows:none;padding:28px}
.journey-board>.journey:first-child{grid-row:span 2;padding:36px}
.journey-board>.journey:first-child>h3{font-size:28px;line-height:36px;letter-spacing:-.025em;max-width:520px}
.journey-board>.journey:first-child>p{font-size:16px;line-height:28px;max-width:520px;margin-top:12px}
.journey-board>.journey:first-child .journey-proof>strong{font-size:40px;line-height:48px;letter-spacing:-.04em}
.journey-board>.journey:first-child .journey-proof{margin-top:28px;padding:20px 0}
.journey-proof{margin-top:16px;padding:12px 0}
.journey-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin-top:auto;background:var(--line);border:1px solid var(--line)}
.journey-board>.journey:first-child .journey-links{margin-top:auto}
.journey-links li+li{border-top:0}
.journey-links li{display:flex;background:var(--surface)}
.journey-links a{flex:1;margin:0;padding:14px 16px;min-height:72px;align-items:start;grid-template-columns:minmax(0,1fr) 16px}
.journey-board>.journey:first-child .journey-links a{padding:20px;min-height:104px}
.journey-links i{margin-top:4px}
.journey-board>.journey:first-child .journey-proof+.journey-links{margin-top:28px}
@media(max-width:1150px){.journey-board{grid-template-columns:1fr 1fr}.journey-board>.journey:first-child{grid-row:auto;grid-column:1/-1}}
@media(max-width:960px){.journey-board{grid-template-columns:1fr}.journey-board>.journey:first-child{grid-column:auto}}
@media(max-width:700px){.journey,.journey-board>.journey:first-child{padding:24px 20px}.journey-links{grid-template-columns:1fr}.journey-board>.journey:first-child>h3{font-size:24px;line-height:32px}.journey-board>.journey:first-child .journey-proof>strong{font-size:32px;line-height:40px}}
.journey-board>.journey:first-child .journey-proof+.journey-links{margin-top:28px;flex:1;grid-auto-rows:1fr}
.journey-board>.journey:first-child .journey-links a{align-items:end}
.journey-board>.journey:first-child .journey-links i{align-self:start;margin-top:0}
@media(max-width:1150px){.journey-board>.journey:first-child .journey-proof+.journey-links{flex:none;grid-auto-rows:auto}.journey-board>.journey:first-child .journey-links a{align-items:start;min-height:88px}}
.journey-links a{position:relative}
.journey-links .nav-icon{position:absolute;left:20px;top:20px;width:24px;height:24px;color:var(--primary);transition:color .2s}
@media(max-width:1150px){.journey-board>.journey:first-child .journey-links a{padding-top:60px}}

/* Revision: journeys as a tabbed switcher (product-tab pattern). One journey panel at a time. */
.journey-tabs{grid-template-columns:repeat(3,1fr)}
.journey-tabs .nav-icon{width:20px;height:20px;flex-shrink:0}
.journey-board{display:block;background:var(--surface);border:1px solid var(--line);gap:0}
.journey-board>.journey,.journey-board>.journey:first-child{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);grid-template-rows:auto auto auto 1fr;column-gap:56px;grid-row:auto;grid-column:auto;padding:40px;background:var(--surface)}
.journey-board>.journey[hidden]{display:none}
.journey-board>.journey>*{grid-column:1}
.journey-board>.journey>h3,.journey-board>.journey:first-child>h3{font-size:28px;line-height:36px;letter-spacing:-.025em;max-width:480px}
.journey-board>.journey>p,.journey-board>.journey:first-child>p{font-size:16px;line-height:28px;max-width:480px;margin-top:12px}
.journey-board>.journey .journey-proof,.journey-board>.journey:first-child .journey-proof{margin-top:28px;padding:20px 0 0;align-self:start}
.journey-board>.journey .journey-proof>strong,.journey-board>.journey:first-child .journey-proof>strong{font-size:40px;line-height:48px;letter-spacing:-.04em}
.journey-board>.journey .journey-links,.journey-board>.journey:first-child .journey-links,.journey-board>.journey:first-child .journey-proof+.journey-links{grid-column:2;grid-row:1/-1;margin-top:0;flex:none;grid-auto-rows:1fr;align-self:stretch}
.journey-board>.journey .journey-links a,.journey-board>.journey:first-child .journey-links a{padding:60px 20px 20px;min-height:148px;align-items:end}
.journey-board>.journey .journey-links i,.journey-board>.journey:first-child .journey-links i{align-self:start;margin-top:-40px}
.journey-board>.journey:not([hidden]){animation:content-in .45s both}
@media(max-width:1150px){
  .journey-board>.journey,.journey-board>.journey:first-child{column-gap:32px;padding:32px}
  .journey-board>.journey .journey-links a,.journey-board>.journey:first-child .journey-links a{padding-top:60px;min-height:132px}
}
@media(max-width:960px){
  .journey-board>.journey,.journey-board>.journey:first-child{grid-template-columns:1fr;grid-template-rows:none}
  .journey-board>.journey .journey-links,.journey-board>.journey:first-child .journey-links,.journey-board>.journey:first-child .journey-proof+.journey-links{grid-column:1;grid-row:auto;margin-top:28px}
}
@media(max-width:700px){
  .journey-tabs{grid-template-columns:repeat(3,minmax(110px,1fr));overflow-x:auto}
  .journey-board>.journey,.journey-board>.journey:first-child{padding:24px 20px}
  .journey-board>.journey>h3,.journey-board>.journey:first-child>h3{font-size:24px;line-height:32px}
  .journey-board>.journey .journey-proof>strong,.journey-board>.journey:first-child .journey-proof>strong{font-size:32px;line-height:40px}
  .journey-board>.journey .journey-links{grid-template-columns:1fr}
  .journey-board>.journey .journey-links a,.journey-board>.journey:first-child .journey-links a{min-height:0;padding:56px 16px 16px}
}
@media(prefers-reduced-motion:reduce){.journey-board>.journey:not([hidden]){animation:none}}
.journey-board>.journey .journey-links a,.journey-board>.journey:first-child .journey-links a{align-items:start}

/* Revision: journeys as side navigation + panel. Selected item follows the catalog-category active pattern. */
.journey-split{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr);border:1px solid var(--line);background:var(--surface)}
.journey-nav{display:flex;flex-direction:column;border-right:1px solid var(--line)}
.journey-nav>button{display:flex;flex-direction:column;align-items:flex-start;gap:8px;flex:1;padding:28px 32px;text-align:left;border-left:2px solid transparent;border-bottom:1px solid var(--line);transition:background .25s,border-color .25s}
.journey-nav>button:last-child{border-bottom:0}
.journey-nav>button:hover{background:var(--soft)}
.journey-nav>button[aria-selected=true]{background:var(--primary-soft);border-left-color:var(--primary)}
.journey-nav .eyebrow{color:var(--muted);font-size:12px;line-height:20px}
.journey-nav>button[aria-selected=true] .eyebrow{color:var(--primary-text)}
.journey-nav-title{font-size:20px;line-height:28px;letter-spacing:-.02em;font-weight:600;color:var(--ink)}
.journey-nav .journey-proof{display:flex;align-items:baseline;gap:12px;margin:4px 0 0;padding:0;border:0}
.journey-nav .journey-proof>strong{font-size:28px;line-height:36px;letter-spacing:-.03em}
.journey-panel{display:flex;flex-direction:column;gap:24px;padding:32px}
.journey-panel[hidden]{display:none}
.journey-panel:not([hidden]){animation:content-in .45s both}
.journey-panel>p{font-size:16px;line-height:28px;max-width:560px}
.journey-panel .journey-links{flex:1;margin-top:0;grid-auto-rows:1fr}
.journey-panel .journey-links a{padding:60px 20px 20px;min-height:148px;align-items:start}
.journey-panel .journey-links i{align-self:start;margin-top:-40px}
@media(max-width:1150px){.journey-split{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}.journey-nav>button{padding:24px}.journey-panel{padding:24px}}
@media(max-width:960px){
  .journey-split{grid-template-columns:1fr}
  .journey-nav{flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line)}
  .journey-nav>button{min-width:240px;border-left:0;border-bottom:2px solid transparent;border-right:1px solid var(--line)}
  .journey-nav>button:last-child{border-right:0;border-bottom:2px solid transparent}
  .journey-nav>button[aria-selected=true]{border-bottom-color:var(--primary)}
}
@media(max-width:700px){
  .journey-nav>button{min-width:220px;padding:20px}
  .journey-nav-title{font-size:16px;line-height:24px}
  .journey-panel{padding:20px}
  .journey-panel .journey-links{grid-template-columns:1fr;grid-auto-rows:auto}
  .journey-panel .journey-links a{min-height:0;padding:56px 16px 16px}
}
@media(prefers-reduced-motion:reduce){.journey-panel:not([hidden]){animation:none}}

/* Revision: side nav + panel — refined design.
   Nav: numbered rows (service-list rhythm) with a directional arrow on the active row.
   Panel: description + metric header, products as compact icon rows that fill the panel. */
.journey-nav>button{display:grid;grid-template-columns:28px minmax(0,1fr) 20px;align-items:start;gap:16px;padding:28px 28px 28px 30px}
.journey-nav-index{font-size:12px;line-height:28px;color:var(--muted);font-weight:600;letter-spacing:.06em}
.journey-nav-body{display:flex;flex-direction:column;gap:6px;min-width:0}
.journey-nav-arrow{font-style:normal;font-size:20px;line-height:28px;color:var(--primary);opacity:0;transform:translateX(-6px);transition:opacity .25s,transform .25s}
.journey-nav>button:hover .journey-nav-arrow{opacity:.5;transform:none}
.journey-nav>button[aria-selected=true] .journey-nav-arrow{opacity:1;transform:none}
.journey-nav>button[aria-selected=true] .journey-nav-index{color:var(--primary-text)}
.journey-nav>button[aria-selected=true] .journey-nav-title{color:var(--primary-text)}
.journey-panel{gap:0;padding:0}
.journey-panel-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px;align-items:end;padding:32px 32px 28px;border-bottom:1px solid var(--line)}
.journey-panel-head>p{font-size:16px;line-height:28px;max-width:480px}
.journey-panel-head .journey-proof{display:flex;flex-direction:column;align-items:flex-end;gap:4px;margin:0;padding:0;border:0;text-align:right}
.journey-panel-head .journey-proof>strong{font-size:40px;line-height:48px;letter-spacing:-.04em}
.journey-panel .journey-links{flex:1;grid-auto-rows:1fr;border:0;margin:0}
.journey-panel .journey-links a{display:grid;grid-template-columns:40px minmax(0,1fr) 16px;gap:16px;align-items:center;padding:20px 32px;min-height:96px}
.journey-panel .journey-links i{align-self:center;margin-top:0}
.journey-icon{display:grid;place-items:center;width:40px;height:40px;background:var(--primary-soft);border:1px solid var(--line);color:var(--primary);transition:background .2s,border-color .2s}
.journey-panel .journey-links .journey-icon .nav-icon{position:static;width:20px;height:20px;color:inherit}
.journey-panel .journey-links a:hover .journey-icon{background:var(--surface);border-color:var(--primary)}
@media(max-width:1150px){
  .journey-nav>button{padding:24px 20px 24px 22px;gap:12px}
  .journey-panel-head{padding:24px}
  .journey-panel .journey-links a{padding:16px 24px}
}
@media(max-width:960px){
  .journey-nav>button{grid-template-columns:24px minmax(0,1fr);min-width:260px}
  .journey-nav-arrow{display:none}
}
@media(max-width:700px){
  .journey-nav>button{min-width:230px;padding:18px 16px}
  .journey-panel-head{grid-template-columns:1fr;gap:16px;padding:20px}
  .journey-panel-head .journey-proof{flex-direction:row;align-items:baseline;gap:12px;text-align:left}
  .journey-panel-head .journey-proof>strong{font-size:32px;line-height:40px}
  .journey-panel .journey-links{grid-template-columns:1fr;grid-auto-rows:auto}
  .journey-panel .journey-links a{padding:16px 20px;min-height:0}
}

/* Revision: compact side nav + panel. Tighter rhythm on an 8px grid; same structure and styling. */
.journey-nav>button{padding:20px 24px 20px 26px;gap:12px;grid-template-columns:24px minmax(0,1fr) 20px}
.journey-nav-index{line-height:24px}
.journey-nav-body{gap:4px}
.journey-nav-title{font-size:16px;line-height:24px;letter-spacing:-.01em}
.journey-nav-arrow{font-size:16px;line-height:24px}
.journey-panel-head{padding:20px 24px;gap:24px;align-items:center}
.journey-panel-head>p{font-size:16px;line-height:24px}
.journey-panel-head .journey-proof{flex-direction:row;align-items:baseline;gap:8px}
.journey-panel-head .journey-proof>strong{font-size:28px;line-height:36px;letter-spacing:-.03em}
.journey-panel .journey-links a{grid-template-columns:32px minmax(0,1fr) 16px;gap:12px;padding:14px 24px;min-height:72px}
.journey-icon{width:32px;height:32px}
.journey-panel .journey-links .journey-icon .nav-icon{width:18px;height:18px}
.journey-panel .journey-links strong{font-size:16px;line-height:24px}
.journey-panel .journey-links small{font-size:14px;line-height:20px}
@media(max-width:1150px){.journey-nav>button{padding:18px 18px 18px 20px}.journey-panel-head{padding:18px 20px}.journey-panel .journey-links a{padding:12px 20px}}
@media(max-width:960px){.journey-nav>button{min-width:240px}}
@media(max-width:700px){
  .journey-nav>button{min-width:210px;padding:16px}
  .journey-panel-head{grid-template-columns:1fr;gap:8px;padding:16px}
  .journey-panel .journey-links a{padding:12px 16px;min-height:0}
}
@media(max-width:700px){.journey-nav>button{min-width:264px}}
/* Revision: journey nav without index numbers. */
.journey-nav>button{grid-template-columns:minmax(0,1fr) 20px}
@media(max-width:960px){.journey-nav>button{grid-template-columns:minmax(0,1fr)}}

/* Revision: journeys as three separate cards. Card language = product-stage / catalog-card
   (surface, 1px line border, square corners); rows aligned across cards with subgrid. */
.journey-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(5,auto);gap:0 24px}
.journey-card{display:grid;grid-row:span 5;grid-template-rows:subgrid;row-gap:0;background:var(--surface);border:1px solid var(--line);transition:border-color .25s}
.journey-card:hover{border-color:#6F9C86}
.journey-card>.eyebrow{color:var(--primary-text);font-size:12px;line-height:20px;padding:28px 28px 0}
.journey-card>h3{font-size:20px;line-height:28px;letter-spacing:-.02em;padding:8px 28px 0}
.journey-card>p{font-size:16px;line-height:24px;padding:8px 28px 0}
.journey-card>.journey-proof{display:flex;align-items:baseline;gap:8px;margin:20px 28px 0;padding:16px 0;border-top:1px solid var(--line)}
.journey-card>.journey-proof>strong{font-size:28px;line-height:36px;letter-spacing:-.03em}
.journey-card>.journey-proof>.technical{margin-left:4px}
.journey-card .journey-links{display:block;margin:0;border:0;border-top:1px solid var(--line);background:none;align-self:end}
.journey-card .journey-links li{display:block;background:none}
.journey-card .journey-links li+li{border-top:1px solid var(--line)}
.journey-card .journey-links a{display:grid;grid-template-columns:32px minmax(0,1fr) 16px;gap:12px;align-items:center;margin:0;padding:12px 28px;min-height:68px}
.journey-card .journey-links i{align-self:center;margin-top:0}
.journey-card .journey-icon{width:32px;height:32px}
.journey-card .journey-links .journey-icon .nav-icon{position:static;width:18px;height:18px;color:inherit}
.journey-card .journey-links a:hover .journey-icon{background:var(--surface);border-color:var(--primary)}
.journey-card .journey-links strong{font-size:16px;line-height:24px}
.journey-card .journey-links small{font-size:14px;line-height:20px}
@media(max-width:1150px){
  .journey-cards{gap:0 16px}
  .journey-card>.eyebrow{padding:24px 20px 0}.journey-card>h3,.journey-card>p{padding-left:20px;padding-right:20px}
  .journey-card>.journey-proof{margin:16px 20px 0}
  .journey-card .journey-links a{padding:12px 20px}
}
@media(max-width:960px){
  .journey-cards{grid-template-columns:1fr;grid-template-rows:none;gap:16px}
  .journey-card{grid-row:auto;grid-template-rows:none}
}
.journey-card .journey-links{align-self:start}

/* Revision: 8px decorative / illustration labels — readability tuning.
   Tiny uppercase text needs open tracking (+0.08em) and a 1.5 line height (12px);
   numerals and mixed case use lighter tracking (+0.04em). */
:root body .technology-row>.powered-by,
:root body .cloud-solutions-label,
:root body .graphic-meta,
:root body .graphic-bottom,
:root body .mcp-console-foot,
:root body .neo-ai-head,
:root body .neo-ai-head .technical,
:root body .ms-dc>.technical,
:root body .ms-interconnect-origin>.technical,
:root body .ms-radar small,
:root body .demo-label{line-height:12px;letter-spacing:.08em}
:root body .scene-label{line-height:12px;letter-spacing:.08em}
:root body .scene-label>span:last-child{line-height:12px;letter-spacing:.06em;margin-top:2px}
:root body .scene-controls button span{line-height:12px;letter-spacing:.04em}
/* SVG illustration labels: same tracking logic (line height is set by text positions). */
:root body .map-cloud text,:root body .map-annotations,:root body .stack-annotations,:root body .shipped-label,
:root body .ms-iso-annotations,:root body .neo-nvme-label{letter-spacing:.08em}
:root body .map-annotations .map-annotation-small,:root body .map-cloud .cloud-providers,
:root body .stack-annotations .stack-subtitle,:root body .ms-iso-annotations .ms-iso-subtitle{letter-spacing:.06em}
:root body .chip-subtitle{letter-spacing:.06em}
:root body .ms-iso-number{letter-spacing:.04em}

/* Revision: every section heading (.section-heading, .neo-section-heading) follows the homepage pattern:
   one column, heading first, supporting text and link below, all spanning the container width. */
:root body .section-heading,
:root body .neo-section-heading{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:24px}
:root body .section-heading>*,
:root body .section-heading>div,
:root body .section-heading p,
:root body .neo-section-heading>*,
:root body .neo-section-heading>p{max-width:none;width:100%}
:root body .section-heading .text-link{margin-top:16px}
@media(max-width:700px){:root body .section-heading,:root body .neo-section-heading{gap:16px}}
:root body .neo-section-heading h2{margin-top:0}

/* NEO App deploy illustration: Source → NEO App → Live pipeline, drawn with the chip-diagram vocabulary
   (board grid, traces, chip base/inner, corner marks, pins, flow packets, LED). */
.deploy-pipeline .deploy-glyph{fill:none;stroke:#91DDB9;stroke-width:1;stroke-linecap:round;stroke-linejoin:round}
.deploy-pipeline [data-icon]{display:none}
.deploy-stage[data-method=mcp] [data-icon=mcp],.deploy-stage[data-method=git] [data-icon=git],.deploy-stage[data-method=zip] [data-icon=zip],
.deploy-stage[data-method=template] [data-icon=template],.deploy-stage[data-method=dockerfile] [data-icon=dockerfile],.deploy-stage[data-method=image] [data-icon=image]{display:inline}
.deploy-node-title{font:600 16px var(--font);fill:#F9FBFD;letter-spacing:.02em}
.deploy-node-labels{font:600 11px var(--font);fill:var(--muted);letter-spacing:.08em}
.deploy-stage.switching .deploy-source{animation:content-in .45s both}
[data-theme=dark] .deploy-node-labels{fill:#A4BFB1}
@media(prefers-reduced-motion:reduce){.deploy-stage.switching .deploy-source{animation:none}}

/* Agent stack, dark mode: keep the light-mode two-tone rhythm (light slabs alternate with dark racks). */
[data-theme=dark] .stack-scene .stack-part:not(.rack)>.box-top{fill:#6F9C86;stroke:#91BDA7}
[data-theme=dark] .stack-scene .stack-part:not(.rack)>.box-front{fill:#43775E;stroke:#91BDA7}
[data-theme=dark] .stack-scene .stack-part:not(.rack)>.box-side{fill:#285440;stroke:#91BDA7}
[data-theme=dark] .stack-scene .rack>.box-top{fill:#183F2E;stroke:#43775E}
[data-theme=dark] .stack-scene .rack>.box-front{fill:#102A1D;stroke:#43775E}
[data-theme=dark] .stack-scene .rack>.box-side{fill:#0B1610;stroke:#43775E}
[data-theme=dark] .stack-scene .rack-vent{stroke:#43775E}
[data-theme=dark] .stack-scene ellipse{opacity:.35}
[data-theme=dark] [data-stack-active=interface] .stack-scene [data-stack-part=interface]>.box-top,
[data-theme=dark] [data-stack-active=platform] .stack-scene [data-stack-part=platform]>.box-top,
[data-theme=dark] [data-stack-active=data] .stack-scene [data-stack-part=data]>.box-top,
[data-theme=dark] [data-stack-active=compute] .stack-scene [data-stack-part=compute]>.box-top,
[data-theme=dark] [data-stack-active=foundation] .stack-scene [data-stack-part=foundation]>.box-top{stroke:var(--primary);stroke-width:2}

/* Homepage product workbench: Input → product chip → Output, same pipeline vocabulary as NEO App deploy. */
.product-pipeline [data-node]{display:none}
.product-stage[data-product=compute] .product-pipeline [data-node=compute],
.product-stage[data-product=gpu] .product-pipeline [data-node=gpu],
.product-stage[data-product=cloud] .product-pipeline [data-node=cloud],
.product-stage[data-product=storage] .product-pipeline [data-node=storage],
.product-stage[data-product=hosting] .product-pipeline [data-node=hosting]{display:inline}
.product-pipeline .deploy-glyph{fill:none;stroke:#91DDB9;stroke-width:1;stroke-linecap:round;stroke-linejoin:round}
.product-stage.switching .product-node{animation:content-in .45s both}
@media(prefers-reduced-motion:reduce){.product-stage.switching .product-node{animation:none}}

/* Homepage product workbench — board composition: product chip + three component modules on a bus. */
.product-board [data-node]{display:none}
.product-stage[data-product=compute] .product-board [data-node=compute],
.product-stage[data-product=gpu] .product-board [data-node=gpu],
.product-stage[data-product=cloud] .product-board [data-node=cloud],
.product-stage[data-product=storage] .product-board [data-node=storage],
.product-stage[data-product=hosting] .product-board [data-node=hosting]{display:inline}
.product-board .deploy-glyph{fill:none;stroke:#91DDB9;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
.product-board .board-caption{text-anchor:start}
.product-stage.switching .board-module{animation:content-in .45s both;animation-delay:calc(var(--step) * .035s)}
@media(prefers-reduced-motion:reduce){.product-stage.switching .board-module{animation:none}}

/* Product illustration series (homepage #product-panel): one scene per tab, shared art direction.
   Compute is the master; GPU, Cloud, Storage and Hosting reuse its parts, palette and motion. */
.product-board [data-scene]{display:none}
.product-stage[data-product=compute] .product-board [data-scene=compute],
.product-stage[data-product=gpu] .product-board [data-scene=gpu],
.product-stage[data-product=cloud] .product-board [data-scene=cloud],
.product-stage[data-product=storage] .product-board [data-scene=storage],
.product-stage[data-product=hosting] .product-board [data-scene=hosting]{display:inline}
.product-stage.switching .scene-item{animation:content-in .45s both;animation-delay:calc(var(--step) * .035s)}
.scale-slot{animation:server-breathe 6s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
.scale-slot-frame{fill:none;stroke:#6F9C86;stroke-width:1;stroke-dasharray:4 4}
.scale-slot-plus{fill:none;stroke:#6F9C86;stroke-width:1.5;stroke-linecap:round}
.object-tile{fill:#183F2E;stroke:#43775E;stroke-width:.8}
.object-tile.is-hot{fill:#118D62;stroke:#7DE1BB;animation:led-blink 3s steps(2) infinite}
.web-dot{fill:#91DDB9}
.web-field{fill:none;stroke:#43775E;stroke-width:.8}
.web-block{fill:#285440;stroke:#43775E;stroke-width:.8}
@media(prefers-reduced-motion:reduce){.product-stage.switching .scene-item,.scale-slot,.object-tile.is-hot{animation:none}}

/* NEO App · Backend & operasional — bento of surface cards (journey-card language). */
.backend-bento{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:24px}
.backend-card{background:var(--surface);border:1px solid var(--line);transition:border-color .25s}
.backend-card:hover{border-color:#6F9C86}
.backend-card-label{display:block;font-size:12px;line-height:20px;color:var(--primary-text);padding:24px 28px 16px;border-bottom:1px solid var(--line)}
.backend-tiles{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr}
.backend-tiles>li{display:grid;grid-template-columns:32px minmax(0,1fr);gap:16px;align-items:start;padding:24px 28px;border-bottom:1px solid var(--line)}
.backend-tiles>li:nth-child(odd){border-right:1px solid var(--line)}
.backend-tiles>li:nth-last-child(-n+2){border-bottom:0}
.backend-tiles .technical{display:block;font-size:12px;line-height:20px;color:var(--muted)}
.backend-tiles h3{font-size:20px;line-height:28px;letter-spacing:-.02em;margin:4px 0}
.backend-tiles p{font-size:14px;line-height:22px}
.backend-card .journey-icon{width:32px;height:32px}
.backend-card .journey-icon .nav-icon{width:18px;height:18px}
.backend-ops-list{margin:0}
.backend-ops-list>div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px;padding:14px 28px;border-bottom:1px solid var(--line)}
.backend-ops-list>div:last-child{border-bottom:0}
.backend-ops-list dt{font-size:14px;line-height:24px;color:var(--muted)}
.backend-ops-list dd{margin:0}
.backend-ops-list strong{display:block;font-size:16px;line-height:24px;font-weight:600}
.backend-ops-list span{display:block;font-size:14px;line-height:20px;color:var(--muted)}
.backend-note{display:grid;grid-template-columns:32px minmax(0,1fr);gap:16px;align-items:start;padding:24px 28px}
.backend-note .technical{font-size:12px;line-height:20px;color:var(--primary-text)}
.backend-note h3{font-size:20px;line-height:28px;letter-spacing:-.02em;margin:4px 0 8px}
.backend-note p{font-size:16px;line-height:24px}
.backend-note .text-link{margin-top:12px;font-size:14px;line-height:20px;gap:16px}
@media(max-width:1150px){.backend-tiles>li,.backend-ops-list>div,.backend-note{padding-left:20px;padding-right:20px}.backend-card-label{padding-left:20px;padding-right:20px}}
@media(max-width:960px){.backend-bento{grid-template-columns:1fr;gap:16px}}
@media(max-width:700px){
  .backend-tiles{grid-template-columns:1fr}
  .backend-tiles>li{border-right:0!important;border-bottom:1px solid var(--line)!important}
  .backend-tiles>li:last-child{border-bottom:0!important}
  .backend-ops-list>div{grid-template-columns:1fr;gap:4px}
}
.backend-services{display:flex;flex-direction:column}.backend-services .backend-tiles{flex:1;grid-auto-rows:1fr}@media(max-width:700px){.backend-services .backend-tiles{grid-auto-rows:auto}}

/* NEO App · Backend & operasional as a pipeline: a flow rail (icon nodes + moving packets) above four stage cards. */
.pipeline-rail{list-style:none;margin:0 0 16px;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.pipeline-rail-step{display:flex;align-items:center;gap:12px;min-width:0}
.pipeline-rail-step .journey-icon{width:40px;height:40px;flex-shrink:0;background:var(--surface);border-color:var(--primary)}
.pipeline-rail-step .journey-icon .nav-icon{position:static;width:20px;height:20px;color:var(--primary)}
.pipeline-rail-line{flex:1;height:2px;overflow:visible;margin-right:-24px}
.pipeline-rail-step:last-child .pipeline-rail-line{margin-right:0}
.pipeline-rail-base{fill:none;stroke:var(--primary);stroke-width:1;stroke-opacity:.35;vector-effect:non-scaling-stroke}
.pipeline-rail-flow{fill:none;stroke:var(--primary);stroke-width:2;stroke-dasharray:14 86;vector-effect:non-scaling-stroke;animation:data-flow 24s linear infinite}
.pipeline-stages{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;align-items:stretch}
.pipeline-stage{display:flex;flex-direction:column;align-items:flex-start;background:var(--surface);border:1px solid var(--line);padding:24px;transition:border-color .25s}
.pipeline-stage:hover{border-color:#6F9C86}
.pipeline-stage-label{font-size:12px;line-height:20px;color:var(--primary-text)}
.pipeline-stage>h3{font-size:20px;line-height:28px;letter-spacing:-.02em;margin-top:8px}
.pipeline-stage>p{font-size:16px;line-height:24px;margin-top:8px}
.pipeline-stage-list{margin:20px 0 0;width:100%}
.pipeline-stage-list>div{padding:12px 0;border-top:1px solid var(--line)}
.pipeline-stage-list dt{font-size:12px;line-height:20px;color:var(--muted);letter-spacing:.02em}
.pipeline-stage-list dd{margin:0}
.pipeline-stage-list strong{display:block;font-size:16px;line-height:24px;font-weight:600}
.pipeline-stage-list span{display:block;font-size:14px;line-height:20px;color:var(--muted)}
.pipeline-stage>.text-link{margin-top:auto;padding-top:16px;font-size:14px;line-height:20px;gap:16px}
.js-motion .pipeline-stage{animation:content-in .45s both;animation-delay:calc(var(--step) * .035s)}
@media(max-width:1150px){.pipeline-rail,.pipeline-stages{grid-template-columns:repeat(2,minmax(0,1fr))}.pipeline-rail-step:nth-child(2) .pipeline-rail-line{margin-right:0}}
@media(max-width:700px){
  .pipeline-rail{display:none}
  .pipeline-stages{grid-template-columns:1fr;gap:16px}
  .pipeline-stage{padding:20px}
}
@media(prefers-reduced-motion:reduce){.pipeline-rail-flow,.js-motion .pipeline-stage{animation:none}}
.pipeline-rail-flow{stroke-dasharray:16 600;animation-duration:9s}
@media(max-width:1150px){.pipeline-rail{display:none}}
/* Hero copy without an eyebrow: the headline opens the column, aligned with the visual beside it */
:root body :is(.neo-hero-copy,.ms-hero-copy,.price-hero-layout>div:first-child)>h1:first-child{margin-top:0}

/* NEO App hero — MCP isometric scene. Built on the .neo-hardware-scene system (projection, face
   tones, wiring, neo-assemble entrance); only its own parts are styled here. */
.mcp-key{fill:none;stroke:#6F9C86;stroke-width:.8;opacity:.7}
.mcp-display{fill:#101C15;stroke:#43775E;stroke-width:.7}
.mcp-ui-text{fill:#A4BFB1;font:600 8px var(--font);letter-spacing:.08em}
.mcp-ui-dot{fill:#29AE87;animation:led-blink 3s steps(2) infinite}
.mcp-ui-rule{fill:none;stroke:#304D3D;stroke-width:1}
.mcp-ui-bar{fill:#304D3D}
.mcp-ui-bar.is-accent{fill:#29AE87}
.mcp-ui-prompt{fill:#E6F5EE}
.mcp-ui-bubble{fill:#183F2E;stroke:#43775E;stroke-width:.7}
.mcp-ui-caret{fill:#6ED8AD;animation:led-blink 1.2s steps(2) infinite}
.mcp-ui-layout{display:none}
.mcp-scene[data-client=Cursor] [data-ui=Cursor],.mcp-scene[data-client=Claude] [data-ui=Claude],.mcp-scene[data-client=Windsurf] [data-ui=Windsurf]{display:inline}
.mcp-port{fill:#102A1D;stroke:#7DE1BB;stroke-width:.5}
.mcp-halo{fill:none;stroke:var(--primary);stroke-width:1;stroke-dasharray:3 5;opacity:.35;transform-box:fill-box;transform-origin:center}
.mcp-hub{animation:server-breathe 6s ease-in-out infinite}
.mcp-hub-shadow{opacity:.06}
.mcp-mast{fill:none;stroke:var(--primary);stroke-width:1.2;opacity:.6}
.mcp-ring{fill:none;stroke:var(--primary);stroke-width:1.2;opacity:0;transform-box:fill-box;transform-origin:center}
.mcp-beacon-ring{opacity:0;transform-box:fill-box;transform-origin:center}
.mcp-mast{transform-box:fill-box;transform-origin:center bottom}
.mcp-lock-shackle{fill:none;stroke:#7DE1BB;stroke-width:2.4}
.mcp-db-body{fill:#B9DCCB;stroke:#6F9C86;stroke-width:.7}
.mcp-db-top{fill:#E6F5EE;stroke:#6F9C86;stroke-width:.7}
.mcp-db-top.mcp-db-cap{fill:var(--primary);stroke:#7DE1BB}
[data-theme=dark] .mcp-db-body{fill:#285440}
[data-theme=dark] .mcp-db-top{fill:#43775E}
[data-theme=dark] .mcp-db-top.mcp-db-cap{fill:var(--primary)}
.mcp-note text{fill:var(--muted);font:600 12px var(--font);letter-spacing:.08em}
.mcp-note .mcp-note-index{fill:var(--primary-text)}
.mcp-note-line{fill:none;stroke:var(--muted);stroke-width:.8;opacity:.5}
.mcp-domain{fill:var(--primary-text);font:600 12px var(--font);letter-spacing:.04em}
.mcp-packet{fill:none;stroke:var(--primary);stroke-width:3;stroke-linecap:round;stroke-dasharray:8 100;stroke-dashoffset:8;opacity:0}
.mcp-type,.mcp-reply{transform-box:fill-box;transform-origin:left center}
/* One pass of the flow, replayed on view and on every client switch:
   prompt → MCP → service layers → replicas and database → ready */
.mcp-scene.is-playing .mcp-type{animation:mcp-type .5s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(var(--t) * .18s + .1s)}
.mcp-scene.is-playing .mcp-packet[data-hop="0"]{animation:mcp-hop .8s cubic-bezier(.65,0,.35,1) .55s both}
.mcp-scene.is-playing .mcp-packet[data-hop="1"]{animation:mcp-hop .8s cubic-bezier(.65,0,.35,1) 1.35s both}
.mcp-scene.is-playing .mcp-packet[data-hop="2"]{animation:mcp-hop .6s cubic-bezier(.65,0,.35,1) 2.6s both}
.mcp-scene.is-playing .mcp-hub .chip-top{animation:mcp-flash .9s ease-out 1.25s both}
.mcp-scene.is-playing .mcp-halo{animation:mcp-halo 1s cubic-bezier(.22,1,.36,1) 1.2s both}
.mcp-scene.is-playing .mcp-layer{animation:mcp-drop .7s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(var(--l) * .2s + 1.95s)}
.mcp-scene.is-playing .mcp-replica{animation:mcp-drop .6s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(var(--r) * .15s + 2.6s)}
.mcp-scene.is-playing .mcp-db-cap{animation:mcp-flash .9s ease-out 3.05s both}
.mcp-scene.is-playing .mcp-ring{animation:mcp-ring 2.4s ease-out infinite;animation-delay:calc(var(--k) * 1.2s + 2.9s)}
.mcp-scene.is-playing :is(.mcp-beacon,.mcp-domain){animation:mcp-appear .5s ease-out 2.9s both}
.mcp-scene.is-playing .mcp-mast{animation:mcp-rise .5s cubic-bezier(.22,1,.36,1) 2.7s both}
.mcp-scene.is-playing .mcp-beacon-ring{animation:mcp-beacon 2.4s ease-out 3.1s infinite}
.mcp-scene.is-playing .mcp-reply{animation:mcp-type .5s cubic-bezier(.22,1,.36,1) 3.2s both}
.mcp-scene.is-playing .mcp-note{animation:mcp-note .5s ease-out both}
.mcp-scene.is-playing .mcp-note[data-note="2"]{animation-delay:1.95s}
.mcp-scene.is-playing .mcp-note[data-note="3"]{animation-delay:2.9s}
@keyframes mcp-type{from{transform:scaleX(0)}to{transform:none}}
@keyframes mcp-hop{0%{opacity:0;stroke-dashoffset:8}12%,85%{opacity:1}100%{opacity:0;stroke-dashoffset:-100}}
@keyframes mcp-flash{0%,100%{fill:var(--primary)}35%{fill:#29AE87}}
@keyframes mcp-halo{from{opacity:.8;transform:scale(.55)}to{opacity:.35;transform:none}}
@keyframes mcp-drop{from{opacity:0;transform:translateY(-26px)}to{opacity:1;transform:none}}
@keyframes mcp-ring{0%{opacity:.7;transform:scale(.4)}100%{opacity:0;transform:scale(1.5)}}
@keyframes mcp-appear{from{opacity:0}to{opacity:1}}
@keyframes mcp-rise{from{opacity:0;transform:scaleY(0)}to{opacity:.6;transform:none}}
@keyframes mcp-beacon{0%{opacity:.8;transform:scale(.5)}100%{opacity:0;transform:scale(2)}}
@keyframes mcp-note{from{opacity:.3}to{opacity:1}}
@media(max-width:560px){.mcp-note,.mcp-domain{display:none}}
@media(prefers-reduced-motion:reduce){.mcp-scene *{animation:none!important}}

/* Pricing models: three cards in columns (same surface, border and padding as the site's cards).
   The price and link sit on a shared baseline at the bottom of each card. */
:root body .price-models{gap:24px;align-items:stretch}
:root body .price-models>article{background:var(--surface);border:1px solid var(--line);padding:28px;transition:border-color .25s}
:root body .price-models>article:hover{border-color:#6F9C86}
:root body .price-models>article>strong{margin-top:auto;padding-top:12px}
:root body .price-models .text-link{margin-top:4px}
@media(max-width:960px){:root body .price-models{gap:16px}:root body .price-models>article{padding:24px}}

/* NEO Lite Pro management: the AI Console panel stays in view (under the header and the section nav)
   while the notes column scrolls beside it. Two-column layout only. */
@media(min-width:961px){
  :root body .neo-management-layout>.neo-ai-panel{position:sticky;top:calc(var(--header,88px) + 62px + 24px)}
}

/* Homepage hero: action-first CTAs. Deploy goes straight to the Cloud Portal NEO App entry;
   Ship with Agents goes to the agent setup guide. Both route lines below stay visible; the one
   for the hovered/focused CTA is emphasised. */
.hero .hero-copy>.hero-audience+.hero-actions{margin-top:28px}
.hero-actions{display:block}
.hero-action-buttons{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.hero-action-buttons .button{gap:24px}
.hero-action-buttons .button-outline{color:var(--ink);background:transparent}
.hero-action-buttons .button-outline:hover,.hero-action-buttons .button-outline:focus-visible{border-color:var(--ink);background:var(--soft)}
.hero-route{display:grid;gap:4px;margin-top:16px;font-size:14px;line-height:20px;color:var(--muted);max-width:440px}
.hero-route>span{transition:color .25s cubic-bezier(.33,1,.68,1)}
.hero-route>span.is-active{color:var(--ink)}
.hero-route strong{font-weight:600}
@media(max-width:560px){
  .hero-action-buttons{gap:10px}
  .hero-action-buttons .button{padding:12px 15px}
}
@media(prefers-reduced-motion:reduce){.hero-route>span{transition:none}}

/* Customer logo selector without index numbers: the logo sits centred in its cell. */
:root body .testimonial-company{justify-content:center}

/* One hover motion for every button, taken from the header Sign In button: the fill eases to its
   hover colour and the arrow nudges (spring) — diagonally for ↗, along its own axis for → ↓ ↑.
   No magnetic pull or other per-button extras. */
:root body .button{transition:background .25s,color .25s,border-color .25s,transform .25s}
:root body .button:hover span[data-arrow=e]{transform:translateX(4px)}
:root body .button:hover span[data-arrow=s]{transform:translateY(4px)}
:root body .button:hover span[data-arrow=n]{transform:translateY(-4px)}

/* Header "Book a Demo": same treatment as the Docs nav link — ink text, the arrow at text size in
   the text colour with a 4px gap, and the colour shift to primary-text on hover. The separator from
   the theme toggle stays. */
:root body .portal-link{color:var(--ink)}
:root body .portal-link span{font-size:inherit;line-height:inherit;margin-left:4px;color:inherit}
:root body .portal-link:hover,:root body .portal-link:focus-visible{color:var(--primary-text)}

/* Platform mega-menu: NEO App promo banner. An isometric stage (same system as the site's scenes:
   prompt window → MCP gate → NEO App service) above a short campaign block. */
.platform-nav a.nav-feature-promo{padding:0;gap:0;overflow:hidden;align-items:stretch}
.nav-feature-stage{display:block;background:var(--surface);border-bottom:1px solid var(--line)}
.nav-feature-art{display:block;width:100%;height:auto;max-height:156px;overflow:hidden}
.nav-feature-body{display:flex;flex:1;flex-direction:column;align-items:flex-start;gap:10px;padding:20px 24px 24px}
.nav-feature-promo>.nav-feature-body>.eyebrow{color:var(--primary-text);font-size:12px;line-height:16px}
:root body .platform-nav .nav-feature-promo strong{font-size:20px;line-height:28px;letter-spacing:-.025em;font-weight:600}
.nav-feature-promo strong>span{display:block;color:var(--primary-text)}
:root body .platform-nav .nav-feature-note{font-size:14px;line-height:20px;color:var(--muted)}
.nav-feature-promo .text-link{margin-top:auto;padding-top:6px}
.nav-feature-promo:hover .text-link:after,.nav-feature-promo:focus-visible .text-link:after{transform:scaleX(1)}
.nav-feature-promo:hover .text-link span,.nav-feature-promo:focus-visible .text-link span{transform:translate(3px,-2px)}
/* illustration parts */
.nf-grid path{fill:none}
.nf-ui-bar{fill:#304D3D}
.nf-ui-bar.is-prompt{fill:#E6F5EE}
.nf-ui-bar.is-reply{fill:#29AE87}
.nf-ui-caret{fill:#6ED8AD;animation:led-blink 1.2s steps(2) infinite}
.nf-gate-label{fill:#E6F5EE;font:600 8px var(--font);letter-spacing:.08em}
.nf-mast{fill:none;stroke:var(--primary);stroke-width:1;opacity:.6}
.nf-beacon-ring{fill:none;stroke:var(--primary);stroke-width:1;opacity:0;transform-box:fill-box;transform-origin:center}
.nf-flow{animation-duration:4.8s}
/* one 4.8s loop: prompt types → package rides the rail through MCP → service lights up, beacon pings */
.nf-ui-bar.is-prompt,.nf-ui-bar.is-reply{transform-box:fill-box;transform-origin:left center}
.nf-ui-bar.is-prompt{animation:nf-type 4.8s cubic-bezier(.22,1,.36,1) infinite}
.nf-ui-bar.is-prompt+.is-prompt{animation-delay:.12s}
.nf-ui-bar.is-reply{animation:nf-reply 4.8s cubic-bezier(.22,1,.36,1) infinite}
.nf-package{animation:nf-travel 4.8s infinite}
.nf-gate-front>.chip-top:last-child{animation:nf-flash 4.8s infinite}
.nf-beacon-ring{animation:nf-ping 4.8s ease-out infinite}
.nf-beacon{animation:nf-beacon 4.8s infinite}
@keyframes nf-type{0%,6%{transform:scaleX(0)}16%,100%{transform:none}}
@keyframes nf-reply{0%,62%{opacity:0;transform:scaleX(0)}72%,92%{opacity:1;transform:none}100%{opacity:0;transform:none}}
@keyframes nf-travel{
  0%,14%{opacity:0;transform:translate(0,0);animation-timing-function:cubic-bezier(.65,0,.35,1)}
  20%{opacity:1;transform:translate(0,0);animation-timing-function:cubic-bezier(.65,0,.35,1)}
  58%{opacity:1;transform:translate(83.02px,44.6px)}
  64%,100%{opacity:0;transform:translate(83.02px,44.6px)}
}
@keyframes nf-flash{0%,30%,48%,100%{fill:var(--primary)}38%{fill:#29AE87}}
@keyframes nf-ping{0%,60%{opacity:0;transform:scale(.5)}64%{opacity:.8;transform:scale(.5)}100%{opacity:0;transform:scale(2.2)}}
@keyframes nf-beacon{0%,58%{opacity:.35}64%,94%{opacity:1}100%{opacity:.35}}
@media(prefers-reduced-motion:reduce){.nav-feature-art *{animation:none!important}}

/* Resources mega-menu: Human Support banner. Same banner system as the NEO App promo
   (.nav-feature-promo stage + body); its own illustration: a support workstation with the
   contact channels (telepon, email, formulir) wired in, each request resolved on screen. */
.ns-key{fill:#7DE1BB}
.ns-flap{fill:none;stroke:#E6F5EE;stroke-width:1;stroke-linejoin:round}
.ns-form-line{fill:none;stroke:#6F9C86;stroke-width:1;opacity:.8}
.ns-online{fill:#29AE87;animation:led-blink 3s steps(2) infinite}
.ns-row-bar{fill:#304D3D}
.ns-check{fill:none;stroke:#6ED8AD;stroke-width:1.2;stroke-linecap:square;opacity:0}
.ns-signal{fill:none;stroke:var(--primary);stroke-width:2.6;stroke-linecap:round;stroke-dasharray:8 100;stroke-dashoffset:8;opacity:0}
.ns-flow{animation-duration:4.8s}
/* one 6s loop: a request leaves each channel in turn, reaches the desk, and its row is resolved */
.ns-signal{animation:ns-signal 6s cubic-bezier(.65,0,.35,1) infinite}
.ns-signal[data-channel="1"]{animation-delay:1.5s}
.ns-signal[data-channel="2"]{animation-delay:3s}
.ns-channel>.chip-top{animation:ns-send 6s infinite}
.ns-mail>.chip-top{animation-delay:1.5s}
.ns-form{animation:ns-send-form 6s infinite 3s}
.ns-row-bar{animation:ns-row 6s infinite}
.ns-check{animation:ns-check 6s infinite}
.ns-row[data-row="0"]>*{animation-delay:.75s}
.ns-row[data-row="1"]>*{animation-delay:2.25s}
.ns-row[data-row="2"]>*{animation-delay:3.75s}
@keyframes ns-signal{0%{opacity:0;stroke-dashoffset:8}4%{opacity:1}12%{opacity:1;stroke-dashoffset:-100}14%,100%{opacity:0;stroke-dashoffset:-100}}
@keyframes ns-send{0%,100%{fill:var(--primary)}4%{fill:#29AE87}12%{fill:var(--primary)}}
@keyframes ns-send-form{0%,12%,100%{filter:none}4%{filter:brightness(1.12)}}
@keyframes ns-row{0%{fill:#304D3D}4%,60%{fill:#29AE87}75%,100%{fill:#304D3D}}
@keyframes ns-check{0%{opacity:0}4%,60%{opacity:1}75%,100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.nav-feature-support .nav-feature-art *{animation:none!important}.ns-check{opacity:1}}

/* Menu banner illustrations render the same on every page. They borrow scene classes that
   neo-lite-pro.css defines (not loaded on Enterprise), so the banners carry their own copy:
   the crisp 10% floor shadow of the homepage reference, the route line and the flowing dashes. */
.nav-feature-art .neo-scene-shadow{fill:#101211;opacity:.1;filter:none}
.nav-feature-art .neo-scene-route{fill:none;stroke:var(--primary);stroke-width:1.2;opacity:.35}
.nav-feature-art .neo-scene-flow{fill:none;stroke:var(--primary);stroke-width:1.8;stroke-dasharray:8 142;animation-name:data-flow;animation-timing-function:linear;animation-iteration-count:infinite}

/* ───────────── Agent onboarding: agents.html, NEO App “Hubungkan agent”, NEO App estimate ─────────────
   Assembled from existing parts — the .neo-ai-panel console tokens, the .neo-promo-code copy row,
   the .neo-promo disclosure and the .neo-summary-specs rows. No new colours, fonts or radii. */
:where(.agents-main,.neo-agent) :not(pre)>code{font-family:var(--font);font-size:.9375em;padding:0 4px;border:1px solid var(--line);background:var(--surface);overflow-wrap:anywhere}
.neo-ai-panel :not(pre)>code{background:transparent}
.agent-code{border:1px solid var(--line);margin-top:16px;min-width:0}
.agent-code-head{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:4px 4px 4px 12px;border-bottom:1px solid var(--line)}
:root body .agent-code-head>.technical{font-size:12px;line-height:16px;letter-spacing:.06em;color:var(--muted)}
.agent-copy{font-size:14px;line-height:20px;font-weight:600;min-height:36px;padding:8px 12px;color:var(--primary-text)}
.agent-copy:hover{text-decoration:underline;text-underline-offset:4px}
.agent-code pre{margin:0;padding:16px 12px;white-space:pre-wrap;overflow-wrap:anywhere;font:400 14px/22px var(--font);color:var(--ink);tab-size:2}
.agent-code pre code{font:inherit}
.agent-code-light{background:var(--surface);margin:20px 0}
.agent-copy-status{font-size:14px;line-height:20px;color:var(--primary-text);padding:0 12px 12px}
.agent-copy-status:empty{display:none}
.agent-console-lead{font-size:16px;line-height:28px;color:var(--muted);margin-top:24px}
.agent-console .mcp-log{min-height:0;padding-top:20px}
.agent-console .mcp-console-foot a{color:var(--primary-text)}
.agent-tabpanel{padding:24px 0 8px}
.agent-tabpanel[hidden]{display:none}
.agent-tabpanel>p{font-size:14px;line-height:22px;color:var(--muted);margin-top:16px}
.agent-tabpanel>p:first-of-type{margin-top:0}
.agent-tabpanel>p a{color:var(--primary-text);text-decoration:underline;text-underline-offset:3px}
.agent-panel-title{font-size:20px;line-height:28px;letter-spacing:-.02em;margin-bottom:12px}
[data-agent-tabs][data-ready] .agent-panel-title{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.mcp-step-list .agent-step-link{font-size:14px;line-height:20px;gap:16px;margin-top:12px}
.agent-paths{margin-bottom:40px}
.agent-table{margin-top:40px}
.agent-table td a{color:var(--primary-text);text-decoration:underline;text-underline-offset:3px}
.agent-table code{white-space:normal}
.agent-ops .pipeline-stage-list strong{overflow-wrap:anywhere}
.agent-ops .pipeline-stage>p{font-size:14px;line-height:22px}
.agent-note{margin-top:32px;max-width:none}
.agent-note a,.agent-inline-link{color:var(--primary-text);text-decoration:underline;text-underline-offset:3px}
.agent-control-list{margin-top:40px}
.agent-faq{border-top:1px solid var(--line)}
.agent-faq .neo-promo{max-width:none;margin-top:0;border-top:0}
:root body .agent-faq .neo-promo>summary{font-size:16px;line-height:24px;padding:12px 0;min-height:56px}
.agent-faq .neo-promo>summary:focus-visible{outline:2px solid var(--primary);outline-offset:4px}
:root body .agent-faq .neo-annual-offer>p{font-size:16px;line-height:28px;max-width:760px;margin:0 0 20px}
.agent-faq .neo-annual-offer a{color:var(--primary-text);text-decoration:underline;text-underline-offset:3px}
.agent-faq-q{font-weight:inherit}
.neo-agent .mcp-steps .product-footer{flex-wrap:wrap;gap:16px}
.neo-agent .product-footer .text-link{font-size:14px;line-height:20px;gap:12px;margin-top:4px}
.mcp-log-step>i.is-note{color:var(--muted)}
/* NEO App: monthly estimate inside the plan summary (a .neo-promo disclosure, closed by default). */
.neo-estimate-fields{display:grid;gap:12px;margin-bottom:16px}
.neo-estimate-fields label{display:grid;gap:4px;font-size:14px;line-height:20px;color:var(--muted)}
.neo-estimate-fields input{width:100%;min-height:44px;padding:8px 12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:400 16px/24px var(--font)}
.neo-estimate .neo-summary-price{margin-top:12px;padding-top:12px}
.neo-estimate .neo-order-note{margin:12px 0 16px}
@media(max-width:960px){
  .neo-estimate .neo-summary-specs{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
  .agent-paths{margin-bottom:28px}
  .agent-table{margin-top:28px}
  .agent-tabpanel{padding-top:20px}
}
@media(max-width:560px){.agent-paths{grid-template-columns:1fr}}
.agent-console{display:flex;flex-direction:column}
.agent-console>.mcp-console-foot{margin-top:auto}
.neo-plan-summary:has(.neo-estimate[open]){position:static}
/* agents.html “Akses dan kontrol”: action types as tabs in the console, notes beside it (NEO Lite Pro management layout). */
.agent-action-meta{display:grid;gap:12px;margin:0;padding-bottom:16px}
.agent-action-meta>div{display:grid;grid-template-columns:72px minmax(0,1fr);gap:16px}
.agent-action-meta dt{font-size:14px;line-height:22px;color:var(--muted)}
.agent-action-meta dd{margin:0;font-size:16px;line-height:24px;font-weight:600}
.agent-console .agent-action-tools{padding-top:0}
.agent-action-tools>li:first-child{border-top:1px solid var(--line);padding-top:16px}
.agent-action-tools strong{overflow-wrap:anywhere}
.agent-access .neo-management-notes p+p{margin-top:12px}
