/*
Theme Name: Studio Nord
Theme URI: https://studionord.example/theme
Author: Studio Nord
Author URI: https://studionord.example
Description: Studio Nord is a premium editorial portfolio theme for creatives, studios, and agencies. Minimalist, typography-led design with a full-page slider home, project archives, a journal/blog, and WooCommerce-ready shop. Includes a powerful Customizer with theme options, full Gutenberg block support via theme.json, Elementor & page-builder compatibility, ACF integration with PHP fallback, and translation-ready multilingual support (WPML & Polylang compatible).
Version: 1.6.1
Requires at least: 6.0
Tested up to: 6.5
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: studio-nord
Tags: portfolio, blog, e-commerce, editorial, two-columns, custom-colors, custom-logo, custom-menu, featured-images, full-width-template, block-styles, wide-blocks, translation-ready, theme-options, footer-widgets, custom-background, threaded-comments
*/

/* =========================================================
   DESIGN TOKENS
   These are overridden at runtime by the Customizer via an
   inline <style> printed in the head (see inc/customizer).
   ========================================================= */
:root {
  --sn-bg: #f4f2ee;
  --sn-ink: #0e0e0c;
  --sn-ink-soft: #6b6b66;
  --sn-line: #d8d4cc;
  --sn-accent: #2d4a3e;
  --sn-paper: #ffffff;

  --sn-font-display: 'Fraunces', Georgia, 'Times New Roman', serif;
  --sn-font-body: 'DM Sans', system-ui, -apple-system, sans-serif;

  --sn-container: 1680px;
  --sn-gutter: 96px;
  --sn-radius: 0px;
}

/* =========================================================
   RESET / BASE
   ========================================================= */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--sn-bg);
  color: var(--sn-ink);
  font-family: var(--sn-font-body);
  font-weight: 300;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}

/* Grain overlay */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/%3E%3CfeColorMatrix values='0 0 0 0 0.05 0 0 0 0 0.05 0 0 0 0 0.05 0 0 0 0.4 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity: 0.16;
  pointer-events: none;
  z-index: 9999;
  mix-blend-mode: multiply;
}
body.sn-no-grain::before { display: none; }

img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; }

h1, h2, h3, h4, h5, h6 {
  font-family: var(--sn-font-display);
  font-weight: 300;
  letter-spacing: -0.03em;
  line-height: 1;
  margin: 0 0 0.5em;
}
p { margin: 0 0 1.4em; }
em, i { font-style: italic; }

/* Accessibility: skip link + screen-reader text */
.screen-reader-text {
  border: 0; clip: rect(1px,1px,1px,1px);
  clip-path: inset(50%);
  height: 1px; width: 1px;
  margin: -1px; overflow: hidden; padding: 0; position: absolute;
  word-wrap: normal !important;
}
.skip-link {
  position: absolute; left: -9999px; top: 0;
  z-index: 100000;
  background: var(--sn-ink); color: var(--sn-bg);
  padding: 14px 24px; font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase;
}
.skip-link:focus { left: 8px; top: 8px; }

/* =========================================================
   LAYOUT HELPERS
   ========================================================= */
.sn-container { width: 100%; padding-left: var(--sn-gutter); padding-right: var(--sn-gutter); }
.sn-eyebrow {
  font-family: var(--sn-font-body);
  font-size: 11px; letter-spacing: 0.32em; text-transform: uppercase;
  color: var(--sn-ink-soft);
  display: inline-flex; align-items: center; gap: 14px;
}
.sn-eyebrow::before { content: ''; width: 32px; height: 1px; background: currentColor; }

/* =========================================================
   HEADER / TOPBAR
   ========================================================= */
