/* ============================================================
   NUMOIE CORE — Silver Terminal / Sapphire Quartz design system
   Shared across every page. Page-specific CSS lives in its own file.
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{max-width:100%;overflow-x:hidden}

:root{
  color-scheme: dark;
  --bg-app:#121315;
  --text-primary:#B0B5BC;
  --text-secondary:#8A8F98;
  --border-subtle:rgba(176,181,188,0.14);
  --border-strong:rgba(176,181,188,0.28);
  --container-navy:#0B162C;
  --text-on-navy:#FFFFFF;
  --accent-glint:linear-gradient(135deg,#E0F2FE,#FFFFFF);
  --accent-glint-solid:#E0F2FE;
  --accent-ink:#0B162C;
  --danger:#e5788a;
  --success:#8fd6b0;
  --ff:'Plus Jakarta Sans',Inter,system-ui,-apple-system,sans-serif;
  --nav:64px;
  --radius:14px;
}
html[data-theme="light"]{
  color-scheme: light;
  --bg-app:#FFFFFF;
  --text-primary:#10306B;
  --text-secondary:#5B6B8C;
  --border-subtle:rgba(16,48,107,0.12);
  --border-strong:rgba(16,48,107,0.22);
  --container-navy:#0B162C;
  --text-on-navy:#FFFFFF;
}

html{scroll-behavior:smooth}
body{font-family:var(--ff);background:var(--bg-app);color:var(--text-primary);width:100%;transition:background .35s ease,color .35s ease}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
button{font-family:inherit}
::selection{background:var(--accent-glint-solid);color:#0B162C}

.container{max-width:1200px;margin:0 auto;padding:0 24px}
@media (max-width:768px){ .container{padding:0 16px} }
@media (max-width:380px){ .container{padding:0 14px} }

section{padding:96px 0}
@media (max-width:768px){ section{padding:56px 0} }

.eyebrow{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--text-secondary);margin-bottom:12px;display:inline-flex;align-items:center;gap:8px}
.eyebrow::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--accent-glint-solid);box-shadow:0 0 0 3px rgba(224,242,254,.15);flex-shrink:0;animation:livePulse 2.2s ease-in-out infinite}
@keyframes livePulse{0%,100%{opacity:1}50%{opacity:.35}}
@media (prefers-reduced-motion: reduce){ .eyebrow::before{animation:none} }

/* ============ FEED ENTRANCE (tab switches, live row updates) ============ */
@keyframes feedIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.feed-in{animation:feedIn .35s ease-out both}
@media (prefers-reduced-motion: reduce){ .feed-in{animation:none} }

h1,h2,h3,h4{font-family:var(--ff);color:var(--text-primary);font-weight:700;letter-spacing:-0.02em}
.section-head{max-width:640px;margin-bottom:44px}
.section-head h2{font-size:clamp(26px,4vw,42px);letter-spacing:-0.03em;line-height:1.1;margin-bottom:14px}
.section-head p{font-size:15.5px;color:var(--text-secondary);line-height:1.65}
@media (max-width:768px){ .section-head{margin-bottom:32px} }

/* ============ BUTTONS ============ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:13.5px;font-weight:600;
  border-radius:9px;padding:11px 20px;cursor:pointer;transition:all .2s;white-space:nowrap;border:1px solid transparent}
.btn-quiet{background:transparent;color:var(--text-primary);border-color:var(--border-strong)}
.btn-quiet:hover{border-color:var(--text-secondary)}
.btn-accent{background:var(--accent-glint-solid);color:var(--accent-ink);font-weight:700}
.btn-accent:hover{transform:translateY(-1px);box-shadow:0 8px 20px -8px rgba(224,242,254,.5), 0 1px 0 rgba(255,255,255,.4) inset}
.btn-accent:active{transform:translateY(0)}

/* ============ NAV ============ */
.nav{position:fixed;top:0;left:0;right:0;z-index:1000;height:var(--nav);
  display:flex;align-items:center;background:transparent;border-bottom:1px solid transparent;transition:background .3s,border-color .3s}
