
:root{
  --bg:#07090c; --bg2:#0c1117; --panel:#10161d; --panel2:#151c24;
  --steel:#d9dee4; --steel2:#aab2bc; --muted:#8995a3; --white:#f7f9fb;
  --blue:#087dbd; --blue2:#0aa4e8; --red:#d9291d; --red2:#ff4b3f;
  --line:rgba(207,218,229,.14); --shadow:0 24px 70px rgba(0,0,0,.36);
  --radius:18px; --shell:1180px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--white);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.6;text-rendering:optimizeLegibility}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{width:min(var(--shell),calc(100% - 40px));margin-inline:auto}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;left:12px;top:-80px;z-index:999;background:#fff;color:#000;padding:10px 14px;border-radius:8px}.skip-link:focus{top:12px}
.utility-bar{background:#05070a;border-bottom:1px solid rgba(255,255,255,.06);font-size:.75rem;color:#aeb7c2;letter-spacing:.09em;text-transform:uppercase}.utility-inner{min-height:32px;display:flex;align-items:center;gap:28px;justify-content:space-between}.utility-cap{margin-left:auto}
.site-header{position:sticky;top:0;z-index:90;background:rgba(7,9,12,.90);backdrop-filter:blur(18px) saturate(130%);border-bottom:1px solid var(--line);transition:box-shadow .25s}.site-header.is-scrolled{box-shadow:0 12px 38px rgba(0,0,0,.32)}.header-inner{height:84px;display:flex;align-items:center;justify-content:space-between;gap:28px}.brand{display:flex;align-items:center;gap:14px;min-width:230px}.brand-shield{width:52px;height:52px;object-fit:cover;border-radius:12px}.brand-wordmark{height:42px;width:auto;object-fit:contain;object-position:left center}.primary-nav{display:flex;align-items:center;gap:20px}.nav-link{font-size:.89rem;color:#bec7d0;font-weight:600;position:relative;padding:9px 0}.nav-link:after{content:"";position:absolute;left:0;right:100%;bottom:2px;height:2px;background:linear-gradient(90deg,var(--blue),var(--red));transition:right .2s}.nav-link:hover,.nav-link.is-active{color:#fff}.nav-link:hover:after,.nav-link.is-active:after{right:0}.nav-action{padding:11px 16px;border:1px solid #c9d0d8;border-radius:10px;background:linear-gradient(180deg,#d9dee4,#9ea8b3);color:#090b0e;font-weight:800;box-shadow:inset 0 1px rgba(255,255,255,.6)}.nav-action:hover{filter:brightness(1.07)}.nav-toggle{display:none;background:none;border:0;padding:10px}.nav-toggle span:not(.sr-only){display:block;width:26px;height:2px;background:#fff;margin:5px 0}
.hero{position:relative;min-height:670px;display:grid;align-items:end;overflow:hidden;border-bottom:1px solid var(--line);background-position:center;background-size:cover}.hero:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(3,6,10,.94) 0%,rgba(3,6,10,.76) 48%,rgba(3,6,10,.28) 75%,rgba(3,6,10,.42) 100%),linear-gradient(0deg,rgba(3,6,10,.86),transparent 54%)}.hero:after{content:"";position:absolute;inset:auto -5% -34% auto;width:640px;height:640px;background:url('../brand/aegis-shield.webp') center/contain no-repeat;opacity:.10;filter:grayscale(.12)}.hero-content{position:relative;z-index:2;padding:112px 0 100px;max-width:820px}.eyebrow{display:inline-flex;gap:10px;align-items:center;color:#aeb8c5;text-transform:uppercase;letter-spacing:.17em;font-weight:800;font-size:.76rem}.eyebrow:before{content:"";width:42px;height:2px;background:linear-gradient(90deg,var(--blue),var(--red))}.display{font-family:Cinzel,Georgia,serif;font-weight:700;font-size:clamp(3.3rem,7.6vw,6.6rem);line-height:.94;letter-spacing:-.035em;margin:22px 0 22px;text-shadow:0 10px 45px rgba(0,0,0,.44)}.display .line2{display:block;color:#cbd1d8}.lede{max-width:720px;color:#c8d0da;font-size:clamp(1.05rem,1.6vw,1.3rem);line-height:1.65}.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 19px;border-radius:11px;font-weight:800;border:1px solid transparent;transition:transform .18s,filter .18s,border-color .18s,background .18s}.btn:hover{transform:translateY(-2px)}.btn-primary{background:linear-gradient(180deg,#e2e6eb,#a7b0ba);color:#07090c;border-color:#e8edf1}.btn-primary:hover{background:linear-gradient(180deg,#fff,#bdc5cd)}.btn-secondary{background:rgba(12,17,23,.62);border-color:#50606f;color:#e9edf1}.btn-secondary:hover{border-color:#9facb9;background:#121922}.btn-link{color:#c9d2dc;padding-inline:4px}.btn-link:after{content:' →';color:#52a8d7}.microproof{display:flex;flex-wrap:wrap;gap:18px 26px;margin-top:34px;color:#8f9ba8;font-size:.84rem}.microproof span{display:flex;align-items:center;gap:9px}.microproof span:before{content:"";width:6px;height:6px;border-radius:50%;background:#8da0b0;box-shadow:0 0 0 4px rgba(141,160,176,.08)}
.section{padding:94px 0}.section-tight{padding:72px 0}.section-alt{background:linear-gradient(180deg,#0b1016,#0a0e13);border-block:1px solid var(--line)}.section-head{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:42px;align-items:end;margin-bottom:42px}.section-head h2,.page-hero h1{font-family:Cinzel,Georgia,serif;font-size:clamp(2.1rem,4vw,3.6rem);line-height:1.08;margin:10px 0}.section-head p{color:#9ca8b5;margin:0;max-width:700px}.kicker{font-size:.75rem;font-weight:800;letter-spacing:.17em;text-transform:uppercase;color:#98a6b5}.accent-rule{height:2px;background:linear-gradient(90deg,var(--blue),transparent 38%,var(--red));opacity:.95}
.standard-grid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#0c1117;box-shadow:var(--shadow)}.standard-card{padding:32px 27px;min-height:205px;border-right:1px solid var(--line);position:relative}.standard-card:last-child{border-right:0}.standard-card .n{font-family:Cinzel,serif;color:#5f6b77;font-size:.8rem;letter-spacing:.14em}.standard-card h3{margin:40px 0 10px;font-size:1.04rem;text-transform:uppercase;letter-spacing:.08em}.standard-card p{margin:0;color:#8793a0;font-size:.9rem}.standard-card:before{content:"";position:absolute;left:0;top:0;width:100%;height:2px;background:linear-gradient(90deg,var(--blue),var(--red));transform:scaleX(0);transform-origin:left;transition:transform .24s}.standard-card:hover:before{transform:scaleX(1)}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.cap-card{background:linear-gradient(180deg,#111821,#0e141b);border:1px solid var(--line);border-radius:var(--radius);padding:28px;min-height:285px;position:relative;overflow:hidden;box-shadow:0 14px 40px rgba(0,0,0,.14)}.cap-card:before{content:"";position:absolute;top:0;left:0;width:100%;height:3px;background:linear-gradient(90deg,var(--blue),rgba(255,255,255,.25),var(--red))}.cap-card .number{font-family:Cinzel,serif;color:#6e7b88;font-size:.86rem}.cap-card h3{font-family:Cinzel,Georgia,serif;font-size:1.28rem;line-height:1.25;margin:36px 0 14px}.cap-card p{color:#96a2af;font-size:.92rem}.cap-card a{position:absolute;left:28px;bottom:25px;font-weight:800;font-size:.87rem;color:#d7dee5}.cap-card a:after{content:'  →';color:#4fa3d5}.cap-card:nth-child(5){grid-column:span 2}.cap-card.feature{background:radial-gradient(circle at 85% 15%,rgba(8,125,189,.14),transparent 35%),linear-gradient(180deg,#121a23,#0d1319)}
.split{display:grid;grid-template-columns:1.04fr .96fr;gap:58px;align-items:center}.media-frame{position:relative;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow);background:#0c1016}.media-frame img{width:100%;height:100%;object-fit:cover}.media-frame.tall{aspect-ratio:4/5}.media-frame.wide{aspect-ratio:16/10}.media-note{position:absolute;left:18px;right:18px;bottom:18px;padding:14px 15px;background:rgba(5,8,11,.78);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.12);border-radius:10px;color:#c9d1da;font-size:.82rem}.copy h2{font-family:Cinzel,serif;font-size:clamp(2rem,4vw,3.25rem);line-height:1.08;margin:.4rem 0 1.1rem}.copy p{color:#9ba7b4}.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:28px 0}.stat{padding:18px;border:1px solid var(--line);border-radius:12px;background:#0d1218}.stat strong{display:block;font-family:Cinzel,serif;font-size:1.45rem;color:#d9e0e7}.stat span{font-size:.78rem;color:#7f8b98;text-transform:uppercase;letter-spacing:.08em}
.field-grid{display:grid;grid-template-columns:1.2fr .8fr .8fr;grid-template-rows:280px 250px;gap:12px}.field-grid figure{margin:0;position:relative;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:#111}.field-grid figure:first-child{grid-row:1/3}.field-grid figure:nth-child(4){grid-column:2/4}.field-grid img{width:100%;height:100%;object-fit:cover}.field-grid figcaption{position:absolute;left:0;right:0;bottom:0;padding:40px 16px 14px;background:linear-gradient(transparent,rgba(3,6,9,.9));font-size:.82rem;color:#d4dbe3}.support-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.support{padding:20px;border:1px solid var(--line);border-radius:12px;background:#0d1218;color:#b7c0ca;font-weight:700}.support:before{content:'+';color:#5aa8d0;margin-right:9px}
.cta-band{position:relative;padding:78px 0;overflow:hidden;background:linear-gradient(110deg,#111821,#090d12);border-block:1px solid var(--line)}.cta-band:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 16% 10%,rgba(8,125,189,.17),transparent 28%),radial-gradient(circle at 82% 70%,rgba(217,41,29,.13),transparent 28%)}.cta-inner{position:relative;display:flex;align-items:center;justify-content:space-between;gap:30px}.cta-inner h2{font-family:Cinzel,serif;font-size:clamp(2rem,4vw,3.3rem);margin:0}.cta-inner p{color:#9aa6b2;margin:.6rem 0 0;max-width:690px}
.page-hero{padding:92px 0 70px;background:radial-gradient(circle at 85% 10%,rgba(8,125,189,.09),transparent 24%),linear-gradient(180deg,#0b1016,#07090c);border-bottom:1px solid var(--line)}.page-hero .shell{max-width:1180px}.page-hero p{max-width:780px;color:#9ba7b4;font-size:1.1rem}.page-hero .crumb{font-size:.78rem;color:#72808d;text-transform:uppercase;letter-spacing:.12em}.page-hero .crumb a{color:#9ca9b5}.quote-line{margin-top:30px;border-left:2px solid #579bc2;padding:5px 0 5px 18px;color:#d4dae0;font-weight:700}
.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.detail{padding:28px;border:1px solid var(--line);border-radius:var(--radius);background:#0e141b}.detail h3{font-family:Cinzel,serif;margin:0 0 9px;font-size:1.15rem}.detail p,.detail li{color:#92a0ad}.detail ul{padding-left:20px;margin-bottom:0}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.step{padding:27px 23px;border-right:1px solid var(--line);background:#0d1218}.step:last-child{border:0}.step b{display:block;color:#6f7c89;font-family:Cinzel,serif;font-size:.75rem}.step h3{font-size:1rem;margin:30px 0 8px}.step p{color:#8793a0;font-size:.87rem;margin:0}.process{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:30px 0}.process span{padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:#0e141b;font-size:.82rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.process i{font-style:normal;color:#5e6b78}
.project-controls{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 25px}.filter-btn{background:#0e141b;border:1px solid var(--line);color:#9ca8b4;padding:9px 12px;border-radius:999px;font-weight:700}.filter-btn.is-active{color:#fff;border-color:#728596;background:#141c24}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.project{margin:0;border:1px solid var(--line);border-radius:15px;overflow:hidden;background:#0c1117}.project .photo{aspect-ratio:4/3;overflow:hidden}.project img{width:100%;height:100%;object-fit:cover;transition:transform .25s}.project:hover img{transform:scale(1.025)}.project figcaption{padding:17px}.project b{display:block;font-size:.8rem;color:#6c7a87;text-transform:uppercase;letter-spacing:.1em;margin-bottom:6px}.project span{color:#c4cbd3;font-weight:700}
.form-layout{display:grid;grid-template-columns:1.1fr .9fr;gap:44px;align-items:start}.form-card{border:1px solid var(--line);border-radius:var(--radius);padding:28px;background:#0d1218;box-shadow:var(--shadow)}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.field label{display:block;margin-bottom:7px;font-size:.83rem;font-weight:800;color:#b8c1cb}.field input,.field select,.field textarea{width:100%;background:#080c10;color:#f4f6f8;border:1px solid #29333d;border-radius:10px;padding:13px 13px;outline:none}.field textarea{min-height:145px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:#5c96b7;box-shadow:0 0 0 3px rgba(92,150,183,.14)}.field.full{grid-column:1/-1}.form-note{font-size:.8rem;color:#778491}.form-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.summary{display:none;margin-top:20px;padding:16px;border-radius:12px;background:#080c10;border:1px solid var(--line);white-space:pre-wrap;color:#c5ced7;font-size:.86rem}.summary.is-visible{display:block}.aside-card{border:1px solid var(--line);border-radius:var(--radius);padding:26px;background:linear-gradient(180deg,#111821,#0d1218);position:sticky;top:126px}.aside-card h2{font-family:Cinzel,serif;margin-top:0}.aside-card p{color:#92a0ad}.aside-list{display:grid;gap:9px}.aside-list div{padding:12px;border-radius:10px;border:1px solid var(--line);background:#0b1015;color:#aab5c0}.phone-big{font-family:Cinzel,serif;font-size:1.55rem;color:#fff;display:inline-block;margin:10px 0 16px}
.site-footer{padding:60px 0 22px;background:#05070a;border-top:1px solid var(--line)}.footer-grid{display:grid;grid-template-columns:1.5fr repeat(3,1fr);gap:38px}.footer-brand img{width:180px;border-radius:10px}.tagline{font-family:Cinzel,serif;color:#c4cbd2;max-width:250px}.tagline span{color:#7d8995}.site-footer h2{font-size:.75rem;text-transform:uppercase;letter-spacing:.13em;color:#717e8b;margin-bottom:15px}.site-footer a,.site-footer span{display:block;color:#949fab;font-size:.86rem;margin:8px 0}.site-footer a:hover{color:#fff}.footer-bottom{border-top:1px solid var(--line);margin-top:36px;padding-top:18px;display:flex;justify-content:space-between;gap:20px;color:#687582;font-size:.78rem}.mobile-actions{display:none}.reveal{opacity:0;transform:translateY(16px);transition:opacity .55s ease,transform .55s ease}.reveal.is-visible{opacity:1;transform:none}
@media(max-width:1050px){.primary-nav{gap:14px}.nav-link{font-size:.82rem}.brand{min-width:205px}.brand-wordmark{height:37px}.cards{grid-template-columns:repeat(2,1fr)}.cap-card:nth-child(5){grid-column:auto}.standard-grid{grid-template-columns:repeat(2,1fr)}.standard-card:nth-child(2){border-right:0}.standard-card:nth-child(-n+2){border-bottom:1px solid var(--line)}.steps{grid-template-columns:repeat(2,1fr)}.step:nth-child(2){border-right:0}.step:nth-child(-n+2){border-bottom:1px solid var(--line)}}
@media(max-width:880px){body{padding-bottom:65px}.utility-cap{display:none}.header-inner{height:74px}.brand-shield{width:45px;height:45px}.brand-wordmark{height:34px}.nav-toggle{display:block}.primary-nav{position:fixed;top:107px;left:20px;right:20px;display:none;flex-direction:column;align-items:stretch;background:rgba(9,13,18,.98);border:1px solid #24303a;border-radius:16px;padding:15px;box-shadow:var(--shadow)}.primary-nav.is-open{display:flex}.nav-link{padding:11px}.nav-action{text-align:center}.hero{min-height:600px}.hero-content{padding:88px 0 78px}.display{font-size:clamp(2.9rem,12vw,5.4rem)}.section{padding:72px 0}.section-head,.split,.form-layout{grid-template-columns:1fr}.section-head{gap:10px}.split{gap:30px}.field-grid{grid-template-columns:1fr 1fr;grid-template-rows:280px 230px 230px}.field-grid figure:first-child{grid-column:1/3;grid-row:auto}.field-grid figure:nth-child(4){grid-column:1/3}.support-grid{grid-template-columns:repeat(2,1fr)}.project-grid{grid-template-columns:repeat(2,1fr)}.footer-grid{grid-template-columns:1.4fr 1fr 1fr}.footer-grid>div:last-child{grid-column:2/4}.mobile-actions{position:fixed;left:10px;right:10px;bottom:9px;display:grid;grid-template-columns:.8fr 1.5fr .8fr;z-index:95;background:rgba(8,11,15,.92);border:1px solid #2b3741;border-radius:15px;padding:7px;backdrop-filter:blur(18px);box-shadow:0 15px 45px rgba(0,0,0,.4)}.mobile-actions a{text-align:center;padding:10px 8px;border-radius:10px;color:#d5dce4;font-weight:800;font-size:.8rem}.mobile-actions a:nth-child(2){background:linear-gradient(180deg,#e0e5e9,#a7b0ba);color:#090b0e}.aside-card{position:static}}
@media(max-width:620px){.shell{width:min(100% - 28px,var(--shell))}.utility-inner{justify-content:space-between;gap:10px}.utility-inner span:first-child{display:none}.brand{gap:10px;min-width:0}.brand-wordmark{height:31px;max-width:185px}.hero{min-height:560px;background-position:60% center}.hero:after{width:390px;height:390px;right:-28%;bottom:-23%}.hero-content{padding:76px 0 68px}.display{font-size:clamp(2.5rem,13vw,4.4rem)}.lede{font-size:1rem}.actions .btn{width:100%}.microproof{gap:10px 16px}.standard-grid,.cards,.detail-grid,.steps,.project-grid,.form-grid,.stat-row{grid-template-columns:1fr}.standard-card{border-right:0;border-bottom:1px solid var(--line)}.standard-card:last-child{border-bottom:0}.step{border-right:0;border-bottom:1px solid var(--line)}.field-grid{display:grid;grid-template-columns:1fr;grid-template-rows:none}.field-grid figure,.field-grid figure:first-child,.field-grid figure:nth-child(4){grid-column:auto;grid-row:auto;aspect-ratio:4/3}.support-grid{grid-template-columns:1fr}.cta-inner{display:block}.cta-inner .actions{margin-top:24px}.project-controls{overflow:auto;flex-wrap:nowrap;padding-bottom:5px}.filter-btn{white-space:nowrap}.field.full{grid-column:auto}.footer-grid{grid-template-columns:1fr 1fr}.footer-brand{grid-column:1/-1}.footer-grid>div:last-child{grid-column:auto}.footer-bottom{display:block}.footer-bottom span{margin:5px 0}.page-hero{padding:70px 0 55px}.section{padding:62px 0}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}}

/* ===== V1.1 MOBILE QA CORRECTIONS ===== */
html,body{max-width:100%;overflow-x:clip}
@media(max-width:620px){
  .display{
    font-size:clamp(2.25rem,11vw,3.35rem);
    line-height:.98;
    letter-spacing:-.05em;
    max-width:100%;
  }
  .display .line2{max-width:100%}
}
@media(max-width:420px){
  .display{font-size:clamp(2.15rem,10.7vw,2.85rem)}
}
@media(max-width:620px){
  .utility-inner{justify-content:center}
}


/* ===== V1.2 MOBILE COMMISSIONING / QA CORRECTIONS ===== */
.nav-mobile-only{display:none}
@media(max-width:880px){
  body{padding-bottom:calc(96px + env(safe-area-inset-bottom))}
  body.nav-open{overflow:hidden}
  body.nav-open .mobile-actions{display:none}
  .nav-mobile-only{display:block}
  .primary-nav{
    top:calc(112px + env(safe-area-inset-top));
    max-height:calc(100dvh - 138px - env(safe-area-inset-top));
    overflow-y:auto;
    overscroll-behavior:contain;
  }
  .mobile-actions{
    bottom:calc(8px + env(safe-area-inset-bottom));
    padding:6px;
    border-radius:14px;
  }
  .mobile-actions a{
    min-height:44px;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:7px 6px;
    line-height:1.15;
  }
}
@media(max-width:620px){
  .form-card{padding:22px 18px}
  .field input,.field select{min-height:48px}
  .field textarea{min-height:132px}
  .page-hero{padding-top:64px}
}

/* ===== V1.3 MOBILE FINAL POLISH / FIELD-USE UX ===== */
.tagline span{display:inline}
@media(max-width:880px){
  body.footer-visible .mobile-actions,
  body.form-focused .mobile-actions{display:none}
  .nav-toggle{position:relative;z-index:101}
  .nav-toggle span:not(.sr-only){transition:transform .2s ease,opacity .2s ease}
  body.nav-open .nav-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  body.nav-open .nav-toggle span:nth-child(2){opacity:0}
  body.nav-open .nav-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .primary-nav{
    bottom:calc(12px + env(safe-area-inset-bottom));
    max-height:none;
  }
}
@media(max-width:620px){
  .site-footer{padding-top:48px}
  .footer-grid{grid-template-columns:1fr;gap:24px}
  .footer-brand,.footer-grid>div:last-child{grid-column:auto}
  .footer-brand img{width:148px}
  .tagline{max-width:300px;line-height:1.55}
  .site-footer a,.site-footer span{margin:6px 0}
  .tagline span{display:inline;margin:0}
  .support{padding:16px 18px}
  .mobile-actions{left:12px;right:12px;padding:4px}
  .mobile-actions a{min-height:42px;font-size:.78rem;padding:6px}
}

/* ===== V1.4 MOBILE STABILITY CORRECTION =====
   Restores the proven V1.2 menu geometry and makes the persistent action bar
   context-aware instead of allowing it to compete with primary page CTAs. */
[id]{scroll-margin-top:140px}
@media(max-width:880px){
  /* Do not stretch the menu between top and bottom of the viewport. On iOS
     browser chrome that geometry can collapse/render unpredictably. */
  .primary-nav{
    top:calc(112px + env(safe-area-inset-top));
    bottom:auto;
    max-height:calc(100dvh - 145px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    overflow-y:auto;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
  }
  /* Suppress the floating bar where the page already presents a stronger CTA,
     when navigation is open, at the footer, or while a form field is active. */
  body.sticky-suppressed .mobile-actions,
  body.nav-open .mobile-actions,
  body.form-focused .mobile-actions{display:none}
}

/* ===== V1.5 MOBILE CLEAN READING / RELEASE-CANDIDATE UX =====
   Real-device QA showed that a persistent fixed bottom action bar obscures
   content on iPhone Safari. The fixed overlay is intentionally retired.
   Call, Text, and Request Service remain immediately available in the mobile
   navigation, while page-specific CTAs remain in the content flow. */
@media(max-width:880px){
  body{padding-bottom:0}
  .mobile-actions{display:none !important}
  .nav-mobile-quick{
    color:#d8e0e8;
    border-top:1px solid rgba(255,255,255,.07);
  }
  .nav-mobile-quick + .nav-mobile-quick{border-top:0}
  .nav-action{margin-top:2px}
}


/* ===== V1.6 SERVICE INTAKE PRODUCTION CANDIDATE ===== */
.field-label{display:block;margin-bottom:7px;font-size:.83rem;font-weight:800;color:#b8c1cb}
.field select{
  -webkit-appearance:none;
  appearance:none;
  padding-right:44px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23aab2bc' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 14px center;
  background-size:18px;
}
.field input:-webkit-autofill,
.field input:-webkit-autofill:hover,
.field input:-webkit-autofill:focus,
.field textarea:-webkit-autofill,
.field select:-webkit-autofill{
  -webkit-text-fill-color:#f4f6f8 !important;
  caret-color:#f4f6f8;
  -webkit-box-shadow:0 0 0 1000px #080c10 inset !important;
  box-shadow:0 0 0 1000px #080c10 inset !important;
  border-color:#385064 !important;
  transition:background-color 9999s ease-out 0s;
}
.upload-section{padding-top:2px}
.upload-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:12px}
.upload-heading p{margin:2px 0 0;color:#7f8c99;font-size:.78rem;max-width:560px}
.upload-meter{flex:0 0 auto;font-size:.74rem;color:#8997a5;border:1px solid var(--line);border-radius:999px;padding:6px 10px;background:#090e13}
.upload-meter.is-error{color:#ffada7;border-color:rgba(255,75,63,.55);background:rgba(217,41,29,.08)}
.upload-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.upload-slot{border:1px solid #29333d;border-radius:12px;background:#080c10;padding:14px;min-width:0}
.upload-slot-title{display:block;color:#c3cbd4;font-weight:800;font-size:.78rem;margin-bottom:11px}
.file-button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px 12px;border-radius:9px;background:linear-gradient(180deg,#dce2e8,#aeb8c2);color:#080b0f;font-weight:800;font-size:.78rem;cursor:pointer;border:1px solid #e5e9ed}
.file-button:hover{filter:brightness(1.05)}
.file-button:focus-visible{outline:3px solid rgba(82,168,215,.45);outline-offset:3px}
.file-name{display:block;margin-top:9px;color:#7f8d9a;font-size:.74rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.form-status{display:none;margin-top:14px;padding:12px 14px;border-radius:10px;border:1px solid var(--line);background:#080c10;color:#b9c3cd;font-size:.8rem}
.form-status.is-visible{display:block}
.form-status.is-error{color:#ffb5af;border-color:rgba(255,75,63,.5);background:rgba(217,41,29,.07)}
.form-footnote{margin:11px 0 0;color:#6f7d8a;font-size:.74rem}
.confirmation-hero{min-height:430px;display:flex;align-items:center}
.confirmation-grid .detail{min-height:190px}
@media(max-width:760px){
  .upload-heading{display:block}
  .upload-meter{display:inline-block;margin-top:10px}
  .upload-grid{grid-template-columns:1fr}
  .upload-slot{padding:13px}
}
@media(max-width:620px){
  .form-actions .btn{width:100%}
  .upload-heading p{font-size:.76rem}
  .confirmation-hero{min-height:0}
}


/* ===== V1.7 NETLIFY NOTIFICATION LABEL CORRECTION ===== */
.file-upload-label{max-width:100%;white-space:normal;text-align:center;line-height:1.2}
@media(max-width:760px){
  .file-upload-label{width:100%}
}


/* ===== V1.8 TECHNICAL SUPPORT / COMMISSIONING INTAKE ===== */
.form-section-head{margin:4px 0 22px}
.form-section-head h2{margin:8px 0 0;font-family:"Cinzel",serif;font-size:clamp(1.45rem,2.2vw,2.05rem);line-height:1.1;color:#f4f6f8}
.form-divider{height:1px;background:linear-gradient(90deg,transparent,var(--line),transparent);margin:34px 0}
.technical-upload-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.aside-callout{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);color:#9aa8b5}
@media(max-width:760px){
  .technical-upload-grid{grid-template-columns:1fr}
  .form-section-head{margin-bottom:18px}
  .form-divider{margin:28px 0}
}

/* ===== V1.9 TRAINING & PROJECTS CTA REFINEMENT =====
   Widens the two long-label CTAs so their text no longer wraps awkwardly
   inside a shrink-to-fit button, and eases the Training CTA band's vertical
   rhythm while keeping generous breathing room. */
.cta-training{padding:68px 0}
.cta-training-btn,.cta-projects-btn{flex:0 0 auto;white-space:normal;text-align:center;line-height:1.3;padding:14px 22px}
.cta-training-btn{width:210px}
.cta-projects-btn{width:195px}
@media(max-width:620px){
  .cta-training{padding:66px 0}
  .cta-training-btn,.cta-projects-btn{width:100%}
}

/* ===== V1.10 PRIMARY NAV — TECHNICAL SUPPORT PROMOTION =====
   Technical Support is now a primary desktop item and About moved to
   secondary/footer navigation. Measured fit: brand + six primary items +
   the Request Service CTA need ~830px of nav track, which is available at
   >=1131px but not below — at 881px even a zero gap leaves only ~15px of
   slack, so no amount of spacing tuning fits that band.

   Rather than shrinking type or crushing spacing, the 881-1130px band uses
   the same commissioned hamburger menu as mobile. Standard desktop widths
   (>=1131px) keep the full one-row nav; <=880px mobile behaviour is
   untouched. The menu is anchored to the sticky header so it tracks the
   header instead of relying on a hardcoded offset. */
@media(min-width:881px) and (max-width:1130px){
  .nav-toggle{display:block;position:relative;z-index:101}
  .nav-toggle span:not(.sr-only){transition:transform .2s ease,opacity .2s ease}
  body.nav-open .nav-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  body.nav-open .nav-toggle span:nth-child(2){opacity:0}
  body.nav-open .nav-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

  .primary-nav{
    position:absolute;
    top:calc(100% + 6px);
    left:20px;
    right:20px;
    display:none;
    flex-direction:column;
    align-items:stretch;
    gap:0;
    background:rgba(9,13,18,.98);
    border:1px solid #24303a;
    border-radius:16px;
    padding:15px;
    box-shadow:var(--shadow);
    max-height:calc(100dvh - 160px);
    overflow-y:auto;
    overscroll-behavior:contain;
  }
  .primary-nav.is-open{display:flex}
  .nav-link{font-size:.89rem;padding:11px}
  .nav-mobile-only{display:block}
  .nav-mobile-quick{color:#d8e0e8;border-top:1px solid rgba(255,255,255,.07)}
  .nav-mobile-quick + .nav-mobile-quick{border-top:0}
  .nav-action{text-align:center;margin-top:6px}
}

/* ===== V1.11 ORIENTATION / VIEWPORT REFLOW CORRECTION =====
   Fixes iPhone Safari portrait->landscape->portrait reflow, where the page
   rendered in a narrow left-hand column with blank space to the right and
   could stay narrow after rotating back.

   Cause: V1.1 set `max-width:100%` on the ROOT element. A percentage
   max-width on <html> resolves against the initial containing block, and on
   rotation iOS can retain the pre-rotation width. Because every wrapper below
   is percentage-based (.shell = calc(100% - 40px)), the whole page inherited
   that stale portrait width, and margin-inline:auto then centred it inside the
   stale box - which sits at the left edge of the landscape viewport.
   max-width:100% on <html> is redundant anyway (the root box is already ICB
   width), so it is released here and the root simply tracks the viewport.

   overflow-x:clip is deliberately KEPT on the root as a safety net, but is no
   longer load-bearing: the real overflow source is fixed below.

   text-size-adjust is pinned to 100% so Safari stops inflating type on
   rotation - this preserves the approved typography rather than altering it. */
html{
  max-width:none;
  width:auto;
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}

/* The genuine horizontal-overflow source on both intake pages. `.file-native`
   was never defined, so `.field input{width:100%}` (0,1,1) outranked
   `.sr-only{width:1px}` (0,1,0) and these visually-hidden file inputs rendered
   at full viewport width, forcing a wider-than-viewport layout that the root
   clip was hiding. A wider-than-viewport box is exactly what makes iOS resolve
   a stale layout width on rotation, so this is corrected at source.
   Styling only - markup, field names, form action and the label-triggered
   picker behaviour are untouched. */
.file-native{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  min-height:0!important;
  padding:0!important;
  margin:-1px!important;
  border:0!important;
  overflow:hidden;
  clip:rect(0,0,0,0);
  clip-path:inset(50%);
  white-space:nowrap;
  background:transparent;
}

/* ===== V1.12 HEADER / FOOTER BRAND SCALE REFINEMENT =====
   Final pre-publication visual pass. Scope is limited to the size of the
   header and footer brand assemblies plus footer column rhythm. No markup,
   copy, colour, type-scale, navigation, form or SEO change.

   Because these rules are appended after the original breakpoint overrides,
   every breakpoint value is restated here — an unscoped base declaration
   later in the file would otherwise outrank the earlier media-query values. */

/* --- Header: brand assembly +~15% ---------------------------------------
   Shield 52 -> 60px, wordmark 42 -> 48px. Header height is deliberately
   unchanged (84px desktop / 74px <=880px): a 60px shield leaves 12px of
   clearance per side, and .header-inner already centres its children, so
   the assembly stays vertically centred without growing the bar. The
   wordmark keeps width:auto so its 665x256 source ratio is untouched, and
   the shield keeps its square 1:1 tile so the rendered geometry is the
   approved one, just larger. Both source images are far larger than the
   new render box, so quality is unaffected even at 3x DPR.

   Nav is not crowded: .brand carries min-width:230px (205px <=1050px) and
   the enlarged assembly measures ~199px, so it still sits inside the
   reserved brand track and the nav gap, link spacing and Request Service
   button sizing are all left exactly as commissioned. */
.brand-shield{width:60px;height:60px}
.brand-wordmark{height:48px}

@media(max-width:1050px){
  /* 881-1130px runs the commissioned hamburger menu (V1.10), so the only
     constraint here is the 205px brand track. */
  .brand-wordmark{height:42.5px}
}
@media(max-width:880px){
  .brand-shield{width:52px;height:52px}
  .brand-wordmark{height:39px}
}
@media(max-width:620px){
  /* Narrowest case checked at 320px: 292px shell holds the 153px assembly,
     the 28px header gap and the 46px nav toggle with ~65px to spare. */
  .brand-wordmark{height:35px;max-width:210px}
}

/* --- Footer: brand block +~12%, and column rhythm ----------------------- */
.footer-brand img{width:202px}
/* Slightly more separation between the shield block and the tagline, which
   stays directly beneath it. */
.footer-brand .tagline{margin-top:22px}

/* Wider desktop layouts get more air between the four footer columns while
   the row gap stays at 38px. At 1131px the narrowest link column still
   measures ~210px against a ~172px longest label, so nothing wraps. */
@media(min-width:1131px){
  .footer-grid{column-gap:48px}
}
@media(min-width:1280px){
  .footer-grid{column-gap:58px}
}

@media(max-width:620px){
  .footer-brand img{width:166px}
  .footer-brand .tagline{margin-top:18px}
}

/* --- Footer bottom line: repair the copyright line box ------------------
   The blanket `.site-footer a,.site-footer span{display:block;margin:8px 0}`
   also matched the nested <span data-year> inside the copyright span, so the
   year became a block and split one line into three stacked fragments
   ("©" / "2026" / "AEGIS Air Control LLC"). Pre-existing, and the same leak
   V1.3 already corrected for the tagline bullet; corrected the same way here
   so the line renders as the single intended line. Text is untouched. */
.footer-bottom span span{display:inline;margin:0}

/* ===== V1.13 FOOTER CONTACT BLOCK + COLUMN-COUNT CORRECTION =====
   The Connect column now carries the full contact set: phone, the three
   addresses, and the web address. Measured intrinsic label widths put the
   widest footer label at 192px (support@aegisaircontrol.com), just above the
   previous widest of 186px (Commercial HVAC/R Service).

   A footer column must therefore be at least ~192px wide to hold a label on
   one line. Working back through each layout, that means:
     4 columns (1.5fr + 3x1fr, 48px gaps) needs a >=1048px viewport
     3 columns (1.4fr + 2x1fr, 38px gaps) needs a >=769px viewport
     2 columns (2x1fr, 38px gaps)         needs a >=462px viewport
   The commissioned breakpoints did not line up with those thresholds, so two
   bands were squeezing labels onto a second line. Both are corrected by
   giving the band a column count its own width can actually support.
   Content, order, links and typography are untouched - only column count. */

/* 881-1130px was running four columns even though the navigation has already
   collapsed to the hamburger by then, leaving ~161px columns. Three columns
   here yields 225-298px. >=1131px keeps the commissioned four-column footer,
   which clears the 1048px threshold comfortably.
   The last column's 2/4 span from the <=880px block is released here so the
   block auto-places under the brand instead of floating mid-footer: the
   Connect column is now twice as tall as the others, so a centred span left a
   visible void. Auto-placing keeps the whole footer left-anchored. */
@media(min-width:881px) and (max-width:1130px){
  .footer-grid{grid-template-columns:1.4fr 1fr 1fr}
  .footer-grid>div:last-child{grid-column:auto}
}

/* 621-880px ran three columns down to 621px, where a column is only ~149px.
   This band already wrapped the longer capability labels before the contact
   details were added, and is verified as pre-existing. Two columns give
   271-401px across the band - comfortable for the 192px worst case with the
   widest slack of any footer layout. The last column's 2/4 span from the
   <=880px block is reset, since line 4 does not exist in a two-column grid
   and would otherwise create a phantom third track. */
@media(min-width:621px) and (max-width:880px){
  .footer-grid{grid-template-columns:1fr 1fr}
  .footer-grid>div:last-child{grid-column:auto}
}

/* Addresses are single unbreakable tokens, so they are the one label that
   cannot reflow if a font fallback renders wider than Inter. Allowing a break
   inside them keeps a column from being forced past its track. This is a
   safety net, not the normal rendering: every address fits on one line at
   every breakpoint as measured. */
.site-footer a[href^="mailto:"]{overflow-wrap:anywhere}