.sn-topbar {
  position: fixed; top: 0; left: 0; right: 0;
  padding: 28px var(--sn-gutter);
  display: flex; justify-content: space-between; align-items: center;
  z-index: 50;
}
.sn-topbar.is-overlay { mix-blend-mode: difference; color: #f4f2ee; }
.sn-topbar.is-solid {
  background: linear-gradient(180deg, var(--sn-bg) 0%, rgba(244,242,238,0.95) 70%, transparent 100%);
  color: var(--sn-ink);
}
.sn-logo {
  font-family: var(--sn-font-display); font-style: italic;
  font-size: 22px; letter-spacing: -0.02em; color: inherit;
}
.sn-logo sup { font-size: 10px; vertical-align: super; margin-left: 2px; font-style: normal; letter-spacing: 0.1em; }
.sn-topbar-right { display: flex; align-items: center; gap: 32px; }

.sn-cart-link { display: flex; align-items: center; gap: 8px; font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; color: inherit; }
.sn-cart-link .count { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 100px; background: var(--sn-accent); color: var(--sn-bg); font-size: 10px; letter-spacing: 0; }

.sn-menu-trigger { display: flex; align-items: center; gap: 14px; background: transparent; border: none; color: inherit; font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; }
.sn-menu-trigger .bars { display: inline-block; width: 24px; height: 10px; position: relative; }
.sn-menu-trigger .bars::before, .sn-menu-trigger .bars::after { content: ''; position: absolute; left: 0; right: 0; height: 1px; background: currentColor; }
.sn-menu-trigger .bars::before { top: 0; }
.sn-menu-trigger .bars::after { bottom: 0; width: 16px; }

/* =========================================================
   FULLSCREEN MENU OVERLAY
   ========================================================= */
.sn-menu-overlay { position: fixed; inset: 0; background: var(--sn-ink); color: var(--sn-bg); z-index: 200; opacity: 0; visibility: hidden; transition: opacity 0.6s, visibility 0.6s; }
.sn-menu-overlay.open { opacity: 1; visibility: visible; }
.sn-menu-overlay::before {
  content: ''; position: absolute; inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.15 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity: 0.4; pointer-events: none;
}
.sn-menu-top { position: absolute; top: 0; left: 0; right: 0; padding: 28px var(--sn-gutter); display: flex; justify-content: space-between; align-items: center; }
.sn-menu-close { background: transparent; border: none; color: inherit; font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; display: flex; align-items: center; gap: 14px; }
.sn-menu-close .x { display: inline-block; width: 24px; height: 24px; position: relative; }
.sn-menu-close .x::before, .sn-menu-close .x::after { content: ''; position: absolute; left: 0; top: 50%; width: 24px; height: 1px; background: currentColor; }
.sn-menu-close .x::before { transform: rotate(45deg); }
.sn-menu-close .x::after { transform: rotate(-45deg); }
.sn-menu-inner { height: 100%; display: grid; grid-template-columns: 1.4fr 1fr; padding: 140px var(--sn-gutter) 80px; gap: 80px; position: relative; }

.sn-menu-main { display: flex; flex-direction: column; gap: 8px; list-style: none; margin: 0; padding: 0; max-height: 100%; overflow-y: auto; -webkit-overflow-scrolling: touch; }
.sn-menu-main li { display: block; }
.sn-menu-row { display: flex; align-items: baseline; gap: 24px; }
.sn-menu-main li .num { font-family: var(--sn-font-body); font-size: 12px; letter-spacing: 0.2em; opacity: 0.5; margin-top: 14px; flex: 0 0 auto; }
.sn-menu-main a {
  font-family: var(--sn-font-display); font-size: clamp(40px, 6vw, 84px);
  font-weight: 300; letter-spacing: -0.03em; line-height: 1; color: inherit;
  opacity: 0; transform: translateY(30px); transition: color 0.3s;
}
.sn-menu-main .menu-item-description, .sn-menu-main em { font-style: italic; color: rgba(244,242,238,0.6); font-size: 0.9em; }
.sn-menu-overlay.open .sn-menu-main > li > .sn-menu-row a { animation: sn-rise 0.8s cubic-bezier(.2,.7,.2,1) forwards; }
.sn-menu-overlay.open .sn-menu-main > li:nth-child(1) > .sn-menu-row a { animation-delay: 0.25s; }
.sn-menu-overlay.open .sn-menu-main > li:nth-child(2) > .sn-menu-row a { animation-delay: 0.32s; }
.sn-menu-overlay.open .sn-menu-main > li:nth-child(3) > .sn-menu-row a { animation-delay: 0.39s; }
.sn-menu-overlay.open .sn-menu-main > li:nth-child(4) > .sn-menu-row a { animation-delay: 0.46s; }
.sn-menu-overlay.open .sn-menu-main > li:nth-child(5) > .sn-menu-row a { animation-delay: 0.53s; }
.sn-menu-overlay.open .sn-menu-main > li:nth-child(6) > .sn-menu-row a { animation-delay: 0.60s; }
.sn-menu-overlay.open .sn-menu-main > li:nth-child(n+7) > .sn-menu-row a { animation-delay: 0.67s; }
.sn-menu-main a:hover { color: #fff; }

/* Submenu toggle (+ / −) */
.sn-submenu-toggle {
  background: transparent; border: 1px solid rgba(244,242,238,0.3); color: inherit;
  width: 38px; height: 38px; border-radius: 50%; flex: 0 0 auto; align-self: center;
  position: relative; cursor: pointer; transition: border-color 0.3s, background 0.3s; padding: 0;
}
.sn-submenu-toggle:hover { border-color: rgba(244,242,238,0.8); }
.sn-submenu-icon, .sn-submenu-icon::before { content: ''; position: absolute; background: currentColor; }
.sn-submenu-icon { left: 50%; top: 50%; width: 14px; height: 1px; transform: translate(-50%, -50%); }
.sn-submenu-icon::before { left: 50%; top: 50%; width: 1px; height: 14px; transform: translate(-50%, -50%); transition: opacity 0.3s, transform 0.3s; }
.menu-item-has-children.sn-submenu-open > .sn-menu-row .sn-submenu-icon::before { opacity: 0; transform: translate(-50%, -50%) rotate(90deg); }
.menu-item-has-children.sn-submenu-open > .sn-menu-row .sn-submenu-toggle { background: rgba(244,242,238,0.1); }

/* Nested submenu list */
.sn-submenu {
  list-style: none; margin: 6px 0 18px; padding: 14px 0 4px 56px;
  border-left: 1px solid rgba(244,242,238,0.15); margin-left: 12px;
  max-height: 0; overflow: hidden; opacity: 0;
  transition: max-height 0.5s cubic-bezier(.2,.7,.2,1), opacity 0.4s, padding 0.4s, margin 0.4s;
}
.menu-item-has-children.sn-submenu-open > .sn-submenu { max-height: 1200px; opacity: 1; }
.sn-submenu li { display: block; }
.sn-submenu .sn-menu-row { gap: 16px; }
.sn-submenu a {
  font-size: clamp(20px, 2.6vw, 32px); opacity: 1; transform: none;
  animation: none !important; color: rgba(244,242,238,0.75);
}
.sn-submenu a:hover { color: #fff; }
.sn-submenu .sn-submenu { padding-left: 32px; }
.sn-submenu .sn-submenu a { font-size: clamp(17px, 2vw, 22px); }
.sn-submenu .sn-submenu-toggle { width: 30px; height: 30px; }

/* Lock background scroll when the overlay is open */
html.sn-menu-open, body.sn-menu-open { overflow: hidden; touch-action: none; }

.sn-menu-aside { display: flex; flex-direction: column; justify-content: space-between; border-left: 1px solid rgba(244,242,238,0.15); padding-left: 64px; }
.sn-menu-aside .block { margin-bottom: 40px; }
.sn-menu-aside h6 { font-family: var(--sn-font-body); font-size: 10px; letter-spacing: 0.3em; text-transform: uppercase; font-weight: 400; opacity: 0.5; margin-bottom: 14px; }
.sn-menu-aside p, .sn-menu-aside a { font-family: var(--sn-font-display); font-size: 17px; font-weight: 300; line-height: 1.5; color: inherit; }
.sn-menu-lang { display: flex; gap: 16px; }
.sn-menu-lang a { font-size: 13px; opacity: 0.6; }
.sn-menu-lang a.current, .sn-menu-lang a:hover { opacity: 1; }

@keyframes sn-rise { to { opacity: 1; transform: translateY(0); } }

/* =========================================================
   FULL-PAGE SLIDER (front page)
   ========================================================= */
.sn-slider { position: relative; height: 100vh; width: 100%; overflow: hidden; }
.sn-slide { position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity 1.2s cubic-bezier(.4,0,.2,1), visibility 1.2s; }
.sn-slide.active { opacity: 1; visibility: visible; }
.sn-slide-image { position: absolute; inset: 0; background-size: cover; background-position: center; transform: scale(1.05); transition: transform 8s cubic-bezier(.2,.6,.2,1); }
.sn-slide.active .sn-slide-image { transform: scale(1); }
.sn-slide-image::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(14,14,12,0.35) 0%, rgba(14,14,12,0.1) 30%, rgba(14,14,12,0.55) 100%); }
.sn-slide-noimg { background: var(--sn-ink); }
.sn-slide-noimg .sn-slide-content { color: var(--sn-bg); }
.sn-slide-content { position: relative; z-index: 2; height: 100%; display: flex; flex-direction: column; justify-content: center; padding: 0 var(--sn-gutter); max-width: 900px; color: #f4f2ee; }
.sn-slide-content .sn-eyebrow { color: #f4f2ee; margin-bottom: 32px; opacity: 0; transform: translateY(20px); }
.sn-slide.active .sn-slide-content .sn-eyebrow { animation: sn-rise 1s 0.4s cubic-bezier(.2,.7,.2,1) forwards; }
.sn-slide-title { font-size: clamp(64px, 12vw, 200px); line-height: 0.9; letter-spacing: -0.04em; margin-bottom: 32px; opacity: 0; transform: translateY(40px); }
.sn-slide.active .sn-slide-title { animation: sn-rise 1.2s 0.55s cubic-bezier(.2,.7,.2,1) forwards; }
.sn-slide-text { max-width: 460px; font-size: 15px; line-height: 1.7; color: rgba(244,242,238,0.85); margin-bottom: 48px; opacity: 0; transform: translateY(20px); }
.sn-slide.active .sn-slide-text { animation: sn-rise 1s 0.75s cubic-bezier(.2,.7,.2,1) forwards; }
.sn-slide-cta, .sn-cta {
  display: inline-flex; align-items: center; gap: 14px;
  font-size: 12px; letter-spacing: 0.3em; text-transform: uppercase; color: #f4f2ee;
  width: fit-content; padding-bottom: 8px; border-bottom: 1px solid rgba(244,242,238,0.4);
  transition: gap 0.4s, border-color 0.4s;
}
.sn-slide-cta { opacity: 0; transform: translateY(20px); }
.sn-slide.active .sn-slide-cta { animation: sn-rise 1s 0.9s cubic-bezier(.2,.7,.2,1) forwards; }
.sn-slide-cta:hover, .sn-cta:hover { gap: 22px; border-color: rgba(244,242,238,1); }
.sn-arrow { display: inline-block; width: 24px; height: 1px; background: currentColor; position: relative; }
.sn-arrow::after { content: ''; position: absolute; right: 0; top: -3px; width: 8px; height: 8px; border-top: 1px solid currentColor; border-right: 1px solid currentColor; transform: rotate(45deg); transform-origin: top right; }

.sn-slide-nav { position: fixed; right: var(--sn-gutter); top: 50%; transform: translateY(-50%); z-index: 40; display: flex; flex-direction: column; gap: 18px; color: #f4f2ee; mix-blend-mode: difference; }
.sn-slide-nav button { background: transparent; border: none; color: inherit; font-size: 11px; letter-spacing: 0.2em; padding: 4px 0 4px 28px; position: relative; opacity: 0.5; transition: opacity 0.3s; text-align: left; }
.sn-slide-nav button::before { content: ''; position: absolute; left: 0; top: 50%; width: 16px; height: 1px; background: currentColor; transition: width 0.4s cubic-bezier(.2,.7,.2,1); }
.sn-slide-nav button.active { opacity: 1; }
.sn-slide-nav button.active::before { width: 22px; }
.sn-slide-nav button:hover { opacity: 1; }

.sn-slider-counter { position: fixed; bottom: 0; left: 0; right: 0; padding: 28px var(--sn-gutter); display: flex; justify-content: space-between; align-items: center; z-index: 30; color: #f4f2ee; mix-blend-mode: difference; }
.sn-counter { font-family: var(--sn-font-display); font-size: 14px; letter-spacing: 0.08em; display: flex; align-items: center; gap: 10px; }
.sn-counter .current { font-size: 32px; line-height: 1; }
.sn-counter .divider { width: 32px; height: 1px; background: currentColor; opacity: 0.5; }
.sn-counter .total { font-size: 12px; opacity: 0.7; }
.sn-socials { display: flex; gap: 24px; font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; }
.sn-socials a { opacity: 0.7; transition: opacity 0.3s; }
.sn-socials a:hover { opacity: 1; }

/* =========================================================
   CATEGORY / FEATURED SLIDER (in-flow, not fullscreen)
   ========================================================= */
.sn-cat-slider { position: relative; width: 100%; overflow: hidden; }
.sn-cat-slider .sn-slide { position: absolute; inset: 0; }
.sn-cat-slider .sn-slide-content { max-width: 760px; }
.sn-cat-slider-nav { position: absolute; right: var(--sn-gutter); bottom: 40px; z-index: 30; display: flex; gap: 14px; color: #f4f2ee; mix-blend-mode: difference; }
.sn-cat-slider-nav button { background: transparent; border: none; color: inherit; font-family: var(--sn-font-display); font-size: 16px; opacity: 0.5; padding: 4px 2px; position: relative; transition: opacity 0.3s; }
.sn-cat-slider-nav button.active { opacity: 1; }
.sn-cat-slider-nav button.active::after { content: ''; position: absolute; left: 0; right: 0; bottom: -4px; height: 1px; background: currentColor; }
.sn-cat-slider-nav button:hover { opacity: 1; }

/* =========================================================
   PAGE HEADER (interior pages)
   ========================================================= */
.sn-page-header { padding: 200px var(--sn-gutter) 100px; display: grid; grid-template-columns: 1fr 1fr; gap: 96px; align-items: end; }
.sn-page-header .sn-eyebrow { margin-bottom: 40px; }
.sn-page-title { font-size: clamp(64px, 11vw, 180px); line-height: 0.88; letter-spacing: -0.045em; }
.sn-page-title em { color: var(--sn-ink-soft); }
.sn-page-intro p { font-family: var(--sn-font-display); font-size: 19px; line-height: 1.5; max-width: 440px; }

/* =========================================================
   WORKS LIST
   ========================================================= */
.sn-works { padding: 0 var(--sn-gutter) 120px; }
.sn-filters { padding: 0 var(--sn-gutter) 32px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--sn-line); flex-wrap: wrap; gap: 16px; }
.sn-filter-tags { display: flex; gap: 6px; flex-wrap: wrap; }
.sn-filter-tags a, .sn-filter-tags button { background: transparent; border: 1px solid var(--sn-line); color: var(--sn-ink-soft); font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; padding: 10px 18px; border-radius: 100px; transition: all 0.3s; }
.sn-filter-tags a:hover, .sn-filter-tags a.active { background: var(--sn-ink); color: var(--sn-bg); border-color: var(--sn-ink); }
.sn-work-row { display: grid; grid-template-columns: 80px 1fr 1.2fr 1fr 120px; align-items: center; padding: 36px 0; border-bottom: 1px solid var(--sn-line); color: var(--sn-ink); transition: padding 0.5s cubic-bezier(.2,.7,.2,1); }
.sn-work-row:hover { padding-left: 32px; }
.sn-work-row .w-num { font-family: var(--sn-font-display); font-size: 14px; color: var(--sn-ink-soft); }
.sn-work-row .w-title { font-family: var(--sn-font-display); font-size: clamp(28px, 3.4vw, 48px); font-weight: 300; line-height: 1.05; letter-spacing: -0.025em; }
.sn-work-row:hover .w-title { font-style: italic; }
.sn-work-row .w-category { font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--sn-ink-soft); }
.sn-work-row .w-category::before { content: '— '; }
.sn-work-row .w-year { font-family: var(--sn-font-display); font-size: 16px; color: var(--sn-ink-soft); text-align: right; }
.sn-work-row .w-arrow { text-align: right; display: flex; align-items: center; justify-content: flex-end; gap: 10px; color: var(--sn-ink-soft); transition: gap 0.4s, color 0.3s; }
.sn-work-row:hover .w-arrow { gap: 18px; color: var(--sn-ink); }
.sn-work-preview { position: fixed; width: 360px; height: 460px; background-size: cover; background-position: center; pointer-events: none; z-index: 30; opacity: 0; transform: scale(0.92) translate(-50%, -50%); transition: opacity 0.4s, transform 0.6s cubic-bezier(.2,.7,.2,1); box-shadow: 0 30px 80px rgba(14,14,12,0.25); top: 0; left: 0; }
.sn-work-preview.visible { opacity: 1; transform: scale(1) translate(-50%, -50%); }

/* =========================================================
   PORTFOLIO GRID (alt archive)
   ========================================================= */
.sn-grid { padding: 60px var(--sn-gutter) 120px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 48px 32px; }
.sn-grid.masonry { grid-auto-rows: 10px; }
.sn-card { color: var(--sn-ink); display: flex; flex-direction: column; }
.sn-card-img { aspect-ratio: 4/5; overflow: hidden; background: var(--sn-line); margin-bottom: 20px; }
.sn-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s cubic-bezier(.2,.7,.2,1); }
.sn-card:hover .sn-card-img img { transform: scale(1.04); }
.sn-card .meta { font-size: 10px; letter-spacing: 0.3em; text-transform: uppercase; color: var(--sn-ink-soft); margin-bottom: 10px; }
.sn-card h3 { font-size: 26px; }

/* =========================================================
   LECTURES (video recommendations)
   ========================================================= */
.sn-lectures-grid { padding: 40px var(--sn-gutter) 100px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 48px 32px; }
.sn-lecture-card { color: var(--sn-ink); display: flex; flex-direction: column; }
.sn-lecture-thumb { position: relative; aspect-ratio: 16/9; overflow: hidden; background: var(--sn-line); margin-bottom: 18px; }
.sn-lecture-thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s cubic-bezier(.2,.7,.2,1); }
.sn-lecture-card:hover .sn-lecture-thumb img { transform: scale(1.05); }
.sn-lecture-thumb-empty { width: 100%; height: 100%; background: linear-gradient(135deg, var(--sn-line), var(--sn-bg)); }
.sn-play { position: absolute; left: 50%; top: 50%; width: 64px; height: 64px; transform: translate(-50%, -50%); border-radius: 50%; background: rgba(14,14,12,0.55); backdrop-filter: blur(4px); transition: background 0.3s, transform 0.4s cubic-bezier(.2,.7,.2,1); }
.sn-play::after { content: ''; position: absolute; left: 54%; top: 50%; transform: translate(-50%, -50%); border-style: solid; border-width: 9px 0 9px 15px; border-color: transparent transparent transparent #f4f2ee; }
.sn-lecture-card:hover .sn-play { background: var(--sn-accent); transform: translate(-50%, -50%) scale(1.08); }
.sn-lecture-dur { position: absolute; right: 12px; bottom: 12px; background: rgba(14,14,12,0.8); color: #f4f2ee; font-size: 11px; letter-spacing: 0.1em; padding: 4px 10px; }
.sn-lecture-meta { font-size: 10px; letter-spacing: 0.3em; text-transform: uppercase; color: var(--sn-accent); margin-bottom: 10px; min-height: 14px; }
.sn-lecture-card h3 { font-size: 24px; line-height: 1.15; }

/* Responsive 16:9 video embed */
.sn-video-frame { position: relative; width: 100%; aspect-ratio: 16/9; background: var(--sn-ink); overflow: hidden; }
.sn-video-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.sn-lectures-more { padding-top: 60px; border-top: 1px solid var(--sn-line); }

/* =========================================================
   ENCYCLOPEDIA (terms / pojmovi)
   ========================================================= */
.sn-alpha-bar { display: flex; flex-wrap: wrap; gap: 4px; padding: 24px var(--sn-gutter); position: sticky; top: 0; background: var(--sn-bg); z-index: 20; border-bottom: 1px solid var(--sn-line); }
.sn-alpha-letter { font-family: var(--sn-font-display); font-size: 18px; width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; transition: all 0.25s; }
.sn-alpha-letter.has-entries { color: var(--sn-ink); }
.sn-alpha-letter.has-entries:hover, .sn-alpha-letter.active { background: var(--sn-ink); color: var(--sn-bg); }
.sn-alpha-letter.is-empty { color: var(--sn-line); pointer-events: none; }
.sn-encyclopedia { padding: 40px var(--sn-gutter) 100px; }
.sn-alpha-group { padding-top: 48px; scroll-margin-top: 96px; }
.sn-alpha-heading { border-bottom: 1px solid var(--sn-line); margin-bottom: 8px; }
.sn-alpha-heading span { font-family: var(--sn-font-display); font-size: clamp(48px, 6vw, 88px); color: var(--sn-accent); display: inline-block; line-height: 1; padding-bottom: 8px; }
.sn-term-list { list-style: none; margin: 0; padding: 0; }
.sn-term-item a { display: grid; grid-template-columns: 1fr auto; grid-template-areas: "name arabic" "excerpt excerpt"; gap: 2px 24px; padding: 24px 0; border-bottom: 1px solid var(--sn-line); transition: padding 0.4s cubic-bezier(.2,.7,.2,1); }
.sn-term-item a:hover { padding-left: 24px; }
.sn-term-name { grid-area: name; font-family: var(--sn-font-display); font-size: clamp(24px, 3vw, 38px); font-weight: 300; letter-spacing: -0.02em; }
.sn-term-item a:hover .sn-term-name { font-style: italic; }
.sn-term-arabic { grid-area: arabic; font-size: 26px; color: var(--sn-ink-soft); align-self: center; }
.sn-term-excerpt { grid-area: excerpt; font-family: var(--sn-font-body); font-size: 14px; color: var(--sn-ink-soft); max-width: 70ch; }

/* Single term */
.sn-term-arabic-lg { font-size: clamp(40px, 6vw, 72px); color: var(--sn-ink-soft); margin-top: 20px; line-height: 1.4; }
.sn-term-image { width: 100%; height: auto; }
.sn-term-source { font-family: var(--sn-font-body); font-size: 13px; letter-spacing: 0.05em; color: var(--sn-ink-soft); }
.sn-term-nav { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding-top: 48px; padding-bottom: 80px; border-top: 1px solid var(--sn-line); }
.sn-term-nav a { display: flex; flex-direction: column; gap: 4px; }
.sn-term-nav .next { text-align: right; }
.sn-term-nav .index { font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--sn-ink-soft); align-self: center; }
.sn-term-nav .dir { font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--sn-ink-soft); }
.sn-term-nav .ttl { font-family: var(--sn-font-display); font-size: 18px; }

/* =========================================================
   HADITH ENCYCLOPEDIA
   ========================================================= */
.sn-hadith-archive { padding: 40px var(--sn-gutter) 60px; display: grid; grid-template-columns: repeat(2, 1fr); gap: 32px; }
.sn-hadith-card { border: 1px solid var(--sn-line); padding: 36px; display: flex; flex-direction: column; gap: 18px; background: var(--sn-paper); transition: border-color 0.3s; }
.sn-hadith-card:hover { border-color: var(--sn-accent); }
.sn-hadith-top { display: flex; justify-content: space-between; align-items: center; }
.sn-hadith-num { font-family: var(--sn-font-display); font-size: 14px; color: var(--sn-ink-soft); }
.sn-hadith-theme { font-size: 10px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--sn-accent); }
.sn-hadith-arabic { font-size: 24px; line-height: 2; text-align: right; color: var(--sn-ink); margin: 0; }
.sn-hadith-text { margin: 0; padding: 0; border: none; }
.sn-hadith-text a { font-family: var(--sn-font-display); font-size: 20px; line-height: 1.5; font-style: italic; color: var(--sn-ink); }
.sn-hadith-text a:hover { color: var(--sn-accent); }
.sn-hadith-meta { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: auto; padding-top: 12px; border-top: 1px solid var(--sn-line); font-size: 11px; letter-spacing: 0.1em; }
.sn-hadith-narrator { font-family: var(--sn-font-display); font-style: italic; color: var(--sn-ink-soft); }
.sn-hadith-ref { color: var(--sn-ink-soft); }
.sn-hadith-grade { color: var(--sn-accent); text-transform: uppercase; letter-spacing: 0.15em; }

/* Single hadith */
.sn-hadith-body { padding-bottom: 60px; max-width: 820px; }
.sn-hadith-arabic-lg { font-size: clamp(26px, 3.5vw, 40px); line-height: 2.1; text-align: right; margin: 0 0 40px; padding-bottom: 40px; border-bottom: 1px solid var(--sn-line); }
.sn-hadith-text-lg { border: none; margin: 0 0 32px; padding: 0; }
.sn-hadith-text-lg p { font-family: var(--sn-font-display); font-size: clamp(22px, 2.6vw, 30px); line-height: 1.55; }
.sn-hadith-more { padding-top: 40px; border-top: 1px solid var(--sn-line); }
.sn-hadith-theme-group { padding-top: 48px; }
.sn-hadith-theme-title { font-size: clamp(28px, 4vw, 52px); color: var(--sn-accent); border-bottom: 1px solid var(--sn-line); padding-bottom: 16px; }
.sn-hadith-theme-desc { font-family: var(--sn-font-display); font-size: 18px; color: var(--sn-ink-soft); margin-top: 16px; max-width: 60ch; }

/* =========================================================
   SINGLE PROJECT
   ========================================================= */
.sn-project-hero { height: 100vh; position: relative; overflow: hidden; }
.sn-project-hero .img { position: absolute; inset: 0; background-size: cover; background-position: center; }
.sn-project-hero .img::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(14,14,12,0.45) 0%, rgba(14,14,12,0.15) 35%, rgba(14,14,12,0.65) 100%); }
.sn-project-hero .content { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; padding: 0 var(--sn-gutter) 100px; color: #f4f2ee; }
.sn-project-hero .meta { font-size: 11px; letter-spacing: 0.3em; text-transform: uppercase; display: flex; gap: 32px; margin-bottom: 28px; opacity: 0.85; flex-wrap: wrap; }
.sn-project-hero .meta span::before { content: '— '; opacity: 0.5; }
.sn-project-hero h1 { font-size: clamp(48px, 9vw, 140px); line-height: 0.92; letter-spacing: -0.04em; }
.sn-specs { padding: 100px var(--sn-gutter); display: grid; grid-template-columns: repeat(4, 1fr); gap: 64px; border-bottom: 1px solid var(--sn-line); }
.sn-specs h6 { font-family: var(--sn-font-body); font-size: 10px; letter-spacing: 0.3em; text-transform: uppercase; font-weight: 400; color: var(--sn-ink-soft); margin-bottom: 16px; }
.sn-specs .val { font-family: var(--sn-font-display); font-size: 22px; line-height: 1.3; }
.sn-project-body { padding: 100px var(--sn-gutter); display: grid; grid-template-columns: 1fr 2fr; gap: 96px; }
.sn-project-body aside { position: sticky; top: 120px; align-self: start; }
.sn-project-body article { max-width: 640px; }
.sn-project-body article p { font-family: var(--sn-font-display); font-size: 22px; line-height: 1.55; }
.sn-pullquote { margin: 60px 0; padding: 40px 0 40px 32px; border-left: 1px solid var(--sn-accent); }
.sn-pullquote p { font-style: italic; font-size: 28px; line-height: 1.35; }
.sn-gallery { padding: 60px var(--sn-gutter) 100px; }
.sn-gallery-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 24px; }
.sn-gallery figure { overflow: hidden; margin: 0; }
.sn-gallery img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s cubic-bezier(.2,.7,.2,1); }
.sn-gallery figure:hover img { transform: scale(1.03); }

