:root{
    /* ── Base theme ── */
    --header: #F6F8FA;
    --light: #FFFFFF;
    --border: #D1D9E0;
    --hover: #1F2328;
    --color: #6f6f72;
    --primary: #0080FF;
    --danger: #ee1e1e;
    --danger-hover: #740e0e;
    --hoverbg: rgba(0,0,0,.08);
    --box-shadow: rgba(0,0,0,.25);

/* ── Neutral / text ── */
    --white: #fff;
    --black: #000;
    --text-dark: #323130;
    --text-muted: #605e5c;
    --text-faint: #a19f9d;
    --gray-neutral: #666;
    --gray-400: #9ca3af;
    --gray-600: #374151;
    --gray-900: #111827;

    /* ── Surfaces ── */
    --surface-muted: #faf9f8;
    --surface-soft: #f5f5f5;
    --surface-subtle: #f0f0f0;
    --surface-hover: #f8fbff;
    --surface-blue-soft: #f6f8ff;
    --primary-soft-surface: #f3f9ff;

    /* ── Borders ── */
    --border-light: #e0e0e0;
    --border-soft: #f0f0f0;
    --border-row: #eef2f7;
    --border-input: #ddd;
    --border-table: #e5e7eb;
    --border-hairline: #eee;

    /* ── Slate scale ── */
    --slate-50: #f8fafc;
    --slate-100: #f1f5f9;
    --slate-300: #cbd5e1;
    --slate-400: #94a3b8;
    --slate-500: #64748b;
    --slate-600: #475569;
    --slate-700: #334155;

    /* ── Blue / Primary scale ── */
    --primary-600: #0078d4;
    --primary-700: #106ebe;
    --primary-800: #0066cc;
    --blue-50: #e3f2fd;
    --blue-500: #3b82f6;
    --blue-600: #2563eb;
    --blue-700: #1d4ed8;
    --blue-800: #1565c0;
    --blue-900: #1e40af;

    /* ── Green / Success scale ── */
    --success: #10b981;
    --success-600: #059669;
    --success-700: #15803d;
    --success-800: #166534;
    --green-50: #e8f5e9;
    --green-500: #16a34a;
    --green-600: #107c10;
    --green-700: #2e7d32;
    --green-800: #065f46;
    --emerald-400: #34d399;

    /* ── Red / Danger scale ── */
    --danger-500: #ef4444;
    --danger-600: #dc2626;
    --danger-700: #d13438;
    --danger-800: #991b1b;
    --danger-accent: #ff4d4d;
    --red-50: #fde7e9;
    --red-400: #f87171;

    /* ── Warning / Amber / Orange ── */
    --warning: #ffc107;
    --warning-400: #fbbf24;
    --warning-800: #92400e;
    --orange-50: #fff3e0;
    --orange-600: #e65100;

    /* ── Purple / Pink ── */
    --purple-50: #f3e5f5;
    --purple-500: #a78bfa;
    --purple-600: #881798;
    --purple-700: #7b1fa2;
    --purple-800: #5b21b6;
    --pink-50: #fce4ec;
    --pink-600: #c2185b;

    /* ── Dark theme (loancard editor, console) ── */
    --dark-bg: #1a1a2e;
    --dark-bg-2: #0f0f1a;
    --dark-sidebar: #13131f;
    --dark-surface: #1e1e2e;
    --dark-canvas-1: #1e1e30;
    --dark-canvas-2: #252538;
    --dark-text: #e2e8f0;
    --dark-navy: #1e3a5f;
    --indigo-400: #818cf8;
    --indigo-500: #6366f1;

    /* ── Alpha overlays ── */
    --overlay-dark: rgba(0,0,0,.5);
    --overlay-darker: rgba(0,0,0,.6);
    --black-06: rgba(0,0,0,.06);
    --black-05: rgba(0,0,0,.05);
    --black-03: rgba(0,0,0,.03);
    --black-025: rgba(0,0,0,.025);
    --black-02: rgba(0,0,0,.02);
    --black-15: rgba(0,0,0,.15);
    --black-45: rgba(0,0,0,.45);
    --white-04: rgba(255,255,255,.04);
    --white-50: rgba(255,255,255,.5);
    --white-08: rgba(255,255,255,.08);
    --white-10: rgba(255,255,255,.1);
    --white-12: rgba(255,255,255,.12);
    --white-20: rgba(255,255,255,.2);
    --white-30: rgba(255,255,255,.3);

    /* ── Soft background / accents ── */
    --success-soft: rgba(16,185,129,.12);
    --success-soft-bg: rgba(16,185,129,.10);
    --success-border: rgba(134,239,172,.55);
    --danger-soft: rgba(239,68,68,.12);
    --danger-soft-bg: rgba(239,68,68,.10);
    --danger-soft-border: rgba(252,165,165,.55);
    --danger-soft-solid: #ffe6e6;
    --danger-soft-solid-border: #ffb3b3;
    --blue-soft: rgba(59,130,246,.12);
    --blue-glow: rgba(37,99,235,.18);
    --primary-soft: rgba(0,128,255,.06);
    --primary-soft-bg: rgba(0,128,255,.08);
    --primary-soft-border: rgba(0,128,255,.25);
    --primary-glow: rgba(0,128,255,.12);
    --primary-glow-strong: rgba(0,128,255,.3);
    --primary-shadow: rgba(0,128,255,.2);

    /* ── Shadows ── */
    --shadow-soft: rgba(0,0,0,.03);
    --shadow-light: rgba(0,0,0,.05);
    --shadow-md: rgba(0,0,0,.1);
    --shadow-lg: rgba(0,0,0,.12);
    --shadow-xl: rgba(0,0,0,.15);
    --shadow-dark: rgba(0,0,0,.5);
    --shadow-primary: rgba(37,99,235,.22);
    --shadow-primary-soft: rgba(37,99,235,.12);
    --shadow-slate: rgba(15,23,42,.08);
    --shadow-slate-2: rgba(15,23,42,.04);
    --shadow-navy: rgba(2,6,23,.12);

/* ── Slate soft ── */
    --slate-soft: rgba(100,116,139,.15);

    /* ── Indigo scale ── */
    --indigo-400: #818cf8;
    --indigo-500: #6366f1;
    --indigo-500-soft: rgba(99,102,241,.55);
    --indigo-700: rgba(99,102,241,.7);

    /* ── White alpha variants ── */
    --white-06: rgba(255,255,255,.06);
    --white-07: rgba(255,255,255,.07);

    /* ── Blue-400 ── */
    --blue-400: #60a5fa;

    /* ── Misc ── */
    --placeholder: #aaaaaa;
    --terminal-green: #00ff00;
    --primary-800-alt: #0066cc;
    --border-hover: #c4cdd5;
    --mythic-overlay: rgba(31,35,40,.28);
    --mythic-shadow: rgba(0,0,0,.14);
    --mythic-shadow-light: rgba(0,0,0,.05);
    --mythic-shadow-hover: rgba(0,0,0,.08);
    --success-border-soft: rgba(16,185,129,.35);
    --danger-border-soft: rgba(239,68,68,.35);
    --primary-soft-bg2: rgba(0,128,255,0.1);
    --primary-soft-hover: rgba(0,128,255,0.05);
    --black-25: rgba(0,0,0,0.25);
    --black-10: rgba(0,0,0,0.1);
}

