@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{--bg:#080f1d;--panel:#101b2d;--panel2:#142239;--line:#24344c;--text:#edf5ff;--muted:#91a3bd;--cyan:#45d7ef;--blue:#448cff;--green:#44d6a0;--amber:#ffc76b;--red:#ff7187;--violet:#b3a0ff}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 80% -20%,#142c4c 0,transparent 38%),var(--bg);color:var(--text);font-family:'DM Sans',sans-serif;font-size:14px}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh}.sidebar{position:fixed;left:0;top:0;bottom:0;width:258px;background:rgba(9,17,31,.96);border-right:1px solid var(--line);padding:24px 16px;display:flex;flex-direction:column;z-index:10;backdrop-filter:blur(18px)}.brand{display:flex;align-items:center;gap:11px;padding:0 8px 24px;border-bottom:1px solid var(--line)}.brand img{width:46px;height:46px;object-fit:contain;background:#fff;border-radius:13px;padding:3px}.brand strong{font:700 17px 'Space Grotesk';letter-spacing:.4px}.brand strong span{color:var(--cyan)}.brand small{display:block;color:var(--muted);font-size:9px;letter-spacing:1.5px;margin-top:4px}.user-mini{display:flex;gap:10px;align-items:center;padding:19px 7px 20px;border-bottom:1px solid var(--line)}.avatar{display:grid;place-items:center;flex-shrink:0;width:38px;height:38px;border:1px solid #3e7f9a;background:linear-gradient(135deg,#164e68,#203b68);border-radius:12px;color:#a4f4ff;font-weight:700}.avatar.small{width:34px;height:34px}.user-mini b{display:block;font-size:12px}.user-mini small{display:block;color:var(--muted);font-size:11px;margin-top:4px;max-width:155px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar nav{padding-top:20px;display:flex;flex-direction:column;gap:5px}.nav-caption{color:#62758f;font-size:10px;letter-spacing:1.5px;padding:0 12px 7px;margin-top:6px}.sidebar nav a{display:flex;align-items:center;gap:12px;padding:12px;border-radius:10px;color:#9aabc2;font-size:13px;transition:.2s}.sidebar nav a i{font-style:normal;font-size:17px;width:20px;text-align:center}.sidebar nav a:hover,.sidebar nav a.active{background:linear-gradient(90deg,rgba(69,215,239,.14),rgba(68,140,255,.08));color:#e9fbff}.sidebar nav a.active{box-shadow:inset 2px 0 var(--cyan)}.sidebar-bottom{margin-top:auto}.secure{padding:12px;color:#7891aa;font-size:11px}.secure span,.live-dot{color:var(--green);margin-right:7px}.logout{display:block;padding:12px;color:#ff9aaa;border-top:1px solid var(--line);font-size:12px}.main{margin-left:258px;min-height:100vh;display:flex;flex-direction:column}.topbar{padding:25px 34px 23px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(36,52,76,.7);gap:20px}.eyebrow{font-size:9px;letter-spacing:1.8px;color:var(--cyan);font-weight:700;margin:0 0 8px}.topbar h2{font:600 22px 'Space Grotesk';margin:0}.top-right{display:flex;align-items:center;gap:12px;font-size:12px}.muted{color:var(--muted)}.content{padding:28px 34px;flex:1;max-width:1800px;width:100%;margin:0 auto}.welcome{position:relative;overflow:hidden;border:1px solid #25435e;border-radius:18px;padding:28px 30px;background:linear-gradient(115deg,rgba(20,47,74,.96),rgba(16,29,49,.94) 55%,rgba(21,52,77,.8));display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.welcome:after{content:'';position:absolute;width:250px;height:250px;right:8%;top:-170px;border:1px solid #2b617b;border-radius:50%;box-shadow:0 0 0 25px #2b617b12,0 0 0 55px #2b617b0a}.welcome h1{font:600 25px 'Space Grotesk';margin:0 0 9px}.welcome p:not(.eyebrow){color:#a9bdd4;margin:0;max-width:620px;line-height:1.7}.welcome-mark{font:700 45px 'Space Grotesk';color:#a6f3ff;opacity:.8;padding:10px 25px}.welcome-mark span{color:var(--blue)}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:22px}.stat-card{background:linear-gradient(140deg,#111f33,#0d1829);border:1px solid var(--line);border-radius:15px;padding:19px;min-width:0}.stat-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:#1a3549;font-weight:700;font-size:16px;margin-bottom:15px}.stat-icon.cyan{color:var(--cyan);background:#163748}.stat-icon.amber{color:var(--amber);background:#423321}.stat-icon.green{color:var(--green);background:#163b35}.stat-icon.violet{color:var(--violet);background:#302849}.stat-card>span{display:block;color:#9badc3;font-size:12px}.stat-card strong{display:block;font:600 27px 'Space Grotesk';margin:7px 0 5px;overflow-wrap:anywhere}.stat-card .money-stat{font-size:20px}.stat-card small{font-size:10px;color:#687e99}.grid-two{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,1fr);gap:18px}.panel{background:linear-gradient(150deg,rgba(17,29,47,.98),rgba(13,23,39,.98));border:1px solid var(--line);border-radius:15px;margin-bottom:19px;overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:21px 22px;border-bottom:1px solid rgba(36,52,76,.7)}.panel-head h3{font:600 16px 'Space Grotesk';margin:0 0 6px}.panel-head p{font-size:11px;color:var(--muted);margin:0;line-height:1.5}.text-link{color:var(--cyan);font-size:11px;white-space:nowrap}.table-wrap{width:100%;overflow-x:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th{text-align:left;font-size:10px;letter-spacing:.5px;color:#8094ad;background:#0d1727;font-weight:600}td,th{padding:14px 17px;border-bottom:1px solid rgba(36,52,76,.56)}td{font-size:11px;color:#b9c8da}td b{font-size:12px;color:#e7f1ff}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#16253a}.cell-sub{display:block;color:#7187a1;font-size:10px;margin-top:5px;white-space:normal;max-width:240px}.status{display:inline-flex;padding:5px 8px;border-radius:7px;font-size:10px;background:#24344a;color:#b6c5d8;white-space:nowrap}.s-diajukan{color:#ffd48c;background:#493820}.s-disetujui,.s-selesai{color:#8ff0c9;background:#173c35}.s-ditolak{color:#ff9eae;background:#482635}.s-perlu-revisi{color:#ffc9a0;background:#493328}.s-draft{color:#a8bdd8;background:#24344a}.quick-links{padding:6px 18px}.quick-links>a{display:flex;align-items:center;gap:12px;padding:15px 4px;border-bottom:1px solid #223149}.quick-links>a:last-child{border-bottom:0}.quick-links>a>span:last-child{margin-left:auto;color:#7691ab}.quick-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:#1b354c;color:var(--cyan);font-size:18px}.quick-links b{display:block;font-size:12px}.quick-links small{display:block;color:#8297b0;font-size:10px;margin-top:4px}.tip{margin:4px 18px 18px;padding:15px;border:1px solid #29465d;background:#12263a;border-radius:11px}.tip b{font-size:11px;color:#9ceafa}.tip p{font-size:11px;line-height:1.7;color:#8fa7c1;margin:6px 0 0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:9px;padding:10px 14px;font-size:11px;font-weight:700;white-space:nowrap;transition:.2s}.btn.primary{background:linear-gradient(120deg,#20a9c7,#3479e8);color:white;box-shadow:0 5px 18px #168db31c}.btn.primary:hover{filter:brightness(1.12);transform:translateY(-1px)}.btn.ghost{background:#17263a;border-color:#2a3c55;color:#b6c9e0}.btn.ghost:hover{border-color:#4b7a9c}.btn.tiny{padding:6px 8px;font-size:10px}.danger-btn{background:#3a1f2c;border-color:#633143;color:#ff9eae}.actions{display:flex;align-items:center;gap:5px}.actions form{display:inline}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;padding:23px}.form-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.field{display:flex;flex-direction:column;gap:7px;min-width:0}.field label,.detail-grid label{font-size:11px;color:#9db0c7;font-weight:600}.field input,.field select,.field textarea,.comment-form textarea,.review-form textarea{width:100%;border:1px solid #2b3d56;background:#0a1423;border-radius:9px;color:#eaf3ff;padding:11px 12px;outline:none;min-width:0}.field input:focus,.field select:focus,.field textarea:focus,.comment-form textarea:focus{border-color:#31b8d3;box-shadow:0 0 0 3px #31b8d31b}.field textarea{resize:vertical;line-height:1.55}.field select option{background:#0e1b2d}.span-2{grid-column:span 2}.form-actions{display:flex;align-items:center;gap:10px;padding-top:3px}.empty{text-align:center;padding:36px 20px;color:#8196b0}.empty>span{display:block;font-size:30px;color:#3b8ca5;margin-bottom:12px}.empty b{display:block;color:#c7d7e9;font-size:13px}.empty p{font-size:11px;margin:7px 0 18px}.detail-panel{padding-bottom:5px}.detail-panel>.panel-head{align-items:flex-start}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;padding:22px}.detail-grid p{font-size:12px;line-height:1.75;color:#c1d0e2;margin:9px 0 0;overflow-wrap:anywhere}.review-form{border-top:1px solid var(--line);padding:20px 22px;display:flex;align-items:end;gap:13px;flex-wrap:wrap;background:#111f32}.review-form .field{min-width:170px;flex:1}.review-form .grow{flex:2}.comment-box{padding:20px 22px}.comment-box h4{font:600 14px 'Space Grotesk';margin:0 0 15px}.comment{border-left:2px solid #38bdd3;padding:2px 0 4px 13px;margin-bottom:14px}.comment b{font-size:11px}.comment b small{color:var(--cyan);font-weight:400;margin-left:5px}.comment p{font-size:12px;line-height:1.6;color:#c4d2e4;margin:7px 0}.comment time{font-size:10px;color:#6f859f}.comment-form{display:flex;align-items:stretch;gap:10px;margin-top:16px}.comment-form textarea{flex:1;resize:vertical}.export-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.export-card{padding:24px}.export-card h3{font:600 16px 'Space Grotesk'}.export-card p{font-size:12px;color:#91a6bf;line-height:1.8;min-height:64px}.notice{padding:12px 15px;border-radius:10px;border:1px solid #28614f;background:#122f2b;color:#a5f1d2;font-size:12px;line-height:1.6;margin-bottom:17px}.notice.danger{border-color:#713247;background:#351d2b;color:#ffb4c1}.footer{padding:20px 34px;border-top:1px solid var(--line);font-size:10px;color:#667e99;display:flex;justify-content:space-between;gap:12px}.menu-toggle{display:none;background:#17263a;border:1px solid var(--line);color:white;border-radius:8px;padding:8px}.login-bg{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(ellipse at 50% 0%,#1c4261 0,transparent 48%),#080f1d}.login-card{width:min(100%,420px);padding:36px;border-radius:22px;border:1px solid #2a4561;background:rgba(13,25,42,.93);box-shadow:0 25px 90px #0007}.brand-logo{width:86px;height:86px;object-fit:contain;background:#fff;border-radius:20px;padding:5px;display:block;margin:0 auto 23px}.login-card .eyebrow{text-align:center}.login-card h1{text-align:center;font:700 30px 'Space Grotesk';margin:0}.login-card h1 span{color:var(--cyan)}.login-card>.muted{text-align:center;margin:9px 0 27px}.login-card form{display:flex;flex-direction:column;gap:8px}.login-card label{font-size:11px;color:#a8bad0;margin-top:6px}.login-card input,.login-card select{background:#091523;border:1px solid #2b3f58;color:#eef6ff;padding:12px;border-radius:9px;outline:none}.login-card .wide{width:100%;margin-top:13px;padding:13px}.footnote{text-align:center;color:#6f859d;font-size:10px;margin:25px 0 0}.login-card>p:not(.eyebrow):not(.muted){font-size:12px;color:#9cb0c7;line-height:1.7}.login-card code{color:var(--cyan)}
@media(max-width:1200px){.content{padding:24px}.topbar{padding:22px 24px}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-two{grid-template-columns:1fr}}@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:transform .25s;box-shadow:20px 0 60px #0007}.sidebar.open{transform:translateX(0)}.main{margin-left:0}.topbar{padding:16px;gap:10px;align-items:flex-start}.menu-toggle{display:block;flex-shrink:0}.topbar h2{font-size:18px}.topbar .eyebrow{font-size:8px}.top-right{margin-left:auto;gap:7px}.top-right .muted{display:none}.content{padding:16px}.welcome{padding:21px}.welcome h1{font-size:20px}.welcome-mark{font-size:29px;padding:8px}.stat-grid{gap:10px}.stat-card{padding:14px}.stat-card strong{font-size:23px}.stat-card .money-stat{font-size:16px}.panel-head{padding:17px;align-items:flex-start}.panel-head .btn{padding:8px;font-size:10px}.form-grid,.form-grid.compact{grid-template-columns:1fr;padding:17px}.span-2{grid-column:span 1}.detail-grid{grid-template-columns:1fr;padding:17px}.review-form{padding:17px}.comment-box{padding:17px}.comment-form{flex-direction:column}.export-grid{grid-template-columns:1fr}.footer{padding:17px;flex-direction:column}.table-wrap table{min-width:680px}.login-card{padding:27px}.actions{flex-wrap:wrap}}@media(max-width:420px){.stat-grid{grid-template-columns:1fr 1fr}.stat-card strong{font-size:20px}.top-right .avatar{display:none}.welcome-mark{display:none}.welcome h1{font-size:19px}}

/* Itemized program budget realization */
.realization-table{min-width:760px}.realization-table input{width:100%;min-width:100px}.realization-table td:first-child{min-width:220px}.realization-table td:nth-child(2){min-width:110px}.realization-table td:nth-child(3){min-width:160px}.realization-table td:nth-child(4){min-width:145px;white-space:nowrap}.realization-table tfoot th{background:rgba(57,201,226,.08);padding:14px}.realization-table #realizationGrandTotal{color:var(--cyan,#39c9e2);font-size:1.08rem}.realization-row .item-total{white-space:nowrap}@media(max-width:640px){.realization-table{font-size:12px}.realization-table th,.realization-table td{padding:8px}}

/* Dashboard analytics v1.17: modern, clean and responsive charts */
.dashboard-chart-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:20px;margin:0 0 22px;align-items:start}
.chart-panel{min-width:0;background:linear-gradient(145deg,rgba(18,32,52,.99),rgba(11,22,38,.99));border-color:#263b56;box-shadow:0 12px 30px rgba(0,0,0,.12)}
.chart-panel .panel-head{padding:22px 23px 18px;background:linear-gradient(100deg,rgba(47,112,145,.10),transparent 72%)}
.chart-panel .panel-head h3{font-size:15px;letter-spacing:-.2px}
.chart-panel .panel-head p{max-width:620px;line-height:1.7;font-size:11px}
.chart-legend{display:flex;gap:13px 18px;flex-wrap:wrap;padding:17px 23px 5px;color:#a1b4cb;font-size:10px}
.chart-legend span{display:inline-flex;align-items:center;gap:8px}
.legend-dot{display:inline-block;width:9px;height:9px;border-radius:50%;box-shadow:0 0 0 3px rgba(255,255,255,.035)}
.program-dot,.program-fill{background:#35c9e5}.budget-dot,.budget-fill{background:#7b91ff}.income-dot,.income-fill{background:#39d6a0}.expense-dot,.expense-fill{background:#ffad73}.balance-dot,.balance-fill{background:#b19aff}
.account-chart-list{padding:8px 23px 20px;max-height:700px;overflow:auto;scrollbar-width:thin;scrollbar-color:#304965 transparent}
.account-chart-row{padding:17px 14px 18px;margin:0 -14px;border-bottom:1px solid rgba(54,76,103,.48);border-radius:10px;transition:background .2s ease}
.account-chart-row:hover,.cash-chart-row:hover{background:rgba(39,68,96,.18)}
.account-chart-row:last-child,.cash-chart-row:last-child{border-bottom:0}
.account-chart-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:13px}
.account-chart-title>div{min-width:0}
.account-chart-title b{display:block;color:#f0f6ff;font-size:12px;line-height:1.5;font-weight:700;overflow-wrap:anywhere}
.account-chart-title small{display:block;color:#8ea4bf;font-size:10px;margin-top:4px;line-height:1.55;overflow-wrap:anywhere}
.program-count-badge{flex-shrink:0;border:1px solid rgba(53,201,229,.23);background:linear-gradient(135deg,rgba(35,139,165,.2),rgba(30,73,110,.24));color:#b5f4ff;padding:6px 10px;border-radius:999px;font-size:10px;font-weight:700;white-space:nowrap}
.chart-track{width:100%;height:10px;border-radius:999px;background:#1a2b42;overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.22)}
.chart-fill{height:100%;border-radius:999px;min-width:0;transition:width .35s ease;box-shadow:0 0 12px rgba(75,160,220,.12)}
.program-fill{background:linear-gradient(90deg,#229fbd,#48d9ed)}.budget-fill{background:linear-gradient(90deg,#536ee0,#91a2ff)}
.chart-value-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:15px 0 8px;color:#8ea4bf;font-size:10px}
.chart-value-row b{color:#e1ebf8;font-size:11px;font-weight:700;text-align:right;overflow-wrap:anywhere}
.budget-track{height:8px;background:#1a2b42}
.no-program-note{display:inline-flex;align-items:center;gap:6px;color:#ffd18a;font-size:10px;margin-top:10px;padding:5px 8px;border:1px solid rgba(255,199,107,.16);background:rgba(255,199,107,.06);border-radius:7px}
.cash-chart-row{padding:17px 23px 18px;border-bottom:1px solid rgba(54,76,103,.48);transition:background .2s ease}
.cash-chart-row .account-chart-title{margin-bottom:16px}
.cash-chart-row .btn{flex-shrink:0;border-radius:8px}
.cash-metric{display:grid;grid-template-columns:82px minmax(40px,1fr) minmax(100px,auto);gap:11px;align-items:center;margin:14px 0}
.cash-metric>span{font-size:10px;color:#9aafc8;font-weight:600}
.cash-metric>b{text-align:right;font-size:10px;color:#e2ecf8;white-space:nowrap;font-weight:700;font-variant-numeric:tabular-nums}
.cash-metric .chart-track{height:8px}
.income-fill{background:linear-gradient(90deg,#1caa7d,#4be0ad)}.expense-fill{background:linear-gradient(90deg,#d97d4b,#ffc08b)}.balance-fill{background:linear-gradient(90deg,#8a70db,#c3b5ff)}
.chart-panel .empty{padding:42px 22px}
@media(max-width:1200px){.dashboard-chart-grid{grid-template-columns:1fr}.account-chart-list{max-height:580px}}
@media(max-width:760px){.dashboard-chart-grid{gap:14px}.chart-panel .panel-head{padding:18px}.chart-legend{padding:15px 18px 4px;gap:10px 14px}.account-chart-list{padding:6px 18px 15px;max-height:unset}.cash-chart-row{padding:15px 18px}.account-chart-row{padding:15px 10px;margin:0 -10px}.cash-metric{grid-template-columns:75px minmax(25px,1fr) minmax(88px,auto);gap:8px}.cash-metric>b{font-size:10px}.account-chart-title{gap:8px}.program-count-badge{font-size:9px;padding:5px 8px}}
@media(max-width:420px){.chart-panel .panel-head h3{font-size:14px}.chart-legend{font-size:9px;gap:9px 12px}.account-chart-title b{font-size:11px}.account-chart-title small{font-size:9px}.program-count-badge{max-width:92px;white-space:normal;text-align:center;line-height:1.3}.cash-metric{grid-template-columns:72px minmax(20px,1fr);gap:8px;margin:13px 0}.cash-metric>b{grid-column:2;justify-self:end;margin-top:-4px}.cash-metric .chart-track{height:8px}.chart-value-row b{font-size:10px}}

/* Dashboard v1.18: replace chart bars with structured summary tables */
.dashboard-summary-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:18px;margin:0 0 22px;align-items:start}
.dashboard-data-panel{min-width:0;border-color:#293c55;box-shadow:0 12px 28px rgba(0,0,0,.12)}
.dashboard-data-panel .panel-head{background:linear-gradient(105deg,rgba(69,215,239,.07),transparent 75%)}
.dashboard-data-panel .panel-head h3{font-size:15px}
.dashboard-data-panel .panel-head p{max-width:620px;line-height:1.65}
.dashboard-table-wrap{max-width:100%}
.dashboard-data-table{width:100%;white-space:normal}
.dashboard-data-table th{background:#111f32;color:#91a7c2;padding:13px 12px;font-size:9px;letter-spacing:.65px;text-transform:uppercase}
.dashboard-data-table td{padding:13px 12px;vertical-align:middle;font-size:11px}
.dashboard-data-table tbody tr{transition:background .18s ease}
.dashboard-data-table tbody tr:hover{background:rgba(69,215,239,.045)}
.dashboard-data-table th:first-child,.dashboard-data-table td:first-child{padding-left:18px}
.dashboard-data-table th:last-child,.dashboard-data-table td:last-child{padding-right:18px}
.table-rank{display:inline-grid;place-items:center;min-width:26px;height:26px;border:1px solid #304762;border-radius:8px;background:#172a40;color:#9fb6d0;font-weight:700;font-size:10px}
.dashboard-person{display:flex;align-items:center;gap:10px;min-width:150px}
.dashboard-person-avatar{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;border:1px solid #2c657b;border-radius:10px;background:linear-gradient(135deg,#173d50,#1b3153);color:#a9f0ff;font-weight:700;font-size:12px}
.dashboard-person-avatar.cash-avatar{border-color:#285e4f;background:linear-gradient(135deg,#174637,#1c3550);color:#9af0ca}
.dashboard-person b{display:block;font-size:11px;line-height:1.45;color:#e8f2ff;overflow-wrap:anywhere}
.dashboard-person small{display:block;margin-top:4px;font-size:9px;line-height:1.45;color:#8198b4;white-space:normal;overflow-wrap:anywhere}
.table-count-badge{display:inline-flex;align-items:center;justify-content:center;padding:6px 9px;border:1px solid rgba(69,215,239,.2);border-radius:8px;background:rgba(35,139,165,.13);color:#a9effa;font-size:10px;font-weight:700;white-space:nowrap}
.table-count-badge.zero{border-color:rgba(255,199,107,.2);background:rgba(255,199,107,.07);color:#ffd18a}
.table-muted-note{display:block;margin-top:5px;color:#9c8a69;font-size:9px;white-space:normal}
.table-money{color:#c8d5ff;font-size:11px;white-space:nowrap;font-variant-numeric:tabular-nums}
.cash-summary-table{min-width:660px}
.cash-summary-table td{padding-top:12px;padding-bottom:12px}
.cash-summary-table td:not(:first-child){font-variant-numeric:tabular-nums;white-space:nowrap}
.cash-summary-table .dashboard-person{min-width:130px}
.cash-positive{color:#71e0b3;font-size:10px}
.cash-negative{color:#ffb08a;font-size:10px}
.cash-balance{color:#bdb0ff;font-size:10px}
.dashboard-data-panel .empty{padding:32px 18px}
@media(max-width:1250px){.dashboard-summary-grid{grid-template-columns:1fr}}
@media(max-width:760px){.dashboard-summary-grid{gap:14px}.dashboard-data-panel .panel-head{padding:17px}.dashboard-table-wrap{overflow-x:auto}.dashboard-data-table{min-width:560px}.cash-summary-table{min-width:660px}.dashboard-data-table th,.dashboard-data-table td{padding:11px 10px}.dashboard-data-table th:first-child,.dashboard-data-table td:first-child{padding-left:14px}.dashboard-data-table th:last-child,.dashboard-data-table td:last-child{padding-right:14px}}

/* Monthly reports */
.monthly-setting-panel{border-color:rgba(69,215,239,.2);background:linear-gradient(135deg,rgba(21,44,65,.96),rgba(14,27,43,.96))}
.monthly-setting-panel .panel-head{align-items:center}
.monthly-setting-panel .panel-head p{max-width:720px;line-height:1.65}
.monthly-agenda-cell{min-width:250px;max-width:480px;white-space:normal;line-height:1.7;overflow-wrap:anywhere}
.monthly-file-link{display:block;margin:4px 0;color:#83dff3;text-decoration:none;font-size:12px;overflow-wrap:anywhere}
.monthly-file-link:hover{text-decoration:underline}
.monthly-evaluation{white-space:normal;line-height:1.65;overflow-wrap:anywhere;padding:9px 10px;border-radius:9px;background:rgba(255,199,107,.07);border:1px solid rgba(255,199,107,.15);color:#f3d9a4;min-width:180px}
.monthly-evaluation-form{display:grid;gap:7px;min-width:200px;margin-top:10px}
.monthly-evaluation-form textarea{width:100%;min-width:190px;resize:vertical}
.monthly-evaluation-form .btn{justify-self:start}
.monthly-setting-panel .inline-form{padding:0 18px 18px}
@media(max-width:760px){.monthly-agenda-cell{min-width:220px;max-width:300px}.monthly-setting-panel .panel-head{align-items:flex-start;gap:12px;flex-direction:column}.monthly-evaluation-form{min-width:180px}}

/* Monthly report attachments: in-app preview and separate download action */
.monthly-attachment-item{display:grid;gap:9px;min-width:190px;padding:10px;margin:5px 0;border:1px solid var(--line,rgba(135,160,190,.2));border-radius:11px;background:rgba(10,25,42,.35)}
.monthly-attachment-name{display:flex;align-items:flex-start;gap:9px;min-width:0}
.monthly-attachment-icon{display:grid;place-items:center;flex:0 0 30px;width:30px;height:30px;border-radius:8px;background:rgba(69,215,239,.1);color:#83dff3;font-size:15px}
.monthly-attachment-name>span:last-child{min-width:0}
.monthly-attachment-name b{display:block;color:var(--text,#e8f2ff);font-size:11px;line-height:1.5;overflow-wrap:anywhere}
.monthly-attachment-name small{display:block;margin-top:3px;color:var(--muted,#8da2bb);font-size:9px}
.monthly-attachment-actions{display:flex;gap:7px;flex-wrap:wrap}
.monthly-preview-modal{display:none;position:fixed;inset:0;z-index:9999;background:rgba(3,10,20,.82);backdrop-filter:blur(8px);padding:clamp(10px,3vw,32px);align-items:center;justify-content:center}
.monthly-preview-modal.open{display:flex}
.monthly-preview-dialog{display:flex;flex-direction:column;width:min(1200px,100%);height:min(900px,94vh);min-height:320px;overflow:hidden;background:#101e30;border:1px solid #33475f;border-radius:18px;box-shadow:0 28px 90px rgba(0,0,0,.48)}
.monthly-preview-header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px 18px;border-bottom:1px solid #293b51;background:#15263a}
.monthly-preview-header small{font-size:9px;letter-spacing:1.2px;color:#83dff3}
.monthly-preview-header h3{margin:4px 0 0;font-size:14px;color:#f0f6ff;overflow-wrap:anywhere}
.monthly-preview-controls{display:flex;align-items:center;gap:8px;flex-shrink:0}
.monthly-preview-dialog iframe{display:block;flex:1;width:100%;min-height:0;border:0;background:#f3f6fb}
body.preview-open{overflow:hidden}
@media(max-width:600px){.monthly-preview-modal{padding:7px}.monthly-preview-dialog{height:96vh;border-radius:12px}.monthly-preview-header{align-items:flex-start;padding:12px;flex-direction:column}.monthly-preview-controls{width:100%;justify-content:flex-end}.monthly-attachment-item{min-width:180px}}



/* v1.22 layout stability patch */
html,body{min-height:100%;width:100%;}body{overflow-x:hidden}.app-shell{display:flex;align-items:stretch;min-height:100vh;width:100%;}.sidebar{width:258px;flex:0 0 258px}.main{width:calc(100% - 258px);min-width:0;min-height:100vh;flex:1 1 auto}.content{min-width:0;min-height:calc(100vh - 150px);flex:1 0 auto}.footer{margin-top:auto;min-width:0}.monthly-preview-modal{box-sizing:border-box}.monthly-preview-dialog{width:min(1200px,calc(100vw - 32px));height:min(900px,calc(100vh - 32px));min-height:280px}.monthly-preview-dialog iframe{width:100%;height:100%;flex:1 1 auto}@media(max-width:760px){.sidebar{position:fixed;width:258px;flex:initial}.main{width:100%;margin-left:0}.content{min-height:calc(100vh - 120px)}}

/* Login password visibility control */
.login-card .password-field{position:relative;width:100%;margin-bottom:14px}
.login-card .password-field input{width:100%;padding-right:110px;margin-bottom:0}
.login-card .password-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:1px solid var(--line,#334155);background:rgba(30,41,59,.92);color:#e2e8f0;border-radius:8px;padding:7px 11px;cursor:pointer;font:inherit;font-size:12px;line-height:1.3;z-index:1}
.login-card .password-toggle:hover,.login-card .password-toggle:focus-visible{background:#334155;outline:2px solid #38bdf8;outline-offset:1px}

/* v1.24: tombol lihat password mengikuti tema navy-cyan */
.login-card .password-field input{min-height:46px;padding-right:128px;transition:border-color .2s,box-shadow .2s}
.login-card .password-field input:focus{border-color:var(--cyan);box-shadow:0 0 0 3px #45d7ef22}
.login-card .password-toggle{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:100px;min-height:34px;right:6px;border:1px solid #286a80;border-radius:8px;background:linear-gradient(120deg,#12364b,#1b3458);color:#9ceefa;font-size:11px;font-weight:700;box-shadow:none;transition:background .2s,border-color .2s,color .2s}
.login-card .password-toggle:hover{background:linear-gradient(120deg,#20546a,#224b7b);border-color:var(--cyan);color:#fff}
.login-card .password-toggle:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
.login-card .toggle-symbol{font-size:17px;line-height:1}
@media(max-width:420px){.login-card .password-field input{padding-right:120px}.login-card .password-toggle{min-width:92px}}


/* SIMKERJA PB v1.25 — Pusat File */
.file-center-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:18px;margin-bottom:18px}
.file-category-panel{align-self:start}
.file-category-list{display:grid;gap:8px;margin-top:14px}
.file-category-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.02)}
.file-category-row b,.file-category-row small{display:block}.file-category-row small{margin-top:3px;color:var(--muted);font-size:11px}
.file-count-badge{white-space:nowrap;padding:5px 8px;border-radius:999px;border:1px solid rgba(69,215,239,.25);background:rgba(69,215,239,.08);color:var(--cyan);font-size:11px;font-weight:700}
.file-name-line{display:flex;align-items:flex-start;gap:10px;min-width:260px}.file-name-line>span:last-child{min-width:0}.file-name-line b{display:block;overflow-wrap:anywhere}
.file-type-badge{display:inline-flex;align-items:center;justify-content:center;min-width:46px;height:28px;padding:0 7px;border-radius:7px;background:linear-gradient(135deg,rgba(69,215,239,.15),rgba(88,101,242,.14));border:1px solid rgba(69,215,239,.28);color:var(--cyan);font-size:10px;font-weight:800;letter-spacing:.5px}
.file-description{max-width:520px;white-space:normal;overflow-wrap:anywhere}
.file-table td{vertical-align:middle}.file-table .actions{white-space:nowrap}
@media(max-width:980px){.file-center-grid{grid-template-columns:1fr}}
@media(max-width:640px){.file-category-row{align-items:flex-start}.file-name-line{min-width:220px}}


/* SIMKERJA PB v1.28 — Pusat File: edit/hapus hanya oleh pengunggah */
.file-edit-current{display:flex;align-items:center;gap:10px;margin:0 0 10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.025)}
.file-edit-current>span:last-child{min-width:0;display:flex;flex-direction:column;gap:2px}.file-edit-current b{overflow-wrap:anywhere}
.inline-action-form{display:inline-flex;margin:0;padding:0}
.file-table td.actions{white-space:normal;min-width:220px}.file-table td.actions .btn,.file-table td.actions form{margin:2px 2px 2px 0}

/* SIMKERJA PB v1.29 — Foto & spesifikasi stok UKS */
.uks-current-photo{display:flex;align-items:center;gap:14px;margin:8px 0 12px;padding:10px 12px;border:1px solid rgba(69,215,239,.18);border-radius:12px;background:rgba(14,34,55,.42)}
.uks-current-photo img{width:84px;height:68px;object-fit:cover;border-radius:10px;border:1px solid rgba(255,255,255,.12);display:block}
.uks-current-photo span{display:flex;flex-direction:column;gap:3px}.uks-current-photo small{color:var(--muted)}
.uks-photo-link{display:inline-flex;padding:3px;border-radius:10px;border:1px solid rgba(69,215,239,.15);background:rgba(14,34,55,.4);transition:transform .18s,border-color .18s,box-shadow .18s}
.uks-photo-link:hover{transform:translateY(-1px);border-color:rgba(69,215,239,.55);box-shadow:0 8px 18px rgba(0,0,0,.16)}
.uks-photo-thumb{width:66px;height:54px;object-fit:cover;border-radius:7px;display:block}
.uks-photo-empty{display:inline-flex;align-items:center;justify-content:center;min-width:66px;min-height:54px;padding:6px;border:1px dashed rgba(148,163,184,.28);border-radius:9px;color:var(--muted);font-size:10px;text-align:center}
.uks-spec{display:block;margin-top:5px;max-width:420px;color:var(--text);opacity:.86;line-height:1.45;white-space:normal}
.uks-stock-table td{vertical-align:middle}.uks-stock-table .actions{min-width:128px}
@media(max-width:700px){.uks-current-photo{align-items:flex-start}.uks-current-photo img{width:72px;height:60px}.uks-photo-thumb{width:58px;height:48px}.uks-spec{min-width:220px}}


/* SIMKERJA PB v1.30 — Changelog & Feature Request */
.changelog-list{display:grid;gap:14px}
.changelog-card{position:relative;overflow:hidden;padding:0}
.changelog-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--cyan),rgba(126,87,194,.75))}
.changelog-version{display:flex;align-items:center;gap:14px;padding:18px 20px 14px;border-bottom:1px solid rgba(148,163,184,.12)}
.changelog-version>span{display:inline-flex;align-items:center;justify-content:center;min-width:62px;padding:7px 10px;border-radius:9px;border:1px solid rgba(69,215,239,.28);background:rgba(69,215,239,.08);color:var(--cyan);font-size:12px;font-weight:800;letter-spacing:.4px}
.changelog-version h3{margin:0;font-size:15px}.changelog-version small{display:block;margin-top:3px;color:var(--muted)}
.changelog-items{list-style:none;margin:0;padding:14px 20px 18px;display:grid;gap:9px}
.changelog-items li{display:grid;grid-template-columns:24px 1fr;gap:9px;align-items:start;padding:8px 10px;border-radius:9px;background:rgba(255,255,255,.018)}
.changelog-items li>span{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:rgba(42,190,123,.1);border:1px solid rgba(42,190,123,.25);color:#71d8a6;font-size:10px;font-weight:800}.changelog-items p{margin:1px 0 0;line-height:1.55;color:var(--text)}
.feature-request-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:18px;margin-bottom:18px}.feature-request-guide{align-self:start}.feature-flow{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:4px 0 16px}.feature-flow span{padding:7px 9px;border-radius:8px;border:1px solid rgba(69,215,239,.22);background:rgba(69,215,239,.07);color:#b9eff8;font-size:10px;font-weight:700}.feature-flow i{font-style:normal;color:var(--muted)}
.feature-request-list{display:grid;gap:12px}.feature-request-card{border:1px solid var(--line);border-radius:14px;background:linear-gradient(145deg,rgba(17,37,59,.72),rgba(12,27,45,.72));padding:16px;box-shadow:0 9px 25px rgba(0,0,0,.08)}
.feature-request-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.feature-request-head h3{margin:8px 0 5px;font-size:15px;line-height:1.35}.feature-request-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.feature-request-by{margin:0;color:var(--muted);font-size:10px}.feature-request-body{padding:13px 0 4px}.feature-request-body p{margin:0;white-space:normal;line-height:1.65;overflow-wrap:anywhere}
.priority-badge{display:inline-flex;padding:4px 7px;border-radius:999px;border:1px solid rgba(148,163,184,.2);font-size:9px;font-weight:700;color:var(--muted);background:rgba(148,163,184,.06)}.priority-tinggi{color:#ffc07a;border-color:rgba(255,174,77,.3);background:rgba(255,174,77,.08)}.priority-rendah{color:#97c9ff;border-color:rgba(74,144,226,.28);background:rgba(74,144,226,.07)}
.feature-status{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;padding:6px 9px;border-radius:999px;border:1px solid rgba(148,163,184,.22);background:rgba(148,163,184,.07);color:#cbd5e1;font-size:9px;font-weight:800;letter-spacing:.3px}.fr-diajukan{color:#91e8f7;border-color:rgba(69,215,239,.32);background:rgba(69,215,239,.08)}.fr-ditinjau{color:#ffe099;border-color:rgba(255,193,7,.28);background:rgba(255,193,7,.07)}.fr-direncanakan{color:#c9b5ff;border-color:rgba(139,92,246,.3);background:rgba(139,92,246,.08)}.fr-dikerjakan{color:#8fc8ff;border-color:rgba(59,130,246,.3);background:rgba(59,130,246,.08)}.fr-selesai{color:#8ee0b5;border-color:rgba(34,197,94,.3);background:rgba(34,197,94,.08)}.fr-ditolak{color:#ff9f9f;border-color:rgba(239,68,68,.3);background:rgba(239,68,68,.08)}
.feature-leader-note{margin-top:12px;padding:12px 13px;border-radius:11px;border:1px solid rgba(255,199,107,.18);background:rgba(255,199,107,.055)}.feature-leader-note small{display:block;color:#edc778;font-size:9px;letter-spacing:.8px}.feature-leader-note p{margin:6px 0 4px;line-height:1.55}.feature-leader-note span{color:var(--muted);font-size:9px}
.feature-request-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}.feature-review-form{display:grid;grid-template-columns:180px minmax(260px,1fr) auto;gap:10px;align-items:end;margin-top:14px;padding-top:14px;border-top:1px solid rgba(148,163,184,.13)}.feature-review-form .field{margin:0}.feature-review-form textarea{min-height:64px}.feature-review-form .form-actions{margin:0;padding:0;align-self:end}
@media(max-width:980px){.feature-request-grid{grid-template-columns:1fr}.feature-review-form{grid-template-columns:1fr}.feature-review-form .form-actions{justify-content:flex-start}}
@media(max-width:640px){.changelog-version{align-items:flex-start;flex-direction:column}.feature-request-head{flex-direction:column}.feature-status{align-self:flex-start}.feature-request-card{padding:13px}.changelog-items{padding:12px 14px 16px}}


/* SIMKERJA PB v1.31 — kelompok menu sidebar dapat disembunyikan/ditampilkan */
.sidebar nav.sidebar-nav{padding-top:14px;display:flex;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;flex-direction:column;gap:7px;padding-right:2px;scrollbar-width:thin;scrollbar-color:#2b4661 transparent}
.sidebar nav.sidebar-nav::-webkit-scrollbar{width:5px}.sidebar nav.sidebar-nav::-webkit-scrollbar-thumb{background:#2b4661;border-radius:999px}
.nav-group{border:1px solid transparent;border-radius:11px;transition:border-color .2s,background .2s}
.nav-group.has-active{border-color:rgba(69,215,239,.08);background:rgba(69,215,239,.025)}
.nav-group-toggle{width:100%;border:0;background:transparent;color:#62758f;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px 7px;border-radius:9px;font-size:10px;font-weight:700;letter-spacing:1.45px;text-align:left;transition:color .2s,background .2s}
.nav-group-toggle:hover{color:#9fc4d7;background:rgba(69,215,239,.055)}
.nav-group.has-active>.nav-group-toggle{color:#73cada}
.nav-chevron{font-style:normal;font-size:16px;line-height:1;color:#6d849f;transition:transform .22s ease,color .2s}
.nav-group-toggle:hover .nav-chevron{color:var(--cyan)}
.nav-group-items{display:flex;flex-direction:column;gap:5px;max-height:620px;opacity:1;overflow:hidden;transition:max-height .28s ease,opacity .18s ease,padding .2s ease;padding-bottom:3px}
.nav-group.collapsed .nav-group-items{max-height:0;opacity:0;padding-bottom:0;pointer-events:none}
.nav-group.collapsed .nav-chevron{transform:rotate(-90deg)}
.nav-group.collapsed.has-active>.nav-group-toggle:after{content:'';width:6px;height:6px;border-radius:50%;background:var(--cyan);box-shadow:0 0 8px rgba(69,215,239,.55);margin-left:auto}
.nav-group.collapsed.has-active .nav-chevron{margin-left:0}
@media(max-width:760px){.sidebar nav.sidebar-nav{padding-bottom:8px}.nav-group-toggle{padding-top:10px;padding-bottom:8px}}
\n\n/* SIMKERJA PB v1.32 — ringkasan inventaris per ruangan pada dashboard */\n.inventory-room-dashboard{margin:0 0 22px;overflow:hidden;border-color:#293c55}\n.inventory-room-dashboard>.panel-head{background:linear-gradient(105deg,rgba(69,215,239,.07),transparent 70%)}\n.inventory-room-overview{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;padding:15px 18px;border-bottom:1px solid var(--line);background:rgba(7,15,28,.28)}\n.inventory-room-overview>div{padding:12px 13px;border:1px solid rgba(145,163,189,.12);border-radius:11px;background:rgba(16,27,45,.72);min-width:0}\n.inventory-room-overview span{display:block;color:var(--muted);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.65px}\n.inventory-room-overview strong{display:block;margin-top:4px;font-family:'Space Grotesk',sans-serif;font-size:20px;line-height:1.15}\n.inventory-room-overview small{display:block;margin-top:3px;color:#6f829d;font-size:9px}\n.inventory-room-overview .good strong{color:var(--green)}.inventory-room-overview .damage strong{color:var(--red)}\n.inventory-room-list{padding:5px 18px 16px}\n.inventory-room-row{padding:15px 0;border-bottom:1px solid rgba(145,163,189,.1)}.inventory-room-row:last-child{border-bottom:0}\n.inventory-room-main{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:9px}\n.inventory-room-name{min-width:0}.inventory-room-name b{display:block;font-size:13px}.inventory-room-name small{display:block;margin-top:3px;color:var(--muted);font-size:10px}\n.inventory-health{flex:0 0 auto;display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:9px;font-weight:800;border:1px solid rgba(145,163,189,.2);background:rgba(145,163,189,.06);color:var(--muted)}\n.inventory-health.healthy{color:#7be6b4;border-color:rgba(68,214,160,.28);background:rgba(68,214,160,.07)}\n.inventory-health.attention{color:#ff9aab;border-color:rgba(255,113,135,.28);background:rgba(255,113,135,.07)}\n.inventory-health.empty-status{color:#9caec5}\n.inventory-condition-bar{display:flex;width:100%;height:9px;overflow:hidden;border-radius:999px;background:#1a2940;border:1px solid rgba(145,163,189,.09)}\n.inventory-condition-bar span{display:block;height:100%;min-width:0;transition:width .25s ease}.inventory-condition-bar .bar-good{background:linear-gradient(90deg,#37bc8a,#56e5b1)}.inventory-condition-bar .bar-damaged{background:linear-gradient(90deg,#ffb25f,#ff7187)}\n.inventory-room-metrics{display:flex;align-items:center;gap:9px 18px;flex-wrap:wrap;margin-top:9px;color:var(--muted);font-size:9px}\n.inventory-room-metrics span{display:inline-flex;align-items:center;gap:5px}.inventory-room-metrics b{color:var(--text);font-size:10px}.inventory-room-metrics .dot{display:inline-block;width:7px;height:7px;border-radius:50%}.inventory-room-metrics .dot.good{background:var(--green)}.inventory-room-metrics .dot.light{background:var(--amber)}.inventory-room-metrics .dot.heavy{background:var(--red)}.inventory-room-metrics .dot.repair{background:var(--violet)}\n@media(max-width:1100px){.inventory-room-overview{grid-template-columns:repeat(3,minmax(0,1fr))}}\n@media(max-width:700px){.inventory-room-dashboard{margin-bottom:16px}.inventory-room-overview{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px}.inventory-room-list{padding:3px 13px 12px}.inventory-room-main{align-items:flex-start}.inventory-room-metrics{gap:7px 12px}.inventory-room-overview>div:nth-child(3){grid-column:1/-1}}\n@media(max-width:420px){.inventory-room-overview{grid-template-columns:1fr 1fr}.inventory-room-overview>div{padding:10px}.inventory-room-main{flex-direction:column;gap:7px}.inventory-health{align-self:flex-start}}\n

/* SIMKERJA PB v1.33 — tabel ringkasan inventaris per ruangan */
.inventory-room-table-panel{overflow:hidden;border-color:#293c55}
.inventory-room-table-panel>.panel-head{background:linear-gradient(105deg,rgba(69,215,239,.07),transparent 70%)}
.inventory-room-overview-compact{grid-template-columns:repeat(5,minmax(0,1fr));padding:14px 18px;margin:0;border-bottom:1px solid var(--line)}
.inventory-room-table-wrap{margin:0;border:0;border-radius:0;background:transparent;overflow-x:auto}
.inventory-room-table{min-width:1080px;margin:0}
.inventory-room-table thead th{padding:11px 12px;background:rgba(12,25,43,.96);color:#90a8c4;font-size:9px;letter-spacing:.55px;text-transform:uppercase;white-space:nowrap;border-bottom:1px solid rgba(69,215,239,.18)}
.inventory-room-table tbody td{padding:12px;border-bottom:1px solid rgba(145,163,189,.09);vertical-align:middle}
.inventory-room-table tbody tr{transition:background .16s ease}
.inventory-room-table tbody tr:hover{background:rgba(69,215,239,.035)}
.inventory-room-table tbody tr:last-child td{border-bottom:0}
.inventory-room-title-cell{min-width:180px}
.inventory-room-title-cell b{display:block;color:#e9f3ff;font-size:12px}
.inventory-room-title-cell .cell-sub{max-width:230px;white-space:normal;line-height:1.35}
.inventory-total-number{font-family:'Space Grotesk',sans-serif;font-size:14px;color:#eaf5ff}
.inventory-number-badge{display:inline-flex;align-items:center;justify-content:center;min-width:38px;padding:5px 8px;border-radius:8px;border:1px solid rgba(145,163,189,.15);background:rgba(145,163,189,.06);font-size:10px;font-weight:800;color:#c9d7e9}
.inventory-number-badge.neutral{border-color:rgba(69,215,239,.20);background:rgba(69,215,239,.055);color:#8ee9f6}
.inventory-number-badge.good{border-color:rgba(68,214,160,.25);background:rgba(68,214,160,.07);color:#7be6b4}
.inventory-number-badge.light{border-color:rgba(245,186,73,.26);background:rgba(245,186,73,.07);color:#ffd27f}
.inventory-number-badge.heavy{border-color:rgba(255,113,135,.26);background:rgba(255,113,135,.07);color:#ff9aab}
.inventory-number-badge.repair{border-color:rgba(167,139,250,.26);background:rgba(167,139,250,.07);color:#c5b2ff}
.inventory-room-table td .inventory-health{white-space:nowrap}
.inventory-room-table .btn.tiny{white-space:nowrap}
@media(max-width:1100px){.inventory-room-overview-compact{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.inventory-room-overview-compact{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px}.inventory-room-overview-compact>div:nth-child(3){grid-column:1/-1}.inventory-room-table thead th,.inventory-room-table tbody td{padding:10px}.inventory-room-table{min-width:980px}}


/* SIMKERJA PB v1.34 — pelaporan keuangan berbasis jabatan */
.finance-holder-list{display:flex;gap:8px;flex-wrap:wrap;padding:0 18px 17px}.finance-holder-list .status{font-size:10px;padding:7px 10px}


/* SIMKERJA PB v1.35 — dashboard pimpinan: ringkasan dapat dilipat + kas Pokja/Masjid */
.dashboard-collapsible{overflow:hidden}
.dashboard-top-summary{margin-bottom:18px;border-color:#293c55}
.dashboard-top-summary>.panel-head{background:linear-gradient(105deg,rgba(69,215,239,.065),transparent 72%)}
.dashboard-top-summary .dashboard-stat-grid{margin:0;padding:16px 18px 18px}
.dashboard-collapse-head{gap:14px}
.dashboard-collapse-head>div:first-child{min-width:0}
.dashboard-panel-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.dashboard-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:32px;padding:6px 10px;border:1px solid rgba(69,215,239,.24);border-radius:8px;background:rgba(17,42,64,.72);color:#9eddec;font:inherit;font-size:9px;font-weight:800;letter-spacing:.25px;cursor:pointer;transition:border-color .16s ease,background .16s ease,color .16s ease}
.dashboard-collapse-toggle:hover,.dashboard-collapse-toggle:focus-visible{border-color:rgba(69,215,239,.55);background:rgba(28,70,92,.82);color:#eafaff;outline:none}
.dashboard-collapse-toggle i{font-style:normal;font-size:13px;line-height:1;transition:transform .16s ease}
.dashboard-panel-body{display:block}
.dashboard-collapsible.collapsed .dashboard-panel-body{display:none}
.dashboard-collapsible.collapsed>.panel-head{border-bottom:0}
.dashboard-collapsible.collapsed .dashboard-collapse-toggle{background:rgba(69,215,239,.07)}
.dashboard-finance-panel .finance-holder-strip{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 18px;border-bottom:1px solid rgba(145,163,189,.1);background:rgba(7,15,28,.22)}
.finance-holder-strip span{color:var(--muted);font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.55px}
.finance-holder-strip strong{font-size:10px;color:#dcecff;text-align:right;overflow-wrap:anywhere}
.finance-summary-table{min-width:560px}
.finance-summary-table td,.finance-summary-table th{font-variant-numeric:tabular-nums}
.dashboard-summary-grid>.dashboard-collapsible.collapsed{align-self:start}
@media(max-width:760px){.dashboard-panel-actions{width:100%;justify-content:space-between}.dashboard-collapse-head{align-items:flex-start;flex-direction:column}.dashboard-collapse-toggle{min-height:30px}.dashboard-top-summary .dashboard-stat-grid{padding:12px}.dashboard-finance-panel .finance-holder-strip{align-items:flex-start;flex-direction:column}.finance-holder-strip strong{text-align:left}}

/* SIMKERJA PB v1.37 — Pengajuan Anggaran & Permintaan Barang */
.request-type-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}.request-form-card{min-width:0}.request-item-table input{min-width:105px;border:1px solid #2b3d56;background:#0a1423;border-radius:8px;color:#eaf3ff;padding:9px 10px;outline:none}.request-item-table td:nth-child(1) input{min-width:170px}.request-item-table td:nth-child(2) input{min-width:220px}.request-item-table input:focus{border-color:#31b8d3;box-shadow:0 0 0 3px #31b8d31b}.request-title{display:block;margin-top:8px}.request-items-compact{display:flex;flex-direction:column;gap:6px;white-space:normal;min-width:260px;max-width:440px}.request-items-compact span{padding:7px 9px;border:1px solid rgba(36,52,76,.75);border-radius:8px;background:#0d192a;line-height:1.45}.procurement-filter{padding:16px 22px;border-bottom:1px solid rgba(36,52,76,.7)}.approval-detail{position:relative}.approval-detail>summary{list-style:none}.approval-detail>summary::-webkit-details-marker{display:none}.approval-popover{position:absolute;right:0;top:38px;z-index:20;width:min(360px,80vw);padding:15px;display:grid;gap:12px;background:#101c2f;border:1px solid #31506c;border-radius:12px;box-shadow:0 20px 45px rgba(0,0,0,.4)}.approval-popover textarea{min-height:82px}.approval-popover .btn{width:100%}@media(max-width:1100px){.request-type-grid{grid-template-columns:1fr}}@media(max-width:700px){.approval-popover{position:fixed;left:16px;right:16px;top:auto;bottom:16px;width:auto}.request-item-table input{min-width:130px}}


/* SIMKERJA PB v1.38 — rincian item pada Pengajuan Anggaran */
.request-budget-item-table{min-width:1020px}
.request-item-table th{white-space:nowrap}
.request-item-table td{vertical-align:middle}
.request-item-table .procurement-item-total{display:inline-block;min-width:108px;color:#dff8ff;font-size:11px;white-space:nowrap;font-variant-numeric:tabular-nums}
.request-budget-item-table tfoot td{padding:12px;background:rgba(69,215,239,.045);border-top:1px solid rgba(69,215,239,.18)}
.request-budget-item-table tfoot b{display:block;color:#e8f7ff}.request-budget-item-table tfoot .cell-sub{margin-top:3px}
.procurement-grand-total{display:block;color:#7de6b4;font-family:'Space Grotesk',sans-serif;font-size:15px;white-space:nowrap;font-variant-numeric:tabular-nums}
.request-items-compact span small{display:block;margin-top:4px;color:var(--muted);font-size:9px;font-weight:400;line-height:1.4}
.request-total-note{display:block;margin-top:7px;color:#9bded2;font-weight:700}
@media(max-width:700px){.request-budget-item-table{min-width:980px}.procurement-grand-total{font-size:13px}}


/* v1.40 — Ringkasan Pengajuan & Permintaan pada Dashboard pimpinan */
.dashboard-procurement-panel{grid-column:1/-1}
.dashboard-procurement-stats{padding:16px 18px 0;margin-bottom:16px}
.procurement-summary-table .status{min-width:42px;justify-content:center;font-weight:700}
.procurement-total-row td{background:rgba(69,215,239,.045);border-top:1px solid rgba(69,215,239,.16)}
.procurement-total-row b,.procurement-total-row strong{color:#eaf8ff}
@media(max-width:760px){.dashboard-procurement-stats{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px 12px 0}.procurement-summary-table{min-width:640px}}
@media(max-width:460px){.dashboard-procurement-stats{grid-template-columns:1fr}}


/* SIMKERJA PB v1.41 — Sidebar komunikasi, chat internal & WhatsApp Web */
.communication-launcher{position:fixed;right:20px;bottom:22px;z-index:42;display:flex;align-items:center;gap:8px;border:1px solid rgba(69,215,239,.42);border-radius:13px;padding:11px 15px;background:linear-gradient(135deg,#163d55,#1c4770);color:#eafcff;font-weight:700;box-shadow:0 16px 42px rgba(0,0,0,.32);transition:.2s}.communication-launcher:hover{transform:translateY(-2px);border-color:var(--cyan)}.communication-launcher-icon{display:grid;place-items:center;width:23px;height:23px;border-radius:7px;background:rgba(69,215,239,.15);color:var(--cyan)}
.communication-drawer{position:fixed;z-index:45;right:0;top:0;bottom:0;width:390px;max-width:calc(100vw - 20px);background:linear-gradient(160deg,rgba(10,20,35,.995),rgba(13,28,47,.995));border-left:1px solid #28435e;box-shadow:-22px 0 60px rgba(0,0,0,.38);transform:translateX(102%);transition:transform .25s ease;display:flex;flex-direction:column;overflow:hidden}.communication-drawer.open{transform:translateX(0)}.communication-backdrop{position:fixed;inset:0;z-index:44;background:rgba(3,8,15,.54);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:.2s}.communication-backdrop.open{opacity:1;pointer-events:auto}
.communication-head{display:flex;align-items:center;justify-content:space-between;padding:18px 18px 14px;border-bottom:1px solid var(--line)}.communication-head small{display:block;color:var(--cyan);font-size:9px;letter-spacing:1.7px;font-weight:700}.communication-head strong{display:block;font:600 17px 'Space Grotesk';margin-top:3px}.communication-close{width:34px;height:34px;border:1px solid #2c425b;border-radius:9px;background:#15253a;color:#b7c9dd}.communication-close:hover{border-color:var(--cyan);color:#fff}
.communication-tabs{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:12px 14px;border-bottom:1px solid var(--line)}.communication-tab{border:1px solid #2a3e57;border-radius:9px;background:#111e31;color:#8fa5be;padding:9px;font-size:11px;font-weight:700}.communication-tab.active{border-color:#3faec7;background:linear-gradient(120deg,rgba(32,169,199,.18),rgba(52,121,232,.13));color:#dffbff}.communication-pane{display:none;min-height:0;flex:1;overflow:hidden}.communication-pane.active{display:flex;flex-direction:column}
.chat-account-picker{padding:13px 14px 10px;border-bottom:1px solid rgba(36,52,76,.72)}.chat-account-picker label{display:block;font-size:10px;color:#91a5bd;font-weight:700;margin-bottom:7px}.chat-account-picker select{width:100%;border:1px solid #2a3d56;background:#0b1626;color:#eaf3ff;border-radius:9px;padding:10px 11px;outline:none}.chat-account-picker select:focus{border-color:var(--cyan)}.chat-account-picker small{display:block;color:#6f859f;font-size:9px;margin-top:7px}.chat-status{padding:8px 14px;background:#0c1929;color:#7691ab;font-size:9px;border-bottom:1px solid rgba(36,52,76,.55)}.chat-status.error{color:#ff9eae;background:#281722}.chat-messages{flex:1;min-height:180px;overflow-y:auto;padding:15px 13px;display:flex;flex-direction:column;gap:10px;scrollbar-width:thin;scrollbar-color:#2d4b66 transparent}.chat-message{max-width:84%}.chat-message.mine{align-self:flex-end}.chat-message.theirs{align-self:flex-start}.chat-message-meta{display:flex;align-items:center;gap:8px;margin:0 5px 4px;font-size:9px;color:#6f859f}.chat-message.mine .chat-message-meta{justify-content:flex-end}.chat-message-meta b{color:#9db3ca;font-size:9px}.chat-bubble{border:1px solid #293e56;background:#132237;border-radius:12px 12px 12px 4px;padding:9px 11px;color:#d7e4f2;font-size:11px;line-height:1.55;overflow-wrap:anywhere}.chat-message.mine .chat-bubble{border-color:#2f758d;background:linear-gradient(135deg,#153d4d,#18436d);border-radius:12px 12px 4px 12px;color:#effcff}.chat-empty{margin:auto;text-align:center;color:#748ba5;font-size:11px;padding:30px 12px}.chat-empty.error{color:#ff9eae}.chat-composer{display:grid;grid-template-columns:1fr auto;gap:8px;padding:12px 13px 15px;border-top:1px solid var(--line);background:#0c1727}.chat-composer textarea{resize:none;max-height:110px;border:1px solid #2b3e57;background:#081321;color:#edf6ff;border-radius:10px;padding:10px 11px;outline:none;line-height:1.45}.chat-composer textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(69,215,239,.1)}.chat-send{align-self:end;border:0;border-radius:9px;padding:11px 13px;background:linear-gradient(120deg,#20a9c7,#3479e8);color:#fff;font-size:10px;font-weight:800}.chat-send:disabled,.chat-composer textarea:disabled{opacity:.5;cursor:not-allowed}
.wa-web-card{margin:auto;padding:28px 24px;text-align:center;max-width:320px}.wa-web-icon{width:62px;height:62px;margin:0 auto 17px;display:grid;place-items:center;border:1px solid #2b8065;border-radius:18px;background:linear-gradient(135deg,#173c35,#16553f);color:#8ff0c9;font:700 18px 'Space Grotesk'}.wa-web-card h3{font:600 19px 'Space Grotesk';margin:0 0 10px}.wa-web-card p{color:#91a6bf;font-size:11px;line-height:1.75;margin:0 0 18px}.wa-web-card small{display:block;color:#667f99;font-size:9px;margin-top:13px}.wa-web-open{width:100%}
@media(max-width:1023px){.desktop-wa-tab,.desktop-wa-pane{display:none!important}.communication-tabs{grid-template-columns:1fr}.communication-drawer{width:min(390px,calc(100vw - 12px))}.communication-launcher{right:12px;bottom:14px}.communication-backdrop.open{display:block}}
@media(min-width:1024px){.communication-backdrop{display:none!important}}

/* SIMKERJA PB v1.42 — penanda notifikasi chat belum dibaca */
.communication-launcher{position:fixed}
.chat-notification-badge{position:absolute;right:-7px;top:-8px;min-width:22px;height:22px;padding:0 6px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:#ff496a;color:#fff;border:2px solid #0c1727;font-size:9px;font-weight:900;line-height:1;box-shadow:0 5px 16px rgba(255,73,106,.38)}
.chat-notification-badge[hidden],.chat-tab-badge[hidden],.chat-unread-summary[hidden]{display:none!important}
.communication-launcher.has-unread{border-color:rgba(255,93,119,.75);box-shadow:0 16px 42px rgba(0,0,0,.32),0 0 0 3px rgba(255,73,106,.1)}
.communication-launcher.has-unread .communication-launcher-icon{animation:chatNotifyPulse 1.6s ease-in-out infinite}
@keyframes chatNotifyPulse{0%,100%{box-shadow:0 0 0 0 rgba(255,73,106,0)}50%{box-shadow:0 0 0 6px rgba(255,73,106,.14)}}
.chat-tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:5px;border-radius:999px;background:#ff496a;color:#fff;font-size:8px;font-weight:900;vertical-align:middle}
.chat-unread-summary{margin-top:8px;padding:7px 9px;border:1px solid rgba(255,73,106,.25);border-radius:8px;background:rgba(255,73,106,.08);color:#ff9aae;font-size:9px;font-weight:700}
.chat-account-picker option.has-unread{font-weight:700}
/* v1.43 — metadata periode program pada daftar program kerja */
.program-period-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:5px}
.program-period-meta span{display:inline-flex;align-items:center;padding:3px 8px;border:1px solid rgba(69,215,239,.18);border-radius:999px;background:rgba(69,215,239,.06);color:var(--muted,#8fa6bd);font-size:11px;line-height:1.25;white-space:nowrap}
@media(max-width:640px){.program-period-meta{gap:5px}.program-period-meta span{font-size:10px;padding:3px 6px}}


/* SIMKERJA PB v1.44 — Kalender Pendidikan PB+ */
.calendar-login-btn{width:100%;margin-top:12px;padding:11px 13px;border:1px solid rgba(69,215,239,.24);background:linear-gradient(120deg,rgba(20,48,70,.92),rgba(22,39,67,.96));color:#dffaff;justify-content:flex-start;text-align:left;box-shadow:inset 0 1px rgba(255,255,255,.025)}
.calendar-login-btn:hover{border-color:rgba(69,215,239,.55);background:linear-gradient(120deg,#173e55,#1c3964);transform:translateY(-1px)}
.calendar-login-btn .calendar-login-icon{display:grid;place-items:center;width:35px;height:35px;border-radius:9px;background:rgba(69,215,239,.1);border:1px solid rgba(69,215,239,.2);color:var(--cyan);font-size:17px;flex:0 0 auto}
.calendar-login-btn>span:nth-child(2){display:block;min-width:0;flex:1}.calendar-login-btn b{display:block;font-size:11px;color:#ecfbff}.calendar-login-btn small{display:block;margin-top:3px;color:#82a5bd;font-size:9px;font-weight:500;white-space:normal}.calendar-login-btn i{font-style:normal;color:#6fbdd1}
.education-calendar-bg{min-height:100vh;background:radial-gradient(ellipse at 50% -10%,#173d5d 0,transparent 40%),radial-gradient(circle at 100% 20%,rgba(68,140,255,.08),transparent 30%),var(--bg)}
.calendar-public-topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:15px clamp(16px,4vw,54px);border-bottom:1px solid rgba(69,215,239,.12);background:rgba(8,15,29,.9);backdrop-filter:blur(18px)}
.calendar-public-brand{display:flex;align-items:center;gap:12px;min-width:0}.calendar-public-brand img{width:46px;height:46px;object-fit:contain;background:#fff;border-radius:12px;padding:3px}.calendar-public-brand span{display:block;color:var(--cyan);font-size:9px;font-weight:800;letter-spacing:1.45px}.calendar-public-brand strong{display:block;margin-top:3px;font:600 15px 'Space Grotesk';white-space:nowrap}.calendar-back-login{flex:0 0 auto}
.calendar-public-shell{width:min(1780px,100%);margin:auto;padding:28px clamp(16px,4vw,54px) 50px}
.calendar-hero{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:28px;padding:29px 31px;margin-bottom:16px;border:1px solid #28506b;border-radius:18px;background:linear-gradient(115deg,rgba(18,45,69,.96),rgba(13,25,43,.97) 58%,rgba(19,51,77,.86))}.calendar-hero:after{content:'';position:absolute;width:260px;height:260px;right:4%;top:-190px;border:1px solid rgba(69,215,239,.19);border-radius:50%;box-shadow:0 0 0 32px rgba(69,215,239,.025),0 0 0 65px rgba(69,215,239,.014)}
.calendar-hero>div{position:relative;z-index:1}.calendar-hero h1{margin:0;font:700 clamp(27px,4vw,42px) 'Space Grotesk';letter-spacing:-1px}.calendar-hero h1 span{color:var(--cyan)}.calendar-hero p:not(.eyebrow){max-width:760px;color:#a9bdd4;line-height:1.7;margin:10px 0 0;font-size:12px}
.calendar-source-card{display:flex;align-items:flex-start;gap:11px;max-width:360px;padding:14px 16px;border:1px solid rgba(69,215,239,.17);border-radius:12px;background:rgba(8,21,36,.54)}.calendar-source-card .live-dot{font-size:10px;margin-top:2px}.calendar-source-card b{display:block;font-size:11px}.calendar-source-card small{display:block;color:#7894ab;font-size:9px;line-height:1.6;margin-top:4px}
.calendar-legend{display:flex;align-items:center;gap:9px 18px;flex-wrap:wrap;margin:0 0 22px;padding:11px 14px;border:1px solid rgba(145,163,189,.12);border-radius:11px;background:rgba(12,24,40,.68);color:#8fa6bf;font-size:10px}.calendar-legend span{display:inline-flex;align-items:center;gap:7px}.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.legend-dot.holiday{background:var(--red)}.legend-dot.observance{background:var(--amber)}.legend-dot.program{background:var(--cyan)}.legend-dot.today{background:transparent;border:2px solid var(--cyan);width:9px;height:9px}
.calendar-year-section{margin-top:28px}.calendar-year-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:13px}.calendar-year-head h2{font:700 25px 'Space Grotesk';margin:0}.calendar-year-head span{color:#6f849f;font-size:10px;margin-bottom:2px}.calendar-month-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.calendar-month-card{min-width:0;overflow:hidden;border:1px solid #263b54;border-radius:14px;background:linear-gradient(155deg,rgba(17,30,49,.98),rgba(11,21,36,.98));box-shadow:0 8px 32px rgba(0,0,0,.08)}.calendar-month-card>header{display:flex;align-items:center;justify-content:space-between;padding:14px 15px;border-bottom:1px solid rgba(145,163,189,.1);background:linear-gradient(100deg,rgba(69,215,239,.055),transparent)}.calendar-month-card h3{font:600 14px 'Space Grotesk';margin:0}.calendar-month-card>header span{font:700 9px 'Space Grotesk';color:#68849f;border:1px solid rgba(145,163,189,.12);border-radius:6px;padding:4px 7px}
.calendar-weekdays,.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-weekdays{padding:8px 7px 4px}.calendar-weekdays span{text-align:center;color:#657d97;font-size:8px;font-weight:800;text-transform:uppercase}.calendar-weekdays .sunday{color:#c47988}.calendar-days{padding:4px 7px 9px;gap:3px}
.calendar-day{position:relative;min-width:0;min-height:73px;padding:6px 5px;border:1px solid transparent;border-radius:8px;background:rgba(8,18,32,.5);color:#dbe8f5;text-align:left;overflow:hidden;transition:border-color .16s,background .16s,transform .16s}.calendar-day:not(.empty-day):hover{z-index:2;border-color:rgba(69,215,239,.42);background:#132840;transform:translateY(-1px)}.calendar-day.empty-day{background:transparent;pointer-events:none}.calendar-day .day-number{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:7px;font:700 10px 'Space Grotesk'}.calendar-day.is-sunday .day-number{color:#ff8799}.calendar-day.is-today{border-color:rgba(69,215,239,.48);box-shadow:inset 0 0 0 1px rgba(69,215,239,.09)}.calendar-day.is-today .day-number{background:var(--cyan);color:#07111d}.calendar-day.has-holiday:not(.is-today) .day-number{color:#ff9eb0;background:rgba(255,113,135,.08)}
.day-holidays{display:block;margin-top:3px;min-width:0}.day-holidays small{display:block;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#dc8d9b;font-size:6.8px;line-height:1.25}.day-holidays small.observance{color:#d4ad68}.day-holidays small.more-events{color:#738da6}
.program-count-badge{position:absolute;left:5px;right:5px;bottom:5px;display:block;padding:3px 4px;border-radius:5px;background:rgba(69,215,239,.1);border:1px solid rgba(69,215,239,.17);color:#77e7f7;font-size:6.8px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}
.calendar-public-note{margin-top:20px;padding:15px 18px;border:1px solid rgba(145,163,189,.12);border-radius:12px;background:rgba(11,23,39,.72)}.calendar-public-note b{font-size:11px;color:#cbe7f2}.calendar-public-note p{margin:6px 0 0;color:#738ca5;font-size:10px;line-height:1.65}
.calendar-modal[hidden]{display:none}.calendar-modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:18px}.calendar-modal-backdrop{position:absolute;inset:0;border:0;background:rgba(2,8,16,.79);backdrop-filter:blur(7px)}.calendar-modal-card{position:relative;z-index:1;width:min(760px,100%);max-height:min(86vh,780px);overflow:auto;border:1px solid #31506b;border-radius:17px;background:linear-gradient(150deg,#111f33,#0a1525);box-shadow:0 30px 100px rgba(0,0,0,.55)}.calendar-modal-card>header{position:sticky;top:0;z-index:2;display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:19px 20px;border-bottom:1px solid rgba(145,163,189,.13);background:rgba(14,27,45,.95);backdrop-filter:blur(12px)}.calendar-modal-card h2{font:600 19px 'Space Grotesk';margin:0}.calendar-modal-close{width:34px;height:34px;border:1px solid #344a63;border-radius:9px;background:#14243a;color:#b7cbdf;font-size:21px;line-height:1}.calendar-modal-close:hover{border-color:var(--cyan);color:#fff}.calendar-modal-open{overflow:hidden}
.calendar-selected-holidays{padding:12px 18px 0}.calendar-selected-event{display:flex;align-items:center;gap:9px;padding:8px 10px;margin-bottom:6px;border:1px solid rgba(255,199,107,.12);border-radius:8px;background:rgba(255,199,107,.035)}.calendar-selected-event span{flex:0 0 auto;padding:3px 6px;border-radius:5px;background:rgba(255,199,107,.09);color:#e6bb72;font-size:7px;font-weight:800;text-transform:uppercase}.calendar-selected-event b{font-size:10px;font-weight:600;color:#cbd9e7}
.calendar-program-list{padding:16px 18px 20px}.calendar-loading{padding:38px;text-align:center;color:#7890a9;font-size:11px}.calendar-program-card{padding:14px;margin-bottom:9px;border:1px solid rgba(145,163,189,.13);border-radius:11px;background:rgba(14,28,46,.78)}.calendar-program-card:last-child{margin-bottom:0}.calendar-program-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}.calendar-program-head h3{margin:0;font:600 13px 'Space Grotesk';color:#ecf6ff}.calendar-program-head small{display:block;margin-top:5px;color:#738da7;font-size:9px;line-height:1.45}.calendar-program-status{flex:0 0 auto;padding:5px 8px;border:1px solid rgba(69,215,239,.15);border-radius:7px;background:rgba(69,215,239,.055);color:#80deec;font-size:8px;font-weight:800}.calendar-program-creator{display:flex;align-items:center;gap:9px;margin-top:13px;padding-top:11px;border-top:1px solid rgba(145,163,189,.09)}.calendar-program-avatar{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:#17344a;color:var(--cyan)}.calendar-program-creator b{display:block;font-size:10px}.calendar-program-creator small{display:block;margin-top:2px;color:#6f879f;font-size:8px}.calendar-program-empty{text-align:center;padding:34px 16px;color:#7e94ac}.calendar-program-empty>span{display:block;color:#4ea9bf;font-size:28px;margin-bottom:9px}.calendar-program-empty b{display:block;color:#bdcddd;font-size:11px}.calendar-program-empty p{font-size:9px;margin:6px 0 0}
@media(max-width:1250px){.calendar-month-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-day{min-height:78px}}
@media(max-width:800px){.calendar-public-topbar{padding:12px 14px}.calendar-public-brand strong{font-size:13px}.calendar-back-login{padding:8px 9px;font-size:9px}.calendar-public-shell{padding:18px 13px 35px}.calendar-hero{padding:21px;align-items:flex-start;flex-direction:column}.calendar-source-card{max-width:none;width:100%}.calendar-month-grid{grid-template-columns:1fr}.calendar-day{min-height:76px}.calendar-year-head{align-items:flex-start}.calendar-year-head span{display:none}.calendar-program-head{flex-direction:column;gap:8px}.calendar-program-status{align-self:flex-start}}
@media(max-width:480px){.calendar-public-brand img{width:38px;height:38px}.calendar-public-brand span{font-size:7px}.calendar-public-brand strong{font-size:11px}.calendar-back-login{max-width:130px;white-space:normal;text-align:center}.calendar-day{min-height:66px;padding:4px 3px}.calendar-day .day-number{width:19px;height:19px;font-size:9px}.day-holidays small{font-size:6px}.program-count-badge{left:3px;right:3px;bottom:3px;font-size:6px}.calendar-days{gap:2px;padding-left:5px;padding-right:5px}.calendar-modal{padding:9px}.calendar-modal-card>header{padding:15px}.calendar-selected-holidays,.calendar-program-list{padding-left:13px;padding-right:13px}}

/* v1.45 — Dokumentasi program kerja */
.program-results-body{color:var(--text)}
.program-results-main{max-width:1080px;margin:0 auto;padding:28px 20px}
.program-results-main .welcome{margin-top:24px}
.program-results-main .welcome h1{font-size:clamp(23px,4vw,32px);line-height:1.25}
.program-results-main .panel{margin:20px 0}
.program-results-main .panel-head{flex-wrap:wrap;gap:12px}
.program-results-main .program-result-prose{line-height:1.8;overflow-wrap:anywhere;white-space:normal}
.program-result-file{padding:20px 22px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px}
.program-result-file h4{margin:0 0 8px;overflow-wrap:anywhere}
.program-result-file .actions{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}
.program-results-main input[type=file]{max-width:100%}
.program-results-main #upload-error{color:var(--red);margin:0}
@media(max-width:650px){.program-results-main{padding:18px 12px}.program-result-file{grid-template-columns:1fr}.program-results-main .panel{padding:0}.program-results-main .panel-head,.program-results-main .form-grid{padding:18px}.program-results-main .welcome{padding:20px}.program-results-main .form-grid{grid-template-columns:1fr}.program-results-main .span-2{grid-column:1/-1}}

.program-results-main .panel>.program-result-prose{padding:22px}.program-results-main .panel>small,.program-results-main .panel>p.muted{display:block;margin:0 22px 20px}

/* v1.46 — Serah terima pengajuan */
.handover-main{max-width:1100px;margin:auto;padding:28px 20px}.handover-toolbar{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:24px}.handover-main .welcome h1{font-size:clamp(23px,4vw,32px)}.handover-main .panel-head{flex-wrap:wrap}.handover-main .welcome p{overflow-wrap:anywhere}.handover-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;padding:22px}.handover-photo{min-width:0;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}.handover-photo img{width:100%;height:180px;object-fit:contain;background:var(--bg);border-radius:8px}.handover-photo small{display:block;overflow-wrap:anywhere;color:var(--muted);margin:8px 0}.handover-photo form{margin:12px 0 0}.handover-photo .btn{margin-top:8px}.handover-empty{padding:0 22px 20px}.handover-main button[disabled]{opacity:.55;cursor:not-allowed}.handover-main #photo-error{color:var(--red)}@media(max-width:850px){.handover-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.handover-main{padding:18px 12px}.handover-main .form-grid{grid-template-columns:1fr}.handover-main .span-2{grid-column:1/-1}.handover-gallery{grid-template-columns:1fr}.handover-main .panel-head{align-items:flex-start}.handover-main .welcome{padding:22px}.handover-toolbar .btn{max-width:100%;white-space:normal}}

/* v1.47 — API inventaris */
.api-guide{padding:8px 22px 22px;line-height:1.8;overflow-wrap:anywhere}.api-guide code{font-size:12px}.api-guide pre{white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid var(--line);background:var(--bg);padding:16px;border-radius:10px;font-size:12px;max-width:100%}#new-api-token{font-family:monospace}.api-guide .table-wrap{max-width:100%}