/* =========================================================
   BLOG / STORIES
   ========================================================= */
.sn-masthead { padding: 180px var(--sn-gutter) 60px; text-align: center; border-bottom: 1px solid var(--sn-line); }
.sn-masthead h1 { font-size: clamp(64px, 13vw, 200px); line-height: 0.85; letter-spacing: -0.045em; }
.sn-stories-grid { padding: 80px var(--sn-gutter) 100px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 48px 32px; }
.sn-story { color: var(--sn-ink); display: flex; flex-direction: column; }
.sn-story-img { aspect-ratio: 4/3; overflow: hidden; margin-bottom: 24px; background: var(--sn-line); }
.sn-story-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s cubic-bezier(.2,.7,.2,1); }
.sn-story:hover .sn-story-img img { transform: scale(1.05); }
.sn-story .meta { font-size: 10px; letter-spacing: 0.3em; text-transform: uppercase; color: var(--sn-ink-soft); margin-bottom: 14px; }
.sn-story .meta .cat { color: var(--sn-accent); }
.sn-story h3 { font-size: 26px; line-height: 1.15; margin-bottom: 14px; }

/* Single post content width for readability + Gutenberg alignment */
.sn-entry-content { max-width: 720px; margin: 0 auto; padding: 0 var(--sn-gutter); }
.sn-entry-content > * { margin-left: auto; margin-right: auto; }
.sn-entry-content p, .sn-entry-content ul, .sn-entry-content ol, .sn-entry-content blockquote, .sn-entry-content h2, .sn-entry-content h3 { font-family: var(--sn-font-display); }
.sn-entry-content p { font-size: 20px; line-height: 1.6; }
.sn-entry-content .alignwide { max-width: 1100px; }
.sn-entry-content .alignfull { max-width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
.sn-entry-content img { margin: 2em auto; }

/* =========================================================
   COMMON SECTIONS / NEWSLETTER / FOOTER
   ========================================================= */
.sn-cta-band { background: var(--sn-ink); color: var(--sn-bg); padding: 120px var(--sn-gutter); text-align: center; position: relative; overflow: hidden; }
.sn-cta-band h3 { font-size: clamp(40px, 5vw, 72px); line-height: 1; margin-bottom: 24px; }
.sn-cta-band h3 em { color: rgba(244,242,238,0.6); }
.sn-newsletter-form { max-width: 480px; margin: 40px auto 0; display: flex; border-bottom: 1px solid rgba(244,242,238,0.3); }
.sn-newsletter-form input { flex: 1; background: transparent; border: none; color: var(--sn-bg); font-family: var(--sn-font-display); font-size: 18px; padding: 18px 0; outline: none; }
.sn-newsletter-form input::placeholder { color: rgba(244,242,238,0.4); }
.sn-newsletter-form button { background: transparent; border: none; color: var(--sn-bg); font-size: 11px; letter-spacing: 0.3em; text-transform: uppercase; padding: 0 0 0 24px; transition: padding 0.3s; }
.sn-newsletter-form button:hover { padding-left: 32px; }

.sn-footer { background: var(--sn-ink); color: var(--sn-bg); padding: 100px var(--sn-gutter) 40px; position: relative; }
.sn-footer::before {
  content: ''; position: absolute; inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.12 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity: 0.5; pointer-events: none;
}
.sn-footer-top { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 64px; padding-bottom: 80px; border-bottom: 1px solid rgba(244,242,238,0.15); position: relative; }
.sn-footer-headline { font-size: clamp(40px, 5vw, 64px); line-height: 1; }
.sn-footer-headline em { color: rgba(244,242,238,0.6); }
.sn-footer h6 { font-family: var(--sn-font-body); font-size: 10px; letter-spacing: 0.3em; text-transform: uppercase; font-weight: 400; opacity: 0.5; margin-bottom: 18px; }
.sn-footer a, .sn-footer p { font-family: var(--sn-font-display); font-size: 16px; line-height: 1.7; display: block; color: inherit; }
.sn-footer .widget { margin-bottom: 24px; }
.sn-footer-bot { padding-top: 32px; display: flex; justify-content: space-between; font-family: var(--sn-font-body); font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; opacity: 0.6; position: relative; flex-wrap: wrap; gap: 12px; }

/* =========================================================
   WIDGETS / COMMENTS / PAGINATION (WP core)
   ========================================================= */
.sn-pagination { padding: 60px var(--sn-gutter) 100px; display: flex; justify-content: center; gap: 6px; }
.sn-pagination .page-numbers { font-family: var(--sn-font-display); font-size: 16px; color: var(--sn-ink-soft); padding: 8px 16px; border-radius: 50%; transition: all 0.3s; }
.sn-pagination .page-numbers.current { background: var(--sn-ink); color: var(--sn-bg); }
.sn-pagination .page-numbers:hover:not(.current) { color: var(--sn-ink); }

.sn-comments { max-width: 720px; margin: 0 auto; padding: 80px var(--sn-gutter); }
.sn-comments h3 { font-size: 32px; margin-bottom: 40px; }
.sn-comments .comment-list { list-style: none; margin: 0; padding: 0; }
.sn-comments .comment-body { padding: 24px 0; border-bottom: 1px solid var(--sn-line); }
.sn-comments .comment-author { font-family: var(--sn-font-display); font-size: 18px; }
.sn-comments input[type=text], .sn-comments input[type=email], .sn-comments input[type=url], .sn-comments textarea {
  width: 100%; background: transparent; border: none; border-bottom: 1px solid var(--sn-line);
  font-family: var(--sn-font-display); font-size: 18px; padding: 14px 0; margin-bottom: 24px; outline: none; color: var(--sn-ink);
}
.sn-comments .submit, .sn-btn {
  background: var(--sn-ink); color: var(--sn-bg); border: none; font-size: 11px; letter-spacing: 0.3em;
  text-transform: uppercase; padding: 20px 48px; transition: background 0.3s;
}
.sn-comments .submit:hover, .sn-btn:hover { background: var(--sn-accent); }

/* =========================================================
   BREADCRUMBS
   ========================================================= */
.sn-breadcrumbs { padding: 120px var(--sn-gutter) 0; }
.sn-breadcrumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-family: var(--sn-font-body); font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--sn-ink-soft); }
.sn-breadcrumbs li { display: inline-flex; align-items: center; gap: 10px; }
.sn-breadcrumbs li:not(:last-child)::after { content: '/'; opacity: 0.5; }
.sn-breadcrumbs a { color: var(--sn-ink-soft); transition: color 0.3s; }
.sn-breadcrumbs a:hover { color: var(--sn-ink); }
.sn-breadcrumbs li[aria-current] span { color: var(--sn-ink); }
.sn-breadcrumbs-tight { padding-top: 48px; padding-bottom: 0; }
/* When a page already has a big top-padded header, tighten the crumb spacing. */
.sn-breadcrumbs + .sn-masthead, .sn-breadcrumbs + .sn-page-header { padding-top: 40px; }

