/* ==========================================================
   PraxisBro — Design System
   Light Mode | Healthcare SaaS | Coolors Palette
   Palette: Lavender / Light Blue / Tea Green / Muted Teal
   ========================================================== */

:root {
    /* === Palette (Coolors) === */
    --lavender:       #E8E1EF;
    --light-blue:     #B3D7D2;
    --tea-green:      #C7FFDA;
    --tea-green-2:    #C4F4C7;
    --muted-teal:     #9BB291;

    /* === Semantic Colors === */
    --bg:             #F7F8FA;
    --bg-white:       #FFFFFF;
    --bg-surface:     #FFFFFF;
    --bg-surface-h:   #F0F3F5;
    --bg-elevated:    #FFFFFF;
    --bg-sidebar:     #FAFBFC;
    --bg-accent:      #E8F5E9;

    --border:         #E2E8F0;
    --border-hover:   #CBD5E1;
    --border-accent:  var(--light-blue);

    --text:           #1A2332;
    --text-secondary: #4A5568;
    --text-muted:     #718096;
    --text-dim:       #A0AEC0;
    --text-on-accent: #1A2332;

    /* Primary = Muted Teal (aus Palette) */
    --primary:        #7BA17A;
    --primary-hover:  #6B9169;
    --primary-light:  #E8F5E9;
    --primary-dim:    rgba(123,161,122,0.12);
    --primary-text:   #5A8A59;

    /* Accent = Light Blue (aus Palette) */
    --accent:         var(--light-blue);
    --accent-hover:   #9CC8C2;
    --accent-light:   #E0F0ED;

    /* Status */
    --success:        #48BB78;
    --success-light:  #E6F9EE;
    --danger:         #E53E3E;
    --danger-light:   #FFF5F5;
    --warning:        #ED8936;
    --warning-light:  #FFFAF0;
    --info:           #4299E1;
    --info-light:     #EBF8FF;

    /* === Typography === */
    --font:           'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
    --font-mono:      'JetBrains Mono', 'Fira Code', monospace;

    /* === Spacing === */
    --space-xs:   4px;
    --space-sm:   8px;
    --space-md:   16px;
    --space-lg:   24px;
    --space-xl:   32px;
    --space-2xl:  48px;
    --space-3xl:  64px;

    /* === Radius === */
    --radius-sm:  6px;
    --radius-md:  10px;
    --radius-lg:  14px;
    --radius-xl:  20px;
    --radius-full: 9999px;

    /* === Shadows === */
    --shadow-sm:  0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
    --shadow-md:  0 4px 6px rgba(0,0,0,0.05), 0 2px 4px rgba(0,0,0,0.03);
    --shadow-lg:  0 10px 25px rgba(0,0,0,0.08), 0 4px 10px rgba(0,0,0,0.04);

    /* === Layout === */
    --nav-width:   248px;
    --nav-collapsed: 64px;
    --header-h:    56px;
    --max-content: 1200px;

    /* === Transitions === */
    --ease:       cubic-bezier(0.4, 0, 0.2, 1);
    --duration:   200ms;
}
/* ==========================================================
   PraxisBro — Layout & Components (Light Mode)
   ========================================================== */

/* --- Reset --- */
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; }
body {
    font-family: var(--font);
    font-size: 15px;
    line-height: 1.6;
    color: var(--text);
    background: var(--bg);
    min-height: 100vh;
}
a { color: var(--primary-text); text-decoration: none; }
a:hover { color: var(--primary-hover); }

/* --- Login Layout --- */
.login-page {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-lg);
    background: linear-gradient(135deg, var(--lavender) 0%, var(--tea-green) 50%, var(--light-blue) 100%);
}
.login-card {
    background: var(--bg-white);
    border: 1px solid var(--border);
    border-radius: var(--radius-xl);
    padding: var(--space-2xl) var(--space-xl);
    width: 100%;
    max-width: 400px;
    box-shadow: var(--shadow-lg);
}
.login-logo {
    text-align: center;
    margin-bottom: var(--space-xl);
}
.login-logo h1 {
    font-size: 28px;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--text);
}
.login-logo h1 span { color: var(--primary); }
.login-logo p {
    font-size: 13px;
    color: var(--text-muted);
    margin-top: var(--space-xs);
}

