/* ==========================================================================
   Poison Studio Design System — Components
   Dark, bold, glitch-infused
   ========================================================================== */

/* ==========================================================================
   1. BUTTONS
   ========================================================================== */

.ps-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--ps-space-2);
  font-family: var(--ps-font-heading);
  font-weight: var(--ps-weight-medium);
  font-size: var(--ps-font-sm);
  line-height: 1;
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: var(--ps-tracking-wider);
  border-radius: var(--ps-radius-full);
  cursor: pointer;
  transition: all var(--ps-duration-base) var(--ps-ease-out);
  white-space: nowrap;
  user-select: none;
  position: relative;
  overflow: hidden;
}

/* Sizes */
.ps-btn--sm {
  padding: var(--ps-space-2) var(--ps-space-5);
  font-size: var(--ps-font-xs);
}

.ps-btn--md {
  padding: var(--ps-space-3) var(--ps-space-8);
  font-size: var(--ps-font-sm);
}

.ps-btn--lg {
  padding: var(--ps-space-4) var(--ps-space-10);
  font-size: var(--ps-font-base);
}

/* Primary — accent filled */
.ps-btn--primary {
  background-color: var(--ps-accent);
  color: var(--ps-black);
  border: 2px solid var(--ps-accent);
}

.ps-btn--primary:hover {
  background-color: var(--ps-accent-hover);
  border-color: var(--ps-accent-hover);
  box-shadow: var(--ps-shadow-glow);
  transform: translateY(-2px);
}

.ps-btn--primary:active {
  transform: translateY(0);
}

/* Secondary — outline */
.ps-btn--secondary {
  background-color: transparent;
  color: var(--ps-text-primary);
  border: 1px solid var(--ps-border-light);
}

.ps-btn--secondary:hover {
  border-color: var(--ps-accent);
  color: var(--ps-accent);
  box-shadow: var(--ps-shadow-glow);
  transform: translateY(-2px);
}

/* Ghost */
.ps-btn--ghost {
  background-color: transparent;
  color: var(--ps-accent);
  border: none;
  padding-inline: var(--ps-space-2);
  letter-spacing: var(--ps-tracking-wide);
}

.ps-btn--ghost::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1px;
  background-color: var(--ps-accent);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform var(--ps-duration-base) var(--ps-ease-out);
}

.ps-btn--ghost:hover::after {
  transform: scaleX(1);
  transform-origin: left;
}

/* Icon button */
.ps-btn--icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border-radius: var(--ps-radius-full);
  background-color: var(--ps-bg-surface);
  border: 1px solid var(--ps-border);
  color: var(--ps-text-secondary);
}

.ps-btn--icon:hover {
  background-color: var(--ps-bg-hover);
  color: var(--ps-accent);
  border-color: var(--ps-accent);
}

.ps-btn--icon svg {
  width: 20px;
  height: 20px;
}

/* Disabled */
.ps-btn:disabled,
.ps-btn--disabled {
  opacity: 0.3;
  cursor: not-allowed;
  pointer-events: none;
}

/* Button with glow pulse */
.ps-btn--glow {
  animation: ps-pulse-glow 2s infinite;
}

/* Button magnetic effect container */
.ps-btn--magnetic {
  transition: transform var(--ps-duration-fast) var(--ps-ease-out);
}


/* ==========================================================================
   2. NAVIGATION
   ========================================================================== */

.ps-navbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: var(--ps-z-sticky);
  padding: var(--ps-space-5) var(--ps-space-6);
  transition: background-color var(--ps-duration-base) var(--ps-ease-out),
              backdrop-filter var(--ps-duration-base) var(--ps-ease-out);
}

.ps-navbar.is-scrolled {
  background-color: rgba(13, 13, 13, 0.9);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}

.ps-navbar__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 100%;
  margin-inline: auto;
}

.ps-navbar__logo {
  display: flex;
  align-items: center;
  gap: var(--ps-space-3);
  font-family: var(--ps-font-heading);
  font-size: var(--ps-font-lg);
  font-weight: var(--ps-weight-bold);
  color: var(--ps-text-primary);
  letter-spacing: var(--ps-tracking-tight);
}

.ps-navbar__logo svg {
  width: 32px;
  height: 32px;
}

.ps-navbar__nav {
  display: flex;
  align-items: center;
  gap: var(--ps-space-6);
  flex-wrap: wrap;
}

.ps-navbar__link {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-font-sm);
  font-weight: var(--ps-weight-medium);
  text-transform: uppercase;
  letter-spacing: var(--ps-tracking-wider);
  color: var(--ps-text-secondary);
  position: relative;
  padding: var(--ps-space-2) 0;
  transition: color var(--ps-duration-fast) var(--ps-ease-out);
}

.ps-navbar__link:hover {
  color: var(--ps-text-primary);
}

.ps-navbar__link::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 1px;
  background-color: var(--ps-accent);
  transition: width var(--ps-duration-base) var(--ps-ease-out);
}

.ps-navbar__link:hover::after {
  width: 100%;
}

.ps-navbar__link.is-active {
  color: var(--ps-accent);
}

.ps-navbar__link.is-active::after {
  width: 100%;
}

/* Dropdown */
.ps-dropdown {
  position: relative;
}

.ps-dropdown__menu {
  position: absolute;
  top: calc(100% + var(--ps-space-3));
  left: 50%;
  transform: translateX(-50%) translateY(8px);
  min-width: 200px;
  padding: var(--ps-space-3);
  background-color: var(--ps-bg-surface);
  border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-lg);
  opacity: 0;
  visibility: hidden;
  transition: all var(--ps-duration-fast) var(--ps-ease-out);
}

.ps-dropdown:hover .ps-dropdown__menu {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0);
}

