/* ==========================================================================
   WeDo — Design System (tokens, base, chrome, components)
   Dark cinematic industrial · clay accent · Manrope + Noto Sans Georgian
   ========================================================================== */

:root{
  /* Accent (refined from the brand's existing rust) */
  --wd-accent:#ce7967; --wd-accent-deep:#b76352; --wd-accent-soft:#e69b8b; --wd-accent-tint:#fef3f2;
  /* Dark canvas */
  --wd-bg-0:#030712; --wd-bg-1:#0b0f14; --wd-surface:#111827; --wd-surface-2:#1f2937; --wd-line:#374151;
  --wd-text-hi:#f9fafb; --wd-text-mid:#9ca3af; --wd-text-dim:#8791a2; /* AA on canvas+surface (audit F13) */
  --wd-hair:rgba(255,255,255,.08); --wd-hair-2:rgba(255,255,255,.14);
  /* Themeable surfaces (swapped by [data-theme="light"]) */
  --wd-glass:rgba(9,12,18,.5); --wd-glass-strong:rgba(6,9,14,.8);
  --wd-card-a:var(--wd-surface); --wd-card-b:#0d131d; --wd-panel-b:#0b1017;
  --wd-overlay-bg:rgba(4,8,14,.45);
  --wd-menu-card-a:rgba(17,24,35,.92); --wd-menu-card-b:rgba(10,14,21,.94);
  --wd-grain-op:.035; --wd-grain-blend:overlay;

  /* Type */
  --font:'Manrope','Noto Sans Georgian',system-ui,-apple-system,sans-serif;
  --font-display-ka:'BPG ExtraSquare','Manrope','Noto Sans Georgian',system-ui,sans-serif;

  /* Spacing */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-6:24px; --sp-8:32px;
  --sp-12:48px; --sp-16:64px; --sp-24:96px; --sp-32:128px; --sp-40:160px;

  /* Radius — engineering discipline: controls 6px, panels 10-12px (audit F4).
     Pills reserved for true tags/status (language switcher). */
  --r-sm:6px; --r-md:10px; --r-lg:12px; --r-xl:12px; --r-pill:999px;

  /* Motion (from emil-design-eng craft) */
  --ease-out:cubic-bezier(.23,1,.32,1);
  --ease-drawer:cubic-bezier(.32,.72,0,1);
  --ease-inout:cubic-bezier(.77,0,.175,1);
  --dur-fast:140ms; --dur-base:320ms; --dur-slow:640ms;

  --container:1280px;
  --nav-h:56px;
}

/* Georgian display face — BPG ExtraSquare Mtavruli (self-hosted, square caps).
   Single master; declare the full weight range so bold headings aren't faux-bolded. */
@font-face{
  font-family:'BPG ExtraSquare';
  src:url('../bpg.ttf') format('truetype');
  font-weight:100 900; font-style:normal; font-display:swap;
}

/* ---------- Reset / base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body.wedo-front{
  margin:0; background:var(--wd-bg-0); color:var(--wd-text-hi);
  font-family:var(--font); font-weight:400; line-height:1.6;
  font-size:16px; letter-spacing:-.005em;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
.wedo-front img{max-width:100%; height:auto; display:block}
.wedo-front a{color:inherit; text-decoration:none}
.wedo-front h1,.wedo-front h2,.wedo-front h3,.wedo-front h4{margin:0; font-weight:700; line-height:1.08; letter-spacing:-.014em}
/* Script-specific display tuning (audit F9): Georgian needs looser leading and
   neutral tracking; long Russian headlines need a measure cap. */
:lang(ka) .wedo-front h1,:lang(ka) .wedo-front h2{line-height:1.12; letter-spacing:0}
/* Georgian display type uses the BPG square face for headings + hero. */
:lang(ka) .wedo-front h1,:lang(ka) .wedo-front h2,:lang(ka) .wedo-front h3,
:lang(ka) .wd-title,:lang(ka) .wd-eyebrow,:lang(ka) .wedo-rotator__word{
  font-family:var(--font-display-ka); letter-spacing:0;
}
:lang(ru) .wd-title{max-width:18ch}
.wedo-front p{margin:0}
.wedo-front ul,.wedo-front ol{margin:0; padding:0; list-style:none}
:focus-visible{outline:2px solid var(--wd-accent); outline-offset:3px; border-radius:4px}

