/* Cortex Robotix - the division's pages under /robotix/, and nothing else.
   Loaded only by those seven pages, on top of styles.css and site.css. Every rule is scoped
   to .p-robotix (the <main> of a Robotix page) or to a .rx-* class, so no product page and no
   other page of the site can be changed by it. Colours, type and motion are the tokens of
   styles.css; nothing here introduces a new hue. */

/* ---------- layout of the division: 1280px, 24px sides, 20px on a phone ---------- */

.p-robotix{--rx-max:1280px;--rx-side:24px;--rx-gap:clamp(56px,7vw,88px)}
.p-robotix .wrap{max-width:var(--rx-max);padding:0 var(--rx-side)}
.p-robotix .rx-sec{padding:var(--rx-gap) 0}
.p-robotix .rx-sec.tight{padding:calc(var(--rx-gap) * .72) 0}
.p-robotix p,.p-robotix li,.p-robotix dd{font-size:16px;line-height:1.6}
.p-robotix .rx-prose{max-width:68ch}
.p-robotix .rx-prose + .rx-prose{margin-top:var(--s16)}
.p-robotix h2.rx-h2{font-size:clamp(28px,3.4vw,44px);line-height:1.08;letter-spacing:-.022em;max-width:24ch}
.p-robotix h3{font-size:var(--title-3);line-height:var(--lh-row);letter-spacing:var(--tr-title)}
.p-robotix .rx-lead{font-size:clamp(17px,1.5vw,20px);line-height:1.5;max-width:56ch;margin-top:var(--s24);color:var(--text-body)}
.p-robotix .rx-sec > .wrap > .eyebrow + .rx-h2{margin-bottom:var(--s16)}
.p-robotix a.rx-more{display:inline-block;margin-top:var(--s24);font-weight:500}

/* ---------- the division's logo: one pattern, two variants ----------
   The delivered lockup from the brand kit, copied byte for byte into assets/robotix/:
   logo-white.svg on basalt, logo.svg on paper. 308x64 artwork, shown at 32px (bar) or 48px
   (large), width and height written in the markup so nothing moves while it loads. The kit's
   rule: lockup never under 24px tall, clear space 0.4 x the symbol height. */

.rx-brand{display:inline-flex;align-items:center;flex:none;text-decoration:none;padding:4px 0}
.rx-brand img{display:block;width:154px;height:32px}
.rx-brand.lg img{width:231px;height:48px}

/* ---------- the division's menu, under the Cortex Prime menu ----------
   The Cortex Prime bar stays on top with Robotix marked, so the visitor never feels they left
   the company's site. Under it, on the left, the division's own pages. Both stay on screen while
   scrolling: 68px of company bar, then 48px of division bar. */

html:has(.rx-sub){scroll-padding-top:132px}
.rx-sub{position:sticky;top:68px;z-index:39;background:var(--basalt-900);
  border-bottom:1px solid rgba(252,251,248,.14);animation:rxSubIn 280ms var(--ease-out) both}
.rx-sub .wrap{max-width:var(--container);padding:0 var(--gutter);display:flex;align-items:center;gap:var(--s24);height:48px}
.rx-sub-brand{display:flex;align-items:center;flex:none;padding:4px 0}
.rx-sub-brand img{width:116px;height:24px}
.rx-sub-links{display:flex;align-items:stretch;list-style:none;margin:0;padding:0 0 0 var(--s24);height:100%;
  border-left:1px solid rgba(252,251,248,.14)}
.rx-sub-links a{position:relative;display:flex;align-items:center;height:100%;padding:0 12px;
  font-size:var(--body-3);font-weight:500;color:var(--basalt-300);text-decoration:none;
  transition:color var(--dur-1) var(--ease-standard)}
.rx-sub-links a::after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2px;background:var(--signal-400);
  transform:scaleX(0);transform-origin:left center;transition:transform 220ms var(--ease-out)}
.rx-sub-links a:hover{color:var(--paper-000)}
.rx-sub-links a:hover::after{transform:scaleX(.5)}
.rx-sub-links a[aria-current="page"]{color:var(--paper-000)}
.rx-sub-links a[aria-current="page"]::after{transform:scaleX(1);animation:rxMark 320ms 120ms var(--ease-out) both}
.rx-sub-cta a{color:var(--paper-000)}
.rx-sub-cta{margin-left:var(--s8)}

@keyframes rxSubIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@keyframes rxMark{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* on a phone the division's pages open from one control that also says where you are */
.rx-sub-menu{display:none;position:relative;margin-left:auto}
.rx-sub-menu summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;min-height:40px;padding:0 12px;
  border:1px solid rgba(252,251,248,.28);border-radius:var(--radius-control);font-size:14px;font-weight:500;color:var(--paper-000)}
.rx-sub-menu summary::-webkit-details-marker{display:none}
.rx-sub-menu summary::after{content:"";width:7px;height:7px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;
  transform:translateY(-2px) rotate(45deg);transition:transform var(--dur-2) var(--ease-standard)}
.rx-sub-menu[open] summary::after{transform:translateY(2px) rotate(-135deg)}
.rx-sub-menu ul{list-style:none;margin:0;padding:6px 0;position:absolute;right:0;top:calc(100% + 6px);min-width:220px;
  background:var(--basalt-950);border:1px solid rgba(252,251,248,.2);animation:rxSubIn 200ms var(--ease-out) both}
