/* ==========================================================================
   SafeReach Technologies — stylesheet
   Palette, type and layout tokens. Edit values here, not in the HTML.
   ========================================================================== */

:root{
  /* Colour */
  --ink:        #06161F;   /* darkest surface */
  --navy:       #003058;   /* brand navy */
  --navy-deep:  #002340;
  --teal:       #1BBDC8;   /* brand teal — dark backgrounds only */
  --teal-ink:   #0B6E77;   /* accessible teal for light backgrounds */
  --paper:      #EEF1F3;
  --white:      #FFFFFF;
  --steel:      #55666F;   /* secondary text on light */
  --steel-dim:  #A8BCC7;   /* secondary text on navy */
  --steel-dark: #9FB3BE;   /* secondary text on ink */
  --line:       #D5DCE0;
  --line-dark:  rgba(255,255,255,.14);

  /* Type */
  /* Brand faces. "SafeReach" is Montserrat ExtraBold, "Technologies" is
     Bebas Neue Pro SemiExpanded. Google's free Bebas Neue is the web stand-in;
     see README if you licence the Pro width. Source Sans 3 carries body copy,
     which Montserrat is not comfortable to read at length. */
  --display: "Montserrat", "Helvetica Neue", Arial, sans-serif;
  --label:   "Bebas Neue", "Haettenschweiler", "Arial Narrow", sans-serif;
  --body:    "Source Sans 3", "Segoe UI", system-ui, sans-serif;
  --mono:    var(--label);

  /* Layout */
  --gut: clamp(20px, 5vw, 64px);
  --max: 1280px;
  --pad: clamp(64px, 9vw, 128px);
}

/* --- Reset ---------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--white);
  color:var(--ink);
  font-family:var(--body);
  font-size:clamp(17px,1.05vw,19px);
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;height:auto;}
a{color:var(--teal-ink);text-decoration-thickness:1px;text-underline-offset:3px;}
h1,h2,h3,h4{font-family:var(--display);font-weight:800;letter-spacing:-.03em;line-height:1.08;margin:0;}
p{margin:0 0 1.1em;}
ul{margin:0;padding:0;list-style:none;}

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

/* Keyboard focus — visible everywhere */
:focus-visible{outline:3px solid var(--teal);outline-offset:3px;border-radius:2px;}

.skip{
  position:absolute;left:-9999px;top:0;z-index:200;
  background:var(--teal);color:var(--ink);padding:14px 22px;
  font-family:var(--label);font-size:16px;font-weight:400;text-decoration:none;
}
.skip:focus{left:0;}

/* --- Shared layout -------------------------------------------------------- */
.wrap{max-width:var(--max);margin:0 auto;padding-inline:var(--gut);}
.band{padding-block:var(--pad);}
.band--paper{background:var(--paper);}
.band--navy{background:var(--navy);color:var(--white);}
.band--ink{background:var(--ink);color:var(--white);}
.band--navy p,.band--ink p{color:var(--steel-dim);}
.band--ink p{color:var(--steel-dark);}

.eyebrow{
  font-family:var(--label);font-size:clamp(19px,1.7vw,26px);font-weight:400;
  letter-spacing:.12em;text-transform:uppercase;line-height:1.1;
  color:var(--teal-ink);margin:0 0 16px;display:block;
}
.band--navy .eyebrow,.band--ink .eyebrow{color:var(--teal);}

.h-xl{font-size:clamp(34px,5vw,66px);}
.h-lg{font-size:clamp(28px,3.5vw,47px);}
.h-md{font-size:clamp(21px,1.95vw,27px);font-weight:700;letter-spacing:-.02em;}
.h-sm{font-size:18.5px;font-weight:700;letter-spacing:-.015em;}

.lede{font-size:clamp(19px,1.5vw,23px);line-height:1.5;color:var(--steel);max-width:60ch;}
.band--navy .lede,.band--ink .lede{color:var(--steel-dim);}

.rule{height:1px;background:var(--line);border:0;margin:0;}
.band--navy .rule,.band--ink .rule{background:var(--line-dark);}

