/* ==========================================================================
   Digitalize Hub — main.css  (v2 — lighter, brighter, natural)
   Default = LIGHT (warm paper). Toggle .dh-mode-dark on <html> for dark.
   Ported verbatim from the WordPress theme so the preview matches exactly.
   ========================================================================== */

:root {
  /* Light theme (default) — BRIGHT & CLEAN */
  --bg:          #ffffff;
  --bg-alt:      #f7f5f0;
  --bg-card:     #fbfaf6;
  --text:        #1a1a1f;
  --text-muted:  #6a6a78;
  --border:      #e6e3da;
  --accent:      #d8402a;
  --accent-soft: #fce8e4;
  --amber:       #d9941f;

  --font-heading: Fraunces, Georgia, serif;
  --font-body:    Inter, -apple-system, BlinkMacSystemFont, sans-serif;

  --radius:   16px;
  --radius-sm:11px;
  --maxw:     1180px;
  --ease:     cubic-bezier(0.22, 0.61, 0.36, 1);
  --header-h: 70px;

  /* v3.7.0: Advanced styling variables (controlled by Theme Builder → Advanced tab) */
  --dh-btn-radius: 12px;
  --dh-btn-py:     12px;
  --dh-btn-px:     28px;
  --dh-btn-fs:     15px;
  --dh-shadow:     12px;
  --dh-ls:         -0.015em;
  --dh-h-lh:       1.1;
  --dh-b-lh:       1.65;
  --dh-anim-dur:   400ms;
  --dh-reveal-offset: 60px;
}

/* Dark mode override — applies whether the class is on <html> (early head
   script, prevents FOUC) or on <body> (toggle). */
html.dh-mode-dark,
body.dh-mode-dark {
  --bg:          #15141a;
  --bg-alt:      #1f1d25;
  --bg-card:     #232029;
  --text:        #f2efe7;
  --text-muted:  #9a9588;
  --border:      #322f3a;
  --accent:      #ff4d33;
  --accent-soft: #3a201c;
  --amber:       #f0a93c;
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body.dh-theme {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 17px;
  line-height: var(--dh-b-lh, 1.65);
  letter-spacing: var(--dh-ls, 0);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
  transition: background .4s var(--ease), color .4s var(--ease);
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}
body.dh-rtl { text-align: right; }
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; transition: color .2s var(--ease); }
a:hover { color: var(--accent); }
ul { margin: 0; padding: 0; list-style: none; }
button { font: inherit; cursor: pointer; }
::selection { background: var(--accent); color: #fff; }
::-webkit-scrollbar { width: 11px; }
::-webkit-scrollbar-track { background: var(--bg-alt); }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 6px; border: 2px solid var(--bg-alt); }
::-webkit-scrollbar-thumb:hover { background: var(--accent); }

/* ---------- Layout ---------- */
.dh-container { max-width: var(--maxw); margin: 0 auto; padding: 0 28px; }
.dh-section { padding: 100px 0; border-bottom: 1px solid var(--border); }
.dh-section.dh-alt { background: var(--bg-alt); }

/* ---------- Typography ---------- */
h1, h2, h3, h4 { font-family: var(--font-heading); font-weight: 600; line-height: var(--dh-h-lh, 1.1); letter-spacing: var(--dh-ls, -0.015em); margin: 0; }
.dh-rtl h1, .dh-rtl h2, .dh-rtl h3 { letter-spacing: 0; }
.dh-h2 { font-size: clamp(30px, 4.4vw, 54px); }
.dh-lead { font-size: 19px; line-height: 1.7; color: var(--text-muted); max-width: 56ch; }
.dh-label {
  display: inline-block; font-size: 13px; font-weight: 600;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--accent); margin-bottom: 18px;
}
.dh-rtl .dh-label { letter-spacing: 0; }
.dh-section-head { margin-bottom: 56px; max-width: 640px; }
.dh-section-head .dh-section-sub { margin-top: 14px; font-size: 14px; color: var(--text-muted); }

/* ---------- Buttons ---------- */
.dh-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: var(--dh-btn-py) var(--dh-btn-px); border-radius: var(--dh-btn-radius);
  font-size: var(--dh-btn-fs); font-weight: 500; border: 1px solid transparent;
  transition: all var(--dh-anim-dur, .25s) var(--ease); text-decoration: none; cursor: pointer;
}
.dh-btn-sm { padding: 10px 18px; font-size: 13px; }
.dh-btn-block { width: 100%; }
.dh-btn-primary { background: var(--accent); color: #fff; box-shadow: 0 10px 26px -14px color-mix(in srgb, var(--accent) 70%, transparent); }
.dh-btn-primary:hover { background: transparent; color: var(--accent); border-color: var(--accent); box-shadow: none; }
.dh-btn-ghost { border-color: var(--border); color: var(--text); background: transparent; }
.dh-btn-ghost:hover { border-color: var(--accent); color: var(--accent); }
.dh-btn { will-change: transform; }
.dh-btn:active { transform: scale(.97); }

/* ---------- Header ---------- */
.dh-header {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  background: var(--bg);
  border-bottom: 1px solid var(--border);
  box-shadow: 0 1px 0 0 transparent;
  transition: box-shadow .3s var(--ease), background .3s var(--ease);
}
.dh-header.is-scrolled { box-shadow: 0 4px 20px -8px rgba(0,0,0,0.12); -webkit-backdrop-filter: blur(12px) saturate(1.2); backdrop-filter: blur(12px) saturate(1.2); background: color-mix(in srgb, var(--bg) 85%, transparent); }
.dh-header-inner {
  display: flex; align-items: center; justify-content: space-between;
  height: var(--header-h); padding: 0 28px;
  max-width: var(--maxw); margin: 0 auto;
  gap: 16px;
}
.dh-logo {
  font-family: var(--font-heading); font-size: 21px; font-weight: 600;
  color: var(--text); display: flex; align-items: center; gap: 2px;
}
.dh-accent-dot { color: var(--accent); }
.dh-logo--lg { font-size: 27px; }

.dh-nav ul { display: flex; gap: 30px; }
.dh-nav a { font-size: 14px; font-weight: 500; color: var(--text-muted); position: relative; padding: 6px 0; }
.dh-nav a::after { content: ""; position: absolute; left: 0; bottom: 0; width: 0; height: 2px; background: var(--accent); transition: width .3s var(--ease); }
.dh-nav a:hover { color: var(--text); }
.dh-nav a:hover::after { width: 100%; }
.dh-nav a.is-active { color: var(--text); }
.dh-nav a.is-active::after { width: 100%; }

.dh-actions { display: flex; align-items: center; gap: 10px; }

.dh-icon-btn {
  width: 40px; height: 40px; display: grid; place-items: center;
  border: 1px solid var(--border); border-radius: 10px; background: transparent;
  color: var(--text); transition: all .2s var(--ease);
}
.dh-icon-btn:hover { border-color: var(--accent); color: var(--accent); }
.dh-icon-btn svg { width: 18px; height: 18px; }

/* hide sun in light, moon in dark — toggle button swaps */
.dh-icon-moon { display: none; }
.dh-mode-dark .dh-icon-sun { display: none; }
.dh-mode-dark .dh-icon-moon { display: block; }

.dh-lang-btn {
  border: 1px solid var(--border); background: transparent; color: var(--text);
  padding: 9px 14px; border-radius: 10px; font-size: 13px; font-weight: 600;
  transition: all .2s var(--ease);
}
.dh-lang-btn:hover { border-color: var(--accent); color: var(--accent); }

/* v3.9.6 (P4-I18N) — Language switcher dropdown widget.
   Renders inside .dh-actions. The button reuses .dh-lang-btn styling so
   it visually matches the legacy single-link toggle. The dropdown opens
   via JS (aria-expanded) OR via :focus-within for keyboard users. */
.dh-lang-switcher { position: relative; display: inline-block; }
.dh-lang-switcher-toggle {
  display: inline-flex; align-items: center; gap: 6px;
  border: 1px solid var(--border); background: transparent; color: var(--text);
  padding: 9px 14px; border-radius: 10px; font-size: 13px; font-weight: 600;
  cursor: pointer; transition: all .2s var(--ease); font-family: var(--font-body);
}
.dh-lang-switcher-toggle:hover,
.dh-lang-switcher-toggle:focus-visible,
.dh-lang-switcher-toggle[aria-expanded="true"] {
  border-color: var(--accent); color: var(--accent);
}
.dh-lang-switcher-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.dh-lang-switcher-globe { display: inline-flex; }
.dh-lang-switcher-globe svg { display: block; }
.dh-lang-switcher-menu {
  position: absolute; inset-block-start: calc(100% + 8px); inset-inline-end: 0;
  list-style: none; margin: 0; padding: 6px; min-width: 160px;
  background: var(--bg-card); border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  box-shadow: 0 18px 50px -20px rgba(0,0,0,.18);
  z-index: 50;
  opacity: 0; visibility: hidden; transform: translateY(-4px);
  transition: opacity .15s var(--ease), transform .15s var(--ease), visibility .15s var(--ease);
}
.dh-lang-switcher-menu[hidden] { display: none; }
.dh-lang-switcher-toggle[aria-expanded="true"] + .dh-lang-switcher-menu,
.dh-lang-switcher:focus-within .dh-lang-switcher-menu,
.dh-lang-switcher:hover .dh-lang-switcher-menu {
  opacity: 1; visibility: visible; transform: translateY(0);
}
.dh-lang-switcher-menu li { list-style: none; }
.dh-lang-switcher-menu a {
  display: block; padding: 8px 12px; border-radius: 8px;
  font-size: 13px; font-weight: 600; color: var(--text);
  text-decoration: none; transition: background .15s var(--ease), color .15s var(--ease);
}
.dh-lang-switcher-menu a:hover,
.dh-lang-switcher-menu a:focus-visible,
.dh-lang-switcher-menu a[aria-current="true"] {
  background: var(--accent-soft); color: var(--accent);
}
.dh-lang-switcher-menu a:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.dh-lang-switcher-menu a[aria-current="true"] { font-weight: 700; }
@media (max-width: 768px) {
  .dh-lang-switcher-toggle { padding: 8px 10px; font-size: 12px; }
  .dh-lang-switcher-menu { inset-inline-end: auto; inset-inline-start: 0; min-width: 140px; }
}

.dh-menu-toggle { display: none; flex-direction: column; gap: 5px; background: none; border: 0; padding: 8px; }
.dh-menu-toggle span { width: 22px; height: 2px; background: var(--text); transition: .3s var(--ease); }
.dh-menu-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.dh-menu-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.dh-menu-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ---------- Hero ---------- */
.dh-hero { position: relative; min-height: 88vh; display: flex; align-items: center; padding: calc(var(--header-h) + 60px) 0 80px; overflow: hidden; }
.dh-hero-bg { position: absolute; inset: 0; z-index: 0; }
.dh-hero-img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; opacity: .45; }
.dh-mode-dark .dh-hero-img { opacity: .5; }
.dh-hero-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, color-mix(in srgb, var(--bg) 20%, transparent) 0%, color-mix(in srgb, var(--bg) 60%, transparent) 50%, var(--bg) 95%); }
.dh-hero-inner { position: relative; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 48px; }
.dh-hero-copy { max-width: 620px; flex: 1 1 560px; }

/* hero floating glass stat card — balances the hero layout */
.dh-hero-card {
    flex: 0 0 280px; background: color-mix(in srgb, var(--bg-card) 80%, transparent);
    backdrop-filter: blur(14px) saturate(1.2); -webkit-backdrop-filter: blur(14px) saturate(1.2);
    border: 1px solid var(--border); border-radius: var(--radius);
    padding: 28px 26px; box-shadow: 0 30px 70px -30px rgba(0,0,0,.28);
    display: flex; flex-direction: column; gap: 18px;
}
.dh-hero-card-row { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; padding-bottom: 14px; border-bottom: 1px solid var(--border); }
.dh-hero-card-row:last-of-type { border-bottom: 0; padding-bottom: 0; }
.dh-hero-card-num { font-family: var(--font-heading); font-size: 28px; font-weight: 600; color: var(--accent); line-height: 1; }
.dh-hero-card-lbl { font-size: 13px; color: var(--text-muted); font-weight: 500; text-align: end; }
.dh-hero-card-foot { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--text); margin-top: 4px; }
.dh-mode-dark .dh-hero-card { box-shadow: 0 30px 80px -24px rgba(0,0,0,.65); border-color: color-mix(in srgb, var(--text) 12%, transparent); }
.dh-hero-card-dot { width: 9px; height: 9px; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 0 rgba(34,197,94,.6); animation: dh-pulse-green 2s infinite; }
@keyframes dh-pulse-green { 0% { box-shadow: 0 0 0 0 rgba(34,197,94,.6); } 70% { box-shadow: 0 0 0 10px rgba(34,197,94,0); } 100% { box-shadow: 0 0 0 0 rgba(34,197,94,0); } }
@media (max-width: 960px) { .dh-hero-inner { flex-direction: column; align-items: flex-start; } .dh-hero-card { flex: 0 0 auto; width: 100%; } }

/* hero scroll-down indicator */
.dh-hero-scroll {
    position: absolute; bottom: 26px; left: 50%; transform: translateX(-50%);
    width: 40px; height: 40px; display: grid; place-items: center;
    border: 1px solid var(--border); border-radius: 50%; background: color-mix(in srgb, var(--bg) 60%, transparent);
    color: var(--text-muted); cursor: pointer; z-index: 2;
    animation: dh-bounce 2.4s var(--ease) infinite; transition: color .2s, border-color .2s;
}
.dh-hero-scroll:hover { color: var(--accent); border-color: var(--accent); }
.dh-hero-scroll svg { width: 20px; height: 20px; }
@keyframes dh-bounce { 0%, 100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(8px); } }
@media (max-width: 560px) { .dh-hero-scroll { display: none; } }
.dh-eyebrow { font-size: 13px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent); margin: 0 0 22px; }
.dh-rtl .dh-eyebrow { letter-spacing: 0; }
.dh-hero-title { font-size: clamp(40px, 7.5vw, 92px); max-width: 14ch; line-height: 1.02; }
.dh-hero-title em { font-style: italic; color: var(--accent); font-weight: 500; }
.dh-rtl .dh-hero-title em { font-style: normal; font-weight: 700; }
.dh-hero-sub { font-size: 19px; color: var(--text-muted); max-width: 48ch; margin: 26px 0 34px; line-height: 1.7; }
.dh-hero-actions { display: flex; flex-wrap: wrap; gap: 12px; }

/* ---------- About ---------- */
.dh-about-grid { display: grid; grid-template-columns: 0.9fr 1.1fr; gap: 64px; align-items: start; }
.dh-about-right { padding-top: 8px; }

/* ---------- Stats ---------- */
.dh-stats { background-color: var(--bg-alt); }
.dh-stats-grid { display: grid; grid-template-columns: repeat(var(--dh-stats-cols, 4), 1fr); gap: 32px; }
.dh-stat { text-align: center; }
.dh-stat-value { font-family: var(--font-heading); font-size: clamp(34px, 4vw, 48px); color: var(--accent); font-weight: 600; line-height: 1; will-change: contents; }
.dh-stat-label { margin-top: 10px; font-size: 13px; font-weight: 500; letter-spacing: 0.05em; color: var(--text-muted); }

/* ---------- Services (v2.1.0 — clean grid, all rows open by default) ---------- */
.dh-services-list { margin-top: 0; }
.dh-service-row {
    display: grid;
    grid-template-columns: 0.7fr 2fr;
    gap: 48px;
    padding: 42px 0;
    border-bottom: 1px solid var(--border);
    align-items: start;
}
.dh-service-meta { display: flex; flex-direction: column; gap: 10px; }
.dh-service-num { font-family: var(--font-heading); font-size: 22px; color: var(--accent); display: block; margin-bottom: 4px; transition: transform .3s var(--ease); }
.dh-service-title { font-size: clamp(22px, 2.4vw, 30px); margin: 0; }
.dh-service-desc { color: var(--text-muted); margin: 0; max-width: 60ch; font-size: 15px; line-height: 1.6; }
.dh-features { display: grid; grid-template-columns: repeat(var(--dh-svc-feat-cols, 2), 1fr); gap: 8px; margin: 0; padding: 0; list-style: none; }
.dh-features li { display: flex; align-items: center; gap: 8px; font-size: 14px; padding: 12px 16px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-sm); transition: .25s var(--ease); }
.dh-features li::before { content: "▸"; color: var(--accent); }
.dh-features li:hover { border-color: var(--accent); transform: translateX(3px); }
.dh-rtl .dh-features li:hover { transform: translateX(-3px); }

/* ---------- Work ---------- */
.dh-work-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.dh-case { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; transition: .35s var(--ease); }
.dh-case:hover { transform: translateY(-5px); border-color: var(--accent); box-shadow: 0 18px 50px -20px color-mix(in srgb, var(--accent) 40%, transparent); }
.dh-case-image { position: relative; aspect-ratio: 16/10; overflow: hidden; }
.dh-case-image img { width: 100%; height: 100%; object-fit: cover; transition: .6s var(--ease); }
.dh-case:hover .dh-case-image img { transform: scale(1.06); }
.dh-case-tag { position: absolute; top: 14px; left: 14px; background: var(--accent); color: #fff; font-size: 11px; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; padding: 5px 11px; border-radius: 6px; }
.dh-rtl .dh-case-tag { left: auto; right: 14px; }
.dh-case-body { padding: 28px; }
.dh-case-title { font-size: 22px; margin-bottom: 12px; }
.dh-case-desc { font-size: 15px; color: var(--text-muted); margin: 0 0 22px; line-height: 1.6; }
.dh-case-metrics { display: flex; gap: 28px; border-top: 1px solid var(--border); padding-top: 18px; }
.dh-metric strong { display: block; font-family: var(--font-heading); font-size: 26px; color: var(--accent); }
.dh-metric span { font-size: 12px; color: var(--text-muted); }

/* ---------- Gallery ---------- */
.dh-filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 32px; }
.dh-filter { padding: 8px 18px; border: 1px solid var(--border); border-radius: 999px; background: transparent; color: var(--text-muted); font-size: 13px; font-weight: 500; transition: .25s var(--ease); }
.dh-filter:hover { border-color: var(--accent); color: var(--accent); }
.dh-filter.is-active { background: var(--accent); border-color: var(--accent); color: #fff; }
.dh-gallery-item { position: relative; display: block; border-radius: var(--radius); overflow: hidden; border: 1px solid var(--border); cursor: pointer; }
.dh-gallery-item img { width: 100%; height: auto; transition: .6s var(--ease); }
.dh-gallery-item:hover img { transform: scale(1.07); }
.dh-gallery-cap { position: absolute; left: 14px; bottom: 14px; color: #fff; font-size: 14px; font-family: var(--font-heading); opacity: 0; transform: translateY(6px); transition: .35s var(--ease); z-index: 2; pointer-events: none; }
.dh-gallery-item::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 50%, rgba(20,18,24,.85)); opacity: 0; transition: .35s var(--ease); pointer-events: none; }
.dh-gallery-item:hover::after { opacity: 1; }
.dh-gallery-item:hover .dh-gallery-cap { opacity: 1; transform: translateY(0); }
.dh-gallery-item.is-hidden { display: none; }

/* ---------- Testimonials ---------- */
.dh-testi-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.dh-testi { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 30px; margin: 0; }
.dh-testi-text { font-family: var(--font-heading); font-style: italic; font-size: 18px; line-height: 1.6; margin: 0 0 22px; }
.dh-rtl .dh-testi-text { font-style: normal; }
.dh-testi-author { display: flex; align-items: center; gap: 14px; border-top: 1px solid var(--border); padding-top: 18px; }
.dh-avatar { width: 44px; height: 44px; display: grid; place-items: center; background: var(--accent); color: #fff; border-radius: 10px; font-weight: 600; font-size: 15px; }
.dh-testi-author strong { display: block; font-size: 15px; }
.dh-testi-author small { font-size: 13px; color: var(--text-muted); }

/* ---------- Process ---------- */
.dh-process { background: var(--bg-alt); }
.dh-process-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; position: relative; }
.dh-step-num { font-family: var(--font-heading); font-size: 15px; color: var(--accent); display: block; margin-bottom: 14px; }
.dh-step-title { font-size: 21px; margin-bottom: 10px; }
.dh-step-desc { font-size: 14px; color: var(--text-muted); line-height: 1.6; }

/* ---------- FAQ ---------- */
.dh-faq-grid { display: grid; grid-template-columns: 0.8fr 1.6fr; gap: 64px; align-items: start; }
.dh-faq-side { position: sticky; top: 90px; }
.dh-faq-list { margin-top: 0; }
.dh-faq-help { margin-top: 14px; font-size: 14px; color: var(--text-muted); }
@media (max-width: 960px) { .dh-faq-side { position: static; } }
.dh-faq-item { border-bottom: 1px solid var(--border); }
.dh-faq-q { width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 24px 0; background: none; border: 0; text-align: left; font-family: var(--font-heading); font-size: 19px; font-weight: 500; color: var(--text); }
.dh-rtl .dh-faq-q { text-align: right; }
.dh-faq-q:hover { color: var(--accent); }
.dh-faq-icon { color: var(--accent); font-size: 22px; transition: .3s var(--ease); flex-shrink: 0; }
.dh-faq-item.is-open .dh-faq-icon { transform: rotate(45deg); }
.dh-faq-a { max-height: 0; overflow: hidden; transition: max-height .4s var(--ease), padding .4s var(--ease); }
.dh-faq-item.is-open .dh-faq-a { max-height: 240px; padding-bottom: 22px; }
.dh-faq-a p { margin: 0; color: var(--text-muted); line-height: 1.7; }

