/* ==========================================================================
   WeDo — Homepage sections
   ========================================================================== */

/* ---------------------------------- HERO ---------------------------------- */
.wedo-hero{position:relative; min-height:100svh; display:flex; align-items:flex-end;
  padding:calc(var(--nav-h) + 40px) 0 clamp(40px,7vw,90px); overflow:hidden}
.wedo-hero__bg{position:absolute; inset:0; z-index:0; background:var(--wd-bg-0)}
/* Our brand hero image — the resting background, lightly frosted so the copy
   reads cleanly while the scene stays visible. Small scale hides the blur halo. */
.wedo-hero__base{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.66;
  filter:saturate(.94) contrast(1.03) blur(1.7px); transform:scale(1.03)}
.wedo-hero__scrim{position:absolute; inset:0;
  background:
    radial-gradient(120% 90% at 78% 12%, rgba(206,121,103,.10), transparent 55%),
    linear-gradient(180deg, rgba(3,7,12,.55) 0%, rgba(3,7,12,.25) 38%, rgba(3,7,12,.86) 92%),
    linear-gradient(90deg, rgba(3,7,12,.8) 0%, transparent 60%)}
.wedo-hero__glow{position:absolute; right:-10%; top:8%; width:52vw; height:52vw; z-index:0; pointer-events:none;
  background:radial-gradient(circle, rgba(206,121,103,.16), transparent 62%); filter:blur(20px)}
.wedo-hero__content{position:relative; z-index:2; width:100%}
.wedo-hero__title{font-size:clamp(40px,5.4vw,72px); line-height:1.02; max-width:18ch; letter-spacing:-.02em}
.wedo-hero__title .accent{color:var(--wd-accent)}

/* Hero service rotator — WE DO + a depth-of-field list of services scrolling
   through a focus band (jitter-style): centre word sharp/large, neighbours
   blur, dim and shrink away above and below. */
.wedo-hero__title--rot{display:flex; flex-direction:row; align-items:center; flex-wrap:wrap;
  gap:clamp(14px,2vw,34px); max-width:none; line-height:1}
.wedo-hero__brand{display:inline-block; color:var(--wd-accent); font-weight:800; line-height:.9;
  letter-spacing:-.01em; font-size:clamp(44px,6vw,84px); text-shadow:0 2px 40px rgba(206,121,103,.28)}
.wedo-rotator{position:relative; display:block; flex:1 1 300px; min-width:0;
  height:clamp(190px,24vw,320px); font-size:clamp(30px,4.4vw,56px)}