/* ══════════════════════════════════════════
   TEMA: Dark
══════════════════════════════════════════ */
[data-theme="dark"] {
    --header:      #1e1e2e;
    --light:       #252535;
    --border:      #3a3a50;
    --hover:       #e2e8f0;
    --color:       #a0a8b8;
    --primary:     #60a5fa;
    --sakura:      #1a1a2e;
    --hoverbg:     rgba(255,255,255,.07);
    --box-shadow:  rgba(0,0,0,.6);
    --bg:          #1a1a2e;
    /* surfaces */
    --surface-muted:  #2a2a3e;
    --surface-soft:   #2e2e42;
    --surface-subtle: #333348;
    --surface-hover:  #2d2d42;
    /* borders */
    --border-light:   #3a3a54;
    --border-soft:    #2e2e44;
    --border-row:     #2a2a3e;
    --border-input:   #44445a;
    --border-table:   #3a3a52;
    /* text */
    --text-dark:      #e2e8f0;
    --text-muted:     #a0a8b8;
    --placeholder:    #606080;
    --white:          #252535;
    --black:          #f8fafc;
    --gray-neutral:   #a0a8b8;
    --gray-400:       #7f8aa3;
    --gray-600:       #c0c8d8;
    --gray-900:       #f1f5f9;
    --surface-blue-soft: #252d42;
    --primary-soft-surface: #202d43;
    --slate-50:       #252535;
    --slate-100:      #2e2e42;
    --slate-300:      #596078;
    --slate-400:      #7f8aa3;
    --slate-500:      #9aa5bb;
    --slate-600:      #b3bdd0;
    --slate-700:      #d1d8e5;
    --blue-50:        #203451;
    --green-50:       #193b34;
    --red-50:         #49272d;
    --purple-50:      #38294d;
    --orange-50:      #49371d;
    --pink-50:        #48283a;
    --danger-soft-solid: #49272d;
    --danger-soft-solid-border: #7f3c46;
    /* scrollbar */
    color-scheme: dark;
}

/* ══════════════════════════════════════════
   TEMA: Pink (Sakura)
══════════════════════════════════════════ */
[data-theme="pink"] {
    --header:      #fff0f6;
    --light:       #ffffff;
    --border:      #f9c4d8;
    --hover:       #5a1a35;
    --color:       #9d4f70;
    --primary:     #e91e8c;
    --sakura:      #f48fb1;
    --hoverbg:     rgba(233,30,140,.07);
    --box-shadow:  rgba(150,30,80,.2);
    --bg:          #fff0f6;
    --surface-muted: #fff5f9;
    --surface-soft:  #fce4ec;
    --border-light:  #f8bbd0;
    --border-input:  #f48fb1;
    --text-dark:     #5a1a35;
    --text-muted:    #9d4f70;
    --primary-soft-bg: rgba(233,30,140,.08);
    --primary-soft-border: rgba(233,30,140,.25);
}

/* ══════════════════════════════════════════
   TEMA: Light Green (Mint)
══════════════════════════════════════════ */
[data-theme="green"] {
    --header:      #f0fdf4;
    --light:       #ffffff;
    --border:      #bbf7d0;
    --hover:       #14532d;
    --color:       #4a7c59;
    --primary:     #16a34a;
    --sakura:      #86efac;
    --hoverbg:     rgba(22,163,74,.07);
    --box-shadow:  rgba(20,83,45,.18);
    --bg:          #f0fdf4;
    --surface-muted: #f7fef9;
    --surface-soft:  #dcfce7;
    --border-light:  #bbf7d0;
    --border-input:  #86efac;
    --text-dark:     #14532d;
    --text-muted:    #4a7c59;
    --primary-soft-bg: rgba(22,163,74,.08);
    --primary-soft-border: rgba(22,163,74,.25);
}

