/* NIDOX — Tactical Infrastructure. Anywhere. */

:root {
    --black:     #181E0E;
    --white:     #E8EDD5;
    --accent:    #7D9632;
    --accent-hi: #AECF42;
    --gray:      #202A12;
    --panel:     #28331A;
    --border:    #3E5020;
    --border2:   #546A2C;
    --dim:       #8FAA58;
  }

  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
  html { scroll-behavior: smooth; }

  body {
    background: var(--black);
    color: var(--white);
    font-family: 'DM Sans', sans-serif;
    font-weight: 300;
    overflow-x: hidden;
    cursor: none;
  }

  body::after {
    content: '';
    position: fixed; inset: 0; z-index: 1000; pointer-events: none;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");
    background-size: 160px;
    opacity: 0.5;
    mix-blend-mode: overlay;
  }

  /* CURSOR */
  .cursor {
    width: 8px; height: 8px;
    background: var(--accent-hi);
    clip-path: polygon(50% 0%, 100% 100%, 0% 100%);
    position: fixed; pointer-events: none; z-index: 9999;
    transform: translate(-50%, -50%);
    transition: transform 0.1s;
  }
  .cursor-ring {
    width: 32px; height: 32px;
    border: 1px solid rgba(150,168,78,0.4);
    position: fixed; pointer-events: none; z-index: 9998;
    transform: translate(-50%, -50%) rotate(45deg);
    transition: all 0.16s ease;
  }

  /* NAV */
  nav {
    position: fixed; top: 0; left: 0; right: 0; z-index: 500;
    display: flex; justify-content: space-between; align-items: center;
    padding: 12px 60px;
    background: rgba(6,8,4,0.93);
    border-bottom: 1px solid var(--border);
    backdrop-filter: blur(8px);
  }
  .nav-logo {
    display: flex; align-items: center; gap: 12px;
    text-decoration: none;
  }
  .nav-logo img { height: 108px; width: auto; filter: invert(1) sepia(1) hue-rotate(52deg) saturate(0.6) brightness(0.35); }
  .nav-logo span {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 24px;
    letter-spacing: 0.25em;
    color: var(--white);
  }
  .nav-links { display: flex; gap: 36px; list-style: none; }
  .nav-links a {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--dim);
    text-decoration: none;
    transition: color 0.2s;
  }
  .nav-links a:hover { color: var(--accent-hi); }
  .nav-cta {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--accent-hi);
    background: transparent;
    border: 1px solid var(--accent);
    padding: 9px 22px;
    text-decoration: none;
    font-weight: 700;
    transition: all 0.2s;
  }
  .nav-cta:hover { background: var(--accent); color: var(--black); }

  /* HERO */
  .hero {
    min-height: 100vh;
    display: flex; flex-direction: column; justify-content: flex-end;
    padding: 0 60px 80px;
    position: relative; overflow: hidden;
  }
  .hero-hexgrid {
    position: absolute; inset: 0; pointer-events: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='100'%3E%3Cpath d='M28 0 L56 16 L56 50 L28 66 L0 50 L0 16Z' fill='none' stroke='rgba(107,124,58,0.07)' stroke-width='1'/%3E%3Cpath d='M28 66 L56 82 L56 116 L28 132 L0 116 L0 82Z' fill='none' stroke='rgba(107,124,58,0.07)' stroke-width='1'/%3E%3C/svg%3E");
    background-size: 56px 100px;
    mask-image: radial-gradient(ellipse 80% 80% at 65% 40%, black 0%, transparent 75%);
    animation: hexShift 30s linear infinite;
  }
  @keyframes hexShift { 0% { background-position: 0 0; } 100% { background-position: 56px 100px; } }

  .topo {
    position: absolute; inset: 0; pointer-events: none;
    background:
      radial-gradient(ellipse 55% 45% at 68% 35%, rgba(107,124,58,0.06) 0%, transparent 60%),
      radial-gradient(ellipse 30% 30% at 80% 60%, rgba(107,124,58,0.04) 0%, transparent 50%);
  }
  .scanline {
    position: absolute; left: 0; right: 0; height: 1px;
    background: linear-gradient(90deg, transparent 0%, var(--accent) 40%, var(--accent-hi) 50%, var(--accent) 60%, transparent 100%);
    opacity: 0.22;
    animation: scanMove 8s linear infinite;
  }
  @keyframes scanMove { 0% { top: -1px; } 100% { top: 100%; } }

  .reticle {
    position: absolute;
    width: 32px; height: 32px;
    border: 1px solid rgba(150,168,78,0.3);
    border-radius: 50%;
    animation: reticlePulse 4s ease-in-out infinite;
  }
  .reticle::before, .reticle::after {
    content: '';
    position: absolute; background: var(--accent-hi); opacity: 0.45;
  }
  .reticle::before { top: 50%; left: -8px; right: -8px; height: 1px; transform: translateY(-50%); }
  .reticle::after  { left: 50%; top: -8px; bottom: -8px; width: 1px; transform: translateX(-50%); }
  @keyframes reticlePulse {
    0%,100% { opacity: 0.35; transform: scale(1); }
    50% { opacity: 0.85; transform: scale(1.15); }
  }
  .reticle:nth-child(1) { top: 26%; left: 68%; animation-delay: 0s; width: 44px; height: 44px; }
  .reticle:nth-child(2) { top: 52%; left: 78%; animation-delay: 1.5s; }
  .reticle:nth-child(3) { top: 38%; left: 84%; animation-delay: 3s; width: 20px; height: 20px; }

  .coord-svg {
    position: absolute; inset: 0; pointer-events: none;
    width: 100%; height: 100%; overflow: visible; opacity: 0.12;
  }

  .hero-tag {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.35em;
    text-transform: uppercase;
    color: var(--accent-hi);
    margin-bottom: 20px;
    display: flex; align-items: center; gap: 14px;
    opacity: 0;
    animation: fadeUp 0.8s ease forwards 0.3s;
  }
  .hero-tag::before { content: ''; width: 26px; height: 1px; background: var(--accent-hi); }

  .hero-title {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(72px, 11vw, 160px);
    line-height: 0.9;
    letter-spacing: 0.025em;
    text-transform: uppercase;
    opacity: 0;
    animation: fadeUp 0.9s ease forwards 0.5s;
  }
  .hero-title .line-out { color: transparent; -webkit-text-stroke: 1px rgba(205,212,184,0.2); }
  .hero-title .acc { color: var(--accent-hi); }

  .hero-sub {
    max-width: 520px;
    font-size: 14px; line-height: 1.9; color: var(--dim);
    margin-top: 28px;
    border-left: 2px solid var(--accent);
    padding-left: 20px;
    opacity: 0;
    animation: fadeUp 0.9s ease forwards 0.7s;
  }
  .hero-sub strong { color: var(--white); font-weight: 400; }

  .hero-actions {
    display: flex; gap: 20px; align-items: center;
    margin-top: 44px;
    opacity: 0;
    animation: fadeUp 0.9s ease forwards 0.9s;
  }
  .btn-primary {
    font-family: 'Space Mono', monospace;
    font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; font-weight: 700;
    color: var(--black);
    background: var(--accent-hi);
    padding: 15px 34px;
    text-decoration: none;
    border: 1px solid transparent;
    transition: all 0.2s;
  }
  .btn-primary:hover { background: transparent; color: var(--accent-hi); border-color: var(--accent-hi); }
  .btn-secondary {
    font-family: 'Space Mono', monospace;
    font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase;
    color: var(--dim); text-decoration: none;
    display: flex; align-items: center; gap: 12px;
    transition: color 0.2s;
  }
  .btn-secondary::before { content: ''; width: 36px; height: 1px; background: currentColor; transition: width 0.3s; }
  .btn-secondary:hover { color: var(--accent-hi); }
  .btn-secondary:hover::before { width: 56px; }

  .hero-coords {
    position: absolute; right: 60px; bottom: 80px;
    font-family: 'Space Mono', monospace;
    font-size: 9px; letter-spacing: 0.15em; color: var(--dim);
    text-align: right; line-height: 2.2;
    opacity: 0;
    animation: fadeUp 1s ease forwards 1.2s;
  }

  @keyframes fadeUp {
    from { opacity: 0; transform: translateY(28px); }
    to { opacity: 1; transform: translateY(0); }
  }

  /* HUD BAR */
  .hud-bar {
    background: var(--panel);
    border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    display: flex;
  }
  .hud-item {
    flex: 1; padding: 28px 40px;
    border-right: 1px solid var(--border);
    position: relative; transition: background 0.25s;
  }
  .hud-item:last-child { border-right: none; }
  .hud-item:hover { background: var(--gray); }
  .hud-item::before {
    content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px;
    background: linear-gradient(90deg, var(--accent), var(--accent-hi));
    transform: scaleX(0); transform-origin: left; transition: transform 0.35s;
  }
  .hud-item:hover::before { transform: scaleX(1); }
  .hud-num {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 44px; color: var(--accent-hi); line-height: 1; letter-spacing: 0.05em;
  }
  .hud-label {
    font-family: 'Space Mono', monospace;
    font-size: 9px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--dim); margin-top: 6px;
  }

  /* SECTIONS */
  .section { padding: 120px 60px; }
  .section-label {
    font-family: 'Space Mono', monospace;
    font-size: 9px; letter-spacing: 0.4em; text-transform: uppercase;
    color: var(--accent-hi); margin-bottom: 20px;
    display: flex; align-items: center; gap: 14px;
  }
  .section-label::before { content: ''; width: 26px; height: 1px; background: var(--accent-hi); }

  /* INTRO */
  .intro-grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center;
  }
  .intro-title {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(44px, 6vw, 84px); line-height: 0.95; letter-spacing: 0.02em;
  }
  .intro-title .acc { color: var(--accent-hi); }
  .intro-body { font-size: 15px; line-height: 1.9; color: var(--dim); }
  .intro-body strong { color: var(--white); font-weight: 400; }
  .intro-body p + p { margin-top: 20px; }

  /* FEATURES */
  .features-header {
    display: flex; justify-content: space-between; align-items: flex-end; margin-bottom: 40px;
  }
  .features-title {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(44px, 5vw, 66px);
  }
  .features-title .acc { color: var(--accent-hi); }
  .features-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; }
  .feature-card {
    background: var(--panel); padding: 44px 36px;
    position: relative; overflow: hidden; transition: background 0.25s;
  }
  .feature-card::before {
    content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px;
    background: linear-gradient(90deg, var(--accent), var(--accent-hi));
    transform: scaleX(0); transform-origin: left; transition: transform 0.35s;
  }
  .feature-card:hover { background: #111508; }
  .feature-card:hover::before { transform: scaleX(1); }
  .feature-num {
    font-family: 'Space Mono', monospace;
    font-size: 9px; letter-spacing: 0.3em; color: var(--accent); opacity: 0.7; margin-bottom: 28px;
  }
  .feature-icon { width: 40px; height: 40px; margin-bottom: 20px; }
  .feature-title { font-size: 16px; font-weight: 500; margin-bottom: 12px; color: var(--white); }
  .feature-desc { font-size: 13px; line-height: 1.8; color: var(--dim); }

  /* MARKET */
  .market-section {
    background: var(--panel); padding: 120px 60px;
    position: relative; overflow: hidden;
    border-top: 1px solid var(--border); border-bottom: 1px solid var(--border);
  }
  .market-bg-text {
    position: absolute; right: -40px; top: 50%;
    transform: translateY(-50%) rotate(90deg);
    font-family: 'Bebas Neue', sans-serif; font-size: 240px;
    color: rgba(107,124,58,0.035); pointer-events: none; white-space: nowrap;
  }
  .market-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; position: relative; }
  .market-quote {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(34px, 4vw, 52px); line-height: 1.1;
    border-left: 3px solid var(--accent); padding-left: 28px; margin-top: 20px;
  }
  .market-quote .acc { color: var(--accent-hi); }
  .market-body { font-size: 14px; line-height: 1.85; color: var(--dim); margin-top: 28px; max-width: 420px; }
  .market-body strong { color: var(--white); font-weight: 400; }
  .market-sectors { display: flex; flex-direction: column; gap: 2px; }
  .sector {
    display: flex; justify-content: space-between; align-items: center;
    padding: 18px 24px; background: var(--gray);
    border: 1px solid var(--border);
    font-family: 'Space Mono', monospace; font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase;
    color: var(--dim); transition: all 0.2s; cursor: default;
  }
  .sector:hover { background: var(--border); color: var(--white); padding-left: 32px; border-color: var(--accent); }
  .sector-tag {
    font-size: 9px; color: var(--accent-hi);
    background: rgba(150,168,78,0.1); border: 1px solid rgba(150,168,78,0.2);
    padding: 3px 9px; letter-spacing: 0.15em;
  }

  /* IP SECTION */
  .ip-section {
    padding: 100px 60px;
    display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center;
  }
  .ip-badge {
    background: var(--panel); border: 1px solid var(--border); padding: 40px; position: relative;
  }
  .ip-badge::before {
    content: 'PROTECTED IP';
    position: absolute; top: -1px; left: 40px;
    background: var(--accent); color: var(--black);
    font-family: 'Space Mono', monospace; font-size: 9px; letter-spacing: 0.2em; font-weight: 700;
    padding: 4px 12px;
  }
  .ip-icon { margin-bottom: 24px; }
  .ip-text { font-size: 14px; line-height: 1.85; color: var(--dim); }
  .ip-text strong { color: var(--white); font-weight: 400; }

  /* CTA */
  .cta-section {
    padding: 140px 60px; text-align: center;
    position: relative; overflow: hidden;
    background: var(--gray); border-top: 1px solid var(--border);
  }
  .cta-section::before {
    content: ''; position: absolute; inset: 0;
    background: radial-gradient(ellipse 50% 60% at 50% 50%, rgba(107,124,58,0.07) 0%, transparent 70%);
  }
  .cta-title {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(56px, 8vw, 112px); line-height: 0.95; margin-bottom: 28px; position: relative;
  }
  .cta-title .outline { color: transparent; -webkit-text-stroke: 1px rgba(205,212,184,0.2); }
  .cta-sub { font-size: 15px; color: var(--dim); max-width: 440px; margin: 0 auto 44px; line-height: 1.8; position: relative; }
  .cta-form { display: flex; justify-content: center; gap: 0; max-width: 460px; margin: 0 auto; position: relative; }
  .cta-input {
    flex: 1; background: var(--black); border: 1px solid var(--border2); border-right: none;
    color: var(--white); font-family: 'Space Mono', monospace; font-size: 11px;
    padding: 14px 18px; outline: none; transition: border-color 0.2s; letter-spacing: 0.05em;
  }
  .cta-input::placeholder { color: var(--dim); }
  .cta-input:focus { border-color: var(--accent-hi); }
  .cta-btn {
    background: var(--accent); color: var(--black);
    border: 1px solid var(--accent);
    font-family: 'Space Mono', monospace; font-size: 10px; font-weight: 700;
    letter-spacing: 0.2em; text-transform: uppercase;
    padding: 14px 26px; cursor: pointer; transition: all 0.2s;
  }
  .cta-btn:hover { background: var(--accent-hi); border-color: var(--accent-hi); }

  /* FOOTER */
  footer {
    padding: 36px 60px; border-top: 1px solid var(--border);
    display: flex; justify-content: space-between; align-items: center;
    background: var(--black);
  }
  .footer-left { display: flex; align-items: center; gap: 12px; }
  .footer-left img { height: 32px; opacity: 0.6; }
  .footer-copy {
    font-family: 'Space Mono', monospace;
    font-size: 9px; letter-spacing: 0.18em; color: var(--dim); text-transform: uppercase;
  }
  .footer-links { display: flex; gap: 28px; }
  .footer-links a {
    font-family: 'Space Mono', monospace; font-size: 9px; letter-spacing: 0.18em;
    text-transform: uppercase; color: var(--dim); text-decoration: none; transition: color 0.2s;
  }
  .footer-links a:hover { color: var(--accent-hi); }


  /* DRONE HERO IMAGE */
  .hero-drone-img {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    pointer-events: none;
  }
  .hero-drone-img img {
    width: 100%; height: 100%;
    object-fit: cover; object-position: center 40%;
    opacity: 0.18;
    filter: sepia(0.4) hue-rotate(48deg) saturate(0.5);
    mix-blend-mode: luminosity;
  }
  .hero-drone-overlay {
    position: absolute; inset: 0;
    background: linear-gradient(
      to bottom,
      rgba(24,30,14,0.3) 0%,
      rgba(24,30,14,0.1) 40%,
      rgba(24,30,14,0.85) 100%
    );
  }

  /* MAP CONTAINER */
  .map-container {
    margin-top: 60px;
    width: 90%;
    margin-left: auto;
    margin-right: auto;
    position: relative;
    border: 1px solid var(--border);
    overflow: hidden;
  }
  .map-label {
    position: absolute; top: 0; left: 0; right: 0;
    font-family: 'Space Mono', monospace;
    font-size: 9px; letter-spacing: 0.3em; text-transform: uppercase;
    color: var(--accent-hi);
    background: rgba(24,30,14,0.85);
    padding: 8px 16px;
    border-bottom: 1px solid var(--border);
    z-index: 2;
  }
  .map-container img {
    width: 100%; height: 400px; object-fit: cover; object-position: center;
    display: block;
    filter: sepia(0.3) hue-rotate(48deg) saturate(0.6) brightness(0.75);
    transition: filter 0.4s;
  }
  .map-container:hover img {
    filter: sepia(0.3) hue-rotate(48deg) saturate(0.8) brightness(0.9);
  }
  /* Scan overlay on map */
  .map-container::after {
    content: '';
    position: absolute; inset: 0;
    background: repeating-linear-gradient(
      0deg,
      transparent,
      transparent 3px,
      rgba(0,0,0,0.06) 3px,
      rgba(0,0,0,0.06) 4px
    );
    pointer-events: none;
  }

  /* REVEAL */
  .reveal {
    opacity: 0; transform: translateY(32px);
    transition: opacity 0.75s ease, transform 0.75s ease;
  }
  .reveal.visible { opacity: 1; transform: none; }

  @media (max-width: 900px) {
    nav { padding: 16px 20px; }
    .nav-links, .nav-cta { display: none; }
    .hero, .section, .market-section, .ip-section, .cta-section { padding-left: 20px; padding-right: 20px; }
    .intro-grid, .market-grid, .ip-section { grid-template-columns: 1fr; gap: 40px; }
    .features-grid { grid-template-columns: 1fr; }
    .hud-bar { flex-direction: column; }
    .hud-item { border-right: none; border-bottom: 1px solid var(--border); }
    footer { flex-direction: column; gap: 20px; text-align: center; }
    .hero-coords { display: none; }
  }
