/* ============================================================
   Devmansh Trade Corporation
   Palette drawn from the DTC logo: deep navy, gold, steel blue.
   ============================================================ */

:root{
  --navy-900:#071626;
  --navy-800:#0A1D30;
  --navy-700:#0F2B45;
  --navy-600:#16395A;
  --steel:#7E93A8;
  --steel-dim:#5A6E82;
  --gold:#D9A62E;
  --gold-bright:#F0C455;
  --gold-pale:#F6E0A6;
  --paper:#F4F6F8;
  --paper-2:#E7ECF1;
  --ink:#0B1B2B;

  --shell:min(1180px, 100% - 2.5rem);
  --r-lg:14px;
  --r-sm:8px;
}

*,*::before,*::after{box-sizing:border-box}

html{scroll-behavior:smooth;scroll-padding-top:82px}

body{
  margin:0;
  background:var(--navy-900);
  color:var(--paper);
  font-family:"IBM Plex Sans",system-ui,sans-serif;
  font-size:17px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}

img{max-width:100%;display:block}

h1,h2,h3{
  font-family:Archivo,system-ui,sans-serif;
  font-weight:700;
  line-height:1.1;
  letter-spacing:-.015em;
  margin:0;
}

p{margin:0 0 1rem}

a{color:var(--gold-bright)}

.mono{font-family:"IBM Plex Mono",ui-monospace,monospace;font-variant-numeric:tabular-nums}

.wrap{width:var(--shell);margin-inline:auto}

.skip{
  position:absolute;left:-9999px;top:0;z-index:200;
  background:var(--gold);color:var(--navy-900);padding:.7rem 1.1rem;
  font-weight:600;border-radius:0 0 var(--r-sm) 0;
}
.skip:focus{left:0}

:focus-visible{outline:3px solid var(--gold-bright);outline-offset:3px}

/* ---------------- header ---------------- */

.site-head{
  position:sticky;top:0;z-index:100;
  background:rgba(7,22,38,.78);
  backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(217,166,46,.18);
  transition:background .3s,border-color .3s;
}
.site-head.scrolled{background:rgba(7,22,38,.96);border-bottom-color:rgba(217,166,46,.35)}

.head-inner{
  display:flex;align-items:center;gap:1.4rem;
  min-height:72px;
}

.brand{display:flex;align-items:center;gap:.75rem;text-decoration:none;color:inherit;margin-right:auto}
.brand-mark{width:40px;height:40px;object-fit:contain}
.brand-text strong{
  display:block;font-family:Archivo,sans-serif;font-weight:700;
  font-size:1.02rem;letter-spacing:.005em;line-height:1.15;
}
.brand-text span{
  display:block;font-size:.66rem;letter-spacing:.19em;
  color:var(--gold);text-transform:uppercase;margin-top:.16rem;
}

.nav{display:flex;gap:1.5rem}
.nav a{
  color:var(--paper);text-decoration:none;font-size:.9rem;font-weight:500;
  padding:.35rem 0;border-bottom:2px solid transparent;transition:border-color .2s,color .2s;
}
.nav a:hover{color:var(--gold-bright);border-bottom-color:var(--gold)}

.call-btn{
  display:inline-flex;align-items:center;gap:.5rem;
  background:var(--gold);color:var(--navy-900);
  padding:.55rem 1rem;border-radius:100px;
  font-weight:600;font-size:.9rem;text-decoration:none;white-space:nowrap;
  transition:background .2s;
}
.call-btn:hover{background:var(--gold-bright)}
.call-btn svg{width:17px;height:17px;fill:currentColor}

.burger{display:none;background:none;border:0;cursor:pointer;padding:.5rem;flex-direction:column;gap:5px}
.burger span{display:block;width:24px;height:2px;background:var(--paper);transition:transform .25s,opacity .25s}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ---------------- hero ---------------- */

.hero{
  position:relative;overflow:hidden;
  padding:5.5rem 0 4rem;
  background:
    linear-gradient(180deg,var(--navy-800) 0%,var(--navy-900) 100%);
}

.hero-glow{
  position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(760px 380px at 78% 8%, rgba(217,166,46,.16), transparent 62%),
    radial-gradient(600px 420px at 8% 92%, rgba(22,57,90,.75), transparent 65%);
}

.hero-inner{position:relative}

.hero-kicker{
  font-size:.74rem;letter-spacing:.2em;color:var(--gold);
  text-transform:uppercase;margin-bottom:1.5rem;
}

.hero-title{
  font-size:clamp(2.5rem,6.4vw,4.6rem);
  font-weight:800;letter-spacing:-.03em;
  max-width:16ch;
  margin-bottom:1.5rem;
}

.hero-lede{
  font-size:clamp(1.02rem,1.5vw,1.2rem);
  color:#C3D0DC;max-width:56ch;margin-bottom:2.2rem;
}

.hero-actions{display:flex;flex-wrap:wrap;gap:.85rem;margin-bottom:4rem}

.btn{
  display:inline-block;padding:.85rem 1.7rem;border-radius:100px;
  font-weight:600;font-size:.96rem;text-decoration:none;
  border:1.5px solid transparent;cursor:pointer;
  transition:transform .18s,background .2s,border-color .2s,color .2s;
}
.btn:active{transform:translateY(1px)}
.btn-gold{background:var(--gold);color:var(--navy-900);border-color:var(--gold)}
.btn-gold:hover{background:var(--gold-bright);border-color:var(--gold-bright)}
.btn-ghost{color:var(--gold-pale);border-color:rgba(217,166,46,.5);background:transparent}
.btn-ghost:hover{border-color:var(--gold);background:rgba(217,166,46,.1)}
.btn-wide{width:100%;text-align:center;font-size:1rem;padding:.95rem}

/* the size ladder */
.ladder{margin:0}
.ladder-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;padding-bottom:.4rem}
.ladder-svg{width:100%;min-width:620px;height:auto;display:block}
.ladder-svg text{
  fill:var(--gold-pale);
  font-family:"IBM Plex Mono",monospace;font-size:12px;font-weight:500;
  text-anchor:middle;
}
.ladder figcaption{
  font-size:.8rem;color:var(--steel);margin-top:.7rem;
  border-top:1px solid rgba(126,147,168,.2);padding-top:.7rem;
}

.bar{
  transform-origin:center bottom;
  animation:barIn .55s cubic-bezier(.2,.8,.25,1) backwards;
  animation-delay:calc(.35s + var(--i) * .07s);
}
@keyframes barIn{
  from{opacity:0;transform:translateY(14px) scale(.82)}
  to{opacity:1;transform:none}
}

/* ---------------- credentials ---------------- */

.creds{
  background:var(--navy-700);
  border-block:1px solid rgba(217,166,46,.22);
}
.creds-grid{
  display:grid;grid-template-columns:repeat(4,1fr);
  gap:1px;background:rgba(217,166,46,.16);
}
.cred{background:var(--navy-700);padding:1.6rem 1.4rem}
.cred dt{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:.4rem}
.cred dd{margin:0;font-family:Archivo,sans-serif;font-weight:600;font-size:1.06rem}

/* ---------------- generic section ---------------- */