/* ══════════════════════════════════════════
   TEMA: Light Blue (Sky)
══════════════════════════════════════════ */
[data-theme="blue"] {
    --header:      #eff6ff;
    --light:       #ffffff;
    --border:      #bfdbfe;
    --hover:       #1e3a5f;
    --color:       #3b6ea5;
    --primary:     #2563eb;
    --sakura:      #93c5fd;
    --hoverbg:     rgba(37,99,235,.07);
    --box-shadow:  rgba(30,58,95,.18);
    --bg:          #eff6ff;
    --surface-muted: #f5f9ff;
    --surface-soft:  #dbeafe;
    --border-light:  #bfdbfe;
    --border-input:  #93c5fd;
    --text-dark:     #1e3a5f;
    --text-muted:    #3b6ea5;
    --primary-soft-bg: rgba(37,99,235,.08);
    --primary-soft-border: rgba(37,99,235,.25);
}
*{
    margin: 0;
    padding: 0;
}
input,
button,
textarea,
a{
    font-family: GoogleSansFlex;
    text-decoration: none;
}
@font-face {
    font-family: GoogleSansFlex;
    src: url("../fonts/GoogleSansFlex.ttf");
}
body{
    display: flex;
    flex-direction: column;
    overflow: hidden;
    font-family: GoogleSansFlex;
    background: var(--light);
    height: 100vh;
    width: 100vw;
}

/* Shared scroll and control defaults. Individual pages may still constrain
   their own table wrappers for horizontal scrolling. */
body,
main,
main content,
main content .wrapper,
main content .paging {
    min-height: 0;
}

main content {
    overflow: hidden;
}

main content .wrapper {
    overflow: hidden auto;
}

[data-theme="dark"] select,
[data-theme="dark"] input,
[data-theme="dark"] textarea,
[data-theme="dark"] option {
    background-color: var(--light) !important;
    color: var(--text-dark) !important;
    border-color: var(--border-input) !important;
}

[data-theme="dark"] ::placeholder { color: var(--placeholder); }

[data-theme="dark"] .loan-popup-body,
[data-theme="dark"] .alert,
[data-theme="dark"] .alert.success,
[data-theme="dark"] .alert.error,
[data-theme="dark"] .loan-popup-body [style*="background:#fff"],
[data-theme="dark"] .loan-popup-body [style*="background: #fff"] {
    color: var(--text-dark) !important;
}

[data-theme="dark"] .loan-popup-body [style*="background:#fff"],
[data-theme="dark"] .loan-popup-body [style*="background: #fff"] {
    background: var(--light) !important;
}

[data-theme="dark"] .loan-popup-body [style*="background:#d1fae5"],
[data-theme="dark"] .loan-popup-body [style*="background:#dff6dd"],
[data-theme="dark"] .loan-popup-body [style*="background:#10b981"],
[data-theme="dark"] .loan-popup-body [style*="background:#fef3c7"],
[data-theme="dark"] .loan-popup-body [style*="background:#fff3cd"],
[data-theme="dark"] .loan-popup-body [style*="background:#fee2e2"] {
    background: var(--surface-soft) !important;
    color: var(--text-dark) !important;
    border-color: var(--border) !important;
}
main content .tabs,
header{
    display: flex;
    background: var(--header);
    border-bottom: .1rem solid var(--border);
    color: var(--color);
    position: relative;
    align-items: center;
}
header{
    padding: .5rem 1.5rem;
    -webkit-app-region: drag;
}

