/*
  CodifyAI connected theme — the public codifyai.eu design system.

  One stylesheet for every public surface: the static shell served by
  render_estate() (home, systems, pricing, legal, /build …) and the Odoo pages
  framed by views/v2/frontend_estate.xml (sign-in, /my, shop, booking, help).
  Every class and custom property is prefixed cx-/--cx- so nothing collides
  with Bootstrap or the retired galaxy stylesheets that Odoo pages still load.

  Rollback without a deploy: set ir.config_parameter
  codifyai_website_v19.theme = galaxy (see README, "Themes").
*/
:root{
  --cx-ground:#070A0F;--cx-panel:#0D121B;--cx-panel-2:#121926;
  --cx-line:rgba(150,170,210,.16);--cx-line-2:rgba(150,170,210,.30);
  --cx-ink:#EDF1F8;--cx-ink-2:#A3AEC4;--cx-ink-3:#7C88A1;
  --cx-route:#6D9BFF;--cx-live:#7DF3FF;--cx-signal:#FFB454;--cx-violet:#A99BFF;
  --cx-ok:#5BE49B;--cx-fault:#FF7A90;
  --cx-ease:cubic-bezier(.2,.7,.1,1);
  --cx-display:"Overpass","Arial Narrow","Helvetica Neue",Arial,sans-serif;
  --cx-body:"Albert Sans","Helvetica Neue",Helvetica,Arial,system-ui,sans-serif;
  --cx-mono:"Overpass Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --cx-gutter:clamp(16px,4vw,40px);
  --cx-nav-h:64px;
}
/* The shell served by render_estate() owns the whole document. */
html.cx-shell{color-scheme:dark;-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--cx-nav-h) + 20px + env(safe-area-inset-top,0px));scroll-behavior:smooth;
  /* Tokens the /build guide (visitor_signal.css) reads. */
  --bg:#070A0F;--ink:#EDF1F8;--dim:#A3AEC4;--faint:#7C88A1;--line:rgba(150,170,210,.16);--line2:rgba(150,170,210,.30);
  --glass:rgba(13,18,27,.84);--glass2:rgba(18,25,38,.94);--acc:#6D9BFF;--acc2:#7DF3FF;--amber:#FFB454;--ok:#5BE49B;
  --mono:"Overpass Mono",ui-monospace,Menlo,Consolas,monospace;--sans:"Albert Sans","Helvetica Neue",Arial,sans-serif}
html.cx-shell *,html.cx-shell *::before,html.cx-shell *::after{box-sizing:border-box}
html.cx-shell body{margin:0;background:var(--cx-ground);color:var(--cx-ink);font:400 17px/1.55 var(--cx-body);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip}
@media (prefers-reduced-motion:reduce){html.cx-shell{scroll-behavior:auto}}
.cx h1,.cx h2,.cx h3,.cx-shell h1,.cx-shell h2,.cx-shell h3{font-family:var(--cx-display);font-weight:800;line-height:1.02;letter-spacing:-.015em;text-wrap:balance;margin:0;color:var(--cx-ink)}
.cx-shell h2{font-size:clamp(34px,4.1vw,48px)}
.cx-shell h3{font-size:26px}
.cx-shell p{margin:0;max-width:65ch}
.cx-shell a{color:var(--cx-route)}
.cx-shell ul,.cx-shell ol{margin:0;padding:0;list-style:none}
.cx-shell button{font:inherit;color:inherit}
.cx-shell :focus-visible,.cx :focus-visible{outline:2px solid var(--cx-route);outline-offset:3px}
.cx-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.cx-skip{position:absolute;left:12px;top:-60px;z-index:100;padding:10px 14px;background:var(--cx-signal);color:var(--cx-ground)!important;font:600 15px var(--cx-body);text-decoration:none}
.cx-skip:focus{top:12px}
.cx-wrap{max-width:1200px;margin-inline:auto;padding-inline:var(--cx-gutter)}
.cx-mono{font-family:var(--cx-mono)}
.cx-eyebrow,.cx-k{font:600 13px/1.3 var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--cx-ink-3)}
.cx-eyebrow b{color:var(--cx-route);font-weight:600}
.cx-lead{font-size:20px;line-height:1.5;color:var(--cx-ink-2);max-width:56ch}
.cx-price{color:var(--cx-signal)}
.cx-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none}
.cx-dot--ok{background:var(--cx-ok);box-shadow:0 0 0 4px rgba(91,228,155,.14)}
.cx-link{color:var(--cx-route);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;display:inline-flex;align-items:center;min-height:44px;font-weight:500}
.cx-link:hover{color:#9DBBFF}

/* ---------- buttons ---------- */
.cx-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 20px;border:1px solid transparent;border-radius:3px;font:600 16px/1.2 var(--cx-body);text-decoration:none!important;white-space:nowrap;cursor:pointer;transition:background-color .3s var(--cx-ease),border-color .3s var(--cx-ease),color .3s var(--cx-ease)}
.cx-btn--primary{background:var(--cx-signal);color:var(--cx-ground)!important}
.cx-btn--primary:hover{background:#FFC677}
.cx-btn--buy{background:var(--cx-route);color:var(--cx-ground)!important}
.cx-btn--buy:hover{background:#8FB3FF}
.cx-btn--ghost{border-color:var(--cx-line-2);color:var(--cx-ink)!important;background:transparent}
.cx-btn--ghost:hover{border-color:var(--cx-route)}
.cx-btn--sm{min-height:44px;padding:0 16px;font-size:15px}
.cx-ctas{display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px}

/* ---------- navigation (shared with the Odoo frame) ---------- */
.cx-nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:40;background:rgba(7,10,15,.9);-webkit-backdrop-filter:saturate(140%) blur(12px);backdrop-filter:saturate(140%) blur(12px);border-bottom:1px solid var(--cx-line);font:400 17px/1.55 var(--cx-body)}
.cx-nav .cx-wrap{display:flex;align-items:center;gap:20px;height:var(--cx-nav-h)}
.cx-wordmark{display:inline-flex;align-items:center;min-height:44px;font:800 23px/1 var(--cx-display);letter-spacing:-.02em;color:var(--cx-ink)!important;text-decoration:none!important}
.cx-wordmark span{color:var(--cx-route)}
.cx-nav__links{display:flex;align-items:center;gap:2px;margin-left:auto}
.cx-nav__links a{display:inline-flex;align-items:center;min-height:44px;padding:0 11px;color:var(--cx-ink-2)!important;text-decoration:none!important;font-size:15px;font-weight:500;transition:color .25s var(--cx-ease)}
.cx-nav__links a:hover,.cx-nav__links a[aria-current="page"]{color:var(--cx-ink)!important}
.cx-nav__links .cx-sep{width:1px;height:20px;background:var(--cx-line-2);margin:0 6px}
.cx-nav__cta{margin-left:6px}
.cx-menu{display:none;position:relative}
.cx-menu summary{list-style:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:44px;min-height:44px;padding:0 12px;border:1px solid var(--cx-line-2);border-radius:3px;cursor:pointer;color:var(--cx-ink)}
.cx-menu summary::-webkit-details-marker{display:none}
.cx-menu summary i{display:block;width:14px;height:1px;background:currentColor;box-shadow:0 -4px 0 currentColor,0 4px 0 currentColor}
.cx-menu[open] summary i{box-shadow:none;transform:rotate(45deg)}
.cx-menu__panel{position:absolute;right:0;top:calc(100% + 10px);width:min(290px,calc(100vw - 32px));background:var(--cx-panel);border:1px solid var(--cx-line-2);padding:6px 0;box-shadow:0 30px 60px -20px rgba(0,0,0,.8)}
.cx-menu__panel a{display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:0 16px;color:var(--cx-ink)!important;text-decoration:none!important;border-top:1px solid var(--cx-line);font-size:16px}
.cx-menu__panel a:first-child{border-top:0}
.cx-menu__panel a span{font:400 13px var(--cx-mono);color:var(--cx-ink-3)}
@media (max-width:1023px){.cx-nav__links{display:none}.cx-menu{display:block;margin-left:auto}.cx-nav .cx-wrap{gap:10px}}
@media (max-width:399px){.cx-nav__cta .cx-long{display:none}}
@media (min-width:400px){.cx-nav__cta .cx-short{display:none}}

/* ---------- sections ---------- */
.cx-sec{padding-block:104px;border-top:1px solid var(--cx-line)}
.cx-sec__head{margin-bottom:48px}
.cx-sec__head .cx-eyebrow{margin-bottom:18px}
.cx-sec__head .cx-lead{margin-top:18px}
@media (max-width:759px){.cx-sec{padding-block:64px}.cx-sec__head{margin-bottom:32px}}

/* ---------- panels + HUD ---------- */
.cx-panel{position:relative;background:var(--cx-panel);border:1px solid var(--cx-line-2);box-shadow:inset 0 1px 0 rgba(237,241,248,.05),inset 0 0 70px rgba(109,155,255,.055),0 50px 90px -60px rgba(0,0,0,.95)}
.cx-tick{position:absolute;width:14px;height:14px;border:0 solid var(--cx-route);pointer-events:none}
.cx-tick.tl{top:-7px;left:-7px;border-width:1px 0 0 1px}.cx-tick.tr{top:-7px;right:-7px;border-width:1px 1px 0 0}
.cx-tick.bl{bottom:-7px;left:-7px;border-width:0 0 1px 1px}.cx-tick.br{bottom:-7px;right:-7px;border-width:0 1px 1px 0}
.cx-hud{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--cx-line)}
.cx-hud .cx-k{line-height:1.35}
.cx-hud .cx-k b{display:block;color:var(--cx-ink);font-weight:600}
.cx-clock{text-align:right}
.cx-clock b{display:block;font:600 26px/1 var(--cx-mono);color:var(--cx-ink);letter-spacing:.02em}
.cx-clock .cx-k{font-size:13px}
.cx-live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--cx-ink-3);margin-right:6px;vertical-align:1px}
.is-live .cx-live-dot{background:var(--cx-live);animation:cx-blink 1.6s var(--cx-ease) infinite}
@keyframes cx-blink{0%,100%{opacity:1}50%{opacity:.25}}
.cx-stage{position:relative;overflow:hidden}
.cx-stage svg{display:block;width:100%;height:auto}
.cx-illus{position:absolute;right:10px;bottom:8px;padding:3px 7px;background:rgba(7,10,15,.78);border:1px solid var(--cx-line);font-size:13px;color:var(--cx-ink-2);pointer-events:none}
.cx-ledger__head{display:flex;justify-content:space-between;gap:12px;padding:9px 16px;border-top:1px solid var(--cx-line)}
.cx-ledger ol{position:relative;height:190px;overflow:hidden;border-top:1px solid var(--cx-line)}
.cx-ledger li{display:grid;grid-template-columns:48px 10px 1fr;gap:10px;align-items:baseline;padding:8px 16px;border-bottom:1px solid var(--cx-line);font-size:15px;line-height:1.35;color:var(--cx-ink-2)}
.cx-ledger li.is-new{animation:cx-rowin .6s var(--cx-ease) both}
.cx-ledger li time{font:600 13px var(--cx-mono);color:var(--cx-ink)}
.cx-ledger li .sd{width:8px;height:8px;border-radius:50%;align-self:center;background:var(--cx-ink-3)}
.sd--ok{background:var(--cx-ok)!important}.sd--live{background:var(--cx-live)!important}.sd--route{background:var(--cx-route)!important}.sd--fault{background:var(--cx-fault)!important}
.cx-ledger li.empty{grid-template-columns:1fr;color:var(--cx-ink-3)}
.is-rewind .cx-ledger li{opacity:.25;transition:opacity .6s var(--cx-ease)}
@keyframes cx-rowin{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

/* ---------- hero ---------- */
.cx-hero{padding-block:48px 104px}
.cx-hero .cx-eyebrow{margin-bottom:22px}
.cx-hero h1{font-size:clamp(40px,6.2vw,78px);font-weight:900;letter-spacing:-.028em;line-height:1.02;max-width:15.5em}
.cx-hero h1 .l2{display:block;margin-top:.26em;font-size:.56em;font-weight:800;letter-spacing:-.018em;color:var(--cx-ink-2)}
.cx-hero__grid{display:grid;grid-template-columns:5fr 7fr;gap:clamp(32px,4.5vw,64px);margin-top:44px;align-items:start}
.cx-hero__sub{font-size:20px;line-height:1.5;color:var(--cx-ink-2);max-width:34ch}
.cx-hero .cx-ctas{margin-top:30px}
.cx-micro{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:26px;font:400 13px/1.5 var(--cx-mono);letter-spacing:.03em;color:var(--cx-ink-2)}
.cx-micro a{color:var(--cx-ink);text-underline-offset:3px}
.cx-hero__facts{margin-top:36px;border-top:1px solid var(--cx-line)}
.cx-hero__facts li{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--cx-line);font-size:15px;color:var(--cx-ink-2)}
.cx-hero__facts li b{font:600 13px var(--cx-mono);letter-spacing:.06em;color:var(--cx-ink);text-transform:uppercase}
@media (max-width:959px){.cx-hero__grid{grid-template-columns:1fr}.cx-hero__sub{max-width:46ch}}
@media (max-width:759px){.cx-hero{padding-block:36px 64px}.cx-hero__grid{margin-top:28px}.cx-hero__facts{display:none}}

