/* =========================================================
   UNLOCK ICT — Design System
   Palette drawn from the brand mark: deep signal-indigo base,
   a brass/gold accent (official, government-grade trust),
   a circuit-teal accent (data, networking, live signal).
   Type: Space Grotesk (display) + IBM Plex Sans (body) +
   IBM Plex Mono (labels/data — the "schematic" voice).
   ========================================================= */

:root{
  --ink:        #060a26;
  --indigo:     #0c1240;
  --indigo-2:   #121a52;
  --indigo-3:   #1b2568;
  --line:       rgba(212,169,74,0.18);
  --gold:       #d4a94a;
  --gold-soft:  #e8c877;
  --teal:       #3ed6b5;
  --paper:      #f6f3ea;
  --paper-2:    #efeadb;
  --charcoal:   #171a2c;
  --ink-soft:   #aab0d6;
  --ink-faint:  rgba(170,176,214,0.55);

  --font-display: 'Space Grotesk', sans-serif;
  --font-body: 'IBM Plex Sans', sans-serif;
  --font-mono: 'IBM Plex Mono', monospace;

  --radius: 14px;
  --radius-sm: 8px;
  --container: 1200px;
  --ease: cubic-bezier(.16,.84,.44,1);
}

*{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  margin:0;
  background: var(--ink);
  color: var(--paper);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
@media (prefers-reduced-motion: reduce){
  *{ animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior:auto !important; }
}

h1,h2,h3,h4{
  font-family: var(--font-display);
  color: #fff;
  font-weight: 600;
  letter-spacing: -0.01em;
  margin: 0 0 .5em;
}
h1{ font-size: clamp(2.4rem, 5vw, 4rem); line-height: 1.05; letter-spacing: -0.02em; }
h2{ font-size: clamp(1.8rem, 3.4vw, 2.6rem); line-height: 1.15; }
h3{ font-size: 1.3rem; }
p{ margin: 0 0 1em; }
a{ color: inherit; text-decoration: none; }
img{ max-width: 100%; display:block; }

.container{ max-width: var(--container); margin:0 auto; padding: 0 clamp(1.25rem, 4vw, 2.5rem); }

/* ---------- utility / label voice (mono) ---------- */
.eyebrow{
  font-family: var(--font-mono);
  font-size: .78rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--teal);
  display:flex; align-items:center; gap:.6em;
  margin-bottom: .9em;
}
.eyebrow::before{
  content:"";
  width:22px; height:1px; background: var(--teal);
  display:inline-block;
}
.eyebrow.on-light{ color:#9c7a1e; }
.eyebrow.on-light::before{ background:#9c7a1e; }

.mono-tag{
  font-family: var(--font-mono);
  font-size: .72rem;
  letter-spacing: .1em;
  color: var(--ink-faint);
}

.lede{ color: var(--ink-soft); font-size: 1.08rem; max-width: 60ch; }
.section-pad{ padding: clamp(4rem, 8vw, 7rem) 0; }

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:.55em;
  font-family: var(--font-mono);
  font-size: .82rem;
  letter-spacing: .05em;
  text-transform: uppercase;
  padding: .95em 1.6em;
  border-radius: 999px;
  border: 1px solid transparent;
  cursor:pointer;
  transition: transform .35s var(--ease), background .3s, border-color .3s, color .3s;
  white-space: nowrap;
}
.btn:hover{ transform: translateY(-2px); }
.btn-gold{ background: var(--gold); color: var(--ink); }
.btn-gold:hover{ background: var(--gold-soft); color: var(--ink); }
.btn-outline{ border-color: rgba(255,255,255,0.28); color:#fff; }
.btn-outline:hover{ border-color: var(--teal); color: var(--teal); }
.btn-dark{ background: var(--charcoal); color:#fff; border-color: var(--charcoal); }
.btn-dark:hover{ background: var(--ink); }
.btn-sm{ padding:.7em 1.2em; font-size:.72rem; }

/* ---------- navbar ---------- */
.site-nav{
  position: fixed; top:0; left:0; right:0; z-index: 900;
  padding: .9rem 0;
  background: rgba(6,10,38,0.72);
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  border-bottom: 1px solid rgba(255,255,255,0.06);
  transition: padding .3s var(--ease), background .3s;
}
.site-nav.scrolled{ padding: .5rem 0; background: rgba(6,10,38,0.92); }
.site-nav .container{ display:flex; align-items:center; justify-content:space-between; gap:1.5rem; }

.brand{ display:flex; align-items:center; gap:.7rem; }
.brand img{ height:38px; width:auto; border-radius:6px; }
.brand-text{ font-family: var(--font-display); font-weight:600; color:#fff; line-height:1.05; font-size: 1.02rem;}
.brand-text span{ display:block; font-family: var(--font-mono); font-weight:400; font-size:.62rem; letter-spacing:.18em; color: var(--teal); text-transform:uppercase; margin-top:.15em;}

.nav-links{ display:flex; align-items:center; gap: clamp(1rem, 2vw, 2.1rem); list-style:none; margin:0; padding:0; }
.nav-links a{
  font-family: var(--font-mono); font-size:.78rem; letter-spacing:.06em; text-transform:uppercase;
  color: var(--ink-soft); position:relative; padding:.3em 0;
  transition: color .25s;
}
.nav-links a::after{
  content:""; position:absolute; left:0; bottom:-2px; width:0; height:1px; background: var(--teal);
  transition: width .3s var(--ease);
}
.nav-links a:hover, .nav-links a.active{ color:#fff; }
.nav-links a:hover::after, .nav-links a.active::after{ width:100%; }

.nav-cta{ display:flex; align-items:center; gap:.9rem; }
.nav-phone{ font-family: var(--font-mono); font-size:.8rem; color:#fff; display:flex; align-items:center; gap:.5em;}
.nav-phone .dot{ width:7px; height:7px; border-radius:50%; background: var(--teal); box-shadow: 0 0 0 0 rgba(62,214,181,.6); animation: pulse-dot 2.2s infinite; }

.nav-toggle{ display:none; background:none; border:0; color:#fff; font-size:1.5rem; cursor:pointer; }

@media (max-width: 991px){
  .nav-links{
    position:fixed; inset:0 0 0 auto; top:0; height:100vh; height:100dvh; width:min(78vw,320px);
    background: var(--indigo); flex-direction:column; justify-content:center; align-items:flex-start;
    padding: 2rem 2.2rem; gap: 1.6rem;
    transform: translateX(100%); transition: transform .4s var(--ease);
    box-shadow: -20px 0 60px rgba(0,0,0,.4);
    z-index: 999;
  }
  .nav-links.open{ transform: translateX(0); }
  .nav-links a{ font-size: .95rem; }
  .nav-toggle{ display:block; z-index: 1000; position:relative; }
  .nav-phone{ display:none; }
  .brand-text span{ display:none; }
}

@media (max-width: 560px){
  .nav-cta .btn{ padding:.6em .95em; font-size:.68rem; }
  .brand img{ height:32px; }
}

@media (max-width: 400px){
  .nav-cta{ display:none; }
}

/* ---------- tech background utility ---------- */
/* Applies a dimmed photographic tech texture behind a section, with a
   gradient wash so text stays legible and it reads as atmosphere, not noise. */
.tech-bg{
  position: relative;
  isolation: isolate;
  background-color: var(--ink);
}
.tech-bg::before{
  content:"";
  position:absolute; inset:0; z-index:-2;
  background-image: var(--tech-img, url('../img/hero-office.jpg'));
  background-size: cover;
  background-position: center;
  filter: saturate(1.05) contrast(1.05);
}
.tech-bg::after{
  content:"";
  position:absolute; inset:0; z-index:-1;
  background: var(--tech-wash, linear-gradient(180deg, rgba(6,10,38,.94) 0%, rgba(6,10,38,.88) 40%, rgba(6,10,38,.96) 100%));
}
.tech-bg.tech-bg--screens{ --tech-img: url('../img/tech-screens.jpg'); }
.tech-bg.tech-bg--band{ --tech-wash: linear-gradient(180deg, rgba(6,10,38,.9), rgba(12,18,64,.86), rgba(6,10,38,.94)); }
.tech-bg .hero-grid{ z-index:-1; opacity:.6; }

/* ---------- circuit / signature elements ---------- */
.circuit-field{ position:absolute; inset:0; z-index:0; pointer-events:none; overflow:hidden; }
.circuit-field canvas{ width:100%; height:100%; display:block; opacity:.55; }

.node-dot{
  width:9px; height:9px; border-radius:50%; background: var(--teal);
  box-shadow: 0 0 0 0 rgba(62,214,181,.65);
  animation: pulse-dot 2.6s infinite;
  flex:0 0 auto;
}
@keyframes pulse-dot{
  0%{ box-shadow: 0 0 0 0 rgba(62,214,181,.55); }
  70%{ box-shadow: 0 0 0 10px rgba(62,214,181,0); }
  100%{ box-shadow: 0 0 0 0 rgba(62,214,181,0); }
}

.trace-line{
  width:100%; height:1px; background: linear-gradient(90deg, rgba(212,169,74,0) 0%, rgba(212,169,74,.55) 50%, rgba(212,169,74,0) 100%);
  position:relative; margin: 3.2rem 0;
}
.trace-line .node-dot{ position:absolute; top:-4px; left:0; }
.trace-line .node-dot.right{ left:auto; right:0; background:var(--gold); box-shadow:none; animation:none; }

/* ---------- hero ---------- */
.hero{
  position:relative;
  min-height: 100svh;
  display:flex; align-items:center;
  padding-top: 7rem;
  background:
    radial-gradient(ellipse 60% 50% at 78% 18%, rgba(62,214,181,0.10), transparent 60%),
    radial-gradient(ellipse 55% 45% at 15% 85%, rgba(212,169,74,0.10), transparent 60%),
    linear-gradient(180deg, var(--ink) 0%, var(--indigo) 100%);
  overflow:hidden;
}
.hero-grid{ position:absolute; inset:0; background-image: linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px); background-size: 46px 46px; mask-image: radial-gradient(ellipse 70% 70% at 60% 40%, black 10%, transparent 75%); }
.hero-inner{ position:relative; z-index:2; display:grid; grid-template-columns: 1.15fr .85fr; gap: 3rem; align-items:center; }
@media (max-width: 991px){ .hero-inner{ grid-template-columns:1fr; } }

.hero-badge{
  display:inline-flex; align-items:center; gap:.6em;
  font-family: var(--font-mono); font-size:.74rem; letter-spacing:.12em; text-transform:uppercase;
  color: var(--gold-soft); border:1px solid rgba(212,169,74,.35); border-radius: 999px;
  padding:.5em 1em; margin-bottom:1.6rem; background: rgba(212,169,74,.06);
}
.hero h1{ margin-bottom:.55em; }
.hero h1 em{ font-style:normal; color: var(--teal); }
.hero-actions{ display:flex; flex-wrap:wrap; gap:1rem; margin-top:2.1rem; }

.hero-stats{ display:flex; gap: 2.4rem; margin-top: 3.2rem; flex-wrap:wrap; }
.hero-stats .stat b{ display:block; font-family: var(--font-display); font-size:1.9rem; color:#fff; }
.hero-stats .stat span{ font-family: var(--font-mono); font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-faint); }

/* hero visual panel — schematic device card */
.hero-panel{
  position:relative; border:1px solid rgba(255,255,255,.1); border-radius: var(--radius);
  background: linear-gradient(160deg, rgba(255,255,255,.05), rgba(255,255,255,.015));
  padding: 1.6rem; backdrop-filter: blur(6px);
}
.hero-panel .panel-head{ display:flex; justify-content:space-between; align-items:center; font-family:var(--font-mono); font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:1.2rem;}
.hero-panel .panel-head .dots{ display:flex; gap:6px;}
.hero-panel .panel-head .dots i{ width:8px; height:8px; border-radius:50%; background: rgba(255,255,255,.18); display:block;}
.hero-panel img{ border-radius: var(--radius-sm); }
.hero-panel-caption{ margin-top:1.1rem; font-family:var(--font-mono); font-size:.72rem; color:var(--ink-faint); display:flex; justify-content:space-between;}

/* ---------- section headers ---------- */
.section-head{ max-width: 720px; margin-bottom: 3rem; }
.section-head.center{ margin-left:auto; margin-right:auto; text-align:center; }

/* ---------- cards ---------- */
.card-dark{
  background: linear-gradient(160deg, var(--indigo-2), var(--indigo));
  border: 1px solid rgba(255,255,255,.07);
  border-radius: var(--radius);
  padding: 2rem;
  transition: transform .4s var(--ease), border-color .3s, background .3s;
  position:relative;
}
.card-dark:hover{ transform: translateY(-6px); border-color: rgba(212,169,74,.35); }
.card-dark .card-index{ font-family: var(--font-mono); font-size:.72rem; color: var(--teal); letter-spacing:.1em; }
.card-dark .card-icon{
  width:52px; height:52px; border-radius: 12px; display:flex; align-items:center; justify-content:center;
  background: rgba(212,169,74,.1); border:1px solid rgba(212,169,74,.25); color: var(--gold-soft);
  font-size:1.35rem; margin: 1rem 0 1.3rem;
}
.card-dark h3{ margin-bottom:.5em; }
.card-dark p{ color: var(--ink-soft); font-size:.95rem; margin-bottom: 0; }
.card-dark .card-more{ display:inline-flex; align-items:center; gap:.4em; margin-top:1.2rem; font-family:var(--font-mono); font-size:.74rem; color: var(--gold-soft); letter-spacing:.06em; text-transform:uppercase;}

.services-grid{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
@media (max-width: 991px){ .services-grid{ grid-template-columns: repeat(2,1fr);} }
@media (max-width: 640px){ .services-grid{ grid-template-columns: 1fr;} }

/* ---------- light section ---------- */
.section-light{ background: var(--paper); color: var(--charcoal); }
.section-light h2, .section-light h3, .section-light h1{ color: var(--charcoal); }
.section-light .lede{ color:#5a5a4f; }
.section-light .eyebrow{ color:#9c7a1e; }
.section-light .eyebrow::before{ background:#9c7a1e; }

/* ---------- partner strip ---------- */
.partner-strip{ display:flex; flex-wrap:wrap; gap: 1rem; }
.partner-chip{
  display:flex; align-items:center; gap:.8em;
  border:1px solid rgba(255,255,255,.12); border-radius: 999px; padding:.7em 1.3em;
  font-family: var(--font-mono); font-size:.78rem; letter-spacing:.03em; color: var(--ink-soft);
}
.partner-chip b{ color:#fff; font-weight:500; }
.partner-chip .node-dot{ width:6px; height:6px; }

/* ---------- footer ---------- */
.site-footer{ background: var(--ink); border-top: 1px solid rgba(255,255,255,.07); padding: 4rem 0 2rem; }
.footer-grid{ display:grid; grid-template-columns: 1.4fr .8fr .8fr 1fr; gap: 2.5rem; }
@media (max-width: 900px){ .footer-grid{ grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px){ .footer-grid{ grid-template-columns: 1fr; } }
.footer-grid h4{ font-family: var(--font-mono); font-size:.74rem; letter-spacing:.12em; text-transform:uppercase; color: var(--teal); margin-bottom:1.2rem; font-weight:500; }
.footer-links{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.7rem; }
.footer-links a{ color: var(--ink-soft); font-size:.92rem; transition:color .25s; }
.footer-links a:hover{ color: var(--gold-soft); }
.footer-bottom{ margin-top:3rem; padding-top:1.8rem; border-top:1px solid rgba(255,255,255,.06); display:flex; justify-content:space-between; flex-wrap:wrap; gap:1rem; font-family: var(--font-mono); font-size:.72rem; color: var(--ink-faint); }

/* ---------- whatsapp float ---------- */
.wa-float{
  position: fixed; right: 1.4rem; bottom: 1.4rem; z-index: 950;
  display:flex; align-items:center; gap:.7em;
}
.wa-float .wa-btn{
  width:60px; height:60px; border-radius:50%;
  background: linear-gradient(160deg,#25D366,#1ebc59);
  display:flex; align-items:center; justify-content:center;
  box-shadow: 0 10px 30px rgba(37,211,102,.4), 0 0 0 0 rgba(37,211,102,.6);
  animation: wa-pulse 2.8s infinite;
  color:#fff; font-size:1.7rem; cursor:pointer; border:none;
  transition: transform .3s var(--ease);
}
.wa-float .wa-btn:hover{ transform: scale(1.08); }
@keyframes wa-pulse{
  0%{ box-shadow: 0 10px 30px rgba(37,211,102,.35), 0 0 0 0 rgba(37,211,102,.5);}
  70%{ box-shadow: 0 10px 30px rgba(37,211,102,.35), 0 0 0 14px rgba(37,211,102,0);}
  100%{ box-shadow: 0 10px 30px rgba(37,211,102,.35), 0 0 0 0 rgba(37,211,102,0);}
}
.wa-tooltip{
  font-family: var(--font-mono); font-size:.74rem; background: var(--charcoal); color:#fff;
  padding:.55em .9em; border-radius: 8px; white-space:nowrap;
  opacity:0; transform: translateX(6px); transition: opacity .3s, transform .3s; pointer-events:none;
}
.wa-float:hover .wa-tooltip{ opacity:1; transform:translateX(0); }

/* ---------- misc: reveal on scroll ---------- */
.reveal{ opacity:0; transform: translateY(26px); transition: opacity .8s var(--ease), transform .8s var(--ease); }
.reveal.in{ opacity:1; transform:none; }

/* ---------- page header (inner pages) ---------- */
.page-header{
  position:relative; padding: 9.5rem 0 4.5rem; overflow:hidden;
  background: linear-gradient(180deg, var(--ink), var(--indigo));
}
.page-header .container{ position:relative; z-index:2; }
.breadcrumb{ font-family: var(--font-mono); font-size:.75rem; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-faint); margin-bottom:1.1rem;}
.breadcrumb a{ color: var(--teal); }

/* ---------- timeline (about) ---------- */
.timeline{ position:relative; padding-left: 2.4rem; border-left: 1px solid rgba(255,255,255,.12); }
.timeline-item{ position:relative; padding-bottom: 2.6rem; }
.timeline-item:last-child{ padding-bottom:0; }
.timeline-item::before{
  content:""; position:absolute; left:-2.53rem; top:.35rem; width:11px; height:11px; border-radius:50%;
  background: var(--gold); box-shadow: 0 0 0 4px rgba(212,169,74,.15);
}
.timeline-item .yr{ font-family: var(--font-mono); color: var(--teal); font-size:.85rem; letter-spacing:.08em; }

/* ---------- team / value cards ---------- */
.value-card{ padding: 1.9rem; border-radius: var(--radius); background: rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.07); }
.value-card .n{ font-family: var(--font-mono); color: var(--gold-soft); font-size:.8rem; }

/* ---------- ceo section ---------- */
.ceo-card{
  display:grid; grid-template-columns: .55fr 1fr; gap: 2.8rem; align-items:center;
  background: linear-gradient(160deg, var(--indigo-2), var(--ink)); border:1px solid rgba(255,255,255,.08);
  border-radius: var(--radius); padding: 2.6rem;
}
@media (max-width: 850px){ .ceo-card{ grid-template-columns:1fr; } }
.ceo-portrait{ position:relative; border-radius: var(--radius-sm); overflow:hidden; aspect-ratio: 4/5; background: linear-gradient(160deg, var(--indigo-3), var(--ink)); display:flex; align-items:center; justify-content:center; border:1px solid rgba(255,255,255,.08); }
.ceo-portrait .initials{ font-family: var(--font-display); font-size: 4.5rem; color: rgba(255,255,255,.14); }
.ceo-quote{ font-family: var(--font-display); font-size: 1.35rem; color:#fff; line-height:1.45; font-weight:400; }
.ceo-name{ margin-top:1.3rem; font-family: var(--font-mono); font-size:.85rem; color: var(--teal); letter-spacing:.03em; }
.ceo-role{ color: var(--ink-faint); font-size:.8rem; }

/* ---------- table (services detail) ---------- */
.capability-list{ list-style:none; margin: 1.2rem 0 0; padding:0; display:grid; gap:.7rem; }
.capability-list li{ display:flex; gap:.7em; align-items:flex-start; color: var(--ink-soft); font-size:.94rem; }
.capability-list li::before{ content:"—"; color: var(--teal); flex:0 0 auto; }

/* ---------- contact page ---------- */
.contact-grid{ display:grid; grid-template-columns: .9fr 1.1fr; gap: 3rem; }
@media (max-width: 950px){ .contact-grid{ grid-template-columns:1fr; } }
.info-row{ display:flex; gap:1rem; padding: 1.3rem 0; border-bottom: 1px solid rgba(255,255,255,.08); }
.info-row .ic{ width:42px; height:42px; border-radius:10px; background: rgba(62,214,181,.1); border:1px solid rgba(62,214,181,.25); color: var(--teal); display:flex; align-items:center; justify-content:center; flex:0 0 auto; }
.info-row h4{ font-size:.95rem; margin-bottom:.2em; color:#fff; font-family: var(--font-body); font-weight:600;}
.info-row p{ margin:0; color: var(--ink-soft); font-size:.9rem;}

.form-panel{ background: var(--indigo-2); border:1px solid rgba(255,255,255,.08); border-radius: var(--radius); padding: 2.2rem; }
.form-control-x{
  width:100%; background: rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.12); border-radius: var(--radius-sm);
  padding: .9em 1em; color:#fff; font-family: var(--font-body); font-size:.95rem; margin-bottom: 1.1rem;
  transition: border-color .25s, background .25s;
}
.form-control-x:focus{ outline:none; border-color: var(--teal); background: rgba(255,255,255,.06); }
.form-control-x::placeholder{ color: var(--ink-faint); }
label.form-label-x{ font-family: var(--font-mono); font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-faint); display:block; margin-bottom:.5em; }
.form-msg{ display:none; font-family: var(--font-mono); font-size:.85rem; padding: 1em 1.2em; border-radius: var(--radius-sm); margin-bottom:1.2rem; }
.form-msg.success{ background: rgba(62,214,181,.12); border:1px solid rgba(62,214,181,.35); color: var(--teal); }

.map-frame{ border-radius: var(--radius); overflow:hidden; border:1px solid rgba(255,255,255,.1); filter: grayscale(.3) contrast(1.05); }

/* ---------- cta banner ---------- */
.cta-banner{
  position:relative; isolation:isolate; border-radius: 24px; overflow:hidden; padding: clamp(2.6rem,6vw,4.5rem);
  text-align:center; border: 1px solid rgba(212,169,74,.25);
}
.cta-banner::before{
  content:""; position:absolute; inset:0; z-index:-2;
  background-image: url('../img/tech-screens.jpg');
  background-size: cover; background-position: center 30%;
}
.cta-banner::after{
  content:""; position:absolute; inset:0; z-index:-1;
  background: linear-gradient(135deg, rgba(27,37,104,.93), rgba(12,18,64,.93));
}
.cta-banner h2{ margin-bottom:.4em; }

/* scroll to top not needed; keep lean */

/* back-compat helpers */
.text-teal{ color: var(--teal); }
.text-gold{ color: var(--gold-soft); }
