/*
 Theme Name:   SoftWest Child
 Theme URI:    https://softwest.nl
 Description:  Divi child theme for SoftWest v2 — "Software met een hartslag". Deep-space blue, real neon glow, Material 3 Expressive glass surfaces, pulse-line shortcode and project-card utilities.
 Author:       SoftWest
 Author URI:   https://softwest.nl
 Template:     Divi
 Version:      2.0.0
 License:      GNU General Public License v2 or later
 License URI:  https://www.gnu.org/licenses/gpl-2.0.html
 Text Domain:  softwest-child
*/

/* ============================================================
   1. DESIGN TOKENS — v3 "software met een hartslag"
   ============================================================ */
:root{
  --sw-bg:#050810;
  --sw-bg2:#0A1020;
  --sw-glass:rgba(255,255,255,.032);
  --sw-glass2:rgba(255,255,255,.065);
  --sw-border:rgba(255,255,255,.09);
  --sw-border-soft:rgba(255,255,255,.06);
  --sw-ink:#EDF1FF;
  --sw-muted:#939DBC;

  --sw-violet:#8B7CFF;
  --sw-azure:#5CA8FF;
  --sw-mint:#43F5B6;
  --sw-pink:#FF5CA8;
  --sw-coral:#FF6B4A;

  --sw-violet-rgb:139,124,255;
  --sw-azure-rgb:92,168,255;
  --sw-mint-rgb:67,245,182;
  --sw-pink-rgb:255,92,168;
  --sw-coral-rgb:255,107,74;

  --sw-grad-brand:linear-gradient(120deg,#8B7CFF 0%,#5CA8FF 100%);

  --sw-font-display:'Sora',sans-serif;
  --sw-font-body:'Manrope',sans-serif;
  --sw-font-mono:'JetBrains Mono',monospace;

  --sw-r-lg:32px;
  --sw-r-md:24px;
  --sw-ease:cubic-bezier(.22,.9,.24,1);
  --sw-spring:cubic-bezier(.34,1.4,.44,1);
}

/* ============================================================
   2. BASE — dark canvas, typography, aurora
   ============================================================ */
body{
  background-color:var(--sw-bg);
  font-family:var(--sw-font-body);
  color:var(--sw-muted);
  -webkit-font-smoothing:antialiased;
}
#page-container,#main-content{background-color:transparent}
h1,h2,h3,h4,
.et_pb_module h1,.et_pb_module h2,.et_pb_module h3,.et_pb_module h4{
  font-family:var(--sw-font-display);
  color:var(--sw-ink);
  letter-spacing:-.025em;
}
::selection{background:rgba(var(--sw-violet-rgb),.45);color:#fff}
:focus-visible{outline:2px solid var(--sw-azure);outline-offset:3px}
a{color:var(--sw-azure)}

/* aurora — injected by functions.php via wp_body_open */
.sw-aurora{position:fixed;inset:-10%;z-index:-1;pointer-events:none;
  background:
    radial-gradient(42% 36% at 14% 10%, rgba(var(--sw-violet-rgb),.17), transparent 65%),
    radial-gradient(38% 32% at 86% 16%, rgba(var(--sw-mint-rgb),.10), transparent 65%),
    radial-gradient(46% 40% at 74% 94%, rgba(var(--sw-pink-rgb),.10), transparent 65%),
    radial-gradient(30% 26% at 30% 80%, rgba(var(--sw-azure-rgb),.08), transparent 65%),
    var(--sw-bg);
}

/* gradient-glow highlight for a word in a heading:
   <span class="sw-hl">hartslag</span> */
.sw-hl{
  background:linear-gradient(110deg,var(--sw-mint),var(--sw-azure) 55%,var(--sw-violet));
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 0 22px rgba(var(--sw-mint-rgb),.35)) drop-shadow(0 0 60px rgba(var(--sw-azure-rgb),.2));
}

/* ============================================================
   3. PILLS — buttons with glow (add class to Divi Button module)
   ============================================================ */
.sw-pill-primary a.et_pb_button,
a.et_pb_button.sw-pill-primary{
  background:var(--sw-grad-brand)!important;color:#fff!important;
  border:none!important;border-radius:999px!important;
  font-family:var(--sw-font-body)!important;font-weight:700!important;
  padding:.95em 1.8em!important;
  box-shadow:0 0 22px rgba(var(--sw-violet-rgb),.5),0 0 70px rgba(var(--sw-violet-rgb),.22),0 8px 24px rgba(0,0,0,.45)!important;
  transition:transform .28s var(--sw-spring),box-shadow .28s var(--sw-ease)!important;
}
.sw-pill-primary a.et_pb_button:hover{
  transform:translateY(-2px) scale(1.02);
  box-shadow:0 0 30px rgba(var(--sw-violet-rgb),.7),0 0 90px rgba(var(--sw-violet-rgb),.3),0 12px 28px rgba(0,0,0,.5)!important;
}
.sw-pill-glass a.et_pb_button,
a.et_pb_button.sw-pill-glass{
  background:var(--sw-glass2)!important;color:var(--sw-ink)!important;
  border:1px solid var(--sw-border)!important;border-radius:999px!important;
  font-family:var(--sw-font-body)!important;font-weight:700!important;
  padding:.95em 1.8em!important;
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  transition:transform .28s var(--sw-spring),background .2s,border-color .2s!important;
}
.sw-pill-glass a.et_pb_button:hover{
  transform:translateY(-2px) scale(1.02);
  background:rgba(255,255,255,.1)!important;border-color:rgba(255,255,255,.18)!important;
}
.sw-pill-primary a.et_pb_button:after,
.sw-pill-glass a.et_pb_button:after{display:none!important} /* no Divi arrow */

/* ============================================================
   4. EYEBROW pill  (Text module, class sw-eyebrow)
   ============================================================ */
.sw-eyebrow, .sw-eyebrow p{
  display:inline-flex!important;align-items:center;gap:.6em;
  font-family:var(--sw-font-body)!important;font-weight:600!important;
  font-size:.86rem!important;color:var(--sw-muted)!important;
  background:var(--sw-glass2);border:1px solid var(--sw-border);
  border-radius:999px;padding:.5em 1.1em;margin:0;
}
.sw-dot{width:8px;height:8px;border-radius:50%;background:var(--sw-mint);display:inline-block;
  box-shadow:0 0 10px rgba(var(--sw-mint-rgb),.9),0 0 22px rgba(var(--sw-mint-rgb),.5);
  animation:sw-beat 2.4s ease-in-out infinite}
@keyframes sw-beat{0%,100%{transform:scale(1)}12%{transform:scale(1.35)}24%{transform:scale(1)}}

/* ============================================================
   5. GLASS CARD  (Column or module, class sw-card + colour)
   ============================================================ */
.sw-card{
  --pc:var(--sw-violet-rgb);
  background:linear-gradient(180deg,var(--sw-glass2),var(--sw-glass))!important;
  border:1px solid var(--sw-border)!important;
  border-radius:var(--sw-r-lg)!important;
  padding:20px 20px 26px!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06), 0 10px 30px rgba(0,0,0,.35)!important;
  transition:transform .35s var(--sw-spring),border-color .3s,box-shadow .35s var(--sw-ease)!important;
}
.sw-card:hover{
  transform:translateY(-7px);
  border-color:rgba(var(--pc),.4)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),
    0 24px 60px rgba(0,0,0,.5),
    0 0 46px rgba(var(--pc),.22)!important;
}
.sw-mint{--pc:var(--sw-mint-rgb)}
.sw-azure{--pc:var(--sw-azure-rgb)}
.sw-pink{--pc:var(--sw-pink-rgb)}
.sw-coral{--pc:var(--sw-coral-rgb)}
.sw-violet{--pc:var(--sw-violet-rgb)}

