@font-face{
  font-family:"Big Shoulders";
  font-weight:700;
  font-style:normal;
  font-display:swap;
  src:url(../fonts/bigshoulders-700.ttf) format("truetype");
}
@font-face{
  font-family:"Public Sans";
  font-weight:400;
  font-style:normal;
  font-display:swap;
  src:url(../fonts/publicsans-400.ttf) format("truetype");
}
@font-face{
  font-family:"Public Sans";
  font-weight:600;
  font-style:normal;
  font-display:swap;
  src:url(../fonts/publicsans-600.ttf) format("truetype");
}

:root{
  --bg:#EEF0E8;
  --bg-raised:#F7F8F2;
  --panel:#E2E7D8;
  --ink:#16231F;
  --ink-soft:#4B5A50;
  --line:#C7CDBC;
  --line-strong:#A9B29C;
  --accent:#3B6B4C;
  --accent-soft:#DCE6DC;
  --brass:#8F6D3B;
  --accent-on:#F7F8F2;
  --shadow: 0 1px 0 rgba(22,35,31,0.06);
  color-scheme: light;
}
:root[data-theme="dark"]{
  --bg:#0E1B17;
  --bg-raised:#152520;
  --panel:#18291F;
  --ink:#E9ECE2;
  --ink-soft:#A6B2A3;
  --line:#25352E;
  --line-strong:#334A3F;
  --accent:#72A688;
  --accent-soft:#1C2E26;
  --brass:#C9A25D;
  --accent-on:#0E1B17;
  color-scheme: dark;
}
:root[data-theme="light"]{
  --bg:#EEF0E8;
  --bg-raised:#F7F8F2;
  --panel:#E2E7D8;
  --ink:#16231F;
  --ink-soft:#4B5A50;
  --line:#C7CDBC;
  --line-strong:#A9B29C;
  --accent:#3B6B4C;
  --accent-soft:#DCE6DC;
  --brass:#8F6D3B;
  --accent-on:#F7F8F2;
  color-scheme: light;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto;} }

@keyframes fadeUp{
  from{ opacity:0; transform:translateY(20px); }
  to{ opacity:1; transform:translateY(0); }
}
.load-in{
  opacity:0;
  animation:fadeUp 0.9s cubic-bezier(.16,.8,.24,1) both;
  animation-delay:var(--d,0s);
}
@media (prefers-reduced-motion: reduce){
  .load-in{ animation:none; opacity:1; transform:none; }
}

body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:"Public Sans", ui-sans-serif, "Segoe UI", Arial, sans-serif;
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

h1,h2,h3{
  font-family:"Big Shoulders", "Arial Narrow", sans-serif;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.01em;
  text-wrap:balance;
  margin:0;
  color:var(--ink);
}

.mono{
  font-family: ui-monospace, "Cascadia Mono", "Cascadia Code", Consolas, "SFMono-Regular", monospace;
}

.eyebrow{
  font-family: ui-monospace, "Cascadia Mono", "Cascadia Code", Consolas, monospace;
  font-size:0.72rem;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--brass);
  display:flex;
  align-items:center;
  gap:0.6em;
}
.eyebrow::before{
  content:"";
  width:1.4em;
  height:1px;
  background:var(--brass);
  display:inline-block;
}

a{color:inherit;}

.wrap{
  max-width:1180px;
  margin:0 auto;
  padding:0 1.5rem;
}
@media (min-width:900px){ .wrap{padding:0 3rem;} }

/* ---------- corner ticks (registration marks) ---------- */
.plate{
  position:relative;
  background:var(--bg);
  border-top:1px solid var(--line);
  transition:background 0.3s ease;
}
.plate.alt{ background:var(--panel); }
.plate::before,.plate::after{
  content:"";
  position:absolute;
  width:9px;height:9px;
  border-color:var(--line-strong);
  top:-1px;
}
.plate::before{ left:0; border-top:1px solid; border-left:1px solid; }
.plate::after{ right:0; border-top:1px solid; border-right:1px solid; }

