@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;600;700&display=swap');

/* ── Dark theme (default) ───────────────────────────────────── */
:root {
  --bg-primary: #050a18;
  --bg-secondary: #0a1128;
  --bg-card: rgba(15, 23, 55, 0.55);
  --border-glass: rgba(100, 160, 255, 0.12);
  --text-primary: #e8edf5;
  --text-muted: #8896b3;
  --accent-cyan: #22d3ee;
  --accent-blue: #3b82f6;
  --accent-violet: #8b5cf6;
  --glow-cyan: 0 0 30px rgba(34,211,238,0.35);
  --glow-blue: 0 0 30px rgba(59,130,246,0.35);
  --radius-lg: 1rem;
  --radius-xl: 1.5rem;
  --font-sans: 'Inter', system-ui, sans-serif;
  --font-mono: 'JetBrains Mono', monospace;
  --navbar-bg: rgba(5,10,24,.7);
  --navbar-bg-scroll: rgba(5,10,24,.92);
  --dot-color: rgba(100,180,255,.07);
  --orb-opacity: 0.18;
  --popup-bg: rgba(10,17,40,.92);
}

/* ── Light theme ────────────────────────────────────────────── */
:root.light {
  --bg-primary: #f0f4f8;
  --bg-secondary: #e2e8f0;
  --bg-card: rgba(255, 255, 255, 0.65);
  --border-glass: rgba(59, 130, 246, 0.15);
  --text-primary: #1a202c;
  --text-muted: #64748b;
  --accent-cyan: #0891b2;
  --accent-blue: #2563eb;
  --accent-violet: #7c3aed;
  --glow-cyan: 0 0 30px rgba(8,145,178,0.2);
  --glow-blue: 0 0 30px rgba(37,99,235,0.2);
  --navbar-bg: rgba(240,244,248,.75);
  --navbar-bg-scroll: rgba(240,244,248,.95);
  --dot-color: rgba(59,130,246,.08);
  --orb-opacity: 0.10;
  --popup-bg: rgba(255,255,255,.92);
}

/* ── Base ────────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased}
body{margin:0;font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);overflow-x:hidden;transition:background .4s,color .4s}
::-webkit-scrollbar{width:8px}
::-webkit-scrollbar-track{background:var(--bg-secondary)}
::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--accent-cyan),var(--accent-blue));border-radius:4px}

/* ── Ambient Orbs ───────────────────────────────────────────── */
.orb{position:fixed;border-radius:50%;filter:blur(120px);opacity:var(--orb-opacity);pointer-events:none;z-index:0;animation:orbf 20s ease-in-out infinite alternate;transition:opacity .4s}
.orb--cyan{width:600px;height:600px;background:var(--accent-cyan);top:-10%;left:-8%}
.orb--blue{width:500px;height:500px;background:var(--accent-blue);top:30%;right:-10%;animation-delay:-7s}
.orb--violet{width:550px;height:550px;background:var(--accent-violet);bottom:-5%;left:20%;animation-delay:-14s}
@keyframes orbf{0%{transform:translate(0,0) scale(1)}50%{transform:translate(40px,-30px) scale(1.12)}100%{transform:translate(-20px,20px) scale(.95)}}

/* ── Navbar ─────────────────────────────────────────────────── */
.navbar{position:fixed;top:0;left:0;right:0;z-index:1000;backdrop-filter:blur(24px) saturate(1.6);background:var(--navbar-bg);border-bottom:1px solid var(--border-glass);transition:background .35s,box-shadow .35s}
.navbar.scrolled{background:var(--navbar-bg-scroll);box-shadow:0 4px 30px rgba(0,0,0,.15)}
.nav-logo{font-family:var(--font-mono);font-weight:700;font-size:1.35rem;background:linear-gradient(135deg,var(--accent-cyan),var(--accent-blue));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.nav-link{position:relative;color:var(--text-muted);transition:color .3s;font-weight:500;font-size:.9rem;text-decoration:none}
.nav-link:hover{color:var(--accent-cyan)}
.nav-link::after{content:'';position:absolute;left:0;bottom:-4px;width:0;height:2px;background:var(--accent-cyan);border-radius:1px;transition:width .3s}
.nav-link:hover::after{width:100%}

/* ── Theme Toggle Button ────────────────────────────────────── */
.theme-toggle{background:none;border:1px solid var(--border-glass);border-radius:.5rem;padding:.45rem;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:color .3s,border-color .3s,transform .3s}
.theme-toggle:hover{color:var(--accent-cyan);border-color:var(--accent-cyan);transform:scale(1.1)}
/* In dark mode show the sun icon, in light mode show the moon icon */
.theme-icon--light{display:none}
:root.light .theme-icon--dark{display:none}
:root.light .theme-icon--light{display:block}

/* ── Hero ───────────────────────────────────────────────────── */
.hero{position:relative;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:8rem 1.5rem 4rem;overflow:hidden}
.hero::before{content:'';position:absolute;inset:0;background-image:radial-gradient(circle,var(--dot-color) 1px,transparent 1px);background-size:32px 32px;mask-image:radial-gradient(ellipse 70% 60% at 50% 50%,black 30%,transparent 80%);-webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 50%,black 30%,transparent 80%);pointer-events:none}