/* visual window at the top of a card (wrap a Code module) */
.sw-pv{
  min-height:196px;border-radius:20px;
  background:linear-gradient(180deg,#0A1020,#070C18);
  border:1px solid var(--sw-border-soft);
  position:relative;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  padding:20px;margin-bottom:16px;
}
.sw-pv::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(70% 60% at 50% 0%, rgba(var(--pc),.14), transparent 70%);
}

/* status chip + fact pills + domain */
.sw-chip{
  display:inline-flex;align-items:center;gap:.45em;
  font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  padding:.35em 1em;border-radius:999px;
  background:rgba(var(--pc),.12);color:rgb(var(--pc));
  border:1px solid rgba(var(--pc),.4);
  font-family:var(--sw-font-body);
}
.sw-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:rgb(var(--pc));box-shadow:0 0 8px rgba(var(--pc),.9)}
.sw-chip.sw-c-mint{--pc:var(--sw-mint-rgb)}
.sw-chip.sw-c-azure{--pc:var(--sw-azure-rgb)}
.sw-chip.sw-c-pink{--pc:var(--sw-pink-rgb)}
.sw-chip.sw-c-coral{--pc:var(--sw-coral-rgb)}
.sw-chip.sw-c-violet{--pc:var(--sw-violet-rgb)}
.sw-fact{
  display:inline-block;font-size:.74rem;font-weight:700;color:var(--sw-ink);
  background:rgba(255,255,255,.05);border:1px solid var(--sw-border-soft);
  border-radius:999px;padding:.35em .95em;margin:0 6px 6px 0;
  font-family:var(--sw-font-body);
}
.sw-domain{font-family:var(--sw-font-mono);font-size:.74rem;color:var(--sw-muted)}

