/* ============================================================
   Visiopipe — jaettu LOMAKELOHKO (px-pohjainen, itsenäinen).
   Käytetään ETUSIVULLA ja YHTEYSTIEDOT-sivulla jotta niiden
   alin lomake on samannäköinen kuin ländäreiden vp-form.
   KAIKKI scopetettu .vpfb-luokan alle → ei riipu vilp-landing
   .css:n 62.5% root-fontista eikä clobberoi Bricks-sivua.
   Mitat px (= vilp-landing rem × 10).
   ============================================================ */
.vpfb {
  --vp-gold: #c18228;
  --vp-gold-deep: #a96f1d;
  --vp-gold-cta: linear-gradient(128deg, #dcab5e 0%, #cd9333 24%, #bd8126 50%, #ac7018 74%, #c98f34 100%);
  --vp-gold-cta-hover: linear-gradient(128deg, #e8bc6c 0%, #d89e3d 24%, #c68a2c 50%, #b67c22 74%, #d59d3c 100%);
  --vp-paper: #ffffff;
  --vp-hair: #e7e7e9;
  --vp-hair-strong: #d9d9dc;
  --vp-ink: #201d19;
  --vp-ink-soft: #6b645b;
  --vp-ink-mute: #8a8278;
  --vp-shadow-sm: 0 1px 2px rgba(32,29,25,.05), 0 2px 8px rgba(32,29,25,.06);
  --vp-shadow: 0 6px 18px -8px rgba(32,29,25,.14), 0 18px 40px -24px rgba(32,29,25,.20);
  --vp-shadow-gold: 0 10px 26px -12px rgba(150,100,26,.42);
  --vp-radius-lg: 20px;
  --vp-maxw: 1180px;
  --vp-ease: cubic-bezier(.2,.7,.2,1);

  font-family: "Poppins", system-ui, -apple-system, "Segoe UI", sans-serif;
  color: var(--vp-ink);
  line-height: 1.6;
}
.vpfb, .vpfb * { box-sizing: border-box; }
.vpfb-section { padding-block: clamp(56px, 8vw, 100px); background: #fbfaf8; border-block: 1px solid var(--vp-hair); }
.vpfb-wrap { width: 100%; max-width: var(--vp-maxw); margin-inline: auto; padding-inline: clamp(20px, 5vw, 50px); }

/* Kaksijakoinen asettelu: teksti + lomake */
.vpfb-contact { display: grid; gap: clamp(30px, 5vw, 56px); align-items: start; }
@media (min-width: 960px) { .vpfb-contact { grid-template-columns: .92fr 1.08fr; } }

.vpfb-h2 { font-weight: 700; letter-spacing: -.02em; line-height: 1.1; font-size: clamp(28px, 4.4vw, 44px); margin: 0; color: var(--vp-ink); }
.vpfb-lead { font-size: clamp(17px, 2.1vw, 20px); color: var(--vp-ink-soft); max-width: 62ch; margin: 18px 0 0; line-height: 1.55; }
.vpfb-eyebrow { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--vp-gold-deep); margin: 0 0 14px; }
.vpfb-eyebrow::before { content: ""; width: 24px; height: 2px; background: var(--vp-gold-cta); border-radius: 2px; }
.vpfb-assure { margin: 24px 0 0; padding: 0; list-style: none; display: grid; gap: 10px; }
.vpfb-assure li { display: flex; gap: 9px; align-items: center; font-size: 14.5px; color: var(--vp-ink-soft); }
.vpfb-assure svg { width: 18px; height: 18px; color: var(--vp-gold-deep); flex: none; }

.vpfb-person { display: flex; align-items: center; gap: 16px; margin-top: 30px; padding: 18px 20px; border: 1px solid var(--vp-hair); border-radius: 16px; background: var(--vp-paper); box-shadow: var(--vp-shadow-sm); }
.vpfb-person img { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; flex: none; }
.vpfb-person b { display: block; font-size: 16px; }
.vpfb-person .role { color: var(--vp-ink-soft); font-size: 13.5px; }
.vpfb-person a { display: inline-flex; align-items: center; gap: 6px; margin-top: 4px; margin-right: 14px; font-weight: 600; font-size: 14.5px; color: var(--vp-gold-deep); text-decoration: none; }
.vpfb-person a:hover { text-decoration: underline; }

/* Lomake */
.vpfb .vp-form {
  background: var(--vp-paper); border: 1px solid var(--vp-hair); border-radius: var(--vp-radius-lg);
  padding: clamp(26px, 4vw, 40px); box-shadow: var(--vp-shadow); margin: 0;
}
.vpfb .vp-form h3 { font-size: 22px; font-weight: 700; letter-spacing: -.01em; margin: 0; color: var(--vp-ink); }
.vpfb .vp-form > p { margin: 8px 0 0; color: var(--vp-ink-soft); font-size: 15px; }
.vpfb .vp-field { margin-top: 20px; }
.vpfb .vp-field label, .vpfb .vp-field--row > div label { display: block; font-weight: 600; font-size: 14.5px; margin-bottom: 7px; }
.vpfb .vp-field label .req, .vpfb .vp-field--row > div label .req { color: var(--vp-gold-deep); }
.vpfb .vp-field input, .vpfb .vp-field textarea, .vpfb .vp-field select,
.vpfb .vp-field--row > div input, .vpfb .vp-field--row > div textarea, .vpfb .vp-field--row > div select {
  width: 100%; font: 400 16px/1.5 "Poppins", sans-serif; color: var(--vp-ink);
  padding: 14px 16px; border: 1px solid var(--vp-hair-strong); border-radius: 12px; background: #fdfcfa;
  transition: border-color .2s ease, box-shadow .2s ease; min-height: 52px;
}
.vpfb .vp-field textarea { min-height: 120px; resize: vertical; }
.vpfb .vp-field input:focus, .vpfb .vp-field textarea:focus, .vpfb .vp-field select:focus,
.vpfb .vp-field--row > div input:focus, .vpfb .vp-field--row > div textarea:focus, .vpfb .vp-field--row > div select:focus {
  outline: none; border-color: var(--vp-gold-deep); box-shadow: 0 0 0 3px rgba(193,130,40,.16); background: #fff;
}
.vpfb .vp-field--row { display: grid; gap: 16px; margin-top: 20px; }
@media (min-width: 540px) { .vpfb .vp-field--row { grid-template-columns: 1fr 1fr; } }
.vpfb .vp-field--row .vp-field, .vpfb .vp-field--row > div { margin-top: 0; }

/* Painike (scopetettu, ei sekoitu Bricks-nappien kanssa) */
.vpfb .vp-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  padding: 18.5px 34px;
  font: 600 17px/1 "Poppins", sans-serif; letter-spacing: .005em; color: #fff;
  border-radius: 999px; border: 1px solid transparent; cursor: pointer; text-decoration: none;
  transition: transform .18s var(--vp-ease), box-shadow .25s var(--vp-ease), background .3s ease;
}
.vpfb .vp-btn svg { width: 19px; height: 19px; flex: none; }
.vpfb .vp-btn--gold { background: var(--vp-gold-cta); box-shadow: var(--vp-shadow-gold); border-color: rgba(140,94,24,.5); }
.vpfb .vp-btn--gold:hover { background: var(--vp-gold-cta-hover); transform: translateY(-2px); box-shadow: 0 14px 30px -12px rgba(150,100,26,.55); }
.vpfb .vp-btn--gold:active { transform: translateY(0); box-shadow: 0 3px 8px rgba(150,100,26,.4); }
.vpfb .vp-btn--block { width: 100%; }
.vpfb .vp-form__submit { margin-top: 24px; }
.vpfb .vp-form__fine { margin: 14px 0 0; font-size: 13px; color: var(--vp-ink-mute); text-align: center; }
.vpfb .vp-form__status { margin-top: 16px; padding: 14px 16px; border-radius: 12px; font-size: 15px; font-weight: 500; display: none; }
.vpfb .vp-form__status.is-ok { display: block; background: #f0f7ee; color: #2f6b34; border: 1px solid #cfe7c9; }
.vpfb .vp-form__status.is-err { display: block; background: #fbefef; color: #a3352f; border: 1px solid #f0d2cf; }
.vpfb .vp-form.is-busy .vp-btn { opacity: .7; pointer-events: none; }

/* ── Keskitetty variantti (etusivu): yksi sarake, valkoinen tausta,
      lomake keskellä kuten laskeutumissivuilla ── */
.vpfb--center.vpfb-section { background: var(--vp-paper); width: 100%; }
.vpfb--center .vpfb-contact { display: flex; flex-direction: column; max-width: 620px; margin-inline: auto; text-align: center; }
.vpfb--center .vpfb-lead { margin-inline: auto; }
.vpfb--center .vpfb-assure { justify-items: start; width: max-content; max-width: 100%; margin-inline: auto; }
.vpfb--center .vp-form { text-align: left; }
@media (min-width: 960px) {
  .vpfb--center .vpfb-contact { grid-template-columns: none; }
}

/* ── Yhteystiedot-hero: SAMA kuin muiden sivujen fr-hero — kuva heron
      taustana ylälaitaan asti, VAALEA (valkoinen) overlay, tumma teksti ── */
.vpfb--hero.vpfb-section { display: block; position: relative; overflow: hidden; background: transparent; border-block: 0; padding-block: clamp(72px, 10vw, 130px); }
.vpfb-hero-bg { position: absolute; inset: 0; z-index: 0; margin: 0 !important; }
.vpfb-hero-bg img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 40%; display: block; }
.vpfb-hero-overlay { position: absolute; inset: 0; background: rgba(255,255,255,.5) radial-gradient(circle closest-side, rgba(255,255,255,0), rgba(255,255,255,.46)); }
.vpfb--hero .vpfb-wrap { position: relative; z-index: 1; }
@media (min-width: 960px) {
  .vpfb--hero .vpfb-contact { grid-template-columns: 1fr 1.05fr; align-items: center; }
  .vpfb--hero .vpfb-aside { align-self: center; }
}

.vpfb--after.vpfb-section { background: #fbfaf8; padding-block: clamp(40px, 6vw, 72px); }
.vpfb--after .vpfb-after-grid { display: grid; gap: clamp(16px, 3vw, 24px); }
@media (min-width: 700px) { .vpfb--after .vpfb-after-grid { grid-template-columns: 1fr 1fr; } }
.vpfb--after .vpfb-person { margin-top: 0; }
.vpfb-company {
  display: flex; flex-direction: column; gap: 3px; justify-content: center;
  padding: 18px 20px; border: 1px solid var(--vp-hair); border-radius: 16px;
  background: var(--vp-paper); box-shadow: var(--vp-shadow-sm);
}
.vpfb-company b { font-size: 16px; }
.vpfb-company .role { color: var(--vp-ink-soft); font-size: 13.5px; margin: 0 0 6px; }
.vpfb-company a { color: var(--vp-gold-deep); text-decoration: none; font-weight: 600; font-size: 14.5px; }
.vpfb-company a:hover { text-decoration: underline; }

/* ── Hintalaskuri (kaupunkisivut) — sama .vpfb-scope kuin muut lomakkeet ── */
.vpfb .vp-pricecalc { max-width: 640px; margin-inline: auto; }
.vpfb .vp-pricecalc__grid { display: grid; gap: 18px; }
@media (min-width: 560px) { .vpfb .vp-pricecalc__grid { grid-template-columns: 1fr 1fr; } }
.vpfb .vp-pricecalc__grid .vp-field { margin-top: 0; }
.vpfb .vp-pricecalc__msg { display: none; margin-top: 20px; padding: 15px 17px; border-radius: 12px; background: #fff7ea; border: 1px solid #f0dcb8; color: #7a5a1c; font-size: 14.5px; line-height: 1.55; }
.vpfb .vp-pricecalc__msg.is-on { display: block; }
.vpfb .vp-pricecalc__contact { margin-top: 26px; padding-top: 24px; border-top: 1px solid var(--vp-hair); }
.vpfb .vp-pricecalc__contact .vp-field:first-of-type { margin-top: 0; }
.vpfb .vp-btn--lg { padding: 20px 34px; font-size: 17.5px; }
.vpfb .vp-pricecalc__note { margin: 16px 0 0; font-size: 12.5px; color: var(--vp-ink-mute); text-align: center; line-height: 1.5; }
