/* ========================================
   Nobetmatik Design System
   Main CSS - Single Source of Truth
   
   Import Order:
   1. Colors & Variables
   2. Typography
   3. Spacing
   4. Components (Buttons, Forms, Cards, Tables)
   
   Version: 1.0.0
   Last Updated: October 2025
   ======================================== */

/* ===== Foundation ===== */
@import url("colors.css");
@import url("typography.css");
@import url("spacing.css");

/* ===== Components ===== */
@import url("buttons.css");
@import url("forms.css");
@import url("cards.css");
@import url("tables.css");
@import url("alerts.css");
@import url("badges.css");

/* ===== Global Resets & Base Styles ===== */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  font-size: 16px;
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;
}

body {
  margin: 0;
  background-color: var(--bg-page);
}

/* ===== Utility Classes ===== */
.d-none {
  display: none !important;
}
.d-block {
  display: block !important;
}
.d-inline {
  display: inline !important;
}
.d-inline-block {
  display: inline-block !important;
}
.d-flex {
  display: flex !important;
}
.d-inline-flex {
  display: inline-flex !important;
}
.d-grid {
  display: grid !important;
}

.flex-row {
  flex-direction: row !important;
}
.flex-column {
  flex-direction: column !important;
}
.flex-wrap {
  flex-wrap: wrap !important;
}
.flex-nowrap {
  flex-wrap: nowrap !important;
}

.justify-content-start {
  justify-content: flex-start !important;
}
.justify-content-end {
  justify-content: flex-end !important;
}
.justify-content-center {
  justify-content: center !important;
}
.justify-content-between {
  justify-content: space-between !important;
}
.justify-content-around {
  justify-content: space-around !important;
}

.align-items-start {
  align-items: flex-start !important;
}
.align-items-end {
  align-items: flex-end !important;
}
.align-items-center {
  align-items: center !important;
}
.align-items-baseline {
  align-items: baseline !important;
}
.align-items-stretch {
  align-items: stretch !important;
}

/* ===== Width & Height Utilities ===== */
.w-25 {
  width: 25% !important;
}
.w-50 {
  width: 50% !important;
}
.w-75 {
  width: 75% !important;
}
.w-100 {
  width: 100% !important;
}
.w-auto {
  width: auto !important;
}

.h-25 {
  height: 25% !important;
}
.h-50 {
  height: 50% !important;
}
.h-75 {
  height: 75% !important;
}
.h-100 {
  height: 100% !important;
}
.h-auto {
  height: auto !important;
}

/* ===== Position Utilities ===== */
.position-static {
  position: static !important;
}
.position-relative {
  position: relative !important;
}
.position-absolute {
  position: absolute !important;
}
.position-fixed {
  position: fixed !important;
}
.position-sticky {
  position: sticky !important;
}

/* ===== Background Utilities ===== */
.bg-primary {
  background-color: var(--brand-primary) !important;
}
.bg-success {
  background-color: var(--color-success) !important;
}
.bg-danger {
  background-color: var(--color-danger) !important;
}
.bg-warning {
  background-color: var(--color-warning) !important;
}
.bg-info {
  background-color: var(--color-info) !important;
}
.bg-white {
  background-color: var(--color-white) !important;
}
.bg-light {
  background-color: var(--color-gray-100) !important;
}
.bg-dark {
  background-color: var(--color-gray-900) !important;
}

/* ===== Text Color Utilities ===== */
.text-primary {
  color: var(--brand-primary) !important;
}
.text-success {
  color: var(--color-success) !important;
}
.text-danger {
  color: var(--color-danger) !important;
}
.text-warning {
  color: var(--color-warning) !important;
}
.text-info {
  color: var(--color-info) !important;
}
.text-white {
  color: var(--color-white) !important;
}
.text-dark {
  color: var(--color-gray-900) !important;
}

/* ===== Text Alignment ===== */
.text-left,
.text-start {
  text-align: left !important;
}
.text-right,
.text-end {
  text-align: right !important;
}
.text-center {
  text-align: center !important;
}

/* ===== Border Utilities ===== */
.border {
  border: 1px solid var(--border-normal) !important;
}
.border-0 {
  border: 0 !important;
}
.border-top {
  border-top: 1px solid var(--border-normal) !important;
}
.border-bottom {
  border-bottom: 1px solid var(--border-normal) !important;
}
.border-left,
.border-start {
  border-left: 1px solid var(--border-normal) !important;
}
.border-right,
.border-end {
  border-right: 1px solid var(--border-normal) !important;
}

.rounded {
  border-radius: var(--radius-md) !important;
}
.rounded-sm {
  border-radius: var(--radius-sm) !important;
}
.rounded-lg {
  border-radius: var(--radius-lg) !important;
}
.rounded-xl {
  border-radius: var(--radius-xl) !important;
}
.rounded-pill {
  border-radius: var(--radius-pill) !important;
}
.rounded-circle {
  border-radius: var(--radius-circle) !important;
}
.rounded-0 {
  border-radius: 0 !important;
}

/* ===== Shadow Utilities ===== */
.shadow-sm {
  box-shadow: var(--shadow-sm) !important;
}
.shadow {
  box-shadow: var(--shadow-md) !important;
}
.shadow-lg {
  box-shadow: var(--shadow-lg) !important;
}
.shadow-none {
  box-shadow: none !important;
}

/* ===== Overflow Utilities ===== */
.overflow-auto {
  overflow: auto !important;
}
.overflow-hidden {
  overflow: hidden !important;
}
.overflow-visible {
  overflow: visible !important;
}
.overflow-scroll {
  overflow: scroll !important;
}

/* ===== Cursor Utilities ===== */
.cursor-pointer {
  cursor: pointer !important;
}
.cursor-not-allowed {
  cursor: not-allowed !important;
}
.cursor-default {
  cursor: default !important;
}

/* ===== User Select ===== */
.user-select-none {
  user-select: none !important;
}
.user-select-all {
  user-select: all !important;
}
.user-select-auto {
  user-select: auto !important;
}

/* ===== Visibility ===== */
.visible {
  visibility: visible !important;
}
.invisible {
  visibility: hidden !important;
}

/* ===== Responsive Utilities ===== */
@media (max-width: 575.98px) {
  .d-sm-none {
    display: none !important;
  }
  .d-sm-block {
    display: block !important;
  }
}

@media (max-width: 767.98px) {
  .d-md-none {
    display: none !important;
  }
  .d-md-block {
    display: block !important;
  }
}

@media (max-width: 991.98px) {
  .d-lg-none {
    display: none !important;
  }
  .d-lg-block {
    display: block !important;
  }
}

@media (max-width: 1199.98px) {
  .d-xl-none {
    display: none !important;
  }
  .d-xl-block {
    display: block !important;
  }
}