.rx-sub-menu a{display:block;padding:12px 16px;font-size:15px;color:var(--basalt-200);text-decoration:none}
.rx-sub-menu a:hover{background:var(--basalt-800);color:var(--paper-000)}
.rx-sub-menu a[aria-current="page"]{color:var(--paper-000);box-shadow:inset 3px 0 0 var(--signal-400)}

@media (max-width:1100px){
  .rx-sub-links a{padding:0 9px}
  .rx-sub-links a::after{left:9px;right:9px}
  .rx-sub-links{padding-left:var(--s12)}
  .rx-sub .wrap{gap:var(--s12)}
}
@media (max-width:960px){
  .rx-sub-links{display:none}
  .rx-sub-menu{display:block}
}
@media (max-width:820px){
  .rx-sub .wrap{padding:0 20px}
}
@media (prefers-reduced-motion:reduce){
  .rx-sub,.rx-sub-menu ul,.rx-sub-links a[aria-current="page"]::after{animation:none}
}

/* the division's footer, with the way back to the company */
.rx-foot .cols{grid-template-columns:1.5fr 1fr 1fr}
.rx-foot .wrap{max-width:1280px;padding:0 24px}
.rx-foot .note{margin-top:var(--s16)}
@media (max-width:820px){.rx-foot .wrap{padding:0 20px}.rx-foot .cols{grid-template-columns:1fr}}

/* ---------- breadcrumbs ---------- */

.rx-crumbs ol{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0 0 var(--s24);padding:0;
  font-family:var(--font-mono);font-size:var(--mono-1);letter-spacing:var(--tr-mono);color:var(--basalt-400)}
.rx-crumbs li + li::before{content:"/";margin-right:6px;color:var(--basalt-500)}
.rx-crumbs a{color:var(--basalt-300);text-decoration:none}
.rx-crumbs a:hover{color:var(--paper-000);text-decoration:underline}
.rx-crumbs [aria-current]{color:var(--paper-000)}

/* ---------- the opening of a page ---------- */

.rx-hero{background:var(--basalt-950);padding:clamp(32px,4vw,56px) 0 clamp(48px,6vw,88px);position:relative}
.rx-hero .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(32px,5vw,72px);align-items:center}
.rx-hero.solo .wrap{grid-template-columns:minmax(0,1fr)}
.rx-hero .eyebrow{color:var(--basalt-400);line-height:1.5}
.rx-h1{font-size:clamp(40px,5.4vw,72px);line-height:1.02;letter-spacing:-.03em;max-width:18ch;color:var(--paper-000)}
.rx-hero .rx-lead{color:var(--basalt-200);max-width:52ch}
.rx-hero .actions{margin-top:var(--s32)}
.rx-stage{display:inline-flex;align-items:center;gap:10px;margin-top:var(--s24);padding:6px 10px;
  border:1px solid rgba(252,251,248,.28);border-radius:var(--radius-control);
  font:500 var(--eyebrow)/1.3 var(--font-mono);letter-spacing:var(--tr-eyebrow);text-transform:uppercase;color:var(--paper-000)}
.rx-stage::before{content:"";width:7px;height:7px;background:var(--signal-400)}

/* the one line that says where the division stands today */
.rx-status{margin-top:var(--s16);padding-left:14px;border-left:2px solid var(--signal-400);
  font:400 14px/1.5 var(--font-mono) !important;letter-spacing:var(--tr-mono);color:var(--paper-000);max-width:52ch}
.rx-stage-paper{border-color:var(--border-strong);color:var(--text-strong);margin:0 0 0}
.rx-stage-paper::before{background:var(--signal-500)}

/* the hero scene: a schematic drawn for this page, no photograph */
.rx-scene{margin:0;border:1px solid rgba(252,251,248,.16);background:var(--basalt-950)}
.rx-scene svg{width:100%;height:auto}
.rx-scene figcaption{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 16px;padding:10px 14px;
  border-top:1px solid rgba(252,251,248,.14);font:400 12px/1.4 var(--font-mono);letter-spacing:var(--tr-mono);color:var(--basalt-300)}

/* SVG ink, shared by every schematic in the division */
.rx-svg{font-family:var(--font-mono)}
.rx-svg .g{stroke:rgba(252,251,248,.07);stroke-width:1}
.rx-svg .wall{fill:none;stroke:rgba(252,251,248,.38);stroke-width:1.2}
.rx-svg .zone{fill:rgba(252,251,248,.035);stroke:rgba(252,251,248,.18);stroke-width:1}
.rx-svg .route{fill:none;stroke:var(--basalt-300);stroke-width:1.2;stroke-dasharray:4 5}
.rx-svg .done{fill:none;stroke:var(--paper-000);stroke-width:1.6}
.rx-svg .cp{fill:var(--basalt-950);stroke:var(--basalt-200);stroke-width:1.4}
.rx-svg .cp.rec{fill:var(--basalt-200)}
.rx-svg .cp.rev{fill:var(--signal-400);stroke:var(--signal-400)}
.rx-svg .lbl{fill:var(--basalt-300);font-size:11px;letter-spacing:.04em}
.rx-svg .lbl.hi{fill:var(--paper-000)}
.rx-svg .sm{fill:var(--basalt-400);font-size:10px;letter-spacing:.08em}
.rx-svg .bot{fill:var(--paper-000)}
.rx-svg .cone{fill:rgba(238,28,20,.16);stroke:var(--signal-400);stroke-width:1}
.rx-svg .card{fill:var(--basalt-900);stroke:rgba(252,251,248,.24);stroke-width:1}
.rx-svg .link{fill:none;stroke:rgba(252,251,248,.4);stroke-width:1}
.rx-svg .link.hi{stroke:var(--signal-400)}
.rx-svg .tx{fill:var(--basalt-200);font-size:11px}
.rx-svg .tx.b{fill:var(--paper-000);font-size:12px}

