/* ============================================================================
   LONE STAR ILLUMINATION
   Design system + all site styles. Single stylesheet, no build step.
   ========================================================================== */

/* ---------------------------------------------------------------- TOKENS -- */
:root{
  /* Brand palette, pulled from the logo */
  --bg:            #06080c;
  --bg-2:          #0a0e15;
  --surface:       #111825;
  --surface-2:     #161f30;
  --line:          rgba(255,255,255,.10);
  --line-strong:   rgba(255,255,255,.18);

  --blue:          #2f9fff;
  --blue-bright:   #5cb6ff;
  --blue-deep:     #1668c9;
  --blue-ink:      #0c2a4d;
  --glow:          rgba(47,159,255,.45);
  --glow-soft:     rgba(47,159,255,.18);

  --text:          #e9eef6;
  --text-dim:      #b3c0d1;
  --muted:         #8d9bb0;

  --warm:          #ffb648;
  --holiday-red:   #e8404a;
  --holiday-green: #35c17a;

  /* Type */
  --display: 'Anton', 'Arial Narrow', 'Haettenschweiler', Impact, sans-serif;
  --body:    'Barlow', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;

  /* Layout */
  --wrap: 1200px;
  --wrap-narrow: 860px;
  --radius: 14px;
  --radius-sm: 9px;
  --pad-section: clamp(56px, 7vw, 96px);

  --shadow-lg: 0 30px 70px -20px rgba(0,0,0,.85);
  --shadow-md: 0 16px 40px -14px rgba(0,0,0,.7);
  --ease: cubic-bezier(.22,.75,.3,1);
}

/* ------------------------------------------------------------------ RESET -- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--body);
  font-size:17px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
/* width/height attributes are set on images to reserve space (avoids layout
   shift); height:auto keeps them proportional when CSS controls the width.
   Rules that need a fixed height (hero, cards, gallery) override this. */
img,video{ max-width:100%; height:auto; display:block; }
a{ color:var(--blue-bright); text-decoration:none; }
button{ font:inherit; color:inherit; }
h1,h2,h3,h4{ margin:0 0 .5em; line-height:1.05; }
p{ margin:0 0 1.1em; }
ul{ margin:0; padding:0; list-style:none; }
:focus-visible{ outline:2px solid var(--blue-bright); outline-offset:3px; border-radius:4px; }

/* skip link for keyboard/screen-reader users */
.skip{
  position:absolute; left:-9999px; top:0; z-index:200;
  background:var(--blue); color:#001427; padding:12px 18px; font-weight:700;
}
.skip:focus{ left:12px; top:12px; }

/* ------------------------------------------------------------- PRIMITIVES -- */
.container{ width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:22px; }
.narrow{ max-width:var(--wrap-narrow); }
.section{ padding-block:var(--pad-section); position:relative; }
.section--tight{ padding-block:clamp(48px,6vw,80px); }
.section--alt{ background:linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 40%, var(--bg) 100%); }

.eyebrow{
  font-size:.78rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase;
  color:var(--blue); margin:0 0 14px; display:flex; align-items:center; gap:10px;
}
.eyebrow--center{ justify-content:center; }
.eyebrow::before{
  content:""; width:26px; height:2px; background:linear-gradient(90deg,transparent,var(--blue));
  flex:none;
}

h1,h2,h3,.display{ font-family:var(--display); font-weight:400; letter-spacing:.5px; }
.display-xl{ font-size:clamp(2.9rem, 8.5vw, 6rem); line-height:.94; text-transform:uppercase; }
.display-lg{ font-size:clamp(2.2rem, 5.2vw, 3.7rem); line-height:1; text-transform:uppercase; }
.display-md{ font-size:clamp(1.55rem, 3vw, 2.15rem); line-height:1.08; text-transform:uppercase; }