/* ---------- header ---------- */
header{
  position:sticky;
  top:0;
  z-index:50;
  background:color-mix(in srgb, var(--bg) 88%, transparent);
  backdrop-filter: blur(10px);
  border-bottom:1px solid var(--line);
}
.nav{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1.5rem;
  padding:0.95rem 0;
  transition:padding 0.25s ease;
}
header.scrolled .nav{ padding:0.55rem 0; }
header{ transition:background 0.25s ease; }
.brand{
  display:flex;
  align-items:center;
  gap:0.7rem;
  text-decoration:none;
}
.brand-mark{
  width:34px;height:34px;
  border:1.5px solid var(--ink);
  display:grid;place-items:center;
  font-family:"Big Shoulders",sans-serif;
  font-weight:700;
  font-size:1.05rem;
  flex-shrink:0;
}
.brand-name{
  display:flex;flex-direction:column;
  line-height:1.15;
}
.brand-name strong{
  font-family:"Big Shoulders",sans-serif;
  font-weight:700;
  font-size:1rem;
  letter-spacing:0.03em;
}
.brand-name span{
  font-family: ui-monospace, Consolas, monospace;
  font-size:0.62rem;
  letter-spacing:0.12em;
  color:var(--ink-soft);
  text-transform:uppercase;
}
.navlinks{
  display:none;
  gap:2rem;
  list-style:none;
  margin:0;padding:0;
  font-size:0.92rem;
}
@media (min-width:920px){ .navlinks{display:flex;} }
.navlinks a{
  text-decoration:none;
  position:relative;
  padding-bottom:2px;
}
.navlinks a::after{
  content:"";
  position:absolute;left:0;bottom:0;
  width:0;height:1px;
  background:var(--accent);
  transition:width 0.25s ease;
}
.navlinks a:hover::after{width:100%;}
.navcta{
  display:none;
  align-items:center;
  gap:0.5rem;
  border:1px solid var(--ink);
  padding:0.5rem 0.9rem;
  text-decoration:none;
  font-size:0.82rem;
  letter-spacing:0.03em;
  white-space:nowrap;
  transition: background 0.2s ease, color 0.2s ease;
}
@media (min-width:1080px){ .navcta{display:inline-flex;} }
.navcta:hover{ background:var(--ink); color:var(--bg); }
.navcta .arrow{ display:inline-block; transition:transform 0.25s ease; }
.navcta:hover .arrow{ transform:translateX(4px); }

/* ---------- ticker ---------- */
.ticker{
  border-bottom:1px solid var(--line);
  overflow:hidden;
  background:var(--bg-raised);
}
.ticker-track{
  display:flex;
  width:max-content;
  gap:2.5rem;
  padding:0.55rem 0;
  font-family: ui-monospace, Consolas, monospace;
  font-size:0.7rem;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--ink-soft);
  animation:ticker 26s linear infinite;
}
.ticker-track span{ flex-shrink:0; }
.ticker-track span.dot{ color:var(--brass); }
@keyframes ticker{
  from{ transform:translateX(0); }
  to{ transform:translateX(-50%); }
}
@media (prefers-reduced-motion: reduce){ .ticker-track{ animation:none; } }

/* ---------- hero ---------- */
.hero{
  position:relative;
  padding:5.5rem 0 4rem;
  overflow:hidden;
  --ink:#F3F5EE;
  --ink-soft:rgba(243,245,238,0.8);
  --bg:#0E1B17;
  --brass:#C9A25D;
  --accent:#72A688;
  --accent-on:#0E1B17;
  --line:rgba(243,245,238,0.22);
  --line-strong:rgba(243,245,238,0.4);
  color:var(--ink);
}
.hero-photo{
  position:absolute;
  inset:0;
  width:100%;height:100%;
  object-fit:cover;
  object-position:center 38%;
  z-index:0;
}
.hero-scrim{
  position:absolute;
  inset:0;
  z-index:1;
  background:linear-gradient(180deg, rgba(9,17,14,0.6) 0%, rgba(9,17,14,0.72) 48%, rgba(8,15,13,0.92) 100%);
}
.hero canvas{
  position:absolute;
  inset:0;
  width:100%;height:100%;
  opacity:0.5;
  pointer-events:none;
  z-index:2;
}
.hero-inner{
  position:relative;
  z-index:3;
  max-width:840px;
}
.hero h1{
  font-size:clamp(2.6rem, 7vw, 5.2rem);
  line-height:0.98;
  margin:1rem 0 1.4rem;
}
.hero h1 em{
  font-style:normal;
  color:var(--accent);
}
.hero p.lede{
  font-size:1.1rem;
  color:var(--ink-soft);
  max-width:52ch;
  margin:0 0 2.2rem;
}
.hero-cta{
  display:flex;
  flex-wrap:wrap;
  gap:0.9rem;
  margin-bottom:3rem;
}
.btn{
  display:inline-flex;
  align-items:center;
  gap:0.5rem;
  padding:0.85rem 1.3rem;
  text-decoration:none;
  font-size:0.9rem;
  letter-spacing:0.02em;
  border:1px solid var(--ink);
  transition: transform 0.2s ease, background 0.2s ease, color 0.2s ease;
}
.btn-primary{
  background:var(--accent);
  color:var(--accent-on);
  border-color:var(--accent);
}
.btn-primary:hover{ background:var(--ink); border-color:var(--ink); color:var(--bg); transform:translateY(-2px); }
.btn-ghost:hover{ background:var(--ink); color:var(--bg); transform:translateY(-2px); }