/* ---------- Contact ---------- */
.dh-contact-grid { display: grid; grid-template-columns: 0.9fr 1.1fr; gap: 64px; align-items: start; }
.dh-contact-links { margin-top: 32px; display: flex; flex-direction: column; gap: 10px; }
.dh-contact-link { font-family: var(--font-heading); font-size: 20px; border-bottom: 1px solid var(--border); padding-bottom: 12px; }
.dh-contact-link:hover { color: var(--accent); }
.dh-form { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 32px; }
.dh-form-row { margin-bottom: 18px; }
.dh-form-row label { display: block; font-size: 13px; font-weight: 500; letter-spacing: 0.04em; color: var(--text-muted); margin-bottom: 8px; }
.dh-form-row input, .dh-form-row select, .dh-form-row textarea { width: 100%; background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text); padding: 12px 14px; font: inherit; transition: .2s var(--ease); }
.dh-form-row input:focus, .dh-form-row select:focus, .dh-form-row textarea:focus { border-color: var(--accent); outline: none; box-shadow: 0 0 0 3px var(--accent-soft); }
.dh-form-row textarea { resize: vertical; }
.dh-form-row.has-error input, .dh-form-row.has-error textarea { border-color: #e5484d; box-shadow: 0 0 0 3px color-mix(in srgb, #e5484d 18%, transparent); }
.dh-form-err { display: block; margin-top: 6px; font-size: 12px; font-weight: 500; color: #e5484d; }
.dh-form-hint { margin-top: 14px; font-size: 12px; color: var(--text-muted); text-align: center; }
.dh-form button[type="submit"]:disabled { opacity: .55; cursor: not-allowed; box-shadow: none; }
.dh-form input::placeholder, .dh-form textarea::placeholder { color: var(--text-muted); opacity: .6; }

/* ---------- Footer ---------- */
.dh-footer { background: var(--bg-alt); color: var(--text); padding: 96px 0 40px; border-top: 1px solid var(--border); flex-shrink: 0; }
.dh-footer-top { display: grid; grid-template-columns: 1fr 1.6fr; gap: 64px; padding-bottom: 56px; border-bottom: 1px solid var(--border); }
.dh-footer-tagline { font-family: var(--font-heading); font-style: italic; font-size: 20px; color: var(--text-muted); margin: 18px 0 0; max-width: 32ch; }
.dh-footer-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; }
.dh-footer-title { font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-muted); margin-bottom: 16px; font-family: var(--font-body); font-weight: 600; }
.dh-footer-col ul li { margin-bottom: 10px; }
.dh-footer-col a { color: var(--text); font-size: 15px; }
.dh-footer-col a:hover { color: var(--accent); }
.dh-social { display: flex; gap: 8px; margin-top: 18px; }
.dh-social a { width: 38px; height: 38px; display: grid; place-items: center; border: 1px solid var(--border); border-radius: 8px; color: var(--text); transition: all .2s var(--ease); font-weight: 600; font-size: 14px; }
.dh-social a:hover { background: var(--accent); border-color: var(--accent); color: #fff; }
.dh-footer-bottom { display: flex; justify-content: space-between; align-items: center; padding-top: 24px; font-size: 13px; color: var(--text-muted); }
.dh-footer-nav ul { display: flex; gap: 24px; }

/* ---------- Floating WhatsApp + Calendly ---------- */
.dh-floating { position: fixed; bottom: 80px; right: 24px; z-index: 90; display: flex; flex-direction: column; gap: 12px; transition: opacity .35s var(--ease), transform .35s var(--ease); }
.dh-floating.is-hidden { opacity: 0; transform: translateY(20px) scale(.9); pointer-events: none; }
.dh-rtl .dh-floating { right: auto; left: 24px; }
.dh-floating-btn { width: 56px; height: 56px; display: grid; place-items: center; border-radius: 50%; color: #fff; box-shadow: 0 8px 24px rgba(0,0,0,.25); transition: .25s var(--ease); position: relative; }
.dh-floating-btn:hover { transform: scale(1.1); color: #fff; }
.dh-floating-btn svg { width: 28px; height: 28px; fill: currentColor; }
.dh-wa { background: #25D366; }
.dh-wa::before { content: ""; position: absolute; inset: 0; border-radius: 50%; box-shadow: 0 0 0 0 rgba(37,211,102,.5); animation: dh-wa-pulse 2.4s ease-out infinite; }
@keyframes dh-wa-pulse { 0% { box-shadow: 0 0 0 0 rgba(37,211,102,.5); } 70% { box-shadow: 0 0 0 16px rgba(37,211,102,0); } 100% { box-shadow: 0 0 0 0 rgba(37,211,102,0); } }
.dh-cal { background: var(--accent); }
.dh-cal svg { fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.dh-cal-label { position: absolute; right: 66px; top: 50%; transform: translateY(-50%); background: var(--text); color: var(--bg); padding: 6px 12px; border-radius: 8px; font-size: 12px; font-weight: 600; white-space: nowrap; opacity: 0; pointer-events: none; transition: .25s var(--ease); }
.dh-rtl .dh-cal-label { right: auto; left: 66px; }
.dh-floating-btn:hover .dh-cal-label { opacity: 1; }

/* ---------- Reveal ---------- */
.dh-reveal { opacity: 0; transform: translateY(28px); transition: opacity .8s var(--ease), transform .8s var(--ease); }
.dh-reveal.is-visible { opacity: 1; transform: none; }

/* ---------- Lightbox ---------- */
.dh-lightbox { position: fixed; inset: 0; z-index: 2147483647; background: rgba(20,18,24,.95); display: none !important; align-items: center; justify-content: center; padding: 40px; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.dh-lightbox.is-open { display: flex !important; }
.dh-lightbox img { max-width: 90vw; max-height: 85vh; border-radius: var(--radius); border: 1px solid rgba(255,255,255,.15); }
.dh-lightbox-close { position: absolute; top: 24px; right: 24px; width: 44px; height: 44px; display: grid; place-items: center; background: rgba(255,255,255,.1); border: 0; border-radius: 50%; color: #fff; font-size: 22px; }
.dh-lightbox-close:hover { background: var(--accent); }
.dh-lightbox-nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 52px; height: 52px; display: grid; place-items: center;
  background: rgba(255,255,255,.1); border: 0; border-radius: 50%;
  color: #fff; font-size: 28px; line-height: 1;
  transition: background .2s, transform .2s;
}
.dh-lightbox-nav:hover { background: var(--accent); }
.dh-lightbox-prev { left: 24px; }
.dh-lightbox-next { right: 24px; }
.dh-lightbox-prev:hover, .dh-lightbox-next:hover { transform: translateY(-50%) scale(1.08); }
.dh-lightbox-cap { position: absolute; bottom: 24px; left: 50%; transform: translateX(-50%); color: #fff; font-family: var(--font-heading); font-size: 16px; background: rgba(0,0,0,.4); padding: 8px 16px; border-radius: 8px; }
@media (max-width: 560px) {
  .dh-lightbox-nav { width: 40px; height: 40px; font-size: 22px; }
  .dh-lightbox-prev { left: 10px; }
  .dh-lightbox-next { right: 10px; }
}

/* ---------- Scroll progress bar (top of page) ---------- */
.dh-scroll-progress {
  position: fixed; top: 0; left: 0; height: 3px; width: 0;
  background: linear-gradient(90deg, var(--accent), var(--amber));
  z-index: 200; transition: width .1s linear;
  box-shadow: 0 0 10px color-mix(in srgb, var(--accent) 60%, transparent);
}

/* ---------- Scroll-to-top button (v2.1.0 — single pill, no ring, no duplicate) ---------- */
.dh-to-top {
  position: fixed; bottom: 24px; left: 24px; z-index: 90;
  display: inline-flex; align-items: center; gap: 8px;
  padding: 10px 16px 10px 12px;
  border-radius: 999px; border: 1px solid var(--border);
  background: var(--bg-card); color: var(--text);
  box-shadow: 0 8px 24px -8px rgba(0,0,0,.2);
  opacity: 0; visibility: hidden; transform: translateY(12px) scale(.9);
  transition: opacity .3s var(--ease), transform .3s var(--ease), visibility .3s, border-color .2s, color .2s;
  font: inherit; font-weight: 600; font-size: 14px;
}
.dh-rtl .dh-to-top { left: auto; right: 24px; }
.dh-to-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0) scale(1); }
.dh-to-top:hover { border-color: var(--accent); color: var(--accent); transform: translateY(-2px) scale(1.03); }
.dh-to-top:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.dh-to-top-core {
  width: 28px; height: 28px; display: grid; place-items: center;
  border-radius: 50%; background: var(--accent); color: #fff;
  transition: transform .2s var(--ease), background .2s;
}
.dh-to-top-core svg { width: 16px; height: 16px; }
.dh-to-top:hover .dh-to-top-core { transform: scale(1.08); }
.dh-to-top:hover .dh-to-top-core svg { animation: dh-arrow-bob .6s var(--ease) infinite; }
.dh-to-top-label { white-space: nowrap; }
@media (max-width: 560px) {
  .dh-to-top-label { display: none; } /* icon-only on small phones */
}

/* ---------- Toast (contact form success) ---------- */
.dh-toast {
  position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%) translateY(140%);
  z-index: 1000; display: flex; align-items: center; gap: 12px;
  background: var(--text); color: var(--bg);
  padding: 14px 18px; border-radius: 12px;
  box-shadow: 0 20px 50px -16px rgba(0,0,0,.4);
  font-size: 14px; font-weight: 500; max-width: 90vw;
  opacity: 0; transition: transform .4s var(--ease), opacity .4s var(--ease);
}
.dh-toast.is-visible { transform: translateX(-50%) translateY(0); opacity: 1; }
.dh-toast svg { color: #22c55e; flex-shrink: 0; }
.dh-toast-close {
  background: none; border: 0; color: inherit; opacity: .6;
  font-size: 20px; line-height: 1; padding: 0 4px; margin-left: 4px;
  transition: opacity .2s;
}
.dh-toast-close:hover { opacity: 1; }

/* ---------- Bug-fix report banner (dismissible accent bar) ---------- */
.dh-fixbar {
  position: relative; z-index: 95;
  background: linear-gradient(90deg, var(--accent), var(--amber));
  color: #fff; padding: 9px 44px 9px 20px;
  font-size: 13px; font-weight: 500;
  display: flex; align-items: center; justify-content: center;
  gap: 10px; flex-wrap: wrap; text-align: center;
}
.dh-fixbar strong { font-weight: 700; }
.dh-fixbar-mark { display: inline-flex; align-items: center; gap: 4px; }
.dh-fixbar-mark svg { width: 14px; height: 14px; }
.dh-fixbar-close {
  position: absolute; right: 12px; top: 50%; transform: translateY(-50%);
  background: rgba(255,255,255,.18); border: 0; color: #fff;
  width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center;
  font-size: 16px; line-height: 1; transition: background .2s;
}
.dh-fixbar-close:hover { background: rgba(255,255,255,.32); }

/* ---------- Main wrapper so footer sticks to bottom ---------- */
.dh-main { flex: 1 0 auto; }

/* ---------- Focus & accessibility polish ---------- */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible,
.dh-btn:focus-visible, .dh-icon-btn:focus-visible {
  outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 6px;
}
.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 !important; word-wrap: normal !important;
}

/* ---------- Responsive ---------- */
@media (max-width: 960px) {
  .dh-about-grid, .dh-contact-grid, .dh-faq-grid, .dh-footer-top { grid-template-columns: 1fr; gap: 36px; }
  .dh-footer-cols { grid-template-columns: 1fr 1fr; }
  .dh-work-grid, .dh-testi-grid { grid-template-columns: 1fr; }
  .dh-process-grid { grid-template-columns: 1fr 1fr; }
  .dh-stats-grid { grid-template-columns: 1fr 1fr; }
  /* gallery grid handled by v1.7.7 responsive rules below */
  /* dh-service-row responsive handled by standard grid rules */
  .dh-nav { display: none; }
  .dh-menu-toggle { display: flex; }
  .dh-section { padding: 72px 0; }
  .dh-hero { min-height: auto; padding: calc(var(--header-h) + 40px) 0 64px; }
  .dh-footer-bottom { flex-direction: column; gap: 14px; }
  .dh-actions .dh-btn-ghost:not(.dh-icon-btn) { display: none; }
  .dh-actions .dh-btn-primary { display: none; }
  .dh-nav.is-open { display: block; position: fixed; top: var(--header-h); left: 0; right: 0; background: var(--bg); border-bottom: 1px solid var(--border); padding: 20px 28px; z-index: 99; max-height: calc(100vh - var(--header-h)); overflow-y: auto; }
  .dh-nav.is-open ul { flex-direction: column; gap: 8px; }
  .dh-nav.is-open .dh-mobile-controls { display: flex; gap: 10px; margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--border); }
  .dh-nav.is-open .dh-mobile-controls .dh-btn { flex: 1; justify-content: center; }
  .dh-nav:not(.is-open) .dh-mobile-controls { display: none; }
}
.dh-mobile-controls { display: none; }
@media (max-width: 560px) {
  .dh-container { padding: 0 20px; }
  .dh-header-inner { padding: 0 16px; }
  .dh-stats-grid, .dh-process-grid, .dh-footer-cols, .dh-features { grid-template-columns: 1fr; }
  /* gallery single column handled by v1.7.7 */
  .dh-case-metrics { flex-direction: column; gap: 12px; }
  .dh-floating { bottom: 70px; }
  .dh-actions { gap: 6px; }
  .dh-lang-btn { padding: 8px 10px; font-size: 12px; }
  .dh-icon-btn { width: 36px; height: 36px; }
  .dh-fixbar { padding: 9px 36px 9px 14px; font-size: 11.5px; gap: 6px; }
}
@media (prefers-reduced-motion: reduce) {
  * { animation-duration: .001ms !important; transition-duration: .001ms !important; }
  .dh-reveal { opacity: 1; transform: none; }
  html { scroll-behavior: auto; }
}

@media print {
  .dh-header, .dh-footer, .dh-floating, .dh-to-top, .dh-scroll-progress,
  .dh-menu-toggle, .dh-lightbox, .dh-toast, .dh-cal-label, .dh-fixbar { display: none !important; }
  body.dh-theme { background: #fff !important; color: #000 !important; }
  .dh-section { padding: 24px 0 !important; border: 0 !important; page-break-inside: avoid; }
  .dh-hero { min-height: auto !important; }
  .dh-hero-bg, .dh-reveal { opacity: 1 !important; transform: none !important; }
  .dh-container { max-width: 100% !important; padding: 0 12px !important; }
  a { color: #000 !important; text-decoration: underline; }
  .dh-card, .dh-case, .dh-testi, .dh-form { box-shadow: none !important; border: 1px solid #ccc !important; }
}

/* ==========================================================================
   v1.7.1 enhancements — cookie banner, RTL polish, lazy-load, stronger
   work-card hover, section-tight rhythm, keyboard-shortcut hint.
   ========================================================================== */

/* tighter section rhythm (about + faq) */
.dh-section-tight { padding: 72px 0; }

/* stronger work case hover: image zoom + lift + accent ring */
.dh-case { transform: translateY(0); will-change: transform; }
.dh-case:hover { transform: translateY(-6px); }
.dh-case-image { overflow: hidden; }
.dh-case:hover .dh-case-image img { transform: scale(1.08); }
.dh-case-image img { transition: transform .6s var(--ease); }

/* image lazy-load fade-in (v3.8.0 — purely ADDITIVE, JS-failure-safe)
   Previously: img[loading="lazy"] { opacity:0 } → invisible until JS adds .loaded.
   That made ANY JS failure (a throw elsewhere in main.js, a blocked event loop,
   an ad-blocker killing the load event) leave every lazy image invisible
   forever. Now: images are visible (opacity:1) by default. JS adds the .loaded
   class, which only enables the fade transition. A JS failure now means "no
   fade," NOT "invisible forever." The fade is opt-in via .is-fading, so the
   transition only applies once JS has had a chance to opt the image in. */
img[loading="lazy"].is-fading { opacity: 0; transition: opacity .5s var(--ease); }
img[loading="lazy"].is-fading.loaded { opacity: 1; }
/* The no-JS / JS-failed path: image is just visible, no fade. No rule needed. */
.dh-hero-img { opacity: .45; transition: opacity .5s var(--ease); } /* hero always visible */
.dh-mode-dark .dh-hero-img { opacity: .5; }

/* ---------- Cookie consent — old full-width bar styles removed (see v1.7.2 compact card below) ---------- */
.dh-cookie-link { background: none; border: 0; color: var(--text-muted); opacity: .8; font-size: 13px; font-weight: 600; cursor: pointer; text-decoration: underline; padding: 6px 4px; transition: opacity .2s, color .2s; }
.dh-cookie-link:hover { opacity: 1; color: var(--accent); }

/* ---------- RTL polish ---------- */
.dh-rtl .dh-hero-title { max-width: 16ch; }
.dh-rtl .dh-service-row { text-align: right; }
.dh-rtl .dh-features li::before { content: "◂"; }
.dh-rtl .dh-case-tag { left: auto; right: 14px; }
.dh-rtl .dh-gallery-cap { left: auto; right: 14px; }
.dh-rtl .dh-hero-card-lbl { text-align: start; }
.dh-rtl .dh-lang-btn { direction: ltr; }

/* RTL: flip the scroll-down chevron */
.dh-rtl .dh-hero-scroll svg { transform: rotate(180deg); }

/* keyboard shortcut hint chip in fixbar (subtle) */
.dh-fixbar kbd {
    background: rgba(255,255,255,.18); border-radius: 4px; padding: 1px 6px;
    font-family: var(--font-body); font-size: 11px; font-weight: 600;
    border: 1px solid rgba(255,255,255,.25);
}

/* ---------- Service row hover accent ---------- */
.dh-service-row { transition: background .3s var(--ease); }
.dh-service-row:hover { background: color-mix(in srgb, var(--accent) 4%, transparent); }
.dh-service-row:hover .dh-service-num { transform: translateX(4px); }
.dh-rtl .dh-service-row:hover .dh-service-num { transform: translateX(-4px); }
.dh-service-num { transition: transform .3s var(--ease); }

/* ---------- Gallery item count badge on active filter ---------- */
.dh-filter.is-active { position: relative; }

/* ---------- Print: hide new elements ---------- */
@media print {
    .dh-cookie, .dh-hero-scroll, .dh-hero-card, .dh-fixbar, .dh-form-hint { display: none !important; }
}

/* reduced motion: kill the bounce + pulse */
@media (prefers-reduced-motion: reduce) {
    .dh-hero-scroll, .dh-hero-card-dot, .dh-cookie { animation: none !important; }
}

/* ==========================================================================
   v1.7.2 enhancements — testimonial carousel, FAQ search, scroll-to-top
   progress ring, section permalink anchors, compact cookie card, styling
   polish (view-work button contrast, hero eyebrow gradient, card hovers).
   ========================================================================== */

/* ---------- Section heading row (h2 + permalink) ---------- */
.dh-section-head, .dh-about-left, .dh-faq-side, .dh-contact-left { position: relative; }
/* v2.0.3 fix: was `display: inline` which caused the label "Work" and the
   heading "Selected work" to merge into "WorkSelected work". Now block so
   each heading sits on its own line; the permalink button floats right. */
.dh-section-head .dh-h2, .dh-about-left .dh-h2, .dh-faq-side .dh-h2, .dh-contact-left .dh-h2 { display: block; }
.dh-permalink {
    display: inline-flex; align-items: center; justify-content: center;
    width: 30px; height: 30px; margin-left: 8px;
    border: 0; background: none; color: var(--text-muted);
    opacity: 0; transform: translateY(-2px);
    transition: opacity .2s var(--ease), transform .2s var(--ease), color .2s;
    cursor: pointer; vertical-align: middle;
    border-radius: 6px;
}
.dh-rtl .dh-permalink { margin-left: 0; margin-right: 8px; }
.dh-permalink svg { width: 18px; height: 18px; }
.dh-section-head:hover .dh-permalink,
.dh-about-left:hover .dh-permalink,
.dh-faq-side:hover .dh-permalink,
.dh-contact-left:hover .dh-permalink,
.dh-permalink:focus-visible { opacity: 1; transform: translateY(0); }
.dh-permalink:hover { color: var(--accent); background: var(--accent-soft); }

/* ---------- Hero eyebrow gradient ---------- */
.dh-eyebrow {
    background: linear-gradient(90deg, var(--accent), var(--amber));
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: var(--accent);
}
.dh-mode-dark .dh-eyebrow { -webkit-text-fill-color: transparent; }

/* ---------- "View work" ghost button — stronger contrast ---------- */
.dh-hero-actions .dh-btn-ghost {
    border-width: 1.5px; border-color: var(--text-muted);
    color: var(--text); font-weight: 500;
    background: color-mix(in srgb, var(--bg) 50%, transparent);
}
.dh-hero-actions .dh-btn-ghost:hover {
    border-color: var(--accent); color: var(--accent);
    background: var(--accent-soft);
}

/* ---------- Testimonial card hover lift ---------- */
.dh-testi { transition: transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease); }
.dh-testi:hover { transform: translateY(-4px); border-color: var(--accent); box-shadow: 0 20px 48px -24px color-mix(in srgb, var(--accent) 30%, transparent); }

/* ---------- Testimonial carousel ---------- */
.dh-testi-carousel {
    position: relative; margin-bottom: 56px;
    background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius); padding: 48px 64px;
    box-shadow: 0 20px 50px -28px rgba(0,0,0,.18);
}
.dh-carousel-viewport { overflow: hidden; }
.dh-carousel-track { display: flex; transition: transform .55s var(--ease); }
.dh-carousel-slide {
    flex: 0 0 100%; min-width: 0; margin: 0;
    display: flex; flex-direction: column; align-items: center; text-align: center;
    padding: 0 20px;
}
.dh-carousel-quote {
    width: 44px; height: 44px; color: var(--accent); opacity: .4;
    margin-bottom: 18px;
}
.dh-carousel-text {
    font-family: var(--font-heading); font-style: italic;
    font-size: clamp(20px, 2.6vw, 28px); line-height: 1.5;
    color: var(--text); margin: 0 0 28px; max-width: 720px;
}
.dh-rtl .dh-carousel-text { font-style: normal; font-weight: 500; }
.dh-carousel-author {
    display: flex; align-items: center; gap: 14px;
    border-top: 1px solid var(--border); padding-top: 20px; width: 100%; justify-content: center;
}
.dh-avatar--lg { width: 52px; height: 52px; font-size: 17px; border-radius: 12px; }
.dh-carousel-author strong { display: block; font-size: 16px; }
.dh-carousel-author small { font-size: 13px; color: var(--text-muted); }

.dh-carousel-arrow {
    position: absolute; top: 50%; transform: translateY(-50%);
    width: 44px; height: 44px; display: grid; place-items: center;
    border: 1px solid var(--border); border-radius: 50%;
    background: var(--bg); color: var(--text);
    font-size: 24px; line-height: 1; cursor: pointer;
    transition: all .2s var(--ease); z-index: 2;
}
.dh-carousel-arrow:hover { border-color: var(--accent); color: var(--accent); transform: translateY(-50%) scale(1.08); }
.dh-carousel-prev { left: 14px; }
.dh-carousel-next { right: 14px; }
.dh-rtl .dh-carousel-prev { left: auto; right: 14px; }
.dh-rtl .dh-carousel-next { right: auto; left: 14px; }

.dh-carousel-dots {
    display: flex; align-items: center; justify-content: center; gap: 8px;
    margin-top: 24px;
}
.dh-carousel-dot {
    width: 8px; height: 8px; border-radius: 50%;
    border: 0; background: var(--border); cursor: pointer;
    transition: all .25s var(--ease); padding: 0;
}
.dh-carousel-dot.is-active { width: 28px; border-radius: 4px; background: var(--accent); }
.dh-carousel-play {
    margin-left: 12px; width: 28px; height: 28px; display: grid; place-items: center;
    border: 0; background: none; color: var(--text-muted); cursor: pointer;
    border-radius: 6px; transition: color .2s, background .2s;
}
.dh-rtl .dh-carousel-play { margin-left: 0; margin-right: 12px; }
.dh-carousel-play:hover { color: var(--accent); background: var(--accent-soft); }
.dh-carousel-play svg { width: 14px; height: 14px; }

@media (max-width: 768px) {
    .dh-testi-carousel { padding: 36px 16px; }
    .dh-carousel-arrow { width: 36px; height: 36px; font-size: 20px; }
    .dh-carousel-prev { left: 6px; } .dh-carousel-next { right: 6px; }
    .dh-carousel-text { font-size: 18px; }
}

/* ---------- FAQ search ---------- */
.dh-faq-search {
    position: relative; margin-top: 22px; display: flex; align-items: center;
}
.dh-faq-search > svg {
    position: absolute; left: 14px; width: 18px; height: 18px;
    color: var(--text-muted); pointer-events: none; z-index: 1;
}
.dh-rtl .dh-faq-search > svg { left: auto; right: 14px; }
.dh-faq-search-input {
    width: 100%; padding: 12px 40px 12px 44px;
    background: var(--bg); border: 1px solid var(--border);
    border-radius: var(--radius-sm); color: var(--text);
    font: inherit; font-size: 15px; transition: .2s var(--ease);
}
.dh-rtl .dh-faq-search-input { padding: 12px 44px 12px 40px; }
.dh-faq-search-input:focus {
    outline: none; border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
}
.dh-faq-search-clear {
    position: absolute; right: 10px; z-index: 1;
    width: 24px; height: 24px; display: grid; place-items: center;
    border: 0; background: var(--border); color: var(--text);
    border-radius: 50%; cursor: pointer; font-size: 16px; line-height: 1;
    transition: background .2s, color .2s;
}
.dh-rtl .dh-faq-search-clear { right: auto; left: 10px; }
.dh-faq-search-clear:hover { background: var(--accent); color: #fff; }
.dh-faq-count {
    margin-top: 10px; font-size: 12px; font-weight: 600;
    color: var(--text-muted); letter-spacing: .03em;
}
.dh-faq-empty {
    text-align: center; padding: 48px 20px; color: var(--text-muted);
}
.dh-faq-empty svg { width: 40px; height: 40px; margin: 0 auto 14px; display: block; opacity: .4; }
.dh-faq-empty p { font-size: 15px; margin: 0; }

/* ---------- Scroll-to-top (v2.1.0 — old circular progress ring removed) ---------- */

/* ---------- Copied-link mini toast ---------- */
.dh-toast--mini {
    bottom: 90px; padding: 10px 16px; font-size: 13px; gap: 8px;
    background: var(--accent); color: #fff;
}
.dh-toast--mini svg { color: #fff; }
.dh-toast--copied { box-shadow: 0 12px 32px -10px color-mix(in srgb, var(--accent) 60%, transparent); }

/* ---------- Cookie consent — compact slide-in card ---------- */
.dh-cookie {
    position: fixed; bottom: 24px; left: 24px; z-index: 120;
    max-width: 380px; background: var(--bg-card);
    border: 1px solid var(--border); border-radius: var(--radius);
    padding: 22px; display: flex; gap: 14px; align-items: flex-start;
    box-shadow: 0 24px 60px -20px rgba(0,0,0,.3);
    animation: dh-cookie-slide .45s var(--ease) both;
}
.dh-rtl .dh-cookie { left: auto; right: 24px; }
@keyframes dh-cookie-slide {
    from { transform: translateY(120%) scale(.92); opacity: 0; }
    to { transform: translateY(0) scale(1); opacity: 1; }
}
.dh-cookie-icon {
    flex-shrink: 0; width: 40px; height: 40px; display: grid; place-items: center;
    border-radius: 10px; background: var(--accent-soft); color: var(--accent);
}
.dh-cookie-icon svg { width: 22px; height: 22px; }
.dh-cookie-body { flex: 1; min-width: 0; }
.dh-cookie-text { font-size: 13.5px; line-height: 1.5; color: var(--text); margin: 0 0 14px; }
.dh-cookie-actions { display: flex; align-items: center; gap: 10px; justify-content: flex-end; }
.dh-cookie-x {
    position: absolute; top: 10px; right: 10px;
    width: 26px; height: 26px; display: grid; place-items: center;
    border: 0; background: none; color: var(--text-muted);
    font-size: 18px; line-height: 1; cursor: pointer; border-radius: 6px;
    transition: background .2s, color .2s;
}
.dh-rtl .dh-cookie-x { right: auto; left: 10px; }
.dh-cookie-x:hover { background: var(--bg-alt); color: var(--text); }
@media (max-width: 480px) {
    .dh-cookie { left: 12px; right: 12px; bottom: 12px; max-width: none; }
    .dh-rtl .dh-cookie { left: 12px; right: 12px; }
}

/* ---------- Gallery item hover "view" icon ---------- */
.dh-gallery-item::before {
    content: ""; position: absolute; top: 50%; left: 50%;
    width: 48px; height: 48px; transform: translate(-50%, -50%) scale(.6);
    background: var(--accent); border-radius: 50%;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14L21 3'/%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: center;
    opacity: 0; transition: opacity .3s var(--ease), transform .3s var(--ease);
    z-index: 2; pointer-events: none;
}
.dh-gallery-item:hover::before { opacity: 1; transform: translate(-50%, -50%) scale(1); }

/* ---------- Print: hide new elements ---------- */
@media print {
    .dh-testi-carousel, .dh-permalink, .dh-faq-search, .dh-cookie, .dh-toast--mini { display: none !important; }
}

/* ==========================================================================
   v1.7.3 enhancements — keyboard help modal, featured testimonial badge,
   service pill tags, FAQ focus softening, carousel depth, contact CTA,
   stats card glass, gallery masonry balance.
   ========================================================================== */

/* ---------- Keyboard shortcuts help modal ---------- */
.dh-modal {
    position: fixed; inset: 0; z-index: 1100;
    background: rgba(20,18,24,.55); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    display: none; align-items: center; justify-content: center; padding: 24px;
}
.dh-modal.is-open { display: flex; animation: dh-modal-in .3s var(--ease); }
@keyframes dh-modal-in { from { opacity: 0; } to { opacity: 1; } }
.dh-modal-card {
    position: relative; width: 100%; max-width: 480px;
    background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius); padding: 32px;
    box-shadow: 0 40px 90px -30px rgba(0,0,0,.5);
    animation: dh-modal-card-in .35s var(--ease);
}
@keyframes dh-modal-card-in { from { transform: translateY(20px) scale(.96); opacity: 0; } to { transform: none; opacity: 1; } }
.dh-modal-close {
    position: absolute; top: 16px; right: 16px;
    width: 34px; height: 34px; display: grid; place-items: center;
    border: 0; background: var(--bg-alt); color: var(--text-muted);
    border-radius: 8px; font-size: 20px; cursor: pointer; transition: all .2s;
}
.dh-rtl .dh-modal-close { right: auto; left: 16px; }
.dh-modal-close:hover { background: var(--accent); color: #fff; }
.dh-modal-head { display: flex; align-items: flex-start; gap: 16px; margin-bottom: 24px; padding-right: 36px; }
.dh-rtl .dh-modal-head { padding-right: 0; padding-left: 36px; }
.dh-modal-icon {
    flex-shrink: 0; width: 44px; height: 44px; display: grid; place-items: center;
    border-radius: 12px; background: var(--accent-soft); color: var(--accent);
}
.dh-modal-icon svg { width: 24px; height: 24px; }
.dh-modal-title { font-family: var(--font-heading); font-size: 24px; font-weight: 600; margin: 0 0 4px; }
.dh-modal-sub { font-size: 13px; color: var(--text-muted); margin: 0; line-height: 1.5; }
.dh-shortcuts { list-style: none; padding: 0; margin: 0; }
.dh-shortcuts li {
    display: flex; align-items: center; justify-content: space-between; gap: 16px;
    padding: 13px 0; border-bottom: 1px solid var(--border);
}
.dh-shortcuts li:last-child { border-bottom: 0; }
.dh-shortcut-desc { font-size: 14.5px; color: var(--text); }
.dh-kbd {
    display: inline-grid; place-items: center; min-width: 32px; height: 32px;
    padding: 0 10px; font-family: var(--font-body); font-size: 13px; font-weight: 600;
    color: var(--text); background: var(--bg); border: 1px solid var(--border);
    border-bottom-width: 2px; border-radius: 7px;
    box-shadow: 0 2px 0 var(--border);
}

/* ---------- Help (?) button in header ---------- */
.dh-help-btn { position: relative; }
.dh-help-btn::after {
    content: ""; position: absolute; bottom: -2px; right: -2px;
    width: 8px; height: 8px; background: var(--accent);
    border-radius: 50%; border: 2px solid var(--bg);
    animation: dh-help-pulse 2.4s ease-in-out infinite;
}
@keyframes dh-help-pulse { 0%, 100% { opacity: .5; transform: scale(1); } 50% { opacity: 1; transform: scale(1.2); } }

/* ---------- Featured testimonial badge ---------- */
.dh-testi--featured { position: relative; border-color: var(--accent); }
.dh-testi--featured::before {
    content: ""; position: absolute; inset: 0; border-radius: var(--radius);
    background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 6%, transparent), transparent 60%);
    pointer-events: none;
}
.dh-testi-badge {
    position: absolute; top: 14px; right: 14px; z-index: 1;
    display: inline-flex; align-items: center; gap: 5px;
    padding: 5px 11px; font-size: 11px; font-weight: 700; letter-spacing: .05em;
    text-transform: uppercase; color: #fff; background: var(--accent);
    border-radius: 999px;
}
.dh-rtl .dh-testi-badge { right: auto; left: 14px; }
.dh-testi-badge::before { content: "★"; font-size: 10px; }

/* ---------- Service feature tags as pills ---------- */
.dh-features li {
    cursor: default; user-select: none;
}
.dh-features li:hover { background: var(--accent-soft); color: var(--accent); }
.dh-features li:hover::before { color: var(--accent); }
.dh-features li::after {
    content: ""; margin-left: auto; width: 6px; height: 6px; border-radius: 50%;
    background: var(--accent); opacity: 0; transition: opacity .2s;
}
.dh-features li:hover::after { opacity: 1; }

/* ---------- FAQ search focus — softer (was: strong red, looked like error) ---------- */
.dh-faq-search-input { border-width: 1.5px; }
.dh-faq-search-input:focus {
    outline: none; border-color: var(--accent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 14%, transparent);
}

/* ---------- Carousel card depth ---------- */
.dh-testi-carousel {
    box-shadow: 0 30px 70px -32px rgba(0,0,0,.22), 0 0 0 1px var(--border);
}
.dh-mode-dark .dh-testi-carousel {
    box-shadow: 0 30px 80px -28px rgba(0,0,0,.6), 0 0 0 1px color-mix(in srgb, var(--text) 8%, transparent);
}

/* ---------- Contact CTA — deeper saturation ---------- */
.dh-form .dh-btn-primary {
    background: var(--accent);
    background-image: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 80%, #b8321e));
    box-shadow: 0 12px 28px -10px color-mix(in srgb, var(--accent) 70%, transparent);
}
.dh-form .dh-btn-primary:hover:not(:disabled) {
    background-image: linear-gradient(135deg, color-mix(in srgb, var(--accent) 90%, #000), var(--accent));
    box-shadow: 0 16px 36px -12px color-mix(in srgb, var(--accent) 80%, transparent);
    transform: translateY(-1px);
}
.dh-form .dh-btn-primary:disabled {
    background: var(--border); color: var(--text-muted);
    background-image: none; box-shadow: none;
}

/* ---------- Stats card glassmorphism — stronger in light mode ---------- */
.dh-hero-card {
    box-shadow: 0 24px 60px -28px rgba(0,0,0,.16), 0 0 0 1px color-mix(in srgb, var(--text) 4%, transparent);
}
.dh-mode-dark .dh-hero-card {
    box-shadow: 0 30px 80px -24px rgba(0,0,0,.65), 0 0 0 1px color-mix(in srgb, var(--text) 12%, transparent);
}

/* ---------- Gallery masonry — balanced with varied heights ---------- */
/* old masonry layout removed — now uniform grid (see v1.7.7) */

/* ---------- Print: hide new elements ---------- */
@media print {
    .dh-modal, .dh-help-btn, .dh-testi-badge { display: none !important; }
}

/* ==========================================================================
   v1.7.4 enhancements — hero parallax + gradient mesh, testimonial star
   ratings, stat progress bars, process timeline connector, scroll-to-top
   ring redesign, services spacing, contact CTA disabled state.
   ========================================================================== */

/* ---------- Hero gradient mesh background ---------- */
.dh-hero-bg { isolation: isolate; }
.dh-hero-mesh {
    position: absolute; inset: -10%; z-index: 0;
    background:
        radial-gradient(circle at 18% 22%, color-mix(in srgb, var(--accent) 14%, transparent) 0%, transparent 42%),
        radial-gradient(circle at 82% 28%, color-mix(in srgb, var(--amber) 12%, transparent) 0%, transparent 46%),
        radial-gradient(circle at 50% 88%, color-mix(in srgb, var(--accent) 8%, transparent) 0%, transparent 50%);
    filter: blur(40px); opacity: .9;
    animation: dh-mesh-drift 18s ease-in-out infinite alternate;
}
.dh-mode-dark .dh-hero-mesh {
    background:
        radial-gradient(circle at 18% 22%, color-mix(in srgb, var(--accent) 22%, transparent) 0%, transparent 42%),
        radial-gradient(circle at 82% 28%, color-mix(in srgb, var(--amber) 18%, transparent) 0%, transparent 46%),
        radial-gradient(circle at 50% 88%, color-mix(in srgb, var(--accent) 12%, transparent) 0%, transparent 50%);
    opacity: .7;
}
@keyframes dh-mesh-drift {
    0% { transform: translate3d(0, 0, 0) scale(1); }
    100% { transform: translate3d(-3%, 2%, 0) scale(1.06); }
}
.dh-hero-img { will-change: transform; transition: transform .1s linear, opacity .5s var(--ease); }
@media (prefers-reduced-motion: reduce) {
    .dh-hero-mesh { animation: none; }
    .dh-hero-img { transition: none; }
}

/* ---------- Testimonial star ratings ---------- */
.dh-stars { display: flex; gap: 2px; margin-bottom: 14px; }
.dh-star { width: 16px; height: 16px; fill: var(--border); transition: fill .2s; }
.dh-star.is-on { fill: var(--amber); }
.dh-testi:hover .dh-star.is-on { fill: var(--accent); }
.dh-carousel-slide .dh-stars { justify-content: center; margin-bottom: 10px; }
.dh-carousel-slide .dh-star { width: 18px; height: 18px; }

/* ---------- Stats progress bar ---------- */
.dh-stat { position: relative; }
.dh-stat-bar {
    margin-top: 16px; height: 4px; width: 100%;
    background: var(--border); border-radius: 2px; overflow: hidden;
}
.dh-stat-bar-fill {
    height: 100%; width: 0;
    background: linear-gradient(90deg, var(--accent), var(--amber));
    border-radius: 2px;
    transition: width 1.2s var(--ease);
}
/* animate when the stat's parent .dh-reveal becomes visible */
.dh-stat.dh-reveal.is-visible .dh-stat-bar-fill { width: var(--dh-bar-w, 70%); }

/* ---------- Process timeline connector line ---------- */
.dh-process-grid { position: relative; }
.dh-process-line {
    position: absolute; top: 28px; left: 8%; right: 8%; height: 2px;
    background: linear-gradient(90deg, var(--accent), var(--amber), var(--accent));
    opacity: .4; z-index: 0;
}
.dh-process-line::before {
    content: ""; position: absolute; inset: 0;
    background: linear-gradient(90deg, var(--accent), var(--amber), var(--accent));
    transform: scaleX(0); transform-origin: left;
    animation: dh-process-draw 2s var(--ease) forwards;
    animation-delay: .3s;
}
@keyframes dh-process-draw { to { transform: scaleX(1); } }
.dh-step { position: relative; z-index: 1; }
.dh-step-num {
    display: inline-grid; place-items: center;
    width: 44px; height: 44px;
    background: var(--bg); border: 2px solid var(--accent);
    border-radius: 50%; padding: 0; margin-bottom: 18px;
    font-size: 15px; transition: all .3s var(--ease);
}
.dh-step:hover .dh-step-num { background: var(--accent); color: #fff; transform: translateY(-3px); box-shadow: 0 8px 20px -6px color-mix(in srgb, var(--accent) 60%, transparent); }
@media (max-width: 960px) { .dh-process-line { display: none; } }

/* ---------- Scroll-to-top (v2.1.0 — old arrow redesign removed, see .dh-to-top-core above) ---------- */
@keyframes dh-arrow-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }

/* ---------- Services spacing tightened ---------- */
.dh-services-list { margin-top: -16px; }
.dh-services-list .dh-service-row:first-child { padding-top: 28px; }

/* ---------- Contact CTA disabled state — clearer gray ---------- */
.dh-form .dh-btn-primary:disabled {
    background: var(--bg-alt) !important; background-image: none !important;
    color: var(--text-muted) !important; border: 1px solid var(--border);
    box-shadow: none; cursor: not-allowed; opacity: 1;
}

/* ---------- Print: hide new decorative elements ---------- */
@media print {
    .dh-hero-mesh, .dh-process-line, .dh-stat-bar, .dh-stars { display: none !important; }
}

/* ==========================================================================
   v1.7.5 enhancements — stat icons, work card hover CTA, gallery load-more,
   footer newsletter, scroll-to-top redesign (solid core), process line
   alignment, FAQ focus softened further, contact CTA disabled clearer.
   ========================================================================== */

/* ---------- Stat icons ---------- */
.dh-stat-icon {
    display: inline-grid; place-items: center;
    width: 40px; height: 40px; margin: 0 auto 14px;
    border-radius: 12px; background: var(--accent-soft); color: var(--accent);
    transition: transform .3s var(--ease);
}
.dh-stat-icon svg { width: 20px; height: 20px; }
.dh-stat:hover .dh-stat-icon { transform: translateY(-3px) scale(1.08); }

/* ---------- Work card "View case" hover CTA ---------- */
.dh-case-image { position: relative; }
.dh-case-cta {
    position: absolute; bottom: 16px; left: 16px; z-index: 2;
    display: inline-flex; align-items: center; gap: 7px;
    padding: 9px 16px; font-size: 13px; font-weight: 600;
    color: #fff; background: var(--accent);
    border-radius: 999px;
    opacity: 0; transform: translateY(10px);
    transition: opacity .3s var(--ease), transform .3s var(--ease);
    pointer-events: none;
}
.dh-rtl .dh-case-cta { left: auto; right: 16px; }
.dh-case-cta svg { width: 14px; height: 14px; transition: transform .2s; }
.dh-case:hover .dh-case-cta { opacity: 1; transform: translateY(0); }
.dh-case:hover .dh-case-cta svg { transform: translateX(3px); }
.dh-rtl .dh-case:hover .dh-case-cta svg { transform: translateX(-3px); }

/* ---------- Gallery load-more ---------- */
.dh-gallery-more { display: flex; justify-content: center; margin-top: 36px; }
.dh-gallery-more-count { opacity: .6; margin-left: 4px; }
.dh-gallery-all { text-align: center; margin-top: 32px; font-size: 13px; color: var(--text-muted); font-weight: 500; }

/* ---------- Footer newsletter strip ---------- */
.dh-newsletter {
    background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 10%, var(--bg-alt)), var(--bg-alt));
    border-bottom: 1px solid var(--border);
    padding: 48px 0;
}
.dh-newsletter-inner {
    display: flex; align-items: center; justify-content: space-between; gap: 40px; flex-wrap: wrap;
}
.dh-newsletter-copy { max-width: 460px; }
.dh-newsletter-copy .dh-label { margin-bottom: 10px; }
.dh-newsletter-title { font-family: var(--font-heading); font-size: clamp(22px, 2.6vw, 30px); font-weight: 600; margin: 0 0 8px; line-height: 1.2; }
.dh-newsletter-sub { font-size: 14.5px; color: var(--text-muted); line-height: 1.6; margin: 0; }
.dh-newsletter-form { display: flex; gap: 10px; flex: 1 1 320px; max-width: 440px; }
.dh-newsletter-form input {
    flex: 1; padding: 13px 16px;
    background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-sm);
    color: var(--text); font: inherit; font-size: 15px; transition: .2s var(--ease);
}
.dh-newsletter-form input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.dh-newsletter-form input::placeholder { color: var(--text-muted); opacity: .6; }
.dh-newsletter-form .dh-btn { white-space: nowrap; }
.dh-newsletter-form .dh-btn:disabled { background: var(--border); color: var(--text-muted); box-shadow: none; }
.dh-newsletter-success {
    display: flex; align-items: center; gap: 10px; margin: 0;
    color: #16a34a; font-weight: 600; font-size: 15px;
    background: color-mix(in srgb, #16a34a 12%, transparent);
    padding: 13px 18px; border-radius: var(--radius-sm); width: 100%;
}
.dh-newsletter-success svg { color: #16a34a; flex-shrink: 0; }
@media (max-width: 720px) {
    .dh-newsletter-inner { flex-direction: column; align-items: stretch; }
    .dh-newsletter-form { max-width: none; }
}

/* ---------- Scroll-to-top (v2.1.0 — see consolidated rule at top of file; this block is dead) ---------- */

/* ---------- Process line alignment fix (center with circles) ---------- */
.dh-process-line { top: 21px; } /* circle is 44px tall at grid top (0px), center = 22px; line is 2px tall so top = 22 - 1 = 21px */

/* ---------- FAQ search focus — even softer (neutral, not accent) ---------- */
.dh-faq-search-input:focus {
    outline: none; border-color: var(--text-muted);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--text-muted) 12%, transparent);
}

/* ---------- Contact CTA disabled — clearer distinction ---------- */
.dh-form .dh-btn-primary:disabled {
    background: var(--bg-alt) !important; background-image: none !important;
    color: var(--text-muted) !important;
    border: 1px dashed var(--border);
    box-shadow: none; cursor: not-allowed; opacity: 1;
}

/* ---------- Print: hide new elements ---------- */
@media print {
    .dh-newsletter, .dh-gallery-more, .dh-gallery-all, .dh-case-cta, .dh-stat-icon { display: none !important; }
}

/* ==========================================================================
   v1.7.6 enhancements — service expand/collapse, work featured project badge,
   stats bg pattern, FAQ smooth height animation, work card border
   consistency, floating button glassmorphism depth, contact CTA enabled weight.
   ========================================================================== */

/* ---------- Service rows (v2.1.0 — all open, no accordion) ---------- */
.dh-service-row { transition: background .3s var(--ease); }
.dh-service-row:hover { background: color-mix(in srgb, var(--accent) 4%, transparent); }
.dh-service-row:hover .dh-service-num { transform: translateX(4px); }
.dh-rtl .dh-service-row:hover .dh-service-num { transform: translateX(-4px); }
.dh-service-num { transition: transform .3s var(--ease); }

@media (max-width: 960px) {
    .dh-service-row { grid-template-columns: 1fr; gap: 18px; padding: 28px 0; }
}

/* ---------- Work featured project badge ---------- */
.dh-case--featured { border-color: var(--accent); }
.dh-case--featured::after {
    content: ""; position: absolute; inset: 0; border-radius: var(--radius);
    background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 5%, transparent), transparent 50%);
    pointer-events: none;
}
.dh-case { position: relative; }
.dh-case-featured-badge {
    position: absolute; top: 14px; right: 14px; z-index: 3;
    display: inline-flex; align-items: center; gap: 5px;
    padding: 6px 12px; font-size: 11px; font-weight: 700; letter-spacing: .05em;
    text-transform: uppercase; color: #fff; background: var(--accent);
    border-radius: 999px; box-shadow: 0 4px 12px -2px color-mix(in srgb, var(--accent) 60%, transparent);
}
.dh-rtl .dh-case-featured-badge { right: auto; left: 14px; }
.dh-case-featured-badge::before { content: "★"; font-size: 10px; }

/* ---------- Stats section subtle dot pattern ---------- */
.dh-stats {
    background-image:
        radial-gradient(circle, color-mix(in srgb, var(--text) 6%, transparent) 1px, transparent 1px);
    background-size: 24px 24px;
    background-color: var(--bg-alt);
}
.dh-mode-dark .dh-stats {
    background-image:
        radial-gradient(circle, color-mix(in srgb, var(--text) 8%, transparent) 1px, transparent 1px);
}

/* ---------- FAQ smooth height animation (was already max-height, polish transition) ---------- */
.dh-faq-a { transition: max-height .45s var(--ease), padding .45s var(--ease), opacity .3s var(--ease); opacity: 0; }
.dh-faq-item.is-open .dh-faq-a { opacity: 1; transition: max-height .45s var(--ease), padding .45s var(--ease), opacity .3s var(--ease) .1s; }

/* ---------- Work card border consistency ---------- */
.dh-case { border: 1px solid var(--border); }
.dh-case--featured { border-color: var(--accent); }
.dh-case--featured:hover { border-color: var(--accent); }
.dh-case:not(.dh-case--featured):hover { border-color: var(--accent); }

/* ---------- Floating buttons glassmorphism depth ---------- */
.dh-floating-btn {
    box-shadow: 0 10px 30px -8px rgba(0,0,0,.3), 0 0 0 1px rgba(255,255,255,.1) inset;
    -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
}
.dh-floating-btn:hover {
    box-shadow: 0 14px 36px -8px rgba(0,0,0,.4), 0 0 0 2px rgba(255,255,255,.15) inset;
}

/* ---------- Contact CTA enabled — stronger visual weight ---------- */
.dh-form .dh-btn-primary:not(:disabled) {
    background-image: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 78%, #b8321e));
    box-shadow: 0 14px 32px -10px color-mix(in srgb, var(--accent) 75%, transparent);
    font-weight: 600; letter-spacing: .01em;
}
.dh-form .dh-btn-primary:not(:disabled):hover {
    transform: translateY(-2px);
    box-shadow: 0 18px 40px -12px color-mix(in srgb, var(--accent) 85%, transparent);
}

/* ---------- Print: hide new elements ---------- */
@media print {
    .dh-case-featured-badge, .dh-service-toggle, .dh-stats { background-image: none !important; }
}

/* ==========================================================================
   v1.7.7 enhancements — hero grain texture, work view-all link, contact char
   counter, gallery uniform aspect-ratio grid, work featured shadow (no border),
   contact CTA disabled clearer, section spacing tightened, floating button ring.
   ========================================================================== */

/* ---------- Hero grain texture (subtle noise for tactile depth) ---------- */
.dh-hero-grain {
    position: absolute; inset: 0; z-index: 0;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
    opacity: .04; mix-blend-mode: overlay; pointer-events: none;
}
.dh-mode-dark .dh-hero-grain { opacity: .06; }

/* ---------- Work "View all projects" link ---------- */
.dh-work-footer { display: flex; justify-content: center; margin-top: 48px; }
.dh-work-viewall {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 14px 28px; border-radius: 999px;
    border: 1.5px solid var(--border); background: transparent;
    color: var(--text); font-size: 15px; font-weight: 600;
    transition: all .25s var(--ease);
}
.dh-work-viewall svg { width: 16px; height: 16px; transition: transform .2s; }
.dh-work-viewall:hover {
    border-color: var(--accent); color: var(--accent);
    background: var(--accent-soft); transform: translateY(-2px);
    box-shadow: 0 10px 24px -10px color-mix(in srgb, var(--accent) 40%, transparent);
}
.dh-work-viewall:hover svg { transform: translateX(4px); }
.dh-rtl .dh-work-viewall:hover svg { transform: translateX(-4px) rotate(180deg); }
.dh-rtl .dh-work-viewall svg { transform: rotate(180deg); }

/* ---------- Contact form character counter ---------- */
.dh-form-row label { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.dh-char-count {
    font-size: 11px; font-weight: 500; color: var(--text-muted);
    background: var(--bg-alt); padding: 2px 8px; border-radius: 999px;
    letter-spacing: 0; text-transform: none;
}

/* ---------- Gallery uniform aspect-ratio grid (was masonry) ---------- */
.dh-gallery-grid {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px;
    columns: auto;
}
.dh-gallery-item { margin-bottom: 0; aspect-ratio: 4/3; }
.dh-gallery-item img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: auto; min-height: 200px; }
@media (max-width: 768px) { .dh-gallery-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .dh-gallery-grid { grid-template-columns: 1fr; } }

/* ---------- Work featured — shadow/elevation instead of accent border ---------- */
.dh-case--featured { border-color: var(--border); }
.dh-case--featured {
    box-shadow: 0 20px 50px -20px color-mix(in srgb, var(--accent) 30%, transparent), 0 0 0 1px var(--border);
}
.dh-case--featured:hover {
    box-shadow: 0 24px 60px -18px color-mix(in srgb, var(--accent) 45%, transparent), 0 0 0 1px var(--accent);
}
.dh-case--featured::after {
    background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 4%, transparent), transparent 60%);
}