/* ── COOKIE CONSENT ── */
.cookie-consent {
  position: fixed;
  bottom: 28px; right: 28px;
  z-index: 9000;
  width: 320px;
  background: var(--panel);
  border: 1px solid var(--border2);
  border-left: 3px solid var(--accent-hi);
  padding: 24px 24px 20px;
  box-shadow: 0 8px 40px rgba(0,0,0,0.5);
  transform: translateY(120%);
  opacity: 0;
  transition: transform 0.4s cubic-bezier(0.16,1,0.3,1), opacity 0.4s ease;
}
.cookie-consent.visible {
  transform: translateY(0);
  opacity: 1;
}
.cookie-consent-label {
  font-family: 'Space Mono', monospace;
  font-size: 9px; letter-spacing: 0.3em; text-transform: uppercase;
  color: var(--accent-hi); margin-bottom: 10px;
  display: flex; align-items: center; gap: 8px;
}
.cookie-consent-label::before {
  content: ''; width: 16px; height: 1px; background: var(--accent-hi);
}
.cookie-consent p {
  font-size: 12px; line-height: 1.75; color: var(--dim); margin-bottom: 18px;
}
.cookie-consent p a {
  color: var(--accent-hi); text-decoration: none;
}
.cookie-consent p a:hover { text-decoration: underline; }
.cookie-btn-row {
  display: flex; gap: 8px;
}
.cookie-btn-accept {
  flex: 1;
  font-family: 'Space Mono', monospace;
  font-size: 10px; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--black); background: var(--accent-hi);
  border: 1px solid var(--accent-hi);
  padding: 10px 0; cursor: pointer; transition: all 0.2s;
}
.cookie-btn-accept:hover { background: var(--accent); border-color: var(--accent); }
.cookie-btn-decline {
  font-family: 'Space Mono', monospace;
  font-size: 10px; letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--dim); background: transparent;
  border: 1px solid var(--border2);
  padding: 10px 14px; cursor: pointer; transition: all 0.2s;
}
.cookie-btn-decline:hover { color: var(--white); border-color: var(--dim); }
