/* =====================================================================
   TEMA VISUAL — BANSOS KECAMATAN SUMARORONG
   Palet dasar tetap terhubung ke lambang Kabupaten Mamasa (navy, emas,
   merah), tapi nuansa warna & gaya komponen dibuat lebih modern:
   neutral lebih bersih/dingin, badge gaya "soft pill", shadow lebih
   halus, radius lebih besar, dan tabel dengan header yang lebih ringan.
   Font: Fraunces (display) + Public Sans (body).
   ===================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Public+Sans:wght@400;500;600;700&display=swap');

:root {
    --navy: #22336F;
    --navy-dark: #131D45;
    --navy-light: #3E52A3;
    --red: #DC4C4C;
    --red-dark: #B93A3A;
    --gold: #D99A2B;
    --gold-light: #F0C066;
    --green: #16A34A;
    --green-dark: #0F7C39;
    --terracotta: #DC4C4C;

    --bg: #F6F7FB;
    --surface: #FFFFFF;
    --line: #E4E7F0;
    --ink: #1B2130;
    --muted: #6B7280;

    --shadow-sm: 0 1px 3px rgba(19, 29, 69, 0.06), 0 1px 2px rgba(19, 29, 69, 0.05);
    --shadow-md: 0 8px 24px rgba(19, 29, 69, 0.08);
    --shadow-lg: 0 16px 40px rgba(19, 29, 69, 0.14);
    --radius: 14px;
}

* { box-sizing: border-box; }

body {
    font-family: 'Public Sans', -apple-system, sans-serif;
    color: var(--ink);
    background: var(--bg);
    min-height: 100vh;
}

/* Foto latar cuma untuk halaman publik (Home, Login, dll) — bukan untuk
   halaman internal (Admin/Masyarakat) yang pakai sidebar, supaya tabel
   dan form di dalamnya tetap bersih & mudah dibaca. */
body:not(.has-sidebar) {
    background:
        linear-gradient(rgba(246,247,251,0.55), rgba(246,247,251,0.7)),
        url('../img/hero-sumarorong.jpg') center top / cover no-repeat fixed;
}

h1, h2, h3, h4, h5, h6, .font-display {
    font-family: 'Fraunces', Georgia, serif;
    font-weight: 600;
    color: var(--navy);
    letter-spacing: -0.01em;
}

a { color: var(--navy); text-decoration-color: rgba(34,51,111,0.35); }
a:hover { color: var(--red); }

/* ---------------------------------------------------------------
   Top accent stripe
   --------------------------------------------------------------- */
body::before {
    content: "";
    display: block;
    height: 4px;
    background: linear-gradient(90deg, var(--navy) 0%, var(--gold) 50%, var(--red) 100%);
}

/* ---------------------------------------------------------------
   Navbars
   --------------------------------------------------------------- */
.navbar {
    padding-top: 0.9rem;
    padding-bottom: 0.9rem;
    box-shadow: var(--shadow-sm);
}

.navbar .navbar-brand {
    font-family: 'Fraunces', Georgia, serif;
    font-weight: 700;
    font-size: 1.15rem;
    display: flex;
    align-items: center;
    gap: 0.65rem;
    letter-spacing: 0.01em;
}

.navbar-brand img.brand-logo {
    height: 42px;
    width: auto;
}

.navbar-light.bg-light {
    background-color: #fff !important;
    border-bottom: 1px solid var(--line);
}
.navbar-light .navbar-brand { color: var(--navy); }
.navbar-light .nav-link { color: var(--ink); font-weight: 500; }
.navbar-light .nav-link:hover, .navbar-light .nav-link.active { color: var(--red); }