/* connected-company map */
.cmap .cm-ring-faint{fill:none;stroke:rgba(150,170,210,.07)}
.cmap .cm-orbit{fill:none;stroke:rgba(150,170,210,.2)}
.cmap .cm-group-arc{fill:none;stroke:rgba(109,155,255,.62);stroke-width:1.6;stroke-linecap:round}
.cmap .cm-group-tick{stroke:rgba(109,155,255,.62)}
.cmap .cm-group-label{font:600 11px var(--cx-mono);letter-spacing:.16em;fill:var(--cx-ink-3)}
.cmap .cm-spoke{stroke:rgba(150,170,210,.14);stroke-dasharray:2 4}
.cmap .cm-edge{fill:none;stroke:rgba(150,170,210,.34);stroke-width:1.1;transition:stroke .6s var(--cx-ease)}
.cmap .cm-edge.is-active{stroke:rgba(125,243,255,.62)}
.cmap .cm-pulse-trail{fill:none;stroke:var(--cx-live);stroke-width:2.3;stroke-linecap:round;opacity:.9}
.cmap .cm-core{fill:#0E1728;stroke:rgba(109,155,255,.75);stroke-width:1.2}
.cmap .cm-core-label{font:600 10.5px var(--cx-mono);letter-spacing:.18em;fill:var(--cx-ink)}
.cmap .cm-hit{fill:transparent}
.cmap .cm-halo{fill:rgba(109,155,255,.09)}
.cmap .cm-flash{fill:none;stroke:var(--cx-live);stroke-width:1.5;opacity:0;transform-box:fill-box;transform-origin:center}
.cmap .cm-dot{fill:var(--cx-panel-2);stroke:var(--cx-route);stroke-width:1.5;transition:stroke .3s var(--cx-ease)}
.cmap .cm-dot-in{fill:var(--cx-route)}
.cmap .is-live .cm-dot{stroke:var(--cx-live)}.cmap .is-live .cm-dot-in{fill:var(--cx-live)}
.cmap .cm-label{font:600 10.5px var(--cx-mono);letter-spacing:.12em;fill:var(--cx-ink-2);transition:fill .3s var(--cx-ease)}
.cmap .cm-node{cursor:pointer}
.cmap .cm-node:focus{outline:none}
.cmap .cm-node:hover .cm-label,.cmap .cm-node:focus-visible .cm-label{fill:var(--cx-ink)}
.cmap .cm-node:hover .cm-dot{stroke:var(--cx-live)}
.cmap .cm-node:focus-visible .cm-halo{fill:none;stroke:var(--cx-route);stroke-width:2}
.cmap .cm-pulse-core{fill:#F2FFFF}
@media (max-width:759px){.cmap .cm-label{font-size:17px}.cmap .cm-group-label{font-size:16px}.cmap .cm-core-label{font-size:14px}}

/* ---------- configurator ---------- */
.cx-cfg{display:grid;grid-template-columns:7fr 5fr}
.cx-cfg__needs{padding:24px}
.cx-cfg__needs .cx-k{margin-bottom:14px}
.cx-needs{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cx-need{display:grid;grid-template-columns:auto 1fr auto;gap:2px 12px;align-items:start;width:100%;min-height:76px;padding:13px 14px;text-align:left;background:transparent;border:1px solid var(--cx-line-2);border-radius:3px;cursor:pointer;transition:border-color .3s var(--cx-ease),background-color .3s var(--cx-ease)}
.cx-need:hover{border-color:rgba(109,155,255,.7)}
.cx-need__n{grid-row:span 2;font:600 13px/1.5 var(--cx-mono);color:var(--cx-ink-3)}
.cx-need__t{font-size:17px;font-weight:600;line-height:1.3;color:var(--cx-ink)}
.cx-need__s{grid-column:2;font-size:13px;line-height:1.4;color:var(--cx-ink-3)}
.cx-need__box{grid-row:span 2;align-self:center;width:18px;height:18px;border:1px solid var(--cx-line-2);border-radius:2px;position:relative}
.cx-need[aria-pressed="true"]{border-color:var(--cx-route);background:rgba(109,155,255,.08)}
.cx-need[aria-pressed="true"] .cx-need__box{background:var(--cx-route);border-color:var(--cx-route)}
.cx-need[aria-pressed="true"] .cx-need__box::after{content:"";position:absolute;left:5px;top:1px;width:5px;height:10px;border:solid var(--cx-ground);border-width:0 2px 2px 0;transform:rotate(45deg)}
.cx-need[aria-pressed="true"] .cx-need__s{color:var(--cx-ink-2)}
.cx-veh{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:14px;padding:14px;border:1px solid var(--cx-line);background:rgba(18,25,38,.6)}
.cx-veh[hidden]{display:none}
.cx-veh label{font:600 13px var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--cx-ink-2)}
.cx-stepper{display:inline-flex;align-items:stretch;border:1px solid var(--cx-line-2);border-radius:3px}
.cx-stepper button{width:44px;min-height:44px;background:transparent;border:0;font:600 20px var(--cx-mono);color:var(--cx-ink);cursor:pointer}
.cx-stepper button:hover{background:rgba(109,155,255,.1)}
.cx-stepper input{width:72px;border:0;border-inline:1px solid var(--cx-line-2);background:transparent;color:var(--cx-ink);text-align:center;font:600 20px var(--cx-mono);-moz-appearance:textfield;appearance:textfield}
.cx-stepper input::-webkit-outer-spin-button,.cx-stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.cx-veh output{font:400 13px var(--cx-mono);color:var(--cx-ink-3)}
.cx-cfg__out{padding:24px;border-left:1px solid var(--cx-line-2);display:flex;flex-direction:column}
.cx-cfg__outhead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}
.cx-badge{font:600 13px var(--cx-mono);letter-spacing:.04em;color:var(--cx-ink-2);border:1px dashed var(--cx-line-2);padding:3px 8px}
.cx-badge.is-user{border-style:solid;color:var(--cx-live);border-color:rgba(125,243,255,.5)}
.cx-yc{border-top:1px solid var(--cx-line)}
.cx-yc li{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:10px 0;border-bottom:1px solid var(--cx-line);font-size:15px}
.cx-yc li b{font-weight:600;color:var(--cx-ink)}
.cx-yc li small{display:block;font-size:13px;color:var(--cx-ink-3)}
.cx-yc li .p{font:600 13px var(--cx-mono);text-align:right;white-space:nowrap}
.cx-yc li .p.q{color:var(--cx-ink-3)}
.cx-yc li .p a{color:var(--cx-route)}
.cx-yc li.none{color:var(--cx-ink-3)}
.cx-yc__sum{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end;margin-top:18px}
.cx-yc__total b{display:block;font:900 48px/1 var(--cx-display);letter-spacing:-.02em;color:var(--cx-signal);margin-top:6px}
.cx-yc__total b small{font-size:.5em;font-weight:800;letter-spacing:0}
.cx-yc__total .vat{display:block;margin-top:6px;font-size:13px;color:var(--cx-ink-2)}
.cx-yc__rest{margin-top:8px;font-size:15px;color:var(--cx-ink-2)}
.cx-mini{width:112px;height:112px;display:block}
.cx-mini .mini-orbit{fill:none;stroke:var(--cx-line)}
.cx-mini .mini-core{fill:var(--cx-route)}
.cx-mini .mini-n circle{fill:var(--cx-panel-2);stroke:var(--cx-line-2);transition:fill .3s var(--cx-ease),stroke .3s var(--cx-ease)}
.cx-mini .mini-spoke{stroke:transparent;transition:stroke .3s var(--cx-ease)}
.cx-mini .is-on circle{fill:var(--cx-live);stroke:var(--cx-live)}
.cx-mini .is-on .mini-spoke{stroke:rgba(125,243,255,.55)}
.cx-cfg__out .cx-ctas{margin-top:22px}
.cx-fine{margin-top:12px;font-size:13px;color:var(--cx-ink-3)}
@media (max-width:959px){.cx-cfg{grid-template-columns:1fr}.cx-cfg__out{border-left:0;border-top:1px solid var(--cx-line-2)}}
@media (max-width:599px){.cx-needs{grid-template-columns:1fr}.cx-cfg__needs,.cx-cfg__out{padding:18px 16px}.cx-yc__total b{font-size:40px}}

/* ---------- systems list ---------- */
.cx-sys-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px 56px}
.cx-grp h3{display:flex;justify-content:space-between;font:600 13px var(--cx-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--cx-ink-2);padding-bottom:10px;border-bottom:1px solid var(--cx-line-2)}
.cx-grp h3 span{color:var(--cx-ink-3)}
.cx-grp h3+.cx-sys{margin-top:0}
.cx-grp .cx-grp__next{margin-top:40px}
.cx-sys{display:grid;grid-template-columns:30px 1fr auto;gap:2px 14px;padding:13px 0;border-bottom:1px solid var(--cx-line);text-decoration:none!important;color:inherit!important}
.cx-sys__n{grid-row:span 2;font:600 13px/1.6 var(--cx-mono);color:var(--cx-ink-3)}
.cx-sys__name{font-size:17px;font-weight:600;color:var(--cx-ink);transition:color .25s var(--cx-ease)}
.cx-sys__out{grid-column:2;font-size:15px;line-height:1.45;color:var(--cx-ink-2)}
.cx-sys__p{grid-row:1;grid-column:3;font:600 13px/1.6 var(--cx-mono);text-align:right;white-space:nowrap;color:var(--cx-signal)}
.cx-sys__p.q{color:var(--cx-ink-3)}
.cx-sys:hover .cx-sys__name{color:var(--cx-route)}
.cx-sys-dk{display:grid;grid-template-columns:auto 1fr auto;gap:6px 16px;align-items:baseline;margin-top:40px;padding:16px 0;border-top:1px solid var(--cx-line-2);border-bottom:1px solid var(--cx-line-2)}
.cx-sys-dk p{font-size:15px;color:var(--cx-ink-2)}
.cx-sys-foot{display:flex;flex-wrap:wrap;gap:4px 28px;margin-top:20px}
.cx-caps{margin-top:24px;border-top:1px solid var(--cx-line)}
.cx-caps li{display:grid;grid-template-columns:160px 1fr;gap:14px;padding:12px 0;border-bottom:1px solid var(--cx-line);font-size:16px;color:var(--cx-ink-2)}
.cx-caps li b{font:600 13px/1.6 var(--cx-mono);letter-spacing:.06em;color:var(--cx-ink);text-transform:uppercase}
@media (max-width:859px){.cx-sys-grid{grid-template-columns:1fr}.cx-sys-dk{grid-template-columns:1fr}}
@media (max-width:420px){.cx-sys{grid-template-columns:26px 1fr}.cx-sys__p{grid-row:auto;grid-column:2;text-align:left}.cx-caps li{grid-template-columns:1fr;gap:2px}}