.ps-dropdown__item {
  display: block;
  padding: var(--ps-space-2) var(--ps-space-4);
  font-size: var(--ps-font-sm);
  color: var(--ps-text-secondary);
  border-radius: var(--ps-radius-md);
  transition: all var(--ps-duration-fast) var(--ps-ease-out);
}

.ps-dropdown__item:hover {
  background-color: var(--ps-bg-hover);
  color: var(--ps-accent);
}

/* Hamburger */
.ps-hamburger {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  width: 28px;
  height: 28px;
  cursor: pointer;
  background: none;
  border: none;
  padding: 0;
}

.ps-hamburger__line {
  width: 100%;
  height: 1.5px;
  background-color: var(--ps-text-primary);
  transition: all var(--ps-duration-base) var(--ps-ease-out);
  transform-origin: center;
}

.ps-hamburger.is-active .ps-hamburger__line:nth-child(1) {
  transform: rotate(45deg) translate(5px, 5px);
}

.ps-hamburger.is-active .ps-hamburger__line:nth-child(2) {
  opacity: 0;
  transform: scaleX(0);
}

.ps-hamburger.is-active .ps-hamburger__line:nth-child(3) {
  transform: rotate(-45deg) translate(5px, -5px);
}

/* Mobile menu */
.ps-mobile-menu {
  display: none;
  position: fixed;
  inset: 0;
  background-color: var(--ps-bg-primary);
  z-index: var(--ps-z-overlay);
  padding: 100px var(--ps-space-8);
  flex-direction: column;
  gap: var(--ps-space-2);
}

.ps-mobile-menu.is-open {
  display: flex;
}

.ps-mobile-menu__link {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-font-3xl);
  font-weight: var(--ps-weight-bold);
  color: var(--ps-text-primary);
  padding: var(--ps-space-3) 0;
  border-bottom: 1px solid var(--ps-border);
  transition: color var(--ps-duration-fast) var(--ps-ease-out);
}

.ps-mobile-menu__link:hover {
  color: var(--ps-accent);
}

@media (max-width: 768px) {
  .ps-navbar__nav {
    display: none;
  }
  .ps-hamburger {
    display: flex;
  }
}


/* ==========================================================================
   3. CARDS
   ========================================================================== */

.ps-card {
  position: relative;
  display: flex;
  flex-direction: column;
  background-color: var(--ps-bg-elevated);
  border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-lg);
  overflow: hidden;
  transition: all var(--ps-duration-base) var(--ps-ease-out);
}

.ps-card:hover {
  border-color: var(--ps-border-light);
  transform: translateY(-4px);
  box-shadow: var(--ps-shadow-lg);
}

.ps-card__image {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background-color: var(--ps-bg-subtle);
}

.ps-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--ps-duration-slow) var(--ps-ease-out);
}

.ps-card:hover .ps-card__image img {
  transform: scale(1.05);
}

/* Overlay on hover */
.ps-card__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,0.8) 0%, transparent 50%);
  opacity: 0;
  transition: opacity var(--ps-duration-base) var(--ps-ease-out);
  display: flex;
  align-items: flex-end;
  padding: var(--ps-space-6);
}

.ps-card:hover .ps-card__overlay {
  opacity: 1;
}

.ps-card__body {
  padding: var(--ps-space-6);
}

.ps-card__tag {
  font-size: var(--ps-font-xs);
  font-weight: var(--ps-weight-medium);
  text-transform: uppercase;
  letter-spacing: var(--ps-tracking-widest);
  color: var(--ps-accent);
  margin-bottom: var(--ps-space-2);
}

.ps-card__title {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-font-lg);
  font-weight: var(--ps-weight-bold);
  color: var(--ps-text-primary);
  margin-bottom: var(--ps-space-2);
  line-height: var(--ps-leading-snug);
}

.ps-card__desc {
  font-size: var(--ps-font-sm);
  color: var(--ps-text-muted);
  margin-bottom: 0;
  line-height: var(--ps-leading-relaxed);
}

/* Card grid */
.ps-card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--ps-space-6);
}

@media (max-width: 1024px) {
  .ps-card-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 576px) {
  .ps-card-grid { grid-template-columns: 1fr; }
}

/* Card — featured (wider) */
.ps-card--featured {
  grid-column: span 2;
}

.ps-card--featured .ps-card__image {
  aspect-ratio: 21 / 9;
}

.ps-card--featured .ps-card__title {
  font-size: var(--ps-font-xl);
}

@media (max-width: 576px) {
  .ps-card--featured {
    grid-column: span 1;
  }
}


/* ==========================================================================
   4. HERO SECTION
   ========================================================================== */

.ps-hero {
  position: relative;
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  overflow: hidden;
  background-color: var(--ps-bg-primary);
}

.ps-hero__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  opacity: 0.3;
}

.ps-hero__bg video,
.ps-hero__bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.3;
}

.ps-hero__content {
  position: relative;
  z-index: var(--ps-z-base);
  text-align: left;
  padding: var(--ps-space-8) clamp(2rem, 5vw, 5rem);
  padding-left: clamp(6rem, 15vw, 16rem);
  margin-top: -8vh;
  max-width: var(--ps-container-max);
  width: 100%;
}

.ps-hero__title {
  font-family: var(--ps-font-heading);
  font-size: clamp(var(--ps-font-2xl), 6vw, var(--ps-font-display));
  font-weight: var(--ps-weight-bold);
  line-height: var(--ps-leading-none);
  letter-spacing: var(--ps-tracking-tighter);
  color: var(--ps-text-primary);
  margin-bottom: var(--ps-space-6);
  word-break: break-word;
  overflow-wrap: break-word;
}

.ps-hero__title .ps-accent-text {
  color: var(--ps-accent);
}

.ps-hero__kicker {
  font-family: var(--ps-font-mono);
  font-size: var(--ps-font-xs);
  font-weight: var(--ps-weight-regular);
  text-transform: uppercase;
  letter-spacing: var(--ps-tracking-widest);
  color: var(--ps-accent-muted);
  margin-bottom: var(--ps-space-4);
}

