/* ============================================================
   FREE WATER TEST — page-specific styles
   Builds on assets/styles.css (tokens, header, buttons, footer)
   ============================================================ */

/* ---------- HERO ---------- */
.fwt-hero{
  position:relative;overflow:hidden;color:#fff;
  background:radial-gradient(120% 120% at 78% 8%,#0a4ea0 0%,#00235c 52%,#001536 100%);
}
.fwt-hero .wrap{position:relative;z-index:3;padding-block:clamp(32px,4vw,56px) clamp(36px,4.5vw,64px)}
.fwt-grid{display:grid;grid-template-columns:1.04fr .96fr;gap:clamp(32px,4vw,64px);align-items:center}
@media(max-width:940px){.fwt-grid{grid-template-columns:1fr;gap:48px}}

.fwt-eyebrow{color:#7fb2f2}
.fwt-eyebrow::before{background:#7fb2f2}
.fwt-hero h1{
  color:#fff;font-size:clamp(36px,4.6vw,60px);line-height:1.03;letter-spacing:-.025em;
  max-width:15ch;
}
.fwt-hero h1 .accent{color:#7fb2f2;display:block}
.fwt-hero .lead{color:#bcd6fa;max-width:46ch;margin-top:16px;font-size:clamp(16px,1.25vw,18px)}

.fwt-cta-row{display:flex;flex-wrap:wrap;gap:14px;margin-top:24px}
.fwt-chips{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:20px}
.fwt-chip{display:inline-flex;align-items:center;gap:9px;font-family:"Manrope";font-weight:700;font-size:14px;color:#cfe0f7}
.fwt-chip svg{width:18px;height:18px;color:#7fb2f2;flex:none}

/* ambient bubbles */
.fwt-bubbles{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.5}

/* ============================================================
   THE REVEALING GLASS
   ============================================================ */
.viz{position:relative;display:flex;flex-direction:column;align-items:center;gap:18px;z-index:3}
.viz-stage{
  position:relative;width:min(440px,86vw);height:360px;display:grid;place-items:center;
}
/* glow halo behind the glass */
.viz-stage::before{
  content:"";position:absolute;width:330px;height:330px;border-radius:50%;
  background:radial-gradient(circle,rgba(127,178,242,.5),transparent 68%);
  opacity:.4;transition:opacity .8s var(--ease),background .8s var(--ease);
}
.viz.is-clean .viz-stage::before{opacity:.95;background:radial-gradient(circle,rgba(120,200,255,.8),transparent 66%)}

/* the glass tumbler */
.glass{
  position:relative;width:208px;height:300px;z-index:2;
  border-radius:18px 18px 26px 26px / 14px 14px 60px 60px;
  background:linear-gradient(100deg,rgba(255,255,255,.16),rgba(255,255,255,.03) 40%,rgba(255,255,255,.12));
  border:2.5px solid rgba(255,255,255,.9); /* white outline so the glass pops (Nick, 9/30), same as the homepage glass */
  box-shadow:0 0 0 1px rgba(255,255,255,.25),0 0 30px rgba(255,255,255,.12),inset 0 0 0 1px rgba(255,255,255,.35),inset -16px 0 26px rgba(255,255,255,.12),inset 16px 0 30px rgba(0,0,0,.16);
  overflow:hidden;
}
/* glass top rim ellipse */
.glass-rim{
  position:absolute;top:6px;left:10px;right:10px;height:20px;z-index:5;
  border-radius:50%;border:2.5px solid rgba(255,255,255,.95);
  background:rgba(255,255,255,.1);
}
/* vertical light streak */
.glass-shine{
  position:absolute;top:14px;left:22px;width:18px;height:78%;z-index:4;border-radius:40%;
  background:linear-gradient(180deg,rgba(255,255,255,.5),rgba(255,255,255,0));opacity:.5;
}

/* the water body */
.glass-water{
  position:absolute;left:0;right:0;bottom:0;height:76%;z-index:1;overflow:hidden;
  background:linear-gradient(180deg,rgba(138,198,51,.66),rgba(112,168,36,.8)); /* untreated water tinted with the Gordon accent green (markup 61) */
  transition:background .9s var(--ease),filter .9s var(--ease);
  filter:saturate(.85);
}
.viz.is-clean .glass-water{
  background:linear-gradient(180deg,rgba(127,178,242,.62),rgba(48,127,226,.82));
  filter:saturate(1.15) brightness(1.05);
}
/* wavy surface line riding the top of the water */
.water-surface{
  position:absolute;top:-7px;left:-10%;width:120%;height:14px;z-index:3;
  background:rgba(255,255,255,.5);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='14' viewBox='0 0 80 14'%3E%3Cpath d='M0 7 Q10 1 20 7 T40 7 T60 7 T80 7 L80 14 L0 14 Z' fill='%23000'/%3E%3C/svg%3E") repeat-x top/80px 14px;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='14' viewBox='0 0 80 14'%3E%3Cpath d='M0 7 Q10 1 20 7 T40 7 T60 7 T80 7 L80 14 L0 14 Z' fill='%23000'/%3E%3C/svg%3E") repeat-x top/80px 14px;
  animation:fwt-surface 5s linear infinite;opacity:.7;
}
@keyframes fwt-surface{to{-webkit-mask-position-x:-80px;mask-position-x:-80px}}
/* caustic shimmer (only when clean) — static, lightweight */
.glass-water::after{
  content:"";position:absolute;inset:0;opacity:0;transition:opacity .9s var(--ease);
  background:
    radial-gradient(ellipse 60px 22px at 30% 30%,rgba(255,255,255,.35),transparent 70%),
    radial-gradient(ellipse 70px 26px at 70% 60%,rgba(255,255,255,.25),transparent 70%);
}
.viz.is-clean .glass-water::after{opacity:.65}

/* contaminant motes (injected by JS) */
.motes{position:absolute;inset:0;z-index:2;transition:opacity .7s var(--ease)}
.viz.is-clean .motes{opacity:0}
.mote{
  position:absolute;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,rgba(120,104,72,.85),rgba(86,72,44,.5));
  box-shadow:0 0 4px rgba(60,48,24,.4);
  animation:fwt-drift linear infinite;
}
.mote.pale{background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.85),rgba(220,222,210,.35))}
@keyframes fwt-drift{
  0%{transform:translate(0,0)}
  25%{transform:translate(7px,-10px)}
  50%{transform:translate(-6px,-18px)}
  75%{transform:translate(5px,-9px)}
  100%{transform:translate(0,0)}
}
@media(prefers-reduced-motion:reduce){.mote,.water-surface,.glass-water::after{animation:none}}

/* base puddle / reflection */
.viz-base{
  position:absolute;bottom:34px;width:230px;height:30px;border-radius:50%;z-index:0;
  background:radial-gradient(ellipse,rgba(0,0,0,.45),transparent 70%);
  filter:blur(3px);
}

/* ---------- callouts pointing at the glass ---------- */
.callout{
  position:absolute;z-index:6;display:inline-flex;align-items:center;gap:9px;
  background:rgba(8,30,66,.92);
  border:1px solid rgba(127,178,242,.4);border-radius:11px;padding:8px 12px;
  font-family:"Manrope";font-weight:700;font-size:13px;color:#fff;white-space:nowrap;
  box-shadow:0 14px 30px -14px rgba(0,0,0,.7);
  transition:opacity .55s var(--ease),transform .55s var(--ease);
}
.callout .cdot{width:9px;height:9px;border-radius:50%;background:#f0a23a;flex:none;box-shadow:0 0 0 4px rgba(240,162,58,.18)}
.callout .cval{color:#9db8e6;font-weight:600}
.callout.c1{top:6%;left:-6%}
.callout.c2{top:30%;right:-10%}
.callout.c3{top:56%;left:-12%}
.callout.c4{top:78%;right:-4%}
.viz.is-clean .callout{opacity:0;transform:scale(.9) translateY(6px);pointer-events:none}

/* clean badge appears when treated */
.clean-badge{
  position:absolute;z-index:6;top:50%;left:50%;transform:translate(-50%,-50%) scale(.85);
  display:inline-flex;align-items:center;gap:10px;
  background:var(--green);border:1px solid rgba(255,255,255,.45);border-radius:14px;
  padding:12px 18px;font-family:"Manrope";font-weight:800;font-size:15px;color:#fff;
  box-shadow:0 18px 40px -16px rgba(0,0,0,.7);
  opacity:0;pointer-events:none;transition:opacity .6s var(--ease) .15s,transform .6s var(--ease) .15s;
}
.clean-badge svg{width:20px;height:20px}
.viz.is-clean .clean-badge{opacity:1;transform:translate(-50%,-50%) scale(1)}

/* ---------- readout card ---------- */
.viz-readout{
  width:min(420px,90vw);background:rgba(10,32,70,.55);border:1px solid rgba(255,255,255,.16);
  border-radius:18px;padding:16px 18px;
}
.viz-readout .rh{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.viz-readout .rh b{font-family:"Manrope";font-weight:800;font-size:13px;letter-spacing:.04em;color:#fff}
.viz-readout .rh .tag{font-family:"Manrope";font-weight:700;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#7fb2f2}
.rrows{display:grid;gap:11px}
.rrow{display:flex;align-items:center;gap:12px}
.rrow .rlabel{width:72px;flex:none;font-size:13.5px;color:#cfe0f7;font-family:"DM Sans"}
.rrow .rbar{position:relative;flex:1;height:6px;border-radius:4px;background:rgba(255,255,255,.14);overflow:hidden}
.rrow .rbar > i{position:absolute;left:0;top:0;bottom:0;border-radius:4px;width:10%;background:#f0a23a;transition:width .8s var(--ease),background .8s var(--ease)}
.rrow .rnum{font-family:"Manrope";font-weight:800;font-size:13px;color:#fff;width:58px;text-align:right;flex:none}
.rrow .rstatus{font-family:"Manrope";font-weight:800;font-size:12px;width:72px;text-align:right;flex:none;color:#f0a23a;transition:color .5s}
.viz-readout .rcap{margin-top:13px;font-size:11.5px;color:#8fa6c9;font-family:"DM Sans"}

/* ---------- segmented toggle ---------- */
.viz-toggle{
  position:relative;display:grid;grid-template-columns:1fr 1fr;background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:5px;gap:0;
}
.viz-toggle .slider{
  position:absolute;top:5px;bottom:5px;left:5px;width:calc(50% - 5px);border-radius:999px;
  background:var(--blue);box-shadow:0 6px 18px -6px rgba(48,127,226,.8);
  transition:transform .45s var(--ease),background .45s var(--ease);
}
.viz.is-clean .viz-toggle .slider{transform:translateX(100%);background:var(--green);box-shadow:0 6px 18px -6px rgba(138,198,51,.8)}
.viz.is-clean .viz-toggle button.active{color:#fff} /* white on the green slider (PinPoint a1daeb9b, Jennie) */
.viz-toggle button{
  position:relative;z-index:2;background:none;border:0;cursor:pointer;
  font-family:"Manrope";font-weight:800;font-size:13.5px;color:#fff;
  padding:10px 18px;border-radius:999px;transition:color .35s var(--ease);white-space:nowrap;
}
.viz-toggle button.active{color:#fff}
.viz-hint{font-family:"Manrope";font-weight:700;font-size:12.5px;color:#fff;display:flex;align-items:center;gap:7px}
.viz-hint svg{width:15px;height:15px;animation:fwt-tap 1.8s ease-in-out infinite}
.viz.is-clean .viz-hint{opacity:.45}
@keyframes fwt-tap{0%,100%{transform:translateX(0)}50%{transform:translateX(4px)}}

/* ============================================================
   WHAT WE TEST FOR — gauge report cards
   ============================================================ */
.tests{background:var(--grey-light)}
.tests-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:46px}
@media(max-width:900px){.tests-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.tests-grid{grid-template-columns:1fr}}
.tcard{
  background:#fff;border:1px solid var(--grey-3);border-radius:20px;padding:26px;
  box-shadow:var(--shadow-sm);transition:.35s var(--ease);
}
.tcard:hover{box-shadow:var(--shadow);transform:translateY(-4px);border-color:var(--blue-tint-2)}
.tcard .gauge{position:relative;width:130px;height:78px;margin:0 auto 8px}
.tcard .gauge svg{width:130px;height:78px;overflow:visible}
.tcard .gauge .gtrack{fill:none;stroke:var(--grey-3);stroke-width:9;stroke-linecap:round}
.tcard .gauge .gfill{fill:none;stroke:var(--blue);stroke-width:9;stroke-linecap:round;
  stroke-dasharray:189;stroke-dashoffset:189;transition:stroke-dashoffset 1.2s var(--ease),stroke .6s}
.tcard.in .gauge .gfill{stroke-dashoffset:var(--goff,80)}
.tcard .gval{position:absolute;left:0;right:0;bottom:0;text-align:center;font-family:"Manrope";font-weight:800;font-size:21px;color:var(--navy);line-height:1}
.tcard .gval small{display:block;font-weight:700;font-size:11px;color:var(--grey-2);letter-spacing:.04em;margin-top:2px}
.tcard h3{font-family:"Manrope";font-weight:800;font-size:19px;color:var(--navy);text-align:center;margin-top:14px}
.tcard .tzone{display:flex;justify-content:center;margin-top:9px}
.tcard .tzone span{font-family:"Manrope";font-weight:800;font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:4px 11px;border-radius:999px}
.tcard p{color:var(--muted);font-size:14.5px;line-height:1.55;text-align:center;margin-top:13px}
.zone-amber{background:#fdf0dc;color:#b6791f}
.zone-red{background:#fbe4e2;color:#c0392b}
.zone-blue{background:var(--blue-tint);color:var(--blue-deep)}

/* ============================================================
   HOW IT WORKS — steps
   ============================================================ */
.steps-row{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:48px;counter-reset:step}
@media(max-width:820px){.steps-row{grid-template-columns:1fr}}
/* Scoped under .steps-row: this is a distinct card-style step design used only by
   this page's own "how it works" band. Without the .steps-row prefix, the bare
   .step selector collides with the shared circle-stepper .steps > .step component
   (global.css) used on the homepage, softener page and city pages — now that
   freetest.css loads on every Beaver Builder page (for the gw-schedule module),
   an unscoped rule here would silently turn every plain stepper into a card. */
.steps-row .step{position:relative;padding:30px 28px;border-radius:20px;background:#fff;border:1px solid var(--grey-3);transition:.35s var(--ease);z-index:1}
.steps-row .step:first-child{z-index:3}
.steps-row .step:nth-child(2){z-index:2}
.steps-row .step:hover{box-shadow:var(--shadow);transform:translateY(-4px)}
.steps-row .step .snum{
  width:48px;height:48px;border-radius:14px;background:var(--navy);color:#fff;display:grid;place-items:center;
  font-family:"Manrope";font-weight:800;font-size:20px;margin-bottom:18px;
}
.steps-row .step:nth-child(2) .snum{background:var(--blue)}
.steps-row .step h3{font-family:"Manrope";font-weight:800;font-size:21px;color:var(--navy)}
.steps-row .step p{color:var(--muted);font-size:15.5px;line-height:1.6;margin-top:10px}
.steps-row .step .sarrow{
  position:absolute;top:50%;right:-34px;transform:translateY(-50%);
  box-sizing:border-box;width:46px;height:46px;padding:12px;border-radius:50%;
  background:var(--blue);color:#fff;
  box-shadow:0 12px 24px -6px rgba(48,127,226,.6),0 0 0 6px var(--blue-tint);
  z-index:3;
}
.steps-row .step .sarrow path{stroke-width:2.6}
@media(max-width:820px){.steps-row .step .sarrow{display:none}}

.steps-note{display:flex;align-items:center;justify-content:center;gap:11px;text-align:center;max-width:640px;margin:36px auto 0;padding:14px 24px;background:var(--blue-tint);border-radius:14px;color:var(--navy);font-size:14.5px;line-height:1.5}
.steps-note svg{flex:none;color:var(--blue)}

/* ============================================================
   SCHEDULE FORM BAND
   ============================================================ */
.schedule{background:var(--navy);color:#fff;position:relative;overflow:hidden}
.schedule .wrap{position:relative;z-index:3}
.sched-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(36px,5vw,72px);align-items:start}
@media(max-width:900px){.sched-grid{grid-template-columns:1fr;gap:40px}}
.schedule h2{color:#fff;font-size:clamp(30px,4vw,46px)}
.schedule .lead{color:#bcd6fa}
.sched-assure{display:grid;gap:16px;margin-top:28px}
.sched-assure .sa{display:flex;align-items:flex-start;gap:13px}
.sched-assure .sa .ci{width:30px;height:30px;border-radius:9px;background:rgba(127,178,242,.18);color:#7fb2f2;display:grid;place-items:center;flex:none}
.sched-assure .sa b{font-family:"Manrope";font-weight:800;font-size:16px;color:#fff;display:block}
.sched-assure .sa span{color:#9db8e6;font-size:14px}

.sched-phone{display:flex;align-items:center;gap:13px;margin-top:22px;padding-top:22px;border-top:1px solid rgba(255,255,255,.12)}
.sched-phone .ci{width:30px;height:30px;border-radius:9px;background:rgba(127,178,242,.18);color:#7fb2f2;display:grid;place-items:center;flex:none;transition:.2s}
.sched-phone b{font-family:"Manrope";font-weight:800;font-size:16px;color:#fff;display:block}
.sched-phone span{color:#9db8e6;font-size:14px}
.sched-phone:hover .ci{background:#7fb2f2;color:#00235c}

.sform{background:#fff;border-radius:24px;padding:clamp(24px,3vw,34px);box-shadow:var(--shadow-lg)}

/* two-way choice: in-home test vs porch pickup (currently unused — see gw-schedule module) */
.smode{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin-bottom:22px}
@media(max-width:420px){.smode{grid-template-columns:1fr}}
.smode-opt{
  text-align:left;background:#fff;border:1.5px solid var(--grey-3);border-radius:14px;
  padding:13px 15px 14px;cursor:pointer;display:flex;flex-direction:column;gap:4px;
  font-family:inherit;transition:border-color .25s var(--ease),background .25s var(--ease),box-shadow .25s var(--ease);
}
.smode-opt .smtop{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.smode-opt .smi{width:34px;height:34px;border-radius:10px;background:var(--blue-tint);color:var(--blue);display:grid;place-items:center;transition:.25s var(--ease)}
.smode-opt .smi svg{width:19px;height:19px}
.smode-opt .smk{width:20px;height:20px;border-radius:50%;border:2px solid var(--grey-3);color:#fff;display:grid;place-items:center;transition:.25s var(--ease)}
.smode-opt .smk svg{width:12px;height:12px;opacity:0;transition:opacity .2s}
.smode-opt .smo-t{font-family:"Manrope";font-weight:800;font-size:15.5px;color:var(--navy)}
.smode-opt .smo-s{font-size:12.5px;color:var(--muted);line-height:1.4}
.smode-opt:hover{border-color:var(--blue-tint-2);background:var(--blue-tint)}
.smode-opt.active{border-color:var(--blue);background:var(--blue-tint);box-shadow:0 0 0 3px var(--blue-tint-2)}
.smode-opt.active .smi{background:var(--blue);color:#fff}
.smode-opt.active .smk{background:var(--blue);border-color:var(--blue)}
.smode-opt.active .smk svg{opacity:1}

/* select styled like the inputs */
.selwrap{position:relative}
.selwrap select{
  appearance:none;-webkit-appearance:none;width:100%;
  font-family:"DM Sans";font-size:15px;color:var(--ink);padding:13px 40px 13px 14px;border-radius:11px;
  border:1.5px solid var(--grey-3);background:#fff;cursor:pointer;transition:border-color .25s,box-shadow .25s;
}
.selwrap select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 4px var(--blue-tint)}
.selwrap .selchev{position:absolute;right:14px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--grey-2);pointer-events:none}

.sform .ft{font-family:"Manrope";font-weight:800;font-size:21px;color:var(--navy);margin-bottom:4px}
.sform .fsub{color:var(--muted);font-size:14.5px;margin-bottom:20px}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field{display:flex;flex-direction:column;gap:6px}
.field.full{grid-column:1/-1}
.field label{font-family:"Manrope";font-weight:700;font-size:12.5px;color:var(--navy);letter-spacing:.02em}
.field input{
  font-family:"DM Sans";font-size:15px;color:var(--ink);padding:13px 14px;border-radius:11px;
  border:1.5px solid var(--grey-3);background:#fff;transition:border-color .25s,box-shadow .25s;width:100%;
}
.field input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 4px var(--blue-tint)}
.field input::placeholder{color:var(--grey-2)}
.sform .consent{display:flex;gap:10px;align-items:flex-start;margin-top:16px;color:var(--muted);font-size:12px;line-height:1.5}
.sform .consent input{margin-top:3px;width:16px;height:16px;flex:none;accent-color:var(--blue)}
.sform .btn{width:100%;margin-top:18px}
.sform .reassure{text-align:center;color:var(--grey-2);font-size:12.5px;margin-top:13px}

/* ---------- meet-the-team (compact, left column) ---------- */
.sched-team-mini{margin-top:30px;padding-top:26px;border-top:1px solid rgba(255,255,255,.12)}
.stm-eye{display:flex;align-items:center;gap:9px;font-family:"Manrope";font-weight:800;font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:#7fb2f2}
.stm-dot{width:7px;height:7px;border-radius:50%;background:#7fb2f2;box-shadow:0 0 0 4px rgba(127,178,242,.2)}
.stm-lead{color:#9db8e6;font-size:14.5px;line-height:1.55;margin-top:10px;max-width:42ch;text-wrap:pretty}
.stm-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:20px}
@media(max-width:380px){.stm-row{gap:12px}}
.tmm{margin:0;display:flex;flex-direction:column;align-items:center;text-align:center;gap:9px}
.tmm image-slot,
.tmm img.slot-img{
  width:100%;max-width:74px;aspect-ratio:1;height:auto;flex:none;
  border:2.5px solid rgba(127,178,242,.4);border-radius:50%;
  box-shadow:0 12px 26px -14px rgba(0,0,0,.7);background:rgba(255,255,255,.06);
  object-fit:cover;display:block;
}
.tmm figcaption b{font-family:"Manrope";font-weight:800;color:#fff;font-size:13.5px;display:block;line-height:1.2}
.tmm figcaption em{display:block;font-style:normal;color:#7fb2f2;font-family:"Manrope";font-weight:700;font-size:11.5px;letter-spacing:.02em;margin-top:3px}

/* ============================================================
   PROOF / TESTIMONIAL STRIP
   ============================================================ */
.proof{background:var(--blue-tint)}
.proof-grid{display:grid;grid-template-columns:auto 1fr;gap:clamp(30px,5vw,64px);align-items:center}
@media(max-width:820px){.proof-grid{grid-template-columns:1fr;gap:32px}}
.proof-score{text-align:center;padding-right:clamp(0px,3vw,40px)}
.proof-score .pnum{font-family:"Manrope";font-weight:800;font-size:72px;color:var(--navy);line-height:1}
.proof-score .stars{color:#f0a23a;font-size:24px;letter-spacing:2px;margin-top:4px}
.proof-score .pcap{color:var(--muted);font-size:14px;margin-top:6px;font-family:"Manrope";font-weight:700;display:inline-block}
a.pcap{text-decoration:none;transition:color .2s}
a.pcap:hover{color:var(--blue);text-decoration:underline}
.quotes{display:grid;grid-template-columns:1fr 1fr;gap:22px}
@media(max-width:620px){.quotes{grid-template-columns:1fr}}
.quote{background:#fff;border-radius:18px;padding:24px;box-shadow:var(--shadow-sm)}
.quote .qstars{color:#f0a23a;font-size:15px;letter-spacing:1px}
.quote p{color:var(--ink);font-size:15.5px;line-height:1.6;margin:12px 0 14px;text-wrap:pretty}
.quote .qby{font-family:"Manrope";font-weight:800;font-size:14px;color:var(--navy)}
.quote .qby span{display:block;font-weight:600;font-size:12.5px;color:var(--grey-2);margin-top:2px}

/* reveal: shared utility, defined once in global.css (which now loads on every
   page freetest.css does too) — no need to redeclare it here. */