/* Buttons */
.btn{
  display:inline-block;font-family:var(--label);font-size:16px;font-weight:400;
  line-height:1;padding-top:19px;padding-bottom:15px;
  letter-spacing:.06em;text-transform:uppercase;text-decoration:none;
  padding:16px 30px;border:1px solid transparent;transition:background .18s,color .18s,border-color .18s;
}
.btn--teal{background:var(--teal);color:var(--ink);}
.btn--teal:hover{background:#33D3DE;}
.btn--ghost{border-color:currentColor;color:inherit;background:transparent;}
.btn--ghost:hover{background:rgba(255,255,255,.1);}
.btn--outline{border-color:var(--navy);color:var(--navy);}
.btn--outline:hover{background:var(--navy);color:var(--white);}

/* ==========================================================================
   Header
   ========================================================================== */
.hdr{
  position:sticky;top:0;z-index:100;background:var(--ink);
  border-bottom:1px solid var(--line-dark);
}
.hdr__in{
  max-width:var(--max);margin:0 auto;padding:0 var(--gut);
  display:flex;align-items:center;gap:32px;min-height:92px;
}
.hdr__logo img{height:46px;width:auto;}
.hdr__nav{margin-left:auto;display:flex;align-items:center;gap:clamp(16px,2vw,30px);}
.hdr__nav a{
  font-family:var(--label);font-size:18px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--white);text-decoration:none;padding:8px 0;
  border-bottom:2px solid transparent;
}
.hdr__nav a:hover{color:var(--teal);border-bottom-color:var(--teal);}
.hdr__nav .btn{padding:14px 22px 11px;font-size:15px;}
.hdr__nav .btn:hover{border-bottom-color:transparent;color:var(--ink);}
@media (max-width:960px){
  .hdr__nav a:not(.btn){display:none;}
}

/* Mobile section menu — no JavaScript */
.mnav{position:relative;display:none;}
.mnav summary{
  list-style:none;cursor:pointer;
  font-family:var(--label);font-size:18px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--white);padding:12px 4px;
}
.mnav summary::-webkit-details-marker{display:none;}
.mnav[open] summary{color:var(--teal);}
.mnav ul{
  position:absolute;right:0;top:calc(100% + 12px);z-index:120;
  background:var(--ink);border:1px solid var(--line-dark);min-width:230px;padding:8px 0;
}
.mnav li a{
  display:block;padding:12px 22px;color:var(--white);text-decoration:none;
  font-family:var(--label);font-size:17px;letter-spacing:.04em;text-transform:uppercase;
}
.mnav li a:hover{background:rgba(255,255,255,.07);color:var(--white);}
@media (max-width:960px){ .mnav{display:block;} }

/* ==========================================================================
   Hero
   ========================================================================== */
.hero{background:var(--ink);color:var(--white);}
.hero__grid{
  max-width:var(--max);margin:0 auto;
  display:grid;grid-template-columns:1.05fr .95fr;align-items:stretch;
}
.hero__text{padding:clamp(56px,7vw,104px) clamp(20px,5vw,64px);align-self:center;}
.hero__text h1{
  font-size:clamp(34px,4.2vw,60px);font-weight:800;
  letter-spacing:-.035em;line-height:1.04;
  margin-bottom:26px;
}
.hero__text h1 em{font-style:normal;color:var(--teal);}
.hero__text p{color:var(--steel-dark);font-size:clamp(18px,1.35vw,21px);max-width:46ch;}
.hero__cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px;}
.hero__media{position:relative;min-height:520px;background:#0d2530;}
.hero__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:58% 42%;}
.hero__caption{
  position:absolute;left:0;bottom:0;right:0;
  background:linear-gradient(transparent,rgba(6,22,31,.92));
  padding:56px 26px 20px;
  font-family:var(--label);font-size:14px;letter-spacing:.06em;text-transform:uppercase;color:#CFDDE4;
}
@media (max-width:900px){
  .hero__grid{grid-template-columns:1fr;}
  .hero__media{min-height:380px;order:-1;}
}

/* Figures strip */
.figs{background:var(--navy);border-top:1px solid var(--line-dark);}
.figs__grid{
  max-width:var(--max);margin:0 auto;padding:0 var(--gut);
  display:grid;grid-template-columns:repeat(4,1fr);
}
.fig{padding:34px 26px 34px 0;border-right:1px solid var(--line-dark);}
.fig:last-child{border-right:0;}
.fig b{
  display:block;font-family:var(--display);font-weight:800;
  font-size:clamp(30px,3vw,42px);color:var(--teal);letter-spacing:-.03em;line-height:1;
}
.fig span{
  display:block;margin-top:10px;font-family:var(--label);font-size:14.5px;
  letter-spacing:.08em;text-transform:uppercase;color:var(--steel-dim);line-height:1.5;
}
@media (max-width:820px){
  .figs__grid{grid-template-columns:repeat(2,1fr);}
  .fig:nth-child(2){border-right:0;}
  .fig:nth-child(1),.fig:nth-child(2){border-bottom:1px solid var(--line-dark);}
}