/* ---------- how it works ---------- */
.cx-how{display:grid;grid-template-columns:3fr 1fr;gap:48px}
.cx-steps{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--cx-line-2)}
.cx-steps li{padding:22px 22px 0 0;margin-right:22px;border-right:1px solid var(--cx-line)}
.cx-steps li:last-child{border-right:0;margin-right:0}
.cx-steps .n{font:600 13px var(--cx-mono);color:var(--cx-route);letter-spacing:.08em}
.cx-steps h3{margin-top:14px;font-size:26px}
.cx-steps p{margin-top:10px;font-size:15px;color:var(--cx-ink-2)}
.cx-trust{border-top:1px solid var(--cx-line-2)}
.cx-trust li{padding:16px 0;border-bottom:1px solid var(--cx-line)}
.cx-trust b{display:block;font-size:17px;font-weight:600}
.cx-trust p{font-size:15px;color:var(--cx-ink-2)}
.cx-trust .cx-link{min-height:32px}
@media (max-width:1023px){.cx-how{grid-template-columns:1fr}.cx-steps{grid-template-columns:1fr 1fr;row-gap:28px}.cx-steps li:nth-child(2){border-right:0;margin-right:0}}
@media (max-width:599px){.cx-steps{grid-template-columns:1fr}.cx-steps li{border-right:0;margin-right:0;padding-right:0;padding-bottom:6px;border-bottom:1px solid var(--cx-line)}}

/* ---------- pricing table ---------- */
.cx-ptable{width:100%;border-collapse:collapse;border-top:1px solid var(--cx-line-2)}
.cx-ptable th{font:600 13px var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--cx-ink-3);text-align:left;padding:12px 16px 12px 0;border-bottom:1px solid var(--cx-line-2)}
.cx-ptable td{padding:20px 16px 20px 0;border-bottom:1px solid var(--cx-line);vertical-align:top;font-size:15px;color:var(--cx-ink-2)}
.cx-ptable td:first-child b{display:block;font-size:17px;font-weight:600;color:var(--cx-ink)}
.cx-amt{font:900 26px/1.1 var(--cx-display);color:var(--cx-signal);letter-spacing:-.01em}
.cx-amt small{display:block;margin-top:4px;font:600 13px/1.4 var(--cx-mono);color:var(--cx-signal);letter-spacing:.02em}
.cx-amt.q{color:var(--cx-ink-3)}
.cx-ptable td:last-child{text-align:right;padding-right:0;white-space:nowrap}
.cx-pnote{margin-top:20px;font-size:15px;color:var(--cx-ink-2)}
@media (max-width:859px){.cx-ptable thead{display:none}.cx-ptable tr{display:grid;grid-template-columns:1fr;padding:18px 0;border-bottom:1px solid var(--cx-line)}.cx-ptable td{padding:4px 0;border:0}.cx-ptable td:last-child{text-align:left;white-space:normal}}

/* ---------- doors ---------- */
.cx-doors{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--cx-line-2);border-bottom:1px solid var(--cx-line-2)}
.cx-door{display:flex;flex-direction:column;gap:12px;padding:26px 24px 28px;border-left:1px solid var(--cx-line)}
.cx-door:first-child{border-left:0;padding-left:0}
.cx-door svg{width:34px;height:34px;stroke:var(--cx-route);fill:none;stroke-width:1.4}
.cx-door--build svg{stroke:var(--cx-violet)}
.cx-door--build .cx-k{color:var(--cx-violet)}
.cx-door h3{font-size:26px}
.cx-door p{font-size:15px;color:var(--cx-ink-2);flex:1}
.cx-door .cx-btn{align-self:flex-start;white-space:normal;text-align:left}
@media (max-width:1023px){.cx-doors{grid-template-columns:1fr 1fr}.cx-door:nth-child(3){border-left:0;padding-left:0}.cx-door:nth-child(n+3){border-top:1px solid var(--cx-line)}}
@media (max-width:599px){.cx-doors{grid-template-columns:1fr}.cx-door{border-left:0;padding-left:0;padding-right:0}.cx-door+.cx-door{border-top:1px solid var(--cx-line)}}

/* ---------- proof ---------- */
.cx-facts{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--cx-line-2);border-bottom:1px solid var(--cx-line-2)}
.cx-fact{padding:24px 24px 26px;border-left:1px solid var(--cx-line)}
.cx-fact:first-child{border-left:0;padding-left:0}
.cx-fact b{display:block;font:800 26px/1.15 var(--cx-display);letter-spacing:-.01em;color:var(--cx-ink)}
.cx-fact p{margin-top:10px;font-size:15px;color:var(--cx-ink-2)}
.cx-fact .cx-link{min-height:32px;font-size:15px}
@media (max-width:859px){.cx-facts{grid-template-columns:1fr}.cx-fact{border-left:0;padding-left:0}.cx-fact+.cx-fact{border-top:1px solid var(--cx-line)}}

/* ---------- faq ---------- */
.cx-faq{border-top:1px solid var(--cx-line-2);max-width:880px}
.cx-faq details{border-bottom:1px solid var(--cx-line)}
.cx-faq summary{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:64px;padding:12px 0;cursor:pointer;list-style:none;font-size:20px;font-weight:600;color:var(--cx-ink)}
.cx-faq summary::-webkit-details-marker{display:none}
.cx-faq summary::after{content:"+";flex:none;width:28px;height:28px;display:grid;place-items:center;border:1px solid var(--cx-line-2);font:600 17px var(--cx-mono);color:var(--cx-route)}
.cx-faq details[open] summary::after{content:"\2212"}
.cx-faq details p{padding:0 44px 22px 0;color:var(--cx-ink-2)}

/* ---------- closing + footer ---------- */
.cx-closing{padding-block:120px 104px;border-top:1px solid var(--cx-line)}
.cx-closing h2{font-size:clamp(34px,5vw,64px);font-weight:900;max-width:18ch}
.cx-closing .cx-ctas{margin-top:32px}
.cx-foot{border-top:1px solid var(--cx-line);padding-block:40px 48px;font:400 15px/1.55 var(--cx-body);color:var(--cx-ink-2);background:var(--cx-ground)}
.cx-foot__cols{display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr;gap:28px 40px;margin-top:24px}
.cx-foot h2{font:600 13px/1.3 var(--cx-mono)!important;letter-spacing:.08em;text-transform:uppercase;color:var(--cx-ink-3)!important;margin:0 0 10px}
.cx-foot ul{list-style:none;margin:0;padding:0}
.cx-foot li a{display:inline-flex;align-items:center;min-height:36px;color:var(--cx-ink-2)!important;text-decoration:none!important}
.cx-foot li a:hover{color:var(--cx-ink)!important}
.cx-foot__id{margin-top:28px;padding-top:18px;border-top:1px solid var(--cx-line);font:400 13px/1.7 var(--cx-mono);color:var(--cx-ink-3)}
.cx-foot__legal{margin-top:22px;border-top:1px solid var(--cx-line)}
.cx-foot__legal summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:10px;min-height:48px;font:600 13px var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--cx-ink-2)}
.cx-foot__legal summary::-webkit-details-marker{display:none}
.cx-foot__legal summary::after{content:"+";color:var(--cx-route)}
.cx-foot__legal[open] summary::after{content:"\2212"}
.cx-foot__legal .cai-legal-directory{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 28px;padding:6px 0 10px}
.cx-foot__legal .cai-legal-directory__group{display:flex;flex-direction:column;gap:2px}
.cx-foot__legal .cai-legal-directory__group>span,.cx-foot__legal .cai-legal-directory h3,.cx-foot__legal .cai-legal-directory strong{font:600 13px var(--cx-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--cx-ink-3);margin:6px 0 4px}
.cx-foot__legal .cai-legal-directory a{display:inline-flex;align-items:center;min-height:34px;color:var(--cx-ink-2)!important;text-decoration:none!important;font-size:15px}
.cx-foot__legal .cai-legal-directory a:hover{color:var(--cx-ink)!important}
.cx-foot__legal .cai-legal-directory__identity{display:none}
@media (max-width:959px){.cx-foot__cols{grid-template-columns:1fr 1fr}.cx-foot__legal .cai-legal-directory{grid-template-columns:1fr 1fr}}
@media (max-width:599px){.cx-foot__cols,.cx-foot__legal .cai-legal-directory{grid-template-columns:1fr}}
@media (max-width:759px){.cx-closing{padding-block:72px 64px}}