/* ---------- Contact CTA disabled — clearer ---------- */
.dh-form .dh-btn-primary:disabled {
    background: var(--bg-alt) !important; background-image: none !important;
    color: var(--text-muted) !important;
    border: 1px solid var(--border);
    box-shadow: none; cursor: not-allowed; opacity: 1;
}

/* ---------- Section spacing tightened (reduce excessive whitespace) ---------- */
.dh-section { padding: 88px 0; }
.dh-section-tight { padding: 64px 0; }
.dh-section-head { margin-bottom: 48px; }

/* ---------- Floating buttons — subtle ring for cohesion ---------- */
.dh-floating-btn {
    box-shadow: 0 10px 30px -8px rgba(0,0,0,.3), 0 0 0 1px rgba(255,255,255,.1) inset, 0 0 0 4px color-mix(in srgb, var(--bg) 50%, transparent);
}
.dh-floating-btn:hover {
    box-shadow: 0 14px 36px -8px rgba(0,0,0,.4), 0 0 0 2px rgba(255,255,255,.15) inset, 0 0 0 4px color-mix(in srgb, var(--bg) 80%, transparent);
}

/* ---------- Print: hide new elements ---------- */
@media print {
    .dh-hero-grain, .dh-work-footer, .dh-char-count { display: none !important; }
    .dh-gallery-grid { display: grid !important; }
}

/* ==========================================================================
   v1.7.8 enhancements — contact preference radio, FAQ sidebar decoration,
   services headline gradient underline, testimonial gradient border, gallery
   last-row centering, contact CTA clearer disabled.
   ========================================================================== */

/* ---------- Contact preference radio group ---------- */
.dh-radio-group { display: flex; gap: 8px; flex-wrap: wrap; }
.dh-radio {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 11px 16px; border: 1px solid var(--border); border-radius: 999px;
    background: var(--bg); color: var(--text-muted); font-size: 14px; font-weight: 500;
    cursor: pointer; transition: all .2s var(--ease);
}
.dh-radio:hover { border-color: var(--accent); color: var(--accent); }
.dh-radio.is-active {
    border-color: var(--accent); background: var(--accent-soft); color: var(--accent);
    font-weight: 600;
}
.dh-radio-dot {
    width: 16px; height: 16px; border-radius: 50%;
    border: 2px solid var(--border); background: var(--bg);
    position: relative; transition: all .2s var(--ease); flex-shrink: 0;
}
.dh-radio.is-active .dh-radio-dot { border-color: var(--accent); }
.dh-radio.is-active .dh-radio-dot::after {
    content: ""; position: absolute; top: 50%; left: 50%;
    transform: translate(-50%, -50%); width: 8px; height: 8px;
    border-radius: 50%; background: var(--accent);
}

/* ---------- FAQ sidebar decorative element ---------- */
.dh-faq-deco {
    margin-top: 32px; padding-top: 24px; border-top: 1px solid var(--border);
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.dh-faq-deco-circle {
    width: 10px; height: 10px; border-radius: 50%;
    background: color-mix(in srgb, var(--accent) 30%, transparent);
}
.dh-faq-deco-circle:nth-child(2) { background: color-mix(in srgb, var(--amber) 30%, transparent); }
.dh-faq-deco-circle:nth-child(3) { background: color-mix(in srgb, var(--accent) 15%, transparent); }
.dh-faq-deco-line {
    flex: 1; min-width: 40px; height: 2px;
    background: linear-gradient(90deg, var(--border), transparent);
    border-radius: 1px;
}

/* ---------- Services headline gradient underline (draws in on reveal) ---------- */
.dh-services-list { position: relative; }
.dh-section-head .dh-h2 { position: relative; }
#services .dh-section-head .dh-h2::after {
    content: ""; display: block; margin-top: 14px; height: 3px; width: 0;
    background: linear-gradient(90deg, var(--accent), var(--amber));
    border-radius: 2px; transition: width .8s var(--ease) .2s;
}
#services .dh-section-head.dh-reveal.is-visible .dh-h2::after { width: 64px; }

/* ---------- Testimonial gradient border on hover ---------- */
.dh-testi { position: relative; }
.dh-testi::before {
    content: ""; position: absolute; inset: 0; border-radius: var(--radius);
    padding: 1px; background: linear-gradient(135deg, var(--accent), var(--amber));
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor; mask-composite: exclude;
    opacity: 0; transition: opacity .3s var(--ease); pointer-events: none;
}
.dh-testi:hover::before { opacity: 1; }
.dh-testi--featured::before { opacity: .5; }
.dh-testi--featured:hover::before { opacity: 1; }

/* ---------- Gallery last-row centering ---------- */
.dh-gallery-grid { justify-content: center; }
.dh-gallery-item { justify-self: stretch; }

/* ---------- Contact CTA disabled — even clearer ---------- */
.dh-form .dh-btn-primary:disabled {
    background: var(--bg-alt) !important; background-image: none !important;
    color: var(--text-muted) !important;
    border: 1px solid var(--border);
    box-shadow: none; cursor: not-allowed; opacity: 1;
    position: relative;
}
.dh-form .dh-btn-primary:disabled::after {
    content: "↗"; margin-inline-start: 8px; opacity: .4;
}

/* ---------- Print: hide new elements ---------- */
@media print {
    .dh-faq-deco, .dh-radio-group { display: none !important; }
}

/* ==========================================================================
   v1.7.9 enhancements — FAQ quick-help card, help modal back-to-section,
   scroll-to-top pill redesign (fixes "N" misread), contact form glassmorphism,
   process step hover, floating button labels, services spacing.
   ========================================================================== */

/* ---------- FAQ sidebar "Quick Help" card ---------- */
.dh-quick-help {
    margin-top: 24px; padding: 24px;
    background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 8%, var(--bg-card)), var(--bg-card));
    border: 1px solid var(--border); border-radius: var(--radius);
    box-shadow: 0 12px 30px -16px rgba(0,0,0,.12);
}
.dh-quick-help-title {
    font-family: var(--font-heading); font-size: 18px; font-weight: 600;
    margin: 0 0 8px; line-height: 1.3;
}
.dh-quick-help-sub {
    font-size: 13.5px; color: var(--text-muted); line-height: 1.55;
    margin: 0 0 16px;
}
.dh-quick-help .dh-btn { width: 100%; justify-content: center; }
.dh-quick-help .dh-btn svg { width: 14px; height: 14px; transition: transform .2s; }
.dh-quick-help .dh-btn:hover svg { transform: translateX(3px); }
.dh-rtl .dh-quick-help .dh-btn:hover svg { transform: translateX(-3px) rotate(180deg); }
.dh-rtl .dh-quick-help .dh-btn svg { transform: rotate(180deg); }

/* ---------- Help modal "Back to section" button ---------- */
.dh-modal-back {
    display: flex; align-items: center; gap: 8px; width: 100%;
    margin-top: 20px; padding: 12px 16px; justify-content: center;
    border: 1px solid var(--border); border-radius: var(--radius-sm);
    font-size: 14px; color: var(--text); transition: all .2s var(--ease);
}
.dh-modal-back svg { width: 16px; height: 16px; transition: transform .2s; }
.dh-rtl .dh-modal-back svg { transform: rotate(180deg); }
.dh-modal-back:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }
.dh-modal-back:hover svg { transform: translateX(-3px); }
.dh-rtl .dh-modal-back:hover svg { transform: translateX(3px) rotate(180deg); }
.dh-modal-back strong { color: var(--accent); font-weight: 600; text-transform: capitalize; }

/* ---------- Scroll-to-top PILL (v2.1.0 — see consolidated rule at top of file; this block is dead) ---------- */
.dh-to-top-ring { display: none !important; } /* ring removed in v1.8.0 */
.dh-to-top-arrow { display: none !important; } /* dead element — kept for backward compat */

/* ---------- Contact form glassmorphism ---------- */
.dh-form {
    background: color-mix(in srgb, var(--bg-card) 85%, transparent);
    backdrop-filter: blur(12px) saturate(1.1); -webkit-backdrop-filter: blur(12px) saturate(1.1);
    border: 1px solid color-mix(in srgb, var(--text) 6%, var(--border));
    box-shadow: 0 20px 50px -24px rgba(0,0,0,.18), 0 0 0 1px color-mix(in srgb, var(--text) 3%, transparent);
}
.dh-mode-dark .dh-form {
    background: color-mix(in srgb, var(--bg-card) 75%, transparent);
    box-shadow: 0 24px 60px -20px rgba(0,0,0,.5), 0 0 0 1px color-mix(in srgb, var(--text) 8%, transparent);
}

/* ---------- Process step hover micro-interaction ---------- */
.dh-step { transition: transform .3s var(--ease); padding: 4px; border-radius: 12px; }
.dh-step:hover { transform: translateY(-4px); }
.dh-step:hover .dh-step-num { transform: scale(1.1); box-shadow: 0 10px 24px -6px color-mix(in srgb, var(--accent) 60%, transparent); }
.dh-step:hover .dh-step-title { color: var(--accent); }
.dh-step-title { transition: color .25s var(--ease); }

/* ---------- Floating button hover labels ---------- */
.dh-floating-btn { position: relative; }
.dh-floating-btn::after {
    content: attr(data-label); position: absolute; right: 68px; top: 50%; transform: translateY(-50%);
    background: var(--text); color: var(--bg); padding: 6px 12px; border-radius: 8px;
    font-size: 12px; font-weight: 600; white-space: nowrap;
    opacity: 0; pointer-events: none; transition: opacity .2s var(--ease);
}
.dh-rtl .dh-floating-btn::after { right: auto; left: 68px; }
.dh-floating-btn:hover::after { opacity: 1; }

/* ---------- Services spacing tightened (headline → first row) ---------- */
.dh-services-list { margin-top: -8px; }

/* ---------- Print: hide new elements ---------- */
@media print {
    .dh-quick-help, .dh-modal-back { display: none !important; }
}

/* ==========================================================================
   v1.8.0 WordPress-specific additions — preserves Elementor compatibility,
   utility kit (for the Advanced → CSS Classes field), accessibility focus,
   body-level scrollbar dark-mode polish, and skip-link styling. These are
   NOT in the Next.js preview but the WordPress theme needs them so that
   imported Elementor containers and keyboard users keep working.
   ========================================================================== */

/* ---------- Elementor compatibility ---------- */
.dh-elementor-canvas, body.dh-elementor-canvas .dh-main { padding: 0; margin: 0; }
.dh-main > .elementor { max-width: none; }
.elementor-editor-active .dh-reveal,
.elementor-location-header .dh-reveal,
.elementor-location-footer .dh-reveal { opacity: 1 !important; transform: none !important; }
body.elementor-editor-active { overflow-x: visible; }

/* ---------- Utility kit (for Elementor CSS Classes field) ---------- */
.dh-narrow { max-width: 760px; margin-left: auto; margin-right: auto; }
.dh-card {
    background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius);
    padding: 32px; transition: transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);
}
.dh-card:hover { transform: translateY(-4px); border-color: var(--accent); box-shadow: 0 20px 48px -24px color-mix(in srgb, var(--accent) 35%, transparent); }
.dh-badge {
    display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; border-radius: 999px;
    font-size: 12px; font-weight: 600; letter-spacing: .04em; background: var(--accent-soft); color: var(--accent);
}
.dh-divider { height: 1px; background: var(--border); border: 0; margin: 40px 0; }
.dh-avatar-group { display: flex; }
.dh-avatar-group img { width: 42px; height: 42px; border-radius: 50%; border: 2px solid var(--bg); object-fit: cover; margin-left: -12px; }
.dh-avatar-group img:first-child { margin-left: 0; }
.dh-eyebrow-chip {
    display: inline-block; font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
    color: var(--accent); border: 1px solid var(--accent-soft); background: var(--accent-soft);
    padding: 6px 12px; border-radius: 8px; margin-bottom: 16px;
}
.dh-hover-lift { transition: transform .3s var(--ease); }
.dh-hover-lift:hover { transform: translateY(-6px); }
.dh-shadow-soft { box-shadow: 0 20px 50px -28px rgba(0,0,0,.25); }
.dh-ring-accent { box-shadow: 0 0 0 1px var(--border); }
.dh-ring-accent:hover { box-shadow: 0 0 0 1.5px var(--accent); }

/* ---------- Marquee logo strip (utility) ---------- */
.dh-marquee { overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); }
.dh-marquee-track { display: flex; gap: 48px; animation: dh-marquee 26s linear infinite; width: max-content; }
@keyframes dh-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .dh-marquee-track { animation: none; } }
.dh-divider-wave { height: 40px; width: 100%; color: var(--bg-alt); display: block; }
.dh-shimmer { position: relative; overflow: hidden; }
.dh-shimmer::after {
    content: ""; position: absolute; inset: 0;
    background: linear-gradient(110deg, transparent 30%, color-mix(in srgb, var(--accent) 10%, transparent) 50%, transparent 70%);
    transform: translateX(-100%); transition: transform .8s var(--ease); pointer-events: none;
}
.dh-shimmer:hover::after { transform: translateX(100%); }

/* ---------- Skip-link ---------- */
.skip-link.screen-reader-text {
    position: absolute; left: -9999px; top: 0; z-index: 9999;
    background: var(--accent); color: #fff; padding: 12px 20px; border-radius: 0 0 8px 0;
    clip: auto; clip-path: none; height: auto; width: auto; margin: 0;
}
.skip-link.screen-reader-text:focus {
    left: 0; clip: auto; clip-path: none; height: auto; width: auto; overflow: visible;
}

/* ---------- High-contrast focus ---------- */
:focus-visible { outline-offset: 3px; }

/* ---------- Body-level scrollbar dark-mode polish ---------- */
body.dh-mode-dark ::-webkit-scrollbar-track { background: var(--bg-alt); }
body.dh-mode-dark ::-webkit-scrollbar-thumb { background: var(--border); border-color: var(--bg-alt); }

/* ---------- Download banner (utility) ---------- */
.dh-download-bar { position: fixed; bottom: 0; left: 0; right: 0; z-index: 95; background: var(--accent); color: #fff; padding: 11px 20px; display: flex; align-items: center; justify-content: center; gap: 14px; flex-wrap: wrap; font-size: 14px; }
.dh-download-bar a { background: #fff; color: var(--accent); padding: 7px 16px; border-radius: 8px; font-weight: 600; font-size: 13px; text-decoration: none; }
.dh-download-bar a:hover { opacity: .9; }

/* ---------- Blog / 404 (used by index.php, archive.php, search.php, 404.php) ---------- */
.dh-posts-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.dh-post { border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; background: var(--bg-card); }
.dh-post-thumb img { width: 100%; height: 200px; object-fit: cover; }
.dh-post-body { padding: 22px; }
.dh-post-title { font-size: 20px; margin-bottom: 10px; }
.dh-post-title a:hover { color: var(--accent); }
.dh-post-excerpt { color: var(--text-muted); font-size: 14px; }
.dh-readmore { display: inline-block; margin-top: 14px; color: var(--accent); font-size: 14px; }
.dh-404-num { font-family: var(--font-heading); font-size: clamp(120px, 22vw, 240px); line-height: 1; color: var(--accent); opacity: .15; }
.dh-404 .dh-h2 { margin: -40px 0 20px; }
@media (max-width: 960px) { .dh-posts-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .dh-posts-grid { grid-template-columns: 1fr; } }

/* ==========================================================================
   v2.0.1 — layout-variant classes for the Theme Options + Customizer
   ----------------------------------------------------------------------------
   The Theme Options panel lets the user pick a layout/style for several
   sections (hero layout / hero text-align / stats bg / services layout /
   process step style / gallery layout). The templates emit the matching
   modifier class — this block adds the actual CSS for each variant so the
   panel choices take effect on the front end (and in the Customizer preview).
   ========================================================================== */

/* ---------- Hero layout variants ---------- */
.dh-hero--centered { text-align: center; }
.dh-hero--centered .dh-hero-inner { flex-direction: column; align-items: center; text-align: center; }
.dh-hero--centered .dh-hero-copy { max-width: 720px; }
.dh-hero--centered .dh-hero-actions { justify-content: center; }
.dh-hero--full-width .dh-hero-inner { max-width: none; padding: 0 28px; }
.dh-hero--full-width .dh-hero-copy { max-width: 640px; margin-inline: auto; }
.dh-hero--minimal .dh-hero-bg .dh-hero-img,
.dh-hero--minimal .dh-hero-overlay { display: none; }
.dh-hero--minimal .dh-hero-bg { background: var(--bg-alt); }
.dh-hero--minimal .dh-hero-card { display: none; }

/* ---------- Hero text-align variants ---------- */
.dh-hero--align-center .dh-hero-copy,
.dh-hero--align-center .dh-hero-actions { text-align: center; justify-content: center; }
.dh-hero--align-right .dh-hero-copy,
.dh-hero--align-right .dh-hero-actions { text-align: right; justify-content: flex-end; }
.dh-rtl .dh-hero--align-right .dh-hero-actions { justify-content: flex-start; }

/* ---------- Stats section background variants ---------- */
.dh-stats--bg-alt { background: var(--bg-alt); }
.dh-stats--bg-dark { background: var(--bg); color: var(--text); }
html.dh-mode-dark .dh-stats--bg-dark,
body.dh-mode-dark .dh-stats--bg-dark { background: #0c0b10; color: var(--text); }
.dh-stats--bg-pattern {
    background-color: var(--bg-alt);
    background-image: radial-gradient(circle, var(--border) 1px, transparent 1.5px);
    background-size: 22px 22px;
}

/* ---------- Services layout variants (v2.1.0 — list & grid, all rows open) ---------- */
.dh-services--list .dh-service-row { display: grid; grid-template-columns: 0.7fr 2fr; gap: 48px; padding: 42px 0; border-bottom: 1px solid var(--border); align-items: start; }
.dh-services--list .dh-features { display: grid; }
.dh-services--grid .dh-services-list {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px;
}
.dh-services--grid .dh-service-row { border: 1px solid var(--border); border-radius: var(--radius); padding: 24px; background: var(--bg-card); grid-template-columns: 1fr; gap: 16px; }
.dh-services--grid .dh-features { display: grid; }
@media (max-width: 960px) {
    .dh-services--grid .dh-services-list { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
    .dh-services--grid .dh-services-list { grid-template-columns: 1fr; }
}

/* ---------- Process step style variants (v3.0.0: moved to .dh-process-step-- prefix to avoid collision with the new layout class) ---------- */
.dh-process-step--square .dh-step-num { border-radius: var(--radius-sm); }
.dh-process-step--tab .dh-step-num { border-radius: 999px 999px 0 0; border-bottom: 0; }
.dh-process-step--number-only .dh-step-num { border: 0; background: none; color: var(--accent); font-weight: 700; }
/* Backward compat: keep the old .dh-process--square / .dh-process--tab rules
   working too (they don't conflict with the new layout values, since none of
   the layout values are 'square' or 'tab'). */
.dh-process--square .dh-step-num { border-radius: var(--radius-sm); }
.dh-process--tab .dh-step-num { border-radius: 999px 999px 0 0; border-bottom: 0; }

/* ---------- Gallery layout variants ---------- */
.dh-gallery--masonry .dh-gallery-grid { display: block; columns: 3; column-gap: 18px; }
.dh-gallery--masonry .dh-gallery-item { display: inline-block; width: 100%; margin-bottom: 18px; break-inside: avoid; }
.dh-gallery--masonry .dh-gallery-item img { position: static; width: 100%; height: auto; }
@media (max-width: 960px) { .dh-gallery--masonry .dh-gallery-grid { columns: 2; } }
@media (max-width: 560px) { .dh-gallery--masonry .dh-gallery-grid { columns: 1; } }
.dh-gallery--carousel .dh-gallery-grid { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 18px; padding-bottom: 8px; }
.dh-gallery--carousel .dh-gallery-item { flex: 0 0 320px; scroll-snap-align: start; }

/* ---------- Contact form glassmorphism off ---------- */
.dh-form.dh-form--no-glass {
    background: transparent !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    box-shadow: none !important;
    border: 1px solid var(--border);
}

/* ---------- Stats background "dark" variant polish ---------- */
.dh-stats--bg-dark .dh-stat-value { color: var(--accent); }
.dh-stats--bg-dark .dh-stat-label { color: var(--text-muted); }
.dh-stats--bg-dark .dh-stat-icon { background: color-mix(in srgb, var(--accent) 20%, transparent); }

/* ---------- Hero video background support ---------- */
.dh-hero-bg video.dh-hero-video {
    position: absolute; inset: 0; width: 100%; height: 100%;
    object-fit: cover; opacity: .45;
}
.dh-mode-dark .dh-hero-bg video.dh-hero-video { opacity: .5; }

/* ---------- Hero gradient background support ---------- */
.dh-hero--bg-gradient .dh-hero-bg {
    background: linear-gradient(135deg, var(--accent), var(--amber));
}
.dh-hero--bg-solid .dh-hero-bg { background: var(--bg-alt); }
.dh-hero--bg-solid .dh-hero-img,
.dh-hero--bg-gradient .dh-hero-img { display: none; }

/* ---------- Reduced motion: kill the new layout animations too ---------- */
@media (prefers-reduced-motion: reduce) {
    .dh-hero-scroll { animation: none; }
    .dh-hero-card-dot { animation: none; }
}

/* ==========================================================================
   v2.1.0 — Top bar, Pricing, Team, CTA banner, Logos, enhanced Footer
   ========================================================================== */

/* ---------- Top bar ---------- */
.dh-topbar {
    background: var(--bg); color: var(--text);
    border-bottom: 1px solid var(--border);
    font-size: 12.5px; line-height: 1.4;
}
.dh-mode-dark .dh-topbar { background: var(--bg-alt); }
.dh-topbar-inner {
    display: flex; align-items: center; justify-content: space-between;
    gap: 16px; padding: 8px 0; flex-wrap: wrap;
}
.dh-topbar-left { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; color: var(--text-muted); }
.dh-topbar-item { display: inline-flex; align-items: center; gap: 6px; }
.dh-topbar-item svg { width: 14px; height: 14px; color: var(--accent); }
.dh-topbar-item a { color: inherit; text-decoration: none; }
.dh-topbar-item a:hover { color: var(--accent); }
.dh-topbar-text { color: var(--text-muted); }
.dh-topbar-social { display: flex; align-items: center; gap: 6px; }
.dh-topbar-social a {
    display: inline-grid; place-items: center;
    width: 22px; height: 22px; border-radius: 50%;
    background: var(--bg-alt); color: var(--text-muted);
    font-size: 10px; font-weight: 700; text-decoration: none;
    transition: .2s var(--ease);
}
.dh-topbar-social a:hover { background: var(--accent); color: #fff; }
@media (max-width: 720px) {
    .dh-topbar-text, .dh-topbar-social { display: none; }
}

/* ---------- Header v2.1.0 — sticky + shadow on scroll ---------- */
.dh-header { position: sticky; top: 0; z-index: 100; transition: box-shadow .3s var(--ease), background .3s var(--ease); }
.dh-header.is-scrolled { box-shadow: 0 4px 20px -8px rgba(0,0,0,.15); }
.dh-cta-pill svg { transition: transform .2s var(--ease); }
.dh-cta-pill:hover svg { transform: translateX(3px); }

/* ---------- Mobile menu — full-screen overlay ---------- */
@media (max-width: 960px) {
    .dh-nav {
        position: fixed; inset: 0; z-index: 200;
        background: var(--bg);
        display: grid; place-items: center;
        opacity: 0; visibility: hidden;
        transition: opacity .3s var(--ease), visibility .3s var(--ease);
    }
    .dh-nav.is-open { opacity: 1; visibility: visible; }
    .dh-nav ul { flex-direction: column; gap: 24px; text-align: center; }
    .dh-nav ul li a { font-size: 28px; font-family: var(--font-heading); }
    .dh-mobile-controls { display: flex; flex-direction: column; gap: 16px; margin-top: 32px; align-items: center; }
}

/* ---------- Pricing ---------- */
.dh-pricing { background: var(--bg-alt); }
.dh-pricing-grid {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px;
    margin-top: 40px;
}
.dh-price-card {
    position: relative; background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius); padding: 32px 28px;
    display: flex; flex-direction: column; gap: 18px;
    transition: .35s var(--ease);
}
.dh-price-card:hover { transform: translateY(-4px); box-shadow: 0 18px 50px -24px rgba(0,0,0,.18); border-color: var(--accent); }
.dh-price-card.is-featured {
    border-color: var(--accent);
    background: color-mix(in srgb, var(--accent) 5%, var(--bg-card));
    box-shadow: 0 20px 60px -28px color-mix(in srgb, var(--accent) 50%, transparent);
}
.dh-price-badge {
    position: absolute; top: -12px; left: 50%; transform: translateX(-50%);
    background: var(--accent); color: #fff;
    padding: 5px 14px; border-radius: 999px;
    font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase;
}
.dh-price-name { font-family: var(--font-heading); font-size: 22px; font-weight: 600; margin: 0; }
.dh-price-amount { display: flex; align-items: baseline; gap: 4px; }
.dh-price-value { font-family: var(--font-heading); font-size: 40px; font-weight: 700; color: var(--accent); line-height: 1; }
.dh-price-period { font-size: 14px; color: var(--text-muted); }
.dh-price-desc { font-size: 14px; color: var(--text-muted); margin: 0; min-height: 40px; }
.dh-price-features { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.dh-price-features li { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; }
.dh-price-features li svg { width: 16px; height: 16px; color: var(--accent); flex-shrink: 0; margin-top: 3px; }
.dh-price-card .dh-btn { margin-top: auto; }
@media (max-width: 960px) { .dh-pricing-grid { grid-template-columns: 1fr; max-width: 480px; margin-inline: auto; } }

/* ---------- Team ---------- */
.dh-team-grid {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px;
    margin-top: 40px;
}
.dh-team-card {
    background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius); overflow: hidden;
    transition: .35s var(--ease);
}
.dh-team-card:hover { transform: translateY(-4px); border-color: var(--accent); box-shadow: 0 18px 50px -24px rgba(0,0,0,.18); }
.dh-team-photo {
    aspect-ratio: 1; background: linear-gradient(135deg, var(--accent-soft), color-mix(in srgb, var(--amber) 20%, transparent));
    display: grid; place-items: center; overflow: hidden;
}
.dh-team-photo img { width: 100%; height: 100%; object-fit: cover; }
.dh-team-initials {
    font-family: var(--font-heading); font-size: 56px; font-weight: 600;
    color: var(--accent); opacity: .8;
}
.dh-team-body { padding: 22px 20px; }
.dh-team-name { font-family: var(--font-heading); font-size: 19px; font-weight: 600; margin: 0 0 4px; }
.dh-team-role { font-size: 13px; color: var(--accent); margin: 0 0 10px; font-weight: 600; }
.dh-team-bio { font-size: 14px; color: var(--text-muted); line-height: 1.55; margin: 0 0 14px; }
.dh-team-social { display: flex; gap: 8px; }
.dh-team-social a {
    display: inline-grid; place-items: center;
    width: 28px; height: 28px; border-radius: 50%;
    background: var(--bg-alt); color: var(--text-muted);
    font-size: 11px; font-weight: 700; text-decoration: none;
    transition: .2s var(--ease);
}
.dh-team-social a:hover { background: var(--accent); color: #fff; }
@media (max-width: 960px) { .dh-team-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .dh-team-grid { grid-template-columns: 1fr; max-width: 320px; margin-inline: auto; } }

/* ---------- CTA banner ---------- */
.dh-cta-banner {
    background: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--amber) 70%, var(--accent)));
    color: #fff; padding: 80px 0; text-align: center;
}
.dh-cta-banner-inner { max-width: 720px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; gap: 16px; }
.dh-cta-banner-label {
    color: rgba(255,255,255,.85); background: rgba(255,255,255,.15);
    padding: 4px 12px; border-radius: 999px; font-size: 12px; font-weight: 600; letter-spacing: .05em;
}
.dh-cta-banner-title { font-family: var(--font-heading); font-size: clamp(28px, 3.5vw, 44px); font-weight: 700; margin: 0; line-height: 1.15; }
.dh-cta-banner-sub { font-size: 16px; line-height: 1.6; opacity: .9; margin: 0; max-width: 580px; }
.dh-btn-light { background: #fff; color: var(--accent); border: 0; }
.dh-btn-light:hover { background: var(--bg); transform: translateY(-2px); }
.dh-btn-light svg { width: 16px; height: 16px; transition: transform .2s var(--ease); }
.dh-btn-light:hover svg { transform: translateX(3px); }
.dh-btn-lg { padding: 14px 28px; font-size: 16px; }

/* ---------- Logos ---------- */
.dh-logos { background: var(--bg-alt); padding: 60px 0; }
.dh-logos-strip {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
    gap: 36px 48px; margin-top: 32px;
}
.dh-logo-item {
    font-family: var(--font-heading); font-size: 22px; font-weight: 600;
    color: var(--text-muted); opacity: .65;
    text-decoration: none; transition: .25s var(--ease);
    letter-spacing: -.01em;
}
.dh-logo-item:hover { color: var(--accent); opacity: 1; transform: translateY(-2px); }
@media (max-width: 720px) {
    .dh-logos-strip { gap: 22px 28px; }
    .dh-logo-item { font-size: 18px; }
}

/* ---------- Footer v2.1.0 — contact card + feed grid + back-to-top ---------- */
.dh-footer-top { grid-template-columns: 1fr; }
.dh-footer-cols { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; }
.dh-footer-contact .dh-contact-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 12px; }
.dh-footer-contact .dh-contact-list li { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; color: var(--text-muted); line-height: 1.5; }
.dh-footer-contact .dh-contact-list svg { width: 16px; height: 16px; color: var(--accent); flex-shrink: 0; margin-top: 3px; }
.dh-footer-contact .dh-contact-list a { color: inherit; text-decoration: none; }
.dh-footer-contact .dh-contact-list a:hover { color: var(--accent); }
.dh-footer-feed { margin-top: 20px; }
.dh-footer-feed-label { display: block; font-size: 12px; font-weight: 600; letter-spacing: .05em; color: var(--text-muted); margin-bottom: 10px; text-transform: uppercase; }
.dh-feed-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; max-width: 200px; }
.dh-feed-item { display: block; aspect-ratio: 1; overflow: hidden; border-radius: 6px; background: var(--bg-alt); }
.dh-feed-item img { width: 100%; height: 100%; object-fit: cover; transition: .25s var(--ease); }
.dh-feed-item:hover img { transform: scale(1.1); opacity: .85; }
.dh-footer-back-top a {
    color: var(--accent); font-weight: 600; text-decoration: none;
    transition: .2s var(--ease);
}
.dh-footer-back-top a:hover { transform: translateY(-2px); }
@media (max-width: 960px) { .dh-footer-cols { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .dh-footer-cols { grid-template-columns: 1fr; } }

/* ---------- Stats: 8 items in 4 cols (2 rows) ---------- */
.dh-stats-grid { grid-template-columns: repeat(var(--dh-stats-cols, 4), 1fr); }
@media (max-width: 960px) { .dh-stats-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .dh-stats-grid { grid-template-columns: repeat(2, 1fr); gap: 24px; } }

/* ---------- Logo strip marquee (v2.1.0) ---------- */
.dh-logos { padding: 48px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.dh-marquee {
    overflow: hidden; width: 100%;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.dh-marquee-track {
    display: flex; gap: 64px; width: max-content;
    animation: dh-logo-marquee 30s linear infinite;
}
.dh-logo-item {
    font-family: var(--font-heading); font-size: 22px; font-weight: 600;
    color: var(--text-muted); white-space: nowrap;
    transition: color .25s var(--ease);
    cursor: default; user-select: none;
}
.dh-logo-item:hover { color: var(--accent); }
@keyframes dh-logo-marquee {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
}
.dh-marquee:hover .dh-marquee-track { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) {
    .dh-marquee-track { animation: none; }
}

/* ==========================================================================
   v2.2.0 — Multiple layout options for each section.
   The user selects a layout in the Theme Options panel (e.g. dh_hero_layout).
   The template part outputs it as a class on the <section> element.
   Each layout variant has its own CSS below.
   ========================================================================== */

/* ---------- Hero layouts ----------
   .dh-hero--split (default): text left + stat card right
   .dh-hero--centered: text centered, no stat card
   .dh-hero--full-width: text centered, full-width bg image
   .dh-hero--minimal: text only, no bg image, no card
   .dh-hero--video: video background instead of image
*/
.dh-hero--centered .dh-hero-inner { flex-direction: column; align-items: center; text-align: center; }
.dh-hero--centered .dh-hero-copy { max-width: 760px; }
.dh-hero--centered .dh-hero-actions { justify-content: center; }
.dh-hero--centered .dh-hero-card { display: none; }
.dh-hero--centered .dh-eyebrow,
.dh-hero--centered .dh-hero-title,
.dh-hero--centered .dh-hero-sub { margin-left: auto; margin-right: auto; }

.dh-hero--full-width { min-height: 100vh; }
.dh-hero--full-width .dh-hero-img { opacity: .6; }
.dh-hero--full-width .dh-hero-card { display: none; }
.dh-hero--full-width .dh-hero-copy { max-width: 800px; margin: 0 auto; text-align: center; }
.dh-hero--full-width .dh-hero-actions { justify-content: center; }

.dh-hero--minimal { min-height: auto; padding: calc(var(--header-h) + 80px) 0 60px; }
.dh-hero--minimal .dh-hero-bg { display: none; }
.dh-hero--minimal .dh-hero-card { display: none; }
.dh-hero--minimal .dh-hero-copy { max-width: 800px; }

.dh-hero--video .dh-hero-img { display: none; }
.dh-hero--video .dh-hero-overlay { background: rgba(0,0,0,.4); }
.dh-hero--video .dh-hero-copy { color: #fff; }
.dh-hero--video .dh-hero-sub { color: rgba(255,255,255,.8); }

/* ---------- About layouts ----------
   .dh-about--split (default): 2-col grid
   .dh-about--centered: single column centered
   .dh-about--cards: 3-col card grid (title + text + stats)
*/
.dh-about--centered .dh-about-grid { grid-template-columns: 1fr; text-align: center; max-width: 760px; margin: 0 auto; }
.dh-about--centered .dh-about-right { padding-top: 0; }
.dh-about--centered .dh-lead { margin: 0 auto; }

.dh-about--cards .dh-about-grid { grid-template-columns: repeat(3, 1fr); gap: 32px; }
.dh-about--cards .dh-about-left { grid-column: 1 / -1; text-align: center; margin-bottom: 16px; }
.dh-about--cards .dh-about-right { padding-top: 0; }

/* ---------- Services layouts ----------
   .dh-services--list (default): 2-col rows
   .dh-services--grid: 3-col card grid
   .dh-services--cards: 2-col cards with borders
*/
.dh-services--grid .dh-services-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.dh-services--grid .dh-service-row { display: flex; flex-direction: column; gap: 16px; padding: 28px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); }
.dh-services--grid .dh-service-meta { display: contents; }

.dh-services--cards .dh-services-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }
.dh-services--cards .dh-service-row { display: flex; flex-direction: column; gap: 16px; padding: 32px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); box-shadow: 0 10px 30px -15px rgba(0,0,0,.1); }
.dh-services--cards .dh-service-meta { display: contents; }

/* ---------- Work layouts ----------
   .dh-work--grid (default): 2-col grid
   .dh-work--masonry: CSS columns masonry
   .dh-work--list: single column full-width cards
*/
.dh-work--masonry .dh-work-grid { display: block; columns: 2; column-gap: 24px; }
.dh-work--masonry .dh-case { break-inside: avoid; margin-bottom: 24px; }

.dh-work--list .dh-work-grid { grid-template-columns: 1fr; max-width: 800px; margin: 0 auto; }
.dh-work--list .dh-case { display: flex; flex-direction: row; }
.dh-work--list .dh-case-image { width: 45%; flex-shrink: 0; aspect-ratio: 16/10; }
.dh-work--list .dh-case-body { flex: 1; padding: 28px; }

/* ---------- Gallery layouts ----------
   .dh-gallery--grid (default): uniform 4/3 grid
   .dh-gallery--masonry: CSS columns masonry
   .dh-gallery--slider: horizontal scroll slider
*/
.dh-gallery--masonry .dh-gallery-grid { display: block; columns: 3; column-gap: 18px; }
.dh-gallery--masonry .dh-gallery-item { aspect-ratio: auto; margin-bottom: 18px; }

.dh-gallery--slider .dh-gallery-grid { display: flex; overflow-x: auto; gap: 18px; scroll-snap-type: x mandatory; padding-bottom: 12px; }
.dh-gallery--slider .dh-gallery-item { flex: 0 0 380px; scroll-snap-align: start; }

/* ---------- Testimonials layouts ----------
   .dh-testi--grid (default): 2-col card grid + carousel
   .dh-testi--list: single column stacked
   .dh-testi--masonry: CSS columns
*/
.dh-testi--list .dh-testi-grid { grid-template-columns: 1fr; max-width: 760px; margin: 0 auto; }
.dh-testi--masonry .dh-testi-grid { display: block; columns: 2; column-gap: 22px; }
.dh-testi--masonry .dh-testi { break-inside: avoid; margin-bottom: 22px; }

/* ---------- Process layouts ----------
   .dh-process--timeline (default): 4-col with connector line
   .dh-process--vertical: vertical timeline
   .dh-process--cards: 2-col cards
*/
.dh-process--vertical .dh-process-grid { grid-template-columns: 1fr; max-width: 640px; margin: 0 auto; }
.dh-process--vertical .dh-process-line { display: none; }
.dh-process--vertical .dh-step { display: flex; gap: 20px; align-items: flex-start; padding: 24px 0; border-bottom: 1px solid var(--border); }
.dh-process--vertical .dh-step-num { flex-shrink: 0; margin-bottom: 0; }

.dh-process--cards .dh-process-grid { grid-template-columns: 1fr 1fr; gap: 20px; }
.dh-process--cards .dh-step { padding: 28px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); }
.dh-process--cards .dh-process-line { display: none; }

/* ---------- FAQ layouts ----------
   .dh-faq--sidebar (default): 2-col sidebar + accordion
   .dh-faq--centered: single column centered
   .dh-faq--boxed: boxed cards
*/
.dh-faq--centered .dh-faq-grid { grid-template-columns: 1fr; max-width: 760px; margin: 0 auto; }
.dh-faq--centered .dh-faq-side { text-align: center; position: static; }
.dh-faq--centered .dh-faq-search { max-width: 480px; margin: 22px auto 0; }

.dh-faq--boxed .dh-faq-item { border: 1px solid var(--border); border-radius: var(--radius); padding: 0 20px; margin-bottom: 12px; background: var(--bg-card); }
.dh-faq--boxed .dh-faq-q { padding: 20px 0; }

/* ---------- Contact layouts ----------
   .dh-contact--split (default): 2-col info + form
   .dh-contact--centered: single column centered form
   .dh-contact--minimal: form only, no info column
*/
.dh-contact--centered .dh-contact-grid { grid-template-columns: 1fr; max-width: 640px; margin: 0 auto; }
.dh-contact--centered .dh-contact-left { text-align: center; margin-bottom: 32px; }
.dh-contact--centered .dh-contact-links { align-items: center; }

.dh-contact--minimal .dh-contact-left { display: none; }
.dh-contact--minimal .dh-contact-grid { grid-template-columns: 1fr; max-width: 640px; margin: 0 auto; }

/* ---------- Responsive ---------- */
@media (max-width: 960px) {
    .dh-services--grid .dh-services-list,
    .dh-services--cards .dh-services-list { grid-template-columns: 1fr; }
    .dh-about--cards .dh-about-grid { grid-template-columns: 1fr; }
    .dh-work--masonry .dh-work-grid { columns: 1; }
    .dh-work--list .dh-case { flex-direction: column; }
    .dh-work--list .dh-case-image { width: 100%; }
    .dh-gallery--masonry .dh-gallery-grid { columns: 1; }
    .dh-testi--masonry .dh-testi-grid { columns: 1; }
    .dh-process--cards .dh-process-grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   v2.3.0 — COMPLETELY NEW multi-layout system for every section.
   5 layouts per section, all new designs (replaces old v2.2.0 layouts).
   Select via Theme Options → each section tab → Layout radio.
   ========================================================================== */

/* ============ HERO — 5 LAYOUTS ============ */
/* Layout 1: dh-hero--split (default) — text left + glass card right */
/* (already defined above, kept as default) */

/* Layout 2: dh-hero--centered — big centered headline, no card */
.dh-hero--centered .dh-hero-inner { flex-direction: column; align-items: center; text-align: center; }
.dh-hero--centered .dh-hero-copy { max-width: 820px; }
.dh-hero--centered .dh-hero-actions { justify-content: center; }
.dh-hero--centered .dh-hero-card { display: none; }

/* Layout 3: dh-hero--fullscreen — full viewport, image prominent */
.dh-hero--fullscreen { min-height: 100vh; }
.dh-hero--fullscreen .dh-hero-img { opacity: .55; }
.dh-hero--fullscreen .dh-hero-overlay { background: linear-gradient(180deg, transparent 0%, transparent 40%, var(--bg) 95%); }
.dh-hero--fullscreen .dh-hero-card { display: none; }
.dh-hero--fullscreen .dh-hero-copy { max-width: 800px; margin: 0 auto; text-align: center; }
.dh-hero--fullscreen .dh-hero-actions { justify-content: center; }

/* Layout 4: dh-hero--minimal — no bg image, clean text only */
.dh-hero--minimal { min-height: auto; padding: calc(var(--header-h) + 100px) 0 80px; background: var(--bg-alt); }
.dh-hero--minimal .dh-hero-bg { display: none; }
.dh-hero--minimal .dh-hero-card { display: none; }
.dh-hero--minimal .dh-hero-copy { max-width: 760px; }

/* Layout 5: dh-hero--magazine — text overlaid on image, bottom-left */
.dh-hero--magazine { min-height: 90vh; }
.dh-hero--magazine .dh-hero-img { opacity: .65; }
.dh-hero--magazine .dh-hero-overlay { background: linear-gradient(135deg, rgba(0,0,0,.5) 0%, transparent 60%); }
.dh-hero--magazine .dh-hero-inner { align-items: flex-end; }
.dh-hero--magazine .dh-hero-copy { color: #fff; }
.dh-hero--magazine .dh-hero-sub { color: rgba(255,255,255,.85); }
.dh-hero--magazine .dh-eyebrow { color: var(--amber); }
.dh-hero--magazine .dh-hero-card { display: none; }

/* ============ ABOUT — 5 LAYOUTS ============ */
/* Layout 1: dh-about--split (default) — 2-col label/title + text */
/* (already defined) */

/* Layout 2: dh-about--centered — single column centered */
.dh-about--centered .dh-about-grid { grid-template-columns: 1fr; text-align: center; max-width: 760px; margin: 0 auto; }
.dh-about--centered .dh-about-right { padding-top: 0; }

/* Layout 3: dh-about--cards — 3-col card grid */
.dh-about--cards .dh-about-grid { grid-template-columns: repeat(3, 1fr); gap: 32px; }
.dh-about--cards .dh-about-left { grid-column: 1 / -1; text-align: center; margin-bottom: 16px; }
.dh-about--cards .dh-about-right { padding-top: 0; }

/* Layout 4: dh-about--banner — full-width accent bg + centered text */
.dh-about--banner { background: var(--accent); color: #fff; }
.dh-about--banner .dh-about-grid { grid-template-columns: 1fr; text-align: center; max-width: 800px; margin: 0 auto; }
.dh-about--banner .dh-label { color: rgba(255,255,255,.7); }
.dh-about--banner .dh-h2 { color: #fff; }
.dh-about--banner .dh-lead { color: rgba(255,255,255,.85); }

/* Layout 5: dh-about--quote — large italic quote style */
.dh-about--quote .dh-about-grid { grid-template-columns: 1fr; text-align: center; max-width: 820px; margin: 0 auto; }
.dh-about--quote .dh-h2 { font-size: clamp(28px, 4vw, 44px); font-style: italic; }
.dh-about--quote .dh-lead { font-size: 18px; margin-top: 24px; }

/* ============ SERVICES — 5 LAYOUTS ============ */
/* Layout 1: dh-services--list (default) — 2-col rows */
/* (already defined) */

/* Layout 2: dh-services--grid — 3-col card grid */
.dh-services--grid .dh-services-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.dh-services--grid .dh-service-row { display: flex; flex-direction: column; gap: 16px; padding: 32px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); transition: transform .3s var(--ease), box-shadow .3s var(--ease); }
.dh-services--grid .dh-service-row:hover { transform: translateY(-4px); box-shadow: 0 20px 40px -20px rgba(0,0,0,.15); border-color: var(--accent); }
.dh-services--grid .dh-service-meta { display: contents; }

/* Layout 3: dh-services--cards — 2-col cards with shadow */
.dh-services--cards .dh-services-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }
.dh-services--cards .dh-service-row { display: flex; flex-direction: column; gap: 16px; padding: 36px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); box-shadow: 0 10px 30px -15px rgba(0,0,0,.12); }
.dh-services--cards .dh-service-meta { display: contents; }

/* Layout 4: dh-services--tabs — horizontal scroll tabs */
.dh-services--tabs .dh-services-list { display: flex; gap: 16px; overflow-x: auto; padding-bottom: 12px; scroll-snap-type: x mandatory; }
.dh-services--tabs .dh-service-row { flex: 0 0 360px; scroll-snap-align: start; display: flex; flex-direction: column; gap: 16px; padding: 28px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); }
.dh-services--tabs .dh-service-meta { display: contents; }

/* Layout 5: dh-services--minimal — no borders, just text + number */
.dh-services--minimal .dh-services-list { display: grid; grid-template-columns: 1fr; gap: 0; }
.dh-services--minimal .dh-service-row { display: grid; grid-template-columns: 60px 1fr; gap: 32px; padding: 32px 0; border-bottom: 1px solid var(--border); }
.dh-services--minimal .dh-service-meta { display: contents; }
.dh-services--minimal .dh-features { display: none; }

/* ============ WORK — 5 LAYOUTS ============ */
/* Layout 1: dh-work--grid (default) — 2-col grid */
/* (already defined) */

/* Layout 2: dh-work--masonry — CSS columns masonry */
.dh-work--masonry .dh-work-grid { display: block; columns: 2; column-gap: 24px; }
.dh-work--masonry .dh-case { break-inside: avoid; margin-bottom: 24px; }

/* Layout 3: dh-work--list — horizontal cards (image left, text right) */
.dh-work--list .dh-work-grid { grid-template-columns: 1fr; max-width: 820px; margin: 0 auto; }
.dh-work--list .dh-case { display: flex; flex-direction: row; }
.dh-work--list .dh-case-image { width: 45%; flex-shrink: 0; aspect-ratio: 16/10; }
.dh-work--list .dh-case-body { flex: 1; padding: 28px; }

/* Layout 4: dh-work--featured — first card full-width, rest 2-col */
.dh-work--featured .dh-work-grid { grid-template-columns: 1fr; }
.dh-work--featured .dh-case:first-child { grid-column: 1 / -1; display: flex; flex-direction: row; }
.dh-work--featured .dh-case:first-child .dh-case-image { width: 55%; flex-shrink: 0; }
.dh-work--featured .dh-case:first-child .dh-case-body { flex: 1; padding: 40px; }
.dh-work--featured .dh-case:not(:first-child) { display: inline-block; width: 48%; vertical-align: top; margin-right: 2%; }

/* Layout 5: dh-work--carousel — horizontal scroll snap */
.dh-work--carousel .dh-work-grid { display: flex; gap: 20px; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 12px; }
.dh-work--carousel .dh-case { flex: 0 0 460px; scroll-snap-align: start; }

/* ============ GALLERY — 5 LAYOUTS ============ */
/* Layout 1: dh-gallery--grid (default) — uniform 4/3 grid */
/* (already defined) */

/* Layout 2: dh-gallery--masonry — CSS columns */
.dh-gallery--masonry .dh-gallery-grid { display: block; columns: 3; column-gap: 18px; }
.dh-gallery--masonry .dh-gallery-item { aspect-ratio: auto; margin-bottom: 18px; }

/* Layout 3: dh-gallery--slider — horizontal scroll */
.dh-gallery--slider .dh-gallery-grid { display: flex; overflow-x: auto; gap: 18px; scroll-snap-type: x mandatory; padding-bottom: 12px; }
.dh-gallery--slider .dh-gallery-item { flex: 0 0 380px; scroll-snap-align: start; }

/* Layout 4: dh-gallery--mosaic — varied tile sizes */
.dh-gallery--mosaic .dh-gallery-grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 180px; gap: 12px; }
.dh-gallery--mosaic .dh-gallery-item:nth-child(1) { grid-column: span 2; grid-row: span 2; }
.dh-gallery--mosaic .dh-gallery-item:nth-child(4) { grid-column: span 2; }
.dh-gallery--mosaic .dh-gallery-item:nth-child(6) { grid-row: span 2; }