.coming-soon-badge{display:inline-flex;align-items:center;gap:.5rem;padding:.4rem 1rem;border:1px solid var(--border-glass);border-radius:9999px;background:rgba(34,211,238,.06);color:var(--accent-cyan);font-size:.8rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}
.coming-soon-badge .pulse-dot{width:8px;height:8px;border-radius:50%;background:var(--accent-cyan);animation:pdot 2s ease-in-out infinite}
@keyframes pdot{0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(34,211,238,.5)}50%{opacity:.6;box-shadow:0 0 0 8px rgba(34,211,238,0)}}

.hero h1{font-size:clamp(2.4rem,6vw,4.5rem);font-weight:900;line-height:1.08;letter-spacing:-.04em;margin:0 0 1.25rem;max-width:54rem}
.hero h1 .gradient-text,.section-title .gradient-text,.cta-banner h2 .gradient-text{background:linear-gradient(135deg,var(--accent-cyan),var(--accent-blue),var(--accent-violet));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.hero-sub{font-size:clamp(1rem,2vw,1.25rem);color:var(--text-muted);max-width:38rem;margin:0 auto 2.5rem;line-height:1.7}

/* ── CTA Buttons ────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.85rem 2rem;border-radius:var(--radius-lg);font-weight:600;font-size:.95rem;text-decoration:none;transition:transform .25s,box-shadow .25s,background .25s;cursor:pointer;border:none}
.btn:hover{transform:translateY(-2px)}
.btn--primary{background:linear-gradient(135deg,var(--accent-cyan),var(--accent-blue));color:#fff;box-shadow:0 4px 25px rgba(34,211,238,.3)}
.btn--primary:hover{box-shadow:var(--glow-cyan)}
.btn--outline{background:transparent;color:var(--text-primary);border:1px solid var(--border-glass);backdrop-filter:blur(8px)}
.btn--outline:hover{border-color:var(--accent-cyan);box-shadow:0 0 20px rgba(34,211,238,.15)}

/* ── Countdown to 2027 ──────────────────────────────────────── */
.countdown-section{margin-top:3.5rem;position:relative;z-index:1;text-align:center}
.countdown-label-top{color:var(--text-muted);font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;margin:0 0 1.25rem}
.countdown-label-bottom{color:var(--text-muted);font-size:.8rem;margin:.75rem 0 0;font-weight:500;letter-spacing:.04em}

.countdown-grid{display:inline-flex;align-items:center;gap:.75rem}
.countdown-card{background:var(--bg-card);border:1px solid var(--border-glass);backdrop-filter:blur(16px);border-radius:var(--radius-xl);padding:1.25rem 1.5rem;min-width:90px;text-align:center;transition:transform .3s,box-shadow .3s}
.countdown-card:hover{transform:translateY(-4px);box-shadow:var(--glow-blue)}
.countdown-value{display:block;font-family:var(--font-mono);font-size:2.6rem;font-weight:800;background:linear-gradient(135deg,var(--accent-cyan),var(--accent-blue));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.1;transition:transform .15s}
.countdown-value.tick{animation:digit-tick .35s ease-out}
@keyframes digit-tick{0%{transform:translateY(-4px);opacity:.5}100%{transform:translateY(0);opacity:1}}
.countdown-unit{display:block;font-size:.72rem;color:var(--text-muted);margin-top:.3rem;text-transform:uppercase;letter-spacing:.1em;font-weight:600}
.countdown-sep{font-family:var(--font-mono);font-size:2.4rem;font-weight:700;color:var(--accent-cyan);opacity:.5;line-height:1;padding-bottom:1rem}

/* ── Section Shared ─────────────────────────────────────────── */
.section{position:relative;z-index:1;padding:6rem 1.5rem}
.section-title{text-align:center;font-size:clamp(1.8rem,4vw,2.8rem);font-weight:800;letter-spacing:-.03em;margin-bottom:.75rem}
.section-subtitle{text-align:center;color:var(--text-muted);max-width:38rem;margin:0 auto 3.5rem;line-height:1.7;font-size:1.05rem}

/* ── Data Pipeline Animation ────────────────────────────────── */
.pipeline-canvas-wrap{position:relative;max-width:72rem;margin:0 auto;border-radius:var(--radius-xl);overflow:hidden;border:1px solid var(--border-glass);background:var(--bg-card);backdrop-filter:blur(18px)}
#pipeline-canvas{width:100%;height:420px;display:block}

/* ── Map ────────────────────────────────────────────────────── */
.map-wrapper{max-width:80rem;margin:0 auto;border-radius:var(--radius-xl);overflow:hidden;border:1px solid var(--border-glass);box-shadow:0 8px 60px rgba(0,0,0,.25)}
#world-map{width:100%;height:520px;background:var(--bg-secondary)}
.leaflet-popup-content-wrapper{background:var(--popup-bg)!important;color:var(--text-primary)!important;border:1px solid var(--border-glass)!important;border-radius:var(--radius-lg)!important;backdrop-filter:blur(14px)!important;box-shadow:0 8px 32px rgba(0,0,0,.25)!important;font-family:var(--font-sans)!important}
.leaflet-popup-content{margin:.75rem 1rem!important;font-size:.85rem!important;line-height:1.6!important}
.leaflet-popup-tip{background:var(--popup-bg)!important}
.pulse-marker{position:relative;width:14px;height:14px}
.pulse-marker .dot{width:10px;height:10px;background:var(--accent-cyan);border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 0 8px var(--accent-cyan)}
.pulse-marker .ring{position:absolute;inset:-4px;border:2px solid var(--accent-cyan);border-radius:50%;opacity:0;animation:pring 2.5s cubic-bezier(0,0,.2,1) infinite}
@keyframes pring{0%{transform:scale(.8);opacity:.8}100%{transform:scale(2.6);opacity:0}}

/* ── About / Coming-Soon Banner ─────────────────────────────── */
.cta-banner{position:relative;max-width:72rem;margin:0 auto;padding:4rem 3rem;border-radius:var(--radius-xl);background:linear-gradient(135deg,rgba(34,211,238,.08),rgba(59,130,246,.08));border:1px solid var(--border-glass);text-align:center;overflow:hidden}
.cta-banner::before{content:'';position:absolute;inset:0;background-image:radial-gradient(circle,var(--dot-color) 1px,transparent 1px);background-size:24px 24px;pointer-events:none}
.cta-banner h2{font-size:clamp(1.6rem,3.5vw,2.4rem);font-weight:800;margin-bottom:1rem;position:relative}
.cta-banner p{color:var(--text-muted);max-width:32rem;margin:0 auto 2rem;line-height:1.7;position:relative}

/* ── Footer ─────────────────────────────────────────────────── */
.footer{border-top:1px solid var(--border-glass);padding:3rem 1.5rem;text-align:center;color:var(--text-muted);font-size:.85rem;position:relative;z-index:1}
.footer a{color:var(--accent-cyan);text-decoration:none;transition:color .3s}
.footer a:hover{color:var(--accent-blue)}

[data-aos]{transition-timing-function:cubic-bezier(.22,1,.36,1)!important}

/* ── Responsive ─────────────────────────────────────────────── */
@media(max-width:768px){
  .countdown-grid{gap:.4rem}
  .countdown-card{min-width:68px;padding:1rem 1rem}
  .countdown-value{font-size:1.8rem}
  .countdown-sep{font-size:1.6rem;padding-bottom:.75rem}
  #pipeline-canvas{height:260px}
  #world-map{height:360px}
  .cta-banner{padding:2.5rem 1.5rem}
  .hero{padding:6rem 1rem 3rem}
}
@media(max-width:480px){
  .hero h1{font-size:2rem}
  .btn{padding:.75rem 1.5rem;font-size:.88rem}
  .countdown-card{min-width:60px;padding:.75rem .6rem}
  .countdown-value{font-size:1.5rem}
  .countdown-sep{font-size:1.2rem}
  #pipeline-canvas{height:200px}
  .hub-label span{display:none}
}
