/* ==========================================================================
   NEXUS — technology · healthcare · management layer.  Loaded AFTER aurora.css and cards.css.
   It only ADDS to the Aurora Glass theme (light + dark). To go back to the previous look, remove the nexus.css <link>
   and the nexus.js <script> from templates/base.html (home.html keeps working, the extra blocks just look plain).
   Everything is optional: without JavaScript every page is fully visible and usable; reduced-motion users get no animation.
   ========================================================================== */
:root{
  --nx-tech-1:#3b82f6;--nx-tech-2:#8b5cf6;           /* Technology  : blue → violet  */
  --nx-care-1:#14b8a6;--nx-care-2:#34d399;           /* Healthcare  : teal → green   */
  --nx-mgmt-1:#f59e0b;--nx-mgmt-2:#f97316;           /* Management  : amber → orange */
  --nx-pulse:#fb7185;                                 /* the heartbeat line           */
}
@property --nx-a{syntax:"<angle>";inherits:false;initial-value:0deg}

/* ---------------------------------------------------------------- hero: live network canvas + ECG */
.nx-net{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.9}
.hero-slider>.nx-net{z-index:2;opacity:.5;mix-blend-mode:screen}
.intro>.container,.page-hero>.container{position:relative;z-index:1}
.nx-ecg{position:absolute;left:0;right:0;bottom:0;height:70px;z-index:0;pointer-events:none;opacity:.9;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.nx-ecg svg{width:100%;height:100%;display:block;overflow:visible}
.nx-ecg .base{fill:none;stroke:rgba(255,255,255,.1);stroke-width:1.2}
.nx-ecg .beat{fill:none;stroke:var(--nx-pulse);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:240 1360;
  stroke-dashoffset:240;animation:nxBeat 4.2s linear infinite;filter:drop-shadow(0 0 6px rgba(251,113,133,.9))}
@keyframes nxBeat{to{stroke-dashoffset:-1360}}
.intro .nx-ecg{height:84px}

/* intro (home without featured articles): two columns, orbit on the right */
.intro .nx-lead{max-width:600px}
@media (min-width:992px){.intro .hero-orbs{display:none}}
.nx-chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.nx-chip{display:inline-flex;align-items:center;gap:8px;padding:8px 15px;border-radius:99px;font-size:.84rem;font-weight:600;color:#fff!important;
  background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.2);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  transition:transform .35s var(--ease),background .3s,border-color .3s,box-shadow .3s}
.nx-chip i{font-size:.9rem}
.nx-chip.tech i{color:#93c5fd}.nx-chip.care i{color:#5eead4}.nx-chip.mgmt i{color:#fcd34d}
.nx-chip:hover{transform:translateY(-3px);background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.42);box-shadow:0 10px 26px rgba(0,0,0,.28)}

.nx-orbit{position:relative;width:min(400px,100%);aspect-ratio:1;margin-inline:auto;transform:translate(calc(var(--px,0)*14px),calc(var(--py,0)*14px));transition:transform .25s ease-out}
.nx-orbit .core{position:absolute;inset:34%;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.95),rgba(255,255,255,.78));box-shadow:0 0 0 1px rgba(255,255,255,.5),0 0 60px rgba(45,212,191,.55),0 0 120px rgba(99,102,241,.4);animation:nxCore 3.6s ease-in-out infinite}
.nx-orbit .core img{width:62%;height:62%;object-fit:contain}
@keyframes nxCore{50%{box-shadow:0 0 0 1px rgba(255,255,255,.5),0 0 90px rgba(45,212,191,.75),0 0 150px rgba(99,102,241,.55)}}
.nx-orbit .ring{position:absolute;border-radius:50%;border:1px dashed rgba(255,255,255,.28);animation:nxSpin 30s linear infinite}
.nx-orbit .r1{inset:17%}.nx-orbit .r2{inset:2%;animation-duration:46s;animation-direction:reverse;border-style:solid;border-color:rgba(255,255,255,.14)}
.nx-orbit .sat{position:absolute;width:58px;height:58px;margin:-29px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.3rem;color:#fff;
  background:linear-gradient(135deg,var(--c1),var(--c2));box-shadow:0 10px 30px rgba(0,0,0,.35),0 0 24px var(--c1);animation:nxSpin 30s linear infinite reverse;cursor:default}
