/* EDGHAM motion layer — transforms/opacity only where possible */

:root{--motion-ease:cubic-bezier(.2,.75,.2,1);--ambient-x:0;--ambient-y:0}

/* Entry rhythm */
.reveal{transition-delay:var(--reveal-delay,0ms)}
.portal-grid .reveal:nth-child(2),.catalog-grid .reveal:nth-child(2){--reveal-delay:70ms}
.portal-grid .reveal:nth-child(3),.catalog-grid .reveal:nth-child(3){--reveal-delay:130ms}
.portal-grid .reveal:nth-child(4),.catalog-grid .reveal:nth-child(4){--reveal-delay:190ms}

/* Hero atmosphere */
.hero-noise{animation:edghamNoiseDrift 18s linear infinite}
.hero-sculpture:before,.hero-sculpture:after{content:"";position:absolute;display:block;border-radius:50%;pointer-events:none;will-change:transform,opacity}
.hero-sculpture:before{width:18%;aspect-ratio:1;right:3%;top:9%;background:color-mix(in srgb,var(--accent),transparent 82%);filter:blur(1px);animation:edghamOrbitSoft 9s ease-in-out infinite alternate}
.hero-sculpture:after{width:7%;aspect-ratio:1;left:18%;top:28%;border:1px solid var(--line-strong);animation:edghamFloatSoft 7s ease-in-out infinite alternate}
.sculpture-object{will-change:transform}
.object-plane{transition:border-color .45s ease,background .45s ease}
.sculpture-object:after{content:"";position:absolute;width:44%;height:1px;right:-20%;top:28%;background:linear-gradient(90deg,transparent,var(--ink),transparent);opacity:.2;transform:rotate(-28deg);animation:edghamSweep 5.5s ease-in-out infinite}

/* Editorial portal cards */
.portal-card{isolation:isolate;will-change:transform}
.portal-card:after{content:"";position:absolute;inset:auto 8% 4% auto;width:52px;aspect-ratio:1;border:1px solid currentColor;border-radius:50%;opacity:.08;transition:transform .6s var(--motion-ease),opacity .4s ease}
.portal-card:hover:after{transform:scale(1.8);opacity:.14}
.portal-art i{will-change:transform;transition:transform .8s var(--motion-ease)}
.portal-card:hover .portal-art i:nth-child(1){transform:translate3d(0,-6px,0) rotate(2deg)}
.portal-card:hover .portal-art i:nth-child(2){transform:translate3d(7px,4px,0) rotate(-3deg)}
.portal-card:hover .portal-art i:nth-child(3){transform:translate3d(-5px,2px,0) rotate(4deg)}

/* Catalog / projects */
.catalog-card,.project-card-v2{transition:transform .45s var(--motion-ease)}
.catalog-card:hover,.project-card-v2:hover{transform:translateY(-5px)}
.catalog-media img,.project-thumb img{will-change:transform}
.catalog-card:hover .catalog-media img{transform:scale(1.025)}
.catalog-placeholder i,.category-geometry i,.project-placeholder i{transition:transform .75s var(--motion-ease)}
.catalog-card:hover .catalog-placeholder i:first-child,.category-card-v2:hover .category-geometry i:first-child{transform:translate3d(8px,-8px,0) rotate(4deg)}
.catalog-card:hover .catalog-placeholder i:last-child,.category-card-v2:hover .category-geometry i:last-child{transform:translate3d(-5px,7px,0) rotate(-3deg)}

/* Material board */
.material-card{position:relative;overflow:hidden;transition:transform .42s var(--motion-ease),filter .42s ease}
.material-card:after{content:"";position:absolute;inset:-30%;background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.16) 50%,transparent 65%);transform:translateX(-70%) rotate(8deg);transition:transform .8s var(--motion-ease);pointer-events:none}
.material-card:hover{transform:translateY(-4px) rotate(.3deg)}
.material-card:hover:after{transform:translateX(70%) rotate(8deg)}
.ar-badge{animation:edghamBadgeBreath 4s ease-in-out infinite}

/* Spatial diagrams */
.space-line,.service-diagram i{will-change:transform,opacity}
.space-line:nth-child(1){animation:edghamLineBreath 6s ease-in-out infinite}
.space-line:nth-child(2){animation:edghamLineBreath 6s 1s ease-in-out infinite}
.space-line:nth-child(3){animation:edghamLineBreath 6s 2s ease-in-out infinite}
.space-label{transition:transform .4s var(--motion-ease)}
.space-diagram:hover .space-label:nth-of-type(1){transform:translateY(-4px)}
.space-diagram:hover .space-label:nth-of-type(2){transform:translateX(5px)}
.space-diagram:hover .space-label:nth-of-type(3){transform:translateY(4px)}

/* Header details */
.page-progress span{will-change:transform}
.theme-toggle-dot{transition:transform .35s var(--motion-ease)}
.theme-toggle:hover .theme-toggle-dot{transform:rotate(180deg)}
.mobile-menu-toggle[aria-expanded="true"]+.primary-nav{--menu-open:1}

@keyframes edghamNoiseDrift{0%{background-position:0 0}50%{background-position:18px 9px}100%{background-position:38px 19px}}
@keyframes edghamOrbitSoft{0%{transform:translate3d(-6px,5px,0) scale(.92);opacity:.45}100%{transform:translate3d(15px,-11px,0) scale(1.1);opacity:.8}}
@keyframes edghamFloatSoft{0%{transform:translate3d(0,5px,0) rotate(0);opacity:.35}100%{transform:translate3d(10px,-13px,0) rotate(35deg);opacity:.8}}
@keyframes edghamSweep{0%,28%{transform:translate3d(-25px,16px,0) rotate(-28deg);opacity:0}48%{opacity:.25}75%,100%{transform:translate3d(65px,-35px,0) rotate(-28deg);opacity:0}}
@keyframes edghamBadgeBreath{0%,100%{transform:scale(1);opacity:.84}50%{transform:scale(1.035);opacity:1}}
@keyframes edghamLineBreath{0%,100%{opacity:.38;transform:scaleX(.98)}50%{opacity:.85;transform:scaleX(1)}}

/* Pointer-driven ambient offset on capable devices */
@media (hover:hover) and (pointer:fine){
  .hero-sculpture{transform:translate3d(calc(var(--px,0) * 7px),calc(var(--py,0) * 7px),0)}
  .portal-card:hover{box-shadow:0 22px 55px rgba(0,0,0,.08)}
}

/* Touch/mobile: keep visual character but avoid continuous expensive motion */
@media (hover:none),(max-width:900px){
  .hero-noise{animation-duration:32s}
  .hero-sculpture:before,.hero-sculpture:after{animation-duration:13s}
  .portal-card:hover,.catalog-card:hover,.project-card-v2:hover,.material-card:hover{transform:none}
  .portal-card:hover .portal-art i,.catalog-card:hover .catalog-placeholder i,.category-card-v2:hover .category-geometry i{transform:none}
  .material-card:after{display:none}
}

@media (prefers-reduced-motion:reduce){
  .hero-noise,.hero-sculpture:before,.hero-sculpture:after,.sculpture-object:after,.ar-badge,.space-line{animation:none!important}
  .portal-art i,.catalog-card,.project-card-v2,.material-card,.theme-toggle-dot{transition:none!important}
}