/* --- App Shell --- */
.app {
    display: grid;
    grid-template-columns: var(--nav-width) 1fr;
    grid-template-rows: var(--header-h) 1fr;
    min-height: 100vh;
}

/* --- Sidebar Nav --- */
.sidebar {
    grid-row: 1 / -1;
    background: var(--bg-white);
    border-right: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    overflow-y: auto;
}
.sidebar-brand {
    height: var(--header-h);
    display: flex;
    align-items: center;
    padding: 0 var(--space-lg);
    border-bottom: 1px solid var(--border);
    font-size: 18px;
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--text);
    flex-shrink: 0;
}
.sidebar-brand span { color: var(--primary); }
.sidebar-nav {
    flex: 1;
    padding: var(--space-md) var(--space-sm);
    list-style: none;
}
.sidebar-nav li { margin-bottom: 2px; }
.sidebar-nav a {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    padding: 9px var(--space-md);
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-size: 14px;
    font-weight: 500;
    transition: all var(--duration) var(--ease);
}
.sidebar-nav a:hover {
    background: var(--bg-surface-h);
    color: var(--text);
}
.sidebar-nav a.active {
    background: var(--primary-light);
    color: var(--primary-text);
    font-weight: 600;
}
.sidebar-nav .nav-icon {
    width: 20px;
    height: 20px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
}
.sidebar-section {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-dim);
    padding: var(--space-lg) var(--space-md) var(--space-sm);
}
.sidebar-footer {
    padding: var(--space-md) var(--space-lg);
    border-top: 1px solid var(--border);
    flex-shrink: 0;
}
.sidebar-user {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    font-size: 13px;
}
.sidebar-user .avatar {
    width: 34px;
    height: 34px;
    border-radius: var(--radius-full);
    background: linear-gradient(135deg, var(--tea-green-2), var(--muted-teal));
    color: var(--text);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 13px;
}
.sidebar-user .name { color: var(--text); font-weight: 500; }
.sidebar-user .role { color: var(--text-muted); font-size: 12px; }

/* --- Header --- */
.header {
    background: var(--bg-white);
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 var(--space-xl);
}
.header-title {
    font-size: 16px;
    font-weight: 600;
    color: var(--text);
}
.header-actions {
    display: flex;
    align-items: center;
    gap: var(--space-md);
}

/* --- Main Content --- */
.main {
    padding: var(--space-xl);
    overflow-y: auto;
    background: var(--bg);
}
.main-inner {
    max-width: var(--max-content);
}

/* --- Cards --- */
.card {
    background: var(--bg-white);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    padding: var(--space-lg);
    box-shadow: var(--shadow-sm);
}
.card:hover { box-shadow: var(--shadow-md); }
.card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-md);
}
.card-title {
    font-size: 16px;
    font-weight: 600;
    color: var(--text);
}
.card-subtitle {
    font-size: 13px;
    color: var(--text-muted);
    margin-top: 2px;
}

/* --- Forms --- */
.form-group {
    margin-bottom: var(--space-md);
}
.form-label {
    display: block;
    font-size: 13px;
    font-weight: 500;
    color: var(--text-secondary);
    margin-bottom: var(--space-xs);
}
.form-input {
    width: 100%;
    padding: 10px 14px;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text);
    font-family: var(--font);
    font-size: 14px;
    transition: border-color var(--duration) var(--ease), box-shadow var(--duration) var(--ease);
    outline: none;
}
.form-input:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px var(--primary-dim);
}
.form-input::placeholder { color: var(--text-dim); }
.form-error {
    font-size: 12px;
    color: var(--danger);
    margin-top: var(--space-xs);
}

