:root{--bg-color:#f8fafc;--form-bg:#fff;--form-border:#e2e8f0;--text-primary:#0f172a;--text-secondary:#475569;--input-bg:#f8fafc;--input-border:#cbd5e1;--primary:#008a27;--primary-hover:#006b1e;--yellow-highlight:#ffde00;--font-main:"Inter", system-ui, -apple-system, sans-serif;--fs-title:1.75rem;--fs-section:1.15rem;--fs-body:.9rem;--fs-small:.8rem;--fs-sub:.75rem}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-main);background-color:var(--bg-color);color:var(--text-primary);min-height:100vh}.login-split-container{background:#fff;width:100%;min-height:100vh;display:flex}.login-image-side{display:none}@media (width>=900px){.login-image-side{background-image:url(/login-bg-split.jpg);background-position:50%;background-repeat:no-repeat;background-size:cover;flex:1;display:block;position:relative}}.login-form-side{background-color:#fff;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:2rem;display:flex}.login-card-clean{color:#1e293b;background:0 0;width:100%;max-width:380px}.login-card-clean .form-header h1{color:#1e293b;margin-bottom:.5rem;font-size:1.75rem;font-weight:800}.login-card-clean .form-header p{color:#64748b;margin-bottom:2.5rem;font-size:.95rem}.login-card-clean .form-group label{color:#334155;margin-bottom:.5rem;font-size:.85rem;font-weight:600}.login-card-clean .form-control{color:#0f172a;background:#f8fafc;border:1px solid #cbd5e1;border-radius:8px;margin-bottom:1.5rem;padding:.875rem 1rem;font-size:.95rem}.login-card-clean .form-control:focus{background:#fff;border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b26}.login-card-clean .form-control::placeholder{color:#94a3b8}.login-card-clean .submit-btn{color:#fff;cursor:pointer;background:#f59e0b;border:none;border-radius:8px;width:100%;margin-top:1rem;padding:1rem;font-size:1rem;font-weight:700;transition:all .2s}.login-card-clean .submit-btn:hover{background:#d97706;transform:translateY(-1px)}.app-layout{min-height:100vh;display:flex}.sidebar{border-right:1px solid var(--form-border);z-index:100;background:#fff;flex-direction:column;width:260px;height:100dvh;display:flex;position:fixed;top:0;box-shadow:2px 0 10px #0000000d}.sidebar-header{border-bottom:1px solid var(--form-border);text-align:center;flex-shrink:0;padding:2rem 1.5rem}.sidebar-header h2{color:var(--yellow-highlight);letter-spacing:1px;font-size:1.5rem;font-weight:700}.sidebar-header p{color:var(--text-secondary);margin-top:.25rem;font-size:.85rem}.sidebar-nav{overscroll-behavior:contain;flex:1;min-height:0;padding:1rem .75rem;overflow-y:auto}.sidebar-nav ul{flex-direction:column;gap:.2rem;list-style:none;display:flex}.nav-link{color:var(--text-secondary);border-radius:8px;align-items:center;gap:.75rem;padding:.55rem .85rem;font-size:.9rem;font-weight:500;text-decoration:none;transition:all .3s;display:flex}.nav-link:hover,.nav-link.active{background:var(--primary);color:#fff}.sidebar-footer{border-top:1px solid var(--form-border);flex-shrink:0;padding:1rem .75rem}.logout-btn{color:#ef4444;cursor:pointer;background:#ef44441a;border:1px solid #ef444433;border-radius:8px;justify-content:center;align-items:center;gap:.6rem;width:100%;padding:.55rem;font-family:inherit;font-size:.9rem;font-weight:600;transition:all .3s;display:flex}.logout-btn:hover{color:#fff;background:#ef4444}.main-content{flex:1;width:calc(100% - 260px);margin-left:260px;padding:2rem}.dashboard-container{max-width:1200px;margin:0 auto;animation:.4s ease-out fadeIn}.dashboard-header{margin-bottom:2rem}.dashboard-header h1,.page-title{font-size:var(--fs-title);margin-bottom:.5rem;font-weight:700}.dashboard-header p{color:var(--text-secondary)}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:3rem;display:grid}.stat-card{background:var(--form-bg);border:1px solid var(--form-border);border-radius:12px;align-items:center;gap:1.5rem;padding:1.5rem;display:flex;box-shadow:0 4px 6px -1px #0000000d}.stat-icon{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:54px;height:54px;display:flex}.stat-details{min-width:0}.stat-details h3{color:var(--text-secondary);margin-bottom:.25rem;font-size:.9rem;font-weight:500}.stat-number{color:var(--text-primary);font-size:1.8rem;font-weight:700}.section-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.section-header h2,.card-title{font-size:var(--fs-section);font-weight:600}.cell-sub{font-size:var(--fs-sub);color:var(--text-secondary);margin-top:.15rem}.btn-primary{background:var(--primary);color:#fff;font-size:var(--fs-body);cursor:pointer;border:none;border-radius:6px;padding:.5rem 1rem;font-weight:500;text-decoration:none;transition:all .2s}.btn-primary:hover{background:var(--primary-hover)}.table-responsive{overflow-x:auto}.data-table{border-collapse:collapse;width:100%}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--form-border);padding:1rem}.data-table th{color:var(--text-secondary);font-weight:500;font-size:var(--fs-small);text-transform:uppercase}.data-table td{font-size:var(--fs-body)}.status-badge{font-size:var(--fs-small);border-radius:99px;padding:.25rem .75rem;font-weight:600}.status-badge.approved{color:#22c55e;background:#22c55e33}.status-badge.pending,.status-badge.pending-sm-bm{color:#eab308;background:#eab30833}.status-badge.pending-finance{color:#f59e0b;background:#f59e0b33}.status-badge.pending-direktur{color:#f97316;background:#f9731633}.status-badge.rejected{color:#ef4444;background:#ef444433}.status-badge.revised{color:#8b5cf6;background:#8b5cf633}.btn-action{color:var(--primary);border:1px solid var(--primary);cursor:pointer;font-family:inherit;font-size:var(--fs-small);background:0 0;border-radius:4px;padding:.25rem .75rem;font-weight:500;transition:all .2s;display:inline-block}.btn-action:hover{background:var(--primary);color:#fff}.app-container{width:100%;max-width:900px;margin:0 auto}.sas-form-card{background:var(--form-bg);border:1px solid var(--form-border);border-radius:12px;padding:2.5rem;animation:.4s ease-out fadeIn;box-shadow:0 10px 15px -3px #0000000d,0 4px 6px -2px #00000006}.form-header{text-align:center;border-bottom:2px solid var(--form-border);margin-bottom:2.5rem;padding-bottom:1.5rem}.form-header h1{font-size:var(--fs-title);color:var(--primary);letter-spacing:1px;text-transform:uppercase;margin-bottom:.5rem;font-weight:700}.form-header p{color:var(--text-secondary);font-size:.95rem}.form-grid{grid-template-columns:1fr;gap:1.5rem;display:grid}@media print,(width>=768px){.form-grid{grid-template-columns:1fr 1fr}.full-width{grid-column:span 2}}.form-group{flex-direction:column;gap:.5rem;display:flex}.form-group label{color:var(--text-primary);font-size:.9rem;font-weight:500}.form-control{background:var(--input-bg);border:1px solid var(--input-border);color:var(--text-primary);font-family:var(--font-main);font-size:var(--fs-body);border-radius:8px;width:100%;padding:.75rem 1rem;transition:all .3s}.form-control:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #3b82f640}.form-control::placeholder{color:#94a3b8;opacity:1}select.form-control{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2394a3b8'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E");background-position:right 1rem center;background-repeat:no-repeat;background-size:1.2em}select.form-control option{background:var(--bg-color);color:var(--text-primary)}textarea.form-control{resize:vertical;min-height:100px}.approval-section{grid-template-columns:1fr;gap:2rem;margin-top:3rem;display:grid}@media (width>=600px){.approval-section{grid-template-columns:1fr 1fr}}.approval-box{border:1px solid var(--form-border);background:#0003;border-radius:12px;flex-direction:column;gap:1rem;padding:1.5rem;display:flex}.approval-box h3{color:var(--text-primary);border-bottom:1px solid var(--form-border);text-align:center;padding-bottom:.5rem;font-size:1.1rem}.submit-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;width:100%;margin-top:2.5rem;padding:1rem;font-size:1.1rem;font-weight:600;transition:all .3s;box-shadow:0 4px 6px -1px #3b82f666}.submit-btn:hover{background:var(--primary-hover);transform:translateY(-2px);box-shadow:0 10px 15px -3px #3b82f680}.submit-btn:active{transform:translateY(0)}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.table-responsive{-webkit-overflow-scrolling:touch;margin-bottom:1rem;overflow-x:auto}.mobile-header{display:none}@media screen and (width<=768px){.app-layout{flex-direction:column;padding-bottom:70px}.mobile-header{border-bottom:1px solid var(--form-border);z-index:90;box-shadow:var(--shadow-sm);background:#fff;justify-content:center;align-items:center;padding:1rem;display:flex;position:sticky;top:0}.mobile-logo{object-fit:contain;width:auto;height:40px}.sidebar{border-right:none;border-top:1px solid var(--form-border);z-index:100;background:#fff;flex-direction:row;width:100%;height:70px;position:fixed;top:auto;bottom:0;left:0;box-shadow:0 -4px 10px #0000000d}.sidebar-header{display:none}.sidebar-nav{flex:1;align-items:center;min-width:0;padding:0;display:flex;overflow:visible}.sidebar-nav ul{-webkit-overflow-scrolling:touch;flex-direction:row;justify-content:flex-start;align-items:center;gap:.25rem;width:100%;height:100%;margin:0;padding:0 .5rem;overflow:auto hidden}.sidebar-nav ul::-webkit-scrollbar{display:none}.nav-link{text-align:center;color:var(--text-secondary);background:0 0;border-radius:8px;flex-direction:column;flex-shrink:0;justify-content:center;gap:.35rem;min-width:64px;padding:.5rem;font-size:.65rem;transition:all .2s}.nav-link:hover,.nav-link:active{color:var(--primary);background:#22c55e0d}.nav-link.active{color:var(--primary);background:#22c55e1a}.nav-link span{display:block}.sidebar-footer{border-top:none;justify-content:center;align-items:center;margin-right:.5rem;padding:0;display:flex}.logout-btn{color:var(--text-secondary);background:0 0;border:none;border-radius:8px;flex-direction:column;gap:.35rem;padding:.5rem;font-size:.65rem;transition:all .2s}.logout-btn span{display:block}.logout-btn:hover,.logout-btn:active{color:#dc2626;background:#dc26261a}.main-content{width:100%;margin-left:0;padding:1rem}.form-grid{grid-template-columns:1fr}.sas-form-card{padding:1.5rem}.approval-section{grid-template-columns:1fr}.stats-grid{grid-template-columns:1fr;gap:1rem}.print-table{display:block;width:100%!important;min-width:0!important}.print-table tbody,.print-table thead,.print-table th,.print-table td,.print-table tr{display:block;width:100%!important}.print-table tr{border:1px solid var(--form-border);border-radius:8px;margin-bottom:1rem;overflow:hidden}.print-table td,.print-table th{position:relative;border:none!important;border-bottom:1px solid var(--form-border)!important;text-align:left!important;padding:.75rem!important}.print-table td:last-child{border-bottom:none!important}.print-table .hide-on-mobile,.print-table td:empty{display:none!important}}@media print{*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}body{background-color:#fff}.sidebar,.mobile-header,.no-print{display:none!important}.main-content,.app-layout{width:100%!important;margin:0!important;padding:0!important}.dashboard-container{max-width:none!important;margin:0!important;padding:0!important}.table-responsive{overflow-x:visible!important}.print-doc{width:100%!important;max-width:none!important;box-shadow:none!important;border-radius:0!important;margin:0!important;padding:0!important}.print-doc>table,.print-doc tr,.print-doc img{break-inside:avoid}.print-doc.spk-doc{flex-direction:column;min-height:279mm;display:flex!important}.print-doc.spk-doc>table{flex:auto}.print-doc.spk-doc>.spk-doc-head{flex:none}.spk-pair>table{height:auto}.print-doc.spk-doc{zoom:.82;min-height:338mm}.print-doc .spk-sig{height:64px!important;margin-bottom:2px!important}.print-doc .spk-delivery{min-height:0!important}.print-doc .spk-val{min-height:0!important;padding-top:0!important;padding-bottom:0!important}.print-doc .spk-ketentuan{width:48%!important;line-height:1.3!important}.print-doc .spk-ketentuan>div{margin-bottom:1px!important}.print-doc .spk-approval-info{margin-top:4px!important;padding:4px 8px!important}.print-doc.spk-doc td{padding-top:2px!important;padding-bottom:2px!important}.main-content{padding:0!important}.dashboard-container{animation:none!important}}@page{size:A4 portrait;margin:8mm}.app-topbar{z-index:50;border-bottom:1px solid var(--form-border);background:#fff;justify-content:space-between;align-items:center;gap:1rem;margin:-2rem -2rem 1.5rem;padding:.75rem 2rem;display:flex;position:sticky;top:0;box-shadow:0 1px 4px #0000000a}.app-topbar-title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:1.1rem;font-weight:700;overflow:hidden}.app-topbar-right{align-items:center;gap:1rem;display:flex}.app-topbar-user-wrap{border-left:1px solid var(--form-border);padding-left:1rem;position:relative}.app-topbar-user{cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:.6rem;padding:.3rem .5rem;display:flex}.app-topbar-user:hover{background:#f1f5f9}.app-topbar-chevron{color:var(--text-secondary)}.user-menu{border:1px solid var(--form-border);z-index:200;background:#fff;border-radius:12px;min-width:230px;padding:.4rem;position:absolute;top:calc(100% + .5rem);right:0;box-shadow:0 10px 30px #0000001f}.user-menu-head{border-bottom:1px solid var(--form-border);color:var(--text-secondary);word-break:break-word;flex-direction:column;gap:.1rem;margin-bottom:.3rem;padding:.6rem .75rem .75rem;font-size:.8rem;display:flex}.user-menu-head strong{color:var(--text-primary);font-size:.9rem}.user-menu-item{cursor:pointer;width:100%;font:inherit;color:var(--text-primary);text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:.6rem;padding:.6rem .75rem;font-size:.9rem;display:flex}.user-menu-item:hover{background:#f1f5f9}.user-menu-item.danger{color:#dc2626}.user-menu-item.danger:hover{background:#dc262614}.profile-page{max-width:1000px}.profile-hero{background:linear-gradient(135deg,#008a2714,#008a2705),#fff;align-items:center;gap:1.5rem;margin-bottom:1.5rem;padding:1.75rem 2rem;display:flex}.profile-avatar{background:var(--primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:76px;height:76px;display:flex;box-shadow:0 6px 16px #008a2740}.profile-hero-text{min-width:0}.profile-hero-text h1{color:var(--text-primary);word-break:break-word;margin:0 0 .5rem;font-size:1.5rem}.profile-hero-text p{color:var(--text-secondary);margin:.6rem 0 0;font-size:.8rem}.profile-hero-meta{flex-wrap:wrap;gap:.5rem;display:flex}.profile-role,.profile-email{white-space:nowrap;border-radius:999px;align-items:center;gap:.35rem;padding:.25rem .7rem;font-size:.8rem;font-weight:600;display:inline-flex}.profile-role{color:var(--primary);background:#008a271f}.profile-email{color:var(--text-secondary);text-overflow:ellipsis;background:#f1f5f9;max-width:100%;overflow:hidden}.profile-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:1.5rem;display:grid}.profile-card{padding:1.75rem}.profile-card-head{align-items:flex-start;gap:.9rem;margin-bottom:1.25rem;display:flex}.profile-card-icon{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;display:flex}.profile-card-head h2{color:var(--text-primary);margin:0 0 .25rem;font-size:1.1rem}.profile-card-head p{color:var(--text-secondary);margin:0;font-size:.85rem;line-height:1.45}.profile-card .form-group{margin-bottom:1rem}.profile-submit{width:100%;margin-top:.5rem}.profile-alert{color:#b91c1c;background:#fee2e2;border-radius:8px;margin-bottom:1rem;padding:.65rem .85rem;font-size:.875rem}.profile-pw{position:relative}.profile-pw .form-control{padding-right:2.5rem}.profile-pw button{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;padding:.3rem;display:flex;position:absolute;top:50%;right:.5rem;transform:translateY(-50%)}@media screen and (width<=768px){.profile-grid{grid-template-columns:1fr;gap:1rem}.profile-hero{text-align:center;flex-direction:column;padding:1.5rem 1rem}.profile-hero-meta{justify-content:center}.profile-card{padding:1.25rem}}.app-topbar-avatar{background:var(--primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-weight:700;display:flex}.app-topbar-user-text{flex-direction:column;line-height:1.2;display:flex}.app-topbar-name{color:var(--text-primary);white-space:nowrap;font-size:.9rem;font-weight:600}.app-topbar-role{color:var(--text-secondary);white-space:nowrap;font-size:.75rem}@media screen and (width<=768px){.app-topbar-title,.app-topbar-user-text,.app-topbar-chevron{display:none}.app-topbar-right{gap:.5rem}.app-topbar-user-wrap{border-left:none;padding-left:0}.app-topbar-user{padding:0}.app-topbar{box-shadow:none;z-index:95;background:0 0;border-bottom:none;align-items:center;height:72px;margin:0;padding:0;position:fixed;top:0;right:.75rem}}.notif-wrapper{position:relative}.notif-bell-btn{border:1px solid var(--form-border);width:42px;height:42px;color:var(--text-secondary);cursor:pointer;background:#fff;border-radius:50%;justify-content:center;align-items:center;transition:all .2s;display:flex;position:relative}.notif-bell-btn:hover{color:var(--primary);border-color:var(--primary)}.notif-bell-btn.has-unread{color:var(--primary)}.notif-bell-btn.has-unread svg{transform-origin:top;animation:2.5s ease-in-out infinite notifRing}@keyframes notifRing{0%,80%,to{transform:rotate(0)}84%{transform:rotate(14deg)}88%{transform:rotate(-12deg)}92%{transform:rotate(8deg)}96%{transform:rotate(-4deg)}}.notif-badge{color:#fff;text-align:center;background:#ef4444;border:2px solid #fff;border-radius:10px;min-width:20px;height:20px;padding:0 5px;font-size:.7rem;font-weight:700;line-height:20px;position:absolute;top:-4px;right:-4px}.notif-panel{border:1px solid var(--form-border);z-index:200;background:#fff;border-radius:12px;flex-direction:column;width:380px;max-height:520px;animation:.15s ease-out fadeIn;display:flex;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden;box-shadow:0 12px 32px #0f172a26}@media screen and (width<=768px){.notif-panel{width:auto;max-height:calc(100vh - 152px);position:fixed;top:72px;left:.5rem;right:.5rem}}.notif-panel-header{border-bottom:1px solid var(--form-border);justify-content:space-between;align-items:center;padding:.875rem 1rem;display:flex}.notif-link-btn{color:var(--primary);cursor:pointer;background:0 0;border:none;align-items:center;gap:.3rem;font-family:inherit;font-size:.8rem;font-weight:600;display:flex}.notif-list{flex:1;overflow-y:auto}.notif-empty{color:var(--text-secondary);flex-direction:column;align-items:center;gap:.5rem;padding:2.5rem 1rem;font-size:.9rem;display:flex}.notif-item{text-align:left;cursor:pointer;background:#fff;border:none;border-bottom:1px solid #f1f5f9;align-items:flex-start;gap:.75rem;width:100%;padding:.75rem 1rem;font-family:inherit;transition:background .15s;display:flex}.notif-item:hover{background:#f8fafc}.notif-item.unread{background:#008a270d}.notif-item.unread:hover{background:#008a2717}.notif-item-icon{width:32px;height:32px;color:var(--text-secondary);background:#f1f5f9;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.notif-item-icon.type-spk{color:#2563eb;background:#3b82f61f}.notif-item-icon.type-sas{color:var(--primary);background:#008a271f}.notif-item-icon.type-incentive{color:#a16207;background:#eab30826}.notif-item-text{flex-direction:column;flex:1;gap:.15rem;min-width:0;display:flex}.notif-item-title{color:var(--text-primary);font-size:.875rem;font-weight:600}.notif-item-body{color:var(--text-secondary);overflow-wrap:anywhere;font-size:.8rem}.notif-item-time{color:#94a3b8;font-size:.72rem}.notif-dot{background:var(--primary);border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:6px}.notif-panel-footer{border-top:1px solid var(--form-border);background:#f8fafc;padding:.75rem 1rem}.notif-push-btn{border:1px solid var(--primary);background:var(--primary);color:#fff;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:.6rem;font-family:inherit;font-size:.82rem;font-weight:600;display:flex}.notif-push-btn.on{color:var(--text-secondary);border-color:var(--form-border);background:#fff}.notif-push-btn:disabled{color:#94a3b8;cursor:not-allowed;background:#e2e8f0;border-color:#e2e8f0}@media print{.app-topbar{display:none!important}}@media screen and (width<=768px){:root{--fs-title:1.4rem;--fs-section:1.05rem}}.btn-icon{justify-content:center;align-items:center;padding:.4rem;text-decoration:none;display:inline-flex;position:relative}.btn-icon[data-tooltip]:after{content:attr(data-tooltip);color:#fff;font-size:var(--fs-sub);white-space:nowrap;pointer-events:none;opacity:0;z-index:10;background:#0f172a;border-radius:4px;padding:.25rem .5rem;font-weight:500;transition:opacity .15s;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.btn-icon[data-tooltip]:hover:after,.btn-icon[data-tooltip]:focus-visible:after{opacity:1}.pdf-capture{box-shadow:none!important;border-radius:0!important;max-width:none!important;margin:0!important;padding:0!important}.pdf-capture.spk-doc{flex-direction:column;display:flex!important}.pdf-capture.spk-doc>table{flex:auto}.pdf-capture.spk-doc td{padding-top:2px!important;padding-bottom:2px!important}.pdf-capture .spk-sig{height:64px!important;margin-bottom:2px!important}.pdf-capture .spk-delivery{min-height:0!important}.pdf-capture .spk-val{min-height:0!important;padding-top:0!important;padding-bottom:0!important}.pdf-capture .spk-ketentuan{width:48%!important;line-height:1.3!important}.pdf-capture .spk-ketentuan>div{margin-bottom:1px!important}.pdf-capture .spk-approval-info{margin-top:4px!important;padding:4px 8px!important}.field-missing{outline-offset:1px;background-color:#fef2f2!important;outline:2px solid #ef4444!important}