/* on paper the same drawings take basalt ink */
.rx-svg.paper .g{stroke:rgba(6,9,10,.06)}
.rx-svg.paper .wall{stroke:rgba(6,9,10,.5)}
.rx-svg.paper .zone{fill:rgba(6,9,10,.03);stroke:rgba(6,9,10,.2)}
.rx-svg.paper .route{stroke:var(--basalt-500)}
.rx-svg.paper .link{stroke:rgba(6,9,10,.45)}
.rx-svg.paper .link.hi{stroke:var(--signal-600)}
.rx-svg.paper .card{fill:var(--paper-000);stroke:rgba(6,9,10,.28)}
.rx-svg.paper .tx{fill:var(--basalt-700)}
.rx-svg.paper .tx.b{fill:var(--basalt-950)}
.rx-svg.paper .sm{fill:var(--basalt-500)}
.rx-svg.paper .lbl{fill:var(--basalt-600)}
.rx-svg.paper .bot{fill:var(--basalt-950)}
.rx-svg.paper .cp{fill:var(--paper-000);stroke:var(--basalt-700)}
.rx-svg.paper .cp.rev{fill:var(--signal-500);stroke:var(--signal-500)}
.rx-svg.paper .cone{fill:rgba(212,0,0,.1);stroke:var(--signal-500)}

/* the index of scenarios beside the Applications title */
.rx-index ol{list-style:none;margin:0;padding:0;border-top:1px solid rgba(252,251,248,.16)}
.rx-index li{display:flex;justify-content:space-between;gap:16px;align-items:baseline;border-bottom:1px solid rgba(252,251,248,.16)}
.rx-index li a{display:block;padding:14px 0;color:var(--paper-000);text-decoration:none;font-size:17px;font-weight:500}
.rx-index li a:hover{text-decoration:underline}
.rx-index li .num{margin-right:10px;color:var(--signal-400)}
.rx-index li .mono{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--basalt-400)}
.rx-index > p{margin-top:var(--s16);color:var(--basalt-300)}
.rx-horizon{width:100%;height:auto;margin-top:var(--s32)}

/* ---------- mission and vision ---------- */

.rx-mv{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border-hairline);border:1px solid var(--border-hairline)}
.rx-mv > div{background:var(--surface-card);padding:clamp(24px,3.4vw,44px)}
.rx-mv .big{font-size:clamp(21px,2.1vw,28px);line-height:1.3;letter-spacing:-.012em;color:var(--text-strong);max-width:34ch}
.rx-origin{margin-top:var(--s24);font-family:var(--font-mono);font-size:var(--mono-1) !important;letter-spacing:var(--tr-mono);color:var(--text-muted)}

/* ---------- four editorial blocks, numbered on a 2px rule ---------- */

.rx-four{list-style:none;margin:var(--s48) 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s32)}
.rx-four > li{border-top:2px solid var(--text-strong);padding-top:var(--s16)}
.rx-four h3{font-size:var(--title-2);line-height:var(--lh-title);margin:var(--s8) 0 var(--s12)}
.rx-four p{color:var(--text-muted)}
[data-theme="dark"] .rx-four > li{border-top-color:var(--paper-000)}

/* ---------- a split: words on one side, a drawing or a list on the other ---------- */

.rx-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,5vw,72px);align-items:start}
.rx-split.wide{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)}

/* ---------- three pieces that work together ---------- */

.rx-trio{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:stretch;margin-top:var(--s48)}
.rx-trio > div{border:1px solid var(--border-strong);padding:var(--s24);background:var(--surface-card)}
.rx-trio > div .k{margin-bottom:var(--s8)}
.rx-trio h3{font-size:var(--title-2);line-height:var(--lh-title);margin-bottom:var(--s12)}
.rx-trio p{color:var(--text-muted)}
.rx-trio > i{align-self:center;width:40px;height:1px;background:var(--text-strong);position:relative}
.rx-trio > i::after{content:"";position:absolute;right:0;top:-4px;border:4px solid transparent;border-left:6px solid var(--text-strong);border-right:0}

/* ---------- the inspection workflow: six stages, each with actor, input, result ---------- */

.rx-flow{list-style:none;margin:var(--s48) 0 0;padding:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));
  gap:1px;background:var(--border-hairline);border:1px solid var(--border-hairline);counter-reset:st}
.rx-flow > li{background:var(--surface-card);padding:var(--s24) var(--s16) var(--s24) var(--s16);counter-increment:st;position:relative}
.rx-flow > li::before{content:counter(st,decimal-leading-zero);display:block;font:500 var(--mono-1)/1 var(--font-mono);
  letter-spacing:var(--tr-mono);color:var(--accent-strong);margin-bottom:var(--s12)}
