:root {
  --theme-font: "DM Sans", sans-serif;
  --site-heading-font: "DM Sans", sans-serif;
}

body,
button,
input,
select,
textarea {
  font-family: var(--theme-font);
  line-height: 1.65;
}

.frontend-site h1,
.frontend-site h2,
.frontend-site h3,
.frontend-site h4,
.frontend-site h5,
.frontend-site h6,
.frontend-site p,
.frontend-site a,
.frontend-site span,
.frontend-site li,
.frontend-site strong,
.frontend-site small,
.frontend-site figcaption,
.frontend-site label,
.frontend-site option,
.frontend-site select,
.frontend-site .form-control::placeholder,
.frontend-site .form-select::placeholder,
.frontend-site input::placeholder,
.frontend-site textarea::placeholder {
  text-transform: none !important;
}

.hero-stack,
.hero-stack h1,
.hero-stack h2,
.hero-stack h3,
.hero-stack h4,
.hero-stack h5,
.hero-stack h6,
.hero-stack p,
.hero-stack a,
.hero-stack button,
.hero-stack .hero-box,
.hero-stack .hero-box * ,
.hero-stack .hero2-sub-title,
.hero-stack .hero-btn,
.hero-stack .hero-arrow,
.contact-hero,
.contact-hero h1,
.contact-hero p,
.contact-hero a,
.contact-hero button,
.camp-list-hero,
.camp-list-hero h1,
.camp-list-hero p,
.camp-list-hero a,
.camp-list-hero button,
.camp-hero-stats,
.camp-hero-stat,
.camp-hero-stat .label,
.camp-hero-stat .value,
.gallery-hero,
.gallery-hero h1,
.gallery-hero h2,
.gallery-hero p,
.gallery-hero a,
.gallery-hero button,
.gallery-hero .hero-box,
.gallery-hero .hero-box *,
.camp-detail-hero,
.camp-detail-hero h1,
.camp-detail-hero p,
.camp-detail-hero a {
  font-family: "Marcellus", serif !important;
}

h1,
h2,
h3,
h4,
h5,
h6,
.sec-title1,
.sec-title2,
.hero-title-one,
.hero-title-two,
.hero-title-three,
.service-title,
.member-name,
.contact-hero h1,
.gallery-hero .sec-title2,
.camp-list-hero h1,
.camp-card-title,
.camp-empty h2,
.camp-detail-hero h1,
.camp-section-block h2,
.camp-form-shell h2 {
  font-family: var(--site-heading-font) !important;
  line-height: 1.15;
}

#galerie .sec_title,
#galerie .modal-title,
.gallery-hero .sec-title2,
#team .section-title .sec-title1,
#team .section-title .sec-title2,
#team .member-name,
#team .member-name a,
.vs-team-style2 .member-name,
.vs-team-style2 .member-name .text-inherit,
.vs-team-style2 .degi {
  font-family: "Marcellus", serif !important;
}

.gallery-static .vs-services-content h5 {
  font-family: var(--site-heading-font) !important;
  font-weight: 700;
}

#galerie .service_title,
#galerie .service_title a {
  font-family: var(--site-heading-font) !important;
}

.site-messages {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 1600;
  display: grid;
  gap: 12px;
  width: min(380px, calc(100vw - 32px));
  pointer-events: none;
}

.site-message {
  position: relative;
  overflow: hidden;
  padding: 16px 18px;
  border-radius: 18px;
  border: 1px solid rgba(48, 67, 44, 0.1);
  background: rgba(255, 255, 255, 0.97);
  box-shadow: 0 22px 44px rgba(31, 45, 30, 0.18);
  color: #243727;
  pointer-events: auto;
  animation: site-toast-enter 0.22s ease;
}

.site-message::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 5px;
  background: #4f7d44;
}

.site-message--success::before {
  background: #2f8f3e;
}

.site-message--error::before,
.site-message--danger::before {
  background: #c43d32;
}

.site-message--warning::before {
  background: #d97706;
}

.site-message--info::before {
  background: #2563eb;
}

.site-message-body {
  font-weight: 700;
  line-height: 1.55;
}

.site-message.is-hiding {
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.18s ease, transform 0.18s ease;
}

