/* SolarSafe Services — main.css — v3.0
   Palette rules (verified against WCAG 2.1):
   - Neon orange #FF3B14 is the ACTION + HAZARD colour only. It appears nowhere else.
     Isolation effect: the CTA is the only element in its colour family on the page.
   - Neon is NEVER placed on mid sage (1.07:1). Only on ivory, cream, ink or deep sage.
   - Body text 4.5:1 minimum. Buttons and large text 3:1 minimum. All pairs measured.
*/

:root{
  /* surfaces */
  --ivory:#FDFBF7;
  --cream:#F1EDE1;
  --sand:#E0D8C4;
  /* brand */
  --sage:#6E8A6E;
  --sage-mid:#47654C;
  --sage-deep:#22352A;
  /* text */
  --ink:#161B17;
  --ink-soft:#525C54;
  --grey:#8B948C;
  /* action + hazard (used nowhere else) */
  --neon:#FF3B14;
  --neon-deep:#D92E0C;
  /* lines */
  --line:rgba(22,27,23,.13);
  --line-l:rgba(253,251,247,.16);
  --display:"Archivo",Helvetica,sans-serif;
  --body:"Inter Tight",system-ui,-apple-system,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace;
  --ease:cubic-bezier(.22,.61,.36,1);
  --swoop:cubic-bezier(.16,1,.3,1);
  --wrap:1180px;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ivory);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.62;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,svg{max-width:100%;display:block}
h1,h2,h3{font-family:var(--display);font-weight:700;line-height:1.03;letter-spacing:-.03em;margin:0}
p{margin:0 0 1em}
a{color:inherit}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 26px}
.skip{position:absolute;left:-9999px;top:0;background:var(--neon);color:var(--ink);padding:12px 18px;font-weight:600;z-index:99}
.skip:focus{left:12px;top:12px}
:focus-visible{outline:2.5px solid var(--neon);outline-offset:3px;border-radius:3px}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  background:var(--neon);color:var(--ink);
  font-family:var(--body);font-weight:600;font-size:16px;
  padding:15px 30px;border:1.5px solid var(--neon);border-radius:100px;
  text-decoration:none;cursor:pointer;
  transition:transform .5s var(--swoop),box-shadow .5s var(--swoop),background .3s var(--ease),border-color .3s var(--ease);
}
.btn:hover{transform:translateY(-3px);background:var(--neon-deep);border-color:var(--neon-deep);color:var(--ivory);box-shadow:0 16px 32px -16px rgba(255,59,20,.9)}
.btn:active{transform:translateY(-1px)}
.btn--sm{padding:10px 18px;font-size:14.5px}
.btn--ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn--ghost:hover{background:transparent;color:var(--ink);border-color:var(--sage-mid);box-shadow:none}
.btn--send{background:var(--neon);border-color:var(--neon);color:var(--ink)}
.btn:disabled{opacity:.55;cursor:default;transform:none}

/* ---------- shared ---------- */
.eyebrow{
  font-family:var(--mono);font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--sage-mid);margin:0 0 16px;display:flex;align-items:center;gap:10px;
}
.eyebrow::before{content:"";width:20px;height:1px;background:currentColor;flex:none}
.eyebrow--hazard{color:var(--neon-deep)}
.eyebrow--light{color:rgba(253,251,247,.8)}
.h2{font-size:clamp(30px,3.9vw,46px);max-width:19ch;margin-bottom:30px}
.h2--light{color:var(--ivory)}
.sec{padding:112px 0}
.sec--cream{background:var(--cream)}
.sec--ink{background:var(--sage-deep);color:var(--ivory)}

.rv{opacity:0;transform:translateY(22px);transition:opacity .85s var(--swoop),transform .85s var(--swoop)}
.rv.in{opacity:1;transform:none}