header .title{
    display: flex;
    align-items: center;
    font-size: 1.3rem;
    font-weight: 500;
    gap: .5rem;
    text-transform: uppercase;
    color: var(--hover);
}
header .title img{
    width: 1.8rem;
    aspect-ratio: 1/1;
    object-fit: contain;
}
header .search{
    position: absolute;
    left: 50%;
    z-index: 1000;
    top: 50%;
    transform: translate(-50%,-50%);
}
header .menu{
    margin-left: auto;
    position: relative;
}
header .menu ul{
    list-style: none;
    display: flex;
    gap: .5rem;
}
main aside .menu li:hover a,
main aside .menu li.active a,
header .menu ul li:hover a{
    background: var(--border);
    color: var(--hover);
}
header .menu ul li img{
    width: 100%;
    height: 100%;
    object-fit: cover;
}
header .menu ul li:first-child a{
    width: auto;
    gap: .5rem;
    text-decoration: none;
}
header .menu ul li a{
    display: flex;
    height: 100%;
    aspect-ratio: 1/1;
    width: 2.5rem;
    height: 2.5rem;
    align-items: center;
    justify-content: center;
    transition: all .3s ease-in-out;
    -webkit-app-region: default;
    cursor: pointer;
    border-radius: .3rem;
    color: var(--color);
}
header .menu svg{
    width: 1.5rem;
    aspect-ratio: 1/1;
    fill: currentColor;
}
/* Search */
.search{
    display: flex;
    align-items: center;
    gap: .5rem;
    background: var(--light);
    border: .1rem solid var(--border);
    border-radius: .3rem;
    padding: .5rem .8rem;
    color: var(--color);
}
.search.full{
    width: 100%;
}
.search svg{
    width: 1.3rem;
    aspect-ratio: 1/1;
    fill: currentColor;
}
.search input{
    flex: 1;
}
.search button,
.search input{
    border: none;
    background: none;
    outline: none;
    font-size: 1rem;
}
/* Main */
main{
    display: flex;
    height: 100%;
    flex: 1;
    padding: 1rem;
    gap: 1rem;
    overflow: hidden;
}
main aside{
    width: 18rem;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    gap: 1rem;
}
main content .tabs svg,
main aside .user svg,
main aside .menu li a svg{
    width: 1.5rem;
    height: 1.5rem;
    fill: currentColor;
}
main aside .menu{
    flex: 1;
}
main aside .menu li{
    list-style: none;
}
main aside .menu li a{
    gap: .5rem;
    display: flex;
    color :var(--color);
    align-items: center;
    border-radius: .3rem;
    font-size: 1.1rem;
    transition: all .3s ease-in-out;
    padding: .7rem 1rem;
    text-decoration: none;
}
main aside .user{
    position: relative;
}
main aside .user .avatar{
    width: 2.5rem;
    aspect-ratio: 1/1;
    border-radius: .5rem;
    overflow: hidden;
}
main aside .user .avatar img{
    width: 100%;
    height: 100%;
    overflow: hidden;
}
main aside .user .username{  
    font-size: 1.1rem;
    line-height: 1;
    flex: 1;
}
main aside .user .username span{
    font-size: .98rem;
}
main aside .user .username b{
    display: block;
    font-weight: 500;
}
main aside .user .person{
    display: flex;
    gap: .8rem;
    z-index: 1;
    position: relative;
    padding: .5rem;
    border: .1rem solid var(--border);
    background: var(--header);
    border-radius: .3rem;
    align-items: center;
}
main aside .user .person a{
    color: var(--color);
    border-radius: .3rem;
    cursor: pointer;
    display: flex;
    padding: .4rem;
    transition: all .3s ease-in-out;
}
main aside .user .person a:hover{
    color: var(--hover);
    background: var(--border);
}
main aside .user .more.on{
    transform: translate(0, 0);
    opacity: 1;
    bottom: calc(100% + 1rem);
}
main aside .user .more{
    position: absolute;
    border: .1rem solid var(--border);
    transition: all .3s ease-in-out;
    opacity: 1;
    border-radius: .3rem;
    margin: auto;
    width: calc(100% - .5rem);
    background: var(--light);
    bottom: -100%;
    transform: translate(0, 100%);
    z-index: -1;
}
main aside .user .more li{
    list-style: none;
}
main aside .user .more li:hover a{
    background: var(--border);
    color: var(--hover);
}
main aside .user .more li a{
    padding: .7rem 1rem;
    gap: .7rem;
    display: flex;
    color: var(--color);
    align-items: center;
    transition: .3s ease-in-out;
}
main content{
    flex: 1;
    border-radius: .3rem;
    display: flex;
    height: 100%;
    gap: 1rem;
    flex-direction: column;
}
main content .wrapper{
    border: .1rem solid var(--border);
    border-radius: .3rem;
    flex-direction: column;
    display: flex;
    flex: 1;
    overflow: hidden;
}
main content .tabs{
    display: flex;
}
main content .tabs ul{
    display: flex;
    list-style: none;
    width: 100%;
    padding: 0 1rem;
}
main content .tabs li a{
    display: flex;
    align-items: center;
    padding: .6rem ;
    gap: .5rem;
    transition: all .3s ease-in-out;
    border-bottom: .15rem solid transparent;
    color: var(--color);
    text-decoration: none;
    cursor: pointer;
}
main content .tabs li.active a{
    border-bottom: .15rem solid;
    color: var(--primary);
}