/* ==========================================================================
   Thesis
   ========================================================================== */
.thesis{display:grid;grid-template-columns:1fr 1fr;gap:clamp(36px,6vw,92px);align-items:start;}
.thesis h2{font-size:clamp(28px,3.3vw,44px);}
.thesis__note{
  border-left:2px solid var(--teal-ink);padding-left:22px;margin-top:30px;
}
.thesis__note p{color:var(--steel);margin-bottom:.5em;}
.thesis__src{font-family:var(--body);font-size:15px;color:var(--steel);line-height:1.6;}
@media (max-width:860px){.thesis{grid-template-columns:1fr;}}

/* ==========================================================================
   Locker bank — the compartment grid (signature element)
   ========================================================================== */
.bank{
  display:grid;grid-template-columns:1fr 1fr .78fr;
  border:1px solid var(--line);background:var(--line);gap:1px;margin-top:52px;
}
.cell{background:var(--white);padding:clamp(26px,2.6vw,40px);}
.cell h3{margin-bottom:12px;}
.cell p{color:var(--steel);font-size:16.5px;margin-bottom:0;}
.cell__tag{
  font-family:var(--label);font-size:17px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--teal-ink);display:block;margin-bottom:14px;
}
.cell--kiosk{
  grid-row:span 2;background:var(--ink);color:var(--white);
  display:flex;flex-direction:column;justify-content:space-between;gap:34px;
}
.cell--kiosk h3{color:var(--white);}
.cell--kiosk p{color:var(--steel-dark);}
.cell--kiosk .cell__tag{color:var(--teal);}
.kiosk__988{
  border-top:1px solid var(--line-dark);padding-top:20px;
  font-family:var(--body);font-size:15px;line-height:1.6;color:var(--steel-dark);
}
.kiosk__988 b{color:var(--teal);font-weight:600;}
@media (max-width:900px){
  .bank{grid-template-columns:1fr;}
  .cell--kiosk{grid-row:auto;}
}

/* ==========================================================================
   Product — locker with dimension annotations
   ========================================================================== */
.prod{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(36px,6vw,80px);align-items:center;}
.prod__shot{position:relative;background:var(--white);border:1px solid var(--line);padding:26px;}
.prod__shot img{margin:0 auto;}
.dim{
  position:absolute;font-family:var(--label);font-size:13.5px;letter-spacing:.1em;
  color:var(--teal-ink);text-transform:uppercase;
}
.dim--h{top:50%;right:-6px;transform:translateY(-50%) rotate(90deg);transform-origin:center;}
.dim--w{left:50%;bottom:6px;transform:translateX(-50%);}
.prod__spec{
  font-family:var(--body);font-size:15px;color:var(--steel);
  letter-spacing:.02em;line-height:1.85;margin-top:18px;
  font-variant-numeric:tabular-nums;
}
.feat{border-top:1px solid var(--line);padding-top:22px;margin-top:22px;}
.feat:first-of-type{border-top:0;padding-top:0;margin-top:28px;}
.feat h3{margin-bottom:8px;}
.feat p{color:var(--steel);font-size:16.5px;margin-bottom:0;}
@media (max-width:880px){.prod{grid-template-columns:1fr;}}

/* ==========================================================================
   Process — a real sequence, so it is numbered
   ========================================================================== */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line-dark);margin-top:52px;}
.step{background:var(--navy);padding:clamp(24px,2.4vw,34px);}
.step b{
  display:block;font-family:var(--label);font-size:14px;letter-spacing:.14em;
  color:var(--teal);margin-bottom:14px;
}
.step h3{color:var(--white);font-size:20px;margin-bottom:10px;}
.step p{color:var(--steel-dim);font-size:16px;margin-bottom:0;}
@media (max-width:900px){.steps{grid-template-columns:1fr;}}

/* ==========================================================================
   Generic content grids
   ========================================================================== */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,4.5vw,64px);align-items:start;}
.grid-2>*,.grid-3>*,.bank>*,.fund>*,.res>*{min-width:0;}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,3vw,40px);}
@media (max-width:880px){.grid-2,.grid-3{grid-template-columns:1fr;}}

.card{background:var(--white);border:1px solid var(--line);padding:clamp(24px,2.4vw,34px);}
.card h3{margin-bottom:12px;}
.card p{color:var(--steel);font-size:16.5px;}
.card p:last-child{margin-bottom:0;}
.card img{margin-bottom:22px;border:1px solid var(--line);}