/* ---------- header ---------- */
.hdr{position:sticky;top:0;z-index:60;background:rgba(253,251,247,.9);backdrop-filter:blur(14px);border-bottom:1px solid transparent;transition:border-color .4s var(--ease)}
.hdr.stuck{border-color:var(--line)}
.hdr__in{display:flex;align-items:center;justify-content:space-between;height:76px;gap:24px}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none}
.brand__mark{display:flex;transition:transform .6s var(--swoop)}
.brand:hover .brand__mark{transform:rotate(-6deg) scale(1.06)}
.brand__txt{font-family:var(--display);font-size:19px;letter-spacing:-.03em;line-height:1}
.brand__txt b{font-weight:700}
.brand__txt i{font-style:normal;font-weight:500;color:var(--sage-mid)}
.nav{display:flex;align-items:center;gap:28px;font-size:15px}
.nav a{text-decoration:none;color:var(--ink-soft);position:relative;transition:color .3s var(--ease)}
.nav a:not(.btn)::after{content:"";position:absolute;left:0;bottom:-4px;width:100%;height:1.5px;background:var(--sage);transform:scaleX(0);transform-origin:right;transition:transform .45s var(--swoop)}
.nav a:not(.btn):hover{color:var(--ink)}
.nav a:not(.btn):hover::after{transform:scaleX(1);transform-origin:left}

/* ---------- hero ---------- */
.hero{position:relative;padding:104px 0 104px;overflow:hidden}
.hero::before{
  content:"";position:absolute;top:-26%;right:-10%;width:560px;height:560px;border-radius:50%;
  background:radial-gradient(circle,rgba(110,138,110,.26),rgba(110,138,110,0) 70%);pointer-events:none;
}
.hero__in{position:relative;z-index:1;display:grid;grid-template-columns:1.02fr .98fr;gap:64px;align-items:center}
.hero__h1{font-size:clamp(38px,4.5vw,64px);margin:0 0 28px;letter-spacing:-.045em}
.hero__h1 em{font-style:normal;color:var(--neon-deep)}
.ln{display:block;overflow:hidden}
.ln > span{display:block;transform:translateY(105%);animation:rise .95s var(--swoop) forwards}
.ln:nth-child(1) > span{animation-delay:.05s}
.ln:nth-child(2) > span{animation-delay:.14s}
.ln:nth-child(3) > span{animation-delay:.23s}
.ln:nth-child(4) > span{animation-delay:.32s}
@keyframes rise{to{transform:none}}
.lede{font-size:18px;color:var(--ink-soft);max-width:48ch;margin:0 0 32px}
.hero__cta{display:flex;gap:12px;flex-wrap:wrap}

.hero__shot{margin:0}
.hero__img,.hero__slot{
  width:100%;aspect-ratio:4/5;border-radius:26px;object-fit:cover;
  box-shadow:0 40px 80px -48px rgba(22,27,23,.7);
  opacity:0;transform:translateY(26px) scale(.985);animation:shot 1.15s var(--swoop) .32s forwards;
}
@keyframes shot{to{opacity:1;transform:none}}
.hero__slot{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:34px;background:var(--cream);border:1.5px dashed var(--sand)}
.hero__slot-mark{color:var(--sage-mid);margin-bottom:6px}
.hero__slot b{font-family:var(--display);font-size:17px}
.hero__slot small{color:var(--ink-soft);font-size:13.5px;max-width:32ch;line-height:1.5}
.hero__slot code{font-family:var(--mono);font-size:12px;background:var(--sand);padding:2px 6px;border-radius:5px}
.hero__cap{display:flex;align-items:center;gap:10px;margin-top:18px;font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--grey)}
.hero__cap i{width:18px;height:1px;background:var(--sage);flex:none}

