/* Small, purposeful movements; the LAB glyphs keep their existing choreography. */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  html:not(.motion-paused) #work .wl-carousel-screen > img.wl-featured-media {
    transition: transform 700ms cubic-bezier(.22,1,.36,1);
    transform-origin:center;
  }
  html:not(.motion-paused) #work .wl-carousel-card:is(:hover,:focus-visible) .wl-carousel-screen > img.wl-featured-media {
    transform:scale(1.025);
  }
  html:not(.motion-paused) #work .wl-carousel-arrow {
    transition: transform 240ms cubic-bezier(.22,1,.36,1), color 200ms ease;
  }
  html:not(.motion-paused) #projects-inner details.project > summary:hover .project-plus,
  html:not(.motion-paused) #projects-inner details.project > summary:focus-visible .project-plus {
    opacity:.72;
  }
  html:not(.motion-paused) #contact .contact-submit:hover .wl-main-icon {
    transform:translateX(3px);
  }
  html:not(.motion-paused) [data-framer-name="footer link cv"]:is(:hover,:focus-visible) .wl-main-icon {
    transform:translate(2px,-2px);
  }
  html:not(.motion-paused) [data-framer-name="footer link top"]:is(:hover,:focus-visible) .wl-main-icon {
    transform:translateY(-3px);
  }
}
#projects-inner details.project > summary .project-plus {transition:opacity 180ms ease}
#contact .contact-submit .wl-main-icon {transition:transform 220ms cubic-bezier(.22,1,.36,1)}
[data-framer-name="footer link cv"] .wl-main-icon,
[data-framer-name="footer link top"] .wl-main-icon {transition:transform 220ms cubic-bezier(.22,1,.36,1)}
/* A line confirms link intent while preserving text position and focus styling. */
#projects-inner .wl-case-footer :is(.wl-case-footer-back,.wl-case-footer-external) {
  text-decoration-line:underline!important;text-decoration-color:transparent!important;text-underline-offset:4px;
  transition:text-decoration-color 180ms ease;
}
#projects-inner .wl-case-footer :is(.wl-case-footer-back,.wl-case-footer-external):is(:hover,:focus-visible) {
  text-decoration-color:currentColor!important;
}
/* Keep the existing one-pixel seam: drifting ink, local reflected light.
   Neither the measuring grid nor form-field rules acquire decorative motion. */