.section{padding:5.5rem 0}
.sec-title{font-size:clamp(1.85rem,3.6vw,2.7rem);margin-bottom:1rem}
.sec-lede{color:#B7C5D2;max-width:60ch;margin-bottom:3rem;font-size:1.05rem}

/* ---------------- grades ---------------- */

.grades{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(232px,1fr));
  gap:1.5rem;margin-bottom:3.5rem;
}
.grade{
  border-left:3px solid var(--gold);
  padding:.2rem 0 .2rem 1.4rem;
}
.grade-num{
  display:block;font-family:Archivo,sans-serif;font-weight:800;
  font-size:1.75rem;letter-spacing:-.02em;color:var(--gold-bright);
}
.grade-role{
  font-weight:600;color:var(--paper);margin:.15rem 0 .7rem;font-size:1rem;
}
.grade p:last-child{color:#A9B9C8;font-size:.94rem;margin:0}

.supply-note{
  background:var(--navy-700);border-radius:var(--r-lg);
  padding:2rem 2.2rem;border:1px solid rgba(217,166,46,.2);
  max-width:74ch;
}
.supply-note h3{font-size:1.2rem;margin-bottom:.7rem;color:var(--gold-pale)}
.supply-note p{margin:0;color:#B7C5D2;font-size:.98rem}

/* ---------------- calculator ---------------- */

.calc-section{background:var(--navy-800)}

.calc{
  display:grid;grid-template-columns:1.1fr .9fr;gap:0;
  border:1px solid rgba(217,166,46,.28);border-radius:var(--r-lg);
  overflow:hidden;
}
.calc-inputs{padding:2rem;display:flex;flex-direction:column;gap:1.2rem;background:var(--navy-700)}

.field{display:block}
.field > span{
  display:block;font-size:.76rem;letter-spacing:.13em;text-transform:uppercase;
  color:var(--gold);margin-bottom:.45rem;
}
.field input,.field select,.field textarea{
  width:100%;padding:.75rem .9rem;
  background:var(--navy-900);color:var(--paper);
  border:1px solid rgba(126,147,168,.35);border-radius:var(--r-sm);
  font-family:inherit;font-size:1rem;
  transition:border-color .18s,box-shadow .18s;
}
.field textarea{resize:vertical;min-height:80px}
.field input:focus,.field select:focus,.field textarea:focus{
  border-color:var(--gold);box-shadow:0 0 0 3px rgba(217,166,46,.16);outline:none;
}
.field select{appearance:none;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--gold) 50%),linear-gradient(135deg,var(--gold) 50%,transparent 50%);
  background-position:calc(100% - 18px) 50%,calc(100% - 12px) 50%;
  background-size:6px 6px,6px 6px;background-repeat:no-repeat;
}

