/* =========================================================================
   CivilPro - Core Stylesheet
   Palette: Navy + Forest Green (#01471F) primary, clean white/gray surfaces,
   soft shadows. "Blue" survives only as one of five stat-icon accent slots
   (bg-blue/bg-green/bg-orange/bg-red/bg-navy) - see the --cp-blue note below.
   ========================================================================= */
:root {
    /* Brand primary - CivilPro forest green */
    --cp-primary: #01471F;
    --cp-primary-dark: #013a19;
    --cp-primary-light: #e3ede6;
    --cp-primary-rgb: 1, 71, 31;

    /* Bootstrap's own theme variables, re-pointed so every Bootstrap
       "-primary" utility (bg-primary, text-primary, form-check, etc.)
       that isn't explicitly restyled below still picks up the brand color. */
    --bs-primary: #01471F;
    --bs-primary-rgb: 1, 71, 31;
    --bs-link-color: #01471F;
    --bs-link-color-rgb: 1, 71, 31;
    --bs-link-hover-color: #013a19;
    --bs-link-hover-color-rgb: 1, 58, 25;

    --cp-navy: #0f2547;
    --cp-navy-dark: #0a1b35;
    /* --cp-blue is now used only for the "blue" stat-icon accent slot
       (kept distinct from --cp-primary so blue/green stat cards never
       render as two indistinguishable greens side by side). */
    --cp-blue: #2563eb;
    --cp-blue-light: #eaf1ff;
    --cp-green: #16a34a;
    --cp-orange: #f59e0b;
    --cp-red: #dc2626;
    --cp-gray-bg: #f4f6fa;
    --cp-gray-border: #e5e9f0;
    --cp-text: #1f2937;
    --cp-text-muted: #6b7280;
    --sidebar-width: 260px;
}

* { box-sizing: border-box; }

body {
    background: var(--cp-gray-bg);
    color: var(--cp-text);
    font-family: "Segoe UI", Roboto, -apple-system, BlinkMacSystemFont, Arial, sans-serif;
    font-size: 0.925rem;
}

a { text-decoration: none; }

/* ---------------- Layout ---------------- */
.app-wrapper { display: flex; min-height: 100vh; }