.wd-container{width:100%; max-width:var(--container); margin:0 auto; padding:0 clamp(20px,5vw,48px)}
.wedo-main{position:relative; z-index:2}
.wedo-section{position:relative; padding:clamp(72px,11vw,150px) 0}
.wedo-section + .wedo-section{padding-top:0}

.wedo-skip{position:fixed; left:16px; top:-60px; z-index:120; background:var(--wd-accent); color:#1a0f0c;
  padding:10px 16px; border-radius:var(--r-pill); font-weight:700; transition:top var(--dur-base) var(--ease-out)}
.wedo-skip:focus{top:16px}

/* Film-grain: fixed, pointer-events none (perf-safe) */
.wedo-grain{position:fixed; inset:0; z-index:1; pointer-events:none; opacity:var(--wd-grain-op); mix-blend-mode:var(--wd-grain-blend);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ---------- Eyebrow — flat technical label, no pill (audit F4) ---------- */
.wd-eyebrow{display:inline-flex; align-items:center; gap:10px; margin:0 0 var(--sp-6);
  padding:0; border:0; background:none; color:var(--wd-text-mid);
  font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.18em}
.wd-eyebrow__dot{width:16px; height:2px; border-radius:0; background:var(--wd-accent); box-shadow:none}

/* ---------- Headings ---------- */
.wd-title{font-size:clamp(30px,4.4vw,58px)}
.wd-title .accent{color:var(--wd-accent)}
.wd-lede{margin-top:var(--sp-6); max-width:56ch; color:var(--wd-text-mid); font-size:clamp(16px,1.5vw,19px)}
.wd-head{max-width:820px; margin-bottom:var(--sp-16)}
.wd-head--row{max-width:none; display:flex; justify-content:space-between; align-items:flex-end; gap:var(--sp-8); flex-wrap:wrap}
.wd-head__cta{flex:none}

/* ---------- Buttons — rectangular controls, no nested circles (audit F4) ---------- */
.wd-btn{position:relative; display:inline-flex; align-items:center; gap:10px;
  padding:14px 22px; border-radius:var(--r-sm); border:1px solid transparent;
  font-family:inherit; font-size:15px; font-weight:700; letter-spacing:-.01em; cursor:pointer;
  transition:transform var(--dur-fast) var(--ease-out), background var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out); will-change:transform}
.wd-btn--sm{padding:10px 16px; font-size:13.5px}
.wd-btn:active{transform:scale(.97)}
.wd-btn__ico{display:inline-flex; align-items:center; justify-content:center; width:auto; height:auto;
  border-radius:0; background:none; color:inherit;
  transition:transform var(--dur-base) var(--ease-out)}
.wd-btn--sm .wd-btn__ico{width:auto; height:auto}
.wd-btn__ico--lead{background:none}
.wd-btn--primary{background:var(--wd-accent); color:#1c100c;
  box-shadow:0 10px 30px -12px rgba(206,121,103,.6)}
.wd-btn--ghost{background:transparent; border-color:var(--wd-hair-2); color:var(--wd-text-hi)}
.wd-btn--ghost .wd-btn__ico{background:rgba(255,255,255,.06)}
@media (hover:hover) and (pointer:fine){
  .wd-btn--primary:hover{background:var(--wd-accent-deep); transform:translateY(-2px)}
  .wd-btn--primary:hover .wd-btn__ico{transform:translateX(3px)}
  .wd-btn--ghost:hover{border-color:var(--wd-accent); color:#fff}
  .wd-btn--ghost:hover .wd-btn__ico{transform:translateX(3px)}
}

/* ---------- Card — single hairline border, no nested bezel (audit F4) ---------- */
.wd-card{position:relative; border-radius:var(--r-md); padding:0;
  background:none; border:1px solid var(--wd-hair);
  transition:border-color var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out)}
.wd-card__inner{position:relative; height:100%; border-radius:var(--r-md);
  padding:clamp(22px,2.4vw,32px); background:linear-gradient(180deg,var(--wd-card-a),var(--wd-card-b));
  box-shadow:none; overflow:hidden}