.rx-flow h3{font-size:var(--title-3);margin-bottom:var(--s12)}
.rx-flow dl{margin:0;display:grid;gap:var(--s8)}
.rx-flow dt{font:500 var(--eyebrow)/1.2 var(--font-mono);letter-spacing:var(--tr-eyebrow);text-transform:uppercase;color:var(--text-muted)}
.rx-flow dd{margin:0;font-size:15px !important;line-height:1.5 !important;color:var(--text-body)}
.rx-flow > li.rx-last{background:var(--surface-sunken)}

/* ---------- rows of a table of claims, with a label column ---------- */

.rx-rows{border-top:1px solid var(--border-hairline);margin-top:var(--s32)}
.rx-rows > div{display:grid;grid-template-columns:minmax(200px,.34fr) 1fr;gap:var(--s24);padding:var(--s24) 0;border-bottom:1px solid var(--border-hairline)}
.rx-rows b{font-size:var(--title-3);font-weight:600;line-height:var(--lh-row);color:var(--text-strong)}
.rx-rows p{color:var(--text-muted);max-width:68ch}
.rx-rows .tag{margin-top:var(--s8)}

/* ---------- a grid of short items in the 1px-gap field ---------- */

.rx-grid{list-style:none;margin:var(--s48) 0 0;padding:0;display:grid;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));
  gap:1px;background:var(--border-hairline);border:1px solid var(--border-hairline)}
.rx-grid > li{background:var(--surface-card);padding:var(--s24);display:flex;flex-direction:column;gap:var(--s8)}
.rx-grid h3{font-size:var(--title-3)}
.rx-grid p{color:var(--text-muted)}
.rx-grid .k{margin:0}
.rx-grid a{margin-top:auto;padding-top:var(--s8);font-weight:500}
[data-theme="dark"] .rx-grid > li{background:var(--basalt-950)}

/* the product direction: functions tracked in development, not screens */
.rx-track > li{min-height:150px}
.rx-track .k::before{content:"";display:inline-block;width:8px;height:8px;margin-right:8px;border:1px solid currentColor;vertical-align:-1px}

/* ---------- the pilot: what is agreed and what is measured ---------- */

.rx-pilot{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border-hairline);border:1px solid var(--border-hairline);margin-top:var(--s48)}
.rx-pilot > div{background:var(--surface-card);padding:var(--s32)}
.rx-pilot ul{margin:var(--s16) 0 0;padding:0;list-style:none;display:grid;gap:var(--s12)}
.rx-pilot li{padding-left:var(--s24);position:relative;color:var(--text-body)}
.rx-pilot li::before{content:"";position:absolute;left:0;top:.75em;width:10px;height:1px;background:var(--text-strong)}
.rx-pilot b{color:var(--text-strong);font-weight:600}

.rx-note{margin-top:var(--s32);padding:var(--s16) var(--s24);border-left:2px solid var(--signal-600);max-width:76ch;color:var(--text-body)}
[data-theme="dark"] .rx-note{border-left-color:var(--signal-400)}

/* ---------- application scenarios ---------- */

.rx-apps{display:grid;gap:var(--s48);margin-top:var(--s48)}
.rx-app{display:grid;grid-template-columns:minmax(0,.42fr) minmax(0,1fr);gap:var(--s32) clamp(32px,4vw,64px);
  padding-top:var(--s32);border-top:2px solid var(--text-strong);scroll-margin-top:132px}
.rx-app header .num{display:block;margin-bottom:var(--s12)}
.rx-app h2{font-size:clamp(26px,2.6vw,34px);line-height:1.1;letter-spacing:-.02em}
.rx-app header .tag{margin-top:var(--s16)}
.rx-app dl{margin:0;display:grid;grid-template-columns:150px 1fr;gap:var(--s12) var(--s24)}
.rx-app dt{font:500 var(--eyebrow)/1.6 var(--font-mono);letter-spacing:var(--tr-eyebrow);text-transform:uppercase;color:var(--text-muted);padding-top:3px}
.rx-app dd{margin:0;color:var(--text-body);max-width:62ch}
.rx-app ol{margin:0;padding-left:1.3em;display:grid;gap:4px}
.rx-app .actions{grid-column:2;margin-top:0}
.tag.focus{border-color:var(--text-strong)}
.tag.focus::before{content:"";display:inline-block;width:6px;height:6px;margin-right:7px;background:var(--signal-500);vertical-align:1px}
.tag.further{border-style:dashed}

/* ---------- platform families ---------- */

.rx-plat{list-style:none;margin:var(--s48) 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;
  background:var(--border-hairline);border:1px solid var(--border-hairline)}
.rx-plat > li{background:var(--surface-card);display:flex;flex-direction:column}
.rx-plat figure{margin:0;border-bottom:1px solid var(--border-hairline);background:var(--surface-sunken)}
.rx-plat figure svg{width:100%;height:auto}
.rx-plat > li > div{padding:var(--s24)}
.rx-plat h3{font-size:var(--title-2);line-height:var(--lh-title);margin-bottom:var(--s12)}
.rx-plat p{color:var(--text-muted)}

/* ---------- sensing ---------- */