/* Layout 5: dh-gallery--fullscreen — full-width tiles */
.dh-gallery--fullscreen .dh-gallery-grid { grid-template-columns: 1fr 1fr; gap: 4px; }
.dh-gallery--fullscreen .dh-gallery-item { aspect-ratio: 21/9; border-radius: 0; }

/* ============ TESTIMONIALS — 5 LAYOUTS ============ */
/* Layout 1: dh-testi--grid (default) — 2-col card grid + carousel */
/* (already defined) */

/* Layout 2: dh-testi--list — single column stacked */
.dh-testi--list .dh-testi-grid { grid-template-columns: 1fr; max-width: 760px; margin: 0 auto; }

/* Layout 3: dh-testi--masonry — CSS columns */
.dh-testi--masonry .dh-testi-grid { display: block; columns: 2; column-gap: 22px; }
.dh-testi--masonry .dh-testi { break-inside: avoid; margin-bottom: 22px; }

/* Layout 4: dh-testi--banner — accent bg, centered quotes */
.dh-testi--banner { background: var(--accent); color: #fff; }
.dh-testi--banner .dh-label { color: rgba(255,255,255,.7); }
.dh-testi--banner .dh-h2 { color: #fff; }
.dh-testi--banner .dh-testi { background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.2); }
.dh-testi--banner .dh-testi-text { color: #fff; }
.dh-testi--banner .dh-testi-author strong { color: #fff; }
.dh-testi--banner .dh-testi-author small { color: rgba(255,255,255,.7); }

/* Layout 5: dh-testi--minimal — text only, no cards */
.dh-testi--minimal .dh-testi { background: none; border: 0; padding: 0 0 32px; box-shadow: none; }
.dh-testi--minimal .dh-testi-text { font-size: clamp(18px, 2.4vw, 26px); }

/* ============ PROCESS — 5 LAYOUTS ============ */
/* Layout 1: dh-process--timeline (default) — 4-col with connector */
/* (already defined) */

/* Layout 2: dh-process--vertical — vertical timeline */
.dh-process--vertical .dh-process-grid { grid-template-columns: 1fr; max-width: 640px; margin: 0 auto; }
.dh-process--vertical .dh-process-line { display: none; }
.dh-process--vertical .dh-step { display: flex; gap: 20px; align-items: flex-start; padding: 24px 0; border-bottom: 1px solid var(--border); }
.dh-process--vertical .dh-step-num { flex-shrink: 0; margin-bottom: 0; }

/* Layout 3: dh-process--cards — 2-col cards */
.dh-process--cards .dh-process-grid { grid-template-columns: 1fr 1fr; gap: 20px; }
.dh-process--cards .dh-step { padding: 28px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); }
.dh-process--cards .dh-process-line { display: none; }

/* Layout 4: dh-process--numbered — big numbers, no circles */
.dh-process--numbered .dh-process-line { display: none; }
.dh-process--numbered .dh-step-num { width: auto; height: auto; border: 0; background: none; border-radius: 0; font-size: clamp(48px, 6vw, 72px); opacity: .12; }

/* Layout 5: dh-process--steps — horizontal stepper with arrows */
.dh-process--steps .dh-process-grid { grid-template-columns: 1fr; max-width: 800px; margin: 0 auto; }
.dh-process--steps .dh-process-line { display: none; }
.dh-process--steps .dh-step { display: grid; grid-template-columns: 60px 1fr; gap: 20px; padding: 20px 0; border-bottom: 1px solid var(--border); align-items: center; }

/* ============ FAQ — 5 LAYOUTS ============ */
/* Layout 1: dh-faq--sidebar (default) — 2-col sidebar + accordion */
/* (already defined) */

/* Layout 2: dh-faq--centered — single column centered */
.dh-faq--centered .dh-faq-grid { grid-template-columns: 1fr; max-width: 760px; margin: 0 auto; }
.dh-faq--centered .dh-faq-side { text-align: center; position: static; }
.dh-faq--centered .dh-faq-search { max-width: 480px; margin: 22px auto 0; }

/* Layout 3: dh-faq--boxed — boxed cards */
.dh-faq--boxed .dh-faq-item { border: 1px solid var(--border); border-radius: var(--radius); padding: 0 20px; margin-bottom: 12px; background: var(--bg-card); }
.dh-faq--boxed .dh-faq-q { padding: 20px 0; }

/* Layout 4: dh-faq--grid — 2-col accordion grid */
.dh-faq--grid .dh-faq-grid { grid-template-columns: 1fr; }
.dh-faq--grid .dh-faq-side { display: none; }
.dh-faq--grid .dh-faq-list { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }

/* Layout 5: dh-faq--minimal — no borders, clean text */
.dh-faq--minimal .dh-faq-grid { grid-template-columns: 1fr; max-width: 720px; margin: 0 auto; }
.dh-faq--minimal .dh-faq-side { display: none; }
.dh-faq--minimal .dh-faq-item { border: 0; border-bottom: 1px solid var(--border); }
.dh-faq--minimal .dh-faq-q { padding: 20px 0; }

/* ============ CONTACT — 5 LAYOUTS ============ */
/* Layout 1: dh-contact--split (default) — 2-col info + form */
/* (already defined) */

/* Layout 2: dh-contact--centered — single column centered form */
.dh-contact--centered .dh-contact-grid { grid-template-columns: 1fr; max-width: 640px; margin: 0 auto; }
.dh-contact--centered .dh-contact-left { text-align: center; margin-bottom: 32px; }
.dh-contact--centered .dh-contact-links { align-items: center; }

/* Layout 3: dh-contact--minimal — form only */
.dh-contact--minimal .dh-contact-left { display: none; }
.dh-contact--minimal .dh-contact-grid { grid-template-columns: 1fr; max-width: 640px; margin: 0 auto; }

/* Layout 4: dh-contact--banner — accent bg, white form */
.dh-contact--banner { background: var(--accent); color: #fff; }
.dh-contact--banner .dh-label { color: rgba(255,255,255,.7); }
.dh-contact--banner .dh-h2 { color: #fff; }
.dh-contact--banner .dh-lead { color: rgba(255,255,255,.85); }
.dh-contact--banner .dh-contact-link { color: #fff; border-color: rgba(255,255,255,.2); }
.dh-contact--banner .dh-form { background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.2); backdrop-filter: blur(10px); }
.dh-contact--banner .dh-form-row label { color: rgba(255,255,255,.7); }
.dh-contact--banner .dh-form-row input, .dh-contact--banner .dh-form-row select, .dh-contact--banner .dh-form-row textarea { background: rgba(255,255,255,.05); border-color: rgba(255,255,255,.2); color: #fff; }

/* Layout 5: dh-contact--split-reverse — form left, info right */
.dh-contact--split-reverse .dh-contact-grid { direction: rtl; }
.dh-contact--split-reverse .dh-contact-grid > * { direction: ltr; }

/* ============ RESPONSIVE ============ */
@media (max-width: 960px) {
    .dh-services--grid .dh-services-list, .dh-services--cards .dh-services-list { grid-template-columns: 1fr; }
    .dh-services--tabs .dh-service-row { flex: 0 0 280px; }
    .dh-about--cards .dh-about-grid { grid-template-columns: 1fr; }
    .dh-work--masonry .dh-work-grid { columns: 1; }
    .dh-work--list .dh-case { flex-direction: column; }
    .dh-work--list .dh-case-image { width: 100%; }
    .dh-work--featured .dh-case:first-child { flex-direction: column; }
    .dh-work--featured .dh-case:first-child .dh-case-image { width: 100%; }
    .dh-work--carousel .dh-case { flex: 0 0 300px; }
    .dh-gallery--masonry .dh-gallery-grid { columns: 1; }
    .dh-gallery--mosaic .dh-gallery-grid { grid-template-columns: 1fr 1fr; grid-auto-rows: 140px; }
    .dh-gallery--mosaic .dh-gallery-item:nth-child(1) { grid-column: span 2; }
    .dh-testi--masonry .dh-testi-grid { columns: 1; }
    .dh-process--cards .dh-process-grid { grid-template-columns: 1fr; }
    .dh-faq--grid .dh-faq-list { grid-template-columns: 1fr; }
    .dh-contact--split-reverse .dh-contact-grid { direction: ltr; }
}

/* ==========================================================================
   v3.0.0 — NEW LAYOUTS (7-8 per section, on top of the existing v2.3.0 5).
   Each new layout is selectable in the Theme Options panel (per-section
   tab → Layout radio). The class is output on the <section> element by
   the matching template part.
   ========================================================================== */

/* ============ HERO — 2 NEW LAYOUTS (v3.0.0) ============ */
/* Layout 6: dh-hero--video-bg — video background placeholder.
   The hero image is replaced by a <video> placeholder block. The actual
   <video> element is not output by the template (kept simple — the user
   can replace the placeholder with their own video embed). */
.dh-hero--video-bg .dh-hero-img { display: none; }
.dh-hero--video-bg .dh-hero-bg::before {
    content: "";
    position: absolute; inset: 0;
    background:
        radial-gradient(circle at 30% 40%, rgba(216,64,42,.18) 0%, transparent 50%),
        radial-gradient(circle at 70% 60%, rgba(217,148,31,.15) 0%, transparent 50%),
        var(--bg-alt);
    z-index: 0;
}
.dh-hero--video-bg .dh-hero-bg::after {
    content: "▶";
    position: absolute; top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: 96px; height: 96px;
    display: flex; align-items: center; justify-content: center;
    border-radius: 50%;
    background: rgba(255,255,255,.12);
    backdrop-filter: blur(8px);
    color: #fff; font-size: 28px;
    pointer-events: none;
    z-index: 1;
}
.dh-hero--video-bg .dh-hero-overlay { background: rgba(0,0,0,.25); }
.dh-hero--video-bg .dh-hero-copy { color: #fff; position: relative; z-index: 2; }
.dh-hero--video-bg .dh-hero-sub { color: rgba(255,255,255,.85); }
.dh-hero--video-bg .dh-eyebrow { color: var(--amber); }

/* Layout 7: dh-hero--parallax — parallax scrolling text.
   Each line of the headline scrolls at a different speed (driven by JS or
   CSS sticky). Visual: large stacked text, accent line moves on scroll. */
.dh-hero--parallax { min-height: 100vh; background: var(--bg); }
.dh-hero--parallax .dh-hero-bg { background: var(--bg); }
.dh-hero--parallax .dh-hero-img,
.dh-hero--parallax .dh-hero-overlay { display: none; }
.dh-hero--parallax .dh-hero-inner {
    flex-direction: column; align-items: flex-start; justify-content: center;
    position: relative;
}
.dh-hero--parallax .dh-hero-title {
    font-size: clamp(48px, 9vw, 132px);
    line-height: 1.05;
    letter-spacing: -0.03em;
}
.dh-hero--parallax .dh-hero-title em {
    display: block;
    color: var(--accent);
    transform: translateX(40px);
    opacity: .85;
}
.dh-hero--parallax .dh-hero-card { display: none; }
.dh-hero--parallax .dh-hero-sub { max-width: 560px; margin-top: 32px; }
.dh-hero--parallax .dh-eyebrow { color: var(--amber); margin-bottom: 24px; }

/* ============ SERVICES — 2 NEW LAYOUTS (v3.0.0) ============ */
/* Layout 6: dh-services--accordion — collapsible accordion.
   CSS-only via <details>/<summary> OR the existing .dh-service-row structure
   with [hidden] body. Without JS, all rows show their features (graceful
   fallback). With JS, only the first row is open. */
.dh-services--accordion .dh-services-list { display: block; max-width: 880px; margin: 0 auto; }
.dh-services--accordion .dh-service-row {
    border: 1px solid var(--border);
    border-radius: var(--radius);
    margin-bottom: 12px;
    padding: 0;
    overflow: hidden;
    background: var(--bg-card);
    display: block;
}
.dh-services--accordion .dh-service-meta {
    padding: 22px 28px;
    cursor: pointer;
    display: grid;
    grid-template-columns: 60px 1fr auto;
    gap: 24px;
    align-items: center;
}
.dh-services--accordion .dh-service-meta::after {
    content: "+";
    font-size: 24px;
    color: var(--accent);
    transition: transform .25s var(--ease);
}
.dh-services--accordion .dh-service-row.is-open .dh-service-meta::after { transform: rotate(45deg); }
.dh-services--accordion .dh-service-desc { margin: 0; }
.dh-services--accordion .dh-features {
    padding: 0 28px 24px 88px;
    margin: 0;
}

/* Layout 7: dh-services--tabs-horizontal — horizontal tabbed interface.
   Without JS: all tabs are stacked (graceful fallback). With JS: only the
   active tab is shown. */
.dh-services--tabs-horizontal .dh-services-list { display: none; }
.dh-services--tabs-horizontal .dh-services-tabs-nav {
    display: flex; flex-wrap: wrap; gap: 8px;
    border-bottom: 2px solid var(--border);
    margin-bottom: 28px;
}
.dh-services--tabs-horizontal .dh-services-tab-btn {
    padding: 12px 20px;
    background: none;
    border: 0;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    color: var(--text-muted);
    cursor: pointer;
    font-family: var(--font-heading);
    font-size: 15px;
    font-weight: 600;
    transition: color .2s var(--ease), border-color .2s var(--ease);
}
.dh-services--tabs-horizontal .dh-services-tab-btn.is-active {
    color: var(--accent);
    border-bottom-color: var(--accent);
}
.dh-services--tabs-horizontal .dh-services-tab-panel {
    display: none;
    padding: 32px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--bg-card);
}
.dh-services--tabs-horizontal .dh-services-tab-panel.is-active { display: block; }

/* ============ WORK — 2 NEW LAYOUTS (v3.0.0) ============ */
/* Layout 6: dh-work--showcase — alternating large image/text rows. */
.dh-work--showcase .dh-work-grid { display: block; max-width: 1080px; margin: 0 auto; }
.dh-work--showcase .dh-case {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 48px;
    align-items: center;
    margin-bottom: 80px;
}
.dh-work--showcase .dh-case:nth-child(even) { direction: rtl; }
.dh-work--showcase .dh-case:nth-child(even) > * { direction: ltr; }
.dh-work--showcase .dh-case-image { aspect-ratio: 4/3; }
.dh-work--showcase .dh-case-body { padding: 0; }

/* Layout 7: dh-work--overlay — text overlaid on full images. */
.dh-work--overlay .dh-work-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px;
}
.dh-work--overlay .dh-case {
    position: relative;
    aspect-ratio: 4/3;
    overflow: hidden;
    border-radius: 0;
}
.dh-work--overlay .dh-case-image {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    aspect-ratio: auto;
}
.dh-work--overlay .dh-case-image img { width: 100%; height: 100%; object-fit: cover; }
.dh-work--overlay .dh-case-body {
    position: relative;
    z-index: 2;
    height: 100%;
    display: flex; flex-direction: column; justify-content: flex-end;
    padding: 32px;
    background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,.75) 100%);
    color: #fff;
}
.dh-work--overlay .dh-case-tag { color: var(--amber); }
.dh-work--overlay .dh-case-title,
.dh-work--overlay .dh-case-desc { color: #fff; }
.dh-work--overlay .dh-case-metrics { color: rgba(255,255,255,.85); }

/* ============ GALLERY — 2 NEW LAYOUTS (v3.0.0) ============ */
/* Layout 6: dh-gallery--before-after — before/after slider.
   Each gallery item is a before/after comparison. Without JS, shows the
   "after" image only. With JS, a draggable slider reveals the "before". */
.dh-gallery--before-after .dh-gallery-grid {
    display: grid;
    grid-template-columns: 1fr;
    max-width: 980px;
    margin: 0 auto;
    gap: 32px;
}
.dh-gallery--before-after .dh-gallery-item {
    position: relative;
    aspect-ratio: 16/9;
    overflow: hidden;
    border-radius: var(--radius);
    cursor: ew-resize;
}
.dh-gallery--before-after .dh-gallery-item img {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    padding-top: 0;
}
.dh-gallery--before-after .dh-gallery-item::after {
    content: "◀ drag to compare ▶";
    position: absolute; bottom: 16px; left: 50%;
    transform: translateX(-50%);
    color: #fff; font-size: 12px;
    background: rgba(0,0,0,.5);
    padding: 4px 12px; border-radius: 999px;
    pointer-events: none;
}

/* Layout 7: dh-gallery--lightbox-grid — grid that opens a lightbox on click.
   Same look as the default grid but cursor:pointer + a "Click to zoom" hint. */
.dh-gallery--lightbox-grid .dh-gallery-grid {
    display: grid;
    grid-template-columns: repeat(var(--gallery-cols, 3), 1fr);
    gap: 18px;
}
.dh-gallery--lightbox-grid .dh-gallery-item {
    cursor: zoom-in;
    position: relative;
}
.dh-gallery--lightbox-grid .dh-gallery-item::after {
    content: "🔍";
    position: absolute; top: 12px; right: 12px;
    color: #fff; font-size: 14px;
    background: rgba(0,0,0,.5);
    width: 32px; height: 32px;
    display: flex; align-items: center; justify-content: center;
    border-radius: 50%;
    opacity: 0;
    transition: opacity .2s var(--ease);
}
.dh-gallery--lightbox-grid .dh-gallery-item:hover::after { opacity: 1; }

/* ============ TESTIMONIALS — 2 NEW LAYOUTS (v3.0.0) ============ */
/* Layout 6: dh-testi--slider-full — full-width single-slider showcase. */
.dh-testi--slider-full .dh-testi-grid {
    grid-template-columns: 1fr;
    max-width: 1000px;
    margin: 0 auto;
}
.dh-testi--slider-full .dh-testi {
    text-align: center;
    padding: 48px 32px;
    border: 0;
    background: none;
    box-shadow: none;
}
.dh-testi--slider-full .dh-testi:not(.is-active) { display: none; }
.dh-testi--slider-full .dh-testi-text {
    font-size: clamp(22px, 3vw, 32px);
    font-style: italic;
    line-height: 1.4;
    max-width: 800px;
    margin: 0 auto 24px;
}
.dh-testi--slider-full .dh-testi-author { justify-content: center; }

/* Layout 7: dh-testi--wall — masonry wall (multi-col, no card chrome). */
.dh-testi--wall .dh-testi-grid {
    display: block;
    columns: 3;
    column-gap: 32px;
}
.dh-testi--wall .dh-testi {
    break-inside: avoid;
    margin-bottom: 32px;
    background: none;
    border: 0;
    box-shadow: none;
    padding: 0;
}
.dh-testi--wall .dh-testi-text { font-size: 17px; }

/* ============ PROCESS — 2 NEW LAYOUTS (v3.0.0) ============ */
/* Layout 6: dh-process--zigzag — alternating left/right. */
.dh-process--zigzag .dh-process-grid {
    grid-template-columns: 1fr;
    max-width: 980px;
    margin: 0 auto;
    gap: 0;
}
.dh-process--zigzag .dh-process-line { display: none; }
.dh-process--zigzag .dh-step {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 48px;
    align-items: center;
    margin-bottom: 64px;
}
.dh-process--zigzag .dh-step:nth-child(even) { direction: rtl; }
.dh-process--zigzag .dh-step:nth-child(even) > * { direction: ltr; }
.dh-process--zigzag .dh-step-num {
    width: 96px; height: 96px;
    font-size: 28px;
    margin: 0 auto;
}
.dh-process--zigzag .dh-step-title { font-size: 26px; }

/* Layout 7: dh-process--progress — progress bar style. */
.dh-process--progress .dh-process-grid {
    grid-template-columns: 1fr;
    max-width: 800px;
    margin: 0 auto;
    gap: 0;
}
.dh-process--progress .dh-process-line { display: none; }
.dh-process--progress .dh-step {
    display: grid;
    grid-template-columns: 80px 1fr;
    gap: 24px;
    align-items: center;
    padding: 20px 0;
}
.dh-process--progress .dh-step-num {
    width: 56px; height: 56px;
    font-size: 18px;
    border: 2px solid var(--accent);
    background: var(--bg);
    color: var(--accent);
    position: relative;
}
.dh-process--progress .dh-step-num::after {
    content: "";
    position: absolute;
    left: 50%; top: 100%;
    width: 2px; height: 64px;
    background: var(--border);
    transform: translateX(-50%);
}
.dh-process--progress .dh-step:last-child .dh-step-num::after { display: none; }
.dh-process--progress .dh-step-title { font-size: 20px; margin-bottom: 4px; }
.dh-process--progress .dh-step-desc { font-size: 15px; }

/* ============ FAQ — 2 NEW LAYOUTS (v3.0.0) ============ */
/* Layout 6: dh-faq--toggle — simple toggle, no accordion styling.
   Looks like a flat list of questions, click to toggle answer visibility. */
.dh-faq--toggle .dh-faq-grid { grid-template-columns: 1fr; max-width: 760px; margin: 0 auto; }
.dh-faq--toggle .dh-faq-side { display: none; }
.dh-faq--toggle .dh-faq-item {
    border: 0;
    border-bottom: 1px dashed var(--border);
    background: none;
    padding: 0;
}
.dh-faq--toggle .dh-faq-q {
    padding: 18px 0;
    font-weight: 500;
    color: var(--text);
}
.dh-faq--toggle .dh-faq-q::after { content: "  ?"; color: var(--accent); }
.dh-faq--toggle .dh-faq-a { padding: 0 0 18px; color: var(--text-muted); }

/* Layout 7: dh-faq--categories — categorized tabs.
   Without JS: all categories stacked. With JS: tabs switch between categories. */
.dh-faq--categories .dh-faq-grid { grid-template-columns: 1fr; max-width: 880px; margin: 0 auto; }
.dh-faq--categories .dh-faq-side { display: none; }
.dh-faq--categories .dh-faq-categories-nav {
    display: flex; flex-wrap: wrap; gap: 8px;
    margin-bottom: 24px;
    border-bottom: 1px solid var(--border);
}
.dh-faq--categories .dh-faq-category-btn {
    padding: 10px 18px;
    background: none;
    border: 0;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    color: var(--text-muted);
    cursor: pointer;
    font-weight: 600;
    font-family: var(--font-heading);
    transition: color .2s var(--ease), border-color .2s var(--ease);
}
.dh-faq--categories .dh-faq-category-btn.is-active {
    color: var(--accent);
    border-bottom-color: var(--accent);
}
.dh-faq--categories .dh-faq-category-panel { display: none; }
.dh-faq--categories .dh-faq-category-panel.is-active { display: block; }

/* ============ CONTACT — 2 NEW LAYOUTS (v3.0.0) ============ */
/* Layout 6: dh-contact--split-3col — 3-column: info + form + map. */
.dh-contact--split-3col .dh-contact-grid {
    grid-template-columns: 1fr 1.4fr 1fr;
    gap: 32px;
    align-items: start;
}
.dh-contact--split-3col .dh-contact-left { text-align: left; margin-bottom: 0; }
.dh-contact--split-3col .dh-contact-map {
    background: var(--bg-alt);
    border-radius: var(--radius);
    aspect-ratio: 3/4;
    display: flex; align-items: center; justify-content: center;
    color: var(--text-muted);
    font-size: 14px;
    text-align: center;
    padding: 32px;
}
.dh-contact--split-3col .dh-contact-map::before {
    content: "🗺️ Map placeholder";
    font-size: 18px;
    font-weight: 600;
}

/* Layout 7: dh-contact--inline — inline form fields (single row). */
.dh-contact--inline .dh-contact-grid {
    grid-template-columns: 1fr;
    max-width: 1000px;
    margin: 0 auto;
}
.dh-contact--inline .dh-contact-left { text-align: center; margin-bottom: 24px; }
.dh-contact--inline .dh-form .dh-form-row { display: inline-block; width: auto; margin-right: 12px; vertical-align: middle; }
.dh-contact--inline .dh-form .dh-form-row input,
.dh-contact--inline .dh-form .dh-form-row select {
    min-width: 200px;
}
.dh-contact--inline .dh-form .dh-form-row--message { display: block; width: 100%; margin: 16px 0; }
.dh-contact--inline .dh-form .dh-btn { display: inline-block; vertical-align: middle; }

/* ============ RESPONSIVE (v3.0.0 layouts) ============ */
@media (max-width: 960px) {
    .dh-services--accordion .dh-service-meta { grid-template-columns: 40px 1fr auto; gap: 16px; padding: 18px; }
    .dh-services--accordion .dh-features { padding-left: 74px; }
    .dh-work--showcase .dh-case,
    .dh-work--showcase .dh-case:nth-child(even) { grid-template-columns: 1fr; gap: 24px; direction: ltr; }
    .dh-work--overlay .dh-work-grid { grid-template-columns: 1fr; }
    .dh-testi--wall .dh-testi-grid { columns: 2; }
    .dh-process--zigzag .dh-step,
    .dh-process--zigzag .dh-step:nth-child(even) { grid-template-columns: 1fr; direction: ltr; gap: 16px; }
    .dh-contact--split-3col .dh-contact-grid { grid-template-columns: 1fr; }
    .dh-contact--split-3col .dh-contact-map { aspect-ratio: 16/9; }
    .dh-contact--inline .dh-form .dh-form-row { display: block; width: 100%; margin: 0 0 12px; }
    .dh-contact--inline .dh-form .dh-form-row input,
    .dh-contact--inline .dh-form .dh-form-row select { min-width: 0; width: 100%; }
}
@media (max-width: 560px) {
    .dh-testi--wall .dh-testi-grid { columns: 1; }
    .dh-gallery--before-after .dh-gallery-item::after { font-size: 10px; }
}

/* ==========================================================================
   v3.0.0 — PAGE TRANSITIONS
   The .dh-page-transitions body class is added by dh_page_transitions_body_class()
   when the toggle is on. main.js fades the body in on load. Without JS, the
   page just renders normally (no transition).
   ========================================================================== */
body.dh-page-transitions { opacity: 0; }
body.dh-page-transitions.dh-page-loaded { opacity: 1; transition: opacity .35s ease; }
body.dh-page-transitions.dh-page-transition-slide { transform: translateY(20px); }
body.dh-page-transitions.dh-page-transition-slide.dh-page-loaded { transform: translateY(0); transition: opacity .35s ease, transform .35s ease; }
body.dh-page-transitions.dh-page-transition-none { opacity: 1; transform: none; }

/* ==========================================================================
   v3.0.0 — 404 PAGE (custom background image support)
   ========================================================================== */
.dh-404 {
    position: relative;
    overflow: hidden;
}
.dh-404[style*="background-image"] .dh-404-num {
    text-shadow: 0 4px 32px rgba(0,0,0,.4);
}
.dh-404[style*="background-image"] .dh-h2,
.dh-404[style*="background-image"] .dh-lead {
    color: #fff;
    text-shadow: 0 2px 12px rgba(0,0,0,.6);
}
.dh-404[style*="background-image"]::before {
    content: "";
    position: absolute; inset: 0;
    background: rgba(0,0,0,.45);
    z-index: 0;
}
.dh-404[style*="background-image"] > .dh-container { position: relative; z-index: 1; }

/* ==========================================================================
   v3.0.0 — LOADING SCREEN (inlined CSS already covers animations; this
   block is for the dark-mode variant + reduced-motion users).
   ========================================================================== */
body.dh-mode-dark .dh-loading-screen { background: #15141a !important; }
@media (prefers-reduced-motion: reduce) {
    .dh-loading-screen,
    .dh-loading-spinner,
    .dh-loading-dots span,
    .dh-loading-progress-bar,
    .dh-loading-logo { animation: none !important; }
    .dh-loading-screen { display: none !important; }
}

/* ---------- Hero video background (v3.4.2) ---------- */
.dh-hero-video {
    position: absolute; inset: 0; width: 100%; height: 100%;
    object-fit: cover; z-index: 0; opacity: .5;
}
.dh-mode-dark .dh-hero-video { opacity: .4; }
.dh-hero--bg-video .dh-hero-img { display: none; }

/* ---------- Hero gradient background ---------- */
.dh-hero-gradient-bg {
    position: absolute; inset: 0; z-index: 0;
    background: linear-gradient(135deg, var(--accent) 0%, var(--amber) 100%);
    opacity: .15;
}
.dh-mode-dark .dh-hero-gradient-bg { opacity: .25; }

/* ---------- Lightbox fix: ensure images are visible ---------- */
.dh-lightbox img {
    max-width: 90vw !important; max-height: 85vh !important;
    object-fit: contain; border-radius: var(--radius);
    position: relative; z-index: 2;
}

/* ==========================================================================
   v3.6.0 — BLOG / SINGLE / ARCHIVE STYLES
   ========================================================================== */

/* Posts grid (blog listing + archive + search) */
.dh-posts-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 32px; margin-top: 40px; }
@media (max-width: 768px) { .dh-posts-grid { grid-template-columns: 1fr; } }

.dh-post {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    overflow: hidden;
    transition: transform .3s var(--ease), box-shadow .3s var(--ease);
}
.dh-post:hover { transform: translateY(-4px); box-shadow: 0 12px 32px rgba(0,0,0,.08); }
.dh-post-thumb { display: block; overflow: hidden; aspect-ratio: 16/9; }
.dh-post-thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s var(--ease); }
.dh-post:hover .dh-post-thumb img { transform: scale(1.05); }
.dh-post-body { padding: 24px; }
.dh-post-cat { display: inline-block; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--accent); margin-bottom: 8px; }
.dh-post-title { font-family: var(--font-heading); font-size: 1.35rem; font-weight: 600; line-height: 1.2; margin: 0 0 8px; }
.dh-post-title a { color: var(--text); }
.dh-post-title a:hover { color: var(--accent); }
.dh-post-meta { display: flex; gap: 16px; font-size: 13px; color: var(--text-muted); margin-bottom: 12px; }
.dh-post-excerpt { font-size: 15px; line-height: 1.6; color: var(--text-muted); margin-bottom: 16px; }
.dh-readmore { font-size: 14px; font-weight: 600; color: var(--accent); }
.dh-readmore:hover { text-decoration: underline; }

/* Pagination */
.dh-pagination { margin-top: 48px; display: flex; justify-content: center; }
.dh-pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 40px; height: 40px; padding: 0 12px; margin: 0 3px; border-radius: 10px; border: 1px solid var(--border); color: var(--text); font-weight: 600; font-size: 14px; transition: all .2s var(--ease); }
.dh-pagination .page-numbers:hover { border-color: var(--accent); color: var(--accent); }
.dh-pagination .page-numbers.current { background: var(--accent); color: #fff; border-color: var(--accent); }
.dh-pagination .page-numbers.dots { border: 0; color: var(--text-muted); }

/* Single post */
.dh-single-wrap { max-width: 760px; margin: 0 auto; }
.dh-single-head { text-align: center; margin-bottom: 40px; }
.dh-single-cat { display: inline-block; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--accent); margin-bottom: 12px; }
.dh-single-title { font-family: var(--font-heading); font-size: clamp(1.8rem, 4vw, 2.8rem); font-weight: 700; line-height: 1.15; margin: 0 0 20px; }
.dh-single-meta { display: flex; justify-content: center; gap: 20px; font-size: 14px; color: var(--text-muted); }
.dh-single-author { display: flex; align-items: center; gap: 8px; }
.dh-single-author img { border-radius: 50%; }
.dh-single-featured { margin-bottom: 40px; border-radius: var(--radius); overflow: hidden; }
.dh-single-featured img { width: 100%; height: auto; }