@keyframes site-toast-enter {
  from {
    opacity: 0;
    transform: translateY(12px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (max-width: 575px) {
  .site-messages {
    right: 12px;
    bottom: 12px;
    width: calc(100vw - 24px);
  }

  .site-message {
    padding: 16px 18px;
  }
}

/* Keep frontend editorial text exactly as entered in admin. */
.sec-title2,
.hero-title-one,
.feature_title,
.feature_title a,
.feature_text,
.service_title,
.service_title a,
.service_text,
.modal-title,
.text-title2,
.camp-list-featured span,
.camp-hero-stat .label,
.camp-hero-stat .value,
.camp-card-tags span,
.camp-card-route,
.camp-card-title,
.camp-card-title a,
.camp-card-meta span,
.camp-card-text,
.camp-detail-copy h1,
.camp-detail-copy p,
.camp-highlight-box .value,
.camp-meta-list span,
.camp-rich-text,
.camp-session-title,
.camp-session-period-value,
.camp-session-metric-value,
.camp-gallery-card h3,
.camp-gallery-card p,
.camp-staff-card h3,
.gallery-static .vs-services-content h5,
.gallery-static .vs-services-content p,
.vs-team-style2 .member-name,
.vs-team-style2 .member-name .text-inherit,
.vs-team-style2 .member-bio,
.event-detail-stack h1,
.event-detail-stack p,
.event-detail-main h2,
.event-detail-main h3,
.event-detail-main figcaption {
  text-transform: none !important;
}

.gallery-hero .sec-title2,
.feature-layout2 .feature_style2 .feature_title,
.feature-layout2 .feature_style2 .feature_title a,
.feature-layout2 .feature_style2 .feature_text,
.hero-stack-cards .feature_style2 .feature_title,
.hero-stack-cards .feature_style2 .feature_title a,
.hero-stack-cards .feature_style2 .feature_text,
.service_style1 .service_title,
.service_style1 .service_title a,
.service_style1 .service_text {
  text-transform: none !important;
}


/* Preloader (doar homepage, vezi includes/preloader.html): dispare cu fade dupa 1s.
   Animatia e plasa de siguranta: daca JS-ul nu ruleaza, il ascunde oricum dupa 3s. */
.preloader {
  transition: opacity 0.3s ease, visibility 0s linear 0.3s;
  animation: preloader-failsafe 0.3s ease 3s forwards;
}
.preloader.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
@keyframes preloader-failsafe {
  to { opacity: 0; visibility: hidden; pointer-events: none; }
}

/* YouTube "click pentru redare" (includes/youtube_embed.html). Ocupa exact locul
   iframe-ului: containerele video au deja position:relative si raport 16:9. */
.yt-facade {
  position: absolute;
  inset: 0;
  overflow: hidden;
  background: #0d1a10;
  cursor: pointer;
}
.yt-facade__thumb {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease, filter 0.3s ease;
}
.yt-facade:hover .yt-facade__thumb { transform: scale(1.03); filter: brightness(0.9); }
.yt-facade__play {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 0;
  border: 0;
  background: none;
  line-height: 0;
  cursor: pointer;
}
.yt-facade__play-bg { fill: #212121; fill-opacity: 0.82; transition: fill 0.2s ease, fill-opacity 0.2s ease; }
.yt-facade:hover .yt-facade__play-bg,
.yt-facade__play:focus-visible .yt-facade__play-bg { fill: #f00; fill-opacity: 1; }
.yt-facade__play:focus-visible { outline: 3px solid #fff; outline-offset: 4px; border-radius: 14px; }
.yt-facade__note {
  position: absolute;
  left: 12px;
  bottom: 10px;
  padding: 3px 8px;
  border-radius: 6px;
  background: rgba(0, 0, 0, 0.55);
  color: #fff;
  font-size: 12px;
  line-height: 1.4;
  pointer-events: none;
}

/* Section kickers, hero eyebrows and UI titles used to be h4/h5 (36 headings on the
   homepage, flagged by SEO audits); as <p> they keep what the heading tags gave them. */
.hero2-sub-title,
.widget_title,
.cookie-banner__title {
  line-height: 1.15;
}
.widget_title {
  font-weight: 700;
}
@media (max-width: 991px) {
  .sec-title1 {
    font-size: 16px;
  }
}
