/* ================================== */
/* THEME FOUNDATION */
/* ================================== */

/* Add at the very top of the file */
* {
    box-sizing: border-box;
}

/* CSS Custom Properties - Modern Dark Theme Variables */
:root {
    --primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    --success-gradient: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
    --eco-gradient: linear-gradient(135deg, #11998e 0%, #38ef7d 100%);
    --eco-green: #2ed981;
    --warning-gradient: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
    --dark-bg: #0f172a;
    --dark-card: #1e293baa;
    --dark-border: #334155;
    --text-primary: #f8fafc;
    --text-secondary: #cbd5e1;
    --text-muted: #94a3b8;
}

/* ================================== */
/* BASE STYLES */
/* ================================== */

html {
    scroll-behavior: smooth;
}

body {
    background-color: var(--dark-bg);
    color: #fff;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
    overflow-x: hidden;
    min-height: 100vh;
    position: relative;
    margin: 0;
    padding: 0;
}


.table>:not(caption)>*>* {
    background: none ;
}


/* ================================== */
/* COLOR UTILITIES */
/* ================================== */

.text-eco-green {
    color: var(--eco-green) !important;
}

.text-greener {
    color: var(--eco-green) !important;
}

.text-secondary {
    color: var(--text-secondary) !important;
}

.bg-darken {
    background: rgba(0, 0, 0, 0.2);
}

.bg-darken-40 {
    background: rgba(0, 0, 0, 0.4);
}

.bg-primary-gradient {
    background: var(--primary-gradient);
}

/* Overwrite bootstrap success colors */
.bg-success {
    background-color: #79b446 !important;
}

.text-success {
    color: #79b446 !important;
}

/* ================================== */
/* GRADIENT BACKGROUNDS */
/* ================================== */

.bg-gradient-purple {
    background: rgb(61,37,129);
    background: -moz-linear-gradient(165deg, rgba(61,37,129,1) 0%, rgba(238,70,124,1) 100%);
    background: -webkit-linear-gradient(165deg, rgba(61,37,129,1) 0%, rgba(238,70,124,1) 100%);
    background: linear-gradient(165deg, rgba(61,37,129,1) 0%, rgba(238,70,124,1) 100%);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#3d2581",endColorstr="#ee467c",GradientType=1);
}

.bg-gradient-red {
    background: rgb(185,16,17);
    background: -moz-linear-gradient(183deg, rgba(185,16,17,1) 0%, rgba(238,70,124,1) 100%);
    background: -webkit-linear-gradient(183deg, rgba(185,16,17,1) 0%, rgba(238,70,124,1) 100%);
    background: linear-gradient(183deg, rgba(185,16,17,1) 0%, rgba(238,70,124,1) 100%);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#b91011",endColorstr="#ee467c",GradientType=1);
}

/* Hero Section Gradient Background */
.hero-gradient-bg {
    min-height: 90vh;
    background: radial-gradient(circle at 20% 80%, rgba(102, 126, 234, 0.15) 0%, transparent 50%),
                radial-gradient(circle at 80% 20%, rgba(17, 153, 142, 0.15) 0%, transparent 50%),
                var(--dark-bg);
    position: relative;
}

/* ================================== */
/* LIGHT EFFECTS */
/* ================================== */

.lights {
    position: relative;
    overflow: visible;
}

.lights::before { 
    position: absolute;
    content: '';
    width: min(800px, 100vw);
    height: 300px;
    top: -200px;
    left: 50%;
    transform: translateX(-50%);
    background: rgb(70, 203, 238);
    background: radial-gradient(circle, rgba(70, 203, 238, 0.8) 0%, rgba(70, 203, 238, 0) 80%);
    filter: blur(150px);
    z-index: -1;
    opacity: .5;
}

.lights::after {
    position: absolute;
    content: '';
    width: min(800px, 100vw);
    height: 300px;
    bottom: -200px;
    left: 50%;
    transform: translateX(-50%);
    background: rgb(70, 203, 238);
    background: radial-gradient(circle, rgba(70, 203, 238, 0.8) 0%, rgba(70, 203, 238, 0) 80%);
    filter: blur(150px);
    z-index: -1;
    opacity: .5;
}

.lights-error {
    position: relative;
    overflow: visible;
}

.lights-error::before { 
    position: absolute;
    content: '';
    width: min(800px, 100vw);
    height: 300px;
    top: -200px;
    left: 50%;
    transform: translateX(-50%);
    background: rgb(238, 70, 70);
    background: radial-gradient(circle, rgba(238, 70, 70, 0.8) 0%, rgba(238, 70, 70, 0) 80%);
    filter: blur(150px);
    z-index: -1;
    opacity: .5;
}

.lights-error::after {
    position: absolute;
    content: '';
    width: min(800px, 100vw);
    height: 300px;
    bottom: -200px;
    left: 50%;
    transform: translateX(-50%);
    background: rgb(238, 70, 70);
    background: radial-gradient(circle, rgba(238, 70, 70, 0.8) 0%, rgba(238, 70, 70, 0) 80%);
    filter: blur(150px);
    z-index: -1;
    opacity: .5;
}

/* ================================== */
/* GLOW BORDER ANIMATION */
/* ================================== */

.animated-border-box, .animated-border-box-glow{
    position: relative;
    width: 100%;
    overflow: hidden; 
    z-index: 0;
    border-radius: 8px;
}

.animated-border-box-glow{
    overflow: hidden;
    filter: blur(20px);
}

.animated-border-box:before, .animated-border-box-glow:before {
    content: '';
    z-index: -2;
    text-align: center;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) rotate(0deg);
    position: absolute;
    width: 99999px;
    height: 99999px;
    background-repeat: no-repeat;
    background-position: 0 0;
    background-image: conic-gradient(rgba(0,0,0,0), #657c87, rgba(0,0,0,0) 25%);
    animation: rotate 4s linear infinite;
}

.animated-border-box:after {
    content: '';
    position: absolute;
    z-index: -1;
    left: 1px;
    top: 1px;
    width: calc(100% - 2px);
    height: calc(100% - 2px);
    background: #12383b;
    border-radius: 7px;
}

@keyframes rotate {
    100% {
        transform: translate(-50%, -50%) rotate(1turn);
    }
}

/* ================================== */
/* STATUS INDICATORS */
/* ================================== */

.status-active {
    background: rgba(56, 239, 125, 0.2);
    color: #38ef7d;
    padding: 0.5rem 1rem;
    border-radius: 20px;
    font-size: 0.875rem;
    font-weight: 600;
}

.status-inactive {
    background: rgba(239, 68, 68, 0.2);
    color: #ef4444;
    padding: 0.5rem 1rem;
    border-radius: 20px;
    font-size: 0.875rem;
    font-weight: 600;
}

.status-pending {
    background: rgba(59, 130, 246, 0.2);
    color: #3b82f6;
    padding: 0.5rem 1rem;
    border-radius: 20px;
    font-size: 0.875rem;
    font-weight: 600;
}

/* ================================== */
/* THEME ANIMATIONS */
/* ================================== */

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.animate-in {
    animation: fadeInUp 0.6s ease-out forwards;
}