/* ---------- phone bar ---------- */
.cx-pbar{display:none}
@media (max-width:759px){
  html.cx-shell body,html.cx-theme body{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
  .cx-pbar{display:flex;gap:10px;position:fixed;left:0;right:0;bottom:0;z-index:45;padding:10px var(--cx-gutter) calc(10px + env(safe-area-inset-bottom,0px));background:rgba(7,10,15,.94);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--cx-line-2)}
  .cx-pbar .cx-btn{flex:1;min-height:48px}
  .cx-pbar .cx-btn--ghost{flex:0 0 auto}
}

/* ---------- mode switching inside the one shell ---------- */
.cx-reader,.cx-build,.cx-arrive{display:none}
html.reader-mode .cx-home,html.build-mode .cx-home,html.cx-arrival .cx-home{display:none}
html.reader-mode .cx-reader{display:block}
html.build-mode .cx-build{display:block}
html.cx-arrival .cx-arrive{display:block}

/* ---------- content pages (systems, pricing, about, legal …) ---------- */
.cx-reader{padding-block:48px 104px}
.cx-page-hero{padding-bottom:48px;border-bottom:1px solid var(--cx-line)}
.cx-page-hero .cx-eyebrow{margin-bottom:18px}
.cx-page-hero h1{font-size:clamp(38px,5.4vw,68px);font-weight:900;letter-spacing:-.026em;max-width:17em}
.cx-page-hero .cx-lead{margin-top:20px}
.cx-page-hero .cx-ctas{margin-top:28px}
.cx-page-hero .cx-micro{margin-top:22px}
.cx-block{padding-block:64px;border-bottom:1px solid var(--cx-line)}
.cx-block:last-child{border-bottom:0}
.cx-block>h2{font-size:clamp(28px,3.4vw,40px)}
.cx-block>.cx-lead{margin-top:14px}
.cx-block>.cx-eyebrow{margin-bottom:14px}
.cx-split{display:grid;grid-template-columns:7fr 5fr;gap:clamp(28px,4vw,56px);align-items:start}
.cx-card{padding:24px;border:1px solid var(--cx-line-2);background:var(--cx-panel)}
.cx-card h2,.cx-card h3{font-size:24px}
.cx-card p{margin-top:10px;color:var(--cx-ink-2);font-size:15px}
.cx-card .cx-ctas{margin-top:18px}
.cx-bigprice,.cx-card .cx-bigprice{margin-top:0;font:900 clamp(34px,4vw,48px)/1.05 var(--cx-display);color:var(--cx-signal);letter-spacing:-.015em;max-width:none}
.cx-bigprice small,.cx-card .cx-bigprice small{display:block;margin-top:8px;font:600 15px/1.5 var(--cx-body);color:var(--cx-ink-2);letter-spacing:0}
.cx-chips{display:flex;flex-wrap:wrap;gap:8px}
.cx-chips span,.cx-chips a{display:inline-flex;align-items:center;min-height:32px;padding:0 10px;border:1px solid var(--cx-line-2);font:600 13px var(--cx-mono);letter-spacing:.04em;color:var(--cx-ink-2)!important;text-decoration:none!important}
.cx-chips a:hover{border-color:var(--cx-route);color:var(--cx-ink)!important}
.cx-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--cx-line-2)}
.cx-cols>*{padding:22px 22px 24px 0;margin-right:22px;border-right:1px solid var(--cx-line)}
.cx-cols>*:last-child{border-right:0;margin-right:0}
.cx-cols h3{font-size:22px}
.cx-cols p{margin-top:8px;color:var(--cx-ink-2);font-size:15px}
.cx-list li{padding:12px 0;border-bottom:1px solid var(--cx-line);color:var(--cx-ink-2)}
.cx-list li b{color:var(--cx-ink)}
.cx-crumbs{display:flex;flex-wrap:wrap;gap:6px 10px;margin-bottom:22px;font:600 13px var(--cx-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--cx-ink-3)}
.cx-crumbs a{color:var(--cx-ink-2);text-decoration:none}
.cx-crumbs a:hover{color:var(--cx-ink)}
.cx-illu{margin:0}
.cx-illu img{display:block;width:100%;height:auto;background:var(--cx-panel);border:1px solid var(--cx-line-2)}
.cx-illu figcaption{margin-top:8px;font-size:13px;color:var(--cx-ink-3)}
.cx-grid2{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.cx-note{margin-top:16px;font-size:13px;color:var(--cx-ink-3)}
@media (max-width:959px){.cx-split,.cx-grid2{grid-template-columns:1fr}.cx-cols{grid-template-columns:1fr}.cx-cols>*{border-right:0;margin-right:0;padding-right:0;border-bottom:1px solid var(--cx-line)}}
@media (max-width:759px){.cx-reader{padding-block:32px 64px}.cx-block{padding-block:44px}}

/* forms (start, contact) */
.cx-form{display:grid;gap:18px;max-width:760px}
.cx-form__row{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.cx-form label{display:grid;gap:8px;font:600 13px var(--cx-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--cx-ink-2)}
.cx-form label span{text-transform:none;letter-spacing:0;font:400 13px var(--cx-body);color:var(--cx-ink-3)}
.cx-form input,.cx-form select,.cx-form textarea{width:100%;min-height:48px;padding:12px 14px;border:1px solid var(--cx-line-2);border-radius:3px;background:var(--cx-panel);color:var(--cx-ink);font:400 17px/1.4 var(--cx-body);letter-spacing:0;text-transform:none}
.cx-form textarea{min-height:120px;resize:vertical}
.cx-form input:focus,.cx-form select:focus,.cx-form textarea:focus{outline:none;border-color:var(--cx-route);box-shadow:0 0 0 3px rgba(109,155,255,.2)}
.cx-form .cx-trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.cx-form__error{padding:12px 14px;border:1px solid rgba(255,122,144,.6);background:rgba(255,122,144,.08);color:#FFD5DC}
.cx-form__privacy{font-size:13px;color:var(--cx-ink-3)}
@media (max-width:599px){.cx-form__row{grid-template-columns:1fr}}

/* /build — the company-first guide paints its own console over this page */
.cx-arrive{padding-block:56px 104px;min-height:calc(100vh - var(--cx-nav-h))}
.cx-arrive h1{font-size:clamp(38px,5.4vw,68px);font-weight:900;letter-spacing:-.026em;max-width:14em}
.cx-arrive .cx-lead{margin-top:18px}
.cx-arrive .cx-ctas{margin-top:26px}
html.cx-arrival #visitor-signal{font-family:var(--cx-body)}

/* ---------- QWeb fragments inside the reader (legal, forms, customer pages) ---------- */
.cx-reader .cai-shell,.cx-reader .container{width:100%;max-width:none;margin:0;padding:0}
.cx-reader .row{display:block;margin:0}.cx-reader [class*="col-"]{width:100%;max-width:none;padding:0}
.cx-reader .v2-hero,.cx-reader .v2-section,.cx-reader .v2-cta,.cx-reader .section{padding:clamp(36px,6vw,72px) 0;border:0;background:none!important}
.cx-reader .v2-hero:first-child,.cx-reader .section:first-child{padding-top:0}
.cx-reader .v2-head,.cx-reader .cai-legal__head{border:0;padding:0 0 28px}
.cx-reader h1,.cx-reader .v2-hero h1,.cx-reader .v2-head h2,.cx-reader .v2-cta h2,.cx-reader .section-title{max-width:17em;margin:18px 0 0;font:900 clamp(34px,5vw,62px)/1.02 var(--cx-display);letter-spacing:-.024em;color:var(--cx-ink);text-wrap:balance}
.cx-reader .cx-page-hero h1{margin-top:0}
.cx-reader .v2-hero h1 em,.cx-reader .v2-head h2 em,.cx-reader .v2-cta h2 em{color:var(--cx-route);font-style:normal}
.cx-reader .v2-eyebrow,.cx-reader .cai-legal__eyebrow,.cx-reader .v2-status{font:600 13px/1.4 var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--cx-ink-3)}
.cx-reader .v2-lede,.cx-reader .v2-head p,.cx-reader .v2-cta>*>p,.cx-reader .section-subtitle,.cx-reader .text-muted{max-width:66ch;margin:18px 0 0;color:var(--cx-ink-2);font-size:18px;line-height:1.6}
.cx-reader .v2-status i{display:inline-block;width:7px;height:7px;margin-right:8px;border-radius:50%;background:var(--cx-ok)}
.cx-reader .v2-legal-grid{display:grid;grid-template-columns:minmax(180px,250px) minmax(0,1fr);gap:clamp(32px,5vw,72px);align-items:start;margin-top:12px}
.cx-reader .v2-legal-index{position:sticky;top:calc(var(--cx-nav-h) + 16px);padding-top:10px}
.cx-reader .v2-list,.cx-reader .v2-legal ul,.cx-reader .cdy-card-body ul,.cx-reader section ul:not([class]){list-style:disc;padding-left:22px}
.cx-reader ol:not([class]){list-style:decimal;padding-left:22px}
.cx-reader .v2-legal-index ul{list-style:none;padding:0;margin:14px 0 0}
.cx-reader .v2-legal-index li{margin:0;border-top:1px solid var(--cx-line)}
.cx-reader .v2-legal-index a{display:block;padding:10px 0;color:var(--cx-ink-2);text-decoration:none;font:400 13px/1.45 var(--cx-mono)}
.cx-reader .v2-legal-index a:hover{color:var(--cx-ink)}
.cx-reader .v2-legal,.cx-reader .cdy-card,.cx-reader .v2-card{border:0!important;border-top:1px solid var(--cx-line-2)!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;padding:26px 0!important}
.cx-reader .cdy-card-body{padding:0!important}
.cx-reader .v2-legal section,.cx-reader .cdy-card-body>section{scroll-margin-top:calc(var(--cx-nav-h) + 24px)}
.cx-reader .v2-legal section+section,.cx-reader .cdy-card-body>h3{margin-top:40px;padding-top:32px;border-top:1px solid var(--cx-line)}
.cx-reader h2,.cx-reader h3,.cx-reader h4{color:var(--cx-ink);font-family:var(--cx-display);font-weight:800;letter-spacing:-.012em}
.cx-reader h2{font-size:clamp(26px,3vw,36px);margin-top:28px}
.cx-reader h3{font-size:clamp(20px,2vw,24px);line-height:1.25;margin-top:22px}
.cx-reader h4{font-size:18px;margin-top:18px}
.cx-reader p,.cx-reader li,.cx-reader td,.cx-reader th,.cx-reader dd,.cx-reader dt{color:var(--cx-ink-2);font-size:16px;line-height:1.7}
.cx-reader p{max-width:72ch;margin:12px 0 0}.cx-reader li{margin:6px 0}.cx-reader li::marker{color:var(--cx-route)}
.cx-reader strong,.cx-reader b{color:var(--cx-ink)}
.cx-reader code{color:var(--cx-live);font-family:var(--cx-mono);font-size:.92em}
.cx-reader a{color:var(--cx-route);text-underline-offset:3px}
.cx-reader blockquote{margin:22px 0;padding:4px 0 4px 20px;border:0!important;border-left:2px solid var(--cx-route)!important;background:transparent!important;color:var(--cx-ink-2)!important}
.cx-reader hr{border:0;border-top:1px solid var(--cx-line);margin:32px 0}
.cx-reader .v2-field{display:grid;grid-template-columns:repeat(var(--cols,2),minmax(0,1fr));gap:0 24px;margin-top:32px}
.cx-reader .v2-field>*{border-top:1px solid var(--cx-line)!important;padding-top:14px}
.cx-reader .v2-card__top,.cx-reader .v2-tag,.cx-reader .cai-legal__meta,.cx-reader .v2-card__num{font:600 13px/1.5 var(--cx-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--cx-ink-3)}
.cx-reader .v2-actions{display:flex;gap:12px 16px;align-items:center;flex-wrap:wrap;margin-top:28px}
.cx-reader .v2-btn,.cx-reader .btn,.cx-reader button[type="submit"]{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 20px;border:1px solid var(--cx-line-2)!important;border-radius:3px!important;background:transparent!important;box-shadow:none!important;color:var(--cx-ink)!important;font:600 16px/1.2 var(--cx-body);text-decoration:none!important;cursor:pointer}
.cx-reader .v2-btn:not(.v2-btn--ghost),.cx-reader .btn-primary,.cx-reader button[type="submit"]{background:var(--cx-signal)!important;border-color:var(--cx-signal)!important;color:var(--cx-ground)!important}
.cx-reader .v2-btn:hover,.cx-reader .btn:hover,.cx-reader button[type="submit"]:hover{border-color:var(--cx-route)!important}
.cx-reader .v2-link{color:var(--cx-route)}
.cx-reader form:not(.cx-form){max-width:760px;margin-top:24px}
.cx-reader .mb-3,.cx-reader form:not(.cx-form) label{display:block;margin:0 0 20px}
.cx-reader .form-label,.cx-reader form:not(.cx-form) label>span{display:block;margin-bottom:8px;color:var(--cx-ink-2);font:600 13px/1.4 var(--cx-mono);letter-spacing:.06em;text-transform:uppercase}
.cx-reader input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),.cx-reader textarea,.cx-reader select{width:100%;min-height:48px;border:1px solid var(--cx-line-2);border-radius:3px;background:var(--cx-panel);padding:12px 14px;color:var(--cx-ink);font:400 17px/1.4 var(--cx-body);outline:0}
.cx-reader input[type="checkbox"],.cx-reader input[type="radio"]{width:18px;height:18px;accent-color:var(--cx-route);vertical-align:-3px;margin-right:8px}
.cx-reader input:focus,.cx-reader textarea:focus,.cx-reader select:focus{border-color:var(--cx-route);box-shadow:0 0 0 3px rgba(109,155,255,.2)}
.cx-reader .gdpr-radio-option{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border:1px solid var(--cx-line);margin-bottom:10px;cursor:pointer}
.cx-reader .gdpr-radio-option:hover{border-color:var(--cx-line-2)}
.cx-reader .alert,.cx-reader .gdpr-alert-success,.cx-reader .gdpr-alert-error{padding:14px 16px;border:1px solid var(--cx-line-2);background:var(--cx-panel);color:var(--cx-ink);margin:18px 0}
.cx-reader .gdpr-alert-success,.cx-reader .alert-success{border-color:rgba(91,228,155,.5)}
.cx-reader .gdpr-alert-error,.cx-reader .alert-danger{border-color:rgba(255,122,144,.6)}
.cx-reader table{width:100%;border-collapse:collapse;margin-top:20px}
.cx-reader th,.cx-reader td{padding:12px 10px 12px 0;border-bottom:1px solid var(--cx-line);text-align:left;vertical-align:top}
.cx-reader th{font:600 13px var(--cx-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--cx-ink-3)}
.cx-reader .table-responsive{overflow-x:auto}
.cx-reader .v2-code{padding:16px;border:1px solid var(--cx-line);background:var(--cx-panel);overflow-x:auto;font:400 14px/1.6 var(--cx-mono)}
.cx-reader .cai-legal-directory{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 28px;border-top:1px solid var(--cx-line-2);margin-top:20px}
.cx-reader .cai-legal-directory__group{padding:20px 0;display:flex;flex-direction:column;gap:6px;border-bottom:1px solid var(--cx-line)}
.cx-reader .cai-legal-directory__group>span{font:600 13px/1.4 var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--cx-ink-3)}
.cx-reader .cai-legal-directory a{color:var(--cx-ink-2);text-decoration:none}
.cx-reader .cai-legal-directory a:hover{color:var(--cx-ink)}
.cx-reader .o_view_nocontent_smiling_face{display:none}
/* customer pages (examples, contact) keep their markup */
.cx-reader .customer-label{font:600 13px var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--cx-ink-3)}
.cx-reader .customer-intro{margin-top:18px;font-size:20px;color:var(--cx-ink-2)}
.cx-reader .customer-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.cx-reader .customer-actions a{display:inline-flex;align-items:center;min-height:48px;padding:0 20px;border:1px solid var(--cx-line-2);border-radius:3px;color:var(--cx-ink);text-decoration:none;font-weight:600}
.cx-reader .customer-actions .customer-primary{background:var(--cx-signal);border-color:var(--cx-signal);color:var(--cx-ground)}
.cx-reader .customer-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:40px;border-top:1px solid var(--cx-line-2)}
.cx-reader .customer-card{padding:22px 22px 24px 0;margin-right:22px;border-right:1px solid var(--cx-line)}
.cx-reader .customer-card:last-child{border-right:0;margin-right:0}
.cx-reader .customer-number{font:600 13px var(--cx-mono);color:var(--cx-route)}
.cx-reader .customer-card h2{font-size:22px;margin-top:10px}
.cx-reader .customer-nav,.cx-reader .customer-page>footer{display:none}
@media (max-width:859px){.cx-reader .v2-legal-grid{grid-template-columns:1fr;gap:28px}.cx-reader .v2-legal-index{position:static}.cx-reader .v2-field,.cx-reader .cai-legal-directory,.cx-reader .customer-cards{grid-template-columns:1fr}.cx-reader .customer-card{border-right:0;margin-right:0}}