.navbar-dark.bg-primary {
    background: linear-gradient(120deg, var(--navy) 0%, var(--navy-dark) 100%) !important;
}
.navbar-dark.bg-success {
    background: linear-gradient(120deg, var(--green) 0%, var(--green-dark) 100%) !important;
}
.navbar-dark.bg-dark {
    background: linear-gradient(120deg, #1B2437 0%, var(--navy-dark) 100%) !important;
}
.navbar-dark .nav-link { color: rgba(255,255,255,0.78); font-weight: 500; }
.navbar-dark .nav-link:hover, .navbar-dark .nav-link.active { color: #fff; }
.navbar-dark .navbar-text { color: rgba(255,255,255,0.78) !important; }

/* ---------------------------------------------------------------
   Buttons — solid fill, halus, sedikit terangkat saat hover
   --------------------------------------------------------------- */
.btn {
    border-radius: 10px;
    font-weight: 600;
    letter-spacing: 0.01em;
    transition: transform 0.12s ease, box-shadow 0.12s ease, background-color 0.12s ease;
}
.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); }

.btn-primary { background-color: var(--navy); border-color: var(--navy); box-shadow: 0 2px 8px rgba(34,51,111,0.25); }
.btn-primary:hover, .btn-primary:focus { background-color: var(--navy-dark); border-color: var(--navy-dark); }

.btn-success { background-color: var(--green); border-color: var(--green); box-shadow: 0 2px 8px rgba(22,163,74,0.25); }
.btn-success:hover, .btn-success:focus { background-color: var(--green-dark); border-color: var(--green-dark); }

.btn-danger { background-color: var(--red); border-color: var(--red); box-shadow: 0 2px 8px rgba(220,76,76,0.25); }
.btn-danger:hover { background-color: var(--red-dark); border-color: var(--red-dark); }