/* metallic silver text used on big headings */
.metal{
  background:linear-gradient(180deg,#ffffff 0%,#dfe6ef 38%,#9aa7b8 56%,#f2f6fb 78%,#8fa0b5 100%);
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent; color:transparent;
}
.blue-text{ color:var(--blue); text-shadow:0 0 26px var(--glow); }
.lead{ font-size:clamp(1.02rem,1.55vw,1.2rem); color:var(--text-dim); }
.center{ text-align:center; }
.muted{ color:var(--muted); }

/* buttons */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding:15px 30px; border-radius:var(--radius-sm); border:1px solid transparent;
  font-weight:700; font-size:.94rem; letter-spacing:.09em; text-transform:uppercase;
  cursor:pointer; transition:transform .2s var(--ease), box-shadow .25s var(--ease), background .2s, border-color .2s;
  white-space:nowrap;
}
.btn:hover{ transform:translateY(-2px); }
.btn:active{ transform:translateY(0); }
.btn-primary{
  background:linear-gradient(180deg,var(--blue-bright),var(--blue-deep));
  color:#03121f; box-shadow:0 8px 26px -8px var(--glow), inset 0 1px 0 rgba(255,255,255,.4);
}
.btn-primary:hover{ box-shadow:0 14px 38px -8px var(--glow), inset 0 1px 0 rgba(255,255,255,.55); }
.btn-ghost{
  background:rgba(255,255,255,.03); border-color:var(--line-strong); color:var(--text);
  backdrop-filter:blur(6px);
}
.btn-ghost:hover{ border-color:var(--blue); background:rgba(47,159,255,.10); color:#fff; }
.btn-block{ width:100%; }
.btn svg{ width:17px; height:17px; flex:none; }

/* generic card */
.card{
  background:linear-gradient(180deg, var(--surface) 0%, rgba(17,24,37,.55) 100%);
  border:1px solid var(--line); border-radius:var(--radius); padding:26px;
}

/* small star divider */
.star-rule{ display:flex; align-items:center; gap:16px; justify-content:center; margin:26px 0; }
.star-rule::before,.star-rule::after{
  content:""; height:1px; flex:1; max-width:160px;
  background:linear-gradient(90deg,transparent,var(--blue-deep));
}
.star-rule::after{ background:linear-gradient(90deg,var(--blue-deep),transparent); }
.star-rule svg{ width:16px; height:16px; color:var(--blue); filter:drop-shadow(0 0 8px var(--glow)); }

/* Scroll reveal.
   Content is visible by default. The hidden state is only applied when
   JavaScript has confirmed it is running (html.js), so a JS failure can never
   leave the page blank. */
.reveal{ opacity:1; transform:none; }
.js .reveal{ opacity:0; transform:translateY(26px); transition:opacity .7s var(--ease), transform .7s var(--ease); }
.js .reveal.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){
  .js .reveal{ opacity:1; transform:none; transition:none; }
  html{ scroll-behavior:auto; }
}

/* ------------------------------------------------------------------- NAV -- */
.nav{
  position:sticky; top:0; z-index:100;
  background:rgba(6,8,12,.72); backdrop-filter:blur(14px) saturate(1.3);
  border-bottom:1px solid transparent; transition:background .3s, border-color .3s;
}
.nav.scrolled{ background:rgba(6,8,12,.94); border-bottom-color:var(--line); }
.nav-inner{ display:flex; align-items:center; gap:20px; height:76px; }
.nav-logo{ flex:none; display:flex; align-items:center; }
/* The logo file has a solid black background; screen-blending drops that black
   out against the dark nav so no box edge shows. */