@media (prefers-reduced-motion:reduce){.cx-shell *,.cx-shell *::before,.cx-shell *::after,.cx *,.cx *::before,.cx *::after{animation:none!important;transition:none!important}}

/* /build once the company-first guide is on screen (visitor_signal.js adds
   signal-arrival-active): the guide's console is the page. Keep the heading
   for search engines and screen readers, drop the intro that sat under the
   console, and hide the guide's "Back to the galaxy" dismiss button. */
html.cx-arrival.signal-arrival-active .cx-arrive .cx-eyebrow,
html.cx-arrival.signal-arrival-active .cx-arrive .cx-lead,
html.cx-arrival.signal-arrival-active .cx-arrive .cx-ctas{display:none}
html.cx-arrival.signal-arrival-active .cx-arrive h1{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
html.cx-arrival #visitor-signal .vs-dismiss{display:none!important}

/* The guide itself (visitor_signal.js / visitor_signal.css were built for the
   galaxy: orbits, glowing stars, lavender pills, mono uppercase buttons).
   Under this theme it is a plain form in the site's type, fields and buttons.
   Selectors carry html.cx-arrival #visitor-signal so they outrank the
   "html #visitor-signal …" rules in visitor_signal.css. */
html.cx-arrival #visitor-signal{font-family:var(--cx-body);color:var(--cx-ink)}
html.cx-arrival #visitor-signal::before,html.cx-arrival #visitor-signal::after{content:none!important;display:none!important}
html.cx-arrival #visitor-signal :is(.vs-depth,.vs-arrival-star,.vs-resonance,.vs-dock-field,.vs-orbit,.vs-input-beacon,.vs-beam,.vs-spark,.vs-flow-field,.vs-company-world,.vs-twin-line,.vs-relay-spark,.vs-suggestion-star){display:none!important}
html.cx-arrival #visitor-signal .vs-console{width:min(720px,calc(100% - 2 * var(--cx-gutter)));margin:clamp(120px,18vh,180px) auto 96px}
html.cx-arrival #visitor-signal .vs-copy{margin-bottom:30px}
html.cx-arrival #visitor-signal .vs-kicker{margin:0 0 16px;color:var(--cx-ink-3);font:600 13px/1.4 var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;text-shadow:none}
html.cx-arrival #visitor-signal .vs-heading{margin:0 0 16px;color:var(--cx-ink);font:900 clamp(34px,4.4vw,54px)/1.04 var(--cx-display);letter-spacing:-.024em;text-shadow:none}
html.cx-arrival #visitor-signal .vs-intro{max-width:58ch;margin:0;color:var(--cx-ink-2);font:400 18px/1.6 var(--cx-body);letter-spacing:0;text-shadow:none}
html.cx-arrival #visitor-signal :is(.vs-field-label,.vs-agent-label){margin-bottom:10px;color:var(--cx-ink-2);font:600 13px/1.4 var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;text-shadow:none}
html.cx-arrival #visitor-signal :is(.vs-form input,.vs-agent-form textarea,.vs-relay input){min-height:56px;padding:15px 18px;background:var(--cx-panel);border:1px solid var(--cx-line-2);border-radius:3px;color:var(--cx-ink);font:400 17px/1.5 var(--cx-body);letter-spacing:0;text-shadow:none;box-shadow:none;caret-color:var(--cx-ink)}
html.cx-arrival #visitor-signal .vs-agent-form textarea{min-height:128px}
html.cx-arrival #visitor-signal :is(.vs-form input,.vs-agent-form textarea,.vs-relay input)::placeholder{color:var(--cx-ink-3)}
html.cx-arrival #visitor-signal :is(.vs-form input,.vs-agent-form textarea,.vs-relay input):hover{border-color:rgba(150,170,210,.5)}
html.cx-arrival #visitor-signal :is(.vs-form input,.vs-agent-form textarea,.vs-relay input):focus{border-color:var(--cx-route);box-shadow:0 0 0 3px rgba(109,155,255,.2);outline:0}
html.cx-arrival #visitor-signal :is(.vs-form-actions,.vs-agent-actions,.vs-confirm){gap:12px;margin-top:16px}
/* one amber action per step, like every other page */
html.cx-arrival #visitor-signal :is(.vs-lock,.vs-agent-next,.vs-confirm-yes,.vs-brief .vs-continue,.vs-relay button){display:inline-flex;align-items:center;justify-content:center;min-height:48px;margin:0;padding:0 22px;background:var(--cx-signal);border:1px solid var(--cx-signal);border-radius:3px;color:#070A0F;font:600 16px/1 var(--cx-body);letter-spacing:0;text-transform:none;text-shadow:none;box-shadow:none;opacity:1;transform:none}
html.cx-arrival #visitor-signal :is(.vs-lock,.vs-agent-next,.vs-confirm-yes,.vs-brief .vs-continue,.vs-relay button):not(:disabled):hover{background:#FFC677;border-color:#FFC677;color:#070A0F}
html.cx-arrival #visitor-signal :is(.vs-lock,.vs-agent-next,.vs-confirm-yes):disabled{opacity:.4}
html.cx-arrival #visitor-signal .vs-brief .vs-continue::before{content:none}
/* secondary actions: speak, not my company, edit */
html.cx-arrival #visitor-signal :is(.vs-voice,.vs-agent-voice,.vs-confirm-again){display:inline-flex;align-items:center;gap:9px;min-height:48px;padding:0 16px;background:transparent;border:1px solid var(--cx-line-2);border-radius:3px;color:var(--cx-ink);font:600 15px/1 var(--cx-body);letter-spacing:0;text-transform:none;text-shadow:none;opacity:1}
html.cx-arrival #visitor-signal :is(.vs-voice,.vs-agent-voice,.vs-confirm-again):hover{border-color:var(--cx-route);color:#fff}
html.cx-arrival #visitor-signal :is(.vs-voice,.vs-agent-voice) i{width:8px;height:8px;background:var(--cx-route);box-shadow:none}
html.cx-arrival #visitor-signal.is-listening :is(.vs-voice,.vs-agent-voice) i{background:var(--cx-ok);animation:none}
html.cx-arrival #visitor-signal :is(.vs-status,.vs-progress){margin-top:18px;color:var(--cx-ink-3);font:600 12px/1.6 var(--cx-mono);letter-spacing:.06em;text-shadow:none}
html.cx-arrival #visitor-signal .vs-status[data-state="resolved"]{color:var(--cx-ok)}
html.cx-arrival #visitor-signal .vs-status[data-state="error"]{color:#FF8FA3}
html.cx-arrival #visitor-signal .vs-direct-contact{margin-top:22px;color:var(--cx-route);font:500 15px/1.6 var(--cx-body)}
html.cx-arrival #visitor-signal .vs-direct-contact:hover{color:#9DBBFF}
/* registry matches under the field */
html.cx-arrival #visitor-signal .vs-suggestions{background:var(--cx-panel);border:1px solid var(--cx-line-2);border-radius:3px;box-shadow:0 30px 60px -20px rgba(0,0,0,.8)}
html.cx-arrival #visitor-signal .vs-suggestion{grid-template-columns:minmax(0,1fr);min-height:52px;padding:10px 16px;border-bottom:1px solid var(--cx-line);filter:none}
html.cx-arrival #visitor-signal .vs-suggestion:hover,html.cx-arrival #visitor-signal .vs-suggestion[aria-selected="true"]{background:var(--cx-panel-2);filter:none}
html.cx-arrival #visitor-signal .vs-suggestion-main strong{color:var(--cx-ink);font:600 16px/1.35 var(--cx-body);letter-spacing:0;text-transform:none;text-shadow:none;max-width:none}
html.cx-arrival #visitor-signal .vs-suggestion-main small{margin-top:2px;color:var(--cx-ink-2);font:400 14px/1.4 var(--cx-body);letter-spacing:0;text-shadow:none;max-width:none}
html.cx-arrival #visitor-signal .vs-suggestion-state{color:var(--cx-ok);font:600 12px var(--cx-mono);letter-spacing:.06em;text-shadow:none}
/* the plan the guide writes */
html.cx-arrival #visitor-signal .vs-brief{width:min(760px,calc(100% - 2 * var(--cx-gutter)));max-width:none;margin:clamp(120px,18vh,170px) auto 96px;padding:32px;background:var(--cx-panel);border:1px solid var(--cx-line-2);border-radius:3px;color:var(--cx-ink);font-family:var(--cx-body);text-shadow:none}
html.cx-arrival #visitor-signal .vs-brief::before{content:none}
html.cx-arrival #visitor-signal .vs-brief h2{margin:12px 0 14px;color:var(--cx-ink);font:900 clamp(28px,3.4vw,40px)/1.06 var(--cx-display);letter-spacing:-.02em}
html.cx-arrival #visitor-signal .vs-brief-label{color:var(--cx-ink-3);font:600 13px var(--cx-mono);letter-spacing:.08em}
html.cx-arrival #visitor-signal .vs-brief-summary{color:var(--cx-ink);font:400 20px/1.55 var(--cx-body)}
html.cx-arrival #visitor-signal :is(.vs-brief-mode,.vs-brief-unknown,.vs-brief-review,.vs-brief-answers p){color:var(--cx-ink-2);font-size:16px}
html.cx-arrival #visitor-signal .vs-brief details{border-color:var(--cx-line)}
html.cx-arrival #visitor-signal .vs-brief summary{color:var(--cx-ink);font-weight:600}
html.cx-arrival #visitor-signal .vs-brief .vs-edit{color:var(--cx-route);font:500 15px var(--cx-body)}
html.cx-arrival #visitor-signal .vs-brief .vs-relay{gap:10px}
html.cx-arrival #visitor-signal .vs-brief .vs-relay label{color:var(--cx-ink);font:600 16px var(--cx-body)}
html.cx-arrival #visitor-signal .vs-brief .vs-relay-note{color:var(--cx-ok);font:400 15px/1.6 var(--cx-body);letter-spacing:0;text-transform:none;text-shadow:none}
html.cx-arrival #visitor-signal .vs-brief .vs-relay-note[data-state="error"]{color:#FF8FA3}
html.cx-arrival #visitor-signal :focus-visible{outline:2px solid var(--cx-route);outline-offset:3px}
@media (max-width:759px){
  html.cx-arrival #visitor-signal .vs-console{margin-top:96px}
  html.cx-arrival #visitor-signal .vs-brief{margin:96px auto 80px;padding:22px 18px}
  html.cx-arrival #visitor-signal .vs-heading{font-size:32px}
  html.cx-arrival #visitor-signal .vs-intro{font-size:16px}
}

/* ---------- MyFleets live map (static/src/html/fleet-map.html, tools/fleet_map.py) ---------- */
.cx-see{display:grid;gap:clamp(36px,4.5vw,56px)}
.cx-fleet-copy{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(32px,4.5vw,64px);align-items:start}
.cx-fleet-copy .cx-k{margin-bottom:12px}
.cx-fleet-copy h3{font-size:clamp(30px,3.2vw,40px);font-weight:900;letter-spacing:-.02em;line-height:1.04}
.cx-fleet-caps{display:grid;grid-template-columns:1fr 1fr;column-gap:32px;margin-top:0}
.cx-fleet-copy .cx-caps li{grid-template-columns:104px 1fr;font-size:15px;padding:12px 0}
.cx-fleet-price{margin-top:24px}
.cx-fleet-price p:first-child{font:900 34px/1.05 var(--cx-display);color:var(--cx-signal);letter-spacing:-.01em;max-width:none}
.cx-fleet-price p:first-child small{font:600 15px var(--cx-body);color:var(--cx-ink-2);letter-spacing:0}
.cx-fleet-price p+p{margin-top:8px;font-size:15px;color:var(--cx-ink-2)}
.cx-fleet-copy .cx-ctas{margin-top:22px}
.cx-proofline{display:flex;align-items:center;gap:10px;margin-top:16px;font:400 13px var(--cx-mono);color:var(--cx-ink-2)}
@media (max-width:959px){.cx-fleet-copy{grid-template-columns:1fr}}
@media (max-width:640px){.cx-fleet-caps{grid-template-columns:1fr}}

/* dashboard: stacked on narrow widths (fleet strip above the map), map + side column from 880px of figure width */
.fm{container:fm/inline-size}
.fm-body{display:flex;flex-direction:column}
.fm-main,.fm-side{min-width:0}
.fm-side{display:contents}
.fm-side__head{order:1;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px;padding:6px 12px 6px 16px;border-top:1px solid var(--cx-line)}
.fm-fleet{order:2}
.fm-main{order:3}
.fm-tabs{order:4}
.fm-panel{order:5}
.fm-clear{flex:none;white-space:nowrap;min-height:30px;padding:0 10px;border:1px solid var(--cx-line-2);border-radius:2px;background:transparent;color:var(--cx-ink);font:600 12px var(--cx-mono);letter-spacing:.06em;text-transform:uppercase;cursor:pointer}
.fm-clear:hover{border-color:var(--cx-signal);color:var(--cx-signal)}
.fm-clear[hidden]{display:none}

.fm-hud b[data-status]{font-variant-numeric:tabular-nums}
.fm-fleet{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-bottom:1px solid var(--cx-line)}
.fm-fleet li+li .fm-row{border-left:1px solid var(--cx-line)}
.fm-row{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;gap:3px 9px;width:100%;min-height:54px;padding:9px 12px;border:0;background:transparent;text-align:left;cursor:pointer;color:var(--cx-ink-2);transition:background-color .3s var(--cx-ease)}
.fm-row:hover{background:rgba(109,155,255,.06)}
.fm-row[aria-pressed="true"]{background:rgba(255,180,84,.08);box-shadow:inset 0 -2px 0 var(--cx-signal)}
.fm-row__id{grid-row:span 2;align-self:center;padding:3px 6px;border:1px solid var(--cx-line-2);border-radius:2px;font:600 13px/1 var(--cx-mono);color:var(--cx-ink-3)}
.fm-row__state{font-size:13px;line-height:1.3;color:var(--cx-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fm-row__km{font:600 12px/1.2 var(--cx-mono);color:var(--cx-ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fm-row.is-moving .fm-row__id{color:var(--cx-live);border-color:rgba(125,243,255,.55)}
.fm-row.is-stop .fm-row__id{color:var(--cx-signal);border-color:rgba(255,180,84,.55)}
.fm-stage{position:relative;overflow:hidden;aspect-ratio:640/480}
.fm-stage .fm-svg{display:block;width:100%;height:100%}
.fm-svg .fm-dl-short{display:none}
.fm-svg .fm-water{fill:#04070C}
.fm-svg .fm-coast{fill:none;stroke:rgba(150,170,210,.42);stroke-width:1}
.fm-svg .fm-island{fill:#101826;stroke:rgba(150,170,210,.42);stroke-width:1}
.fm-svg .fm-minor{fill:none;stroke:rgba(150,170,210,.09);stroke-width:.8}
.fm-svg .fm-road{fill:none;stroke:rgba(109,155,255,.36);stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
.fm-svg .fm-mw-glow{fill:none;stroke:rgba(109,155,255,.10);stroke-width:9;stroke-linecap:round;stroke-linejoin:round}
.fm-svg .fm-mw-case{fill:none;stroke:#0A0F18;stroke-width:4.4;stroke-linecap:round;stroke-linejoin:round}
.fm-svg .fm-mw{fill:none;stroke:rgba(128,168,255,.95);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.fm-svg .fm-bridge,.fm-svg .fm-bridge-end{stroke:rgba(237,241,248,.72);stroke-width:.9}
.fm-svg .fm-junction{fill:#0A0F18;stroke:rgba(128,168,255,.95);stroke-width:1}
.fm-svg .fm-shield rect{fill:#0B5A33;stroke:#34A26B}
.fm-svg .fm-shield text{font:600 9.5px var(--cx-mono);letter-spacing:.04em;fill:#E8FFF1}
.fm-svg .fm-zone{fill:rgba(125,243,255,.03);stroke:rgba(125,243,255,.3);stroke-dasharray:2 3;transition:fill .5s var(--cx-ease),stroke .5s var(--cx-ease)}
.fm-svg .fm-zone.is-on{fill:rgba(255,180,84,.09);stroke:rgba(255,180,84,.8);stroke-dasharray:none}
.fm-svg .fm-town{fill:var(--cx-ink-2)}
.fm-svg .fm-town-label{font:600 10.5px var(--cx-mono);letter-spacing:.14em;fill:var(--cx-ink);paint-order:stroke;stroke:#0A0F18;stroke-width:3px;stroke-linejoin:round}
.fm-svg .fm-water-label{font:400 9.5px var(--cx-mono);letter-spacing:.3em;fill:rgba(109,155,255,.55)}
.fm-svg .fm-depot rect,.fm-svg .fm-depot path{fill:var(--cx-panel-2);stroke:var(--cx-ink);stroke-width:1.2;stroke-linejoin:round}
.fm-svg .fm-callout{fill:none;stroke:var(--cx-line-2)}
.fm-svg .fm-depot-label rect{fill:rgba(13,18,27,.94);stroke:var(--cx-line-2)}
.fm-svg .fm-depot-label text{font:600 9.5px var(--cx-mono);letter-spacing:.1em;fill:var(--cx-ink)}
.fm-svg .fm-scale path{fill:none;stroke:var(--cx-ink-2);stroke-width:1}
.fm-svg .fm-north path{fill:var(--cx-ink-2)}
.fm-svg .fm-scale text,.fm-svg .fm-north text{font:600 9px var(--cx-mono);letter-spacing:.1em;fill:var(--cx-ink-2)}
.fm-svg .fm-plan{stroke:transparent;stroke-width:1.4;stroke-dasharray:3 4;transition:stroke .4s var(--cx-ease)}
.fm-svg .fm-trail{stroke:var(--cx-live);stroke-linecap:round;stroke-linejoin:round;transition:opacity .4s var(--cx-ease)}
.fm-svg .fm-trail-0{stroke-width:2.4;opacity:.95}.fm-svg .fm-trail-1{stroke-width:2.1;opacity:.45}.fm-svg .fm-trail-2{stroke-width:1.9;opacity:.18}
.fm-svg .fm-van{cursor:pointer;outline:none;transition:opacity .4s var(--cx-ease)}
.fm-svg .fm-van__ring{fill:#070A0F;stroke:var(--cx-live);stroke-width:1.4;transition:stroke .4s var(--cx-ease)}
.fm-svg .fm-van__arrow{fill:var(--cx-live);transition:fill .4s var(--cx-ease)}
.fm-svg .fm-van__halo{transition:opacity .4s var(--cx-ease)}
.fm-svg .fm-van.is-stop .fm-van__ring{stroke:var(--cx-signal)}.fm-svg .fm-van.is-stop .fm-van__arrow{fill:var(--cx-signal)}
.fm-svg .fm-van.is-stop .fm-van__halo{opacity:.35;animation:fm-breathe 2.4s var(--cx-ease) infinite}
.fm-svg .fm-van.is-depot .fm-van__ring{stroke:var(--cx-ink-3)}.fm-svg .fm-van.is-depot .fm-van__arrow{fill:var(--cx-ink-3)}.fm-svg .fm-van.is-depot .fm-van__halo{opacity:0}
.fm-svg .fm-van__chip rect{fill:rgba(7,10,15,.92);stroke:var(--cx-line-2)}
.fm-svg .fm-van__chip text{font:600 9px var(--cx-mono);fill:var(--cx-ink)}
.fm-svg .fm-van:focus-visible .fm-van__ring{stroke:var(--cx-route);stroke-width:2.4}
@keyframes fm-breathe{0%,100%{opacity:.18}50%{opacity:.5}}
.fm[data-focus] .fm-svg .fm-van:not(.is-focus){opacity:.28}
.fm[data-focus] .fm-svg .fm-van.is-focus .fm-van__chip rect{stroke:var(--cx-signal)}
.fm[data-focus="01"] .fm-plan[data-van="01"],.fm[data-focus="02"] .fm-plan[data-van="02"],.fm[data-focus="03"] .fm-plan[data-van="03"],.fm[data-focus="04"] .fm-plan[data-van="04"],.fm[data-focus="05"] .fm-plan[data-van="05"]{stroke:rgba(255,180,84,.55)}
.fm[data-focus="01"] .fm-trail:not([data-van="01"]),.fm[data-focus="02"] .fm-trail:not([data-van="02"]),.fm[data-focus="03"] .fm-trail:not([data-van="03"]),.fm[data-focus="04"] .fm-trail:not([data-van="04"]),.fm[data-focus="05"] .fm-trail:not([data-van="05"]){opacity:.06}
.fm[data-focus="01"] [data-ledger] li:not([data-van="01"]):not(.empty),.fm[data-focus="02"] [data-ledger] li:not([data-van="02"]):not(.empty),.fm[data-focus="03"] [data-ledger] li:not([data-van="03"]):not(.empty),.fm[data-focus="04"] [data-ledger] li:not([data-van="04"]):not(.empty),.fm[data-focus="05"] [data-ledger] li:not([data-van="05"]):not(.empty),
.fm[data-focus="01"] [data-korebog] tr:not([data-van="01"]):not(.empty),.fm[data-focus="02"] [data-korebog] tr:not([data-van="02"]):not(.empty),.fm[data-focus="03"] [data-korebog] tr:not([data-van="03"]):not(.empty),.fm[data-focus="04"] [data-korebog] tr:not([data-van="04"]):not(.empty),.fm[data-focus="05"] [data-korebog] tr:not([data-van="05"]):not(.empty){display:none}
.fm-tip{position:absolute;z-index:3;margin:0;transform:translate(-50%,calc(-100% - 12px));padding:6px 9px;background:rgba(7,10,15,.95);border:1px solid var(--cx-line-2);font:500 13px/1.3 var(--cx-body);color:var(--cx-ink);white-space:nowrap;pointer-events:none;max-width:none}
.fm-day{display:flex;align-items:center;gap:10px;padding:11px 16px;border-top:1px solid var(--cx-line)}
.fm-day__t{font:600 12px var(--cx-mono);color:var(--cx-ink-3)}
.fm-day__bar{position:relative;flex:1;height:6px;border-radius:3px;background:rgba(150,170,210,.12)}
.fm-day__fill{position:absolute;left:0;top:0;bottom:0;border-radius:3px;background:linear-gradient(90deg,rgba(109,155,255,.45),var(--cx-live))}
.fm-tick{position:absolute;top:-3px;width:2px;height:12px;border-radius:1px;background:var(--cx-ink-3);transform:translateX(-1px)}
.fm-tick--ok{background:var(--cx-ok)}.fm-tick--fault{background:var(--cx-fault)}.fm-tick--route{background:var(--cx-route)}.fm-tick--live{background:var(--cx-live)}
.fm-tabs{display:flex;align-items:center;gap:2px;padding:0 10px;border-top:1px solid var(--cx-line)}
.fm-tabs [role=tab]{white-space:nowrap;min-height:44px;padding:0 10px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--cx-ink-3);font:600 13px var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer}
.fm-tabs [role=tab][aria-selected="true"]{color:var(--cx-ink);border-bottom-color:var(--cx-route)}
.fm-tabs__note{margin-left:auto}
.fm-count{display:inline-block;min-width:20px;margin-left:6px;padding:1px 6px;border-radius:9px;background:rgba(91,228,155,.14);color:var(--cx-ok);font-size:11px;text-align:center}
.fm-panel[hidden]{display:none}
.fm-chip{display:inline-block;margin-right:4px;padding:0 5px;border:1px solid var(--cx-line-2);border-radius:2px;font:600 12px var(--cx-mono);color:var(--cx-ink)}
.fm-kb{height:190px;overflow:auto;border-top:1px solid var(--cx-line)}
.fm-kb table{width:100%;border-collapse:collapse;font-size:15px}
.fm-kb th{position:sticky;top:0;background:var(--cx-panel);font:600 12px var(--cx-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--cx-ink-3);text-align:left;padding:8px 12px 8px 16px;border-bottom:1px solid var(--cx-line-2)}
.fm-kb td{padding:8px 12px 8px 16px;border-bottom:1px solid var(--cx-line);color:var(--cx-ink-2);vertical-align:top}
.fm-kb .num{text-align:right;font-family:var(--cx-mono);color:var(--cx-ink)}
.fm-kb tr.empty td{color:var(--cx-ink-3)}
.fm-kb tr.is-new{animation:cx-rowin .6s var(--cx-ease) both}
.fm-tag{font:600 12px var(--cx-mono);color:var(--cx-ok)}
@container fm (min-width:880px){
  .fm-body{display:grid;grid-template-columns:minmax(0,1fr) clamp(300px,34%,380px)}
  .fm-main{grid-column:1;grid-row:1;display:flex;flex-direction:column;border-right:1px solid var(--cx-line)}
  .fm-main .fm-stage{flex:1 1 auto}
  .fm-side{grid-column:2;grid-row:1;display:flex;flex-direction:column;min-height:0}
  .fm-side__head{border-top:0}
  .fm-side__head .cx-k{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .fm-side .fm-tabs__note{display:none}
  .fm-fleet{display:block;border-top:1px solid var(--cx-line);border-bottom:0}
  .fm-fleet li+li .fm-row{border-left:0;border-top:1px solid var(--cx-line)}
  .fm-row{min-height:50px;padding:8px 16px}
  .fm-row[aria-pressed="true"]{box-shadow:inset 3px 0 0 var(--cx-signal)}
  .fm-row{grid-template-columns:auto minmax(0,1fr) auto}
  .fm-row::after{content:"Depot";grid-column:3;grid-row:1/span 2;align-self:center;padding:3px 8px;border-radius:10px;background:rgba(150,170,210,.1);font:600 11px/1.2 var(--cx-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--cx-ink-3)}
  .fm-row.is-moving::after{content:"Moving";background:rgba(125,243,255,.1);color:var(--cx-live)}
  .fm-row.is-stop::after{content:"On site";background:rgba(255,180,84,.12);color:var(--cx-signal)}
  .fm-row.is-moving:lang(da)::after{content:"Kører"}
  .fm-row.is-stop:lang(da)::after{content:"Hos kunde"}
  .fm-side .cx-ledger:not([hidden]){flex:1 1 0;min-height:150px;display:flex;flex-direction:column}
  .fm-side .cx-ledger ol{flex:1 1 auto;height:auto;min-height:0}
  .fm-side .fm-kb{flex:1 1 0;height:auto;min-height:150px}
  .fm-side .fm-kb td:nth-child(4),.fm-side .fm-kb th:nth-child(4){display:none}
  .fm-side .cx-ledger li{font-size:14px;padding:8px 14px 8px 16px}
}
@container fm (max-width:879px){
  .fm-row{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-height:0;padding:10px 12px}
  .fm-row__id{align-self:flex-start;margin-bottom:2px}
  .fm-row__state,.fm-row__km{max-width:100%}
  .fm-row__km{font-size:11px}
}
@container fm (max-width:559px){.fm-fleet{display:flex;overflow-x:auto;scrollbar-width:thin;scroll-snap-type:x proximity}.fm-fleet li{flex:0 0 138px;scroll-snap-align:start}}
@media (max-width:759px){
  .fm-stage{aspect-ratio:auto;height:clamp(300px,80vw,440px)}
  .fm-svg .fm-town-label{font-size:16px}.fm-svg .fm-van__chip text{font-size:11px}.fm-svg .fm-depot-label text{font-size:12px}.fm-svg .fm-water-label{font-size:11px}
  .fm-svg .fm-dl-long{display:none}.fm-svg .fm-dl-short{display:inline}
  .fm-stage .cx-illus{top:8px;bottom:auto;font-size:11px}
  .fm-tabs__note{display:none}
  .fm-kb td:nth-child(4),.fm-kb th:nth-child(4){display:none}
}
@media (prefers-reduced-motion:reduce){.fm-svg .fm-van.is-stop .fm-van__halo{animation:none}}

/* ---------- language shift: codifyai.eu ⇄ codifyai.dk (connected.js "language shift") ----------
   Exit: a dark layer opens from the clicked DA/EN switch and the claim decodes into
   the other language. Arrival (#cx-shift): the first frame is the same layer and claim,
   drawn from CSS so nothing flashes before connected.js takes over; the layer then
   folds back into the switch. If the script never runs, the fallback clears it. */
/* the claim uses the system face on both pages: the arriving page paints before its
   web fonts load, and one face on both sides keeps the cut invisible */
html{--cx-shift-face:800 clamp(30px,5.2vw,72px)/1.04 ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
html.cx-shift-in::after{content:"";position:fixed;inset:0;z-index:2147483000;background:#070A0F;pointer-events:none;animation:cx-shift-fallback .5s ease 2.6s forwards}
html.cx-shift-in::before{content:"The software your company runs on.";position:fixed;left:50%;top:50%;z-index:2147483001;width:min(92vw,1100px);transform:translate(-50%,-50%);text-align:center;color:#EDF1F8;font:var(--cx-shift-face);letter-spacing:-.02em;pointer-events:none;animation:cx-shift-fallback .5s ease 2.6s forwards}
html.cx-shift-in:lang(da)::before{content:"Softwaren jeres virksomhed kører på."}
@keyframes cx-shift-fallback{to{opacity:0;visibility:hidden}}
.cx-shift{position:fixed;inset:0;z-index:2147483002;display:grid;place-items:center;background:#070A0F;color:#EDF1F8;pointer-events:none;clip-path:circle(0 at var(--cx-x,50%) var(--cx-y,50%));transition:clip-path .6s cubic-bezier(.45,0,.15,1)}
.cx-shift.is-on{clip-path:circle(var(--cx-r,150vmax) at var(--cx-x,50%) var(--cx-y,50%))}
.cx-shift.is-out{clip-path:circle(0 at var(--cx-x,50%) var(--cx-y,50%));transition:clip-path .7s cubic-bezier(.6,0,.3,1)}
.cx-shift__grid{position:absolute;inset:0;background-image:linear-gradient(rgba(150,170,210,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(150,170,210,.06) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(ellipse at center,#000 20%,transparent 72%);mask-image:radial-gradient(ellipse at center,#000 20%,transparent 72%);opacity:.9}
.cx-shift__glow{position:absolute;left:50%;top:50%;width:min(90vw,980px);height:min(60vh,520px);transform:translate(-50%,-50%);background:radial-gradient(ellipse at center,rgba(109,155,255,.16),rgba(255,180,84,.06) 42%,transparent 70%);filter:blur(10px)}
/* route and language chips hang off the claim, so the claim sits exactly where the
   arriving page's CSS draws it */
.cx-shift__inner{position:relative;width:min(92vw,1100px);text-align:center}
.cx-shift p{max-width:none}
.cx-shift .cx-shift__route{position:absolute;left:0;right:0;bottom:100%;display:flex;align-items:center;justify-content:center;gap:14px;margin:0 0 28px;font:600 13px/1 var(--cx-mono);letter-spacing:.1em;text-transform:uppercase;color:#7C88A1;transition:opacity .3s ease}
.cx-shift__route i{display:block;width:72px;height:1px;background:linear-gradient(90deg,#6D9BFF,#FFB454);transform:scaleX(0);transform-origin:left;transition:transform .55s cubic-bezier(.2,.7,.1,1) .18s}
.cx-shift.is-on .cx-shift__route i{transform:scaleX(1)}
.cx-shift__to{color:#EDF1F8;transition:color .4s ease .45s}
.cx-shift .cx-shift__claim{margin:0;font:var(--cx-shift-face);letter-spacing:-.02em;color:#EDF1F8}
.cx-shift__claim .g{color:#FFB454}
.cx-shift .cx-shift__lang{position:absolute;left:0;right:0;top:100%;display:flex;align-items:center;justify-content:center;gap:12px;margin:30px 0 0;font:600 13px/1 var(--cx-mono);letter-spacing:.1em;transition:opacity .3s ease}
.cx-shift__lang b{padding:6px 9px;border:1px solid rgba(150,170,210,.30);border-radius:3px;color:#7C88A1;font-weight:600;transition:color .3s ease,border-color .3s ease,background-color .3s ease}
.cx-shift__lang b.is-to{color:#070A0F;background:#FFB454;border-color:#FFB454}
.cx-shift__lang i{width:28px;height:1px;background:rgba(150,170,210,.45)}
.cx-shift.is-settle .cx-shift__route,.cx-shift.is-settle .cx-shift__lang{opacity:0}
.cx-shift.is-out .cx-shift__claim{transform:translateY(-18px);opacity:0;transition:transform .5s cubic-bezier(.2,.7,.1,1),opacity .4s ease}
@keyframes cx-arrive-rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
html.cx-arrived :is(.cx-hero .cx-eyebrow,.cx-hero h1,.cx-hero__grid,.cx-page-hero>*,.cdy-kb-hero>*,.cx-portal-intro){animation:cx-arrive-rise .7s cubic-bezier(.2,.7,.1,1) both}
html.cx-arrived :is(.cx-hero h1,.cx-page-hero>*:nth-child(2),.cdy-kb-hero>*:nth-child(2)){animation-delay:.08s}
html.cx-arrived :is(.cx-hero__grid,.cx-page-hero>*:nth-child(n+3),.cdy-kb-hero>*:nth-child(n+3)){animation-delay:.16s}
@media (prefers-reduced-motion:reduce){html.cx-shift-in::after,html.cx-shift-in::before{display:none}.cx-shift{display:none}html.cx-arrived *{animation:none!important}}

/* ---------- Årsrapport intake on codifyai.dk (codifyai_dk_self_serve signup_form) ----------
   The galaxy stepped through the fields one "signal" at a time with a script that
   lives in dk-journey.html. Here it is one plain form: every field visible, the
   orbit and flight decorations gone, the browser's own validation on submit. */
.cx-shell .intake-experience{max-width:760px;margin:0 auto;padding:56px var(--cx-gutter) 96px;color:var(--cx-ink)}
.cx-shell :is(.intake-parent,.intake-bridge,.intake-core,.intake-orbit,.intake-readout,.intake-flightline,.intake-back,.intake-next){display:none!important}
.cx-shell .intake-kicker{margin:0 0 14px;color:var(--cx-ink-3);font:600 13px/1.4 var(--cx-mono);letter-spacing:.08em;text-transform:uppercase}
.cx-shell .intake-heading h1{margin:0 0 16px;font:900 clamp(40px,6vw,72px)/1 var(--cx-display);letter-spacing:-.028em}
.cx-shell .intake-heading h1 br{display:none}
.cx-shell .intake-heading h1 em{font-style:normal;color:var(--cx-signal)}
.cx-shell .intake-heading p{max-width:56ch;margin:0;color:var(--cx-ink-2);font-size:18px;line-height:1.6}
.cx-shell .intake-projection{margin-top:36px;padding:28px;background:var(--cx-panel);border:1px solid var(--cx-line-2);border-radius:3px}
.cx-shell .intake-form{display:grid;gap:22px}
.cx-shell .intake-field{display:grid!important;gap:8px;opacity:1!important;visibility:visible!important;transform:none!important;position:static!important}
.cx-shell .intake-field label{display:block;color:var(--cx-ink-2);font:600 13px/1.4 var(--cx-mono);letter-spacing:.08em;text-transform:uppercase}
.cx-shell .intake-field label span{display:none}
.cx-shell .intake-field input{width:100%;min-height:52px;padding:13px 16px;background:var(--cx-ground);border:1px solid var(--cx-line-2);border-radius:3px;color:var(--cx-ink);font:400 17px var(--cx-body)}
.cx-shell .intake-field input:focus{outline:0;border-color:var(--cx-route);box-shadow:0 0 0 3px rgba(109,155,255,.2)}
.cx-shell .intake-field p{margin:0;color:var(--cx-ink-3);font-size:14.5px;line-height:1.5}
.cx-shell .intake-lookup{display:block;margin-top:4px;color:var(--cx-ink-3)}
.cx-shell .intake-lookup:empty{display:none}
.cx-shell .intake-lookup.is-ok{color:var(--cx-ok)}
.cx-shell .intake-lookup.is-error{color:var(--cx-signal)}
.cx-shell .intake-legal{margin-top:6px;color:var(--cx-ink-3);font-size:14px;line-height:1.55}
.cx-shell .intake-legal a{color:var(--cx-route)}
.cx-shell .intake-submit{justify-self:start;display:inline-flex;align-items:center;gap:8px;min-height:50px;margin-top:6px;padding:0 24px;background:var(--cx-signal);border:1px solid var(--cx-signal);border-radius:3px;color:#070A0F;font:600 16px var(--cx-body);cursor:pointer}
.cx-shell .intake-submit:hover{background:#FFC677}
.cx-shell .intake-alert{margin-bottom:18px;padding:12px 14px;border:1px solid rgba(255,180,84,.5);border-radius:3px;background:rgba(255,180,84,.08);color:var(--cx-ink)}
.cx-shell .intake-security{display:flex;align-items:center;gap:10px;margin:18px 0 0;color:var(--cx-ink-3);font:600 12px var(--cx-mono);letter-spacing:.06em;text-transform:uppercase}
.cx-shell .intake-security i{width:8px;height:8px;border-radius:50%;background:var(--cx-ok)}
