/* ============================================================
   HomeGrants.ie — Contractor quotes pages
   Shared by quotes.html + the five per-upgrade landing pages.
   Same design tokens as report.css (Sora / green / navy) so the
   whole site reads as one product. Mobile-first: the form card
   must sit inside the first viewport on a 390×720 screen.
   ============================================================ */

/* Metric-matched fallback font: zero layout shift while Sora loads (in-app
   browsers on slow connections see correctly-sized text immediately). */
@font-face{
  font-family:'Sora-fallback';
  src:local('Segoe UI'),local('Arial');
  size-adjust:103%;ascent-override:99%;descent-override:27%;line-gap-override:0%;
}

:root{
  --white:#FFFFFF;--cream:#FAFAF8;--warm-gray:#F4F3F0;
  --gray100:#ECEAE6;--gray200:#DDD9D2;--gray300:#C4BFB7;
  --gray400:#9B9588;--gray500:#6E685C;
  --navy:#0C1D36;--navy2:#162A4A;--navy-text:#1A2B47;
  --green:#00875A;--green-bright:#00A86B;
  --green-bg:#E8F5EF;--green-bg2:#D1ECDF;--green-border:#B0DFC7;--green-dark:#006B47;
  --amber:#B8860B;--amber-bg:#FDF6E3;--amber-border:#F0DBA8;--amber-text:#8B6914;
  --red:#B91C1C;--red-bg:#FEF2F2;--red-border:#FECACA;
  --gold:#C9A227;--gold-bg:#FBF6E2;--gold-border:#E8D87A;
  --font:'Sora','Sora-fallback',sans-serif;--mono:'IBM Plex Mono',monospace;
  --shadow-sm:0 1px 2px rgba(0,0,0,0.04),0 1px 4px rgba(0,0,0,0.03);
  --shadow-md:0 2px 8px rgba(0,0,0,0.06),0 1px 3px rgba(0,0,0,0.04);
  --shadow-lg:0 4px 20px rgba(0,0,0,0.08),0 1px 4px rgba(0,0,0,0.04);
  --shadow-green:0 4px 14px rgba(0,135,90,0.2);
  --radius:14px;
}

*{margin:0;padding:0;box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  font-family:var(--font);
  background:var(--cream);
  color:var(--navy-text);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
a{color:var(--green-dark);}
button{font-family:inherit;}
.shell{max-width:1080px;margin:0 auto;padding:0 18px;}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

/* ---------- Top bar ---------- */
.q-topbar{
  background:var(--white);
  border-bottom:1px solid var(--gray100);
  position:sticky;top:0;z-index:40;
}
.q-topbar-inner{
  display:flex;align-items:center;justify-content:space-between;
  min-height:54px;gap:12px;
}
.q-brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--navy);font-weight:800;font-size:1.02rem;letter-spacing:-0.01em;}
.q-brand .dot{color:var(--green);}
.q-brand-badge{
  font-size:0.62rem;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;
  background:var(--green-bg);color:var(--green-dark);
  border:1px solid var(--green-border);border-radius:999px;padding:3px 8px;
}
.q-topbar-note{font-size:0.72rem;color:var(--gray500);text-align:right;line-height:1.35;}
.q-topbar-note b{color:var(--navy);font-weight:700;}
@media (max-width:479px){.q-topbar-note span.hide-xs{display:none;}}

/* ---------- Hero ---------- */
.q-hero{padding:22px 0 10px;}
.q-hero-eyebrow{
  display:inline-flex;align-items:center;gap:6px;
  font-size:0.7rem;font-weight:700;letter-spacing:0.09em;text-transform:uppercase;
  color:var(--green-dark);background:var(--green-bg);
  border:1px solid var(--green-border);border-radius:999px;
  padding:4px 10px;margin-bottom:10px;
}
.q-hero h1{
  font-size:clamp(1.42rem,5.4vw,2.15rem);
  line-height:1.16;letter-spacing:-0.02em;color:var(--navy);
  font-weight:800;max-width:22ch;
}
.q-hero h1 em{font-style:normal;color:var(--green);}
.q-hero-sub{margin-top:8px;font-size:clamp(0.9rem,3.6vw,1.02rem);color:var(--gray500);max-width:52ch;}
.q-trust-row{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;}
.q-trust-row span{font-size:0.76rem;font-weight:600;color:var(--navy2);display:inline-flex;align-items:center;gap:5px;}
.q-trust-row span::before{content:"✓";color:var(--green);font-weight:800;}

