/* ============================================================
   SwiftFrame NasDom — frontend bundle
   Assembled by hand (same discipline as swiftframe_gugsb):
   self-hosted fonts → compiled Tailwind → per-block CSS.
   Enqueued as the single frontend stylesheet (inc/enqueue.php).
   @import rules must stay at the top of the file.
   ============================================================ */
@import url('fonts.css');
@import url('tailwind.css');
@import url('pdf-embed.css');
@import url('gallery.css');
@import url('lightbox.css');
@import url('cf7.css');

/* ── Mobile menu submenu accordion (header block, menu.js toggles .is-open) ── */
.sf-mm-sub { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .32s cubic-bezier(.4, 0, .2, 1); }
.sf-mm-sub__inner { min-height: 0; overflow: hidden; opacity: 0; transform: translateY(-6px); transition: opacity .25s ease, transform .25s ease; }
.sf-mm-item.is-open .sf-mm-sub { grid-template-rows: 1fr; }
.sf-mm-item.is-open .sf-mm-sub__inner { opacity: 1; transform: none; transition-delay: .08s; }
.sf-mm-caret { transition: transform .3s ease; }
.sf-mm-item.is-open .sf-mm-caret { transform: translateY(-50%) rotate(180deg); }
@media (prefers-reduced-motion: reduce) {
	.sf-mm-sub, .sf-mm-sub__inner, .sf-mm-caret { transition: none; }
}

/* ── Mobile drawer: slides in from the right (menu.js toggles .is-open), items stagger in ── */
#sf-menu {
	transform: translateX(100%); visibility: hidden;
	transition: transform .35s cubic-bezier(.4, 0, .2, 1), visibility 0s linear .35s;
}
#sf-menu.is-open {
	transform: translateX(0); visibility: visible;
	transition: transform .35s cubic-bezier(.4, 0, .2, 1), visibility 0s;
}
#sf-menu nav > * { opacity: 0; transform: translateY(12px); transition: opacity .3s ease, transform .3s ease; }
#sf-menu.is-open nav > * { opacity: 1; transform: none; }
#sf-menu.is-open nav > :nth-child(1) { transition-delay: .18s; }
#sf-menu.is-open nav > :nth-child(2) { transition-delay: .24s; }
#sf-menu.is-open nav > :nth-child(3) { transition-delay: .30s; }
#sf-menu.is-open nav > :nth-child(4) { transition-delay: .36s; }
#sf-menu.is-open nav > :nth-child(n+5) { transition-delay: .42s; }
@media (prefers-reduced-motion: reduce) {
	#sf-menu, #sf-menu.is-open, #sf-menu nav > * { transition: none; }
}

/* ── Product catalog: category rail as a full-screen filter overlay below lg (catalog.js toggles .is-open) ── */
@media (max-width: 1023.98px) {
	.sf-filter {
		position: fixed; inset: 0; z-index: 60; background: #fff; overflow-y: auto;
		padding: 20px 24px 0; display: flex; flex-direction: column;
		transform: translateY(100%); visibility: hidden;
		transition: transform .35s cubic-bezier(.4, 0, .2, 1), visibility 0s linear .35s;
	}
	.sf-filter.is-open { transform: translateY(0); visibility: visible; transition: transform .35s cubic-bezier(.4, 0, .2, 1), visibility 0s; }
	.sf-filter.no-anim, .sf-filter.no-anim.is-open { transition: none; }
	.sf-filter > ul { flex: 1 1 auto; }
}
@media (prefers-reduced-motion: reduce) { .sf-filter { transition: none; } }

/* ── Footer bottom bar: keep the copyright / Powered-by line on one row regardless of how the
   richtext was saved (nested <p>, stripped inline styles, block-level img from the reset) ── */
.nd-copyright, .nd-copyright p, .nd-copyright span { display: inline; }
.nd-copyright img { display: inline-block; width: 14px; height: 14px; vertical-align: -2px; margin-right: 2px; }

/* ── Contact Form 7 + Cloudflare Turnstile: breathing room around the widget ── */
.wpcf7-turnstile, .cf-turnstile { display: block; margin: 8px 0 24px; }

/* ── Post body blocks (nasdom/post-*) inside .sf-post-prose ── */
.sf-post-paragraph p + p { margin-top: 1rem; }
.sf-post-paragraph a { text-decoration: underline; }
.sf-post-paragraph ul, .sf-post-paragraph ol { padding-left: 1.5rem; }
.sf-post-paragraph ul { list-style: disc; }
.sf-post-paragraph ol { list-style: decimal; }
.sf-post-paragraph h2, .sf-post-paragraph h3 { color: var(--sf-color-ink, #263240); font-weight: 600; line-height: 1.3; margin-top: 1.5rem; }
.sf-post-paragraph h2 { font-size: 1.75rem; }
.sf-post-paragraph h3 { font-size: 1.375rem; }
.sf-post-figure img, .sf-post-video video, .sf-post-video iframe { width: 100%; height: auto; border-radius: 0.25rem; display: block; }
.sf-post-video iframe { aspect-ratio: 16 / 9; }
.sf-post-figure figcaption, .sf-post-video figcaption { margin-top: 0.5rem; font-size: 0.875rem; color: color-mix(in srgb, var(--sf-color-navy, #263240) 60%, transparent); }
.sf-post-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
@media (min-width: 768px) { .sf-post-gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.sf-post-gallery__item img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 0.25rem; display: block; background: color-mix(in srgb, var(--sf-color-navy, #263240) 8%, transparent); }
.sf-post-quote { border-left: 3px solid var(--sf-color-navy, #263240); padding: 0.25rem 0 0.25rem 1.25rem; font-size: 1.25rem; line-height: 1.6; font-style: italic; color: var(--sf-color-ink, #263240); }
.sf-post-quote cite { display: block; margin-top: 0.5rem; font-size: 0.875rem; font-style: normal; color: color-mix(in srgb, var(--sf-color-navy, #263240) 60%, transparent); }