.rx-sense{list-style:none;margin:var(--s32) 0 0;padding:0;border-top:1px solid var(--border-hairline)}
.rx-sense > li{display:grid;grid-template-columns:44px minmax(160px,.3fr) 1fr;gap:var(--s16);align-items:start;padding:var(--s16) 0;border-bottom:1px solid var(--border-hairline)}
.rx-sense svg{width:32px;height:32px}
.rx-sense b{font-size:var(--title-3);color:var(--text-strong);font-weight:600;padding-top:4px}
.rx-sense p{color:var(--text-muted);padding-top:4px}
.rx-ico{fill:none;stroke:var(--text-strong);stroke-width:1.4}
.rx-ico .a{stroke:var(--accent-strong)}

/* ---------- system architecture ---------- */

.rx-arch{margin:var(--s48) 0 0;border:1px solid var(--border-strong);background:var(--surface-card)}
.rx-arch svg{width:100%;height:auto}
.rx-arch figcaption{padding:12px 16px;border-top:1px solid var(--border-hairline);font:400 12px/1.5 var(--font-mono);letter-spacing:var(--tr-mono);color:var(--text-muted)}
.rx-arch-list{margin:var(--s24) 0 0;padding-left:1.4em;display:grid;gap:6px;color:var(--text-body)}
.rx-arch-wide{display:block}
.rx-arch-tall{display:none}

/* ---------- services: five stages ---------- */

.rx-steps{list-style:none;margin:var(--s48) 0 0;padding:0;border-top:2px solid var(--text-strong)}
.rx-steps > li{display:grid;grid-template-columns:72px minmax(0,.4fr) minmax(0,1fr);gap:var(--s24);padding:var(--s24) 0;border-bottom:1px solid var(--border-hairline);align-items:baseline}
.rx-steps h3{font-size:var(--title-2);line-height:var(--lh-title)}
.rx-steps p{color:var(--text-body);max-width:60ch}

/* ---------- partners ---------- */

.rx-partners{list-style:none;margin:var(--s48) 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;
  background:var(--border-hairline);border:1px solid var(--border-hairline)}
.rx-partners > li{background:var(--surface-card);padding:clamp(24px,3vw,40px);display:flex;flex-direction:column;gap:var(--s16)}
.rx-partners h2{font-size:clamp(22px,2.2vw,28px);line-height:1.15;letter-spacing:-.016em}
.rx-partners dl{margin:0;display:grid;gap:var(--s12)}
.rx-partners dt{font:500 var(--eyebrow)/1.4 var(--font-mono);letter-spacing:var(--tr-eyebrow);text-transform:uppercase;color:var(--text-muted)}
.rx-partners dd{margin:0;color:var(--text-body)}
.rx-partners .actions{margin-top:auto;padding-top:var(--s8)}

.rx-chips{list-style:none;margin:var(--s24) 0 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--s8)}
.rx-chips li{padding:8px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-control);
  font:400 var(--mono-1)/1.3 var(--font-mono) !important;letter-spacing:var(--tr-mono);color:var(--text-body)}

/* ---------- the closing band of every page ---------- */

.rx-close{background:var(--basalt-950);padding:clamp(48px,6vw,80px) 0}
.rx-close .wrap{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:var(--s32) var(--s64);align-items:end}
.rx-close h2{font-size:clamp(28px,3.2vw,44px);line-height:1.06;letter-spacing:-.024em;max-width:20ch}
.rx-close p{color:var(--basalt-200);margin-top:var(--s16);max-width:52ch}
.rx-close .actions{justify-content:flex-end;margin-top:0}

/* three results, on the 2px rule of the four horizons */
.rx-four.rx-three{grid-template-columns:repeat(3,1fr)}

/* what a pilot includes: a numbered list on hairlines */
.rx-inc{list-style:none;margin:0;padding:0;border-top:2px solid var(--text-strong);counter-reset:inc}
.rx-inc li{counter-increment:inc;display:grid;grid-template-columns:44px 1fr;padding:14px 0;border-bottom:1px solid var(--border-hairline);color:var(--text-strong);font-weight:500}
.rx-inc li::before{content:counter(inc,decimal-leading-zero);font:500 var(--mono-1)/1.6 var(--font-mono);color:var(--accent-strong)}
.rx-links li{padding:0;border:0}
.rx-links a{display:inline-block;padding:8px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-control);text-decoration:none;color:var(--text-strong)}
.rx-links a:hover{border-color:var(--text-strong);text-decoration:underline}

/* a platform configuration: what it does, what it carries, what Cortex adds */
.rx-cfg{margin:var(--s16) 0 0;display:grid;gap:4px}
.rx-cfg dt{font:500 var(--eyebrow)/1.4 var(--font-mono);letter-spacing:var(--tr-eyebrow);text-transform:uppercase;color:var(--text-muted);margin-top:var(--s12)}
.rx-cfg dd{margin:0;color:var(--text-body)}
.rx-plat > li > div > p{color:var(--text-body);font-weight:500}

/* ============ the illustrative inspection round ============ */

.rx-round{border:1px solid var(--border-strong);background:var(--surface-card);margin-top:var(--s48)}
.rx-round-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s8) var(--s16);
  padding:12px 16px;border-bottom:1px solid var(--border-hairline)}
.rx-round-head .mono{font-size:12px}
.rx-label{display:inline-flex;align-items:center;gap:8px;font:500 var(--eyebrow)/1.4 var(--font-mono);letter-spacing:.1em;
  text-transform:uppercase;color:var(--text-strong)}