/* Prose (post content) */
.dh-prose { font-size: 17px; line-height: 1.75; color: var(--text); }
.dh-prose > *:first-child { margin-top: 0; }
.dh-prose h2 { font-size: 1.6rem; margin: 2em 0 0.6em; }
.dh-prose h3 { font-size: 1.3rem; margin: 1.5em 0 0.5em; }
.dh-prose p { margin: 0 0 1.4em; }
.dh-prose ul, .dh-prose ol { margin: 0 0 1.4em; padding-left: 24px; }
.dh-prose li { margin-bottom: 0.5em; }
.dh-prose blockquote { border-left: 3px solid var(--accent); padding: 8px 20px; margin: 1.5em 0; font-style: italic; color: var(--text-muted); }
.dh-prose pre { background: var(--bg-alt); border-radius: 10px; padding: 16px 20px; overflow-x: auto; margin: 1.5em 0; }
.dh-prose code { font-family: ui-monospace, monospace; font-size: 0.9em; background: var(--bg-alt); padding: 2px 6px; border-radius: 4px; }
.dh-prose pre code { background: none; padding: 0; }
.dh-prose img { border-radius: var(--radius); margin: 1.5em 0; }
.dh-prose a { color: var(--accent); text-decoration: underline; }
.dh-prose a:hover { text-decoration: none; opacity: 0.8; }
.dh-prose hr { border: 0; border-top: 1px solid var(--border); margin: 2em 0; }
.dh-prose table { width: 100%; border-collapse: collapse; margin: 1.5em 0; }
.dh-prose th, .dh-prose td { padding: 10px 14px; border: 1px solid var(--border); text-align: left; }
.dh-prose th { background: var(--bg-alt); font-weight: 600; }

/* Single post footer */
.dh-single-foot { margin-top: 48px; padding-top: 24px; border-top: 1px solid var(--border); }
.dh-single-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.dh-tag { padding: 4px 12px; border-radius: 999px; background: var(--bg-alt); font-size: 13px; color: var(--text-muted); transition: all .2s; }
.dh-tag:hover { background: var(--accent); color: #fff; }

.dh-single-comments { margin-top: 48px; }
.dh-search-empty { text-align: center; padding: 60px 20px; }
.dh-search-empty p { font-size: 18px; color: var(--text-muted); margin-bottom: 20px; }
.dh-empty { text-align: center; padding: 60px 20px; font-size: 18px; color: var(--text-muted); }

/* Page links (multi-page posts) */
.dh-page-links { margin: 2em 0; }
.dh-page-links a, .dh-page-links > span { display: inline-block; margin: 0 3px; padding: 4px 12px; border: 1px solid var(--border); border-radius: 8px; }
.dh-page-links > span { background: var(--accent); color: #fff; border-color: var(--accent); }

/* ==========================================================================
   v3.9.0 — W2F-BSF: Editable 404 + magazine blog layout
   ========================================================================== */

/* 404 — illustration + suggested pages + search form */
.dh-404-illustration { margin: 0 auto 24px; max-width: 320px; }
.dh-404-illustration--image img { width: 100%; height: auto; border-radius: var(--radius); }
.dh-404-illustration--svg { color: var(--accent); opacity: 0.9; }
.dh-404-search { margin: 32px auto 0; max-width: 480px; }
.dh-404-suggested { margin: 48px auto 0; max-width: 720px; }
.dh-404-suggested-title { font-family: var(--font-heading); font-size: 1.1rem; font-weight: 600; margin-bottom: 16px; color: var(--text); }
.dh-404-suggested-list { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
.dh-404-suggested-list li { margin: 0; }
.dh-404-suggested-list a { display: inline-block; padding: 8px 16px; border-radius: 999px; background: var(--bg-card); border: 1px solid var(--border); font-size: 14px; font-weight: 600; color: var(--text); transition: all .2s var(--ease); }
.dh-404-suggested-list a:hover { background: var(--accent); color: #fff; border-color: var(--accent); }

/* Magazine blog layout — featured post hero + grid + sidebar */
.dh-blog-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 48px; align-items: start; }
.dh-blog-main { min-width: 0; }
.dh-blog-aside { position: sticky; top: 90px; display: flex; flex-direction: column; gap: 32px; }
.dh-blog-aside .dh-widget { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 24px; }
.dh-blog-aside .dh-widget-title { font-family: var(--font-heading); font-size: 1.05rem; font-weight: 600; margin: 0 0 16px; color: var(--text); }
.dh-blog-aside ul { list-style: none; padding: 0; margin: 0; }
.dh-blog-aside li { padding: 6px 0; border-bottom: 1px dashed var(--border); }
.dh-blog-aside li:last-child { border-bottom: 0; }

/* Featured post (sticky / latest) — full-width hero card */
.dh-featured-post { margin-bottom: 40px; border-radius: var(--radius); overflow: hidden; background: var(--bg-card); border: 1px solid var(--border); transition: transform .3s var(--ease), box-shadow .3s var(--ease); }
.dh-featured-post:hover { transform: translateY(-4px); box-shadow: 0 18px 50px -20px rgba(0,0,0,.12); }
.dh-featured-post .dh-post-thumb { aspect-ratio: 21/9; }
.dh-featured-post .dh-post-thumb img { height: 100%; }
.dh-featured-post .dh-post-body { padding: 32px; }
.dh-featured-post .dh-post-title { font-size: clamp(1.6rem, 3vw, 2.2rem); }
.dh-featured-post .dh-post-excerpt { font-size: 16px; }

/* Responsive — drop the sidebar below 960px */
@media (max-width: 960px) {
    .dh-blog-layout { grid-template-columns: 1fr; }
    .dh-blog-aside { position: static; }
}

/* Single post — author bio box + post navigation */
.dh-single-author-bio { display: flex; gap: 16px; align-items: flex-start; margin-top: 48px; padding: 24px; border-radius: var(--radius); background: var(--bg-card); border: 1px solid var(--border); }
.dh-single-author-bio img { border-radius: 50%; flex: 0 0 64px; width: 64px; height: 64px; }
.dh-single-author-bio-body { flex: 1 1 auto; min-width: 0; }
.dh-single-author-bio-name { font-weight: 600; font-size: 1.05rem; color: var(--text); margin-bottom: 4px; }
.dh-single-author-bio-name a { color: var(--accent); }
.dh-single-author-bio-desc { font-size: 14px; color: var(--text-muted); line-height: 1.6; }
.dh-single-nav { display: flex; gap: 16px; justify-content: space-between; margin-top: 48px; padding-top: 24px; border-top: 1px solid var(--border); flex-wrap: wrap; }
.dh-single-nav a { flex: 1 1 0; min-width: 0; padding: 16px; border-radius: var(--radius-sm); background: var(--bg-card); border: 1px solid var(--border); transition: all .2s var(--ease); }
.dh-single-nav a:hover { border-color: var(--accent); color: var(--accent); }
.dh-single-nav-label { display: block; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); margin-bottom: 4px; }
.dh-single-nav-prev { text-align: left; }
.dh-single-nav-next { text-align: right; margin-left: auto; }

/* Search results — result count header */
.dh-search-count { margin: 0 0 24px; font-size: 14px; color: var(--text-muted); }
.dh-search-count strong { color: var(--text); }

/* Grid 3 columns for the post cards */
.dh-posts-grid--3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 960px) { .dh-posts-grid--3 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .dh-posts-grid--3 { grid-template-columns: 1fr; } }

/* ==========================================================================
   v3.9.2 — P2A-SECTIONS: Blog / News section (6 layouts)
   All colors use the theme's CSS variables so dark mode works automatically.
   Logical properties (margin-inline / padding-inline / inset-inline) keep
   the layout safe in RTL.
   ========================================================================== */

.dh-section.dh-blog--grid,
.dh-section.dh-blog--carousel,
.dh-section.dh-blog--featured-list,
.dh-section.dh-blog--masonry,
.dh-section.dh-blog--minimal,
.dh-section.dh-blog--magazine { padding: 100px 0; border-block-end: 1px solid var(--border); }

.dh-blog-empty { padding: 32px; text-align: center; color: var(--text-muted); border: 1px dashed var(--border); border-radius: var(--radius-sm); }

.dh-blog-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; transition: transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease); display: flex; flex-direction: column; }
.dh-blog-card:hover { transform: translateY(-4px); box-shadow: 0 18px 50px -20px rgba(0,0,0,.12); border-color: var(--accent); }

.dh-blog-thumb { display: block; aspect-ratio: 16/9; overflow: hidden; background: var(--bg-alt); }
.dh-blog-thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.dh-blog-card:hover .dh-blog-thumb img { transform: scale(1.05); }

.dh-blog-body { padding: 20px 22px 22px; display: flex; flex-direction: column; gap: 10px; flex: 1 1 auto; }

.dh-blog-cat { display: inline-block; align-self: flex-start; font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--accent); background: var(--accent-soft); padding: 4px 10px; border-radius: 999px; }

.dh-blog-title { font-family: var(--font-heading); font-size: 1.15rem; line-height: 1.3; margin: 0; font-weight: 600; }
.dh-blog-title a { color: var(--text); }
.dh-blog-title a:hover { color: var(--accent); }

.dh-blog-excerpt { color: var(--text-muted); font-size: 14px; line-height: 1.6; margin: 0; display: -webkit-box; -webkit-line-clamp: 3; line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

.dh-blog-meta { display: flex; flex-wrap: wrap; gap: 10px 14px; font-size: 12px; color: var(--text-muted); margin-top: auto; align-items: center; }
.dh-blog-meta time { font-weight: 500; }
.dh-blog-author { display: inline-flex; align-items: center; gap: 4px; }
.dh-blog-rt { display: inline-flex; align-items: center; gap: 4px; opacity: .8; }
.dh-blog-rt::before { content: "·"; margin-inline-end: 4px; opacity: .5; }

.dh-blog-readmore { display: inline-block; margin-top: 6px; font-size: 14px; font-weight: 600; color: var(--accent); align-self: flex-start; }
.dh-blog-readmore:hover { text-decoration: underline; }

/* --- Layout 1: grid --- */
.dh-blog-grid { display: grid; grid-template-columns: repeat(var(--dh-blog-cols, 3), 1fr); gap: 28px; }

/* --- Layout 2: carousel --- */
.dh-blog-carousel { position: relative; display: flex; align-items: center; gap: 8px; }
.dh-blog-carousel-viewport { overflow-x: auto; overflow-y: hidden; flex: 1 1 auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.dh-blog-carousel-viewport::-webkit-scrollbar { display: none; }
.dh-blog-carousel-track { display: flex; gap: 24px; }
.dh-blog-slide { flex: 0 0 calc((100% - 48px) / 3); scroll-snap-align: start; }
.dh-blog-arrow { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border); background: var(--bg-card); color: var(--text); font-size: 22px; line-height: 1; cursor: pointer; display: grid; place-items: center; transition: all .2s var(--ease); }
.dh-blog-arrow:hover { background: var(--accent); color: #fff; border-color: var(--accent); }

/* --- Layout 3: featured + list --- */
.dh-blog-featured-list { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 32px; align-items: start; }
.dh-blog-featured { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; transition: transform .3s var(--ease), box-shadow .3s var(--ease); }
.dh-blog-featured:hover { transform: translateY(-4px); box-shadow: 0 18px 50px -20px rgba(0,0,0,.12); }
.dh-blog-featured .dh-blog-thumb { aspect-ratio: 16/9; }
.dh-blog-featured .dh-blog-body { padding: 32px; }
.dh-blog-featured .dh-blog-title { font-size: clamp(1.5rem, 2.4vw, 2rem); }
.dh-blog-featured .dh-blog-excerpt { font-size: 16px; -webkit-line-clamp: 4; line-clamp: 4; }

.dh-blog-side-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 16px; }
.dh-blog-side-item { display: flex; gap: 14px; padding: 14px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-sm); transition: border-color .2s var(--ease), transform .2s var(--ease); }
.dh-blog-side-item:hover { border-color: var(--accent); transform: translateX(-3px); }
.dh-blog-thumb-mini { flex: 0 0 84px; aspect-ratio: 1/1; overflow: hidden; border-radius: var(--radius-sm); background: var(--bg-alt); }
.dh-blog-thumb-mini img { width: 100%; height: 100%; object-fit: cover; }
.dh-blog-body-mini { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.dh-blog-title-mini { font-family: var(--font-heading); font-size: 1rem; line-height: 1.35; margin: 0; font-weight: 600; }
.dh-blog-title-mini a { color: var(--text); }
.dh-blog-title-mini a:hover { color: var(--accent); }
.dh-blog-body-mini time { font-size: 12px; color: var(--text-muted); }

/* --- Layout 4: masonry --- */
.dh-blog-masonry { column-count: var(--dh-blog-cols, 3); column-gap: 28px; }
.dh-blog-masonry-item { break-inside: avoid; margin-block-end: 28px; display: inline-block; width: 100%; }
.dh-blog-masonry-item[data-h="0"] .dh-blog-thumb { aspect-ratio: 16/9; }
.dh-blog-masonry-item[data-h="1"] .dh-blog-thumb { aspect-ratio: 4/3; }
.dh-blog-masonry-item[data-h="2"] .dh-blog-thumb { aspect-ratio: 1/1; }
.dh-blog-masonry-item .dh-blog-excerpt { -webkit-line-clamp: 4; line-clamp: 4; }

/* --- Layout 5: minimal --- */
.dh-blog-minimal { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.dh-blog-minimal-row { display: grid; grid-template-columns: 160px 1fr; gap: 28px; padding: 22px 0; border-block-end: 1px solid var(--border); align-items: baseline; }
.dh-blog-minimal-row:last-child { border-block-end: 0; }
.dh-blog-minimal-row:hover .dh-blog-title a { color: var(--accent); }
.dh-blog-minimal-date { font-family: var(--font-body); font-size: 13px; font-weight: 500; color: var(--text-muted); letter-spacing: .04em; text-transform: uppercase; }
.dh-blog-minimal-body { display: flex; flex-direction: column; gap: 8px; }
.dh-blog-minimal .dh-blog-title { font-size: clamp(1.2rem, 1.6vw, 1.55rem); }
.dh-blog-minimal .dh-blog-excerpt { -webkit-line-clamp: 2; line-clamp: 2; }

/* --- Layout 6: magazine --- */
.dh-blog-magazine { display: grid; grid-template-columns: minmax(0, 1fr); gap: 32px; }
.dh-blog-magazine-lead { position: relative; min-height: 420px; border-radius: var(--radius); overflow: hidden; background-color: var(--bg-alt); background-size: cover; background-position: center; display: flex; align-items: flex-end; }
.dh-blog-magazine-overlay { position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,.85) 0%, rgba(0,0,0,.5) 40%, rgba(0,0,0,.1) 80%, rgba(0,0,0,0) 100%); pointer-events: none; }
.dh-blog-magazine-content { position: relative; z-index: 1; padding: 40px; max-width: 720px; color: #fff; }
.dh-blog-magazine-content .dh-blog-cat { background: var(--accent); color: #fff; }
.dh-blog-magazine-title { font-family: var(--font-heading); font-size: clamp(1.8rem, 3vw, 2.6rem); line-height: 1.15; margin: 12px 0; font-weight: 600; }
.dh-blog-magazine-title a { color: #fff; }
.dh-blog-magazine-title a:hover { color: var(--accent); }
.dh-blog-magazine-excerpt { color: rgba(255,255,255,.92); font-size: 16px; line-height: 1.6; margin: 0 0 16px; }
.dh-blog-magazine-content .dh-blog-meta { color: rgba(255,255,255,.85); }
.dh-blog-magazine-content .dh-blog-readmore { color: #fff; }
.dh-blog-magazine-grid { display: grid; grid-template-columns: repeat(var(--dh-blog-cols, 3), 1fr); gap: 28px; }
.dh-blog-magazine-mini .dh-blog-thumb { aspect-ratio: 4/3; }

/* --- "View all posts" button --- */
.dh-blog-viewall { display: flex; justify-content: center; margin-top: 40px; }

/* --- Responsive --- */
@media (max-width: 960px) {
    .dh-blog-grid { grid-template-columns: repeat(2, 1fr); }
    .dh-blog-featured-list { grid-template-columns: 1fr; }
    .dh-blog-masonry { column-count: 2 !important; }
    .dh-blog-magazine-grid { grid-template-columns: repeat(2, 1fr); }
    .dh-blog-magazine-lead { min-height: 320px; }
    .dh-blog-magazine-content { padding: 24px; }
    .dh-blog-slide { flex: 0 0 calc((100% - 24px) / 2); }
}
@media (max-width: 768px) {
    .dh-blog-grid,
    .dh-blog-magazine-grid { grid-template-columns: 1fr; }
    .dh-blog-masonry { column-count: 1 !important; }
    .dh-blog-minimal-row { grid-template-columns: 1fr; gap: 6px; }
    .dh-blog-carousel { flex-wrap: wrap; }
    .dh-blog-carousel-viewport { order: 1; width: 100%; }
    .dh-blog-arrow { order: 2; margin-inline-start: auto; }
    .dh-blog-arrow--prev { order: 0; }
    .dh-blog-slide { flex: 0 0 86%; }
}

/* ==========================================================================
   v3.9.2 — P2A-SECTIONS: Skills / Expertise section (6 layouts)
   ========================================================================== */

.dh-section.dh-skills--bars,
.dh-section.dh-skills--circular,
.dh-section.dh-skills--tags,
.dh-section.dh-skills--matrix,
.dh-section.dh-skills--icons,
.dh-section.dh-skills--split { padding: 100px 0; border-block-end: 1px solid var(--border); }

.dh-skill-name { font-family: var(--font-heading); font-weight: 600; color: var(--text); }
.dh-skill-pct { font-family: var(--font-body); font-weight: 600; color: var(--accent); font-variant-numeric: tabular-nums; }
.dh-skill-desc { color: var(--text-muted); font-size: 14px; line-height: 1.6; margin: 8px 0 0; }

/* --- Layout 1: bars (horizontal list) --- */
.dh-skills-bars { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 22px; max-width: 760px; margin-inline: auto; }
.dh-skill-bar-row { width: 100%; }
.dh-skill-bar-head { display: flex; justify-content: space-between; align-items: baseline; margin-block-end: 8px; gap: 12px; }
.dh-skill-bar-head .dh-skill-name { font-size: 1.05rem; }
.dh-skill-bar-track { background: var(--bg-card); border: 1px solid var(--border); border-radius: 999px; height: 10px; overflow: hidden; }
.dh-skill-bar-fill { background: linear-gradient(90deg, var(--accent) 0%, color-mix(in srgb, var(--accent) 70%, var(--amber, #d9941f)) 100%); height: 100%; border-radius: 999px; transition: width 1.2s var(--ease); }
.dh-skill-bar-track--thin { height: 6px; }

/* --- Layout 2: circular (radial SVG grid) --- */
.dh-skills-circular { display: grid; grid-template-columns: repeat(var(--dh-skills-cols, 3), 1fr); gap: 36px 28px; justify-items: center; }
.dh-skill-circle { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); width: 100%; max-width: 200px; transition: transform .3s var(--ease), border-color .3s var(--ease); }
.dh-skill-circle:hover { transform: translateY(-3px); border-color: var(--accent); }
.dh-skill-circle-svg { width: 110px; height: 110px; display: block; }
.dh-skill-circle-fill { transition: stroke-dashoffset 1.4s var(--ease); }
.dh-skill-circle-label { display: flex; flex-direction: column; align-items: center; gap: 2px; }
.dh-skill-circle-label .dh-skill-pct { font-size: 1.25rem; }
.dh-skill-circle-label .dh-skill-name { font-size: 0.95rem; }

/* --- Layout 3: tags (cloud) --- */
.dh-skills-tags { display: flex; flex-wrap: wrap; gap: 14px 22px; align-items: center; justify-content: center; padding: 24px; max-width: 880px; margin-inline: auto; line-height: 1.2; }
.dh-skill-tag { display: inline-flex; align-items: baseline; gap: 6px; padding: 8px 14px; border-radius: 999px; background: var(--bg-card); border: 1px solid var(--border); color: var(--text); transition: transform .2s var(--ease), border-color .2s var(--ease), background .2s var(--ease); cursor: default; }
.dh-skill-tag:hover { transform: translateY(-2px); border-color: var(--accent); background: var(--accent-soft); }
.dh-skill-tag-pct { font-style: normal; font-size: 0.7em; color: var(--accent); font-weight: 700; opacity: .85; }

/* --- Layout 4: matrix (2-col with desc) --- */
.dh-skills-matrix { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 40px; }
.dh-skill-matrix-row { padding: 18px 20px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-sm); transition: border-color .2s var(--ease), transform .2s var(--ease); }
.dh-skill-matrix-row:hover { border-color: var(--accent); transform: translateY(-2px); }

/* --- Layout 5: icons grid (4-col cards) --- */
.dh-skills-icons { display: grid; grid-template-columns: repeat(var(--dh-skills-cols, 3), 1fr); gap: 24px; }
.dh-skill-icon-card { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; padding: 24px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); transition: transform .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease); }
.dh-skill-icon-card:hover { transform: translateY(-4px); border-color: var(--accent); box-shadow: 0 18px 50px -20px rgba(0,0,0,.12); }
.dh-skill-icon-wrap { display: inline-grid; place-items: center; width: 48px; height: 48px; border-radius: var(--radius-sm); background: var(--accent-soft); color: var(--accent); }
.dh-skill-icon-wrap .dh-skill-icon { width: 24px; height: 24px; display: block; }
.dh-skill-icon-card .dh-skill-name { font-size: 1.1rem; }
.dh-skill-icon-card .dh-skill-pct { font-size: 1rem; margin-inline-start: auto; align-self: flex-start; }
.dh-skill-icon-card .dh-skill-bar-track { width: 100%; margin-top: 4px; }

/* --- Layout 6: split (text + bars) --- */
.dh-skills-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: 60px; align-items: center; }
.dh-skills-split-text { display: flex; flex-direction: column; gap: 12px; }
.dh-skills-split-text .dh-label { color: var(--accent); }
.dh-skills-split-text .dh-h2 { margin-top: 4px; }
.dh-skills-split-lead { color: var(--text-muted); font-size: 15px; line-height: 1.7; margin: 12px 0 0; }
.dh-skills-split-bars { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 22px; }

/* --- Skills responsive --- */
@media (max-width: 960px) {
    .dh-skills-circular { grid-template-columns: repeat(2, 1fr); }
    .dh-skills-icons { grid-template-columns: repeat(2, 1fr); }
    .dh-skills-matrix { grid-template-columns: 1fr; }
    .dh-skills-split { grid-template-columns: 1fr; gap: 32px; }
}
@media (max-width: 768px) {
    .dh-skills-circular,
    .dh-skills-icons { grid-template-columns: 1fr; }
    .dh-skill-circle { max-width: 240px; margin-inline: auto; }
}

/* --- Reduced motion: skip the bar fill transition --- */
@media (prefers-reduced-motion: reduce) {
    .dh-skill-bar-fill,
    .dh-skill-circle-fill { transition: none !important; }
}

/* --- RTL safety: keep carousel arrows visually correct --- */
.dh-rtl .dh-blog-arrow--prev { transform: scaleX(-1); }
.dh-rtl .dh-blog-arrow--next { transform: scaleX(-1); }

/* ==========================================================================
   v3.9.3 — P2B-SECTIONS: Awards section (6 layouts)
   All colors come from CSS variables (dark-mode safe). Logical properties
   (margin-inline / padding-inline / border-block-end) keep the layout
   correct in RTL.
   ========================================================================== */

.dh-section.dh-awards--timeline,
.dh-section.dh-awards--grid,
.dh-section.dh-awards--minimal,
.dh-section.dh-awards--showcase,
.dh-section.dh-awards--badges,
.dh-section.dh-awards--banner { padding: 100px 0; border-block-end: 1px solid var(--border); }

.dh-awards-empty { padding: 32px; text-align: center; color: var(--text-muted); border: 1px dashed var(--border); border-radius: var(--radius-sm); }

.dh-award-year { display: inline-block; font-family: var(--font-body); font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--accent); background: var(--accent-soft); padding: 3px 10px; border-radius: 999px; }
.dh-award-name { font-family: var(--font-heading); font-weight: 600; color: var(--text); margin: 0; line-height: 1.3; }
.dh-award-org { display: block; font-family: var(--font-body); font-size: 13px; color: var(--text-muted); margin-block-start: 4px; }
.dh-award-desc { color: var(--text-muted); font-size: 14px; line-height: 1.6; margin: 8px 0 0; }
.dh-award-icon-wrap { display: inline-grid; place-items: center; width: 48px; height: 48px; border-radius: var(--radius-sm); background: var(--accent-soft); color: var(--accent); flex: 0 0 auto; }
.dh-award-icon-wrap .dh-award-icon { width: 26px; height: 26px; display: block; }

/* --- Layout 1: timeline (vertical alternating) --- */
.dh-awards-timeline { list-style: none; margin: 0; padding: 0; position: relative; max-width: 880px; margin-inline: auto; }
.dh-awards-timeline::before { content: ""; position: absolute; inset-inline-start: 50%; transform: translateX(-50%); top: 0; bottom: 0; width: 2px; background: var(--border); }
.dh-rtl .dh-awards-timeline::before { transform: translateX(50%); }
.dh-award-tl { position: relative; width: 50%; padding: 14px 28px; margin-block-end: 22px; }
.dh-award-tl:not(.dh-award-tl--right) { padding-inline-end: 40px; }
.dh-award-tl--right { margin-inline-start: 50%; padding-inline-start: 40px; }
.dh-award-tl-dot { position: absolute; top: 24px; inset-inline-end: -7px; width: 14px; height: 14px; border-radius: 50%; background: var(--accent); border: 3px solid var(--bg); box-shadow: 0 0 0 1px var(--accent); }
.dh-award-tl--right .dh-award-tl-dot { inset-inline-end: auto; inset-inline-start: -7px; }
.dh-award-tl-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 18px 22px; transition: transform .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease); }
.dh-award-tl-card:hover { transform: translateY(-3px); border-color: var(--accent); box-shadow: 0 18px 50px -20px rgba(0,0,0,.12); }
.dh-award-tl-card .dh-award-year { margin-block-end: 8px; }

