:root {--bg:#f5f7fb;--text:#1c2430;--card-bg:#ffffff;--card-border:#e3e8ef;--radius:18px;--shadow:0 4px 28px -10px rgba(32,41,53,.15),0 2px 6px -2px rgba(32,41,53,.1);--purple:#5e2bb8;--muted:#6b7280;--focus:#6d35d6;--danger:#c23622;--warn:#d97706;--green:#0b7d4d;--gradient-accent:linear-gradient(110deg,#6d35d6,#9f6bff);} 
body.modern{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,sans-serif;margin:0;line-height:1.45;-webkit-font-smoothing:antialiased;} 
.page-wrap, .container.fluid{max-width:1540px;margin:38px auto 80px;padding:0 34px;}
/* Wide variant for pages needing more table horizontal space */
.container.fluid.wide{max-width:1780px;}
.page-title{font-size:32px;margin:0 0 28px;font-weight:650;letter-spacing:.4px;position:relative;color:#101826;} .page-title:after{content:"";position:absolute;left:0;bottom:-10px;width:68px;height:4px;border-radius:4px;background:linear-gradient(90deg,var(--purple),rgba(94,43,184,.25));}
.toolbar{margin-bottom:18px;display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.btn{background:#fff;border:1px solid var(--card-border);padding:9px 18px;border-radius:12px;font-size:14px;cursor:pointer;line-height:1.1;display:inline-flex;align-items:center;gap:6px;box-shadow:0 2px 4px -2px rgba(0,0,0,.08);transition:background .25s,box-shadow .25s,transform .22s,border-color .25s,color .25s;text-decoration:none;color:#2f3945;font-weight:500;box-sizing:border-box;max-width:100%;} .btn:hover{background:#f2f5fa;transform:translateY(-2px);} .btn:active{transform:translateY(0);} .btn.primary{background:var(--gradient-accent);color:#fff;border:none;box-shadow:0 4px 18px -6px rgba(109,53,214,.5);} .btn.primary:hover{filter:brightness(1.05);} .btn.danger{background:#fee2e2;border-color:#fca5a5;color:#b91c1c;} .btn.danger:hover{background:#fecaca;}
.badge{display:inline-block;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:600;background:#eef2f7;color:#39424e;}
.card{background:var(--card-bg);border:1px solid var(--card-border);padding:30px 34px;border-radius:26px;box-shadow:var(--shadow);position:relative;overflow:hidden;} .card.tight{padding:18px 22px;border-radius:22px;}
.table-responsive{width:100%;overflow:auto;border-radius:18px;border:1px solid #e1e6ec;background:#fff;} table.table{width:100%;border-collapse:collapse;font-size:13px;} table.table thead th{background:#f0f3f8;color:#324052;font-weight:600;text-align:left;padding:12px 14px;font-size:12px;letter-spacing:.5px;border-bottom:1px solid #e1e6ec;position:sticky;top:0;z-index:2;} table.table tbody td{padding:10px 14px;border-bottom:1px solid #edf1f5;word-break:break-word;vertical-align:top;} table.table tbody tr:last-child td{border-bottom:none;} table.table tbody tr:hover{background:#f9fbfe;} th.sortable{cursor:pointer;user-select:none;} th.sortable.asc,th.sortable.desc{color:#222;} th.sortable.asc:after,th.sortable.desc:after{content:attr(data-sort);margin-left:4px;} 
.table-responsive{-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.table-responsive::-webkit-scrollbar{height:8px}
.table-responsive::-webkit-scrollbar-thumb{background:#cfd6df;border-radius:999px}
.pagination-wrap{display:flex;justify-content:space-between;align-items:center;margin-top:18px;flex-wrap:wrap;gap:14px;} .page-btn{background:#fff;border:1px solid #d9e0e7;padding:6px 12px;border-radius:10px;cursor:pointer;font-size:12px;min-width:38px;transition:background .25s,transform .22s;} .page-btn:hover{background:#f1f5f9;transform:translateY(-2px);} .page-btn.active{background:var(--purple);color:#fff;border-color:var(--purple);} .rows-per-page select{cursor:pointer;}
.alert{background:#eef3ff;border:1px solid #d5e3ff;padding:12px 16px;border-radius:14px;font-size:13px;color:#1a3e72;box-shadow:0 2px 6px -3px rgba(0,0,0,.08);} .alert.danger{background:#fff3f3;border-color:#f7d4d4;color:#872626;} .alert.subtle{background:#f5f8fa;border-color:#e2e8f0;color:#3a4756;}
input[type=text],input[type=search],input[type=number],input[type=password],input[type=file],select{background:#fff;border:1px solid #d4dae2;padding:10px 14px;border-radius:12px;font-size:14px;transition:border-color .25s,box-shadow .25s;background-clip:padding-box;} input:focus,select:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px rgba(109,53,214,.25);} .search-input{flex:1;min-width:240px;}
/* Make file input height match .input and improve its button */
input[type=file]{padding:10px 12px;height:42px;display:block}
input[type=file]::file-selector-button{margin-right:10px;border:1px solid var(--card-border);background:#fff;color:#2f3945;padding:8px 12px;border-radius:10px;cursor:pointer;transition:background .2s, transform .2s, box-shadow .2s}
input[type=file]::file-selector-button:hover{background:#f2f5fa;transform:translateY(-1px);box-shadow:0 2px 6px rgba(0,0,0,.06)}
input[type=file]::file-selector-button:active{transform:translateY(0)}
/* Utility .input class ensures uniform shape for inputs & textarea */
.input{background:#fff;border:1px solid #d4dae2;padding:10px 14px;border-radius:12px;font-size:14px;line-height:1.35;font-family:inherit;width:100%;transition:border-color .25s,box-shadow .25s,background-color .25s;color:inherit;box-sizing:border-box;}
.input:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px rgba(109,53,214,.25);} 
.input::placeholder{color:#9aa2ae;opacity:1;}
textarea.input{min-height:110px;resize:vertical;}
.dark .input{background:#1a1f27;border-color:#2e3540;color:var(--text);} 
.dark .input:focus{border-color:var(--focus);box-shadow:0 0 0 3px rgba(159,107,255,.3);} 
.spacer-flex{flex:1 1 auto;}
/* File preview */
.file-thumb{height:36px;border-radius:6px;object-fit:cover;display:inline-block;vertical-align:middle}
.file-pill{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid #d9e0e7;border-radius:999px;padding:6px 10px;font-size:12px;box-shadow:0 1px 2px rgba(0,0,0,.06);}
.file-pill:hover{background:#f3f6fa}
.file-pill.pdf{border-color:#fecaca;color:#b91c1c;background:#fff5f5}
.file-pill.docx{border-color:#c7d2fe;color:#1d4ed8;background:#f5f8ff}
/* Segmented scroller for many links */
.seg{display:flex;gap:8px;background:#f3f5f9;border:1px solid #e1e6ec;padding:6px;border-radius:12px;overflow:auto;scrollbar-width:thin;max-width:100%;--seg-fg:#2f3945}
.seg::-webkit-scrollbar{height:8px}
.seg::-webkit-scrollbar-thumb{background:#cfd6df;border-radius:999px}
.seg-item{white-space:nowrap;padding:8px 12px;border-radius:10px;border:1px solid transparent;background:#fff;color:var(--seg-fg);font-size:13px;font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.06);display:inline-flex;align-items:center;gap:6px}
.seg-item:hover{background:#eef2f7}
.seg.scroll-x{overflow-x:auto;overflow-y:hidden}
/* Animations */ .fade-slide{opacity:0;transform:translateY(20px) scale(.985);animation:fadeSlide .7s cubic-bezier(.55,.12,.3,1) forwards;} @keyframes fadeSlide{0%{opacity:0;transform:translateY(28px) scale(.97);}55%{opacity:1;}100%{opacity:1;transform:translateY(0) scale(1);} }
/* Dark mode */ .dark{--bg:#12141a;--text:#e5e9f0;--card-bg:#1d222b;--card-border:#2a303a;--muted:#93a2b5;--purple:#9f6bff;--focus:#9f6bff;} .dark body.modern{background:var(--bg);color:var(--text);} .dark .page-title{color:var(--text);} .dark .card{background:linear-gradient(140deg,#1d222b,#181d24);} .dark table.table thead th{background:#1e2530;color:#d3dae3;border-color:#2b333d;} .dark table.table tbody td{border-color:#232b34;} .dark table.table tbody tr:hover{background:#1f2731;} .dark .table-responsive{background:#1d222b;border-color:#2a303a;} .dark .btn{background:#262e38;border-color:#303842;color:#edf2f7;} .dark .btn:hover{background:#313b46;} .dark .btn.primary{background:linear-gradient(110deg,#7c47e3,#b18dff);} .dark .alert{background:#1f2834;border-color:#2d3744;color:#d0d8e2;} .dark .alert.danger{background:#3a1b1b;border-color:#562727;color:#ffb4b4;} input[type=text],input[type=search],input[type=number],input[type=password],input[type=file],select{color:inherit;} .dark input[type=text],.dark input[type=search],.dark input[type=number],.dark input[type=password],.dark input[type=file],.dark select{background:#1a1f27;border-color:#2e3540;} .dark input:focus,.dark select:focus{box-shadow:0 0 0 3px rgba(159,107,255,.3);} .dark .page-btn{background:#232a33;border-color:#303842;color:#e0e6ed;} .dark .page-btn.active{background:var(--purple);border-color:var(--purple);} .dark .badge{background:#2a313c;color:#d1d9e2;}
/* Accessible focus ring */
.seg-item:focus,.page-btn:focus,.btn:focus{outline:2px solid var(--focus);outline-offset:2px;}
.page-btn{position:relative;}
.page-btn:focus-visible{outline:2px solid var(--focus);}
.seg-item{position:relative;}
.seg-item:focus-visible{outline:2px solid var(--focus);} 
@media (max-width:720px){.page-title{font-size:26px;}.toolbar{flex-direction:column;align-items:stretch;} .btn{width:100%;justify-content:center;} .table-responsive{border-radius:14px;} .card{padding:26px 22px;border-radius:22px;}}

/* Extra mobile comfort tweaks */
@media (max-width:560px){
	.page-wrap, .container.fluid{padding:0 14px;margin:16px auto 40px}
	table.table{font-size:12px}
	table.table thead th{padding:10px 12px;font-size:11px}
	table.table tbody td{padding:8px 12px}
	.pagination-wrap{gap:10px}
	.toolbar .btn, .toolbar .input, .toolbar input, .toolbar select, .toolbar .form-control{width:100%}
	table.table tbody td .btn{padding:6px 10px;font-size:12px;border-radius:8px}
	table.table tbody td .btn + .btn{margin-left:6px}
}

/* Utility: show/hide for breakpoints */
.show-mobile{display:none}
@media (max-width:720px){ .hide-mobile{display:none!important} .show-mobile{display:initial!important} }
@media (min-width:721px){ .hide-desktop{display:none!important} }

/* Text wrapping helpers */
.nowrap{white-space:nowrap}
.wrap{white-space:normal}

/* -------- Forms Modern -------- */
.form-card{background:var(--card-bg);border:1px solid var(--card-border);padding:36px 40px;border-radius:30px;box-shadow:var(--shadow);max-width:1000px;margin:0 auto 56px;position:relative;overflow:hidden;}
.form-title{font-size:28px;margin:0 0 24px;font-weight:600;letter-spacing:.3px;position:relative;color:#101826;}
.form-title:after{content:"";position:absolute;left:0;bottom:-10px;width:60px;height:4px;border-radius:4px;background:linear-gradient(90deg,var(--purple),rgba(94,43,184,.25));}
.form-desc{font-size:14px;color:var(--muted);margin:0 0 26px;max-width:680px;line-height:1.5;}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:26px 32px;margin-bottom:10px;}
.field{display:flex;flex-direction:column;gap:8px;position:relative;}
.field label{font-size:13px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:#4a5563;}
.field small.helper{font-size:12px;color:var(--muted);line-height:1.4;}
.field input[type=text],.field input[type=number],.field input[type=file],.field select{width:100%;}
.field-error{font-size:12px;color:var(--danger);margin-top:4px;font-weight:500;}
.form-actions{display:flex;gap:14px;margin-top:34px;flex-wrap:wrap;}
.form-actions .spacer{flex:1 1 auto;}
.divider-soft{height:1px;background:linear-gradient(90deg,rgba(0,0,0,.08),rgba(0,0,0,0));margin:34px 0 8px;border:0;}
.section-legend{font-size:15px;font-weight:600;margin:0 0 18px;letter-spacing:.4px;color:#1a2430;display:flex;align-items:center;gap:10px;}
.inline-badges{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 0;}
.chip{background:#eef2f7;color:#2d3946;padding:6px 12px;border-radius:999px;font-size:12px;font-weight:500;display:inline-flex;align-items:center;gap:6px;}
.chip.danger{background:#fee2e2;color:#b91c1c;}
.chip.success{background:#dcfce7;color:#166534;}
/* Status badges */
.status-badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.3px;padding:4px 10px;border-radius:999px;line-height:1.1;background:#eef2f7;color:#39424e;white-space:nowrap;}
.status-badge svg{width:14px;height:14px;stroke-width:1.8}
.status-pending{background:#fef9c3;color:#854d0e;}
.status-approved,.status-complete{background:#dcfce7;color:#166534;}
.status-rejected{background:#fee2e2;color:#b91c1c;}
.status-draft{background:#e0f2fe;color:#075985;}
.dark .status-badge{background:#2a313c;color:#d1d9e2;}
.dark .status-pending{background:#3a341b;color:#f6e0a2;}
.dark .status-approved,.dark .status-complete{background:#143524;color:#5de39d;}
.dark .status-rejected{background:#3a1b1b;color:#ffb4b4;}
.dark .status-draft{background:#133240;color:#7bd4f5;}
/* Focus ring unify for fields inside .form-card */
.form-card input[type=text],.form-card input[type=search],.form-card input[type=number],.form-card input[type=password],.form-card input[type=file],.form-card select{background:#fff;}
.form-card input:focus,.form-card select:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px rgba(109,53,214,.25);} 

/* Subtle appear animation */
.form-card.appear{opacity:0;transform:translateY(26px) scale(.985);animation:formAppear .65s cubic-bezier(.55,.12,.3,1) .05s forwards;}
@keyframes formAppear{0%{opacity:0;transform:translateY(32px) scale(.97);}60%{opacity:1;}100%{opacity:1;transform:translateY(0) scale(1);}}

/* Dark mode overrides for forms */
.dark .form-card{background:linear-gradient(140deg,#1d222b,#181d24);border-color:#2a303a;}
.dark .form-title{color:var(--text);} .dark .form-title:after{background:linear-gradient(90deg,var(--purple),rgba(159,107,255,.25));}
.dark .field label{color:#c4ced8;}
.dark .chip{background:#2a313c;color:#d1d9e2;} .dark .chip.danger{background:#3a1b1b;color:#ffb4b4;} .dark .chip.success{background:#143524;color:#5de39d;}
.dark .divider-soft{background:linear-gradient(90deg,rgba(255,255,255,.08),rgba(255,255,255,0));}
.dark .field small.helper{color:#93a2b5;}

@media (max-width:860px){
	.form-card{padding:30px 28px;border-radius:26px;}
	.form-grid{gap:22px 26px;}
	.form-title{font-size:24px;}
}
@media (max-width:520px){
	.form-grid{grid-template-columns:1fr;}
	.form-actions{flex-direction:column;}
	.form-actions .btn{width:100%;justify-content:center;}
}

/* ---- Auth (Login/Register) Modern ---- */
/* Removed incorrect selector .auth-bg body (expects an ancestor with .auth-bg).
	Auth-specific vibrant gradient now supplied by auth.css (body.auth-bg). */
.auth-layout{max-width:980px;margin:60px auto 80px;padding:0 20px;display:flex;flex-direction:column;align-items:center;gap:20px;}
.auth-ornaments{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:-1}
.auth-ornaments .orb{position:absolute;filter:blur(40px);opacity:.35;border-radius:999px}
.auth-ornaments .orb-1{width:380px;height:380px;background:radial-gradient(closest-side, #a78bfa, rgba(167,139,250,.1));left:-80px;top:-80px}
.auth-ornaments .orb-2{width:300px;height:300px;background:radial-gradient(closest-side, #60a5fa, rgba(96,165,250,.08));right:-60px;top:80px}
.auth-ornaments .orb-3{width:260px;height:260px;background:radial-gradient(closest-side, #34d399, rgba(52,211,153,.08));left:50%;bottom:-80px;transform:translateX(-50%)}
.brand{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;}
.brand-title{font-size:28px;margin:0;color:#0f172a;letter-spacing:.3px;text-shadow:0 1px 0 rgba(255,255,255,.6);} 
.brand-subtitle{margin:0;color:#64748b;font-size:14px;}
.brand-avatar{width:70px;height:70px;border-radius:16px;background:linear-gradient(145deg,#ffffff,#f1f5f9);box-shadow:0 10px 30px rgba(15,23,42,.08), inset 0 0 0 1px #e2e8f0;display:flex;align-items:center;justify-content:center}
.avatar-logo{max-width:48px;max-height:48px}
.auth-card{width:100%;max-width:760px;background:rgba(255,255,255,.9);backdrop-filter:saturate(1.2) blur(8px);border:1px solid rgba(226,232,240,.8);border-radius:22px;box-shadow:0 12px 40px rgba(15,23,42,.12);padding:22px 24px;}
.auth-card-header{display:flex;justify-content:center;margin-bottom:8px}
.welcome-title{margin:0;font-size:20px;font-weight:700;letter-spacing:.5px;background:linear-gradient(90deg,var(--purple),#a78bfa);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;}
.segmented{display:flex;gap:8px;justify-content:center;margin:8px 0 14px;flex-wrap:wrap}
.seg-item{padding:9px 14px;border:1px solid #e2e8f0;border-radius:999px;font-size:13px;background:#fff;color:#334155;font-weight:600;transition:transform .18s, box-shadow .18s}
.seg-item:hover{transform:translateY(-1px);box-shadow:0 6px 14px -10px rgba(15,23,42,.25)}
.seg-item.active{background:var(--purple);color:#fff;border-color:var(--purple);box-shadow:0 8px 18px -8px rgba(94,43,184,.45)}
.form.login-form{display:flex;flex-direction:column;gap:12px;margin-top:10px}
.field-label{font-size:12px;font-weight:700;color:#475569;letter-spacing:.4px;text-transform:uppercase}
.password-field{display:flex;gap:8px}
.btn-plain{border:1px dashed transparent;background:transparent;color:#64748b;padding:0 8px;border-radius:8px;cursor:pointer}
.btn-plain:hover{color:#334155}
.remember{display:flex;align-items:center;gap:8px;color:#475569;font-size:13px}
.form-aux{display:flex;justify-content:space-between;align-items:center}
.form-aux .links{display:flex;gap:12px}
.btn-block{width:100%;justify-content:center}
.auth-footer{font-size:12px;color:#94a3b8;margin-top:10px}
.link{color:#2563eb;text-decoration:none}
.link:hover{text-decoration:underline}
.auth-bg .page-wrap{max-width:none}

.dark .auth-card{background:linear-gradient(140deg,#1d222b,#181d24);border-color:#2a303a;}
.dark .brand-title{color:#e2e8f0}
.dark .brand-subtitle{color:#93a2b5}

@media (max-width:640px){
  .auth-layout{margin-top:34px}
  .auth-card{padding:18px}
}

/* --- Global Table Action Column (standardized) --------------------------- */
/* Apply to any listing table: add class="col-actions" to the <th> Aksi header
	 and wrap buttons inside <td class="actions-cell"><div class="actions-inline">... */
th.col-actions{width:170px}
td.actions-cell{vertical-align:middle}
/* Force action buttons in one horizontal line; hide overflow if too many */
.actions-inline{display:inline-flex;align-items:center;gap:6px;flex-wrap:nowrap;white-space:nowrap}
.actions-inline .btn{margin:0;padding:6px 12px;font-size:12px;line-height:1.15;border-radius:8px;white-space:nowrap}
/* Compact variant when space tighter */
.actions-inline.tight .btn{padding:5px 10px;font-size:11px}
@media (max-width:560px){
	th.col-actions{width:150px}
	.actions-inline{gap:4px}
	.actions-inline .btn{padding:5px 10px;font-size:11px}
}
