/* WordPress bridge. Blocks can't carry data- attributes or inline styles, so the
   converter turns data-fs-reveal into .fs-reveal and --fs-delay into .fs-delay-N.
   These rules mirror section 8 of fs-design-pack.css exactly. */
.fs-reveal { opacity: 0; transform: translateY(14px);
  transition: opacity var(--fs-slow) var(--fs-ease), transform var(--fs-slow) var(--fs-ease);
  transition-delay: var(--fs-delay, 0ms); will-change: opacity, transform; }
.fs-reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .fs-reveal { opacity: 1; transform: none; } }
/* In the editor everything is visible. */
.editor-styles-wrapper .fs-reveal, .editor-styles-wrapper [data-fs-reveal] { opacity: 1; transform: none; }
/* WordPress wrappers must not add spacing. */
.wp-site-blocks > *, .entry-content > * { margin-block: 0; }
.fs-delay-60 { --fs-delay: 60ms; }
.fs-delay-80 { --fs-delay: 80ms; }
.fs-delay-90 { --fs-delay: 90ms; }
.fs-delay-100 { --fs-delay: 100ms; }
.fs-delay-120 { --fs-delay: 120ms; }
.fs-delay-160 { --fs-delay: 160ms; }
.fs-delay-180 { --fs-delay: 180ms; }
.fs-delay-240 { --fs-delay: 240ms; }
.fs-delay-300 { --fs-delay: 300ms; }
.fs-delay-360 { --fs-delay: 360ms; }
.fs-delay-420 { --fs-delay: 420ms; }

/* Forminator (Q-67, 26-09-2026), dressed as the design pack's fs-form. The form
   is set to design "none"; these rules map its markup onto fs-form__* in
   fs-components.css section 10. */
.fs-form .forminator-ui { margin: 0; }
.fs-form .forminator-custom-form { display: grid; gap: clamp(20px, 2.4vw, 28px); }
.fs-form .forminator-custom-form > .forminator-row + .forminator-row { margin-top: calc(-1 * clamp(4px, 1vw, 10px)); }
.fs-form .forminator-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(20px, 2.4vw, 28px); margin: 0; }
.fs-form .forminator-col-12, .fs-form .forminator-row-last .forminator-col { grid-column: 1 / -1; }
.fs-form .forminator-col { min-width: 0; padding: 0; }
.fs-form .forminator-field { margin: 0; }
.fs-form .forminator-label { display: block; font-size: .9375rem; font-weight: 600; margin-bottom: var(--fs-s2); color: var(--text); }
.fs-form .forminator-required { font-size: 0; }
.fs-form .forminator-required::after { content: "required"; font-family: var(--fs-face-data); font-size: .6875rem;
  font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--stamp); margin-left: var(--fs-s1); vertical-align: .12em; }
.fs-form .forminator-description { display: block; margin: var(--fs-s2) 0 0; font-size: .8125rem; line-height: 1.5; color: var(--dim); }
.fs-form .forminator-input, .fs-form .forminator-textarea {
  width: 100%; font-family: var(--fs-face-body); font-size: 1rem; line-height: 1.5; color: var(--text);
  background: var(--plate); border: var(--fs-hair) solid var(--rule); border-radius: var(--fs-radius);
  padding: var(--fs-s3) var(--fs-s4); box-sizing: border-box;
  transition: border-color var(--fs-fast) var(--fs-ease), box-shadow var(--fs-fast) var(--fs-ease); }