.title-block{
  position:relative;
  z-index:3;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0;
  border-top:1px solid var(--line);
  border-left:1px solid var(--line);
}
.title-block div{
  min-width:0;
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:0.85rem 1.1rem;
}
.title-block .v{
  overflow-wrap:break-word;
}
@media (max-width:479px){
  .title-block{ grid-template-columns:1fr; }
}
.title-block .k{
  display:block;
  font-family: ui-monospace, Consolas, monospace;
  font-size:0.66rem;
  letter-spacing:0.1em;
  color:var(--ink-soft);
  margin-bottom:0.3rem;
}
.title-block .v{
  font-size:0.92rem;
  font-weight:600;
}

/* ---------- sections generic ---------- */
section{ padding:5rem 0; }
.section-head{
  display:grid;
  gap:1.2rem;
  margin-bottom:3rem;
  max-width:640px;
}
.section-head h2{
  font-size:clamp(1.9rem, 4.2vw, 2.9rem);
  line-height:1.02;
}

/* ---------- about ---------- */
.about-grid{
  display:grid;
  gap:3rem;
}
@media (min-width:860px){
  .about-grid{ grid-template-columns: 0.9fr 1.1fr; }
}
.about-head{
  display:flex;
  flex-direction:column;
  gap:0.9rem;
}
@media (min-width:860px){
  .about-head{
    height:100%;
    border-right:1px solid var(--line);
    padding-right:2.4rem;
  }
}
.about-head .plate-photo{
  display:block;
  max-width:22rem;
  border:1px solid var(--line);
  aspect-ratio:4/3;
  overflow:hidden;
  position:relative;
}
@media (min-width:860px){
  .about-head .plate-photo{ max-width:none; margin-top:auto; }
}
.about-head .plate-photo img{
  width:100%;height:100%;
  object-fit:cover;
  display:block;
  filter:grayscale(0.15);
}
.about-head .plate-photo .tag{
  position:absolute;
  left:0.6rem; bottom:0.6rem;
  font-family:ui-monospace,Consolas,monospace;
  font-size:0.62rem;
  letter-spacing:0.06em;
  color:#fff;
  background:rgba(14,27,23,0.55);
  padding:0.15rem 0.45rem;
}
.about-copy p{ color:var(--ink-soft); max-width:56ch; }
.values{
  list-style:none;
  margin:1.5rem 0 0;
  padding:0;
  display:grid;
  gap:0;
  border-top:1px solid var(--line);
}
.values li{
  display:grid;
  grid-template-columns:1.6rem 1fr;
  gap:0.9rem;
  padding:0.95rem 0;
  border-bottom:1px solid var(--line);
  opacity:0;
  transform:translateY(10px);
  transition:opacity 0.5s ease, transform 0.5s ease;
}
.about-grid.in .values li{ opacity:1; transform:none; }
.about-grid.in .values li:nth-child(1){ transition-delay:0.05s; }
.about-grid.in .values li:nth-child(2){ transition-delay:0.12s; }
.about-grid.in .values li:nth-child(3){ transition-delay:0.19s; }
.about-grid.in .values li:nth-child(4){ transition-delay:0.26s; }
.about-grid.in .values li:nth-child(5){ transition-delay:0.33s; }
.values .tick{
  font-family:ui-monospace,Consolas,monospace;
  color:var(--brass);
  font-size:0.85rem;
  padding-top:0.1rem;
}
.values strong{
  display:block;
  font-size:0.98rem;
  margin-bottom:0.15rem;
}
.values span{
  color:var(--ink-soft);
  font-size:0.9rem;
}