.ps-hero__subtitle {
  font-size: var(--ps-font-lg);
  font-weight: var(--ps-weight-light);
  color: var(--ps-text-secondary);
  max-width: 600px;
  line-height: var(--ps-leading-relaxed);
  margin-bottom: var(--ps-space-8);
}

.ps-hero__cta-link {
  display: inline-block;
  font-family: var(--ps-font-heading);
  font-size: var(--ps-font-sm);
  font-weight: var(--ps-weight-medium);
  text-transform: uppercase;
  letter-spacing: var(--ps-tracking-wider);
  color: var(--ps-accent);
  position: relative;
  padding-bottom: 4px;
}

.ps-hero__cta-link::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1px;
  background: var(--ps-accent);
  transform: scaleX(0.3);
  transform-origin: left;
  transition: transform var(--ps-duration-base) var(--ps-ease-out);
}

.ps-hero__cta-link:hover {
  color: var(--ps-accent-hover);
}

.ps-hero__cta-link:hover::after {
  transform: scaleX(1);
}

@media (max-width: 768px) {
  .ps-hero__title {
    font-size: var(--ps-font-4xl);
  }
}

@media (max-width: 480px) {
  .ps-hero__title {
    font-size: var(--ps-font-3xl);
  }
}


/* ==========================================================================
   5. VIDEO PLAYER
   ========================================================================== */

.ps-video-player {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  background-color: var(--ps-black);
  border-radius: var(--ps-radius-lg);
  overflow: hidden;
  border: 1px solid var(--ps-border);
}

.ps-video-player video {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ps-video-player__controls {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  display: flex;
  align-items: center;
  gap: var(--ps-space-4);
  padding: var(--ps-space-4) var(--ps-space-6);
  background: linear-gradient(to top, rgba(0,0,0,0.8), transparent);
  transition: opacity var(--ps-duration-base) var(--ps-ease-out);
}

.ps-video-player__btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  color: var(--ps-text-primary);
  transition: color var(--ps-duration-fast) var(--ps-ease-out);
}

.ps-video-player__btn:hover {
  color: var(--ps-accent);
}

.ps-video-player__btn svg {
  width: 20px;
  height: 20px;
}

.ps-video-player__progress {
  flex: 1;
  height: 4px;
  background-color: rgba(255, 255, 255, 0.2);
  border-radius: var(--ps-radius-full);
  cursor: pointer;
  position: relative;
  overflow: hidden;
}

.ps-video-player__progress-fill {
  height: 100%;
  background-color: var(--ps-accent);
  border-radius: var(--ps-radius-full);
  width: 35%;
  transition: width 100ms linear;
}

.ps-video-player__time {
  font-family: var(--ps-font-mono);
  font-size: var(--ps-font-xs);
  color: var(--ps-text-muted);
  min-width: 80px;
  text-align: right;
}

/* Big play button center */
.ps-video-player__play-big {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 80px;
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: rgba(184, 224, 200, 0.15);
  border: 2px solid var(--ps-accent);
  border-radius: var(--ps-radius-full);
  color: var(--ps-accent);
  cursor: pointer;
  transition: all var(--ps-duration-base) var(--ps-ease-out);
  backdrop-filter: blur(8px);
}

.ps-video-player__play-big:hover {
  background-color: var(--ps-accent);
  color: var(--ps-black);
  transform: translate(-50%, -50%) scale(1.1);
}

.ps-video-player__play-big svg {
  width: 28px;
  height: 28px;
  margin-left: 4px;
}


/* ==========================================================================
   6. SECTION COMPONENTS
   ========================================================================== */

/* Section header with line */
.ps-section-header {
  display: flex;
  align-items: center;
  gap: var(--ps-space-6);
  margin-bottom: var(--ps-space-10);
}

.ps-section-header__number {
  font-family: var(--ps-font-mono);
  font-size: var(--ps-font-xs);
  color: var(--ps-accent);
  flex-shrink: 0;
}

.ps-section-header__line {
  flex: 1;
  height: 1px;
  background-color: var(--ps-border);
}

.ps-section-header__title {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-font-sm);
  font-weight: var(--ps-weight-medium);
  text-transform: uppercase;
  letter-spacing: var(--ps-tracking-widest);
  color: var(--ps-text-muted);
  flex-shrink: 0;
}

/* CTA Section — dark with accent */
.ps-cta-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: var(--ps-space-32) var(--ps-space-6);
  background-color: var(--ps-bg-primary);
  position: relative;
}

.ps-cta-section__label {
  font-family: var(--ps-font-mono);
  font-size: var(--ps-font-xs);
  text-transform: uppercase;
  letter-spacing: var(--ps-tracking-widest);
  color: var(--ps-accent);
  margin-bottom: var(--ps-space-6);
}

.ps-cta-section__title {
  font-family: var(--ps-font-heading);
  font-size: clamp(var(--ps-font-2xl), 5vw, var(--ps-font-4xl));
  font-weight: var(--ps-weight-bold);
  color: var(--ps-text-primary);
  margin-bottom: var(--ps-space-6);
  line-height: var(--ps-leading-tight);
  letter-spacing: var(--ps-tracking-tight);
}

.ps-cta-section__desc {
  font-size: var(--ps-font-md);
  color: var(--ps-text-muted);
  max-width: 480px;
  margin-bottom: var(--ps-space-10);
}

/* Marquee / ticker */
.ps-marquee {
  overflow: hidden;
  white-space: nowrap;
  padding: var(--ps-space-6) 0;
  border-top: 1px solid var(--ps-border);
  border-bottom: 1px solid var(--ps-border);
  max-width: 100%;
}

.ps-marquee__inner {
  display: inline-flex;
  animation: ps-marquee 20s linear infinite;
}