.rx-label::before{content:"";width:8px;height:8px;border:1px solid currentColor}

/* without scripts: the static example */
.rx-static{padding:var(--s24)}
.rx-static table{width:100%;border-collapse:collapse;font-size:15px}
.rx-static caption{text-align:left;padding-bottom:var(--s12);color:var(--text-body);font-size:16px;line-height:1.55}
.rx-static th,.rx-static td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border-hairline);vertical-align:top}
.rx-static th{font:500 var(--eyebrow)/1.3 var(--font-mono);letter-spacing:var(--tr-eyebrow);text-transform:uppercase;color:var(--text-muted)}
.rx-static .mono{color:var(--text-strong)}
.rx-static .sum{margin-top:var(--s16);color:var(--text-muted)}
.rx-round.live .rx-static{display:none}
.rx-live{display:none}
.rx-round.live .rx-live{display:grid}

.rx-live{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}
.rx-plan{border-right:1px solid var(--border-hairline);border-bottom:1px solid var(--border-hairline);background:var(--basalt-950);min-width:0;align-self:start;position:sticky;top:132px}
.rx-plan svg{width:100%;height:auto}
.rx-side{padding:var(--s24);display:flex;flex-direction:column;gap:var(--s24);min-width:0}

.rx-scen{border:0;margin:0;padding:0;min-width:0}
.rx-scen legend{padding:0;margin-bottom:var(--s8);font:500 var(--eyebrow)/1.3 var(--font-mono);letter-spacing:var(--tr-eyebrow);text-transform:uppercase;color:var(--text-muted)}
.rx-scen .opts{display:flex;flex-wrap:wrap;gap:6px}
.rx-scen label{position:relative;display:inline-flex;align-items:center;min-height:40px;padding:0 12px;cursor:pointer;
  border:1px solid var(--border-strong);border-radius:var(--radius-control);font-size:14px;color:var(--text-strong);
  transition:background var(--dur-1) var(--ease-standard),border-color var(--dur-2) var(--ease-standard)}
.rx-scen input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.rx-scen label:has(input:checked){background:var(--basalt-950);border-color:var(--basalt-950);color:var(--paper-000)}
.rx-scen label:has(input:focus-visible){outline:2px solid var(--focus-ring);outline-offset:2px}
.rx-scen label:hover{border-color:var(--text-strong)}
.rx-scen .desc{margin-top:var(--s8);font-size:14px !important;line-height:1.5 !important;color:var(--text-muted)}

.rx-ctl{display:flex;flex-wrap:wrap;gap:var(--s8)}
.rx-ctl .btn{min-height:44px;padding:0 16px}
.rx-ctl .btn[disabled]{opacity:.38;cursor:default;pointer-events:none}

.rx-count{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border-hairline);border:1px solid var(--border-hairline)}
.rx-count > div{background:var(--surface-card);padding:12px 14px}
.rx-count dt{font:500 var(--eyebrow)/1.35 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}
.rx-count dd{margin:6px 0 0;font:600 24px/1 var(--font-sans);letter-spacing:-.01em;color:var(--text-strong)}
.rx-count dd small{font:400 12px/1.3 var(--font-mono);letter-spacing:var(--tr-mono);color:var(--text-muted);margin-left:6px}

.rx-msg{min-height:3.2em;padding:12px 14px;border-left:2px solid var(--text-strong);background:var(--surface-sunken);
  font-size:15px !important;line-height:1.5 !important;color:var(--text-strong)}
.rx-msg[data-tone="ex"]{border-left-color:var(--signal-600)}

.rx-pts{list-style:none;margin:0;padding:0;display:grid;gap:1px;background:var(--border-hairline);border:1px solid var(--border-hairline)}
.rx-pts button{width:100%;display:grid;grid-template-columns:40px 22px minmax(0,1fr);gap:10px;align-items:center;text-align:left;
  min-height:44px;padding:8px 12px;border:0;background:var(--surface-card);cursor:pointer;color:var(--text-body);font:400 14px/1.35 var(--font-sans)}
.rx-pts button:hover{background:var(--surface-sunken)}
.rx-pts button[aria-pressed="true"]{background:var(--surface-sunken);box-shadow:inset 2px 0 0 var(--text-strong)}
.rx-pts .id{font:500 12px/1 var(--font-mono);letter-spacing:var(--tr-mono);color:var(--text-strong)}
.rx-pts .st{font:400 12px/1.3 var(--font-mono);letter-spacing:var(--tr-mono);color:var(--text-muted);display:block;margin-top:2px}
.rx-pts .nm{color:var(--text-strong);font-weight:500}

/* a state is a shape and a word, never colour alone */
.rx-g{display:inline-block;width:14px;height:14px;position:relative;border:1.4px solid var(--basalt-500)}
.rx-g[data-s="recorded"]{background:var(--basalt-700);border-color:var(--basalt-700)}
.rx-g[data-s="recorded"]::after{content:"";position:absolute;left:3.5px;top:1px;width:4px;height:7px;border:solid var(--paper-000);border-width:0 1.4px 1.4px 0;transform:rotate(45deg)}
.rx-g[data-s="review"],.rx-g[data-s="reviewed"]{transform:rotate(45deg) scale(.86);background:var(--signal-500);border-color:var(--signal-500)}
.rx-g[data-s="reviewed"]{background:transparent;border-color:var(--signal-600);border-width:2px}
.rx-g[data-s="blocked"]::before,.rx-g[data-s="blocked"]::after{content:"";position:absolute;left:5px;top:-2px;width:1.4px;height:16px;background:var(--signal-600);transform:rotate(45deg)}
.rx-g[data-s="blocked"]::after{transform:rotate(-45deg)}
.rx-g[data-s="blocked"]{border-style:dashed}
.rx-g[data-s="unreadable"]{border-style:dashed;border-color:var(--signal-600)}
.rx-g[data-s="unreadable"]::after{content:"?";position:absolute;inset:0;display:grid;place-items:center;font:600 10px/1 var(--font-mono);color:var(--signal-600)}