.wd-card__tick{position:absolute; top:14px; right:14px; width:18px; height:18px; opacity:0;
  border-top:1.5px solid var(--wd-accent); border-right:1.5px solid var(--wd-accent);
  transition:opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out); transform:translate(-4px,4px)}
@media (hover:hover) and (pointer:fine){
  .wd-card:hover{transform:translateY(-4px); border-color:var(--wd-hair-2)}
  .wd-card:hover .wd-card__tick{opacity:1; transform:translate(0,0)}
}

/* Panel wrapper for big visuals / CTA — single frame (audit F4) */
.wd-bezel{border-radius:var(--r-md); padding:0; background:none; border:1px solid var(--wd-hair)}
.wd-bezel__inner{position:relative; border-radius:var(--r-md); overflow:hidden;
  background:linear-gradient(180deg,var(--wd-card-a),var(--wd-panel-b)); box-shadow:none}

.wd-ico{color:var(--wd-accent)}

/* ==========================================================================
   Floating "island" nav
   ========================================================================== */
/* Bar spans the same content width as .wd-container so it lines up with the
   sections below (outer padding + inner max-width mirror the container). */
.wedo-nav{position:fixed; top:0; left:0; right:0; z-index:100; padding:9px clamp(20px,5vw,48px);
  transition:padding var(--dur-slow) var(--ease-out)}
.wedo-nav__inner{max-width:calc(var(--container) - 2 * clamp(20px,5vw,48px)); margin:0 auto; display:flex; align-items:center; gap:24px;
  padding:6px 10px 6px 18px; border-radius:var(--r-md);
  border:1px solid var(--wd-hair); background:var(--wd-glass); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px);
  transition:background var(--dur-slow) var(--ease-out), border-color var(--dur-slow) var(--ease-out), box-shadow var(--dur-slow) var(--ease-out)}
.wedo-nav.is-scrolled{padding-top:6px; padding-bottom:6px}
.wedo-nav.is-scrolled .wedo-nav__inner{background:var(--wd-glass-strong); border-color:var(--wd-hair-2); box-shadow:0 20px 40px -24px rgba(0,0,0,.8)}
.wedo-logo{display:inline-flex; flex:none; align-items:center; line-height:0}
.wedo-logo__fallback{font-size:19px; font-weight:800; letter-spacing:.02em; line-height:1}
.wedo-logo__fallback b{color:var(--wd-accent); font-weight:800}
.wedo-brandmark{position:relative; display:block; overflow:hidden; aspect-ratio:508/133}
.wedo-brandmark--nav{width:128px}
.wedo-brandmark--overlay{width:124px}
.wedo-brandmark--footer{width:132px}
.wedo-brandmark__image{position:absolute; top:0; left:0; width:167.323%; max-width:none; height:auto;
  transform:translate(-12.706%,-34.941%); opacity:1; transition:opacity var(--dur-fast) var(--ease-out)}
.wedo-brandmark__image--light-surface{opacity:0}
[data-theme="light"] .wedo-brandmark__image--dark-surface{opacity:0}
[data-theme="light"] .wedo-brandmark__image--light-surface{opacity:1}
.wedo-brandmark__custom{display:block; width:auto; height:26px; object-fit:contain}
.wedo-brandmark__custom--overlay{height:32px}
.wedo-brandmark__custom--footer{height:34px}
/* Inline menu parked for now — navigation lives in the burger card (client
   direction). Markup stays for a quick re-enable. */
.wedo-menu{display:none}
.wedo-menu__list{display:flex; align-items:center; gap:4px}
.wedo-menu__list a{position:relative; display:inline-block; padding:8px 14px; color:var(--wd-text-mid);
  font-size:14px; font-weight:600; transition:color var(--dur-base) var(--ease-out)}
.wedo-menu__list a::after{content:""; position:absolute; left:14px; right:14px; bottom:4px; height:1.5px;
  background:var(--wd-accent); transform:scaleX(0); transform-origin:left; transition:transform var(--dur-base) var(--ease-out)}