.ps-marquee__text {
  font-family: var(--ps-font-heading);
  font-size: clamp(var(--ps-font-xl), 3vw, var(--ps-font-3xl));
  font-weight: var(--ps-weight-bold);
  text-transform: uppercase;
  letter-spacing: var(--ps-tracking-wide);
  color: var(--ps-text-primary);
  padding-right: var(--ps-space-16);
}

.ps-marquee__text .ps-accent-text {
  color: var(--ps-accent);
}

.ps-marquee:hover .ps-marquee__inner {
  animation-play-state: paused;
}


/* ==========================================================================
   7. FORMS
   ========================================================================== */

.ps-input {
  display: block;
  width: 100%;
  padding: var(--ps-space-4) var(--ps-space-5);
  font-size: var(--ps-font-sm);
  color: var(--ps-text-primary);
  background-color: var(--ps-bg-surface);
  border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-md);
  transition: border-color var(--ps-duration-fast) var(--ps-ease-out),
              box-shadow var(--ps-duration-fast) var(--ps-ease-out);
}

.ps-input::placeholder {
  color: var(--ps-text-muted);
}

.ps-input:focus {
  border-color: var(--ps-accent);
  box-shadow: 0 0 0 3px var(--ps-glow-accent);
}

/* Input underline variant */
.ps-input--underline {
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--ps-border);
  border-radius: 0;
  padding: var(--ps-space-4) 0;
  font-size: var(--ps-font-md);
}

.ps-input--underline:focus {
  border-color: var(--ps-accent);
  box-shadow: none;
}

/* Search */
.ps-search {
  position: relative;
}

.ps-search__icon {
  position: absolute;
  left: var(--ps-space-4);
  top: 50%;
  transform: translateY(-50%);
  width: 18px;
  height: 18px;
  color: var(--ps-text-muted);
  pointer-events: none;
}

.ps-search .ps-input {
  padding-left: var(--ps-space-12);
}

/* Toggle */
.ps-toggle {
  position: relative;
  display: inline-block;
  width: 48px;
  height: 26px;
  cursor: pointer;
}

.ps-toggle__input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.ps-toggle__slider {
  position: absolute;
  inset: 0;
  background-color: var(--ps-bg-hover);
  border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-full);
  transition: all var(--ps-duration-base) var(--ps-ease-out);
}

.ps-toggle__slider::before {
  content: '';
  position: absolute;
  top: 2px;
  left: 2px;
  width: 20px;
  height: 20px;
  background-color: var(--ps-text-muted);
  border-radius: var(--ps-radius-full);
  transition: all var(--ps-duration-base) var(--ps-ease-out);
}

.ps-toggle__input:checked + .ps-toggle__slider {
  background-color: rgba(184, 224, 200, 0.15);
  border-color: var(--ps-accent);
}

.ps-toggle__input:checked + .ps-toggle__slider::before {
  transform: translateX(22px);
  background-color: var(--ps-accent);
}

/* Checkbox */
.ps-checkbox {
  display: inline-flex;
  align-items: center;
  gap: var(--ps-space-3);
  cursor: pointer;
  font-size: var(--ps-font-sm);
  user-select: none;
  color: var(--ps-text-secondary);
}

.ps-checkbox__input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.ps-checkbox__box {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border: 1px solid var(--ps-border-light);
  border-radius: var(--ps-radius-sm);
  transition: all var(--ps-duration-fast) var(--ps-ease-out);
  flex-shrink: 0;
}

.ps-checkbox__box svg {
  width: 14px;
  height: 14px;
  color: var(--ps-black);
  opacity: 0;
  transition: opacity var(--ps-duration-fast);
}

.ps-checkbox__input:checked ~ .ps-checkbox__box {
  background-color: var(--ps-accent);
  border-color: var(--ps-accent);
}

.ps-checkbox__input:checked ~ .ps-checkbox__box svg {
  opacity: 1;
}

/* Select */
.ps-select {
  position: relative;
  display: inline-block;
}

.ps-select select {
  appearance: none;
  display: block;
  width: 100%;
  padding: var(--ps-space-3) var(--ps-space-10) var(--ps-space-3) var(--ps-space-4);
  font-size: var(--ps-font-sm);
  color: var(--ps-text-primary);
  background-color: var(--ps-bg-surface);
  border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-md);
  cursor: pointer;
  transition: border-color var(--ps-duration-fast);
}

.ps-select select:focus {
  border-color: var(--ps-accent);
}

.ps-select::after {
  content: '';
  position: absolute;
  right: var(--ps-space-4);
  top: 50%;
  transform: translateY(-50%);
  width: 0;
  height: 0;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 5px solid var(--ps-text-muted);
  pointer-events: none;
}


/* ==========================================================================
   8. TAGS & BADGES
   ========================================================================== */

.ps-tag {
  display: inline-flex;
  align-items: center;
  gap: var(--ps-space-1);
  padding: var(--ps-space-1) var(--ps-space-4);
  font-size: var(--ps-font-xs);
  font-weight: var(--ps-weight-medium);
  text-transform: uppercase;
  letter-spacing: var(--ps-tracking-wide);
  color: var(--ps-text-secondary);
  background-color: var(--ps-bg-surface);
  border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-full);
  cursor: pointer;
  transition: all var(--ps-duration-fast) var(--ps-ease-out);
  user-select: none;
}

.ps-tag:hover {
  border-color: var(--ps-text-muted);
  color: var(--ps-text-primary);
}

.ps-tag.is-active {
  background-color: var(--ps-accent);
  color: var(--ps-black);
  border-color: var(--ps-accent);
}

.ps-badge {
  display: inline-flex;
  align-items: center;
  padding: var(--ps-space-1) var(--ps-space-3);
  font-size: 0.625rem;
  font-weight: var(--ps-weight-bold);
  text-transform: uppercase;
  letter-spacing: var(--ps-tracking-widest);
  color: var(--ps-black);
  background-color: var(--ps-accent);
  border-radius: var(--ps-radius-sm);
}