/* ---------- band ---------- */
.band{background:var(--cream);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.band__in{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
.band__item{padding:46px 34px;border-left:1px solid var(--line)}
.band__item:first-child{border-left:0;padding-left:0}
.band__item b{display:block;font-family:var(--display);font-weight:700;font-size:clamp(32px,3.6vw,48px);letter-spacing:-.04em;color:var(--sage-deep);line-height:1}
.band__item span{display:block;margin-top:10px;font-size:14.5px;color:var(--ink-soft);max-width:30ch}

/* ---------- danger deck (no stacking, no overlap) ---------- */
.deck{padding:112px 0}
.deck__in{display:grid;grid-template-columns:.86fr 1.14fr;gap:70px;align-items:start}
.deck__sticky{position:sticky;top:120px}
.deck__sub{color:var(--ink-soft);font-size:16.5px;max-width:44ch}
.deck__idx{list-style:none;margin:34px 0 0;padding:0;display:grid;gap:2px}
.deck__idx li{
  display:flex;align-items:center;gap:12px;padding:11px 0;
  font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--grey);transition:color .5s var(--ease),transform .5s var(--swoop);
}
.deck__idx li i{width:22px;height:1.5px;background:currentColor;flex:none;transition:width .5s var(--swoop)}
.deck__idx li.on{color:var(--neon-deep);transform:translateX(4px)}
.deck__idx li.on i{width:38px}

.deck__stage{display:grid;gap:20px}
.dcard{
  background:var(--ivory);border:1px solid var(--line);border-radius:20px;padding:36px;
  transition:border-color .5s var(--ease),box-shadow .6s var(--swoop),transform .6s var(--swoop);
}
.dcard.live{border-color:rgba(255,59,20,.42);box-shadow:0 22px 50px -34px rgba(22,27,23,.42);transform:translateY(-2px)}
.dcard__top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}
.dcard__n{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--neon-deep)}
.dcard__tag{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--sage-mid);background:rgba(110,138,110,.16);border-radius:100px;padding:6px 12px}
.dcard h3{font-size:clamp(21px,2.2vw,27px);margin-bottom:13px;max-width:22ch}
.dcard p{color:var(--ink-soft);font-size:15.5px;margin:0}

/* ---------- anatomy: split layout, no text over image ---------- */
.anat{background:var(--cream);padding:112px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.anat__in{display:grid;grid-template-columns:1.05fr .95fr;gap:60px;align-items:center}
.anat__media{position:relative;border-radius:24px;overflow:hidden;background:var(--sand);box-shadow:0 36px 74px -46px rgba(22,27,23,.6)}
.anat__img{width:100%;aspect-ratio:5/4;object-fit:cover}
.anat__copy p{color:var(--ink-soft);max-width:50ch}

/* numbered markers sit on the photo only, never over text */
.mk{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);
  width:30px;height:30px;border-radius:50%;border:2px solid var(--ivory);
  background:var(--neon);color:var(--ink);
  font-family:var(--mono);font-size:12px;font-weight:500;line-height:26px;text-align:center;
  transition:transform .5s var(--swoop),box-shadow .5s var(--swoop);
  box-shadow:0 4px 12px rgba(22,27,23,.4);
}
.mk.on{transform:translate(-50%,-50%) scale(1.28);box-shadow:0 0 0 6px rgba(255,59,20,.28),0 4px 12px rgba(22,27,23,.4)}

.faults{list-style:none;margin:28px 0 0;padding:0;display:grid;gap:0}
.faults li{border-top:1px solid var(--line)}
.faults li:last-child{border-bottom:1px solid var(--line)}
.faults button{
  width:100%;display:flex;align-items:flex-start;gap:14px;text-align:left;
  background:none;border:0;padding:16px 0;cursor:pointer;font-family:var(--body);color:inherit;
  transition:padding-left .45s var(--swoop)
}
.faults button:hover,.faults button:focus-visible{padding-left:8px}
.faults b{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--neon-deep);padding-top:3px;flex:none}
.faults span{display:block;font-size:15.5px;font-weight:600}
.faults small{display:block;color:var(--ink-soft);font-size:14px;font-weight:400;margin-top:2px}
.faults li.on button{padding-left:8px}
.faults li.on span{color:var(--neon-deep)}