.nav-logo img{ width:206px; height:auto; mix-blend-mode:screen; }
.nav-links{ display:flex; align-items:center; gap:2px; margin-left:auto; }
.nav-links a{
  color:var(--text-dim); font-size:.8rem; font-weight:600; letter-spacing:.08em;
  text-transform:uppercase; padding:10px 11px; border-radius:7px; white-space:nowrap;
  transition:color .18s, background .18s;
}
.nav-links a:hover{ color:#fff; background:rgba(255,255,255,.06); }
.nav-links a.active{ color:var(--blue); }
.nav-cta{ display:flex; align-items:center; gap:12px; margin-left:14px; }
.nav-phone{
  display:inline-flex; align-items:center; gap:8px; color:#fff; font-weight:700;
  font-size:.95rem; white-space:nowrap;
}
.nav-phone svg{ width:16px; height:16px; color:var(--blue); }
.nav-phone:hover{ color:var(--blue-bright); }
.nav-cta .btn{ padding:12px 22px; font-size:.8rem; }

.nav-toggle{
  display:none; margin-left:auto; background:none; border:1px solid var(--line-strong);
  border-radius:8px; width:46px; height:42px; cursor:pointer; align-items:center; justify-content:center;
}
.nav-toggle span{ display:block; width:20px; height:2px; background:#fff; position:relative; transition:.25s; }
.nav-toggle span::before,.nav-toggle span::after{
  content:""; position:absolute; left:0; width:20px; height:2px; background:#fff; transition:.25s;
}
.nav-toggle span::before{ top:-6px; } .nav-toggle span::after{ top:6px; }
.nav.open .nav-toggle span{ background:transparent; }
.nav.open .nav-toggle span::before{ top:0; transform:rotate(45deg); }
.nav.open .nav-toggle span::after{ top:0; transform:rotate(-45deg); }

@media (max-width:1080px){
  .nav-links a{ padding:10px 9px; font-size:.78rem; }
  .nav-logo img{ width:180px; }
  .nav-phone{ display:none; }
}
@media (max-width:900px){
  .nav-inner{ height:66px; }
  .nav-toggle{ display:flex; }
  .nav-links,.nav-cta{
    position:absolute; left:0; right:0; top:100%;
    flex-direction:column; align-items:stretch; gap:0; margin:0;
    background:rgba(8,11,17,.99); border-bottom:1px solid var(--line);
    padding:10px 22px; display:none;
  }
  .nav.open .nav-links{ display:flex; }
  .nav.open .nav-cta{ display:flex; padding-top:0; padding-bottom:22px; border-bottom:1px solid var(--line); }
  .nav-links a{ padding:15px 6px; font-size:.95rem; border-bottom:1px solid rgba(255,255,255,.05); }
  .nav-cta .btn{ width:100%; padding:16px; font-size:.9rem; }
}

/* -------------------------------------------------------------- HERO ------ */
.hero{ position:relative; min-height:min(92vh,860px); display:flex; align-items:center; overflow:hidden; }
.hero--short{ min-height:min(64vh,560px); }
.hero-media{ position:absolute; inset:0; z-index:0; }
.hero-media img,.hero-media video{
  width:100%; height:100%; object-fit:cover;
  filter:brightness(1.25) saturate(1.2) contrast(1.05);
}
.hero-media::after{
  content:""; position:absolute; inset:0;
  background:
    linear-gradient(90deg, rgba(4,6,10,.9) 0%, rgba(4,6,10,.62) 40%, rgba(4,6,10,.08) 72%, rgba(4,6,10,.3) 100%),
    linear-gradient(180deg, rgba(4,6,10,.6) 0%, rgba(4,6,10,0) 32%, rgba(4,6,10,.55) 78%, rgba(4,6,10,.9) 100%);
}
.hero-inner{ position:relative; z-index:2; padding-block:110px 90px; width:100%; }
.hero-copy{ max-width:680px; }
.hero h1{ margin-bottom:20px; }
.hero .lead{ max-width:540px; margin-bottom:32px; }
.hero-actions{ display:flex; flex-wrap:wrap; gap:14px; }
.hero-badge{
  display:inline-flex; align-items:center; gap:9px; margin-bottom:24px;
  padding:9px 17px; border:1px solid rgba(47,159,255,.4); border-radius:999px;
  background:rgba(47,159,255,.08); backdrop-filter:blur(6px);
  font-size:.76rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:#dceeff;
}
.hero-badge svg{ width:14px; height:14px; color:var(--blue); }

/* trust strip under hero */
.trust{ background:linear-gradient(90deg,var(--blue-deep),var(--blue)); color:#02182e; }
.trust ul{ display:grid; grid-template-columns:repeat(4,1fr); }
.trust li{
  padding:22px 16px; text-align:center; border-left:1px solid rgba(2,24,46,.18);
  font-weight:700; font-size:.9rem; letter-spacing:.05em;
  display:flex; align-items:center; justify-content:center; gap:10px;
}
.trust li:first-child{ border-left:none; }
.trust svg{ width:19px; height:19px; flex:none; }
@media (max-width:820px){
  .trust ul{ grid-template-columns:repeat(2,1fr); }
  .trust li:nth-child(3){ border-left:none; }
  .trust li{ border-top:1px solid rgba(2,24,46,.18); font-size:.82rem; padding:16px 10px; }
  .trust li:nth-child(-n+2){ border-top:none; }
}

/* ---------------------------------------------------------- SERVICE CARDS -- */
.svc-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
@media (max-width:900px){ .svc-grid{ grid-template-columns:1fr; max-width:520px; margin-inline:auto; } }
.svc{
  position:relative; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden;
  background:var(--surface); display:flex; flex-direction:column;
  transition:transform .3s var(--ease), border-color .3s, box-shadow .3s;
}
.svc:hover{ transform:translateY(-6px); border-color:rgba(47,159,255,.55); box-shadow:0 26px 50px -22px rgba(0,0,0,.9), 0 0 0 1px var(--glow-soft); }
.svc-img{ aspect-ratio:16/10; overflow:hidden; position:relative; }
.svc-img img{ width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease); }
.svc:hover .svc-img img{ transform:scale(1.06); }
.svc-img::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,transparent 45%, rgba(17,24,37,.96) 100%); }
.svc-body{ padding:24px 26px 28px; flex:1; display:flex; flex-direction:column; }
.svc-body h3{ font-size:1.35rem; margin-bottom:10px; }
.svc-body p{ color:var(--muted); font-size:.97rem; flex:1; }
.svc-link{ display:inline-flex; align-items:center; gap:8px; font-weight:700; font-size:.85rem; letter-spacing:.1em; text-transform:uppercase; color:var(--blue); }
.svc-link svg{ width:15px; height:15px; transition:transform .25s var(--ease); }
.svc:hover .svc-link svg{ transform:translateX(5px); }
.svc-tag{
  position:absolute; top:14px; left:14px; z-index:2; padding:6px 13px; border-radius:999px;
  background:rgba(6,8,12,.8); border:1px solid var(--line-strong); backdrop-filter:blur(6px);
  font-size:.68rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:#cfe6ff;
}

