{"id":14108,"date":"2026-06-05T11:38:28","date_gmt":"2026-06-05T08:38:28","guid":{"rendered":"https:\/\/dawnforgestudios.com\/terms-conditions-2026\/"},"modified":"2026-06-05T13:22:23","modified_gmt":"2026-06-05T10:22:23","slug":"terms-conditions","status":"publish","type":"page","link":"https:\/\/dawnforgestudios.com\/en\/terms-conditions\/","title":{"rendered":"Terms &amp; Conditions 2026"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"14108\" class=\"elementor elementor-14108 elementor-14038\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ec27b17 e-flex e-con-boxed e-con e-parent\" data-id=\"ec27b17\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3dabaa4 elementor-widget elementor-widget-html\" data-id=\"3dabaa4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- DawnForge Studios \u2014 HOME page Elementor HTML widget snippet\n     Replace MEDIA_BASE with your WP Media base URL, e.g.\n       https:\/\/dawnforgestudios.com\/wp-content\/uploads\/2026\/05\n-->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600&family=Montserrat:wght@400;500;600;700&display=swap\">\n<style>\n\/* ==========================================================================\n   DawnForge Studios \u2014 Site Stylesheet\n   Tokens \u00b7 Layout \u00b7 Components \u00b7 Animations \u00b7 Responsive\n   ========================================================================== *\/\n\n\/* ----- Tokens ----- *\/\n:root {\n  \/* Canvas *\/\n  --bg:               #060608;\n  --bg-elevated:      #0d0d12;\n  --bg-card:          rgba(255, 255, 255, 0.045);\n  --bg-card-hover:    rgba(255, 255, 255, 0.075);\n\n  \/* Borders *\/\n  --border:           rgba(255, 255, 255, 0.08);\n  --border-hover:     rgba(255, 255, 255, 0.18);\n  --border-accent:    rgba(104, 85, 230, 0.4);\n\n  \/* Text *\/\n  --text:             #f0effe;\n  --text-muted:       rgba(240, 239, 254, 0.5);\n  --text-faint:       rgba(240, 239, 254, 0.25);\n\n  \/* Accent \u2014 Violet *\/\n  --accent-violet:    #6855E6;\n  --accent-violet-dim: rgba(104, 85, 230, 0.15);\n  --glow-violet:      0 0 40px rgba(104, 85, 230, 0.45), 0 0 80px rgba(104, 85, 230, 0.2);\n  --glow-violet-sm:   0 0 20px rgba(104, 85, 230, 0.35);\n\n  \/* Accent \u2014 Orange *\/\n  --accent-orange:    #FA7A39;\n  --accent-orange-dim: rgba(250, 122, 57, 0.15);\n  --glow-orange:      0 0 40px rgba(250, 122, 57, 0.45), 0 0 80px rgba(250, 122, 57, 0.2);\n  --glow-orange-sm:   0 0 20px rgba(250, 122, 57, 0.35);\n\n  \/* Semantic *\/\n  --success:          #3ecf8e;\n  --error:            #f55d5d;\n\n  \/* Typography *\/\n  --font-body:        'Inter', system-ui, sans-serif;\n  --font-display:     'Montserrat', 'Inter', system-ui, sans-serif;\n\n  \/* Fluid scale (R30 \u2014 tightened for desktop calmness) *\/\n  --text-xs:          clamp(0.7rem,  1.3vw, 0.72rem);\n  --text-sm:          clamp(0.78rem, 1.6vw, 0.82rem);\n  --text-base:        clamp(0.94rem, 1.7vw, 1rem);\n  --text-lg:          clamp(1rem,    1.8vw, 1.08rem);\n  --text-xl:          clamp(1.1rem,  2.1vw, 1.22rem);\n  --text-2xl:         clamp(1.25rem, 2.4vw, 1.55rem);\n  --text-3xl:         clamp(1.55rem, 3vw,   2.1rem);\n  --text-4xl:         clamp(2rem,    4.2vw, 3.1rem);\n  --text-hero:        clamp(2.3rem,  5.8vw, 4.4rem);\n\n  \/* Spacing *\/\n  --s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px; --s-5: 24px;\n  --s-6: 32px; --s-7: 48px; --s-8: 64px; --s-9: 96px; --s-10: 128px;\n\n  \/* Radius *\/\n  --radius-sm:  6px;\n  --radius-md:  12px;\n  --radius-lg:  20px;\n  --radius-xl:  32px;\n  --radius-pill: 9999px;\n\n  \/* Glass *\/\n  --shadow-card:  0 1px 1px rgba(0,0,0,0.3), 0 4px 16px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.06);\n  --shadow-card-hover: 0 2px 2px rgba(0,0,0,0.35), 0 8px 32px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.09);\n  --blur-card:    blur(16px) saturate(160%);\n  --blur-nav:     blur(24px) saturate(180%);\n\n  \/* Motion *\/\n  --ease:         cubic-bezier(.16, 1, .3, 1);\n  --ease-out:     cubic-bezier(.2, .7, .2, 1);\n\n  --content-max:  1200px;\n  --p-gutter:     clamp(20px, 4vw, 64px);\n}\n\n\/* ----- Reset ----- *\/\n*, *::before, *::after { box-sizing: border-box; }\nhtml { font-size: 16px; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }\nbody {\n  margin: 0;\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  line-height: 1.55;\n  color: var(--text);\n  background: var(--bg);\n  -webkit-font-smoothing: antialiased;\n  text-rendering: optimizeLegibility;\n  overflow-x: hidden;\n  min-height: 100dvh;\n}\nimg, svg { display: block; max-width: 100%; height: auto; }\nbutton { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }\na { color: inherit; text-decoration: none; }\nh1, h2, h3, h4, h5 { font-family: var(--font-display); font-weight: 600; line-height: 1.05; letter-spacing: -0.02em; margin: 0; }\np { margin: 0; max-width: 65ch; }\nul { margin: 0; padding: 0; list-style: none; }\ninput, textarea, select { font: inherit; color: inherit; font-size: max(16px, 1rem); }\n:focus-visible { outline: 2px solid var(--accent-violet); outline-offset: 3px; border-radius: 4px; }\n::selection { background: var(--accent-violet); color: white; }\n\n\/* Skip link *\/\n.skip-link {\n  position: absolute; top: -100px; left: 16px;\n  background: var(--accent-violet); color: white;\n  padding: 12px 18px; border-radius: var(--radius-md);\n  z-index: 999;\n}\n.skip-link:focus { top: 16px; }\n\n\/* ----- Bilingual rules ----- *\/\n.lang-en { display: none; }\n[data-lang=\"en\"] .lang-en { display: inline; }\n[data-lang=\"en\"] .lang-bg { display: none; }\n[data-lang=\"en\"] .block-bg { display: none; }\n[data-lang=\"en\"] .block-en { display: block; }\n.block-en { display: none; }\n\n\/* ----- Background layer (orbs + canvas) ----- *\/\n.bg-stage {\n  position: fixed; inset: 0;\n  pointer-events: none;\n  z-index: 0;\n  overflow: hidden;\n}\n.orb {\n  position: absolute;\n  border-radius: 50%;\n  filter: blur(80px);\n  will-change: transform;\n  opacity: 0.9;\n}\n.orb-violet {\n  width: 640px; height: 640px;\n  background: radial-gradient(circle, rgba(104,85,230,0.42) 0%, transparent 70%);\n  top: -10%; right: -8%;\n  animation: orbDriftA 18s ease-in-out infinite alternate;\n}\n.orb-orange {\n  width: 520px; height: 520px;\n  background: radial-gradient(circle, rgba(250,122,57,0.32) 0%, transparent 70%);\n  filter: blur(100px);\n  bottom: -8%; left: -6%;\n  animation: orbDriftB 14s ease-in-out infinite alternate;\n}\n.orb-violet-2 {\n  width: 420px; height: 420px;\n  background: radial-gradient(circle, rgba(104,85,230,0.22) 0%, transparent 65%);\n  filter: blur(120px);\n  top: 38%; left: 42%;\n  animation: orbDriftC 22s ease-in-out infinite alternate;\n}\n@keyframes orbDriftA {\n  0%   { transform: translate(0,0) scale(1); }\n  100% { transform: translate(-60px, 40px) scale(1.08); }\n}\n@keyframes orbDriftB {\n  0%   { transform: translate(0,0) scale(1); }\n  100% { transform: translate(50px, -30px) scale(1.05); }\n}\n@keyframes orbDriftC {\n  0%   { transform: translate(0,0) scale(1); }\n  100% { transform: translate(30px, 20px) scale(1.1); }\n}\n\/* Page-specific orb palettes *\/\n.theme-orange .orb-violet { opacity: 0.35; }\n.theme-orange .orb-orange { width: 720px; height: 720px; opacity: 1; top: -5%; right: -10%; left: auto; }\n.theme-dual .orb-violet { top: 40%; right: auto; left: -5%; }\n.theme-dual .orb-orange { top: 30%; right: -8%; left: auto; bottom: auto; }\n.bg-particles { position: absolute; inset: 0; opacity: 0.35; }\n\n\/* ----- Page shell ----- *\/\n.page { position: relative; z-index: 1; }\n.container {\n  width: 100%;\n  max-width: var(--content-max);\n  margin-inline: auto;\n  padding-inline: var(--p-gutter);\n}\n\n\/* ----- Nav ----- *\/\n.site-header {\n  position: sticky; top: 0; z-index: 50;\n  padding: var(--s-4) 0;\n  transition: background 240ms var(--ease-out), border-color 240ms var(--ease-out);\n}\n.site-header.scrolled {\n  background: rgba(6, 6, 8, 0.55);\n  backdrop-filter: var(--blur-nav);\n  -webkit-backdrop-filter: var(--blur-nav);\n  border-bottom: 1px solid var(--border);\n}\n.nav {\n  display: flex; align-items: center; justify-content: space-between;\n  gap: var(--s-5);\n}\n.brand {\n  display: flex; align-items: center; gap: 10px;\n  font-family: var(--font-display);\n  font-weight: 600; font-size: 1.05rem; letter-spacing: -0.01em;\n}\n.brand-mark {\n  width: 32px; height: 32px;\n  display: grid; place-items: center;\n  background: linear-gradient(135deg, var(--accent-violet), var(--accent-orange));\n  border-radius: 9px;\n  box-shadow: var(--glow-violet-sm);\n  font-weight: 700; color: white; font-family: var(--font-display);\n  font-size: 0.95rem;\n  position: relative;\n  overflow: hidden;\n}\n\/* Real DawnForge \"DF\" mark \u2014 black PNG with white letters, blended into gradient *\/\n.brand-logo {\n  width: 34px; height: 34px;\n  border-radius: 9px;\n  background:\n    radial-gradient(circle at 30% 30%, rgba(104,85,230,0.55) 0%, transparent 60%),\n    radial-gradient(circle at 75% 70%, rgba(250,122,57,0.45) 0%, transparent 60%),\n    #0a0a0e;\n  box-shadow: var(--glow-violet-sm), inset 0 0 0 1px rgba(255,255,255,0.08);\n  display: grid; place-items: center;\n  position: relative;\n  overflow: hidden;\n  flex: 0 0 auto;\n}\n.brand-logo img {\n  width: 96%; height: 96%;\n  mix-blend-mode: screen;\n  filter: drop-shadow(0 0 4px rgba(255,255,255,0.15));\n}\n.brand-logo::after {\n  content: ''; position: absolute; inset: 0;\n  background: linear-gradient(135deg, rgba(255,255,255,0.10), transparent 45%);\n  pointer-events: none;\n}\n.nav-links { display: flex; gap: var(--s-6); flex-wrap: nowrap; }\n.nav-link {\n  font-size: 0.95rem;\n  color: var(--text-muted);\n  transition: color 160ms var(--ease-out);\n  position: relative; padding: 6px 0;\n  white-space: nowrap;\n}\n.nav-link:hover, .nav-link.active { color: var(--text); }\n.nav-link.active::after {\n  content: ''; position: absolute;\n  left: 0; right: 0; bottom: -2px;\n  height: 1px;\n  background: linear-gradient(90deg, var(--accent-violet), var(--accent-orange));\n}\n.nav-cluster { display: flex; align-items: center; gap: var(--s-4); }\n.nav-cta-desktop { white-space: nowrap; }\n\n\/* Language toggle *\/\n.lang-toggle {\n  display: inline-flex; align-items: center;\n  border: 1px solid var(--border);\n  border-radius: var(--radius-pill);\n  padding: 3px; gap: 0;\n  background: rgba(255,255,255,0.03);\n}\n.lang-toggle button {\n  font-size: 0.78rem; font-weight: 500;\n  padding: 6px 12px; border-radius: var(--radius-pill);\n  color: var(--text-muted);\n  transition: all 180ms var(--ease-out);\n  letter-spacing: 0.04em;\n}\n.lang-toggle button[aria-pressed=\"true\"] {\n  background: var(--text);\n  color: var(--bg);\n}\n\n\/* CTA Button system *\/\n.btn {\n  display: inline-flex; align-items: center; gap: 10px;\n  padding: 14px 22px;\n  border-radius: var(--radius-pill);\n  font-weight: 500; font-size: 0.95rem;\n  min-height: 48px;\n  transition: transform 160ms var(--ease-out), box-shadow 160ms var(--ease-out), background 160ms var(--ease-out), border-color 160ms var(--ease-out);\n  position: relative;\n  letter-spacing: -0.005em;\n  will-change: transform;\n}\n.btn-primary {\n  background: var(--accent-violet);\n  color: white;\n  box-shadow: var(--glow-violet-sm);\n}\n.btn-primary:hover { transform: translateY(-2px); box-shadow: var(--glow-violet); }\n.btn-primary:active { transform: translateY(0); }\n.btn-orange {\n  background: var(--accent-orange);\n  color: #1a0f08;\n  box-shadow: var(--glow-orange-sm);\n  font-weight: 600;\n}\n.btn-orange:hover { transform: translateY(-2px); box-shadow: var(--glow-orange); }\n.btn-ghost {\n  background: transparent;\n  color: var(--text);\n  border: 1px solid var(--border-hover);\n}\n.btn-ghost:hover { background: rgba(255,255,255,0.05); border-color: var(--text-muted); }\n.btn-sm { padding: 10px 16px; font-size: 0.85rem; min-height: 38px; }\n\n.btn .arrow { transition: transform 180ms var(--ease-out); }\n.btn:hover .arrow { transform: translateX(3px); }\n\n\/* Hamburger *\/\n.menu-toggle {\n  display: none;\n  width: 44px; height: 44px;\n  align-items: center; justify-content: center;\n  background: transparent;\n  border: none;\n  padding: 0;\n  cursor: pointer;\n  border-radius: 10px;\n  border: 1px solid var(--border);\n}\n\/* SVG hamburger \u2014 three lines that translate + rotate into a clean X.\n   The X stays the same visual size as the hamburger. *\/\n.menu-toggle .ham {\n  width: 32px; height: 32px;\n  overflow: visible;\n}\n.menu-toggle .line {\n  fill: none;\n  stroke: var(--text);\n  stroke-width: 7;\n  stroke-linecap: round;\n  transform-origin: 50px 50px;\n  transition:\n    transform 600ms cubic-bezier(0.4, 0, 0.2, 1),\n    opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n[data-menu=\"open\"] .menu-toggle .line-top {\n  transform: translateY(17px) rotate(45deg);\n}\n[data-menu=\"open\"] .menu-toggle .line-middle {\n  opacity: 0;\n}\n[data-menu=\"open\"] .menu-toggle .line-bottom {\n  transform: translateY(-17px) rotate(-45deg);\n}\n\n\/* ----- Sections (R30 \u2014 desktop calm) ----- *\/\nsection {\n  padding: clamp(56px, 7vw, 96px) 0;\n  position: relative;\n}\n.eyebrow {\n  display: inline-flex; align-items: center; gap: 8px;\n  padding: 7px 14px;\n  border: 1px solid rgba(166, 150, 255, 0.28);\n  border-radius: var(--radius-pill);\n  background: rgba(104, 85, 230, 0.10);\n  color: rgba(240, 239, 254, 0.85);\n  font-family: var(--font-display);\n  font-size: 0.78rem;\n  font-weight: 500;\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n  backdrop-filter: blur(8px);\n  -webkit-backdrop-filter: blur(8px);\n  box-shadow:\n    inset 0 1px 0 rgba(255, 255, 255, 0.08),\n    0 0 20px rgba(104, 85, 230, 0.18);\n  margin-bottom: var(--s-5);\n}\n.eyebrow::before {\n  content: '';\n  width: 6px; height: 6px;\n  border-radius: 50%;\n  background: var(--accent-violet);\n  box-shadow: 0 0 10px var(--accent-violet);\n}\n.section-heading {\n  font-size: var(--text-4xl);\n  max-width: 14ch;\n  margin-bottom: var(--s-5);\n}\n.section-subline {\n  font-size: var(--text-lg);\n  color: var(--text-muted);\n  max-width: 56ch;\n  margin-bottom: var(--s-7);\n}\n\n\/* ----- Hero (R30 \u2014 desktop calm) ----- *\/\n.hero {\n  min-height: 86svh;\n  padding: clamp(96px, 14vh, 150px) 0 clamp(48px, 6vw, 88px);\n  display: flex; align-items: center;\n}\n.hero-half { min-height: 52vh; padding: clamp(110px, 13vh, 140px) 0 clamp(40px, 6vw, 72px); }\n.hero-short { min-height: 36vh; padding: clamp(96px, 11vh, 124px) 0 clamp(36px, 5vw, 64px); }\n.hero-inner { max-width: 1080px; position: relative; z-index: 2; }\n.hero-title {\n  font-size: var(--text-hero);\n  letter-spacing: -0.035em;\n  font-weight: 600;\n  margin: 0 0 var(--s-5);\n}\n\/* Brand gradient \u2014 applied to any <span class=\"gradient\"> across all headings.\n   White \u2192 orange \u2192 violet so both brand accents read on every gradient phrase. *\/\n.gradient,\n.hero-title .gradient {\n  background: linear-gradient(135deg, var(--text) 18%, var(--accent-orange) 55%, var(--accent-violet) 92%);\n  -webkit-background-clip: text;\n  background-clip: text;\n  color: transparent;\n  -webkit-text-fill-color: transparent;\n}\n.hero-subline {\n  font-size: var(--text-lg);\n  color: var(--text-muted);\n  max-width: 56ch;\n  margin-bottom: var(--s-7);\n}\n.hero-cta-row {\n  display: flex; flex-wrap: wrap; gap: var(--s-3);\n}\n.scroll-indicator {\n  position: absolute; bottom: 32px; left: 50%; transform: translateX(-50%);\n  color: var(--text-faint); font-size: 0.78rem; letter-spacing: 0.15em;\n  text-transform: uppercase;\n  display: flex; flex-direction: column; align-items: center; gap: 8px;\n  animation: bobble 2.4s ease-in-out infinite;\n}\n.scroll-indicator svg { opacity: 0.5; }\n@keyframes bobble { 0%,100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(6px); } }\n\n\/* ----- Marquee ----- *\/\n.marquee {\n  overflow: hidden;\n  padding: var(--s-7) 0;\n  -webkit-mask-image: linear-gradient(to right, transparent, black 12%, black 88%, transparent);\n  mask-image: linear-gradient(to right, transparent, black 12%, black 88%, transparent);\n}\n.marquee-label {\n  text-align: center; font-size: 0.78rem;\n  letter-spacing: 0.2em; text-transform: uppercase;\n  color: var(--text-faint);\n  margin-bottom: var(--s-5);\n}\n.marquee-track {\n  display: flex; gap: 56px;\n  animation: slide 32s linear infinite;\n  width: max-content;\n}\n.marquee:hover .marquee-track { animation-play-state: paused; }\n.marquee-item {\n  flex: 0 0 auto;\n  height: 44px; padding: 0 28px;\n  display: flex; align-items: center;\n  font-family: var(--font-display); font-weight: 500;\n  font-size: 1rem; letter-spacing: 0.05em;\n  color: var(--text-muted);\n  border: 1px solid var(--border);\n  border-radius: 10px;\n  background: rgba(255,255,255,0.025);\n}\n@keyframes slide { to { transform: translateX(-50%); } }\n\n\/* ----- Service rows (numbered, Home) ----- *\/\n.service-rows {\n  border-top: 1px solid var(--border);\n  margin-top: var(--s-6);\n}\n.service-row {\n  display: grid;\n  grid-template-columns: 120px 1fr auto;\n  align-items: center;\n  gap: var(--s-6);\n  padding: var(--s-7) var(--s-5);\n  border-bottom: 1px solid var(--border);\n  position: relative;\n  transition: background 200ms var(--ease-out), padding-left 240ms var(--ease-out);\n  overflow: hidden;\n}\n.service-row::before {\n  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 2px;\n  background: linear-gradient(180deg, var(--accent-violet), var(--accent-orange));\n  opacity: 0; transition: opacity 200ms var(--ease-out);\n}\n.service-row:hover { background: rgba(255,255,255,0.025); padding-left: 32px; }\n.service-row:hover::before { opacity: 1; }\n.service-row .num {\n  font-family: var(--font-display);\n  font-size: clamp(1.8rem, 3vw, 2.6rem);\n  font-weight: 600;\n  color: var(--text-faint);\n  letter-spacing: -0.04em;\n  line-height: 1;\n  transition: color 200ms var(--ease-out);\n}\n.service-row:hover .num { color: var(--accent-orange); }\n.service-row .body { display: grid; gap: 6px; }\n.service-row .name {\n  font-family: var(--font-display); font-weight: 500;\n  font-size: var(--text-2xl); letter-spacing: -0.015em;\n}\n.service-row .desc {\n  color: var(--text-muted);\n  font-size: var(--text-base);\n  max-width: 60ch;\n}\n.service-row .chevron {\n  color: var(--text-faint);\n  transition: transform 200ms var(--ease-out), color 200ms var(--ease-out);\n}\n.service-row:hover .chevron { color: var(--accent-violet); transform: translateX(6px); }\n\n\/* ----- Glass cards ----- *\/\n.glass {\n  background: var(--bg-card);\n  backdrop-filter: var(--blur-card);\n  -webkit-backdrop-filter: var(--blur-card);\n  border: 1px solid var(--border);\n  border-radius: var(--radius-lg);\n  box-shadow: var(--shadow-card);\n  padding: var(--s-7);\n  transition: transform 200ms var(--ease-out), background 200ms var(--ease-out), border-color 200ms var(--ease-out), box-shadow 200ms var(--ease-out);\n}\n@media (any-hover: hover) {\n  .glass:hover {\n    background: var(--bg-card-hover);\n    border-color: var(--border-hover);\n    box-shadow: var(--shadow-card-hover);\n    transform: translateY(-3px);\n  }\n}\n\n\/* Stat cards *\/\n.stat-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: var(--s-5);\n}\n.stat-card .stat-num {\n  font-family: var(--font-display);\n  font-size: clamp(2.2rem, 4.6vw, 3.4rem);\n  font-weight: 600;\n  line-height: 1;\n  letter-spacing: -0.03em;\n  background: linear-gradient(135deg, var(--text) 0%, var(--accent-orange) 50%, var(--accent-violet) 100%);\n  -webkit-background-clip: text; background-clip: text; color: transparent;\n  margin-bottom: var(--s-3);\n}\n.stat-card .stat-label {\n  font-family: var(--font-display);\n  font-weight: 500;\n  font-size: var(--text-lg);\n  margin-bottom: var(--s-3);\n}\n.stat-card .stat-sub {\n  color: var(--text-muted);\n  font-size: var(--text-sm);\n}\n\n\/* Step cards (process, 2x2) *\/\n.step-grid {\n  display: grid;\n  grid-template-columns: repeat(2, 1fr);\n  gap: var(--s-5);\n}\n.step-card { display: grid; gap: var(--s-4); position: relative; }\n.step-card .step-icon {\n  width: 48px; height: 48px;\n  display: grid; place-items: center;\n  border-radius: 12px;\n  background: var(--accent-violet-dim);\n  color: var(--accent-violet);\n  border: 1px solid var(--border);\n}\n.step-card .step-num {\n  position: absolute; top: var(--s-7); right: var(--s-7);\n  font-family: var(--font-display); font-weight: 500;\n  color: var(--text-faint); letter-spacing: 0.05em;\n  font-size: 0.85rem;\n}\n.step-card h3 { font-size: var(--text-xl); }\n.step-card p { color: var(--text-muted); font-size: var(--text-base); }\n\n\/* Value cards *\/\n.value-grid {\n  display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-5);\n}\n\n\/* Team grid *\/\n.team-grid {\n  display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--s-5);\n}\n.team-card {\n  display: grid; grid-template-columns: auto 1fr; gap: var(--s-5); align-items: center;\n}\n.monogram {\n  width: 72px; height: 72px;\n  display: grid; place-items: center;\n  border-radius: 50%;\n  background: radial-gradient(circle at 30% 30%, var(--accent-violet-dim), var(--bg-elevated));\n  border: 1px solid var(--border);\n  font-family: var(--font-display); font-weight: 600;\n  font-size: 1.6rem; letter-spacing: 0.05em;\n  color: var(--text);\n  transition: transform 300ms var(--ease-out), box-shadow 300ms var(--ease-out);\n}\n.team-card:hover .monogram {\n  transform: scale(1.05);\n  box-shadow: var(--glow-violet-sm);\n}\n.team-card .name {\n  font-family: var(--font-display); font-weight: 500;\n  font-size: var(--text-xl); margin-bottom: 4px;\n}\n.team-card .role {\n  color: var(--accent-orange);\n  font-size: var(--text-sm); letter-spacing: 0.04em;\n  margin-bottom: var(--s-3);\n  font-weight: 500;\n}\n.team-card .bio { color: var(--text-muted); font-size: var(--text-sm); }\n\n\/* ----- Services page (deep dive cards) ----- *\/\n.service-deep {\n  display: grid; gap: var(--s-6); margin-top: var(--s-6);\n}\n\/* When an anchor link jumps to one of these service cards, leave clearance\n   for the sticky header so the right card lands at the top of the viewport. *\/\n.service-deep > article[id] {\n  scroll-margin-top: 110px;\n}\n\/* Service card text \u2014 softened white, body-text sized *\/\n.service-deep .glass p,\n.service-deep .glass .bullet-list,\n.service-deep .glass .bullet-list li {\n  color: rgba(240, 239, 254, 0.78);\n  font-size: var(--text-base);\n  line-height: 1.6;\n}\n.service-deep .glass .bullet-list { gap: 10px; }\n.service-deep .glass {\n  padding: clamp(36px, 5vw, 64px);\n  position: relative;\n  display: grid;\n  grid-template-columns: 80px 1fr;\n  gap: var(--s-6);\n  border-left: 3px solid var(--accent-violet);\n}\n.service-deep .glass:nth-child(even) { border-left-color: var(--accent-orange); }\n.service-deep .watermark {\n  position: absolute; right: var(--s-7); top: var(--s-5);\n  font-family: var(--font-display); font-weight: 600;\n  font-size: clamp(3rem, 6vw, 5rem);\n  letter-spacing: -0.04em;\n  color: rgba(255,255,255,0.05);\n  line-height: 0.9;\n  user-select: none;\n  pointer-events: none;\n}\n.service-deep .icon-wrap {\n  width: 64px; height: 64px;\n  display: grid; place-items: center;\n  border-radius: 14px;\n  background: var(--accent-violet-dim);\n  border: 1px solid var(--border);\n  color: var(--accent-violet);\n}\n.service-deep .glass:nth-child(even) .icon-wrap {\n  background: var(--accent-orange-dim); color: var(--accent-orange);\n}\n.service-deep h3 {\n  font-size: clamp(1.25rem, 2.4vw, 1.6rem);\n  margin-bottom: var(--s-3);\n}\n.service-deep p {\n  color: var(--text-muted);\n  max-width: 60ch;\n  margin-bottom: var(--s-4);\n}\n.bullet-list {\n  display: grid; gap: 8px;\n  color: var(--text-muted);\n  font-size: var(--text-sm);\n}\n.bullet-list li::before { content: '\u00b7  '; color: var(--accent-violet); font-weight: 700; }\n\n\/* ----- CTA banner \u2014 transparent section + free-floating 3D \"?\" characters ----- *\/\n.cta-banner {\n  margin: var(--s-6) 0 0;\n  position: relative;\n  text-align: center;\n  padding: clamp(64px, 8vw, 120px) clamp(24px, 6vw, 88px) clamp(8px, 1.5vw, 20px);\n  background: transparent;\n  border: none;\n  border-radius: 0;\n  overflow: visible;\n  isolation: isolate;\n}\n\n\/* Tighten the wrapping <section>'s bottom padding when it ends in a CTA banner\n   so the footer sits closer to the call-to-action. *\/\nsection:has(> .container > .cta-banner:last-child) {\n  padding-bottom: clamp(20px, 2.5vw, 40px);\n}\n\n\/* Big floating 3D \"?\" \u2014 pure character, no container.\n   3D effect is achieved with stacked text-shadows that read as extruded depth,\n   plus a soft outer glow. *\/\n.cta-banner .cta-mark {\n  position: absolute;\n  font-family: var(--font-display);\n  font-weight: 700;\n  font-size: clamp(160px, 20vw, 300px);\n  line-height: 0.85;\n  color: #ffffff;\n  text-shadow:\n    2px 2px 0 rgba(205,175,255,0.92),\n    4px 4px 0 rgba(180,140,250,0.88),\n    6px 6px 0 rgba(155,110,240,0.82),\n    8px 8px 0 rgba(130,85,225,0.76),\n    10px 10px 0 rgba(110,68,205,0.68),\n    12px 12px 0 rgba(90,55,185,0.58),\n    14px 14px 0 rgba(72,42,165,0.48),\n    16px 16px 0 rgba(56,32,140,0.38),\n    0 24px 60px rgba(140,90,240,0.30),\n    0 0 90px rgba(140,90,240,0.18);\n  z-index: 2;\n  pointer-events: none;\n  user-select: none;\n  will-change: transform;\n}\n.cta-banner .cta-mark-l {\n  top: clamp(20px, 3vw, 56px);\n  left: clamp(8px, 4vw, 100px);\n  animation: ctaMarkFloatL 7s ease-in-out infinite alternate;\n}\n.cta-banner .cta-mark-r {\n  top: clamp(40px, 5vw, 96px);\n  right: clamp(8px, 4vw, 100px);\n  animation: ctaMarkFloatR 8.5s ease-in-out infinite alternate;\n  \/* Right mark uses the orange brand accent for its extrusion *\/\n  text-shadow:\n    2px 2px 0 rgba(255,205,160,0.92),\n    4px 4px 0 rgba(255,180,120,0.88),\n    6px 6px 0 rgba(252,150,85,0.82),\n    8px 8px 0 rgba(240,120,60,0.76),\n    10px 10px 0 rgba(220,100,45,0.68),\n    12px 12px 0 rgba(195,82,32,0.58),\n    14px 14px 0 rgba(165,65,22,0.48),\n    16px 16px 0 rgba(135,52,14,0.38),\n    0 24px 60px rgba(250,122,57,0.32),\n    0 0 90px rgba(250,122,57,0.20);\n}\n\/* Strategy icon on the right also picks up the orange tint *\/\n.cta-banner .cta-mark-r.strategy-mark {\n  filter:\n    drop-shadow(2px 2px 0 rgba(255,205,160,0.95))\n    drop-shadow(4px 4px 0 rgba(255,180,120,0.90))\n    drop-shadow(6px 6px 0 rgba(250,150,85,0.82))\n    drop-shadow(8px 8px 0 rgba(235,120,60,0.72))\n    drop-shadow(10px 10px 0 rgba(210,100,40,0.58))\n    drop-shadow(12px 12px 0 rgba(185,82,28,0.45))\n    drop-shadow(0 26px 60px rgba(250,122,57,0.32));\n}\n@keyframes ctaMarkFloatL {\n  0%   { transform: translateY(0)     rotate(-14deg); }\n  100% { transform: translateY(-22px) rotate(-6deg);  }\n}\n@keyframes ctaMarkFloatR {\n  0%   { transform: translateY(0)     rotate(12deg); }\n  100% { transform: translateY(-28px) rotate(4deg);  }\n}\n@media (prefers-reduced-motion: reduce) {\n  .cta-banner .cta-mark-l, .cta-banner .cta-mark-r { animation: none; }\n}\n@media (max-width: 760px) {\n  .cta-banner .cta-mark {\n    font-size: clamp(80px, 22vw, 140px);\n  }\n  .cta-banner .cta-mark-l { left: 8px; top: 16px; }\n  .cta-banner .cta-mark-r { right: 8px; top: 36px; }\n}\n\n\/* Strategy-icon variant of the floating mark \u2014 replaces \"?\" text with an SVG\n   while preserving the same float animation, glow, and 3D extrusion feel. *\/\n.cta-banner .cta-mark.strategy-mark {\n  display: grid;\n  place-items: center;\n  width: clamp(140px, 17vw, 240px);\n  height: clamp(140px, 17vw, 240px);\n  font-size: 0;\n  line-height: 0;\n  color: transparent;\n  text-shadow: none;\n  filter:\n    drop-shadow(2px 2px 0 rgba(205,175,255,0.95))\n    drop-shadow(4px 4px 0 rgba(180,140,250,0.90))\n    drop-shadow(6px 6px 0 rgba(155,110,240,0.82))\n    drop-shadow(8px 8px 0 rgba(130,85,225,0.72))\n    drop-shadow(10px 10px 0 rgba(105,68,205,0.58))\n    drop-shadow(12px 12px 0 rgba(85,55,180,0.45))\n    drop-shadow(0 26px 60px rgba(140,90,240,0.32));\n}\n.cta-banner .cta-mark.strategy-mark svg {\n  width: 88%;\n  height: 88%;\n  color: #ffffff;\n}\n@media (max-width: 760px) {\n  .cta-banner .cta-mark.strategy-mark {\n    width: clamp(96px, 24vw, 150px);\n    height: clamp(96px, 24vw, 150px);\n  }\n}\n\n\/* Eyebrow pill \u2014 clean, no dot, sentence-case *\/\n.cta-banner .cta-eyebrow {\n  display: inline-flex;\n  align-items: center;\n  padding: 8px 22px;\n  margin: 0 auto var(--s-6);\n  border-radius: 999px;\n  background: rgba(255,255,255,0.02);\n  border: 1px solid rgba(255,255,255,0.10);\n  font-family: var(--font-display);\n  font-weight: 400;\n  font-size: 0.95rem;\n  letter-spacing: 0;\n  text-transform: none;\n  color: rgba(255,255,255,0.85);\n  position: relative;\n  z-index: 3;\n}\n.cta-banner .cta-eyebrow::before { content: none; }\n\n\/* Massive headline *\/\n.cta-banner h2 {\n  font-size: clamp(2.4rem, 5.6vw, 4rem);\n  margin: 0 auto var(--s-4);\n  max-width: 22ch;\n  line-height: 1.06;\n  letter-spacing: -0.025em;\n  font-weight: 600;\n  color: #fff;\n  position: relative;\n  z-index: 3;\n}\n\/* Second-line gradient action phrase (white \u2192 soft violet) *\/\n.cta-banner h2 .cta-grad {\n  background: linear-gradient(180deg, #ffffff 0%, #ffd8b8 35%, #d2b6ff 70%, #9277ff 100%);\n  -webkit-background-clip: text;\n  background-clip: text;\n  color: transparent;\n  -webkit-text-fill-color: transparent;\n}\n\n.cta-banner p {\n  font-size: 1.05rem;\n  color: rgba(255,255,255,0.55);\n  max-width: 44ch;\n  margin: 0 auto var(--s-7);\n  line-height: 1.6;\n  position: relative;\n  z-index: 3;\n}\n\n\/* Two-button action row *\/\n.cta-banner .cta-actions {\n  display: inline-flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: center;\n  gap: 14px;\n  position: relative;\n  z-index: 3;\n}\n.cta-banner .cta-actions .btn { margin: 0; }\n\n\/* Primary pill button \u2014 white pill with violet circle-arrow *\/\n.btn-pill {\n  display: inline-flex;\n  align-items: center;\n  gap: 14px;\n  padding: 6px 8px 6px 26px;\n  background: #fff;\n  border-radius: 999px;\n  color: #0a0814;\n  font-family: var(--font-display);\n  font-weight: 600;\n  font-size: 1rem;\n  line-height: 1;\n  border: 1px solid rgba(255,255,255,0.6);\n  box-shadow:\n    0 0 0 6px rgba(255,255,255,0.04),\n    0 0 70px rgba(120,80,240,0.55);\n  transition: all 220ms var(--ease-out);\n  text-decoration: none;\n}\n.btn-pill:hover {\n  transform: translateY(-1px);\n  box-shadow:\n    0 0 0 8px rgba(255,255,255,0.08),\n    0 0 90px rgba(140,90,250,0.7);\n  color: #0a0814;\n}\n.btn-pill .pill-arrow {\n  width: 42px; height: 42px;\n  border-radius: 50%;\n  background: linear-gradient(135deg, var(--accent-violet) 0%, var(--accent-orange) 100%);\n  display: grid; place-items: center;\n  color: #fff;\n  flex: 0 0 auto;\n  box-shadow: inset 0 1px 0 rgba(255,255,255,0.20);\n}\n.btn-pill .pill-arrow svg { width: 18px; height: 18px; }\n\n\/* Ghost \/ secondary button \u2014 readable on the new black surface *\/\n.btn-ghost {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  padding: 14px 24px;\n  border-radius: 999px;\n  background: rgba(255,255,255,0.02);\n  border: 1px solid rgba(255,255,255,0.18);\n  color: rgba(255,255,255,0.85);\n  font-family: var(--font-display);\n  font-weight: 500;\n  letter-spacing: 0.01em;\n  transition: all 180ms var(--ease-out);\n  text-decoration: none;\n}\n.btn-ghost:hover {\n  border-color: rgba(255,255,255,0.40);\n  background: rgba(255,255,255,0.06);\n  color: #fff;\n  transform: translateY(-1px);\n}\n\n@media (max-width: 640px) {\n  .cta-banner { padding: clamp(64px, 14vw, 96px) 22px clamp(180px, 42vw, 260px); }\n  .cta-banner .cta-mark { font-size: clamp(56px, 14vw, 100px); }\n  .cta-banner .cta-actions { flex-direction: column; align-items: stretch; }\n  .cta-banner .cta-actions .btn,\n  .cta-banner .cta-actions .btn-pill { justify-content: center; }\n}\n\n\/* ----- About story ----- *\/\n.story-grid {\n  display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--s-7);\n  align-items: start;\n}\n.story-text p { color: var(--text-muted); font-size: var(--text-lg); margin-bottom: var(--s-4); }\n.story-text p:last-child { margin-bottom: 0; }\n.story-stats {\n  display: grid; gap: var(--s-3);\n}\n.mini-stat {\n  display: flex; align-items: baseline; justify-content: space-between;\n  padding: var(--s-5);\n  border: 1px solid var(--border);\n  border-radius: var(--radius-md);\n  background: var(--bg-card);\n}\n.mini-stat .v { font-family: var(--font-display); font-weight: 600; font-size: 1.35rem; }\n.mini-stat .l { color: var(--text-muted); font-size: 0.9rem; }\n\n\/* ----- Contacts ----- *\/\n.contacts-grid {\n  display: grid; grid-template-columns: 4fr 6fr; gap: var(--s-7);\n  align-items: start;\n}\n.contact-info { display: grid; gap: var(--s-4); }\n.info-item {\n  padding: var(--s-5);\n  border: 1px solid var(--border);\n  border-radius: var(--radius-md);\n  background: var(--bg-card);\n  backdrop-filter: var(--blur-card);\n}\n.info-item .label {\n  font-size: 0.78rem; letter-spacing: 0.15em; text-transform: uppercase;\n  color: var(--text-faint); margin-bottom: 6px;\n}\n.info-item .value {\n  font-family: var(--font-display); font-weight: 500;\n  font-size: var(--text-lg);\n}\n.info-item a { color: var(--text); }\n.info-item a:hover { color: var(--accent-violet); }\n.socials { display: flex; gap: var(--s-3); margin-top: var(--s-3); }\n.social-pill {\n  display: inline-flex; align-items: center; gap: 8px;\n  padding: 8px 14px;\n  border: 1px solid var(--border);\n  border-radius: var(--radius-pill);\n  font-size: 0.85rem;\n  color: var(--text-muted);\n  transition: all 160ms var(--ease-out);\n}\n.social-pill:hover { color: var(--text); border-color: var(--accent-violet); }\n\n.contact-form {\n  padding: clamp(32px, 5vw, 56px);\n}\n.form-grid {\n  display: grid; gap: var(--s-4);\n  grid-template-columns: 1fr 1fr;\n}\n.field { display: grid; gap: 6px; }\n.field-full { grid-column: 1 \/ -1; }\n.field label {\n  font-size: 0.85rem;\n  color: var(--text-muted);\n  font-weight: 500;\n}\n.field input, .field select, .field textarea {\n  background: rgba(255,255,255,0.04);\n  border: 1px solid var(--border);\n  border-radius: var(--radius-md);\n  padding: 14px 16px;\n  width: 100%;\n  color: var(--text);\n  transition: border-color 160ms var(--ease-out), box-shadow 160ms var(--ease-out);\n}\n.field input:focus, .field select:focus, .field textarea:focus {\n  outline: none;\n  border-color: var(--accent-violet);\n  box-shadow: var(--glow-violet-sm);\n}\n.field textarea { resize: vertical; min-height: 120px; }\n.field select { appearance: none; -webkit-appearance: none;\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23888' stroke-width='1.4' stroke-linecap='round'\/%3E%3C\/svg%3E\");\n  background-repeat: no-repeat; background-position: right 16px center;\n  padding-right: 40px;\n}\n.form-note { font-size: 0.85rem; color: var(--text-faint); margin-top: var(--s-3); }\n.form-feedback {\n  margin-top: var(--s-4);\n  padding: 12px 16px;\n  border-radius: var(--radius-md);\n  font-size: 0.9rem;\n  display: none;\n}\n.form-feedback.show { display: block; }\n.form-feedback.ok { background: rgba(62, 207, 142, 0.1); border: 1px solid var(--success); color: var(--success); }\n.form-feedback.err { background: rgba(245, 93, 93, 0.1); border: 1px solid var(--error); color: var(--error); }\n\n\/* ----- Legal pages ----- *\/\n.legal-shell {\n  max-width: 760px;\n  margin: 0 auto;\n  padding: clamp(80px, 12vw, 140px) var(--s-5) var(--s-9);\n}\n.legal-shell h1 { font-size: clamp(1.7rem, 3.6vw, 2.4rem); margin-bottom: var(--s-3); }\n.legal-shell .meta { color: var(--text-faint); font-size: 0.9rem; margin-bottom: var(--s-7); }\n.legal-shell h2 {\n  font-size: var(--text-xl);\n  margin: var(--s-7) 0 var(--s-3);\n  font-family: var(--font-display);\n}\n.legal-shell p, .legal-shell li {\n  color: var(--text-muted); font-size: var(--text-base);\n  margin-bottom: var(--s-3);\n  line-height: 1.7;\n}\n.legal-shell ul { padding-left: 20px; list-style: disc; }\n\n\/* ----- Footer ----- *\/\n.site-footer {\n  border-top: 1px solid var(--border);\n  padding: var(--s-6) 0 var(--s-5);\n  margin-top: 0;\n  position: relative;\n  z-index: 1;\n  background: rgba(6, 6, 8, 0.5);\n  backdrop-filter: var(--blur-card);\n}\n.footer-grid {\n  display: grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: var(--s-6);\n  margin-bottom: var(--s-7);\n}\n.footer-col h4 {\n  font-family: var(--font-display);\n  font-size: 0.8rem; letter-spacing: 0.15em;\n  text-transform: uppercase;\n  color: var(--text-faint);\n  margin-bottom: var(--s-4); font-weight: 500;\n}\n.footer-col ul { display: grid; gap: 10px; }\n.footer-col a {\n  color: var(--text-muted); font-size: 0.92rem;\n  transition: color 140ms var(--ease-out);\n}\n.footer-col a:hover { color: var(--text); }\n.footer-tagline { color: var(--text-muted); font-size: 0.9rem; margin-bottom: var(--s-5); max-width: 32ch; }\n.footer-bottom {\n  display: flex; justify-content: space-between; align-items: center;\n  flex-wrap: wrap; gap: var(--s-3);\n  padding-top: var(--s-5);\n  border-top: 1px solid var(--border);\n  font-size: 0.85rem;\n  color: var(--text-faint);\n}\n.footer-bottom-links { display: flex; gap: var(--s-5); }\n.footer-bottom-links a { color: var(--text-faint); transition: color 140ms var(--ease-out); }\n.footer-bottom-links a:hover { color: var(--text); }\n\n\/* ----- Reveal (IntersectionObserver) ----- *\/\n@media (prefers-reduced-motion: no-preference) {\n  .reveal {\n    opacity: 0; transform: translateY(24px);\n    transition: opacity 600ms var(--ease), transform 600ms var(--ease);\n  }\n  .reveal.is-in { opacity: 1; transform: none; }\n  .reveal-x {\n    opacity: 0; transform: translateX(-16px);\n    transition: opacity 500ms var(--ease-out), transform 500ms var(--ease-out);\n  }\n  .reveal-x.is-in { opacity: 1; transform: none; }\n}\n\n\/* ----- Responsive ----- *\/\n\/* Medium viewports \u2014 give the nav links room by dropping the CTA button\n   before they get squeezed and wrap onto two lines. *\/\n@media (max-width: 1180px) {\n  .nav-cta-desktop { display: none; }\n  .nav-links { gap: var(--s-5); }\n  .nav { gap: var(--s-4); }\n}\n@media (max-width: 1024px) {\n  .footer-grid { grid-template-columns: 1.4fr 1fr 1fr; }\n  .footer-col:last-child { grid-column: 1 \/ -1; }\n  .contacts-grid { grid-template-columns: 1fr; }\n  .stat-grid { grid-template-columns: repeat(3, 1fr); }\n  .service-deep .glass { grid-template-columns: 1fr; }\n  .nav-links { gap: var(--s-4); }\n  .nav-link { font-size: 0.9rem; }\n}\n@media (max-width: 900px) {\n  .nav-links { display: none; }\n  .menu-toggle { display: inline-flex; }\n  .nav-cta-desktop { display: none; }\n  .stat-grid, .value-grid { grid-template-columns: 1fr; }\n  .step-grid { grid-template-columns: 1fr; }\n  .team-grid { grid-template-columns: 1fr; }\n  .story-grid { grid-template-columns: 1fr; }\n  .form-grid { grid-template-columns: 1fr; }\n  .footer-grid { grid-template-columns: 1fr 1fr; }\n  .footer-col:first-child { grid-column: 1 \/ -1; }\n  .footer-col:last-child { grid-column: 1 \/ -1; }\n  .service-row {\n    grid-template-columns: 60px 1fr auto;\n    gap: var(--s-4); padding: var(--s-5) var(--s-3);\n  }\n  .service-row .num { font-size: 2rem; }\n  .service-row .name { font-size: var(--text-xl); }\n}\n@media (max-width: 600px) {\n  .step-card .step-num { top: var(--s-5); right: var(--s-5); }\n  .team-card { grid-template-columns: 1fr; text-align: left; }\n  .monogram { width: 64px; height: 64px; font-size: 1.3rem; }\n  .footer-bottom { justify-content: flex-start; flex-direction: column; align-items: flex-start; }\n}\n\n\/* ----- Mobile menu overlay (Nextmove-style sidebar, right-aligned) ----- *\/\n.mobile-menu {\n  position: fixed; inset: 0;\n  background: rgba(6, 6, 8, 0.96);\n  backdrop-filter: var(--blur-nav);\n  z-index: 49;\n  padding: 96px clamp(18px, 4vw, 28px) var(--s-8);\n  display: none;\n  flex-direction: column; gap: 10px;\n  overflow-y: auto;\n  text-align: right;\n}\n[data-menu=\"open\"] .mobile-menu { display: flex; }\n\n.mobile-menu .nav-link {\n  position: relative;\n  display: flex;\n  align-items: center;\n  justify-content: flex-end;\n  gap: 14px;\n  padding: 18px 22px;\n  border-radius: 16px;\n  border: 1px solid transparent;\n  font-family: var(--font-display);\n  font-size: clamp(1.05rem, 4vw, 1.35rem);\n  font-weight: 500;\n  letter-spacing: -0.01em;\n  color: rgba(240, 239, 254, 0.62);\n  background: transparent;\n  overflow: hidden;\n  transition: color 220ms var(--ease-out), background 220ms var(--ease-out), border-color 220ms var(--ease-out);\n}\n.mobile-menu .nav-link:hover { color: rgba(240, 239, 254, 0.88); }\n\n.mobile-menu .nav-link .nav-icon {\n  width: 22px; height: 22px;\n  display: grid; place-items: center;\n  flex-shrink: 0;\n  color: currentColor;\n  order: 2;\n}\n.mobile-menu .nav-link .nav-icon svg { width: 100%; height: 100%; }\n.mobile-menu .nav-link > span:not(.nav-icon) { order: 1; }\n\n\/* Active row \u2014 only a vertical orange\u2192violet bar on the right edge *\/\n.mobile-menu .nav-link.active {\n  color: #fff;\n}\n.mobile-menu .nav-link.active::before {\n  content: '';\n  position: absolute;\n  right: 6px; top: 18%; bottom: 18%;\n  width: 4px;\n  background: linear-gradient(180deg, var(--accent-orange), var(--accent-violet));\n  border-radius: 4px;\n  box-shadow:\n    0 0 12px 2px rgba(250, 122, 57, 0.55),\n    0 0 20px 4px rgba(104, 85, 230, 0.45);\n  pointer-events: none;\n}\n\n.mobile-menu .btn { width: max-content; margin-top: var(--s-5); align-self: flex-end; }\n\n\/* ==========================================================================\n   R30 EXTENSIONS \u2014 3D depth, mesh grid, noise grain, spotlight, tilt cards\n   ========================================================================== *\/\n\n\/* ----- Animated mesh grid overlay (sits on top of orbs, under content) ----- *\/\n.grid-mesh {\n  position: fixed; inset: 0;\n  z-index: 0;\n  pointer-events: none;\n  background-image:\n    linear-gradient(to right, rgba(255,255,255,0.04) 1px, transparent 1px),\n    linear-gradient(to bottom, rgba(255,255,255,0.04) 1px, transparent 1px);\n  background-size: 64px 64px;\n  -webkit-mask-image: radial-gradient(ellipse at 50% 35%, black, transparent 75%);\n  mask-image: radial-gradient(ellipse at 50% 35%, black, transparent 75%);\n  opacity: 0.55;\n  animation: meshDrift 30s linear infinite;\n}\n@keyframes meshDrift {\n  from { background-position: 0 0, 0 0; }\n  to   { background-position: 64px 0, 0 64px; }\n}\n\n\/* ----- Subtle noise grain (adds film texture, kills gradient banding) ----- *\/\n.noise {\n  position: fixed; inset: 0;\n  z-index: 0;\n  pointer-events: none;\n  opacity: 0.06;\n  mix-blend-mode: overlay;\n  background-image: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.92' numOctaves='2' stitchTiles='stitch'\/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.5 0'\/><\/filter><rect width='100%25' height='100%25' filter='url(%23n)'\/><\/svg>\");\n}\n\n\/* ----- Hero 3D wireframe shape (pure CSS, perspective + rotateY) ----- *\/\n.hero-3d {\n  position: absolute;\n  right: clamp(-40px, -3vw, 0px);\n  top: 50%;\n  transform: translateY(-50%);\n  width: clamp(280px, 32vw, 460px);\n  height: clamp(280px, 32vw, 460px);\n  perspective: 900px;\n  pointer-events: none;\n  z-index: 1;\n  opacity: 0.95;\n}\n.hero-3d .ring {\n  position: absolute; inset: 0;\n  border-radius: 50%;\n  border: 1px solid rgba(255,255,255,0.18);\n  background: radial-gradient(circle at 35% 35%, rgba(104,85,230,0.18), transparent 60%);\n  transform-style: preserve-3d;\n  animation: ringSpinA 22s linear infinite;\n  box-shadow:\n    inset 0 0 60px rgba(104,85,230,0.18),\n    0 0 80px rgba(104,85,230,0.20);\n}\n.hero-3d .ring + .ring {\n  border-color: rgba(250,122,57,0.32);\n  background: radial-gradient(circle at 60% 60%, rgba(250,122,57,0.14), transparent 60%);\n  animation: ringSpinB 18s linear infinite;\n  inset: 18%;\n  box-shadow:\n    inset 0 0 40px rgba(250,122,57,0.18),\n    0 0 60px rgba(250,122,57,0.18);\n}\n.hero-3d .ring + .ring + .ring {\n  border-color: rgba(255,255,255,0.25);\n  inset: 36%;\n  animation: ringSpinC 14s linear infinite;\n  background: radial-gradient(circle, rgba(104,85,230,0.22), transparent 70%);\n}\n.hero-3d .core {\n  position: absolute; inset: 44%;\n  border-radius: 50%;\n  background: radial-gradient(circle at 35% 35%, #ffffff 0%, var(--accent-violet) 50%, var(--accent-orange) 100%);\n  filter: blur(2px);\n  box-shadow: 0 0 60px rgba(104,85,230,0.65), 0 0 120px rgba(250,122,57,0.35);\n  animation: corePulse 4s ease-in-out infinite alternate;\n}\n@keyframes ringSpinA {\n  0%   { transform: rotateX(70deg) rotateZ(0deg); }\n  100% { transform: rotateX(70deg) rotateZ(360deg); }\n}\n@keyframes ringSpinB {\n  0%   { transform: rotateY(70deg) rotateZ(0deg); }\n  100% { transform: rotateY(70deg) rotateZ(-360deg); }\n}\n@keyframes ringSpinC {\n  0%   { transform: rotateX(35deg) rotateY(35deg) rotateZ(0deg); }\n  100% { transform: rotateX(35deg) rotateY(35deg) rotateZ(360deg); }\n}\n@keyframes corePulse {\n  0%   { transform: scale(1); filter: blur(2px); }\n  100% { transform: scale(1.12); filter: blur(3px); }\n}\n\n\/* ----- Floating 3D glass tiles (drift in hero background) ----- *\/\n.float-shapes {\n  position: absolute; inset: 0;\n  pointer-events: none;\n  overflow: hidden;\n  z-index: 0;\n}\n.float-shape {\n  position: absolute;\n  border: 1px solid rgba(255,255,255,0.12);\n  border-radius: 14px;\n  background: linear-gradient(135deg, rgba(104,85,230,0.10), rgba(250,122,57,0.05));\n  backdrop-filter: blur(10px);\n  box-shadow: 0 8px 32px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.08);\n  will-change: transform;\n}\n.float-shape.s1 { width: 110px; height: 110px; top: 18%; left: 8%;  animation: floatA 14s ease-in-out infinite alternate; }\n.float-shape.s2 { width:  82px; height:  82px; top: 62%; left: 14%; animation: floatB 18s ease-in-out infinite alternate; border-radius: 50%; }\n.float-shape.s3 { width:  60px; height:  60px; top: 22%; right: 36%; animation: floatC 12s ease-in-out infinite alternate; }\n.float-shape.s4 { width:  95px; height:  95px; bottom: 14%; right: 18%; animation: floatA 16s ease-in-out infinite alternate-reverse; }\n@keyframes floatA {\n  0%   { transform: translate3d(0,0,0) rotate(8deg); }\n  100% { transform: translate3d(-18px,-30px,0) rotate(-4deg); }\n}\n@keyframes floatB {\n  0%   { transform: translate3d(0,0,0) rotate(0deg); }\n  100% { transform: translate3d(22px, 18px, 0) rotate(12deg); }\n}\n@keyframes floatC {\n  0%   { transform: translate3d(0,0,0) rotate(-6deg); }\n  100% { transform: translate3d(10px,-20px,0) rotate(18deg); }\n}\n\n\/* ----- 3D tilt-on-hover for cards (used on .glass.tilt and service-deep) ----- *\/\n.tilt {\n  transform-style: preserve-3d;\n  transition: transform 220ms var(--ease-out), box-shadow 220ms var(--ease-out);\n  will-change: transform;\n}\n.tilt::before {\n  content: '';\n  position: absolute; inset: 0;\n  border-radius: inherit;\n  background: radial-gradient(\n    600px circle at var(--spot-x, 50%) var(--spot-y, 50%),\n    rgba(255,255,255,0.07),\n    transparent 40%\n  );\n  opacity: 0;\n  transition: opacity 200ms var(--ease-out);\n  pointer-events: none;\n}\n.tilt:hover::before { opacity: 1; }\n\n\/* ----- Spotlight cursor effect (used on .glass.spotlight) ----- *\/\n.spotlight {\n  position: relative;\n  isolation: isolate;\n}\n.spotlight::after {\n  content: '';\n  position: absolute; inset: 0;\n  border-radius: inherit;\n  background: radial-gradient(\n    260px circle at var(--spot-x, 50%) var(--spot-y, 50%),\n    rgba(104,85,230,0.18),\n    transparent 55%\n  );\n  opacity: 0;\n  transition: opacity 220ms var(--ease-out);\n  pointer-events: none;\n  z-index: -1;\n}\n.spotlight:hover::after { opacity: 1; }\n\n\/* ----- Inline 3D wireframe orb (smaller, used in section accents) ----- *\/\n.inline-orb {\n  position: relative;\n  width: clamp(160px, 22vw, 240px);\n  height: clamp(160px, 22vw, 240px);\n  perspective: 700px;\n  margin: 0 auto;\n}\n.inline-orb .ring {\n  position: absolute; inset: 0;\n  border-radius: 50%;\n  border: 1px solid rgba(255,255,255,0.16);\n  animation: ringSpinA 18s linear infinite;\n}\n.inline-orb .ring + .ring {\n  inset: 18%; border-color: rgba(250,122,57,0.28);\n  animation: ringSpinB 14s linear infinite;\n}\n.inline-orb .ring + .ring + .ring {\n  inset: 36%; border-color: rgba(104,85,230,0.45);\n  animation: ringSpinC 10s linear infinite;\n}\n\n\/* ----- Service cards with 3D layered \"stamp\" treatment ----- *\/\n.service-row {\n  transform-style: preserve-3d;\n  perspective: 800px;\n}\n.service-row::after {\n  content: ''; position: absolute;\n  inset: 0;\n  background: radial-gradient(\n    400px circle at var(--spot-x, 50%) var(--spot-y, 50%),\n    rgba(104,85,230,0.10),\n    transparent 50%\n  );\n  opacity: 0; transition: opacity 240ms var(--ease-out);\n  pointer-events: none;\n}\n.service-row:hover::after { opacity: 1; }\n\n\/* ----- 3D conic accent ring (use on small icon wraps) ----- *\/\n.conic-ring {\n  position: relative;\n  isolation: isolate;\n}\n.conic-ring::before {\n  content: ''; position: absolute; inset: -1px;\n  border-radius: inherit;\n  background: conic-gradient(\n    from 0deg,\n    rgba(104,85,230,0.6),\n    rgba(250,122,57,0.6),\n    rgba(104,85,230,0.6)\n  );\n  z-index: -1;\n  filter: blur(0.5px);\n  animation: conicSpin 6s linear infinite;\n  opacity: 0.6;\n}\n@keyframes conicSpin { to { transform: rotate(360deg); } }\n\n\/* ----- Marquee item ring hover ----- *\/\n.marquee-item { transition: color 160ms var(--ease-out), border-color 160ms var(--ease-out), transform 200ms var(--ease-out); }\n.marquee-item:hover { color: var(--text); border-color: var(--accent-violet); transform: translateY(-2px); }\n\n\/* ----- Reduce motion: kill all 3D animation ----- *\/\n@media (prefers-reduced-motion: reduce) {\n  .grid-mesh, .float-shape, .hero-3d .ring, .hero-3d .core,\n  .inline-orb .ring, .conic-ring::before, .orb { animation: none !important; }\n}\n\n\/* ----- Mobile: simplify ----- *\/\n@media (max-width: 900px) {\n  .hero-3d { display: none; }\n  .float-shape { display: none; }\n  .grid-mesh { background-size: 48px 48px; opacity: 0.35; }\n}\n\/* (legacy .mobile-menu .btn rule removed \u2014 superseded above) *\/\n\n\/* ==========================================================================\n   R30 \u2014 TEAM \"POSTER FRAME\" CARDS (per reference image, About page)\n   Row of tall vertical violet-gradient panels with portrait, name, role\n   ========================================================================== *\/\n.team-frame-row {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: clamp(12px, 1.4vw, 22px);\n  margin-top: var(--s-6);\n  align-items: stretch;\n}\n.team-frame {\n  position: relative;\n  border-radius: 22px;\n  overflow: hidden;\n  isolation: isolate;\n  min-height: 380px;\n  display: flex;\n  flex-direction: column;\n  justify-content: flex-end;\n  padding: 22px 18px;\n  background:\n    linear-gradient(180deg,\n      rgba(132, 110, 240, 0.0) 0%,\n      rgba(104, 85, 230, 0.18) 35%,\n      rgba(104, 85, 230, 0.55) 70%,\n      rgba(46, 30, 130, 0.92) 100%),\n    radial-gradient(ellipse at 50% 25%,\n      rgba(166, 150, 255, 0.35) 0%,\n      rgba(104, 85, 230, 0.12) 45%,\n      rgba(20, 12, 50, 0.95) 100%);\n  border: 1px solid rgba(166, 150, 255, 0.18);\n  box-shadow:\n    0 12px 40px rgba(0, 0, 0, 0.5),\n    inset 0 1px 0 rgba(255, 255, 255, 0.12);\n  transform: translateY(0);\n  transition: transform 360ms var(--ease), box-shadow 360ms var(--ease);\n}\n.team-frame:nth-child(odd) { transform: translateY(-10px); }\n.team-frame { z-index: 1; }\n.team-frame:hover,\n.team-frame:focus-within {\n  \/* Pop forward with a slight tilt \u2014 like the card has been plucked out *\/\n  transform: translateY(-22px) rotate(3deg) scale(1.02);\n  z-index: 10;\n  box-shadow:\n    0 30px 70px rgba(104, 85, 230, 0.45),\n    0 0 0 1px rgba(196, 184, 255, 0.55),\n    0 0 36px rgba(140, 118, 255, 0.30),\n    inset 0 1px 0 rgba(255, 255, 255, 0.20);\n}\n\/* Odd cards already sit higher, so lift further and tilt the opposite way\n   for a pleasing alternating rhythm across the row *\/\n.team-frame:nth-child(odd):hover,\n.team-frame:nth-child(odd):focus-within {\n  transform: translateY(-32px) rotate(-3deg) scale(1.02);\n}\n\n.team-frame .portrait-wrap {\n  position: absolute;\n  inset: 18px 18px 110px 18px;\n  display: grid;\n  place-items: center;\n  pointer-events: none;\n}\n.team-frame .portrait {\n  width: 100%;\n  height: 100%;\n  border-radius: 12px;\n  position: relative;\n  overflow: hidden;\n  background:\n    radial-gradient(ellipse at 50% 35%, rgba(255, 255, 255, 0.18) 0%, transparent 60%),\n    linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(0, 0, 0, 0.4));\n  border: 1px solid rgba(255, 255, 255, 0.08);\n  display: grid;\n  place-items: center;\n}\n\/* Portrait image overlays the gradient fallback and crops cleanly *\/\n.team-frame .portrait-img {\n  position: absolute; inset: 0;\n  width: 100%; height: 100%;\n  object-fit: cover;\n  object-position: center top;\n  border-radius: inherit;\n  z-index: 2;\n  display: block;\n}\n\/* Hide initials when the image successfully loads *\/\n.team-frame .portrait-img + .initials { display: none; }\n\n.team-frame .initials {\n  font-family: var(--font-display);\n  font-weight: 600;\n  font-size: clamp(2.4rem, 4.4vw, 3.6rem);\n  letter-spacing: -0.02em;\n  color: rgba(255, 255, 255, 0.92);\n  text-shadow: 0 4px 24px rgba(104, 85, 230, 0.55);\n}\n.team-frame .portrait::after {\n  content: '';\n  position: absolute; inset: auto 0 0 0; height: 55%;\n  background: linear-gradient(180deg, transparent, rgba(20, 12, 50, 0.85));\n  pointer-events: none;\n}\n.team-frame .name-block {\n  position: relative;\n  z-index: 2;\n  text-align: center;\n}\n.team-frame .name-block .name {\n  font-family: var(--font-display);\n  font-weight: 700;\n  font-size: clamp(1.05rem, 1.5vw, 1.2rem);\n  color: #ffffff;\n  letter-spacing: -0.01em;\n  margin-bottom: 4px;\n  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.45);\n}\n.team-frame .name-block .role {\n  font-family: var(--font-body);\n  font-size: 0.82rem;\n  color: rgba(255, 255, 255, 0.78);\n  font-weight: 400;\n  letter-spacing: 0.02em;\n}\n.team-frame .name-block .bio {\n  font-size: 0.76rem;\n  color: rgba(255, 255, 255, 0.6);\n  margin-top: 8px;\n  line-height: 1.45;\n  max-width: 26ch;\n  margin-inline: auto;\n}\n.team-frame .frame-glyph {\n  position: absolute;\n  top: 14px; right: 14px;\n  width: 22px; height: 22px;\n  border-radius: 4px;\n  border: 1px solid rgba(255, 255, 255, 0.2);\n  display: grid; place-items: center;\n  color: rgba(255, 255, 255, 0.45);\n  font-size: 10px;\n  letter-spacing: 0.05em;\n  font-family: var(--font-display);\n  font-weight: 500;\n  background: rgba(0, 0, 0, 0.2);\n  backdrop-filter: blur(4px);\n}\n.team-frame::before {\n  content: '';\n  position: absolute; inset: 0;\n  background: radial-gradient(\n    300px circle at var(--spot-x, 50%) var(--spot-y, 30%),\n    rgba(255, 255, 255, 0.10),\n    transparent 55%\n  );\n  opacity: 0;\n  transition: opacity 320ms var(--ease);\n  pointer-events: none;\n  z-index: 1;\n}\n.team-frame:hover::before { opacity: 1; }\n.team-frame .name-band {\n  position: relative;\n  z-index: 2;\n  padding-top: 12px;\n  border-top: 1px solid rgba(255, 255, 255, 0.10);\n}\n.team-section-meta {\n  display: flex;\n  align-items: baseline;\n  justify-content: space-between;\n  gap: var(--s-4);\n  margin-top: var(--s-3);\n  margin-bottom: var(--s-5);\n  font-size: 0.78rem;\n  color: var(--text-faint);\n  font-family: var(--font-display);\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n}\n\n\/* Floating social-icon panel \u2014 hidden by default, slides in from inside\n   the left edge of the card when the card is hovered or focused. *\/\n.team-socials {\n  position: absolute;\n  left: 12px;\n  top: 50%;\n  display: flex;\n  flex-direction: column;\n  gap: 6px;\n  padding: 8px 6px;\n  border-radius: 14px;\n  background: rgba(10, 6, 26, 0.78);\n  backdrop-filter: blur(14px) saturate(160%);\n  -webkit-backdrop-filter: blur(14px) saturate(160%);\n  border: 1px solid rgba(196, 184, 255, 0.32);\n  box-shadow:\n    0 12px 28px rgba(0, 0, 0, 0.45),\n    0 0 22px rgba(140, 118, 255, 0.28),\n    inset 0 1px 0 rgba(255, 255, 255, 0.08);\n  opacity: 0;\n  transform: translateY(-50%) translateX(-18px) scale(0.9);\n  transform-origin: left center;\n  transition:\n    opacity 280ms var(--ease),\n    transform 420ms var(--ease);\n  pointer-events: none;\n  z-index: 4;\n}\n.team-frame:hover .team-socials,\n.team-frame:focus-within .team-socials {\n  opacity: 1;\n  transform: translateY(-50%) translateX(0) scale(1);\n  pointer-events: auto;\n}\n.team-socials a {\n  width: 32px;\n  height: 32px;\n  display: grid;\n  place-items: center;\n  border-radius: 9px;\n  color: rgba(240, 239, 254, 0.82);\n  background: rgba(255, 255, 255, 0.02);\n  transition:\n    color 200ms var(--ease),\n    background 200ms var(--ease),\n    transform 220ms var(--ease);\n}\n.team-socials a:hover,\n.team-socials a:focus-visible {\n  color: #fff;\n  background: rgba(166, 150, 255, 0.22);\n  transform: scale(1.08);\n  outline: none;\n}\n.team-socials a svg {\n  width: 15px;\n  height: 15px;\n}\n\n\/* Staggered reveal \u2014 each icon glides in just after the one above it *\/\n.team-frame:hover .team-socials a,\n.team-frame:focus-within .team-socials a {\n  animation: teamSocialFadeIn 380ms var(--ease) both;\n}\n.team-frame:hover .team-socials a:nth-child(1),\n.team-frame:focus-within .team-socials a:nth-child(1) { animation-delay: 80ms; }\n.team-frame:hover .team-socials a:nth-child(2),\n.team-frame:focus-within .team-socials a:nth-child(2) { animation-delay: 160ms; }\n.team-frame:hover .team-socials a:nth-child(3),\n.team-frame:focus-within .team-socials a:nth-child(3) { animation-delay: 240ms; }\n@keyframes teamSocialFadeIn {\n  from { opacity: 0; transform: translateX(-10px); }\n  to   { opacity: 1; transform: translateX(0); }\n}\n\n@media (max-width: 900px) {\n  .team-frame-row { grid-template-columns: repeat(2, 1fr); }\n  .team-frame { min-height: 420px; }\n  .team-frame:nth-child(odd) { transform: none; }\n  .team-frame:nth-child(odd):hover { transform: translateY(-14px); }\n}\n@media (max-width: 560px) {\n  .team-frame-row {\n    grid-template-columns: 1fr;\n    max-width: 380px;\n    margin-left: auto;\n    margin-right: auto;\n    gap: 18px;\n  }\n  .team-frame {\n    min-height: 480px;\n    aspect-ratio: 4 \/ 5;\n  }\n  .team-frame .portrait-img { object-position: center 22%; }\n}\n\n\/* ----- Reduced motion ----- *\/\n@media (prefers-reduced-motion: reduce) {\n  *, *::before, *::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n  .orb { animation: none !important; }\n  .scroll-indicator { animation: none; }\n  .marquee-track { animation: none; }\n  .bg-particles { display: none; }\n}\n@media (prefers-reduced-transparency: reduce) {\n  .glass { backdrop-filter: none; background: var(--bg-elevated); }\n  .site-header.scrolled { backdrop-filter: none; background: rgba(6,6,8,0.95); }\n}\n\n\/* ==========================================================================\n   R31 \u2014 3D ROTATING CUBES (hero accent, violet + orange surfaces)\n   ========================================================================== *\/\n.cube-field {\n  position: absolute; inset: 0;\n  pointer-events: none;\n  z-index: 0;\n  overflow: hidden;\n  perspective: 1200px;\n  perspective-origin: 50% 50%;\n}\n.cube-3d {\n  position: absolute;\n  width: var(--cube-size, 80px);\n  height: var(--cube-size, 80px);\n  transform-style: preserve-3d;\n  animation: cubeFloat 14s ease-in-out infinite alternate;\n  will-change: transform;\n  filter: drop-shadow(0 18px 40px rgba(0,0,0,0.45))\n          drop-shadow(0 0 24px rgba(104,85,230,0.25));\n}\n.cube-3d .face {\n  position: absolute; inset: 0;\n  border: 1px solid rgba(255,255,255,0.10);\n  background: linear-gradient(135deg, rgba(104,85,230,0.55), rgba(20,12,50,0.85));\n  box-shadow: inset 0 0 30px rgba(255,255,255,0.04),\n              inset 0 1px 0 rgba(255,255,255,0.08);\n}\n.cube-3d .face.f-front  { transform: translateZ(calc(var(--cube-size, 80px) \/ 2)); }\n.cube-3d .face.f-back   { transform: rotateY(180deg) translateZ(calc(var(--cube-size, 80px) \/ 2)); }\n.cube-3d .face.f-right  { transform: rotateY(90deg)  translateZ(calc(var(--cube-size, 80px) \/ 2));\n  background: linear-gradient(135deg, rgba(250,122,57,0.55), rgba(60,18,8,0.85)); }\n.cube-3d .face.f-left   { transform: rotateY(-90deg) translateZ(calc(var(--cube-size, 80px) \/ 2));\n  background: linear-gradient(135deg, rgba(104,85,230,0.40), rgba(15,8,40,0.92)); }\n.cube-3d .face.f-top    { transform: rotateX(90deg)  translateZ(calc(var(--cube-size, 80px) \/ 2));\n  background: linear-gradient(135deg, rgba(166,150,255,0.55), rgba(104,85,230,0.45)); }\n.cube-3d .face.f-bottom { transform: rotateX(-90deg) translateZ(calc(var(--cube-size, 80px) \/ 2));\n  background: linear-gradient(135deg, rgba(20,12,40,0.95), rgba(250,122,57,0.30)); }\n\n.cube-3d .cube-spin {\n  position: absolute; inset: 0;\n  transform-style: preserve-3d;\n  animation: cubeSpinA 22s linear infinite;\n}\n.cube-3d.spin-b .cube-spin { animation: cubeSpinB 26s linear infinite; }\n.cube-3d.spin-c .cube-spin { animation: cubeSpinC 30s linear infinite; }\n.cube-3d.spin-d .cube-spin { animation: cubeSpinD 18s linear infinite; }\n\n@keyframes cubeSpinA {\n  0%   { transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg); }\n  100% { transform: rotateX(360deg) rotateY(360deg) rotateZ(0deg); }\n}\n@keyframes cubeSpinB {\n  0%   { transform: rotateX(-15deg) rotateY(0deg); }\n  100% { transform: rotateX(-15deg) rotateY(360deg); }\n}\n@keyframes cubeSpinC {\n  0%   { transform: rotateX(30deg) rotateY(0deg) rotateZ(0deg); }\n  100% { transform: rotateX(30deg) rotateY(-360deg) rotateZ(360deg); }\n}\n@keyframes cubeSpinD {\n  0%   { transform: rotateY(45deg) rotateX(0deg); }\n  100% { transform: rotateY(45deg) rotateX(360deg); }\n}\n@keyframes cubeFloat {\n  0%   { transform: translate3d(0,0,0); }\n  100% { transform: translate3d(var(--cf-x, 14px), var(--cf-y, -18px), 0); }\n}\n\n\/* Home-page-only drop-in entrance \u2014 cubes fall from above the viewport,\n   settle into their position with a soft overshoot, then the perpetual\n   float animation takes over. Staggered per-cube for a cascading effect. *\/\n@keyframes cubeDrop {\n  0%   { transform: translate3d(0, -110vh, 0); opacity: 0; }\n  35%  { opacity: 0.85; }\n  100% { transform: translate3d(0, 0, 0);      opacity: 1; }\n}\n\n.hero .cube-3d {\n  animation-name:            cubeDrop,                              cubeFloat;\n  animation-duration:        1.6s,                                  14s;\n  animation-timing-function: cubic-bezier(0.34, 1.18, 0.64, 1),     ease-in-out;\n  animation-delay:           0s,                                    1.6s;\n  animation-iteration-count: 1,                                     infinite;\n  animation-direction:       normal,                                alternate;\n  animation-fill-mode:       backwards,                             none;\n}\n\/* Stagger the entrance + preserve each cube's original float duration *\/\n.hero .cube-3d.c1 { animation-duration: 1.6s, 12s; animation-delay: 0.05s, 1.65s; }\n.hero .cube-3d.c2 { animation-duration: 1.6s, 16s; animation-delay: 0.20s, 1.80s; }\n.hero .cube-3d.c3 { animation-duration: 1.6s, 14s; animation-delay: 0.35s, 1.95s; }\n.hero .cube-3d.c4 { animation-duration: 1.6s, 18s; animation-delay: 0.50s, 2.10s; }\n.hero .cube-3d.c5 { animation-duration: 1.6s, 13s; animation-delay: 0.65s, 2.25s; }\n.hero .cube-3d.c6 { animation-duration: 1.6s, 17s; animation-delay: 0.80s, 2.40s; }\n\n.cube-3d.c1 { --cube-size:  96px; top: 12%; left: 4%;  --cf-x: -10px; --cf-y: -22px; animation-duration: 12s; }\n.cube-3d.c2 { --cube-size:  64px; top: 5%;  left: 26%; --cf-x:  12px; --cf-y: -16px; animation-duration: 16s; }\n.cube-3d.c3 { --cube-size: 120px; top: 18%; right: 6%;  --cf-x: -16px; --cf-y:  18px; animation-duration: 14s; }\n.cube-3d.c4 { --cube-size:  76px; bottom: 14%; right: 22%; --cf-x: 18px; --cf-y: -14px; animation-duration: 18s; }\n.cube-3d.c5 { --cube-size:  56px; bottom: 22%; left: 14%; --cf-x: -14px; --cf-y:  20px; animation-duration: 13s; }\n.cube-3d.c6 { --cube-size:  88px; top: 60%;   left: 48%; --cf-x:  20px; --cf-y: -22px; animation-duration: 17s; opacity: 0.7; }\n\n\/* ==========================================================================\n   R31b \u2014 CTA banner extras (button pulse only; layout lives in base block)\n   ========================================================================== *\/\n.btn-orange.pulse {\n  position: relative;\n  animation: btnPulse 2.6s ease-in-out infinite;\n}\n@keyframes btnPulse {\n  0%, 100% { box-shadow: var(--glow-orange-sm); }\n  50%      { box-shadow: 0 0 0 6px rgba(250,122,57,0.18), var(--glow-orange); }\n}\n\n\/* ==========================================================================\n   R31 \u2014 HALO ARC CARDS \u2014 dramatic U-shaped violet halo wrapping heading + cards\n   ========================================================================== *\/\n.halo-section {\n  position: relative;\n  overflow: hidden;\n  padding-top: clamp(48px, 6vw, 80px) !important;\n  padding-bottom: clamp(48px, 6vw, 88px) !important;\n}\n\n\/* Soft horizon-glow \u2014 a huge ellipse positioned so only its top arc sits\n   in the gap between the subline and the cards. There is no fill, no\n   border, no defined body \u2014 only a soft radial glow that builds toward\n   the rim and fades back to transparent on both sides, so the horizon\n   blends seamlessly into the dark background with no visible edge. *\/\n.halo-arc {\n  position: absolute;\n  top: clamp(280px, 40%, 420px);   \/* lands between subline and cards *\/\n  left: 50%;\n  transform: translateX(-50%);\n  width: min(2400px, 220vw);\n  height: clamp(820px, 82vw, 1120px);\n  border-radius: 50%;\n  pointer-events: none;\n  z-index: 0;\n  background: transparent;\n}\n\/* The arc itself \u2014 a thick, blurred ring drawn with a radial gradient.\n   Wide, gentle stops on both sides of the peak so the violet bleeds out\n   to nothing without any perceptible edge. *\/\n.halo-arc::before {\n  content: '';\n  position: absolute; inset: 0;\n  border-radius: 50%;\n  background: radial-gradient(\n    ellipse at 50% 50%,\n    transparent 0%,\n    transparent 55%,\n    rgba(166,150,255,0.06) 57.5%,\n    rgba(140,118,255,0.14) 59.8%,\n    rgba(140,118,255,0.18) 60.5%,\n    rgba(140,118,255,0.14) 61.2%,\n    rgba(104,85,230,0.08) 64%,\n    rgba(104,85,230,0.03) 70%,\n    transparent 82%\n  );\n  filter: blur(6px);\n}\n\/* A faint extra lift at the very peak of the arc \u2014 feels like atmospheric\n   haze rather than a discrete element *\/\n.halo-arc::after {\n  content: '';\n  position: absolute;\n  top: -2%;\n  left: 22%; right: 22%;\n  height: 10%;\n  border-radius: 50%;\n  background: radial-gradient(\n    ellipse at 50% 100%,\n    rgba(196,184,255,0.18) 0%,\n    rgba(140,118,255,0.06) 40%,\n    transparent 75%\n  );\n  filter: blur(10px);\n  pointer-events: none;\n}\n\/* Stars not needed for the seamless horizon look *\/\n.halo-arc-stars { display: none; }\n\n\/* Centred eyebrow \/ pill above the heading *\/\n.halo-eyebrow-row {\n  position: relative; z-index: 1;\n  display: flex; justify-content: center; align-items: center;\n  gap: var(--s-3);\n  margin-bottom: var(--s-4);\n}\n.halo-pill {\n  display: inline-flex; align-items: center; gap: 8px;\n  padding: 7px 14px;\n  border: 1px solid rgba(166,150,255,0.28);\n  border-radius: var(--radius-pill);\n  background: rgba(104,85,230,0.10);\n  color: rgba(240,239,254,0.85);\n  font-family: var(--font-display);\n  font-size: 0.78rem;\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n  backdrop-filter: blur(8px);\n  -webkit-backdrop-filter: blur(8px);\n  box-shadow: inset 0 1px 0 rgba(255,255,255,0.08), 0 0 20px rgba(104,85,230,0.18);\n}\n.halo-pill .dot {\n  width: 6px; height: 6px; border-radius: 50%;\n  background: var(--accent-violet);\n  box-shadow: 0 0 10px var(--accent-violet);\n}\n\n\/* Big centred section headline *\/\n.halo-headline {\n  position: relative; z-index: 1;\n  text-align: center;\n  max-width: 22ch;\n  margin: 0 auto;\n  font-size: clamp(2rem, 4.6vw, 3.6rem);\n  line-height: 1.05;\n}\n.halo-subline {\n  position: relative; z-index: 1;\n  text-align: center;\n  max-width: 58ch;\n  margin: var(--s-4) auto var(--s-6);\n  color: var(--text-muted);\n}\n\n\/* Card row *\/\n.halo-cards {\n  position: relative; z-index: 1;\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: clamp(16px, 1.6vw, 26px);\n  margin-top: clamp(56px, 7vw, 96px);\n}\n@media (max-width: 1100px) { .halo-cards { grid-template-columns: repeat(2, 1fr); gap: 22px; } }\n@media (max-width: 600px)  { .halo-cards { grid-template-columns: 1fr; } }\n\n\/* Glassy dark card with a soft violet edge \u2014 sits inside the halo bowl *\/\n.halo-card {\n  position: relative;\n  border-radius: 28px;\n  padding: 36px 24px 32px;\n  min-height: 280px;\n  display: flex; flex-direction: column; align-items: center; text-align: center;\n  gap: 16px;\n  background:\n    linear-gradient(180deg, rgba(28,20,68,0.55) 0%, rgba(14,10,38,0.85) 100%);\n  backdrop-filter: blur(16px) saturate(150%);\n  -webkit-backdrop-filter: blur(16px) saturate(150%);\n  border: 1px solid rgba(166,150,255,0.20);\n  box-shadow:\n    0 20px 50px rgba(0,0,0,0.55),\n    0 0 40px rgba(104,85,230,0.18),\n    inset 0 1px 0 rgba(255,255,255,0.08);\n  isolation: isolate;\n  overflow: hidden;\n  transition: transform 360ms var(--ease), box-shadow 360ms var(--ease), border-color 360ms var(--ease);\n}\n.halo-card::before {\n  content: '';\n  position: absolute; inset: -1px;\n  border-radius: inherit;\n  padding: 1px;\n  background: linear-gradient(160deg, rgba(196,184,255,0.55), rgba(104,85,230,0.0) 45%, rgba(166,150,255,0.30));\n  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);\n  -webkit-mask-composite: xor; mask-composite: exclude;\n  pointer-events: none;\n}\n.halo-card::after {\n  \/* A faint internal glow behind the icon *\/\n  content: '';\n  position: absolute;\n  top: 30px; left: 50%;\n  transform: translateX(-50%);\n  width: 140px; height: 140px;\n  border-radius: 50%;\n  background: radial-gradient(circle, rgba(140,118,255,0.45) 0%, rgba(104,85,230,0.18) 35%, transparent 70%);\n  filter: blur(8px);\n  z-index: 0;\n  pointer-events: none;\n}\n.halo-card:hover {\n  transform: translateY(-6px);\n  border-color: rgba(196,184,255,0.45);\n  box-shadow:\n    0 28px 64px rgba(0,0,0,0.6),\n    0 0 56px rgba(104,85,230,0.35),\n    inset 0 1px 0 rgba(255,255,255,0.12);\n}\n\n\/* The 3D-pebble icon \u2014 violet gradient pill with soft inner highlights *\/\n.halo-icon {\n  position: relative; z-index: 1;\n  width: 92px; height: 92px;\n  border-radius: 24px;\n  display: grid; place-items: center;\n  color: #fff;\n  background:\n    radial-gradient(ellipse at 30% 22%, rgba(255,255,255,0.55) 0%, rgba(255,255,255,0) 38%),\n    linear-gradient(155deg, #9C8AFF 0%, #6855E6 48%, #2E2370 100%);\n  border: 1px solid rgba(255,255,255,0.30);\n  box-shadow:\n    inset 0 2px 0 rgba(255,255,255,0.45),\n    inset 0 -14px 20px rgba(0,0,0,0.35),\n    0 16px 30px rgba(104,85,230,0.45),\n    0 0 36px rgba(104,85,230,0.35);\n  transform: rotate(-6deg);\n  margin-bottom: 6px;\n}\n.halo-icon svg {\n  width: 46px; height: 46px;\n  transform: rotate(6deg); \/* counter-rotate so the icon itself is upright *\/\n  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.35));\n}\n\n.halo-card h3 {\n  position: relative; z-index: 1;\n  font-family: var(--font-display);\n  font-weight: 700;\n  font-size: clamp(1.15rem, 1.7vw, 1.4rem);\n  letter-spacing: -0.015em;\n  color: #fff;\n  margin: 4px 0 0;\n}\n.halo-card p {\n  position: relative; z-index: 1;\n  color: rgba(240,239,254,0.62);\n  font-size: 0.94rem;\n  line-height: 1.55;\n  max-width: 32ch;\n}\n.halo-card .halo-num {\n  position: absolute;\n  top: 14px; right: 18px;\n  font-family: var(--font-display);\n  color: rgba(255,255,255,0.08);\n  font-size: 2rem;\n  font-weight: 700;\n  letter-spacing: -0.02em;\n  z-index: 0;\n}\n\n\/* Tablet + mobile horizon sizing \u2014 keep the rim arc sitting in the gap\n   between the subline and the cards on smaller screens too *\/\n@media (max-width: 900px) {\n  .halo-arc {\n    width: min(1800px, 240vw);\n    height: clamp(680px, 110vw, 940px);\n    top: clamp(260px, 40%, 380px);\n  }\n  .halo-card { min-height: 260px; padding: 32px 22px 28px; }\n  .halo-icon { width: 80px; height: 80px; border-radius: 22px; }\n  .halo-icon svg { width: 40px; height: 40px; }\n}\n@media (max-width: 600px) {\n  .halo-arc {\n    width: 280vw;\n    height: 170vw;\n    top: clamp(240px, 38%, 340px);\n  }\n}\n\n\/* Mobile + reduced motion fallback for cubes *\/\n@media (max-width: 900px) {\n  .cube-3d.c2, .cube-3d.c5, .cube-3d.c6 { display: none; }\n  .cube-3d { --cube-size: 60px; }\n  .cube-3d.c3 { --cube-size: 80px; }\n}\n@media (prefers-reduced-motion: reduce) {\n  .cube-3d, .cube-3d .cube-spin,\n  .btn-orange.pulse {\n    animation: none !important;\n  }\n}\n\n\/* ==========================================================================\n   R32 \u2014 UNDERGLOW (orange-left + violet-right glow leak from bottom)\n   Per reference image_18 \u2014 soft glowing pads bleeding from beneath an element\n   ========================================================================== *\/\n.underglow {\n  position: relative;\n  isolation: isolate;\n}\n\/* Orange bottom-left glow *\/\n.underglow::before {\n  content: '';\n  position: absolute;\n  z-index: -1;\n  left: -8%;\n  bottom: -10%;\n  width: 55%;\n  height: 65%;\n  background: radial-gradient(\n    ellipse at 30% 70%,\n    rgba(250, 122, 57, 0.55) 0%,\n    rgba(250, 122, 57, 0.30) 25%,\n    rgba(250, 122, 57, 0.08) 50%,\n    transparent 75%\n  );\n  filter: blur(60px);\n  pointer-events: none;\n  opacity: 0.9;\n  animation: underglowPulseA 7s ease-in-out infinite alternate;\n}\n\/* Violet bottom-right glow *\/\n.underglow::after {\n  content: '';\n  position: absolute;\n  z-index: -1;\n  right: -8%;\n  bottom: -10%;\n  width: 55%;\n  height: 65%;\n  background: radial-gradient(\n    ellipse at 70% 70%,\n    rgba(104, 85, 230, 0.55) 0%,\n    rgba(104, 85, 230, 0.30) 25%,\n    rgba(104, 85, 230, 0.08) 50%,\n    transparent 75%\n  );\n  filter: blur(60px);\n  pointer-events: none;\n  opacity: 0.9;\n  animation: underglowPulseB 9s ease-in-out infinite alternate;\n}\n@keyframes underglowPulseA {\n  0%   { opacity: 0.7; transform: translate3d(0, 0, 0) scale(1); }\n  100% { opacity: 1.0; transform: translate3d(8px, -6px, 0) scale(1.05); }\n}\n@keyframes underglowPulseB {\n  0%   { opacity: 0.7; transform: translate3d(0, 0, 0) scale(1); }\n  100% { opacity: 1.0; transform: translate3d(-8px, -6px, 0) scale(1.05); }\n}\n\n\/* Variant \u2014 intra-card underglow (smaller, contained per card) *\/\n.underglow-card {\n  position: relative;\n  isolation: isolate;\n}\n.underglow-card::before,\n.underglow-card::after {\n  content: '';\n  position: absolute;\n  z-index: -1;\n  bottom: -20%;\n  width: 60%;\n  height: 80%;\n  filter: blur(48px);\n  pointer-events: none;\n  opacity: 0.85;\n}\n.underglow-card::before {\n  left: -10%;\n  background: radial-gradient(\n    ellipse at 30% 70%,\n    rgba(250, 122, 57, 0.60) 0%,\n    rgba(250, 122, 57, 0.25) 30%,\n    transparent 70%\n  );\n  animation: underglowPulseA 8s ease-in-out infinite alternate;\n}\n.underglow-card::after {\n  right: -10%;\n  background: radial-gradient(\n    ellipse at 70% 70%,\n    rgba(104, 85, 230, 0.60) 0%,\n    rgba(104, 85, 230, 0.25) 30%,\n    transparent 70%\n  );\n  animation: underglowPulseB 10s ease-in-out infinite alternate;\n}\n\n\/* Optional swap \u2014 violet-left + orange-right (alternating cards) *\/\n.underglow-card.flip::before {\n  background: radial-gradient(\n    ellipse at 30% 70%,\n    rgba(104, 85, 230, 0.60) 0%,\n    rgba(104, 85, 230, 0.25) 30%,\n    transparent 70%\n  );\n}\n.underglow-card.flip::after {\n  background: radial-gradient(\n    ellipse at 70% 70%,\n    rgba(250, 122, 57, 0.60) 0%,\n    rgba(250, 122, 57, 0.25) 30%,\n    transparent 70%\n  );\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .underglow::before, .underglow::after,\n  .underglow-card::before, .underglow-card::after {\n    animation: none !important;\n  }\n}\n@media (max-width: 700px) {\n  .underglow::before, .underglow::after,\n  .underglow-card::before, .underglow-card::after {\n    filter: blur(36px);\n    opacity: 0.7;\n  }\n}\n\n\/* ==========================================================================\n   R33 \u2014 NEON MINI-STAT (per About reference image_1, glowing gradient border)\n   ========================================================================== *\/\n.mini-stat.neon {\n  position: relative;\n  border: none;\n  background: rgba(14, 10, 30, 0.85);\n  padding: 18px 22px;\n  border-radius: 16px;\n  isolation: isolate;\n  overflow: hidden;\n}\n.mini-stat.neon::before {\n  content: '';\n  position: absolute;\n  inset: 0;\n  border-radius: inherit;\n  padding: 1.5px;\n  background: linear-gradient(135deg,\n    rgba(104, 85, 230, 0.95) 0%,\n    rgba(166, 150, 255, 0.55) 35%,\n    rgba(250, 122, 57, 0.95) 100%);\n  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n  -webkit-mask-composite: xor;\n  mask-composite: exclude;\n  pointer-events: none;\n  z-index: 1;\n}\n.mini-stat.neon::after {\n  content: '';\n  position: absolute;\n  inset: -2px;\n  border-radius: 18px;\n  background: linear-gradient(135deg,\n    rgba(104, 85, 230, 0.55) 0%,\n    transparent 50%,\n    rgba(250, 122, 57, 0.55) 100%);\n  filter: blur(14px);\n  opacity: 0.55;\n  z-index: -1;\n  pointer-events: none;\n  transition: opacity 320ms var(--ease);\n}\n.mini-stat.neon:hover::after { opacity: 0.85; }\n.mini-stat.neon .v {\n  font-family: var(--font-display);\n  font-weight: 600;\n  font-size: 1.45rem;\n  letter-spacing: -0.015em;\n  background: linear-gradient(135deg, #fff 40%, var(--accent-orange) 100%);\n  -webkit-background-clip: text; background-clip: text; color: transparent;\n}\n.mini-stat.neon .l {\n  color: rgba(255,255,255,0.75);\n  font-size: 0.92rem;\n  letter-spacing: 0.01em;\n}\n\n\/* ==========================================================================\n   R33 \u2014 CONTACT INFO CARDS (icon + glow upgrade)\n   ========================================================================== *\/\n.info-item {\n  position: relative;\n  display: grid;\n  grid-template-columns: 48px 1fr;\n  gap: 16px;\n  align-items: center;\n  isolation: isolate;\n  overflow: hidden;\n  border: 1px solid rgba(166, 150, 255, 0.22);\n  background:\n    linear-gradient(135deg, rgba(104, 85, 230, 0.10), rgba(14, 10, 30, 0.85)),\n    rgba(14, 10, 30, 0.85);\n  transition: transform 240ms var(--ease), border-color 240ms var(--ease), box-shadow 240ms var(--ease);\n}\n.info-item:hover {\n  transform: translateY(-3px);\n  border-color: rgba(166, 150, 255, 0.55);\n  box-shadow: 0 16px 40px rgba(104, 85, 230, 0.25), inset 0 1px 0 rgba(255,255,255,0.08);\n}\n.info-item::after {\n  content: '';\n  position: absolute;\n  inset: auto -20% -40% auto;\n  width: 60%; height: 80%;\n  background: radial-gradient(ellipse at 70% 70%, rgba(250, 122, 57, 0.30), transparent 70%);\n  filter: blur(30px);\n  z-index: -1;\n  opacity: 0.6;\n  pointer-events: none;\n}\n.info-item .icon-pict {\n  width: 44px; height: 44px;\n  display: grid; place-items: center;\n  border-radius: 12px;\n  background: linear-gradient(135deg, rgba(104, 85, 230, 0.28), rgba(250, 122, 57, 0.18));\n  border: 1px solid rgba(166, 150, 255, 0.32);\n  color: #fff;\n  box-shadow: 0 0 18px rgba(104, 85, 230, 0.35), inset 0 1px 0 rgba(255,255,255,0.10);\n  flex: 0 0 auto;\n}\n.info-item .info-body { display: grid; gap: 4px; }\n.info-item .label {\n  margin-bottom: 0;\n  font-family: var(--font-display);\n}\n\n\/* ==========================================================================\n   R33 \u2014 CUSTOM SELECT (dropdown) \u2014 brand-styled, no native chrome\n   ========================================================================== *\/\n.cs-select {\n  position: relative;\n  user-select: none;\n}\n.cs-select .cs-trigger {\n  width: 100%;\n  background: rgba(255,255,255,0.04);\n  border: 1px solid var(--border);\n  border-radius: var(--radius-md);\n  padding: 14px 44px 14px 16px;\n  color: var(--text);\n  font: inherit;\n  font-size: max(16px, 1rem);\n  cursor: pointer;\n  text-align: left;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  transition: border-color 160ms var(--ease-out), box-shadow 160ms var(--ease-out);\n}\n.cs-select .cs-trigger:focus,\n.cs-select.is-open .cs-trigger {\n  outline: none;\n  border-color: var(--accent-violet);\n  box-shadow: var(--glow-violet-sm);\n}\n.cs-select .cs-trigger .cs-caret {\n  flex: 0 0 auto;\n  width: 12px; height: 8px;\n  transition: transform 200ms var(--ease-out);\n  color: var(--text-muted);\n}\n.cs-select.is-open .cs-trigger .cs-caret { transform: rotate(180deg); }\n.cs-select .cs-trigger .cs-placeholder { color: var(--text-faint); }\n\n.cs-select .cs-menu {\n  position: absolute;\n  top: calc(100% + 6px);\n  left: 0; right: 0;\n  background: rgba(14, 10, 30, 0.96);\n  backdrop-filter: blur(18px) saturate(180%);\n  -webkit-backdrop-filter: blur(18px) saturate(180%);\n  border: 1px solid rgba(166, 150, 255, 0.30);\n  border-radius: var(--radius-md);\n  padding: 6px;\n  z-index: 30;\n  opacity: 0;\n  visibility: hidden;\n  transform: translateY(-6px);\n  transition: opacity 180ms var(--ease-out), transform 180ms var(--ease-out), visibility 180ms;\n  box-shadow: 0 24px 60px rgba(0,0,0,0.55), inset 0 1px 0 rgba(255,255,255,0.05);\n  max-height: 320px;\n  overflow-y: auto;\n}\n.cs-select.is-open .cs-menu {\n  opacity: 1;\n  visibility: visible;\n  transform: translateY(0);\n}\n.cs-select .cs-option {\n  padding: 10px 14px;\n  border-radius: 10px;\n  font-size: 0.95rem;\n  color: var(--text);\n  cursor: pointer;\n  transition: background 140ms var(--ease-out), color 140ms var(--ease-out);\n}\n.cs-select .cs-option:hover,\n.cs-select .cs-option[aria-selected=\"true\"] {\n  background: linear-gradient(135deg, rgba(104, 85, 230, 0.22), rgba(250, 122, 57, 0.10));\n  color: #fff;\n}\n\n\/* ==========================================================================\n   R33 \u2014 SOCIAL ICON PILLS (LinkedIn \/ Instagram \/ Facebook)\n   ========================================================================== *\/\n.social-icon {\n  display: inline-grid;\n  place-items: center;\n  width: 40px; height: 40px;\n  border-radius: 12px;\n  border: 1px solid rgba(255,255,255,0.10);\n  background: rgba(255,255,255,0.04);\n  color: var(--text-muted);\n  transition: all 180ms var(--ease-out);\n  flex: 0 0 auto;\n}\n.social-icon:hover {\n  color: #fff;\n  border-color: var(--accent-violet);\n  background: linear-gradient(135deg, rgba(104, 85, 230, 0.22), rgba(250, 122, 57, 0.10));\n  box-shadow: 0 0 18px rgba(104, 85, 230, 0.40), inset 0 1px 0 rgba(255,255,255,0.10);\n  transform: translateY(-2px);\n}\n.social-icon svg { width: 18px; height: 18px; }\n.socials.icon-row { gap: 10px; }\n\n\/* ==========================================================================\n   R32 \u2014 OUR WORK PAGE: case-study pairs, clients carousel, new 3D shapes\n   ========================================================================== *\/\n\n\/* ----- Section intro (eyebrow + heading + subline) ----- *\/\n.section-intro {\n  text-align: center;\n  max-width: 760px;\n  margin: 0 auto var(--s-8);\n}\n.section-intro .eyebrow { justify-content: center; }\n.section-intro h2 {\n  font-size: var(--text-4xl);\n  letter-spacing: -0.025em;\n  margin-bottom: var(--s-3);\n}\n.section-intro p {\n  color: var(--text-muted);\n  margin: 0 auto;\n  font-size: var(--text-lg);\n}\n\n\/* ----- Clients carousel (logos row, paused on hover) ----- *\/\n.clients-carousel-wrap {\n  position: relative;\n  overflow: hidden;\n  -webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);\n  mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);\n  padding: var(--s-6) 0;\n}\n.clients-track {\n  display: flex;\n  gap: 28px;\n  width: max-content;\n  animation: slide 42s linear infinite;\n}\n.clients-carousel-wrap:hover .clients-track { animation-play-state: paused; }\n.client-chip {\n  flex: 0 0 auto;\n  display: flex;\n  align-items: center;\n  gap: 14px;\n  padding: 14px 24px;\n  background: rgba(255,255,255,0.035);\n  border: 1px solid var(--border);\n  border-radius: var(--radius-md);\n  min-height: 70px;\n  transition: border-color 200ms var(--ease-out), background 200ms var(--ease-out), transform 200ms var(--ease-out);\n}\n.client-chip:hover {\n  border-color: var(--border-hover);\n  background: rgba(255,255,255,0.06);\n  transform: translateY(-2px);\n}\n.client-chip .client-mark {\n  width: 56px; height: 56px;\n  display: block;\n  border-radius: 12px;\n  background: rgba(255, 255, 255, 0.94);\n  color: #1a0f08;\n  font-family: var(--font-display);\n  font-weight: 700;\n  font-size: 0.95rem;\n  box-shadow:\n    inset 0 1px 0 rgba(255, 255, 255, 0.55),\n    0 4px 14px rgba(0, 0, 0, 0.22),\n    0 0 18px rgba(104, 85, 230, 0.18);\n  overflow: hidden;\n  flex-shrink: 0;\n  padding: 0;\n}\n.client-chip .client-mark img {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  border-radius: inherit;\n  display: block;\n}\n.client-chip .client-name {\n  font-family: var(--font-display);\n  font-weight: 500;\n  font-size: 1rem;\n  letter-spacing: 0.02em;\n  color: var(--text);\n}\n.client-chip .client-sector {\n  font-size: 0.74rem;\n  letter-spacing: 0.14em;\n  text-transform: uppercase;\n  color: var(--text-muted);\n}\n\n\/* ----- Case-study grid + pair-card pattern -----\n   Each case is its own visually-distinct surface. Inside the surface the\n   \"starting point\" card sits on the LEFT, the \"outcome\" card on the RIGHT,\n   joined by a horizontal connector. Cases stack vertically under each other.\n   On narrow screens the pair collapses back to a vertical stack. *\/\n.case-grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: clamp(64px, 7vw, 104px);\n  align-items: start;\n  max-width: 1180px;\n  margin: 0 auto;\n  counter-reset: case 0;\n}\n\n.case-pair {\n  display: grid;\n  grid-template-columns: 1fr clamp(60px, 7vw, 100px) 1fr;\n  grid-template-rows: auto 1fr auto;\n  gap: var(--s-4);\n  align-items: stretch;\n  justify-items: stretch;\n  position: relative;\n  padding: clamp(32px, 4.5vw, 56px) clamp(20px, 3.2vw, 44px) clamp(28px, 4vw, 44px);\n  border-radius: var(--radius-xl);\n  background:\n    radial-gradient(80% 60% at 50% -10%, rgba(104,85,230,0.10), transparent 65%),\n    radial-gradient(70% 60% at 50% 110%, rgba(250,122,57,0.08), transparent 65%),\n    rgba(14,10,30,0.55);\n  border: 1px solid rgba(255,255,255,0.07);\n  backdrop-filter: blur(10px) saturate(140%);\n  -webkit-backdrop-filter: blur(10px) saturate(140%);\n  box-shadow: 0 22px 56px rgba(0,0,0,0.4);\n  counter-increment: case;\n}\n\/* Alternate the subtle tint between cases for visual rhythm *\/\n.case-pair:nth-child(even) {\n  background:\n    radial-gradient(80% 60% at 50% -10%, rgba(250,122,57,0.10), transparent 65%),\n    radial-gradient(70% 60% at 50% 110%, rgba(104,85,230,0.08), transparent 65%),\n    rgba(14,10,30,0.55);\n}\n\/* Indexed counter chip \u2014 discreet \"01 \/ 02 \/ 03\" on each pair *\/\n.case-pair::after {\n  content: '0' counter(case);\n  position: absolute;\n  top: clamp(16px, 2.4vw, 24px);\n  right: clamp(20px, 2.8vw, 32px);\n  font-family: var(--font-display);\n  font-weight: 600;\n  font-size: clamp(0.85rem, 1.1vw, 1rem);\n  letter-spacing: 0.18em;\n  color: rgba(255,255,255,0.30);\n  z-index: 4;\n  pointer-events: none;\n}\n\n\/* Grid placement \u2014 first child (sector tag wrapper) on top, footer on bottom,\n   top\/connector\/bottom cards in the middle row. *\/\n.case-pair > div:first-child { grid-column: 1 \/ -1; grid-row: 1; }\n.case-pair > .case-card.case-top    { grid-column: 1; grid-row: 2; }\n.case-pair > .case-connector         { grid-column: 2; grid-row: 2; }\n.case-pair > .case-card.case-bottom { grid-column: 3; grid-row: 2; }\n.case-pair > .case-footer            { grid-column: 1 \/ -1; grid-row: 3; margin-top: var(--s-3); }\n\n.case-card {\n  position: relative;\n  background: rgba(20, 14, 40, 0.55);\n  backdrop-filter: blur(18px) saturate(150%);\n  -webkit-backdrop-filter: blur(18px) saturate(150%);\n  border: 1px solid rgba(255,255,255,0.08);\n  border-radius: var(--radius-lg);\n  padding: var(--s-5) var(--s-5);\n  overflow: hidden;\n  box-shadow: 0 1px 0 rgba(255,255,255,0.04) inset, 0 18px 40px rgba(0,0,0,0.45);\n}\n.case-card::before {\n  content: '';\n  position: absolute; inset: 0;\n  border-radius: inherit;\n  padding: 1px;\n  background: linear-gradient(135deg, rgba(104,85,230,0.45), rgba(250,122,57,0.0) 50%, rgba(104,85,230,0.35));\n  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);\n  -webkit-mask-composite: xor; mask-composite: exclude;\n  pointer-events: none;\n}\n.case-card.case-top, .case-card.case-bottom { padding: var(--s-5); }\n.case-card.case-bottom::before {\n  background: linear-gradient(135deg, rgba(250,122,57,0.55), rgba(104,85,230,0.0) 50%, rgba(250,122,57,0.30));\n}\n\n.case-card .case-head {\n  display: flex; align-items: center; justify-content: space-between;\n  gap: 12px;\n  margin-bottom: var(--s-4);\n}\n.case-card .case-head-left {\n  display: flex; align-items: center; gap: 12px;\n}\n.case-avatar {\n  width: 40px; height: 40px;\n  border-radius: 50%;\n  background: linear-gradient(135deg, var(--accent-violet), #2a1f6e);\n  display: grid; place-items: center;\n  color: #fff;\n  font-family: var(--font-display);\n  font-weight: 700;\n  font-size: 0.92rem;\n  border: 1px solid rgba(255,255,255,0.16);\n  box-shadow: inset 0 1px 0 rgba(255,255,255,0.20), 0 0 14px rgba(104,85,230,0.30);\n  flex: 0 0 auto;\n}\n.case-card.case-bottom .case-avatar {\n  background: linear-gradient(135deg, var(--accent-orange), #4a1a08);\n  box-shadow: inset 0 1px 0 rgba(255,255,255,0.20), 0 0 14px rgba(250,122,57,0.30);\n}\n.case-meta-stack {\n  display: grid; gap: 2px;\n}\n.case-meta-label {\n  font-size: 0.72rem;\n  letter-spacing: 0.14em;\n  text-transform: uppercase;\n  color: var(--text-muted);\n}\n.case-meta-title {\n  font-family: var(--font-display);\n  font-weight: 600;\n  font-size: 1.05rem;\n  letter-spacing: -0.01em;\n  color: var(--text);\n}\n.case-status-pill {\n  display: inline-flex; align-items: center; gap: 6px;\n  padding: 5px 10px;\n  border-radius: var(--radius-pill);\n  background: rgba(104,85,230,0.16);\n  border: 1px solid rgba(104,85,230,0.30);\n  font-size: 0.7rem;\n  letter-spacing: 0.10em;\n  text-transform: uppercase;\n  color: var(--text);\n  white-space: nowrap;\n}\n.case-card.case-bottom .case-status-pill {\n  background: rgba(62,207,142,0.12);\n  border-color: rgba(62,207,142,0.35);\n}\n.case-status-dot {\n  width: 8px; height: 8px; border-radius: 50%;\n  background: var(--accent-violet);\n  box-shadow: 0 0 8px rgba(104,85,230,0.7);\n}\n.case-card.case-bottom .case-status-dot {\n  background: var(--success);\n  box-shadow: 0 0 8px rgba(62,207,142,0.7);\n}\n\n\/* Inner row \u2014 the \"model prompt\" \/ \"completed\" rectangle *\/\n.case-row {\n  display: flex; align-items: center; justify-content: space-between;\n  gap: 12px;\n  padding: 12px 14px;\n  border-radius: var(--radius-md);\n  background: rgba(255,255,255,0.04);\n  border: 1px solid rgba(255,255,255,0.06);\n}\n.case-row + .case-row { margin-top: 10px; }\n.case-row .case-row-left {\n  display: flex; align-items: center; gap: 12px;\n  min-width: 0;\n}\n.case-row .case-row-icon {\n  width: 32px; height: 32px;\n  display: grid; place-items: center;\n  border-radius: 9px;\n  background: linear-gradient(135deg, var(--accent-violet), #2a1f6e);\n  color: #fff;\n  flex: 0 0 auto;\n  box-shadow: inset 0 1px 0 rgba(255,255,255,0.16), 0 0 10px rgba(104,85,230,0.30);\n}\n.case-card.case-bottom .case-row .case-row-icon {\n  background: linear-gradient(135deg, var(--accent-orange), #4a1a08);\n  box-shadow: inset 0 1px 0 rgba(255,255,255,0.16), 0 0 10px rgba(250,122,57,0.30);\n}\n.case-row .case-row-icon svg { width: 14px; height: 14px; }\n.case-row .case-row-label {\n  font-family: var(--font-display);\n  font-weight: 500;\n  font-size: 0.92rem;\n  color: var(--text);\n  line-height: 1.4;\n  \/* Allow long labels to wrap so card content is never clipped *\/\n  white-space: normal;\n  overflow-wrap: anywhere;\n  word-break: break-word;\n  min-width: 0;\n}\n.case-row .case-row-sub {\n  font-size: 0.74rem;\n  letter-spacing: 0.10em;\n  text-transform: uppercase;\n  color: var(--text-muted);\n  white-space: nowrap;\n}\n\n\/* Headline KPI value (large violet number on the bottom card) *\/\n.case-kpi {\n  display: flex; align-items: baseline; gap: 8px;\n  margin: var(--s-4) 0 var(--s-2);\n}\n.case-kpi .v {\n  font-family: var(--font-display);\n  font-weight: 700;\n  font-size: clamp(2rem, 4vw, 2.6rem);\n  letter-spacing: -0.03em;\n  line-height: 1;\n  background: linear-gradient(135deg, #ffb78a, var(--accent-orange) 50%, #c8a8ff);\n  -webkit-background-clip: text;\n  background-clip: text;\n  -webkit-text-fill-color: transparent;\n}\n.case-kpi .u {\n  font-family: var(--font-display);\n  font-weight: 500;\n  font-size: 0.95rem;\n  color: var(--text-muted);\n}\n.case-card.case-top .case-kpi .v {\n  background: linear-gradient(135deg, #c8a8ff, var(--accent-violet) 50%, #ffb78a);\n  -webkit-background-clip: text; background-clip: text;\n  -webkit-text-fill-color: transparent;\n}\n.case-card .case-note {\n  color: var(--text-muted);\n  font-size: 0.92rem;\n  line-height: 1.55;\n}\n\n\/* ----- Connecting element between top + bottom cards (horizontal) ----- *\/\n.case-connector {\n  position: relative;\n  height: auto;\n  min-height: 56px;\n  display: grid; place-items: center;\n  pointer-events: none;\n}\n.case-connector::before {\n  content: '';\n  width: 100%;\n  height: 2px;\n  background: linear-gradient(90deg,\n    rgba(104,85,230,0.0) 0%,\n    rgba(104,85,230,0.85) 30%,\n    rgba(250,122,57,0.85) 70%,\n    rgba(250,122,57,0.0) 100%);\n  box-shadow: 0 0 8px rgba(104,85,230,0.45);\n  border-radius: 2px;\n}\n.case-connector .conn-node {\n  position: absolute; top: 50%; left: 50%;\n  transform: translate(-50%, -50%);\n  width: 16px; height: 16px;\n  border-radius: 50%;\n  background:\n    radial-gradient(circle at 35% 30%, #ffffff 0%, rgba(255,255,255,0.6) 30%, transparent 70%),\n    linear-gradient(135deg, var(--accent-violet), var(--accent-orange));\n  border: 1px solid rgba(255,255,255,0.30);\n  box-shadow:\n    0 0 12px rgba(104,85,230,0.6),\n    0 0 24px rgba(250,122,57,0.30),\n    inset 0 1px 0 rgba(255,255,255,0.45);\n}\n.case-connector .conn-node::after {\n  content: '';\n  position: absolute; inset: -10px;\n  border-radius: 50%;\n  border: 1px solid rgba(255,255,255,0.10);\n  animation: connPulse 2.6s ease-in-out infinite;\n}\n@keyframes connPulse {\n  0%, 100% { transform: scale(0.7); opacity: 0.5; }\n  50%      { transform: scale(1.15); opacity: 1; }\n}\n\n\/* Sector \/ industry tag at the very top of the pair (above the top card) *\/\n.case-sector-tag {\n  display: inline-flex; align-items: center; gap: 6px;\n  padding: 5px 12px;\n  margin: 0 auto var(--s-3);\n  border-radius: var(--radius-pill);\n  background: rgba(255,255,255,0.04);\n  border: 1px solid var(--border);\n  font-size: 0.72rem;\n  letter-spacing: 0.18em;\n  text-transform: uppercase;\n  color: var(--text-muted);\n}\n.case-sector-tag::before {\n  content: '';\n  width: 6px; height: 6px;\n  border-radius: 50%;\n  background: linear-gradient(135deg, var(--accent-violet), var(--accent-orange));\n  box-shadow: 0 0 8px rgba(104,85,230,0.45);\n}\n\n\/* ----- Floating themed icons next to each case-pair ----- *\/\n.case-float {\n  position: absolute;\n  width: clamp(54px, 5vw, 78px);\n  height: clamp(54px, 5vw, 78px);\n  top: 50%;\n  z-index: 2;\n  color: rgba(200,175,255,0.85);\n  filter:\n    drop-shadow(0 6px 14px rgba(104,85,230,0.55))\n    drop-shadow(0 0 28px rgba(104,85,230,0.30));\n  pointer-events: none;\n  will-change: transform;\n}\n.case-float svg { width: 100%; height: 100%; display: block; }\n.case-float-l { left: clamp(-72px, -5vw, -42px); }\n.case-float-r { right: clamp(-72px, -5vw, -42px); }\n\n\/* Even cases inherit the orange tint of their card *\/\n.case-pair:nth-child(even) .case-float {\n  color: rgba(255,185,140,0.88);\n  filter:\n    drop-shadow(0 6px 14px rgba(250,122,57,0.55))\n    drop-shadow(0 0 28px rgba(250,122,57,0.30));\n}\n\n\/* Animations \u2014 gentle bob + soft rotation, mirrored left\/right *\/\n.case-float-l { animation: caseFloatL 6.5s ease-in-out infinite alternate; }\n.case-float-r { animation: caseFloatR 7.5s ease-in-out infinite alternate; }\n\n@keyframes caseFloatL {\n  0%   { transform: translateY(-50%)              rotate(-10deg) scale(1); }\n  100% { transform: translateY(calc(-50% - 22px)) rotate(4deg)   scale(1.04); }\n}\n@keyframes caseFloatR {\n  0%   { transform: translateY(-50%)              rotate(10deg)  scale(1); }\n  100% { transform: translateY(calc(-50% - 26px)) rotate(-4deg)  scale(1.04); }\n}\n@media (prefers-reduced-motion: reduce) {\n  .case-float-l, .case-float-r { animation: none; }\n}\n\n\/* Hide on narrow viewports \u2014 no space for them *\/\n@media (max-width: 1100px) {\n  .case-float { display: none; }\n}\n\n\/* ----- Floating decorations on the contacts page ----- *\/\n.contact-float {\n  position: absolute;\n  width: clamp(60px, 6vw, 92px);\n  height: clamp(60px, 6vw, 92px);\n  z-index: 2;\n  color: rgba(200,175,255,0.85);\n  filter:\n    drop-shadow(0 6px 14px rgba(104,85,230,0.55))\n    drop-shadow(0 0 32px rgba(104,85,230,0.28));\n  pointer-events: none;\n  will-change: transform;\n}\n.contact-float svg { width: 100%; height: 100%; display: block; }\n\n\/* Cool side (violet) *\/\n.contact-float-1 { top: 4%;  left: 3%; animation: contactFloat1 6.5s ease-in-out infinite alternate; }\n.contact-float-2 { bottom: 8%; left: 4%; animation: contactFloat2 7.5s ease-in-out infinite alternate; }\n\/* Warm side (orange) *\/\n.contact-float-3,\n.contact-float-4 {\n  color: rgba(255,185,140,0.88);\n  filter:\n    drop-shadow(0 6px 14px rgba(250,122,57,0.55))\n    drop-shadow(0 0 32px rgba(250,122,57,0.28));\n}\n.contact-float-3 { top: 12%; right: 3%; animation: contactFloat3 8s   ease-in-out infinite alternate; }\n.contact-float-4 { bottom: 6%; right: 4%; animation: contactFloat4 7s   ease-in-out infinite alternate; }\n\n@keyframes contactFloat1 {\n  0%   { transform: translateY(0)     rotate(-10deg); }\n  100% { transform: translateY(-22px) rotate(4deg);   }\n}\n@keyframes contactFloat2 {\n  0%   { transform: translateY(0)     rotate(8deg);  }\n  100% { transform: translateY(-18px) rotate(-6deg); }\n}\n@keyframes contactFloat3 {\n  0%   { transform: translateY(0)     rotate(12deg); }\n  100% { transform: translateY(-26px) rotate(-4deg); }\n}\n@keyframes contactFloat4 {\n  0%   { transform: translateY(0)     rotate(-8deg); }\n  100% { transform: translateY(-20px) rotate(6deg);  }\n}\n@media (prefers-reduced-motion: reduce) {\n  .contact-float { animation: none; }\n}\n\/* Hide on narrow viewports so they don't crowd the form *\/\n@media (max-width: 1100px) {\n  .contact-float { display: none; }\n}\n\n\/* Optional client-row beneath the pair (project, duration) *\/\n.case-footer {\n  display: flex; align-items: center; justify-content: space-between;\n  gap: 12px;\n  margin-top: var(--s-5);\n  padding: 0 var(--s-3);\n  font-size: 0.82rem;\n  color: var(--text-muted);\n}\n.case-footer strong { color: var(--text); font-weight: 600; }\n\n\/* ----- Responsive fallback \u2014 stack the pair vertically on narrow screens ----- *\/\n@media (max-width: 880px) {\n  .case-pair {\n    grid-template-columns: 1fr;\n    grid-template-rows: auto auto auto auto auto;\n    padding: clamp(24px, 5vw, 36px) clamp(18px, 4vw, 28px);\n  }\n  .case-pair > .case-card.case-top    { grid-column: 1; grid-row: 2; }\n  .case-pair > .case-connector         { grid-column: 1; grid-row: 3; min-height: 56px; }\n  .case-pair > .case-card.case-bottom { grid-column: 1; grid-row: 4; }\n  .case-pair > .case-footer            { grid-column: 1; grid-row: 5; }\n  \/* Restore vertical connecting line on mobile *\/\n  .case-connector::before {\n    width: 2px;\n    height: 100%;\n    background: linear-gradient(180deg,\n      rgba(104,85,230,0.0) 0%,\n      rgba(104,85,230,0.85) 30%,\n      rgba(250,122,57,0.85) 70%,\n      rgba(250,122,57,0.0) 100%);\n  }\n}\n@media (max-width: 640px) {\n  .case-grid { gap: 56px; }\n  .case-card.case-top, .case-card.case-bottom { padding: var(--s-4); }\n  .case-row .case-row-label { font-size: 0.86rem; }\n}\n\n\/* ==========================================================================\n   R32 \u2014 Extra 3D shapes (pyramid, octahedron, torus, prism)\n   ========================================================================== *\/\n.shape-field {\n  position: absolute; inset: 0;\n  pointer-events: none;\n  perspective: 1300px;\n  perspective-origin: 50% 50%;\n  overflow: hidden;\n  z-index: 0;\n}\n\n\/* Tetrahedron-style pyramid (4 triangular faces, CSS-only) *\/\n.pyramid-3d {\n  position: absolute;\n  width: var(--py-size, 110px);\n  height: var(--py-size, 110px);\n  transform-style: preserve-3d;\n  animation: pyramidFloat 16s ease-in-out infinite alternate;\n  will-change: transform;\n  filter: drop-shadow(0 18px 30px rgba(0,0,0,0.4))\n          drop-shadow(0 0 22px rgba(250,122,57,0.20));\n}\n.pyramid-3d .pyramid-spin {\n  position: absolute; inset: 0;\n  transform-style: preserve-3d;\n  animation: pyramidSpin 26s linear infinite;\n}\n.pyramid-3d .pface {\n  position: absolute;\n  width: 0; height: 0;\n  left: 50%; top: 0;\n  transform-origin: 50% 0;\n  border-left: calc(var(--py-size, 110px) \/ 2) solid transparent;\n  border-right: calc(var(--py-size, 110px) \/ 2) solid transparent;\n  border-bottom: calc(var(--py-size, 110px) * 0.95) solid rgba(104,85,230,0.45);\n  margin-left: calc(var(--py-size, 110px) \/ -2);\n  opacity: 0.78;\n  border-bottom-color: rgba(104,85,230,0.50);\n}\n.pyramid-3d .pface.pf2 { transform: rotateY(90deg);  border-bottom-color: rgba(250,122,57,0.50); }\n.pyramid-3d .pface.pf3 { transform: rotateY(180deg); border-bottom-color: rgba(166,150,255,0.50); }\n.pyramid-3d .pface.pf4 { transform: rotateY(270deg); border-bottom-color: rgba(250,122,57,0.35); }\n\n@keyframes pyramidSpin {\n  0%   { transform: rotateY(0deg) rotateX(8deg); }\n  100% { transform: rotateY(360deg) rotateX(8deg); }\n}\n@keyframes pyramidFloat {\n  0%   { transform: translateY(0) rotate(0deg); }\n  100% { transform: translateY(-18px) rotate(4deg); }\n}\n\n\/* Octahedron (8 triangular faces \u2014 built as two pyramids back-to-back) *\/\n.octa-3d {\n  position: absolute;\n  width: var(--oc-size, 90px);\n  height: var(--oc-size, 90px);\n  transform-style: preserve-3d;\n  animation: octaFloat 18s ease-in-out infinite alternate;\n  will-change: transform;\n  filter: drop-shadow(0 14px 28px rgba(0,0,0,0.4))\n          drop-shadow(0 0 22px rgba(104,85,230,0.22));\n}\n.octa-3d .octa-spin {\n  position: absolute; inset: 0;\n  transform-style: preserve-3d;\n  animation: octaSpin 22s linear infinite;\n}\n.octa-3d .oface {\n  position: absolute;\n  width: 0; height: 0;\n  left: 50%; top: 50%;\n  border-left: calc(var(--oc-size, 90px) \/ 2) solid transparent;\n  border-right: calc(var(--oc-size, 90px) \/ 2) solid transparent;\n  border-bottom: calc(var(--oc-size, 90px) \/ 2) solid rgba(104,85,230,0.45);\n  transform-origin: 50% 0;\n  margin-left: calc(var(--oc-size, 90px) \/ -2);\n  margin-top: 0;\n  opacity: 0.75;\n}\n.octa-3d .oface.of2 { transform: rotateY(90deg);  border-bottom-color: rgba(250,122,57,0.45); }\n.octa-3d .oface.of3 { transform: rotateY(180deg); border-bottom-color: rgba(166,150,255,0.45); }\n.octa-3d .oface.of4 { transform: rotateY(270deg); border-bottom-color: rgba(250,122,57,0.30); }\n.octa-3d .oface.of5 { transform: rotateY(0deg)   rotateZ(180deg) translateY(0); border-bottom-color: rgba(104,85,230,0.40); }\n.octa-3d .oface.of6 { transform: rotateY(90deg)  rotateZ(180deg); border-bottom-color: rgba(250,122,57,0.35); }\n.octa-3d .oface.of7 { transform: rotateY(180deg) rotateZ(180deg); border-bottom-color: rgba(166,150,255,0.35); }\n.octa-3d .oface.of8 { transform: rotateY(270deg) rotateZ(180deg); border-bottom-color: rgba(250,122,57,0.25); }\n\n@keyframes octaSpin {\n  0%   { transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg); }\n  100% { transform: rotateX(360deg) rotateY(360deg) rotateZ(0deg); }\n}\n@keyframes octaFloat {\n  0%   { transform: translateY(0); }\n  100% { transform: translateY(-22px); }\n}\n\n\/* Hollow torus ring (built with conic + radial-gradient \u2014 flat but reads as 3D when rotated) *\/\n.torus-3d {\n  position: absolute;\n  width: var(--to-size, 130px);\n  height: var(--to-size, 130px);\n  border-radius: 50%;\n  background:\n    radial-gradient(circle at center, transparent 36%, rgba(104,85,230,0.5) 40%, rgba(250,122,57,0.4) 56%, transparent 60%);\n  filter: blur(0.5px) drop-shadow(0 0 22px rgba(104,85,230,0.30));\n  animation: torusTilt 14s ease-in-out infinite alternate, torusSpin 24s linear infinite;\n  transform-style: preserve-3d;\n}\n@keyframes torusSpin {\n  0%   { transform: rotateY(0deg) rotateX(65deg); }\n  100% { transform: rotateY(360deg) rotateX(65deg); }\n}\n@keyframes torusTilt {\n  0%   { filter: blur(0.5px) drop-shadow(0 0 22px rgba(104,85,230,0.30)); }\n  100% { filter: blur(0.5px) drop-shadow(0 0 32px rgba(250,122,57,0.30)); }\n}\n\n\/* Faceted prism (triangular bar) \u2014 built with CSS clip-path *\/\n.prism-3d {\n  position: absolute;\n  width: var(--pr-size, 100px);\n  height: calc(var(--pr-size, 100px) * 1.5);\n  background: linear-gradient(135deg, rgba(166,150,255,0.55), rgba(104,85,230,0.35) 45%, rgba(250,122,57,0.45));\n  clip-path: polygon(50% 0%, 100% 100%, 0% 100%);\n  filter: drop-shadow(0 16px 30px rgba(0,0,0,0.45))\n          drop-shadow(0 0 22px rgba(166,150,255,0.25));\n  animation: prismFloat 13s ease-in-out infinite alternate, prismSpin 28s linear infinite;\n  transform-style: preserve-3d;\n  will-change: transform;\n}\n@keyframes prismSpin {\n  0%   { transform: rotateY(0deg) rotateX(5deg); }\n  100% { transform: rotateY(360deg) rotateX(5deg); }\n}\n@keyframes prismFloat {\n  0%   { transform: translateY(0); }\n  100% { transform: translateY(-18px); }\n}\n\n\/* Positioning hooks for shapes on the Our Work hero *\/\n.shape-field .pyramid-3d.p1 { top: 14%; left: 8%;  --py-size: 120px; }\n.shape-field .pyramid-3d.p2 { bottom: 18%; right: 12%; --py-size: 86px; opacity: 0.85; }\n.shape-field .octa-3d.o1    { top: 22%; right: 16%; --oc-size: 92px; }\n.shape-field .octa-3d.o2    { bottom: 22%; left: 18%; --oc-size: 72px; opacity: 0.7; }\n.shape-field .torus-3d.t1   { top: 52%; left: 44%;  --to-size: 160px; opacity: 0.65; }\n.shape-field .prism-3d.pr1  { top: 8%;  right: 32%; --pr-size: 76px; opacity: 0.7; }\n.shape-field .prism-3d.pr2  { bottom: 8%; left: 38%; --pr-size: 64px; opacity: 0.55; }\n\n@media (max-width: 900px) {\n  .shape-field .pyramid-3d.p1 { --py-size: 90px; }\n  .shape-field .pyramid-3d.p2 { --py-size: 64px; }\n  .shape-field .octa-3d.o1    { --oc-size: 70px; }\n  .shape-field .octa-3d.o2    { --oc-size: 52px; }\n  .shape-field .torus-3d.t1   { --to-size: 110px; }\n  .shape-field .prism-3d.pr1, .shape-field .prism-3d.pr2 { display: none; }\n}\n@media (max-width: 640px) {\n  .shape-field .pyramid-3d, .shape-field .octa-3d, .shape-field .torus-3d, .shape-field .prism-3d {\n    opacity: 0.5;\n  }\n}\n@media (prefers-reduced-motion: reduce) {\n  .pyramid-3d, .pyramid-3d .pyramid-spin,\n  .octa-3d, .octa-3d .octa-spin,\n  .torus-3d, .prism-3d {\n    animation: none !important;\n  }\n}\n\n\/* CTA strip at the bottom of the page *\/\n.work-cta {\n  margin-top: var(--s-9);\n  padding: var(--s-8) var(--s-7);\n  border-radius: var(--radius-xl);\n  background:\n    radial-gradient(80% 120% at 100% 0%, rgba(250,122,57,0.20) 0%, transparent 60%),\n    radial-gradient(80% 120% at 0% 100%, rgba(104,85,230,0.25) 0%, transparent 60%),\n    rgba(10,8,22,0.7);\n  border: 1px solid var(--border);\n  box-shadow: 0 24px 60px rgba(0,0,0,0.45);\n  text-align: center;\n  position: relative;\n  overflow: hidden;\n}\n.work-cta h3 {\n  font-size: var(--text-3xl);\n  margin-bottom: var(--s-3);\n  letter-spacing: -0.02em;\n}\n.work-cta p {\n  color: var(--text-muted);\n  margin: 0 auto var(--s-5);\n  max-width: 60ch;\n}\n\n\n\n\n\/* ==========================================================================\n   ELEMENTOR FULL-BLEED OVERRIDE  (v2 \u2014 single wrapper approach)\n   The whole snippet is wrapped in <div class=\"dfs-root\"> below.\n   We force that wrapper to 100vw so it escapes any Elementor \/ theme\n   max-width container, then let everything inside flow as designed.\n   ========================================================================== *\/\n\n.dfs-root {\n  width: 100vw !important;\n  max-width: 100vw !important;\n  margin-inline: calc(50% - 50vw) !important;\n  position: relative !important;\n  overflow-x: clip;\n  background: var(--bg);\n  color: var(--text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  line-height: 1.5;\n}\n\n\/* Skip link \u2014 properly hide it off the viewport in Elementor context *\/\n.dfs-root .skip-link,\n.skip-link {\n  position: fixed !important;\n  top: -200px !important;\n  left: 16px !important;\n}\n.dfs-root .skip-link:focus,\n.skip-link:focus {\n  top: 16px !important;\n}\n\n\/* Pinned overlays cover the full viewport regardless of any parent transforms *\/\n.dfs-root .bg-stage,\n.dfs-root .grid-mesh,\n.dfs-root .noise,\n.dfs-root .mobile-menu {\n  position: fixed !important;\n  inset: 0 !important;\n  width: 100vw !important;\n  height: 100vh !important;\n}\n\n\/* Reset theme defaults inside our content. Wrapped in :where() so each rule\n   has ZERO specificity \u2014 any rule from the original style.css with even one\n   class selector wins. This lets our design's real spacing, colors, and\n   button styles survive while still neutralising Elementor \/ theme defaults. *\/\n.dfs-root *, .dfs-root *::before, .dfs-root *::after { box-sizing: border-box; }\n:where(.dfs-root img) { max-width: 100%; height: auto; display: block; }\n:where(.dfs-root a) { color: inherit; text-decoration: none; }\n:where(.dfs-root ul, .dfs-root ol) { list-style: none; padding: 0; margin: 0; }\n:where(.dfs-root h1, .dfs-root h2, .dfs-root h3, .dfs-root h4, .dfs-root h5, .dfs-root h6) {\n  font-family: var(--font-display);\n  margin: 0;\n}\n:where(.dfs-root p) { margin: 0; }\n:where(.dfs-root button) { background: transparent; border: none; padding: 0; font: inherit; color: inherit; cursor: pointer; }\n\n\n\n\/* ==========================================================================\n   ELEMENTOR ANCESTOR BREAKOUT (v3) \u2014 :has() reaches up the DOM\n   Forces every wrapping container above .dfs-root (Elementor section\/column\/\n   widget, common theme wrappers like .entry-content, .site-content,\n   .elementor-element, etc.) to drop their max-width, padding, and overflow\n   so our wrapper actually renders at 100vw.\n   ========================================================================== *\/\n\nbody:has(.dfs-root),\n.site-content:has(.dfs-root),\n.entry-content:has(.dfs-root),\n.page-content:has(.dfs-root),\n.post:has(.dfs-root),\nmain:has(.dfs-root),\narticle:has(.dfs-root),\n.elementor:has(.dfs-root),\n.elementor-edit-area:has(.dfs-root),\n.elementor-section-wrap:has(.dfs-root),\n.elementor-section:has(.dfs-root),\n.elementor-container:has(.dfs-root),\n.elementor-row:has(.dfs-root),\n.elementor-column:has(.dfs-root),\n.elementor-column-wrap:has(.dfs-root),\n.elementor-widget-wrap:has(.dfs-root),\n.elementor-widget:has(.dfs-root),\n.elementor-element:has(.dfs-root),\n.elementor-widget-html:has(.dfs-root),\n.elementor-widget-html > .elementor-widget-container:has(.dfs-root),\n.e-con:has(.dfs-root),\n.e-con-inner:has(.dfs-root),\n.e-con-full:has(.dfs-root),\n.e-con-boxed:has(.dfs-root),\n.elementor-widget-container:has(.dfs-root) {\n  max-width: none !important;\n  width: 100% !important;\n  padding: 0 !important;\n  margin: 0 !important;\n  overflow: visible !important;\n  border-radius: 0 !important;\n  box-shadow: none !important;\n  background: transparent !important;\n}\n\n\/* Restore the wrapper's own 100vw rule with stronger specificity *\/\n.dfs-root {\n  width: 100vw !important;\n  max-width: 100vw !important;\n  margin-inline: 0 !important;\n  position: relative !important;\n  left: 0 !important;\n}\n\n\n\/* ==========================================================================\n   HELLO ELEMENTOR THEME OVERRIDE\n   Hello Elementor (the active theme) styles header.site-header, .site-main,\n   and .site-footer with max-width: var(--container-width, 1140px); margin: 0 auto;\n   That clamps our header and footer to 1140px. Force them back to 100%.\n   ========================================================================== *\/\n\n.dfs-root .site-header,\n.dfs-root .site-footer,\n.dfs-root header.site-header,\n.dfs-root footer.site-footer,\n.dfs-root .site-main,\nbody.wp-theme-hello-elementor header.site-header,\nbody.wp-theme-hello-elementor .site-footer {\n  max-width: 100% !important;\n  width: 100% !important;\n  margin: 0 !important;\n}\n\n\/* Header content (.container.nav) still uses --content-max for the inner row,\n   so the brand + nav + button stay nicely centred inside the full-width header. *\/\n.dfs-root .site-header > .container,\n.dfs-root .site-footer > .container {\n  max-width: var(--content-max) !important;\n  margin-inline: auto !important;\n}\n\n\n\/* ==========================================================================\n   POST-RESET TARGETED FIXES\n   The four issues called out: hero CTA spacing, BG\/EN toggle layout,\n   btn-pill text color, footer heading spacing.\n   ========================================================================== *\/\n\n\/* 1) Hero subline margin restored (in case Elementor still kills it) *\/\n.dfs-root .hero-subline { margin-bottom: var(--s-7) !important; }\n.dfs-root .hero-cta-row { margin-top: var(--s-6) !important; }\n\n\/* 2) Language toggle layout (the BG \/ EN pill) *\/\n.dfs-root .lang-toggle {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 0 !important;\n  padding: 2px !important;\n  border: 1px solid rgba(255,255,255,0.10) !important;\n  border-radius: 999px !important;\n  background: rgba(255,255,255,0.02) !important;\n}\n.dfs-root .lang-toggle button {\n  padding: 6px 14px !important;\n  border-radius: 999px !important;\n  font-family: var(--font-display) !important;\n  font-size: 0.78rem !important;\n  font-weight: 600 !important;\n  letter-spacing: 0.06em !important;\n  color: var(--text-muted) !important;\n  background: transparent !important;\n  border: none !important;\n  cursor: pointer !important;\n  transition: color 160ms var(--ease-out), background 160ms var(--ease-out) !important;\n}\n.dfs-root .lang-toggle button[aria-pressed=\"true\"] {\n  background: #ffffff !important;\n  color: #0a0814 !important;\n}\n\n\/* 3) White pill button \u2014 keep dark text, never inherit theme link color *\/\n.dfs-root .btn-pill { color: #0a0814 !important; }\n.dfs-root .btn-pill:hover,\n.dfs-root .btn-pill:focus { color: #0a0814 !important; }\n\n\/* 3a) Primary violet button \u2014 keep WHITE text on hover\/focus\/visited.\n       Hello Elementor's a:hover changes link color and was bleeding through. *\/\n.dfs-root a.btn-primary,\n.dfs-root a.btn-primary:link,\n.dfs-root a.btn-primary:visited,\n.dfs-root a.btn-primary:hover,\n.dfs-root a.btn-primary:focus,\n.dfs-root a.btn-primary:active,\n.dfs-root .btn-primary,\n.dfs-root .btn-primary:hover,\n.dfs-root .btn-primary:focus,\n.dfs-root .btn-primary:active {\n  color: #ffffff !important;\n}\n.dfs-root .btn-primary .arrow,\n.dfs-root .btn-primary:hover .arrow,\n.dfs-root .btn-primary:focus .arrow { color: #ffffff !important; }\n\n\/* 4) Footer column headings need breathing room above their links *\/\n.dfs-root .footer-col h4 { margin-bottom: var(--s-4) !important; }\n.dfs-root .footer-col ul li { margin-bottom: 10px !important; }\n.dfs-root .footer-col ul li:last-child { margin-bottom: 0 !important; }\n\n\n\/* ==========================================================================\n   FIX: Hello Elementor's a:hover changes link color, which propagates to\n   the .name \/ .desc text inside .service-row. Lock the text colors so the\n   row's title stays white and description stays muted on hover\/focus.\n   The \"01\" number and chevron keep their existing orange\/violet hover.\n   ========================================================================== *\/\n\n.dfs-root a.service-row,\n.dfs-root a.service-row:hover,\n.dfs-root a.service-row:focus,\n.dfs-root a.service-row:visited {\n  color: var(--text) !important;\n}\n.dfs-root .service-row .name,\n.dfs-root .service-row:hover .name,\n.dfs-root .service-row:focus .name {\n  color: var(--text) !important;\n}\n.dfs-root .service-row .desc,\n.dfs-root .service-row:hover .desc,\n.dfs-root .service-row:focus .desc {\n  color: var(--text-muted) !important;\n}\n\n\n\/* ==========================================================================\n   HAMBURGER BUTTON OVERRIDE \u2014 Hello Elementor + browser default kill\n   Split into TWO blocks so hover\/focus\/active cannot inherit `display: none`\n   from the base. The media query then re-enables display for all states.\n   ========================================================================== *\/\n\n\/* 1. Base button \u2014 hidden on desktop, visual reset *\/\n.dfs-root .menu-toggle {\n  background: transparent !important;\n  border: 1px solid var(--border) !important;\n  border-radius: 10px !important;\n  box-shadow: none !important;\n  outline: none !important;\n  transform: none !important;\n  transition: none !important;\n  animation: none !important;\n  filter: none !important;\n  opacity: 1 !important;\n  padding: 0 !important;\n  width: 44px !important;\n  height: 44px !important;\n  color: var(--text) !important;\n  -webkit-tap-highlight-color: transparent !important;\n  display: none !important;\n  cursor: pointer !important;\n  position: relative !important;\n  z-index: 60 !important;\n}\n\n\/* 2. Interaction states \u2014 DO NOT touch `display`; just neutralise theme styling *\/\n.dfs-root .menu-toggle:hover,\n.dfs-root .menu-toggle:focus,\n.dfs-root .menu-toggle:focus-visible,\n.dfs-root .menu-toggle:active {\n  background: transparent !important;\n  border-color: var(--border) !important;\n  box-shadow: none !important;\n  outline: none !important;\n  transform: none !important;\n  filter: none !important;\n  opacity: 1 !important;\n}\n\n\/* 3. Mobile \u2014 re-enable display for the button AND every state *\/\n@media (max-width: 900px) {\n  .dfs-root .menu-toggle,\n  .dfs-root .menu-toggle:hover,\n  .dfs-root .menu-toggle:focus,\n  .dfs-root .menu-toggle:focus-visible,\n  .dfs-root .menu-toggle:active {\n    display: inline-flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n  }\n}\n\n\/* 4. Inner SVG \u2014 transparent and properly styled lines *\/\n.dfs-root .menu-toggle .ham,\n.dfs-root .menu-toggle svg {\n  background: transparent !important;\n  width: 32px !important;\n  height: 32px !important;\n}\n.dfs-root .menu-toggle .line {\n  fill: none !important;\n  stroke: var(--text) !important;\n  stroke-width: 7 !important;\n  stroke-linecap: round !important;\n}\n\n\n\n\/* ==========================================================================\n   BRAND LOGO HOVER FIX\n   Hello Elementor a:hover changes link color and was tinting the brand\n   \"DawnForge\" wordmark on hover. Lock it to var(--text) (white) in every state.\n   The \"Studios\" suffix keeps its inline muted style via inline style attribute.\n   ========================================================================== *\/\n.dfs-root a.brand,\n.dfs-root a.brand:link,\n.dfs-root a.brand:visited,\n.dfs-root a.brand:hover,\n.dfs-root a.brand:focus,\n.dfs-root a.brand:focus-visible,\n.dfs-root a.brand:active {\n  color: var(--text) !important;\n  text-decoration: none !important;\n}\n.dfs-root a.brand > span,\n.dfs-root a.brand:hover > span,\n.dfs-root a.brand:focus > span {\n  color: inherit;\n}\n\n\n\n\/* ==========================================================================\n   LANG TOGGLE \u2014 anchor variant (used in BG\/EN split pages).\n   The original CSS targets <button> only; this adds <a> variant support so\n   the toggle becomes real <a href=\"...\"> links to the cross-language URL.\n   ========================================================================== *\/\n.dfs-root .lang-toggle a {\n  padding: 6px 14px !important;\n  border-radius: 999px !important;\n  font-family: var(--font-display) !important;\n  font-size: 0.78rem !important;\n  font-weight: 600 !important;\n  letter-spacing: 0.06em !important;\n  color: var(--text-muted) !important;\n  background: transparent !important;\n  border: none !important;\n  cursor: pointer !important;\n  text-decoration: none !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  transition: color 160ms var(--ease-out), background 160ms var(--ease-out) !important;\n}\n.dfs-root .lang-toggle a[aria-pressed=\"true\"] {\n  background: #ffffff !important;\n  color: #0a0814 !important;\n}\n.dfs-root .lang-toggle a:hover,\n.dfs-root .lang-toggle a:focus {\n  color: var(--text) !important;\n}\n.dfs-root .lang-toggle a[aria-pressed=\"true\"]:hover,\n.dfs-root .lang-toggle a[aria-pressed=\"true\"]:focus {\n  color: #0a0814 !important;\n}\n\n<\/style>\n<\/head>\n<body>\n<div class=\"dfs-root\">\n<a class=\"skip-link\" href=\"#main\"><span class=\"lang-en\">Skip to content<\/span><\/a>\n\n<div class=\"bg-stage\" aria-hidden=\"true\">\n  <div class=\"orb orb-violet\"><\/div>\n  <div class=\"orb orb-orange\"><\/div>\n  <div class=\"orb orb-violet-2\"><\/div>\n  <canvas class=\"bg-particles\"><\/canvas>\n<\/div>\n<div class=\"grid-mesh\" aria-hidden=\"true\"><\/div>\n<div class=\"noise\" aria-hidden=\"true\"><\/div>\n\n<header class=\"site-header\">\n  <div class=\"container nav\">\n    <a class=\"brand\" href=\"\/en\/\">\n      <span class=\"brand-logo\"><img decoding=\"async\" src=\"https:\/\/spcdn.shortpixel.ai\/spio\/ret_img,q_cdnize,to_auto,s_dwebp:avif\/dawnforgestudios.com\/wp-content\/uploads\/2026\/06\/dawnforge-logo.png\" alt=\"DawnForge Studios\" title=\"\"><\/span>\n      <span>DawnForge<span style=\"color:var(--text-muted);\"> Studios<\/span><\/span>\n    <\/a>\n    <nav class=\"nav-links\" aria-label=\"Primary\">\n      <a class=\"nav-link\" href=\"\/en\/\"><span class=\"lang-en\">Home<\/span><\/a>\n      <a class=\"nav-link\" href=\"\/en\/services\/\"><span class=\"lang-en\">Services<\/span><\/a>\n      <a class=\"nav-link\" href=\"\/en\/our-work\/\"><span class=\"lang-en\">Our Work<\/span><\/a>\n      <a class=\"nav-link\" href=\"\/en\/about\/\"><span class=\"lang-en\">About<\/span><\/a>\n      <a class=\"nav-link\" href=\"\/en\/contacts\/\"><span class=\"lang-en\">Contacts<\/span><\/a>\n    <\/nav>\n    <div class=\"nav-cluster\">\n      <div class=\"lang-toggle\" role=\"group\" aria-label=\"Language\">\n        <a href=\"#\" data-lang=\"bg\" aria-pressed=\"false\">BG<\/a>\n        <a href=\"#\" data-lang=\"en\" aria-pressed=\"false\">EN<\/a>\n      <\/div>\n      <a class=\"btn btn-primary btn-sm nav-cta-desktop\" href=\"\/en\/contacts\/\">\n        <span class=\"lang-en\">Free Consultation<\/span>\n        <span class=\"arrow\">\u2192<\/span>\n      <\/a>\n      <button class=\"menu-toggle\" aria-label=\"Menu\" aria-expanded=\"false\">\n        <svg class=\"ham\" viewBox=\"0 0 100 100\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\">\n          <line class=\"line line-top\"    x1=\"15\" y1=\"33\" x2=\"85\" y2=\"33\"\/>\n          <line class=\"line line-middle\" x1=\"15\" y1=\"50\" x2=\"85\" y2=\"50\"\/>\n          <line class=\"line line-bottom\" x1=\"15\" y1=\"67\" x2=\"85\" y2=\"67\"\/>\n        <\/svg>\n      <\/button>\n    <\/div>\n  <\/div>\n<\/header>\n\n<div class=\"mobile-menu\" aria-label=\"Mobile\">\n  <a class=\"nav-link\" href=\"\/en\/\"><span class=\"lang-en\">Home<\/span><\/a>\n  <a class=\"nav-link\" href=\"\/en\/services\/\"><span class=\"lang-en\">Services<\/span><\/a>\n  <a class=\"nav-link\" href=\"\/en\/our-work\/\"><span class=\"lang-en\">Our Work<\/span><\/a>\n  <a class=\"nav-link\" href=\"\/en\/about\/\"><span class=\"lang-en\">About<\/span><\/a>\n  <a class=\"nav-link\" href=\"\/en\/contacts\/\"><span class=\"lang-en\">Contacts<\/span><\/a>\n  <a class=\"btn btn-primary\" href=\"\/en\/contacts\/\"><span class=\"lang-en\">Free Consultation<\/span> <span class=\"arrow\">\u2192<\/span><\/a>\n<\/div>\n\n<main id=\"main\" class=\"page\">\n\n  <section style=\"padding-top: var(--s-9); padding-bottom: var(--s-9);\">\n    <div class=\"container\">\n      <article class=\"legal-shell reveal\">\n\n        <h1>\n          \n          <span class=\"lang-en\">Terms &amp; Conditions<\/span>\n        <\/h1>\n        <div class=\"meta\">\n          \n          <span class=\"lang-en\">Last updated: May 15, 2026<\/span>\n        <\/div>\n\n        <p>\n          \n          <span class=\"lang-en\">These Terms govern the relationship between DawnForge Studios and our clients. By using our website and services, you accept these terms.<\/span>\n        <\/p>\n\n        <h2><span class=\"lang-en\">1. Acceptance<\/span><\/h2>\n        <p>\n          \n          <span class=\"lang-en\">By accessing the site or entering into a service agreement with us, you confirm that you have read, understood, and accepted these Terms.<\/span>\n        <\/p>\n\n        <h2><span class=\"lang-en\">2. Services<\/span><\/h2>\n        <p>\n          \n          <span class=\"lang-en\">DawnForge Studios provides services in digital marketing, business consulting, website creation, social media, and AI systematisation. The specific scope, timelines, and deliverables are defined in a separate proposal or contract.<\/span>\n        <\/p>\n\n        <h2><span class=\"lang-en\">3. Payment<\/span><\/h2>\n        <p>\n          \n          <span class=\"lang-en\">Payment terms are agreed per project and outlined in the proposal. We typically require an advance payment before work begins.<\/span>\n        <\/p>\n\n        <h2><span class=\"lang-en\">4. Intellectual property<\/span><\/h2>\n        <p>\n          \n          <span class=\"lang-en\">Upon full payment of the agreed fee, all final deliverables become the property of the client. Working files, methodologies, and internal tools remain the property of DawnForge Studios.<\/span>\n        <\/p>\n\n        <h2><span class=\"lang-en\">5. Confidentiality<\/span><\/h2>\n        <p>\n          \n          <span class=\"lang-en\">We treat as confidential all information you share about your business. We are happy to sign a Non-Disclosure Agreement (NDA) upon request.<\/span>\n        <\/p>\n\n        <h2><span class=\"lang-en\">6. Limitation of liability<\/span><\/h2>\n        <p>\n          \n          <span class=\"lang-en\">DawnForge Studios is not liable for indirect or consequential damages arising from the use of our services. Our maximum liability is limited to the amount paid under the relevant project.<\/span>\n        <\/p>\n\n        <h2><span class=\"lang-en\">7. Governing law<\/span><\/h2>\n        <p>\n          \n          <span class=\"lang-en\">These Terms are governed by the law of the Republic of Bulgaria. Any disputes shall be resolved by the competent Bulgarian courts.<\/span>\n        <\/p>\n\n        <h2><span class=\"lang-en\">8. Contact<\/span><\/h2>\n        <p>\n          \n          <span class=\"lang-en\">For questions about these Terms, contact us at team@dawnforgestudios.com.<\/span>\n        <\/p>\n\n        <p style=\"margin-top: var(--s-8); font-size: 0.85rem; color: var(--text-faint);\">\n          \n          <span class=\"lang-en\">This document is a general template. Before publication it should undergo legal review to match DawnForge Studios' specific operations and legal form.<\/span>\n        <\/p>\n\n      <\/article>\n    <\/div>\n  <\/section>\n\n<\/main>\n\n<footer class=\"site-footer\">\n  <div class=\"container\">\n    <div class=\"footer-grid\">\n      <div class=\"footer-col\">\n        <a class=\"brand\" href=\"\/en\/\" style=\"margin-bottom: var(--s-4);\">\n          <span class=\"brand-logo\"><img decoding=\"async\" src=\"https:\/\/spcdn.shortpixel.ai\/spio\/ret_img,q_cdnize,to_auto,s_dwebp:avif\/dawnforgestudios.com\/wp-content\/uploads\/2026\/06\/dawnforge-logo.png\" alt=\"DawnForge Studios\" title=\"\"><\/span>\n          <span>DawnForge<span style=\"color:var(--text-muted);\"> Studios<\/span><\/span>\n        <\/a>\n        <p class=\"footer-tagline\"><span class=\"lang-en\">AI-augmented digital agency. Sofia, Bulgaria.<\/span><\/p>\n        <div class=\"socials icon-row\">\n          <a class=\"social-icon\" href=\"https:\/\/www.linkedin.com\/company\/dawnforge-studios\/\" target=\"_blank\" rel=\"noopener\" aria-label=\"LinkedIn\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M4.98 3.5C4.98 4.88 3.87 6 2.5 6S0 4.88 0 3.5 1.12 1 2.5 1s2.48 1.12 2.48 2.5zM.2 8h4.6V24H.2V8zM8 8h4.4v2.2h.07c.61-1.16 2.11-2.4 4.34-2.4 4.65 0 5.51 3.06 5.51 7.04V24h-4.6v-7.06c0-1.68-.03-3.85-2.35-3.85-2.35 0-2.71 1.84-2.71 3.73V24H8V8z\"\/><\/svg><\/a>\n          <a class=\"social-icon\" href=\"https:\/\/www.instagram.com\/dawnforgestudios\/\" target=\"_blank\" rel=\"noopener\" aria-label=\"Instagram\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" aria-hidden=\"true\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"5\"\/><circle cx=\"12\" cy=\"12\" r=\"4\"\/><circle cx=\"17.5\" cy=\"6.5\" r=\"1\" fill=\"currentColor\"\/><\/svg><\/a>\n          <a class=\"social-icon\" href=\"https:\/\/www.facebook.com\/dawnforgestudios\" target=\"_blank\" rel=\"noopener\" aria-label=\"Facebook\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M22 12.07C22 6.51 17.52 2 12 2S2 6.51 2 12.07c0 5.02 3.66 9.18 8.44 9.93v-7.02H7.9v-2.91h2.54V9.85c0-2.52 1.49-3.91 3.78-3.91 1.09 0 2.24.2 2.24.2v2.47h-1.26c-1.24 0-1.63.77-1.63 1.56v1.87h2.77l-.44 2.91h-2.33V22c4.78-.75 8.44-4.91 8.44-9.93z\"\/><\/svg><\/a>\n        <\/div>\n      <\/div>\n      <div class=\"footer-col\">\n        <h4><span class=\"lang-en\">Navigation<\/span><\/h4>\n        <ul>\n          <li><a href=\"\/en\/\"><span class=\"lang-en\">Home<\/span><\/a><\/li>\n          <li><a href=\"\/en\/services\/\"><span class=\"lang-en\">Services<\/span><\/a><\/li>\n          <li><a href=\"\/en\/our-work\/\"><span class=\"lang-en\">Our Work<\/span><\/a><\/li>\n          <li><a href=\"\/en\/about\/\"><span class=\"lang-en\">About<\/span><\/a><\/li>\n          <li><a href=\"\/en\/contacts\/\"><span class=\"lang-en\">Contacts<\/span><\/a><\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"footer-col\">\n        <h4><span class=\"lang-en\">Services<\/span><\/h4>\n        <ul>\n          <li><a href=\"\/en\/services\/#consulting\"><span class=\"lang-en\">Business Consulting<\/span><\/a><\/li>\n          <li><a href=\"\/en\/services\/#marketing\"><span class=\"lang-en\">Marketing<\/span><\/a><\/li>\n          <li><a href=\"\/en\/services\/#web\"><span class=\"lang-en\">Web &amp; App Development<\/span><\/a><\/li>\n          <li><a href=\"\/en\/services\/#social\"><span class=\"lang-en\">Social Media<\/span><\/a><\/li>\n          <li><a href=\"\/en\/services\/#ai\"><span class=\"lang-en\">Systematisation &amp; AI<\/span><\/a><\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"footer-col\">\n        <h4><span class=\"lang-en\">Contacts<\/span><\/h4>\n        <ul>\n          <li><a href=\"mailto:team@dawnforgestudios.com\">team@dawnforgestudios.com<\/a><\/li>\n          <li><a href=\"tel:+359899184524\">+359 899 184 524<\/a><\/li>\n          <li><span class=\"lang-en\">Sofia, Bulgaria<\/span><\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n    <div class=\"footer-bottom\">\n      <div>\u00a9 2026 DawnForge Studios. <span class=\"lang-en\">All rights reserved.<\/span><\/div>\n      <div class=\"footer-bottom-links\">\n        <a href=\"\/en\/privacy\/\"><span class=\"lang-en\">Privacy<\/span><\/a>\n        <a href=\"\/en\/terms\/\"><span class=\"lang-en\">Terms<\/span><\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/footer>\n<\/div>\n<script>\n\/* DawnForge Studios \u2014 site.js\n   Language toggle \u00b7 mobile menu \u00b7 scroll reveal \u00b7 count-up \u00b7 canvas particles\n   \u00b7 contact form \u00b7 marquee duplication \u00b7 sticky-nav state \u00b7 magnetic CTAs\n   ------------------------------------------------------------------ *\/\n\n(function () {\n  'use strict';\n\n  const prefersReducedMotion =\n    window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  \/* ---------- Language toggle (BG default, persisted) ---------- *\/\n  const LS_KEY = 'dawnforge.lang';\n  function setLang(lang) {\n    const v = (lang === 'en') ? 'en' : 'bg';\n    document.documentElement.setAttribute('data-lang', v);\n    document.documentElement.setAttribute('lang', v === 'bg' ? 'bg' : 'en');\n    try { localStorage.setItem(LS_KEY, v); } catch (e) {}\n    document.querySelectorAll('.lang-toggle button').forEach((b) => {\n      b.setAttribute('aria-pressed', String(b.dataset.lang === v));\n    });\n  }\n  const saved = (function () {\n    try { return localStorage.getItem(LS_KEY); } catch (e) { return null; }\n  })();\n  setLang(saved || 'bg');\n  document.addEventListener('click', (e) => {\n    const btn = e.target.closest('.lang-toggle button');\n    if (btn) setLang(btn.dataset.lang);\n  });\n\n  \/* ---------- Sticky nav state ---------- *\/\n  const header = document.querySelector('.site-header');\n  if (header) {\n    let last = 0;\n    const onScroll = () => {\n      const y = window.scrollY;\n      header.classList.toggle('scrolled', y > 24);\n      last = y;\n    };\n    onScroll();\n    window.addEventListener('scroll', onScroll, { passive: true });\n  }\n\n  \/* ---------- Mobile menu ---------- *\/\n  const menuBtn = document.querySelector('.menu-toggle');\n  if (menuBtn) {\n    menuBtn.addEventListener('click', () => {\n      const open = document.body.getAttribute('data-menu') === 'open';\n      document.body.setAttribute('data-menu', open ? 'closed' : 'open');\n      menuBtn.setAttribute('aria-expanded', String(!open));\n    });\n    document.querySelectorAll('.mobile-menu .nav-link').forEach((a) =>\n      a.addEventListener('click', () => {\n        document.body.setAttribute('data-menu', 'closed');\n        menuBtn.setAttribute('aria-expanded', 'false');\n      })\n    );\n  }\n\n  \/* ---------- Scroll reveal ---------- *\/\n  if (!prefersReducedMotion && 'IntersectionObserver' in window) {\n    const io = new IntersectionObserver(\n      (entries) => {\n        entries.forEach((e) => {\n          if (e.isIntersecting) {\n            const target = e.target;\n            const delay = parseFloat(target.dataset.delay || '0');\n            if (delay) target.style.transitionDelay = delay + 'ms';\n            target.classList.add('is-in');\n            io.unobserve(target);\n          }\n        });\n      },\n      { threshold: 0.12, rootMargin: '0px 0px -8% 0px' }\n    );\n    document\n      .querySelectorAll('.reveal, .reveal-x')\n      .forEach((el) => io.observe(el));\n  } else {\n    document\n      .querySelectorAll('.reveal, .reveal-x')\n      .forEach((el) => el.classList.add('is-in'));\n  }\n\n  \/* ---------- Count-up stats ---------- *\/\n  const easeOutExpo = (t) => (t === 1 ? 1 : 1 - Math.pow(2, -10 * t));\n  function countUp(el) {\n    const target = parseFloat(el.dataset.count || el.textContent);\n    if (isNaN(target)) return;\n    const suffix = el.dataset.suffix || '';\n    const duration = 1800;\n    const startTime = performance.now();\n    function frame(now) {\n      const t = Math.min(1, (now - startTime) \/ duration);\n      const v = easeOutExpo(t) * target;\n      const out =\n        target % 1 === 0\n          ? Math.round(v).toLocaleString('bg-BG')\n          : v.toFixed(1);\n      el.textContent = out + suffix;\n      if (t < 1) requestAnimationFrame(frame);\n    }\n    requestAnimationFrame(frame);\n  }\n  if (!prefersReducedMotion && 'IntersectionObserver' in window) {\n    const statsIo = new IntersectionObserver(\n      (entries) => {\n        entries.forEach((e) => {\n          if (e.isIntersecting) {\n            countUp(e.target);\n            statsIo.unobserve(e.target);\n          }\n        });\n      },\n      { threshold: 0.5 }\n    );\n    document.querySelectorAll('[data-count]').forEach((el) => statsIo.observe(el));\n  } else {\n    document.querySelectorAll('[data-count]').forEach((el) => {\n      const suffix = el.dataset.suffix || '';\n      el.textContent = el.dataset.count + suffix;\n    });\n  }\n\n  \/* ---------- Marquee duplication for seamless loop ---------- *\/\n  document.querySelectorAll('.marquee-track').forEach((track) => {\n    const clone = track.innerHTML;\n    track.innerHTML = clone + clone;\n  });\n\n  \/* ---------- Canvas particle field ---------- *\/\n  function setupParticles() {\n    if (prefersReducedMotion) return;\n    if (window.matchMedia('(max-width: 720px)').matches) return;\n    const c = document.querySelector('.bg-particles');\n    if (!c) return;\n    const ctx = c.getContext('2d');\n    let w, h, dpr;\n    function resize() {\n      dpr = Math.min(window.devicePixelRatio || 1, 2);\n      w = c.width  = window.innerWidth * dpr;\n      h = c.height = window.innerHeight * dpr;\n      c.style.width  = window.innerWidth + 'px';\n      c.style.height = window.innerHeight + 'px';\n      ctx.scale(dpr, dpr);\n    }\n    resize();\n    window.addEventListener('resize', () => {\n      ctx.setTransform(1, 0, 0, 1, 0, 0);\n      resize();\n    });\n\n    const count = Math.min(70, Math.floor((window.innerWidth * window.innerHeight) \/ 22000));\n    const parts = [];\n    for (let i = 0; i < count; i++) {\n      parts.push({\n        x: Math.random() * window.innerWidth,\n        y: Math.random() * window.innerHeight,\n        vx: (Math.random() - 0.5) * 0.15,\n        vy: (Math.random() - 0.5) * 0.15,\n        r: Math.random() * 1.4 + 0.4,\n        c: Math.random() > 0.7\n          ? 'rgba(250,122,57,0.55)'\n          : 'rgba(180,170,240,0.45)',\n      });\n    }\n\n    function tick() {\n      ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n      for (const p of parts) {\n        p.x += p.vx; p.y += p.vy;\n        if (p.x < 0) p.x = window.innerWidth;\n        if (p.x > window.innerWidth) p.x = 0;\n        if (p.y < 0) p.y = window.innerHeight;\n        if (p.y > window.innerHeight) p.y = 0;\n        ctx.beginPath();\n        ctx.arc(p.x, p.y, p.r, 0, Math.PI * 2);\n        ctx.fillStyle = p.c;\n        ctx.fill();\n      }\n      requestAnimationFrame(tick);\n    }\n    tick();\n  }\n  if (document.readyState === 'complete') setupParticles();\n  else window.addEventListener('load', setupParticles);\n\n  \/* ---------- Spotlight + tilt cursor tracking ---------- *\/\n  if (!prefersReducedMotion && window.matchMedia('(any-hover: hover)').matches) {\n    \/\/ Spotlight track: any element with [data-spot]\n    document.querySelectorAll('[data-spot]').forEach((el) => {\n      el.addEventListener('mousemove', (e) => {\n        const r = el.getBoundingClientRect();\n        const x = ((e.clientX - r.left) \/ r.width) * 100;\n        const y = ((e.clientY - r.top) \/ r.height) * 100;\n        el.style.setProperty('--spot-x', x + '%');\n        el.style.setProperty('--spot-y', y + '%');\n      });\n    });\n\n    \/\/ Tilt: 3D rotateX\/rotateY on hover, throttled via rAF\n    document.querySelectorAll('[data-tilt]').forEach((el) => {\n      let raf = null;\n      const maxTilt = 6; \/\/ degrees\n      el.addEventListener('mousemove', (e) => {\n        if (raf) cancelAnimationFrame(raf);\n        raf = requestAnimationFrame(() => {\n          const r = el.getBoundingClientRect();\n          const px = (e.clientX - r.left) \/ r.width;\n          const py = (e.clientY - r.top) \/ r.height;\n          const rotY = (px - 0.5) * 2 * maxTilt;\n          const rotX = (0.5 - py) * 2 * maxTilt;\n          el.style.transform = `perspective(900px) rotateX(${rotX}deg) rotateY(${rotY}deg) translateY(-2px)`;\n          el.style.setProperty('--spot-x', (px * 100) + '%');\n          el.style.setProperty('--spot-y', (py * 100) + '%');\n        });\n      });\n      el.addEventListener('mouseleave', () => {\n        el.style.transform = '';\n      });\n    });\n  }\n\n  \/* ---------- Hero parallax (rings react to mouse) ---------- *\/\n  if (!prefersReducedMotion && window.matchMedia('(any-hover: hover)').matches) {\n    const hero3d = document.querySelector('.hero-3d');\n    if (hero3d) {\n      window.addEventListener('mousemove', (e) => {\n        const x = (e.clientX \/ window.innerWidth - 0.5) * 14;\n        const y = (e.clientY \/ window.innerHeight - 0.5) * 14;\n        hero3d.style.transform = `translateY(-50%) translate(${x}px, ${y}px)`;\n      }, { passive: true });\n    }\n  }\n\n  \/* ---------- Magnetic CTA (hero primary button) ---------- *\/\n  if (!prefersReducedMotion && window.matchMedia('(any-hover: hover)').matches) {\n    document.querySelectorAll('[data-magnetic]').forEach((btn) => {\n      const strength = 0.25;\n      btn.addEventListener('mousemove', (e) => {\n        const r = btn.getBoundingClientRect();\n        const x = (e.clientX - r.left - r.width \/ 2) * strength;\n        const y = (e.clientY - r.top - r.height \/ 2) * strength;\n        btn.style.transform = `translate(${x}px, ${y}px)`;\n      });\n      btn.addEventListener('mouseleave', () => {\n        btn.style.transform = '';\n      });\n    });\n  }\n\n  \/* ---------- Custom select (brand-styled dropdown) ---------- *\/\n  document.querySelectorAll('.cs-select').forEach((cs) => {\n    const trigger = cs.querySelector('.cs-trigger');\n    const valueEl = cs.querySelector('.cs-value');\n    const hidden = cs.querySelector('input[type=\"hidden\"]');\n    if (!trigger || !valueEl || !hidden) return;\n\n    const open  = () => { cs.classList.add('is-open'); trigger.setAttribute('aria-expanded', 'true'); };\n    const close = () => { cs.classList.remove('is-open'); trigger.setAttribute('aria-expanded', 'false'); };\n\n    trigger.addEventListener('click', (e) => {\n      e.stopPropagation();\n      if (cs.classList.contains('is-open')) close(); else open();\n    });\n\n    cs.querySelectorAll('.cs-option').forEach((opt) => {\n      opt.addEventListener('click', () => {\n        cs.querySelectorAll('.cs-option').forEach((o) => o.setAttribute('aria-selected', 'false'));\n        opt.setAttribute('aria-selected', 'true');\n        hidden.value = opt.dataset.value || '';\n        \/\/ Move the chosen option's inner spans into the trigger value to keep\n        \/\/ BG\/EN language switching working on the displayed label.\n        valueEl.classList.remove('cs-placeholder');\n        valueEl.innerHTML = opt.innerHTML;\n        close();\n      });\n    });\n\n    document.addEventListener('click', (e) => {\n      if (!cs.contains(e.target)) close();\n    });\n    document.addEventListener('keydown', (e) => {\n      if (e.key === 'Escape') close();\n    });\n  });\n\n  \/* ---------- Contact form (no backend; mailto fallback + UX states) ---------- *\/\n  const form = document.querySelector('#contact-form');\n  if (form) {\n    const feedback = form.querySelector('.form-feedback');\n    const submitBtn = form.querySelector('button[type=\"submit\"]');\n    form.addEventListener('submit', (e) => {\n      e.preventDefault();\n      const data = new FormData(form);\n      const name = (data.get('name') || '').toString().trim();\n      const email = (data.get('email') || '').toString().trim();\n      const message = (data.get('message') || '').toString().trim();\n      if (!name || !email || !message) {\n        showFeedback('err', '\u041c\u043e\u043b\u044f \u043f\u043e\u043f\u044a\u043b\u043d\u0435\u0442\u0435 \u0432\u0441\u0438\u0447\u043a\u0438 \u0437\u0430\u0434\u044a\u043b\u0436\u0438\u0442\u0435\u043b\u043d\u0438 \u043f\u043e\u043b\u0435\u0442\u0430. \/ Please fill in all required fields.');\n        return;\n      }\n      submitBtn.disabled = true;\n      submitBtn.dataset.state = 'loading';\n      const original = submitBtn.textContent;\n      submitBtn.innerHTML = '<span class=\"lang-en\">Sending\u2026<\/span>';\n\n      \/\/ Mailto fallback \u2014 opens user's mail client with prefilled message.\n      const subject = encodeURIComponent('\u0417\u0430\u043f\u0438\u0442\u0432\u0430\u043d\u0435 \u043e\u0442 \u0443\u0435\u0431\u0441\u0430\u0439\u0442 \/ Website inquiry \u2014 ' + name);\n      const body = encodeURIComponent(\n        '\u0418\u043c\u0435 \/ Name: ' + name + '\\n' +\n        '\u0418\u043c\u0435\u0439\u043b \/ Email: ' + email + '\\n' +\n        '\u0422\u0435\u043b\u0435\u0444\u043e\u043d \/ Phone: ' + (data.get('phone') || '') + '\\n' +\n        '\u0423\u0441\u043b\u0443\u0433\u0430 \/ Service: ' + (data.get('service') || '') + '\\n\\n' +\n        (data.get('message') || '')\n      );\n      window.location.href = 'mailto:team@dawnforgestudios.com?subject=' + subject + '&body=' + body;\n\n      setTimeout(() => {\n        submitBtn.disabled = false;\n        submitBtn.dataset.state = '';\n        submitBtn.innerHTML = original;\n        showFeedback('ok', '\u0413\u043e\u0442\u043e\u0432\u043e \u2014 \u043e\u0442\u0432\u043e\u0440\u0438\u0445\u043c\u0435 \u0432\u0430\u0448\u0438\u044f \u043c\u0435\u0439\u043b \u043a\u043b\u0438\u0435\u043d\u0442 \u0441 \u043f\u043e\u043f\u044a\u043b\u043d\u0435\u043d\u043e \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435. \/ Done \u2014 your mail client opened with the message prefilled.');\n      }, 800);\n    });\n\n    function showFeedback(kind, msg) {\n      feedback.className = 'form-feedback show ' + kind;\n      feedback.textContent = msg;\n    }\n  }\n})();\n<\/script>\n<script>\n\n\/* Language toggle \u2014 works on both BG and EN versions of any page.\n   Reads window.location.pathname and builds the cross-language URL.\n   \/services\/ \u2192 BG button active, EN button \u2192 \/en\/services\/\n   \/en\/services\/ \u2192 EN button active, BG button \u2192 \/services\/ *\/\n(function() {\n  var tog = document.querySelector('.dfs-root .lang-toggle');\n  if (!tog) return;\n  var path = window.location.pathname;\n  var isEN = \/^\\\/en(\\\/|$)\/.test(path);\n  var bgPath = isEN ? (path.replace(\/^\\\/en\/, '') || '\/') : path;\n  var enPath = isEN ? path : (path === '\/' ? '\/en\/' : '\/en' + path);\n  var bgBtn = tog.querySelector('[data-lang=\"bg\"]');\n  var enBtn = tog.querySelector('[data-lang=\"en\"]');\n  if (bgBtn) {\n    bgBtn.setAttribute('href', bgPath);\n    bgBtn.setAttribute('aria-pressed', isEN ? 'false' : 'true');\n  }\n  if (enBtn) {\n    enBtn.setAttribute('href', enPath);\n    enBtn.setAttribute('aria-pressed', isEN ? 'true' : 'false');\n  }\n  \/* Also reflect language on the wrapper for any data-lang dependent CSS still\n     present (harmless if no opposite-lang spans exist). *\/\n  document.documentElement.setAttribute('data-lang', isEN ? 'en' : 'bg');\n})();\n\n<\/script>\n<\/body>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Skip to content DawnForge Studios Home Services Our Work About Contacts BG EN Free Consultation \u2192 Home Services Our Work About Contacts Free Consultation \u2192 Terms &amp; Conditions Last updated: May 15, 2026 These Terms govern the relationship between DawnForge Studios and our clients. By using our website and services, you accept these terms. 1. [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-14108","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/dawnforgestudios.com\/en\/wp-json\/wp\/v2\/pages\/14108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dawnforgestudios.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dawnforgestudios.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dawnforgestudios.com\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/dawnforgestudios.com\/en\/wp-json\/wp\/v2\/comments?post=14108"}],"version-history":[{"count":8,"href":"https:\/\/dawnforgestudios.com\/en\/wp-json\/wp\/v2\/pages\/14108\/revisions"}],"predecessor-version":[{"id":14171,"href":"https:\/\/dawnforgestudios.com\/en\/wp-json\/wp\/v2\/pages\/14108\/revisions\/14171"}],"wp:attachment":[{"href":"https:\/\/dawnforgestudios.com\/en\/wp-json\/wp\/v2\/media?parent=14108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}