html.wlb-hero-lab .site-header {--wl-seam-halo:255 255 255}
html.wlb-hero-lab[data-theme="dark"] .site-header {--wl-seam-halo:53 54 47}
html.wlb-hero-lab .site-header::after {
  background-image:
    radial-gradient(ellipse 160px 2px at var(--wl-seam-x,50%) 50%,rgb(var(--wl-seam-halo) / var(--wl-seam-near,0)),transparent),
    linear-gradient(90deg,
      color-mix(in srgb,var(--header-seam-ink) 3%,transparent) 0%,
      color-mix(in srgb,var(--header-seam-ink) 24%,transparent) 19%,
      transparent 36%,
      color-mix(in srgb,var(--header-seam-ink) 27%,transparent) 57%,
      transparent 76%,
      color-mix(in srgb,var(--header-seam-ink) 14%,transparent) 100%);
  background-size:100% 100%,230% 100%;
  animation:wl-seam-reflection 23s cubic-bezier(.45,0,.55,1) infinite alternate;
}
@keyframes wl-seam-reflection {
  0% {background-position:0 0,0% 50%;opacity:.62}
  52% {opacity:1}
  100% {background-position:0 0,100% 50%;opacity:.78}
}
@media(min-width:768px) {
  html.wlb-hero-lab.wlb-canon-composed .site-header .header-tools::before {
    animation:wl-language-seam 17s ease-in-out -7s infinite alternate;
  }
}
@keyframes wl-language-seam {from{opacity:.35}to{opacity:.85}}
html[data-wl-daylight-sleep] .site-header::before,
html[data-wl-daylight-sleep] .site-header::after,
html[data-wl-daylight-sleep] .site-header .header-tools::before,
html.motion-paused .site-header .header-tools::before {animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce), (forced-colors:active) {
  html.wlb-hero-lab .site-header::after,
  html.wlb-hero-lab.wlb-canon-composed .site-header .header-tools::before {animation:none!important;opacity:1}
}
/* Menu lines turn into a close mark without changing their geometry or labels. */
html[lang=pl] .site-header .mobile-menu-toggle svg :is(.wl-menu-open,.wl-menu-close) {
  display:inline!important;transform-box:fill-box;transform-origin:center;
  transition:opacity 180ms ease,transform 240ms cubic-bezier(.22,1,.36,1);
}
html[lang=pl] .site-header .mobile-menu-toggle svg .wl-menu-open {opacity:1;transform:rotate(0deg)}
html[lang=pl] .site-header .mobile-menu-toggle svg .wl-menu-close {opacity:0;transform:rotate(-18deg)}
html[lang=pl] .site-header .mobile-menu-toggle[aria-expanded=true] svg .wl-menu-open {opacity:0;transform:rotate(18deg)}
html[lang=pl] .site-header .mobile-menu-toggle[aria-expanded=true] svg .wl-menu-close {opacity:1;transform:rotate(0deg)}
#case-metamorphosis .meta-stage {position:relative}
#case-metamorphosis .meta-load-status:empty {display:none}
#case-metamorphosis .meta-load-status {display:block;margin-block:12px;font:inherit;font-size:12px;color:var(--ink)}
#case-metamorphosis .meta-tab::after {
  content:'';position:absolute;inset-inline:0;bottom:-1px;height:2px;
  background:var(--ink);transform:scaleX(0);transform-origin:left center;opacity:0;
  transition:transform 240ms cubic-bezier(.22,1,.36,1),opacity 180ms ease;
}
#case-metamorphosis .meta-tab[aria-pressed=true]::after {background:var(--ink);transform:scaleX(1);opacity:1}
html[dir=rtl] #case-metamorphosis .meta-tab::after {transform-origin:right center}
#case-metamorphosis :is(.meta-tab,.meta-controls button):focus-visible {outline-color:var(--ink)}
#case-metamorphosis .meta-controls button {transition:opacity 140ms ease}
#case-metamorphosis .meta-controls button:active {opacity:.6}
@media(max-width:760px) {
  #case-metamorphosis .meta-bar {display:grid;grid-template-columns:minmax(0,1fr);gap:6px}
  #case-metamorphosis .meta-controls {grid-row:1;justify-content:flex-end;width:100%}
  #case-metamorphosis .meta-count {margin-inline-end:auto;text-align:start}
  #case-metamorphosis .meta-caption {grid-row:2;max-width:100%;min-height:3em}
  #case-metamorphosis .meta-controls button {width:44px;height:44px}
}
html.motion-paused #case-metamorphosis .meta-tab::after,
html.motion-paused #case-metamorphosis .meta-controls button {transition:none}
@media(prefers-reduced-motion:reduce) {
  #case-metamorphosis .meta-tab::after,
  #case-metamorphosis .meta-controls button {transition:none}
}
#case-metamorphosis .meta-stage .meta-outgoing {
  position:absolute;inset:0;width:100%;height:100%;object-fit:contain;
  pointer-events:none;z-index:1;
}
@media (prefers-reduced-motion:reduce) {
  #projects-inner details.project > summary .project-plus,
  #contact .contact-submit .wl-main-icon,
  #projects-inner .wl-case-footer :is(.wl-case-footer-back,.wl-case-footer-external),
  [data-framer-name="footer link cv"] .wl-main-icon,
  [data-framer-name="footer link top"] .wl-main-icon,
  html[lang=pl] .site-header .mobile-menu-toggle svg :is(.wl-menu-open,.wl-menu-close) {transition:none}
}
html.motion-paused #projects-inner details.project > summary .project-plus,
html.motion-paused #contact .contact-submit .wl-main-icon,
html.motion-paused #projects-inner .wl-case-footer :is(.wl-case-footer-back,.wl-case-footer-external),
html.motion-paused [data-framer-name="footer link cv"] .wl-main-icon,
html.motion-paused [data-framer-name="footer link top"] .wl-main-icon,
html.motion-paused[lang=pl] .site-header .mobile-menu-toggle svg :is(.wl-menu-open,.wl-menu-close) {transition:none}
