/* ══════════════════════════════════════════
   LINEIGE — BASE
══════════════════════════════════════════ */

body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  overflow-x: hidden;
  transition: background 0.4s ease, color 0.4s ease;
  cursor: none;
}

#scrollProgress {
  position: fixed;
  top: 0;
  left: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--accent), var(--acid));
  width: 0%;
  z-index: 9999;
  transition: width 0.05s ease-out;
  pointer-events: none;
}

/* Card hover glow highlights (premium design) */
.proj-card, .sk-cat, .ab-card, .aw-card, .edu-card {
  position: relative;
  overflow: hidden;
}
.proj-card::after, .sk-cat::after, .ab-card::after, .aw-card::after, .edu-card::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: radial-gradient(
    300px circle at var(--mouse-x, 0px) var(--mouse-y, 0px),
    color-mix(in srgb, var(--accent2) 12%, transparent),
    transparent 80%
  );
  opacity: 0;
  transition: opacity 0.4s ease;
  pointer-events: none;
  z-index: 1;
}
.proj-card:hover::after, .sk-cat:hover::after, .ab-card:hover::after, .aw-card:hover::after, .edu-card:hover::after {
  opacity: 1;
}

/* Ensure contents are above glow overlay */
.proj-card > *, .sk-cat > *, .ab-card > *, .aw-card > *, .edu-card > * {
  position: relative;
  z-index: 2;
}

/* Subtle noise grain overlay */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
  opacity: 0.025;
  pointer-events: none;
  z-index: 1;
}

/* Shared button styles */
.btn-pri {
  font-family: var(--font-mono);
  font-size: 0.62rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.55rem 1.25rem;
  background: var(--accent);
  color: #fff;
  font-weight: 500;
  border-radius: var(--border-radius);
  cursor: none;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  transition: background 0.2s, transform 0.2s var(--ease-spring), box-shadow 0.2s;
}
.btn-pri:hover {
  background: var(--accent2);
  transform: translateY(-2px);
  box-shadow: 0 8px 24px var(--glow2);
}

.btn-out {
  font-family: var(--font-mono);
  font-size: 0.62rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.55rem 1.25rem;
  border: 1px solid var(--border2);
  color: var(--text);
  background: none;
  border-radius: var(--border-radius);
  cursor: none;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  transition: border-color 0.2s, color 0.2s, background 0.2s;
}
.btn-out:hover {
  border-color: var(--acid);
  color: var(--acid);
  background: var(--glow3);
}

/* Icon button (theme toggle) */
.btn-icon {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 1px solid var(--border2);
  background: var(--panel);
  color: var(--accent2);
  font-size: 0.95rem;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: none;
  transition: background 0.2s, border-color 0.2s, transform 0.2s var(--ease-spring);
}
.btn-icon:hover {
  background: var(--glow2);
  border-color: var(--accent);
  transform: scale(1.1) rotate(15deg);
}

/* Light theme adjustments */
[data-theme="light"] .btn-icon {
  color: var(--accent);
}