/* --- Layout 2: grid (3-col cards) --- */
.dh-awards-grid { display: grid; grid-template-columns: repeat(var(--dh-awards-cols, 3), 1fr); gap: 24px; }
.dh-award-card { display: flex; gap: 16px; padding: 22px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); transition: transform .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease); }
.dh-award-card:hover { transform: translateY(-4px); border-color: var(--accent); box-shadow: 0 18px 50px -20px rgba(0,0,0,.12); }
.dh-award-card-body { min-width: 0; flex: 1 1 auto; }
.dh-award-card-body .dh-award-year { margin-block-end: 8px; }
.dh-award-card-body .dh-award-name { font-size: 1.1rem; }

/* --- Layout 3: minimal (text list, no icons) --- */
.dh-awards-minimal { list-style: none; margin: 0; padding: 0; max-width: 760px; margin-inline: auto; }
.dh-award-min-row { display: grid; grid-template-columns: 100px 1fr; gap: 24px; padding: 22px 0; border-block-end: 1px solid var(--border); align-items: baseline; }
.dh-award-min-row:last-child { border-block-end: 0; }
.dh-award-min-year { font-family: var(--font-body); font-size: 14px; font-weight: 600; letter-spacing: .06em; color: var(--accent); text-align: inline-start; }
.dh-award-min-body { display: flex; flex-direction: column; gap: 4px; }
.dh-award-min-body .dh-award-name { font-size: clamp(1.15rem, 1.6vw, 1.4rem); }

/* --- Layout 4: showcase (featured + list) --- */
.dh-awards-showcase { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 32px; align-items: start; }
.dh-award-featured { display: flex; gap: 22px; padding: 32px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); position: relative; overflow: hidden; }
.dh-award-featured::before { content: ""; position: absolute; inset-block-start: 0; inset-inline-end: 0; width: 120px; height: 120px; background: radial-gradient(circle at top right, var(--accent-soft), transparent 70%); pointer-events: none; }
.dh-award-featured-icon { position: relative; display: inline-grid; place-items: center; width: 72px; height: 72px; border-radius: var(--radius); background: var(--accent-soft); color: var(--accent); flex: 0 0 auto; }
.dh-award-featured-icon .dh-award-icon { width: 40px; height: 40px; }
.dh-award-featured-body { position: relative; z-index: 1; min-width: 0; flex: 1 1 auto; }
.dh-award-featured-name { font-size: clamp(1.5rem, 2.4vw, 2rem); margin-block-start: 6px; }
.dh-award-featured-desc { font-size: 16px; -webkit-line-clamp: 4; line-clamp: 4; display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
.dh-award-rest { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.dh-award-rest-item { display: flex; gap: 14px; padding: 14px 16px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-sm); transition: border-color .2s var(--ease), transform .2s var(--ease); }
.dh-award-rest-item:hover { border-color: var(--accent); transform: translateX(-3px); }
.dh-rtl .dh-award-rest-item:hover { transform: translateX(3px); }
.dh-award-rest-icon { display: inline-grid; place-items: center; width: 36px; height: 36px; border-radius: var(--radius-sm); background: var(--accent-soft); color: var(--accent); flex: 0 0 auto; }
.dh-award-rest-icon .dh-award-icon { width: 20px; height: 20px; }
.dh-award-rest-body { min-width: 0; flex: 1 1 auto; display: flex; flex-direction: column; gap: 2px; }
.dh-award-rest-body .dh-award-name { font-size: 1rem; }
.dh-award-rest-meta { font-size: 12px; color: var(--text-muted); display: inline-flex; gap: 4px; align-items: baseline; }
.dh-award-sep { opacity: .5; }

/* --- Layout 5: badges (circle grid with hover tooltip) --- */
.dh-awards-badges { list-style: none; margin: 0; padding: 12px 0 0; display: grid; grid-template-columns: repeat(var(--dh-awards-cols, 3), 1fr); gap: 32px 24px; justify-items: center; }
.dh-award-badge { position: relative; display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 16px; cursor: pointer; outline: none; }
.dh-award-badge-ring { display: inline-grid; place-items: center; width: 96px; height: 96px; border-radius: 50%; background: var(--bg-card); border: 2px solid var(--border); color: var(--accent); transition: transform .3s var(--ease), border-color .3s var(--ease), background .3s var(--ease); }
.dh-award-badge-ring .dh-award-icon { width: 44px; height: 44px; }
.dh-award-badge:hover .dh-award-badge-ring,
.dh-award-badge:focus-visible .dh-award-badge-ring { transform: translateY(-4px) scale(1.06); border-color: var(--accent); background: var(--accent-soft); }
.dh-award-badge-label { font-family: var(--font-heading); font-weight: 600; font-size: 14px; text-align: center; color: var(--text); max-width: 140px; }
.dh-award-badge-year { font-size: 12px; color: var(--text-muted); letter-spacing: .05em; }
.dh-award-badge-tooltip { position: absolute; inset-block-end: calc(100% - 8px); inset-inline-start: 50%; transform: translateX(-50%) translateY(8px); background: var(--text); color: var(--bg); padding: 8px 12px; border-radius: var(--radius-sm); font-size: 12px; line-height: 1.4; width: max-content; max-width: 220px; opacity: 0; visibility: hidden; transition: opacity .2s var(--ease), transform .2s var(--ease); pointer-events: none; box-shadow: 0 12px 36px -10px rgba(0,0,0,.3); z-index: 2; }
.dh-award-badge:hover .dh-award-badge-tooltip,
.dh-award-badge:focus-visible .dh-award-badge-tooltip { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }

/* --- Layout 6: banner (horizontal scroll) --- */
.dh-awards-banner { display: flex; align-items: center; gap: 8px; }
.dh-awards-banner-viewport { overflow-x: auto; overflow-y: hidden; flex: 1 1 auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.dh-awards-banner-viewport::-webkit-scrollbar { display: none; }
.dh-awards-banner-track { list-style: none; margin: 0; padding: 4px; display: flex; gap: 24px; }
.dh-award-banner-slide { flex: 0 0 calc((100% - 48px) / 3); scroll-snap-align: start; display: flex; flex-direction: column; gap: 8px; padding: 22px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); transition: border-color .3s var(--ease), transform .3s var(--ease); }
.dh-award-banner-slide:hover { border-color: var(--accent); transform: translateY(-3px); }
.dh-award-banner-icon { display: inline-grid; place-items: center; width: 44px; height: 44px; border-radius: var(--radius-sm); background: var(--accent-soft); color: var(--accent); }
.dh-award-banner-icon .dh-award-icon { width: 26px; height: 26px; }
.dh-award-banner-slide .dh-award-name { font-size: 1.05rem; }
.dh-awards-arrow { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border); background: var(--bg-card); color: var(--text); font-size: 22px; line-height: 1; cursor: pointer; display: grid; place-items: center; transition: all .2s var(--ease); }
.dh-awards-arrow:hover { background: var(--accent); color: #fff; border-color: var(--accent); }

/* --- Awards responsive --- */
@media (max-width: 960px) {
    .dh-awards-grid { grid-template-columns: repeat(2, 1fr); }
    .dh-awards-showcase { grid-template-columns: 1fr; }
    .dh-awards-badges { grid-template-columns: repeat(2, 1fr); }
    .dh-award-banner-slide { flex: 0 0 calc((100% - 24px) / 2); }
}
@media (max-width: 768px) {
    .dh-awards-timeline::before { inset-inline-start: 8px; transform: none; }
    .dh-award-tl,
    .dh-award-tl--right { width: 100%; margin-inline-start: 0; padding: 14px 14px 14px 32px; }
    .dh-award-tl-dot { inset-inline-start: 1px !important; inset-inline-end: auto !important; top: 22px; }
    .dh-awards-grid,
    .dh-awards-badges { grid-template-columns: 1fr; }
    .dh-award-min-row { grid-template-columns: 1fr; gap: 6px; }
    .dh-awards-banner { flex-wrap: wrap; }
    .dh-awards-banner-viewport { order: 1; width: 100%; }
    .dh-awards-arrow { order: 2; margin-inline-start: auto; }
    .dh-awards-arrow--prev { order: 0; }
    .dh-award-banner-slide { flex: 0 0 86%; }
}

/* --- Awards reduced motion --- */
@media (prefers-reduced-motion: reduce) {
    .dh-award-card,
    .dh-award-tl-card,
    .dh-award-featured,
    .dh-award-banner-slide,
    .dh-award-badge-ring { transition: none !important; }
}

/* --- Awards RTL safety --- */
.dh-rtl .dh-awards-arrow--prev { transform: scaleX(-1); }
.dh-rtl .dh-awards-arrow--next { transform: scaleX(-1); }

/* ==========================================================================
   v3.9.3 — P2B-SECTIONS: Mission / Vision / Values section (6 layouts)
   ========================================================================== */

.dh-section.dh-mission--three,
.dh-section.dh-mission--split,
.dh-section.dh-mission--banner,
.dh-section.dh-mission--values-grid,
.dh-section.dh-mission--quote,
.dh-section.dh-mission--accordion { padding: 100px 0; border-block-end: 1px solid var(--border); }

.dh-mission-block-label { display: inline-block; font-family: var(--font-body); font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--accent); margin-block-end: 14px; }
.dh-mission-block-text { font-family: var(--font-heading); font-size: clamp(1.05rem, 1.4vw, 1.25rem); line-height: 1.55; color: var(--text); margin: 0; }
.dh-value-name { font-family: var(--font-heading); font-weight: 600; color: var(--text); margin: 0; }
.dh-value-desc { color: var(--text-muted); font-size: 14px; line-height: 1.55; margin: 0; }
.dh-value-icon-wrap { display: inline-grid; place-items: center; width: 48px; height: 48px; border-radius: var(--radius-sm); background: var(--accent-soft); color: var(--accent); flex: 0 0 auto; }
.dh-value-icon-wrap .dh-value-icon { width: 26px; height: 26px; display: block; }
.dh-mission-head-tag { color: var(--accent); font-family: var(--font-heading); font-weight: 700; letter-spacing: .04em; }
.dh-mission-head-text { color: var(--text-muted); font-size: 15px; line-height: 1.6; margin: 0 0 8px; max-width: 760px; margin-inline: auto; }

/* --- Layout 1: three-column --- */
.dh-mission-three { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.dh-mission-block { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 28px; transition: transform .3s var(--ease), border-color .3s var(--ease); }
.dh-mission-block:hover { transform: translateY(-3px); border-color: var(--accent); }
.dh-mission-block--values { display: flex; flex-direction: column; }
.dh-mission-values-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.dh-mission-value-mini { display: flex; gap: 12px; align-items: flex-start; }
.dh-mission-value-mini-icon { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: var(--radius-sm); background: var(--accent-soft); color: var(--accent); flex: 0 0 auto; }
.dh-mission-value-mini-icon .dh-value-icon { width: 18px; height: 18px; }
.dh-mission-value-mini-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.dh-mission-value-mini-body .dh-value-name { font-size: .95rem; }
.dh-mission-value-mini-body .dh-value-desc { font-size: 13px; line-height: 1.5; }

/* --- Layout 2: split (mission + vision left, values right) --- */
.dh-mission-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px; align-items: start; }
.dh-mission-split-left { display: flex; flex-direction: column; gap: 18px; }
.dh-mission-split-right { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 28px; }

/* --- Layout 3: banner (full-width mission statement) --- */
.dh-mission-banner { text-align: center; padding: clamp(40px, 6vw, 80px) 24px; border-radius: var(--radius); background: var(--accent-soft); border: 1px solid var(--border); }
.dh-mission-banner-text { font-family: var(--font-heading); font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 1.25; color: var(--text); margin: 0 auto; max-width: 880px; font-weight: 600; }
.dh-mission-banner-vision { font-family: var(--font-body); font-size: clamp(1rem, 1.4vw, 1.15rem); color: var(--text-muted); margin: 24px auto 0; max-width: 720px; line-height: 1.6; }
.dh-mission-banner-values { list-style: none; margin: 32px 0 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 14px 28px; }
.dh-mission-banner-value { display: inline-flex; align-items: center; gap: 8px; }
.dh-mission-banner-value-icon { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--bg-card); color: var(--accent); border: 1px solid var(--border); }
.dh-mission-banner-value-icon .dh-value-icon { width: 16px; height: 16px; }
.dh-mission-banner-value .dh-value-name { font-size: 14px; }

/* --- Layout 4: values grid (icon cards) --- */
.dh-mission-values-grid-head { text-align: center; margin-block-end: 32px; }
.dh-mission-values-grid { display: grid; grid-template-columns: repeat(var(--dh-mission-cols, 3), 1fr); gap: 24px; }
.dh-value-card { display: flex; flex-direction: column; gap: 10px; padding: 24px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); transition: transform .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease); }
.dh-value-card:hover { transform: translateY(-4px); border-color: var(--accent); box-shadow: 0 18px 50px -20px rgba(0,0,0,.12); }
.dh-value-card .dh-value-name { font-size: 1.1rem; }
.dh-value-card .dh-value-desc { font-size: 14px; }

/* --- Layout 5: quote (pull-quote + values) --- */
.dh-mission-quote { margin: 0 auto; max-width: 900px; text-align: center; padding: 24px 0; border: 0; position: relative; }
.dh-mission-quote::before { content: "\201C"; position: absolute; inset-block-start: -28px; inset-inline-start: 50%; transform: translateX(-50%); font-family: var(--font-heading); font-size: 5rem; line-height: 1; color: var(--accent); opacity: .35; pointer-events: none; }
.dh-mission-quote-text { font-family: var(--font-heading); font-size: clamp(1.4rem, 2.4vw, 2rem); line-height: 1.35; color: var(--text); font-weight: 500; font-style: italic; margin: 0; }
.dh-mission-quote-cite { display: block; margin-block-start: 18px; font-family: var(--font-body); font-size: 13px; letter-spacing: .08em; text-transform: uppercase; color: var(--text-muted); font-style: normal; }
.dh-mission-quote-after { max-width: 760px; margin: 32px auto 0; }
.dh-mission-quote-vision { font-size: 15px; line-height: 1.6; margin: 0 0 24px; }
.dh-mission-quote-values { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 12px 22px; }
.dh-mission-quote-value { display: inline-flex; align-items: center; gap: 8px; }
.dh-mission-quote-value-icon { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--accent-soft); color: var(--accent); }
.dh-mission-quote-value-icon .dh-value-icon { width: 16px; height: 16px; }
.dh-mission-quote-value .dh-value-name { font-size: 14px; }

/* --- Layout 6: accordion (expandable values) --- */
.dh-mission-accordion-head { max-width: 760px; margin: 0 auto 28px; }
.dh-mission-accordion { list-style: none; margin: 0 auto; padding: 0; max-width: 760px; border-block-start: 1px solid var(--border); }
.dh-mission-acc-item { border-block-end: 1px solid var(--border); }
.dh-mission-acc-q { width: 100%; display: flex; align-items: center; gap: 14px; padding: 18px 4px; background: transparent; border: 0; cursor: pointer; color: var(--text); text-align: inline-start; font-family: var(--font-heading); font-size: 1.05rem; font-weight: 600; transition: color .2s var(--ease); }
.dh-mission-acc-q:hover { color: var(--accent); }
.dh-mission-acc-q-icon { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: var(--radius-sm); background: var(--accent-soft); color: var(--accent); flex: 0 0 auto; }
.dh-mission-acc-q-icon .dh-value-icon { width: 18px; height: 18px; }
.dh-mission-acc-q-text { flex: 1 1 auto; min-width: 0; }
.dh-mission-acc-q-arrow { font-family: var(--font-body); font-size: 22px; line-height: 1; font-weight: 400; color: var(--text-muted); transition: transform .3s var(--ease); }
.dh-mission-acc-item.is-open .dh-mission-acc-q-arrow { transform: rotate(45deg); color: var(--accent); }
.dh-mission-acc-panel { max-height: 0; overflow: hidden; transition: max-height .35s var(--ease); }
.dh-mission-acc-item.is-open .dh-mission-acc-panel { max-height: 320px; }
.dh-mission-acc-panel-text { color: var(--text-muted); font-size: 14px; line-height: 1.6; margin: 0; padding: 4px 14px 22px 46px; }

/* --- Mission responsive --- */
@media (max-width: 960px) {
    .dh-mission-three { grid-template-columns: 1fr; }
    .dh-mission-split { grid-template-columns: 1fr; gap: 18px; }
    .dh-mission-values-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
    .dh-mission-values-grid { grid-template-columns: 1fr; }
    .dh-mission-quote::before { display: none; }
    .dh-mission-acc-panel-text { padding-inline-start: 14px; }
}

/* --- Mission reduced motion --- */
@media (prefers-reduced-motion: reduce) {
    .dh-mission-block,
    .dh-value-card,
    .dh-mission-acc-panel { transition: none !important; }
    .dh-mission-acc-q-arrow { transition: none !important; }
}

/* ==========================================================================
   v3.9.4 — P2C-SECTIONS: Showreel / Video section (6 layouts)
   ========================================================================== */

.dh-section.dh-showreel--cover,
.dh-section.dh-showreel--split,
.dh-section.dh-showreel--modal,
.dh-section.dh-showreel--bgvideo,
.dh-section.dh-showreel--carousel,
.dh-section.dh-showreel--minimal { padding: 100px 0; border-block-end: 1px solid var(--border); }

.dh-showreel-empty { color: var(--text-muted); font-size: 15px; text-align: center; padding: 40px 0; }
.dh-showreel-play { display: inline-grid; place-items: center; width: 76px; height: 76px; border-radius: 50%; background: var(--bg-card); border: 1px solid var(--border); color: var(--accent); cursor: pointer; transition: transform .3s var(--ease), background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease); box-shadow: 0 12px 36px -12px rgba(0,0,0,.18); }
.dh-showreel-play:hover { transform: scale(1.06); background: var(--accent); color: #fff; border-color: var(--accent); }
.dh-showreel-play:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.dh-showreel-play--lg { width: 96px; height: 96px; }
.dh-showreel-play--sm { width: 44px; height: 44px; box-shadow: 0 8px 22px -10px rgba(0,0,0,.3); }
.dh-showreel-play-icon { width: 28px; height: 28px; transform: translateX(2px); }
.dh-showreel-play--lg .dh-showreel-play-icon { width: 36px; height: 36px; transform: translateX(3px); }
.dh-showreel-play--sm .dh-showreel-play-icon { width: 16px; height: 16px; transform: translateX(1px); }

/* --- Layout 1: cover (full-width poster + play button overlay) --- */
.dh-showreel-cover { position: relative; border-radius: var(--radius); overflow: hidden; min-height: 460px; display: flex; align-items: center; justify-content: center; }
.dh-showreel-cover-poster { position: absolute; inset: 0; background-size: cover; background-position: center; transition: transform .8s var(--ease); }
.dh-showreel-cover::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.55) 0%, rgba(0,0,0,.3) 40%, rgba(0,0,0,.65) 100%); }
.dh-showreel-cover:hover .dh-showreel-cover-poster { transform: scale(1.04); }
.dh-showreel-cover-overlay { position: relative; z-index: 2; text-align: center; color: #fff; padding: 40px 24px; max-width: 720px; }
.dh-showreel-cover-overlay .dh-label { color: var(--accent); }
.dh-showreel-cover-title { font-family: var(--font-heading); font-size: clamp(1.8rem, 3.4vw, 2.8rem); line-height: 1.2; margin: 14px 0; color: #fff; }
.dh-showreel-cover-desc { font-size: clamp(1rem, 1.4vw, 1.1rem); color: rgba(255,255,255,.85); line-height: 1.6; margin: 0 0 28px; }
.dh-showreel-cover-overlay .dh-showreel-play { background: rgba(255,255,255,.95); color: var(--accent); }
.dh-showreel-cover-overlay .dh-showreel-play:hover { background: var(--accent); color: #fff; }

/* --- Layout 2: split (text + inline player) --- */
.dh-showreel-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); gap: 36px; align-items: center; }
.dh-showreel-split-text { display: flex; flex-direction: column; gap: 16px; align-items: flex-start; }
.dh-showreel-split-text .dh-h2 { font-size: clamp(1.6rem, 2.6vw, 2.2rem); margin: 6px 0 0; }
.dh-showreel-split-desc { color: var(--text-muted); font-size: 15px; line-height: 1.6; }
.dh-showreel-split-cta { margin-block-start: 8px; }
.dh-showreel-split-player { position: relative; border-radius: var(--radius); overflow: hidden; background: var(--bg-card); border: 1px solid var(--border); aspect-ratio: 16 / 9; min-height: 320px; }
.dh-showreel-split-player iframe,
.dh-showreel-split-player video { width: 100%; height: 100%; border: 0; display: block; }
.dh-showreel-embed-inner { width: 100%; height: 100%; }
.dh-showreel-embed-inner iframe,
.dh-showreel-embed-inner video { width: 100%; height: 100%; border: 0; display: block; }

/* --- Layout 3: modal trigger (large poster + play) --- */
.dh-showreel-modal-trigger { display: flex; justify-content: center; }
.dh-showreel-modal-poster { position: relative; display: block; width: 100%; max-width: 980px; aspect-ratio: 16 / 9; border: 0; padding: 0; cursor: pointer; overflow: hidden; border-radius: var(--radius); background: var(--bg-card); }
.dh-showreel-modal-poster-img { position: absolute; inset: 0; background-size: cover; background-position: center; transition: transform .6s var(--ease); }
.dh-showreel-modal-poster:hover .dh-showreel-modal-poster-img { transform: scale(1.05); }
.dh-showreel-modal-poster::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.15) 0%, rgba(0,0,0,.55) 100%); transition: opacity .3s var(--ease); }
.dh-showreel-modal-poster .dh-showreel-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 2; }
.dh-showreel-modal-poster:hover .dh-showreel-play { transform: translate(-50%, -50%) scale(1.06); }
.dh-showreel-modal-cap { position: absolute; inset-block-end: 0; inset-inline-start: 0; right: 0; z-index: 2; padding: 22px 28px; color: #fff; text-align: start; display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.dh-showreel-modal-cap .dh-label { color: var(--accent); }
.dh-showreel-modal-title { font-family: var(--font-heading); font-size: clamp(1.2rem, 2vw, 1.6rem); color: #fff; }

/* --- Layout 4: bgvideo (muted autoplay background video) --- */
.dh-showreel-bgvideo-wrap { position: relative; border-radius: var(--radius); overflow: hidden; min-height: 480px; display: flex; align-items: center; justify-content: center; }
.dh-showreel-bgvideo-el { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.dh-showreel-bgvideo-poster { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0; transition: opacity .4s var(--ease); pointer-events: none; }
.dh-showreel-bgvideo-wrap.is-loading .dh-showreel-bgvideo-poster { opacity: 1; }
.dh-showreel-bgvideo-wrap::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.4) 0%, rgba(0,0,0,.65) 100%); }
.dh-showreel-bgvideo-overlay { position: relative; z-index: 2; text-align: center; color: #fff; padding: 40px 24px; max-width: 720px; }
.dh-showreel-bgvideo-label { color: var(--accent); }
.dh-showreel-bgvideo-title { font-family: var(--font-heading); font-size: clamp(1.7rem, 3.2vw, 2.6rem); line-height: 1.2; margin: 14px 0; color: #fff; }
.dh-showreel-bgvideo-desc { font-size: clamp(1rem, 1.4vw, 1.1rem); color: rgba(255,255,255,.85); line-height: 1.6; margin: 0 0 28px; }
.dh-showreel-bgvideo-overlay .dh-showreel-play { background: rgba(255,255,255,.95); color: var(--accent); }

/* --- Layout 5: carousel (multiple poster thumbnails) --- */
.dh-showreel-carousel { display: flex; align-items: center; gap: 8px; }
.dh-showreel-carousel-viewport { overflow-x: auto; overflow-y: hidden; flex: 1 1 auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.dh-showreel-carousel-viewport::-webkit-scrollbar { display: none; }
.dh-showreel-carousel-track { list-style: none; margin: 0; padding: 4px; display: flex; gap: 18px; }
.dh-showreel-carousel-slide { flex: 0 0 calc((100% - 36px) / 3); scroll-snap-align: start; }
.dh-showreel-carousel-card { position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; padding: 0; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); overflow: hidden; cursor: pointer; transition: transform .3s var(--ease), border-color .3s var(--ease); }
.dh-showreel-carousel-card:hover { transform: translateY(-3px); border-color: var(--accent); }
.dh-showreel-carousel-poster { position: absolute; inset: 0; background-size: cover; background-position: center; transition: transform .4s var(--ease); }
.dh-showreel-carousel-card:hover .dh-showreel-carousel-poster { transform: scale(1.06); }
.dh-showreel-carousel-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.1) 0%, rgba(0,0,0,.55) 100%); }
.dh-showreel-carousel-card .dh-showreel-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 2; }
.dh-showreel-carousel-card:hover .dh-showreel-play { transform: translate(-50%, -50%) scale(1.06); }
.dh-showreel-carousel-cap { position: absolute; inset-block-end: 0; inset-inline-start: 0; z-index: 2; padding: 14px 16px; color: #fff; font-family: var(--font-heading); font-weight: 600; font-size: 14px; }
.dh-showreel-arrow { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border); background: var(--bg-card); color: var(--text); font-size: 22px; line-height: 1; cursor: pointer; display: grid; place-items: center; transition: all .2s var(--ease); }
.dh-showreel-arrow:hover { background: var(--accent); color: #fff; border-color: var(--accent); }

/* --- Layout 6: minimal (poster + link out) --- */
.dh-showreel-minimal { display: flex; gap: 24px; align-items: center; padding: 24px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); text-decoration: none; color: var(--text); transition: transform .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease); }
.dh-showreel-minimal:hover { transform: translateY(-3px); border-color: var(--accent); box-shadow: 0 18px 50px -20px rgba(0,0,0,.12); }
.dh-showreel-minimal-poster { flex: 0 0 220px; aspect-ratio: 16 / 9; border-radius: var(--radius-sm); background-size: cover; background-position: center; }
.dh-showreel-minimal-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.dh-showreel-minimal-title { font-family: var(--font-heading); font-size: clamp(1.2rem, 2vw, 1.6rem); color: var(--text); }
.dh-showreel-minimal-cta { color: var(--accent); font-family: var(--font-body); font-weight: 600; font-size: 14px; }

/* --- Shared modal (used by cover / modal / bgvideo / carousel layouts) --- */
.dh-showreel-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 24px; opacity: 0; visibility: hidden; transition: opacity .3s var(--ease), visibility .3s var(--ease); }
.dh-showreel-modal[aria-hidden="false"] { opacity: 1; visibility: visible; }
.dh-showreel-modal-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.85); }
.dh-showreel-modal-dialog { position: relative; width: min(1100px, 100%); max-height: calc(100vh - 48px); aspect-ratio: 16 / 9; background: var(--bg); border-radius: var(--radius); overflow: hidden; box-shadow: 0 30px 80px -30px rgba(0,0,0,.6); transform: scale(.96); transition: transform .3s var(--ease); }
.dh-showreel-modal[aria-hidden="false"] .dh-showreel-modal-dialog { transform: scale(1); }
.dh-showreel-modal-frame { position: absolute; inset: 0; }
.dh-showreel-modal-frame iframe,
.dh-showreel-modal-frame video { width: 100%; height: 100%; border: 0; display: block; }
.dh-showreel-modal-close { position: absolute; top: -16px; inset-inline-end: -16px; width: 44px; height: 44px; border-radius: 50%; background: var(--bg-card); border: 1px solid var(--border); color: var(--text); cursor: pointer; display: grid; place-items: center; z-index: 2; box-shadow: 0 10px 30px -10px rgba(0,0,0,.4); transition: transform .2s var(--ease), background .2s var(--ease), color .2s var(--ease); }
.dh-showreel-modal-close:hover { background: var(--accent); color: #fff; transform: rotate(90deg); }
.dh-showreel-modal-close svg { width: 18px; height: 18px; }

/* --- Showreel responsive --- */
@media (max-width: 960px) {
    .dh-showreel-split { grid-template-columns: 1fr; gap: 24px; }
    .dh-showreel-split-player { min-height: 280px; }
    .dh-showreel-carousel-slide { flex: 0 0 calc((100% - 18px) / 2); }
    .dh-showreel-minimal-poster { flex: 0 0 180px; }
}
@media (max-width: 768px) {
    .dh-showreel-cover { min-height: 360px; }
    .dh-showreel-bgvideo-wrap { min-height: 360px; }
    .dh-showreel-cover-title, .dh-showreel-bgvideo-title { font-size: clamp(1.4rem, 5vw, 1.8rem); }
    .dh-showreel-carousel-slide { flex: 0 0 84%; }
    .dh-showreel-carousel { flex-wrap: wrap; }
    .dh-showreel-carousel-viewport { order: 1; width: 100%; }
    .dh-showreel-arrow { order: 2; margin-inline-start: auto; }
    .dh-showreel-arrow--prev { order: 0; }
    .dh-showreel-minimal { flex-direction: column; text-align: center; }
    .dh-showreel-minimal-poster { flex: 0 0 auto; width: 100%; }
    .dh-showreel-minimal-body { align-items: center; }
    .dh-showreel-modal-close { top: 8px; inset-inline-end: 8px; }
}

/* --- Showreel reduced motion --- */
@media (prefers-reduced-motion: reduce) {
    .dh-showreel-play,
    .dh-showreel-cover-poster,
    .dh-showreel-modal-poster-img,
    .dh-showreel-carousel-poster,
    .dh-showreel-carousel-card,
    .dh-showreel-minimal,
    .dh-showreel-modal-dialog,
    .dh-showreel-modal-close,
    .dh-showreel-modal { transition: none !important; }
    .dh-showreel-bgvideo-el { display: none; }
}

/* --- Showreel RTL safety --- */
.dh-rtl .dh-showreel-arrow--prev,
.dh-rtl .dh-showreel-arrow--next { transform: scaleX(-1); }
.dh-rtl .dh-showreel-play-icon { transform: translateX(-2px) scaleX(-1); }
.dh-rtl .dh-showreel-play--lg .dh-showreel-play-icon { transform: translateX(-3px) scaleX(-1); }
.dh-rtl .dh-showreel-play--sm .dh-showreel-play-icon { transform: translateX(-1px) scaleX(-1); }

/* ==========================================================================
   v3.9.4 — P2C-SECTIONS: Partners / Sponsors section (6 layouts)
   ========================================================================== */

.dh-section.dh-partners--grid,
.dh-section.dh-partners--marquee,
.dh-section.dh-partners--list,
.dh-section.dh-partners--minimal,
.dh-section.dh-partners--tiered,
.dh-section.dh-partners--carousel { padding: 100px 0; border-block-end: 1px solid var(--border); }

.dh-partners-empty { color: var(--text-muted); font-size: 15px; text-align: center; padding: 40px 0; }

/* --- Shared partner logo lockup --- */
.dh-partner-logo { display: inline-grid; place-items: center; width: 96px; height: 64px; flex: 0 0 auto; border-radius: var(--radius-sm); background: var(--bg-card); border: 1px solid var(--border); overflow: hidden; padding: 8px 14px; transition: border-color .3s var(--ease); }
.dh-partner-logo-img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; display: block; }
.dh-partner-logo-text { display: inline-grid; place-items: center; width: 100%; height: 100%; font-family: var(--font-heading); font-weight: 700; font-size: 22px; letter-spacing: .02em; color: var(--accent); }
.dh-partner-name { font-family: var(--font-heading); font-weight: 600; font-size: 1.05rem; color: var(--text); margin: 0; }
.dh-partner-desc { font-size: 13px; line-height: 1.55; color: var(--text-muted); margin: 0; }
.dh-partner-tier-badge { display: inline-flex; align-items: center; gap: 4px; font-family: var(--font-body); font-size: 10px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; padding: 3px 8px; border-radius: 999px; border: 1px solid var(--border); color: var(--text-muted); background: var(--bg-card); }
.dh-partner-tier--platinum .dh-partner-tier-badge { color: #fff; background: color-mix(in srgb, var(--accent) 60%, var(--bg-card) 0%); border-color: transparent; }
.dh-partner-tier--gold .dh-partner-tier-badge { color: var(--text); background: var(--accent-soft); border-color: transparent; }
.dh-partner-body { display: flex; flex-direction: column; gap: 6px; min-width: 0; flex: 1 1 auto; }

/* --- Layout 1: grid (logo cards) --- */
.dh-partners-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(var(--dh-partners-cols, 3), 1fr); gap: 18px; }
.dh-partner-card { display: block; }
.dh-partner-card-inner { display: flex; align-items: center; gap: 16px; padding: 22px; height: 100%; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); text-decoration: none; color: var(--text); transition: transform .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease); }
.dh-partner-card-inner:hover { transform: translateY(-4px); border-color: var(--accent); box-shadow: 0 18px 50px -20px rgba(0,0,0,.12); }
.dh-partner-card-inner:hover .dh-partner-logo { border-color: var(--accent); }

/* --- Layout 2: marquee (scrolling logos) --- */
.dh-partners-marquee { overflow: hidden; position: relative; -webkit-mask-image: linear-gradient(90deg, transparent 0, var(--bg) 6%, var(--bg) 94%, transparent 100%); mask-image: linear-gradient(90deg, transparent 0, var(--bg) 6%, var(--bg) 94%, transparent 100%); }
.dh-partners-marquee-track { list-style: none; margin: 0; padding: 0; display: flex; gap: 40px; width: max-content; animation: dh-partners-marquee 32s linear infinite; }
.dh-partners-marquee:hover .dh-partners-marquee-track { animation-play-state: paused; }
.dh-partner-marquee-item { flex: 0 0 auto; }
.dh-partner-marquee-inner { display: inline-flex; align-items: center; gap: 14px; padding: 14px 22px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); text-decoration: none; color: var(--text); transition: border-color .2s var(--ease), transform .2s var(--ease); }
.dh-partner-marquee-inner:hover { border-color: var(--accent); transform: translateY(-3px); }
.dh-partner-marquee-name { font-family: var(--font-heading); font-weight: 600; font-size: 14px; }
@keyframes dh-partners-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* --- Layout 3: list (logo + name + desc horizontal rows) --- */
.dh-partners-list { list-style: none; margin: 0; padding: 0; max-width: 880px; margin-inline: auto; display: flex; flex-direction: column; gap: 0; }
.dh-partner-list-row { border-block-end: 1px solid var(--border); }
.dh-partner-list-row:last-child { border-block-end: 0; }
.dh-partner-list-inner { display: flex; align-items: center; gap: 24px; padding: 22px 4px; text-decoration: none; color: var(--text); transition: transform .2s var(--ease); }
.dh-partner-list-inner:hover { transform: translateX(-4px); }
.dh-rtl .dh-partner-list-inner:hover { transform: translateX(4px); }
.dh-partner-list-logo { width: 88px; height: 56px; }
.dh-partner-list-body { display: flex; flex-direction: column; gap: 4px; min-width: 0; flex: 1 1 auto; }
.dh-partner-list-body .dh-partner-name { font-size: 1.1rem; }

/* --- Layout 4: minimal (just logos in a row) --- */
.dh-partners-minimal { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 36px 48px; }
.dh-partner-min { display: block; }
.dh-partner-min-inner { display: inline-grid; place-items: center; padding: 12px 18px; border-radius: var(--radius-sm); transition: transform .3s var(--ease), opacity .3s var(--ease); text-decoration: none; }
.dh-partner-min-inner:hover { transform: scale(1.08); opacity: .85; }
.dh-partner-min-inner .dh-partner-logo { width: auto; height: 72px; min-width: 96px; padding: 8px 18px; border: 0; background: transparent; }

