:root{--primary:#2563eb;--primary-dark:#1d4ed8;--danger:#dc2626;--bg:#f3f4f6;--sidebar-bg:#111827;--sidebar-text:#d1d5db;--border:#e5e7eb;--text:#1f2937;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}h1{margin:0 0 1rem;font-size:1.5rem}h2{margin:1.5rem 0 .75rem;font-size:1.15rem}h3{margin:1rem 0 .5rem;font-size:1rem}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--sidebar-bg);width:240px;color:var(--sidebar-text);flex-shrink:0;padding:1rem 0;overflow-y:auto}.sidebar-brand{color:#fff;padding:0 1.25rem 1rem;font-size:1.1rem;font-weight:700}.menu-group{margin-bottom:.25rem}.menu-group-header{cursor:pointer;text-transform:uppercase;letter-spacing:.05em;color:#6b7280;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:.5rem;width:100%;padding:.55rem 1.25rem;font-family:inherit;font-size:.68rem;font-weight:600;display:flex}.menu-group-header:hover{color:#d1d5db;background:#ffffff0a}.menu-group-label{flex:1;min-width:0}.menu-chevron{box-sizing:border-box;border-bottom:2px solid;border-right:2px solid;flex-shrink:0;width:7px;height:7px;margin-top:-3px;transition:transform .15s;transform:rotate(-45deg)}.menu-group.open .menu-chevron{margin-top:2px;transform:rotate(45deg)}.menu-group-items{padding-bottom:.35rem}.menu-item{color:var(--sidebar-text);align-items:center;padding:.5rem 1.25rem .5rem 2rem;font-size:.9rem;text-decoration:none;display:flex}.menu-item:hover{color:#fff;background:#1f2937}.menu-item.active{background:var(--primary);color:#fff}.menu-item .menu-badge{margin-left:auto}.sidebar-backdrop{display:none}.main-area{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--border);background:#fff;align-items:center;gap:1rem;padding:.75rem 1.25rem;display:flex}.topbar-spacer{flex:1}.hamburger{cursor:pointer;background:0 0;border:none;font-size:1.25rem;display:none}.user-name{font-size:.9rem;font-weight:600}.content{flex:1;padding:1.5rem}.page-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.btn{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:6px;padding:.45rem .9rem;font-size:.85rem}.btn:hover{background:#f9fafb}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-dark)}.btn-secondary{color:#fff;background:#4b5563;border-color:#4b5563}.btn-danger{color:var(--danger);border-color:#fca5a5}.btn-info{color:#0369a1;border-color:#7dd3fc}.btn-info:hover{background:#f0f9ff}.btn-sm{margin-right:.35rem;padding:.3rem .6rem;font-size:.8rem}.doc-links{flex-wrap:wrap;gap:.25rem;display:inline-flex}.doc-links .btn-sm{margin-right:0;padding:.15rem .4rem;font-size:.7rem}.btn-block{width:100%}.btn:disabled{opacity:.6;cursor:not-allowed}.search-bar{gap:.5rem;max-width:420px;margin-bottom:1rem;display:flex}.search-bar input{border:1px solid var(--border);border-radius:6px;flex:1;padding:.5rem .75rem}.table-wrap{border:1px solid var(--border);background:#fff;border-radius:8px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.88rem}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:.65rem .9rem}th{text-transform:capitalize;color:#4b5563;background:#f9fafb;font-weight:600}.col-actions{white-space:nowrap}.pagination{align-items:center;gap:1rem;margin-top:1rem;font-size:.85rem;display:flex}.card-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.stat-card{border:1px solid var(--border);background:#fff;border-radius:10px;padding:1rem 1.25rem}.stat-value{color:var(--primary);font-size:1.5rem;font-weight:700}.stat-label{color:#6b7280;margin-top:.25rem;font-size:.85rem}.stat-sub{color:#9ca3af;font-size:.75rem}.form-group{flex-direction:column;gap:.3rem;margin-bottom:.9rem;display:flex}.form-group label{color:#4b5563;font-size:.82rem;font-weight:600}.form-input{border:1px solid var(--border);border-radius:6px;width:100%;padding:.5rem .65rem;font-size:.88rem}.form-checkbox{width:18px;height:18px}.checkbox-label{cursor:pointer;color:#4b5563;align-items:center;gap:.45rem;font-size:.88rem;font-weight:600;display:flex}.form-row{gap:1rem;display:flex}.form-row .form-group{flex:1}.field-error{color:var(--danger);font-size:.78rem}.modal-backdrop{z-index:50;background:#0006;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:10px;width:100%;max-width:480px;max-height:90vh;padding:1.5rem;overflow-y:auto}.modal-lg{max-width:720px}.modal-view{max-width:640px}.view-grid{grid-template-columns:1fr 1fr;gap:.75rem 1.25rem;margin-top:1rem;display:grid}.view-item{min-width:0}.view-label{color:#6b7280;text-transform:uppercase;letter-spacing:.02em;margin-bottom:.15rem;font-size:.78rem;font-weight:600}.view-value{color:var(--text);word-break:break-word;font-size:.95rem}.view-pre{white-space:pre-wrap;margin:0;font-family:inherit;font-size:.95rem}.modal-actions{justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.perm-toggle{cursor:pointer;align-items:center;gap:.5rem;display:flex}.perm-toggle input{width:16px;height:16px}.perm-hint{color:#6b7280;margin:.15rem 0 0;font-size:.76rem}.perm-section{border:1px solid var(--border,#e5e7eb);border-radius:8px;padding:.75rem}.perm-section-head{justify-content:space-between;align-items:center;margin-bottom:.6rem;font-size:.82rem;font-weight:600;display:flex}.perm-actions{gap:.35rem;display:flex}.perm-group{margin-bottom:.6rem}.perm-group-title{text-transform:uppercase;color:#6b7280;margin-bottom:.3rem;font-size:.72rem;font-weight:700}.perm-items{flex-wrap:wrap;gap:.4rem;display:flex}.perm-chip{cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:999px;align-items:center;gap:.35rem;padding:.25rem .55rem;font-size:.78rem;display:inline-flex}.perm-chip:has(input:checked){color:#1d4ed8;background:#eff6ff;border-color:#3b82f6}.perm-chip input{width:14px;height:14px}.personil-row{grid-template-columns:2fr 1fr 1fr 1fr auto;align-items:center;gap:.5rem;margin-bottom:.5rem;display:grid}.alert{border-radius:6px;margin-bottom:1rem;padding:.65rem .9rem;font-size:.85rem}.alert-error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}.login-page{background:var(--sidebar-bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:#fff;border-radius:10px;width:100%;max-width:380px;padding:2rem}.login-card h1{text-align:center;margin-bottom:.25rem}.subtitle{text-align:center;color:#6b7280;margin-bottom:1.5rem;font-size:.9rem}.password-wrap{position:relative}.password-wrap .form-input{padding-right:2.6rem}.password-toggle{color:#6b7280;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;margin:0;padding:.35rem;transition:color .15s,background .15s;display:inline-flex;position:absolute;top:50%;right:.4rem;transform:translateY(-50%)}.password-toggle:hover{color:#2563eb;background:#2563eb14}@media (width<=768px){.sidebar{z-index:60;height:100dvh;padding-bottom:env(safe-area-inset-bottom);transition:left .2s;position:fixed;left:-240px}.sidebar.open{left:0;box-shadow:0 0 40px #00000073}.sidebar-backdrop{z-index:55;background:#0006;display:block;position:fixed;inset:0}.hamburger{display:block}.form-row{flex-direction:column}.form-row .form-group{flex:1}.form-row .form-group,.card .form-row>div{flex-basis:100%!important;width:100%!important}.summary-grid,.view-grid{grid-template-columns:1fr!important}.personil-row{grid-template-columns:1fr}.content{padding:.85rem}.nodin-form,.nodin-preview{width:100%}.topbar{gap:.5rem;padding:.6rem .75rem}.hamburger{padding:.15rem .45rem;font-size:1.4rem}.table-wrap{-webkit-overflow-scrolling:touch}th,td{padding:.5rem .6rem;font-size:.84rem}.modal{max-width:calc(100% - 1rem);padding:1.1rem}.modal-actions{flex-wrap:wrap}.view-grid{grid-template-columns:1fr;gap:.6rem 0}.ba-penanda-grid{grid-template-columns:1fr;gap:.75rem}.pagination{flex-wrap:wrap;gap:.5rem}.search-bar{max-width:100%}.tabs{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;overflow-x:auto}.tab{white-space:nowrap;flex-shrink:0}.login-card{padding:1.4rem}.card{padding:1rem}.card .profile-form,.profile-form{max-width:100%}.note-toolbar{flex-wrap:wrap}.form-input,input,select,textarea{font-size:16px}.ba-lampiran th,.ba-lampiran td{white-space:normal}}@media (width<=520px){.user-name{display:none}h1{font-size:1.2rem}h2{font-size:1.05rem}.stat-card{padding:.8rem .9rem}.stat-value{font-size:1.25rem}.chat-bubble{max-width:92%}.chat-composer-row{gap:.35rem}.chat-upload{padding:0 .45rem}.chat-input{font-size:16px}.page-header{flex-direction:column;align-items:stretch;gap:.6rem}.page-header .btn,.page-header a.btn{align-self:flex-start}.badge{white-space:normal}}.nodin-layout{align-items:flex-start;gap:1.5rem;display:flex}.nodin-form{flex:0 0 46%;min-width:0}.nodin-preview{flex-direction:column;flex:1;gap:.5rem;min-width:0;display:flex}.nodin-preview .modal-actions{margin-bottom:0}@media (width<=960px){.nodin-layout{flex-direction:column;gap:1.25rem}.nodin-form,.nodin-preview{flex:auto;width:100%}}.search-select{width:100%;position:relative}.search-select-control{position:relative}.search-select-input{padding-right:1.75rem}.search-select-caret{color:#6b7280;pointer-events:none;font-size:.7rem;position:absolute;top:50%;right:.6rem;transform:translateY(-50%)}.search-select-dropdown{z-index:50;border:1px solid var(--border,#d1d5db);background:#fff;border-radius:6px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden;box-shadow:0 8px 20px #0000001f}.search-select-search{border:none;border-bottom:1px solid #e5e7eb;outline:none;width:100%;padding:.55rem .7rem;font-size:.88rem}.search-select-list{max-height:220px;overflow-y:auto}.search-select-item{cursor:pointer;border-bottom:1px solid #f3f4f6;padding:.5rem .7rem}.search-select-item:hover{background:#f3f4f6}.search-select-item.selected{background:#e5edf9}.search-select-create{color:var(--primary,#0f7676);font-weight:600}.search-select-create:hover{background:#f0fdfa}.search-select-item-label{font-size:.88rem}.search-select-item-sub{color:#6b7280;font-size:.75rem}.search-select-empty{text-align:center;color:#6b7280;padding:.75rem;font-size:.85rem}.file-field{flex-direction:column;gap:.4rem;display:flex}.file-field-existing{color:#6b7280;align-items:center;gap:.6rem;font-size:.82rem;display:flex}.file-field-existing a{color:#0f7676;text-decoration:underline}.wa-hint{color:#6b7280;margin:0 0 .5rem;font-size:.85rem}.wa-text{white-space:pre-wrap;word-break:break-word;background:#f8fafc;border:1px solid #e5e7eb;border-radius:8px;max-height:50vh;margin-bottom:.75rem;padding:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8rem;line-height:1.5;overflow-y:auto}.modal-wa{max-width:560px}.modal-actions a.btn{text-align:center;text-decoration:none}.addendum-panel{border-top:1px solid #eef2f7;margin-top:1.25rem;padding-top:.75rem}.addendum-head{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.addendum-head h3{margin:0}.addendum-latest{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;margin-bottom:.75rem;padding:.5rem .75rem;font-size:.85rem}.share-panel{border-top:1px solid #eef2f7;margin-top:1.25rem;padding-top:.75rem}.share-panel h3{margin:0 0 .6rem}.share-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.share-url{flex:360px}.share-url .form-input{background:#f8fafc;font-size:.82rem}.share-page{background:#f3f4f6;justify-content:center;min-height:100vh;padding:2rem 1rem;display:flex}.share-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;width:100%;max-width:640px;padding:2rem}.share-card-wide{max-width:1280px}.share-card-wide .table-wrap{max-width:100%}.share-card h1{margin:0 0 .25rem;font-size:1.15rem}.share-card .subtitle{color:#6b7280;margin:0 0 1.25rem;font-size:.85rem}.share-section-title{color:#6b7280;text-transform:uppercase;letter-spacing:.03em;margin:1.25rem 0 .5rem;font-size:.78rem;font-weight:600}.share-kv{gap:.5rem;margin-bottom:.4rem;font-size:.88rem;display:flex}.share-kv .lbl{color:#6b7280;flex-shrink:0;min-width:140px}.share-file-list{margin:0;padding:0;list-style:none}.share-file-list li{border:1px solid #e5e7eb;border-radius:6px;justify-content:space-between;align-items:center;margin-bottom:.4rem;padding:.55rem .75rem;font-size:.88rem;display:flex}.share-file-list .share-file-name{color:var(--text,#111827);font-weight:500}.share-file-list a{color:#2563eb;font-size:.82rem;text-decoration:none}.share-file-list a:hover{text-decoration:underline}.share-page-error{text-align:center;color:#6b7280;padding:4rem 1rem}.share-page-error h2{margin-bottom:.5rem}.tagihan-groups{flex-direction:column;gap:1rem;display:flex}.tagihan-group{border:1px solid var(--border,#e5e7eb);background:#fff;border-radius:10px;overflow:hidden}.tagihan-group-head{border-bottom:1px solid var(--border,#e5e7eb);background:#f8fafc;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.tagihan-group-mitra{color:#6b7280;font-size:.85rem}.tagihan-group-summary{align-items:center;gap:1rem;display:flex}.tagihan-sisa{font-size:.9rem}.tagihan-status{color:#92400e;background:#fef3c7;border-radius:999px;padding:.25rem .7rem;font-size:.78rem;font-weight:600}.pay-panel{border-top:1px solid #eef2f7;margin-top:1.25rem;padding-top:.75rem}.pay-panel h3{margin:0 0 .6rem}.pay-summary-grid{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.6rem;display:grid}.pay-summary-item{border:1px solid var(--border,#e5e7eb);background:#f8fafc;border-radius:8px;padding:.5rem .75rem}.pay-summary-label{color:#6b7280;font-size:.75rem;display:block}.pay-summary-item strong{font-size:.95rem}.pay-panel-add{margin-top:.6rem}.booking-form{max-width:680px}.form-grid{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.section-title{border-top:1px dashed #d1d5db;justify-content:space-between;align-items:center;margin:1.25rem 0 .5rem;padding-top:.75rem;display:flex}.booking-form .personil-row{background:#fafafa;border:1px solid #e5e7eb;border-radius:8px;margin-bottom:.75rem;padding:.75rem;display:block}.personil-row-head{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}@media (width<=600px){.form-grid{grid-template-columns:1fr}}.card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;max-width:560px;padding:1.25rem}.alert-success{color:#047857;background:#ecfdf5;border:1px solid #a7f3d0}.profile-avatar{object-fit:cover;background:#eef2f7;border:1px solid #e5e7eb;border-radius:50%;width:96px;height:96px}.profile-avatar:not([src]),.profile-avatar[src=""]{opacity:0}.profile-avatar-row{align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.profile-name{margin:0;font-weight:600}.profile-role{color:#6b7280;margin:.15rem 0 .5rem;font-size:.85rem}.profile-form hr{border:none;border-top:1px solid #eef2f7;margin:1rem 0}.muted{color:#9ca3af;font-size:.8rem;font-weight:400}.topbar-user{cursor:pointer;color:inherit;align-items:center;gap:.5rem;margin-right:.5rem;text-decoration:none;display:flex}.topbar-avatar{object-fit:cover;border-radius:50%;width:32px;height:32px}.topbar-avatar-empty{color:#fff;background:#3b82f6;justify-content:center;align-items:center;font-size:.9rem;font-weight:600;display:inline-flex}.table-avatar{object-fit:cover;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.table-avatar-empty{color:#1d4ed8;background:#dbeafe;font-weight:600}.avatar-edit-row{align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.badge{text-transform:capitalize;border-radius:999px;padding:.2rem .6rem;font-size:.75rem;display:inline-block}.badge-admin{color:#1d4ed8;background:#dbeafe}.badge-user{color:#166534;background:#dcfce7}.badge-viewer{color:#92400e;background:#fef3c7}.badge-ok{color:#166534;background:#dcfce7}.badge-danger{color:#b91c1c;background:#fee2e2}.alert-warning{color:#92400e;background:#fffbeb;border:1px solid #fde68a}.alert-info{color:#1e40af;background:#eff6ff;border:1px solid #bfdbfe}.filter-bar{flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin-bottom:1rem;display:flex}.filter-bar .form-group label{color:#6b7280;margin-bottom:.2rem;font-size:.72rem;display:block}.filter-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:.7rem 1rem;display:grid}.filter-grid .form-group{min-width:0;margin-bottom:0}.filter-grid .form-group label{color:#6b7280;margin-bottom:.22rem;font-size:.72rem;display:block}.sort-row{border-top:1px dashed var(--border,#e5e7eb);flex-wrap:wrap;align-items:flex-end;gap:.4rem 1rem;margin-top:.9rem;padding-top:.8rem;display:flex}.sort-row .form-group{min-width:0;margin-bottom:0}.sort-row .form-label{color:#6b7280;margin-bottom:.22rem;font-size:.72rem;display:block}.sort-row .sort-field{flex:210px;max-width:300px}.sort-row .sort-dir,.sort-row .sort-reset{flex-shrink:0}.sort-seg{border:1px solid var(--border);background:#f9fafb;border-radius:8px;display:inline-flex;overflow:hidden}.sort-seg button{cursor:pointer;color:#4b5563;background:0 0;border:0;align-items:center;gap:.35rem;padding:.5rem .85rem;font-size:.85rem;line-height:1;display:inline-flex}.sort-seg button.active{background:var(--primary);color:#fff}.sort-seg button:not(.active):hover{color:var(--primary);background:#eef2ff}.filter-actions{flex-shrink:0;gap:.5rem;margin-left:auto;display:flex}.crud-filter{grid-template-columns:repeat(6,minmax(0,1fr));align-items:end;gap:.7rem 1rem;display:grid}.crud-filter .form-group{min-width:0;margin-bottom:0}.crud-filter .form-group label{color:#6b7280;margin-bottom:.22rem;font-size:.75rem;display:block}.crud-filter .daterange-filter{grid-column:span 2}@media (width<=960px){.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=1024px){.crud-filter{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width<=900px){.crud-filter{grid-template-columns:repeat(2,minmax(0,1fr))}.crud-filter .daterange-filter{grid-column:span 2}}@media (width<=640px){.filter-grid{grid-template-columns:1fr}.sort-row .sort-field{flex-basis:100%;max-width:none}.sort-row .sort-dir{flex:auto}.sort-row .sort-reset{flex-basis:100%}.sort-seg button{flex:1;justify-content:center}.filter-actions{width:100%;margin-left:0}.filter-actions .btn{flex:1}.crud-filter{grid-template-columns:1fr}.crud-filter .daterange-filter{grid-column:auto}}.menu-badge{color:#fff;background:#dc2626;border-radius:999px;justify-content:center;align-items:center;min-width:1.15rem;height:1.15rem;margin-left:.45rem;padding:0 .3rem;font-size:.68rem;font-weight:700;display:inline-flex}@media (width<=600px){.profile-avatar-row{flex-direction:column;align-items:flex-start}}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.push-toggle{font-size:.82rem}.tabs{border-bottom:1px solid var(--border,#e5e7eb);gap:.4rem;margin:.5rem 0 1rem;display:flex}.tab{cursor:pointer;color:#6b7280;background:0 0;border:none;border-bottom:2px solid #0000;padding:.5rem 1rem;font-size:.9rem;font-weight:600}.tab.active{color:var(--primary,#0f7676);border-bottom-color:var(--primary,#0f7676)}.notes-block{max-width:720px}.note-add{gap:.5rem;margin-bottom:1rem;display:flex}.note-add .form-input{flex:1}.note-add input[type=text]{min-width:0}.empty-hint{color:#9ca3af;font-style:italic}.todo-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.todo-item{border:1px solid var(--border,#e5e7eb);background:#fff;border-radius:8px;align-items:flex-start;gap:.65rem;padding:.65rem .8rem;transition:background .15s;display:flex}.todo-item.done{opacity:.65;background:#f9fafb}.todo-item.done .todo-title{color:#6b7280;text-decoration:line-through}.todo-item.overdue:not(.done){background:#fff7f7;border-color:#fca5a5}.todo-done-badge{color:#047857;white-space:nowrap;background:#d1fae5;border:1px solid #6ee7b7;border-radius:999px;flex-shrink:0;align-self:center;padding:.15rem .45rem;font-size:.72rem;font-weight:700}.todo-check input{cursor:pointer;width:18px;height:18px;margin-top:2px}.todo-body{flex-direction:column;flex:1;gap:.15rem;display:flex}.todo-title{font-weight:600}.todo-desc{color:#4b5563;font-size:.85rem}.todo-due{color:#6b7280;font-size:.75rem}.todo-due.overdue{color:var(--danger,#dc2626);font-weight:700}.note-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.note-card{border:1px solid var(--border,#e5e7eb);background:#fff;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:.6rem;padding:.65rem .8rem;display:flex}.note-body{flex-direction:column;gap:.15rem;display:flex}.note-title{font-weight:600}.note-text{color:#4b5563;white-space:pre-wrap;font-size:.85rem}.note-add-stack{flex-direction:column;align-items:stretch}.note-add-stack .btn{align-self:flex-start}.note-toolbar{gap:.35rem;display:flex}.note-toolbar .btn{font-size:.75rem}.note-textarea{resize:vertical;min-height:120px;font-family:inherit;line-height:1.5}.note-num{color:var(--primary,#0f7676);min-width:1.4rem;font-weight:700}.note-text .note-line{min-height:1.3em;display:block}.note-line-ol{padding-left:.25rem}.note-line-ul{padding-left:0}.note-list-num,.note-list-bul{color:var(--primary,#0f7676);font-weight:700}.dash-todo{border-left:4px solid var(--primary,#0f7676);background:#f0fdfa;border-radius:8px;margin-bottom:1.25rem;padding:.9rem 1rem}.dash-todo h2{color:var(--primary,#0f7676);margin:0 0 .5rem;font-size:1rem}.dash-todo ul{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.dash-todo li{align-items:center;gap:.6rem;font-size:.9rem;display:flex}.dash-todo .dash-todo-empty{color:#9ca3af;font-style:italic}.dash-notes{border-left:4px solid var(--primary,#0f7676);background:#eff6ff;border-radius:8px;margin-bottom:1.25rem;padding:.9rem 1rem}.dash-notes h2{color:var(--primary,#0f7676);margin:0 0 .5rem;font-size:1rem}.dash-notes ul{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.dash-notes li{flex-direction:column;gap:.1rem;font-size:.9rem;display:flex}.dash-note-title{font-weight:600}.dash-note-preview{color:#4b5563;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;overflow:hidden}.dash-notes .dash-todo-empty{color:#9ca3af;font-style:italic}@media (width<=600px){.note-add{flex-direction:column}}.dashboard h1{margin-bottom:1.25rem}.dash-stats{grid-template-columns:repeat(4,1fr);gap:.75rem;margin-bottom:1.25rem;display:grid}.dash-stat-card{border:1px solid var(--border,#d1d5db);background:#fff;border-radius:10px;align-items:center;gap:.75rem;padding:.8rem 1rem;display:flex}.dash-stat-icon{background:#f0fdf4;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-size:1.5rem;display:flex}.dash-stat-body{min-width:0}.dash-stat-value{color:#111827;font-size:1.35rem;font-weight:700;line-height:1.1}.dash-stat-label{color:#6b7280;margin-top:1px;font-size:.78rem}.dash-stat-sub{color:#9ca3af;font-size:.7rem}.dash-recent{margin-top:1.5rem}.dash-recent h2{margin-bottom:.5rem;font-size:1rem}.dash-recent .table-wrap{font-size:.85rem}.dash-recent td,.dash-recent th{padding:.5rem .65rem}.modal-wide{max-width:1080px}.ba-penanda-grid{grid-template-columns:1fr 1fr;gap:1rem;margin-top:.5rem;display:grid}.ba-check{align-items:center;gap:.45rem;padding:.25rem 0;font-size:.9rem;display:flex}.ba-lampiran th,.ba-lampiran td{padding:3px 4px}.ba-lampiran .form-input{min-width:70px;padding:3px 6px;font-size:.82rem}.ba-rincian th,.ba-rincian td{padding:4px 6px}.ba-rincian .form-input{min-width:200px}.ba-lampiran input[type=radio]{cursor:pointer}.ba-pm-info{background:#f8fafc;border:1px solid #e5e7eb;border-radius:8px;flex-wrap:wrap;gap:.5rem 1.5rem;margin-bottom:1rem;padding:.6rem .9rem;font-size:.9rem;display:flex}.ba-paid{background:#f0fdf4}.ba-lampiran .num{text-align:right}.modal-preview{max-width:900px}.ba-preview-iframe{background:#fff;border:1px solid #e5e7eb;border-radius:6px;width:100%;height:70vh}.a4-editor{resize:vertical;color:#111;text-align:justify;background:#fff;border:1px solid #d1d5db;width:100%;max-width:794px;min-height:1123px;margin:0 auto;padding:64px 72px;font-family:Times New Roman,Times,serif;font-size:12px;line-height:1.6;display:block;box-shadow:0 2px 12px #00000014}.a4-render{min-height:0;line-height:1.5;overflow:auto}@media (width<=720px){.a4-editor{min-height:400px;padding:20px 14px;font-size:11px;line-height:1.5}}.chat-page{max-width:980px;margin:0 auto}.chat-desc{color:#6b7280;margin:-.6rem 0 0;font-size:.85rem}.chat-layout{align-items:flex-start;gap:1rem;margin-top:1rem;display:flex}.chat-layout-admin{flex-direction:row}.chat-threads{border:1px solid var(--border,#e5e7eb);background:#fff;border-radius:10px;flex-direction:column;flex:0 0 280px;max-height:70vh;display:flex;overflow:hidden}.chat-threads-head{border-bottom:1px solid var(--border,#e5e7eb);background:#f9fafb;justify-content:space-between;align-items:center;gap:.5rem;padding:.6rem .8rem;font-size:.85rem;font-weight:700;display:flex}.chat-new-btn{background:var(--primary,#2563eb);color:#fff;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:1rem;line-height:1;display:inline-flex}.chat-new-btn:hover{background:var(--primary-dark,#1d4ed8)}.chat-threads-empty{color:#6b7280;padding:1rem;font-size:.85rem}.chat-thread{text-align:left;cursor:pointer;background:0 0;border:none;border-bottom:1px solid #f1f3f5;width:100%;padding:.65rem .8rem;display:block}.chat-thread:hover{background:#f9fafb}.chat-thread.active{background:#eef2ff}.chat-thread-name{justify-content:space-between;align-items:center;gap:.5rem;font-size:.88rem;font-weight:600;display:flex}.chat-thread-sub{color:#6b7280;margin-top:.15rem;font-size:.76rem}.chat-thread-preview{color:#374151;text-overflow:ellipsis;white-space:nowrap;margin-top:.2rem;font-size:.78rem;overflow:hidden}.chat-thread-preview.mine{color:#1d4ed8}.chat-thread-me{font-weight:600}.chat-main{flex:1;min-width:0}.chat-main-head{border:1px solid var(--border,#e5e7eb);background:#fff;border-bottom:none;border-radius:10px 10px 0 0;justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem 1rem;font-size:.9rem;display:flex}.chat-messages{border:1px solid var(--border,#e5e7eb);background:#eef1f5;border-radius:0 0 10px 10px;flex-direction:column;gap:.5rem;min-height:240px;max-height:60vh;padding:1rem;display:flex;overflow-y:auto}.chat-main:not(:has(.chat-main-head)) .chat-messages{border-radius:10px}.chat-empty{color:#6b7280;text-align:center;padding:2rem 0;font-size:.9rem}.chat-load-older-wrap{justify-content:center;padding:.25rem 0 .5rem;display:flex}.chat-load-older{opacity:.85;font-size:.78rem}.chat-bubble{color:#1f2937;background:#fff;border-radius:12px 12px 12px 4px;align-self:flex-start;max-width:78%;padding:.5rem .75rem;box-shadow:0 1px 1px #00000014}.chat-bubble.mine{color:#111827;background:#d9fdd3;border-radius:12px 12px 4px;align-self:flex-end}.chat-bubble-meta{opacity:.7;align-items:center;gap:.4rem;margin-bottom:.15rem;font-size:.7rem;display:flex}.chat-bubble-time{margin-left:auto}.chat-bubble-body{white-space:pre-wrap;word-break:break-word;font-size:.9rem}.chat-attachment{margin-top:.35rem;font-size:.85rem;font-weight:600;text-decoration:none;display:inline-block}.chat-bubble.mine .chat-attachment{color:#166534}.chat-bubble:not(.mine) .chat-attachment{color:#2563eb}.chat-composer{max-width:none;margin-top:.75rem}.chat-files{flex-wrap:wrap;gap:.4rem;margin-bottom:.5rem;display:flex}.chat-file{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;align-items:center;gap:.35rem;padding:.25rem .5rem;font-size:.8rem;display:inline-flex}.chat-file-rm{color:#b91c1c;cursor:pointer;background:0 0;border:none;padding:0;font-size:1rem;line-height:1}.chat-composer-row{align-items:stretch;gap:.5rem;display:flex}.chat-upload{cursor:pointer;border:1px solid var(--border,#e5e7eb);background:#fff;border-radius:8px;justify-content:center;align-items:center;padding:0 .6rem;font-size:1.1rem;display:inline-flex}.chat-upload input{display:none}.chat-input{resize:none;flex:1}.chat-send-btn{flex-shrink:0}.newchat-modal{max-width:420px}.newchat-list{border:1px solid var(--border,#e5e7eb);border-radius:8px;max-height:45vh;margin-top:.6rem;overflow-y:auto}.newchat-list .chat-thread:last-child{border-bottom:none}@media (width<=768px){.chat-layout-admin{flex-direction:column}.chat-threads{flex:auto;width:100%;max-height:32vh}.chat-messages{max-height:55vh}.chat-main-head{border-radius:10px}.chat-main:not(:has(.chat-main-head)) .chat-messages{border-radius:10px}}.proyek-saya-card{margin-top:1rem}.proyek-saya-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.checkbox-line{cursor:pointer;align-items:center;gap:.5rem;font-weight:500;display:flex}.checkbox-line input[type=checkbox]{accent-color:#2563eb;width:18px;height:18px}.notif-banner{border:1px solid var(--border,#e5e7eb);z-index:70;background:#fff;border-radius:12px;width:min(92vw,380px);padding:.9rem 1rem;position:fixed;bottom:1rem;left:50%;transform:translate(-50%);box-shadow:0 12px 32px #0000002e}.notif-banner-title{font-size:.95rem;font-weight:700}.notif-banner-text{color:#4b5563;margin-top:.25rem;font-size:.84rem}.notif-banner-actions{gap:.5rem;margin-top:.75rem;display:flex}.notif-banner-actions .btn{margin:0}@media (width<=768px){.notif-banner{bottom:.5rem}}.app-toast{color:#f9fafb;z-index:80;cursor:pointer;background:#1f2937;border:1px solid #ffffff1f;border-radius:12px;width:min(92vw,420px);padding:.85rem 2.6rem .85rem 1rem;animation:.25s ease-out app-toast-in;position:fixed;bottom:1.25rem;left:50%;transform:translate(-50%);box-shadow:0 12px 32px #00000047}.app-toast-title{font-size:.92rem;font-weight:700}.app-toast-body{color:#d1d5db;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:.15rem;font-size:.82rem;display:-webkit-box;overflow:hidden}.app-toast-close{color:#9ca3af;cursor:pointer;background:0 0;border:none;padding:.2rem .4rem;font-size:1.2rem;line-height:1;position:absolute;top:.4rem;right:.5rem}.app-toast-close:hover{color:#fff}@keyframes app-toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media (width<=768px){.app-toast{bottom:.75rem}}.cal-card{padding:1rem}.cal-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.75rem;display:flex}.cal-nav{align-items:center;gap:.5rem;display:flex}.cal-title{white-space:nowrap;font-weight:700}.btn-link{color:#2563eb;cursor:pointer;background:0 0;border:none;padding-left:.5rem;text-decoration:underline}.cal-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.cal-head-cell{text-align:center;color:#6b7280;padding:.3rem 0;font-size:.72rem;font-weight:700}.cal-cell{border:1px solid #0000;border-radius:8px;flex-direction:column;justify-content:space-between;min-height:52px;padding:4px 6px;display:flex;position:relative}.cal-day{font-size:.85rem;font-weight:600}.cal-sisa{opacity:.95;font-size:.66rem;font-weight:600}.cal-empty{background:0 0;border:none}.cal-today{outline-offset:-2px;outline:2px solid #2563eb}.cal-empat{color:#14532d;background:#dcfce7;border-color:#86efac}.cal-tiga{color:#1e3a8a;background:#dbeafe;border-color:#93c5fd}.cal-dua{color:#713f12;background:#fef9c3;border-color:#fde047}.cal-satu{color:#7c2d12;background:#ffedd5;border-color:#fdba74}.cal-habis{color:#7f1d1d;background:#fee2e2;border-color:#fca5a5}.cal-none{color:#7f1d1d;background:#fecaca;border-color:#ef4444}.cal-past{opacity:.8;border-style:dashed}.cal-lg-note{color:#9ca3af}.cal-legend{color:#4b5563;flex-wrap:wrap;gap:.75rem 1rem;margin-top:.75rem;font-size:.78rem;display:flex}.cal-lg{align-items:center;gap:.35rem;display:inline-flex}.cal-dot{border-radius:.25rem;width:.85rem;height:.85rem;display:inline-block}.cal-dot-empat{background:#86efac}.cal-dot-tiga{background:#93c5fd}.cal-dot-dua{background:#fde047}.cal-dot-satu{background:#fdba74}.cal-dot-habis{background:#fca5a5}.cal-dot-none{background:#ef4444}@media (width<=520px){.cal-cell{min-height:44px;padding:3px 4px}.cal-sisa{font-size:.6rem}.cal-grid{gap:3px}}.quick-input{background:#fff;border:1px solid #d1d5db;border-radius:6px;width:100%;min-width:0;padding:4px 6px;font-size:.82rem}.quick-input:focus{border-color:#3b82f6;outline:2px solid #bfdbfe}.cell-dirty{background:#fef9c3;border-color:#facc15}.row-mismatch td{color:#b91c1c;font-weight:600}.row-mismatch .quick-input{color:#b91c1c;background:#fff5f5;border-color:#fca5a5;font-weight:600}.row-dup{background:#fefce8!important}.row-dup td{color:#a16207}.row-dup .quick-input{background:#fffbeb;border-color:#fde047}.badge-dup{color:#92400e;background:#fef3c7;font-weight:700}.quick-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;margin-top:.75rem;display:flex}.quick-note{color:#6b7280;font-size:.8rem}td.cell-dirty{background:0 0}@media (width<=640px){.quick-table thead th{white-space:nowrap;font-size:.72rem}.quick-input{padding:6px 4px;font-size:.78rem}}.doc-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.75rem;display:flex}.doc-title{color:#111827;font-weight:600}.doc-toolbar-actions{gap:.4rem;display:flex}.doc-new-folder{gap:.4rem;margin-bottom:.75rem;display:flex}.doc-new-folder .form-input{flex:1}.doc-breadcrumb{color:#6b7280;flex-wrap:wrap;align-items:center;gap:.1rem;margin-bottom:.75rem;font-size:.85rem;display:flex}.doc-crumb{cursor:pointer;color:#2563eb;background:0 0;border:none;padding:2px 4px;font-size:.85rem}.doc-crumb:hover{text-decoration:underline}.doc-crumb-sep{margin:0 2px}.doc-list{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem;display:grid}.doc-item{background:#fff;border:1px solid #d1d5db;border-radius:8px;align-items:center;gap:.4rem;min-width:0;padding:.5rem .6rem;display:flex}.doc-folder{cursor:pointer}.doc-folder:hover{background:#eff6ff;border-color:#93c5fd}.doc-ic{flex-shrink:0;font-size:1rem}.doc-name{text-overflow:ellipsis;white-space:nowrap;color:#111827;flex:1;min-width:0;text-decoration:none;overflow:hidden}a.doc-name:hover{color:#2563eb;text-decoration:underline}.doc-meta{color:#9ca3af;flex-shrink:0;font-size:.72rem}@media (width<=640px){.doc-list{grid-template-columns:1fr}.doc-meta{display:none}}.doc-open{cursor:pointer;text-align:left;min-width:0;color:inherit;font:inherit;background:0 0;border:none;flex:1;align-items:center;gap:.4rem;margin:0;padding:0;text-decoration:none;display:flex}.doc-open:hover{text-decoration:none}.doc-preview-modal{flex-direction:column;width:92vw;max-width:92vw;height:90vh;max-height:90vh;padding:0;display:flex;overflow:hidden}.doc-preview-head{border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;gap:.6rem;padding:.75rem 1rem;display:flex}.doc-preview-actions{flex-shrink:0;gap:.4rem;display:flex}.doc-preview-body{background:#1f2937;flex:1;justify-content:center;align-items:center;min-height:0;display:flex}.doc-preview-body iframe{background:#fff;border:none;width:100%;height:100%}@media (width<=640px){.doc-preview-modal{border-radius:0;width:100vw;max-width:100vw;height:100vh;max-height:100vh}}.doc-folder .doc-name:hover{color:#2563eb;text-decoration:underline}.doc-actions{flex-shrink:0;gap:.2rem;display:flex}.doc-act{cursor:pointer;color:#374151;background:#f3f4f6;border:1px solid #d1d5db;border-radius:6px;width:1.7rem;height:1.7rem;font-size:.8rem;line-height:1}.doc-act:hover{background:#eff6ff;border-color:#93c5fd}.doc-hint{color:#9ca3af;margin:-.25rem 0 .6rem;font-size:.76rem}.card-approvals{background:#fbfcfe}.badge-secondary{color:#374151;background:#e5e7eb}.btn-success{background:0 0;border:1px solid #86efac;color:var(--success,#15803d)!important}.btn-success:hover{background:#f0fdf4}.btn-danger{background:0 0;border:1px solid #fca5a5;color:var(--danger,#b91c1c)!important}.btn-danger:hover{background:#fef2f2}.doc-tabel{border-collapse:collapse;width:100%;font-size:.82rem}.doc-tabel th,.doc-tabel td{text-align:left;vertical-align:middle;border-bottom:1px solid #e5e7eb;padding:.45rem .6rem}.doc-tabel thead th{white-space:nowrap;background:#f9fafb;font-weight:600}.doc-tabel tbody tr:hover{background:#f8fafc}.doc-tabel s{color:#9ca3af}.row-num{color:#9ca3af;font-size:.75rem}.analisa-biaya{margin-top:1rem}.analisa-biaya .filter-bar,.analisa-biaya .card-grid{margin-bottom:1rem}.dash-biaya-summary{border:1px solid var(--border,#d1d5db);background:#fff;border-radius:10px;align-items:center;gap:0;margin-bottom:1rem;padding:.6rem 1rem;display:flex;overflow-x:auto}.biaya-summary-item{text-align:center;flex:1;min-width:0;padding:.25rem .5rem}.biaya-summary-value{color:#111827;white-space:nowrap;font-size:.95rem;font-weight:700}.biaya-summary-label{color:#6b7280;margin-top:1px;font-size:.7rem}.biaya-summary-divider{background:#e5e7eb;flex-shrink:0;width:1px;height:28px}.chart-grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.chart-card{border:1px solid var(--border,#d1d5db);background:#fff;border-radius:10px;padding:.9rem 1rem}.chart-title{color:#374151;margin:0 0 .6rem;font-size:.88rem;font-weight:600}.chart-legend-list{max-height:130px;margin-top:.5rem;overflow-y:auto}.chart-legend-item{color:#374151;align-items:center;gap:.4rem;padding:2px 0;font-size:.76rem;display:flex}.chart-legend-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.chart-legend-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.chart-legend-value{font-variant-numeric:tabular-nums;color:#4b5563;flex-shrink:0}@media (width<=768px){.dash-stats{grid-template-columns:repeat(2,1fr);gap:.5rem}.dash-stat-card{padding:.6rem .75rem}.dash-stat-value{font-size:1.1rem}.dash-stat-icon{width:30px;height:30px;font-size:1.15rem}.analisa-biaya .filter-bar{grid-template-columns:1fr 1fr;align-items:end;gap:.5rem;display:grid}.analisa-biaya .filter-bar .form-group:last-child{grid-column:1/-1}.chart-grid{grid-template-columns:1fr}.dash-biaya-summary{grid-template-columns:repeat(3,1fr);gap:.3rem;padding:.5rem .75rem;display:grid}.biaya-summary-divider{display:none}.biaya-summary-item{padding:.15rem 0}.biaya-summary-value{font-size:.85rem}.dash-recent .table-wrap{font-size:.8rem}.dash-recent td,.dash-recent th{padding:.4rem .5rem}}@media (width<=480px){.dash-stats{grid-template-columns:1fr 1fr}.analisa-biaya .filter-bar{grid-template-columns:1fr}.analisa-biaya .filter-bar .form-group:last-child{grid-column:auto}.dash-biaya-summary{grid-template-columns:1fr 1fr}.biaya-summary-item:last-child{grid-column:1/-1}}@media (width<=640px){.form-row .form-group,.kelola-form>div,.card>form>div[style],.card>div[style]{flex-basis:100%!important;width:100%!important;max-width:100%!important}form .form-group{min-width:0!important}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))!important}.summary-grid{grid-template-columns:1fr 1fr!important}}@media (width<=400px){.summary-grid{grid-template-columns:1fr!important}.photo-grid{grid-template-columns:1fr 1fr!important}.rapat-item>div:first-child{flex-wrap:wrap!important}}
