:root{
  --primary:#0f4c81;
  --primary2:#0ea5c6;
  --dark:#0a2f55;
  --bg:#eaf6ff;
  --card:rgba(255,255,255,.86);
  --line:#dce8f2;
  --text:#263447;
  --muted:#6b778c;
  --green:#198754;
  --orange:#d97706;
  --red:#d93025;
  --blue:#0b76bd;
  --shadow:0 20px 45px rgba(15,76,129,.12);
}
*{box-sizing:border-box}
body{margin:0;font-family:"Segoe UI",Arial,sans-serif;color:var(--text);background:linear-gradient(135deg,#edf9ff,#f8fbff);min-height:100vh;overflow-x:hidden}
.hidden{display:none!important}
.bg-orb{position:fixed;border-radius:50%;filter:blur(18px);opacity:.35;z-index:-1;animation:float 8s ease-in-out infinite alternate}
.orb-a{width:360px;height:360px;background:#60d8ff;top:60px;left:140px}.orb-b{width:420px;height:420px;background:#7dd3fc;right:-80px;top:240px;animation-delay:1s}
@keyframes float{from{transform:translateY(0)}to{transform:translateY(-25px)}}
.fade-up{animation:fadeUp .35s ease both}@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:100%;max-width:430px;background:var(--card);backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.8);border-radius:28px;padding:34px;box-shadow:var(--shadow)}
.logo-box,.logo-mini{display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,var(--primary),var(--primary2));font-weight:900;box-shadow:0 15px 35px rgba(14,165,198,.28)}.logo-box{width:64px;height:64px;border-radius:18px;margin-bottom:16px}.logo-mini{width:52px;height:52px;border-radius:16px;flex:0 0 auto}
h1{margin:0;color:var(--dark);font-size:40px} .login-card p,.topbar p{font-weight:800;margin:6px 0 2px}.login-card small,.topbar small,.panel-sub{color:var(--muted)}
label{display:block;font-size:13px;font-weight:800;margin:14px 0 7px;color:#344256}input,select,textarea{width:100%;padding:13px 14px;border:1px solid #ccddeb;border-radius:14px;outline:none;background:rgba(255,255,255,.92);font-size:14px;transition:.22s}input:focus,select:focus,textarea:focus{border-color:#29b6d3;box-shadow:0 0 0 4px rgba(41,182,211,.14)}
button{border:0;border-radius:14px;background:linear-gradient(135deg,var(--primary),var(--primary2));color:white;font-weight:900;padding:13px 18px;cursor:pointer;transition:.22s;box-shadow:0 14px 28px rgba(15,76,129,.16)}button:hover{transform:translateY(-2px);box-shadow:0 18px 32px rgba(15,76,129,.22)}button:disabled{opacity:.65;cursor:not-allowed;transform:none}.btn-danger{background:linear-gradient(135deg,#df382e,#ff675f)}.btn-soft{background:#eef6fc;color:var(--dark);box-shadow:none}.btn-green{background:linear-gradient(135deg,#17854d,#28b66d)}.btn-orange{background:linear-gradient(135deg,#d97706,#f59e0b)}.btn-red{background:linear-gradient(135deg,#c92d24,#f05c52)}.btn-mini{padding:9px 11px;border-radius:10px;font-size:12px;margin-right:6px;margin-top:5px}
.msg{margin-top:12px;color:#3d4b5f;font-size:14px}.app-page{padding:24px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:14px;background:var(--card);border:1px solid rgba(255,255,255,.85);backdrop-filter:blur(18px);border-radius:28px;padding:22px 24px;box-shadow:var(--shadow)}.topbar-left{display:flex;align-items:center;gap:15px}.topbar h2{margin:0;color:var(--dark);font-size:30px}
.menu-nav{display:flex;gap:12px;flex-wrap:wrap;margin:24px 0}.menu-nav button{background:rgba(255,255,255,.75);color:var(--dark);box-shadow:none;border:1px solid #d7e5ef}.menu-nav button.active{background:linear-gradient(135deg,var(--primary),var(--primary2));color:white;box-shadow:0 15px 26px rgba(15,76,129,.18)}
.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.summary-card{background:var(--card);border:1px solid rgba(255,255,255,.88);border-radius:22px;padding:19px;box-shadow:var(--shadow);position:relative;overflow:hidden}.summary-card:after{content:"";position:absolute;width:95px;height:95px;border-radius:50%;right:-25px;top:-25px;background:rgba(14,165,198,.12)}.summary-card span{display:block;color:var(--muted);font-size:13px;font-weight:800}.summary-card b{display:block;margin-top:8px;color:var(--dark);font-size:22px}
.panel{background:var(--card);border:1px solid rgba(255,255,255,.88);backdrop-filter:blur(18px);border-radius:24px;padding:22px;margin-bottom:20px;box-shadow:var(--shadow)}.panel h3{margin:0 0 6px;color:var(--dark);font-size:21px}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.field{min-width:0}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:16px;background:white}table{width:100%;border-collapse:collapse;min-width:980px}th,td{padding:13px 12px;border-bottom:1px solid #edf2f6;text-align:left;font-size:14px;vertical-align:middle}th{background:#f3f8fc;color:#334155;text-transform:uppercase;font-size:12px;letter-spacing:.4px}tbody tr:hover{background:#f9fdff}.empty{text-align:center;color:var(--muted);padding:25px!important}.badge{display:inline-block;padding:6px 10px;border-radius:99px;font-size:12px;font-weight:900;white-space:nowrap}.badge-blue{background:#e0f2fe;color:#0369a1}.badge-green{background:#dcfce7;color:#166534}.badge-red{background:#fee2e2;color:#991b1b}.badge-orange{background:#ffedd5;color:#9a3412}.badge-gray{background:#eef2f7;color:#475569}.progress-bar{height:9px;background:#e8f1f8;border-radius:99px;overflow:hidden}.progress-bar div{height:100%;background:linear-gradient(135deg,var(--primary),var(--primary2));border-radius:99px}.admin-row{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr auto;gap:12px;align-items:center;border:1px solid #e4eef6;border-radius:16px;background:white;padding:14px;margin-top:10px}.muted{color:var(--muted)}
.loading-overlay{position:fixed;inset:0;background:rgba(8,24,40,.38);backdrop-filter:blur(9px) saturate(1.05);z-index:9999;display:grid;place-items:center}.loader-card{width:min(340px,88vw);padding:30px 28px;background:rgba(255,255,255,.94);border:1px solid rgba(255,255,255,.92);border-radius:26px;box-shadow:0 28px 75px rgba(0,0,0,.20), inset 0 1px 0 rgba(255,255,255,.85);text-align:center;position:relative;overflow:hidden}.loader-card:before{content:"";position:absolute;inset:-80px;background:conic-gradient(from 180deg,transparent,rgba(14,165,198,.18),transparent,rgba(15,76,129,.10),transparent);animation:loaderAura 4s linear infinite}.loader-card:after{content:"";position:absolute;inset:1px;border-radius:25px;background:linear-gradient(135deg,rgba(255,255,255,.94),rgba(245,252,255,.90));z-index:0}.loader-card>*{position:relative;z-index:2}.loader-logo-stage{width:92px;height:92px;margin:0 auto 16px;position:relative;display:grid;place-items:center}.loader-logo-wrap{width:68px;height:68px;border-radius:22px;background:rgba(255,255,255,.96);display:grid;place-items:center;box-shadow:0 18px 36px rgba(15,76,129,.18);animation:loaderLogoBreath 1.25s ease-in-out infinite alternate}.loader-logo-wrap img{width:92%;height:92%;object-fit:contain;display:block;animation:loaderLogoFloat 1.1s ease-in-out infinite alternate}.loader-ring{position:absolute;inset:0;border-radius:50%;border:3px solid rgba(14,165,198,.18);border-top-color:#0ea5c6;border-right-color:#0f4c81;animation:loaderRingSpin 1.15s linear infinite}.loader-ring-2{inset:9px;border-width:2px;border-left-color:#f0b400;border-bottom-color:#0fa958;border-top-color:rgba(14,165,198,.15);animation-duration:1.75s;animation-direction:reverse;opacity:.78}.loader-card b{display:block;color:var(--dark);font-size:18px;letter-spacing:.2px}.loader-card small{display:block;color:var(--muted);margin-top:6px}@keyframes loaderRingSpin{to{transform:rotate(360deg)}}@keyframes loaderLogoBreath{from{transform:scale(.95);box-shadow:0 14px 28px rgba(15,76,129,.16)}to{transform:scale(1.04);box-shadow:0 22px 44px rgba(14,165,198,.24)}}@keyframes loaderLogoFloat{from{transform:translateY(2px)}to{transform:translateY(-3px)}}@keyframes loaderAura{to{transform:rotate(360deg)}}
.modal-backdrop{position:fixed;inset:0;background:rgba(12,31,50,.45);backdrop-filter:blur(8px);z-index:9000;display:grid;place-items:center;padding:20px}.modal-card{width:min(920px,96vw);background:rgba(255,255,255,.96);border-radius:24px;padding:22px;box-shadow:0 25px 70px rgba(0,0,0,.22)}.modal-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}.modal-head h3{margin:0;color:var(--dark)}.modal-head p{margin:5px 0 0;color:var(--muted)}
@media(max-width:1000px){.summary-grid{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:repeat(2,1fr)}.admin-row{grid-template-columns:1fr}}@media(max-width:650px){.app-page{padding:14px}.topbar{align-items:flex-start;flex-direction:column}.summary-grid,.form-grid{grid-template-columns:1fr}.topbar h2{font-size:25px}table{min-width:900px}}

.readonly-total{background:#eef7ff!important;font-weight:900;color:var(--dark);cursor:not-allowed}
input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{appearance:none;-webkit-appearance:none;margin:0}
input[type=number]{appearance:textfield;-moz-appearance:textfield}

textarea {
  width: 100%;
  padding: 13px 14px;
  border: 1px solid #d7dee8;
  border-radius: 13px;
  font-size: 14px;
  font-family: inherit;
  background: rgba(255,255,255,.92);
  outline: none;
  resize: vertical;
}
textarea:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 4px rgba(25,167,206,.14);
}
.field.full {
  grid-column: 1 / -1;
}
.note-cell {
  max-width: 260px;
  white-space: normal;
  line-height: 1.45;
  color: #334155;
}
.toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:end;margin:14px 0}.toolbar .field{min-width:180px;flex:1}.toolbar .field.small{max-width:220px}.table-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap}.pager{display:flex;gap:8px;align-items:center}.pager button{padding:9px 12px;border-radius:10px}.btn-refresh{background:linear-gradient(135deg,#0f4c81,#0ea5c6)}.topbar-actions{display:flex;gap:10px;align-items:center}.reason-box{margin-top:6px;padding:9px 10px;border-radius:12px;background:#fff7ed;color:#9a3412;border:1px solid #fed7aa;font-size:12px;line-height:1.45}.history-box{margin-top:6px;padding:9px 10px;border-radius:12px;background:#eef6ff;color:#0a2f55;border:1px solid #bfdbfe;font-size:12px;line-height:1.45}.doc-upload-row{display:grid;grid-template-columns:1fr 1.4fr auto;gap:12px;align-items:end;margin-top:10px;padding:12px;border:1px solid #e4eef6;border-radius:16px;background:rgba(255,255,255,.65)}.admin-note-input{min-width:200px}.nowrap{white-space:nowrap}.filter-card{background:rgba(255,255,255,.68);border:1px solid #e4eef6;border-radius:18px;padding:14px;margin:12px 0}@media(max-width:800px){.doc-upload-row{grid-template-columns:1fr}.topbar-actions{width:100%;justify-content:space-between}.toolbar .field{min-width:100%}}

.revision-box{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.revision-box input[type=file]{max-width:240px}.btn-green{background:#2e9b57!important}.btn-orange{background:#d98218!important}.note-cell{white-space:pre-wrap}
.lock-badge{display:inline-block;padding:7px 10px;border-radius:999px;background:#eef2f7;color:#475569;font-weight:800;font-size:12px;white-space:normal}.locked-panel{border:1px solid rgba(245,158,11,.35);background:rgba(255,251,235,.75)!important}

/* === SIPORBO v10 PREMIUM POLISH === */
body{
  background:
    radial-gradient(circle at 12% 10%, rgba(125,211,252,.45), transparent 24%),
    radial-gradient(circle at 88% 35%, rgba(14,165,198,.30), transparent 22%),
    radial-gradient(circle at 55% 0%, rgba(255,255,255,.85), transparent 32%),
    linear-gradient(135deg,#eefaff,#f7fbff 45%,#eaf7ff);
}
body:before{
  content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;
  background-image:linear-gradient(rgba(15,76,129,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(15,76,129,.035) 1px,transparent 1px);
  background-size:42px 42px;
  mask-image:radial-gradient(circle at center,black,transparent 78%);
}
.bg-orb{filter:blur(24px);opacity:.42;animation:float 7s ease-in-out infinite alternate, glowPulse 4.5s ease-in-out infinite alternate}
@keyframes glowPulse{from{opacity:.26;transform:scale(.98)}to{opacity:.48;transform:scale(1.04)}}
.topbar,.panel,.summary-card,.login-card{
  position:relative;overflow:hidden;
  border:1px solid rgba(255,255,255,.92);
  box-shadow:0 24px 60px rgba(15,76,129,.14), inset 0 1px 0 rgba(255,255,255,.9);
}
.topbar:before,.panel:before,.summary-card:before,.login-card:before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(115deg,transparent 0%,rgba(255,255,255,.0) 35%,rgba(255,255,255,.72) 48%,rgba(255,255,255,.0) 62%,transparent 100%);
  transform:translateX(-130%);
  animation:shineSweep 7s ease-in-out infinite;
}
@keyframes shineSweep{0%,45%{transform:translateX(-130%)}70%,100%{transform:translateX(130%)}}
.summary-card:hover,.panel:hover{box-shadow:0 28px 70px rgba(15,76,129,.18), inset 0 1px 0 rgba(255,255,255,.95)}
.logo-mini,.logo-box{position:relative;overflow:hidden;background:linear-gradient(135deg,#0a3a67,#0ea5c6 55%,#69d9ff)}
.logo-mini:after,.logo-box:after{content:"";position:absolute;width:60%;height:160%;background:rgba(255,255,255,.35);transform:rotate(25deg);left:-80%;animation:logoShine 3.8s ease-in-out infinite}
@keyframes logoShine{0%,50%{left:-80%}75%,100%{left:120%}}
.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}
.panel-head h3{margin:0 0 6px}.btn-toggle{white-space:nowrap;padding:10px 14px;border:1px solid #d7e5ef!important;background:rgba(255,255,255,.78)!important;color:var(--dark)!important}
.collapse-body{animation:fadeUp .25s ease both}.readonly-display{width:100%;padding:13px 14px;border:1px solid #e2edf6;border-radius:14px;background:linear-gradient(135deg,#f8fcff,#edf7ff);font-weight:900;color:var(--dark)}
.admin-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.premium-row{background:linear-gradient(135deg,rgba(255,255,255,.92),rgba(245,251,255,.86));position:relative;overflow:hidden}.premium-row:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:linear-gradient(180deg,var(--primary),var(--primary2))}.premium-row.editing{border-color:#7dd3fc;box-shadow:0 18px 45px rgba(14,165,198,.12)}
.admin-row{grid-template-columns:1.35fr 1fr 1fr .8fr auto}.lock-badge{background:linear-gradient(135deg,#f3f7fb,#e9f1f8);border:1px solid #dbe7f0;color:#42526b}.history-box b{color:#0a2f55}.btn-mini{box-shadow:0 10px 20px rgba(15,76,129,.12)}
@media(max-width:800px){.panel-head{flex-direction:column}.btn-toggle{width:100%}.admin-actions{justify-content:flex-start}.admin-row{grid-template-columns:1fr}}

/* =========================
   SIPORBO v11 Premium polish
   ========================= */
/* Shine dibuat elegan: muncul sekali saat load, tidak muter terus-terusan */
.topbar:before,.panel:before,.summary-card:before,.login-card:before{
  animation:shineOnce 1.45s cubic-bezier(.22,.8,.22,1) .25s 1 both !important;
  opacity:.55;
}
.logo-mini:after,.logo-box:after{
  animation:logoShineOnce 1.25s ease .35s 1 both !important;
}
@keyframes shineOnce{0%{transform:translateX(-135%)}100%{transform:translateX(135%)}}
@keyframes logoShineOnce{0%{left:-85%}100%{left:125%}}

body{
  background:
    radial-gradient(circle at 12% 20%, rgba(50,197,255,.26), transparent 26%),
    radial-gradient(circle at 93% 48%, rgba(125,211,252,.28), transparent 25%),
    linear-gradient(135deg,#edf9ff 0%,#f8fbff 46%,#e9f7ff 100%) !important;
}
body:before{
  content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;
  background-image:linear-gradient(rgba(15,76,129,.035) 1px, transparent 1px),linear-gradient(90deg, rgba(15,76,129,.035) 1px, transparent 1px);
  background-size:44px 44px;
  mask-image:linear-gradient(to bottom,rgba(0,0,0,.65),rgba(0,0,0,.18));
}

.login-page{position:relative;overflow:hidden}
.login-page:before{
  content:"";position:absolute;width:640px;height:640px;border-radius:50%;
  background:conic-gradient(from 170deg, rgba(14,165,198,.0), rgba(14,165,198,.30), rgba(15,76,129,.14), rgba(255,255,255,.0));
  filter:blur(2px);animation:slowRotate 16s linear infinite;z-index:-1;
}
@keyframes slowRotate{to{transform:rotate(360deg)}}
.login-card{
  transform-style:preserve-3d;
  background:linear-gradient(145deg,rgba(255,255,255,.94),rgba(235,249,255,.84)) !important;
  box-shadow:0 35px 100px rgba(15,76,129,.22), inset 0 1px 0 rgba(255,255,255,.95) !important;
}
.login-card:after{
  content:"Secure Access • SIMPROV Kota Bogor";display:block;margin-top:18px;padding:10px 12px;border-radius:14px;
  background:linear-gradient(135deg,rgba(15,76,129,.08),rgba(14,165,198,.08));
  color:#486176;font-size:12px;font-weight:800;text-align:center;letter-spacing:.35px;
}
.login-card h1{letter-spacing:1.4px;text-shadow:0 8px 25px rgba(15,76,129,.12)}
.logo-box,.logo-mini{background:linear-gradient(135deg,#07355d,#0f4c81 45%,#15b7dc) !important}

/* Select dan file input dibuat lebih premium */
select{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  background-image:
    linear-gradient(135deg,rgba(255,255,255,.96),rgba(240,250,255,.92)),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 20 20'%3E%3Cpath fill='%230f4c81' d='M5.5 7.5 10 12l4.5-4.5 1.3 1.4L10 14.7 4.2 8.9z'/%3E%3C/svg%3E");
  background-repeat:no-repeat,no-repeat;
  background-position:0 0, calc(100% - 14px) 50%;
  padding-right:42px !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 8px 18px rgba(15,76,129,.04);
}
input[type="file"]{
  padding:10px 12px;background:linear-gradient(135deg,#ffffff,#f3fbff);border:1px dashed #a8d7ec;
}
input[type="file"]::file-selector-button{
  border:0;border-radius:11px;padding:10px 13px;margin-right:12px;
  background:linear-gradient(135deg,var(--primary),var(--primary2));color:#fff;font-weight:900;cursor:pointer;
  box-shadow:0 10px 20px rgba(15,76,129,.14);
}
.doc-upload-row{
  background:linear-gradient(145deg,rgba(255,255,255,.92),rgba(246,252,255,.88)) !important;
  border:1px solid rgba(184,218,236,.85) !important;
  box-shadow:0 18px 45px rgba(15,76,129,.08), inset 0 1px 0 rgba(255,255,255,.9);
}

/* Rekap dokumen per kegiatan */
.doc-group-card{padding:0!important;background:linear-gradient(145deg,#fff,#f7fcff)}
.doc-group-head{display:grid;grid-template-columns:1.2fr 1.4fr 1fr 1fr;gap:12px;align-items:center;padding:15px;border-bottom:1px solid #e8f1f7;background:linear-gradient(135deg,#f8fcff,#edf8ff)}
.doc-group-title b{display:block;color:var(--dark);font-size:15px}.doc-group-title small{color:var(--muted)}
.doc-list{padding:10px 15px 14px;display:grid;gap:9px}.doc-item{display:grid;grid-template-columns:1fr .8fr .7fr 1.2fr;gap:10px;align-items:center;padding:10px 12px;border:1px solid #e8f1f7;border-radius:13px;background:rgba(255,255,255,.84)}
.doc-item a{font-weight:800;color:#0b76bd}.doc-action-box{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.doc-action-box input[type=file]{min-width:230px;flex:1}.group-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.group-reason{font-size:12px;color:#5b6b7d;background:#f6fbff;border:1px solid #dcecf7;border-radius:12px;padding:9px 10px}
.btn-wide{min-width:104px}.btn-gold{background:linear-gradient(135deg,#c26a05,#f6b73c)!important;color:white!important}
.table-wrap.grouped{border:0;background:transparent}.group-table{min-width:980px;border-collapse:separate;border-spacing:0 12px;background:transparent}.group-table tbody tr:hover{background:transparent}.group-table td{border:0}.group-table th{border-bottom:1px solid #e3eef7}

/* Panel premium lebih mengkilap tapi tidak norak */
.panel,.summary-card,.topbar{background:linear-gradient(145deg,rgba(255,255,255,.90),rgba(240,250,255,.78)) !important}
.panel:hover,.summary-card:hover{transform:translateY(-1px);transition:.22s ease}

/* =========================
   SIPORBO v12 polish: login, row status, collapsible docs
   ========================= */
.login-page{
  min-height:100vh;
  background:
    radial-gradient(circle at 18% 18%, rgba(14,165,198,.30), transparent 26%),
    radial-gradient(circle at 82% 70%, rgba(15,76,129,.18), transparent 30%),
    linear-gradient(135deg,#eefaff,#fbfdff 52%,#e8f8ff);
}
.login-page:after{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.38;
  background-image:linear-gradient(rgba(15,76,129,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(15,76,129,.05) 1px,transparent 1px);
  background-size:38px 38px;
  animation:premiumGridDrift 9s ease-in-out infinite alternate;
}
@keyframes premiumGridDrift{from{transform:translate3d(0,0,0)}to{transform:translate3d(-18px,12px,0)}}
.login-card{
  animation:premiumLoginIn .72s cubic-bezier(.16,1,.3,1) both !important;
  isolation:isolate;
}
@keyframes premiumLoginIn{
  0%{opacity:0;transform:translateY(28px) scale(.96);filter:blur(9px)}
  100%{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}
}
.login-card .logo-box{animation:premiumLogoPop .75s cubic-bezier(.16,1,.3,1) .15s both}
@keyframes premiumLogoPop{0%{opacity:0;transform:scale(.6) rotate(-10deg)}75%{transform:scale(1.08) rotate(2deg)}100%{opacity:1;transform:scale(1) rotate(0)}}
.login-card input{transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease}
.login-card input:focus{transform:translateY(-1px);box-shadow:0 14px 30px rgba(15,76,129,.10),0 0 0 4px rgba(14,165,198,.14)}
.login-card button{position:relative;overflow:hidden}
.login-card button:after{content:"";position:absolute;top:0;bottom:0;width:55px;left:-70px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.42),transparent);transform:skewX(-18deg);animation:loginButtonShine 2.2s ease 1.05s 1 both}
@keyframes loginButtonShine{to{left:120%}}

/* Baris perencanaan dibuat beda warna sesuai status */
tr.rencana-row td{transition:background .18s ease, box-shadow .18s ease;border-bottom:1px solid rgba(226,238,248,.9)}
tr.rencana-row.row-proses td{background:linear-gradient(90deg,rgba(239,248,255,.82),rgba(255,255,255,.96))}
tr.rencana-row.row-proses td:first-child{box-shadow:inset 5px 0 0 #39a8d7}
tr.rencana-row.row-selesai td{background:linear-gradient(90deg,rgba(228,248,235,.96),rgba(248,255,250,.98))}
tr.rencana-row.row-selesai td:first-child{box-shadow:inset 5px 0 0 #22a05a}
tr.rencana-row.row-ditolak td{background:linear-gradient(90deg,rgba(255,247,223,.98),rgba(255,252,244,.98))}
tr.rencana-row.row-ditolak td:first-child{box-shadow:inset 5px 0 0 #f2a31b}
tr.rencana-row:hover td{filter:brightness(1.012)}
.status-done-pill{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;background:linear-gradient(135deg,#22a05a,#3bd07d);color:#fff;font-weight:900;font-size:12px;box-shadow:0 10px 24px rgba(34,160,90,.18)}
.status-done-pill:before{content:"✓";font-weight:1000}

/* Rekap dokumen bisa minimize/maximize per kegiatan */
.doc-group-head-v12{grid-template-columns:1.25fr 1.2fr .9fr .9fr auto !important}
.doc-group-foot-v12{grid-template-columns:1.7fr .8fr .8fr .8fr auto !important}
.doc-toggle-wrap{display:flex;justify-content:flex-end;align-items:center}
.btn-detail{background:linear-gradient(135deg,#ffffff,#edf8ff)!important;color:#0a355d!important;border:1px solid #cfe5f3!important;box-shadow:0 10px 20px rgba(15,76,129,.08)!important;white-space:nowrap}
.btn-detail:hover{transform:translateY(-1px);box-shadow:0 14px 28px rgba(15,76,129,.12)!important}
.doc-list.hidden{display:none!important}
.doc-group-card{box-shadow:0 18px 42px rgba(15,76,129,.08);border-radius:18px;overflow:hidden}
.doc-group-title b{letter-spacing:.1px}

/* Dropdown/file dibuat lebih premium tanpa kelihatan murah */
select,input[type="file"]{border-color:#cfe2ef!important}
select:hover,input[type="file"]:hover{box-shadow:0 12px 26px rgba(15,76,129,.08), inset 0 1px 0 rgba(255,255,255,.92)}
select:focus,input[type="file"]:focus{border-color:#15a7cf!important;box-shadow:0 0 0 4px rgba(21,167,207,.15),0 14px 30px rgba(15,76,129,.09)!important}
input[type="file"]::file-selector-button:hover{filter:brightness(1.08);transform:translateY(-1px)}

@media(max-width:900px){
  .doc-group-head-v12,.doc-group-foot-v12{grid-template-columns:1fr!important}
  .doc-toggle-wrap{justify-content:flex-start}
}


/* LOGO SIPORBO IMAGE - NO BORDER / CLEAN */
.logo-img-wrap{
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  overflow: visible;
}
.logo-img-wrap img{
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  position: relative;
  z-index: 2;
  filter: drop-shadow(0 12px 22px rgba(15,76,129,.16));
}
.logo-img-wrap:after{
  display:none !important;
}
.login-card .logo-img-wrap{
  background: transparent !important;
}

/* === SIPORBO v14 animated logo loading === */
#loadingOverlay:not(.hidden) .loader-premium-card{animation:loaderCardIn .28s cubic-bezier(.16,1,.3,1) both}
@keyframes loaderCardIn{from{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
.login-card .logo-img-wrap img{animation:loginLogoReady 2.8s ease-in-out infinite alternate}
@keyframes loginLogoReady{from{transform:translateY(0) scale(1)}to{transform:translateY(-2px) scale(1.035)}}

/* v16: hilangkan border/logo box dan shine di logo gambar */
.logo-img-wrap.logo-box,.logo-img-wrap.logo-mini{background:transparent!important;border:0!important;box-shadow:none!important;}
.logo-img-wrap.logo-box:after,.logo-img-wrap.logo-mini:after{display:none!important;}
.logo-box.logo-img-wrap{width:92px!important;height:92px!important;margin:0 auto 16px!important;border-radius:0!important;}
.logo-mini.logo-img-wrap{width:58px!important;height:58px!important;border-radius:0!important;}
.loader-logo-wrap{background:transparent!important;border:0!important;box-shadow:none!important;}
.loader-logo-wrap img{filter:drop-shadow(0 14px 24px rgba(15,76,129,.18));}

/* =========================
   SIPORBO v17 - Logo Color Harmony
   Warna diseragamin sama logo: biru, kuning, merah, hijau
   dibuat halus biar nggak terlalu ramai.
   ========================= */
:root{
  --logo-blue:#0b78bd;
  --logo-blue-dark:#073e73;
  --logo-cyan:#16a8d8;
  --logo-yellow:#f5b51b;
  --logo-yellow-soft:#fff4cf;
  --logo-red:#e42020;
  --logo-red-soft:#ffe8e8;
  --logo-green:#12a84f;
  --logo-green-soft:#e7f8ee;
  --primary:var(--logo-blue-dark);
  --primary2:var(--logo-cyan);
  --dark:#06315f;
  --bg:#eef8ff;
  --shadow:0 24px 60px rgba(7,62,115,.13);
}

body{
  background:
    radial-gradient(circle at 12% 18%, rgba(11,120,189,.20), transparent 26%),
    radial-gradient(circle at 82% 18%, rgba(245,181,27,.13), transparent 22%),
    radial-gradient(circle at 90% 70%, rgba(18,168,79,.10), transparent 26%),
    linear-gradient(135deg,#edf9ff 0%,#ffffff 45%,#eef9ff 100%) !important;
}

.bg-orb.orb-a{background:rgba(11,120,189,.28)!important;}
.bg-orb.orb-b{background:rgba(245,181,27,.16)!important;}

/* Logo tetap bersih tanpa border/kotak berat */
.logo-img-wrap,
.logo-box.logo-img-wrap,
.logo-mini.logo-img-wrap{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  overflow:visible!important;
}
.logo-img-wrap img{
  filter:drop-shadow(0 10px 18px rgba(7,62,115,.18));
}

/* Header dan panel: putih premium dengan garis aksen logo halus */
.topbar,.panel,.summary-card,.login-card{
  background:linear-gradient(145deg,rgba(255,255,255,.94),rgba(244,252,255,.84))!important;
  border:1px solid rgba(209,231,243,.92)!important;
}
.topbar:after,
.panel:after{
  content:"";
  position:absolute;
  left:18px;right:18px;top:0;height:3px;
  border-radius:0 0 999px 999px;
  background:linear-gradient(90deg,var(--logo-blue),var(--logo-yellow),var(--logo-red),var(--logo-green));
  opacity:.62;
  pointer-events:none;
}

/* Menu utama seragam warna logo, tapi active tetap dominan biru */
.menu-nav button{
  background:rgba(255,255,255,.82)!important;
  color:var(--logo-blue-dark)!important;
  border:1px solid rgba(11,120,189,.16)!important;
  box-shadow:0 10px 22px rgba(7,62,115,.06)!important;
  position:relative;
  overflow:hidden;
}
.menu-nav button:before{
  content:"";
  position:absolute;left:0;right:0;bottom:0;height:3px;
  background:linear-gradient(90deg,var(--logo-blue),var(--logo-yellow),var(--logo-red),var(--logo-green));
  opacity:.18;
}
.menu-nav button:hover{
  transform:translateY(-2px);
  border-color:rgba(11,120,189,.30)!important;
  box-shadow:0 16px 28px rgba(7,62,115,.12)!important;
}
.menu-nav button.active{
  background:linear-gradient(135deg,var(--logo-blue-dark),var(--logo-blue) 58%,var(--logo-cyan))!important;
  color:white!important;
  box-shadow:0 18px 34px rgba(11,120,189,.24)!important;
}
.menu-nav button.active:before{
  opacity:1;
  height:4px;
  background:linear-gradient(90deg,var(--logo-yellow),#fff0a8,var(--logo-green));
}

/* Summary card diberi aksen beda-beda sesuai warna logo, tanpa terlalu rame */
.summary-card:nth-child(4n+1):after{background:rgba(11,120,189,.14)!important;}
.summary-card:nth-child(4n+2):after{background:rgba(245,181,27,.17)!important;}
.summary-card:nth-child(4n+3):after{background:rgba(18,168,79,.13)!important;}
.summary-card:nth-child(4n+4):after{background:rgba(228,32,32,.10)!important;}
.summary-card:nth-child(4n+1){border-top:3px solid rgba(11,120,189,.55)!important;}
.summary-card:nth-child(4n+2){border-top:3px solid rgba(245,181,27,.60)!important;}
.summary-card:nth-child(4n+3){border-top:3px solid rgba(18,168,79,.48)!important;}
.summary-card:nth-child(4n+4){border-top:3px solid rgba(228,32,32,.38)!important;}
.summary-card b{color:var(--logo-blue-dark)!important;}

/* Button palette */
button{
  background:linear-gradient(135deg,var(--logo-blue-dark),var(--logo-blue) 55%,var(--logo-cyan))!important;
}
.btn-green{
  background:linear-gradient(135deg,#0f7d3f,var(--logo-green))!important;
}
.btn-orange,.btn-gold{
  background:linear-gradient(135deg,#c77a00,var(--logo-yellow))!important;
  color:#fff!important;
}
.btn-red,.btn-danger{
  background:linear-gradient(135deg,#ba1717,var(--logo-red))!important;
}
.btn-soft{
  background:linear-gradient(135deg,#f8fcff,#eef8ff)!important;
  color:var(--logo-blue-dark)!important;
  border:1px solid rgba(11,120,189,.14)!important;
}

/* Badge status lebih seirama */
.badge-blue{background:#e4f4ff!important;color:#07689f!important;}
.badge-green{background:var(--logo-green-soft)!important;color:#087a38!important;}
.badge-orange{background:var(--logo-yellow-soft)!important;color:#9a5d00!important;}
.badge-red{background:var(--logo-red-soft)!important;color:#a31212!important;}
.badge-gray{background:#eef4f9!important;color:#3e5268!important;}

/* Tabel dan row status */
th{
  background:linear-gradient(135deg,#f5fbff,#edf7ff)!important;
  color:#173a5c!important;
}
.table-wrap,
.group-table,
.doc-group-card{
  border-color:rgba(11,120,189,.12)!important;
}
tbody tr.row-finished,
tr.row-finished{
  background:linear-gradient(90deg,rgba(18,168,79,.10),rgba(255,255,255,.96))!important;
}
tbody tr.row-rejected,
tr.row-rejected{
  background:linear-gradient(90deg,rgba(245,181,27,.16),rgba(255,255,255,.96))!important;
}
tbody tr.row-progress,
tr.row-progress{
  background:linear-gradient(90deg,rgba(11,120,189,.08),rgba(255,255,255,.96))!important;
}

/* Form: fokus biru, bukan terlalu neon */
input:focus,select:focus,textarea:focus{
  border-color:var(--logo-blue)!important;
  box-shadow:0 0 0 4px rgba(11,120,189,.12)!important;
}
select{
  border-color:rgba(11,120,189,.18)!important;
}
input[type="file"]{
  border-color:rgba(245,181,27,.45)!important;
  background:linear-gradient(135deg,#fff,#f8fcff)!important;
}
input[type="file"]::file-selector-button{
  background:linear-gradient(135deg,var(--logo-blue-dark),var(--logo-blue))!important;
}

/* Login: nuansa warna logo dengan animasi halus */
.login-page{
  background:
    radial-gradient(circle at 18% 18%, rgba(11,120,189,.27), transparent 27%),
    radial-gradient(circle at 72% 24%, rgba(245,181,27,.16), transparent 22%),
    radial-gradient(circle at 82% 78%, rgba(18,168,79,.12), transparent 28%),
    radial-gradient(circle at 16% 80%, rgba(228,32,32,.09), transparent 24%),
    linear-gradient(135deg,#eefaff,#ffffff 52%,#eaf8ff)!important;
}
.login-card{
  border-top:4px solid transparent!important;
  border-image:linear-gradient(90deg,var(--logo-blue),var(--logo-yellow),var(--logo-red),var(--logo-green)) 1!important;
}
.login-card h1,.topbar h2,.panel h3{
  color:var(--logo-blue-dark)!important;
}

/* Loading logo pakai ring warna logo */
.loader-ring{
  border-top-color:var(--logo-blue)!important;
  border-right-color:var(--logo-yellow)!important;
}
.loader-ring-2{
  border-left-color:var(--logo-red)!important;
  border-bottom-color:var(--logo-green)!important;
}

/* Hindari terlalu rame di layar kecil */
@media(max-width:650px){
  .topbar:after,.panel:after{left:12px;right:12px;height:2px;}
  .summary-card{border-top-width:2px!important;}
}


/* v19 - Dokumen perjanjian otomatis */
.auto-doc-note-wrap { margin-top: 10px; }
.auto-doc-note {
  position: relative;
  overflow: hidden;
  margin-top: 10px;
  padding: 12px 14px;
  border-radius: 14px;
  border: 1px solid rgba(15, 76, 129, .16);
  background: linear-gradient(135deg, rgba(25, 167, 206, .10), rgba(255, 185, 15, .12), rgba(0, 166, 81, .08));
  color: #0b365f;
  box-shadow: 0 12px 26px rgba(15, 76, 129, .08);
  font-size: 13px;
  line-height: 1.45;
}
.auto-doc-note b { color: #08345f; }
.auto-doc-note span { color: #627086; }
.auto-doc-note::after {
  content: "";
  position: absolute;
  inset: 0 auto 0 -80%;
  width: 55%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.62), transparent);
  transform: skewX(-18deg);
  animation: shineOnce 1.25s ease .25s 1 forwards;
}
@keyframes shineOnce { to { left: 130%; } }


/* =========================================================
   v21 - USER FRIENDLY READABILITY PACK
   Tujuan: font lebih jelas, jarak lebih lega, tabel tidak bikin pusing,
   dashboard admin lebih enak dibaca di HP maupun desktop.
   ========================================================= */

:root{
  --font-main: "Inter", "Segoe UI", Arial, sans-serif;
  --font-size-base: 15.5px;
  --radius-xl: 26px;
  --soft-blue:#eff8ff;
}

body{
  font-family:var(--font-main);
  font-size:var(--font-size-base);
  line-height:1.55;
  color:#20304a;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

.app-page{
  max-width: 1520px;
  margin: 0 auto;
  padding: 24px clamp(16px, 2.5vw, 34px);
}

.topbar{
  align-items:center;
  padding:24px clamp(18px,2.4vw,34px);
  border-radius:30px;
}
.topbar h2{
  font-size:clamp(28px, 3vw, 42px)!important;
  letter-spacing:-.5px;
}
.topbar small{
  font-size:15px;
  line-height:1.5;
}

.menu-nav{
  gap:14px;
  margin:24px 0 22px;
}
.menu-nav button{
  min-height:48px;
  padding:13px 22px;
  font-size:15px;
  border-radius:16px;
  white-space:nowrap;
}

.summary-grid{
  gap:18px;
}
.summary-card{
  min-height:112px;
  padding:22px;
  border-radius:24px;
}
.summary-card span{
  font-size:14px;
  letter-spacing:.1px;
}
.summary-card b{
  font-size:clamp(22px,2.1vw,28px);
  line-height:1.25;
  word-break:break-word;
}

.panel{
  padding:clamp(20px,2.6vw,34px);
  border-radius:28px;
}
.panel h3{
  font-size:clamp(24px,2.3vw,34px)!important;
  letter-spacing:-.25px;
}
.panel-sub{
  font-size:16px;
  line-height:1.55;
  margin-top:4px;
  max-width:920px;
}

.panel-title-row{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  margin-bottom:18px;
}
.panel-title-row h3{margin:0 0 6px!important}
.panel-title-row .btn-refresh{flex:0 0 auto}

.form-grid{
  gap:18px 20px;
}
label{
  font-size:14px!important;
  color:#25364f!important;
  margin:16px 0 8px!important;
}
input,select,textarea{
  min-height:48px;
  font-size:15.5px!important;
  border-radius:16px!important;
  padding:14px 16px!important;
}
button{
  font-size:15px;
  letter-spacing:.05px;
}
.btn-mini{
  font-size:13px;
  padding:10px 13px;
  margin:4px 5px 4px 0;
}
.btn-refresh{
  min-height:48px;
  border-radius:16px;
}

/* Tabel lebih jelas */
.table-hint{
  display:none;
  margin:14px 0 8px;
  padding:10px 12px;
  border-radius:14px;
  background:linear-gradient(135deg,#eef8ff,#ffffff);
  border:1px solid #d7e9f7;
  color:#31516f;
  font-size:13.5px;
  font-weight:800;
}
.table-wrap{
  border-radius:18px!important;
  background:#fff;
  box-shadow:0 12px 28px rgba(15,76,129,.06);
  scrollbar-color:#8db7d6 #edf6fc;
  scrollbar-width:thin;
}
.table-wrap::-webkit-scrollbar{height:10px}
.table-wrap::-webkit-scrollbar-track{background:#edf6fc;border-radius:99px}
.table-wrap::-webkit-scrollbar-thumb{background:#8db7d6;border-radius:99px}
table{
  min-width:1060px;
  font-size:15px;
}
th{
  position:sticky;
  top:0;
  z-index:2;
  background:#edf7ff!important;
  color:#17365b!important;
  font-size:12.5px!important;
  letter-spacing:.5px;
  padding:15px 14px!important;
}
td{
  font-size:14.5px!important;
  padding:15px 14px!important;
  line-height:1.45;
}
tbody tr:nth-child(even){
  background:rgba(239,248,255,.42);
}
tbody tr:hover{
  background:#f1faff!important;
}
td b{
  color:#172b45;
}

/* angka uang jangan pecah baris */
td:nth-child(2), td:nth-child(3), td:nth-child(4),
td:nth-child(6), td:nth-child(7), td:nth-child(8){
  white-space:nowrap;
}
.text-danger{ color:#c02626!important; }
.fw-bold{ font-weight:900!important; }

/* Card dashboard admin: lebih mudah dibaca daripada tabel panjang */
.monitor-card-list{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px;
  margin:16px 0 18px;
}
.monitor-card{
  border:1px solid #dcebf6;
  border-radius:22px;
  padding:18px;
  background:linear-gradient(135deg,#ffffff,#f4fbff);
  box-shadow:0 12px 28px rgba(15,76,129,.07);
}
.monitor-card.over-budget{
  border-color:#fecaca;
  background:linear-gradient(135deg,#fff7f7,#fffdf5);
}
.monitor-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
  margin-bottom:14px;
}
.monitor-head b{
  display:block;
  color:#0a3d70;
  font-size:17px;
}
.monitor-head small{
  display:block;
  margin-top:3px;
  color:#6b778c;
  font-size:12.5px;
}
.monitor-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:10px;
}
.monitor-grid div{
  border:1px solid #e1edf6;
  border-radius:16px;
  padding:11px 12px;
  background:rgba(255,255,255,.82);
  min-width:0;
}
.monitor-grid span,
.monitor-foot span{
  display:block;
  color:#64748b;
  font-size:12px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.35px;
}
.monitor-grid strong{
  display:block;
  margin-top:4px;
  color:#17365b;
  font-size:15px;
  line-height:1.3;
  word-break:break-word;
}
.progress-line{
  height:9px;
  margin:14px 0 11px;
  border-radius:99px;
  background:#e8f2fa;
  overflow:hidden;
}
.progress-line div{
  height:100%;
  border-radius:99px;
  background:linear-gradient(90deg,var(--logo-blue),var(--logo-green));
}
.monitor-foot{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
}

/* Struktur Anggaran admin lebih rapi */
.admin-row{
  grid-template-columns:1.4fr 1fr 1fr auto auto!important;
  gap:14px!important;
  padding:18px!important;
  border-radius:18px!important;
}
.readonly-display{
  min-height:46px;
  display:flex;
  align-items:center;
  padding:12px 14px;
  border:1px solid #dce8f2;
  border-radius:15px;
  background:#f8fcff;
  color:#17365b;
  font-weight:900;
}

/* Kotak alasan/riwayat dibuat lebih kebaca */
.reason-box,.history-box{
  max-width:360px;
  font-size:13px!important;
  border-radius:14px!important;
  padding:10px 12px!important;
}

/* Mobile: jangan memaksa user baca tabel raksasa dulu */
@media(max-width:1000px){
  .monitor-card-list{grid-template-columns:1fr}
  .panel-title-row{flex-direction:column;align-items:stretch}
  .panel-title-row .btn-refresh{width:max-content}
}

@media(max-width:650px){
  .app-page{padding:14px 12px!important}
  .topbar{
    border-radius:24px;
    padding:20px 18px;
  }
  .topbar-left{
    align-items:flex-start;
  }
  .topbar h2{
    font-size:30px!important;
    line-height:1.12;
  }
  .topbar small{font-size:13.5px}
  .topbar-actions{
    width:100%;
    justify-content:flex-start;
    flex-wrap:wrap;
  }
  .menu-nav{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
  }
  .menu-nav button{
    width:100%;
    min-height:46px;
    padding:12px 10px;
    font-size:13.5px;
  }
  .summary-grid{
    grid-template-columns:1fr!important;
    gap:12px;
  }
  .summary-card{
    min-height:96px;
    padding:18px;
  }
  .summary-card b{
    font-size:24px;
  }
  .panel{
    padding:18px;
    border-radius:22px;
  }
  .panel h3{
    font-size:25px!important;
  }
  .panel-sub{
    font-size:14.5px;
  }
  .form-grid{
    grid-template-columns:1fr!important;
    gap:8px;
  }
  label{font-size:13.5px!important}
  input,select,textarea{
    font-size:16px!important; /* cegah zoom iPhone */
    min-height:50px;
  }
  .toolbar{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
  }
  .toolbar .field,
  .toolbar .field.small{
    max-width:none!important;
    min-width:0!important;
    width:100%;
  }
  .toolbar button,
  .btn-refresh{
    width:100%;
  }
  .table-hint{display:block}
  table{min-width:980px!important}
  .dashboard-table{display:none;} /* dashboard pakai kartu di HP, tabel disembunyikan biar tidak membingungkan */
  .monitor-grid{
    grid-template-columns:1fr;
  }
  .monitor-card{
    padding:15px;
    border-radius:18px;
  }
  .monitor-head,
  .monitor-foot{
    flex-direction:column;
    align-items:flex-start;
  }
  .admin-row{
    grid-template-columns:1fr!important;
  }
  .btn-mini{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:38px;
  }
  .pager{
    width:100%;
    justify-content:space-between;
  }
  .pager button{
    min-width:110px;
  }
}


/* =========================================================
   v22 - SEKDA & AUDITOR READ-ONLY REVIEW MODE
   ========================================================= */
.audit-pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:8px 12px;
  border-radius:999px;
  font-size:12px;
  font-weight:900;
  color:#0f4c81;
  background:linear-gradient(135deg,#eaf7ff,#ffffff);
  border:1px solid #cfe6f7;
  white-space:nowrap;
}
.audit-pill::before{content:"👁️";font-size:13px}

.review-kpi-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:14px;
  margin:12px 0 18px;
}
.review-kpi-grid div{
  padding:16px;
  border-radius:18px;
  border:1px solid #dcebf6;
  background:linear-gradient(135deg,#ffffff,#f3fbff);
  box-shadow:0 12px 26px rgba(15,76,129,.06);
}
.review-kpi-grid span{
  display:block;
  color:#64748b;
  font-size:12px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.35px;
}
.review-kpi-grid strong{
  display:block;
  margin-top:6px;
  color:#0a3d70;
  font-size:28px;
  line-height:1.1;
}

.review-list{
  display:grid;
  gap:14px;
}
.review-row{
  display:grid;
  grid-template-columns:1.1fr 2.4fr auto;
  gap:14px;
  align-items:center;
  padding:17px;
  border:1px solid #dcebf6;
  border-radius:20px;
  background:linear-gradient(135deg,#ffffff,#f7fcff);
  box-shadow:0 12px 26px rgba(15,76,129,.06);
}
.review-row.over-budget{
  border-color:#fecaca;
  background:linear-gradient(135deg,#fff7f7,#fffdf6);
}
.review-title b{
  display:block;
  color:#0a3d70;
  font-size:17px;
}
.review-title small{
  display:block;
  margin-top:3px;
  color:#64748b;
}
.review-metrics{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:9px;
}
.review-metrics div{
  padding:10px 11px;
  border:1px solid #e1edf6;
  border-radius:14px;
  background:rgba(255,255,255,.86);
}
.review-metrics span{
  display:block;
  color:#64748b;
  font-size:11px;
  font-weight:900;
  text-transform:uppercase;
}
.review-metrics strong{
  display:block;
  margin-top:4px;
  color:#17365b;
  font-size:13.5px;
  line-height:1.3;
  word-break:break-word;
}
.review-status{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:7px;
}

@media(max-width:1000px){
  .review-kpi-grid{grid-template-columns:repeat(2,1fr)}
  .review-row{grid-template-columns:1fr}
  .review-metrics{grid-template-columns:repeat(2,1fr)}
  .review-status{align-items:flex-start;flex-direction:row;flex-wrap:wrap}
}
@media(max-width:650px){
  .review-kpi-grid{grid-template-columns:1fr}
  .review-metrics{grid-template-columns:1fr}
}


/* v23 - Tombol laporan PDF */
.action-group{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
@media(max-width:650px){
  .action-group{
    width:100%;
    display:grid;
    grid-template-columns:1fr;
  }
  .action-group button{width:100%}
}

/* v25 - Laporan PDF hanya di Dashboard */
.btn-report{font-weight:900;background:linear-gradient(135deg,#0a5f9e,#12a3d8)!important;color:#fff!important;border:0!important;box-shadow:0 12px 24px rgba(10,95,158,.20)}


/* v26 - Tanggal upload dokumen di menu pencairan */
.upload-time{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:7px 10px;
  border-radius:12px;
  background:#eef8ff;
  border:1px solid #d2e8f8;
  color:#17365b;
  font-weight:800;
  font-size:12.5px;
  white-space:nowrap;
}
.upload-time::before{
  content:"🕒";
  font-size:12px;
}


/* v27 - Menu Laporan khusus user bidang */
.report-menu-panel{
  position:relative;
  overflow:hidden;
}
.report-summary-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:14px;
  margin:18px 0;
}
.report-summary-grid div{
  padding:18px;
  border-radius:20px;
  border:1px solid #dcebf6;
  background:linear-gradient(135deg,#ffffff,#f3fbff);
  box-shadow:0 12px 28px rgba(15,76,129,.06);
}
.report-summary-grid span{
  display:block;
  color:#64748b;
  font-size:12px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.35px;
}
.report-summary-grid strong{
  display:block;
  margin-top:7px;
  color:#0a3d70;
  font-size:22px;
}
.report-card-main{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  padding:24px;
  border-radius:24px;
  border:1px solid #d5e9f7;
  background:linear-gradient(135deg,#f7fcff,#ffffff);
  box-shadow:0 14px 34px rgba(15,76,129,.08);
}
.report-card-main h4{
  margin:0 0 8px;
  color:#0a3d70;
  font-size:24px;
}
.report-card-main p{
  margin:0;
  color:#5f7188;
  max-width:760px;
  line-height:1.6;
}
.report-tags{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:14px;
}
.report-tags span{
  display:inline-flex;
  padding:8px 11px;
  border-radius:999px;
  background:#eaf7ff;
  border:1px solid #cfe6f7;
  color:#0f4c81;
  font-size:12px;
  font-weight:900;
}
.btn-report-pdf{
  min-width:220px;
  min-height:56px;
  border-radius:18px;
  font-weight:900;
  background:linear-gradient(135deg,#0b63a3,#08a8df);
  box-shadow:0 16px 32px rgba(8,120,189,.22);
}
@media(max-width:900px){
  .report-summary-grid{grid-template-columns:1fr 1fr}
  .report-card-main{flex-direction:column;align-items:flex-start}
  .btn-report-pdf{width:100%}
}
@media(max-width:600px){
  .report-summary-grid{grid-template-columns:1fr}
}


/* v32 - Warna status Perlu Perbaikan dibuat merah */
tr.rencana-row.row-perbaikan td,
tr.rencana-row.row-ditolak td{
  background:linear-gradient(90deg,rgba(255,235,235,.98),rgba(255,250,250,.98))!important;
}
tr.rencana-row.row-perbaikan td:first-child,
tr.rencana-row.row-ditolak td:first-child{
  box-shadow:inset 5px 0 0 #dc2626!important;
}
tr.rencana-row.row-perbaikan .badge,
tr.rencana-row.row-ditolak .badge{
  background:#fee2e2!important;
  color:#b91c1c!important;
}


/* v35 - Metode dan ketentuan dokumen otomatis */
.metode-preview{
  margin:4px 0 16px;
}
.metode-box{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  padding:14px 16px;
  border:1px solid #d5e9f7;
  border-left:5px solid #0b74b8;
  border-radius:18px;
  background:linear-gradient(135deg,#f2fbff,#ffffff);
  box-shadow:0 12px 26px rgba(15,76,129,.06);
}
.metode-box div{
  padding:10px 12px;
  border-radius:14px;
  background:#ffffffb8;
  border:1px solid #e0edf6;
}
.metode-box span{
  display:block;
  color:#64748b;
  font-size:11px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.35px;
}
.metode-box b{
  display:block;
  margin-top:3px;
  color:#0a3d70;
  font-size:15px;
}
.metode-box p{
  grid-column:1 / -1;
  margin:0;
  color:#42526b;
  line-height:1.5;
}
@media(max-width:700px){
  .metode-box{grid-template-columns:1fr}
}
