/* Data Integration & Extraction — "orbit atlas", home-style rhythm (dx-*) */
.dx-center{text-align:center;margin-inline:auto;justify-content:center}
.dx-hero{position:relative;min-height:100vh;min-height:100svh;display:flex;align-items:center;padding:calc(var(--hdr-full,108px) + 1.5rem) 0 4rem}
.dx-hero{overflow:hidden}.dx-hero__in{position:relative;z-index:1;display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,5vw,5rem);align-items:center}
.dx-hero .ds-crumb{display:flex;flex-wrap:wrap;gap:.4rem}
.dx-title{max-width:14ch}.dx-lead{max-width:56ch}
.dx-btns{display:flex;gap:1rem;flex-wrap:wrap;margin:1.8rem 0}
.dx-hero__art{display:grid;justify-items:center}
.dx-cap{color:var(--tx-dim);font-size:.95rem;text-align:center;max-width:36ch;margin-top:1.2rem}
.dx-gstrip{position:absolute;left:0;right:0;bottom:0;height:6px;background:var(--hl-strip)}
.dx-orbit{--o:min(500px,40vw);position:relative;width:var(--o);aspect-ratio:1;margin:1.5rem auto 0;border-radius:50%;border:1px dashed var(--hair);box-shadow:inset 0 0 90px rgba(123,47,247,.25),0 0 0 60px rgba(67,210,224,.04)}
.dx-orbit::before{content:"";position:absolute;inset:16%;border-radius:50%;border:1px solid var(--hair)}
.dx-orbit__core{position:absolute;inset:34%;border-radius:50%;display:grid;place-content:center;text-align:center;background:var(--hl-strip);box-shadow:0 0 70px rgba(181,27,181,.55);animation:dx-pulse 4s ease-in-out infinite}
.dx-orbit__core b{font-size:clamp(2.2rem,6vw,3.6rem);line-height:1}.dx-orbit__core span{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}
.dx-orbit__ring{list-style:none;margin:0;padding:0;position:absolute;inset:0;animation:dx-spin 40s linear infinite}
.dx-orbit__ring li{position:absolute;top:50%;left:50%;padding:.45rem 1rem;border-radius:99px;background:var(--ink-1);border:1px solid var(--cyan);font-weight:600;font-size:.95rem;white-space:nowrap;transform:rotate(var(--a)) translateY(calc(var(--o)/-2)) rotate(calc(var(--a)*-1));translate:-50% -50%;animation:dx-counter 40s linear infinite}
@keyframes dx-spin{to{transform:rotate(360deg)}}@keyframes dx-counter{to{rotate:-360deg}}@keyframes dx-pulse{50%{transform:scale(1.05)}}
/* light bands (home rhythm) */
.dx-light{background:var(--paper);color:var(--tx-ink)}
.dx-light::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--hl-strip)}
.dx-light .ds-h2{color:var(--tx-ink)}.dx-light .ds-body,.dx-light p{color:var(--tx-ink-dim)}.dx-light .ds-label{color:var(--magenta)}
.dx-light .ds-h2 em{background:var(--hl-strip);-webkit-background-clip:text;background-clip:text;color:transparent}
/* bento */
.dx-bento{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
.dx-tile{position:relative;padding:1.6rem;border-radius:var(--r-md);border:1px solid var(--hair-ink);background:#fff;overflow:hidden;min-height:220px;display:flex;flex-direction:column;transition:transform .5s var(--ease),box-shadow .5s}
.dx-tile--w{grid-column:span 2}
.dx-tile::before{content:"";position:absolute;inset:0;background:rgba(118,86,201,.08);opacity:0;transition:opacity .3s}
.dx-tile:hover{transform:translateY(-6px);box-shadow:0 24px 50px rgba(74,18,140,.18)}.dx-tile:hover::before{opacity:1}
.dx-tile>*{position:relative}.dx-tile span{color:var(--magenta);font-weight:700}
.dx-tile h3{margin:.6rem 0 .3rem;font-size:2rem;color:var(--tx-ink)}
.dx-tile small{margin-top:auto;padding-top:1rem;color:var(--violet-2);font-weight:600;letter-spacing:.04em}
/* accordion */
.dx-acc{display:flex;gap:1rem;height:480px}
.dx-pan{flex:1;position:relative;border-radius:var(--r-lg);border:1px solid var(--hair);background:rgba(7,6,28,.55);padding:1.5rem;overflow:hidden;cursor:pointer;transition:flex .7s var(--ease),border-color .3s;display:flex;flex-direction:column;outline-offset:3px}
.dx-pan.is-open{flex:3.2;border-color:var(--magenta);background:rgba(118,86,201,.14)}
.dx-pan h3{margin:auto 0 0;font-size:1.9rem;white-space:nowrap}
.dx-pan:not(.is-open) h3{writing-mode:vertical-rl;rotate:180deg;margin:auto auto 0}
.dx-pan__more{max-height:0;opacity:0;transition:.5s var(--ease);overflow:hidden}
.dx-pan.is-open .dx-pan__more{max-height:300px;opacity:1;margin-top:.7rem;transition-delay:.25s}
.dx-pan h4{margin:0 0 .4rem;color:var(--cyan);font-size:1.15rem}.dx-pan p{color:var(--tx-dim)}.dx-pan small{display:block;margin-top:.8rem;color:var(--orange)}
.dx-vis{display:flex;align-items:flex-end;gap:6px;height:90px}
.dx-vis i{flex:1;background:var(--hl-strip);border-radius:4px;opacity:.85}
.dx-vis--batch i{height:100%;animation:dx-blk 3s var(--ease-io) infinite}
.dx-vis--stream i{height:12px;align-self:center;border-radius:50%;max-width:12px;animation:dx-str 1.6s linear infinite}
.dx-vis--stream i:nth-child(2){animation-delay:.3s}.dx-vis--stream i:nth-child(3){animation-delay:.6s}.dx-vis--stream i:nth-child(4){animation-delay:.9s}.dx-vis--stream i:nth-child(5){animation-delay:1.2s}
.dx-vis--cdc i{height:20%;opacity:.35}.dx-vis--cdc i:nth-child(2){height:70%;opacity:1;animation:dx-blk 2s infinite}.dx-vis--cdc i:nth-child(4){height:45%;opacity:1;animation:dx-blk 2.6s infinite}
@keyframes dx-blk{50%{transform:scaleY(.4);transform-origin:bottom}}@keyframes dx-str{from{transform:translateX(-30px);opacity:0}50%{opacity:1}to{transform:translateX(30px);opacity:0}}
/* flip (on light) */
.dx-head-row{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;flex-wrap:wrap;max-width:none}
.dx-apply{background:var(--hl-field);color:#fff;border:0}
.dx-cards{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem;perspective:1200px}
.dx-card{all:unset;display:block;position:relative;height:210px;cursor:pointer;transform-style:preserve-3d;transition:transform .8s var(--ease)}
.dx-card.is-flipped{transform:rotateY(180deg)}.dx-card:focus-visible{outline:2px solid var(--magenta);outline-offset:3px}
.dx-card__f,.dx-card__b{position:absolute;inset:0;padding:1.2rem;border-radius:var(--r-md);backface-visibility:hidden;display:flex;flex-direction:column;justify-content:center;gap:.5rem;font-size:1.1rem;font-weight:600}
.dx-card__f{background:#fff;color:var(--tx-ink);border:1px dashed var(--pink);font-family:ui-monospace,Consolas,monospace;font-size:.95rem;font-weight:400}
.dx-card__b{transform:rotateY(180deg);background:var(--hl-field);color:#fff}
.dx-card small{color:var(--magenta);text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;font-family:"Afacad",sans-serif}.dx-card__b small{color:var(--cyan)}
.dx-foot{margin-top:2rem;max-width:62ch}
/* hub & spokes */
.dx-stats{list-style:none;display:flex;gap:2.5rem;flex-wrap:wrap;padding:0;margin:1rem 0 0;color:var(--tx-dim)}.dx-stats b{display:block;font-size:2.4rem;color:var(--tx);line-height:1.1}
/* pipeline builder */
.dx-build__in{display:grid;grid-template-columns:.85fr 1.15fr;gap:3rem;align-items:center}
.dx-pb{padding:2rem;border-radius:var(--r-lg);background:#fff;border:1px solid var(--hair-ink);box-shadow:0 30px 70px rgba(74,18,140,.14);display:grid;gap:1.4rem}
.dx-pb__row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.dx-pb small{flex-basis:100%;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--magenta);font-size:.78rem}
.dx-pb output{margin-left:.6rem;color:var(--tx-ink);letter-spacing:0;text-transform:none;font-size:.95rem}
.dx-pb button{all:unset;cursor:pointer;padding:.5rem 1.1rem;border-radius:99px;border:1px solid var(--hair-ink);font-weight:600;color:var(--tx-ink);transition:.3s var(--ease)}
.dx-pb button:hover{border-color:var(--magenta)}.dx-pb button:focus-visible{outline:2px solid var(--magenta)}
.dx-pb .is-on{background:var(--hl-field);color:#fff;border-color:transparent}
.dx-pb input{width:100%;accent-color:var(--magenta)}
.dx-pb__out{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem;padding:1.3rem;border-radius:var(--r-md);background:var(--hl-field);color:#fff}
.dx-pb__out span{padding:.4rem 1rem;border-radius:99px;background:rgba(255,255,255,.12);font-weight:700}.dx-pb__out .dx-pb__mode{background:var(--hl-strip)}
.dx-pb__out i{font-style:normal;color:var(--cyan)}.dx-pb__out p{flex-basis:100%;color:rgba(255,255,255,.82)!important;font-size:1rem}
/* guard */
.dx-guard__in{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(2rem,5vw,5rem);align-items:start}
.dx-guard__head{position:sticky;top:110px}.dx-seal{margin-top:1.5rem;padding-left:1rem;border-left:3px solid var(--orange)}
.dx-stack article{position:sticky;top:calc(110px + var(--i)*26px);margin-bottom:2rem;padding:2rem;border-radius:var(--r-lg);background:#121131;border:1px solid var(--hair);box-shadow:0 -14px 40px rgba(0,0,0,.35)}
.dx-stack b{font-size:3.4rem;line-height:1;background:var(--hl-strip);-webkit-background-clip:text;background-clip:text;color:transparent}
.dx-stack h3{margin:.6rem 0 .4rem;font-size:1.7rem}.dx-stack p{color:var(--tx-dim)}
/* timeline */
.dx-line{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem;position:relative}
.dx-line::before{content:"";position:absolute;left:0;right:0;top:12px;height:3px;border-radius:3px;background:var(--hl-strip)}
.dx-line li{position:relative;padding-top:2.6rem}
.dx-line li::before{content:"";position:absolute;top:0;left:0;width:26px;height:26px;border-radius:50%;background:var(--paper);border:4px solid var(--magenta)}
.dx-line b{color:var(--magenta);letter-spacing:.06em;text-transform:uppercase;font-size:.85rem}.dx-line h3{font-size:2rem;margin:.2rem 0;color:var(--tx-ink)}
.dx-tnote{margin-top:2rem;font-size:.9rem}
/* cta extras */
.dx-rel{margin-top:2.5rem}.dx-rel p{color:var(--tx-dim);text-transform:uppercase;letter-spacing:.1em;font-size:.8rem}
.dx-rel ul{list-style:none;padding:0;margin:.8rem 0 0;display:flex;flex-wrap:wrap;gap:.6rem}
.dx-rel a{display:block;padding:.45rem 1rem;border:1px solid var(--hair);border-radius:99px;font-size:.95rem;transition:.3s}.dx-rel a:hover,.dx-rel a[aria-current]{border-color:var(--cyan);color:var(--cyan)}
@media(max-width:900px){.dx-hero{min-height:0}.dx-hero__in{grid-template-columns:1fr}.dx-orbit{--o:min(420px,80vw)}.dx-bento{grid-template-columns:1fr 1fr}.dx-cards{grid-template-columns:1fr 1fr}.dx-guard__in,.dx-build__in{grid-template-columns:1fr}.dx-guard__head,.dx-stack article{position:static}.dx-line{grid-template-columns:1fr}.dx-line::before{display:none}.dx-acc{flex-direction:column;height:auto}.dx-pan,.dx-pan.is-open{flex:none}.dx-pan:not(.is-open) h3{writing-mode:horizontal-tb;rotate:0deg;margin:1.5rem 0 0}.dx-pan.is-open .dx-pan__more{max-height:400px}}
@media(max-width:560px){.dx-bento{grid-template-columns:1fr}.dx-tile--w{grid-column:auto}.dx-orbit__ring li{font-size:.8rem;padding:.3rem .7rem}}
@media(prefers-reduced-motion:reduce){.dx-orbit__ring,.dx-orbit__ring li,.dx-orbit__core,.dx-vis i{animation:none!important}}

/* ---- hero motion: drifting circles on the background + moving circles in the orbit ---- */
.dx-hero__bg{position:absolute;inset:0;z-index:0;pointer-events:none;transform:translate(var(--px,0),var(--py,0));transition:transform .9s var(--ease)}
.dx-hero__bg i{position:absolute;left:var(--x);top:var(--y);width:var(--s);height:var(--s);border-radius:50%;animation:dx-drift var(--d) ease-in-out infinite alternate}
.dx-hero__bg i[style*="--c:1"]{background:rgba(118,86,201,.10);box-shadow:0 0 50px rgba(181,27,181,.25)}
.dx-hero__bg i[style*="--c:2"]{border:1.5px solid rgba(67,210,224,.55);background:rgba(118,86,201,.05)}
.dx-hero__bg i[style*="--c:3"]{background:rgba(118,86,201,.10)}
@keyframes dx-drift{0%{transform:translate(0,0) scale(1)}50%{transform:translate(26px,-38px) scale(1.12)}100%{transform:translate(-30px,24px) scale(.94)}}
.dx-orbit__wave{position:absolute;inset:34%;border-radius:50%;border:2px solid var(--cyan);opacity:0;animation:dx-wave 4.5s ease-out infinite}
.dx-orbit__wave--b{animation-delay:2.2s;border-color:var(--magenta)}
@keyframes dx-wave{0%{transform:scale(1);opacity:.7}100%{transform:scale(2.5);opacity:0}}
.dx-orbit__sat,.dx-orbit__out{list-style:none;margin:0;padding:0;position:absolute;inset:0;pointer-events:none}
.dx-orbit__sat{animation:dx-spin 14s linear infinite reverse}.dx-orbit__out{animation:dx-spin 22s linear infinite}
.dx-orbit__sat li,.dx-orbit__out li{position:absolute;top:50%;left:50%;border-radius:50%;translate:-50% -50%;transform:rotate(var(--a)) translateY(calc(var(--o)*-.33))}
.dx-orbit__sat li{width:14px;height:14px;background:var(--orange);box-shadow:0 0 16px var(--orange)}
.dx-orbit__sat li:nth-child(even){background:var(--pink);box-shadow:0 0 16px var(--pink);width:10px;height:10px}
.dx-orbit__out li{width:9px;height:9px;background:var(--cyan);box-shadow:0 0 14px var(--cyan);transform:rotate(var(--a)) translateY(calc(var(--o)*-.5))}
@media(prefers-reduced-motion:reduce){.dx-hero__bg i,.dx-orbit__wave,.dx-orbit__sat,.dx-orbit__out{animation:none!important}}

/* ---- destinations: hub & spokes ---- */
.dx-hub{position:relative;display:grid;grid-template-columns:minmax(170px,.55fr) 1.45fr;gap:clamp(3rem,10vw,9rem);align-items:center}
.dx-hub__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.dx-hub__svg path{fill:none;stroke-linecap:round}
.dx-hub__svg .b{stroke:var(--hair);stroke-width:1.5}
.dx-hub__svg .p{stroke:var(--cyan);stroke-width:3;stroke-dasharray:6 18;opacity:0;animation:dx-flow 1s linear infinite;filter:drop-shadow(0 0 6px var(--cyan))}
.dx-hub__svg .on.b{stroke:var(--magenta);stroke-width:2.5}.dx-hub__svg .on.p{opacity:1}
@keyframes dx-flow{to{stroke-dashoffset:-24}}
.dx-hub__core{position:relative;z-index:1;justify-self:center;width:clamp(150px,16vw,210px);aspect-ratio:1;border-radius:50%;display:grid;place-content:center;text-align:center;background:var(--hl-strip);box-shadow:0 0 0 14px rgba(181,27,181,.12),0 0 80px rgba(181,27,181,.5);animation:dx-pulse 4s ease-in-out infinite}
.dx-hub__core b{font-size:3.2rem;line-height:1}.dx-hub__core span{font-size:.8rem;letter-spacing:.1em;text-transform:uppercase}
.dx-hub__list{list-style:none;margin:0;padding:0;display:grid;gap:.8rem;position:relative;z-index:1}
.dx-node{all:unset;box-sizing:border-box;display:block;width:100%;cursor:pointer;padding:1.1rem 1.5rem;border-radius:var(--r-md);border:1px solid var(--hair);background:rgba(7,6,28,.6);transition:.5s var(--ease)}
.dx-node:hover{border-color:var(--cyan)}.dx-node:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}
.dx-node.is-on{background:#20164a;border-color:var(--magenta);transform:translateX(-14px);box-shadow:0 20px 50px rgba(0,0,0,.35)}
.dx-node__top{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}
.dx-node h3{margin:0;font-size:1.7rem}.dx-node em{font-style:normal;padding:.2rem .8rem;border-radius:99px;background:var(--hl-strip);font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}
.dx-node__more{display:block;max-height:0;opacity:0;overflow:hidden;transition:.5s var(--ease)}
.dx-node.is-on .dx-node__more{max-height:140px;opacity:1;margin-top:.7rem}
.dx-node p{color:var(--tx-dim);font-size:1.15rem}.dx-node small{display:block;margin-top:.4rem;color:var(--cyan);font-size:.95rem}
@media(max-width:900px){.dx-hub{grid-template-columns:1fr;gap:1.5rem}.dx-hub__svg{display:none}.dx-node.is-on{transform:none}}
@media(prefers-reduced-motion:reduce){.dx-hub__svg .p,.dx-hub__core{animation:none!important}}
/* ==========================================================================\n   Precision polish — 2026-10-23\n   Stable destination transitions + monochrome professional accent system.\n   ========================================================================== */
:root{
  --dx-accent:#7656c9;
  --dx-accent-rgb:118,86,201;
  --magenta:var(--dx-accent);
  --orange:var(--dx-accent);
  --violet:var(--dx-accent);
  --cyan:var(--dx-accent);
  --blue:var(--dx-accent);
  --blue-2:var(--dx-accent);
  --indigo:var(--dx-accent);
  --violet-2:var(--dx-accent);
  --pink:var(--dx-accent);
  --acc-1:var(--dx-accent);
  --acc-2:var(--dx-accent);
  --hl-strip:var(--dx-accent);
  --hl-field:#11112f;
  --ds-field:#0b0d2b;
  --ds-wash:rgba(var(--dx-accent-rgb),.18);
  --ds-wash-2:rgba(var(--dx-accent-rgb),.10);
  --ds-orb-a:rgba(var(--dx-accent-rgb),.30);
  --ds-orb-b:rgba(var(--dx-accent-rgb),.18);
}

/* No multi-colour gradients on this page. */
.dx-gstrip,.dx-light::before,.dx-line::before{background:var(--dx-accent)}
.dx-light .ds-h2 em,.dx-stack b{background:none;color:var(--dx-accent);-webkit-text-fill-color:currentColor}
.dx-pan.is-open{background:rgba(var(--dx-accent-rgb),.14);border-color:rgba(var(--dx-accent-rgb),.75)}
.dx-card__b,.dx-apply,.dx-pb .is-on,.dx-pb__out{background:#17143d}
.dx-pb__out .dx-pb__mode,.dx-node em{background:rgba(var(--dx-accent-rgb),.18);color:#ddd5ff;border:1px solid rgba(var(--dx-accent-rgb),.32)}
.dx-stack article{background:#121131}
.ds-btn--fill{background:var(--dx-accent);box-shadow:0 14px 34px rgba(var(--dx-accent-rgb),.22)}
.ds-btn--fill:hover{background:#6849bb}

/* Hero / destination cores: solid, calm, professional. */
.dx-orbit__core,.dx-hub__core{
  background:#17143d;
  border:1px solid rgba(var(--dx-accent-rgb),.68);
  box-shadow:0 0 0 10px rgba(var(--dx-accent-rgb),.08),0 24px 60px rgba(0,0,0,.20);
}
.dx-core-mark{width:34px;height:34px;border-radius:50%;display:block;margin:0 auto .65rem;background:var(--dx-accent);box-shadow:0 0 0 7px rgba(var(--dx-accent-rgb),.12)}
.dx-orbit__sat li,.dx-orbit__sat li:nth-child(even),.dx-orbit__out li{background:var(--dx-accent);box-shadow:0 0 14px rgba(var(--dx-accent-rgb),.48)}
.dx-orbit__wave,.dx-orbit__wave--b{border-color:rgba(var(--dx-accent-rgb),.66)}
.dx-orbit__ring li{border-color:rgba(var(--dx-accent-rgb),.48)}
.dx-hero__bg i[style*="--c:1"],.dx-hero__bg i[style*="--c:3"]{background:rgba(var(--dx-accent-rgb),.10);box-shadow:0 0 46px rgba(var(--dx-accent-rgb),.15)}
.dx-hero__bg i[style*="--c:2"]{border-color:rgba(var(--dx-accent-rgb),.34);background:rgba(var(--dx-accent-rgb),.05)}

/* Source cards no longer reserve space for decorative numbers. */
.dx-tile h3{margin-top:.1rem}

/* Destination shelf: every card has the same stable footprint. */
.dx-hub{align-items:center}
.dx-hub__list{gap:.75rem;grid-auto-rows:minmax(118px,auto)}
.dx-node{
  position:relative;
  min-height:118px;
  padding:1rem 1.35rem;
  background:#151334;
  border-color:rgba(255,255,255,.11);
  transition:background-color .34s var(--ease),border-color .34s var(--ease),box-shadow .34s var(--ease),transform .34s var(--ease);
  overflow:hidden;
}
.dx-node:hover{border-color:rgba(var(--dx-accent-rgb),.70)}
.dx-node.is-on{
  background:#20164a;
  border-color:rgba(var(--dx-accent-rgb),.85);
  transform:translateX(-8px);
  box-shadow:0 16px 36px rgba(0,0,0,.18);
}
.dx-node__top{min-height:34px}
.dx-node__more{
  height:54px;
  max-height:none;
  margin-top:.45rem;
  opacity:0;
  visibility:hidden;
  overflow:hidden;
  transform:translateY(7px);
  transition:opacity .28s ease,transform .34s var(--ease),visibility 0s linear .34s;
}
.dx-node.is-on .dx-node__more{
  height:54px;
  max-height:none;
  opacity:1;
  visibility:visible;
  margin-top:.45rem;
  transform:translateY(0);
  transition:opacity .28s ease,transform .34s var(--ease),visibility 0s;
}
.dx-node__more p{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:1rem}
.dx-node__more small{margin-top:.15rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.88rem;color:#bdaff0}
.dx-node em{white-space:nowrap}
.dx-hub__svg .p{stroke:var(--dx-accent);filter:none}
.dx-hub__svg .on.b{stroke:var(--dx-accent)}

/* Remove gradients from hover/spotlight treatments too. */
.dx-tile::before{background:rgba(var(--dx-accent-rgb),.08)}

@media(max-width:900px){
  .dx-node,.dx-node.is-on{min-height:126px;transform:none}
  .dx-node__more,.dx-node.is-on .dx-node__more{height:60px}
}
@media(max-width:560px){
  .dx-node{padding:.9rem 1rem;min-height:132px}
  .dx-node__top{align-items:flex-start}
  .dx-node h3{font-size:1.35rem}
  .dx-node__more,.dx-node.is-on .dx-node__more{height:66px}
  .dx-node__more p,.dx-node__more small{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}
  .dx-node__more p{-webkit-line-clamp:1}
  .dx-node__more small{-webkit-line-clamp:1}
}

/* CTA alignment polish — centered close + hero-matched primary gradient */
.ds-cta > .ds-shell{
  position:relative;
  z-index:2;
  display:grid;
  justify-items:center;
  text-align:center;
}
.ds-cta .ds-cta__title{
  text-align:center;
  margin-inline:auto;
}
.ds-cta .ds-lead{
  max-width:64ch;
  margin-inline:auto;
  text-align:center;
}
.ds-cta .dx-btns{
  justify-content:center;
  width:100%;
}
.ds-cta .ds-cta__meta{
  justify-content:center;
  width:min(100%,980px);
  margin-inline:auto;
}
.ds-cta .ds-cta__meta li{
  text-align:center;
  justify-items:center;
}
.ds-cta .dx-rel{
  width:100%;
  text-align:center;
}
.ds-cta .dx-rel ul{
  justify-content:center;
}
.ds-cta .ds-btn--fill{
  background:linear-gradient(90deg,#7b2ff7 0%,#b51bb5 100%);
  background-size:160% 100%;
  box-shadow:0 14px 34px rgba(123,47,247,.24);
}
.ds-cta .ds-btn--fill:hover{
  background-position:100% 0;
  transform:translateY(-3px);
}
@media(max-width:640px){
  .ds-cta .ds-cta__meta{display:grid;grid-template-columns:1fr;gap:1.1rem}
  .ds-cta .dx-btns{flex-direction:column;align-items:stretch;max-width:420px}
  .ds-cta .dx-btns .ds-btn{justify-content:center}
}

/* 2026-10-23 — unified AI accent gradient for highlighted heading words */
:root{
  --aix-violet:#7b2ff7;
  --aix-magenta:#b217ba;
  --aix-cyan:#43d2e0;
  --dx-aix-gradient:linear-gradient(92deg,var(--aix-violet),var(--aix-magenta) 45%,var(--aix-cyan));
}

/* Highlighted words remain upright and use the shared AI gradient. */
.dx-hero .ds-h1 em,
.dx-light .ds-h2 em,
.dx-section .ds-h2 em,
.ds-cta .ds-cta__title em{
  font-style:normal !important;
  font-weight:inherit;
  background:var(--dx-aix-gradient) !important;
  -webkit-background-clip:text !important;
  background-clip:text !important;
  -webkit-text-fill-color:transparent;
  color:transparent !important;
}

/* Match the closing primary CTA to the same shared gradient. */
.ds-cta .ds-btn--fill{
  background:var(--dx-aix-gradient) !important;
  background-size:100% 100%;
  box-shadow:0 14px 34px rgba(123,47,247,.22);
}
.ds-cta .ds-btn--fill:hover{
  background-position:0 0;
}

/* ==========================================================================
   Destinations section — fits one viewport, auto-cycles (2026-10-23)
   ========================================================================== */
@media(min-width:901px){
  .dx-dest{
    min-height:100vh;min-height:100svh;
    max-height:none;
    display:flex;align-items:center;
    padding:calc(var(--hdr-full,108px) + .5rem) 0 clamp(1rem,2.5vh,2rem);
    box-sizing:border-box;
  }
  .dx-dest>.ds-shell{width:var(--wrap);display:flex;flex-direction:column;justify-content:center}
  .dx-dest .ds-head{margin-bottom:clamp(.8rem,2.4vh,1.8rem);max-width:760px}
  .dx-dest .ds-label{margin-bottom:.4rem}
  .dx-dest .ds-h2{font-size:clamp(1.9rem,min(4vw,6.6vh),3.4rem);line-height:1}
  .dx-dest .ds-body{font-size:clamp(.9rem,1.9vh,1.05rem);line-height:1.5;margin-top:.6rem}
  .dx-hub__list{gap:clamp(.35rem,1.1vh,.7rem);grid-auto-rows:minmax(0,auto)}
  .dx-node{min-height:0;padding:clamp(.5rem,1.5vh,.95rem) 1.35rem}
  .dx-node__top{min-height:0}
  .dx-node h3{font-size:clamp(1.15rem,2.9vh,1.6rem)}
  /* collapsed cards shrink; the active one expands inside a fixed, vh-based budget */
  .dx-node__more{height:0;margin-top:0}
  .dx-node.is-on .dx-node__more{height:clamp(38px,7vh,54px);margin-top:.35rem}
  .dx-node{transition:background-color .34s var(--ease),border-color .34s var(--ease),box-shadow .34s var(--ease),transform .34s var(--ease)}
  .dx-node__more{transition:height .4s var(--ease),margin .4s var(--ease),opacity .28s ease,transform .34s var(--ease),visibility 0s linear .4s}
  .dx-node.is-on .dx-node__more{transition:height .4s var(--ease),margin .4s var(--ease),opacity .28s ease .08s,transform .34s var(--ease),visibility 0s}
  .dx-hub__core{width:clamp(120px,min(16vw,26vh),200px)}
  .dx-stats{margin-top:clamp(.6rem,2vh,1.4rem);gap:2rem}
  .dx-stats b{font-size:clamp(1.5rem,4vh,2.2rem)}
  .dx-stats{font-size:clamp(.85rem,1.8vh,1rem)}
}
/* progress bar on the active card shows the auto-advance timing */
.dx-node.is-on::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--dx-accent);transform-origin:left;animation:dx-prog var(--dx-cycle,2000ms) linear forwards}
.dx-hub.is-paused .dx-node.is-on::after{animation-play-state:paused}
@keyframes dx-prog{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(prefers-reduced-motion:reduce){.dx-node.is-on::after{animation:none;transform:scaleX(0)}}

/* Destinations hub: dot sits at the exact centre of the circle, label tucked below it */
.dx-hub__core{display:block;position:relative}
.dx-hub__core .dx-core-mark{position:absolute;top:50%;left:50%;margin:0;transform:translate(-50%,-50%)}
.dx-hub__core span{position:absolute;left:0;right:0;top:calc(50% + 34px);text-align:center}