.ps-badge--outline {
  background-color: transparent;
  color: var(--ps-accent);
  border: 1px solid var(--ps-accent);
}

.ps-badge--subtle {
  background-color: var(--ps-glow-accent);
  color: var(--ps-accent);
}

.ps-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ps-space-2);
}


/* ==========================================================================
   9. SOCIAL ICONS
   ========================================================================== */

.ps-social {
  display: flex;
  align-items: center;
  gap: var(--ps-space-3);
}

.ps-social__link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  color: var(--ps-text-muted);
  border-radius: var(--ps-radius-full);
  transition: all var(--ps-duration-base) var(--ps-ease-out);
}

.ps-social__link:hover {
  color: var(--ps-accent);
  transform: scale(1.15);
}

/* Adjacent icon scales on hover (Poison Studio signature) */
.ps-social__link:hover + .ps-social__link {
  transform: scale(1.06);
}

.ps-social__link svg {
  width: 20px;
  height: 20px;
}


/* ==========================================================================
   10. FOOTER
   ========================================================================== */

.ps-footer {
  background-color: var(--ps-black);
  padding: var(--ps-space-16) 0 var(--ps-space-8);
  border-top: 1px solid var(--ps-border);
}

.ps-footer__inner {
  max-width: var(--ps-container-max);
  margin-inline: auto;
  padding-inline: var(--ps-container-padding);
}

.ps-footer__grid {
  display: grid;
  grid-template-columns: 2fr repeat(3, 1fr);
  gap: var(--ps-space-8);
  margin-bottom: var(--ps-space-16);
}

.ps-footer__logo {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-font-xl);
  font-weight: var(--ps-weight-bold);
  color: var(--ps-text-primary);
  margin-bottom: var(--ps-space-4);
}

.ps-footer__desc {
  font-size: var(--ps-font-sm);
  color: var(--ps-text-muted);
  line-height: var(--ps-leading-relaxed);
  margin-bottom: var(--ps-space-6);
}

.ps-footer__heading {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-font-xs);
  font-weight: var(--ps-weight-semibold);
  text-transform: uppercase;
  letter-spacing: var(--ps-tracking-widest);
  color: var(--ps-text-muted);
  margin-bottom: var(--ps-space-5);
}

.ps-footer__links {
  display: flex;
  flex-direction: column;
  gap: var(--ps-space-3);
}

.ps-footer__link {
  font-size: var(--ps-font-sm);
  color: var(--ps-text-muted);
  transition: color var(--ps-duration-fast) var(--ps-ease-out);
}

.ps-footer__link:hover {
  color: var(--ps-accent);
}

.ps-footer__bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--ps-space-3);
  padding-top: var(--ps-space-8);
  border-top: 1px solid var(--ps-border);
  font-size: var(--ps-font-xs);
  color: var(--ps-text-muted);
  word-break: break-word;
}

.ps-footer__time {
  font-family: var(--ps-font-mono);
  font-size: var(--ps-font-xs);
  color: var(--ps-text-muted);
}

@media (max-width: 1024px) {
  .ps-footer__grid {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 768px) {
  .ps-footer__grid {
    grid-template-columns: 1fr;
    gap: var(--ps-space-8);
  }
}


/* ==========================================================================
   11. GLITCH EFFECT
   ========================================================================== */

.ps-glitch {
  position: relative;
  display: inline-block;
  max-width: 100%;
}

.ps-glitch__text {
  position: relative;
  z-index: 1;
}

.ps-glitch::before,
.ps-glitch::after {
  content: attr(data-text);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
}

.ps-glitch::before {
  color: #ff6b6b;
  z-index: 0;
}

.ps-glitch::after {
  color: #4ecdc4;
  z-index: 0;
}

.ps-glitch.is-glitching::before {
  opacity: 0.8;
  animation: ps-glitch-shake var(--ps-duration-glitch) linear;
  clip-path: polygon(0 0, 100% 0, 100% 45%, 0 45%);
}

.ps-glitch.is-glitching::after {
  opacity: 0.8;
  animation: ps-glitch-skew var(--ps-duration-glitch) linear;
  clip-path: polygon(0 55%, 100% 55%, 100% 100%, 0 100%);
}

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


/* ==========================================================================
   12. UTILITIES
   ========================================================================== */

/* Divider */
.ps-divider {
  width: 100%;
  height: 1px;
  background-color: var(--ps-border);
  margin: var(--ps-space-8) 0;
}

.ps-divider--accent {
  background-color: var(--ps-accent);
  opacity: 0.3;
}

/* Tooltip */
.ps-tooltip {
  position: relative;
  display: inline-block;
}

.ps-tooltip__content {
  position: absolute;
  bottom: calc(100% + 10px);
  left: 50%;
  transform: translateX(-50%) translateY(4px);
  padding: var(--ps-space-2) var(--ps-space-3);
  font-size: var(--ps-font-xs);
  font-weight: var(--ps-weight-medium);
  color: var(--ps-black);
  background-color: var(--ps-accent);
  border-radius: var(--ps-radius-md);
  white-space: nowrap;
  opacity: 0;
  visibility: hidden;
  transition: all var(--ps-duration-fast) var(--ps-ease-out);
  pointer-events: none;
}

.ps-tooltip__content::after {
  content: '';
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent;
  border-top-color: var(--ps-accent);
}

.ps-tooltip:hover .ps-tooltip__content {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0);
}

/* Overlay */
.ps-overlay {
  position: fixed;
  inset: 0;
  background-color: var(--ps-overlay);
  backdrop-filter: blur(4px);
  z-index: var(--ps-z-overlay);
  opacity: 0;
  visibility: hidden;
  transition: all var(--ps-duration-base) var(--ps-ease-out);
}