.fs-form .forminator-textarea { resize: vertical; min-height: 7.5em; }
.fs-form .forminator-input:focus, .fs-form .forminator-textarea:focus { outline: none; border-color: var(--accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent); }
.fs-form .forminator-has_error .forminator-input, .fs-form .forminator-has_error .forminator-textarea { border-color: var(--accent); }
.fs-form .forminator-error-message { display: block; margin-top: var(--fs-s2); font-size: .8125rem; color: var(--accent); }
/* the photo/video field */
.fs-form .forminator-multi-upload { border: 0; padding: 0; background: none; }
.fs-form .forminator-multi-upload input[type="file"] { font-size: .875rem; color: var(--dim); max-width: 100%; }
.fs-form .forminator-multi-upload-message p { margin: 0; font-size: .9375rem; }
.fs-form .forminator-uploaded-files { list-style: none; margin: var(--fs-s2) 0 0; padding: 0; font-size: .8125rem; color: var(--dim); }
.fs-form .forminator-uploaded-files li { display: flex; align-items: center; gap: var(--fs-s3); padding: 4px 0; }
.fs-form .forminator-uploaded-file--preview img, .fs-form .forminator-img-preview { width: 40px; height: 40px; object-fit: cover; }
.fs-form .forminator-upload--remove, .fs-form .forminator-uploaded-file--delete { background: none; border: 0; color: var(--accent); cursor: pointer; font: inherit; }
/* submit row, same as .fs-form__submit; the button gets .fs-btn from fs-site.js */
.fs-form .forminator-row-last { margin-top: var(--fs-s3); padding-top: var(--fs-s5); border-top: var(--fs-hair) solid var(--hair); }
.fs-form .forminator-button-submit { border: 0; cursor: pointer; font: inherit; }
.fs-form .forminator-button-submit:not(.fs-btn) { background: var(--accent); color: #fff; padding: 18px 26px; font-weight: 600; }
.fs-form__micro { max-width: 52ch; margin: var(--fs-s4) 0 0; }
.fs-form .forminator-response-message { grid-column: 1 / -1; margin: 0; }
.fs-form .forminator-response-message[aria-hidden="true"] { display: none; }
.fs-form .forminator-response-message.forminator-success { border: 1px solid var(--accent); padding: var(--fs-s5); background: var(--plate); }
.fs-form .forminator-response-message.forminator-error { border: 1px solid var(--accent); padding: var(--fs-s4); color: var(--accent); }
.fs-form .forminator-response-message p { margin: 0 0 .9em; } .fs-form .forminator-response-message > :last-child { margin-bottom: 0; }
.fs-form .forminator-hidden { display: none !important; }
@media (max-width: 759px) { .fs-form .forminator-row { grid-template-columns: minmax(0, 1fr); } }

/* Revision 5: language switcher (functions.php, fs_lang_switcher). */
.fs-header__inner { position: relative; }
.fs-lang { position: relative; margin-left: calc(var(--fs-s4) * -1); flex: none; }
.fs-lang__btn {
  list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--fs-face-data); font-size: .6875rem; letter-spacing: .14em; text-transform: uppercase;
  color: var(--text); border: var(--fs-hair) solid var(--rule); border-radius: var(--fs-radius);
  padding: 10px 12px; min-height: 44px; box-sizing: border-box; transition: border-color var(--fs-fast) var(--fs-ease);
}
.fs-lang__btn::-webkit-details-marker { display: none; }
.fs-lang__btn::after { content: ""; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-2px) rotate(45deg); }
.fs-lang[open] .fs-lang__btn::after { transform: translateY(1px) rotate(-135deg); }
.fs-lang__btn:hover, .fs-lang[open] .fs-lang__btn { border-color: var(--accent); }
.fs-lang__menu {
  position: absolute; right: 0; top: calc(100% + 8px); z-index: 60; min-width: 190px;
  background: var(--ground); border: var(--fs-hair) solid var(--rule); border-radius: var(--fs-radius);
  padding: 6px 0; box-shadow: 0 18px 40px -24px rgba(0,0,0,.9);
}
.fs-lang__item {
  display: flex; gap: 12px; align-items: baseline; padding: 10px 16px; text-decoration: none; color: var(--text);
  font-family: var(--fs-face-data); font-size: .75rem; letter-spacing: .12em;
}
.fs-lang__name { font-family: var(--fs-face-body); letter-spacing: 0; font-size: .875rem; opacity: .75; }
.fs-lang__item:hover { background: rgba(255,255,255,.06); }
.fs-lang__item[aria-current="true"] { color: var(--accent); }
.fs-header__inner > .fs-nav__toggle { margin-left: auto; }