.nx-orbit .r2 .sat{animation-duration:46s;animation-direction:normal}
.nx-orbit .sat::after{content:attr(data-n);position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(-4px);padding:4px 11px;border-radius:99px;font-size:.72rem;font-weight:700;letter-spacing:.04em;white-space:nowrap;
  color:#fff;background:rgba(8,12,30,.85);border:1px solid rgba(255,255,255,.2);opacity:0;pointer-events:none;transition:.3s var(--ease)}
.nx-orbit .sat:hover::after{opacity:1;transform:translateX(-50%)}
.nx-orbit .s-tech{--c1:var(--nx-tech-1);--c2:var(--nx-tech-2);top:50%;left:100%}
.nx-orbit .s-care{--c1:var(--nx-care-1);--c2:var(--nx-care-2);top:0;left:50%}
.nx-orbit .s-mgmt{--c1:var(--nx-mgmt-1);--c2:var(--nx-mgmt-2);top:50%;left:0}
.nx-orbit .s-ai{--c1:#ec4899;--c2:#8b5cf6;top:100%;left:50%}
@keyframes nxSpin{to{transform:rotate(360deg)}}

/* ---------------------------------------------------------------- domain panels (home) */
.nx-domains{padding-top:56px}
.nx-dgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.nx-dom{--c1:var(--nx-tech-1);--c2:var(--nx-tech-2);position:relative;display:flex;flex-direction:column;border-radius:22px;padding:0;overflow:hidden;isolation:isolate;
  background:var(--card);border:1px solid var(--line);box-shadow:var(--sh-sm);
  transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .5s var(--ease),box-shadow .4s,border-color .3s}
.nx-dom.care{--c1:var(--nx-care-1);--c2:var(--nx-care-2)}.nx-dom.mgmt{--c1:var(--nx-mgmt-1);--c2:var(--nx-mgmt-2)}
.nx-dom::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:0;transition:opacity .35s;
  background:radial-gradient(380px circle at var(--mx,50%) var(--my,0%),color-mix(in srgb,var(--c1) 22%,transparent),transparent 60%)}
.nx-dom::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.5px;pointer-events:none;opacity:0;transition:opacity .4s;
  background:conic-gradient(from var(--nx-a),transparent 0 55%,var(--c1),var(--c2),transparent 90%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);animation:nxAng 4s linear infinite}