.nav.stuck{background:color-mix(in srgb, var(--bg-app) 88%, transparent);backdrop-filter:blur(16px) saturate(140%);border-bottom-color:var(--border-subtle)}
.nav-inner{width:100%;max-width:1200px;margin:0 auto;padding:0 24px;display:flex;align-items:center;gap:0}
@media (max-width:768px){ .nav-inner{padding:0 16px} }
.nav-brand{display:flex;align-items:center;gap:10px;flex-shrink:0}
.nav-brand img{width:26px;height:26px;border-radius:6px}
.nav-brand span{font-size:16px;font-weight:700;letter-spacing:-0.02em;color:var(--text-primary)}
.nav-links{flex:1;display:flex;align-items:center;justify-content:center;gap:28px;min-width:0}
.nav-links a{font-size:13.5px;font-weight:500;color:var(--text-secondary);transition:color .2s;white-space:nowrap}
.nav-links a:hover,.nav-links a.active{color:var(--text-primary)}
.nav-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}
.theme-toggle{width:34px;height:34px;border-radius:8px;border:1px solid var(--border-subtle);background:transparent;
  display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary);transition:all .2s;flex-shrink:0}
.theme-toggle:hover{color:var(--text-primary);border-color:var(--border-strong)}
.theme-toggle svg{width:16px;height:16px}
#hbg{display:none;background:none;border:1px solid var(--border-subtle);border-radius:8px;cursor:pointer;padding:8px;
  flex-direction:column;gap:4px;flex-shrink:0}
#hbg span{display:block;width:16px;height:1.5px;background:var(--text-secondary);border-radius:2px}
.drawer{display:none;position:fixed;inset:0;top:var(--nav);z-index:999;background:var(--bg-app);
  flex-direction:column;padding:28px 20px;gap:0;overflow-y:auto;-webkit-overflow-scrolling:touch}
.drawer.open{display:flex}
.drawer a{font-size:18px;font-weight:600;color:var(--text-primary);padding:15px 4px;border-bottom:1px solid var(--border-subtle)}
.drawer .btn{margin-top:18px;width:100%}

@media (max-width:940px){
  .nav-links{display:none}
  #hbg{display:flex}
  .nav-actions{margin-left:auto}
  .nav-actions .btn-quiet{display:none}
}

/* ============ TICKER ============ */
.ticker-bar{border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);overflow:hidden;padding:14px 0}
.ticker-inner{display:flex;gap:40px;width:max-content;animation:tick 38s linear infinite}
.ticker-inner span{font-size:12.5px;color:var(--text-secondary);white-space:nowrap;display:flex;align-items:center;gap:8px}
.ticker-inner span b{color:var(--text-primary);font-weight:600}
@keyframes tick{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}

/* ============ TESTIMONIALS (shared: index + about) ============ */
.testi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--border-subtle)}
@media (max-width:860px){ .testi-grid{grid-template-columns:1fr} }
.testi-cell{padding:32px 28px;border-right:1px solid var(--border-subtle)}
.testi-cell:last-child{border-right:none}
@media (max-width:860px){ .testi-cell{border-right:none;padding:28px 4px;border-bottom:1px solid var(--border-subtle)} .testi-cell:last-child{border-bottom:none} }
.testi-quote{font-size:14.5px;line-height:1.75;color:var(--text-primary);margin-bottom:20px}
.testi-author{display:flex;align-items:center;gap:10px}
.testi-av{width:32px;height:32px;border-radius:50%;border:1px solid var(--border-strong);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--text-primary);flex-shrink:0}
.testi-name{font-size:13px;font-weight:600}
.testi-role{font-size:11.5px;color:var(--text-secondary)}