/* ---------- quote ---------- */
.quote-block{ position:relative; padding-bottom:4.5rem; }
.quote-photo-wrap{
  position:relative;
  height:min(58vw, 460px);
  min-height:260px;
  overflow:hidden;
}
.quote-photo-wrap img{
  width:100%;height:100%;
  object-fit:cover;
  object-position:center 38%;
  display:block;
}
.quote-photo-wrap::after{
  content:"";
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(9,17,14,0.1) 0%, rgba(9,17,14,0.5) 100%);
}
.quote-card{
  position:relative;
  z-index:2;
  margin:-4.5rem auto 0;
  max-width:580px;
  background:var(--bg-raised);
  border:1px solid var(--line);
  padding:2rem 2.2rem;
}
.quote-card p{
  font-size:clamp(1.15rem,2.4vw,1.4rem);
  line-height:1.45;
  font-weight:600;
  margin:0 0 1rem;
  color:var(--ink);
  text-wrap:balance;
}
.quote-card cite{
  display:block;
  font-style:normal;
  font-family:ui-monospace,Consolas,monospace;
  font-size:0.72rem;
  letter-spacing:0.06em;
  text-transform:uppercase;
  color:var(--brass);
}
@media (min-width:700px){ .quote-card{ margin-left:2rem; } }

/* ---------- services ---------- */
.services{
  display:grid;
  gap:0;
  border-top:1px solid var(--line);
  border-left:1px solid var(--line);
  grid-template-columns:1fr;
}
@media (min-width:700px){ .services{ grid-template-columns:1fr 1fr; } }
.service{
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:2.2rem;
  position:relative;
  opacity:0;
  transform:translateY(16px);
  transition:background 0.25s ease, opacity 0.55s ease, transform 0.55s ease;
}
.services.in .service{ opacity:1; transform:none; }
.services.in .service:nth-child(1){ transition-delay:0.05s; }
.services.in .service:nth-child(2){ transition-delay:0.14s; }
.services.in .service:nth-child(3){ transition-delay:0.23s; }
.services.in .service:nth-child(4){ transition-delay:0.32s; }
.service:hover{ background:var(--bg-raised); }
.service:hover .icon{ transform:translateY(-3px); }
.service .icon{ transition:transform 0.3s ease; }
.service .idx{
  font-family:ui-monospace,Consolas,monospace;
  font-size:0.78rem;
  color:var(--brass);
  letter-spacing:0.08em;
}
.service .icon{
  width:40px;height:40px;
  margin:1.1rem 0 1rem;
  color:var(--accent);
}
.service h3{
  font-size:1.35rem;
  margin-bottom:0.6rem;
}
.service p{
  color:var(--ink-soft);
  font-size:0.92rem;
  max-width:38ch;
}

/* ---------- contact ---------- */
.contact-grid{
  display:grid;
  gap:3rem;
}
@media (min-width:900px){ .contact-grid{ grid-template-columns:1fr 1fr; } }
.info-block{
  border-top:1px solid var(--line);
}
.info-row{
  display:flex;
  justify-content:space-between;
  gap:1rem;
  padding:0.9rem 0;
  border-bottom:1px solid var(--line);
  font-size:0.92rem;
  opacity:0;
  transform:translateY(10px);
  transition:opacity 0.5s ease, transform 0.5s ease;
}
.contact-grid.in .info-row{ opacity:1; transform:none; }
.contact-grid.in .info-row:nth-child(1){ transition-delay:0.05s; }
.contact-grid.in .info-row:nth-child(2){ transition-delay:0.13s; }
.contact-grid.in .info-row:nth-child(3){ transition-delay:0.21s; }
.info-row .k{
  color:var(--ink-soft);
  font-family:ui-monospace,Consolas,monospace;
  font-size:0.72rem;
  letter-spacing:0.08em;
  text-transform:uppercase;
  padding-top:0.15rem;
}
.info-row .v{ text-align:right; font-weight:600; max-width:60%; }
.map{
  margin-top:1.5rem;
  border:1px solid var(--line);
  aspect-ratio:16/10;
  position:relative;
  overflow:hidden;
}
.map canvas{ width:100%;height:100%; display:block; }
.map .coords{
  position:absolute;
  left:0.8rem;bottom:0.7rem;
  font-family:ui-monospace,Consolas,monospace;
  font-size:0.72rem;
  background:color-mix(in srgb, var(--bg) 80%, transparent);
  padding:0.2rem 0.5rem;
  color:var(--ink-soft);
}
.social-row{
  display:flex;
  flex-wrap:wrap;
  gap:1.4rem;
  margin-top:1.5rem;
  font-size:0.88rem;
}
.social-row a{
  text-decoration:none;
  border-bottom:1px solid var(--line-strong);
  padding-bottom:2px;
}
.social-row a:hover{ border-color:var(--accent); color:var(--accent); }