@media (hover:hover) and (pointer:fine){
  .wedo-menu__list a:hover{color:var(--wd-text-hi)}
  .wedo-menu__list a:hover::after{transform:scaleX(1)}
}
.wedo-menu__list .current-menu-item>a,.wedo-menu__list .current_page_item>a{color:var(--wd-text-hi)}
.wedo-nav__actions{display:flex; align-items:center; gap:10px; margin-left:auto}
.wedo-lang{display:flex; align-items:center; gap:2px; padding:3px; border:1px solid var(--wd-hair); border-radius:var(--r-pill)}
.wedo-lang__item{padding:5px 9px; font-size:12px; font-weight:700; color:var(--wd-text-dim); border-radius:var(--r-pill);
  transition:color var(--dur-base) var(--ease-out), background var(--dur-base) var(--ease-out)}
.wedo-lang__item.is-active{color:#1c100c; background:var(--wd-accent)}
@media (hover:hover) and (pointer:fine){.wedo-lang__item:hover:not(.is-active){color:var(--wd-text-hi)}}
.wedo-nav__inner{position:relative}
.wedo-logo--center{position:absolute; left:50%; transform:translateX(-50%)}
.wedo-burger{display:block; flex:none; width:42px; height:42px; border:1px solid var(--wd-hair); border-radius:var(--r-sm);
  background:transparent; cursor:pointer; position:relative;
  transition:border-color var(--dur-base) var(--ease-out), transform var(--dur-fast) var(--ease-out)}
.wedo-burger:active{transform:scale(.94)}
@media (hover:hover) and (pointer:fine){.wedo-burger:hover{border-color:var(--wd-accent)}}
.wedo-burger span{position:absolute; left:11px; right:11px; height:1.6px; background:var(--wd-text-hi);
  transition:transform var(--dur-base) var(--ease-drawer), opacity var(--dur-fast) linear}
.wedo-burger span:nth-child(1){top:16px} .wedo-burger span:nth-child(2){bottom:16px}
.wedo-burger[aria-expanded="true"] span:nth-child(1){transform:translateY(4px) rotate(45deg)}
.wedo-burger[aria-expanded="true"] span:nth-child(2){transform:translateY(-4px) rotate(-45deg)}

/* Menu overlay — Nothing-style: page blurs hard, a centered card comes out */
/* CRITICAL: author display:flex overrides the UA [hidden] rule, which left an
   invisible full-screen overlay swallowing every click. Re-assert hidden. */
.wedo-overlay[hidden]{display:none}
.wedo-overlay{position:fixed; inset:0; z-index:99; display:flex; justify-content:center; align-items:center;
  padding:24px; background:var(--wd-overlay-bg);
  backdrop-filter:blur(28px) saturate(1.15); -webkit-backdrop-filter:blur(28px) saturate(1.15);
  opacity:0; transition:opacity var(--dur-base) var(--ease-out)}
.wedo-overlay.is-open{opacity:1}

.wedo-overlay__card{position:relative; display:flex; flex-direction:column; align-items:center;
  width:min(460px,100%); max-height:min(86svh,760px); padding:24px 32px 28px;
  background:linear-gradient(180deg,var(--wd-menu-card-a),var(--wd-menu-card-b));
  border:1px solid var(--wd-hair-2); border-radius:var(--r-lg);
  box-shadow:0 40px 90px -30px rgba(0,0,0,.85), inset 0 1px 0 rgba(255,255,255,.06);
  transform:translateY(14px) scale(.97);
  transition:transform 480ms var(--ease-drawer)}
.wedo-overlay.is-open .wedo-overlay__card{transform:none}

.wedo-overlay__close{position:absolute; top:16px; left:16px; width:38px; height:38px;
  display:flex; align-items:center; justify-content:center; border-radius:50%;
  border:1px solid var(--wd-hair); background:transparent; color:var(--wd-text-mid); cursor:pointer;
  transition:color var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out), transform var(--dur-fast) var(--ease-out)}