.ps-overlay.is-visible {
  opacity: 1;
  visibility: visible;
}

/* Accordion */
.ps-accordion {
  border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-lg);
  overflow: hidden;
}

.ps-accordion__item {
  border-bottom: 1px solid var(--ps-border);
}

.ps-accordion__item:last-child {
  border-bottom: none;
}

.ps-accordion__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: var(--ps-space-5) var(--ps-space-6);
  font-family: var(--ps-font-heading);
  font-size: var(--ps-font-sm);
  font-weight: var(--ps-weight-medium);
  text-align: left;
  cursor: pointer;
  background: none;
  border: none;
  color: var(--ps-text-primary);
  transition: background-color var(--ps-duration-fast);
}

.ps-accordion__header:hover {
  background-color: var(--ps-bg-elevated);
}

.ps-accordion__icon {
  width: 16px;
  height: 16px;
  transition: transform var(--ps-duration-base) var(--ps-ease-out);
  color: var(--ps-accent);
  flex-shrink: 0;
}

.ps-accordion__item.is-open .ps-accordion__icon {
  transform: rotate(45deg);
}

.ps-accordion__body {
  max-height: 0;
  overflow: hidden;
  transition: max-height var(--ps-duration-base) var(--ps-ease-out);
}

.ps-accordion__content {
  padding: 0 var(--ps-space-6) var(--ps-space-6);
  font-size: var(--ps-font-sm);
  color: var(--ps-text-muted);
  line-height: var(--ps-leading-relaxed);
}


/* ==========================================================================
   13. GRID SYSTEM
   ========================================================================== */

.ps-grid {
  display: grid;
  gap: var(--ps-space-6);
}

.ps-grid--2 { grid-template-columns: repeat(2, 1fr); }
.ps-grid--3 { grid-template-columns: repeat(3, 1fr); }
.ps-grid--4 { grid-template-columns: repeat(4, 1fr); }

@media (max-width: 768px) {
  .ps-grid--3, .ps-grid--4 { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 480px) {
  .ps-grid--2, .ps-grid--3, .ps-grid--4 { grid-template-columns: 1fr; }
}


/* ==========================================================================
   14. SCROLL PROGRESS BAR
   ========================================================================== */

.ps-scroll-progress {
  position: fixed;
  top: 0;
  left: 0;
  height: 3px;
  width: 0%;
  background: linear-gradient(90deg, var(--ps-accent), var(--ps-accent-hover));
  z-index: calc(var(--ps-z-max) + 1);
  transition: width 50ms linear;
  box-shadow: 0 0 8px var(--ps-glow-accent);
}


/* ==========================================================================
   15. CUSTOM CURSOR
   ========================================================================== */

.ps-cursor__dot,
.ps-cursor__ring {
  position: fixed;
  top: 0;
  left: 0;
  pointer-events: none;
  z-index: calc(var(--ps-z-max) + 2);
  will-change: transform;
}

.ps-cursor__dot {
  width: 6px;
  height: 6px;
  margin: -3px 0 0 -3px;
  background-color: var(--ps-accent);
  border-radius: var(--ps-radius-full);
  transition: width 0.2s, height 0.2s, margin 0.2s, opacity 0.2s;
}

.ps-cursor__ring {
  width: 36px;
  height: 36px;
  margin: -18px 0 0 -18px;
  border: 1.5px solid rgba(184, 224, 200, 0.4);
  border-radius: var(--ps-radius-full);
  transition: width 0.3s var(--ps-ease-out),
              height 0.3s var(--ps-ease-out),
              margin 0.3s var(--ps-ease-out),
              border-color 0.3s;
}

.ps-cursor__ring.is-hover {
  width: 56px;
  height: 56px;
  margin: -28px 0 0 -28px;
  border-color: var(--ps-accent);
}

.ps-cursor__dot.is-hover {
  width: 4px;
  height: 4px;
  margin: -2px 0 0 -2px;
  opacity: 0.5;
}

/* Hide custom cursor on touch devices */
@media (hover: none) and (pointer: coarse) {
  .ps-cursor__dot,
  .ps-cursor__ring {
    display: none;
  }
}


/* ==========================================================================
   16. MODAL — full-screen overlay with animated panel
   ========================================================================== */

.ps-modal {
  position: fixed;
  inset: 0;
  z-index: var(--ps-z-modal);
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: rgba(0, 0, 0, 0);
  backdrop-filter: blur(0px);
  visibility: hidden;
  transition: background-color var(--ps-duration-slow) var(--ps-ease-out),
              backdrop-filter var(--ps-duration-slow) var(--ps-ease-out),
              visibility 0s linear var(--ps-duration-slow);
}

.ps-modal.is-open {
  visibility: visible;
  background-color: var(--ps-overlay-heavy);
  backdrop-filter: blur(8px);
  transition: background-color var(--ps-duration-slow) var(--ps-ease-out),
              backdrop-filter var(--ps-duration-slow) var(--ps-ease-out),
              visibility 0s linear 0s;
}

.ps-modal__panel {
  position: relative;
  width: 90%;
  max-width: 560px;
  max-height: 85vh;
  overflow-y: auto;
  background-color: var(--ps-bg-surface);
  border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-xl);
  padding: var(--ps-space-10);
  transform: translateY(30px) scale(0.95);
  opacity: 0;
  transition: transform var(--ps-duration-slow) var(--ps-ease-spring),
              opacity var(--ps-duration-base) var(--ps-ease-out);
}

.ps-modal.is-open .ps-modal__panel {
  transform: translateY(0) scale(1);
  opacity: 1;
}

.ps-modal.is-closing .ps-modal__panel {
  transform: translateY(-20px) scale(0.97);
  opacity: 0;
  transition: transform var(--ps-duration-base) var(--ps-ease-out),
              opacity var(--ps-duration-fast);
}

