/* ============================================================
   Ampy Hero 1  |  KLASSBASERAD. Ersatter helt den ID-baserade versionen.
   Matchad mot prototyp "B". Full responsiv.

   VARFOR :not(#_)  —  Bricks skriver ut elementinstallningar som
   ID-regler (#brxe-xxxx, specificitet 1,0,0). En ren klass ar 0,1,0
   och forlorar. :not(#_) matchar allt, andrar inget, och lyfter
   regeln till 1,1,0 sa den vinner. Ingen !important behovs.
   Flyttar du installningarna in i de globala klasserna i Bricks kan
   :not(#_) tas bort overallt.

   VARFOR KLASSER  —  Bricks-komponenter renderar hashade klasser, inte
   id:n, och id:n regenereras nar en sektion klistras in pa nytt. Bada
   dodar ID-baserad CSS. Klasserna overlever bada.
   ============================================================ */

/* FRAME: slöja, inramning, vertikal centrering */
.home-hero__floating-banner:not(#_){
  justify-content:center; align-items:stretch; gap:0;
  padding:0 clamp(24px,5vw,84px);
  border-radius:22px;
  background-position:62% 60%;
}
.home-hero__floating-banner:not(#_)::before{
  content:""; position:absolute; inset:0; z-index:0;
  pointer-events:none; border-radius:inherit;
  background:
    linear-gradient(98deg, rgba(9,11,50,.68) 0%, rgba(9,11,50,.46) 42%, rgba(9,11,50,.12) 66%, rgba(9,11,50,.02) 100%),
    linear-gradient(0deg, rgba(9,11,50,.38) 0%, rgba(9,11,50,0) 26%);
}