.wedo-overlay__close:active{transform:scale(.92)}
@media (hover:hover) and (pointer:fine){.wedo-overlay__close:hover{color:#fff; border-color:var(--wd-accent)}}

.wedo-overlay__brand{display:block; margin-top:6px; line-height:0}

.wedo-overlay__menu{display:flex; flex:1; align-items:center; margin:28px 0}
.wedo-overlay__list{display:flex; flex-direction:column; align-items:center; gap:6px}
.wedo-overlay__list a{display:inline-block; padding:6px 14px; font-size:clamp(24px,4.2vw,32px); font-weight:800;
  letter-spacing:-.02em; text-transform:uppercase; color:var(--wd-text-hi);
  opacity:0; transform:translateY(18px);
  transition:opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out), color var(--dur-base) var(--ease-out)}
:lang(ka) .wedo-overlay__list a{font-family:var(--font-display-ka); letter-spacing:0; text-transform:none}
@media (hover:hover) and (pointer:fine){.wedo-overlay__list a:hover{color:var(--wd-accent)}}
.wedo-overlay__list .current-menu-item>a{color:var(--wd-accent)}
.wedo-overlay.is-open .wedo-overlay__list a{opacity:1; transform:none}
.wedo-overlay.is-open .wedo-overlay__list li:nth-child(2) a{transition-delay:50ms}
.wedo-overlay.is-open .wedo-overlay__list li:nth-child(3) a{transition-delay:100ms}
.wedo-overlay.is-open .wedo-overlay__list li:nth-child(4) a{transition-delay:150ms}
.wedo-overlay.is-open .wedo-overlay__list li:nth-child(5) a{transition-delay:200ms}
.wedo-overlay.is-open .wedo-overlay__list li:nth-child(6) a{transition-delay:250ms}
.wedo-overlay.is-open .wedo-overlay__list li:nth-child(7) a{transition-delay:300ms}

.wedo-overlay__foot{display:flex; flex-direction:column; align-items:center; gap:14px; padding-top:20px;
  border-top:1px solid var(--wd-hair); width:100%}
.wedo-overlay__call{font-size:17px; font-weight:700; color:var(--wd-accent)}
@media (prefers-reduced-motion:reduce){
  .wedo-overlay,.wedo-overlay__card,.wedo-overlay__list a{transition:none}
}

/* ==========================================================================
   Footer
   ========================================================================== */
.wedo-footer{position:relative; z-index:2; margin-top:var(--sp-24); padding:var(--sp-24) 0 var(--sp-8);
  border-top:1px solid var(--wd-hair); background:linear-gradient(180deg,transparent,rgba(255,255,255,.015))}
.wedo-footer__grid{display:grid; grid-template-columns:1.6fr 1fr 1fr 1.2fr; gap:var(--sp-8)}
.wedo-footer__tagline{margin-top:18px; max-width:34ch; color:var(--wd-text-mid); font-size:14.5px}
.wedo-logo--footer{align-self:flex-start}
.wedo-footer__col h4{font-size:12px; text-transform:uppercase; letter-spacing:.16em; color:var(--wd-text-dim); font-weight:700; margin-bottom:16px}
.wedo-footer__col a{color:var(--wd-text-mid); font-size:14.5px; line-height:2.1; transition:color var(--dur-base) var(--ease-out)}
.wedo-footer__menu li a{display:block; line-height:2.1}
@media (hover:hover) and (pointer:fine){.wedo-footer__col a:hover{color:var(--wd-accent)}}
.wedo-footer__contact address{font-style:normal; display:flex; flex-direction:column; gap:8px; color:var(--wd-text-mid); font-size:14.5px}
.wedo-footer__bar{display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap;
  margin-top:var(--sp-16); padding-top:var(--sp-6); border-top:1px solid var(--wd-hair); color:var(--wd-text-dim); font-size:13px}
.wedo-lang--footer{border-color:var(--wd-hair)}
@media (max-width:1024px){.wedo-footer__grid{grid-template-columns:1fr 1fr}}
@media (max-width:768px){.wedo-nav__cta,.wedo-nav .wedo-lang{display:none}}
@media (max-width:520px){.wedo-footer__grid{grid-template-columns:1fr}}

/* ==========================================================================
   Scroll reveal — progressive enhancement (audit F6): content is visible by
   default; JS opts in via .has-motion on <html>. No blur, short travel.
   ========================================================================== */
[data-reveal]{opacity:1; transform:none}
.has-motion [data-reveal]{opacity:0; transform:translateY(12px);
  transition:opacity .45s var(--ease-out), transform .45s var(--ease-out);
  transition-delay:calc(var(--i,0) * 50ms)}
.has-motion [data-reveal].is-in{opacity:1; transform:none}

/* ==========================================================================
   Reduced motion
   ========================================================================== */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important; scroll-behavior:auto !important}
  [data-reveal]{opacity:1 !important; transform:none !important; filter:none !important}
  .wedo-grain{display:none}
}