/* ── Tabs "More" dropdown (auto-collapse on overflow) ── */
main content .tabs li.tab-more{
    position: relative;
    flex: 0 0 auto;
    list-style: none;
}
main content .tabs li.tab-more > a{
    align-items: center;
    gap: .3rem;
    cursor: pointer;
    white-space: nowrap;
}
main content .tabs li.tab-more > a .tab-more-caret{
    font-size: .7rem;
    opacity: .8;
    transition: transform .2s ease;
}
main content .tabs li.tab-more.open > a .tab-more-caret{
    transform: rotate(180deg);
}
main content .tabs .tab-more-menu{
    display: none;
    position: absolute;
    top: calc(100% + .25rem);
    right: 0;
    min-width: 13rem;
    max-height: 70vh;
    overflow-y: auto;
    background: var(--light);
    border: .1rem solid var(--border);
    border-radius: .4rem;
    box-shadow: 0 .5rem 1.5rem var(--shadow-xl);
    padding: .4rem;
    z-index: 120;
    flex-direction: column;
    list-style: none;
    white-space: nowrap;
}
main content .tabs .tab-more-menu.open{
    display: flex;
}
main content .tabs .tab-more-menu li{
    flex: 0 0 auto;
    width: 100%;
}
main content .tabs .tab-more-menu li a{
    width: 100%;
    padding: .55rem .8rem;
    border-radius: .35rem;
    border-bottom: none;
    white-space: nowrap;
    box-sizing: border-box;
}
main content .tabs .tab-more-menu li a:hover{
    background: var(--hoverbg);
}
main content .tabs .tab-more-menu li.active a{
    border-bottom: none;
    background: var(--primary-soft-bg);
    color: var(--primary);
}
main content .paging{
    flex: 1;
    display: flex;
    flex-direction: column;
    position: relative;
    height: 100%;
}
main content .page{
    flex: 1;
    display: none;
    position: absolute;
    left:0;
    right:0;
    bottom: 0;
    top: 0;
}
main content .page.active{
    display: block;
    height: 100%;;
    overflow-y: scroll;
}
.cardlist{
    display: grid;
    grid-template-columns: repeat(3 , 1fr);
    gap: .5rem;
    width: 100%;
}
.loan-summary-grid{
    display: grid;
    grid-template-columns: repeat(4, minmax(11.25rem, 1fr));
    gap: 1rem;
    margin-bottom: 1rem;
}
.loan-summary-card{
    background: var(--header);
    border: .0625rem solid var(--border);
    padding: 1rem;
    border-radius: .75rem;
    display: flex;
    flex-direction: column;
    gap: .5rem;
}
.loan-summary-card span{
    color: var(--color);
    font-size: .9rem;
}
.loan-summary-card strong{
    color: var(--hover);
    font-size: 1.25rem;
}
.loan-details{
    padding: 1rem 0 0 0;
    border-top: .0625rem solid var(--border);
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .75rem;
    margin-top: .75rem;
}
.loan-details div{
    color: var(--color);
}
.loan-filters{
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    padding-left: 0;
    margin-left: auto;
}
.loan-filters button{
    border: .0625rem solid var(--border);
    background: transparent;
    color: var(--color);
    padding: .5rem .8rem;
    border-radius: .5rem;
    cursor: pointer;
}
.loan-filters button.active,
.loan-filters button:hover{
    background: var(--header);
    color: var(--hover);
}
.loan-popup-overlay{
    position: fixed;
    inset: 0;
    background: var(--overlay-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.5rem;
    z-index: 50;
}
.loan-popup-overlay.hidden{
    display: none;
}
.loan-popup{
    width: min(100%, 51.25rem);
    max-height: min(100%, 90vh);
    overflow-y: auto;
    background: var(--header);
    border: .0625rem solid var(--border);
    border-radius: 1rem;
    box-shadow: 0 1.25rem 3.125rem var(--shadow-xl);
}
.loan-popup-header{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.25rem;
    border-bottom: .0625rem solid var(--border);
}
.loan-popup-header h3{
    margin: 0;
    font-size: 1.1rem;
}
.loan-popup-body{
    padding: 1rem 1.25rem 1.5rem;
    display: grid;
    gap: 1rem;
}
.loan-popup-segment{
    background: var(--white-04);
    border: .0625rem solid var(--border);
    border-radius: .75rem;
    padding: 1rem;
}
.loan-popup-segment h4{
    margin: 0 0 .8rem;
    font-size: 1rem;
}
.loan-popup-segment dl{
    display: grid;
    grid-template-columns: 10rem 1fr;
    gap: .5rem 1rem;
}
.loan-popup-segment dt{
    color: var(--color);
    font-weight: 600;
}
.loan-popup-segment dd{
    margin: 0;
    color: var(--hover);
}
.btn-secondary{
    background: var(--header);
    color: var(--color);
    border: .0625rem solid var(--border);
}
.btn-secondary:hover,
.btn-primary:hover,
.btn-danger:hover{
    opacity: .9;
}
.btn{
    border: none;
    border-radius: .5rem;
    padding: .5rem 1rem;
    cursor: pointer;
}
.btn-primary{
    background: var(--primary);
    color: var(--white);
}
.btn-danger{
    background: var(--danger);
    color: var(--white);
}
.cardlist .card{
    background: var(--header);
    border: .1rem solid var(--border);
    display: flex;
    align-items: center;
    padding: 1rem;
    border-radius: .5rem;
    color: var(--color);
    gap: 1rem;
}
.cardlist .card:first-child{
    grid-column: 2 span;
}
.cardlist .card .data{
    flex: 1;
}
.cardlist .card .data h3{
    font-weight: 400;
    color: var(--hover);
    font-size: 1.3rem;
}
.cardlist .card svg{
    width: 3.2rem;
    aspect-ratio: 1/1;
    fill: currentColor;
}
/* dataset & formdata*/
.dataset{
    display: flex;
    flex-direction: column;
    height: 100%;
}
.formdata{
    display: block;
    padding: 1.5rem;
}
.formdata h3{
    font-size: 1.3rem;
    font-weight: 500;
    padding: 0rem 0 1rem 0;
}
/* SFMenu */
.sfmenu{
    display: flex;
    align-items: center;
    padding: .8rem;
}
.sfmenu .filter{
    margin-left: auto;
}
.sfmenu .filter ul{
    display: flex;
    gap: .5rem;
}
.sfmenu .filter li{
    list-style: none;
}
.sfmenu .filter li.active a,
.sfmenu .filter li:hover a{
    color: var(--primary);
    background: var(--header);
}
.sfmenu .filter ul a{
    display: flex;
    transition: all .3s ease-in-out;
    cursor: pointer;
    border-radius: .5rem;
    padding: .4rem .6rem;
    text-decoration: none;
    color: var(--color);
}
/* listdata */
.listdata{
    display: flex;
    flex-direction: column;
    flex: 1; 
}
.listdata .item{
    display: flex;
    padding: .8rem 1.1rem;
    transition: all .3s ease-in-out;;
}
.listdata .item .details{
    flex: 1;
}
.listdata .item .payment{
    justify-content: center;
    display: flex;
    text-align: right;
    flex-direction: column;
    transition: all .3s ease-in-out;
}
.listdata .item:nth-child(odd){
    background: var(--header);
}
.listdata .item:hover{
    background: var(--hoverbg);
    cursor: pointer;
}
.listdata .item b,
.listdata .item h3{
    font-weight: 500;
}
.listdata .item h3{
    color: var(--primary);
}
.listdata .item span,
.listdata .item small{
    display: block;
    color: var(--color);
}
/* Upload Insert */
.upload{
    display: flex;
    gap: .5rem;
    border-radius: .3rem;   
}
.upload .avatar{
    width: 3.5rem;
    height: 3.5rem;
    overflow: hidden;
    border-radius: 50%;
}
.upload .insert{
    width: calc(100% - 4.5rem);
}
.upload .avatar img{
    width: 100%;
    height: 100%;
    object-fit: cover;
}
/* insert */
.insert.hidden{
    display: none;
}
.insert input[type="file"]::file-selector-button{
    display: none;
}
.insert{
    display: flex;
    padding: .5rem .8rem;
    flex-direction: column;
    position: relative;
    gap: .2rem;
    margin-bottom: 1rem;
    border-radius: .3rem;
    border: .1rem solid var(--border);
}
.insert label{
    font-size: .9rem;
    transition: all .3s ease-in-out;
}
.insert .flexbox{
    display: flex;
    align-items: stretch;
    gap: .5rem;
    justify-content: space-evenly;
}
.insert .flexbox select,
.insert .flexbox .predict{ 
    flex-grow: 1;
}
.insert .predict{
    padding: 1rem;
    margin: .5rem 0;
    border-radius: .3rem;
    position: relative;
    background: var(--header);  
    border: .1rem solid var(--border)  
}
.insert .predict svg{
    width: 1.5rem;
    height: 1.5rem;
}
.insert .predict.sp{
    display: flex;
    gap: .5rem;
    padding: .6rem;
    overflow: hidden;
    align-items: center;
}
.insert input[type="radio"]{
    position: absolute;
    width: 100%;
    height: 100%;
    left: 0;
    right: 0;
    top: 0;
    opacity: 0;
    bottom: 0;
}
.insert h4{
    font-size: 1.2rem;
    font-weight: 500;
}
.insert .predict input,
.insert .predict h3{
    margin: .3rem 0;
}
.insert textarea,
.insert input{
    width: 100%;
    font-size: 1rem;
    transition: all .3s ease-in-out;
    border: none;
    background: none;
    outline: none;
}
/* Form */
.authForm{
    margin: 2rem auto auto;
    width: 22rem;
    border-radius: .3rem;
    border: .1rem solid var(--border);
    padding: 1rem;
    position:relative;
}
.authForm .authOutput{
    position: absolute;
    background: var(--hoverbg);
    border: .1rem solid var(--border);
    box-shadow: 0 0 .3rem solid var(--box-shadow);
    display: none;
    padding: 1rem;
    left: 0;
    right: 0;
    top: calc(100% + 1rem);
}
.authForm .authOutput.show{
    display: flex;
}
.authForm h1{
    font-size: 1.8rem;
    font-weight: 500;
    padding: 0 0 1rem 0;
    text-align: center;
}
.authForm button{
    width: 100%;
    padding: .8rem 1rem;
    border: none;
    background: var(--hoverbg);
    border-radius: .3rem;
    font-size: 1rem;
}
/* Search Popup — global search results */
.search-popup{
    display: none;
    position: absolute;
    left: 50%;
    top: calc(100% + .5rem);
    transform: translateX(-50%);
    width: min(32.5rem, calc(100vw - 2rem));
    max-height: 70vh;
    overflow-y: auto;
    background: var(--light);
    border: .1rem solid var(--border);
    border-radius: .5rem;
    box-shadow: 0 .5rem 2rem var(--shadow-xl);
    z-index: 1000;
}
.search-popup.open{
    display: block;
}
.search-popup .sp-section{
    padding: .75rem 1rem;
}
.search-popup .sp-section + .sp-section{
    border-top: .0625rem solid var(--border);
}
.search-popup .sp-header{
    font-size: .75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04rem;
    color: var(--color);
    margin-bottom: .5rem;
}
.search-popup .sp-item{
    display: flex;
    flex-direction: column;
    gap: .1rem;
    padding: .5rem .6rem;
    border-radius: .35rem;
    text-decoration: none;
    cursor: pointer;
    color: var(--hover);
    transition: background .15s ease;
}
.search-popup .sp-item:hover{
    background: var(--hoverbg);
}
.search-popup .sp-item .sp-label{
    font-size: .9rem;
    font-weight: 500;
}
.search-popup .sp-item .sp-sub{
    font-size: .78rem;
    color: var(--color);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.search-popup .sp-empty{
    padding: 1.5rem 1rem;
    text-align: center;
    color: var(--color);
    font-size: .9rem;
}
.search-popup .sp-footer{
    padding: .6rem 1rem;
    text-align: center;
    font-size: .8rem;
    color: var(--color);
    border-top: .0625rem solid var(--border);
    background: var(--header);
}

/* Person items inside global search popup — same layout as other results */
.search-popup .sp-item.sp-person{
    cursor: pointer;
    color: var(--hover);
}

/* Global Person Popup */
.person-popup{
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.5rem;
}
.person-popup-overlay{
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,.45);
}
.person-popup-card{
    position: relative;
    background: var(--light);
    border-radius: .75rem;
    width: min(100%, 420px);
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: 0 1.25rem 3.125rem var(--shadow-xl);
}
.person-popup-close{
    position: absolute;
    top: .6rem;
    right: .8rem;
    background: none;
    border: none;
    font-size: 1.6rem;
    line-height: 1;
    color: var(--color);
    cursor: pointer;
    z-index: 2;
}
.person-popup-close:hover{
    color: var(--hover);
}
.person-popup-loading{
    padding: 3rem 1.5rem;
    text-align: center;
    color: var(--color);
}
.person-popup-error{
    padding: 2rem 1.5rem;
    text-align: center;
    color: var(--danger);
}
.person-popup-header{
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.5rem 1.5rem 1rem;
    border-bottom: .0625rem solid var(--border);
}
.person-popup-header .person-avatar{
    width: 4rem;
    height: 4rem;
    flex: 0 0 4rem;
    border-radius: 50%;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--primary-soft-bg);
}
.person-popup-header .person-avatar img{
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.person-popup-header .person-avatar .person-avatar-initial{
    font-size: 1.6rem;
    font-weight: 600;
    color: var(--primary);
    text-transform: uppercase;
}
.person-popup-header .person-popup-id h3{
    font-size: 1.2rem;
    font-weight: 500;
    color: var(--hover);
    margin: 0;
}
.person-popup-header .person-popup-type{
    font-size: .8rem;
    color: var(--color);
}
.person-popup-details{
    padding: 1rem 1.5rem 1.5rem;
    display: grid;
    gap: .5rem;
}
.person-row{
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: .4rem 0;
    border-bottom: .0625rem solid var(--border-soft);
}
.person-row:last-child{
    border-bottom: none;
}
.person-row .person-row-label{
    color: var(--color);
    font-size: .85rem;
    flex: 0 0 40%;
}
.person-row .person-row-value{
    color: var(--hover);
    font-size: .85rem;
    text-align: right;
    word-break: break-word;
}

/* Dropdown - Notifikasi */
header .menu .dropdown{
    position: absolute;
    right: 0;
    display: none;
    top: calc(100% + 1rem);
    background: var(--light);
    border-radius: .3rem;
    overflow: hidden;
    box-shadow: 0 0 .3rem 0 var(--box-shadow);
    width: 18rem;
    z-index: 1000;
}
header .menu .dropdown.open{
    display: block;
}
header .menu .dropdown .dbox{
    overflow: auto;
    height: 20rem;
    display: flex;
    flex-direction: column;
}
header .menu .dropdown .dtitle{
    padding: .6rem 1rem;
    font-size: 1rem;
    font-weight: 400;
    background: var(--header);
    border-bottom: .1rem solid  var(--border);
}
header .menu .dropdown button{
    display: flex;
    gap: .5rem;
    text-align: left;
    align-items: flex-start;
    line-height: 1.1;
    padding: .8rem;
    font-size: .9rem;
    background: none;
    outline: none;
    border: none;
    cursor: pointer;
    width: 100%;
}
header .menu .dropdown button .detail{
    width: calc(100% - 1.5rem);
}
header .menu .dropdown button svg{
    aspect-ratio: 1/1;
    width: 1.5rem;
}
header .menu .dropdown button:hover{
    background: var(--hoverbg)
}
header .menu .dropdown button b{
    font-weight: 500;
}
/* Datepicker for custom inputs */
.custom-datepicker input[type="text"]{
    cursor: pointer;
}
.datepicker-popover.hidden{ 
    display:none;
}
.custom-datepicker .datepicker-popover{
    display:block;
}
.custom-dropdown {
    position: relative;
    font-family: 'Segoe UI', Arial, sans-serif;
    display: block;
    user-select: none;
}
.custom-dropdown  svg{
    width: 2rem;
    height: 2rem;
}
.custom-dropdown .dropdown-trigger {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding:  0;
    border-radius: 0.5rem;
    cursor: pointer;
    font-size: 0.9375rem;
    color: var(--hover);
    transition: all 0.3s ease;
}
.custom-dropdown .dropdown-menu {
    position: absolute;
    top: calc(100% + 1rem);
    left: 0;
    right: 0;
    background-color: var(--header);
    border-radius: 0.5rem;
    border: 0.0625rem solid var(--border);
    padding: 0;
    margin: 0 -.8rem;
    list-style: none;
    max-height: 15.625rem;
    overflow-y: auto;
    z-index: 999;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-0.625rem);
    transition: all 0.3s ease;
}
.custom-dropdown .dropdown-trigger .dropdown-text {
    font-weight: 500;
}
.custom-dropdown .dropdown-trigger .dropdown-arrow {
    font-size: 0.6875rem;
    color: var(--color);
    transition: transform 0.3s ease;
}
.custom-dropdown .dropdown-menu .dropdown-item {
    padding: 0.75rem 1rem;
    font-size: 0.9375rem;
    color: var(--color);
    cursor: pointer;
    transition: background-color 0.2s ease;
}
.custom-dropdown .dropdown-trigger:hover {
    border-color: var(--hover);
}
.custom-dropdown .dropdown-menu .dropdown-item:hover {
    color: var(--hover);
}
.custom-dropdown .dropdown-menu .dropdown-item.selected {
    color: var(--hover);
    font-weight: 600;
}
.custom-dropdown .dropdown-menu .dropdown-item.placeholder {
    color: var(--placeholder);
}
.custom-dropdown.open .dropdown-trigger .dropdown-arrow {
    transform: rotate(180deg); 
}
.custom-dropdown.open .dropdown-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}
/* Action */
.action{
    display: flex;
    gap: 1rem;
}
.form button,
.action button{
    font-size: 1rem;
    padding: .7rem;
    border-radius: .3rem;
    flex-grow: 1;
    border: transparent;
    cursor: pointer;
    transition: all .3s ease-in-out;
    background: var(--header);
    color: var(--color);
    box-shadow: 0 0 .3rem 0 var(--box-shadow);
}
.form button:hover,
.action button:hover{
    color: var(--hover);
    font-weight: 600;
}
.card{
    background: var(--light);
    border-radius: 1rem;
    padding: 1.5rem;
    box-shadow: 0 .25rem 1.25rem var(--shadow-light);
}
.card-header{
    display:flex;
    justify-content:space-between;
    align-items:center;
    margin-bottom:1.25rem;
}
.actions{
    display:flex;
    gap:.625rem;
}
.actions input{
    padding:.625rem .875rem;
    border:.0625rem solid var(--border-input);
    border-radius:.625rem;
}
.actions button{
    background:var(--blue-600);
    color:var(--white);
    border:none;
    border-radius:.625rem;
    padding:.625rem 1.125rem;
    cursor:pointer;
}
table{
    width:100%;
    border-collapse:separate;
    border-spacing:0;
    background: var(--light);
    overflow:hidden;
}
table thead{
    background: var(--header);
}
table  thead tr{
    height: 3rem;
}
table th{
    padding: .5rem 1rem;
    text-align:left;
    font-size:1rem;
    font-weight:600;
    color:var(--hover);
    border-bottom:.0625rem solid var(--border-table);
    white-space:nowrap;
}
table tbody tr{
    transition:background .2s ease;
}
table  tbody tr:hover{
    background:var(--surface-hover);
}
table td{
    padding: .8rem 1rem;
    font-size: 1rem;
    color: var(--color);
    border-bottom:.0625rem solid var(--border);
}
table  tbody tr:last-child td{
    border-bottom:none;
}
table td b{
    font-weight: 500;
    display: block;
}
table td:last-child{
    white-space:nowrap;
}
table td button{
    font-size: 1rem;
    border-radius: .3rem;
    cursor: pointer;
    flex-grow: 1;
    border: transparent;
}
table td button svg{
    width: 1.5rem;
    aspect-ratio: 1/1;
}
/* Laporan */
.laporan {
    width: calc(100% - 3rem);
    margin: 1rem auto;
    background-color: transparent;
}
.laporan .judul-kategori {
    font-size: 0.875rem;
    font-weight: 700;
    color: var(--hover);
    margin-bottom: 0.75rem;
    letter-spacing: 0.031rem;
}
.laporan .kategori {
    margin-bottom: 2.188rem;
}
.laporan .box-konten {
    background-color: var(--header);
    border: 0.063rem solid var(--border);
    border-radius: 0.5rem;
    padding: 0.625rem 1.5rem;
}
.laporan .rincian {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.875rem 0;
    font-size: 0.875rem;
    color: var(--color);
}
.laporan .rincian .nilai {
    font-weight: 500;
    color: var(--hover);
}
.laporan .pembatas {
    border: none;
    border-top: 0.063rem solid var(--border);
    margin: 0.25rem 0;
}
.laporan .total {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 0;
    font-size: 0.938rem;
    font-weight: 700;
}
.laporan .teks-primary {
    color: var(--primary);
}
.laporan .teks-danger {
    color: var(--danger);
}
.laporan .shu-container {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: 1.25rem;
    background: var(--header);
    border: .1rem solid var(--border);
    border-radius: .3rem;
    margin-top: 1.25rem;
}
.laporan .shu-info {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}
.laporan .shu-judul {
    font-size: 0.875rem;
    font-weight: 700;
    color: var(--hover);
}
.laporan .shu-sub {
    font-size: 0.75rem;
    color: var(--color);
}
.laporan .teks-danger-tebal {
    font-size: 1.5rem;
    font-weight: 800;
    color: var(--danger);
}
.analitik {
    display: flex;
    gap: 1.25rem;
    width: calc(100% - 2rem);
    margin: 1rem auto;
}
.analitik .cardData {
    flex: 1;
    background-color: var(--header);
    border: 0.063rem solid var(--border);
    border-radius: 1rem;
    padding: 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.analitik .cardData .card-title {
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--color);
    letter-spacing: 0.05rem;
}
.analitik .cardData .card-value {
    font-size: 1.625rem;
    font-weight: 700;
    letter-spacing: 0.025rem;
}
.analitik .cardData .card-subtitle {
    font-size: 0.813rem;
    color: var(--color);
}
.analitik .teks-danger {
    color: var(--danger);
}
.analitik .teks-warning {
    color: var(--warning);
}
.daftar-laporan {
    width: calc(100% - 2rem);
    margin: 0 auto;
    background-color: var(--light);
    border: 0.063rem solid var(--border);
    border-radius: 1rem;
    overflow: hidden;
}
.daftar-laporan .baris-header,
.daftar-laporan .baris-data {
    display: flex;
    align-items: center;
    padding: 1.125rem 1.5rem;
}
.daftar-laporan .baris-header {
    background-color: var(--header);
    border-bottom: 0.063rem solid var(--border);
}
.daftar-laporan .baris-header .kolom {
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--color);
    letter-spacing: 0.031rem;
}
/* === Table column distribution === */
.daftar-laporan .baris-header .kolom,
.daftar-laporan .baris-data .kolom {
    flex: 1;
    min-width: 0;
    padding: 0 0.5rem;
    word-break: break-word;
}
.daftar-laporan .baris-data .kolom:first-child,
.daftar-laporan .baris-header .kolom:first-child {
    padding-left: 0;
}
.daftar-laporan .baris-data .kolom:last-child,
.daftar-laporan .baris-header .kolom:last-child {
    padding-right: 0;
}
/* Right-align numeric columns */
.daftar-laporan .baris-data .kolom.teks-hijau,
.daftar-laporan .baris-data .kolom.teks-merah,
.daftar-laporan .baris-data .kolom.teks-danger,
.daftar-laporan .baris-data .kolom.teks-warning {
    text-align: right;
}
/* NPL specific column widths */
.daftar-laporan .kol-id {
    flex: 1.5;
}
.daftar-laporan .kol-tgl,
.daftar-laporan .kol-tempo {
    flex: 0.8;
}
.daftar-laporan .kol-pokok,
.daftar-laporan .kol-denda {
    flex: 1.2;
}
.daftar-laporan .baris-data {
    background-color: var(--light);
    transition: background-color 0.2s ease;
}
.daftar-laporan .baris-data:hover {
    background-color: var(--hoverbg);
}

.welcome{
    padding: 1rem;
}
.boxmaintenance{
    display: flex;
    gap: .8rem;
    padding: 1rem;
    flex-direction:column;
    border: .1rem solid var(--border);
}
.boxmaintenance h1{
    font-size: 1.5rem;
    padding: 1rem 0;
    font-weight: 500;
    color: var(--hover);
}
.boxmaintenance p{
    font-size: 1rem;
    color: var(--color);
    padding: 0 1rem;
}
.boxmaintenance button{
    padding: .5rem 1rem;
    border-radius: .3rem;
    width: 100%;
    border: none;
    background: var(--primary);
    color: var(--light);
    cursor: pointer;
}
.footer{
    padding: 1rem;
    text-align: center; 
}