.btn-outline-light:hover { color: var(--navy); }
.btn-light { background-color: #fff; border-color: var(--line); }

/* ---------------------------------------------------------------
   Cards, panels
   --------------------------------------------------------------- */
.card {
    border: 1px solid var(--line);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
}
.card.shadow-sm { box-shadow: var(--shadow-md) !important; }

.auth-card {
    border: 1px solid var(--line);
    border-radius: 20px;
    box-shadow: var(--shadow-lg);
}
.auth-card .logo-wrap { text-align: center; margin-bottom: 0.75rem; }
.auth-card .logo-wrap img { height: 72px; }

.text-bg-primary { background: linear-gradient(135deg, var(--navy), var(--navy-light)) !important; }
.text-bg-success { background: linear-gradient(135deg, var(--green), var(--green-dark)) !important; }
.text-bg-warning { background: linear-gradient(135deg, var(--gold), var(--gold-light)) !important; color: #4a3407 !important; }
.text-bg-secondary { background: linear-gradient(135deg, #6B7280, #4B5563) !important; }
.card.text-bg-primary, .card.text-bg-success, .card.text-bg-warning, .card.text-bg-secondary {
    border: none;
    box-shadow: var(--shadow-md);
}

/* ---------------------------------------------------------------
   Tables — header terang modern, bukan blok warna solid pekat
   --------------------------------------------------------------- */
.table {
    border-radius: var(--radius);
    overflow: hidden;
    background: var(--surface);
}
.table thead.table-success, .table thead.table-primary, .table thead.table-dark,
thead.table-success, thead.table-primary, thead.table-dark,
.table-success th, .table-primary th, .table-dark th {
    background-color: #EEF1FA !important;
    color: var(--navy) !important;
    border-color: var(--line) !important;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-weight: 700;
}
.table > :not(caption) > * > * { border-bottom-color: var(--line); }
.table-striped > tbody > tr:nth-of-type(odd) > * { background-color: #FAFBFD; }
.table td, .table th { vertical-align: middle; }

/* ---------------------------------------------------------------
   Badges — gaya "soft pill" modern (tint lembut, bukan warna pekat)
   --------------------------------------------------------------- */
.badge {
    border-radius: 999px;
    font-weight: 700;
    letter-spacing: 0.02em;
    padding: 0.4em 0.85em;
}
.badge.bg-danger   { background-color: rgba(220,76,76,0.12) !important; color: var(--red-dark) !important; }
.badge.bg-success  { background-color: rgba(22,163,74,0.12) !important; color: var(--green-dark) !important; }
.badge.bg-warning  { background-color: rgba(217,154,43,0.16) !important; color: #7A4E0B !important; }
.badge.bg-primary  { background-color: rgba(34,51,111,0.10) !important; color: var(--navy) !important; }
.badge.bg-info     { background-color: rgba(62,82,163,0.12) !important; color: var(--navy-light) !important; }
.badge.bg-secondary{ background-color: rgba(107,114,128,0.14) !important; color: #4B5563 !important; }

/* Badge dipakai di dalam elemen berlatar gelap (mis. kartu sidebar) tetap kontras */
.text-bg-primary .badge, .text-bg-success .badge, .text-bg-warning .badge, .text-bg-secondary .badge,
.profile-hero .badge.bg-success {
    background-color: rgba(255,255,255,0.2) !important;
    color: #fff !important;
}

/* ---------------------------------------------------------------
   Forms
   --------------------------------------------------------------- */
.form-control, .form-select {
    border-radius: 10px;
    border-color: var(--line);
    background-color: var(--surface);
}
.form-control:focus, .form-select:focus {
    border-color: var(--gold);
    box-shadow: 0 0 0 0.2rem rgba(217, 154, 43, 0.2);
}
.form-label { font-weight: 600; color: var(--navy); font-size: 0.88rem; }

/* ---------------------------------------------------------------
   Alerts — soft tinted, tanpa border tebal
   --------------------------------------------------------------- */
.alert { border-radius: 12px; border: 1px solid transparent; border-left-width: 4px; }
.alert-success { border-left-color: var(--green); background-color: #EEFBF2; color: var(--green-dark); }
.alert-danger  { border-left-color: var(--red);   background-color: #FDEEEE; color: var(--red-dark); }
.alert-warning { border-left-color: var(--gold);  background-color: #FDF6E7; color: #7A4E0B; }
.alert-info    { border-left-color: var(--navy-light); background-color: #EEF0FA; color: var(--navy); }

/* ---------------------------------------------------------------
   Hero (Home page)
   --------------------------------------------------------------- */
.hero-section {
    background: linear-gradient(135deg, var(--navy) 0%, var(--navy-dark) 100%);
    color: #fff;
    border-radius: 22px;
    padding: 3.5rem 3rem;
    position: relative;
    overflow: hidden;
    box-shadow: var(--shadow-lg);
}
.hero-section::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 85% 20%, rgba(217,154,43,0.25), transparent 55%);
    pointer-events: none;
}
.hero-section h1, .hero-section .font-display { color: #fff; }
.hero-section .lead { color: rgba(255,255,255,0.88); }
.hero-section img.hero-logo { height: 110px; filter: drop-shadow(0 6px 14px rgba(0,0,0,0.35)); }

.ribbon-eyebrow {
    display: inline-block;
    background: rgba(255,255,255,0.14);
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    padding: 0.3rem 0.9rem;
    border-radius: 999px;
    text-transform: uppercase;
    margin-bottom: 0.75rem;
}

/* =====================================================================
   SIDEBAR LAYOUT — halaman internal (Admin Kecamatan, Admin Desa,
   Masyarakat): sidebar gelap modern di kiri + topbar bening di atas.
   ===================================================================== */
body.has-sidebar {
    padding-left: 240px;
    background: var(--bg);
}
@media (max-width: 900px) {
    body.has-sidebar { padding-left: 0; }
}

.app-sidebar {
    position: fixed;
    top: 0; left: 0;
    width: 240px;
    height: 100vh;
    overflow-y: auto;
    background: linear-gradient(180deg, var(--navy-dark) 0%, #0B1330 100%);
    color: #fff;
    z-index: 1000;
    display: flex;
    flex-direction: column;
}
@media (max-width: 900px) {
    .app-sidebar { position: relative; width: 100%; height: auto; }
}

.app-sidebar .sidebar-brand {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 1.1rem 1rem;
    border-bottom: 1px solid rgba(255,255,255,0.1);
}
.app-sidebar .sidebar-brand img { height: 38px; }
.app-sidebar .sidebar-brand .role-name {
    font-family: 'Fraunces', serif;
    font-weight: 700;
    font-size: 0.95rem;
    line-height: 1.15;
}
.app-sidebar .sidebar-brand .role-sub {
    font-size: 0.68rem;
    opacity: 0.6;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.app-sidebar .sidebar-menu {
    flex: 1;
    padding: 0.9rem 0.7rem;
}
.app-sidebar .sidebar-menu a {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    padding: 0.6rem 0.9rem;
    margin-bottom: 0.2rem;
    color: rgba(255,255,255,0.68);
    text-decoration: none;
    font-size: 0.87rem;
    font-weight: 500;
    border-radius: 10px;
    transition: background 0.15s, color 0.15s;
}
.app-sidebar .sidebar-menu a i { font-size: 1.05rem; width: 20px; text-align: center; }
.app-sidebar .sidebar-menu a:hover {
    background: rgba(255,255,255,0.06);
    color: #fff;
}
.app-sidebar .sidebar-menu a.active {
    background: var(--gold);
    color: var(--navy-dark);
    font-weight: 700;
    box-shadow: 0 4px 12px rgba(217,154,43,0.3);
}

.app-sidebar .sidebar-footer {
    padding: 0.9rem 1.1rem;
    border-top: 1px solid rgba(255,255,255,0.1);
}
.app-sidebar .sidebar-footer .btn { width: 100%; }

.app-topbar {
    background: rgba(255,255,255,0.85);
    backdrop-filter: blur(8px);
    padding: 0.9rem 1.6rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    box-shadow: var(--shadow-sm);
    border-bottom: 1px solid var(--line);
    margin-bottom: 1.5rem;
    position: sticky;
    top: 0;
    z-index: 900;
}
.app-topbar .page-title {
    font-family: 'Fraunces', serif;
    font-weight: 700;
    color: var(--navy);
    font-size: 1.15rem;
    margin: 0;
}
.app-topbar .user-chip { font-size: 0.85rem; color: var(--muted); }

.app-content { padding: 0 1.6rem 2rem 1.6rem; }

/* =====================================================================
   PROFIL — kartu header dengan avatar inisial + info grid
   ===================================================================== */
.profile-hero {
    background: linear-gradient(120deg, var(--navy) 0%, var(--navy-dark) 100%);
    border-radius: 20px;
    padding: 1.8rem 2rem;
    display: flex;
    align-items: center;
    gap: 1.5rem;
    color: #fff;
    position: relative;
    overflow: hidden;
    box-shadow: var(--shadow-md);
}
.profile-hero::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 90% 10%, rgba(217,154,43,0.3), transparent 55%);
    pointer-events: none;
}
.profile-avatar {
    width: 76px;
    height: 76px;
    border-radius: 50%;
    background: var(--gold);
    color: var(--navy-dark);
    font-family: 'Fraunces', serif;
    font-weight: 700;
    font-size: 2rem;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    position: relative;
    z-index: 1;
    box-shadow: 0 6px 16px rgba(0,0,0,0.25);
}
.profile-hero > div { position: relative; z-index: 1; }
.profile-hero > button { position: relative; z-index: 1; }
.profile-hero h1, .profile-hero h2, .profile-hero h3,
.profile-hero h4, .profile-hero h5, .profile-hero h6 {
    color: #fff;
}

.info-card {
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 1.1rem 1.3rem;
    display: flex;
    align-items: center;
    gap: 1rem;
    height: 100%;
    box-shadow: var(--shadow-sm);
}
.info-card i {
    font-size: 1.3rem;
    color: var(--red);
    width: 40px;
    height: 40px;
    border-radius: 12px;
    background: rgba(220,76,76,0.1);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.info-card .info-label {
    font-size: 0.73rem;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-weight: 600;
}
.info-card .info-value {
    font-size: 0.98rem;
    color: var(--ink);
    font-weight: 600;
}