/* ==========================================================================
   LIGHT THEME — token swap. The hero and 3D assembly sections remain dark
   cinematic islands (photo + models are lit for a dark canvas).
   ========================================================================== */
[data-theme="light"]{
  --wd-bg-0:#f8fafc; --wd-bg-1:#f1f5f9; --wd-surface:#ffffff; --wd-surface-2:#e8edf3; --wd-line:#cbd5e1;
  --wd-text-hi:#111827; --wd-text-mid:#475569; --wd-text-dim:#5b6675;
  --wd-hair:rgba(15,23,42,.10); --wd-hair-2:rgba(15,23,42,.18);
  --wd-glass:rgba(255,255,255,.62); --wd-glass-strong:rgba(255,255,255,.88);
  --wd-card-a:#ffffff; --wd-card-b:#f3f6fa; --wd-panel-b:#eef2f7;
  --wd-overlay-bg:rgba(226,232,240,.55);
  --wd-menu-card-a:rgba(255,255,255,.96); --wd-menu-card-b:rgba(241,245,249,.97);
  --wd-grain-op:.05; --wd-grain-blend:multiply;
}
[data-theme="light"] .wedo-nav.is-scrolled .wedo-nav__inner{box-shadow:0 20px 40px -28px rgba(15,23,42,.35)}
[data-theme="light"] .wd-btn--ghost .wd-btn__ico{background:rgba(15,23,42,.05)}
@media (hover:hover) and (pointer:fine){
  [data-theme="light"] .wd-btn--ghost:hover{color:var(--wd-text-hi)}
}
[data-theme="light"] .wedo-overlay__card{box-shadow:0 40px 90px -30px rgba(15,23,42,.35), inset 0 1px 0 rgba(255,255,255,.6)}

/* Dark islands: keep the cinematic sections dark inside light mode.
   `color` restarts inheritance here — headings inherit from body otherwise. */
[data-theme="light"] .wedo-hero,
[data-theme="light"] .wedo-assemble{
  --wd-bg-0:#030712; --wd-bg-1:#0b0f14; --wd-surface:#111827; --wd-surface-2:#1f2937; --wd-line:#374151;
  --wd-text-hi:#f9fafb; --wd-text-mid:#9ca3af; --wd-text-dim:#8791a2;
  --wd-hair:rgba(255,255,255,.08); --wd-hair-2:rgba(255,255,255,.14);
  --wd-card-a:#111827; --wd-card-b:#0d131d; --wd-panel-b:#0b1017;
  color:var(--wd-text-hi);
}

/* ---------- Theme toggle ---------- */
.wedo-theme-toggle{display:flex; flex:none; align-items:center; justify-content:center; width:42px; height:42px;
  border:1px solid var(--wd-hair); border-radius:var(--r-sm); background:transparent; color:var(--wd-text-mid); cursor:pointer;
  transition:border-color var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out), transform var(--dur-fast) var(--ease-out)}
.wedo-theme-toggle:active{transform:scale(.94)}
@media (hover:hover) and (pointer:fine){.wedo-theme-toggle:hover{border-color:var(--wd-accent); color:var(--wd-text-hi)}}
.wedo-theme-toggle .ico-sun{display:none}
.wedo-theme-toggle .ico-moon{display:block}
[data-theme="light"] .wedo-theme-toggle .ico-sun{display:block}
[data-theme="light"] .wedo-theme-toggle .ico-moon{display:none}

/* ==========================================================================
   THEMED CONSTRUCTION TEXTURES (v1.4) — self-contained SVG, theme-aware.
   Plate = galvanized diamond tread (scaffold planks / platform decks).
   Grid  = engineering blueprint grid.
   ========================================================================== */