/* --- Layout 5: tiered (platinum / gold / silver) --- */
.dh-partners-tiered { display: flex; flex-direction: column; gap: 40px; }
.dh-partner-tier { display: flex; flex-direction: column; gap: 18px; }
.dh-partner-tier-title { margin: 0; display: flex; align-items: center; gap: 12px; font-family: var(--font-heading); font-size: 1rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: .08em; }
.dh-partner-tier-pill { display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px; border-radius: 999px; font-size: 12px; font-weight: 700; letter-spacing: .08em; }
.dh-partner-tier--platinum .dh-partner-tier-pill { background: color-mix(in srgb, var(--accent) 60%, var(--bg-card) 0%); color: #fff; }
.dh-partner-tier--gold .dh-partner-tier-pill { background: var(--accent-soft); color: var(--accent); }
.dh-partner-tier--silver .dh-partner-tier-pill { background: var(--bg-card); color: var(--text-muted); border: 1px solid var(--border); }
.dh-partner-tier-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(var(--dh-partners-cols, 3), 1fr); gap: 18px; }
.dh-partner-tier-card { display: block; }
.dh-partner-tier-card-inner { display: flex; align-items: center; gap: 14px; padding: 22px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); text-decoration: none; color: var(--text); transition: transform .3s var(--ease), border-color .3s var(--ease); }
.dh-partner-tier-card-inner:hover { transform: translateY(-3px); border-color: var(--accent); }
/* Platinum cards are visually larger than gold/silver. */
.dh-partner-tier--platinum .dh-partner-tier-card-inner { padding: 28px; gap: 18px; }
.dh-partner-tier--platinum .dh-partner-logo { width: 112px; height: 76px; }
.dh-partner-tier--platinum .dh-partner-name { font-size: 1.2rem; }
.dh-partner-tier--gold .dh-partner-logo { width: 96px; height: 64px; }
.dh-partner-tier--silver .dh-partner-logo { width: 72px; height: 48px; padding: 6px 10px; }
.dh-partner-tier--silver .dh-partner-name { font-size: .95rem; }