.ps-modal__close {
  position: absolute;
  top: var(--ps-space-4);
  right: var(--ps-space-4);
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--ps-radius-full);
  color: var(--ps-text-muted);
  transition: all var(--ps-duration-fast);
  cursor: pointer;
}

.ps-modal__close:hover {
  background-color: var(--ps-bg-hover);
  color: var(--ps-accent);
}

.ps-modal__close svg {
  width: 20px;
  height: 20px;
}

.ps-modal__title {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-font-xl);
  font-weight: var(--ps-weight-bold);
  margin-bottom: var(--ps-space-4);
  color: var(--ps-text-primary);
}

.ps-modal__desc {
  font-size: var(--ps-font-sm);
  color: var(--ps-text-muted);
  line-height: var(--ps-leading-relaxed);
  margin-bottom: var(--ps-space-6);
}


/* ==========================================================================
   17. MOBILE MENU — animated full-screen overlay
   ========================================================================== */

.ps-mobile-menu {
  position: fixed;
  inset: 0;
  background-color: var(--ps-bg-primary);
  z-index: var(--ps-z-overlay);
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: var(--ps-space-12) var(--ps-space-8);
  gap: var(--ps-space-1);
  clip-path: circle(0% at calc(100% - 40px) 40px);
  transition: clip-path var(--ps-duration-exit) var(--ps-ease-out);
  visibility: hidden;
}

.ps-mobile-menu.is-open {
  clip-path: circle(150% at calc(100% - 40px) 40px);
  visibility: visible;
}

.ps-mobile-menu.is-closing {
  clip-path: circle(0% at calc(100% - 40px) 40px);
  visibility: visible;
}

.ps-mobile-menu__link {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-font-3xl);
  font-weight: var(--ps-weight-bold);
  color: var(--ps-text-primary);
  padding: var(--ps-space-3) 0;
  border-bottom: 1px solid var(--ps-border);
  transform: translateX(-40px);
  opacity: 0;
  transition: transform var(--ps-duration-slow) var(--ps-ease-out),
              opacity var(--ps-duration-slow) var(--ps-ease-out),
              color var(--ps-duration-fast);
}

.ps-mobile-menu.is-open .ps-mobile-menu__link {
  transform: translateX(0);
  opacity: 1;
}

.ps-mobile-menu__link:hover {
  color: var(--ps-accent);
}


/* ==========================================================================
   18. BUTTON RIPPLE
   ========================================================================== */

.ps-btn--ripple {
  position: relative;
  overflow: hidden;
}

.ps-ripple {
  position: absolute;
  border-radius: var(--ps-radius-full);
  width: 0;
  height: 0;
  background-color: rgba(255, 255, 255, 0.25);
  transform: translate(-50%, -50%);
  animation: ps-ripple-expand 600ms var(--ps-ease-out) forwards;
  pointer-events: none;
}

@keyframes ps-ripple-expand {
  to {
    width: 300px;
    height: 300px;
    opacity: 0;
  }
}


/* ==========================================================================
   19. CARD 3D TILT
   ========================================================================== */

.ps-card[data-tilt] {
  transition: transform var(--ps-duration-fast) var(--ps-ease-out),
              box-shadow var(--ps-duration-base) var(--ps-ease-out);
  transform-style: preserve-3d;
}

.ps-card[data-tilt]:hover {
  box-shadow: var(--ps-shadow-lg), var(--ps-shadow-glow);
}


/* ==========================================================================
   20. SCROLL REVEAL (auto-applied)
   ========================================================================== */

.ps-reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity var(--ps-duration-reveal) var(--ps-ease-out),
              transform var(--ps-duration-reveal) var(--ps-ease-out);
}

.ps-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}


/* ==========================================================================
   21. TEXT SCRAMBLE STYLING
   ========================================================================== */

[data-scramble] {
  cursor: default;
  transition: color var(--ps-duration-fast);
}

[data-scramble]:hover {
  color: var(--ps-accent);
}


/* ==========================================================================
   22. COUNTER ANIMATION
   ========================================================================== */

[data-count-to] {
  font-variant-numeric: tabular-nums;
}


/* ==========================================================================
   23. FULL-SCREEN MENU WITH IMAGE REVEAL
   ========================================================================== */

.ps-fullmenu {
  position: fixed;
  inset: 0;
  background-color: var(--ps-bg-primary);
  z-index: var(--ps-z-overlay);
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: var(--ps-space-8) var(--ps-space-12);
  clip-path: circle(0% at calc(100% - 40px) 40px);
  transition: clip-path var(--ps-duration-exit) var(--ps-ease-out);
  visibility: hidden;
  overflow: hidden;
}

.ps-fullmenu.is-open {
  clip-path: circle(150% at calc(100% - 40px) 40px);
  visibility: visible;
}

.ps-fullmenu.is-closing {
  clip-path: circle(0% at calc(100% - 40px) 40px);
  visibility: visible;
}

.ps-fullmenu__link {
  display: block;
  font-family: var(--ps-font-heading);
  font-size: clamp(2.5rem, 7vw, 6rem);
  font-weight: var(--ps-weight-bold);
  text-transform: uppercase;
  letter-spacing: var(--ps-tracking-tight);
  color: var(--ps-text-primary);
  line-height: 1.1;
  padding: var(--ps-space-2) 0;
  position: relative;
  cursor: pointer;
  transition: color var(--ps-duration-fast) var(--ps-ease-out),
              opacity var(--ps-duration-fast) var(--ps-ease-out);
  transform: translateX(-60px);
  opacity: 0;
}

.ps-fullmenu.is-open .ps-fullmenu__link {
  transform: translateX(0);
  opacity: 1;
  transition: transform var(--ps-duration-slow) var(--ps-ease-out),
              opacity var(--ps-duration-slow) var(--ps-ease-out),
              color var(--ps-duration-fast) var(--ps-ease-out);
}

