:root{
  --blue:#2563eb;
  --blue-dark:#0f3ea8;
  --sky:#0ea5e9;
  --text:#0f172a;
  --muted:#64748b;
  --line:#dbeafe;
  --soft:#eff6ff;
  --white:#fff;
  --shadow: 0 24px 70px rgba(30, 64, 175, .14);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;color:var(--text);background:#fff;overflow-x:hidden}
a{text-decoration:none;color:inherit}
.site-bg{position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at 8% 8%,rgba(37,99,235,.18),transparent 32%),radial-gradient(circle at 90% 20%,rgba(14,165,233,.16),transparent 30%),linear-gradient(180deg,#fff 0%,#eff6ff 45%,#fff 100%);z-index:-2}
.site-bg:after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(37,99,235,.09) 1px, transparent 1px),linear-gradient(90deg, rgba(37,99,235,.09) 1px, transparent 1px);background-size:56px 56px;opacity:.75;z-index:-1}
.container{width:min(1180px, calc(100% - 40px));margin-inline:auto}
.navbar{width:min(1180px, calc(100% - 40px));margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:22px 0;position:relative;z-index:20}
.brand{display:flex;align-items:center;gap:12px}.brand-logo{width:56px;height:56px;border-radius:18px;object-fit:cover;background:#eff6ff;box-shadow:0 12px 30px rgba(37,99,235,.18)}.brand-name{font-size:20px;font-weight:900;letter-spacing:.24em}.brand-subtitle{font-size:11px;font-weight:800;letter-spacing:.32em;text-transform:uppercase;color:var(--blue)}
.nav-links{display:flex;align-items:center;gap:28px;font-size:14px;font-weight:700;color:#475569}.nav-links a:hover{color:var(--blue)}.nav-cta{background:var(--blue);color:#fff!important;padding:12px 18px;border-radius:999px;box-shadow:0 12px 28px rgba(37,99,235,.2)}.menu-btn{display:none;border:0;background:#fff;color:var(--blue);font-size:24px;border-radius:14px;padding:9px 12px;box-shadow:0 10px 25px rgba(30,64,175,.12)}
.hero{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center;padding:70px 0 90px}.eyebrow{display:inline-flex;align-items:center;border:1px solid var(--line);background:rgba(255,255,255,.78);color:var(--blue);border-radius:999px;padding:10px 16px;font-size:13px;font-weight:800;box-shadow:0 8px 25px rgba(30,64,175,.08);backdrop-filter:blur(12px)}h1{font-size:clamp(44px,6vw,78px);line-height:1.02;margin:26px 0 22px;letter-spacing:-.05em}h1 span{background:linear-gradient(90deg,#1d4ed8,#0ea5e9,#22d3ee);-webkit-background-clip:text;background-clip:text;color:transparent}.hero p{max-width:680px;font-size:18px;line-height:1.8;color:var(--muted)}.hero-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:32px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 26px;border-radius:999px;font-weight:850;border:1px solid transparent;cursor:pointer}.btn.primary{background:var(--blue);color:#fff;box-shadow:0 20px 38px rgba(37,99,235,.22)}.btn.primary:hover{background:var(--blue-dark)}.btn.secondary{background:#fff;color:var(--blue);border-color:#bfdbfe}.btn.secondary:hover{background:#eff6ff}
.suite-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:40px;padding:28px;box-shadow:var(--shadow);overflow:hidden}.suite-card:before{content:"";position:absolute;right:-90px;top:-90px;width:260px;height:260px;border-radius:50%;background:rgba(37,99,235,.11);filter:blur(16px)}.suite-card:after{content:"";position:absolute;left:-100px;bottom:-100px;width:300px;height:300px;border-radius:50%;background:rgba(34,211,238,.12);filter:blur(18px)}.suite-top,.feature-main,.suite-grid{position:relative;z-index:2}.suite-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.suite-top small,.section-head small,.solutions-panel small,.contact-card small{text-transform:uppercase;letter-spacing:.32em;font-size:12px;font-weight:900;color:var(--blue)}.suite-top h2{margin:7px 0 0;font-size:27px}.suite-icon{height:56px;width:56px;border-radius:20px;background:var(--blue);color:#fff;display:grid;place-items:center;font-size:28px;font-weight:900;box-shadow:0 16px 32px rgba(37,99,235,.22)}.feature-main{display:flex;gap:16px;align-items:center;border:1px solid var(--line);border-radius:28px;background:#fff;padding:20px;margin-bottom:16px;box-shadow:0 10px 24px rgba(30,64,175,.07)}.feature-icon{height:52px;width:52px;border-radius:18px;background:#eff6ff;color:var(--blue);display:grid;place-items:center;font-weight:900;font-size:24px}.feature-main h3{margin:0 0 4px;font-size:20px}.feature-main p{margin:0;color:var(--muted);font-size:14px}.suite-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.suite-tile{border:1px solid var(--line);background:#fff;border-radius:24px;padding:18px;box-shadow:0 8px 22px rgba(30,64,175,.06);transition:.25s}.suite-tile:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(30,64,175,.12)}.suite-tile strong{display:block;font-size:15px}.suite-tile span{display:block;margin-top:5px;color:var(--muted);font-size:13px}
.section{padding:78px 0}.section-head{max-width:760px;margin-bottom:36px}.section-head h2{font-size:clamp(34px,4vw,54px);line-height:1.08;letter-spacing:-.04em;margin:14px 0 0}.services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.service-card,.process-card{background:#fff;border:1px solid var(--line);border-radius:28px;padding:26px;box-shadow:0 10px 30px rgba(30,64,175,.06);transition:.25s}.service-card:hover,.process-card:hover{transform:translateY(-5px);box-shadow:var(--shadow)}.service-icon{height:50px;width:50px;border-radius:18px;background:#eff6ff;color:var(--blue);display:grid;place-items:center;font-size:22px;font-weight:900;margin-bottom:18px}.service-card h3{font-size:21px;margin:0 0 12px}.service-card p{color:var(--muted);line-height:1.75;margin:0}
/* Featured ad banner: a landscape frame for the current promo.
   Shows a branded placeholder until assets/busutech-ad.jpg exists;
   script.js adds .has-img once the real image loads. */
.ad-banner{position:relative;margin:0;border-radius:36px;overflow:hidden;
  border:1px solid var(--line);background:linear-gradient(135deg,#eff6ff,#dbeafe);
  box-shadow:var(--shadow)}
/* Before an image loads, the banner holds a 16:9 box for the placeholder.
   Once the real image is in, the banner wraps the image at ITS OWN aspect
   ratio so the WHOLE promo is always visible — never cropped — and scales
   fluidly to any screen width. max-height guards against a very tall image. */
.ad-banner:not(.has-img){aspect-ratio:16/9}
.ad-img{display:block;width:100%;height:auto}
.ad-banner.has-img .ad-placeholder{display:none}
/* Placeholder is an OPAQUE overlay on top of the image, so a missing
   or still-loading image (broken icon) is never visible behind it. */
.ad-placeholder{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;color:var(--blue);padding:24px;background:linear-gradient(135deg,#eff6ff,#dbeafe)}
.ad-placeholder b{font-size:clamp(18px,2.4vw,24px);color:var(--text)}
.ad-ph-note{color:var(--muted);font-size:14px}
.ad-ph-icon svg{width:46px;height:46px;opacity:.85}
.ad-placeholder::after{content:"";position:absolute;inset:14px;border:2px dashed rgba(37,99,235,.28);border-radius:24px;pointer-events:none}
/* Futuristic corner brackets on the frame */
.ad-banner::before,.ad-banner::after{content:"";position:absolute;width:40px;height:40px;z-index:2;pointer-events:none;border:2px solid rgba(37,99,235,.5)}
.ad-banner::before{left:16px;top:16px;border-right:0;border-bottom:0;border-radius:12px 0 0 0}
.ad-banner::after{right:16px;bottom:16px;border-left:0;border-top:0;border-radius:0 0 12px 0}

.solutions-panel{background:linear-gradient(135deg,#2563eb 0%,#1d4ed8 45%,#0f172a 100%);color:#fff;border-radius:40px;padding:46px;display:grid;grid-template-columns:.9fr 1.1fr;gap:42px;box-shadow:0 30px 75px rgba(30,64,175,.25)}.solutions-panel h2{font-size:clamp(34px,4vw,54px);line-height:1.08;margin:16px 0 18px;letter-spacing:-.04em}.solutions-panel p{color:#eff6ff;line-height:1.8;font-size:17px}
/* The shared eyebrow rule paints these labels brand-blue, which is invisible
   on the panel's blue gradient. Override with light cyan on dark surfaces. */
.solutions-panel small{color:#cffafe}.highlight-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.highlight{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);border-radius:26px;padding:22px;backdrop-filter:blur(12px)}.highlight b{color:#dff8ff}.highlight h3{font-size:20px;margin:12px 0 8px}.highlight p{font-size:15px;margin:0}.highlight.white{background:#fff;color:var(--text)}.highlight.white p{color:var(--muted)}.highlight.white b{color:var(--blue)}
.process-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.process-card span{display:grid;place-items:center;width:46px;height:46px;border-radius:17px;background:var(--blue);color:#fff;font-weight:900;margin-bottom:18px}.process-card h3{font-size:18px;line-height:1.35;margin:0}
.contact-card{background:#fff;border:1px solid var(--line);border-radius:40px;padding:48px;box-shadow:var(--shadow);text-align:center}.contact-card h2{font-size:clamp(34px,5vw,62px);line-height:1.05;letter-spacing:-.05em;margin:16px auto;max-width:820px}.contact-card p{color:var(--muted);line-height:1.8;font-size:17px;max-width:780px;margin:0 auto 28px}.contact-direct{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin:0 0 6px}
/* Callback opt-in: a full 44px+ tappable row, not a bare 20px box */
.callback-opt{display:flex;align-items:center;gap:12px;justify-content:center;min-height:48px;padding:4px 12px;border-radius:16px;color:var(--muted);font-size:15px;font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .2s ease,color .2s ease}
.callback-opt:hover,.callback-opt:active{background:var(--soft);color:var(--text)}
.callback-opt input{width:24px;height:24px;flex:0 0 auto;accent-color:var(--blue);border-radius:6px;padding:0;cursor:pointer}
.callback-opt input:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
.form-thanks{display:flex;flex-direction:column;gap:8px;align-items:center;text-align:center;padding:34px 20px;border:1px solid var(--line);border-radius:22px;background:var(--soft)}
.form-thanks b{font-size:20px;color:var(--text)}
.form-thanks span{color:var(--muted)}
.contact-form{max-width:820px;margin:32px auto 0;display:grid;gap:14px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}input,select,textarea{width:100%;border:1px solid #bfdbfe;border-radius:18px;padding:16px 18px;font:inherit;background:#fff;color:var(--text);outline:none}textarea{min-height:130px;resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(37,99,235,.09)}.contact-form .btn{width:max-content;margin:6px auto 0;border:0}
.footer{border-top:1px solid var(--line);background:#fff;text-align:center;padding:28px 20px;color:var(--muted);font-size:14px}
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease, transform .7s ease}.reveal.show{opacity:1;transform:translateY(0)}.delay-1{transition-delay:.12s}
@media (max-width:920px){.menu-btn{display:block;min-width:46px;min-height:46px}.nav-links{display:none;position:absolute;right:0;top:78px;flex-direction:column;align-items:stretch;gap:2px;background:#fff;border:1px solid var(--line);border-radius:24px;padding:12px;width:min(300px,90vw);box-shadow:var(--shadow)}.nav-links.open{display:flex}
  /* Full-width, thumb-sized rows in the mobile menu (default 19px links are too small to tap) */
  .nav-links a{display:flex;align-items:center;min-height:46px;padding:0 14px;border-radius:14px}
  .nav-links a:active{background:var(--soft)}
  .nav-links .nav-cta{justify-content:center;margin-top:6px}.hero,.solutions-panel{grid-template-columns:1fr}.services-grid{grid-template-columns:repeat(2,1fr)}.process-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.container,.navbar{width:min(100% - 26px,1180px)}.brand-logo{width:46px;height:46px}.brand-name{font-size:16px;letter-spacing:.18em}.brand-subtitle{font-size:10.5px;letter-spacing:.22em}.hero{padding:38px 0 64px}.eyebrow{border-radius:20px;line-height:1.5}.hero-actions,.form-row{grid-template-columns:1fr;flex-direction:column}.btn{width:100%}.suite-grid,.services-grid,.highlight-grid,.process-grid{grid-template-columns:1fr}.suite-card,.solutions-panel,.contact-card{border-radius:28px;padding:22px}.suite-top{align-items:flex-start;gap:14px}.feature-main{align-items:flex-start}.section{padding:54px 0}}

/* ============================================================
   FUTURISTIC LIVENESS LAYER — additive progressive enhancement.
   Hook elements/classes are injected by script.js; base markup
   works without any of this. Honors prefers-reduced-motion.
   ============================================================ */
html{scroll-padding-top:96px}

/* Sticky frosted nav that condenses into a floating pill on scroll */
.navbar{position:sticky;top:0;border:1px solid transparent;
  transition:background .35s ease,box-shadow .35s ease,border-radius .35s ease,padding .35s ease,top .35s ease,border-color .35s ease}
.navbar.scrolled{top:12px;padding:12px 22px;background:rgba(255,255,255,.72);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  border-color:rgba(191,219,254,.9);border-radius:999px;box-shadow:0 16px 40px rgba(30,64,175,.16)}

/* Neon scroll-progress bar */
.fx-progress{position:fixed;top:0;left:0;height:3px;width:0;z-index:9999;border-radius:0 3px 3px 0;
  background:linear-gradient(90deg,#2563eb,#0ea5e9,#22d3ee);box-shadow:0 0 14px rgba(34,211,238,.75);
  transition:width .12s linear}

/* Animated gradient headline */
h1 span{background-size:220% 220%;animation:bt-shimmer 7s ease-in-out infinite}
@keyframes bt-shimmer{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}

/* Slow-panning tech grid */
.site-bg:after{animation:bt-grid 36s linear infinite}
@keyframes bt-grid{from{background-position:0 0,0 0}to{background-position:56px 56px,56px 56px}}

/* Drifting aurora field (injected) */
.fx-aurora{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;filter:blur(48px)}
.fx-blob{position:absolute;border-radius:50%;opacity:.55;will-change:transform}
.fx-blob.b1{width:46vw;height:46vw;left:-9vw;top:-12vw;background:radial-gradient(circle,rgba(37,99,235,.5),transparent 68%);animation:bt-float1 26s ease-in-out infinite}
.fx-blob.b2{width:40vw;height:40vw;right:-10vw;top:2vw;background:radial-gradient(circle,rgba(34,211,238,.45),transparent 68%);animation:bt-float2 32s ease-in-out infinite}
.fx-blob.b3{width:40vw;height:40vw;left:22vw;bottom:-18vw;background:radial-gradient(circle,rgba(124,58,237,.28),transparent 68%);animation:bt-float3 40s ease-in-out infinite}
@keyframes bt-float1{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(7vw,6vh) scale(1.12)}}
@keyframes bt-float2{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-6vw,7vh) scale(1.08)}}
@keyframes bt-float3{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(6vw,-6vh) scale(1.16)}}

/* Constellation web canvas (injected) — fixed behind the whole page */
.hero{position:relative}
.hero-copy,.suite-card{position:relative;z-index:2}
.fx-particles{position:fixed;inset:0;z-index:-1;pointer-events:none}

/* "Live" status pulse on the hero eyebrow */
.eyebrow::before{content:"";width:9px;height:9px;border-radius:50%;background:#22c55e;margin-right:11px;flex:0 0 auto;animation:bt-live 2s infinite}
@keyframes bt-live{0%{box-shadow:0 0 0 0 rgba(34,197,94,.55)}70%{box-shadow:0 0 0 9px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}

/* Pointer-tracking spotlight glow on cards (injected class) */
.spotlight{position:relative;z-index:0}
.spotlight::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;opacity:0;
  transition:opacity .35s ease;
  background:radial-gradient(240px circle at var(--mx,50%) var(--my,50%),rgba(37,99,235,.16),transparent 60%)}
.spotlight:hover::after{opacity:1}

/* Inline SVG icon system — replaces the old Unicode glyphs, which
   rendered inconsistently (or as tofu boxes) across Android/Windows.
   Icons inherit their container's colour via currentColor. */
.service-icon svg{width:26px;height:26px;display:block}
.feature-icon svg{width:27px;height:27px;display:block}
.suite-icon svg{width:28px;height:28px;display:block}
.highlight b svg{width:22px;height:22px;display:block}
.highlight b{display:flex;align-items:center;min-height:22px}
/* Icons lift and brighten with their card */
.service-icon svg{transition:transform .3s ease}
.service-card:hover .service-icon svg{transform:scale(1.08) rotate(-3deg)}

/* Neon edge on card hover */
.service-card:hover,.process-card:hover,.suite-tile:hover,.feature-main:hover{
  box-shadow:0 18px 42px rgba(30,64,175,.16),0 0 0 1px rgba(34,211,238,.4),0 0 30px rgba(37,99,235,.14)}

/* Pulsing glow on the suite check icon */
.suite-icon{animation:bt-pulse 3s ease-in-out infinite}
@keyframes bt-pulse{0%,100%{box-shadow:0 16px 32px rgba(37,99,235,.22)}50%{box-shadow:0 16px 44px rgba(37,99,235,.42),0 0 0 6px rgba(37,99,235,.08)}}

/* Living sheen on the dark solutions panel */
.solutions-panel{background-size:220% 220%;animation:bt-pan 18s ease-in-out infinite}
@keyframes bt-pan{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}

/* Buttons: shine sweep + glow + ripple + arrow nudge */
.btn{position:relative;overflow:hidden}
.btn::before{content:"";position:absolute;top:0;left:-130%;width:65%;height:100%;transform:skewX(-20deg);
  background:linear-gradient(120deg,transparent,rgba(255,255,255,.5),transparent);transition:left .6s ease}
.btn:hover::before{left:150%}
.btn.secondary::before{background:linear-gradient(120deg,transparent,rgba(37,99,235,.16),transparent)}
.btn.primary{box-shadow:0 20px 38px rgba(37,99,235,.22),0 0 22px rgba(37,99,235,.18)}
.btn.primary span{transition:transform .25s ease}
.btn.primary:hover span{transform:translateX(5px)}
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.5);
  transform:translate(-50%,-50%) scale(0);animation:bt-ripple .6s ease-out forwards;pointer-events:none}
.btn.secondary .ripple,.nav-cta .ripple{background:rgba(37,99,235,.22)}
@keyframes bt-ripple{to{transform:translate(-50%,-50%) scale(16);opacity:0}}

/* Nav CTA: soft attention glow + ripple host */
.nav-cta{position:relative;overflow:hidden;animation:bt-cta 3.2s ease-in-out infinite}
@keyframes bt-cta{0%,100%{box-shadow:0 12px 28px rgba(37,99,235,.2)}50%{box-shadow:0 12px 30px rgba(37,99,235,.34),0 0 0 4px rgba(37,99,235,.1)}}

/* Custom trailing cursor halo (desktop only, injected) */
.fx-cursor{position:fixed;top:0;left:0;width:34px;height:34px;border-radius:50%;pointer-events:none;z-index:9998;opacity:0;
  border:1.5px solid rgba(37,99,235,.5);background:radial-gradient(circle,rgba(34,211,238,.18),transparent 70%);
  transform:translate(-50%,-50%);transition:opacity .3s ease,width .2s ease,height .2s ease,border-color .2s ease,background .2s ease}
.fx-cursor.hot{width:54px;height:54px;border-color:rgba(34,211,238,.85);background:radial-gradient(circle,rgba(37,99,235,.22),transparent 70%)}

/* Touch / reduced-motion guards */
@media (hover:none),(pointer:coarse){.fx-cursor{display:none!important}}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;animation-iteration-count:1!important}
  .fx-aurora,.fx-particles,.fx-cursor{display:none!important}
  h1 span{animation:none}
}

/* Mobile: lighten the ambient FX for performance + legibility.
   Static (non-animated) blobs = a one-time paint instead of a
   blurred full-screen repaint every frame — much kinder on phones. */
@media (max-width:640px){
  .fx-aurora{filter:blur(34px)}
  .fx-blob{opacity:.4}
  .fx-blob.b1{width:62vw;height:62vw;animation:none}
  .fx-blob.b2{width:58vw;height:58vw;animation:none}
  .fx-blob.b3{width:58vw;height:58vw;animation:none}
  .fx-progress{height:2px}
  .navbar.scrolled{padding:10px 16px}
  .spotlight::after{display:none}
  /* 16px minimum stops iOS Safari auto-zooming on field focus */
  input,select,textarea{font-size:16px}
  /* Thinner constellation web so it never fights the text on small screens */
  .fx-particles{opacity:.55}
}
