/* Website builder elements (rows, columns, full width, backgrounds, images, video, lists, counters,
   carousels, sliders, forms, page header), for every site theme. Generated from the default theme's layout.
   Colours follow the theme's --cms-* tokens (see each theme's site-blocks prelude), else sensible defaults. */
.cms-content-row { position: relative; }
.cms-content-row-full { width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); overflow: hidden; }
.cms-content-row-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 0; z-index: 0; }
.cms-content-row-bg-embed { object-fit: initial; }
.cms-content-row-inner { position: relative; z-index: 1; }
.cms-content-row-full .cms-content-row-inner { max-width: 1120px; margin-left: auto; margin-right: auto; padding-left: 24px; padding-right: 24px; }
.cms-content-row-cols { display: flex; gap: 24px; flex-wrap: wrap; }
.cms-content-row-col { flex: 1; min-width: 0; }
@media (max-width: 720px) {
  .cms-content-row-cols { flex-direction: column; }
  .cms-content-row-col { flex: 1 1 100% !important; }
}
.cms-row-heading { color: var(--cms-ink, var(--ink, #111827)); margin: 0 0 14px; line-height: 1.2; }
h1.cms-row-heading { font-size: clamp(1.8rem, 3.4vw, 2.6rem); }
h2.cms-row-heading { font-size: clamp(1.4rem, 2.6vw, 2rem); }
h3.cms-row-heading { font-size: clamp(1.2rem, 2.1vw, 1.6rem); }
h4.cms-row-heading { font-size: 1.15rem; }
.cms-row-text { color: var(--cms-muted, var(--muted, #6b7280)); margin: 0 0 14px; font-size: 1rem; line-height: 1.6; }
.cms-row-text p { margin: 0 0 12px; }
.cms-row-text p:last-child { margin-bottom: 0; }
.cms-row-text ul, .cms-row-text ol { margin: 0 0 12px; padding-inline-start: 1.4em; }
.cms-row-text a { color: var(--cms-accent, var(--accent, #4f46e5)); }
.cms-row-text strong { color: var(--cms-ink, var(--ink, #111827)); }
.cms-row-img { max-width: 100%; border-radius: 10px; display: block; margin-bottom: 14px; }
.cms-row-video-wrap { position: relative; padding-top: 56.25%; border-radius: 10px; overflow: hidden; margin-bottom: 14px; }
.cms-row-video-wrap iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.cms-row-video { width: 100%; border-radius: 10px; margin-bottom: 14px; display: block; }
.cms-row-btn { display: inline-flex; align-items: center; gap: 8px; padding: 12px 26px; border-radius: 999px; text-decoration: none; font-weight: 600; font-size: .92rem; margin: 4px 8px 4px 0; }
.cms-row-btn-primary { background: var(--cms-accent, var(--accent, #4f46e5)); color: var(--cms-accent-ink, var(--accent-ink, #fff)); }
.cms-row-btn-outline { background: transparent; color: var(--cms-accent, var(--accent, #4f46e5)); border: 1.5px solid var(--cms-accent, var(--accent, #4f46e5)); }
.cms-row-btn-icon { width: 18px; height: 18px; object-fit: contain; flex-shrink: 0; }
.cms-row-btn-icon-right { flex-direction: row-reverse; }
.cms-row-btn-icon-top { flex-direction: column; gap: 4px; }
.cms-row-custom-html { margin-bottom: 14px; }
.cms-row-list { margin: 0 0 14px; padding-inline-start: 0; list-style: none; display: flex; flex-direction: column; gap: 10px; }
.cms-row-list-item { display: flex; align-items: center; gap: 10px; color: var(--cms-muted, var(--muted, #6b7280)); }
.cms-row-list-icon { width: 22px; height: 22px; object-fit: contain; flex-shrink: 0; }
.cms-row-list-image { width: 48px; height: 48px; object-fit: cover; border-radius: 6px; flex-shrink: 0; }
.cms-row-list-link { display: flex; align-items: center; gap: 10px; color: inherit; text-decoration: none; }
.cms-row-list-link:hover { color: var(--cms-accent, var(--accent, #4f46e5)); }
ol.cms-row-list { counter-reset: cms-list; }
ol.cms-row-list > .cms-row-list-item::before { counter-increment: cms-list; content: counter(cms-list) '.'; font-weight: 600; color: var(--cms-ink, var(--ink, #111827)); flex-shrink: 0; }
.cms-el-wrap { box-sizing: border-box; }
.cms-row-map { width: 100%; margin-bottom: 14px; border-radius: 10px; overflow: hidden; }
.cms-row-counter { text-align: center; margin-bottom: 14px; }
.cms-row-counter-icon { width: 40px; height: 40px; object-fit: contain; margin: 0 auto 8px; display: block; }
.cms-row-counter-image { max-width: 100%; max-height: 90px; object-fit: contain; margin: 0 auto 8px; display: block; }
.cms-row-counter-number { font-size: 2.6rem; font-weight: 700; color: var(--cms-accent, var(--accent, #4f46e5)); line-height: 1.1; }
.cms-row-counter-text { color: var(--cms-muted, var(--muted, #6b7280)); font-size: .95rem; margin-top: 4px; }
.cms-carousel-caption { position: absolute; left: 0; right: 0; bottom: 0; padding: 18px 20px; background: linear-gradient(to top, rgba(0,0,0,.6), transparent); color: #fff; font-weight: 600; z-index: 1; }
.cms-carousel-card { position: absolute; left: 0; right: 0; bottom: 0; padding: 18px 20px; background: linear-gradient(to top, rgba(0,0,0,.72), transparent); color: #fff; z-index: 1; }
.cms-carousel-card h3 { margin: 0 0 6px; font-size: 1.15rem; }
.cms-carousel-card p { margin: 0; font-size: .88rem; color: rgba(255,255,255,.88); max-width: 60ch; }
.cms-row-carousel { border-radius: 14px; }
.cms-page-header { position: relative; min-height: 260px; display: flex; overflow: hidden; }
.cms-page-header-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
.cms-page-header-content { position: relative; z-index: 1; display: flex; width: 100%; padding: 32px 24px; box-sizing: border-box; }
.cms-page-header-content-container { max-width: 1120px; margin-left: auto; margin-right: auto; padding-left: 24px; padding-right: 24px; }
.cms-page-header-heading { color: #fff; font-size: 2rem; margin: 0; max-width: 720px; text-shadow: 0 2px 12px rgba(0,0,0,.4); }
.cms-page-header-subtext { color: rgba(255,255,255,.9); font-size: 1.05rem; margin: 10px 0 0; max-width: 640px; text-shadow: 0 2px 10px rgba(0,0,0,.35); }
.cms-form-wrap { max-width: 560px; }
.cms-form-title { margin: 0 0 18px; }
.cms-form-field { margin-bottom: 16px; }
.cms-form-label { display: block; font-size: .85rem; font-weight: 600; color: var(--cms-ink, var(--ink, #111827)); margin-bottom: 6px; }
.cms-form-input { width: 100%; padding: 11px 13px; border-radius: 8px; border: 1px solid var(--cms-line, var(--line, #e5e7eb)); font-size: .92rem; font-family: inherit; box-sizing: border-box; background: var(--cms-surface, var(--surface, #fff)); color: var(--cms-ink, var(--ink, #111827)); }
.cms-form-input:focus { outline: 2px solid var(--cms-accent, var(--accent, #4f46e5)); outline-offset: 1px; }
textarea.cms-form-input { resize: vertical; }
.cms-form-submit { background: var(--cms-accent, var(--accent, #4f46e5)); color: var(--cms-accent-ink, var(--accent-ink, #fff)); border: 0; padding: 12px 28px; border-radius: 999px; font-weight: 600; font-size: .92rem; cursor: pointer; }
.cms-form-submit:hover { opacity: .92; }
.cms-form-success { background: #ecfdf5; border: 1px solid #a7f3d0; color: #065f46; padding: 16px 18px; border-radius: 10px; font-size: .92rem; }
.cms-form-error-banner { background: #fef2f2; border: 1px solid #fecaca; color: #991b1b; padding: 12px 16px; border-radius: 10px; font-size: .88rem; margin-bottom: 16px; }
.cms-form-field-error { color: #dc2626; font-size: .78rem; margin-top: 5px; }
.cms-form-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.cms-slider { position: relative; overflow: hidden; border-radius: 20px; outline: none; }
.cms-slider-full-bleed { width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); border-radius: 0; }
.cms-slider-custom-width { margin-left: auto; margin-right: auto; }
.cms-slider-track { position: relative; width: 100%; height: 100%; }
.cms-slide { position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity .6s ease; }
.cms-slide.is-active { opacity: 1; visibility: visible; }
.cms-slider-slide .cms-slider-track { display: flex; transition: transform .5s ease; }
.cms-slider-slide .cms-slide { position: relative; opacity: 1; visibility: visible; transition: none; flex: 0 0 100%; }
.cms-slide-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 0; pointer-events: none; }
.cms-slide-bg-embed { object-fit: initial; }
.cms-slide-overlay { position: absolute; inset: 0; }
.cms-slide-linkarea { position: absolute; inset: 0; z-index: 1; }
.cms-slide-content { position: relative; z-index: 2; display: flex; width: 100%; height: 100%; padding: 72px 48px; box-sizing: border-box; pointer-events: none; }
.cms-slide-content-container { max-width: 1120px; margin-left: auto; margin-right: auto; padding-left: 24px; padding-right: 24px; }
.cms-slide-inner { pointer-events: auto; }
.cms-slide-inner-narrow { max-width: 32ch; }
.cms-slide-inner-medium { max-width: 640px; }
.cms-slide-inner-wide { max-width: 860px; }
.cms-slide-inner-full { max-width: 100%; }
.cms-slide-row { display: flex; gap: 24px; margin-bottom: 12px; flex-wrap: wrap; }
.cms-slide-row:last-child { margin-bottom: 0; }
.cms-slide-col { min-width: 0; }
.cms-slide-heading { color: #fff; margin: 0 0 18px; line-height: 1.15; text-shadow: 0 2px 12px rgba(0,0,0,.25); max-width: 18ch; }
h1.cms-slide-heading { font-size: clamp(2rem, 4vw, 3.1rem); }
h2.cms-slide-heading { font-size: clamp(1.6rem, 3vw, 2.4rem); }
h3.cms-slide-heading { font-size: clamp(1.3rem, 2.4vw, 1.8rem); }
h4.cms-slide-heading { font-size: clamp(1.1rem, 2vw, 1.4rem); }
.cms-slide-inner-narrow .cms-slide-heading, .cms-slide-inner-full .cms-slide-heading { max-width: none; }
.cms-slide-text { color: rgba(255,255,255,.92); margin: 0 0 16px; font-size: 1.1rem; max-width: 55ch; }
.cms-slide-img { max-width: 100%; border-radius: 10px; margin-bottom: 12px; }
.cms-slide-video-wrap { position: relative; padding-top: 56.25%; border-radius: 10px; overflow: hidden; margin-bottom: 12px; }
.cms-slide-video { width: 100%; border-radius: 10px; margin-bottom: 12px; display: block; }
.cms-slide-btn { display: inline-block; padding: 12px 26px; border-radius: 999px; text-decoration: none; font-weight: 600; font-size: .92rem; margin: 4px 8px 4px 0; position: relative; z-index: 3; }
.cms-slide-btn-primary { background: #fff; color: var(--cms-accent, var(--accent, #4f46e5)); }
.cms-slide-btn-outline { background: transparent; color: #fff; border: 1.5px solid #fff; }
.cms-slider-arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 4; background: rgba(255,255,255,.85); border: none; width: 40px; height: 40px; border-radius: 50%; cursor: pointer; font-size: 1.4rem; line-height: 1; color: var(--cms-ink, var(--ink, #111827)); }
.cms-slider-prev { left: 16px; }
.cms-slider-next { right: 16px; }
.cms-slider-dots { position: absolute; bottom: 16px; left: 0; right: 0; display: flex; justify-content: center; gap: 8px; z-index: 4; }
.cms-slider-dot { width: 9px; height: 9px; border-radius: 50%; border: none; background: rgba(255,255,255,.5); cursor: pointer; padding: 0; }
.cms-slider-dot.is-active { background: #fff; }
@media (max-width: 640px) {
  .cms-slide-row { flex-direction: column; }
  .cms-slide-col { flex: 1 1 auto !important; }
  .cms-slide-content { padding: 36px 24px; }
}
@media (prefers-reduced-motion: reduce) {
  .cms-slide { transition: none; }
}

/* Site themes put page content straight into <main> (no page-width wrapper), so a boxed builder row
   gets the page width itself; a theme section inside a row keeps its own layout. */
:where(main:not(.wrap)) > .cms-content-row:not(.cms-content-row-full) > .cms-content-row-inner,
:where(main:not(.wrap)) > div > .cms-content-row:not(.cms-content-row-full) > .cms-content-row-inner {
  width: min(var(--cms-wrap, 1200px), calc(100% - 2 * var(--gutter, 20px)));
  margin-left: auto; margin-right: auto;
}
:where(main:not(.wrap)) .cms-content-row-full:not(.cms-content-row-stretch) > .cms-content-row-inner {
  width: min(var(--cms-wrap, 1200px), calc(100% - 2 * var(--gutter, 20px)));
  max-width: none; padding-left: 0; padding-right: 0;
}
/* Full width, content too: edge to edge, with a small side gutter */
.cms-content-row-stretch > .cms-content-row-inner { max-width: none !important; width: auto !important; margin: 0 !important; padding-left: var(--gutter, 24px); padding-right: var(--gutter, 24px); }

/* ---- Carousels (image carousel, content carousel): several items per view, horizontal or vertical */
.cms-cr { position: relative; margin-bottom: 14px; --cr-gap: 16px; }
.cms-cr-track { display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - (var(--cr-per) - 1) * var(--cr-gap)) / var(--cr-per)); gap: var(--cr-gap);
  overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; outline: none; }
.cms-cr-track::-webkit-scrollbar { display: none; }
.cms-cr-item { scroll-snap-align: start; min-width: 0; }
.cms-cr-card { position: relative; display: block; height: var(--cr-h); border-radius: 14px; overflow: hidden; background: #e5e7eb; color: inherit; text-decoration: none; }
.cms-cr-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
a.cms-cr-card:hover .cms-cr-img { transform: scale(1.03); }
.cms-cr-img { transition: transform .4s ease; }
.cms-cr--v .cms-cr-track { grid-auto-flow: row; grid-auto-columns: auto; grid-auto-rows: calc((var(--cr-h) - (var(--cr-per) - 1) * var(--cr-gap)) / var(--cr-per));
  height: var(--cr-h); overflow-x: hidden; overflow-y: auto; overscroll-behavior-y: contain; scroll-snap-type: y mandatory; }
.cms-cr--v .cms-cr-card { height: 100%; }
.cms-cr-btn { position: absolute; top: 50%; transform: translateY(-50%); width: 40px; height: 40px; border-radius: 50%; border: 0; cursor: pointer; z-index: 2;
  background: rgba(255,255,255,.92); color: #111; font-size: 24px; line-height: 1; box-shadow: 0 2px 10px rgba(0,0,0,.18); display: grid; place-items: center; }
.cms-cr-prev { left: 10px; } .cms-cr-next { right: 10px; }
.cms-cr--v .cms-cr-btn { left: 50%; top: auto; transform: translateX(-50%); }
.cms-cr--v .cms-cr-prev { top: 8px; } .cms-cr--v .cms-cr-next { bottom: 8px; right: auto; }
.cms-cr-dots { display: flex; justify-content: center; gap: 7px; margin-top: 12px; flex-wrap: wrap; }
.cms-cr-dots button { width: 9px; height: 9px; padding: 0; border-radius: 50%; border: 0; background: rgba(0,0,0,.2); cursor: pointer; }
.cms-cr-dots button.on { background: var(--cms-accent, var(--accent, #4f46e5)); width: 22px; border-radius: 5px; }
@media (max-width: 900px) { .cms-cr:not(.cms-cr--v) { --cr-per: min(var(--cr-per), 2) !important; } }
@media (max-width: 560px) { .cms-cr:not(.cms-cr--v) { --cr-per: 1 !important; } }