@keyframes nxAng{to{--nx-a:360deg}}
.nx-dom:hover{box-shadow:0 24px 60px color-mix(in srgb,var(--c1) 26%,transparent);border-color:transparent}
.nx-dom:hover::before,.nx-dom:hover::after{opacity:1}
.nx-art{position:relative;height:150px;overflow:hidden;background:linear-gradient(135deg,color-mix(in srgb,var(--c1) 88%,#000),color-mix(in srgb,var(--c2) 70%,#000))}
.nx-art::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);background-size:26px 26px;
  -webkit-mask-image:radial-gradient(circle at 50% 60%,#000,transparent 75%);mask-image:radial-gradient(circle at 50% 60%,#000,transparent 75%)}
.nx-art svg{position:absolute;inset:0;width:100%;height:100%}
.nx-art .ic{position:absolute;right:20px;top:18px;width:46px;height:46px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;color:#fff;
  background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.35);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:transform .5s var(--ease)}
.nx-dom:hover .ic{transform:rotate(-8deg) scale(1.12)}
.nx-art .st{fill:none;stroke:rgba(255,255,255,.9);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.nx-art .dim{fill:none;stroke:rgba(255,255,255,.28);stroke-width:1.4}
.nx-art .nd{fill:#fff}
/* technology: circuit pulses */
.nx-art .flow{stroke-dasharray:14 120;animation:nxFlow 3.4s linear infinite}.nx-art .flow.b{animation-delay:-1.1s}.nx-art .flow.c{animation-delay:-2.2s}
@keyframes nxFlow{from{stroke-dashoffset:134}to{stroke-dashoffset:0}}
/* healthcare: heartbeat */
.nx-art .ecg{stroke-dasharray:180 420;stroke-dashoffset:180;animation:nxEcg 3s linear infinite;filter:drop-shadow(0 0 5px rgba(255,255,255,.9))}
@keyframes nxEcg{to{stroke-dashoffset:-420}}
/* management: growing bars + connecting nodes */
.nx-art .bar{fill:rgba(255,255,255,.85);transform-box:fill-box;transform-origin:bottom;animation:nxBar 3.2s var(--ease) infinite alternate}
.nx-art .bar:nth-of-type(2){animation-delay:.25s}.nx-art .bar:nth-of-type(3){animation-delay:.5s}.nx-art .bar:nth-of-type(4){animation-delay:.75s}
@keyframes nxBar{from{transform:scaleY(.35)}to{transform:scaleY(1)}}
.nx-dbody{padding:22px 24px 24px;display:flex;flex-direction:column;gap:12px;flex:1}
.nx-dbody h3{font-family:'Sora',sans-serif;font-size:1.28rem;margin:0}
.nx-dbody p{color:var(--muted);margin:0;font-size:.95rem}
.nx-tags{display:flex;flex-wrap:wrap;gap:7px}
.nx-tags span{font-size:.74rem;font-weight:600;padding:4px 11px;border-radius:99px;color:var(--c1);background:color-mix(in srgb,var(--c1) 11%,transparent);border:1px solid color-mix(in srgb,var(--c1) 26%,transparent)}
.nx-dlinks{display:flex;gap:10px;flex-wrap:wrap;margin-top:auto;padding-top:6px}
.nx-dlinks a{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:.88rem;padding:9px 16px;border-radius:12px;color:#fff;background:linear-gradient(135deg,var(--c1),var(--c2));
  transition:transform .3s var(--ease),box-shadow .3s}
.nx-dlinks a:hover{color:#fff;transform:translateY(-2px);box-shadow:0 10px 24px color-mix(in srgb,var(--c1) 40%,transparent)}
.nx-dlinks a.alt{background:transparent;color:var(--c1);border:1.5px solid color-mix(in srgb,var(--c1) 45%,transparent)}
.nx-dlinks a.alt:hover{background:color-mix(in srgb,var(--c1) 12%,transparent);box-shadow:none;color:var(--c1)}
html[data-theme=dark] .nx-dom{background:var(--glass);border-color:var(--glass-line);backdrop-filter:blur(18px) saturate(150%);-webkit-backdrop-filter:blur(18px) saturate(150%)}
html[data-theme=dark] .nx-tags span,html[data-theme=dark] .nx-dlinks a.alt{color:color-mix(in srgb,var(--c1) 65%,#fff)}

/* trust strip: three ideas in one line (home) */
.nx-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:26px;border-radius:18px;overflow:hidden;border:1px solid var(--line);background:var(--card);box-shadow:var(--sh-sm)}
.nx-strip div{padding:18px 22px;display:flex;align-items:center;gap:14px;position:relative}
.nx-strip div+div{border-left:1px solid var(--line)}
.nx-strip i{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;color:#fff;background:var(--aurora);flex:none}
.nx-strip b{display:block;font-family:'Sora',sans-serif;font-size:.95rem;color:var(--ink)}.nx-strip span{font-size:.82rem;color:var(--muted)}
html[data-theme=dark] .nx-strip{background:var(--glass);border-color:var(--glass-line)}

/* ---------------------------------------------------------------- site-wide polish */
/* glass navbar that firms up after the page is scrolled */
.site-nav{transition:transform .35s var(--ease),box-shadow .3s,background .3s,height .3s}
.site-nav.nx-solid{box-shadow:0 12px 40px rgba(15,27,61,.12)}
html[data-theme=dark] .site-nav.nx-solid{box-shadow:0 12px 40px rgba(0,0,0,.5);background:rgba(7,11,28,.88)}
.site-nav::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,rgba(45,212,191,.55),rgba(129,140,248,.55),transparent);opacity:0;transition:opacity .4s}
.site-nav.nx-solid::after{opacity:1}

/* section titles: a small gradient bar that draws itself */
.section-head h2{position:relative;padding-bottom:12px}
.section-head h2::after{content:"";position:absolute;left:0;bottom:0;height:3px;width:46px;border-radius:3px;background:var(--aurora);transition:width .7s var(--ease)}
.section-head:hover h2::after,.section-head.in h2::after{width:84px}

/* cards: a thin light edge that travels round the card on hover */
.a-card::after,.m-card::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.5px;pointer-events:none;opacity:0;transition:opacity .4s;
  background:conic-gradient(from var(--nx-a),transparent 0 60%,#2dd4bf,#818cf8,transparent 92%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);animation:nxAng 4s linear infinite;z-index:3}
.a-card:hover::after,.m-card:hover::after{opacity:1}
.a-card,.m-card{transform:perspective(900px) translateY(var(--ty,0px)) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}
.a-card:hover,.m-card:hover{--ty:-8px;transform:perspective(900px) translateY(-8px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}

/* hero picture is taller than the hero so it can drift (parallax) without showing an edge */
.hero-slider .hs-photo{top:-8%;height:116%}
@media (max-width:767px){.a-card:hover,.m-card:hover{transform:none}}

/* pictures: soft blur-up while they load (added by nexus.js only to pictures that are still loading) */
img.nx-ld{opacity:0;filter:blur(14px);transform:scale(1.04)}
img.nx-in{transition:opacity .7s var(--ease),filter .8s var(--ease),transform .9s var(--ease)}
.hs-photo.nx-in{transition:opacity .9s var(--ease),filter .9s var(--ease)}
.cover .cv-img.nx-in,.a-img img.nx-in{transition:opacity .7s var(--ease),filter .8s var(--ease),transform .9s var(--ease)}
/* pictures inside articles and lessons: rounded, can be opened full-screen */
.article-body img:not(.emoji),.lesson img,.legal img{border-radius:14px;box-shadow:var(--sh-sm);cursor:zoom-in;max-width:100%;height:auto}
.nx-zoomable{cursor:zoom-in}
.nx-lb{position:fixed;inset:0;z-index:30000;display:none;align-items:center;justify-content:center;padding:4vmin;background:rgba(4,7,20,.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);opacity:0;transition:opacity .3s}
.nx-lb.open{display:flex}.nx-lb.show{opacity:1}
.nx-lb img{max-width:100%;max-height:100%;border-radius:14px;box-shadow:0 30px 90px rgba(0,0,0,.6);transform:scale(.94);transition:transform .45s var(--ease);cursor:zoom-out;background:#0b1437}
.nx-lb.show img{transform:none}
.nx-lb button{position:absolute;top:18px;right:18px;width:44px;height:44px;border-radius:14px;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.1);color:#fff;font-size:1.1rem;transition:.25s}
.nx-lb button:hover{background:rgba(255,255,255,.25);transform:rotate(90deg)}
.nx-lb .cap{position:absolute;left:0;right:0;bottom:14px;text-align:center;color:rgba(255,255,255,.75);font-size:.85rem;pointer-events:none}

/* soft light that follows the pointer (mouse devices only) */
.nx-glow{position:fixed;left:0;top:0;width:520px;height:520px;margin:-260px 0 0 -260px;border-radius:50%;pointer-events:none;z-index:0;opacity:0;transition:opacity .5s;
  background:radial-gradient(circle,rgba(99,102,241,.13),rgba(20,184,166,.08) 40%,transparent 68%);will-change:transform}
.nx-glow.on{opacity:1}
html[data-theme=dark] .nx-glow{background:radial-gradient(circle,rgba(129,140,248,.17),rgba(45,212,191,.1) 40%,transparent 68%)}
main,.site-footer{position:relative;z-index:1}

/* buttons get a magnetic feel (uses the separate `translate` property, so the lift / press effects still work) */
.btn-teal,.btn-gold,.btn-nav-register{translate:var(--bx,0) var(--by,0);transition:translate .25s ease-out,transform .3s var(--ease),box-shadow .3s,background-position .5s}

/* footer: a heartbeat line along the top edge */
.site-footer>.nx-ecg{top:0;bottom:auto;height:46px;opacity:.55}
.site-footer>.container{position:relative;z-index:1}

/* ---------------------------------------------------------------- command palette (Ctrl/⌘ + K, or "/") */

/* ---------------------------------------------------------------- responsive + accessibility */
@media (max-width:991px){.nx-dgrid{grid-template-columns:1fr 1fr}.nx-strip{grid-template-columns:1fr}.nx-strip div+div{border-left:0;border-top:1px solid var(--line)}}
@media (max-width:640px){.nx-dgrid{grid-template-columns:1fr}.nx-art{height:130px}.nx-domains{padding-top:36px}.intro .nx-ecg{height:56px}}
@media (hover:none){.nx-glow{display:none}.nx-dom{transform:none!important}}
@media (prefers-reduced-motion:reduce){
  .nx-ecg .beat,.nx-art .flow,.nx-art .ecg,.nx-art .bar,.nx-orbit .ring,.nx-orbit .sat,.nx-orbit .core,.nx-dom::after,.a-card::after,.m-card::after{animation:none!important}
  .nx-ecg .beat{stroke-dasharray:none}.nx-art .ecg{stroke-dasharray:none}.nx-glow{display:none}
  img.nx-ld{opacity:1;filter:none;transform:none}
}
@media print{.nx-net,.nx-ecg,.nx-glow,.nx-lb{display:none!important}}