/* ---------- orphaned ---------- */
.orphan{display:grid;grid-template-columns:1.2fr .8fr;gap:60px;align-items:start}
.orphan__copy p{color:var(--ink-soft);max-width:58ch}
.orphan__copy em{font-style:italic;color:var(--ink)}
.ticks{list-style:none;padding:0;margin:30px 0 0;display:grid;gap:11px}
.ticks li{position:relative;padding-left:30px;font-size:15.5px}
.ticks li::before{content:"";position:absolute;left:0;top:7px;width:15px;height:8px;border-left:2px solid var(--sage-mid);border-bottom:2px solid var(--sage-mid);transform:rotate(-45deg)}
.quotebox{background:var(--cream);border-radius:22px;padding:38px;position:sticky;top:120px;border:1px solid var(--line)}
.quotebox__mark{display:block;margin-bottom:20px}
.quotebox__q{font-family:var(--display);font-weight:700;font-size:24px;line-height:1.22;letter-spacing:-.03em;margin-bottom:14px}
.quotebox__a{color:var(--ink-soft);font-size:14.5px;margin:0}

/* ---------- steps ---------- */
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.steps li{padding:0 26px;border-left:1px solid var(--line)}
.steps li:first-child{padding-left:0;border-left:0}
.steps li:last-child{padding-right:0}
.steps__n{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--sage-mid);display:block;margin-bottom:16px}
.steps h3{font-size:19px;margin-bottom:10px}
.steps p{color:var(--ink-soft);font-size:15px;margin:0}

/* ---------- intake ---------- */
.intake__head{max-width:58ch;margin-bottom:44px}
.intake__sub{color:rgba(253,251,247,.78);font-size:17px;margin:0}
.flash{border-radius:14px;padding:20px 24px;margin-bottom:28px;font-size:16px;border-left:3px solid}
.flash--ok{background:rgba(110,138,110,.28);border-color:var(--sage);color:var(--ivory)}
.flash--bad{background:rgba(255,59,20,.2);border-color:var(--neon);color:#ffe4dc}
.frm{background:var(--ivory);color:var(--ink);border-radius:24px;padding:44px}
.hp{position:absolute;left:-9999px}

.rail{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin:0 0 36px;padding:0}
.rail li{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--grey);padding-top:14px;border-top:2px solid var(--sand);transition:color .5s var(--ease),border-color .5s var(--ease)}
.rail li span{display:block;margin-bottom:3px}
.rail li[data-on]{color:var(--neon-deep);border-color:var(--neon)}
.rail li[data-done]{color:var(--sage-mid);border-color:var(--sage)}
.rail li[data-done] span::after{content:" ✓"}

.step{border:0;margin:0;padding:0;min-width:0}
.step legend{font-family:var(--display);font-weight:700;font-size:25px;letter-spacing:-.03em;padding:0;margin-bottom:8px}
.step[hidden]{display:none}
.step.is-in{animation:swipe .55s var(--swoop)}
@keyframes swipe{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
.step.is-back{animation:swipeback .55s var(--swoop)}
@keyframes swipeback{from{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:none}}

.hint{color:var(--ink-soft);font-size:15px;margin:0 0 24px;max-width:62ch}
.hint--small{font-size:13px;color:var(--grey);margin:20px 0 0}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}
.field{margin:0 0 20px;display:block}
.field label{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--sage-mid);margin-bottom:8px}
.field label i{font-style:normal;text-transform:none;letter-spacing:0;color:var(--grey);font-family:var(--body);font-size:12px}
.field small{display:block;color:var(--ink-soft);font-size:13px;margin-top:7px}
input[type=text],input[type=email],input[type=tel],select,textarea{
  width:100%;background:var(--cream);color:var(--ink);
  border:1.5px solid transparent;border-radius:10px;
  font-family:var(--body);font-size:16px;padding:14px 16px;
  transition:border-color .35s var(--ease),background .35s var(--ease),box-shadow .35s var(--ease);
}
textarea{resize:vertical}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--sage-mid) 50%),linear-gradient(135deg,var(--sage-mid) 50%,transparent 50%);background-position:calc(100% - 21px) 24px,calc(100% - 15px) 24px;background-size:6px 6px;background-repeat:no-repeat}
input::placeholder,textarea::placeholder{color:var(--grey)}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--sage);background:var(--ivory);box-shadow:0 0 0 4px rgba(110,138,110,.22)}
input.err,select.err{border-color:var(--neon);box-shadow:0 0 0 4px rgba(255,59,20,.16)}