/* Hub hero line-art illustration — decorative, desktop only */
.q-hero-art{display:none;}
@media (min-width:980px){
  .q-hero .shell{position:relative;}
  .q-hero-art{
    display:block;position:absolute;right:12px;top:-4px;
    width:330px;height:auto;pointer-events:none;opacity:0.95;
  }
  .q-hero-art ~ * , .q-hero .shell > *:not(.q-hero-art){position:relative;}
}
@media (min-width:980px) and (prefers-reduced-motion: no-preference){
  .q-hero-art{animation:qRise 0.7s 0.2s cubic-bezier(0.2,0.7,0.3,1) both;}
}

/* ---------- Two-column layout ---------- */
.q-layout{display:grid;gap:20px;padding:14px 0 40px;}
@media (min-width:900px){
  .q-layout{grid-template-columns:minmax(0,1fr) 460px;gap:36px;align-items:start;padding-top:20px;}
  /* form card is first in the DOM (mobile-first) but renders on the right on desktop */
  .q-form-col{position:sticky;top:70px;grid-column:2;grid-row:1;}
  .q-content-col{grid-column:1;grid-row:1;}
  .q-hero{padding-top:34px;}
}

/* ---------- Wizard card ---------- */
.q-card{
  background:var(--white);
  border:1px solid var(--gray100);
  border-radius:18px;
  box-shadow:var(--shadow-lg);
  overflow:hidden;
}
.q-card-head{
  padding:14px 18px 12px;
  border-bottom:1px solid var(--gray100);
  background:linear-gradient(180deg,#FFFFFF 0%,#FBFDFC 100%);
}
.q-card-head h2{font-size:1.02rem;font-weight:800;color:var(--navy);letter-spacing:-0.01em;}
.q-card-head p{font-size:0.78rem;color:var(--gray500);margin-top:3px;}
.q-progress{display:flex;gap:5px;margin-top:10px;}
.q-progress i{height:4px;flex:1;border-radius:99px;background:var(--gray100);transition:background 0.25s;}
.q-progress i.on{background:var(--green);}
.q-step-label{font-size:0.68rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;color:var(--gray400);margin-top:7px;}

.q-card-body{padding:16px 18px 18px;}
.q-step{display:none;}
.q-step.active{display:block;animation:qFadeUp 0.28s ease both;}
@keyframes qFadeUp{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion:reduce){
  .q-step.active{animation:none;}
}

.q-q{margin-bottom:14px;}
.q-q:last-child{margin-bottom:0;}
.q-q-label{font-size:0.88rem;font-weight:700;color:var(--navy);margin-bottom:8px;display:block;}
.q-q-hint{font-size:0.8rem;color:var(--gray500);margin-top:6px;}

/* Option tiles */
.q-opts{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.q-opts.one-col{grid-template-columns:1fr;}
.q-opt{
  min-height:52px;padding:10px 12px;
  border:1.5px solid var(--gray200);border-radius:12px;
  background:var(--white);color:var(--navy-text);
  font-size:0.86rem;font-weight:600;text-align:left;
  cursor:pointer;display:flex;align-items:center;gap:8px;
  transition:border-color 0.15s,background 0.15s,box-shadow 0.15s;
}
.q-opt .q-opt-ico{font-size:1.05rem;line-height:1;display:inline-flex;flex:none;}
.q-opt .q-opt-ico svg{width:22px;height:22px;display:block;}
.q-opt:hover{border-color:var(--green-border);}
.q-opt[aria-pressed="true"]{
  border-color:var(--green);background:var(--green-bg);
  box-shadow:inset 0 0 0 1px var(--green);color:var(--green-dark);
}

/* Inputs */
.q-input,.q-select{
  width:100%;min-height:52px;
  border:1.5px solid var(--gray200);border-radius:12px;
  padding:12px 14px;font-size:16px;font-family:var(--font);
  color:var(--navy);background:var(--white);
  transition:border-color 0.15s,box-shadow 0.15s;
}
.q-input:focus,.q-select:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(0,135,90,0.12);}
.q-input.invalid{border-color:var(--red);}
.q-input.valid{border-color:var(--green);}
.q-input-eircode{font-family:var(--mono);letter-spacing:0.08em;text-transform:uppercase;}
.q-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236E685C' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:38px;}
.q-field-err{display:none;font-size:0.74rem;color:var(--red);margin-top:5px;font-weight:600;}
.q-field-err.show{display:block;}
.q-2col{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
@media (max-width:419px){.q-2col{grid-template-columns:1fr;}}

/* Honeypot — visually removed, still in DOM for bots */
.q-website-field{position:absolute !important;left:-9999px !important;top:-9999px !important;height:1px;width:1px;overflow:hidden;}

/* Buttons */
.q-btn{
  width:100%;min-height:54px;
  border:none;border-radius:13px;cursor:pointer;
  font-size:1rem;font-weight:700;letter-spacing:-0.01em;
  display:flex;align-items:center;justify-content:center;gap:8px;
  transition:background 0.15s,transform 0.1s,box-shadow 0.15s;
}
.q-btn-primary{background:var(--green);color:#fff;box-shadow:var(--shadow-green);}
.q-btn-primary:hover{background:var(--green-dark);}
.q-btn-primary:active{transform:translateY(1px);}
.q-btn-primary:disabled{background:var(--gray200);color:var(--gray400);cursor:not-allowed;box-shadow:none;}
.q-btn-ghost{background:none;border:none;color:var(--gray500);font-size:0.8rem;font-weight:600;min-height:0;width:auto;padding:8px 4px;cursor:pointer;}
.q-btn-ghost:hover{color:var(--navy);}
.q-nav-row{display:flex;align-items:center;justify-content:space-between;margin-top:14px;gap:10px;}
.q-nav-row .q-btn-primary{flex:1;}
.q-btn-spinner{display:none;width:18px;height:18px;border:2.5px solid rgba(255,255,255,0.35);border-top-color:#fff;border-radius:50%;animation:qSpin 0.7s linear infinite;}
@keyframes qSpin{to{transform:rotate(360deg);}}
.q-btn.loading .q-btn-spinner{display:inline-block;}
.q-btn.loading .q-btn-text{opacity:0.75;}

/* Consent + reassurance */
.q-consent{display:flex;gap:10px;align-items:flex-start;margin:12px 0 4px;}
.q-consent input{width:20px;height:20px;margin-top:1px;accent-color:var(--green);flex:none;cursor:pointer;}
.q-consent label{font-size:0.82rem;color:var(--navy-text);line-height:1.5;cursor:pointer;}
.q-consent label a{color:var(--green-dark);}
.q-consent.invalid label{color:var(--red);}
.q-form-err{
  display:none;background:var(--red-bg);border:1px solid var(--red-border);
  color:var(--red);font-size:0.8rem;font-weight:600;
  border-radius:10px;padding:10px 12px;margin-top:10px;
}
.q-form-err.show{display:block;}
.q-card-foot{
  padding:11px 18px;border-top:1px solid var(--gray100);
  background:var(--warm-gray);
  font-size:0.76rem;color:var(--gray500);line-height:1.45;text-align:center;
}
.q-card-foot b{color:var(--navy2);}

/* Success state */
.q-success{display:none;padding:26px 20px 24px;text-align:center;}
.q-success.show{display:block;animation:qFadeUp 0.3s ease both;}
.q-success-badge{
  width:58px;height:58px;margin:0 auto 12px;border-radius:50%;
  background:var(--green-bg);border:2px solid var(--green);
  display:flex;align-items:center;justify-content:center;
  font-size:1.6rem;color:var(--green-dark);font-weight:800;
}
.q-success h3{font-size:1.15rem;color:var(--navy);font-weight:800;letter-spacing:-0.01em;}
.q-success p{font-size:0.85rem;color:var(--gray500);margin-top:6px;}
.q-success-steps{margin:16px 0 4px;text-align:left;display:grid;gap:9px;}
.q-success-steps div{display:flex;gap:10px;font-size:0.82rem;color:var(--navy-text);}
.q-success-steps b{flex:none;width:22px;height:22px;border-radius:50%;background:var(--green-bg);color:var(--green-dark);font-size:0.72rem;display:flex;align-items:center;justify-content:center;}
.q-crosssell{
  margin-top:18px;text-align:left;
  background:linear-gradient(135deg,#0C1D36 0%,#162A4A 100%);
  border-radius:14px;padding:16px;color:#fff;
}
.q-crosssell .cs-tag{font-size:0.64rem;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:#8FD9BC;}
.q-crosssell h4{font-size:0.98rem;font-weight:700;margin-top:4px;letter-spacing:-0.01em;}
.q-crosssell p{font-size:0.78rem;color:#B9C4D6;margin-top:5px;}
.q-crosssell a{
  display:inline-flex;align-items:center;gap:6px;margin-top:11px;
  background:var(--green);color:#fff;text-decoration:none;
  font-size:0.84rem;font-weight:700;border-radius:10px;padding:10px 16px;
}
.q-crosssell a:hover{background:var(--green-bright);}

/* ---------- Content sections (below the card on mobile / left column on desktop) ---------- */
.q-section{margin-top:26px;}
.q-section h2{font-size:clamp(1.1rem,4vw,1.35rem);color:var(--navy);font-weight:800;letter-spacing:-0.015em;margin-bottom:12px;}
.q-section > p{font-size:0.9rem;color:var(--gray500);max-width:60ch;}

/* Grant figure table */
.q-figures{
  background:var(--white);border:1px solid var(--gray100);border-radius:var(--radius);
  box-shadow:var(--shadow-sm);overflow:hidden;margin-top:14px;
}
.q-figures table{width:100%;border-collapse:collapse;font-size:0.85rem;}
.q-figures caption{text-align:left;padding:12px 16px 4px;font-size:0.72rem;font-weight:700;letter-spacing:0.07em;text-transform:uppercase;color:var(--gray400);}
.q-figures th,.q-figures td{padding:10px 16px;text-align:left;border-top:1px solid var(--gray100);}
.q-figures th{font-weight:600;color:var(--navy-text);}
.q-figures td{font-family:var(--mono);font-weight:600;color:var(--green-dark);text-align:right;white-space:nowrap;}
.q-figures tfoot td,.q-figures tfoot th{font-size:0.72rem;color:var(--gray400);font-family:var(--font);font-weight:500;text-align:left;white-space:normal;}

/* How it works */
.q-how{display:grid;gap:10px;margin-top:14px;}
@media (min-width:640px){.q-how{grid-template-columns:repeat(3,1fr);}}
.q-how-card{background:var(--white);border:1px solid var(--gray100);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-sm);}
.q-how-card b{
  display:flex;width:30px;height:30px;border-radius:50%;
  background:var(--green-bg);color:var(--green-dark);
  align-items:center;justify-content:center;font-size:0.85rem;margin-bottom:9px;
}
.q-how-card h3{font-size:0.92rem;color:var(--navy);font-weight:700;letter-spacing:-0.01em;}
.q-how-card p{font-size:0.8rem;color:var(--gray500);margin-top:5px;}

/* Reassurance strip */
.q-why{display:grid;gap:10px;margin-top:14px;}
@media (min-width:640px){.q-why{grid-template-columns:1fr 1fr;}}
.q-why-item{display:flex;gap:11px;background:var(--white);border:1px solid var(--gray100);border-radius:var(--radius);padding:14px 15px;box-shadow:var(--shadow-sm);}
.q-why-item .ico{flex:none;width:34px;height:34px;border-radius:9px;background:var(--green-bg);display:flex;align-items:center;justify-content:center;font-size:1rem;color:var(--green-dark);}
.q-why-item .ico svg{width:19px;height:19px;display:block;}
.q-why-item h3{font-size:0.88rem;color:var(--navy);font-weight:700;}
.q-why-item p{font-size:0.78rem;color:var(--gray500);margin-top:3px;}

/* FAQ */
.q-faq{margin-top:14px;display:grid;gap:8px;}
.q-faq details{background:var(--white);border:1px solid var(--gray100);border-radius:12px;box-shadow:var(--shadow-sm);}
.q-faq summary{
  cursor:pointer;padding:13px 16px;font-size:0.88rem;font-weight:700;color:var(--navy);
  list-style:none;display:flex;justify-content:space-between;align-items:center;gap:10px;
}
.q-faq summary::-webkit-details-marker{display:none;}
.q-faq summary::after{content:"+";font-size:1.1rem;color:var(--green);font-weight:700;flex:none;}
.q-faq details[open] summary::after{content:"–";}
.q-faq details p{padding:0 16px 14px;font-size:0.83rem;color:var(--gray500);}

/* Hub page service grid */
.q-services{display:grid;gap:10px;margin-top:16px;}
@media (min-width:640px){.q-services{grid-template-columns:1fr 1fr;}}
.q-service-card{
  display:flex;gap:13px;align-items:flex-start;text-decoration:none;
  background:var(--white);border:1px solid var(--gray100);border-radius:var(--radius);
  padding:16px;box-shadow:var(--shadow-sm);
  transition:border-color 0.15s,box-shadow 0.15s,transform 0.12s;
}
.q-service-card:hover{border-color:var(--green-border);box-shadow:var(--shadow-md);transform:translateY(-1px);}
.q-service-card .ico{flex:none;width:42px;height:42px;border-radius:11px;background:var(--green-bg);display:flex;align-items:center;justify-content:center;font-size:1.25rem;color:var(--green-dark);}
.q-service-card .ico svg{width:23px;height:23px;display:block;}
.q-hint-lock{display:inline-block;vertical-align:-2px;width:13px;height:13px;margin-right:3px;color:var(--gray400);}
.q-service-card h3{font-size:0.95rem;color:var(--navy);font-weight:700;letter-spacing:-0.01em;display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.q-service-card .amt{font-size:0.68rem;font-weight:700;color:var(--green-dark);background:var(--green-bg);border:1px solid var(--green-border);border-radius:999px;padding:2px 8px;white-space:nowrap;}
.q-service-card p{font-size:0.79rem;color:var(--gray500);margin-top:4px;}
.q-service-card .go{font-size:0.79rem;font-weight:700;color:var(--green-dark);margin-top:7px;display:inline-block;}

/* ---------- Footer ---------- */
.q-footer{background:var(--white);border-top:1px solid var(--gray100);margin-top:34px;padding:28px 0 30px;}
.q-footer-grid{display:grid;gap:22px;}
@media (min-width:720px){.q-footer-grid{grid-template-columns:repeat(3,1fr);}}
.q-footer h4{font-size:0.72rem;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--gray400);margin-bottom:9px;}
.q-footer ul{list-style:none;}
.q-footer li{margin-bottom:6px;}
.q-footer a{font-size:0.82rem;color:var(--navy-text);text-decoration:none;}
.q-footer a:hover{color:var(--green-dark);text-decoration:underline;}
.q-footer-legal{margin-top:22px;padding-top:16px;border-top:1px solid var(--gray100);}
.q-footer-legal p{font-size:0.72rem;color:var(--gray400);max-width:78ch;line-height:1.5;}
.q-footer-legal p + p{margin-top:6px;}

/* ============================================================
   Modern-platform polish layer (July 2026)
   Everything below is progressive enhancement: cross-document
   view transitions, scroll-driven reveals, glass chrome, spring
   micro-interactions. Old browsers simply get the base design.
   ============================================================ */

/* App-like crossfades between pages (cross-document View Transitions API) */
@view-transition { navigation: auto; }
.q-brand{view-transition-name:site-brand;}

/* Glass top bar over content */
@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)){
  .q-topbar{
    background:rgba(255,255,255,0.78);
    -webkit-backdrop-filter:saturate(1.5) blur(14px);
    backdrop-filter:saturate(1.5) blur(14px);
  }
}

/* Quiet aurora glow behind the hero — pure CSS, GPU-cheap — plus a fine
   print-like grain so large flat surfaces read premium, not sterile. */
.q-hero{position:relative;isolation:isolate;}
.q-hero::after{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:0.35;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* The hub illustration breathes: sun turns, heat waves pulse, insulation
   dashes march. Decorative life, all reduced-motion gated. */
@media (prefers-reduced-motion: no-preference){
  .art-sun-rays{
    transform-box:fill-box;transform-origin:center;
    animation:qSunTurn 46s linear infinite;
  }
  .art-heat{animation:qHeatPulse 2.8s ease-in-out infinite;}
  .art-insulation{stroke-dasharray:10 7;animation:qDashMarch 9s linear infinite;}
}
@keyframes qSunTurn{to{transform:rotate(360deg);}}
@keyframes qHeatPulse{0%,100%{opacity:0.45;}50%{opacity:1;}}
@keyframes qDashMarch{to{stroke-dashoffset:-170;}}
.q-hero::before{
  content:"";position:absolute;z-index:-1;pointer-events:none;
  top:-120px;left:50%;transform:translateX(-58%);
  width:min(760px,120vw);height:340px;
  background:
    radial-gradient(42% 60% at 30% 40%,rgba(0,168,107,0.16),transparent 70%),
    radial-gradient(38% 55% at 72% 30%,rgba(0,135,90,0.10),transparent 70%),
    radial-gradient(30% 45% at 55% 75%,rgba(201,162,39,0.07),transparent 70%);
  filter:blur(34px);
}

/* Balanced headlines, tidy rag everywhere */
.q-hero h1,.q-section h2,.q-card-head h2,.q-success h3,.q-crosssell h4{text-wrap:balance;}
.q-hero-sub,.q-section > p,.q-how-card p,.q-why-item p,.q-faq details p{text-wrap:pretty;}

/* Entrance choreography on load */
@media (prefers-reduced-motion: no-preference){
  .q-hero-eyebrow,.q-hero h1,.q-hero-sub,.q-trust-row{animation:qRise 0.55s cubic-bezier(0.2,0.7,0.3,1) both;}
  .q-hero h1{animation-delay:0.06s;}
  .q-hero-sub{animation-delay:0.12s;}
  .q-trust-row{animation-delay:0.18s;}
  .q-form-col .q-card{animation:qRise 0.6s 0.12s cubic-bezier(0.2,0.7,0.3,1) both;}
}
@keyframes qRise{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}

/* Scroll-driven reveals for below-the-fold content (animation-timeline) */
@media (prefers-reduced-motion: no-preference){
  @supports (animation-timeline: view()){
    .q-figures,.q-how-card,.q-why-item,.q-service-card,.q-faq details{
      animation:qRise linear both;
      animation-timeline:view();
      animation-range:entry 0% entry 32%;
    }
  }
}

/* Option tiles: springy select, clear keyboard focus */
.q-opt{transition:border-color 0.15s,background 0.15s,box-shadow 0.15s,transform 0.12s;}
.q-opt:active{transform:scale(0.97);}
@media (prefers-reduced-motion: no-preference){
  .q-opt[aria-pressed="true"]{animation:qPop 0.22s cubic-bezier(0.34,1.56,0.64,1);}
}
@keyframes qPop{0%{transform:scale(0.97);}60%{transform:scale(1.025);}100%{transform:none;}}
.q-opt:focus-visible,.q-btn:focus-visible,.q-input:focus-visible,.q-select:focus-visible,.q-cookie-actions button:focus-visible{
  outline:3px solid color-mix(in srgb,var(--green) 55%, white);
  outline-offset:2px;
}

/* Progress bar: living gradient on the active segments */
.q-progress i{transition:background 0.35s;}
.q-progress i.on{
  background:linear-gradient(90deg,var(--green) 0%,var(--green-bright) 60%,var(--green) 100%);
  background-size:200% 100%;
}
@media (prefers-reduced-motion: no-preference){
  .q-progress i.on:last-of-type{animation:qShimmer 2.4s linear 4;}
}
@keyframes qShimmer{to{background-position:-200% 0;}}

/* Primary button: soft sheen sweep on hover (desktop only) */
.q-btn-primary{position:relative;overflow:hidden;}
@media (hover:hover) and (prefers-reduced-motion: no-preference){
  .q-btn-primary::after{
    content:"";position:absolute;inset:0;
    background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,0.22) 48%,transparent 62%);
    transform:translateX(-120%);
  }
  .q-btn-primary:hover::after{transition:transform 0.7s ease;transform:translateX(120%);}
}

/* Success tick: draw-in pop */
@media (prefers-reduced-motion: no-preference){
  .q-success-badge{animation:qPopIn 0.5s cubic-bezier(0.34,1.56,0.64,1) both;}
}
@keyframes qPopIn{from{opacity:0;transform:scale(0.5);}to{opacity:1;transform:none;}}

/* Figures table: gentle row highlight */
.q-figures tbody tr{transition:background 0.15s;}
.q-figures tbody tr:hover{background:var(--green-bg);}

/* Hub cards: arrow slides on hover */
.q-service-card .go{transition:transform 0.18s;}
@media (hover:hover){
  .q-service-card:hover .go{transform:translateX(4px);}
}

/* Print / static-render safety: entrance animations must never blank content */
@media print{
  .q-hero-eyebrow,.q-hero h1,.q-hero-sub,.q-trust-row,.q-form-col .q-card,
  .q-figures,.q-how-card,.q-why-item,.q-service-card,.q-faq details{
    animation:none !important;opacity:1 !important;transform:none !important;
  }
}

/* Native smooth <details> open/close (interpolate-size, 2025+ engines) */
@supports (interpolate-size: allow-keywords){
  :root{interpolate-size:allow-keywords;}
  .q-faq details::details-content{
    block-size:0;overflow:clip;
    transition:block-size 0.3s ease,content-visibility 0.3s allow-discrete;
  }
  .q-faq details[open]::details-content{block-size:auto;}
}

/* ---------- Cookie banner ---------- */
.q-cookie{
  position:fixed;bottom:12px;left:12px;right:12px;z-index:60;
  background:var(--navy);color:#fff;border-radius:14px;
  padding:14px 16px;box-shadow:0 8px 30px rgba(0,0,0,0.25);
  display:none;max-width:520px;margin:0 auto;
}
.q-cookie.show{display:block;}
.q-cookie p{font-size:0.78rem;color:#C9D2E0;line-height:1.45;}
.q-cookie p a{color:#8FD9BC;}
.q-cookie-actions{display:flex;gap:8px;margin-top:10px;}
.q-cookie-actions button{
  flex:1;min-height:40px;border-radius:9px;border:none;cursor:pointer;
  font-size:0.8rem;font-weight:700;font-family:var(--font);
}
.q-cookie-accept{background:var(--green);color:#fff;}
.q-cookie-decline{background:rgba(255,255,255,0.12);color:#E7EBF2;}