/* ------------------------------------------------------- COLOR SWATCH DEMO */
.colordemo{
  display:grid; grid-template-columns:1fr 340px; gap:36px; align-items:center;
}
@media (max-width:980px){ .colordemo{ grid-template-columns:1fr; gap:26px; } }
.colordemo-stage{
  position:relative; border-radius:var(--radius); overflow:hidden;
  border:1px solid var(--line); box-shadow:var(--shadow-lg); aspect-ratio:4/3; background:#000;
}
.colordemo-stage img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  opacity:0; transition:opacity .65s var(--ease);
}
.colordemo-stage img.on{ opacity:1; }
.colordemo-caption{
  position:absolute; left:0; right:0; bottom:0; z-index:3; padding:34px 22px 16px;
  background:linear-gradient(180deg,transparent,rgba(4,6,10,.9));
  font-size:.82rem; letter-spacing:.12em; text-transform:uppercase; font-weight:700; color:#dbe7f5;
}
.swatches{ display:flex; gap:14px; flex-wrap:wrap; }
@media (max-width:980px){ .swatches{ justify-content:center; } }
.swatch{
  width:62px; height:62px; border-radius:50%; border:2px solid rgba(255,255,255,.22);
  cursor:pointer; position:relative; transition:transform .25s var(--ease), border-color .25s, box-shadow .25s;
}
.swatch:hover{ transform:scale(1.09); }
.swatch[aria-pressed="true"]{ border-color:#fff; transform:scale(1.09); }
.swatch::after{
  content:attr(data-label); position:absolute; left:50%; top:calc(100% + 9px); transform:translateX(-50%);
  font-size:.66rem; letter-spacing:.13em; text-transform:uppercase; font-weight:700;
  color:var(--muted); white-space:nowrap; font-family:var(--body);
}
.swatch[aria-pressed="true"]::after{ color:#fff; }
.swatches{ margin-bottom:34px; }

/* ------------------------------------------------------------- CALCULATOR -- */
.calc{
  background:
    radial-gradient(120% 120% at 0% 0%, rgba(47,159,255,.14), transparent 55%),
    linear-gradient(180deg,var(--surface),var(--bg-2));
  border:1px solid var(--line-strong); border-radius:var(--radius);
  padding:clamp(26px,4vw,44px); box-shadow:var(--shadow-lg);
}
.calc-grid{ display:grid; grid-template-columns:1fr 300px; gap:38px; align-items:center; }
@media (max-width:900px){ .calc-grid{ grid-template-columns:1fr; gap:28px; } }
.calc label{ display:block; font-size:.8rem; letter-spacing:.14em; text-transform:uppercase; font-weight:700; color:var(--muted); margin-bottom:14px; }
.calc-input-row{ display:flex; align-items:center; gap:14px; margin-bottom:8px; }
.calc-number{
  width:118px; padding:13px 14px; font-size:1.5rem; font-family:var(--display); letter-spacing:1px;
  background:var(--bg); border:1px solid var(--line-strong); border-radius:var(--radius-sm); color:#fff;
  text-align:center; -moz-appearance:textfield;
}
.calc-number::-webkit-outer-spin-button,.calc-number::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.calc-unit{ font-size:.85rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); font-weight:700; }
input[type=range]{
  -webkit-appearance:none; appearance:none; width:100%; height:6px; border-radius:99px; outline:none;
  background:linear-gradient(90deg,var(--blue) 0%,var(--blue) var(--pct,40%), rgba(255,255,255,.14) var(--pct,40%));
  margin:18px 0 8px;
}
input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none; width:24px; height:24px; border-radius:50%; cursor:pointer;
  background:linear-gradient(180deg,#fff,#bcd7f0); border:2px solid var(--blue);
  box-shadow:0 0 16px var(--glow);
}
input[type=range]::-moz-range-thumb{
  width:22px; height:22px; border-radius:50%; cursor:pointer;
  background:linear-gradient(180deg,#fff,#bcd7f0); border:2px solid var(--blue); box-shadow:0 0 16px var(--glow);
}
.calc-scale{ display:flex; justify-content:space-between; font-size:.75rem; color:var(--muted); letter-spacing:.08em; }
.calc-hint{ font-size:.86rem; color:var(--muted); margin:16px 0 0; }
.calc-out{
  text-align:center; padding:28px 22px; border-radius:var(--radius);
  background:rgba(6,8,12,.6); border:1px solid rgba(47,159,255,.32);
  box-shadow:inset 0 0 40px rgba(47,159,255,.08);
}
.calc-out .tier{ font-size:.76rem; letter-spacing:.18em; text-transform:uppercase; color:var(--blue); font-weight:700; margin-bottom:8px; }
.calc-out .amount{ font-family:var(--display); font-size:clamp(2rem,4.4vw,2.7rem); line-height:1; margin-bottom:6px; }
.calc-out .unit{ font-size:.8rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); font-weight:700; }
.calc-out .btn{ margin-top:20px; }
.calc-disclaimer{
  margin-top:22px; padding-top:20px; border-top:1px solid var(--line);
  font-size:.82rem; color:var(--muted); display:flex; gap:11px; align-items:flex-start;
}
.calc-disclaimer svg{ width:17px; height:17px; color:var(--blue); flex:none; margin-top:3px; }

/* ---------------------------------------------------------------- PRICING -- */
.tiers{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; align-items:start; }
@media (max-width:940px){ .tiers{ grid-template-columns:1fr; max-width:480px; margin-inline:auto; } }
.tier{
  border:1px solid var(--line); border-radius:var(--radius); background:var(--surface);
  padding:30px 28px 32px; position:relative; transition:transform .3s var(--ease), border-color .3s;
}
.tier:hover{ transform:translateY(-4px); border-color:var(--line-strong); }
.tier--featured{
  border-color:var(--blue); box-shadow:0 0 0 1px var(--glow-soft), 0 24px 60px -26px rgba(47,159,255,.55);
  background:linear-gradient(180deg, rgba(47,159,255,.09), var(--surface) 40%);
}
.tier-flag{
  position:absolute; top:0; left:0; right:0; padding:8px; text-align:center;
  background:linear-gradient(90deg,var(--blue-deep),var(--blue)); color:#03121f;
  font-size:.7rem; font-weight:800; letter-spacing:.16em; text-transform:uppercase;
  border-radius:var(--radius) var(--radius) 0 0;
}
.tier--featured{ padding-top:52px; }
.tier h3{ font-size:1.55rem; margin-bottom:4px; }
.tier .blurb{ color:var(--muted); font-size:.9rem; margin-bottom:20px; }
.tier .price{ font-family:var(--display); font-size:3rem; line-height:1; }
.tier .price small{ font-family:var(--body); font-size:.85rem; font-weight:600; color:var(--muted); letter-spacing:.06em; margin-left:6px; }
.tier ul{ margin:24px 0 26px; display:grid; gap:12px; }
.tier li{ display:flex; gap:11px; align-items:flex-start; font-size:.94rem; color:var(--text-dim); }
.tier li svg{ width:17px; height:17px; color:var(--blue); flex:none; margin-top:4px; }

/* ------------------------------------------------------------------- WHY --- */
.why-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
@media (max-width:880px){ .why-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .why-grid{ grid-template-columns:1fr; } }
.why{ background:var(--bg-2); padding:30px 26px; transition:background .25s; }
.why:hover{ background:var(--surface); }
.why-ico{
  width:44px; height:44px; border-radius:11px; display:grid; place-items:center; margin-bottom:16px;
  background:rgba(47,159,255,.12); border:1px solid rgba(47,159,255,.3);
}
.why-ico svg{ width:21px; height:21px; color:var(--blue); }
.why h3{ font-size:1.05rem; letter-spacing:.06em; margin-bottom:8px; }
.why p{ margin:0; color:var(--muted); font-size:.93rem; }

/* --------------------------------------------------------------- GALLERY --- */
.gal-filters{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin-bottom:34px; }
.chip{
  padding:10px 20px; border-radius:999px; border:1px solid var(--line-strong);
  background:rgba(255,255,255,.03); color:var(--text-dim); cursor:pointer;
  font-size:.8rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  transition:.22s var(--ease);
}
.chip:hover{ border-color:var(--blue); color:#fff; }
.chip[aria-pressed="true"]{ background:var(--blue); border-color:var(--blue); color:#02182e; }

.gal-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
@media (max-width:900px){ .gal-grid{ grid-template-columns:repeat(2,1fr); gap:12px; } }
@media (max-width:520px){ .gal-grid{ grid-template-columns:1fr; } }
.gal-item{
  position:relative; border-radius:var(--radius-sm); overflow:hidden; cursor:pointer;
  border:1px solid var(--line); background:var(--surface); aspect-ratio:4/3;
  transition:transform .3s var(--ease), border-color .3s, box-shadow .3s;
}
.gal-item.tall{ aspect-ratio:3/4; }
.gal-item:hover{ transform:translateY(-4px); border-color:rgba(47,159,255,.6); box-shadow:0 20px 44px -20px rgba(0,0,0,.9); }
.gal-item img{ width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease); }
.gal-item:hover img{ transform:scale(1.07); }
.gal-cap{
  position:absolute; inset:auto 0 0 0; padding:32px 16px 14px; z-index:2;
  background:linear-gradient(180deg,transparent,rgba(4,6,10,.92));
  font-size:.82rem; font-weight:600; color:#e4edf8;
  opacity:0; transform:translateY(8px); transition:.3s var(--ease);
}
.gal-item:hover .gal-cap{ opacity:1; transform:none; }
.gal-item.hide{ display:none; }

/* lightbox */
.lb{
  position:fixed; inset:0; z-index:200; background:rgba(3,5,9,.96); backdrop-filter:blur(8px);
  display:none; align-items:center; justify-content:center; padding:24px;
}
.lb.open{ display:flex; }
.lb img{ max-width:min(1200px,94vw); max-height:82vh; border-radius:10px; box-shadow:var(--shadow-lg); }
.lb-cap{ position:absolute; bottom:26px; left:0; right:0; text-align:center; color:var(--text-dim); font-size:.92rem; padding-inline:20px; }
.lb-btn{
  position:absolute; background:rgba(255,255,255,.07); border:1px solid var(--line-strong);
  width:52px; height:52px; border-radius:50%; cursor:pointer; display:grid; place-items:center;
  transition:.2s; color:#fff;
}
.lb-btn:hover{ background:var(--blue); border-color:var(--blue); color:#02182e; }
.lb-btn svg{ width:22px; height:22px; }
.lb-prev{ left:18px; } .lb-next{ right:18px; } .lb-close{ top:18px; right:18px; width:46px; height:46px; }
@media (max-width:640px){
  .lb-prev{ left:8px; } .lb-next{ right:8px; }
  .lb-btn{ width:44px; height:44px; }
}

/* -------------------------------------------------------------- REVIEWS --- */
.reviews{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
@media (max-width:940px){ .reviews{ grid-template-columns:1fr; max-width:600px; margin-inline:auto; } }
.review{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:28px; display:flex; flex-direction:column; }
.stars{ display:flex; gap:3px; margin-bottom:16px; }
.stars svg{ width:17px; height:17px; color:var(--warm); }
.review p{ font-size:.97rem; color:var(--text-dim); flex:1; font-style:italic; }
.review footer{ border-top:1px solid var(--line); padding-top:16px; margin-top:8px; }
.review .name{ font-weight:700; color:#fff; }
.review .loc{ font-size:.85rem; color:var(--muted); display:flex; align-items:center; gap:6px; margin-top:3px; }
.review .loc svg{ width:13px; height:13px; color:var(--blue); }

/* ------------------------------------------------------------------ FAQ --- */
.faq{ border-top:1px solid var(--line); }
.faq details{ border-bottom:1px solid var(--line); }
.faq summary{
  cursor:pointer; padding:22px 46px 22px 4px; position:relative; list-style:none;
  font-weight:700; font-size:1.04rem; color:#fff; transition:color .2s;
}
.faq summary::-webkit-details-marker{ display:none; }
.faq summary:hover{ color:var(--blue-bright); }
.faq summary::after{
  content:""; position:absolute; right:12px; top:50%; width:11px; height:11px;
  border-right:2px solid var(--blue); border-bottom:2px solid var(--blue);
  transform:translateY(-70%) rotate(45deg); transition:transform .25s var(--ease);
}
.faq details[open] summary::after{ transform:translateY(-30%) rotate(-135deg); }
.faq .answer{ padding:0 46px 24px 4px; color:var(--muted); font-size:.97rem; }
.faq .answer p:last-child{ margin-bottom:0; }

/* ----------------------------------------------------------- SERVICE AREA -- */
.area-grid{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
@media (max-width:900px){ .area-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:520px){ .area-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
.area-grid li{
  display:flex; align-items:center; gap:8px; padding:13px 14px;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-sm);
  font-size:.9rem; font-weight:600; color:var(--text-dim); transition:.22s;
}
.area-grid li:hover{ border-color:rgba(47,159,255,.5); color:#fff; }
.area-grid li{ min-width:0; }
.area-grid svg{ width:14px; height:14px; color:var(--blue); flex:none; }

/* -------------------------------------------------------------- CTA BAND -- */
.cta-band{ position:relative; overflow:hidden; border-block:1px solid var(--line); }
.cta-band .bg{ position:absolute; inset:0; z-index:0; }
.cta-band .bg img{ width:100%; height:100%; object-fit:cover; }
.cta-band .bg::after{ content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(4,6,10,.95),rgba(4,6,10,.72) 60%,rgba(4,6,10,.9)); }
.cta-band .container{ position:relative; z-index:2; }
.cta-actions{ display:flex; gap:14px; flex-wrap:wrap; justify-content:center; margin-top:28px; }

/* ----------------------------------------------------------------- FORM --- */
.contact-grid{ display:grid; grid-template-columns:1.15fr .85fr; gap:44px; align-items:start; }
@media (max-width:940px){ .contact-grid{ grid-template-columns:1fr; gap:32px; } }
.field{ margin-bottom:20px; }
.field label{ display:block; font-size:.78rem; letter-spacing:.13em; text-transform:uppercase; font-weight:700; color:var(--muted); margin-bottom:9px; }
.field label .req{ color:var(--blue); }
.field input,.field select,.field textarea{
  width:100%; padding:14px 16px; font:inherit; font-size:1rem; color:#fff;
  background:var(--bg); border:1px solid var(--line-strong); border-radius:var(--radius-sm);
  transition:border-color .2s, box-shadow .2s;
}
.field textarea{ min-height:132px; resize:vertical; }
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none; border-color:var(--blue); box-shadow:0 0 0 3px rgba(47,159,255,.16);
}
.field input::placeholder,.field textarea::placeholder{ color:#5d6c81; }
.field select{ appearance:none; background-image:linear-gradient(45deg,transparent 50%,var(--blue) 50%),linear-gradient(135deg,var(--blue) 50%,transparent 50%); background-position:calc(100% - 22px) 22px, calc(100% - 16px) 22px; background-size:6px 6px,6px 6px; background-repeat:no-repeat; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:560px){ .field-row{ grid-template-columns:1fr; gap:0; } }
.form-note{ font-size:.84rem; color:var(--muted); margin-top:14px; }
.form-status{ margin-top:16px; padding:15px 18px; border-radius:var(--radius-sm); font-size:.94rem; display:none; }
.form-status.show{ display:block; }
.form-status.ok{ background:rgba(53,193,122,.12); border:1px solid rgba(53,193,122,.4); color:#8ef0be; }
.form-status.err{ background:rgba(232,64,74,.1); border:1px solid rgba(232,64,74,.4); color:#ffb0b5; }

.contact-card{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:30px; margin-bottom:18px; }
.contact-card h3{ font-size:1.15rem; margin-bottom:20px; }
.contact-row{ display:flex; gap:14px; align-items:flex-start; padding:14px 0; border-top:1px solid var(--line); }
.contact-row:first-of-type{ border-top:none; padding-top:0; }
.contact-row .ico{ width:38px; height:38px; border-radius:10px; display:grid; place-items:center; background:rgba(47,159,255,.12); border:1px solid rgba(47,159,255,.3); flex:none; }
.contact-row .ico svg{ width:17px; height:17px; color:var(--blue); }
.contact-row .k{ font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); font-weight:700; }
.contact-row .v{ font-size:1.03rem; font-weight:600; color:#fff; word-break:break-word; }
.contact-row a.v:hover{ color:var(--blue-bright); }

/* ---------------------------------------------------------------- FOOTER -- */
.footer{ background:var(--bg-2); border-top:1px solid var(--line); padding-block:60px 0; }
.footer-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:40px; }
@media (max-width:860px){ .footer-grid{ grid-template-columns:1fr; gap:34px; } }
.footer-logo img{ width:230px; border-radius:10px; border:1px solid var(--line); margin-bottom:18px; }
.footer p{ color:var(--muted); font-size:.93rem; }
.footer h4{ font-family:var(--body); font-size:.78rem; letter-spacing:.16em; text-transform:uppercase; color:var(--blue); margin-bottom:18px; }
.footer-links li{ margin-bottom:11px; }
.footer-links a{ color:var(--text-dim); font-size:.94rem; }
.footer-links a:hover{ color:#fff; }
.footer-contact li{ margin-bottom:13px; display:flex; gap:10px; align-items:flex-start; color:var(--text-dim); font-size:.94rem; }
.footer-contact svg{ width:15px; height:15px; color:var(--blue); flex:none; margin-top:4px; }
.footer-contact a{ color:var(--text-dim); }
.footer-contact a:hover{ color:#fff; }
.footer-bottom{
  margin-top:48px; padding-block:22px; border-top:1px solid var(--line);
  display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap;
  font-size:.84rem; color:var(--muted);
}

/* ------------------------------------------------------- MOBILE CALL BAR -- */
.callbar{
  position:fixed; left:0; right:0; bottom:0; z-index:90; display:none;
  grid-template-columns:1fr 1fr; gap:1px; background:var(--line);
  border-top:1px solid var(--line-strong);
}
.callbar a{
  padding:15px 10px; text-align:center; font-weight:800; font-size:.86rem;
  letter-spacing:.1em; text-transform:uppercase; display:flex; align-items:center;
  justify-content:center; gap:8px;
}
.callbar svg{ width:16px; height:16px; }
.callbar .call{ background:var(--surface); color:#fff; }
.callbar .quote{ background:linear-gradient(180deg,var(--blue-bright),var(--blue-deep)); color:#03121f; }
@media (max-width:900px){
  .callbar{ display:grid; }
  body{ padding-bottom:54px; }
}

/* --------------------------------------------------------------- UTILITY -- */
.split{ display:grid; grid-template-columns:1fr 1fr; gap:48px; align-items:center; }
@media (max-width:900px){ .split{ grid-template-columns:1fr; gap:30px; } }
.split-media{ border-radius:var(--radius); overflow:hidden; border:1px solid var(--line); box-shadow:var(--shadow-lg); }
.split-media img,.split-media video{ width:100%; aspect-ratio:4/3; object-fit:cover; }
.split-media.portrait img,.split-media.portrait video{ aspect-ratio:9/16; }
.checklist{ display:grid; gap:13px; margin:26px 0; }
.checklist li{ display:flex; gap:12px; align-items:flex-start; color:var(--text-dim); }
.checklist svg{ width:19px; height:19px; color:var(--blue); flex:none; margin-top:3px; }

.steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; counter-reset:step; }
@media (max-width:900px){ .steps{ grid-template-columns:1fr 1fr; } }
@media (max-width:540px){ .steps{ grid-template-columns:1fr; } }
.step{ position:relative; padding-top:16px; }
.step-num{
  font-family:var(--display); font-size:.9rem; color:#03121f; width:38px; height:38px;
  background:linear-gradient(180deg,var(--blue-bright),var(--blue-deep)); border-radius:9px;
  display:grid; place-items:center; margin-bottom:16px; box-shadow:0 6px 18px -6px var(--glow);
}
.step h3{ font-size:1.05rem; letter-spacing:.05em; margin-bottom:8px; }
.step p{ color:var(--muted); font-size:.93rem; margin:0; }

.note-band{
  background:rgba(47,159,255,.07); border:1px solid rgba(47,159,255,.28);
  border-radius:var(--radius); padding:22px 26px; display:flex; gap:14px; align-items:flex-start;
}
.note-band svg{ width:20px; height:20px; color:var(--blue); flex:none; margin-top:3px; }
.note-band p{ margin:0; font-size:.94rem; color:var(--text-dim); }

.pill-row{ display:flex; flex-wrap:wrap; gap:9px; margin-top:18px; }
.pill{
  padding:7px 15px; border-radius:999px; border:1px solid var(--line-strong);
  background:rgba(255,255,255,.03); font-size:.79rem; font-weight:600; color:var(--text-dim);
}

/* ------------------------------------------------- CALCULATOR PRESETS -- */
.presets{ display:flex; flex-wrap:wrap; gap:9px; margin-top:20px; }
.preset{
  display:flex; flex-direction:column; align-items:flex-start; gap:2px;
  padding:10px 15px; border-radius:var(--radius-sm); cursor:pointer;
  background:rgba(255,255,255,.03); border:1px solid var(--line-strong);
  color:var(--text-dim); font-size:.83rem; font-weight:700; letter-spacing:.02em;
  transition:.22s var(--ease);
}
.preset small{ font-size:.71rem; font-weight:600; color:var(--muted); letter-spacing:.06em; }
.preset:hover{ border-color:var(--blue); color:#fff; background:rgba(47,159,255,.09); }
.preset[aria-pressed="true"]{ border-color:var(--blue); background:rgba(47,159,255,.16); color:#fff; }
.preset[aria-pressed="true"] small{ color:var(--blue-bright); }

/* --------------------------------------------- NARROW-SCREEN SAFEGUARDS -- */
/* Grid/flex children default to min-width:auto, which lets a wide child (a
   long nowrap button, a big image) push its track wider than the screen and
   cause horizontal scrolling. These let tracks actually shrink. */
.colordemo > *, .split > *, .calc-grid > *, .contact-grid > *,
.svc-grid > *, .tiers > *, .reviews > *, .steps > * { min-width:0; }

@media (max-width:560px){
  /* long button labels wrap instead of forcing the page wider */
  .btn{ white-space:normal; text-align:center; padding:15px 22px; font-size:.88rem; }
  .hero-actions .btn, .cta-actions .btn{ width:100%; }
}

/* ------------------------------------------------------- VOLUME RATE TABLE -- */
.ratetable{
  margin-top:26px; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden;
  background:rgba(6,8,12,.45);
}
.ratetable-head,.rate-row{
  display:grid; grid-template-columns:1fr 1fr 1fr; align-items:center;
  padding:13px 20px; gap:12px;
}
.ratetable-head{
  background:rgba(47,159,255,.10); border-bottom:1px solid rgba(47,159,255,.22);
  font-size:.72rem; letter-spacing:.15em; text-transform:uppercase; font-weight:700; color:var(--blue);
}
.rate-row{ border-top:1px solid var(--line); font-variant-numeric:tabular-nums; }
.rate-row:first-child{ border-top:none; }
.rate-ft{ font-weight:700; color:var(--text); }
.rate-per{ color:var(--blue-bright); font-weight:700; }
.rate-per small{ font-size:.72rem; color:var(--muted); font-weight:600; margin-left:2px; }
.rate-total{ text-align:right; font-family:var(--display); font-size:1.22rem; color:#fff; letter-spacing:.5px; }
@media (max-width:520px){
  .ratetable-head,.rate-row{ padding:12px 14px; gap:8px; }
  .rate-total{ font-size:1.05rem; }
}