/* =========================================================
   PERFORMANCE HELPERS
   ========================================================= */
/* Defer rendering of long off-screen lists until near the viewport.
   contain-intrinsic-size reserves space to avoid scroll jumps. */
.sn-stories-grid > .sn-story,
.sn-lectures-grid > .sn-lecture-card,
.sn-hadith-archive > .sn-hadith-card,
.sn-alpha-group {
  content-visibility: auto;
  contain-intrinsic-size: auto 480px;
}

/* =========================================================
   SCROLL REVEAL
   ========================================================= */
.sn-reveal { opacity: 0; transform: translateY(40px); transition: opacity 0.9s cubic-bezier(.2,.7,.2,1), transform 0.9s cubic-bezier(.2,.7,.2,1); }
.sn-reveal.in { opacity: 1; transform: translateY(0); }

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width: 1024px) {
  :root { --sn-gutter: 48px; }
  .sn-specs { grid-template-columns: 1fr 1fr; }
  .sn-grid, .sn-stories-grid { grid-template-columns: repeat(2, 1fr); }
  .sn-lectures-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
  :root { --sn-gutter: 24px; }
  .sn-topbar, .sn-menu-top { padding: 20px 24px; }
  .sn-page-header { grid-template-columns: 1fr; gap: 40px; padding-top: 140px; }
  .sn-menu-inner { grid-template-columns: 1fr; padding: 96px 24px 32px; gap: 28px; overflow-y: auto; -webkit-overflow-scrolling: touch; align-content: start; }
  .sn-menu-main { gap: 2px; overflow-y: visible; }
  .sn-menu-main a { font-size: clamp(30px, 9vw, 44px); }
  .sn-menu-row { gap: 16px; align-items: center; }
  .sn-menu-main li .num { margin-top: 0; }
  .sn-submenu { padding-left: 40px; margin-left: 8px; }
  .sn-submenu a { font-size: clamp(18px, 5vw, 24px); }
  /* Ensure the close button + toggles are comfortably tappable */
  .sn-menu-close { padding: 8px; }
  .sn-submenu-toggle { width: 42px; height: 42px; }
  .sn-menu-aside { border-left: none; padding-left: 0; border-top: 1px solid rgba(244,242,238,0.15); padding-top: 28px; }
  .sn-specs { grid-template-columns: 1fr 1fr; padding: 60px 24px; gap: 32px; }
  .sn-project-body { grid-template-columns: 1fr; gap: 32px; padding: 60px 24px; }
  .sn-project-body aside { position: static; }
  .sn-gallery-grid { grid-template-columns: 1fr; }
  .sn-gallery figure { grid-column: 1 / -1 !important; aspect-ratio: 4/3 !important; }
  .sn-grid, .sn-stories-grid { grid-template-columns: 1fr; }
  .sn-lectures-grid { grid-template-columns: 1fr; }
  .sn-footer-top { grid-template-columns: 1fr; gap: 40px; padding-bottom: 40px; }
  .sn-work-row { grid-template-columns: 40px 1fr 60px; grid-template-areas: "num title arrow" "num cat year"; gap: 8px 16px; }
  .sn-work-row .w-num { grid-area: num; }
  .sn-work-row .w-title { grid-area: title; font-size: 26px; }
  .sn-work-row .w-category { grid-area: cat; }
  .sn-work-row .w-year { grid-area: year; text-align: left; }
  .sn-work-row .w-arrow { grid-area: arrow; }
  .sn-work-preview { display: none; }
  .sn-slide-nav { right: 24px; }
  .sn-socials { display: none; }
  .sn-hadith-archive { grid-template-columns: 1fr; }
  .sn-hadith-card { padding: 24px; }
  .sn-term-item a { grid-template-columns: 1fr; grid-template-areas: "name" "arabic" "excerpt"; }
  .sn-term-arabic { align-self: start; }
  .sn-term-nav { flex-direction: column; align-items: flex-start; gap: 20px; }
  .sn-term-nav .next { text-align: left; }
  .sn-alpha-letter { width: 34px; height: 34px; font-size: 15px; }
  /* Performance: the full-screen blend-mode grain is costly on mobile GPUs
     and barely visible on small screens — disable it below 768px. */
  body::before { display: none; }
}

/* Gallery span helpers (desktop) */
.sn-g-1 { grid-column: span 8; aspect-ratio: 4/3; }
.sn-g-2 { grid-column: span 4; aspect-ratio: 3/4; align-self: end; }
.sn-g-3 { grid-column: span 5; aspect-ratio: 3/4; }
.sn-g-4 { grid-column: span 7; aspect-ratio: 4/3; }
.sn-g-5 { grid-column: span 12; aspect-ratio: 21/9; }
.sn-g-6 { grid-column: span 6; aspect-ratio: 1/1; }
.sn-g-7 { grid-column: span 6; aspect-ratio: 1/1; }

/* Page-builder safety: let Elementor/Gutenberg full-width templates breathe */
.sn-builder-canvas .sn-topbar { position: absolute; }
.elementor-page .sn-container,
.sn-fullwidth .sn-container { padding-left: 0; padding-right: 0; }