.drops{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:22px}
.drop{position:relative;display:block;cursor:pointer;background:var(--cream);border:1.5px dashed var(--sand);border-radius:16px;padding:24px 22px;transition:border-color .45s var(--ease),background .45s var(--ease),transform .45s var(--swoop)}
.drop:hover{border-color:var(--sage);background:rgba(110,138,110,.12);transform:translateY(-3px)}
.drop input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.drop__icon{display:flex;color:var(--sage-mid);margin-bottom:14px;transition:color .4s var(--ease)}
.drop b{display:block;font-family:var(--body);font-weight:600;font-size:16px;margin-bottom:5px}
.drop small{display:block;color:var(--ink-soft);font-size:13px;line-height:1.45;margin-bottom:16px}
.drop__file{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--sage-mid);font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drop.has-file{border-style:solid;border-color:var(--sage);background:rgba(110,138,110,.18)}
.drop.has-file .drop__icon,.drop.has-file .drop__file{color:var(--sage-deep)}
.drop.has-file .drop__file::before{content:"✓ "}
.drop.too-big{border-color:var(--neon);background:rgba(255,59,20,.07)}
.drop.too-big .drop__file{color:var(--neon-deep)}
.drop--wide{margin-bottom:22px}
.drop--wide small{max-width:60ch}

.warn{background:rgba(255,59,20,.08);border-left:3px solid var(--neon);border-radius:10px;padding:16px 20px;font-size:14.5px;color:var(--ink-soft);margin:0}
.warn b{color:var(--ink)}
.nav2{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:32px;padding-top:28px;border-top:1px solid var(--line)}
.nav2--send{flex-wrap:wrap}

/* ---------- footer ---------- */
.ftr{background:var(--ink);color:var(--ivory);padding:70px 0 30px}
.ftr__in{display:flex;justify-content:space-between;gap:48px;flex-wrap:wrap;padding-bottom:38px}
.ftr__in > div{max-width:46ch}
.ftr__in p{color:rgba(253,251,247,.64);font-size:14.5px;margin:14px 0 0}
.brand__txt--ftr{font-size:23px}
.brand__txt--ftr i{color:var(--sage)}
.ftr nav{display:flex;flex-direction:column;gap:11px;font-size:15px}
.ftr nav a{color:rgba(253,251,247,.64);text-decoration:none;transition:color .3s var(--ease)}
.ftr nav a:hover{color:var(--neon)}
.ftr__base{border-top:1px solid var(--line-l);padding-top:24px;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
.ftr__base p{margin:0;font-size:13px;color:rgba(253,251,247,.45);max-width:70ch}
.ftr__ver{font-family:var(--mono);font-size:11px!important;letter-spacing:.14em;color:rgba(253,251,247,.32)!important;flex:none}

/* ---------- responsive ---------- */
@media(max-width:980px){
  .hero__in,.orphan,.deck__in,.anat__in{grid-template-columns:1fr;gap:44px}
  .hero__img,.hero__slot{aspect-ratio:4/3}
  .band__in,.steps,.drops{grid-template-columns:1fr}
  .band__item{border-left:0;border-top:1px solid var(--line);padding:30px 0}
  .band__item:first-child{border-top:0}
  .steps li{padding:24px 0;border-left:0;border-top:1px solid var(--line)}
  .steps li:first-child{padding-top:0;border-top:0}
  .quotebox,.deck__sticky{position:static}
  .nav a:not(.btn){display:none}
}
@media(max-width:640px){
  .sec,.deck,.anat{padding:76px 0}
  .hero{padding:64px 0 76px}
  .f2{grid-template-columns:1fr}
  .frm{padding:26px 20px;border-radius:18px}
  .dcard{padding:26px 22px;border-radius:16px}
  .rail li{font-size:9px;letter-spacing:.04em}
  .nav2{flex-direction:column-reverse;align-items:stretch}
  .nav2 .btn{width:100%}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition-duration:.01ms!important}
  .rv{opacity:1;transform:none}
  .ln > span{transform:none}
}