/* Dim siblings on hover */
.ps-fullmenu:hover .ps-fullmenu__link {
  opacity: 0.3;
}

.ps-fullmenu:hover .ps-fullmenu__link:hover {
  opacity: 1;
  color: var(--ps-accent);
}

/* Hover line-through decoration — Poison signature */
.ps-fullmenu__link::after {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  width: 0;
  height: 3px;
  background-color: var(--ps-accent);
  transition: width var(--ps-duration-base) var(--ps-ease-out);
}

.ps-fullmenu__link:hover::after {
  width: 100%;
}

/* Hover image reveal — image follows cursor */
.ps-fullmenu__img {
  position: fixed;
  width: 280px;
  height: 360px;
  object-fit: cover;
  border-radius: var(--ps-radius-md);
  pointer-events: none;
  opacity: 0;
  transform: scale(0.8) rotate(-5deg);
  transition: opacity var(--ps-duration-fast) var(--ps-ease-out),
              transform var(--ps-duration-base) var(--ps-ease-spring);
  z-index: calc(var(--ps-z-overlay) + 1);
  box-shadow: var(--ps-shadow-lg);
}

.ps-fullmenu__img.is-visible {
  opacity: 1;
  transform: scale(1) rotate(0deg);
}

@media (max-width: 768px) {
  .ps-fullmenu {
    padding: var(--ps-space-6) var(--ps-space-6);
  }

  .ps-fullmenu__link {
    font-size: clamp(2rem, 9vw, 3.5rem);
  }

  .ps-fullmenu__img {
    display: none;
  }
}


/* ==========================================================================
   24. SERVICES GRID
   ========================================================================== */

.ps-services {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--ps-space-12);
}

.ps-services__heading {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-font-xl);
  font-weight: var(--ps-weight-bold);
  text-transform: uppercase;
  letter-spacing: var(--ps-tracking-wider);
  color: var(--ps-text-primary);
  margin-bottom: var(--ps-space-6);
  padding-bottom: var(--ps-space-4);
  border-bottom: 1px solid var(--ps-border);
}

.ps-services__list {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.ps-services__item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--ps-space-4) 0;
  border-bottom: 1px solid var(--ps-border);
  font-size: var(--ps-font-base);
  color: var(--ps-text-secondary);
  cursor: pointer;
  transition: all var(--ps-duration-fast) var(--ps-ease-out);
  position: relative;
}

.ps-services__item::after {
  content: '\2192';
  font-size: var(--ps-font-sm);
  color: var(--ps-accent);
  opacity: 0;
  transform: translateX(-8px);
  transition: all var(--ps-duration-fast) var(--ps-ease-out);
}

.ps-services__item:hover {
  color: var(--ps-accent);
  padding-left: var(--ps-space-3);
}

.ps-services__item:hover::after {
  opacity: 1;
  transform: translateX(0);
}

@media (max-width: 768px) {
  .ps-services {
    grid-template-columns: 1fr;
    gap: var(--ps-space-8);
  }
}


/* ==========================================================================
   25. PAGE TRANSITION OVERLAY
   ========================================================================== */

.ps-transition {
  position: fixed;
  inset: 0;
  background-color: var(--ps-black);
  z-index: calc(var(--ps-z-max) + 10);
  transform: scaleY(0);
  transform-origin: bottom;
  transition: transform var(--ps-duration-slow) var(--ps-ease-out);
}

.ps-transition.is-entering {
  transform: scaleY(1);
  transform-origin: bottom;
}

.ps-transition.is-exiting {
  transform: scaleY(0);
  transform-origin: top;
}


/* ==========================================================================
   26. COOKIE / CONSENT OVERLAY
   ========================================================================== */

.ps-consent {
  position: fixed;
  bottom: var(--ps-space-6);
  left: var(--ps-space-6);
  right: var(--ps-space-6);
  max-width: 480px;
  background-color: var(--ps-bg-surface);
  border: 1px solid var(--ps-border);
  border-radius: var(--ps-radius-lg);
  padding: var(--ps-space-6) var(--ps-space-8);
  z-index: var(--ps-z-modal);
  box-shadow: var(--ps-shadow-lg);
  transform: translateY(120%);
  transition: transform var(--ps-duration-slow) var(--ps-ease-spring);
}

.ps-consent.is-visible {
  transform: translateY(0);
}

.ps-consent__title {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-font-md);
  font-weight: var(--ps-weight-semibold);
  color: var(--ps-text-primary);
  margin-bottom: var(--ps-space-3);
}

.ps-consent__text {
  font-size: var(--ps-font-sm);
  color: var(--ps-text-muted);
  line-height: var(--ps-leading-relaxed);
  margin-bottom: var(--ps-space-5);
}

.ps-consent__actions {
  display: flex;
  gap: var(--ps-space-3);
}

/* ==========================================================================
   PERFORMANCE — GPU hints, contain, will-change
   ========================================================================== */

/* Promote animated elements to own layer for GPU compositing */
.ps-hero__bg {
  will-change: opacity;
}

.ps-cursor__dot,
.ps-cursor__ring {
  will-change: transform;
}

.ps-scroll-progress {
  will-change: width;
}

/* Use contain on isolated components to limit repaints */
.ps-card {
  contain: layout style;
}

.ps-accordion__item {
  contain: layout;
}

.ps-footer {
  contain: layout style;
}

/* Prefer transform/opacity for animations (GPU-accelerated) */
.ps-btn--magnetic,
.ps-card[data-tilt] {
  will-change: transform;
}

/* Reduce motion for users who prefer it */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .ps-marquee__inner {
    animation: none !important;
  }
  .ps-cursor__dot,
  .ps-cursor__ring {
    display: none !important;
  }
}
