/* ============================================================
   PAINCARE — UTILITIES
   Version: 1.0.0
   Location: assets/css/utilities.css
   ============================================================ */

/* ---------- TEXT ---------- */
.text-center { text-align: center !important; }
.text-left   { text-align: left !important; }
.text-right  { text-align: right !important; }

.text-muted { color: var(--pc-text-muted) !important; }
.text-dark  { color: var(--pc-text-dark) !important; }
.text-accent{ color: var(--pc-accent-500) !important; }
.text-white { color: #fff !important; }
.text-success { color: var(--pc-success-500) !important; }
.text-danger  { color: var(--pc-danger-500) !important; }
.text-warning { color: var(--pc-warning-500) !important; }

/* ---------- FONT WEIGHT ---------- */
.fw-light     { font-weight: 300 !important; }
.fw-regular   { font-weight: 400 !important; }
.fw-medium    { font-weight: 500 !important; }
.fw-semibold  { font-weight: 600 !important; }
.fw-bold      { font-weight: 700 !important; }
.fw-extrabold { font-weight: 800 !important; }

/* ---------- FONT SIZE ---------- */
.fs-xs   { font-size: 11px !important; }
.fs-sm   { font-size: 13px !important; }
.fs-base { font-size: 15px !important; }
.fs-md   { font-size: 16px !important; }
.fs-lg   { font-size: 18px !important; }
.fs-xl   { font-size: 22px !important; }

/* ---------- DISPLAY ---------- */
.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 ---------- */
.flex-row    { flex-direction: row !important; }
.flex-column { flex-direction: column !important; }
.flex-wrap   { flex-wrap: wrap !important; }
.flex-nowrap { flex-wrap: nowrap !important; }
.flex-1      { flex: 1 !important; }
.flex-auto   { flex: auto !important; }

/* ---------- JUSTIFY ---------- */
.justify-start   { justify-content: flex-start !important; }
.justify-end     { justify-content: flex-end !important; }
.justify-center  { justify-content: center !important; }
.justify-between { justify-content: space-between !important; }
.justify-around  { justify-content: space-around !important; }

/* ---------- ALIGN ---------- */
.align-start   { align-items: flex-start !important; }
.align-end     { align-items: flex-end !important; }
.align-center  { align-items: center !important; }
.align-stretch { align-items: stretch !important; }

/* ---------- GAP ---------- */
.gap-1 { gap: 4px !important; }
.gap-2 { gap: 8px !important; }
.gap-3 { gap: 12px !important; }
.gap-4 { gap: 16px !important; }
.gap-5 { gap: 20px !important; }
.gap-6 { gap: 24px !important; }

/* ---------- WIDTH/HEIGHT ---------- */
.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-100 { height: 100% !important; }

/* ---------- MARGIN ---------- */
.m-0  { margin: 0 !important; }
.m-auto { margin: auto !important; }
.mx-auto { margin-left: auto !important; margin-right: auto !important; }

.mt-0 { margin-top: 0 !important; }
.mt-1 { margin-top: 4px !important; }
.mt-2 { margin-top: 8px !important; }
.mt-3 { margin-top: 12px !important; }
.mt-4 { margin-top: 16px !important; }
.mt-5 { margin-top: 20px !important; }
.mt-6 { margin-top: 24px !important; }
.mt-8 { margin-top: 32px !important; }

.mb-0 { margin-bottom: 0 !important; }
.mb-1 { margin-bottom: 4px !important; }
.mb-2 { margin-bottom: 8px !important; }
.mb-3 { margin-bottom: 12px !important; }
.mb-4 { margin-bottom: 16px !important; }
.mb-5 { margin-bottom: 20px !important; }
.mb-6 { margin-bottom: 24px !important; }
.mb-8 { margin-bottom: 32px !important; }

.ms-auto { margin-left: auto !important; }
.me-auto { margin-right: auto !important; }

/* ---------- PADDING ---------- */
.p-0 { padding: 0 !important; }
.p-1 { padding: 4px !important; }
.p-2 { padding: 8px !important; }
.p-3 { padding: 12px !important; }
.p-4 { padding: 16px !important; }
.p-5 { padding: 20px !important; }
.p-6 { padding: 24px !important; }

.pt-4 { padding-top: 16px !important; }
.pb-4 { padding-bottom: 16px !important; }

/* ---------- POSITION ---------- */
.position-relative { position: relative !important; }
.position-absolute { position: absolute !important; }
.position-fixed    { position: fixed !important; }
.position-sticky   { position: sticky !important; }

.top-0    { top: 0 !important; }
.bottom-0 { bottom: 0 !important; }
.start-0  { left: 0 !important; }
.end-0    { right: 0 !important; }

/* ---------- OVERFLOW ---------- */
.overflow-hidden { overflow: hidden !important; }
.overflow-auto   { overflow: auto !important; }

/* ---------- BORDER ---------- */
.border        { border: 1px solid var(--pc-border) !important; }
.border-0      { border: 0 !important; }
.border-top    { border-top: 1px solid var(--pc-border) !important; }
.border-bottom { border-bottom: 1px solid var(--pc-border) !important; }

.rounded        { border-radius: var(--pc-radius-sm) !important; }
.rounded-md     { border-radius: var(--pc-radius-md) !important; }
.rounded-lg     { border-radius: var(--pc-radius-lg) !important; }
.rounded-pill   { border-radius: var(--pc-radius-pill) !important; }
.rounded-circle { border-radius: 50% !important; }

/* ---------- BACKGROUND ---------- */
.bg-white     { background: #fff !important; }
.bg-light     { background: var(--pc-bg-light) !important; }
.bg-dark      { background: var(--pc-primary-500) !important; }
.bg-accent    { background: var(--pc-accent-500) !important; }
.bg-transparent { background: transparent !important; }

/* ---------- SHADOW ---------- */
.shadow-none { box-shadow: none !important; }
.shadow-sm   { box-shadow: var(--pc-shadow-sm) !important; }
.shadow-md   { box-shadow: var(--pc-shadow-md) !important; }
.shadow-lg   { box-shadow: var(--pc-shadow-lg) !important; }

/* ---------- TEXT TRUNCATION ---------- */
.text-truncate {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.line-clamp-1,
.line-clamp-2,
.line-clamp-3 {
    overflow: hidden;
    display: -webkit-box;
    -webkit-box-orient: vertical;
}
.line-clamp-1 { -webkit-line-clamp: 1; }
.line-clamp-2 { -webkit-line-clamp: 2; }
.line-clamp-3 { -webkit-line-clamp: 3; }

/* ---------- CURSOR ---------- */
.cursor-pointer { cursor: pointer !important; }
.cursor-default { cursor: default !important; }

/* ---------- Z-INDEX ---------- */
.z-1    { z-index: 1 !important; }
.z-10   { z-index: 10 !important; }
.z-100  { z-index: 100 !important; }
.z-1000 { z-index: 1000 !important; }

/* ---------- RESPONSIVE ---------- */
@media (max-width: 991px) {
    .d-lg-none  { display: none !important; }
    .d-lg-block { display: block !important; }
}

@media (max-width: 768px) {
    .d-md-none    { display: none !important; }
    .d-md-block   { display: block !important; }
    .d-md-flex    { display: flex !important; }
    .text-md-center { text-align: center !important; }
}

@media (max-width: 480px) {
    .d-sm-none  { display: none !important; }
    .d-sm-block { display: block !important; }
    .text-sm-center { text-align: center !important; }
}