/* CONTENT stack */
.home-hero__block:not(#_){ position:relative; z-index:1; max-width:880px; gap:18px; padding:0; }

/* H1 */
.home-hero__heading:not(#_){
  font-size:clamp(36px,4.6vw,60px); line-height:1.07; font-weight:700;
  letter-spacing:-.018em; color:#fff; text-wrap:balance;
}

/* Subtext */
.home-hero__text:not(#_), .home-hero__text:not(#_) p{
  font-size:clamp(17px,1.55vw,22px); line-height:1.58; font-weight:400;
  color:rgba(255,255,255,.92); text-shadow:0 1px 12px rgba(9,11,50,.35); max-width:none;
}

/* CTA */
.home-hero__cta:not(#_){
  align-self:flex-start; gap:16px; min-height:58px; padding:11px 26px;
  border-radius:16px; margin-top:14px; color:hsl(237 35% 24%);
  font-size:16px; font-weight:500; line-height:1;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45), 0 2px 4px rgba(9,11,50,.10), 0 14px 32px -8px rgba(9,11,50,.40);
  transition:transform .16s ease, box-shadow .16s ease, filter .16s ease;
}
.home-hero__cta:not(#_):hover{
  transform:translateY(-1.5px); filter:saturate(1.06) brightness(1.02);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5), 0 3px 6px rgba(9,11,50,.12), 0 18px 38px -8px rgba(9,11,50,.46);
}
.home-hero__cta:not(#_):active{ transform:translateY(0); }
.home-hero__cta:not(#_) svg{ transition:transform .16s ease; }
.home-hero__cta:not(#_):hover svg{ transform:scale(1.18); }

/* PROOF row, nere till hoger */
.home-hero__trust:not(#_){
  z-index:1; top:auto; left:auto;
  right:clamp(24px,3vw,44px); bottom:clamp(20px,3vh,32px);
  gap:14px; align-items:center; color:#fff; font-size:14.5px;
  text-shadow:0 1px 8px rgba(9,11,50,.45);
}
.home-hero__rating-text:not(#_){ font-size:14.5px; color:#fff; font-weight:400; }
.home-hero__volume-proof:not(#_){ font-size:14.5px; color:#fff; text-align:left; }
.home-hero__rating-text:not(#_) strong,
.home-hero__volume-proof:not(#_) strong{ font-weight:700; }

/* avdelare fore volymtexten (inget separatorelement finns i bygget) */
.home-hero__volume-proof:not(#_)::before{
  content:""; display:inline-block; width:1px; height:15px;
  margin-right:14px; background:rgba(255,255,255,.45); vertical-align:-3px;
}

/* stjarnbehallare + de fem stjarnorna (nu egna klasser, ingen svg-descendant) */
.home-hero__rating-stars:not(#_){
  display:inline-flex; align-items:center; gap:2.5px;
  flex:0 0 auto; width:auto; min-width:0; height:auto; background:none;
}
.home-hero__rating-star:not(#_){ width:14px; height:14px; flex:0 0 auto; fill:#fff; }
.home-hero__rating-star:not(#_) path{ fill:#fff; }

/* Google "G": hug 16px-ikonen sa den inte blaser upp raden */
.home-hero__trust:not(#_) .bricks-link-wrapper{
  display:inline-flex; align-items:center; line-height:1;
  height:16px; min-height:0; max-height:16px; flex:0 0 auto;
}
.home-hero__google-icon:not(#_){ width:16px; height:16px; flex:0 0 auto; }

/* horn stramas at pa sma skarmar */
@media (max-width:992px){
  .home-hero__floating-banner:not(#_){ border-radius:18px; }
}

/* tablet / liten landscape 561 till 992 */
@media (min-width:561px) and (max-width:992px){
  .home-hero__block:not(#_){ max-width:640px; }
  .home-hero__floating-banner:not(#_){ padding:0 clamp(30px,6vw,60px); }
  .home-hero__heading:not(#_){ font-size:clamp(38px,6.2vw,50px); }
  .home-hero__text:not(#_), .home-hero__text:not(#_) p{ font-size:clamp(16px,2.3vw,19px); }
  .home-hero__trust:not(#_){ right:24px; bottom:20px; }
}

/* stor tablet / liten desktop 993 till 1200 */
@media (min-width:993px) and (max-width:1200px){
  .home-hero__block:not(#_){ max-width:720px; }
  .home-hero__heading:not(#_){ font-size:clamp(38px,4.4vw,46px); }
}

/* telefon, max 560: slöjan tyngre nedtill, proof staplas nere till vanster */
@media (max-width:560px){
  .home-hero__floating-banner:not(#_){ padding:0 24px 7vh; background-position:66% 62%; }
  .home-hero__floating-banner:not(#_)::before{
    background:
      linear-gradient(180deg, rgba(9,11,50,.30) 0%, rgba(9,11,50,.24) 30%, rgba(9,11,50,.28) 62%, rgba(9,11,50,.64) 100%),
      linear-gradient(98deg, rgba(9,11,50,.28) 0%, rgba(9,11,50,.05) 60%);
  }
  .home-hero__block:not(#_){ max-width:none; gap:14px; }
  .home-hero__heading:not(#_){ font-size:36px; }
  .home-hero__text:not(#_), .home-hero__text:not(#_) p{ font-size:15.5px; line-height:1.55; }
  .home-hero__cta:not(#_){ min-height:52px; padding:9px 22px; gap:12px; font-size:15px; margin-top:12px; }

  /* proof: nere till vanster, betygsrad overst, volym radbryts under */
  .home-hero__trust:not(#_){
    left:24px; right:auto; bottom:20px; flex-wrap:wrap;
    gap:9px; font-size:13.5px; max-width:calc(100% - 48px);
  }
  .home-hero__rating-text:not(#_){ font-size:13.5px; }
  .home-hero__rating-star:not(#_){ width:13.5px; height:13.5px; }
  .home-hero__volume-proof:not(#_){ flex-basis:100%; font-size:13.5px; opacity:.92; }
  .home-hero__volume-proof:not(#_)::before{
    display:block; width:26px; height:1px; margin:0 0 9px; background:rgba(255,255,255,.38);
  }
}

/* ============================================================
   PARITY PASS 2026-07-26 — append, keep last in this file.
   Verifierat mot prototyp B vid 1879px och 360px (iPhone 12 mini).
   ============================================================ */

/* Textkolumnen: prototypen ar 712px (880 container minus 2x84 padding),
   inte 880. Detta ensamt fixar radbrytningen i brodtexten. */
.home-hero__block:not(#_){ max-width:712px; }
@media (min-width:993px) and (max-width:1200px){
  .home-hero__block:not(#_){ max-width:712px; }   /* var 720 = bredare an bas */
}

/* H1-brytningen. Prototypen loser den med en hard <br> efter "hemmet,".
   Vi vill inte ha HTML i ett redigerbart faalt, och utan br vill de tva
   vyerna ha OLIKA varden:
     desktop (712px): wrap    -> "Elinstallationer i hemmet," / "gjort ordentligt."
     mobil   (255px): balance -> "Elinstallationer" / "i hemmet," / "gjort ordentligt."
   Balance ar basvardet i regeln ovan, sa mobilen behover ingen egen rad:
   det racker att den har overstyrningen bara galler over 560px.
   Uppmatt: byter man varden rakt av gar den andra vyn sonder. */
@media (min-width:561px){
  .home-hero__heading:not(#_){ text-wrap:wrap; }
}

/* Mobil: Bricks lagger 16px marginal over OCH under textelementet ovanpa
   flex-gap 14px. Det trycker upp hela stacken 16px mot prototypen.
   Matning: h1 y 159 -> 175, CTA y 419 -> 403. Prototyp: 175 / 402. */
@media (max-width:560px){
  .home-hero__text:not(#_){ margin-top:0; margin-bottom:0; }
}

/* "Over 3 000 installationer per ar" doldes pa mobil av en oskopad regel i
   kontaktformularets Code-element ([data-mf="vol"]{display:none !important}).
   Den ar nu skopad dar. Detta ar balte-och-hangslen om formularets CSS
   skulle rullas tillbaka.
   OBS: bara <=560. I bandet 561-768 anvander hero fortfarande sin inline-
   variant med lodrat streck, sa display:block dar skulle bryta raden. */
@media (max-width:560px){
  .home-hero__volume-proof:not(#_){
    display:block !important;
    font-size:13.5px !important;
    line-height:1 !important;
  }
}

/* Mini-menyn under hero: 40px var for tight. Ett steg upp pa skalan. */
.home-hero > .brxe-container:not(.home-hero__floating-banner):not(#_){
  padding-top:var(--apspace-2xl);
}

/* ------------------------------------------------------------
   HOJD. Ersatter Bricks-faltet _heightMin: 85vh pa Floating banner
   (Layout > Min height) — ta bort det faltet i Bricks.

   Prototypens .vb2__frame:
     height:calc(100svh - var(--header-h,7.6rem) - 48px);
     min-height:620px; max-height:950px;
     @media (max-width:992px){ ...6.6rem... - 26px; min-height:520px }

   --header-h finns inte pa ampy.se, sa fallbacken skrivs ut direkt:
   7.6rem = 76px (barens hojd efter parity-fixen), 6.6rem = 66px (mobilbaren,
   satt i header-CSS:en). Root font-size ar 10px pa bada, sa rem gar 1:1.

   svh, inte vh: vh raknar med adressfaltet utfallt pa mobil, vilket ger en
   hero som hoppar nar faltet fars in. Prototypen anvander svh av samma skal.

   Matning: 950px vid 1879x1134 och 520px vid 360x612 — identiskt med
   prototypen, och 85vh gav 1021px respektive 520px.
   ------------------------------------------------------------ */
.home-hero__floating-banner:not(#_){
  height:calc(100svh - 7.6rem - 48px);
  min-height:620px;
  max-height:950px;
}
@media (max-width:992px){
  .home-hero__floating-banner:not(#_){
    height:calc(100svh - 6.6rem - 26px);
    min-height:520px;
    /* max-height:950px arvs fran basregeln, precis som i prototypen */
  }
}

/* ------------------------------------------------------------
   MOBIL: sektionens sidopadding och h1-bredden.

   Prototypens sektion har 10px sidopadding, inte 8.3 (--apspace-2xs).
   Det ger banner 340 istallet for 344, och innehallet x=34 istallet for 32.

   255px-taket pa h1: med balance (se regeln ovan) bryts raden ratt forst
   nar boxen ar smalare an "Elinstallationer i" (259px) men bredare an
   "Elinstallationer" (244.1px). Balance ensamt vid 292px ger fel rad 1.

   OBS: 255px ar avstamt mot exakt denna rubriktext. Andras copyn maste
   vardet raknas om — det ar den enda regeln i filen som inte sjalvlaker.
   ------------------------------------------------------------ */
@media (max-width:560px){
  .home-hero:not(#_){
    padding-left:10px !important;
    padding-right:10px !important;
  }
  .home-hero__heading:not(#_){ max-width:255px; }
}

/* ============================================================================
   Ampy, "Din elektriker för hela hemmet" (homepage block 2)
   Lives in the Bricks Code element's CSS pane (cssCode), bound to ACF dynamic
   tags for the title/lead. Sits inside a Bricks Section.

   VERSION CHECK: if .ampy-elfirma__wrap has ANY max-width or padding on it,
   this file is an OLD copy. Current version is `.ampy-elfirma__wrap{width:100%;}`
   and nothing more.

   OWNERSHIP RULE (the thing that kept breaking):
   The Bricks Section owns ALL outer layout: content max-width, horizontal
   padding, and top/bottom spacing. This file owns ONLY the internal rhythm:
   the title to lead gap, the header to cards gap, and the gaps between cards.
   Never add padding or max-width to .ampy-elfirma or .ampy-elfirma__wrap, or it
   stacks on top of the Section's and the block insets twice.

   Other notes:
   - Everything scoped under .ampy-elfirma, so zero leakage into the theme.
   - Units are px (WordPress does NOT use the 62.5% rem base the prototype used).
   - Responsive via @container, so the block adapts to its column, not just the
     viewport (with a @media fallback for browsers without container queries).
   - TYPOGRAPHY IS INHERITED FROM BRICKS ON PURPOSE: Bricks already serves
     Plus Jakarta Sans for headings and Outfit for body. This block sets NO
     font-family anywhere, so the title picks up Plus Jakarta and the body copy
     picks up Outfit via the normal cascade. Do not pin font-family here or you
     override Bricks' heading font.
   - Photos are set per card as a CSS var (--photo) in the HTML; if a photo is
     missing or blocked, the per-card aurora gradient shows, so no broken image.
   - width:100% + align-self:stretch are REQUIRED: container-type:inline-size
     applies inline-size containment, so the root's width must not depend on its
     contents. Inside Bricks' flex .brxe-section a non-stretched auto-width child
     would collapse to ~0 and break every title character onto its own line.
   - The lead wrapper is a <div>, NOT a <p>: the ACF field runs through wpautop,
     which wraps the text in its own <p>. A <p> cannot legally contain a <p>, so
     the browser hoists the inner one out and dumps the text into a bare, uncapped
     <p> (the "one long line" bug). A <div> holds the wpautop <p> legally, so the
     width cap at the END of this file actually sticks.
   ============================================================================ */

.ampy-elfirma{
  container-type:inline-size;                 /* @container reference */
  width:100%;                                 /* definite inline size (see note) */
  align-self:stretch;                         /* survive any flex parent alignment */
  --ap-navy:#090b32; --ap-teal:#00a991;
  --ap-blue:#5eb1bf; --ap-blue-bright:#74c2ce; /* owner-picked sky-blue CTA */
  --ap-offwhite:#f5f9ff; --ap-white:#ffffff;
  --ink:#0f123c; --ink-muted:#565e82; --ap-black:#1e1e1e;
  --shadow-card:0 16px 40px -12px rgba(9,11,50,.28),0 4px 10px -4px rgba(9,11,50,.18);
  --shadow-card-h:0 30px 60px -14px rgba(9,11,50,.38),0 10px 20px -6px rgba(9,11,50,.22);
  --shadow-blue:0 10px 24px -6px rgba(94,177,191,.55);
  --ring:0 0 0 3px rgba(0,169,145,.9);
  --ease:cubic-bezier(.2,.6,.2,1); --ease-out:cubic-bezier(.16,1,.3,1);

  display:block;
  color:var(--ink);line-height:1.6;
  font-feature-settings:"kern" 1,"liga" 1;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  /* no padding, no margin, no max-width: the Bricks Section owns outer spacing */
}
.ampy-elfirma *,.ampy-elfirma *::before,.ampy-elfirma *::after{box-sizing:border-box;}
.ampy-elfirma a{color:inherit;text-decoration:none;}
.ampy-elfirma img,.ampy-elfirma svg{display:block;max-width:100%;}
.ampy-elfirma ::selection{background:rgba(0,169,145,.22);}

/* full-width pass-through. Do NOT add max-width or padding here, see header. */
.ampy-elfirma__wrap{width:100%;}

/* centred header, font-family inherited from Bricks (Plus Jakarta / Outfit) */
.ampy-elfirma__head{max-width:960px;margin-inline:auto;text-align:center;}
.ampy-elfirma__title{max-width:600px;margin:0 auto;
  font-size:clamp(28px,23px + 1.1vw,38px);font-weight:500;line-height:1.2;
  letter-spacing:-.01em;color:var(--ink);text-wrap:balance;overflow-wrap:break-word;}
.ampy-elfirma__lead{margin:24px auto 0;max-width:600px;
  font-size:clamp(17px,16.2px + .25vw,18.5px);font-weight:300;line-height:1.5;
  color:var(--ink-muted);text-wrap:pretty;}
/* neutralise any inline element the theme or plugins inject into the lead
   (auto-linked keywords etc.) so no word renders in the site link teal */
.ampy-elfirma .ampy-elfirma__lead *{color:inherit;text-decoration:none;}

/* three equal square cards, 30px gutters. margin-top is the header to cards gap. */
.ampy-elfirma__grid{margin-top:clamp(48px,30px + 2vw,64px);
  display:grid;grid-template-columns:repeat(3,1fr);gap:30px;}

.ampy-elfirma__card{position:relative;display:block;aspect-ratio:1/1;overflow:hidden;
  border-radius:20px;background:var(--ap-navy);box-shadow:var(--shadow-card);
  -webkit-tap-highlight-color:transparent;
  transition:transform 280ms var(--ease),box-shadow 280ms var(--ease);}
/* aspect-ratio fallback for very old browsers (iOS < 15) */
.ampy-elfirma__card::before{content:"";display:block;padding-top:100%;}
@supports (aspect-ratio:1/1){ .ampy-elfirma__card::before{display:none;} }
.ampy-elfirma__card:hover,.ampy-elfirma__card:focus-visible{
  transform:translateY(-4px);box-shadow:var(--shadow-card-h);outline:0;}
.ampy-elfirma__card:focus-visible{box-shadow:var(--ring),var(--shadow-card-h);}

/* photo layer (from --photo) over a per-card aurora fallback (--fallback) */
.ampy-elfirma__media{position:absolute;inset:0;z-index:0;
  background-position:center;background-size:cover;background-repeat:no-repeat;
  background-image:var(--photo,linear-gradient(rgba(0,0,0,0),rgba(0,0,0,0))),var(--fallback);
  transform:scale(1);transition:transform 640ms var(--ease-out);}
.ampy-elfirma__card:hover .ampy-elfirma__media,
.ampy-elfirma__card:focus-visible .ampy-elfirma__media{transform:scale(1.08);will-change:transform;}
.ampy-elfirma__card.is-elservice{--fallback:radial-gradient(600px 440px at 78% 16%,rgba(0,169,145,.5),transparent 60%),linear-gradient(180deg,#0d1350,#06082a);}
.ampy-elfirma__card.is-laddbox{--fallback:radial-gradient(560px 420px at 74% 84%,rgba(57,194,129,.46),transparent 60%),linear-gradient(180deg,#0d1145,#06082a);}
.ampy-elfirma__card.is-batteri{--fallback:radial-gradient(540px 420px at 20% 20%,rgba(0,169,145,.44),transparent 60%),linear-gradient(180deg,#0b0e38,#05061f);}

/* overall legibility overlay; deepens on hover */
.ampy-elfirma__overlay{position:absolute;inset:0;z-index:1;
  background:radial-gradient(125% 105% at 50% 50%,rgba(9,11,50,.30),rgba(9,11,50,.56));
  transition:background 420ms var(--ease);}
.ampy-elfirma__card:hover .ampy-elfirma__overlay,
.ampy-elfirma__card:focus-visible .ampy-elfirma__overlay{
  background:radial-gradient(125% 105% at 50% 50%,rgba(9,11,50,.34),rgba(9,11,50,.62));}

/* centred content. The soft centre scrim guarantees the white title stays
   AA-legible over ANY photo, while the card edges keep the photo vivid. */
.ampy-elfirma__body{position:absolute;inset:0;z-index:2;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;
  text-align:center;padding:24px;color:var(--ap-white);
  background:radial-gradient(ellipse 82% 56% at 50% 50%,rgba(9,11,50,.60) 0%,rgba(9,11,50,.30) 52%,transparent 78%);}
.ampy-elfirma__cardtitle{font-size:clamp(20px,15px + 1.1vw,30px);font-weight:700;line-height:1.05;
  letter-spacing:-.022em;color:var(--ap-white);overflow-wrap:break-word;hyphens:auto;
  text-shadow:0 1px 24px rgba(0,0,0,.4);transition:transform 220ms var(--ease-out);}
.ampy-elfirma__card:hover .ampy-elfirma__cardtitle,
.ampy-elfirma__card:focus-visible .ampy-elfirma__cardtitle{transform:translateY(-2px);}

/* CTA pill, sky-blue with black text */
.ampy-elfirma__cta{display:inline-flex;align-items:center;gap:8px;
  padding:15px 32px;border-radius:999px;
  background:var(--ap-blue);color:var(--ap-black);
  font-size:clamp(14px,13px + .3vw,16px);font-weight:700;letter-spacing:.01em;
  box-shadow:var(--shadow-blue);
  transition:background 200ms var(--ease),transform 200ms var(--ease-out),box-shadow 200ms var(--ease);}
.ampy-elfirma__cta svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2.2;
  stroke-linecap:round;stroke-linejoin:round;transition:transform 200ms var(--ease-out);}
.ampy-elfirma__card:hover .ampy-elfirma__cta,
.ampy-elfirma__card:focus-visible .ampy-elfirma__cta{
  background:var(--ap-blue-bright);transform:translateY(-2px);
  box-shadow:0 14px 30px -6px rgba(94,177,191,.6);}
.ampy-elfirma__card:hover .ampy-elfirma__cta svg,
.ampy-elfirma__card:focus-visible .ampy-elfirma__cta svg{transform:translateX(3px);}

/* quiet load stagger */
@keyframes ampy-elfirma-rise{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:none;}}
.ampy-elfirma .rise{animation:ampy-elfirma-rise 520ms var(--ease-out) both;}
.ampy-elfirma .d1{animation-delay:.05s;} .ampy-elfirma .d2{animation-delay:.12s;}
.ampy-elfirma .d3{animation-delay:.20s;} .ampy-elfirma .d4{animation-delay:.28s;} .ampy-elfirma .d5{animation-delay:.36s;}

/* ---- responsive: container-based (adapts to the block's column) ---- */
@container (max-width:767px){
  .ampy-elfirma__grid{grid-template-columns:1fr;gap:24px;max-width:440px;margin-inline:auto;}
  .ampy-elfirma__cta{padding:14px 28px;}
}
/* fallback for browsers without container queries (older Safari) */
@supports not (container-type:inline-size){
  @media (max-width:767px){
    .ampy-elfirma__grid{grid-template-columns:1fr;gap:24px;max-width:440px;margin-inline:auto;}
    .ampy-elfirma__cta{padding:14px 28px;}
  }
}

@media (prefers-reduced-motion:reduce){
  .ampy-elfirma *,.ampy-elfirma *::before,.ampy-elfirma *::after{animation:none !important;transition:none !important;}
}
@media (forced-colors:active){ .ampy-elfirma__card:focus-visible{outline:2px solid;outline-offset:2px;} }

/* print: browsers drop backgrounds, so fall back to a plain legible list */
@media print{
  .ampy-elfirma__grid{grid-template-columns:1fr;gap:10px;}
  .ampy-elfirma__card{aspect-ratio:auto;background:#fff;box-shadow:none;border:1px solid #ccc;}
  .ampy-elfirma__card::before{display:none;}
  .ampy-elfirma__media,.ampy-elfirma__overlay{display:none;}
  .ampy-elfirma__body{position:static;background:none;color:#000;align-items:flex-start;padding:12px;}
  .ampy-elfirma__cardtitle{color:#000;text-shadow:none;}
  .ampy-elfirma__cta{color:#000;background:none;box-shadow:none;padding:4px 0;}
}

/* ============================================================================
   LEAD WIDTH LOCK, keep LAST in this file.
   The lead wrapper is a <div> (see header note). The wpautop <p> lives inside it.
   ============================================================================ */
.ampy-elfirma .ampy-elfirma__head .ampy-elfirma__lead{
  max-width:600px !important;
  width:auto !important;
  margin:24px auto 0 !important;
}
/* the wpautop <p> inside the lead: no width or margins of its own, inherit look */
.ampy-elfirma .ampy-elfirma__lead p{
  margin:0;max-width:none;font:inherit;color:inherit;text-align:inherit;
}

/* ============================================================================
   AMPY TESTIMONIALS — produktions-CSS (FluentSnippets / Bricks)
   Version 1 (låst 2026-07-19). ALLA selektorer WRAPPER-SCOPADE under
   .ampy-testimonials så inget läcker ut i temat och inget annat block krockar.
   Komponentreglerna ligger på .ampy-testimonials .att-* (specificitet 0,2,0) så
   de alltid vinner över de defensiva element-resetsen (0,1,1).

   BEROENDEN (finns globalt i Ampys Bricks-tema — importeras EJ här):
   • Outfit (self-hostad i temat)  • html{font-size:62.5%} (1rem=10px)
   • ap*-tokens + --brightgreen/--color-2/--radius/--apmidnight-blue m.fl.
   Blocket gör AVSIKTLIGT inga externa font-requests och sätter aldrig html/body.
   ============================================================================ */

/* Wrapper: tokens + defensiva resets (skyddar mot att temat skriver över) */
.ampy-testimonials {
  --att-fill-a: var(--brightgreen, #1BD365);
  --att-fill-b: #00ad48;
  --att-card-text: clamp(1.7rem, calc(0.21vw + 1.63rem), 1.9rem);
  font-family: 'Outfit', sans-serif;
  font-weight: 300;
  color: var(--apmidnight-blue, #090b32);
  padding: var(--apspace-2xl, 6rem) var(--apspace-m, 2.4rem);
  overflow: hidden;
}
.ampy-testimonials, .ampy-testimonials *, .ampy-testimonials *::before, .ampy-testimonials *::after { box-sizing: border-box; }
.ampy-testimonials button { appearance: none; -webkit-appearance: none; font: inherit; color: inherit; }
.ampy-testimonials figure, .ampy-testimonials blockquote, .ampy-testimonials figcaption { margin: 0; }
.ampy-testimonials__inner { max-width: 1200px; margin: 0 auto; }

/* Rubrik */
.ampy-testimonials .att-head { text-align: center; max-width: 72rem; margin: 0 auto var(--apspace-l, 3.2rem); }
.ampy-testimonials .att-heading {
  margin: 0 0 var(--apspace-2xs, 0.9rem);
  font-size: var(--aptext-2xl, 3.6rem); font-weight: 400;
  letter-spacing: -0.01em; line-height: 1.15;
  color: var(--apmidnight-blue, #090b32);
}
.ampy-testimonials .att-sub { margin: 0; font-size: var(--aptext-m, 1.8rem); font-weight: 300; color: rgba(9, 11, 50, 0.68); }

/* Slider (Splide) */
.ampy-testimonials .att-slider .splide__track { overflow: visible; }
.ampy-testimonials .att-slider { padding-bottom: var(--apspace-2xs, 0.9rem); }
.ampy-testimonials .splide__list { align-items: stretch; }

/* Kort */
.ampy-testimonials .att-card {
  display: flex; flex-direction: column;
  min-height: 360px; height: 100%;
  padding: var(--apspace-m, 2.4rem) var(--apspace-m, 2.4rem) var(--apspace-l, 3.2rem);
  border-radius: var(--radius, 16px);
  background: linear-gradient(-27deg, #0b0f30 0%, #2d516d 60%);
  color: #fff;
  box-shadow: 0 0 16px 0 rgba(190, 190, 190, 0.14);
  position: relative;
}
.ampy-testimonials .att-card__top { display: flex; align-items: center; justify-content: space-between; min-height: 2.4rem; }
.ampy-testimonials .att-card__quote {
  font-size: 5.6rem; line-height: 1; font-weight: 600;
  color: var(--apneon-mint, #55ff9a); opacity: 0.55;
  height: 2.4rem; margin-top: -0.4rem; user-select: none;
}
.ampy-testimonials .att-card__google { width: 22px; height: 22px; flex: 0 0 auto; }
.ampy-testimonials .att-card__body { flex: 1 1 auto; display: flex; align-items: center; padding: var(--apspace-s, 1.6rem) 0; }
.ampy-testimonials .att-card__text { font-size: var(--att-card-text); font-weight: 300; line-height: 1.5; color: rgba(255, 255, 255, 0.95); }
.ampy-testimonials .att-card__foot { flex: 0 0 auto; }
.ampy-testimonials .att-card__name { margin: 0 0 var(--apspace-2xs, 0.9rem); font-size: var(--aptext-ml, 2.2rem); font-weight: 600; }
.ampy-testimonials .att-card__divider { border: 0; border-top: 1px solid rgba(255, 255, 255, 0.14); margin: 0 0 var(--apspace-2xs, 0.9rem); }
.ampy-testimonials .att-card__meta { display: flex; align-items: center; gap: 0.8rem; }
.ampy-testimonials .att-card__stars { display: inline-flex; gap: 0.3rem; }
.ampy-testimonials .att-card__stars svg { width: 15px; height: 15px; fill: var(--apneon-mint, #55ff9a); }
.ampy-testimonials .att-card__date { margin-left: auto; font-size: var(--aptext-xs, 1.2rem); font-weight: 400; color: rgba(255, 255, 255, 0.72); }

/* Navigering: 4 prickar, aktiv fylls grönt (cyklar via index % 4) */
.ampy-testimonials .att-nav { display: flex; justify-content: center; gap: 0.8rem; margin-top: var(--apspace-s, 1.6rem); padding: 0.4rem 0; }
.ampy-testimonials .att-dot {
  width: 2.4rem; height: 0.6rem; border-radius: var(--apradius-full, 999rem);
  background: #c7d3eb; border: none; cursor: pointer; padding: 0; margin: 0;
  position: relative; overflow: visible;
  transition: width .35s ease, background-color .35s ease;
}
/* Osynlig träffyta (mindre nedåt så den ej stjäl klick från badgen) */
.ampy-testimonials .att-dot::before { content: ""; position: absolute; inset: -1.2rem -0.4rem; z-index: 2; }
.ampy-testimonials .att-dot.is-active { width: 4.4rem; background: #cfe9d9; }
.ampy-testimonials .att-dot__fill {
  position: absolute; inset: 0; border-radius: inherit;
  background: linear-gradient(90deg, var(--att-fill-a), var(--att-fill-b));
  transform: scaleX(0); transform-origin: left center; will-change: transform;
}
.ampy-testimonials .att-dot:focus-visible { outline: 2px solid var(--apteal-core, #00a991); outline-offset: 4px; }

/* Google-betyg (enda CTA:n) */
.ampy-testimonials .att-rating { display: flex; justify-content: center; margin-top: var(--apspace-s, 1.6rem); position: relative; z-index: 3; }
.ampy-testimonials .att-badge { display: inline-flex; align-items: center; gap: 1.1rem; min-height: 44px; padding: 0.8rem 1.2rem; text-decoration: none; color: inherit; cursor: pointer; }
.ampy-testimonials .att-badge:hover .att-badge__text { text-decoration: underline; text-underline-offset: 4px; }
.ampy-testimonials .att-badge:focus-visible { outline: 2px solid var(--apteal-core, #00a991); outline-offset: 3px; border-radius: var(--apradius-full, 999rem); }
.ampy-testimonials .att-badge__stars { display: inline-flex; gap: 0.4rem; }
.ampy-testimonials .att-badge__stars svg { width: 18px; height: 18px; fill: #fbbc04; filter: drop-shadow(0 0 .5px rgba(9, 11, 50, 0.55)); }
.ampy-testimonials .att-badge__text { font-size: var(--aptext-m, 1.8rem); font-weight: 300; color: var(--apmidnight-blue, #090b32); white-space: nowrap; }
.ampy-testimonials .att-badge__text strong { font-weight: 600; margin-right: 0.9rem; }

.ampy-testimonials :focus:not(:focus-visible) { outline: none; }

/* Tablet 760–1024: 2-upp */
@media (max-width: 1024px) and (min-width: 760px) {
  .ampy-testimonials { padding: var(--apspace-xl, 4.4rem) var(--apspace-m, 2.4rem); }
  .ampy-testimonials .att-card { min-height: 340px; }
}
/* Kompakt 1-upp ≤759: ingen subline, lättare rubrik, fullbredds-kort */
@media (max-width: 759px) {
  .ampy-testimonials { padding: var(--apspace-xl, 4.4rem) var(--apspace-s, 1.6rem); }
  .ampy-testimonials .att-heading { font-size: clamp(2.3rem, 6.4vw, 2.7rem); font-weight: 400; }
  .ampy-testimonials .att-sub { display: none; }
  .ampy-testimonials .att-head { margin-bottom: 3.2rem; }
  .ampy-testimonials .att-card { min-height: 300px; }
  .ampy-testimonials .att-card__body { padding: var(--apspace-xs, 1.2rem) 0; }
  .ampy-testimonials .att-badge__stars svg { width: 17px; height: 17px; }
  .ampy-testimonials .att-badge__text { font-size: var(--aptext-sm, 1.6rem); }
}
/* Reduced-motion: JS stänger autoplay; prick-tillväxten görs momentan */
@media (prefers-reduced-motion: reduce) {
  .ampy-testimonials .att-dot { transition: none; }
}
/* Print: mörka kort blir oläsbara på vitt → invertera */
@media print {
  .ampy-testimonials .att-card { background: #fff !important; color: #111 !important; box-shadow: none; border: 1px solid #ddd; }
  .ampy-testimonials .att-card__text, .ampy-testimonials .att-card__name { color: #111 !important; }
  .ampy-testimonials .att-card__quote { color: #999 !important; }
  .ampy-testimonials .att-nav, .ampy-testimonials .att-dot { display: none !important; }
}

/* ============================================================================
   1.1 — line-height och padding (2026-07-24)
   Version 1 skrevs mot en naken sida. Inne i temat lacker tva saker in:
     1) body { line-height: 1.7 } arvs ned i allt utan egen line-height
     2) temat satter padding: 56px pa blockquote => radbredden krympte
        328 -> 216 och kortet blastes upp fran 394 till 601
   ============================================================================ */
.ampy-testimonials {
  position: relative;
  z-index: 1;
  isolation: isolate;
  width: 100%;
  line-height: normal;
  letter-spacing: normal;
  word-spacing: normal;
  text-transform: none;
  font-style: normal;
  direction: ltr;
}

.ampy-testimonials figure,
.ampy-testimonials blockquote,
.ampy-testimonials figcaption,
.ampy-testimonials p,
.ampy-testimonials h2,
.ampy-testimonials hr { margin: 0; padding: 0; }

.ampy-testimonials .att-card__text { padding: 0; }
.ampy-testimonials .att-card__divider { height: 0; background: none; }
.ampy-testimonials .att-card__google { max-width: none; }
.ampy-testimonials .splide__list { list-style: none; }
.ampy-testimonials .splide__slide { list-style: none; }

.ampy-testimonials .att-sub,
.ampy-testimonials .att-card__name,
.ampy-testimonials .att-card__foot,
.ampy-testimonials .att-card__meta,
.ampy-testimonials .att-card__date,
.ampy-testimonials .att-badge,
.ampy-testimonials .att-badge__text { line-height: normal; }

/* ============================================================================
   1.2 — figcaption-lackage (2026-07-24)
   Temat stylar figcaption: color #9e9e9e, text-align center, font-size 0.9em.
   Kortets namn, stjarnrad och meta arver figcaption, sa namnen blev graa och
   centrerade i stallet for vita och vansterstallda.
   ============================================================================ */
.ampy-testimonials.ampy-testimonials {
  font-size: 1rem;
  text-align: start;
}

.ampy-testimonials figure,
.ampy-testimonials figcaption,
.ampy-testimonials blockquote {
  color: inherit;
  text-align: inherit;
  font-size: inherit;
  font-style: inherit;
  font-family: inherit;
}

/* Prickarna ar <button>. Temat nollar UA:ns text-align: center. */
.ampy-testimonials .att-dot { text-align: center; }

/* ============================================================================
   1.3 — vardsektionens sidopadding (2026-07-24)
   Bricks-sektionen som hyser code-elementet har horisontell padding. Blocket
   ska ligga i full bredd och satta sin EGEN padding. Utan detta blev kortet
   306.25px i stallet for 348.53px pa mobil.
   Battre fix: satt sektionens horisontella padding till 0 direkt i Bricks.
   ============================================================================ */
.brxe-section:has(> .brxe-code > .ampy-testimonials) {
  padding-left: 0;
  padding-right: 0;
}

/* ============================================================================
   1.4 — betygsstjarnor (2026-07-24)
   Korten binder ACF-faltet 'rating' (numeriskt 0-5, halva stjarnor stods).
   Ointjanad del tonas ned i stallet for att utelamnas, sa stjarnraden
   behaller exakt samma bredd oavsett betyg. Ett femstjarnigt kort renderas
   identiskt med prototypen (ingen gradient skrivs ut alls).
   ============================================================================ */
.ampy-testimonials .att-card__stars {
  --att-star-on:  var(--apneon-mint, #55ff9a);
  --att-star-off: rgba(255, 255, 255, 0.28);
}
.ampy-testimonials .att-badge__stars {
  --att-star-on:  #fbbc04;
  --att-star-off: rgba(9, 11, 50, 0.22);
}
.ampy-testimonials .att-card__stars svg.att-star--off  { fill: var(--att-star-off); }
.ampy-testimonials .att-badge__stars svg.att-star--off { fill: var(--att-star-off); }

/* ==========================================================================
   Ampy global contact form — CSS pane
   Pairs with: ampy-form.js, ampy-form.html
   ========================================================================== */

/* ---------- shared ---------- */
[data-mf="card"]{position:relative;}
[data-mf="photo"]{position:relative;}
[data-mf="photo"] *{color:#fff;}
[data-mf="logo"]{position:absolute;top:2.9rem;left:2.9rem;z-index:5;width:9.1rem;max-width:9.1rem;}
[data-mf="quote"]{
  text-shadow:0 2px 16px rgba(0,0,0,.35);max-width:34ch;
  letter-spacing:-0.005em;   /* PARITY: prototypens sparrning, avgor mobilbrytningen */
  /* PARITY 2026-07-26: balance brot citatet en rad for tidigt.
     Prototypen bryter efter "en", balance bryter efter "levererades". */
  text-wrap:wrap;
  font-size:clamp(2.6rem,2rem + 1.5vw,3.3rem) !important;
  /* theme blockquote adds 56px padding + border; that stole 112px of line
     width and forced a 3-line wrap (measured live) */
  padding:0 !important;margin:0 !important;border:0 !important;background:none !important;
}
[data-mf="card"] [data-mf="stars"] .brxe-icon,[data-mf="card"] [data-mf="stars"] svg,[data-mf="card"] [data-mf="stars"] i{color:#ffc24b !important;filter:drop-shadow(0 1px 2px rgba(0,0,0,.4));}
[data-mf="rating"]{text-decoration:none;}
[data-mf="rating"]:hover span{text-decoration:underline;}
[data-mf="card"] [data-mf="vol"] strong{font-weight:600;}
[data-mf="steps"] svg,[data-mf="steps"] .brxe-icon,[data-mf="steps"] i{color:#fff;filter:drop-shadow(0 1px 3px rgba(0,0,0,.4));}

/* Card keeps Bricks' own overflow:hidden — that is what rounds the corners
   and contains the panes. The address dropdown escapes it by being a
   position:fixed layer on <body> instead (see .mf-ac-list + JS placeList). */
[data-mf="formpane"]{background:#fff;}

/* submit → Ampy teal gradient + pill (Bricks solid colour cannot hold a gradient) */
[data-mf="formpane"] .brxe-form button[type="submit"],
[data-mf="formpane"] .bricks-button{
  background:linear-gradient(100deg,#009e88 0%,#00b597 52%,#17c6a0 100%) !important;
  border-radius:999px !important;
  box-shadow:0 1rem 2.4rem -.8rem rgba(0,169,145,.45);
  transition:transform .2s cubic-bezier(.2,.6,.2,1),filter .2s;
}
[data-mf="formpane"] .brxe-form button[type="submit"]:hover{filter:brightness(1.06);transform:translateY(-1px);}

/* ---------- address autocomplete ---------- */
.mf-ac-anchor{position:relative;}
.mf-ac-list{
  position:fixed;z-index:99999;display:none;
  background:#fff;border:1px solid rgba(15,18,60,.1);border-radius:8px;
  box-shadow:0 2rem 4rem -1rem rgba(15,18,60,.2);
  overflow:hidden;overflow-y:auto;max-height:26rem;font-family:inherit;
}
.mf-ac-list.show{display:block;}
.mf-ac-opt{
  display:flex;gap:1rem;align-items:center;width:100%;text-align:left;
  padding:1.1rem 1.4rem;font-size:1.5rem;color:#171717;background:none;border:0;
  border-bottom:1px solid rgba(15,18,60,.08);cursor:pointer;font-family:inherit;
}
.mf-ac-opt:last-child{border-bottom:0;}
.mf-ac-opt:hover,.mf-ac-opt.active{background:#f7f7f7;}
.mf-ac-opt mark{background:none;color:#00a991;font-weight:600;}
.mf-ac-opt small{color:#6a6a6a;}
.mf-ac-opt svg{flex:0 0 auto;}
.mf-ac-note{padding:1.2rem 1.4rem;font-size:1.35rem;color:#6a6a6a;}

.mf-ac-busy{
  position:absolute;right:1.2rem;top:50%;width:1.6rem;height:1.6rem;margin-top:-.8rem;
  border:2px solid rgba(0,169,145,.25);border-top-color:#00a991;border-radius:50%;
  display:none;pointer-events:none;
}
.mf-ac-busy.show{display:block;animation:mf-spin .7s linear infinite;}
@keyframes mf-spin{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion:reduce){.mf-ac-busy.show{animation:none;opacity:.6;}}

/* ---------- manual address fields ----------
   Hidden by NAME, so this holds even if the JS never runs. That is the
   safe default: four visible address boxes is worse than none. The JS
   adds .mf-manual-open to the form to reveal them. */
[data-mf="formpane"] form .form-group:has(> input[name="adress_gata"]),
[data-mf="formpane"] form .form-group:has(> input[name="adress_postnr"]),
[data-mf="formpane"] form .form-group:has(> input[name="adress_ort"]){display:none;}

[data-mf="formpane"] form.mf-manual-open .form-group:has(> input[name="adress_gata"]),
[data-mf="formpane"] form.mf-manual-open .form-group:has(> input[name="adress_postnr"]),
[data-mf="formpane"] form.mf-manual-open .form-group:has(> input[name="adress_ort"]){display:block;}

/* attribute-tagged equivalents, set by the JS once it has found the fields */
[data-mf="formpane"] form [data-mf-manual]{display:none;}
[data-mf="formpane"] form.mf-manual-open [data-mf-manual]{display:block;}
[data-mf="formpane"] form [data-mf-hidden]{display:none;}

/* manual-entry toggle */
[data-mf="formpane"] .form-group:has(.mf-ac-anchor){position:relative;}
.mf-ac-manual{
  background:none;border:0;padding:0;margin:0;font:inherit;
  position:absolute;right:0;top:0;
  font-size:1.3rem;color:#545454;text-decoration:underline;cursor:pointer;
}
.mf-ac-manual:hover{color:#4d4d4d;}
.mf-ac-manual:focus-visible{outline:2px solid #00a991;outline-offset:3px;border-radius:3px;}
.mf-manual-hidden{display:none !important;}   /* legacy, unused */

/* ---------- invalid state ----------
   SPECIFICITY, 2026-07-30. The base input rule further down carries
     [data-mf="formpane"] .brxe-form input:not([type="hidden"]):not([type="submit"])
     { border:2px solid transparent !important }
   which scores 4 class-level parts. The previous rule here was
   ".brxe-form input.mf-invalid" at 2 parts, so transparent won and red never
   appeared even though the JS was adding .mf-invalid correctly (verified live:
   the class was on the field, the colour was not).

   Mirroring the same :not() pair takes this to 5 parts, so red wins. The
   :focus variant is at 6 parts, so an invalid field stays red while it has
   focus instead of flipping to the teal focus ring. The width stays at the
   field's existing 2px, so nothing in the layout moves.

   The shake animation lives in the JS pane, injected as #mf-gate-style,
   because @keyframes cannot be an inline style. It is not duplicated here. */
[data-mf="formpane"] .brxe-form input.mf-invalid:not([type="hidden"]):not([type="submit"]),
[data-mf="formpane"] .brxe-form textarea.mf-invalid{
  border-color:#e00000 !important;
}
[data-mf="formpane"] .brxe-form input.mf-invalid:not([type="hidden"]):not([type="submit"]):focus,
[data-mf="formpane"] .brxe-form textarea.mf-invalid:focus{
  border-color:#e00000 !important;
  box-shadow:0 0 0 3px rgba(224,0,0,.25) !important;
}
/* legacy: the class landing on the wrapper rather than the input itself */
.brxe-form .mf-invalid input{border-color:#e00000 !important;}

/* ==========================================================================
   PROTOTYPE PARITY — typography + spacing, exact values from
   source-prototype/css/styles.css. Overrides the ap-* tokens the Bricks
   elements carry, because the tokens resolve to different numbers
   (measured: heading 3.2rem vs proto 2.6 max, field pad 0.5rem vs 1.6,
   photo pad 7.9rem vs 3.6, formpane pad 3.96 vs 4.2/4.8).
   ========================================================================== */

/* photo pane: proto grid — info centered in the 1fr row, steps pinned to
   the auto row at the base. The logo is position:absolute so it stays out
   of the grid flow. Verified live: this is what centers the quote block. */
[data-mf="photo"]{
  padding:3.6rem 2.2rem 7.2rem !important;
  display:grid !important;
  grid-template-rows:1fr auto !important;
  align-items:center !important;
  justify-items:center !important;
  row-gap:0 !important;
}
[data-mf="photo"] > [data-mf="steps"]{align-self:end;width:100%;}
[data-mf="photo"] > .brxe-block{row-gap:1.5rem !important;}
[data-mf="card"] [data-mf="vol"]{font-size:1.5rem !important;font-weight:400 !important;color:rgba(255,255,255,.96) !important;}
[data-mf="card"] [data-mf="vol"] strong{color:#fff !important;}
[data-mf="rating"] span{font-size:1.4rem !important;font-weight:300 !important;line-height:1.5 !important;color:rgba(255,255,255,.96) !important;}
[data-mf="rating"] strong{color:#fff !important;font-weight:600 !important;}
@media (min-width:769px){
  /* proto: grid, three equal 1fr columns, 1.6rem gap */
  [data-mf="steps"]{display:grid !important;grid-template-columns:repeat(3,1fr) !important;gap:1.6rem !important;width:100% !important;}
  [data-mf="steps"] > li{display:flex;flex-direction:column;align-items:center;row-gap:1rem !important;}
}
/* PARITY 2026-07-26: wrap, inte balance. 143px-bredden var redan ratt. */
[data-mf="steps"] span{font-size:1.4rem !important;font-weight:500 !important;line-height:1.35 !important;text-wrap:wrap;}

/* form pane: proto padding clamp pair */
[data-mf="formpane"]{
  padding:clamp(2.8rem,1.6rem + 2.2vw,4.2rem) clamp(2.8rem,1.6rem + 2.4vw,4.8rem) !important;
}

/* heading: proto clamp(2.3,2+0.6vw,2.6), 500, lh 1.35, #4d4d4d.
   The gradient span (Bricks applyTo:text + data-highlight last-1) gets the
   prototype's exact 92deg sweep instead of the site's green tokens. */
[data-mf="formpane"] .brxe-heading{
  font-size:clamp(2.3rem,2rem + 0.6vw,2.6rem) !important;
  font-weight:500 !important;
  line-height:1.35 !important;
  color:#4d4d4d !important;
}
[data-mf="formpane"] .brxe-heading > span{
  background:linear-gradient(92deg,#12b09a 0%,#33c48c 58%,#55d199 100%) !important;
  -webkit-background-clip:text !important;background-clip:text !important;
  -webkit-text-fill-color:transparent !important;
  color:#12b09a !important;   /* fallback if clip unsupported */
}

/* sub: proto 1.6-1.8, weight 200, lh 1.3, #4d4d4d, mb 2.4rem total */
[data-mf="formpane"] > .brxe-text-basic{
  font-size:clamp(1.6rem,1.5rem + 0.3vw,1.8rem) !important;
  font-weight:200 !important;
  line-height:1.3 !important;
  color:#4d4d4d !important;
  margin:1rem auto 2.4rem !important;
  max-width:48rem !important;   /* PARITY: 56rem brot efter "elektriker" */
  text-wrap:wrap;
}

/* labels: proto 1.4rem fixed / 500 / #4d4d4d */
[data-mf="formpane"] .brxe-form label{
  font-size:1.4rem !important;font-weight:500 !important;color:#4d4d4d !important;
  line-height:1.5 !important;margin-bottom:0.8rem !important;
}

/* inputs: proto 1.6rem text, padding 1.6/1.8, radius 8px, bg #f7f7f7 */
[data-mf="formpane"] .brxe-form input:not([type="hidden"]):not([type="submit"]),
[data-mf="formpane"] .brxe-form textarea{
  font-size:1.6rem !important;line-height:1.2 !important;color:#171717 !important;
  padding:1.6rem 1.8rem !important;
  border-radius:0.8rem !important;
  background:#f7f7f7 !important;
  border:2px solid transparent !important;
  transition:border-color .2s cubic-bezier(.2,.6,.2,1);
}
[data-mf="formpane"] .brxe-form input:focus,
[data-mf="formpane"] .brxe-form textarea:focus{
  outline:none !important;border-color:#00a991 !important;
  box-shadow:0 0 0 3px rgba(0,169,145,.30) !important;
}
[data-mf="formpane"] .brxe-form ::placeholder{color:#6a6a6a !important;}
[data-mf="formpane"] .brxe-form textarea{height:7.4rem !important;min-height:0 !important;resize:none !important;}

/* address input: proto pin icon, #f4f4f5 tint, padding-left 4.4rem.
   The :not() pair keeps specificity >= the generic input rule above,
   otherwise its background shorthand wins and erases the icon (verified). */
[data-mf="formpane"] .brxe-form input[name="adress"]:not([type="hidden"]):not([type="submit"]){
  background-color:#f4f4f5 !important;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23999999' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'/><circle cx='12' cy='10' r='3'/></svg>") !important;
  background-repeat:no-repeat !important;
  background-position:1.6rem center !important;
  padding-left:4.4rem !important;
}
[data-mf="formpane"] .brxe-form input[name="adress"]:not([type="hidden"]):not([type="submit"]):focus{
  background-color:#fff !important;
}

/* field rhythm: proto grid row-gap 2rem. The group carries the 2rem; the
   input's own Bricks fieldMargin (10px) is zeroed or every row runs 10px
   taller than the prototype (measured: 94 vs 84). */
[data-mf="formpane"] .brxe-form .form-group{margin-bottom:2rem !important;padding-bottom:0 !important;}
[data-mf="formpane"] .brxe-form .form-group input:not([type="hidden"]),
[data-mf="formpane"] .brxe-form .form-group textarea,
[data-mf="formpane"] .brxe-form .form-group .mf-ac-anchor{margin:0 !important;}
/* last row: proto grid has no trailing gap after the submit row, and the
   wrapper's Bricks margin-top would double the button's own 0.8rem */
[data-mf="formpane"] .brxe-form .form-group:last-child,
[data-mf="formpane"] .brxe-form .submit-button-wrapper{margin-bottom:0 !important;margin-top:0 !important;}
/* half-width rows: proto grid is 1fr 1fr with a 3.2rem column gap (241px) */
@media (min-width:769px){
  [data-mf="formpane"] .brxe-form .form-group:has([name="forenamn"]),
  [data-mf="formpane"] .brxe-form .form-group:has([name="efternamn"]),
  [data-mf="formpane"] .brxe-form .form-group:has([name="email"]),
  [data-mf="formpane"] .brxe-form .form-group:has([name="telefon"]){width:calc(50% - 1.6rem) !important;}
}

/* submit: proto pill, 100%, mt 0.8rem; keep the Ampy gradient block above */
[data-mf="formpane"] .brxe-form button[type="submit"]{
  font-size:1.6rem !important;font-weight:500 !important;
  padding:1.6rem 3.2rem !important;margin-top:0.8rem !important;
  gap:0.8rem !important;
}
/* submit icon: the Bricks font glyph is masked over with the prototype's
   exact 19px stroke-2 arrow, so the native markup stays. Hover slides it
   4px right at the prototype's 200ms curve. */
[data-mf="formpane"] .brxe-form button[type="submit"] i{
  font-size:0 !important;line-height:0 !important;
  width:1.9rem;height:1.9rem;flex:0 0 auto;
  background-color:currentColor;
  -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14'/><path d='m13 6 6 6-6 6'/></svg>") center/contain no-repeat;
  mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14'/><path d='m13 6 6 6-6 6'/></svg>") center/contain no-repeat;
  transition:transform .2s cubic-bezier(.2,.6,.2,1);
}
[data-mf="formpane"] .brxe-form button[type="submit"]:hover i{transform:translateX(4px);}
[data-mf="formpane"] .brxe-form button[type="submit"]:active{transform:translateY(0);}
[data-mf="formpane"] .brxe-form button[type="submit"][disabled]{opacity:.7;cursor:default;transform:none;}

/* consent: proto 1.3rem #6a6a6a, margin 0.4rem top (proto .mf-consent).
   Link is plain until hover (site's .underlinelight underlines it always). */
[data-mf="formpane"] > .brxe-text{font-size:1.3rem !important;color:#6a6a6a !important;margin:2.4rem auto 1.2rem !important;}
[data-mf="formpane"] > .brxe-text a,
[data-mf="formpane"] > .brxe-text .underlinelight,
[data-mf="formpane"] > .brxe-text .underlinelight a{
  color:#6a6a6a !important;text-decoration:none !important;
  border-bottom:0 !important;background-image:none !important;
}
[data-mf="formpane"] > .brxe-text a:hover{text-decoration:underline !important;}

/* card + pane geometry: proto card max-width 122rem, radius 15px, its own
   shadow; panes 1fr 1fr; the pane's Bricks shadow is off (proto has none) */
[data-mf="card"]{width:100% !important;max-width:122rem !important;}
@media (min-width:769px){
  [data-mf="card"]{border-radius:15px !important;box-shadow:0 10px 30px -18px rgba(15,18,60,.12) !important;}
  [data-mf="formpane"]{box-shadow:none !important;}
}
@media (min-width:769px){
  [data-mf="photo"],
  [data-mf="formpane"]{flex:1 1 50% !important;width:50% !important;min-width:0 !important;}
}
[data-mf="formpane"] .brxe-form{width:100%;max-width:100%;}

/* ==========================================================================
   MOBILE — 1:1 with the frozen prototype (breakpoint 768px, as Svea).
   Prototype rules mirrored exactly:
   - section padding 0, card stacks, radius 0, no shadow
   - photo pane: display block, padding 4.4rem 2rem 3.6rem, centered
   - logo hidden (site header carries it), volume proof hidden (owner call)
   - quote clamp(2.4rem, 2rem + 2.4vw, 3rem), max 15ch
   - form pane: margin 0 1.6rem, radius 15px, padding 2.8rem 2rem
   - steps below the form: column w/ 2rem gap in padding 3.2rem 3.4rem 3.6rem,
     3-up centered row between 461 and 768
   ========================================================================== */
@media (max-width:768px){
  /* section shell: prototype .mf-section{padding:0} */
  section:has(> .brxe-container[data-mf="card"]),
  section:has([data-mf="card"]){padding:0 !important;}

  [data-mf="card"]{
    flex-direction:column !important;
    border-radius:0 !important;
    box-shadow:none !important;
    width:100%;max-width:100%;min-width:0;overflow-x:clip;
    background-image:linear-gradient(rgba(6,8,26,.55),rgba(6,8,26,.55)),
                     url("https://ampy.se/wp-content/uploads/form-photo.webp");
    background-size:cover;
    background-position:50% 52%;
    background-repeat:no-repeat;
  }
  [data-mf="card"] > *{min-width:0;}

  /* photo pane: prototype .mf-photo (mobile) */
  [data-mf="photo"]{
    position:static !important;
    display:block !important;
    background-image:none !important;
    overflow:visible;
    border-radius:0 !important;
    padding:4.4rem 2rem 3.6rem !important;
    text-align:center;
  }
  [data-mf="photo"]::before,
  [data-mf="photo"]::after{display:none !important;}

  /* prototype: .mf-photo__logo{display:none} + .mf-photo__vol{display:none} */
  [data-mf="card"] [data-mf="logo"]{display:none !important;}
  [data-mf="card"] [data-mf="vol"]{display:none !important;}

  /* prototype: quote clamp + 15ch, body gap 1.4rem */
  [data-mf="photo"] .brxe-block{row-gap:1.4rem;}
  [data-mf="quote"]{
    font-size:clamp(2.4rem, 2rem + 2.4vw, 3rem) !important;
    max-width:none;
  }

  /* form pane: prototype .mf-form-pane{margin:0 1.6rem;border-radius:15px;padding:2.8rem 2rem} */
  [data-mf="formpane"]{
    width:auto !important;
    max-width:100% !important;
    min-width:0 !important;
    align-self:auto !important;
    box-sizing:border-box;
    margin:0 1.6rem !important;
    padding:2.8rem 2rem !important;
    border-radius:15px !important;
    box-shadow:none;
  }

  /* everything inside the pane stays inside the pane */
  [data-mf="formpane"] > *,
  [data-mf="formpane"] form,
  [data-mf="formpane"] .form-group,
  [data-mf="formpane"] input,
  [data-mf="formpane"] textarea,
  [data-mf="formpane"] select,
  [data-mf="formpane"] button{
    max-width:100%;box-sizing:border-box;min-width:0;
  }
  [data-mf="formpane"] .brxe-form{width:100%;max-width:100%;}
  .mf-ac-anchor{display:block;width:100%;}
  .mf-ac-anchor input{width:100%;}

  /* steps below the form (the JS moves the real element to the card):
     prototype .mf-photo__steps--mobile */
  [data-mf="card"] > [data-mf="steps"]{
    display:flex;flex-direction:column;gap:2rem;
    align-self:stretch;align-items:stretch;
    position:relative;z-index:2;
    width:auto;max-width:100%;
    padding:3.2rem 3.4rem 3.6rem;margin:0;list-style:none;
  }
  [data-mf="card"] > [data-mf="steps"] > li{
    display:flex;flex-direction:row;align-items:center;
    justify-content:flex-start;column-gap:1.4rem;row-gap:0;
    text-align:left;
  }
  [data-mf="card"] > [data-mf="steps"] *{color:#fff;}
  [data-mf="card"] > [data-mf="steps"] span{
    text-align:left;font-size:1.5rem;max-width:none;
  }
  [data-mf="card"] > [data-mf="steps"] svg,
  [data-mf="card"] > [data-mf="steps"] .brxe-icon,
  [data-mf="card"] > [data-mf="steps"] i{
    filter:drop-shadow(0 1px 3px rgba(0,0,0,.4));
    flex:0 0 auto;
  }
  [data-mf="card"] > [data-mf="steps"] .brxe-icon{font-size:20px;line-height:1;}
}

/* prototype: wider phones flip steps to a centered 3-up row */
@media (min-width:461px) and (max-width:768px){
  [data-mf="card"] > [data-mf="steps"]{
    flex-direction:row;justify-content:center;gap:1.2rem;
  }
  [data-mf="card"] > [data-mf="steps"] > li{
    flex:1;flex-direction:column;align-items:center;
    justify-content:flex-start;text-align:center;
    row-gap:1rem;column-gap:0;
  }
  [data-mf="card"] > [data-mf="steps"] span{
    text-align:center;max-width:14ch;
  }
}

/* prototype: single-column form at narrow widths (proto 460, Bricks fields
   flip via settings at 478 — this covers the 461-478 sliver too) */
@media (max-width:478px){
  [data-mf="formpane"] .form-group{width:100% !important;}
}

/* prototype: prefers-reduced-motion kills all card motion */
@media (prefers-reduced-motion:reduce){
  [data-mf="card"] *,[data-mf="card"] *::before,[data-mf="card"] *::after{
    transition-duration:.001ms !important;animation-duration:.001ms !important;
  }
  [data-mf="formpane"] .brxe-form button[type="submit"]:hover{transform:none !important;}
  [data-mf="formpane"] .brxe-form button[type="submit"]:hover i{transform:none !important;}
}

.brxe-form button[type="submit"],
.brxe-form button[type="submit"] *,
[data-mf="formpane"] .brxe-form .bricks-button,
[data-mf="formpane"] .brxe-form .bricks-button * {
    color: #fff !important;
}
.brxe-form button[type="submit"] svg {
    fill: #fff !important;
    stroke: #fff !important;
}

/* Ampy global contact form: kontakt page 1:1 corrections */

/* 1. Font width: labels and button track at normal (were 0.4px / 0.5px) */
[data-mf="formpane"] label  { letter-spacing: normal !important; }
[data-mf="formpane"] button { letter-spacing: normal !important; }

/* 5. Integritetspolicy: 12px, underline on hover only (no persistent bar) */
[data-mf="formpane"] > .brxe-text p                       { font-size: 12px !important; }
[data-mf="formpane"] .underlinelight::after  { display: none !important; }
[data-mf="formpane"] .underlinelight a:hover { text-decoration: underline !important; }

/* Desktop only, so the stacked mobile layout stays untouched */
@media (min-width: 992px) {

  /* 4. Picture zoom: match the prototype full-card crop */
  [data-mf="photo"] {
    background-size: 200% auto !important;
    background-position: 0% 52% !important;
  }

  /* 2 and 3. Trust row: remove the 16px margin and 40px left pad,
     three equal columns, items uncapped (fixes height and icon spread) */
  [data-mf="steps"] {
    margin: 0 !important;
    padding: 0 !important;
    justify-content: normal !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 16px !important;
  }
  [data-mf="steps"] > * { max-width: 143px !important; }
}

/* ---- Mobile (<= 991px) ---- */
@media (max-width: 991px) {
  [data-mf="quote"] {
    line-height: 1.3 !important;
    max-width: 15ch !important;   /* PARITY: prototypen ar 15ch = 288.46px */
  }
}