.rx-detail{border:1px solid var(--border-hairline);padding:var(--s16)}
.rx-detail h3{font-size:var(--title-3);margin-bottom:var(--s8)}
.rx-detail dl{margin:0;display:grid;grid-template-columns:110px 1fr;gap:6px var(--s16)}
.rx-detail dt{font:500 var(--eyebrow)/1.6 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}
.rx-detail dd{margin:0;font-size:15px !important;line-height:1.5 !important;color:var(--text-body)}
.rx-detail .btn{margin-top:var(--s16);min-height:44px}
.rx-detail .btn[hidden]{display:none}
.rx-detail[hidden]{display:none}

.rx-round-foot{padding:10px 16px;border-top:1px solid var(--border-hairline);font:400 12px/1.5 var(--font-mono);letter-spacing:var(--tr-mono);color:var(--text-muted)}

/* the plan drawing reads its states from data attributes set by the script */
.rx-plan .cp{transition:fill var(--dur-2) var(--ease-standard),stroke var(--dur-2) var(--ease-standard)}
.rx-plan [data-s="recorded"] .cp{fill:var(--basalt-200);stroke:var(--basalt-200)}
.rx-plan [data-s="review"] .cp,.rx-plan [data-s="reviewed"] .cp{fill:var(--signal-400);stroke:var(--signal-400)}
.rx-plan [data-s="reviewed"] .cp{fill:var(--basalt-950);stroke-width:2.2}
.rx-plan [data-s="blocked"] .cp,.rx-plan [data-s="unreadable"] .cp{fill:var(--basalt-950);stroke:var(--signal-400);stroke-dasharray:3 2}
.rx-plan .mk{opacity:0;transition:opacity var(--dur-2) var(--ease-standard)}
.rx-plan [data-s="recorded"] .mk.ok,.rx-plan [data-s="review"] .mk.rv,.rx-plan [data-s="reviewed"] .mk.rv,
.rx-plan [data-s="blocked"] .mk.x,.rx-plan [data-s="unreadable"] .mk.q{opacity:1}
.rx-plan .mk{stroke:var(--basalt-950);stroke-width:1.6;fill:none}
.rx-plan .mk.x,.rx-plan .mk.q{stroke:var(--signal-400)}
.rx-plan .mk.q{fill:var(--signal-400);stroke:none;font:600 11px/1 var(--font-mono)}
.rx-plan .mk.rv{fill:var(--basalt-950);stroke:none;font:700 11px/1 var(--font-mono)}
.rx-plan [data-s="reviewed"] .mk.rv{fill:var(--signal-400)}
.rx-plan [aria-current="true"] .ring{opacity:1}
.rx-plan .ring{opacity:0;fill:none;stroke:var(--paper-000);stroke-width:1;stroke-dasharray:2 3}
.rx-plan .robot .cone{opacity:0;transition:opacity var(--dur-2) var(--ease-standard)}
.rx-plan .robot.scan .cone{opacity:1}

/* compact version, on the Overview: no list of points and no detail */
.rx-round.compact .rx-pts,.rx-round.compact .rx-detail,.rx-round.compact .rx-scen .desc{display:none}

/* ============ contact: a message composer, nothing is submitted ============ */

.rx-contact{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(32px,5vw,72px);align-items:start}
.rx-form{display:none}
.js .rx-form{display:block}
.rx-form fieldset{border:0;margin:0;padding:0;display:grid;gap:var(--s16);min-width:0}
.rx-form legend.lab{padding:0;margin-bottom:6px}
.rx-form fieldset.rx-field{gap:0}
.rx-field{display:grid;gap:6px}
.rx-field[hidden]{display:none}
.rx-field label,.rx-field .lab{font-size:15px;font-weight:600;color:var(--text-strong)}
.rx-field .opt{font-weight:400;color:var(--text-muted);font-size:13px}
.rx-field input,.rx-field select,.rx-field textarea{width:100%;min-height:44px;padding:10px 12px;font:400 16px/1.45 var(--font-sans);
  color:var(--text-strong);background:var(--surface-card);border:1px solid var(--border-strong);border-radius:var(--radius-control)}
.rx-field textarea{min-height:140px;resize:vertical}
.rx-field select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--basalt-700) 50%),linear-gradient(135deg,var(--basalt-700) 50%,transparent 50%);
  background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:36px}
.rx-field input:focus-visible,.rx-field select:focus-visible,.rx-field textarea:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}
.rx-field .hint{font-size:13px !important;color:var(--text-muted)}
.rx-row2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s16)}
.rx-intents{display:flex;flex-wrap:wrap;gap:6px}
.rx-intents label{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:0 14px;cursor:pointer;
  border:1px solid var(--border-strong);border-radius:var(--radius-control);font-size:15px;color:var(--text-strong)}