:root{
  --wd-tex-plate:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Cg stroke='%23ffffff' stroke-opacity='0.06' stroke-width='2' stroke-linecap='round'%3E%3Cline x1='3' y1='3' x2='8' y2='8'/%3E%3Cline x1='19' y1='3' x2='14' y2='8'/%3E%3Cline x1='3' y1='19' x2='8' y2='14'/%3E%3Cline x1='19' y1='19' x2='14' y2='14'/%3E%3C/g%3E%3C/svg%3E");
  --wd-tex-grid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath d='M30 0H0V30' fill='none' stroke='%23ffffff' stroke-opacity='0.05' stroke-width='1'/%3E%3C/svg%3E");
}
[data-theme="light"]{
  --wd-tex-plate:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Cg stroke='%23111827' stroke-opacity='0.055' stroke-width='2' stroke-linecap='round'%3E%3Cline x1='3' y1='3' x2='8' y2='8'/%3E%3Cline x1='19' y1='3' x2='14' y2='8'/%3E%3Cline x1='3' y1='19' x2='8' y2='14'/%3E%3Cline x1='19' y1='19' x2='14' y2='14'/%3E%3C/g%3E%3C/svg%3E");
  --wd-tex-grid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath d='M30 0H0V30' fill='none' stroke='%23111827' stroke-opacity='0.05' stroke-width='1'/%3E%3C/svg%3E");
}
/* Dark cinematic islands keep the light-on-dark texture even in light mode. */
[data-theme="light"] .wedo-hero,[data-theme="light"] .wedo-assemble{
  --wd-tex-plate:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Cg stroke='%23ffffff' stroke-opacity='0.06' stroke-width='2' stroke-linecap='round'%3E%3Cline x1='3' y1='3' x2='8' y2='8'/%3E%3Cline x1='19' y1='3' x2='14' y2='8'/%3E%3Cline x1='3' y1='19' x2='8' y2='14'/%3E%3Cline x1='19' y1='19' x2='14' y2='14'/%3E%3C/g%3E%3C/svg%3E");
  --wd-tex-grid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath d='M30 0H0V30' fill='none' stroke='%23ffffff' stroke-opacity='0.05' stroke-width='1'/%3E%3C/svg%3E");
}

/* Shared construction texture for components used across page bundles. */
.wd-card__inner{background-image:var(--wd-tex-plate),linear-gradient(180deg,var(--wd-card-a),var(--wd-card-b));
  background-size:22px 22px,auto; background-repeat:repeat,no-repeat}
.wd-bezel__inner{background-image:var(--wd-tex-plate),linear-gradient(180deg,var(--wd-card-a),var(--wd-panel-b));
  background-size:22px 22px,auto; background-repeat:repeat,no-repeat}

/* ==========================================================================
   INTRO REVEAL (v1.6) — logo + expanding rings, then opens into the site.
   ========================================================================== */
.wedo-intro__logo{position:relative; z-index:2; width:clamp(260px,44vw,620px); line-height:0}
.wedo-intro__logo-art{display:block; width:100%; height:auto}
.wedo-intro__logo-art--contrast{position:absolute; inset:0; clip-path:inset(0 0 0 51.3%);
  filter:brightness(0) invert(1)}
.wedo-intro__cap{position:absolute; z-index:2; bottom:clamp(40px,10vh,90px); left:50%; transform:translateX(-50%);
  font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.28em; color:var(--wd-text-dim); white-space:nowrap}
.wedo-intro__rings{position:absolute; inset:0; display:grid; place-items:center; z-index:1}
.wedo-intro__rings span{position:absolute; border:1px solid rgba(255,255,255,.14); border-radius:50%}
.wedo-intro__rings span:nth-child(1){width:min(24vw,260px); aspect-ratio:1}
.wedo-intro__rings span:nth-child(2){width:min(42vw,460px); aspect-ratio:1}
.wedo-intro__rings span:nth-child(3){width:min(60vw,680px); aspect-ratio:1}
.wedo-intro__rings span:nth-child(4){width:min(80vw,920px); aspect-ratio:1; border-color:rgba(206,121,103,.28)}
.wedo-intro__rings span:nth-child(5){width:min(104vw,1200px); aspect-ratio:1}
.wedo-intro__tick{position:absolute; width:9px; height:9px; border:1.5px solid var(--wd-accent); z-index:2}
.wedo-intro__tick--tl{top:26px; left:26px; border-right:0; border-bottom:0}
.wedo-intro__tick--tr{top:26px; right:26px; border-left:0; border-bottom:0}
.wedo-intro__tick--bl{bottom:26px; left:26px; border-right:0; border-top:0}
.wedo-intro__tick--br{bottom:26px; right:26px; border-left:0; border-top:0}
