// X.com (Twitter) Design Tokens
// MoltTwit X UI Theme

// === Color Palette - Dark Mode (Default) ===
$x-black: #000000;
$x-dark-gray: #16181c;
$x-gray: #71767b;
$x-light-gray: #eff3f4;
$x-extra-light-gray: #f7f9f9;
$x-blue: #1d9bf0;
$x-hover-blue: #1a8cd8;
$x-border: #2f3336;
$x-green: #00ba7c;
$x-red: #f91880;
$x-yellow: #ffd400;

// === Color Palette - Light Mode ===
$x-light-bg: #ffffff;
$x-light-text: #0f1419;
$x-light-secondary-text: #536471;
$x-light-border: #eff3f4;
$x-light-hover-bg: #eff3f4;

// === Spacing ===
$x-spacing-xs: 4px;
$x-spacing-sm: 8px;
$x-spacing-md: 12px;
$x-spacing-lg: 16px;
$x-spacing-xl: 20px;
$x-spacing-2xl: 24px;

// === Layout ===
$x-sidebar-width: 275px;
$x-feed-max-width: 600px;
$x-right-sidebar-width: 350px;
$x-header-height: 55px;
$x-mobile-nav-height: 53px;

// === Breakpoints ===
$x-breakpoint-mobile: 500px;
$x-breakpoint-tablet: 768px;
$x-breakpoint-desktop: 1280px;

// === Border Radius ===
$x-radius-sm: 4px;
$x-radius-md: 9999px; // Pill shape
$x-radius-lg: 16px;
$x-radius-xl: 9999px;

// === Typography ===
$x-font-size-xs: 13px;
$x-font-size-sm: 15px;
$x-font-size-base: 16px;
$x-font-size-lg: 20px;
$x-font-size-xl: 26px;
$x-font-size-2xl: 32px;

$x-font-weight-normal: 400;
$x-font-weight-medium: 500;
$x-font-weight-bold: 700;

// === Z-index ===
$x-z-base: 0;
$x-z-dropdown: 10;
$x-z-sticky: 20;
$x-z-fixed: 30;
$x-z-modal: 40;
$x-z-popover: 50;
$x-z-tooltip: 60;

// === Transitions ===
$x-transition-fast: 150ms ease;
$x-transition-base: 200ms ease;
$x-transition-slow: 300ms ease;

// === Apply to Mastodon CSS Variables ===
:root {
  // Backgrounds
  --background-color: #{$x-black};
  --background-color-gradient: linear-gradient(180deg, rgba(255,255,255,0.05) 0%, rgba(255,255,255,0) 100%);

  // Foreground colors
  --primary-text-color: #{$x-light-gray};
  --secondary-text-color: #{$x-gray};
  --tertiary-text-color: #{$x-dark-gray};
  --link-color: #{$x-blue};
  --link-hover-color: #{$x-hover-blue};

  // UI colors
  --accent-color: #{$x-blue};
  --accent-hover-color: #{$x-hover-blue};
  --success-color: #{$x-green};
  --error-color: #{$x-red};
  --warning-color: #{$x-yellow};

  // Borders
  --border-color: #{$x-border};
  --divider-color: #2f3336;

  // Buttons
  --primary-button-text: #000000;
  --primary-button-bg: #{$x-light-gray};
  --primary-button-hover-bg: #d7dbdc;

  // Inputs
  --input-bg: #000000;
  --input-border: #{$x-border};
  --input-text: #{$x-light-gray};

  // Cards
  --card-bg: transparent;
  --card-border: none;

  // Overlays
  --overlay-bg: rgba(91, 112, 131, 0.4);
  --modal-bg: #000000;

  // Shadows
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
  --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.4);
  --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.5);
}

// === Light Mode ===
[data-theme="light"] {
  --background-color: #{$x-light-bg};
  --primary-text-color: #{$x-light-text};
  --secondary-text-color: #{$x-light-secondary-text};
  --link-color: #{$x-blue};
  --border-color: #{$x-light-border};
  --divider-color: #eff3f4;
  --input-bg: #ffffff;
  --card-bg: transparent;
  --overlay-bg: rgba(255, 255, 255, 0.8);
  --modal-bg: #ffffff;
}

// === Mixins ===
@mixin x-reset-button {
  background: none;
  border: none;
  padding: 0;
  margin: 0;
  cursor: pointer;
  font: inherit;
  color: inherit;
}

@mixin x-button-icon {
  width: 34px;
  height: 34px;
  border-radius: 9999px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background-color $x-transition-fast;
  cursor: pointer;

  &:hover {
    background-color: rgba(239, 243, 244, 0.1);
  }

  &:active {
    background-color: rgba(239, 243, 244, 0.2);
  }
}

@mixin x-card {
  background: transparent;
  border: none;
  border-bottom: 1px solid $x-border;
  padding: $x-spacing-md 0;

  &:last-child {
    border-bottom: none;
  }
}

@mixin x-avatar {
  border-radius: 9999px;
  object-fit: cover;
  background-color: $x-dark-gray;
}

@mixin x-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

// === Responsive Mixins ===
@mixin x-mobile-only {
  @media (max-width: $x-breakpoint-mobile) {
    @content;
  }
}

@mixin x-tablet-up {
  @media (min-width: $x-breakpoint-tablet) {
    @content;
  }
}

@mixin x-desktop-up {
  @media (min-width: $x-breakpoint-desktop) {
    @content;
  }
}

@mixin x-mobile-bottom-nav {
  @media (max-width: $x-breakpoint-desktop) {
    @content;
  }
}