/* ============================================================
   6. PULSE LINE  —  [sw_pulse] shortcode
   ============================================================ */
.sw-pulse-wrap{position:relative;margin:34px auto 0;max-width:1240px;padding:0 10px}
.sw-pulse{width:100%;height:auto;display:block}
.sw-pulse path{fill:none;stroke:url(#swpulsegrad);stroke-linecap:round;stroke-linejoin:round}
.sw-p-halo{stroke-width:7;opacity:.5;filter:url(#swpulseblur)}
.sw-p-core{stroke-width:2.4}
.sw-p-draw{stroke-dasharray:1;stroke-dashoffset:1;animation:sw-drawline 2s .25s var(--sw-ease) forwards}
@keyframes sw-drawline{to{stroke-dashoffset:0}}
.sw-p-dot{fill:#fff;filter:drop-shadow(0 0 6px #fff) drop-shadow(0 0 14px rgba(var(--sw-azure-rgb),.9))}
.sw-pulse-labels{position:absolute;left:10px;right:10px;top:100%;margin-top:-6px;height:0}
.sw-pl{
  position:absolute;transform:translateX(-50%);
  display:flex;align-items:center;gap:.5em;
  font-weight:700;font-size:.86rem;color:var(--sw-muted);
  font-family:var(--sw-font-body);
  opacity:0;animation:sw-fadeup .6s var(--sw-ease) forwards;
}
.sw-pl i{width:7px;height:7px;border-radius:50%}
.sw-pl-1{left:15%;animation-delay:.8s}
.sw-pl-2{left:38.3%;animation-delay:1.15s}
.sw-pl-3{left:61.7%;animation-delay:1.5s}
.sw-pl-4{left:85%;animation-delay:1.85s}
.sw-pl-1 i{background:var(--sw-mint);box-shadow:0 0 10px rgba(var(--sw-mint-rgb),.9)}
.sw-pl-2 i{background:var(--sw-azure);box-shadow:0 0 10px rgba(var(--sw-azure-rgb),.9)}
.sw-pl-3 i{background:var(--sw-pink);box-shadow:0 0 10px rgba(var(--sw-pink-rgb),.9)}
.sw-pl-4 i{background:var(--sw-coral);box-shadow:0 0 10px rgba(var(--sw-coral-rgb),.9)}
@keyframes sw-fadeup{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}

/* ============================================================
   7. PROJECT-CARD MOCKS  —  [sw_mock_*] shortcodes
   ============================================================ */
/* — poll (Pols) — */
.sw-poll{width:100%;display:flex;flex-direction:column;gap:9px;position:relative;font-family:var(--sw-font-body)}
.sw-poll-q{font-weight:700;font-size:.82rem;color:var(--sw-ink);margin-bottom:2px}
.sw-bar{position:relative;height:30px;border-radius:9px;background:rgba(255,255,255,.05);overflow:hidden}
.sw-bar i{
  position:absolute;inset:0;width:var(--w);border-radius:9px;
  background:linear-gradient(90deg,rgba(var(--sw-mint-rgb),.2),rgba(var(--sw-mint-rgb),.85));
  box-shadow:0 0 16px rgba(var(--sw-mint-rgb),.45);
  transition:width 1.1s var(--sw-ease);
}
.sw-reveal:not(.sw-in) .sw-bar i{width:0}
.sw-bar b{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;height:100%;padding:0 12px;font-size:.75rem;font-weight:700;color:var(--sw-ink)}
.sw-poll-meta{display:flex;justify-content:space-between;align-items:center;font-size:.72rem;color:var(--sw-muted);font-weight:600}
.sw-live-chip{display:inline-flex;align-items:center;gap:.45em;color:var(--sw-mint);font-weight:800;letter-spacing:.04em;font-size:.7rem;text-transform:uppercase}
.sw-live-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--sw-mint);box-shadow:0 0 8px rgba(var(--sw-mint-rgb),.9);animation:sw-beat 2s infinite}

/* — e-ticket (DKV) — */
.sw-ticket{
  width:100%;max-width:290px;display:flex;
  background:linear-gradient(160deg,#131A30,#0C1224);
  border:1px solid rgba(var(--sw-pink-rgb),.35);
  border-radius:14px;
  box-shadow:0 0 30px rgba(var(--sw-pink-rgb),.14);
  font-family:var(--sw-font-body);
}
.sw-t-info{flex:1;padding:16px 14px;display:flex;flex-direction:column;gap:5px;min-width:0}
.sw-t-cat{font-size:.62rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--sw-pink)}
.sw-t-name{font-family:var(--sw-font-display);font-weight:600;font-size:.88rem;line-height:1.25;color:var(--sw-ink)}
.sw-t-meta{font-size:.68rem;color:var(--sw-muted);font-weight:600}
.sw-t-price{
  margin-top:auto;align-self:flex-start;
  font-size:.7rem;font-weight:800;color:var(--sw-ink);
  background:rgba(var(--sw-pink-rgb),.16);border:1px solid rgba(var(--sw-pink-rgb),.4);
  border-radius:999px;padding:.25em .8em;
}
.sw-t-tear{width:0;border-left:2px dashed rgba(255,255,255,.16);position:relative}
.sw-t-tear::before,.sw-t-tear::after{
  content:"";position:absolute;left:-7px;width:12px;height:12px;border-radius:50%;
  background:#070C18;border:1px solid var(--sw-border-soft);
}
.sw-t-tear::before{top:-7px}
.sw-t-tear::after{bottom:-7px}
.sw-t-qr{padding:14px;display:grid;place-items:center}
.sw-qr{display:grid;grid-template-columns:repeat(5,8px);grid-auto-rows:8px;gap:3px}
.sw-qr i{border-radius:2px;background:rgba(255,255,255,.07)}
.sw-qr i.on{background:var(--sw-pink);box-shadow:0 0 7px rgba(var(--sw-pink-rgb),.8)}

/* — stats (IGRA) — */
.sw-stats{display:flex;flex-direction:column;gap:14px;align-items:center;width:100%;font-family:var(--sw-font-body)}
.sw-stat-row{display:flex;gap:14px;width:100%;justify-content:center}
.sw-stat{
  flex:1;max-width:130px;text-align:center;
  background:rgba(255,255,255,.04);border:1px solid var(--sw-border-soft);
  border-radius:16px;padding:14px 10px;
}
.sw-stat b{
  display:block;font-family:var(--sw-font-display);font-weight:700;font-size:1.7rem;
  color:var(--sw-azure);text-shadow:0 0 18px rgba(var(--sw-azure-rgb),.55);
  line-height:1.1;
}
.sw-stat span{font-size:.68rem;font-weight:700;color:var(--sw-muted)}
.sw-hosp-dots{display:flex;gap:7px;flex-wrap:wrap;justify-content:center}
.sw-hosp-dots i{width:8px;height:8px;border-radius:50%;background:rgba(var(--sw-azure-rgb),.9);box-shadow:0 0 8px rgba(var(--sw-azure-rgb),.7)}

/* — ETM — */
.sw-etm{width:100%;max-width:300px;display:flex;flex-direction:column;gap:10px;font-family:var(--sw-font-body)}
.sw-etm-row{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.sw-etm-chip{
  font-size:.68rem;font-weight:700;padding:.32em .9em;border-radius:999px;
  background:rgba(255,255,255,.05);border:1px solid var(--sw-border-soft);color:var(--sw-muted);
}
.sw-etm-chip.on{
  background:rgba(var(--sw-coral-rgb),.16);border-color:rgba(var(--sw-coral-rgb),.5);
  color:#FFC9B8;box-shadow:0 0 14px rgba(var(--sw-coral-rgb),.3);
}
.sw-etm-task{
  background:rgba(255,255,255,.05);border:1px solid rgba(var(--sw-coral-rgb),.45);
  border-radius:14px;padding:13px 14px;display:flex;align-items:center;gap:12px;
  box-shadow:0 0 26px rgba(var(--sw-coral-rgb),.16);
}
.sw-etm-check{
  width:26px;height:26px;border-radius:50%;flex:none;
  border:2px solid rgb(var(--sw-coral-rgb));color:rgb(var(--sw-coral-rgb));
  display:grid;place-items:center;font-size:.75rem;font-weight:800;
  box-shadow:0 0 12px rgba(var(--sw-coral-rgb),.5);
}
.sw-etm-task b{font-size:.84rem;font-weight:800;display:block;line-height:1.3;color:var(--sw-ink)}
.sw-etm-task span{font-size:.68rem;color:var(--sw-muted);font-weight:700}
.sw-etm-hint{text-align:center;font-size:.68rem;color:var(--sw-muted);font-weight:700}

/* ============================================================
   8. FLOATING PILL NAV  (Theme Builder header section)
   ============================================================ */
.sw-topbar{
  position:fixed!important;top:16px!important;left:50%!important;transform:translateX(-50%);
  width:min(1180px,calc(100% - 32px))!important;z-index:9999!important;
  background:rgba(10,16,32,.62)!important;
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border:1px solid var(--sw-border)!important;
  border-radius:999px!important;
  box-shadow:0 10px 40px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.07)!important;
}
.sw-topbar .et_pb_row{padding:8px 14px!important}

/* ============================================================
   9. PLATFORM LANES + CTA PANEL
   ============================================================ */
.sw-lane{
  background:rgba(255,255,255,.04);border:1px solid var(--sw-border-soft);
  border-radius:18px;padding:16px 18px;
  display:flex;flex-direction:column;gap:11px;
}
.sw-lane-hub{align-items:center}
.sw-lane-label{font-size:.7rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--sw-muted);font-family:var(--sw-font-body)}
.sw-rail-apps{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.sw-rail-chip{
  display:inline-flex;align-items:center;gap:.5em;
  font-family:var(--sw-font-mono);font-size:.74rem;color:var(--sw-ink);
  background:rgba(255,255,255,.05);border:1px solid var(--sw-border);
  border-radius:999px;padding:.45em 1em;
}
.sw-rail-chip i{width:7px;height:7px;border-radius:50%}
.sw-rc-mint i{background:var(--sw-mint);box-shadow:0 0 8px rgba(var(--sw-mint-rgb),.9)}
.sw-rc-azure i{background:var(--sw-azure);box-shadow:0 0 8px rgba(var(--sw-azure-rgb),.9)}
.sw-rc-pink i{background:var(--sw-pink);box-shadow:0 0 8px rgba(var(--sw-pink-rgb),.9)}
.sw-rc-coral i{background:var(--sw-coral);box-shadow:0 0 8px rgba(var(--sw-coral-rgb),.9)}
.sw-rail-line{
  width:2px;height:26px;margin:2px auto;
  background:linear-gradient(180deg,rgba(255,255,255,.25),rgba(var(--sw-violet-rgb),.9));
  box-shadow:0 0 12px rgba(var(--sw-violet-rgb),.6);
  border-radius:2px;
}
.sw-rail-hub{
  display:inline-block;font-weight:800;font-size:.9rem;color:#fff;
  background:var(--sw-grad-brand);
  border-radius:999px;padding:.7em 1.5em;
  box-shadow:0 0 24px rgba(var(--sw-violet-rgb),.5),0 0 70px rgba(var(--sw-violet-rgb),.2);
  font-family:var(--sw-font-body);
}

.sw-cta-panel{
  position:relative;overflow:hidden;
  background:linear-gradient(180deg,var(--sw-glass2),var(--sw-glass))!important;
  border:1px solid var(--sw-border)!important;
  border-radius:36px!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07)!important;
}
.sw-cta-panel::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(46% 60% at 50% 0%, rgba(var(--sw-violet-rgb),.2), transparent 70%),
    radial-gradient(30% 40% at 18% 100%, rgba(var(--sw-mint-rgb),.08), transparent 70%),
    radial-gradient(30% 40% at 82% 100%, rgba(var(--sw-pink-rgb),.08), transparent 70%);
}

/* ============================================================
   10. REVEAL  (any module, class sw-reveal [+ sw-d1/sw-d2])
   ============================================================ */
.sw-reveal{opacity:0;transform:translateY(26px);transition:opacity .7s var(--sw-ease),transform .7s var(--sw-ease)}
.sw-reveal.sw-in{opacity:1;transform:none}
.sw-reveal.sw-d1{transition-delay:.1s}
.sw-reveal.sw-d2{transition-delay:.2s}
.no-js .sw-reveal{opacity:1;transform:none}
.no-js .sw-bar i{width:var(--w)}

/* ============================================================
   11. REDUCED MOTION
   ============================================================ */
@media (prefers-reduced-motion:reduce){
  .sw-reveal,.sw-card,.sw-bar i,
  .sw-pill-primary a.et_pb_button,.sw-pill-glass a.et_pb_button{transition:none!important;transform:none!important}
  .sw-reveal{opacity:1}
  .sw-bar i{width:var(--w)}
  .sw-p-draw{animation:none!important;stroke-dashoffset:0}
  .sw-p-dot{display:none}
  .sw-pl{animation:none!important;opacity:1}
  .sw-dot,.sw-live-chip::before{animation:none!important}
}