/* --- Buttons --- */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-sm);
    padding: 10px 20px;
    font-family: var(--font);
    font-size: 14px;
    font-weight: 600;
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration) var(--ease);
}
.btn-primary {
    background: var(--primary);
    color: #fff;
}
.btn-primary:hover { background: var(--primary-hover); }
.btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }
.btn-secondary {
    background: var(--bg);
    color: var(--text);
    border: 1px solid var(--border);
}
.btn-secondary:hover { border-color: var(--border-hover); background: var(--bg-surface-h); }
.btn-danger {
    background: var(--danger-light);
    color: var(--danger);
    border: 1px solid rgba(229,62,62,0.2);
}
.btn-danger:hover { background: var(--danger); color: #fff; }
.btn-block { width: 100%; }
.btn-sm { padding: 6px 12px; font-size: 13px; }
.btn-lg { padding: 14px 28px; font-size: 16px; }

/* --- Badges --- */
.badge {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    font-size: 11px;
    font-weight: 600;
    border-radius: var(--radius-full);
    letter-spacing: 0.02em;
}
.badge-success { background: var(--success-light); color: var(--success); }
.badge-danger  { background: var(--danger-light); color: var(--danger); }
.badge-warning { background: var(--warning-light); color: var(--warning); }
.badge-info    { background: var(--info-light); color: var(--info); }
.badge-accent  { background: var(--accent-light); color: var(--primary-text); }

/* --- Alert --- */
.alert {
    padding: var(--space-md);
    border-radius: var(--radius-sm);
    font-size: 14px;
    margin-bottom: var(--space-md);
}
.alert-success { background: var(--success-light); color: #276749; border: 1px solid rgba(72,187,120,0.2); }
.alert-danger  { background: var(--danger-light); color: #9B2C2C; border: 1px solid rgba(229,62,62,0.2); }
.alert-warning { background: var(--warning-light); color: #9C4221; border: 1px solid rgba(237,137,54,0.2); }
.alert-info    { background: var(--info-light); color: #2B6CB0; border: 1px solid rgba(66,153,225,0.2); }

/* --- Stats Grid --- */
.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--space-md);
    margin-bottom: var(--space-xl);
}
.stat-card {
    background: var(--bg-white);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    padding: var(--space-lg);
    box-shadow: var(--shadow-sm);
    border-left: 3px solid var(--light-blue);
}
.stat-card:nth-child(2) { border-left-color: var(--tea-green-2); }
.stat-card:nth-child(3) { border-left-color: var(--muted-teal); }
.stat-card:nth-child(4) { border-left-color: var(--lavender); }
.stat-label {
    font-size: 12px;
    font-weight: 500;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}
.stat-value {
    font-size: 28px;
    font-weight: 700;
    color: var(--text);
    margin-top: var(--space-xs);
}

/* --- Table --- */
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th {
    text-align: left;
    padding: var(--space-sm) var(--space-md);
    font-size: 12px;
    font-weight: 600;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-bottom: 2px solid var(--border);
    background: var(--bg);
}
td {
    padding: var(--space-sm) var(--space-md);
    font-size: 14px;
    border-bottom: 1px solid var(--border);
}
tr:hover td { background: var(--bg-surface-h); }

/* --- Empty State --- */
.empty-state {
    text-align: center;
    padding: var(--space-3xl) var(--space-xl);
    color: var(--text-muted);
}
.empty-state .icon { font-size: 48px; margin-bottom: var(--space-md); opacity: 0.4; }
.empty-state h3 { font-size: 18px; color: var(--text); margin-bottom: var(--space-sm); }
.empty-state p { font-size: 14px; max-width: 400px; margin: 0 auto; }

/* --- Responsive --- */
@media (max-width: 1024px) {
    .app { grid-template-columns: var(--nav-collapsed) 1fr; }
    .sidebar-brand span:last-child,
    .sidebar-nav a span:not(.nav-icon),
    .sidebar-section,
    .sidebar-user .name,
    .sidebar-user .role { display: none; }
    .sidebar-nav a { justify-content: center; padding: var(--space-sm); }
    .sidebar-brand { justify-content: center; }
}
@media (max-width: 768px) {
    .app { grid-template-columns: 1fr; }
    .sidebar { display: none; }
    .stats-grid { grid-template-columns: 1fr 1fr; }
}
