/* ASL Information Services — "Engineering" dark system
   Distinctive: blueprint grid, mono labels, oversized editorial type, blue glow.
   Fonts: Space Grotesk (display) · Inter (body) · JetBrains Mono (labels) */
/* fonts loaded via <link> in HTML head (preconnect + non-blocking) */

:root{
  --bg:#0a1322; --bg-2:#0d1a2d; --surface:#111f36; --surface-2:#16273f;
  --line:rgba(255,255,255,.09); --line-2:rgba(255,255,255,.16);
  --text:#eaf1fb; --text-2:#a3b5d0; --text-3:#7d90b3;
  --blue:#4a8ce8; --blue-2:#2f6bc4; --blue-deep:#1f4e96; --glow:#6ea8e8; --cyan:#85eefd;
  --max:1200px;
  --mono:"JetBrains Mono",ui-monospace,monospace;
  --disp:"Space Grotesk","Inter",sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
.svc .row,section[id]{scroll-margin-top:90px}
body{font-family:"Inter",-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg);color:var(--text);line-height:1.7;font-size:16px;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--max);margin:0 auto;padding:0 26px}
.mono{font-family:var(--mono);font-size:.8rem;letter-spacing:.04em;color:var(--blue);text-transform:uppercase}
.disp{font-family:var(--disp);font-weight:700;letter-spacing:-.02em;line-height:1.05}

/* ── HEADER ── */
header{position:sticky;top:0;z-index:50;background:rgba(10,19,34,.78);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;height:74px;gap:20px}
.nav .logo img{height:48px}
.nav ul{display:flex;list-style:none;gap:6px;align-items:center}
.nav a{padding:9px 16px;color:var(--text-2);font-size:.94rem;font-weight:500;border-radius:8px;transition:color .2s}
.nav a:hover,.nav a.active{color:var(--text)}
.nav a.btn-nav{font-family:var(--disp);font-weight:600;color:var(--text);border:1px solid var(--line-2);border-radius:9px;margin-left:8px;padding:9px 20px;transition:.2s}
.nav a.btn-nav:hover{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 0 30px rgba(74,140,232,.5)}

/* mobile menu */
.menu-btn{display:none;background:none;border:1px solid var(--line-2);border-radius:9px;width:44px;height:44px;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:0;cursor:pointer;touch-action:manipulation}
.menu-btn span{display:block;width:20px;height:2px;background:var(--text);border-radius:2px;transition:transform .25s,opacity .25s}
@media(max-width:840px){
  .nav{height:66px}
  .nav .logo img{height:42px}
  .menu-btn{display:flex}
  .nav ul{display:none;position:absolute;top:66px;left:0;right:0;flex-direction:column;align-items:stretch;gap:2px;background:var(--bg-2);border-bottom:1px solid var(--line-2);padding:12px 26px 20px;box-shadow:0 30px 50px rgba(0,0,0,.45)}
  header.nav-open .nav ul{display:flex}
  .nav ul a{display:block;padding:14px 10px;font-size:1.05rem;min-height:48px}
  .nav a.btn-nav{margin:12px 0 0;text-align:center}
  header.nav-open .menu-btn span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  header.nav-open .menu-btn span:nth-child(2){opacity:0}
  header.nav-open .menu-btn span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
}

/* ── HERO ── */
.hero{position:relative;overflow:hidden;padding:110px 0 96px;
  background:
    radial-gradient(760px 460px at 78% -8%, rgba(74,140,232,.20), transparent 62%),
    radial-gradient(500px 320px at 6% 108%, rgba(133,238,253,.08), transparent 60%),
    linear-gradient(var(--line) 1px, transparent 1px) 0 0/46px 46px,
    linear-gradient(90deg, var(--line) 1px, transparent 1px) 0 0/46px 46px,
    var(--bg);
}
.hero::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,var(--bg));pointer-events:none}
.hero .inner{position:relative;z-index:2;display:grid;grid-template-columns:1.08fr .92fr;gap:60px;align-items:center}
.hero .col-txt{min-width:0}
@media(max-width:920px){.hero .inner{grid-template-columns:1fr;gap:44px}.hero .codewin{display:none}}
/* sub-page hero: single, constrained */
.hero.sub{padding:48px 0 42px}
.hero.sub .inner{display:block}
.hero.sub h1{font-size:clamp(2.1rem,3.8vw,3.2rem);max-width:780px}
.hero.sub p.lead{max-width:640px;font-size:1.08rem;margin-top:18px}
.hero.sub .actions{margin-top:26px}