.ticks{margin-top:6px;}
.ticks li{
  position:relative;padding-left:28px;margin-bottom:13px;font-size:16.5px;color:var(--steel);
}
.ticks li::before{
  content:"";position:absolute;left:0;top:.55em;width:11px;height:2px;background:var(--teal-ink);
}
.band--navy .ticks li,.band--ink .ticks li{color:var(--steel-dim);}
.band--navy .ticks li::before,.band--ink .ticks li::before{background:var(--teal);}

.shots{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:16px;}
.shots figure{margin:0;}
.shots img{border:1px solid var(--line);}
.shots figcaption{
  font-family:var(--label);font-size:13.5px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--steel);margin-top:12px;
}
@media (max-width:760px){.shots{grid-template-columns:1fr;}}

/* ==========================================================================
   Legislation
   ========================================================================== */
.bill{border-top:2px solid var(--teal);padding-top:26px;}
.bill__state{
  font-family:var(--label);font-size:14px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--teal);margin-bottom:12px;display:block;
}
.bill h3{color:var(--white);margin-bottom:14px;}
.bill p{color:var(--steel-dim);font-size:16.5px;}
.bill dl{margin:20px 0 0;}
.bill dt{
  font-family:var(--label);font-size:16px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--teal);margin-top:18px;
}
.bill dd{margin:5px 0 0;color:var(--steel-dim);font-size:16px;}

/* ==========================================================================
   Funding
   ========================================================================== */
.fund{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:48px;}
.fund > div{background:var(--white);padding:clamp(26px,3vw,42px);}
.fund h3{margin-bottom:16px;}

/* ==========================================================================
   Resources
   ========================================================================== */
.res{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,52px);margin-top:48px;}
.res__item{background:var(--ink);border:1px solid var(--line-dark);}
.res__item img{border-bottom:1px solid var(--line-dark);}
.res__body{padding:clamp(24px,2.4vw,34px);}
.res__body h3{color:var(--white);margin-bottom:10px;}
.res__body p{color:var(--steel-dark);font-size:16.5px;}
.res__url{
  font-family:var(--body);font-size:16px;letter-spacing:.02em;color:var(--teal);
  text-decoration:none;border-bottom:1px solid rgba(27,189,200,.4);
}
.res__url:hover{border-bottom-color:var(--teal);}
@media (max-width:880px){.res{grid-template-columns:1fr;}}

/* ==========================================================================
   Contact
   ========================================================================== */
.contact{display:grid;grid-template-columns:1fr 1fr;gap:clamp(36px,6vw,84px);align-items:start;}
.field{margin-bottom:20px;}
.field label{
  display:block;font-family:var(--label);font-size:13.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--steel-dim);margin-bottom:8px;
}
.field input,.field textarea,.field select{
  width:100%;background:rgba(255,255,255,.06);border:1px solid var(--line-dark);
  color:var(--white);font-family:var(--body);font-size:17px;padding:13px 15px;border-radius:0;
}
.field textarea{min-height:130px;resize:vertical;}
.field input::placeholder,.field textarea::placeholder{color:#7A8F9B;}
.contact__direct dt{
  font-family:var(--label);font-size:13.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--teal);margin-top:22px;
}
.contact__direct dd{margin:6px 0 0;font-size:18px;color:var(--white);}
.contact__direct a{color:var(--white);}
@media (max-width:880px){.contact{grid-template-columns:1fr;}}

/* ==========================================================================
   Footer
   ========================================================================== */
.ftr{background:var(--ink);color:var(--steel-dark);border-top:1px solid var(--line-dark);}
.ftr__in{max-width:var(--max);margin:0 auto;padding:56px var(--gut) 40px;}
.ftr__top{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px;}
.ftr img{height:28px;width:auto;margin-bottom:18px;}
.ftr h4{
  font-family:var(--label);font-size:14px;font-weight:400;letter-spacing:.12em;
  text-transform:uppercase;color:var(--teal);margin-bottom:16px;
}
.ftr li{margin-bottom:10px;font-size:15.5px;}
.ftr a{color:var(--steel-dark);text-decoration:none;}
.ftr a:hover{color:var(--white);text-decoration:underline;}
.ftr__crisis{
  margin-top:44px;border-top:1px solid var(--line-dark);border-bottom:1px solid var(--line-dark);
  padding:20px 0;font-size:15.5px;color:var(--steel-dark);
}
.ftr__crisis b{color:var(--teal);}
.ftr__legal{
  margin-top:24px;display:flex;flex-wrap:wrap;gap:10px 26px;
  font-family:var(--label);font-size:15px;letter-spacing:.05em;color:#7A8F9B;
}
@media (max-width:880px){.ftr__top{grid-template-columns:1fr;}}