.wedo-rotator__viewport{position:absolute; inset:0; overflow:hidden;
  -webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 24%, #000 76%, transparent 100%);
  mask-image:linear-gradient(to bottom, transparent 0, #000 24%, #000 76%, transparent 100%)}
.wedo-rotator__col{position:absolute; left:0; top:0; width:100%; will-change:transform}
.wedo-rotator__word{display:block; white-space:nowrap; line-height:1.14; font-weight:800;
  letter-spacing:-.02em; color:#d7dade; transform-origin:left center;
  will-change:transform,opacity,filter}
.wedo-rotator__word.is-active{color:#fff}
.wedo-hero__sub{margin-top:var(--sp-6); max-width:52ch; color:var(--wd-text-mid); font-size:clamp(16px,1.6vw,20px)}
.wedo-hero__cta{display:flex; flex-wrap:wrap; gap:14px; margin-top:var(--sp-8)}

.wedo-stats{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:clamp(16px,3vw,40px);
  margin-top:clamp(40px,6vw,72px); padding-top:var(--sp-8); border-top:1px solid var(--wd-hair); max-width:900px}
.wedo-stat__num{display:flex; align-items:baseline; gap:2px; font-size:clamp(26px,3vw,38px); font-weight:700; letter-spacing:-.02em; color:#fff; font-variant-numeric:tabular-nums}
.wedo-stat__num em{font-style:normal; font-size:.5em; color:var(--wd-accent); font-weight:700}
.wedo-stat__label{margin-top:6px; font-size:12.5px; color:var(--wd-text-dim); letter-spacing:.01em}

/* Scroll cue removed (audit F3: ornamental infinite cue). */

/* -------------------------------- SERVICES -------------------------------- */
.wedo-services__grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px}
.wedo-service{height:100%}
.wedo-service__ico{width:56px; height:56px; display:flex; align-items:center; justify-content:center;
  border:1px solid var(--wd-hair); border-radius:14px; margin-bottom:22px; background:rgba(206,121,103,.06)}
.wedo-service__title{font-size:20px; margin-bottom:10px}
.wedo-service__desc{color:var(--wd-text-mid); font-size:15px}
.wedo-service__bar{display:block; height:2px; width:32px; margin-top:22px; background:var(--wd-accent); border-radius:2px;
  transition:width var(--dur-slow) var(--ease-out)}
@media (hover:hover) and (pointer:fine){.wedo-service:hover .wedo-service__bar{width:72px}}

/* -------------------------------- SAFETY ---------------------------------- */
.wedo-safety{background:linear-gradient(180deg,var(--wd-bg-1),var(--wd-bg-0)); border-block:1px solid var(--wd-hair)}
.wedo-safety__head{display:grid; grid-template-columns:1.2fr 1fr; gap:var(--sp-8); align-items:end; margin-bottom:var(--sp-16)}
.wedo-safety__grid{display:grid; grid-template-columns:repeat(4,1fr); gap:20px}
.wedo-point{position:relative; isolation:isolate; overflow:hidden; padding:28px; border:1px solid var(--wd-hair);
  border-radius:var(--r-lg); background-color:rgba(255,255,255,.015);
  transition:border-color var(--dur-base) var(--ease-out)}
.wedo-point,.wedo-flow__card{
  --wd-card-spotlight:radial-gradient(200px circle at var(--mx,50%) var(--my,50%), rgba(206,121,103,.30), rgba(206,121,103,.09) 42%, transparent 72%)}
.wedo-point::before,.wedo-point::after{content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background-position:0 0; background-repeat:repeat; background-size:22px 22px;
  transition:opacity .35s var(--ease-out)}
.wedo-point::before{background-image:var(--wd-tex-plate); opacity:1}
.wedo-point::after{background-image:var(--wd-card-spotlight),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Cg stroke='%23ce7967' stroke-opacity='.42' 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"); opacity:0}
.wedo-point__ico{margin-bottom:18px}
.wedo-point__title{font-size:17px; margin-bottom:8px}
.wedo-point__desc{color:var(--wd-text-mid); font-size:14px}
@media (hover:hover) and (pointer:fine){
  .wedo-point:hover{border-color:rgba(206,121,103,.5)}
  .wedo-point:hover::before{opacity:0}
  .wedo-point:hover::after{opacity:1}
}

/* -------------------------------- PROCESS --------------------------------- */
/* Give the block breathing room from the section above + a subtle blueprint
   texture (dot grid + a soft accent glow) so it doesn't read as flat black. */
.wedo-section.wedo-process{padding-top:clamp(60px,8vw,104px); overflow-x:clip; overflow-y:visible}
/* Static texture — a field of brand-orange dots (no animation). */
.wedo-process::before{content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background-image:
    radial-gradient(62% 52% at 15% 0%, rgba(206,121,103,.09), transparent 60%),
    radial-gradient(rgba(206,121,103,.19) 1.15px, transparent 1.9px);
  background-size:100% 100%, 23px 23px;
  -webkit-mask-image:linear-gradient(to bottom, transparent, #000 7%, #000 92%, transparent);
  mask-image:linear-gradient(to bottom, transparent, #000 7%, #000 92%, transparent)}
[data-theme="light"] .wedo-process::before{background-image:
    radial-gradient(62% 52% at 15% 0%, rgba(206,121,103,.12), transparent 60%),
    radial-gradient(rgba(15,23,42,.11) 1.15px, transparent 1.9px)}
.wedo-process > .wd-container{position:relative; z-index:1}

.wedo-process__head{display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(24px,4vw,56px);
  align-items:end; margin-bottom:clamp(38px,5vw,66px)}
.wedo-process__intro{min-width:0}
.wedo-process__lead{color:var(--wd-text-mid); font-size:clamp(15px,1.5vw,17px); line-height:1.6; max-width:46ch;
  padding-left:clamp(16px,1.6vw,24px); border-left:1px solid var(--wd-hair)}
/* Make the eyebrow pop off the dotted background. */
.wedo-process .wd-eyebrow{color:var(--wd-accent); font-size:13px; font-weight:700; letter-spacing:.2em;
  text-shadow:0 1px 12px rgba(3,7,12,.8)}
.wedo-process .wd-eyebrow__dot{width:26px; height:2px; box-shadow:0 0 10px rgba(206,121,103,.6)}

.wedo-flow-stage{position:relative; isolation:isolate; --p:0;
  --lit:clamp(0, calc((var(--p) - .82) * 5.5), 1);
  --lamp-spread:calc(.14 + .86 * var(--p,0))}
.wedo-flow{position:relative; z-index:1; display:grid; grid-template-columns:repeat(6,1fr);
  gap:clamp(10px,1.2vw,18px)}
/* Higher specificity than the global `.wedo-front ol{padding:0}` reset. The
   reserved space holds the lamp immediately above the numbered nodes. */
.wedo-front .wedo-flow{padding-top:clamp(100px,8vw,112px)}
/* WE DO lamp: the source line sits above the process and projects downward,
   following the supplied 21st.dev component in the brand's terracotta colour. */
.wedo-lamp{position:absolute; z-index:0; top:0; left:0; right:0;
  height:clamp(220px,20vw,270px); overflow:visible; pointer-events:none}
.wedo-lamp__beam{position:absolute; top:0; left:-12%; width:124%; height:100%;
  transform:scaleX(var(--lamp-spread)); transform-origin:50% 0;
  filter:blur(30px);
  opacity:calc(.20 + .68 * var(--p,0)); will-change:transform,opacity}
.wedo-lamp__beam::before{content:""; position:absolute; inset:0;
  background:
    linear-gradient(to bottom, rgba(206,121,103,.13), rgba(206,121,103,.055) 48%, transparent 86%),
    radial-gradient(ellipse 82% 112% at 50% 0%,
      rgba(238,164,145,.42), rgba(206,121,103,.18) 38%,
      rgba(206,121,103,.055) 64%, transparent 82%);
  -webkit-mask-image:linear-gradient(to bottom, #000 0%, rgba(0,0,0,.82) 48%, transparent 100%);
  mask-image:linear-gradient(to bottom, #000 0%, rgba(0,0,0,.82) 48%, transparent 100%);
  clip-path:polygon(12.5% 0,87.5% 0,100% 100%,0 100%)}
.wedo-lamp__bloom{position:absolute; top:-12px; left:50%; width:82%;
  height:clamp(166px,15vw,212px);
  transform:translateX(-50%) scaleX(calc(.58 + .42 * var(--p,0)));
  border-radius:0 0 50% 50%;
  background:radial-gradient(ellipse 78% 106% at 50% 0%,
    rgba(206,121,103,.30), rgba(206,121,103,.12) 44%, transparent 80%);
  filter:blur(24px);
  opacity:calc(.20 + .62 * var(--p,0)); will-change:transform,opacity}
.wedo-lamp__line{position:absolute; top:0; left:3.5%; right:3.5%; height:5px;
  transform:scaleX(var(--lamp-spread)); transform-origin:50% 50%;
  border-radius:4px;
  background:linear-gradient(90deg, rgba(239,154,134,.92), #ffc1b2 7%,
    #ffe8e1 50%, #ffc1b2 93%, rgba(239,154,134,.92));
  box-shadow:0 0 4px rgba(255,239,234,1),0 0 12px rgba(255,176,155,.95),
    0 5px 28px rgba(206,121,103,.76);
  opacity:calc(.46 + .54 * var(--p,0)); will-change:transform,opacity}
[data-theme="light"] .wedo-lamp__beam::before{
  background:
    linear-gradient(to bottom, rgba(206,121,103,.075), rgba(206,121,103,.03) 48%, transparent 86%),
    radial-gradient(ellipse 82% 112% at 50% 0%,
      rgba(206,121,103,.25), rgba(206,121,103,.10) 38%,
      rgba(206,121,103,.035) 64%, transparent 82%)}
[data-theme="light"] .wedo-lamp__beam{opacity:calc(.14 + .48 * var(--p,0))}
[data-theme="light"] .wedo-lamp__bloom{
  background:radial-gradient(ellipse 78% 106% at 50% 0%,
    rgba(206,121,103,.19), rgba(206,121,103,.075) 44%, transparent 80%);
  opacity:calc(.14 + .44 * var(--p,0))}

.wedo-flow__step{position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; min-width:0}
.wedo-flow__node{position:relative; display:flex; align-items:center; justify-content:center; flex:none;
  width:clamp(52px,5vw,72px); height:clamp(52px,5vw,72px); border-radius:50%;
  background:var(--wd-bg-1); border:1.5px solid var(--wd-hair-2);
  font-weight:800; font-size:clamp(16px,1.4vw,21px); color:var(--wd-text-hi); font-variant-numeric:tabular-nums}
.wedo-flow__node::after{content:""; position:absolute; top:100%; left:50%; width:1.5px; height:14px;
  transform:translateX(-50%); background:var(--wd-hair)}
/* The active node/card only take on colour once the lamp reaches full width. */
.wedo-flow__step.is-active .wedo-flow__node{
  background:color-mix(in srgb, var(--wd-bg-1), var(--wd-accent) calc(var(--lit,0) * 100%));
  border-color:color-mix(in srgb, var(--wd-hair-2), transparent calc(var(--lit,0) * 100%));
  color:color-mix(in srgb, var(--wd-text-hi), #1c100c calc(var(--lit,0) * 100%))}
.wedo-flow__step.is-active .wedo-flow__node::after{
  background:color-mix(in srgb, var(--wd-hair), var(--wd-accent) calc(var(--lit,0) * 100%))}

.wedo-flow__card{position:relative; overflow:hidden; width:100%; flex:1 1 auto; margin-top:14px;
  padding:clamp(16px,1.5vw,24px) clamp(12px,1.2vw,18px);
  border:1px solid var(--wd-hair); border-radius:var(--r-lg);
  background:linear-gradient(0deg, rgb(206 121 103 / calc(var(--lit,0) * .10)), rgb(206 121 103 / calc(var(--lit,0) * .10))), rgba(13,19,29,.82);
  -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); text-align:center;
  transition:border-color var(--dur-base) var(--ease-out)}
[data-theme="light"] .wedo-flow__card{background:linear-gradient(0deg, rgb(206 121 103 / calc(var(--lit,0) * .12)), rgb(206 121 103 / calc(var(--lit,0) * .12))), rgba(255,255,255,.85)}
.wedo-flow__card > *{position:relative; z-index:1}
.wedo-flow__step.is-active .wedo-flow__card{
  border-color:color-mix(in srgb, var(--wd-hair), var(--wd-accent) calc(var(--lit,0) * 100%));
  background:linear-gradient(0deg, rgb(206 121 103 / calc(var(--lit,0) * .16)), rgb(206 121 103 / calc(var(--lit,0) * .16))), rgba(13,19,29,.86)}
[data-theme="light"] .wedo-flow__step.is-active .wedo-flow__card{
  background:linear-gradient(0deg, rgb(206 121 103 / calc(var(--lit,0) * .18)), rgb(206 121 103 / calc(var(--lit,0) * .18))), rgba(255,255,255,.90)}
/* Spotlight-card hover: a brand-orange glow tracks the cursor (all but the first). */
.wedo-flow__step:not(.is-active) .wedo-flow__card::before{content:""; position:absolute; inset:0; z-index:0;
  border-radius:inherit; pointer-events:none; opacity:0; transition:opacity .35s var(--ease-out);
  background:var(--wd-card-spotlight)}
@media (hover:hover) and (pointer:fine){
  .wedo-flow__step:not(.is-active) .wedo-flow__card:hover{border-color:rgba(206,121,103,.5)}
  .wedo-flow__step:not(.is-active) .wedo-flow__card:hover::before{opacity:1}
}
.wedo-flow__ico{display:block; margin:0 auto 14px; color:var(--wd-accent); line-height:0}
.wedo-flow__ico .wd-ico{width:28px; height:28px}
.wedo-flow__title{font-size:clamp(15px,1.3vw,18px); margin-bottom:8px; color:var(--wd-text-hi)}
.wedo-flow__desc{color:var(--wd-text-mid); font-size:clamp(12.5px,1vw,14px); line-height:1.5}

.wedo-process__foot{display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
  margin-top:clamp(32px,4vw,52px); padding-top:clamp(20px,2.4vw,28px); border-top:1px solid var(--wd-hair)}
.wedo-process__meta{display:inline-flex; align-items:center; gap:12px; color:var(--wd-text-dim); font-size:14px}
.wedo-process__meta i{display:inline-flex; color:var(--wd-accent); flex:none}
.wedo-process__meta .wd-ico{width:20px; height:20px}

@media (max-width:860px){
  .wedo-flow{grid-template-columns:repeat(3,1fr); gap:20px 16px}
  .wedo-flow__track{display:none}
  .wedo-lamp__beam{left:-5%; width:110%; height:100%}
  .wedo-lamp__beam::before{
    clip-path:polygon(7.7% 0,92.3% 0,100% 100%,0 100%)}
}
@media (max-width:560px){
  .wedo-process__head{grid-template-columns:1fr; align-items:start; gap:18px}
  .wedo-process__lead{border-left:0; padding-left:0}
  .wedo-flow{grid-template-columns:repeat(2,1fr)}
  .wedo-front .wedo-flow{padding-top:82px}
  .wedo-lamp{top:0; height:224px}
  .wedo-lamp__bloom{height:172px}
}

/* ------------------------------- EQUIPMENT -------------------------------- */
.wedo-equipment__grid{display:grid; grid-template-columns:1fr 1fr; gap:clamp(32px,5vw,72px); align-items:center}
.wedo-equipment__list{margin-top:var(--sp-8); display:flex; flex-direction:column; gap:14px}
.wedo-equipment__list li{display:flex; align-items:center; gap:14px; color:var(--wd-text-hi); font-size:16px; font-weight:600}
.wedo-equipment__list i{display:inline-flex; width:30px; height:30px; align-items:center; justify-content:center; flex:none;
  border-radius:50%; background:rgba(206,121,103,.12); color:var(--wd-accent)}
.wedo-equipment__visual{aspect-ratio:4/4.6}
.wedo-equipment__visual .wd-bezel__inner{height:100%}
.wedo-blueprint{position:absolute; inset:0; color:rgba(206,121,103,.5); display:block}
.wedo-blueprint svg{width:100%; height:100%}
.wedo-blueprint__grid{color:rgba(255,255,255,.06)}
.wedo-equipment__photo{position:absolute; right:-6%; bottom:-4%; width:64%; opacity:.5; mix-blend-mode:luminosity;
  filter:contrast(1.1) grayscale(.2); mask-image:linear-gradient(180deg,transparent,#000 30%)}

/* -------------------------------- PROJECTS -------------------------------- */
.wedo-gallery{display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:220px; gap:14px}
.wedo-tile{position:relative; overflow:hidden; border-radius:var(--r-md); border:1px solid var(--wd-hair); background:var(--wd-surface)}
.wedo-tile--wide{grid-column:span 2; grid-row:span 1}
.wedo-tile img{width:100%; height:100%; object-fit:cover; transition:transform var(--dur-slow) var(--ease-out); filter:saturate(.85)}
.wedo-tile__scrim{position:absolute; inset:0; background:linear-gradient(180deg,transparent 40%,rgba(3,7,12,.8)); opacity:.7; transition:opacity var(--dur-base) var(--ease-out)}
.wedo-tile__meta{position:absolute; inset:auto 14px 14px; display:flex; align-items:center; justify-content:space-between}
.wedo-tile__tag{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.14em; color:var(--wd-text-hi);
  padding:6px 12px; border:1px solid var(--wd-hair-2); border-radius:var(--r-pill); background:rgba(3,7,12,.4); backdrop-filter:blur(6px);
  transform:translateY(8px); opacity:0; transition:opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out)}
.wedo-tile__view{display:inline-flex; width:34px; height:34px; align-items:center; justify-content:center; border-radius:50%;
  background:var(--wd-accent); color:#1c100c; transform:scale(.6); opacity:0; transition:opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out)}
@media (hover:hover) and (pointer:fine){
  .wedo-tile:hover img{transform:scale(1.06)}
  .wedo-tile:hover .wedo-tile__scrim{opacity:1}
  .wedo-tile:hover .wedo-tile__tag{opacity:1; transform:none}
  .wedo-tile:hover .wedo-tile__view{opacity:1; transform:none}
}

/* ---------------------------------- WHY ----------------------------------- */
.wedo-why__head{max-width:1120px; margin-right:auto; margin-left:auto; text-align:center}
.wedo-why__head .wd-title{max-width:none; text-wrap:balance}
.wedo-why__head .wd-lede{max-width:92ch; margin-right:auto; margin-left:auto; text-wrap:pretty}
.wedo-why__grid{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--wd-hair); border:1px solid var(--wd-hair); border-radius:var(--r-lg); overflow:hidden}
.wedo-why__item{position:relative; padding:clamp(28px,3vw,40px); background:var(--wd-bg-0);
  transition:background var(--dur-base) var(--ease-out)}
.wedo-why__idx{font-size:12px; font-weight:700; color:var(--wd-accent); font-variant-numeric:tabular-nums}
.wedo-why__title{font-size:19px; margin:14px 0 8px}
.wedo-why__desc{color:var(--wd-text-mid); font-size:14.5px}
@media (hover:hover) and (pointer:fine){.wedo-why__item:hover{background:var(--wd-surface)}}

/* ---------------------------------- CTA ----------------------------------- */
.wedo-cta__panel{background:transparent}
.wedo-cta__inner{padding:clamp(40px,6vw,80px); text-align:center;
  background:radial-gradient(120% 140% at 50% 0%, rgba(206,121,103,.14), transparent 60%), linear-gradient(180deg,var(--wd-card-a),var(--wd-panel-b))}
.wedo-cta__lines{position:absolute; inset:0; pointer-events:none; opacity:.5;
  background-image:linear-gradient(var(--wd-hair) 1px,transparent 1px); background-size:100% 44px;
  mask-image:radial-gradient(70% 60% at 50% 40%,#000,transparent)}
.wedo-cta__inner .wedo-cta__title{position:relative; font-size:clamp(28px,4vw,52px); max-width:18ch; margin:0 auto}
.wedo-cta__title .accent{color:var(--wd-accent)}
.wedo-cta__inner .wedo-cta__sub{position:relative; margin:18px auto 0; max-width:52ch; color:var(--wd-text-mid); font-size:17px}
.wedo-cta__actions{position:relative; display:flex; gap:14px; justify-content:center; flex-wrap:wrap; margin-top:var(--sp-8)}

/* -------------------------------- LIGHTBOX -------------------------------- */
.wedo-lb{position:fixed; inset:0; z-index:200; display:flex; align-items:center; justify-content:center; padding:5vw;
  background:rgba(3,7,12,.9); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  opacity:0; transition:opacity .26s var(--ease-out)}
.wedo-lb.is-open{opacity:1}
.wedo-lb img{max-width:92vw; max-height:88vh; border-radius:var(--r-md); border:1px solid var(--wd-hair-2);
  transform:scale(.96); transition:transform .3s var(--ease-out); box-shadow:0 40px 80px -30px rgba(0,0,0,.8)}
.wedo-lb.is-open img{transform:none}
.wedo-lb__x{position:absolute; top:22px; right:26px; width:46px; height:46px; border-radius:50%;
  border:1px solid var(--wd-hair-2); background:rgba(255,255,255,.04); color:#fff; font-size:24px; line-height:1; cursor:pointer;
  transition:background var(--dur-base) var(--ease-out)}
@media (hover:hover) and (pointer:fine){.wedo-lb__x:hover{background:rgba(255,255,255,.12)}}

/* ============================== RESPONSIVE =============================== */
@media (max-width:1024px){
  .wedo-services__grid{grid-template-columns:repeat(2,1fr)}
  .wedo-safety__grid{grid-template-columns:repeat(2,1fr)}
  .wedo-timeline{grid-template-columns:repeat(3,1fr); gap:28px}
  .wedo-timeline__track{display:none}
  .wedo-why__grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:768px){
  .wedo-hero{align-items:center; text-align:left}
  .wedo-hero__scrim{background:linear-gradient(180deg,rgba(3,7,12,.5),rgba(3,7,12,.9))}
  .wedo-stats{grid-template-columns:repeat(2,1fr); gap:24px}
  .wedo-equipment__grid{grid-template-columns:1fr}
  .wedo-equipment__visual{aspect-ratio:4/3.4; max-height:420px}
  .wedo-gallery{grid-template-columns:repeat(2,1fr); grid-auto-rows:160px}
  .wedo-tile--wide{grid-column:span 2}
}
@media (max-width:520px){
  .wedo-services__grid,.wedo-safety__grid,.wedo-timeline,.wedo-why__grid{grid-template-columns:1fr}
  .wedo-services__grid--photo{grid-template-columns:1fr} /* long ka/ru names need room (audit F9) */
  .wedo-stats{grid-template-columns:1fr 1fr}
  .wedo-hero__title{font-size:clamp(32px,9vw,42px)}
  .wedo-hero__title--rot{flex-direction:column; align-items:flex-start; gap:6px}
  .wedo-hero__brand{font-size:clamp(38px,12vw,52px)}
  .wedo-rotator{flex-basis:auto; width:100%; font-size:clamp(26px,8vw,40px); height:clamp(150px,42vw,210px)}
}

/* ====================== SCROLL-ASSEMBLY 3D SECTIONS ====================== */
.wedo-assemble{position:relative; height:190vh; height:190svh; background:linear-gradient(180deg,var(--wd-bg-0),var(--wd-bg-1) 50%,var(--wd-bg-0))}
.wedo-assemble--alt{background:linear-gradient(180deg,var(--wd-bg-0),#0a0f16 50%,var(--wd-bg-0))}
.wedo-assemble__sticky{position:sticky; top:0; height:100svh; overflow:hidden; display:flex; align-items:center}
.wedo-assemble__fallback{display:none; position:absolute; inset:0; z-index:0; opacity:0; overflow:hidden}
.wedo-assemble__fallback img{width:100%; height:100%; object-fit:cover; opacity:.34; filter:saturate(.8) contrast(1.04)}
.wedo-assemble.is-static .wedo-assemble__fallback,.wedo-assemble.is-failed .wedo-assemble__fallback{display:block; opacity:1}
.wedo-assemble__canvas{position:absolute; inset:0; width:100%; height:100%; display:block; z-index:0}
.wedo-assemble__scrim{position:absolute; inset:0; z-index:1; pointer-events:none;
  background:radial-gradient(90% 70% at 72% 40%, rgba(206,121,103,.10), transparent 60%),
    linear-gradient(90deg, rgba(3,7,12,.86) 0%, rgba(3,7,12,.45) 42%, transparent 66%)}
.wedo-assemble--alt .wedo-assemble__scrim{background:radial-gradient(90% 70% at 28% 40%, rgba(230,155,139,.10), transparent 60%),
    linear-gradient(270deg, rgba(3,7,12,.86) 0%, rgba(3,7,12,.45) 42%, transparent 66%)}
.wedo-assemble__copy{position:relative; z-index:2; width:100%; display:flex; justify-content:flex-start}
.wedo-assemble__copy--right{justify-content:flex-end; text-align:right}
.wedo-assemble__text{max-width:520px}
.wedo-assemble__copy--right .wedo-assemble__text{margin-left:auto}
.wedo-assemble__feat{margin-top:var(--sp-6); display:flex; flex-direction:column; gap:12px}
.wedo-assemble__feat li{display:flex; align-items:center; gap:12px; color:var(--wd-text-hi); font-weight:600; font-size:15.5px}
.wedo-assemble__copy--right .wedo-assemble__feat li{flex-direction:row-reverse}
.wedo-assemble__feat i{display:inline-flex; width:28px; height:28px; align-items:center; justify-content:center; flex:none; border-radius:50%; background:rgba(206,121,103,.12); color:var(--wd-accent)}
.wedo-assemble__progress{margin-top:var(--sp-8); max-width:320px}
.wedo-assemble__copy--right .wedo-assemble__progress{margin-left:auto}
.wedo-assemble__hint{display:block; font-size:11px; text-transform:uppercase; letter-spacing:.2em; color:var(--wd-text-dim); margin-bottom:10px}
.wedo-assemble__bar{display:block; height:2px; background:var(--wd-hair); border-radius:2px; overflow:hidden}
.wedo-assemble__fill{display:block; height:100%; width:100%; transform:scaleX(0); transform-origin:left;
  background:linear-gradient(90deg,var(--wd-accent),var(--wd-accent-soft)); border-radius:2px}
/* Fallback when WebGL/model unavailable */
.wedo-assemble.is-static .wedo-assemble__canvas,.wedo-assemble.is-failed .wedo-assemble__canvas{display:none}
.wedo-assemble.is-static .wedo-assemble__progress,.wedo-assemble.is-failed .wedo-assemble__progress{display:none}
.wedo-assemble.is-static .wedo-assemble__scrim,.wedo-assemble.is-failed .wedo-assemble__scrim{
  background:linear-gradient(90deg,rgba(3,7,12,.88),rgba(3,7,12,.46) 55%,rgba(3,7,12,.2))}
.wedo-assemble--alt.is-static .wedo-assemble__scrim,.wedo-assemble--alt.is-failed .wedo-assemble__scrim{
  background:linear-gradient(270deg,rgba(3,7,12,.88),rgba(3,7,12,.46) 55%,rgba(3,7,12,.2))}

@media (max-width:768px){
  .wedo-assemble{height:auto}
  .wedo-assemble__sticky{position:relative; height:auto; min-height:96svh; padding:calc(var(--nav-h) + 24px) 0 48px}
  .wedo-assemble__copy,.wedo-assemble__copy--right{justify-content:center; text-align:left}
  .wedo-assemble__copy--right .wedo-assemble__text{margin:0}
  .wedo-assemble__copy--right .wedo-assemble__feat li{flex-direction:row}
  .wedo-assemble__scrim{background:linear-gradient(180deg,rgba(3,7,12,.35),rgba(3,7,12,.85))}
  .wedo-assemble__copy--right .wedo-assemble__progress{margin-left:0}
}
@media (prefers-reduced-motion:reduce){ .wedo-assemble{height:auto} .wedo-assemble__sticky{position:relative; height:auto; min-height:90svh} }

/* ==================== SERVICES — PRODUCT CATALOGUE ==================== */
.wedo-section.wedo-services{position:relative; overflow:hidden}
/* Homepage-only ambient scaffold artwork supplied with the theme. */
.wedo-services__ambient{position:absolute; inset:0; z-index:0; pointer-events:none;
  background-image:
    linear-gradient(180deg,rgba(3,7,12,.54),rgba(3,7,12,.2) 38%,rgba(3,7,12,.58)),
    radial-gradient(ellipse at 50% 38%,rgba(206,121,103,.08),transparent 62%),
    url("../img/services-background.webp");
  background-repeat:no-repeat;
  background-position:center,center,center top;
  background-size:100% 100%,100% 100%,100% auto;
  opacity:.84;
  filter:saturate(.78) contrast(1.04);
  -webkit-mask-image:linear-gradient(to bottom,transparent,#000 7%,#000 92%,transparent);
  mask-image:linear-gradient(to bottom,transparent,#000 7%,#000 92%,transparent)}
[data-theme="light"] .wedo-services__ambient{opacity:.18; mix-blend-mode:multiply; filter:saturate(.6) contrast(1.08)}
.wedo-services > .wd-container{position:relative; z-index:1}

.wedo-services__head{display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(24px,4vw,60px);
  align-items:end; margin-bottom:clamp(30px,4vw,52px)}
.wedo-services__intro{min-width:0}
.wedo-services__lead{color:var(--wd-text-mid); font-size:clamp(15px,1.5vw,17px); line-height:1.6; max-width:46ch;
  padding-left:clamp(16px,1.6vw,24px); border-left:1px solid var(--wd-hair)}

.wedo-invgrid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px}
.wedo-invcard{position:relative; overflow:hidden; min-height:clamp(174px,15vw,204px); border-radius:var(--r-lg);
  border:1px solid var(--wd-hair); background:linear-gradient(160deg, rgba(20,27,38,.92), rgba(11,16,23,.94));
  transition:border-color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out)}
.wedo-invcard__text{position:relative; z-index:2; padding:clamp(16px,1.5vw,22px); max-width:64%}
.wedo-invcard__ico{display:inline-flex; width:38px; height:38px; align-items:center; justify-content:center;
  border-radius:11px; border:1px solid var(--wd-hair); background:rgba(206,121,103,.08); color:var(--wd-accent); margin-bottom:14px}
.wedo-invcard__ico .wd-ico{width:20px; height:20px}
.wedo-invcard__title{font-size:clamp(15px,1.3vw,17px); line-height:1.2; font-weight:700; color:var(--wd-text-hi); margin-bottom:7px}
.wedo-invcard__desc{color:var(--wd-text-mid); font-size:12.5px; line-height:1.45}
.wedo-invcard__media{position:absolute; top:50%; right:-4%; width:60%; height:128%; z-index:1; transform:translateY(-50%); pointer-events:none}
.wedo-invcard__media img{width:100%; height:100%; object-fit:contain; object-position:right center;
  -webkit-mask-image:linear-gradient(90deg, transparent, #000 44%);
  mask-image:linear-gradient(90deg, transparent, #000 44%)}
.wedo-invcard--service .wedo-invcard__media{right:1%; width:52%; height:90%}
.wedo-invcard--service .wedo-invcard__media img{object-position:center}
[data-theme="light"] .wedo-invcard{
  border-color:rgba(206,121,103,.26);
  background:linear-gradient(145deg,rgba(255,255,255,.94),rgba(249,244,242,.84));
  box-shadow:0 18px 44px -36px rgba(80,43,35,.42),inset 0 1px 0 rgba(255,255,255,.9);
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px)
}
[data-theme="light"] .wedo-invcard__ico{
  border-color:rgba(206,121,103,.22);
  background:rgba(206,121,103,.12)
}
@media (hover:hover) and (pointer:fine){
  .wedo-invcard:hover{border-color:rgba(206,121,103,.4); transform:translateY(-3px)}
  [data-theme="light"] .wedo-invcard:hover{
    border-color:rgba(206,121,103,.58);
    box-shadow:0 22px 48px -32px rgba(80,43,35,.5),inset 0 1px 0 rgba(255,255,255,.96)
  }
}

/* Trust badges row */
.wedo-services__trust{display:grid; grid-template-columns:repeat(4,1fr);
  margin-top:clamp(28px,3.6vw,48px); border:1px solid var(--wd-hair); border-radius:var(--r-lg);
  background:rgba(255,255,255,.015); overflow:hidden}
.wedo-trust{display:flex; align-items:center; gap:14px; padding:clamp(18px,1.8vw,26px) clamp(16px,1.6vw,24px)}
.wedo-trust:not(:first-child){border-left:1px solid var(--wd-hair)}
.wedo-trust__ico{display:inline-flex; flex:none; width:42px; height:42px; align-items:center; justify-content:center;
  border-radius:12px; background:rgba(206,121,103,.09); color:var(--wd-accent)}
.wedo-trust__ico .wd-ico{width:22px; height:22px}
.wedo-trust__text{display:flex; flex-direction:column; gap:3px; min-width:0}
.wedo-trust__title{font-size:14.5px; font-weight:700; color:var(--wd-text-hi)}
.wedo-trust__desc{font-size:12.5px; color:var(--wd-text-dim); line-height:1.35}

@media (max-width:1024px){
  .wedo-invgrid{grid-template-columns:repeat(2,1fr)}
  .wedo-services__trust{grid-template-columns:repeat(2,1fr)}
  .wedo-trust:nth-child(odd){border-left:0}
  .wedo-trust:nth-child(n+3){border-top:1px solid var(--wd-hair)}
}
@media (max-width:560px){
  .wedo-services__head{grid-template-columns:1fr; align-items:start; gap:16px}
  .wedo-services__lead{border-left:0; padding-left:0}
  .wedo-services__ambient{
    background-position:center,center,86% 8%;
    background-size:100% 100%,100% 100%,auto 72%;
    opacity:.72
  }
  .wedo-invgrid{grid-template-columns:1fr}
  .wedo-invcard{min-height:150px}
  .wedo-services__trust{grid-template-columns:1fr}
  .wedo-trust{border-left:0}
  .wedo-trust:not(:first-child){border-top:1px solid var(--wd-hair)}
}

/* ==========================================================================
   AUDIT PASS (F5, F2): narrative variance — eyebrows on max 3 sections,
   asymmetric grids, editorial project gallery.
   ========================================================================== */

/* Eyebrow rationing: keep hero + the two 3D proof sections only. */
.wedo-safety .wd-eyebrow,
.wedo-projects .wd-eyebrow,.wedo-why .wd-eyebrow{display:none}

/* Safety: lead card + supporting pair instead of 4 equal columns. */
@media (min-width:1025px){
  .wedo-safety__grid{grid-template-columns:minmax(280px,1.4fr) repeat(2,minmax(220px,1fr))}
  .wedo-safety__grid > :first-child{grid-row:span 2; display:flex; flex-direction:column; justify-content:flex-end}
}

/* Why/About: editorial split, flat items. */
@media (min-width:1025px){
  .wedo-why__grid{grid-template-columns:minmax(0,1.7fr) minmax(280px,.8fr)}
}
.wedo-why__grid{border-radius:var(--r-md)}
.wedo-why__item{border-radius:0}

/* Projects: one dominant case tile + supporting tiles, tighter radii,
   no floating pill labels over imagery. */
.wedo-gallery{grid-template-columns:repeat(12,minmax(0,1fr)); grid-auto-rows:200px; gap:12px}
.wedo-tile{grid-column:span 4; border-radius:var(--r-sm)}
.wedo-tile--wide{grid-column:span 4; grid-row:span 1}
.wedo-tile:first-child{grid-column:span 8; grid-row:span 2}
.wedo-tile__tag{display:none}
.wedo-tile img{filter:none}
@media (max-width:1024px){
  .wedo-tile{grid-column:span 6}
  .wedo-tile:first-child{grid-column:span 12; grid-row:span 1}
}
@media (max-width:768px){
  .wedo-gallery{grid-auto-rows:160px}
  .wedo-tile{grid-column:span 6}
}

/* ================= 3D INTERACTION & PLATFORM LAYOUT (v1.2) ================= */
/* Let pointer events reach the canvas except on real content. */
.wedo-assemble__copy{pointer-events:none}
.wedo-assemble__text,.wedo-assemble__progress{pointer-events:auto}
/* Drag-to-rotate affordance once assembled; vertical scroll stays free. */
.wedo-assemble__canvas{touch-action:pan-y}
.wedo-assemble__canvas.is-rotatable{cursor:grab}
.wedo-assemble__canvas.is-rotatable:active{cursor:grabbing}

/* Platform section: copy stays right; the scroll/progress hint floats LEFT,
   up over the model itself (client direction). */
.wedo-assemble--alt .wedo-assemble__progress{position:absolute; left:clamp(16px,4vw,40px);
  top:calc((100svh - 100%) / -2 + var(--nav-h) + 112px);
  margin:0; max-width:240px; text-align:left}
.wedo-assemble--alt .wedo-assemble__copy--right .wedo-assemble__progress{margin-left:0}
@media (min-width:769px){
  .wedo-assemble:not(.wedo-assemble--alt) .wedo-assemble__progress{
    position:absolute; top:clamp(-116px,-14vh,-88px);
    right:calc((100vw - 100%) / -2 + clamp(150px,13vw,220px)); width:min(320px,24vw);
    margin:0; text-align:right
  }
}
@media (max-width:768px){
  .wedo-assemble--alt .wedo-assemble__progress{position:static; margin-top:var(--sp-8); max-width:320px}
}

/* Keep sticky 3D copy clear of the fixed nav. */
.wedo-assemble__sticky{padding-top:calc(var(--nav-h) + 8px)}
/* Hint swap: "scroll to assemble" → "drag to rotate" once built (v1.2.1) */
.wedo-assemble__hint--rotate{display:none; color:var(--wd-accent); margin:10px 0 0}
.wedo-assemble.is-built .wedo-assemble__hint--rotate{display:block}
.wedo-assemble.is-built .wedo-assemble__hint:not(.wedo-assemble__hint--rotate){opacity:.4}

/* ============ THEMED TEXTURE ON BLOCKS (v1.4) ============ */
/* Galvanized tread-plate over each block's own fill (texture layer first). */
.wedo-why__item{background-image:var(--wd-tex-plate); background-size:22px 22px}
/* Blueprint grid on the big bands (behind content, faded at edges). */
.wedo-safety{position:relative}
.wedo-safety > .wd-container{position:relative; z-index:1}
.wedo-safety::before{content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background-image:var(--wd-tex-grid); background-size:30px 30px;
  -webkit-mask-image:radial-gradient(130% 110% at 70% 0%,#000,transparent 78%);
  mask-image:radial-gradient(130% 110% at 70% 0%,#000,transparent 78%)}
/* Platform section: nudge the right-aligned copy further right so the model
   (moved left) has its own space (desktop only; mobile stacks). */
@media (min-width:769px){
  .wedo-assemble--alt .wedo-assemble__text{transform:translateX(clamp(8px,2.2vw,32px))}
}
