/* SORALINX Public Release — interaction layer */
:root{
  --sx-hover-duration:.32s;
  --sx-hover-ease:cubic-bezier(.22,.61,.36,1);
}

/* Text links */
a{
  transition:
    color var(--sx-hover-duration) var(--sx-hover-ease),
    opacity var(--sx-hover-duration) var(--sx-hover-ease);
}

/* Header navigation: quiet line grows from left to right */
header nav a,
.site-header nav a,
.nav a{
  position:relative;
  text-decoration:none;
}
header nav a::after,
.site-header nav a::after,
.nav a::after{
  content:"";
  position:absolute;
  left:0;
  right:100%;
  bottom:-.38rem;
  height:1px;
  background:currentColor;
  opacity:.72;
  transition:right .38s var(--sx-hover-ease), opacity .38s var(--sx-hover-ease);
}
header nav a:hover::after,
header nav a:focus-visible::after,
.site-header nav a:hover::after,
.site-header nav a:focus-visible::after,
.nav a:hover::after,
.nav a:focus-visible::after{
  right:0;
  opacity:1;
}

/* Buttons / CTA */
.btn, .button, a[class*="btn"], a[class*="button"], .cta a{
  transition:
    transform var(--sx-hover-duration) var(--sx-hover-ease),
    box-shadow var(--sx-hover-duration) var(--sx-hover-ease),
    background-color var(--sx-hover-duration) var(--sx-hover-ease),
    color var(--sx-hover-duration) var(--sx-hover-ease);
}
.btn:hover, .button:hover, a[class*="btn"]:hover, a[class*="button"]:hover, .cta a:hover{
  transform:translateY(-2px);
  box-shadow:0 8px 24px rgba(14,48,72,.12);
}

/* Cards: only a tiny lift; no flashy motion */
.card, .project-card, .news-card, .log-card, article[class*="card"]{
  transition:
    transform .38s var(--sx-hover-ease),
    box-shadow .38s var(--sx-hover-ease),
    border-color .38s var(--sx-hover-ease);
}
.card:hover, .project-card:hover, .news-card:hover, .log-card:hover, article[class*="card"]:hover{
  transform:translateY(-3px);
  box-shadow:0 12px 32px rgba(14,48,72,.08);
}

/* Arrow-like spans/icons drift slightly */
a:hover .arrow, a:hover [class*="arrow"],
a:focus-visible .arrow, a:focus-visible [class*="arrow"]{
  transform:translateX(4px);
}
.arrow, [class*="arrow"]{
  display:inline-block;
  transition:transform var(--sx-hover-duration) var(--sx-hover-ease);
}

/* Keyboard accessibility */
a:focus-visible, button:focus-visible{
  outline:2px solid currentColor;
  outline-offset:4px;
}

/* Touch devices: don't fake hover movement */
@media (hover:none){
  .card:hover, .project-card:hover, .news-card:hover, .log-card:hover,
  article[class*="card"]:hover,
  .btn:hover, .button:hover, a[class*="btn"]:hover, a[class*="button"]:hover, .cta a:hover{
    transform:none;
    box-shadow:none;
  }
}
@media (prefers-reduced-motion:reduce){
  *, *::before, *::after{
    scroll-behavior:auto!important;
    transition-duration:.01ms!important;
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
  }
}