/* code window visual */
.codewin{background:linear-gradient(160deg,#0e1c32,#0b1626);border:1px solid var(--line-2);border-radius:14px;overflow:hidden;box-shadow:0 30px 70px rgba(0,0,0,.5),0 0 0 1px rgba(74,140,232,.08);font-family:var(--mono);font-size:.82rem}
.codewin .bar{display:flex;align-items:center;gap:8px;padding:13px 16px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.02)}
.codewin .bar i{width:11px;height:11px;border-radius:50%;display:block}
.codewin .bar .r{background:#ff5f57}.codewin .bar .y{background:#febc2e}.codewin .bar .g{background:#28c840}
.codewin .bar span{margin-left:8px;color:var(--text-3);font-size:.76rem}
.codewin .body{padding:18px 20px;line-height:1.9;color:var(--text-2)}
.codewin .body .c{color:var(--text-3)}
.codewin .body .k{color:var(--glow)}
.codewin .body .s{color:#7ee0a0}
.codewin .body .b{color:var(--blue);font-weight:500}
.codewin .body .ok{color:#28c840}
.codewin .body .pr{color:var(--blue)}
.hero .kick{display:inline-flex;align-items:center;gap:10px;margin-bottom:26px}
.hero .kick .dot{width:8px;height:8px;border-radius:50%;background:var(--cyan);box-shadow:0 0 12px var(--cyan)}
.hero h1{font-family:var(--disp);font-weight:700;font-size:clamp(2.3rem,4.4vw,3.9rem);line-height:1.06;letter-spacing:-.025em}
.hero{padding:64px 0 56px}
.hero h1 .g{background:linear-gradient(100deg,var(--cyan),var(--blue));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p.lead{margin-top:26px;max-width:560px;color:var(--text-2);font-size:1.16rem}
.hero .actions{margin-top:30px;display:flex;gap:16px;flex-wrap:wrap;align-items:center}

.btn{display:inline-flex;align-items:center;gap:9px;font-family:var(--disp);font-weight:600;font-size:1rem;padding:14px 28px;border-radius:10px;cursor:pointer;transition:transform .18s,box-shadow .18s,background .2s}
.btn-primary{background:var(--blue);color:#fff;box-shadow:0 0 0 1px rgba(74,140,232,.4),0 14px 34px rgba(31,78,150,.5)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 0 0 1px var(--blue),0 0 40px rgba(74,140,232,.6)}
.btn-ghost{color:var(--text);border:1px solid var(--line-2);background:transparent}
.btn-ghost:hover{border-color:var(--blue);color:var(--blue)}
.btn .arrow{transition:transform .2s}.btn:hover .arrow{transform:translateX(4px)}

/* ── MARQUEE (tech stack strip) ── */
.marquee{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg-2);overflow:hidden;padding:20px 0}
.marquee .track{display:flex;gap:56px;width:max-content;animation:scroll 32s linear infinite;font-family:var(--mono);font-size:.92rem;color:var(--text-3);letter-spacing:.03em}
.marquee .track span{display:flex;gap:56px;white-space:nowrap}
.marquee b{color:var(--glow);font-weight:500}
@keyframes scroll{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.marquee .track{animation:none}}

/* ── SECTION SHELL ── */
section{padding:60px 0;position:relative}
@media(max-width:720px){section{padding:44px 0}}
.head{margin-bottom:38px;max-width:640px}
.head .mono{display:block;margin-bottom:14px}
.head h2{font-family:var(--disp);font-weight:700;font-size:clamp(1.9rem,3.6vw,2.9rem);line-height:1.08;letter-spacing:-.02em}
.head h2 .g{background:linear-gradient(100deg,var(--cyan),var(--blue));-webkit-background-clip:text;background-clip:text;color:transparent}
.head p{margin-top:14px;color:var(--text-2);font-size:1.05rem}

/* ── SPLIT: sticky aside + content (composed two-column) ── */
.split{display:grid;grid-template-columns:.82fr 1.18fr;gap:60px;align-items:start}
.split .aside{position:sticky;top:100px}
.split .aside .mono{display:block;margin-bottom:14px}
.split .aside h2{font-family:var(--disp);font-weight:700;font-size:clamp(1.7rem,3vw,2.5rem);line-height:1.1;letter-spacing:-.02em;margin-bottom:16px}
.split .aside h2 .g{background:linear-gradient(100deg,var(--cyan),var(--blue));-webkit-background-clip:text;background-clip:text;color:transparent}
.split .aside p{color:var(--text-2);margin-bottom:24px;font-size:1rem}
@media(max-width:900px){.split{grid-template-columns:1fr;gap:30px}.split .aside{position:static}}

/* ── SERVICES: numbered editorial list ── */
.svc{border-top:1px solid var(--line)}
.svc .row{display:grid;grid-template-columns:76px 1fr auto;gap:28px;align-items:center;padding:34px 8px;border-bottom:1px solid var(--line);transition:background .25s,padding .25s;position:relative}
.svc .row::after{content:"";position:absolute;left:0;top:0;height:100%;width:2px;background:var(--blue);transform:scaleY(0);transform-origin:top;transition:transform .3s}
.svc .row:hover{background:linear-gradient(90deg,rgba(74,140,232,.07),transparent);padding-left:22px}
.svc .row:hover::after{transform:scaleY(1)}
.svc .idx{font-family:var(--mono);color:var(--blue);font-size:1rem}
.svc .row h3{font-family:var(--disp);font-weight:600;font-size:clamp(1.3rem,2.4vw,1.75rem);color:var(--text)}
.svc .row p{color:var(--text-2);font-size:.95rem;margin-top:6px;max-width:520px}
.svc .row .go{font-family:var(--mono);color:var(--text-3);font-size:1.4rem;transition:color .2s,transform .2s}
.svc .row:hover .go{color:var(--blue);transform:translateX(5px)}
@media(max-width:720px){.svc .row{grid-template-columns:46px 1fr;gap:16px}.svc .row .go{display:none}}

/* ── BENTO GRID (capabilities/products) ── */
.bento{display:grid;grid-template-columns:repeat(6,1fr);gap:18px;grid-auto-rows:minmax(150px,auto)}
.tile{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:28px;position:relative;overflow:hidden;transition:border-color .25s,transform .25s;display:flex;flex-direction:column;justify-content:space-between}
.tile:hover{border-color:var(--line-2);transform:translateY(-3px)}
.tile .mono{color:var(--text-3)}
.tile h3{font-family:var(--disp);font-weight:600;font-size:1.24rem;margin:12px 0 8px;color:var(--text)}
.tile p{color:var(--text-2);font-size:.94rem}
.tile.big{grid-column:span 3;grid-row:span 2}
.tile.wide{grid-column:span 3}
.tile.mid{grid-column:span 3}
.tile.sm{grid-column:span 3}
.tile .glow{position:absolute;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(74,140,232,.28),transparent 70%);right:-60px;bottom:-60px;pointer-events:none}
.ticks{font-family:var(--mono);font-size:.85rem;color:var(--text-2);display:flex;flex-direction:column;gap:12px;margin:20px 0}
.ticks div{display:flex;justify-content:space-between;gap:16px;border-bottom:1px dashed var(--line);padding-bottom:12px}
.ticks div:last-child{border-bottom:none;padding-bottom:0}
.ticks b{color:var(--glow);font-weight:500;white-space:nowrap}
.tile.big{background:linear-gradient(150deg,var(--surface-2),var(--surface));border-color:var(--line-2)}
.tile .num{font-family:var(--disp);font-weight:700;font-size:2.6rem;background:linear-gradient(100deg,var(--cyan),var(--blue));-webkit-background-clip:text;background-clip:text;color:transparent}
.tile img{width:56px;height:56px;object-fit:contain;margin-bottom:6px}
@media(max-width:900px){.bento{grid-template-columns:repeat(2,1fr)}.tile.big,.tile.wide,.tile.mid,.tile.sm{grid-column:span 1;grid-row:auto}.tile.big{grid-column:span 2}}

/* ── PROCESS: horizontal steps with connector ── */
.proc{display:grid;grid-template-columns:repeat(3,1fr);gap:0;position:relative;counter-reset:s}
.proc .p{padding:34px 30px;border:1px solid var(--line);border-right:none;position:relative}
.proc .p:last-child{border-right:1px solid var(--line)}
.proc .p:first-child{border-radius:16px 0 0 16px}
.proc .p:last-child{border-radius:0 16px 16px 0}
.proc .p::before{counter-increment:s;content:"0" counter(s);font-family:var(--mono);color:var(--blue);font-size:.9rem}
.proc .p h3{font-family:var(--disp);font-weight:600;font-size:1.2rem;margin:14px 0 8px}
.proc .p p{color:var(--text-2);font-size:.94rem}
.proc .p .bar{height:2px;background:linear-gradient(90deg,var(--blue),transparent);margin-top:18px}
@media(max-width:820px){.proc{grid-template-columns:1fr}.proc .p{border-right:1px solid var(--line);border-bottom:none}.proc .p:first-child{border-radius:16px 16px 0 0}.proc .p:last-child{border-radius:0 0 16px 16px;border-bottom:1px solid var(--line)}}

/* ── CTA ── */
.cta{position:relative;overflow:hidden;border:1px solid var(--line-2);border-radius:20px;padding:34px 44px;display:grid;grid-template-columns:1fr auto;column-gap:48px;align-items:center;
  background:radial-gradient(520px 260px at 94% 130%,rgba(74,140,232,.30),transparent 60%),var(--surface)}
.cta .mono,.cta h2,.cta p{grid-column:1}
.cta h2{font-family:var(--disp);font-weight:700;font-size:clamp(1.5rem,2.6vw,2.1rem);letter-spacing:-.02em;margin-top:8px}
.cta p{color:var(--text-2);max-width:560px;margin:8px 0 0}
.cta .actions{grid-column:2;grid-row:1/span 3;margin-top:0;display:flex;gap:14px;justify-content:flex-end;flex-wrap:wrap}
@media(max-width:840px){.cta{grid-template-columns:1fr;padding:28px 24px}.cta .actions{grid-column:1;grid-row:auto;margin-top:20px;justify-content:flex-start}}

/* ── FEATURE (about split) ── */
.feature{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}
.feature .media{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--surface);position:relative}
.feature .media img{width:100%;height:auto;max-height:440px;object-fit:cover;opacity:.92}
.feature h2{font-family:var(--disp);font-weight:700;font-size:2rem;letter-spacing:-.02em;margin:14px 0 16px}
.feature p{color:var(--text-2);margin-bottom:14px}
.feature .li{display:flex;gap:12px;margin-bottom:12px;color:var(--text-2)}
.feature .li b{color:var(--text)}
.feature .li::before{content:"";flex:0 0 8px;height:8px;margin-top:9px;border-radius:2px;background:var(--blue);box-shadow:0 0 10px var(--blue)}
@media(max-width:820px){.feature{grid-template-columns:1fr;gap:34px}}

/* ── CONTACT ── */
.cgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.cbox{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:30px}
.cbox .mono{color:var(--text-3)}
.cbox .v{font-family:var(--disp);font-weight:600;font-size:1.05rem;margin-top:10px;color:var(--text);word-break:break-word}
.cbox a{color:var(--blue)}
.faq{max-width:820px}
.faq details{border:1px solid var(--line);border-radius:14px;padding:20px 24px;margin-bottom:14px;background:var(--surface)}
.faq summary{font-family:var(--disp);font-weight:600;color:var(--text);cursor:pointer;list-style:none;display:flex;justify-content:space-between}
.faq summary::after{content:"+";color:var(--blue);font-size:1.4rem}
.faq details[open] summary::after{content:"–"}
.faq p{margin-top:12px;color:var(--text-2)}
@media(max-width:720px){.cgrid{grid-template-columns:1fr}}

/* ── STATS (social proof strip) ── */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:24px 26px}
.stat .n{font-family:var(--disp);font-weight:700;font-size:2.1rem;letter-spacing:-.02em;background:linear-gradient(100deg,var(--cyan),var(--blue));-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums}
.stat .l{color:var(--text-2);font-size:.92rem;margin-top:6px}
@media(max-width:820px){.stats{grid-template-columns:repeat(2,1fr)}}

/* ── CASE (flagship product metrics) ── */
.metrics{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.metrics .m{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:22px}
.metrics .m .n{font-family:var(--disp);font-weight:700;font-size:1.5rem;color:var(--text)}
.metrics .m .l{color:var(--text-2);font-size:.88rem;margin-top:6px}
.chip{display:inline-block;font-family:var(--mono);font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--cyan);border:1px solid rgba(133,238,253,.3);border-radius:99px;padding:5px 12px;margin:0 8px 8px 0;background:rgba(133,238,253,.06)}

/* ── FORM ── */
.form{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:34px}
.form .fg{margin-bottom:18px}
.form label{display:block;font-family:var(--mono);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-2);margin-bottom:8px}
.form label .req{color:var(--cyan)}
.form input,.form textarea{width:100%;background:var(--bg-2);border:1px solid var(--line-2);border-radius:10px;padding:13px 15px;min-height:48px;color:var(--text);font-family:"Inter",-apple-system,sans-serif;font-size:1rem}
.form textarea{min-height:140px;resize:vertical}
.form input::placeholder,.form textarea::placeholder{color:var(--text-3)}
.form input:focus,.form textarea:focus{outline:2px solid var(--blue);outline-offset:0;border-color:var(--blue)}
.form .hint{font-size:.85rem;color:var(--text-3);margin-top:8px}
.form .btn{width:100%;justify-content:center;border:none}
.form-note{display:flex;align-items:center;gap:10px;margin-top:16px;font-size:.88rem;color:var(--text-3)}
.form-note .dot{width:7px;height:7px;border-radius:50%;background:#28c840;box-shadow:0 0 8px #28c840;flex:0 0 auto}
@media(max-width:720px){.form{padding:26px 20px}}

/* ── FOOTER ── */
footer{border-top:1px solid var(--line);background:var(--bg-2);padding:48px 0 24px;margin-top:12px}
.fgrid{display:grid;grid-template-columns:2fr 1fr 1.4fr;gap:44px}
footer .logo img{height:46px;margin-bottom:16px}
footer p{color:var(--text-2);font-size:.95rem;max-width:320px}
footer h4{font-family:var(--mono);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);margin-bottom:16px}
footer ul{list-style:none}
footer li{margin-bottom:10px}
footer a{color:var(--text-2);font-size:.95rem}
footer a:hover{color:var(--blue)}
.fbottom{border-top:1px solid var(--line);margin-top:36px;padding-top:20px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-family:var(--mono);font-size:.8rem;color:var(--text-3)}
@media(max-width:760px){.fgrid{grid-template-columns:1fr;gap:30px}}

a,button,summary{touch-action:manipulation}
*:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:6px}
.faq summary:focus-visible{outline-offset:6px}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