form{ display:grid; gap:1.1rem; }
.field{ display:grid; gap:0.4rem; }
.field label{
  font-family:ui-monospace,Consolas,monospace;
  font-size:0.7rem;
  letter-spacing:0.1em;
  text-transform:uppercase;
  color:var(--ink-soft);
}
.field input, .field textarea{
  font-family:inherit;
  font-size:0.96rem;
  padding:0.75rem 0.85rem;
  border:1px solid var(--line-strong);
  background:var(--bg-raised);
  color:var(--ink);
  outline:none;
  transition:border-color 0.2s ease;
}
.field input:focus, .field textarea:focus{ border-color:var(--accent); }
.field textarea{ resize:vertical; min-height:110px; }
.submit-row{ display:flex; align-items:center; gap:1rem; }
.submit-row button{
  font-family:inherit;
  cursor:pointer;
  background:var(--ink);
  color:var(--bg);
  border:1px solid var(--ink);
  padding:0.85rem 1.4rem;
  font-size:0.9rem;
  letter-spacing:0.02em;
  transition: background 0.2s ease;
}
.submit-row button:hover{ background:var(--accent); border-color:var(--accent); }
.form-note{ font-size:0.8rem; color:var(--ink-soft); }
.form-note.ok{ color:var(--accent); }
.privacy-note{ font-size:0.78rem; color:var(--ink-soft); margin:0; }

/* ---------- footer ---------- */
footer{
  border-top:1px solid var(--line);
  padding:2.4rem 0;
}
.foot-row{
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  align-items:center;
  gap:1rem;
  font-size:0.8rem;
  color:var(--ink-soft);
}
.foot-row .mono{ letter-spacing:0.04em; }

/* ---------- reveal ---------- */
.reveal{
  opacity:0;
  transform:translateY(14px);
  transition:opacity 0.7s ease, transform 0.7s ease;
}
.reveal.in{ opacity:1; transform:translateY(0); }
@media (prefers-reduced-motion: reduce){
  .reveal{ opacity:1; transform:none; transition:none; }
  .values li, .service, .info-row, .step, .faq-item{ opacity:1; transform:none; transition:none; }
}

:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }

/* ---------- process ---------- */
.process-route{
  position:relative;
  display:grid;
  gap:2.4rem;
  grid-template-columns:1fr;
  border-top:1px solid var(--line);
  padding-top:2.5rem;
}
@media (min-width:860px){
  .process-route{ grid-template-columns:repeat(4,1fr); gap:1.6rem; }
}
.process-route::before{
  content:"";
  position:absolute;
  top:0; left:0; right:0;
  height:1px;
  background:repeating-linear-gradient(to right, var(--line-strong) 0 6px, transparent 6px 12px);
}
.step{
  position:relative;
  padding-top:0.5rem;
  opacity:0;
  transform:translateY(16px);
  transition:opacity 0.55s ease, transform 0.55s ease;
}
.process-route.in .step{ opacity:1; transform:none; }
.process-route.in .step:nth-child(1){ transition-delay:0.05s; }
.process-route.in .step:nth-child(2){ transition-delay:0.16s; }
.process-route.in .step:nth-child(3){ transition-delay:0.27s; }
.process-route.in .step:nth-child(4){ transition-delay:0.38s; }
.step::before{
  content:"";
  position:absolute;
  top:-2.9rem; left:0;
  width:9px;height:9px;
  border-radius:50%;
  background:var(--brass);
}
.step .idx{
  font-family:ui-monospace,Consolas,monospace;
  font-size:0.78rem;
  color:var(--brass);
  letter-spacing:0.08em;
  display:block;
  margin-bottom:0.6rem;
}
.step h3{ font-size:1.2rem; margin-bottom:0.5rem; }
.step p{ color:var(--ink-soft); font-size:0.9rem; max-width:32ch; }