.sidebar {
    width: var(--sidebar-width);
    background: var(--cp-navy);
    color: #fff;
    display: flex;
    flex-direction: column;
    position: fixed;
    top: 0; left: 0; bottom: 0;
    z-index: 1030;
    transition: transform .25s ease;
}
.sidebar-brand {
    display: flex; align-items: center; justify-content: space-between;
    padding: 1.1rem 1.25rem; border-bottom: 1px solid rgba(255,255,255,.08);
}
.brand-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 34px; height: 34px; background: var(--cp-primary); border-radius: 8px;
    margin-right: .6rem; font-size: 1.1rem;
}
.brand-text { color: #fff; font-weight: 700; font-size: 1.05rem; letter-spacing: .3px; }
.btn-sidebar-close { background: transparent; border: none; color: #fff; font-size: 1.1rem; }

.sidebar-nav { flex: 1; overflow-y: auto; padding: .75rem 0; }
.sidebar-nav .nav-link {
    color: rgba(255,255,255,.75);
    padding: .62rem 1.25rem;
    display: flex; align-items: center; gap: .7rem;
    font-size: .875rem; border-left: 3px solid transparent;
}
.sidebar-nav .nav-link i { font-size: 1rem; width: 18px; text-align: center; }
.sidebar-nav .nav-link:hover { background: rgba(255,255,255,.06); color: #fff; }
.sidebar-nav .nav-link.active {
    background: rgba(var(--cp-primary-rgb),.28); color: #fff; border-left-color: var(--cp-primary); font-weight: 600;
}
.sidebar-nav .nav-link.disabled {
    color: rgba(255,255,255,.32); cursor: default; display: flex; align-items: center; gap: .7rem; padding: .5rem 1.25rem; font-size: .82rem;
}
.sidebar-section-label {
    text-transform: uppercase; font-size: .68rem; letter-spacing: .06em;
    color: rgba(255,255,255,.35); padding: .75rem 1.25rem .35rem;
}
.sidebar-footer { padding: .9rem 1.25rem; border-top: 1px solid rgba(255,255,255,.08); color: rgba(255,255,255,.5); }
.sidebar-backdrop {
    display: none; position: fixed; inset: 0; background: rgba(0,0,0,.4); z-index: 1020;
}

.main-content { flex: 1; margin-left: var(--sidebar-width); display: flex; flex-direction: column; min-height: 100vh; }

.topbar {
    height: 64px; background: #fff; border-bottom: 1px solid var(--cp-gray-border);
    display: flex; align-items: center; padding: 0 1.25rem; position: sticky; top: 0; z-index: 1010; gap: .75rem;
}
.btn-icon {
    background: transparent; border: none; width: 38px; height: 38px; border-radius: 8px;
    display: inline-flex; align-items: center; justify-content: center; font-size: 1.15rem; color: var(--cp-text);
}
.btn-icon:hover { background: var(--cp-gray-bg); }
.topbar-search { position: relative; width: 280px; }
.topbar-search i { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--cp-text-muted); }
.topbar-search input { padding-left: 34px; background: var(--cp-gray-bg); border: 1px solid var(--cp-gray-border); }
.notif-badge {
    position: absolute; top: 2px; right: 2px; background: var(--cp-red); color: #fff;
    font-size: .62rem; font-weight: 700; padding: 1px 5px; border-radius: 10px; line-height: 1.3;
}
.notif-dropdown { width: 320px; padding: 0; overflow: hidden; }
.notif-header { padding: .75rem 1rem; font-weight: 700; border-bottom: 1px solid var(--cp-gray-border); }
.notif-item { display: block; padding: .65rem 1rem; border-bottom: 1px solid var(--cp-gray-border); color: var(--cp-text); }
.notif-item:hover { background: var(--cp-gray-bg); }
.notif-item.unread { background: var(--cp-primary-light); }
.avatar-circle {
    width: 36px; height: 36px; border-radius: 50%; background: var(--cp-primary); color: #fff;
    display: inline-flex; align-items: center; justify-content: center; font-weight: 700;
}
.btn-user { background: transparent; border: none; }

.page-content { padding: 1.5rem; flex: 1; }
.page-header { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 1.1rem; flex-wrap: wrap; gap: .75rem; }
.page-title { font-size: 1.35rem; font-weight: 700; margin-bottom: .15rem; color: var(--cp-navy); }
.breadcrumb { font-size: .8rem; }
.page-footer { padding: 1rem 1.5rem; border-top: 1px solid var(--cp-gray-border); background: #fff; }

/* ---------------- Cards ---------------- */
.card { border: 1px solid var(--cp-gray-border); border-radius: 12px; box-shadow: 0 1px 2px rgba(16,24,40,.04); }
.stat-card { padding: 1.15rem 1.25rem; display: flex; align-items: center; gap: 1rem; }
.stat-icon {
    width: 48px; height: 48px; border-radius: 10px; display: flex; align-items: center; justify-content: center;
    font-size: 1.35rem; flex-shrink: 0;
}
.stat-icon.bg-blue { background: var(--cp-blue-light); color: var(--cp-blue); }
.stat-icon.bg-green { background: #e8f8ee; color: var(--cp-green); }
.stat-icon.bg-orange { background: #fef3e2; color: var(--cp-orange); }
.stat-icon.bg-red { background: #fde8e8; color: var(--cp-red); }
.stat-icon.bg-navy { background: #e7ecf5; color: var(--cp-navy); }
.stat-value { font-size: 1.35rem; font-weight: 700; color: var(--cp-navy); line-height: 1.2; }
.stat-label { font-size: .8rem; color: var(--cp-text-muted); }
.section-title { font-weight: 700; color: var(--cp-navy); font-size: 1rem; margin-bottom: .9rem; }

/* ---------------- Tables ---------------- */
.table thead th {
    background: var(--cp-gray-bg); font-size: .78rem; text-transform: uppercase; letter-spacing: .03em;
    color: var(--cp-text-muted); font-weight: 700; border-bottom: none; white-space: nowrap;
}
.table td { vertical-align: middle; font-size: .875rem; }
.table-hover tbody tr:hover { background: var(--cp-primary-light); }
.badge-status { font-weight: 600; font-size: .72rem; padding: .38em .7em; border-radius: 6px; }

/* ---------------- Forms ---------------- */
.form-section-title {
    font-weight: 700; color: var(--cp-navy); font-size: .95rem; margin-bottom: 1rem;
    padding-bottom: .5rem; border-bottom: 1px solid var(--cp-gray-border);
}
.form-label { font-size: .85rem; font-weight: 600; color: var(--cp-text); }
.form-label .required { color: var(--cp-red); }
.form-control, .form-select { font-size: .875rem; }
.form-control:focus, .form-select:focus { border-color: var(--cp-primary); box-shadow: 0 0 0 .2rem rgba(var(--cp-primary-rgb),.15); }
.form-check-input:checked { background-color: var(--cp-primary); border-color: var(--cp-primary); }
.form-check-input:focus { border-color: var(--cp-primary); box-shadow: 0 0 0 .2rem rgba(var(--cp-primary-rgb),.15); }

/* ---------------- Buttons ---------------- */
.btn-primary { background: var(--cp-primary); border-color: var(--cp-primary); color: #fff; }
.btn-primary:hover, .btn-primary:focus, .btn-primary:active { background: var(--cp-primary-dark) !important; border-color: var(--cp-primary-dark) !important; color: #fff; }
.btn-outline-primary { color: var(--cp-primary); border-color: var(--cp-primary); }
.btn-outline-primary:hover, .btn-outline-primary:focus, .btn-outline-primary:active {
    background: var(--cp-primary) !important; border-color: var(--cp-primary) !important; color: #fff !important;
}
.btn-check:checked + .btn-outline-primary, .btn-outline-primary.active {
    background: var(--cp-primary); border-color: var(--cp-primary); color: #fff;
}
.bg-primary { background-color: var(--cp-primary) !important; }
.text-primary { color: var(--cp-primary) !important; }
.border-primary { border-color: var(--cp-primary) !important; }
.link-primary { color: var(--cp-primary) !important; }
.btn-navy { background: var(--cp-navy); border-color: var(--cp-navy); color: #fff; }
.btn-navy:hover { background: var(--cp-navy-dark); color: #fff; }

/* ---------------- Auth pages (login / forgot / install) ---------------- */
.auth-wrapper {
    min-height: 100vh; display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, var(--cp-navy) 0%, #16345e 100%); padding: 1.5rem;
}
.auth-card { background: #fff; border-radius: 16px; overflow: hidden; max-width: 940px; width: 100%; box-shadow: 0 20px 50px rgba(0,0,0,.25); }
.auth-side {
    background: linear-gradient(160deg, var(--cp-navy), var(--cp-primary));
    color: #fff; padding: 2.5rem; display: flex; flex-direction: column; justify-content: center;
}
.auth-form-side { padding: 2.5rem; }
.auth-logo { width: 46px; height: 46px; background: rgba(255,255,255,.15); border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 1.4rem; margin-bottom: 1rem; }

/* Install wizard */
.install-steps { display: flex; justify-content: space-between; margin-bottom: 2rem; }
.install-step { flex: 1; text-align: center; position: relative; font-size: .8rem; color: var(--cp-text-muted); }
.install-step .circle {
    width: 32px; height: 32px; border-radius: 50%; background: #e5e9f0; color: #6b7280; font-weight: 700;
    display: flex; align-items: center; justify-content: center; margin: 0 auto .4rem;
}
.install-step.active .circle, .install-step.done .circle { background: var(--cp-primary); color: #fff; }
.install-step.done .circle { background: var(--cp-green); }

/* ---------------- Misc ---------------- */
.empty-state { text-align: center; padding: 3rem 1rem; color: var(--cp-text-muted); }
.empty-state i { font-size: 2.6rem; color: #cbd5e1; display: block; margin-bottom: .75rem; }
.health-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; margin-right: 6px; }
.health-green { background: var(--cp-green); }
.health-orange { background: var(--cp-orange); }
.health-red { background: var(--cp-red); }
.progress { height: 8px; border-radius: 6px; background: var(--cp-gray-border); }
.progress-bar { background: var(--cp-primary); }

@media (max-width: 991.98px) {
    .sidebar { transform: translateX(-100%); }
    .sidebar.show { transform: translateX(0); }
    .sidebar-backdrop.show { display: block; }
    .main-content { margin-left: 0; }
}