/* --- Layout 6: carousel (arrows + scroll-snap) --- */
.dh-partners-carousel { display: flex; align-items: center; gap: 8px; }
.dh-partners-carousel-viewport { overflow-x: auto; overflow-y: hidden; flex: 1 1 auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.dh-partners-carousel-viewport::-webkit-scrollbar { display: none; }
.dh-partners-carousel-track { list-style: none; margin: 0; padding: 4px; display: flex; gap: 24px; }
.dh-partner-carousel-slide { flex: 0 0 calc((100% - 48px) / 3); scroll-snap-align: start; }
.dh-partner-carousel-card { display: flex; flex-direction: column; gap: 16px; padding: 28px; height: 100%; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); text-decoration: none; color: var(--text); transition: transform .3s var(--ease), border-color .3s var(--ease); }
.dh-partner-carousel-card:hover { transform: translateY(-4px); border-color: var(--accent); }
.dh-partner-carousel-card .dh-partner-logo { align-self: flex-start; }
.dh-partners-arrow { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border); background: var(--bg-card); color: var(--text); font-size: 22px; line-height: 1; cursor: pointer; display: grid; place-items: center; transition: all .2s var(--ease); }
.dh-partners-arrow:hover { background: var(--accent); color: #fff; border-color: var(--accent); }

/* --- Partners responsive --- */
@media (max-width: 960px) {
    .dh-partners-grid { grid-template-columns: repeat(2, 1fr); }
    .dh-partner-tier-grid { grid-template-columns: repeat(2, 1fr); }
    .dh-partner-carousel-slide { flex: 0 0 calc((100% - 24px) / 2); }
}
@media (max-width: 768px) {
    .dh-partners-grid,
    .dh-partner-tier-grid { grid-template-columns: 1fr; }
    .dh-partner-list-inner { gap: 14px; padding: 18px 0; }
    .dh-partner-list-logo { width: 72px; height: 48px; }
    .dh-partner-card-inner { flex-direction: column; align-items: flex-start; gap: 12px; }
    .dh-partners-minimal { gap: 20px 28px; }
    .dh-partner-min-inner .dh-partner-logo { height: 56px; min-width: 76px; }
    .dh-partners-carousel { flex-wrap: wrap; }
    .dh-partners-carousel-viewport { order: 1; width: 100%; }
    .dh-partners-arrow { order: 2; margin-inline-start: auto; }
    .dh-partners-arrow--prev { order: 0; }
    .dh-partner-carousel-slide { flex: 0 0 86%; }
}

/* --- Partners reduced motion --- */
@media (prefers-reduced-motion: reduce) {
    .dh-partners-marquee-track { animation: none !important; }
    .dh-partner-card-inner,
    .dh-partner-tier-card-inner,
    .dh-partner-carousel-card,
    .dh-partner-marquee-inner,
    .dh-partner-min-inner,
    .dh-partner-list-inner { transition: none !important; }
}

/* --- Partners RTL safety --- */
.dh-rtl .dh-partners-arrow--prev,
.dh-rtl .dh-partners-arrow--next { transform: scaleX(-1); }
.dh-rtl .dh-partners-marquee-track { animation-direction: reverse; }

/* ==========================================================================
   QUOTE / MANIFESTO SECTION (v3.9.5 — P2D-SECTIONS)
   Six layouts: centered, split, banner, parallax, multi, minimal.
   ========================================================================== */
.dh-quote--centered,
.dh-quote--split,
.dh-quote--banner,
.dh-quote--parallax,
.dh-quote--multi,
.dh-quote--minimal { padding-block: clamp(64px, 8vw, 120px); }
.dh-quote-empty { color: var(--text-muted); font-style: italic; max-width: 640px; margin-inline: auto; text-align: center; }
.dh-quote-glyph { width: 56px; height: 56px; color: var(--accent); opacity: .9; display: block; }
.dh-quote-text { margin: 0; font-family: var(--font-heading); font-size: clamp(1.6rem, 3.2vw, 2.6rem); line-height: 1.35; font-weight: 500; color: var(--text); }
.dh-quote-attribution { display: flex; flex-direction: column; gap: 4px; margin-block-start: 24px; }
.dh-quote-author { font-family: var(--font-heading); font-weight: 600; font-size: 1.05rem; color: var(--text); }
.dh-quote-role { font-size: .9rem; color: var(--text-muted); }

/* --- Layout 1: centered (single large quote) --- */
.dh-quote-centered { max-width: 880px; margin-inline: auto; text-align: center; }
.dh-quote-centered .dh-quote-glyph { margin-inline: auto; margin-block-end: 24px; }
.dh-quote-centered .dh-quote-attribution { align-items: center; }

/* --- Layout 2: split (quote left + author photo right) --- */
.dh-quote-split { display: grid; grid-template-columns: 1.6fr 1fr; gap: clamp(32px, 5vw, 64px); align-items: center; }
.dh-quote-split-text { margin: 0; }
.dh-quote-split-text .dh-quote-glyph { margin-block-end: 18px; }
.dh-quote-split-author { display: flex; justify-content: center; }
.dh-quote-author-img { width: 100%; max-width: 320px; aspect-ratio: 1 / 1; object-fit: cover; border-radius: var(--radius); border: 1px solid var(--border); box-shadow: 0 8px 28px rgba(0,0,0,.08); }
.dh-quote-author-img--placeholder { display: grid; place-items: center; aspect-ratio: 1 / 1; background: var(--accent-soft); color: var(--accent); font-family: var(--font-heading); font-size: 1.4rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; border: 0; }

/* --- Layout 3: banner (accent background, white text) --- */
.dh-quote--banner .dh-container { padding: 0; }
.dh-quote-banner { position: relative; padding: clamp(48px, 7vw, 96px) clamp(24px, 5vw, 64px); background: var(--accent); color: #fff; border-radius: var(--radius); overflow: hidden; text-align: center; }
.dh-quote-banner .dh-quote-banner-label { display: block; font-size: .8rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: rgba(255,255,255,.85); margin-block-end: 18px; }
.dh-quote-banner .dh-quote-glyph { margin-inline: auto; margin-block-end: 22px; color: #fff; opacity: .75; }
.dh-quote-banner-text { margin: 0 auto; max-width: 880px; font-family: var(--font-heading); font-size: clamp(1.7rem, 3.4vw, 2.8rem); line-height: 1.3; color: #fff; font-weight: 500; }
.dh-quote-banner .dh-quote-attribution { align-items: center; margin-block-start: 28px; }
.dh-quote-banner .dh-quote-author,
.dh-quote-banner .dh-quote-role { color: #fff; }
.dh-quote-banner .dh-quote-role { opacity: .85; }
.dh-quote-banner .dh-permalink--on-accent { position: absolute; inset-block-start: 16px; inset-inline-end: 16px; color: #fff; background: rgba(255,255,255,.12); border-color: rgba(255,255,255,.25); }
.dh-quote-banner .dh-permalink--on-accent:hover { background: rgba(255,255,255,.22); }

/* --- Layout 4: parallax (quote over fixed background image) --- */
.dh-quote-parallax { position: relative; min-height: clamp(360px, 60vh, 540px); display: grid; place-items: center; text-align: center; padding: clamp(48px, 6vw, 96px) clamp(24px, 5vw, 48px); border-radius: var(--radius); overflow: hidden; isolation: isolate; background: var(--bg-card); }
.dh-quote-parallax[data-has-bg="1"]::before { content: ""; position: absolute; inset: 0; background-image: var(--dh-quote-bg, none); background-size: cover; background-position: center; background-attachment: fixed; z-index: -2; }
.dh-quote-parallax[data-has-bg="1"]::after { content: ""; position: absolute; inset: 0; background: linear-gradient(rgba(0,0,0,.55), rgba(0,0,0,.65)); z-index: -1; }
.dh-quote-parallax[data-has-bg="1"] .dh-quote-parallax-label,
.dh-quote-parallax[data-has-bg="1"] .dh-quote-text,
.dh-quote-parallax[data-has-bg="1"] .dh-quote-author,
.dh-quote-parallax[data-has-bg="1"] .dh-quote-role,
.dh-quote-parallax[data-has-bg="1"] .dh-permalink--on-accent { color: #fff; }
.dh-quote-parallax[data-has-bg="1"] .dh-quote-glyph { color: #fff; opacity: .85; }
.dh-quote-parallax[data-has-bg="1"] .dh-quote-role { opacity: .85; }
.dh-quote-parallax-label { display: block; font-size: .8rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--accent); margin-block-end: 18px; }
.dh-quote-parallax .dh-quote-glyph { margin-inline: auto; margin-block-end: 22px; }
.dh-quote-parallax-text { max-width: 880px; margin: 0 auto; font-family: var(--font-heading); font-size: clamp(1.7rem, 3.4vw, 2.8rem); line-height: 1.3; color: var(--text); }
.dh-quote-parallax .dh-quote-attribution { align-items: center; margin-block-start: 28px; }
.dh-quote-parallax .dh-permalink--on-accent { position: absolute; inset-block-start: 16px; inset-inline-end: 16px; color: #fff; background: rgba(255,255,255,.12); border-color: rgba(255,255,255,.25); }
.dh-quote-parallax .dh-permalink--on-accent:hover { background: rgba(255,255,255,.22); }

/* --- Layout 5: multi (rotating carousel) --- */
.dh-quote-carousel { position: relative; max-width: 920px; margin-inline: auto; display: flex; align-items: center; gap: 8px; }
.dh-quote-carousel-viewport { overflow: hidden; flex: 1 1 auto; }
.dh-quote-carousel-track { display: flex; transition: transform .6s var(--ease); }
.dh-quote-carousel-slide { flex: 0 0 100%; text-align: center; padding: 0 8px; }
.dh-quote-carousel-slide .dh-quote-glyph { margin-inline: auto; margin-block-end: 22px; }
.dh-quote-carousel-slide .dh-quote-attribution { align-items: center; }
.dh-quote-arrow { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border); background: var(--bg-card); color: var(--text); font-size: 22px; line-height: 1; cursor: pointer; display: grid; place-items: center; transition: all .2s var(--ease); }
.dh-quote-arrow:hover { background: var(--accent); color: #fff; border-color: var(--accent); }
.dh-quote-carousel-dots { display: flex; align-items: center; justify-content: center; gap: 8px; margin-block-start: 28px; }
.dh-quote-carousel-dot { width: 10px; height: 10px; padding: 0; border-radius: 50%; border: 0; background: var(--border); cursor: pointer; transition: all .2s var(--ease); }
.dh-quote-carousel-dot.is-active { background: var(--accent); transform: scale(1.15); }
.dh-quote-carousel-play { width: 32px; height: 32px; padding: 0; border-radius: 50%; border: 1px solid var(--border); background: var(--bg-card); color: var(--text); cursor: pointer; display: grid; place-items: center; transition: all .2s var(--ease); margin-inline-start: 8px; }
.dh-quote-carousel-play:hover { border-color: var(--accent); color: var(--accent); }
.dh-quote-carousel-play svg { width: 14px; height: 14px; }

/* --- Layout 6: minimal (blockquote with left accent border) --- */
.dh-quote-minimal { margin: 0; max-width: 760px; margin-inline: auto; padding: 8px 0 8px clamp(20px, 4vw, 36px); border-inline-start: 4px solid var(--accent); font-family: var(--font-heading); font-size: clamp(1.3rem, 2.4vw, 1.9rem); line-height: 1.5; color: var(--text); font-style: italic; font-weight: 400; }
.dh-quote-minimal-cite { display: block; margin-block-start: 20px; font-style: normal; font-size: 1rem; }
.dh-quote-minimal-cite .dh-quote-author { display: block; font-weight: 600; color: var(--text); font-style: normal; }
.dh-quote-minimal-cite .dh-quote-role { display: block; color: var(--text-muted); font-style: normal; margin-block-start: 2px; }

/* --- Quote responsive --- */
@media (max-width: 960px) {
    .dh-quote-split { grid-template-columns: 1fr; gap: 32px; }
    .dh-quote-split-author { order: -1; }
    .dh-quote-author-img { max-width: 220px; }
}
@media (max-width: 768px) {
    .dh-quote-glyph { width: 44px; height: 44px; }
    .dh-quote-text { font-size: clamp(1.4rem, 6vw, 2rem); }
    .dh-quote-banner-text,
    .dh-quote-parallax-text { font-size: clamp(1.4rem, 6vw, 2rem); }
    .dh-quote-parallax[data-has-bg="1"]::before { background-attachment: scroll; }
    .dh-quote-carousel { flex-wrap: wrap; }
    .dh-quote-carousel-viewport { order: 1; width: 100%; }
    .dh-quote-arrow { order: 2; }
    .dh-quote-arrow--prev { order: 0; }
}

/* --- Quote reduced motion --- */
@media (prefers-reduced-motion: reduce) {
    .dh-quote-carousel-track { transition: none !important; }
    .dh-quote-parallax[data-has-bg="1"]::before { background-attachment: scroll; }
}

/* --- Quote RTL safety --- */
.dh-rtl .dh-quote-arrow--prev,
.dh-rtl .dh-quote-arrow--next { transform: scaleX(-1); }
.dh-rtl .dh-quote-minimal { border-inline-start: 0; border-inline-end: 4px solid var(--accent); padding-inline-start: 0; padding-inline-end: clamp(20px, 4vw, 36px); }

/* ==========================================================================
   COMPARE / FEATURE TABLE SECTION (v3.9.5 — P2D-SECTIONS)
   Six layouts: table, cards, matrix, minimal, accordion, split.
   ========================================================================== */
.dh-compare--table,
.dh-compare--cards,
.dh-compare--matrix,
.dh-compare--minimal,
.dh-compare--accordion,
.dh-compare--split { padding-block: clamp(64px, 8vw, 120px); }
.dh-compare-empty { color: var(--text-muted); font-style: italic; max-width: 640px; margin-inline: auto; text-align: center; }
.dh-compare-highlight-pill { display: inline-block; padding: 4px 12px; border-radius: 999px; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; background: var(--accent); color: #fff; margin-block-end: 8px; }
.dh-compare-yes { width: 22px; height: 22px; color: var(--accent); display: inline-block; vertical-align: middle; }
.dh-compare-no { width: 22px; height: 22px; color: var(--text-muted); opacity: .5; display: inline-block; vertical-align: middle; }

/* --- Layout 1: table (classic) --- */
.dh-compare-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); }
.dh-compare-table { width: 100%; border-collapse: collapse; min-width: 560px; }
.dh-compare-table th,
.dh-compare-table td { padding: 16px 18px; text-align: center; border-block-end: 1px solid var(--border); border-inline-end: 1px solid var(--border); vertical-align: middle; }
.dh-compare-table tr:last-child th,
.dh-compare-table tr:last-child td { border-block-end: 0; }
.dh-compare-table th:last-child,
.dh-compare-table td:last-child { border-inline-end: 0; }
.dh-compare-table-corner { text-align: inline-start; background: var(--bg); font-family: var(--font-heading); font-weight: 600; color: var(--text); width: 30%; }
.dh-compare-table-opt { vertical-align: bottom; padding-block-start: 28px; font-family: var(--font-heading); font-weight: 600; color: var(--text); }
.dh-compare-table-opt.is-highlighted { background: var(--accent-soft); }
.dh-compare-table-name { display: block; font-size: 1.1rem; }
.dh-compare-table-price { display: block; margin-block-start: 6px; font-size: .9rem; color: var(--text-muted); font-weight: 400; }
.dh-compare-table-row-name { text-align: inline-start; font-weight: 500; color: var(--text); background: var(--bg); }
.dh-compare-table-cell.is-highlighted { background: var(--accent-soft); }
.dh-compare-table-cell .screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* --- Layout 2: cards (side-by-side) --- */
.dh-compare-cards { display: grid; grid-template-columns: repeat(var(--dh-compare-cols, 3), 1fr); gap: 24px; align-items: stretch; }
.dh-compare-card { position: relative; display: flex; flex-direction: column; padding: 32px 28px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); transition: transform .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease); }
.dh-compare-card.is-highlighted { border-color: var(--accent); border-width: 2px; box-shadow: 0 12px 36px rgba(0,0,0,.06); transform: translateY(-4px); }
.dh-compare-card-head { margin-block-end: 20px; padding-block-end: 20px; border-block-end: 1px solid var(--border); }
.dh-compare-card-name { margin: 0; font-family: var(--font-heading); font-size: 1.4rem; font-weight: 600; color: var(--text); }
.dh-compare-card-price { display: block; margin-block-start: 6px; font-size: 1.1rem; color: var(--accent); font-weight: 600; }
.dh-compare-card-features { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.dh-compare-card-feature { display: flex; align-items: flex-start; gap: 10px; }
.dh-compare-card-feature .dh-compare-yes { flex: 0 0 22px; margin-block-start: 2px; }
.dh-compare-card-feature span { color: var(--text); line-height: 1.5; }
.dh-compare-card-feature--empty { color: var(--text-muted); font-style: italic; }

/* --- Layout 3: matrix (interactive toggle switches) --- */
.dh-compare-matrix-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); }
.dh-compare-matrix { width: 100%; border-collapse: collapse; min-width: 560px; }
.dh-compare-matrix th,
.dh-compare-matrix td { padding: 14px 18px; text-align: center; border-block-end: 1px solid var(--border); border-inline-end: 1px solid var(--border); vertical-align: middle; }
.dh-compare-matrix tr:last-child th,
.dh-compare-matrix tr:last-child td { border-block-end: 0; }
.dh-compare-matrix th:last-child,
.dh-compare-matrix td:last-child { border-inline-end: 0; }
.dh-compare-matrix-cell.is-highlighted { background: var(--accent-soft); }
.dh-compare-toggle { display: inline-flex; align-items: center; padding: 0; border: 0; background: transparent; cursor: pointer; }
.dh-compare-toggle-track { position: relative; display: inline-block; width: 44px; height: 24px; border-radius: 12px; background: var(--border); transition: background-color .2s var(--ease); }
.dh-compare-toggle-thumb { position: absolute; inset-block-start: 2px; inset-inline-start: 2px; width: 20px; height: 20px; border-radius: 50%; background: #fff; box-shadow: 0 2px 6px rgba(0,0,0,.18); transition: transform .2s var(--ease); }
.dh-compare-toggle.is-on .dh-compare-toggle-track { background: var(--accent); }
.dh-compare-toggle.is-on .dh-compare-toggle-thumb { transform: translateX(20px); }
.dh-compare-toggle:focus-visible .dh-compare-toggle-track { outline: 2px solid var(--accent); outline-offset: 2px; }
.dh-rtl .dh-compare-toggle.is-on .dh-compare-toggle-thumb { transform: translateX(-20px); }
.dh-compare-matrix-cell .screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* --- Layout 4: minimal (text-only feature lists) --- */
.dh-compare-minimal { display: grid; grid-template-columns: repeat(var(--dh-compare-cols, 3), 1fr); gap: 36px; }
.dh-compare-minimal-item { padding: 0; }
.dh-compare-minimal-item.is-highlighted .dh-compare-minimal-name { color: var(--accent); }
.dh-compare-minimal-head { margin-block-end: 16px; padding-block-end: 12px; border-block-end: 2px solid var(--accent); }
.dh-compare-minimal-name { margin: 0; font-family: var(--font-heading); font-size: 1.4rem; font-weight: 600; color: var(--text); }
.dh-compare-minimal-price { display: block; margin-block-start: 4px; font-size: 1.05rem; color: var(--text-muted); }
.dh-compare-minimal-tag { display: inline-block; margin-block-start: 8px; padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; background: var(--accent); color: #fff; }
.dh-compare-minimal-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.dh-compare-minimal-list-item { position: relative; padding-inline-start: 22px; color: var(--text); line-height: 1.5; }
.dh-compare-minimal-list-item::before { content: ""; position: absolute; inset-inline-start: 0; inset-block-start: 8px; width: 12px; height: 12px; border-radius: 50%; background: var(--accent); opacity: .35; }
.dh-compare-minimal-empty { color: var(--text-muted); font-style: italic; }

/* --- Layout 5: accordion (expandable option rows) --- */
.dh-compare-accordion { list-style: none; margin: 0; padding: 0; max-width: 880px; margin-inline: auto; border-block-start: 1px solid var(--border); }
.dh-compare-acc-item { border-block-end: 1px solid var(--border); }
.dh-compare-acc-item.is-highlighted .dh-compare-acc-q-name::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--accent); margin-inline-end: 10px; vertical-align: middle; }
.dh-compare-acc-q { width: 100%; display: flex; align-items: center; gap: 16px; padding: 20px 4px; background: transparent; border: 0; cursor: pointer; text-align: inline-start; font-family: var(--font-heading); font-size: 1.15rem; font-weight: 600; color: var(--text); transition: color .2s var(--ease); }
.dh-compare-acc-q:hover { color: var(--accent); }
.dh-compare-acc-q-name { flex: 1 1 auto; }
.dh-compare-acc-q-price { font-size: .95rem; color: var(--text-muted); font-weight: 400; }
.dh-compare-acc-q-pill { padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; background: var(--accent); color: #fff; }
.dh-compare-acc-q-arrow { flex: 0 0 auto; width: 26px; height: 26px; display: grid; place-items: center; font-size: 22px; line-height: 1; color: var(--text-muted); transition: transform .3s var(--ease); }
.dh-compare-acc-item.is-open .dh-compare-acc-q-arrow { transform: rotate(45deg); color: var(--accent); }
.dh-compare-acc-panel { max-height: 0; overflow: hidden; transition: max-height .35s var(--ease); }
.dh-compare-acc-item.is-open .dh-compare-acc-panel { max-height: 1200px; }
.dh-compare-acc-features { list-style: none; margin: 0; padding: 8px 0 24px; display: flex; flex-direction: column; gap: 10px; }
.dh-compare-acc-feature { display: flex; align-items: flex-start; gap: 10px; }
.dh-compare-acc-feature .dh-compare-yes { flex: 0 0 22px; margin-block-start: 2px; }
.dh-compare-acc-feature span { color: var(--text); line-height: 1.5; }
.dh-compare-acc-empty { color: var(--text-muted); font-style: italic; padding-block: 4px 24px; }

/* --- Layout 6: split (two options + "vs" divider) --- */
.dh-compare-split { display: grid; grid-template-columns: 1fr auto 1fr; gap: clamp(20px, 3vw, 36px); align-items: stretch; max-width: 1100px; margin-inline: auto; }
.dh-compare-split-col { position: relative; padding: 36px 28px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); display: flex; flex-direction: column; }
.dh-compare-split-col.is-highlighted { border-color: var(--accent); border-width: 2px; box-shadow: 0 12px 36px rgba(0,0,0,.06); }
.dh-compare-split-col--placeholder { background: transparent; border: 1px dashed var(--border); color: var(--text-muted); display: grid; place-items: center; text-align: center; }
.dh-compare-split-placeholder { margin: 0; font-style: italic; color: var(--text-muted); }
.dh-compare-split-head { margin-block-end: 20px; padding-block-end: 20px; border-block-end: 1px solid var(--border); }
.dh-compare-split-name { margin: 0; font-family: var(--font-heading); font-size: 1.6rem; font-weight: 600; color: var(--text); }
.dh-compare-split-price { display: block; margin-block-start: 8px; font-size: 1.15rem; color: var(--accent); font-weight: 600; }
.dh-compare-split-features { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; flex: 1 1 auto; }
.dh-compare-split-feature { display: flex; align-items: flex-start; gap: 10px; }
.dh-compare-split-feature .dh-compare-yes { flex: 0 0 22px; margin-block-start: 2px; }
.dh-compare-split-feature span { color: var(--text); line-height: 1.5; }
.dh-compare-split-empty { color: var(--text-muted); font-style: italic; }
.dh-compare-split-vs { align-self: center; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: var(--accent); color: #fff; font-family: var(--font-heading); font-size: .9rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; box-shadow: 0 6px 18px rgba(0,0,0,.18); }

/* --- Compare responsive --- */
@media (max-width: 960px) {
    .dh-compare-cards { grid-template-columns: repeat(2, 1fr); }
    .dh-compare-minimal { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
    .dh-compare-cards,
    .dh-compare-minimal { grid-template-columns: 1fr; }
    .dh-compare-split { grid-template-columns: 1fr; }
    .dh-compare-split-vs { margin-block: -12px; z-index: 1; }
    .dh-compare-card { padding: 24px 20px; }
    .dh-compare-split-col { padding: 28px 22px; }
    .dh-compare-table th,
    .dh-compare-table td,
    .dh-compare-matrix th,
    .dh-compare-matrix td { padding: 12px 12px; font-size: .9rem; }
    .dh-compare-acc-q { font-size: 1rem; gap: 10px; }
}

/* --- Compare reduced motion --- */
@media (prefers-reduced-motion: reduce) {
    .dh-compare-card,
    .dh-compare-toggle-track,
    .dh-compare-toggle-thumb,
    .dh-compare-acc-q,
    .dh-compare-acc-q-arrow,
    .dh-compare-acc-panel { transition: none !important; }
    .dh-compare-card.is-highlighted { transform: none !important; }
}

/* --- Compare RTL safety --- */
.dh-rtl .dh-compare-toggle.is-on .dh-compare-toggle-thumb { transform: translateX(-20px); }
.dh-rtl .dh-compare-table-corner,
.dh-rtl .dh-compare-table-row-name { text-align: inline-end; }

/* ============================================================
   P4E-NAV item 19 — Mega menu (v3.12.0)
   ----------------------------------------------------------------------------
   Full-width dropdown with a 3-column grid (links / featured post thumbnail
   / CTA button). Loaded globally so the rules are present whenever a `mega`
   location menu is rendered by DH_Mega_Menu_Walker (inc/mega-menu.php).
   Falls back to standard single-column dropdown on mobile (the .dh-mega-
   menu-wrap container is display:none below 768px).
   ============================================================ */
.dh-mega-menu-wrap {
    background: var(--bg);
    border-bottom: 1px solid var(--border);
    position: relative;
    z-index: 99;
}
.dh-mega-menu {
    list-style: none;
    margin: 0 auto;
    padding: 0;
    max-width: var(--maxw, 1180px);
    display: flex;
    justify-content: center;
    gap: 8px;
    flex-wrap: wrap;
}
.dh-mega-menu > li { position: relative; }
.dh-mega-menu > li > a {
    display: block;
    padding: 14px 18px;
    color: var(--text);
    text-decoration: none;
    font-weight: 500;
    border-radius: var(--radius-sm);
    transition: background 150ms;
}
.dh-mega-menu > li > a:hover,
.dh-mega-menu > li:hover > a {
    background: var(--accent-soft);
    color: var(--accent);
}
.dh-mega-panel {
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: 0 18px 40px rgba(0, 0, 0, 0.1);
    min-width: 720px;
    padding: 24px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 200ms, transform 200ms;
    z-index: 100;
}
.dh-mega-menu > li:hover .dh-mega-panel,
.dh-mega-menu > li:focus-within .dh-mega-panel {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(-50%) translateY(0);
}
.dh-mega-panel-grid {
    display: grid;
    grid-template-columns: 1fr 1fr 200px;
    gap: 24px;
}
.dh-mega-col-links ul.sub-menu {
    list-style: none;
    padding: 0;
    margin: 0;
    columns: 2;
    column-gap: 18px;
}
.dh-mega-col-links ul.sub-menu li { break-inside: avoid; }
.dh-mega-col-links ul.sub-menu a {
    display: block;
    padding: 6px 8px;
    color: var(--text-muted);
    text-decoration: none;
    font-size: 0.95em;
    border-radius: var(--radius-sm);
}
.dh-mega-col-links ul.sub-menu a:hover { background: var(--bg-alt); color: var(--accent); }

.dh-mega-col-featured .dh-mega-featured-label {
    display: block;
    font-size: 0.7em;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 8px;
}
.dh-mega-featured-card {
    border-radius: var(--radius-sm);
    overflow: hidden;
    background: var(--bg-alt);
}
.dh-mega-featured-thumb {
    aspect-ratio: 16/10;
    background-size: cover;
    background-position: center;
    background-color: var(--bg-card);
}
.dh-mega-featured-text {
    padding: 10px;
    font-size: 0.9em;
    color: var(--text-muted);
    line-height: 1.4;
}

.dh-mega-col-cta {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    gap: 10px;
}
.dh-mega-cta { text-align: center; }

/* Mobile fallback — the mega menu is hidden on small screens so the
   standard single-column dropdown in the existing mobile nav takes over. */
@media (max-width: 768px) {
    .dh-mega-menu-wrap { display: none; }
}

/* ============================================================
   P4E-NAV item 21 — Reading progress bar per section (v3.12.0)
   ----------------------------------------------------------------------------
   Thin accent-colored bar at the top of each .dh-section that fills based on
   how far the user has scrolled through that section. The bar element itself
   is injected by the initReadingProgress module in assets/js/main.js; this
   CSS only styles it (purely additive — no Theme Options toggle, no theme_mod).
   The .dh-section position:relative rule gives the absolute bar its containing
   block. Width is set inline by JS (0% → 100% based on scroll position).
   ============================================================ */
.dh-section-progress {
    position: absolute;
    top: 0;
    left: 0;
    height: 3px;
    width: 0%;
    background: var(--accent);
    z-index: 5;
    transition: width 60ms linear;
    pointer-events: none;
}
.dh-section { position: relative; }

/* ============================================================
   P4E-NAV item 22 — Back-to-top "Next section" hint (v3.12.0)
   ----------------------------------------------------------------------------
   Enhancement of initScrollEffects: when the user reaches the bottom of a
   section, a "Next section: {name}" hint button appears next to the existing
   .dh-to-top button. Clicking it smooth-scrolls to the next .dh-section.
   The hint element is injected by the initBackToTopNextSection module in
   assets/js/main.js; this CSS only styles it. Position: directly ABOVE the
   .dh-to-top button (which sits at bottom-left in LTR, bottom-right in RTL).
   ============================================================ */
.dh-to-top-hint {
    position: fixed;
    bottom: 80px;
    left: 24px;
    z-index: 997;
    background: var(--bg-card);
    border: 1px solid var(--border);
    color: var(--text);
    padding: 8px 14px;
    border-radius: var(--radius);
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12);
    font-size: 0.85em;
    cursor: pointer;
    opacity: 0;
    pointer-events: none;
    transition: opacity 200ms, transform 200ms;
    transform: translateY(10px);
    max-width: 260px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.dh-to-top-hint.is-visible { opacity: 1; pointer-events: auto; transform: translateY(0); }
.dh-to-top-hint:hover { background: var(--accent); color: var(--bg); border-color: var(--accent); }
.dh-to-top-hint .dh-to-top-hint-arrow {
    display: inline-block;
    margin-left: 6px;
    font-size: 0.9em;
    transform: rotate(-45deg);
}
/* In RTL, mirror to the right side (matching .dh-to-top's RTL override). */
.dh-rtl .dh-to-top-hint { left: auto; right: 24px; }
.dh-rtl .dh-to-top-hint .dh-to-top-hint-arrow { margin-left: 0; margin-right: 6px; }

/* ==========================================================================
   v3.12.0 — P4G-DESIGN item 34: Scroll-driven animations
   ----------------------------------------------------------------------------
   All styles gated on `body.dh-scroll-anim` so they have ZERO effect when
   the toggle is off. The three JS modules in main.js (initScrollProgressFill,
   initParallax, initSectionTransitions) self-gate on the same class.
   ========================================================================== */

/* ---- 1. Scroll progress bar ----
   Any element with `[data-dh-scroll-progress]` becomes a horizontal progress
   bar that fills based on scroll position. The element is the track; an inner
   fill `<span>` (added by CSS via ::-webkit-progress-bar fallback OR by
   setting `width` on the element itself) shows progress.

   Convention: the element starts at width: 0 (or 100% for the track style)
   and the JS sets width on the element. For the "track" style, the element
   IS the fill — wrap it in a fixed-width track container. */
body.dh-scroll-anim [data-dh-scroll-progress] {
    position: fixed;
    top: 0;
    left: 0;
    height: 3px;
    width: 0%;
    background: var(--accent, #d8402a);
    z-index: 9998;
    transition: width 80ms linear;
    pointer-events: none;
    /* The JS sets .dh-scroll-progress--native when animation-timeline is
       supported; in that case we drop the JS-set width + let the CSS
       animation drive it (the @supports block below). */
}
body.dh-scroll-anim [data-dh-scroll-progress].dh-scroll-progress--native {
    transition: none;
}

/* Native scroll-driven animation (Chrome/Edge 115+). The element animates
   from 0% to 100% width as the user scrolls through the document — no JS
   scroll handler needed. Falls back to the JS listener in main.js for
   browsers without support. */
@supports (animation-timeline: scroll()) {
    body.dh-scroll-anim [data-dh-scroll-progress].dh-scroll-progress--native {
        width: auto;
        animation: dh-scroll-progress-anim linear forwards;
        animation-timeline: scroll(root block);
        animation-range: 0 100%;
    }
    @keyframes dh-scroll-progress-anim {
        from { width: 0%; }
        to   { width: 100%; }
    }
}

/* ---- 2. Parallax base ----
   Elements with `data-parallax-speed` get translate3d applied by JS. The
   base CSS just promotes them to their own GPU layer so the transform is
   cheap, and prevents horizontal overflow if the parallax offset pushes
   the element slightly out of its container. */
body.dh-scroll-anim [data-parallax-speed] {
    will-change: transform;
    transform: translate3d(0, 0, 0);
    /* `backface-visibility: hidden` is a hint to the compositor to keep the
       element on its own layer, eliminating repaint of underlying content
       on every transform change. */
    backface-visibility: hidden;
}
/* On touch devices, parallax can cause scroll jank + the effect is invisible
   anyway (no hover-able precision pointing). Disable the will-change so the
   compositor doesn't waste memory on layers that won't animate. */
@media (pointer: coarse) {
    body.dh-scroll-anim [data-parallax-speed] {
        will-change: auto;
        transform: none !important;
    }
}
/* Respect prefers-reduced-motion: JS already bails, but if the inline style
   was somehow set, this reset overrides it. */
@media (prefers-reduced-motion: reduce) {
    body.dh-scroll-anim [data-parallax-speed] {
        transform: none !important;
    }
}

/* ---- 3. Section transitions (fade + slide-in) ----
   Each `.dh-section` (and any `[data-dh-transition]`) starts at opacity:0
   + translateY(20px), then transitions to opacity:1 + translateY(0) when
   the JS adds `.is-inview`. The transition is gated on body.dh-scroll-anim
   so without the toggle, sections are immediately visible (no fade). */
body.dh-scroll-anim .dh-section,
body.dh-scroll-anim [data-dh-transition] {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 600ms var(--ease, cubic-bezier(0.22, 0.61, 0.36, 1)),
                transform 600ms var(--ease, cubic-bezier(0.22, 0.61, 0.36, 1));
}
body.dh-scroll-anim .dh-section.is-inview,
body.dh-scroll-anim [data-dh-transition].is-inview {
    opacity: 1;
    transform: translateY(0);
}
/* Stagger children of [data-dh-transition-stagger] for a cascading reveal.
   Each direct child gets an incrementally longer delay (up to 6 children —
   further children use the same delay as the 6th). */
body.dh-scroll-anim [data-dh-transition-stagger] > *:nth-child(1) { transition-delay: 0ms; }
body.dh-scroll-anim [data-dh-transition-stagger] > *:nth-child(2) { transition-delay: 80ms; }
body.dh-scroll-anim [data-dh-transition-stagger] > *:nth-child(3) { transition-delay: 160ms; }
body.dh-scroll-anim [data-dh-transition-stagger] > *:nth-child(4) { transition-delay: 240ms; }
body.dh-scroll-anim [data-dh-transition-stagger] > *:nth-child(5) { transition-delay: 320ms; }
body.dh-scroll-anim [data-dh-transition-stagger] > *:nth-child(6) { transition-delay: 400ms; }
body.dh-scroll-anim [data-dh-transition-stagger] > *:nth-child(n+7) { transition-delay: 480ms; }

/* Respect prefers-reduced-motion: JS already adds .is-inview immediately,
   but if any element somehow still has its initial state, this overrides
   to ensure no fade. */
@media (prefers-reduced-motion: reduce) {
    body.dh-scroll-anim .dh-section,
    body.dh-scroll-anim [data-dh-transition] {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
}

/* ==========================================================================
   v3.12.0 — P4G-DESIGN item 35: Glassmorphism toggle
   ----------------------------------------------------------------------------
   When body.dh-glass is present (added by dh_glassmorphism_body_class when
   the toggle is on), cards / header / footer get backdrop-filter: blur() +
   semi-transparent backgrounds. When the class is absent, the existing solid
   backgrounds win (no change to current behavior).

   The rgba() values are derived from the theme's --bg / --bg-card CSS vars
   using the `color-mix()` function where supported — so the glass tint
   follows the user's chosen accent palette. Where color-mix isn't supported
   (older browsers), a sensible alpha-fallback is used.
   ========================================================================== */

@supports (backdrop-filter: blur(8px)) or (-webkit-backdrop-filter: blur(8px)) {
    /* Cards: every element using --bg-card gets a translucent version. */
    body.dh-glass .dh-card,
    body.dh-glass .dh-service-card,
    body.dh-glass .dh-testi-card,
    body.dh-glass .dh-pricing-card,
    body.dh-glass .dh-team-card,
    body.dh-glass .dh-faq-item,
    body.dh-glass .dh-stat {
        background: color-mix(in srgb, var(--bg-card, #fbfaf6) 70%, transparent) !important;
        -webkit-backdrop-filter: blur(12px) saturate(140%);
        backdrop-filter: blur(12px) saturate(140%);
        border-color: color-mix(in srgb, var(--border, #e6e3da) 60%, transparent) !important;
    }
    /* Fallback for browsers that support backdrop-filter but not color-mix
       (older Safari) — use rgba with the default paper tint. */
    @supports not (color: color-mix(in srgb, white, black)) {
        body.dh-glass .dh-card,
        body.dh-glass .dh-service-card,
        body.dh-glass .dh-testi-card,
        body.dh-glass .dh-pricing-card,
        body.dh-glass .dh-team-card,
        body.dh-glass .dh-faq-item,
        body.dh-glass .dh-stat {
            background: rgba(251, 250, 246, 0.7) !important;
        }
        body.dh-mode-dark.dh-glass .dh-card,
        body.dh-mode-dark.dh-glass .dh-service-card,
        body.dh-mode-dark.dh-glass .dh-testi-card,
        body.dh-mode-dark.dh-glass .dh-pricing-card,
        body.dh-mode-dark.dh-glass .dh-team-card,
        body.dh-mode-dark.dh-glass .dh-faq-item,
        body.dh-mode-dark.dh-glass .dh-stat {
            background: rgba(35, 32, 41, 0.7) !important;
        }
    }

    /* Header: when the user picked header style 'glassy' (the default),
       glassmorphism strengthens the blur + adds saturation. When the user
       picked 'solid' or 'transparent', the existing rules in main.css still
       win (the !important on backdrop-filter:none there overrides this). */
    body.dh-glass.dh-header-glassy .dh-header {
        background: color-mix(in srgb, var(--bg, #ffffff) 75%, transparent) !important;
        -webkit-backdrop-filter: blur(16px) saturate(160%);
        backdrop-filter: blur(16px) saturate(160%);
    }
    @supports not (color: color-mix(in srgb, white, black)) {
        body.dh-glass.dh-header-glassy .dh-header {
            background: rgba(255, 255, 255, 0.75) !important;
        }
        body.dh-mode-dark.dh-glass.dh-header-glassy .dh-header {
            background: rgba(21, 20, 26, 0.75) !important;
        }
    }

    /* Footer: same treatment. */
    body.dh-glass .dh-footer {
        background: color-mix(in srgb, var(--bg-alt, #f7f5f0) 75%, transparent) !important;
        -webkit-backdrop-filter: blur(14px) saturate(140%);
        backdrop-filter: blur(14px) saturate(140%);
    }
    @supports not (color: color-mix(in srgb, white, black)) {
        body.dh-glass .dh-footer {
            background: rgba(247, 245, 240, 0.75) !important;
        }
        body.dh-mode-dark.dh-glass .dh-footer {
            background: rgba(31, 29, 37, 0.75) !important;
        }
    }
}

/* Browsers without backdrop-filter support: glassmorphism is silently a
   no-op. The existing solid background colors remain. No fallback needed. */


/* ==========================================================================
   V13-MODERN-A11Y — Modern Web Platform APIs + WCAG 2.2 hardening pass
   ----------------------------------------------------------------------------
   This single end-of-file block bundles every CSS-only feature from the
   V13-MODERN-A11Y task batch. Each subsection is independently gated so it
   can be toggled OFF without affecting the others. The PHP-side toggles
   live in:
     - inc/container-queries.php     → body.dh-cq-ready
     - inc/speculation-rules.php     → no CSS (head <script> only)
     - inc/view-transitions.php      → assets/css/view-transitions.css

   The block covers:
     item 7  — Container queries (@container, gated on body.dh-cq-ready)
     item 8  — CSS :has() selector (progressive enhancement)
     item 9  — CSS native nesting (gated on @supports selector(&))
     item 10 — :focus-visible everywhere (WCAG 2.4.7 + 2.4.11)
     item 11 — prefers-reduced-motion (WCAG 2.3.3)
     item 14 — prefers-contrast: more (WCAG 1.4.6 / 1.4.11)
     item 15 — text-resize at 200% zoom (WCAG 1.4.4 + 1.4.10)
   ========================================================================== */


/* ==========================================================================
   V13 item 7 — Container Queries  (gated on body.dh-cq-ready)
   ----------------------------------------------------------------------------
   When the user enables Theme Options → Advanced → Performance → Container
   Queries, the body.dh-cq-ready class is added (inc/container-queries.php).
   These @container rules then turn on responsive layouts driven by the
   CONTAINER width, not the viewport. Browsers without @container support
   (Firefox <110, Safari <16) ignore the rules entirely — they fall back
   to the existing media queries above.

   The .dh-container-query wrapper (added via dh_container_query_open() in
   the PHP module) establishes the containment context via
   `container-type: inline-size;`. The @container rules below then key off
   that context.
   ========================================================================== */

/* Establish containment context on any wrapper that opts in via the
   .dh-container-query class. `container-type: inline-size` is the safest
   mode — it sizes the container by its inline axis only (horizontal in
   LTR/RTL), which is what we want for card-width responsiveness. */
body.dh-cq-ready .dh-container-query {
    container-type: inline-size;
    /* Give the container a friendly name so child @container rules can
       target it explicitly: `@container dh-card-host (min-width: 480px)`. */
    container-name: dh-card-host;
}

/* Service cards: at container width ≥ 520px, show the "wide" two-column
   layout (image left, content right). Below that, stack vertically. The
   existing media query on viewport width is preserved (above); these
   @container rules ADD an extra dimension of responsiveness so a card
   in a narrow sidebar still stacks even on a wide desktop. */
@container dh-card-host (min-width: 520px) {
    body.dh-cq-ready .dh-container-query .dh-service-row {
        display: flex;
        flex-direction: row;
        align-items: flex-start;
        gap: 32px;
    }
    body.dh-cq-ready .dh-container-query .dh-service-meta {
        flex: 0 0 38%;
    }
}

/* Testimonial cards: at container width ≥ 640px, show 3-up grid. At
   420-640px, 2-up. Below 420px, single column. Again, this is on top
   of the existing viewport media query — both apply. */
@container dh-card-host (max-width: 419px) {
    body.dh-cq-ready .dh-container-query .dh-testi-grid,
    body.dh-cq-ready .dh-container-query .dh-carousel-track {
        grid-template-columns: 1fr;
    }
}
@container dh-card-host (min-width: 420px) and (max-width: 639px) {
    body.dh-cq-ready .dh-container-query .dh-testi-grid {
        grid-template-columns: 1fr 1fr;
    }
}
@container dh-card-host (min-width: 640px) {
    body.dh-cq-ready .dh-container-query .dh-testi-grid {
        grid-template-columns: 1fr 1fr 1fr;
    }
}

/* Gallery items: at container width < 320px, force single column even if
   the existing media query would have left it 2-up. This catches the case
   where a gallery is dropped into a narrow column widget. */
@container dh-card-host (max-width: 319px) {
    body.dh-cq-ready .dh-container-query .dh-gallery-grid {
        grid-template-columns: 1fr;
    }
}


/* ==========================================================================
   V13 item 8 — CSS :has() selector  (progressive enhancement)
   ----------------------------------------------------------------------------
   The :has() selector is a parent-selector — it lets a rule match an
   element based on its descendants. Supported in all modern browsers
   since Dec 2023 (Chrome 105+, Firefox 121+, Safari 15.4+). Unsupported
   browsers IGNORE the entire rule (so a `:has()` rule that fails is
   equivalent to that rule not existing — no breakage, just no effect).

   Each rule below is wrapped in @supports (selector(:has(*))) as a
   defense-in-depth: even if a browser parses the file but doesn't
   actually implement :has() correctly (older Safari versions had a
   partial impl), the @supports gate is a hard requirement.
   ========================================================================== */

@supports (selector(:has(*))) {

    /* 8a. "Card has image → add padding" — service cards / generic cards
            that contain a leading image get extra top padding so the
            image isn't glued to the card border. */
    body .dh-card:has(> img),
    body .dh-card:has(> .dh-card-thumb),
    body .dh-service-row:has(> .dh-service-thumb) {
        padding-top: 0;
    }
    body .dh-card:has(> img) > img,
    body .dh-card:has(> .dh-card-thumb) > .dh-card-thumb,
    body .dh-service-row:has(> .dh-service-thumb) > .dh-service-thumb {
        margin: -1px -1px 24px;
        border-radius: var(--radius) var(--radius) 0 0;
        overflow: hidden;
    }

    /* 8b. "Section has dark background → invert text" — any .dh-section
            that carries a dark-background modifier should swap text colors
            automatically, even if a child element forgot the class. The
            .dh-stats--bg-dark class is the existing dark-bg modifier
            (see line ~1700); this rule extends the same treatment to any
            section that has [data-dh-bg="dark"] or that wraps a child with
            the .dh-bg-dark utility class. */
    body .dh-section:has(.dh-bg-dark),
    body .dh-section[data-dh-bg="dark"] {
        background: #0c0b10;
        color: #f2efe7;
    }
    body .dh-section:has(.dh-bg-dark) .dh-label,
    body .dh-section[data-dh-bg="dark"] .dh-label {
        color: var(--amber);
    }
    body .dh-section:has(.dh-bg-dark) .dh-lead,
    body .dh-section[data-dh-bg="dark"] .dh-lead {
        color: rgba(242, 239, 231, 0.7);
    }
    /* In dark-mode, the dark-bg section becomes near-black. */
    body.dh-mode-dark .dh-section:has(.dh-bg-dark),
    body.dh-mode-dark .dh-section[data-dh-bg="dark"] {
        background: #000;
    }

    /* 8c. "Form row has error → add red border" — the .dh-form-row.has-error
            class is already added by main.js after a failed validation
            (line ~384 of this file styles it). This :has() rule ADDS the
            same treatment for rows whose <input> carries aria-invalid="true"
            (the ARIA attribute the validator sets even when the JS visual
            class hasn't been added yet — defense-in-depth). */
    body .dh-form-row:has(input[aria-invalid="true"]),
    body .dh-form-row:has(textarea[aria-invalid="true"]),
    body .dh-form-row:has(select[aria-invalid="true"]) {
        position: relative;
    }
    body .dh-form-row:has(input[aria-invalid="true"]) input,
    body .dh-form-row:has(textarea[aria-invalid="true"]) textarea,
    body .dh-form-row:has(select[aria-invalid="true"]) select {
        border-color: #e5484d;
        box-shadow: 0 0 0 3px color-mix(in srgb, #e5484d 18%, transparent);
    }
    /* And show the error-message child if present (aria-live region). */
    body .dh-form-row:has(input[aria-invalid="true"]) .dh-form-error,
    body .dh-form-row:has(textarea[aria-invalid="true"]) .dh-form-error {
        display: block;
    }

    /* 8d. "Nav has open submenu → add hover affordance" — when a top-level
            nav <li> has a visible submenu, show a small chevron indicator.
            Uses :has() to detect the submenu presence so we don't need to
            add a marker class in PHP. */
    body .dh-nav li:has(> ul) > a::after {
        content: "▾";
        display: inline-block;
        margin-left: 4px;
        font-size: 0.75em;
        opacity: 0.7;
    }

    /* 8e. "Accordion item is open → its siblings get a slight dim" — when
            one .dh-faq-item.is-open is present, the others in the same
            list get a subtle opacity reduction to draw focus. */
    body .dh-faq-list:has(.dh-faq-item.is-open) .dh-faq-item:not(.is-open) {
        opacity: 0.75;
    }
}


/* ==========================================================================
   V13 item 9 — CSS native nesting  (gated on @supports selector(&))
   ----------------------------------------------------------------------------
   The native CSS nesting syntax lets us scope child rules under a parent
   selector without repeating the parent. Supported in all modern browsers
   since 2023 (Chrome 112+, Firefox 117+, Safari 16.5+). Unsupported
   browsers IGNORE the entire block (because the outer @supports guard
   fails) — no fallback needed, no duplication needed.

   The block below demonstrates the pattern on a few representative
   component groups (utility classes, hero, footer-bottom). It does NOT
   replace the flat selectors above; it only ADDS enhancements on top.
   ========================================================================== */

@supports (selector(&)) {

    /* 9a. Utility kit nesting — the .dh-card and friends use native nesting
            for their :hover, :focus-visible, and child element rules so the
            relationship is visible at a glance. */
    body .dh-card {
        & > img,
        & > .dh-card-thumb {
            margin: -1px -1px 24px;
            border-radius: var(--radius) var(--radius) 0 0;
            overflow: hidden;
        }
        &:hover {
            transform: translateY(-4px);
            border-color: var(--accent);
            box-shadow: 0 20px 48px -24px color-mix(in srgb, var(--accent) 35%, transparent);
        }
        &:focus-visible {
            outline: 2px solid var(--accent);
            outline-offset: 2px;
        }
        & .dh-card-title {
            font-family: var(--font-heading);
            font-size: 1.25rem;
            line-height: 1.25;
            margin: 0 0 10px;
        }
    }

    /* 9b. Hero — nest the inner copy / actions / card under .dh-hero so
            the cascade is explicit. */
    body .dh-hero {
        & .dh-hero-inner {
            display: flex;
            gap: 56px;
            align-items: center;
            justify-content: space-between;
        }
        & .dh-hero-copy { max-width: 560px; }
        & .dh-hero-actions {
            display: flex;
            gap: 14px;
            margin-top: 28px;
            flex-wrap: wrap;
        }
        & .dh-hero-card {
            background: var(--bg-card);
            border: 1px solid var(--border);
            border-radius: var(--radius);
            padding: 28px;
            box-shadow: 0 24px 56px -28px rgba(0,0,0,.18);
        }
    }

    /* 9c. Footer-bottom — nest the copyright + social under .dh-footer-bottom. */
    body .dh-footer-bottom {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 16px;
        padding-top: 28px;
        border-top: 1px solid var(--border);
        & .dh-footer-copy { font-size: 13px; color: var(--text-muted); }
        & .dh-footer-social { display: flex; gap: 10px; }
        & .dh-footer-social a {
            width: 36px;
            height: 36px;
            display: grid;
            place-items: center;
            border: 1px solid var(--border);
            border-radius: 50%;
            &:hover {
                background: var(--accent);
                color: #fff;
                border-color: var(--accent);
            }
        }
    }
}


/* ==========================================================================
   V13 item 10 — :focus-visible everywhere  (WCAG 2.4.7 + 2.4.11)
   ----------------------------------------------------------------------------
   :focus-visible matches only when the browser's heuristics decide the
   user needs a visible focus indicator (typically: keyboard navigation,
   NOT mouse click). This is the modern best-practice replacement for the
   legacy :focus rule that flashes a ring on every mouse click too.

   Existing :focus rules in this file (lines ~382, ~804, ~985, ~1190, ~1212)
   set `outline: none` on form inputs to replace the ring with a box-shadow
   "glow" — those are intentional and stay. This block adds a global
   :focus-visible baseline that catches any interactive element the
   existing rules don't explicitly handle.
   ========================================================================== */

/* 10a. Global baseline: any element that supports keyboard focus gets a
        visible outline. The outline uses the theme's accent color so it
        matches the brand. `outline-offset: 2px` puts a 2px gap between
        the element and the ring so the ring is visible over any
        background (image-heavy cards, dark sections, etc.). */
:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
    /* Avoid a hard rectangle on rounded buttons — the outline follows
       the element's border-radius. */
    border-radius: inherit;
}

/* 10b. Interactive elements that have a strong fill (the dark-mode toggle,
        the mobile-menu toggle, the WhatsApp CTA pill) should use a higher-
        contrast outline color so the ring doesn't blend into the button's
        own background. */
.dh-icon-btn:focus-visible,
.dh-menu-toggle:focus-visible,
.dh-to-top:focus-visible,
.dh-carousel-arrow:focus-visible,
.dh-faq-search-input:focus-visible,
.dh-lang-switcher-toggle:focus-visible {
    outline: 3px solid var(--accent);
    outline-offset: 2px;
}

/* 10c. Buttons that fill with accent color on hover need an offset ring
        that contrasts against accent. Use white outline (works on dark
        accent backgrounds). */
.dh-btn-primary:focus-visible,
.dh-btn-accent:focus-visible,
.dh-cta-pill:focus-visible {
    outline: 3px solid #fff;
    outline-offset: 2px;
    box-shadow: 0 0 0 5px var(--accent);
}

/* 10d. Skip-link gets a thicker outline so it's unmistakable when tabbed
        into focus (it slides into view from off-screen). */
.skip-link.screen-reader-text:focus-visible {
    outline: 3px solid #fff;
    outline-offset: -3px;
}

/* 10e. Card / list item with role=link or role=button gets a ring so the
        keyboard user can see which card is "current". */
.dh-testi:focus-visible,
.dh-service-row:focus-visible,
.dh-gallery-item:focus-visible,
.dh-faq-q:focus-visible,
.dh-pricing-card:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 4px;
}

/* 10f. Never let a stray outline:none on a focused element make it
        invisible to keyboard users. If the user agent styles say "no
        outline", our :focus-visible rule wins. */
:focus:not(:focus-visible) { outline: none; }


/* ==========================================================================
   V13 item 11 — prefers-reduced-motion  (WCAG 2.3.3 Animation from Interactions)
   ----------------------------------------------------------------------------
   The existing block at line 573 already does this for the global *.
   This block STRENGTHENS it to:
     - also kill scroll-behavior: smooth (the existing rule does this)
     - also kill parallax transforms (set by JS modules in main.js)
     - also reduce the marquee animation
     - also disable the view-transitions at-rule (handled in
       view-transitions.css — that file's reduced-motion block runs
       independently of this one)

   The existing block uses .001ms; the user-spec for this task asks for
   0.01ms. They're functionally equivalent (both ~0); we use 0.01ms here
   per the spec. We DO NOT remove the existing block — it still applies
   on top of this one for older motion the new rules miss.
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
    /* Kill all animations + transitions globally. The existing rule at
       line 573 already does this — we restate it at the end of the file
       so it wins the cascade over any rule added between (defensive). */
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }

    /* Parallax: the JS in main.js (initParallax) checks the media query
       and skips entirely when reduced-motion is on. This rule is the
       CSS-side belt-and-suspenders: even if JS doesn't run (or runs
       after the user has already scrolled), this strips the transform
       the parallax module set on the element. */
    [data-parallax-speed] {
        transform: none !important;
    }

    /* Marquee: kill the keyframe animation entirely. */
    .dh-marquee-track {
        animation: none !important;
        transform: none !important;
    }

    /* Counter animations: the JS counter module (initCounters) checks
       the media query and just sets the final value. Belt-and-suspenders
       for any CSS that animates the number's transform. */
    .dh-stat-num,
    .dh-counter {
        transition: none !important;
    }

    /* Reveal-on-scroll: the JS module (initRevealOnScroll / initSection-
       Transitions) checks the media query and adds .is-inview immediately.
       This rule ensures any element still holding its initial transform
       is forced visible. */
    .dh-reveal,
    .dh-section:not(.is-inview),
    [data-dh-transition]:not(.is-inview) {
        opacity: 1 !important;
        transform: none !important;
    }

    /* Hover lifts: the .dh-card:hover translateY(-4px) etc. are motion.
       Disable them so a hover doesn't cause any movement. */
    .dh-card:hover,
    .dh-hover-lift:hover,
    .dh-testi:hover,
    .dh-service-row:hover {
        transform: none !important;
    }
}


/* ==========================================================================
   V13 item 14 — High contrast mode  (prefers-contrast: more)
   ----------------------------------------------------------------------------
   The `prefers-contrast: more` media query matches when the user has
   enabled a high-contrast mode at the OS level (Windows High Contrast
   Mode, macOS "Increase contrast", Chrome's forced-colors mode). When
   matched, we boost borders, force pure black-on-white text (no muted
   colors), and thicken focus rings.

   Test: DevTools → Rendering → Emulate CSS prefers-contrast: more.
   ========================================================================== */

@media (prefers-contrast: more) {

    /* 14a. Pure black text on white background — strip the muted colors. */
    body.dh-theme,
    body.dh-theme .dh-lead,
    body.dh-theme .dh-text-muted,
    body.dh-theme .dh-post-excerpt,
    body.dh-theme .dh-footer-copy,
    body.dh-theme .dh-topbar-item,
    body.dh-theme .dh-topbar-text {
        color: #000 !important;
        background: #fff !important;
    }
    /* Dark-mode users in high-contrast: invert to white-on-black. */
    body.dh-mode-dark.dh-theme,
    body.dh-mode-dark.dh-theme .dh-lead,
    body.dh-mode-dark.dh-theme .dh-text-muted {
        color: #fff !important;
        background: #000 !important;
    }

    /* 14b. Stronger borders — 2px solid on every card / section / form
            field so the layout structure is unmistakable. */
    .dh-card,
    .dh-service-row,
    .dh-testi,
    .dh-pricing-card,
    .dh-team-card,
    .dh-faq-item,
    .dh-post,
    .dh-gallery-item {
        border: 2px solid #000 !important;
        background: #fff !important;
    }
    body.dh-mode-dark .dh-card,
    body.dh-mode-dark .dh-service-row,
    body.dh-mode-dark .dh-testi,
    body.dh-mode-dark .dh-pricing-card,
    body.dh-mode-dark .dh-faq-item {
        border-color: #fff !important;
        background: #000 !important;
    }

    /* 14c. Form fields — thicker border, pure-black caret. */
    .dh-form-row input,
    .dh-form-row select,
    .dh-form-row textarea,
    .dh-faq-search-input,
    .dh-newsletter-form input {
        border: 2px solid #000 !important;
        background: #fff !important;
        color: #000 !important;
        caret-color: #000 !important;
    }
    body.dh-mode-dark .dh-form-row input,
    body.dh-mode-dark .dh-form-row select,
    body.dh-mode-dark .dh-form-row textarea {
        border-color: #fff !important;
        background: #000 !important;
        color: #fff !important;
        caret-color: #fff !important;
    }

    /* 14d. Section dividers — make them visible. */
    .dh-section { border-bottom: 2px solid #000 !important; }
    body.dh-mode-dark .dh-section { border-bottom-color: #fff !important; }

    /* 14e. Thicker focus rings — 3px solid accent + 4px offset for clear
            visibility against the stronger borders. */
    :focus-visible {
        outline: 3px solid var(--accent) !important;
        outline-offset: 4px !important;
    }
    .dh-btn-primary:focus-visible,
    .dh-cta-pill:focus-visible {
        outline: 4px solid #fff !important;
        outline-offset: 3px !important;
        box-shadow: 0 0 0 6px var(--accent) !important;
    }

    /* 14f. Links — underline always, so they're distinguishable from
            body text without relying on color. */
    a:not(.dh-btn):not(.dh-icon-btn):not(.dh-logo):not(.dh-menu-toggle):not(.dh-lang-btn) {
        text-decoration: underline !important;
        text-underline-offset: 3px;
    }

    /* 14g. Skip-link: solid yellow background + black text for max contrast. */
    .skip-link.screen-reader-text:focus {
        background: #ffd400 !important;
        color: #000 !important;
        border: 2px solid #000;
    }
}


/* ==========================================================================
   V13 item 15 — Text resize support  (WCAG 1.4.4 Resize Text + 1.4.10 Reflow)
   ----------------------------------------------------------------------------
   Audit of fixed font sizes in this file: most already use rem / clamp() /
   em (the body font-size is 17px which is the root, so 1rem = 17px). The
   remaining px sizes are mostly tiny utility labels (12-14px) where the
   px is intentional (they should NOT scale with root font-size). The
   audit below CONVERTS the few px sizes that would break at 200% zoom
   and adds overflow / wrap guards so layout doesn't explode when the
   user bumps text size.

   At 200% zoom, the browser scales the root font-size (16px → 32px), so:
     - 1rem becomes 32px (was 16px)
     - 1.25rem becomes 40px (was 20px)
     - 14px stays 14px (fixed — does NOT scale)
   The rules below ensure layout uses rem/em for the parts that should
   scale, and adds flex-wrap / minmax / overflow guards so wrapping
   doesn't break the layout.
   ========================================================================== */

/* 15a. Heading sizes — convert the .dh-h2 / .dh-h3 / .dh-label from
        "looks fine at 100%" to "stays proportional at 200%". clamp()
        already handles the dynamic range; we just nudge the lower bound
        up so headings grow visibly when zoomed. */
.dh-h2 { font-size: clamp(1.875rem, 4.4vw, 3.375rem); }
.dh-h3 { font-size: clamp(1.5rem, 3.2vw, 2.25rem); }
.dh-label { font-size: 0.8125rem; }   /* was 13px — now 13/16 rem */
.dh-lead { font-size: 1.1875rem; }    /* was 19px — now 19/16 rem */
.dh-section { padding: 6.25rem 0; }   /* was 100px — now 100/16 rem */
.dh-section-tight { padding: 4.5rem 0; } /* was 72px — now 72/16 rem */

/* 15b. Hero copy + actions wrap at large text sizes. */
.dh-hero-inner {
    flex-wrap: wrap;            /* stack on narrow viewport AND on big-text */
    gap: clamp(20px, 4vw, 56px);
}
.dh-hero-actions {
    flex-wrap: wrap;
    gap: 14px;
}

/* 15c. Buttons: use rem for padding so they grow with text size, and wrap
        their labels when the label is long. */
.dh-btn {
    padding: var(--dh-btn-py) var(--dh-btn-px);
    font-size: var(--dh-btn-fs);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    flex-wrap: wrap;
    white-space: normal;        /* allow label wrap at 200% zoom */
    text-align: center;
}

/* 15d. Header actions — wrap on overflow. The header has a fixed-height
        design at 100% zoom, but at 200% zoom the icons + buttons would
        overflow. Allow them to wrap to a second row when needed. */
.dh-header-inner {
    flex-wrap: wrap;
    gap: 8px 14px;
    min-height: var(--header-h);
}
.dh-actions { flex-wrap: wrap; gap: 6px; }

/* 15e. Footer: convert padding to rem + allow wrapping. */
.dh-footer-bottom { flex-wrap: wrap; }
.dh-footer-cols { gap: clamp(20px, 4vw, 40px); }

/* 15f. Forms: input font inherits the body font-size (already rem-scaled
        via the body selector). Label font-size was 13px (px); convert to
        rem so it scales with the user's root font-size setting. */
.dh-form-row label { font-size: 0.8125rem; }
.dh-form-row input,
.dh-form-row select,
.dh-form-row textarea {
    font-size: 1rem;     /* match body — stays readable at 200% zoom */
    padding: 0.75rem 0.875rem;
    line-height: 1.5;
}

/* 15g. Grids: ensure they use minmax() so columns don't shrink below the
        readable width of their content. The existing rules use
        grid-template-columns: repeat(3, 1fr) which would shrink each column
        to as small as needed — at 200% zoom, that breaks. We replace with
        minmax(min-content, 1fr) so each column is at least as wide as its
        longest unbreakable word. */
.dh-about-grid,
.dh-contact-grid,
.dh-faq-grid,
.dh-testi-grid,
.dh-work-grid,
.dh-stats-grid,
.dh-process-grid,
.dh-footer-cols,
.dh-posts-grid {
    grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
    gap: clamp(20px, 3vw, 36px);
}

/* 15h. Flex rows that contain text should wrap so text doesn't overflow. */
.dh-topbar-inner,
.dh-fixbar,
.dh-download-bar,
.dh-mobile-controls,
.dh-case-metrics {
    flex-wrap: wrap;
}

/* 15i. Tables — allow horizontal scroll if the content is wider than the
        viewport at 200% zoom. (No tables in the front-page, but the
        Elementor / WooCommerce templates may render some.) */
.dh-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
table.dh-table { width: 100%; }

/* 15j. Code blocks / pre — allow horizontal scroll so long lines don't
        push the layout wide. */
pre.dh-pre,
.dh-pre {
    overflow-x: auto;
    white-space: pre;
    max-width: 100%;
}

/* 15k. Audit fix: any element with a fixed max-width that's in px should
        convert to rem so it scales. The .dh-narrow utility at line 1594
        uses 760px; convert to rem. */
.dh-narrow { max-width: 47.5rem; }    /* 760/16 = 47.5 */

/* 15l. The hero image gets a min-height in px on mobile (line ~550). At
        200% zoom, that fixed height clips the now-larger text. Convert to
        min-height: auto so the hero grows with its content. */
@media (max-width: 960px) {
    .dh-hero { min-height: auto; padding: calc(var(--header-h) + 2.5rem) 0 4rem; }
}

/* 15m. Content max-width — .dh-container at line 87 uses var(--maxw) which
        is 1180px. At 200% zoom, that 1180px becomes effectively 590px of
        "design space" which is fine. We add a max-width: 100% guard so
        the container never exceeds the viewport. */
.dh-container { max-width: min(var(--maxw), 100%); }

/* 15n. Long word break — prevent any single unbreakable string (URL, long
        email, German compound noun) from blowing the layout wide. */
.dh-card,
.dh-post-body,
.dh-testi,
.dh-faq-a,
.dh-lead,
.dh-hero-copy,
.dh-section-head {
    overflow-wrap: break-word;
    word-break: break-word;
}

/* 15o. Body font-size stays at 17px (above the WCAG 1.4.4 minimum of 12pt
        = 16px), so the base is already compliant. Nothing to change here. */

/* End of V13-MODERN-A11Y CSS block. */


/* ==========================================================================
   V13-MODERN-A11Y item 12 — Skip to section dropdown  (markup in header.php)
   ----------------------------------------------------------------------------
   The skip-nav is rendered with the same .skip-link.screen-reader-text
   classes as the existing skip-to-content link (so it inherits the
   off-screen positioning + on-focus reveal behavior). This block adds
   the dropdown-menu styles + the open-state styles.

   The menu opens when:
     - The toggle button is focused (CSS :focus-within on .dh-skip-nav)
     - The toggle button has aria-expanded="true" (set by JS)

   When closed, the menu is positioned off-screen (same technique as the
   skip-link itself). When open, it slides into view from the top-left.
   ========================================================================== */

.dh-skip-nav {
    /* Inherits .skip-link.screen-reader-text positioning (off-screen until
       focused). Override to ensure the WHOLE nav (not just the button) is
       positioned correctly when the button receives focus. */
    border-radius: 0 0 8px 0;
    /* When the button receives focus or the menu is open, slide the nav in. */
}
.dh-skip-nav:focus-within,
.dh-skip-nav.is-open {
    left: 0;
    top: 0;
    clip: auto;
    clip-path: none;
    height: auto;
    width: auto;
    overflow: visible;
}
.dh-skip-toggle {
    background: transparent;
    color: inherit;
    border: 0;
    padding: 12px 20px;
    font: inherit;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border-radius: 0 0 8px 0;
}
.dh-skip-toggle .dh-skip-caret {
    font-size: 0.7em;
    transition: transform .2s var(--ease);
}
.dh-skip-nav.is-open .dh-skip-toggle .dh-skip-caret {
    transform: rotate(180deg);
}
.dh-skip-menu {
    position: absolute;
    top: 100%;
    left: 0;
    background: var(--bg);
    color: var(--text);
    border: 1px solid var(--border);
    border-radius: 0 8px 8px 0;
    box-shadow: 0 18px 40px -16px rgba(0,0,0,.25);
    min-width: 180px;
    padding: 6px;
    margin: 0;
    list-style: none;
    /* Hidden when the menu is closed. */
    visibility: hidden;
    opacity: 0;
    transform: translateY(-6px);
    transition: opacity .15s var(--ease), transform .15s var(--ease), visibility 0s .15s;
}
.dh-skip-nav:focus-within .dh-skip-menu,
.dh-skip-nav.is-open .dh-skip-menu {
    visibility: visible;
    opacity: 1;
    transform: translateY(0);
    transition: opacity .15s var(--ease), transform .15s var(--ease);
}
.dh-skip-menu li { margin: 0; }
.dh-skip-link-item {
    display: block;
    padding: 10px 14px;
    color: var(--text);
    text-decoration: none;
    border-radius: 6px;
    font-size: 14px;
    transition: background .15s var(--ease), color .15s var(--ease);
}
.dh-skip-link-item:hover,
.dh-skip-link-item:focus-visible {
    background: var(--accent);
    color: #fff;
    outline: 2px solid var(--accent);
    outline-offset: -2px;
}

/* RTL: mirror the dropdown so it opens to the RIGHT of the toggle. */
.dh-rtl .dh-skip-menu {
    left: auto;
    right: 0;
    border-radius: 8px 0 8px 8px;
}

/* High-contrast mode: stronger borders + clearer focus (see item 14). */
@media (prefers-contrast: more) {
    .dh-skip-menu {
        border: 2px solid #000;
        background: #fff;
    }
    .dh-skip-link-item {
        color: #000;
    }
    .dh-skip-link-item:hover,
    .dh-skip-link-item:focus-visible {
        background: #000;
        color: #fff;
        outline: 3px solid #000;
    }
}

/* Reduced motion: kill the slide animation. */
@media (prefers-reduced-motion: reduce) {
    .dh-skip-menu,
    .dh-skip-toggle .dh-skip-caret {
        transition: none;
        transform: none;
    }
}

/* End of skip-to-section CSS. */