.rx-intents input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.rx-intents label:has(input:checked){background:var(--basalt-950);border-color:var(--basalt-950);color:var(--paper-000)}
.rx-intents label:has(input:focus-visible){outline:2px solid var(--focus-ring);outline-offset:2px}
.rx-form .actions{margin-top:var(--s24)}
.rx-explain{margin-top:var(--s12);font-size:14px !important;color:var(--text-muted)}
.rx-explain.rx-before{margin:0 0 var(--s24);font-size:16px !important;color:var(--text-strong)}

.rx-draft{margin-top:var(--s32);border:1px solid var(--border-strong);background:var(--surface-card)}
.rx-draft[hidden]{display:none}
.rx-draft-head{padding:12px 16px;border-bottom:1px solid var(--border-hairline);display:grid;gap:4px}
.rx-draft-head .mono{font-size:12px}
.rx-draft-head b{font-size:15px;color:var(--text-strong);overflow-wrap:anywhere}
.rx-draft textarea{display:block;width:100%;min-height:260px;border:0;padding:16px;resize:vertical;background:var(--surface-card);
  font:400 14px/1.6 var(--font-mono);color:var(--text-strong)}
.rx-draft .actions{margin:0;padding:12px 16px;border-top:1px solid var(--border-hairline)}
.rx-copied{font:400 13px/1.4 var(--font-mono);color:var(--text-muted);align-self:center}

.rx-aside{border:1px solid var(--border-hairline);padding:var(--s24);display:grid;gap:var(--s16);background:var(--surface-card)}
.rx-aside h2{font-size:var(--title-2);line-height:var(--lh-title)}
.rx-aside .addr{font:500 17px/1.3 var(--font-mono);color:var(--text-strong);overflow-wrap:anywhere}
.rx-aside pre{margin:0;white-space:pre-wrap;font:400 13px/1.6 var(--font-mono);color:var(--text-body);background:var(--surface-sunken);padding:var(--s16)}

/* ============ responsive ============ */

@media (max-width:1100px){
  .rx-four,.rx-four.rx-three{grid-template-columns:1fr 1fr;row-gap:var(--s32)}
  .rx-flow{grid-template-columns:repeat(3,minmax(0,1fr))}
  .rx-live{grid-template-columns:1fr}
  .rx-plan{border-right:0;border-bottom:1px solid var(--border-hairline);position:static}
  .rx-trio{grid-template-columns:1fr;gap:0}
  .rx-trio > i{width:1px;height:28px;justify-self:start;margin-left:32px}
  .rx-trio > i::after{right:auto;left:-4px;top:auto;bottom:0;border:4px solid transparent;border-top:6px solid var(--text-strong);border-bottom:0}
  .rx-grid{--cols:2 !important}
  .rx-plat{grid-template-columns:1fr 1fr}
  .rx-contact{grid-template-columns:1fr}
}

@media (max-width:820px){
  .p-robotix{--rx-side:20px;--rx-gap:48px}
  .rx-bar .wrap{padding:0 20px;gap:var(--s16)}
  .rx-hero .wrap,.rx-split,.rx-split.wide,.rx-mv,.rx-pilot,.rx-close .wrap{grid-template-columns:1fr}
  .rx-close .actions{justify-content:flex-start}
  .rx-four,.rx-four.rx-three{grid-template-columns:1fr}
  .rx-flow{grid-template-columns:1fr 1fr}
  .rx-rows > div{grid-template-columns:1fr;gap:var(--s8)}
  .rx-app{grid-template-columns:1fr}
  .rx-app .actions{grid-column:1}
  .rx-app dl{grid-template-columns:1fr;gap:4px}
  .rx-app dd{margin-bottom:var(--s8)}
  .rx-grid{--cols:1 !important}
  .rx-plat{grid-template-columns:1fr}
  .rx-sense > li{grid-template-columns:36px 1fr}
  .rx-sense p{grid-column:2}
  .rx-steps > li{grid-template-columns:48px 1fr;gap:var(--s8) var(--s16)}
  .rx-steps p{grid-column:2}
  .rx-partners{grid-template-columns:1fr}
  .rx-row2{grid-template-columns:1fr}
  .rx-arch-wide{display:none}
  .rx-horizon{display:none}
  .rx-arch-tall{display:block;max-width:420px;margin:0 auto}
  .rx-detail dl{grid-template-columns:1fr;gap:2px}
  .rx-detail dd{margin-bottom:6px}
}

@media (max-width:520px){
  .rx-flow{grid-template-columns:1fr}
  .rx-count dd{font-size:20px}
  .rx-brand img{width:135px;height:28px}
  .rx-brand.lg img{width:173px;height:36px}
}

/* drawings that build once: see robotix.js. Each part fades in or is drawn in 260-420ms. */
.rx-anim [data-step]{transition:opacity 260ms var(--ease-out),stroke-dashoffset 420ms var(--ease-out)}
.rx-anim .pre{opacity:0}
.rx-anim .draw{stroke-dasharray:1 1}
.rx-anim .draw.pre{opacity:1;stroke-dashoffset:1}
.rx-anim .cp{transition:fill var(--dur-2) var(--ease-standard),stroke var(--dur-2) var(--ease-standard)}