.calc-out{
  padding:2rem;background:linear-gradient(150deg,var(--navy-600),var(--navy-700));
  display:flex;flex-direction:column;justify-content:center;
}
.calc-main{display:flex;align-items:baseline;gap:.5rem}
.calc-value{font-size:clamp(2.2rem,4.6vw,3.1rem);font-weight:600;color:var(--gold-bright);letter-spacing:-.02em}
.calc-unit{font-size:1.2rem;color:var(--gold-pale)}
.calc-sub{color:#B7C5D2;margin:.2rem 0 1.6rem;font-size:1.02rem}

.calc-detail{margin:0;display:flex;flex-direction:column;gap:.6rem}
.calc-detail > div{
  display:flex;justify-content:space-between;gap:1rem;
  padding-bottom:.6rem;border-bottom:1px solid rgba(126,147,168,.22);
}
.calc-detail > div:last-child{border-bottom:0;padding-bottom:0}
.calc-detail dt{font-size:.88rem;color:#A9B9C8}
.calc-detail dd{margin:0;font-size:.94rem;color:var(--paper)}

.calc-foot{font-size:.85rem;color:var(--steel);margin:1rem 0 2.5rem;max-width:62ch}

.table-wrap{border-top:1px solid rgba(217,166,46,.25);padding-top:1.2rem}
.table-wrap summary{
  cursor:pointer;font-family:Archivo,sans-serif;font-weight:600;
  font-size:1.02rem;color:var(--gold-bright);padding:.4rem 0;
}
.table-scroll{overflow-x:auto;margin-top:1.2rem}
.spec{width:100%;border-collapse:collapse;min-width:520px;font-size:.94rem}
.spec caption{text-align:left;color:var(--steel);font-size:.85rem;padding-bottom:.8rem}
.spec th,.spec td{padding:.7rem .9rem;text-align:left;border-bottom:1px solid rgba(126,147,168,.2)}
.spec thead th{
  color:var(--gold);font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;
  border-bottom-color:rgba(217,166,46,.4);font-weight:600;
}
.spec tbody th{font-weight:600;color:var(--paper)}
.spec tbody td{color:#B7C5D2}
.spec tbody tr:hover{background:rgba(22,57,90,.5)}

/* ---------------- steps ---------------- */

.steps{
  list-style:none;counter-reset:s;padding:0;margin:0;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:2rem;
}
.steps li{counter-increment:s;position:relative;padding-top:2.9rem}
.steps li::before{
  content:counter(s);position:absolute;top:0;left:0;
  font-family:"IBM Plex Mono",monospace;font-size:.9rem;font-weight:600;
  color:var(--navy-900);background:var(--gold);
  width:30px;height:30px;border-radius:50%;
  display:grid;place-items:center;
}
.steps li::after{
  content:"";position:absolute;top:15px;left:38px;right:-1rem;height:1px;
  background:linear-gradient(90deg,rgba(217,166,46,.5),rgba(217,166,46,0));
}
.steps li:last-child::after{display:none}
.steps h3{font-size:1.1rem;margin-bottom:.5rem}
.steps p{color:#A9B9C8;font-size:.94rem;margin:0}

/* ---------------- about ---------------- */

.about{background:var(--navy-800)}
.about-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:3.5rem;align-items:start}
.about-copy p{color:#B7C5D2}
.about-copy strong{color:var(--paper)}

.facts{margin:2rem 0 0;display:grid;gap:0;border-top:1px solid rgba(217,166,46,.25)}
.facts > div{
  display:flex;justify-content:space-between;gap:1.5rem;
  padding:.85rem 0;border-bottom:1px solid rgba(126,147,168,.18);
}
.facts dt{color:var(--gold);font-size:.8rem;letter-spacing:.11em;text-transform:uppercase;padding-top:.15rem}
.facts dd{margin:0;font-weight:500;text-align:right}

.about-media{
  border-radius:var(--r-lg);overflow:hidden;
  border:1px solid rgba(217,166,46,.25);
  background:var(--navy-700);position:relative;min-height:340px;
}
.about-media img{width:100%;height:100%;object-fit:cover;min-height:340px}
.media-fallback{display:none;color:var(--gold);text-align:center;padding:2.5rem 2rem;
  flex-direction:column;align-items:center;justify-content:center;min-height:340px}
.about-media.is-empty .media-fallback{display:flex}
.media-fallback svg{width:110px;height:110px;margin-bottom:1.2rem}
.media-fallback p{color:var(--steel);font-size:.88rem;margin:0;max-width:30ch;line-height:1.55}
.media-fallback code{
  font-family:"IBM Plex Mono",monospace;font-size:.82rem;color:var(--gold-pale);
  background:rgba(217,166,46,.1);padding:.1rem .35rem;border-radius:4px;
}

/* ---------------- enquiry ---------------- */

.enquiry-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:3.5rem;align-items:start}
.enquiry-copy p{color:#B7C5D2}

.direct{margin-top:2rem;border-top:1px solid rgba(217,166,46,.25)}
.direct-row{
  display:flex;justify-content:space-between;align-items:baseline;gap:1rem;
  padding:1rem 0;border-bottom:1px solid rgba(126,147,168,.18);
  text-decoration:none;color:var(--paper);transition:padding-left .2s,color .2s;
}
.direct-row:hover{padding-left:.5rem;color:var(--gold-bright)}
.direct-label{font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;color:var(--gold)}
.direct-value{font-weight:500;font-size:.97rem;word-break:break-word;text-align:right}

.form{
  background:var(--navy-700);padding:2.2rem;
  border-radius:var(--r-lg);border:1px solid rgba(217,166,46,.22);
  display:flex;flex-direction:column;gap:1.1rem;
}
.form .row{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
.hp{position:absolute;left:-9999px}
.min-note{font-size:.85rem;color:var(--steel);margin:0}
.form-status{margin:0;font-size:.92rem;min-height:1.2em}
.form-status.ok{color:var(--gold-bright)}
.form-status.err{color:#F0907A}

/* ---------------- contact ---------------- */

.contact{background:var(--navy-800)}
.contact-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:3.5rem;align-items:start}
address{font-style:normal;color:#B7C5D2;line-height:1.9;margin-bottom:1.8rem;font-size:1.02rem}
.map{border-radius:var(--r-lg);overflow:hidden;border:1px solid rgba(217,166,46,.25);min-height:340px}
.map iframe{width:100%;height:100%;min-height:340px;border:0;display:block;filter:grayscale(.3)}

/* ---------------- footer ---------------- */

.site-foot{background:var(--navy-900);border-top:1px solid rgba(217,166,46,.25);padding-top:3.5rem}
.foot-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:2.5rem;padding-bottom:3rem}
.foot-brand img{width:52px;margin-bottom:1rem}
.foot-name{font-family:Archivo,sans-serif;font-weight:700;font-size:1.05rem;margin:0 0 .25rem}
.foot-tag{font-size:.68rem;letter-spacing:.19em;text-transform:uppercase;color:var(--gold);margin:0}
.foot-col h3{font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:.9rem}
.foot-col p{color:#A9B9C8;font-size:.92rem;margin:0 0 .5rem;line-height:1.7}
.foot-col a{color:#A9B9C8;text-decoration:none}
.foot-col a:hover{color:var(--gold-bright)}

.foot-base{
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:.6rem;
  padding:1.4rem 0;border-top:1px solid rgba(126,147,168,.18);
}
.foot-base p{margin:0;font-size:.84rem;color:var(--steel-dim)}

/* ---------------- whatsapp float ---------------- */

.wa-float{
  position:fixed;right:20px;bottom:20px;z-index:90;
  width:56px;height:56px;border-radius:50%;
  background:#25D366;display:grid;place-items:center;
  box-shadow:0 8px 22px rgba(0,0,0,.4);
  transition:transform .2s;
}
.wa-float:hover{transform:scale(1.07)}
.wa-float svg{width:30px;height:30px;fill:#fff}

/* ---------------- reveal on scroll ---------------- */

.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease}
.reveal.in{opacity:1;transform:none}

/* ---------------- responsive ---------------- */

@media (max-width:960px){
  .about-grid,.enquiry-grid,.contact-grid{grid-template-columns:1fr;gap:2.5rem}
  .calc{grid-template-columns:1fr}
  .creds-grid{grid-template-columns:1fr 1fr}
  .foot-grid{grid-template-columns:1fr 1fr}
  .steps li::after{display:none}
}

@media (max-width:760px){
  html{scroll-padding-top:70px}
  .burger{display:flex}
  .nav{
    position:absolute;top:100%;left:0;right:0;
    flex-direction:column;gap:0;
    background:var(--navy-800);
    border-bottom:1px solid rgba(217,166,46,.3);
    max-height:0;overflow:hidden;transition:max-height .3s ease;
  }
  .nav.open{max-height:340px}
  .nav a{padding:.95rem 1.25rem;border-bottom:1px solid rgba(126,147,168,.15)}
  .nav a:hover{border-bottom-color:rgba(126,147,168,.15);background:rgba(22,57,90,.6)}
  .call-btn span{display:none}
  .call-btn{padding:.6rem;border-radius:50%}
  .hero{padding:3.5rem 0 3rem}
  .hero-actions{margin-bottom:2.8rem}
  .section{padding:4rem 0}
  .form .row{grid-template-columns:1fr}
  .form{padding:1.5rem}
  .calc-inputs,.calc-out{padding:1.5rem}
  .supply-note{padding:1.5rem}
  .wa-float{width:52px;height:52px;right:14px;bottom:14px}
}

@media (max-width:460px){
  .creds-grid,.foot-grid{grid-template-columns:1fr}
  .facts > div{flex-direction:column;gap:.2rem}
  .facts dd{text-align:left}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
  .reveal{opacity:1;transform:none}
  .bar{animation:none;opacity:1}
}

/* ============================================================
   ADDITIONS — gallery, socials, phone field, extra motion
   ============================================================ */

/* ---------------- credentials note ---------------- */

.cred-note{
  margin:.45rem 0 0;font-size:.78rem;line-height:1.5;
  color:var(--steel);max-width:26ch;
}

/* ---------------- gallery ---------------- */

.gallery-section{background:var(--navy-800)}

.gallery{
  display:grid;grid-template-columns:repeat(4,1fr);gap:1.4rem;
}
.gcard{
  margin:0;grid-column:span 2;
  background:var(--navy-700);
  border:1px solid rgba(217,166,46,.22);
  border-radius:var(--r-lg);
  overflow:hidden;
  display:flex;flex-direction:column;
  transition:border-color .3s,transform .3s;
}
.gcard-wide{grid-column:span 4}
.gcard:hover{border-color:rgba(217,166,46,.55);transform:translateY(-3px)}

.gart{
  background:radial-gradient(120% 100% at 50% 0%,var(--navy-600),var(--navy-900));
  padding:1.5rem;display:grid;place-items:center;
}
.gart svg{width:100%;height:auto;max-height:250px}

.gcard figcaption{padding:1.3rem 1.5rem 1.5rem;border-top:1px solid rgba(217,166,46,.18)}
.gcard figcaption h3{font-size:1.05rem;margin-bottom:.35rem;color:var(--gold-pale)}
.gcard figcaption p{margin:0;font-size:.9rem;color:#A9B9C8}

.gcard.photo img{width:100%;height:250px;object-fit:cover}
.gcard .slot{display:none}
.gcard.is-empty .slot{
  display:grid;place-items:center;gap:.5rem;height:250px;
  background:
    repeating-linear-gradient(-45deg,rgba(217,166,46,.05) 0 12px,transparent 12px 24px),
    var(--navy-900);
  border-bottom:1px dashed rgba(217,166,46,.3);
  text-align:center;padding:1.5rem;
}
.slot-name{
  font-family:"IBM Plex Mono",monospace;font-size:.8rem;color:var(--gold);
  background:rgba(217,166,46,.12);padding:.3rem .6rem;border-radius:5px;
}
.gcard.is-empty .slot p{margin:0;font-size:.85rem;color:var(--steel)}

/* gallery motion */
.bundle circle{
  transform-box:fill-box;transform-origin:center;
  animation:pop .5s cubic-bezier(.2,.85,.3,1) backwards;
}
.gcard.in .bundle circle:nth-child(n)  {animation-delay:calc(var(--n,0) * 25ms)}
@keyframes pop{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}

.strap{stroke-dasharray:9 7;animation:strapRun 14s linear infinite}
@keyframes strapRun{to{stroke-dashoffset:-160}}

.ribs path{
  stroke-dasharray:40;stroke-dashoffset:40;
}
.gcard.in .ribs path{animation:ribDraw .5s ease forwards}
.gcard.in .ribs path:nth-child(1){animation-delay:.05s}
.gcard.in .ribs path:nth-child(2){animation-delay:.12s}
.gcard.in .ribs path:nth-child(3){animation-delay:.19s}
.gcard.in .ribs path:nth-child(4){animation-delay:.26s}
.gcard.in .ribs path:nth-child(5){animation-delay:.33s}
.gcard.in .ribs path:nth-child(6){animation-delay:.40s}
.gcard.in .ribs path:nth-child(7){animation-delay:.47s}
.gcard.in .ribs path:nth-child(8){animation-delay:.54s}
@keyframes ribDraw{to{stroke-dashoffset:0}}

.ring{transform-box:fill-box;transform-origin:center;opacity:0}
.gcard.in .r1{animation:ringIn .5s ease .05s forwards}
.gcard.in .r2{animation:ringIn .5s ease .22s forwards}
.gcard.in .r3{animation:ringIn .5s ease .39s forwards}
@keyframes ringIn{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}

/* ---------------- social icons ---------------- */

.socials{display:flex;gap:.6rem;margin-top:1.2rem}
.socials a{
  width:38px;height:38px;border-radius:50%;
  display:grid;place-items:center;
  border:1px solid rgba(217,166,46,.35);
  transition:background .2s,border-color .2s,transform .2s;
}
.socials a:hover{background:var(--gold);border-color:var(--gold);transform:translateY(-2px)}
.socials svg{width:17px;height:17px;fill:var(--gold-pale);transition:fill .2s}
.socials a:hover svg{fill:var(--navy-900)}

/* ---------------- phone field ---------------- */

.phone-group{display:flex;gap:.5rem}
.phone-group select{
  flex:0 0 auto;width:132px;
  padding:.75rem .9rem;
  background:var(--navy-900);color:var(--paper);
  border:1px solid rgba(126,147,168,.35);border-radius:var(--r-sm);
  font-family:inherit;font-size:.94rem;cursor:pointer;
  transition:border-color .18s,box-shadow .18s;
}
.phone-group select:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(217,166,46,.16);outline:none}
.phone-group input{flex:1 1 auto;min-width:0}

.field > small.hint{
  display:block;margin-top:.4rem;font-size:.78rem;color:var(--steel);
}
.field input.bad,.phone-group input.bad{
  border-color:#E8735A;box-shadow:0 0 0 3px rgba(232,115,90,.16);
}
.field-error{
  display:block;margin-top:.4rem;font-size:.82rem;color:#F0907A;
}

.min-note{
  font-size:.87rem;color:#A9B9C8;margin:0;line-height:1.6;
  border-left:2px solid var(--gold);padding-left:.9rem;
}

/* ---------------- responsive additions ---------------- */

@media (max-width:960px){
  .gallery{grid-template-columns:repeat(2,1fr)}
  .gcard,.gcard-wide{grid-column:span 2}
}

@media (max-width:620px){
  .gallery{grid-template-columns:1fr;gap:1.1rem}
  .gcard,.gcard-wide{grid-column:span 1}
  .gart{padding:1.1rem}
  .gcard.photo img,.gcard.is-empty .slot{height:200px}
  .phone-group{flex-direction:column}
  .phone-group select{width:100%}
}

@media (prefers-reduced-motion:reduce){
  .bundle circle,.ribs path,.ring,.strap{animation:none!important;opacity:1;stroke-dashoffset:0}
  .gcard:hover{transform:none}
}

/* ============================================================
   ROUND 2 — steel backdrop, why panel, spec table, more motion
   ============================================================ */

/* ---------------- hero: bars behind the content ---------------- */

.hero{padding-bottom:4.5rem}

.hero-bars{
  position:absolute;inset:0;pointer-events:none;
  opacity:.30;
  -webkit-mask-image:linear-gradient(180deg,#000 0%,#000 62%,transparent 100%);
          mask-image:linear-gradient(180deg,#000 0%,#000 62%,transparent 100%);
}
.hero-bars svg{width:100%;height:100%;display:block}

.bg-row{
  animation:barSlide 1.3s cubic-bezier(.16,.9,.28,1) backwards;
  animation-delay:var(--d);
}
@keyframes barSlide{
  from{opacity:0;transform:translateX(90px)}
  to{opacity:1;transform:none}
}

/* keep the glow above the bars so the headline stays readable */
.hero-glow{
  background:
    radial-gradient(700px 420px at 74% 10%, rgba(217,166,46,.13), transparent 64%),
    radial-gradient(900px 520px at 2% 40%, rgba(7,22,38,.94), rgba(7,22,38,.55) 45%, transparent 72%),
    linear-gradient(180deg, rgba(7,22,38,.2) 0%, rgba(7,22,38,.85) 88%);
}

.hero-title{margin-bottom:1.4rem}
.hero-lede{margin-bottom:3.2rem}

/* headline reveal */
.hero-kicker{animation:fadeUp .7s ease .1s backwards}
.hero-title{animation:fadeUp .8s cubic-bezier(.2,.8,.25,1) .2s backwards}
.hero-lede{animation:fadeUp .8s cubic-bezier(.2,.8,.25,1) .34s backwards}
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}

/* the size ladder now reads as steel, so give it a warmer caption rule */
.ladder-svg text{fill:#C8D2DC}
.ladder .bar circle:first-child{filter:drop-shadow(0 2px 4px rgba(0,0,0,.45))}

/* ---------------- grade property table ---------------- */

.spec-block{
  margin-top:3.5rem;padding-top:2.5rem;
  border-top:1px solid rgba(217,166,46,.28);
}
.spec-block h3{font-size:1.3rem;margin-bottom:.8rem;color:var(--gold-pale)}
.spec-intro{color:#B7C5D2;max-width:66ch;margin-bottom:1.8rem;font-size:.98rem}
.grade-table{min-width:640px}
.grade-table tbody tr:hover{background:rgba(22,57,90,.55)}
.spec-foot{
  margin-top:1.4rem;font-size:.9rem;color:#A9B9C8;max-width:70ch;
  border-left:2px solid var(--gold);padding-left:.9rem;
}
.spec-foot strong{color:var(--gold-bright)}

/* ---------------- why panel ---------------- */

.why-section{padding-top:0}

.why{
  position:relative;
  background:linear-gradient(155deg,var(--navy-600) 0%,var(--navy-700) 55%,var(--navy-800) 100%);
  border:1px solid rgba(217,166,46,.35);
  border-radius:18px;
  padding:3rem 3.2rem;
  overflow:hidden;
}
.why::before{
  content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,transparent,var(--gold),var(--gold-bright),var(--gold),transparent);
  background-size:200% 100%;
  animation:sheen 6s linear infinite;
}
@keyframes sheen{to{background-position:-200% 0}}

.why::after{
  content:"";position:absolute;right:-90px;bottom:-90px;
  width:300px;height:300px;border-radius:50%;
  background:radial-gradient(circle,rgba(217,166,46,.14),transparent 68%);
  pointer-events:none;
}

.why-tag{
  display:inline-block;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--navy-900);background:var(--gold);
  padding:.32rem .8rem;border-radius:100px;margin-bottom:1.3rem;font-weight:600;
}
.why h2{
  font-size:clamp(1.5rem,3vw,2.15rem);
  max-width:24ch;margin-bottom:1.6rem;line-height:1.18;
}
.why > p{color:#C3D0DC;max-width:74ch;font-size:1rem}

.why-points{
  list-style:none;padding:0;margin:2.2rem 0 1.8rem;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.4rem;
}
.why-points li{
  border-top:2px solid var(--gold);padding-top:.9rem;
  transition:transform .25s;
}
.why-points li:hover{transform:translateY(-3px)}
.why-points strong{
  display:block;font-family:Archivo,sans-serif;font-size:1.02rem;
  color:var(--gold-bright);margin-bottom:.35rem;
}
.why-points span{font-size:.9rem;color:#A9B9C8;line-height:1.55}

.why-close{
  margin:0;padding-top:1.5rem;
  border-top:1px solid rgba(126,147,168,.25);
  font-size:.95rem;color:#B7C5D2;
}

/* ---------------- richer motion elsewhere ---------------- */

/* section headings get a drawn rule */
.sec-title{position:relative;padding-bottom:.7rem}
.sec-title::after{
  content:"";position:absolute;left:0;bottom:0;
  width:0;height:2px;background:var(--gold);
  transition:width .8s cubic-bezier(.2,.8,.25,1) .15s;
}
.sec-title.lit::after{width:64px}

/* grade cards lift and light up */
.grade{transition:transform .28s,border-color .28s;border-left-color:rgba(217,166,46,.55)}
.grade:hover{transform:translateX(4px);border-left-color:var(--gold-bright)}
.grade-num{transition:color .25s}
.grade:hover .grade-num{color:#fff}

/* stagger the grade cards as they arrive */
.grades .grade.reveal{transition-delay:calc(var(--gi,0) * 70ms)}

/* steps: number pulses in */
.steps li.in::before{animation:numPop .5s cubic-bezier(.2,.85,.3,1) backwards}
@keyframes numPop{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}

/* credential cells warm on hover */
.cred{transition:background .25s}
.cred:hover{background:var(--navy-600)}

/* buttons get a subtle press-through highlight */
.btn-gold{position:relative;overflow:hidden}
.btn-gold::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(120deg,transparent 35%,rgba(255,255,255,.42) 50%,transparent 65%);
  transform:translateX(-120%);
}
.btn-gold:hover::after{transform:translateX(120%);transition:transform .7s ease}

/* whatsapp float: gentle attention pulse */
.wa-float::before{
  content:"";position:absolute;inset:0;border-radius:50%;
  border:2px solid #25D366;animation:waPulse 2.6s ease-out infinite;
}
@keyframes waPulse{
  0%{transform:scale(1);opacity:.7}
  70%{transform:scale(1.55);opacity:0}
  100%{opacity:0}
}
.wa-float{position:fixed}

/* ---------------- responsive ---------------- */

@media (max-width:760px){
  .why{padding:2rem 1.6rem;border-radius:14px}
  .why h2{max-width:none}
  .hero-bars{opacity:.20}
  .spec-block{margin-top:2.5rem;padding-top:2rem}
}

@media (prefers-reduced-motion:reduce){
  .bg-row,.hero-kicker,.hero-title,.hero-lede,.why::before,.wa-float::before,
  .steps li.in::before{animation:none!important}
  .sec-title::after{transition:none;width:64px}
  .why-points li:hover,.grade:hover{transform:none}
}

/* ---------------- about photo: fill the panel, no letterboxing ---------------- */

.about-media{
  min-height:0;
  aspect-ratio:4/3;
  display:block;
  background:var(--navy-800);
}
.about-media img{
  width:100%;height:100%;min-height:0;
  object-fit:cover;object-position:50% 62%;
  transition:transform 1.1s cubic-bezier(.2,.8,.25,1);
}
.about-media:hover img{transform:scale(1.045)}
.about-media.is-empty{aspect-ratio:auto;min-height:340px}
.media-fallback{min-height:340px}

@media (max-width:960px){
  .about-media{aspect-ratio:16/10}
}

/* ============================================================
   ROUND 3 — grouped enquiry form
   ============================================================ */

.fs{
  border:0;padding:0;margin:0 0 .4rem;
  display:flex;flex-direction:column;gap:1.1rem;
}
.fs + .fs{
  border-top:1px solid rgba(126,147,168,.22);
  padding-top:1.6rem;margin-top:.6rem;
}
.fs legend{
  padding:0;font-family:Archivo,sans-serif;font-weight:600;
  font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--gold);margin-bottom:.3rem;
}

.req{color:var(--gold);font-weight:400;margin-left:.15rem}

.either-note{
  margin:0;font-size:.86rem;color:#A9B9C8;line-height:1.6;
  background:rgba(217,166,46,.08);
  border:1px solid rgba(217,166,46,.22);
  border-radius:var(--r-sm);padding:.7rem .9rem;
}
.either-note strong{color:var(--gold-pale)}

/* diameter checkboxes */
.dia-grid{
  display:grid;grid-template-columns:repeat(5,1fr);gap:.55rem;
  padding:.2rem;border-radius:var(--r-sm);
}
.dia-grid.bad{outline:2px solid #E8735A;outline-offset:4px}
.dia-grid label{
  position:relative;display:block;cursor:pointer;
}
.dia-grid input{
  position:absolute;opacity:0;width:0;height:0;
}
.dia-grid span{
  display:block;text-align:center;
  padding:.6rem .3rem;font-size:.9rem;font-weight:500;
  background:var(--navy-900);color:#A9B9C8;
  border:1px solid rgba(126,147,168,.35);border-radius:var(--r-sm);
  transition:background .18s,border-color .18s,color .18s,transform .18s;
}
.dia-grid label:hover span{border-color:rgba(217,166,46,.6);color:var(--paper)}
.dia-grid input:checked + span{
  background:var(--gold);border-color:var(--gold);color:var(--navy-900);
  font-weight:600;transform:translateY(-1px);
}
.dia-grid input:focus-visible + span{outline:3px solid var(--gold-bright);outline-offset:2px}

/* datalist input keeps the same look */
.field input[list]{background-image:none}

.form-status{font-size:.92rem;line-height:1.55}

@media (max-width:760px){
  .dia-grid{grid-template-columns:repeat(4,1fr)}
}
@media (max-width:460px){
  .dia-grid{grid-template-columns:repeat(3,1fr)}
}

/* ============================================================
   ROUND 4 — depth, texture and motion
   ============================================================ */

/* ---------------- hero: rebar mesh behind the bars ---------------- */

.hero-mesh{
  position:absolute;inset:0;pointer-events:none;
  opacity:.13;
  -webkit-mask-image:radial-gradient(120% 90% at 60% 30%,#000 20%,transparent 78%);
          mask-image:radial-gradient(120% 90% at 60% 30%,#000 20%,transparent 78%);
}
.hero-mesh svg{width:100%;height:100%;display:block}
.cage-rect{
  transform-origin:center;
  animation:cageDrift 44s linear infinite;
}
@keyframes cageDrift{
  from{transform:translate(0,0)}
  to{transform:translate(-118px,-118px)}
}

.hero-bars{opacity:.34}

/* ---------------- capability ticker ---------------- */

.ticker{
  overflow:hidden;
  background:linear-gradient(90deg,var(--navy-900),var(--navy-800) 30%,var(--navy-800) 70%,var(--navy-900));
  border-bottom:1px solid rgba(217,166,46,.22);
  padding:.85rem 0;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
}
.ticker-track{display:flex;width:max-content;animation:tick 42s linear infinite}
.ticker:hover .ticker-track{animation-play-state:paused}
.ticker-set{display:flex;align-items:center;flex:0 0 auto}
.ticker-set b{
  font-family:Archivo,sans-serif;font-weight:600;font-size:.82rem;
  letter-spacing:.13em;text-transform:uppercase;color:#93A4B5;
  padding:0 1.5rem;white-space:nowrap;transition:color .25s;
}
.ticker:hover .ticker-set b{color:var(--gold-pale)}
.ticker-set i{
  width:7px;height:7px;border-radius:50%;
  background:var(--gold);opacity:.55;flex:0 0 auto;
}
@keyframes tick{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------------- metallic sheen on the ribbed bar ---------------- */

.sheen-bar{
  animation:sheenRun 4.2s cubic-bezier(.5,0,.5,1) infinite;
  animation-delay:1.2s;
}
@keyframes sheenRun{
  0%   {transform:translateX(0)   skewX(-18deg)}
  55%  {transform:translateX(430px) skewX(-18deg)}
  100% {transform:translateX(430px) skewX(-18deg)}
}

/* ---------------- rebar cage draws itself ---------------- */

.cage-h path,.cage-v path{stroke-dasharray:400;stroke-dashoffset:400}
.cage-card.in .cage-h path{animation:draw .9s ease forwards}
.cage-card.in .cage-v path{animation:draw .9s ease forwards}
.cage-card.in .cage-h path:nth-child(1){animation-delay:.05s}
.cage-card.in .cage-h path:nth-child(2){animation-delay:.15s}
.cage-card.in .cage-h path:nth-child(3){animation-delay:.25s}
.cage-card.in .cage-h path:nth-child(4){animation-delay:.35s}
.cage-card.in .cage-v path:nth-child(1){animation-delay:.45s}
.cage-card.in .cage-v path:nth-child(2){animation-delay:.55s}
.cage-card.in .cage-v path:nth-child(3){animation-delay:.65s}
.cage-card.in .cage-v path:nth-child(4){animation-delay:.75s}
@keyframes draw{to{stroke-dashoffset:0}}

.cage-t{opacity:0}
.cage-card.in .cage-t{animation:tieIn .6s ease 1.05s forwards}
@keyframes tieIn{from{opacity:0;transform:scale(.9)}to{opacity:.9;transform:none}}

/* ---------------- section texture and depth ---------------- */

.section{position:relative}

.gallery-section::before,
.calc-section::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:
    radial-gradient(circle at 18% 12%, rgba(217,166,46,.07), transparent 42%),
    radial-gradient(circle at 84% 82%, rgba(34,85,124,.30), transparent 48%);
}
.gallery-section > .wrap,
.calc-section > .wrap{position:relative}

/* a thin lit rule between major sections */
.creds{position:relative}
.creds::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(217,166,46,.75),transparent);
}

/* ---------------- gallery cards: lift and glow ---------------- */

.gcard{position:relative}
.gcard::after{
  content:"";position:absolute;inset:0;border-radius:var(--r-lg);
  pointer-events:none;opacity:0;transition:opacity .35s;
  box-shadow:0 22px 50px -18px rgba(0,0,0,.75), inset 0 0 0 1px rgba(217,166,46,.35);
}
.gcard:hover::after{opacity:1}
.gcard:hover{transform:translateY(-5px)}

.gart{position:relative;overflow:hidden}
.gart::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(circle at 50% 18%, rgba(255,255,255,.09), transparent 58%);
  pointer-events:none;
}

/* ---------------- size ladder gets a plinth ---------------- */

.ladder-svg .bar circle:first-child{filter:drop-shadow(0 3px 6px rgba(0,0,0,.55))}
.ladder-scroll{
  background:linear-gradient(180deg,transparent 62%,rgba(217,166,46,.07) 100%);
  border-radius:10px;
}

/* ---------------- why panel: slow drifting glow ---------------- */

.why::after{animation:orbDrift 14s ease-in-out infinite alternate}
@keyframes orbDrift{
  from{transform:translate(0,0) scale(1)}
  to{transform:translate(-40px,-26px) scale(1.14)}
}

/* ---------------- credential cells: gold sweep on hover ---------------- */

.cred{position:relative;overflow:hidden}
.cred::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:2px;
  background:var(--gold);transform:scaleY(0);transform-origin:top;
  transition:transform .35s cubic-bezier(.2,.8,.25,1);
}
.cred:hover::before{transform:scaleY(1)}

/* ---------------- header: gold progress line on scroll ---------------- */

.scroll-line{
  position:fixed;top:0;left:0;height:2px;z-index:120;
  background:linear-gradient(90deg,var(--gold),var(--gold-bright));
  width:0;transition:width .1s linear;
  box-shadow:0 0 10px rgba(240,196,85,.6);
}

/* ---------------- responsive ---------------- */

@media (max-width:760px){
  .ticker-set b{font-size:.72rem;padding:0 1rem}
  .hero-mesh{opacity:.09}
}

@media (prefers-reduced-motion:reduce){
  .cage-rect,.ticker-track,.sheen-bar,.why::after{animation:none!important}
  .cage-h path,.cage-v path{stroke-dashoffset:0}
  .cage-t{opacity:.9}
  .gcard:hover{transform:none}
}

/* ============================================================
   ROUND 5 — illustrated scenes and their motion
   ============================================================ */

.gart-tall svg{max-height:300px}
.scene .gart{background:linear-gradient(180deg,var(--navy-700) 0%,var(--navy-900) 100%)}

/* ---- lorry: rolls in, wheels turn, load settles, bundle lowers ---- */

.rig{transform:translateX(-40px);opacity:0}
.truck-card.in .rig{animation:rigIn 1.1s cubic-bezier(.18,.85,.25,1) .1s forwards}
@keyframes rigIn{to{transform:translateX(0);opacity:1}}

.truck-card.in .spokes{animation:spin 1.1s linear .1s 1}
@keyframes spin{to{transform:rotate(360deg)}}
.wheel .spokes{transform-origin:center;transform-box:fill-box}

.load > g{opacity:0;transform:translateY(-22px)}
.truck-card.in .load > g{
  animation:dropIn .5s cubic-bezier(.2,.9,.3,1) forwards;
  animation-delay:calc(.9s + var(--k) * .13s);
}
@keyframes dropIn{to{opacity:1;transform:none}}

.hook{opacity:0}
.truck-card.in .hook{animation:hookIn .45s ease 1.6s forwards}
@keyframes hookIn{to{opacity:1}}
.truck-card.in .slung{animation:sway 3.4s ease-in-out 2.05s infinite}
.slung{transform-origin:263px 62px;transform-box:view-box}
@keyframes sway{
  0%,100%{transform:rotate(-2.4deg)}
  50%{transform:rotate(2.4deg)}
}

.worker{opacity:0}
.truck-card.in .worker{animation:fadeIn .5s ease 1.9s forwards}
@keyframes fadeIn{to{opacity:.85}}

/* ---- yard: bundles stack from the bottom up ---- */

.stack > g{opacity:0;transform:translateY(-30px)}
.yard-card.in .stack > g{
  animation:dropIn .55s cubic-bezier(.2,.9,.3,1) forwards;
  animation-delay:calc(.15s + var(--k) * .18s);
}
.tag{opacity:0;transform-origin:222px 19px;transform-box:view-box}
.yard-card.in .tag{animation:tagDrop .6s cubic-bezier(.2,.85,.3,1) 1.0s forwards}
@keyframes tagDrop{
  0%{opacity:0;transform:rotate(-16deg)}
  60%{opacity:1;transform:rotate(6deg)}
  100%{opacity:1;transform:rotate(0)}
}
.yard-card.in .tag{animation:tagDrop .6s cubic-bezier(.2,.85,.3,1) 1.0s forwards, tagSway 4.5s ease-in-out 1.7s infinite}
@keyframes tagSway{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}

/* ---- site: the cage builds ---- */

.col-v path,.col-s path{stroke-dasharray:220;stroke-dashoffset:220}
.site-card.in .col-v path{animation:draw .8s ease forwards}
.site-card.in .col-v path:nth-child(1){animation-delay:.1s}
.site-card.in .col-v path:nth-child(2){animation-delay:.2s}
.site-card.in .col-v path:nth-child(3){animation-delay:.3s}
.site-card.in .col-v path:nth-child(4){animation-delay:.4s}
.site-card.in .col-s path{animation:draw .55s ease forwards}
.site-card.in .col-s path:nth-child(1){animation-delay:.55s}
.site-card.in .col-s path:nth-child(2){animation-delay:.68s}
.site-card.in .col-s path:nth-child(3){animation-delay:.81s}
.site-card.in .col-s path:nth-child(4){animation-delay:.94s}
.site-card.in .col-s path:nth-child(5){animation-delay:1.07s}

.col-t{opacity:0}
.site-card.in .col-t{animation:fadeIn .5s ease 1.3s forwards}
.worker2{opacity:0}
.site-card.in .worker2{animation:fadeIn .5s ease 1.5s forwards}

/* subtle idle life once everything has landed */
.truck-card.in .rig{will-change:transform}
.scene:hover .gart::before{opacity:1}

@media (prefers-reduced-motion:reduce){
  .rig,.load > g,.hook,.stack > g,.tag,.col-t,.worker,.worker2{opacity:1!important;transform:none!important;animation:none!important}
  .col-v path,.col-s path{stroke-dashoffset:0!important;animation:none!important}
  .slung,.spokes{animation:none!important}
}

/* ============================================================
   ROUND 6 — a third and fourth accent, display serif, more motion
   ============================================================ */

:root{
  /* ember: the colour steel actually is coming off the mill */
  --ember:#DE6C3A;
  --ember-bright:#F2894F;
  --ember-pale:#F7C4A3;
  --ember-deep:#8E3D1C;

  /* teal: lifted from the globe inside the DTC badge */
  --teal:#3E9E96;
  --teal-bright:#63C6BC;
  --teal-pale:#AFE3DD;
}

/* ---------------------------------------------------------
   WHY DEVMANSH — ember, and a serif that breaks the grid
   --------------------------------------------------------- */

.why{
  background:
    radial-gradient(120% 130% at 8% 0%, rgba(222,108,58,.20), transparent 58%),
    linear-gradient(155deg,#1B2F3E 0%,#16283A 50%,#0E1E2E 100%);
  border-color:rgba(222,108,58,.42);
}
.why::before{
  background:linear-gradient(90deg,transparent,var(--ember),var(--ember-bright),var(--ember),transparent);
  background-size:200% 100%;
  height:3px;
}
.why::after{
  background:radial-gradient(circle,rgba(222,108,58,.20),transparent 68%);
  width:360px;height:360px;right:-120px;bottom:-120px;
}

.why-tag{
  background:var(--ember);color:#150A04;
  box-shadow:0 4px 16px -4px rgba(222,108,58,.6);
}

.why-head{
  font-family:Fraunces,Georgia,serif;
  font-weight:600;
  font-size:clamp(1.75rem,3.6vw,2.65rem);
  line-height:1.14;
  letter-spacing:-.015em;
  max-width:22ch;
  color:#F4F0EC;
}
.why-head .w{
  display:inline-block;
  opacity:0;transform:translateY(16px);
  transition:opacity .5s ease,transform .5s cubic-bezier(.2,.8,.25,1);
  transition-delay:calc(var(--w) * 42ms);
}
.why.in .why-head .w{opacity:1;transform:none}

.why > p{color:#CBD6E0}
.why > p strong{color:var(--ember-pale)}

.why-points li{border-top-color:var(--ember)}
.why-points strong{
  color:var(--ember-bright);
  font-family:Fraunces,Georgia,serif;
  font-weight:600;font-size:1.08rem;letter-spacing:-.01em;
}
.why-points li{position:relative}
.why-points li::before{
  content:"";position:absolute;top:-2px;left:0;height:2px;width:0;
  background:var(--ember-bright);transition:width .45s cubic-bezier(.2,.8,.25,1);
}
.why-points li:hover::before{width:100%}

.why-close a{color:var(--ember-bright)}
.why-close a:hover{color:var(--ember-pale)}

/* ---------------------------------------------------------
   CALCULATOR — teal, so the tool reads as its own thing
   --------------------------------------------------------- */

.calc{border-color:rgba(62,158,150,.42)}
.calc-out{
  background:
    radial-gradient(130% 120% at 88% 10%, rgba(62,158,150,.26), transparent 62%),
    linear-gradient(150deg,#14343F 0%,#102A36 100%);
}
.calc-value{
  color:var(--teal-bright);
  text-shadow:0 0 30px rgba(99,198,188,.28);
}
.calc-unit{color:var(--teal-pale)}
.calc-inputs .field > span{color:var(--teal-bright)}
.calc-inputs .field input:focus,
.calc-inputs .field select:focus{
  border-color:var(--teal);box-shadow:0 0 0 3px rgba(62,158,150,.20);
}
.calc-inputs .field select{
  background-image:linear-gradient(45deg,transparent 50%,var(--teal-bright) 50%),
                   linear-gradient(135deg,var(--teal-bright) 50%,transparent 50%);
}
.calc-detail > div{border-bottom-color:rgba(62,158,150,.22)}
.calc-section .sec-title::after{background:var(--teal)}
.table-wrap{border-top-color:rgba(62,158,150,.28)}
.table-wrap summary{color:var(--teal-bright)}
.calc-section .spec thead th{color:var(--teal-bright);border-bottom-color:rgba(62,158,150,.45)}

/* the number ticks over instead of snapping */
.calc-value{transition:color .2s}
.calc-value.ticking{color:var(--teal-pale)}

/* ---------------------------------------------------------
   MORE MOTION
   --------------------------------------------------------- */

/* hero layers drift at different speeds as you scroll */
.hero-mesh,.hero-bars{will-change:transform}

/* gallery cards tilt toward the cursor */
.gcard{
  transform-style:preserve-3d;
  transition:transform .35s cubic-bezier(.2,.8,.25,1),border-color .3s;
}
.gcard.tilt{
  transform:
    perspective(900px)
    rotateX(calc(var(--ry, 0) * 1deg))
    rotateY(calc(var(--rx, 0) * 1deg))
    translateY(-5px);
}

/* grade table rows arrive in sequence */
.grade-table tbody tr{
  opacity:0;transform:translateX(-12px);
  transition:opacity .45s ease,transform .45s cubic-bezier(.2,.8,.25,1);
  transition-delay:calc(var(--r, 0) * 55ms);
}
.spec-block.in .grade-table tbody tr{opacity:1;transform:none}

/* grade cards get an ember hairline on hover to tie back to the panel */
.grade::after{
  content:"";position:absolute;left:-3px;top:0;bottom:0;width:3px;
  background:var(--ember);transform:scaleY(0);transform-origin:center;
  transition:transform .35s cubic-bezier(.2,.8,.25,1);
}
.grade{position:relative}
.grade:hover::after{transform:scaleY(1)}

/* footer socials arrive one by one */
.socials a{opacity:0;transform:translateY(10px);transition:opacity .4s ease,transform .4s ease,background .2s,border-color .2s}
.socials.in a{opacity:1;transform:none}
.socials.in a:nth-child(1){transition-delay:.05s}
.socials.in a:nth-child(2){transition-delay:.15s}
.socials.in a:nth-child(3){transition-delay:.25s}

/* the ticker picks up ember on every third item */
.ticker-set b:nth-child(6n+1){color:#A89283}
.ticker:hover .ticker-set b:nth-child(6n+1){color:var(--ember-pale)}

/* whatsapp float keeps its green, but the ring warms */
.wa-float::before{border-color:#25D366}

@media (prefers-reduced-motion:reduce){
  .why-head .w{opacity:1;transform:none}
  .grade-table tbody tr{opacity:1;transform:none}
  .socials a{opacity:1;transform:none}
  .gcard.tilt{transform:none}
}

/* ============================================================
   ROUND 7 — credential cells, nav state
   ============================================================ */

.cred{
  display:flex;flex-direction:column;
  opacity:0;transform:translateY(16px);
  transition:opacity .55s ease,transform .55s cubic-bezier(.2,.8,.25,1),background .25s;
  transition-delay:calc(var(--ci, 0) * 90ms);
}
.cred.in{opacity:1;transform:none}

.cred-ico{
  width:26px;height:26px;color:var(--gold);margin-bottom:.75rem;
  flex:0 0 auto;
}
.cred:nth-child(2) .cred-ico{color:var(--teal-bright)}
.cred:nth-child(3) .cred-ico{color:var(--ember-bright)}

.cred dd{margin-bottom:.1rem}
.cred .count{font-variant-numeric:tabular-nums}

/* icon flourishes once the cell lands */
.cred.in .ico-dot{animation:dotPulse 3.2s ease-in-out 1s infinite}
@keyframes dotPulse{0%,100%{opacity:.45;transform:scale(1)}50%{opacity:1;transform:scale(1.16)}}
.ico-dot{transform-origin:center;transform-box:fill-box}

.ico-draw{stroke-dasharray:24;stroke-dashoffset:24}
.cred.in .ico-draw{animation:draw .7s ease .35s forwards}

.ico-hand{transform-origin:16px 16px;transform-box:view-box}
.cred.in .ico-hand{animation:sweep 4s cubic-bezier(.4,0,.2,1) 1s infinite}
@keyframes sweep{0%{transform:rotate(0)}60%,100%{transform:rotate(360deg)}}

.ico-up{transform-origin:center;transform-box:fill-box}
.cred.in .ico-up{animation:lift 2.8s ease-in-out 1s infinite}
@keyframes lift{0%,100%{transform:translateY(0);opacity:.7}50%{transform:translateY(-3px);opacity:1}}

/* nav marks the section you are reading */
.nav a.here{color:var(--gold-bright);border-bottom-color:var(--gold)}

@media (max-width:760px){
  .nav a.here{background:rgba(217,166,46,.10)}
}

@media (prefers-reduced-motion:reduce){
  .cred{opacity:1;transform:none}
  .ico-dot,.ico-draw,.ico-hand,.ico-up{animation:none!important;stroke-dashoffset:0}
}

/* ============================================================
   ROUND 8 — scroll cue in place of the spec recital
   ============================================================ */

.hero-lede{margin-bottom:2.2rem;max-width:48ch}

.scroll-cue{
  display:inline-flex;align-items:center;gap:.65rem;
  text-decoration:none;color:var(--gold-pale);
  font-size:.9rem;font-weight:500;letter-spacing:.02em;
  padding:.55rem 0;margin-bottom:3.4rem;
  border-bottom:1px solid rgba(217,166,46,.35);
  transition:color .22s,border-color .22s,gap .22s;
  animation:fadeUp .8s cubic-bezier(.2,.8,.25,1) .46s backwards;
}
.scroll-cue:hover{color:var(--gold-bright);border-color:var(--gold);gap:.95rem}
.scroll-cue svg{
  width:17px;height:17px;flex:0 0 auto;
  animation:nudge 2.4s ease-in-out infinite;
}
@keyframes nudge{
  0%,100%{transform:translateY(0);opacity:.7}
  50%{transform:translateY(4px);opacity:1}
}

@media (max-width:760px){
  .scroll-cue{margin-bottom:2.4rem}
}
@media (prefers-reduced-motion:reduce){
  .scroll-cue,.scroll-cue svg{animation:none}
}

/* ============================================================
   ROUND 9 — photography
   ============================================================ */

/* ---------------- hero photo layer ---------------- */

.hero-photo{
  position:absolute;inset:0;overflow:hidden;pointer-events:none;
}
.hero-photo img{
  width:100%;height:100%;object-fit:cover;object-position:50% 42%;
  opacity:.42;
  filter:saturate(.65) contrast(1.05);
  transform:scale(1.06);
  animation:kenburns 34s ease-in-out infinite alternate;
}
@keyframes kenburns{
  from{transform:scale(1.06) translate(0,0)}
  to{transform:scale(1.16) translate(-1.6%,-2.2%)}
}

/* the wash that keeps the headline legible over the photo */
.hero-glow{
  background:
    radial-gradient(680px 420px at 76% 12%, rgba(217,166,46,.16), transparent 62%),
    linear-gradient(100deg, rgba(7,22,38,.96) 0%, rgba(7,22,38,.88) 34%, rgba(7,22,38,.52) 62%, rgba(7,22,38,.72) 100%),
    linear-gradient(180deg, rgba(7,22,38,.55) 0%, transparent 28%, rgba(7,22,38,.92) 94%);
}

.hero-mesh{opacity:.10}
.hero-bars{opacity:.20}

/* ---------------- full-width statement band ---------------- */

.band{
  position:relative;overflow:hidden;
  min-height:clamp(340px,46vw,480px);
  display:grid;align-items:center;
  border-block:1px solid rgba(217,166,46,.28);
}
.band-photo{position:absolute;inset:0;overflow:hidden}
.band-photo img{
  width:100%;height:120%;object-fit:cover;object-position:50% 50%;
  opacity:.55;will-change:transform;
}
.band::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(90deg, rgba(7,22,38,.95) 0%, rgba(7,22,38,.80) 40%, rgba(7,22,38,.35) 72%, rgba(7,22,38,.60) 100%),
    linear-gradient(180deg, rgba(7,22,38,.65), transparent 30%, rgba(7,22,38,.75));
}
.band-inner{position:relative;z-index:2;padding:3.5rem 0}

.band-line{
  font-family:Fraunces,Georgia,serif;
  font-weight:600;
  font-size:clamp(1.9rem,4.4vw,3.3rem);
  line-height:1.14;letter-spacing:-.02em;
  color:#F4F0EC;margin:0 0 1rem;
  text-shadow:0 3px 26px rgba(0,0,0,.6);
}
.band-sub{
  margin:0;font-size:.82rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gold);
}
.band-line,.band-sub{
  opacity:0;transform:translateY(22px);
  transition:opacity .8s ease,transform .8s cubic-bezier(.2,.8,.25,1);
}
.band.in .band-line{opacity:1;transform:none}
.band.in .band-sub{opacity:1;transform:none;transition-delay:.18s}

/* ---------------- photographic gallery cards ---------------- */

.pshot{position:relative;overflow:hidden;aspect-ratio:16/11;background:var(--navy-900)}
.pshot-wide{aspect-ratio:21/9}
.pshot img{
  width:100%;height:100%;object-fit:cover;display:block;
  transform:scale(1.02);
  transition:transform 1.3s cubic-bezier(.2,.8,.25,1),filter .5s;
  filter:saturate(.82) contrast(1.04);
}
.photo-card:hover .pshot img{transform:scale(1.09);filter:saturate(.95) contrast(1.08)}

.pshot::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg, rgba(7,22,38,.12) 0%, transparent 42%, rgba(7,22,38,.55) 100%);
}
/* a slow gold glint travels across on hover */
.pshot::before{
  content:"";position:absolute;top:0;bottom:0;width:42%;left:-50%;z-index:2;
  background:linear-gradient(100deg,transparent,rgba(240,196,85,.16),transparent);
  transition:left .9s cubic-bezier(.3,.7,.4,1);
}
.photo-card:hover .pshot::before{left:115%}

.photo-card figcaption{border-top-color:rgba(217,166,46,.28)}

@media (max-width:760px){
  .hero-photo img{opacity:.30;object-position:60% 42%}
  .band{min-height:300px}
  .band-inner{padding:2.5rem 0}
  .pshot{aspect-ratio:16/10}
  .pshot-wide{aspect-ratio:16/9}
}

@media (prefers-reduced-motion:reduce){
  .hero-photo img{animation:none;transform:none}
  .band-line,.band-sub{opacity:1;transform:none}
  .photo-card:hover .pshot img{transform:scale(1.02)}
  .pshot::before{display:none}
}

/* ============================================================
   ROUND 10 — the building as the map card
   ============================================================ */

.mapcard{
  position:relative;display:block;overflow:hidden;
  border-radius:var(--r-lg);
  border:1px solid rgba(217,166,46,.28);
  aspect-ratio:3/2;
  text-decoration:none;
  background:var(--navy-900);
  transition:border-color .35s,transform .35s cubic-bezier(.2,.8,.25,1),box-shadow .35s;
}
.mapcard:hover{
  border-color:rgba(217,166,46,.7);
  transform:translateY(-4px);
  box-shadow:0 26px 54px -22px rgba(0,0,0,.8);
}

.mapcard img{
  width:100%;height:100%;object-fit:cover;display:block;
  transform:scale(1.02);
  transition:transform 1.4s cubic-bezier(.2,.8,.25,1),filter .5s;
  filter:saturate(.88) contrast(1.03);
}
.mapcard:hover img{transform:scale(1.08);filter:saturate(1) contrast(1.07)}

.mapcard::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg, rgba(7,22,38,.30) 0%, transparent 34%, rgba(7,22,38,.88) 100%);
}

/* the pin, dropping in and then breathing */
.mappin{
  position:absolute;top:18px;right:18px;z-index:2;
  width:44px;height:44px;border-radius:50%;
  display:grid;place-items:center;
  background:rgba(10,29,48,.72);
  backdrop-filter:blur(6px);
  border:1px solid rgba(217,166,46,.5);
  color:var(--gold-bright);
}
.mappin svg{width:22px;height:22px}
.mapcard:hover .mappin{animation:pinBob 1.1s ease-in-out infinite}
@keyframes pinBob{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-5px)}
}
/* a soft pulse ring, like a live map marker */
.mappin::before{
  content:"";position:absolute;inset:-1px;border-radius:50%;
  border:2px solid var(--gold);
  animation:pinPulse 2.8s ease-out infinite;
}
@keyframes pinPulse{
  0%{transform:scale(1);opacity:.65}
  70%{transform:scale(1.6);opacity:0}
  100%{opacity:0}
}

.mapinfo{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  padding:1.5rem 1.6rem;
  display:flex;flex-direction:column;gap:.22rem;
}
.mapinfo strong{
  font-family:Archivo,sans-serif;font-weight:700;
  font-size:1.18rem;color:var(--paper);letter-spacing:-.01em;
}
.mapinfo em{
  font-style:normal;font-size:.88rem;color:#B7C5D2;
}
.mapgo{
  display:inline-flex;align-items:center;gap:.45rem;
  margin-top:.6rem;
  font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold-bright);
  transition:gap .28s,color .28s;
}
.mapgo svg{width:15px;height:15px;flex:0 0 auto}
.mapcard:hover .mapgo{gap:.85rem;color:var(--gold-pale)}

@media (max-width:960px){
  .mapcard{aspect-ratio:16/10}
}
@media (max-width:560px){
  .mapinfo{padding:1.1rem 1.2rem}
  .mapinfo strong{font-size:1.02rem}
  .mappin{width:38px;height:38px;top:12px;right:12px}
  .mappin svg{width:19px;height:19px}
}
@media (prefers-reduced-motion:reduce){
  .mapcard:hover{transform:none}
  .mapcard:hover img{transform:scale(1.02)}
  .mappin::before{display:none}
  .mapcard:hover .mappin{animation:none}
}

/* ============================================================
   ROUND 11 — real dropdown for state and city
   ============================================================ */

.combo{position:relative;display:block}

.combo input{padding-right:2.6rem !important}

.combo-caret{
  position:absolute;top:0;right:0;
  width:2.6rem;height:calc(1.5rem + 1.5em);
  display:grid;place-items:center;
  background:none;border:0;cursor:pointer;padding:0;
  color:var(--gold);
  transition:color .2s,transform .28s;
}
.combo-caret svg{width:17px;height:17px}
.combo-caret:hover{color:var(--gold-bright)}
.combo.is-open .combo-caret{transform:rotate(180deg);color:var(--gold-bright)}

.combo-list{
  position:absolute;z-index:40;top:calc(100% + 6px);left:0;right:0;
  margin:0;padding:.3rem;list-style:none;
  max-height:266px;overflow-y:auto;overscroll-behavior:contain;
  background:#0C2338;
  border:1px solid rgba(217,166,46,.5);
  border-radius:var(--r-sm);
  box-shadow:0 20px 44px -14px rgba(0,0,0,.85);
  animation:comboIn .16s ease;
}
@keyframes comboIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

.combo-opt{
  padding:.6rem .8rem;border-radius:5px;cursor:pointer;
  font-size:.95rem;color:#C7D3DE;line-height:1.35;
  transition:background .12s,color .12s;
}
.combo-opt:hover,
.combo-opt.on{background:rgba(217,166,46,.16);color:var(--paper)}
.combo-opt.picked{
  color:var(--gold-bright);font-weight:600;
  background:rgba(217,166,46,.09);
}
.combo-opt.picked::after{content:" ✓";opacity:.8}

/* scrollbar that matches the panel */
.combo-list::-webkit-scrollbar{width:9px}
.combo-list::-webkit-scrollbar-track{background:transparent}
.combo-list::-webkit-scrollbar-thumb{
  background:rgba(217,166,46,.35);border-radius:20px;
  border:2px solid #0C2338;
}
.combo-list::-webkit-scrollbar-thumb:hover{background:rgba(217,166,46,.6)}

/* the hint sits below the whole control, not the bare input */
.field .combo + .hint{margin-top:.4rem}

@media (max-width:760px){
  .combo-list{max-height:230px}
  .combo-opt{padding:.72rem .8rem;font-size:1rem}
}
@media (prefers-reduced-motion:reduce){
  .combo-list{animation:none}
  .combo.is-open .combo-caret{transform:none}
}

/* ---- WhatsApp send button ---- */
.btn-wide{display:inline-flex;align-items:center;justify-content:center;gap:.6rem}
.btn-wa{width:19px;height:19px;fill:currentColor;flex:0 0 auto}
.send-note{
  margin:0;font-size:.87rem;color:#A9B9C8;line-height:1.6;
  background:rgba(62,158,150,.10);
  border:1px solid rgba(62,158,150,.30);
  border-radius:var(--r-sm);padding:.75rem .9rem;
}
.form-status a{color:var(--gold-bright);text-decoration:underline}