/* --- Responsive additions -------------------------------------------------- */
@media (max-width:880px){
  .fund{grid-template-columns:1fr;}
}
@media (max-width:640px){
  .hero__text h1{font-size:34px;}
  .band{padding-block:56px;}
}

/* --- Embedded CRM form ------------------------------------------------------
   The form itself is styled inside the CRM, not here. This only frames it. */
.formwrap{
  background:var(--white);
  border:1px solid var(--line-dark);
  overflow:hidden;
  min-height:640px;
}
.formwrap iframe{display:block;width:100%;border:0;}


/* --- Desktop reading scale -------------------------------------------------
   Mobile sizing was already right, so this only lifts larger viewports. */
@media (min-width:1000px){
  body{font-size:19px;}
  .lede{font-size:clamp(21px,1.6vw,25px);}
  .cell p,.card p,.feat p,.step p,.bill p,.res__body p,.ticks li{font-size:18px;}
  .bill dd{font-size:17.5px;}
  .hero__text p{font-size:21px;}
  .shots figcaption{font-size:15px;}
  .prod__spec{font-size:16px;}
  .kiosk__988,.thesis__src{font-size:16.5px;}
  .fig span{font-size:16px;}
  .ftr li{font-size:17px;}
}
@media (min-width:1440px){
  body{font-size:20px;}
  .cell p,.card p,.feat p,.bill p,.res__body p,.ticks li{font-size:18.5px;}
}

/* --- Legal pages ------------------------------------------------------------ */
.legal{max-width:80ch;}
.legal h2{font-size:clamp(23px,2.1vw,29px);margin:52px 0 14px;}
.legal h3{font-size:clamp(19px,1.6vw,22px);margin:34px 0 10px;}
.legal p{margin-bottom:1.05em;}
.legal ul{margin:0 0 1.3em;padding:0;}
.legal ul li{position:relative;padding-left:26px;margin-bottom:11px;}
.legal ul li::before{content:"";position:absolute;left:0;top:.62em;width:11px;height:2px;background:var(--teal-ink);}
.legal .updated{
  font-family:var(--label);font-size:16px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--steel);margin-bottom:34px;display:block;
}
.legal .intro{font-size:clamp(19px,1.5vw,22px);line-height:1.55;color:var(--ink);margin-bottom:34px;}
.legal address{font-style:normal;color:var(--steel);margin-bottom:1.1em;}

/* --- Social row -------------------------------------------------------------- */
.social{margin-top:48px;text-align:center;}
.social h4{
  font-family:var(--label);font-size:20px;font-weight:400;letter-spacing:.14em;
  text-transform:uppercase;color:var(--white);margin:0 0 20px;
}
.social__row{display:flex;justify-content:center;gap:20px;padding:0;margin:0;list-style:none;}
.social__row a{
  display:grid;place-items:center;width:52px;height:52px;border-radius:50%;
  background:rgba(255,255,255,.08);border:1px solid var(--line-dark);
  transition:background .18s,border-color .18s,transform .18s;
}
.social__row svg{width:24px;height:24px;fill:var(--white);transition:fill .18s;}
.social__row a:hover{background:var(--teal);border-color:var(--teal);transform:translateY(-2px);}
.social__row a:hover svg{fill:var(--ink);}

/* --- FAQ ---------------------------------------------------------------------- */
.faq{
  margin-top:48px;display:grid;grid-template-columns:1fr 1fr;
  gap:1px;background:var(--line);border:1px solid var(--line);
}
.faq__item{background:var(--white);padding:clamp(24px,2.5vw,36px);}
.faq__item h3{margin-bottom:12px;}
.faq__item p{color:var(--steel);font-size:16.5px;margin-bottom:0;}
@media (max-width:880px){.faq{grid-template-columns:1fr;}}
@media (min-width:1000px){.faq__item p{font-size:18px;}}

/* --- FAQ group headings ------------------------------------------------------- */
.faq__group{
  font-family:var(--label);font-size:clamp(20px,1.6vw,25px);font-weight:400;
  letter-spacing:.1em;text-transform:uppercase;color:var(--teal-ink);
  margin:56px 0 0;
}
.faq__group + .faq{margin-top:20px;}