/* ============ FAQ (shared) ============ */
.faq-list{border-top:1px solid var(--border-subtle)}
.faq-item{border-bottom:1px solid var(--border-subtle)}
.faq-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;background:none;border:none;
  padding:20px 0;text-align:left;cursor:pointer;color:var(--text-primary)}
.faq-q{font-size:14.5px;font-weight:600}
.faq-chev{width:16px;height:16px;flex-shrink:0;color:var(--text-secondary);transition:transform .25s}
.faq-item.on .faq-chev{transform:rotate(180deg)}
.faq-a{max-height:0;overflow:hidden;transition:max-height .3s ease}
.faq-item.on .faq-a{max-height:320px}
.faq-a-inner{padding-bottom:20px;font-size:13.5px;color:var(--text-secondary);line-height:1.7;max-width:640px}

/* ============ CTA PANEL (shared) ============ */
.cta-panel{border:1px solid var(--border-subtle);border-radius:20px;padding:56px 40px;text-align:center}
@media (max-width:768px){ .cta-panel{padding:40px 24px} }
.cta-panel h2{font-size:clamp(24px,4vw,38px);margin-bottom:12px;line-height:1.12}
.cta-panel p{font-size:15px;color:var(--text-secondary);max-width:460px;margin:0 auto 28px}

/* ============ FOOTER ============ */
.site-footer{border-top:1px solid var(--border-subtle);padding:56px 0 56px}
.footer-grid{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap}
@media (max-width:768px){ .footer-grid{flex-direction:column;gap:32px} }
.footer-brand p{font-size:13px;color:var(--text-secondary);max-width:280px;line-height:1.6;margin:12px 0 16px}
.footer-cols{display:flex;gap:56px}
@media (max-width:768px){ .footer-cols{flex-direction:column;gap:8px} }
.fcol h4{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin-bottom:14px;font-weight:600}
@media (max-width:768px){ .fcol{padding:16px 0;border-bottom:1px solid var(--border-subtle)} .fcol:last-child{border-bottom:none} .fcol h4{margin-bottom:10px} }
.fcol a{display:block;font-size:13.5px;color:var(--text-primary);padding:6px 0}
@media (max-width:768px){ .fcol a{padding:8px 0} }
.footer-bottom{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;
  margin-top:48px;padding-top:20px;border-top:1px solid var(--border-subtle);font-size:12px;color:var(--text-secondary)}
@media (max-width:768px){ .footer-bottom{flex-direction:column;align-items:flex-start;margin-top:32px} }
.footer-pulse{display:flex;align-items:center;gap:6px;color:inherit;text-decoration:none;transition:opacity .15s}
.footer-pulse:hover{opacity:.75}
.footer-pulse::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--success)}
.fsoc{display:flex;gap:10px}
.fsoc a{width:30px;height:30px;border-radius:8px;border:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:center;font-size:13px}

@media (max-width:768px){ body{padding-bottom:64px} } /* room for sticky CTA */

/* ============ STICKY MOBILE CTA ============ */
.sticky-cta{display:none}
@media (max-width:768px){
  .sticky-cta{display:block;position:fixed;left:0;right:0;bottom:0;z-index:998;padding:12px 16px calc(12px + env(safe-area-inset-bottom));
    background:color-mix(in srgb, var(--bg-app) 72%, transparent);backdrop-filter:blur(18px) saturate(160%);
    border-top:1px solid var(--border-subtle)}
  .sticky-cta .btn{width:100%;padding:13px}
}

.reveal{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}
.reveal.in{opacity:1;transform:none}
.reveal-left{opacity:0;transform:translateX(-14px);transition:opacity .5s ease,transform .5s ease}
.reveal-left.in{opacity:1;transform:none}

/* ============ GRID OVERFLOW SAFETY ============ */
/* Prevents nowrap children (e.g. scrollable tab bars) from forcing grid tracks
   wider than the viewport on mobile — the actual cause of right-edge overlap. */
.hero-grid-layout > *,
.about-hero-grid > *,
.contact-hero-grid > *{min-width:0}