/* ---------- coverage ---------- */
.coverage-grid{
  display:grid;
  gap:2.5rem;
}
@media (min-width:900px){ .coverage-grid{ grid-template-columns:1fr 0.85fr; align-items:center; } }
.coverage-copy p{ color:var(--ink-soft); max-width:56ch; }
.scope-list{
  list-style:none;
  margin:1.6rem 0 0;
  padding:0;
  display:grid;
  gap:0;
  border-top:1px solid var(--line);
}
.scope-list li{
  display:flex;
  justify-content:space-between;
  gap:1rem;
  padding:0.8rem 0;
  border-bottom:1px solid var(--line);
  font-size:0.9rem;
}
.scope-list .k{ color:var(--ink-soft); }
.scope-list .v{ font-weight:600; font-family:ui-monospace,Consolas,monospace; font-size:0.85rem; }
.coverage-map{
  border:1px solid var(--line);
  aspect-ratio:1/1;
  max-width:340px;
  position:relative;
  overflow:hidden;
}
.coverage-map canvas{ width:100%;height:100%; display:block; }
.coverage-map .tag{
  position:absolute;
  left:0.8rem; top:0.7rem;
  font-family:ui-monospace,Consolas,monospace;
  font-size:0.68rem;
  letter-spacing:0.08em;
  color:var(--ink-soft);
}

/* ---------- faq ---------- */
.faq-list{ border-top:1px solid var(--line); }
.faq-item{
  border-bottom:1px solid var(--line);
  opacity:0;
  transform:translateY(12px);
  transition:opacity 0.5s ease, transform 0.5s ease;
}
.faq-list.in .faq-item{ opacity:1; transform:none; }
.faq-list.in .faq-item:nth-child(1){ transition-delay:0.04s; }
.faq-list.in .faq-item:nth-child(2){ transition-delay:0.1s; }
.faq-list.in .faq-item:nth-child(3){ transition-delay:0.16s; }
.faq-list.in .faq-item:nth-child(4){ transition-delay:0.22s; }
.faq-q-heading{ margin:0; font-size:inherit; font-family:inherit; font-weight:inherit; text-transform:none; }
.faq-q{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:1.15rem 0;
  background:none;
  border:none;
  text-align:left;
  font-family:inherit;
  font-size:1rem;
  font-weight:600;
  color:var(--ink);
  cursor:pointer;
}
.faq-q .num{
  font-family:ui-monospace,Consolas,monospace;
  font-weight:400;
  font-size:0.78rem;
  color:var(--brass);
  margin-right:0.9rem;
}
.faq-q .plus{
  flex-shrink:0;
  width:18px;height:18px;
  position:relative;
}
.faq-q .plus::before, .faq-q .plus::after{
  content:"";
  position:absolute;
  background:var(--ink);
  transition:transform 0.3s ease;
}
.faq-q .plus::before{ left:0;top:50%;width:100%;height:1.4px;transform:translateY(-50%); }
.faq-q .plus::after{ top:0;left:50%;width:1.4px;height:100%;transform:translateX(-50%); }
.faq-item[data-open="true"] .plus::after{ transform:translateX(-50%) rotate(90deg); opacity:0; }
.faq-a{
  display:grid;
  grid-template-rows:0fr;
  transition:grid-template-rows 0.35s ease;
}
.faq-item[data-open="true"] .faq-a{ grid-template-rows:1fr; }
.faq-a-inner{ overflow:hidden; }
.faq-a p{ margin:0 0 1.15rem; color:var(--ink-soft); font-size:0.92rem; max-width:60ch; }
@media (prefers-reduced-motion: reduce){
  .faq-item, .faq-a{ transition:none; }
}

/* ---------- floating whatsapp ---------- */
.float-wa{
  position:fixed;
  right:1.4rem;
  bottom:1.4rem;
  z-index:60;
  width:52px;height:52px;
  border-radius:50%;
  background:var(--ink);
  color:var(--bg);
  display:grid;
  place-items:center;
  text-decoration:none;
  box-shadow:0 4px 18px rgba(0,0,0,0.22);
  transition:transform 0.25s ease, background 0.25s ease;
}
.float-wa:hover{ background:var(--accent); transform:translateY(-3px); }
.float-wa svg{ width:24px;height:24px; }
.float-wa::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:50%;
  border:1.5px solid var(--accent);
  animation:ping 2.6s ease-out infinite;
}
@keyframes ping{
  0%{ transform:scale(1); opacity:0.7; }
  100%{ transform:scale(1.7); opacity:0; }
}
@media (prefers-reduced-motion: reduce){ .float-wa::before{ animation:none; display:none; } }

.nav-right{
  display:flex;
  align-items:center;
  gap:0.9rem;
}
.theme-btn{
  border:1px solid var(--line-strong);
  background:none;
  color:var(--ink);
  width:34px;height:34px;
  flex-shrink:0;
  display:grid;place-items:center;
  cursor:pointer;
  transition:border-color 0.2s ease, color 0.2s ease;
}
.theme-btn:hover{ border-color:var(--accent); color:var(--accent); }