/* =====================================================================
   DS ENHANCE — Phase 1 "quick wins" (additive, fully reversible)
   Loaded AFTER style.css. To disable: dequeue 'ds-enhance' in functions.php
   (or delete this file + js/ds-enhance.js and their enqueues).
   Nothing here changes page content or layout structure — presentation only.
   ===================================================================== */

/* ---- Reveal on scroll ----------------------------------------------
   The .ds-reveal class is ADDED BY JS, so with JS off nothing is hidden.
   A failsafe timer also reveals everything if an observer misses. ---- */
.ds-reveal{
  opacity:0;
  transform:translateY(28px);
  transition:opacity .8s cubic-bezier(.16,1,.3,1), transform .8s cubic-bezier(.16,1,.3,1);
  will-change:opacity, transform;
}
.ds-reveal.is-in{opacity:1;transform:none;}

/* ---- Portfolio grid: full colour at rest, gentle zoom on hover -----
   Tiles show true colour when idle (no resting desaturation). Hover does
   only a smooth, GPU-composited zoom; opacity:1 overrides style.css's
   hover dim. */
.ds-portfolio-item img{
  transform:translateZ(0);
  backface-visibility:hidden;
  filter:brightness(1);
  transition:transform .5s cubic-bezier(.22,.61,.36,1), filter .35s ease;
}
.ds-portfolio-item:hover img{
  transform:scale(1.06) translateZ(0);
  opacity:1;
  filter:brightness(1.08);
}

/* play disc + triangle for video items — pure CSS, no markup change */
.ds-portfolio-link{position:relative;}
.ds-portfolio-link.ds-has-video::after,
.ds-portfolio-link.ds-has-video::before{
  content:"";position:absolute;top:50%;left:50%;opacity:0;pointer-events:none;
  transition:opacity .2s ease, transform .26s cubic-bezier(.22,.61,.36,1);
}
.ds-portfolio-link.ds-has-video::after{
  z-index:3;width:60px;height:60px;border:1px solid rgba(255,255,255,.8);border-radius:50%;
  transform:translate(-50%,-50%) scale(.82);
}
.ds-portfolio-link.ds-has-video::before{
  z-index:4;border-left:13px solid #fff;border-top:9px solid transparent;border-bottom:9px solid transparent;
  transform:translate(-25%,-50%) scale(.82);
}
.ds-portfolio-item:hover .ds-has-video::after{opacity:1;transform:translate(-50%,-50%) scale(1);}
.ds-portfolio-item:hover .ds-has-video::before{opacity:.95;transform:translate(-25%,-50%) scale(1);}

/* ---- Magnetic buttons (transform applied by JS on pointer move) ---- */
.ds-btn,
.ds-footer-brief{
  transition:background .25s ease, transform .2s cubic-bezier(.16,1,.3,1);
}
.ds-btn:hover{transform:translateY(-2px);}

/* ---- Bolder type (restrained — weight + tracking only, no resize) -- */
.ds-page-header h1{font-weight:800;letter-spacing:-.015em;}
.ds-page-body h2,
.entry-content h2{font-weight:800;letter-spacing:-.01em;}

/* ---- Count-up stat helper (ready for a future stats strip) --------- */
.ds-countup{font-variant-numeric:tabular-nums;}

/* ---- Respect reduced-motion preferences --------------------------- */
@media (prefers-reduced-motion:reduce){
  .ds-reveal{opacity:1 !important;transform:none !important;transition:none;}
  .ds-portfolio-item:hover img{transform:none;}
  .ds-btn:hover{transform:none;}
}
