:root{--tvl-blue:#113a72;--tvl-blue2:#0c2d5b;--tvl-yellow:#f4c542;--tvl-bg:#f4f7fb;--tvl-card:#fff;--tvl-text:#172033;--tvl-muted:#6f7b8e;--tvl-border:#dfe6ef;--tvl-red:#c0392b;--tvl-green:#1f8b5f;--tvl-orange:#e98517}
.tvlff-wrap{max-width:1180px;margin:22px auto;padding:0 14px;color:var(--tvl-text);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;box-sizing:border-box}.tvlff-wrap *{box-sizing:border-box}.tvlff-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}.tvlff-top>div{display:flex;align-items:center;gap:12px}.brand{display:inline-flex;align-items:baseline;font-size:24px;letter-spacing:-.8px}.brand b{color:var(--tvl-blue);font-weight:850}.brand strong{color:#ddb019;font-weight:850}.tvlff-top span{font-size:13px;color:var(--tvl-muted);border-left:1px solid var(--tvl-border);padding-left:12px}.tvlff-nav{display:flex;gap:7px;overflow-x:auto;padding:8px 2px 12px;scrollbar-width:thin;position:sticky;top:0;z-index:15;background:rgba(244,247,251,.96);backdrop-filter:blur(9px)}.tvlff-nav a{white-space:nowrap;text-decoration:none!important;padding:10px 13px;border-radius:11px;background:#fff;border:1px solid var(--tvl-border);font-size:13px;font-weight:700;color:var(--tvl-blue2)!important;box-shadow:0 2px 7px rgba(20,47,79,.04)}.tvlff-nav a.active{background:var(--tvl-blue);color:#fff!important;border-color:var(--tvl-blue)}.page-title{display:flex;justify-content:space-between;align-items:flex-end;margin:17px 0 12px}.page-title h2{margin:0;color:var(--tvl-blue2);font-size:25px}.page-title p{margin:5px 0 0;color:var(--tvl-muted);font-size:13px;max-width:800px;line-height:1.5}.card{background:var(--tvl-card);border:1px solid var(--tvl-border);border-radius:15px;padding:18px;margin:13px 0;box-shadow:0 6px 20px rgba(27,56,89,.055)}.card h3{margin:0 0 15px;color:var(--tvl-blue2);font-size:17px}.card h4{margin:0 0 10px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.form-grid .span-2{grid-column:1/-1}.form-grid label,.inline-filter label,.period-filter label{display:block;font-size:12px;font-weight:750;color:#526079;margin-bottom:5px}.form-grid input,.form-grid select,.form-grid textarea,.inline-filter select,.period-filter input,.quick-search input{width:100%;min-height:43px;border:1px solid #ccd7e5;border-radius:10px;padding:9px 11px;background:#fff;color:var(--tvl-text);font:inherit;outline:none}.form-grid textarea{min-height:78px;resize:vertical}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.inline-filter select:focus,.period-filter input:focus{border-color:#5f83b0;box-shadow:0 0 0 3px rgba(17,58,114,.08)}.check{display:flex!important;align-items:center;gap:8px;height:43px}.check input{width:auto!important;min-height:auto!important}.btn{border:1px solid var(--tvl-border);background:#fff;color:var(--tvl-blue2);font-weight:750;border-radius:10px;min-height:40px;padding:9px 15px;cursor:pointer;text-decoration:none!important;display:inline-flex;align-items:center;justify-content:center;line-height:1.15}.btn.primary{background:var(--tvl-blue);border-color:var(--tvl-blue);color:#fff}.btn.ghost{background:#fff}.btn.danger{background:#fff4f2;border-color:#ffd5d0;color:var(--tvl-red)}.btn.small{min-height:34px;padding:7px 11px;font-size:12px}.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.actions form{margin:0}.tvlff-notice{padding:11px 13px;border-radius:10px;margin:10px 0;font-size:13px;font-weight:700}.tvlff-notice.ok{background:#edf9f4;color:#176847;border:1px solid #ccebdd}.tvlff-notice.error{background:#fff1ef;color:#9d2e22;border:1px solid #ffd6d0}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0}.kpi-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.kpi{background:#fff;border:1px solid var(--tvl-border);border-radius:14px;padding:15px;min-height:105px;display:flex;flex-direction:column;justify-content:center;box-shadow:0 4px 13px rgba(22,52,86,.045)}.kpi span{font-size:12px;color:var(--tvl-muted);font-weight:700}.kpi strong{font-size:20px;color:var(--tvl-blue2);margin-top:6px;overflow-wrap:anywhere}.kpi small{font-size:10px;color:#8a94a4;margin-top:4px}.kpi.accent{border-top:4px solid var(--tvl-yellow)}.mini-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}.mini-grid>div{border:1px solid var(--tvl-border);background:#f9fbfd;border-radius:11px;padding:12px;display:flex;flex-direction:column;gap:4px;min-width:0}.mini-grid span{font-size:11px;color:var(--tvl-muted);font-weight:700}.mini-grid b{font-size:15px;color:var(--tvl-blue2);overflow-wrap:anywhere}.mini-grid .accent{background:#fff9e9;border-color:#f0d98f}.stack-list{display:flex;flex-direction:column;gap:8px}.row-card{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:11px 12px;border:1px solid var(--tvl-border);border-radius:11px;background:#fbfcfe}.row-card>div{display:flex;flex-direction:column;min-width:0}.row-card small{color:var(--tvl-muted);font-size:11px;margin-top:2px}.row-card b,.row-card strong{color:var(--tvl-blue2);overflow-wrap:anywhere}.history-card{border:1px solid var(--tvl-border);border-radius:12px;background:#fff;margin:8px 0;overflow:hidden}.history-card summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px}.history-card summary::-webkit-details-marker{display:none}.history-card summary>div{display:flex;flex-direction:column;min-width:0}.history-card summary b{color:var(--tvl-blue2);overflow-wrap:anywhere}.history-card summary small{font-size:11px;color:var(--tvl-muted);margin-top:3px;overflow-wrap:anywhere}.history-card summary strong{white-space:nowrap;color:var(--tvl-blue2)}.history-card[open] summary{background:#f7f9fc;border-bottom:1px solid var(--tvl-border)}.history-card>div:not(.detail-grid),.history-card>form,.history-card>p{margin:12px}.history-card .actions{margin:12px}.detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:12px}.detail-grid>div{border:1px solid var(--tvl-border);border-radius:9px;padding:9px;display:flex;flex-direction:column;font-size:11px;color:var(--tvl-muted);min-width:0}.detail-grid b{font-size:12px;color:var(--tvl-text);margin-top:3px;overflow-wrap:anywhere}.inline-filter,.period-filter,.quick-search{display:flex;align-items:end;gap:8px;flex-wrap:wrap;background:#fff;border:1px solid var(--tvl-border);border-radius:12px;padding:12px;margin:10px 0}.inline-filter select{min-width:330px}.period-filter input{width:auto;min-width:145px}.quick-search input{min-width:240px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}.metric-line{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px dashed var(--tvl-border);font-size:12px}.bar-row{margin:10px 0}.bar-row>div:first-child{display:flex;justify-content:space-between;font-size:12px;margin-bottom:5px;gap:8px}.bar{height:7px;background:#edf1f6;border-radius:99px;overflow:hidden}.bar i{display:block;height:100%;background:var(--tvl-blue);border-radius:99px}.source-note{background:#fff8e5;border:1px solid #f0dfa6;color:#65572d;padding:12px 14px;border-radius:11px;margin:12px 0;font-size:12px;line-height:1.55}.empty,.muted{color:var(--tvl-muted);font-size:13px}.empty{background:#fff;border:1px dashed #cbd6e4;border-radius:12px;padding:20px;text-align:center;margin:12px 0}.small-form{padding:12px;margin:0}.profit-pos{border:1px solid var(--tvl-border);border-radius:12px;margin:9px 0;overflow:hidden}.profit-pos>div:first-child{display:flex;justify-content:space-between;padding:11px 12px;background:#f8fafc}.profit-pos>div:first-child span{font-size:11px;color:var(--tvl-muted)}.total-percent{padding:11px;border-radius:10px;margin-top:12px}.total-percent.good{background:#edf9f4;color:#176847}.total-percent.bad{background:#fff1ef;color:#9d2e22}.guide-step{display:flex;gap:12px;padding:13px 0;border-bottom:1px solid var(--tvl-border)}.guide-step i{flex:0 0 30px;width:30px;height:30px;border-radius:50%;background:var(--tvl-blue);color:#fff;font-style:normal;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800}.guide-step b{color:var(--tvl-blue2)}.guide-step p{margin:3px 0;font-size:13px}.guide-step small{color:var(--tvl-muted);line-height:1.45}.guide-example p{margin:3px 0 12px;color:var(--tvl-muted)}.tvlff-login{max-width:430px;margin:60px auto;padding:28px}.tvlff-login h2{margin:8px 0}.tvlff-login p{color:var(--tvl-muted)}.tvlff-login form{display:flex;flex-direction:column;gap:8px}.tvlff-login input{height:48px;border:1px solid var(--tvl-border);border-radius:10px;padding:10px;font-size:20px;letter-spacing:7px;text-align:center}.tvlff-login small{display:block;margin-top:12px;color:var(--tvl-muted)}
@media(max-width:900px){.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mini-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.tvlff-wrap{margin:8px auto;padding:0 9px}.tvlff-top{padding:6px 2px}.brand{font-size:21px}.tvlff-top span{display:none}.tvlff-nav{margin-left:-9px;margin-right:-9px;padding-left:9px;padding-right:9px}.page-title h2{font-size:21px}.card{padding:13px;border-radius:12px}.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:auto}.kpi-grid,.kpi-grid.compact{grid-template-columns:1fr 1fr;gap:7px}.kpi{min-height:90px;padding:12px}.kpi strong{font-size:16px}.mini-grid{grid-template-columns:1fr 1fr}.detail-grid{grid-template-columns:1fr 1fr}.two-col{grid-template-columns:1fr}.inline-filter,.period-filter,.quick-search{align-items:stretch;flex-direction:column}.inline-filter select,.period-filter input,.quick-search input{min-width:0;width:100%}.history-card summary{padding:11px}.history-card summary strong{font-size:12px}.row-card{align-items:flex-start;flex-direction:column;gap:5px}.actions>.btn,.actions>form{flex:1}.actions form .btn{width:100%}}
@media(max-width:390px){.kpi-grid,.mini-grid,.detail-grid{grid-template-columns:1fr}.tvlff-nav a{padding:9px 11px}}
/* v1.1.0 */
.status-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:800;line-height:1.1;vertical-align:middle}.status-paid{background:#e7f7ef;color:#147248;border:1px solid #bfe7d3}.status-dp{background:#fff5da;color:#8a5d00;border:1px solid #f1d58d}.status-unpaid{background:#fff0ee;color:#ad3427;border:1px solid #f3c6c0}.status-neutral{background:#eef2f7;color:#526079;border:1px solid #d7e0ea}
.invoice-input{display:flex;align-items:stretch}.invoice-input span{display:flex;align-items:center;background:#eef3f9;border:1px solid #ccd7e5;border-right:0;border-radius:10px 0 0 10px;padding:0 11px;font-weight:800;color:var(--tvl-blue)}.invoice-input input{border-radius:0 10px 10px 0!important}
.event-search-wrap{display:grid;grid-template-columns:minmax(200px,1fr) minmax(300px,1.4fr);gap:8px;align-items:end;flex:1}.event-search-wrap label{grid-column:1/-1;margin:0}.event-picker-form .event-search{min-width:0}.event-picker-form select{min-width:0!important;width:100%}
.event-list-filter{display:grid;grid-template-columns:1.3fr repeat(2,minmax(140px,.7fr)) 1.1fr auto;gap:8px;align-items:end;margin:10px 0 14px}.event-list-filter label{font-size:11px;font-weight:750;color:#526079;display:block;margin-bottom:5px}.event-list-filter input,.event-list-filter select{width:100%;height:42px;border:1px solid #ccd7e5;border-radius:10px;padding:8px 10px;background:#fff}
.payment-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0}.payment-summary>div{background:#fff;border:1px solid var(--tvl-border);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:5px}.payment-summary span{font-size:11px;color:var(--tvl-muted);font-weight:700}.payment-summary b{font-size:14px;color:var(--tvl-blue2)}
.pending-vendor-card{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid var(--tvl-border);border-radius:12px;padding:12px;margin:8px 0;background:#fff}.pending-vendor-card>div:first-child{display:flex;flex-direction:column;gap:5px;min-width:0}.pending-vendor-card>div:last-child{display:flex;align-items:center;gap:10px}.pending-vendor-card small{color:var(--tvl-muted)}.pending-vendor-card strong{color:var(--tvl-red);white-space:nowrap}
.rafting-recap{display:flex;flex-direction:column;gap:7px}.rafting-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:11px 12px;border:1px solid var(--tvl-border);border-radius:10px;background:#fbfcfe}.rafting-row>div{display:flex;flex-direction:column}.rafting-row small{color:var(--tvl-muted);margin-top:3px}.rafting-row.total{background:#0f3a72;color:#fff;border-color:#0f3a72}.rafting-row.total b,.rafting-row.total strong{color:#fff}.download-excel-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}.download-excel-form small{color:var(--tvl-muted);max-width:560px}
.payroll-total{display:flex;justify-content:space-between;align-items:center;padding:13px 15px;border-radius:11px;background:#0f3a72;color:#fff}.payroll-total strong{font-size:20px;color:#f4c534}.payroll-download{margin-top:10px}
.schedule-nav{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:10px 0}.schedule-nav b{color:var(--tvl-blue2);font-size:18px}.schedule-calendar{background:#fff;border:1px solid var(--tvl-border);border-radius:14px;padding:10px;overflow:hidden}.schedule-week,.schedule-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.schedule-week b{text-align:center;font-size:10px;color:var(--tvl-muted);padding:7px 2px}.schedule-day{aspect-ratio:1/1;border:1px solid #e2e8f0;background:#f9fbfd;border-radius:9px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;color:var(--tvl-blue2);padding:2px;min-width:0}.schedule-day span{font-weight:850;font-size:14px}.schedule-day small{font-size:8px;color:inherit}.schedule-day.has-event{background:#d93d32;border-color:#d93d32;color:#fff;cursor:pointer;box-shadow:0 3px 8px rgba(217,61,50,.18)}.schedule-day.has-event:hover{transform:translateY(-1px)}.schedule-day.empty-day{border-color:transparent;background:transparent}.schedule-selected{margin:10px 0}.schedule-day-detail{background:#fff;border:1px solid var(--tvl-border);border-radius:12px;padding:13px}.schedule-day-detail h3{margin:0 0 10px;color:var(--tvl-blue2)}.schedule-event-card{display:flex;flex-direction:column;gap:4px;padding:10px 0;border-bottom:1px dashed var(--tvl-border)}.schedule-event-card:last-child{border:0}.schedule-event-card small,.schedule-event-card span{color:var(--tvl-muted);font-size:12px}.schedule-hint{font-size:11px;color:var(--tvl-muted);text-align:center}.schedule-upcoming strong{max-width:45%;text-align:right;font-size:12px}
@media(max-width:760px){.event-search-wrap{grid-template-columns:1fr}.event-list-filter{grid-template-columns:1fr 1fr}.event-list-filter>div:first-child,.event-list-filter>button{grid-column:1/-1}.payment-summary{grid-template-columns:1fr 1fr}.pending-vendor-card{align-items:flex-start}.pending-vendor-card>div:last-child{flex-direction:column;align-items:flex-end}.schedule-nav b{font-size:15px}.schedule-nav .btn{padding:7px 8px;font-size:10px}.schedule-calendar{padding:6px}.schedule-week,.schedule-days{gap:3px}.schedule-day{border-radius:7px}.schedule-day span{font-size:12px}.schedule-day small{font-size:7px}}
@media(max-width:430px){.event-list-filter,.payment-summary{grid-template-columns:1fr}.event-list-filter>div:first-child,.event-list-filter>button{grid-column:auto}.pending-vendor-card{flex-direction:column}.pending-vendor-card>div:last-child{width:100%;flex-direction:row;justify-content:space-between;align-items:center}.schedule-day{aspect-ratio:1/1.15}.schedule-day span{font-size:11px}.schedule-day small{display:none}.schedule-upcoming strong{max-width:100%;text-align:left}.download-excel-form{flex-direction:column;align-items:stretch}}

/* v1.2.0 - Schedule Dokumentasi */
.schedule-event-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.schedule-doc-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:5px}.schedule-doc-meta small{margin-right:auto}.schedule-doc-note{display:block;margin-top:4px;padding:7px 9px;background:#f7f9fc;border-radius:8px}.schedule-doc-selected{display:flex;flex-direction:column;gap:4px;padding:10px 12px;margin:10px 0;background:#f7faff;border:1px solid #dce7f4;border-radius:10px}.schedule-doc-selected small{color:var(--tvl-muted)}.schedule-doc-form-card{scroll-margin-top:80px}.schedule-pic-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.schedule-pic-list span{display:inline-flex;padding:6px 9px;border-radius:999px;background:#edf3fa;border:1px solid #d5e0ed;color:var(--tvl-blue2);font-size:11px;font-weight:750}.schedule-add-pic{align-items:end}.schedule-add-pic input{flex:1;min-width:220px}.history-card .detail-grid .span-2{grid-column:1/-1}.history-card .detail-grid a{color:var(--tvl-blue);text-decoration:underline;overflow-wrap:anywhere}
@media(max-width:640px){.schedule-event-head{align-items:flex-start;flex-direction:column}.schedule-doc-meta{align-items:stretch}.schedule-doc-meta .btn{flex:1;text-align:center}.schedule-add-pic{flex-direction:column;align-items:stretch}.schedule-add-pic input{min-width:0;width:100%}}


/* v1.3.0 - Rekap lengkap + Karyawan multi baris */
.rafting-row.grand-total{background:#f0f6ff;border:2px solid #0f3a72;color:#0f3a72}.rafting-row.grand-total strong{color:#0f3a72}
.field-help{display:block;margin-top:5px;color:var(--tvl-muted);font-size:11px}.payroll-item-section{border:1px solid var(--tvl-border);border-radius:12px;padding:12px;background:#fbfcfe}.payroll-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.payroll-section-head>div{display:flex;flex-direction:column;gap:3px}.payroll-section-head b{color:var(--tvl-blue2);font-size:14px}.payroll-section-head small{color:var(--tvl-muted)}.payroll-item-list{display:flex;flex-direction:column;gap:8px}.payroll-item-row{display:grid;grid-template-columns:minmax(110px,.6fr) minmax(150px,.8fr) minmax(240px,1.6fr) auto;gap:8px;align-items:end;padding:10px;border:1px solid #dde5ee;border-radius:10px;background:#fff}.payroll-item-row.deduction-row{grid-template-columns:minmax(160px,.7fr) minmax(280px,1.8fr) auto}.payroll-item-note{min-width:0}.payroll-remove{height:42px}.payroll-item-row label{font-size:10px}.payroll-download button[disabled]{opacity:.5;cursor:not-allowed}
@media(max-width:760px){.payroll-section-head{align-items:flex-start;flex-direction:column}.payroll-section-head .btn{width:100%}.payroll-item-row,.payroll-item-row.deduction-row{grid-template-columns:1fr 1fr}.payroll-item-note{grid-column:1/-1}.payroll-remove{grid-column:1/-1;width:100%}}
@media(max-width:430px){.payroll-item-row,.payroll-item-row.deduction-row{grid-template-columns:1fr}.payroll-item-note,.payroll-remove{grid-column:auto}}

/* Rekap Mingguan Rafting v1.4.2 */
.weekly-note{margin:0 0 12px}.weekly-table-wrap{overflow-x:auto;border:1px solid var(--tvl-border);border-radius:12px}.weekly-table{width:100%;min-width:640px;border-collapse:collapse;background:#fff}.weekly-table th{background:#123f73;color:#fff;text-align:left;padding:11px 12px;font-size:12px}.weekly-table th:nth-child(2){text-align:center;width:90px}.weekly-table th:nth-child(3),.weekly-table th:nth-child(4){text-align:right;width:165px}.weekly-table td{padding:10px 12px;border-bottom:1px solid #dce5ef;font-size:13px}.weekly-table td.num{text-align:center}.weekly-table td.money{text-align:right;white-space:nowrap}.weekly-table input{width:100%;min-width:80px;height:38px;padding:8px 10px;border:1px solid #cfd9e5;border-radius:8px;background:#fff}.weekly-table td:nth-child(2) input{text-align:center}.weekly-table td:nth-child(3) input{text-align:right}.weekly-table .weekly-total td{border:0;color:#fff;font-size:14px}.weekly-table .weekly-total.tvl td{background:#f4b900}.weekly-table .weekly-total.jsa td{background:#69bddf}.weekly-table.jsa tbody tr:not(.weekly-total):hover{background:#f7fbff}.weekly-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.weekly-summary>div{display:flex;flex-direction:column;gap:5px;padding:12px 14px;border:1px solid var(--tvl-border);border-radius:10px;background:#fbfcfe}.weekly-summary span{font-size:11px;color:var(--tvl-muted)}.weekly-summary strong{font-size:16px;color:var(--tvl-blue2)}.weekly-summary .grand{background:#123f73;border-color:#123f73}.weekly-summary .grand span,.weekly-summary .grand strong{color:#fff}.weekly-actions{margin-top:12px}.weekly-pdf-form{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px}.weekly-pdf-form small{color:var(--tvl-muted);max-width:560px}
@media(max-width:760px){.weekly-summary{grid-template-columns:1fr}.weekly-actions .btn,.weekly-pdf-form .btn{width:100%}.weekly-pdf-form{align-items:stretch;flex-direction:column}.weekly-table-wrap{margin-left:-2px;margin-right:-2px}}

/* Pembayaran Lainnya — Rekap Mingguan */
.weekly-payment-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:20px 0 10px}.weekly-payment-head h4{margin:0 0 4px;color:var(--tvl-blue2);font-size:16px}.weekly-payment-head p{margin:0;max-width:680px}.weekly-payment-list{display:flex;flex-direction:column;gap:8px}.weekly-payment-row{display:grid;grid-template-columns:minmax(220px,1fr) 90px 170px 150px auto;gap:10px;align-items:end;padding:10px;border:1px solid var(--tvl-border);border-radius:10px;background:#fbfcfe}.weekly-payment-row label{display:block;font-size:11px;font-weight:700;color:var(--tvl-muted);margin-bottom:5px}.weekly-payment-row input{width:100%;height:40px;padding:8px 10px;border:1px solid #cfd9e5;border-radius:8px;background:#fff}.weekly-payment-row [data-weekly-payment-qty]{text-align:center}.weekly-payment-row [data-weekly-payment-price]{text-align:right}.weekly-payment-total strong{display:flex;align-items:center;justify-content:flex-end;height:40px;padding:0 10px;border:1px solid #d7e0ea;border-radius:8px;background:#fff;color:var(--tvl-blue2);white-space:nowrap}.weekly-payment-total strong.negative,.weekly-other-total-bar strong.negative{color:#c62828}.weekly-other-total-bar{display:flex;justify-content:space-between;align-items:center;margin-top:10px;padding:11px 14px;border:1px solid #3c78a8;border-radius:9px;background:#edf5fb}.weekly-other-total-bar span{font-size:12px;font-weight:800;color:var(--tvl-blue2)}.weekly-other-total-bar strong{font-size:16px;color:var(--tvl-blue2)}.weekly-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.weekly-summary>div:nth-child(3){background:#f5f8fc}.weekly-summary .grand{grid-column:auto}.weekly-table.weekly-hpp-internal{min-width:420px}.weekly-table.weekly-hpp-internal th:nth-child(2){text-align:right;width:190px}.weekly-table .weekly-total.internal td{background:#66788a;color:#fff;border:0}
@media(max-width:1100px){.weekly-payment-row{grid-template-columns:minmax(200px,1fr) 80px 150px 140px auto}}
@media(max-width:980px){.weekly-summary{grid-template-columns:repeat(2,1fr)}.weekly-summary .grand{grid-column:span 2}.weekly-payment-row{grid-template-columns:1fr 100px 160px}.weekly-payment-row .weekly-payment-note{grid-column:span 3}.weekly-payment-row .btn{grid-column:span 3}}
@media(max-width:760px){.weekly-payment-head{align-items:stretch;flex-direction:column}.weekly-payment-head .btn{width:100%}.weekly-payment-row{grid-template-columns:1fr}.weekly-payment-row .btn{width:100%}.weekly-summary{grid-template-columns:1fr}.weekly-summary .grand{grid-column:auto}}

/* v1.5.0 - Mobile refinement + Invoice */
.btn.orange{background:#ff8517;border-color:#ff8517;color:#fff!important}.payroll-add-row,.weekly-add-payment{margin-top:10px;width:100%}

.invoice-toolbar{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:12px 0}.invoice-filter{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.invoice-filter input,.invoice-filter select{height:40px;border:1px solid var(--tvl-border);border-radius:10px;padding:8px 10px;background:#fff}.invoice-info-note{padding:11px 13px;border-radius:11px;background:#eef6ff;border:1px solid #d7e7fa;color:#214f86;font-size:12px;margin-bottom:12px}.invoice-booking-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.invoice-booking-card{background:#fff;border:1px solid var(--tvl-border);border-radius:15px;padding:15px;box-shadow:0 5px 18px rgba(27,56,89,.05)}.invoice-booking-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.invoice-booking-head>div{display:flex;flex-direction:column;gap:4px;min-width:0}.invoice-booking-head b{font-size:16px;color:var(--tvl-blue2)}.invoice-booking-head span{font-weight:750}.invoice-booking-head small{color:var(--tvl-muted)}.invoice-status{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;background:#eef2f6;color:#526079;white-space:nowrap}.invoice-status.terkirim{background:#e8f7ef;color:#17734e}.invoice-status.dibayar{background:#dcfce7;color:#166534}.invoice-status.batal{background:#fdeceb;color:#b4342a}.invoice-status.draft{background:#f0f2f5;color:#586474}.invoice-booking-total{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#f3f8ff;border-radius:10px;margin:12px 0}.invoice-booking-total span{font-size:11px;color:var(--tvl-muted)}.invoice-booking-total strong{color:#0f4aa4}.invoice-stage-chips{display:flex;flex-direction:column;gap:6px}.invoice-stage-chips span{padding:6px 9px;border:1px solid #dce6f2;border-radius:999px;background:#fafcff;font-size:11px}.invoice-card-actions{display:flex;gap:8px;margin-top:12px}.invoice-card-actions .btn{flex:1;text-align:center}

.invoice-form{max-width:920px;margin:0 auto}.invoice-segment{display:grid;grid-template-columns:1fr 1fr;border:1px solid #bad0ef;background:#fff;border-radius:11px;padding:3px;margin:0 0 12px}.invoice-segment button{border:0;border-radius:8px;background:transparent;color:#15498c;font-weight:800;min-height:38px;cursor:pointer}.invoice-segment button.active{background:#1556d8;color:#fff}.invoice-section{padding:14px}.invoice-section>h3{font-size:15px;margin-bottom:12px}.invoice-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.invoice-grid .span-2{grid-column:1/-1}.invoice-grid label,.invoice-section label,.invoice-item-card label{display:block;font-size:11px;font-weight:750;color:#526079;margin-bottom:5px}.invoice-grid input,.invoice-grid textarea,.invoice-section textarea,.invoice-item-card input{width:100%;min-height:41px;border:1px solid #ced9e6;border-radius:9px;padding:8px 10px;background:#fff;color:var(--tvl-text);font:inherit}.invoice-grid textarea,.invoice-section textarea{min-height:76px}.invoice-item-card{position:relative;border:1px solid #dce5ef;border-radius:12px;padding:11px;background:#fbfdff;margin-bottom:9px}.invoice-item-title{font-size:11px;font-weight:850;color:#1556d8;margin-bottom:8px}.invoice-item-grid{display:grid;grid-template-columns:minmax(220px,1.8fr) 90px 90px 140px 150px;gap:8px;align-items:end}.invoice-item-total strong{display:flex;align-items:center;justify-content:flex-end;min-height:41px;padding:8px 10px;background:#edf5ff;border:1px solid #d5e5fb;border-radius:9px;color:#1556d8;white-space:nowrap}.invoice-item-remove{margin-top:8px}.invoice-add-item{width:100%;border-style:dashed!important}.invoice-prev-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:end}.invoice-prev-grid>div:first-child{padding:10px 12px;background:#f4f8fd;border:1px solid #dbe6f3;border-radius:10px;display:flex;flex-direction:column;gap:4px}.invoice-prev-grid span{font-size:11px;color:var(--tvl-muted)}.invoice-prev-grid strong{color:var(--tvl-blue2)}.invoice-correction-note{display:none;margin-top:10px}.invoice-correction-note.show{display:block}.invoice-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.invoice-summary>div{display:flex;flex-direction:column;gap:5px;padding:10px 12px;border:1px solid #dce5ef;border-radius:10px;background:#fbfdff}.invoice-summary .span-2{grid-column:1/-1}.invoice-summary span,.invoice-summary label{font-size:11px;color:var(--tvl-muted);font-weight:750}.invoice-summary strong{font-size:15px;color:var(--tvl-blue2)}.invoice-summary .accent{background:#eef5ff}.invoice-summary .accent strong{color:#1556d8}.invoice-summary small{padding:8px 10px;background:#eef5ff;border-radius:8px;color:#4f6074}.invoice-payment-field input{min-height:41px;border:1px solid #ced9e6;border-radius:9px;padding:8px 10px}.invoice-form-actions{display:flex;gap:10px;position:sticky;bottom:0;padding:10px 0 6px;background:linear-gradient(to top,var(--tvl-bg) 75%,rgba(244,247,251,0));z-index:8}.invoice-form-actions .btn{flex:1;min-height:44px}.invoice-detail-summary{display:flex;flex-direction:column;gap:4px;padding:15px 18px;border-radius:13px;background:#edf5ff;border:1px solid #dce9fb;max-width:560px;margin-bottom:18px}.invoice-detail-summary span{font-size:12px;color:#3868a1}.invoice-detail-summary strong{font-size:24px;color:#1556d8}.invoice-history-title{margin:12px 0;color:var(--tvl-blue2)}.invoice-history-list{display:flex;flex-direction:column;gap:10px}.invoice-history-card{background:#fff;border:1px solid var(--tvl-border);border-radius:13px;overflow:hidden}.invoice-history-card summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:13px}.invoice-history-card summary::-webkit-details-marker{display:none}.invoice-history-card summary>div{display:flex;flex-direction:column;gap:3px}.invoice-history-card summary small{color:var(--tvl-muted)}.invoice-history-card summary strong{font-size:15px}.invoice-doc-actions{display:flex;gap:7px;flex-wrap:wrap;padding:10px 13px 13px;border-top:1px solid var(--tvl-border);background:#fbfcfe}.invoice-doc-actions form{margin:0}.invoice-next-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.invoice-next-actions form{margin:0}

@media(max-width:900px){.invoice-booking-list{grid-template-columns:1fr}.invoice-item-grid{grid-template-columns:1fr 100px 100px}.invoice-item-name{grid-column:1/-1}.invoice-item-grid>div:nth-child(4),.invoice-item-total{grid-column:span 1}}
@media(max-width:760px){
  .weekly-table-wrap{overflow:visible;border:0;background:transparent}.weekly-table:not(.weekly-hpp-internal){min-width:0;display:block;background:transparent}.weekly-table:not(.weekly-hpp-internal) thead{display:none}.weekly-table:not(.weekly-hpp-internal) tbody{display:block}.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total){display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:11px;border:1px solid var(--tvl-border);border-radius:11px;background:#fff;margin-bottom:9px}.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td{border:0;padding:0;min-width:0}.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:first-child{grid-column:1/-1;font-size:14px;padding-bottom:2px}.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:nth-child(2)::before,.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:nth-child(3)::before,.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:nth-child(4)::before{display:block;font-size:9px;font-weight:800;color:var(--tvl-muted);margin-bottom:4px}.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:nth-child(2)::before{content:'QTY'}.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:nth-child(3)::before{content:'HARGA'}.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:nth-child(4)::before{content:'TOTAL'}.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:nth-child(4){grid-column:1/-1}.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td.num,.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td.money{text-align:left}.weekly-table:not(.weekly-hpp-internal) input{min-width:0;width:100%;height:42px;font-size:16px}.weekly-table:not(.weekly-hpp-internal) .weekly-total{display:flex!important;justify-content:space-between;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;margin:5px 0 10px}.weekly-table:not(.weekly-hpp-internal) .weekly-total td{display:block!important;background:transparent!important;padding:0!important;border:0!important}.weekly-table:not(.weekly-hpp-internal) .weekly-total td:first-child{flex:1}.weekly-table:not(.weekly-hpp-internal) .weekly-total td:last-child{white-space:nowrap}.weekly-table:not(.weekly-hpp-internal) .weekly-total.tvl{background:#f4b900}.weekly-table:not(.weekly-hpp-internal) .weekly-total.jsa{background:#4ea8cf}.weekly-payment-row{padding:12px}.weekly-payment-row input{height:44px;font-size:16px}.weekly-add-payment{min-height:43px}.weekly-other-total-bar{margin-top:12px}.payroll-add-row{min-height:43px}
  .invoice-toolbar{align-items:stretch;flex-direction:column}.invoice-toolbar>.btn{width:100%;text-align:center}.invoice-filter{display:grid;grid-template-columns:1fr 1fr}.invoice-filter input{grid-column:1/-1}.invoice-filter .btn{width:100%}.invoice-booking-card{padding:13px}.invoice-booking-head b{font-size:15px}.invoice-card-actions{flex-direction:column}.invoice-card-actions .btn{width:100%}.invoice-grid{grid-template-columns:1fr}.invoice-grid .span-2{grid-column:auto}.invoice-item-grid{grid-template-columns:1fr 1fr}.invoice-item-name{grid-column:1/-1}.invoice-item-grid>div:nth-child(4),.invoice-item-total{grid-column:auto}.invoice-item-total{grid-column:1/-1}.invoice-item-card input,.invoice-grid input,.invoice-grid textarea,.invoice-section textarea,.invoice-payment-field input{font-size:16px;min-height:44px}.invoice-prev-grid{grid-template-columns:1fr}.invoice-summary{grid-template-columns:1fr}.invoice-summary .span-2{grid-column:auto}.invoice-form-actions{gap:8px}.invoice-form-actions .btn{font-size:13px}.invoice-detail-summary{max-width:none}.invoice-doc-actions{display:grid;grid-template-columns:1fr 1fr}.invoice-doc-actions .btn,.invoice-doc-actions form{width:100%}.invoice-doc-actions form .btn{width:100%}.invoice-next-actions{flex-direction:column}.invoice-next-actions>.btn,.invoice-next-actions form,.invoice-next-actions form .btn{width:100%}
}
@media(max-width:430px){.invoice-item-grid{grid-template-columns:1fr}.invoice-item-name,.invoice-item-total{grid-column:auto}.invoice-filter{grid-template-columns:1fr}.invoice-filter input{grid-column:auto}.invoice-doc-actions{grid-template-columns:1fr}.invoice-form-actions{position:static;flex-direction:column}.invoice-form-actions .btn{width:100%}.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total){grid-template-columns:1fr}.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:first-child,.weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:nth-child(4){grid-column:auto}}
.invoice-version-list{padding:0 13px 13px;border-top:1px dashed var(--tvl-border);background:#fff}.invoice-version-list>b{display:block;font-size:11px;color:var(--tvl-blue2);padding:9px 0 5px}.invoice-version-list>div{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0;border-top:1px solid #eef2f6;font-size:11px}.invoice-version-list form{margin:0}


/* v1.5.4 - Rekap Mingguan mobile compact */
@media(max-width:760px){
  /* Traventureland / HPP Rafting dan JSA: satu item = satu baris horizontal Nama | QTY | Harga | Total */
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total){
    display:grid!important;
    grid-template-columns:minmax(78px,1.25fr) 52px minmax(78px,.9fr) minmax(88px,1fr)!important;
    gap:5px!important;
    align-items:end;
    padding:9px 8px!important;
    margin-bottom:7px!important;
  }
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td{
    min-width:0!important;
    grid-column:auto!important;
    padding:0!important;
  }
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:first-child{
    grid-column:auto!important;
    align-self:center;
    padding:0!important;
    line-height:1.15;
    overflow-wrap:anywhere;
  }
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:first-child b{font-size:11px;line-height:1.15}
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:nth-child(2)::before,
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:nth-child(3)::before,
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:nth-child(4)::before{
    font-size:8px!important;
    margin-bottom:3px!important;
    line-height:1;
  }
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:nth-child(4){grid-column:auto!important}
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td.num,
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td.money{text-align:right!important;font-size:11px;white-space:nowrap}
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td.num{text-align:center!important}
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td.money b{font-size:11px;white-space:nowrap}
  .weekly-table:not(.weekly-hpp-internal) input{
    width:100%!important;
    min-width:0!important;
    height:38px!important;
    min-height:38px!important;
    padding:5px 5px!important;
    font-size:14px!important;
    color:var(--tvl-text)!important;
    -webkit-text-fill-color:var(--tvl-text)!important;
    background:#fff!important;
  }
  .weekly-table:not(.weekly-hpp-internal) .weekly-qty{text-align:center!important;font-weight:800}
  .weekly-table:not(.weekly-hpp-internal) .weekly-price{text-align:right!important;font-weight:700}

  /* HPP Event Lainnya internal: jangan memaksa min-width / overflow di HP */
  .weekly-table-wrap:has(.weekly-hpp-internal){width:100%;max-width:100%;overflow:hidden!important}
  .weekly-table.weekly-hpp-internal{
    min-width:0!important;
    width:100%!important;
    max-width:100%!important;
    display:block;
    table-layout:fixed;
  }
  .weekly-table.weekly-hpp-internal thead{display:none}
  .weekly-table.weekly-hpp-internal tbody{display:block;width:100%}
  .weekly-table.weekly-hpp-internal tbody tr{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    gap:8px;
    width:100%;
    padding:9px 10px;
    margin-bottom:6px;
    border:1px solid var(--tvl-border);
    border-radius:10px;
    background:#fbfcfe;
  }
  .weekly-table.weekly-hpp-internal tbody tr td{
    display:block!important;
    width:auto!important;
    min-width:0!important;
    padding:0!important;
    border:0!important;
    background:transparent!important;
  }
  .weekly-table.weekly-hpp-internal tbody tr td:first-child{overflow-wrap:anywhere;font-size:12px}
  .weekly-table.weekly-hpp-internal tbody tr td:last-child{text-align:right!important;white-space:nowrap;font-size:12px}
  .weekly-table.weekly-hpp-internal .weekly-total.internal{background:#66788a!important;color:#fff!important}
  .weekly-table.weekly-hpp-internal .weekly-total.internal td,.weekly-table.weekly-hpp-internal .weekly-total.internal b,.weekly-table.weekly-hpp-internal .weekly-total.internal strong{color:#fff!important}

  /* Pembayaran Lainnya: Keterangan penuh, lalu QTY | Harga | Total berjajar. */
  .weekly-payment-row{
    grid-template-columns:72px minmax(100px,1fr) minmax(96px,1fr)!important;
    gap:6px!important;
    padding:10px!important;
    align-items:end!important;
  }
  .weekly-payment-row .weekly-payment-note{grid-column:1/-1!important}
  .weekly-payment-row .btn{grid-column:1/-1!important;width:100%}
  .weekly-payment-row input{
    height:42px!important;
    min-height:42px!important;
    padding:6px 7px!important;
    font-size:16px!important;
    color:var(--tvl-text)!important;
    -webkit-text-fill-color:var(--tvl-text)!important;
    background:#fff!important;
    opacity:1!important;
    caret-color:var(--tvl-text)!important;
  }
  .weekly-payment-row [data-weekly-payment-qty]{
    text-align:center!important;
    font-weight:850!important;
    color:#172033!important;
    -webkit-text-fill-color:#172033!important;
    appearance:textfield;
    -moz-appearance:textfield;
  }
  .weekly-payment-row [data-weekly-payment-qty]::-webkit-outer-spin-button,
  .weekly-payment-row [data-weekly-payment-qty]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
  .weekly-payment-row [data-weekly-payment-price]{font-weight:750;text-align:right!important}
  .weekly-payment-total strong{height:42px!important;padding:0 7px!important;font-size:12px!important;white-space:nowrap}
}

@media(max-width:430px){
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total){
    grid-template-columns:minmax(66px,1.15fr) 46px minmax(70px,.9fr) minmax(78px,1fr)!important;
    gap:4px!important;
    padding:8px 6px!important;
  }
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td:first-child b{font-size:10px}
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td.num,
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td.money,
  .weekly-table:not(.weekly-hpp-internal) tbody tr:not(.weekly-total) td.money b{font-size:10px}
  .weekly-table:not(.weekly-hpp-internal) input{height:36px!important;min-height:36px!important;font-size:13px!important;padding:4px!important}
  .weekly-payment-row{grid-template-columns:64px minmax(90px,1fr) minmax(88px,1fr)!important;gap:5px!important;padding:9px 7px!important}
  .weekly-payment-row label{font-size:10px}
  .weekly-payment-row [data-weekly-payment-qty]{font-size:16px!important}
  .weekly-payment-total strong{font-size:11px!important}
}

/* ===== v1.6.0 Backup & Arsip ===== */
.backup-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:8px 0 14px}
.backup-kpis>div{border:1px solid var(--tvl-border);background:#f8fbff;border-radius:12px;padding:12px;min-width:0}
.backup-kpis span{display:block;font-size:11px;color:var(--tvl-muted);margin-bottom:4px}
.backup-kpis b{display:block;color:var(--tvl-text);overflow-wrap:anywhere}
.backup-history{margin-top:16px;border-top:1px solid var(--tvl-border);padding-top:12px}
.backup-history>div{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--tvl-border)}
.backup-history>div>span{min-width:0}
.backup-history strong,.backup-history small{display:block}.backup-history small{color:var(--tvl-muted);margin-top:2px}
.backup-download-actions{display:flex!important;flex-wrap:wrap;gap:8px!important}
.restore-warning{display:flex;flex-direction:column;gap:4px;padding:12px;border:1px solid #f0c36d;background:#fff8e8;border-radius:12px;margin-bottom:12px}
.restore-warning b{color:#8a5600}.restore-warning span{font-size:12px;color:#6c5b39}
.restore-preview{border:1px solid #b9d8c2;background:#f4fbf6;border-radius:12px;padding:14px;margin-bottom:14px}
.restore-confirm-form,.restore-upload-form{display:grid;gap:9px;margin-top:12px}
.restore-confirm-form input{max-width:240px}
.activity-list{display:grid;gap:8px}.activity-list>div{display:grid;grid-template-columns:minmax(120px,.9fr) minmax(0,1.2fr) auto;gap:10px;align-items:center;border:1px solid var(--tvl-border);border-radius:10px;padding:9px 10px;background:#fbfcfe}.activity-list span{overflow-wrap:anywhere}.activity-list small{color:var(--tvl-muted);text-align:right}
@media(max-width:720px){
  .backup-kpis{grid-template-columns:1fr}
  .backup-history>div{align-items:flex-start}.backup-history form{flex:0 0 auto}
  .backup-download-actions{display:grid!important;grid-template-columns:1fr!important}.backup-download-actions .btn{width:100%}
  .activity-list>div{grid-template-columns:1fr;gap:2px}.activity-list small{text-align:left}
  .restore-confirm-form input{max-width:none;width:100%}
}

/* ===== v1.6.1 Mobile UX Audit ===== */
@media(max-width:760px){
  /* Seluruh form aman di layar kecil dan mencegah zoom otomatis iOS. */
  .tvlff-wrap input:not([type="checkbox"]):not([type="radio"]),
  .tvlff-wrap select,
  .tvlff-wrap textarea{
    max-width:100%;
    min-width:0;
    font-size:16px;
    color:var(--tvl-text);
    -webkit-text-fill-color:var(--tvl-text);
    background-color:#fff;
  }
  .tvlff-wrap input[type="date"],.tvlff-wrap input[type="month"]{width:100%;min-width:0}
  .tvlff-wrap input[readonly]{background:#f5f7fa;color:#526079;-webkit-text-fill-color:#526079}
  .invoice-input{width:100%;min-width:0}.invoice-input input{min-width:0!important}.invoice-input span{flex:0 0 auto}

  /* Navigasi tetap horizontal, tetapi lebih halus dan tidak menambah overflow halaman. */
  .tvlff-nav{overscroll-behavior-x:contain;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .tvlff-nav::-webkit-scrollbar{display:none}.tvlff-nav a{scroll-snap-align:start;flex:0 0 auto}

  /* Judul dan card dibuat lebih padat, tetapi area sentuh tetap nyaman. */
  .page-title{align-items:flex-start}.page-title p{line-height:1.45}
  .card{overflow:hidden}.card h3{line-height:1.3;margin-bottom:12px}
  .btn{min-width:0;white-space:normal;text-align:center}
  .form-grid>div,.invoice-grid>div{min-width:0}
  .form-grid .btn.primary,.form-grid .btn.danger{min-height:44px}

  /* KPI dan ringkasan nominal tidak memaksa layar melebar. */
  .kpi,.mini-grid>div,.payment-summary>div{min-width:0}
  .kpi strong,.mini-grid b,.payment-summary b{max-width:100%;line-height:1.25;word-break:normal;overflow-wrap:anywhere}
  .kpi strong{font-size:clamp(14px,4vw,17px)}
  .mini-grid b{font-size:clamp(13px,3.7vw,15px)}

  /* Card riwayat: nominal tidak menekan nama/metadata. */
  .history-card summary>div{flex:1 1 auto;min-width:0}
  .history-card summary strong{flex:0 0 auto;max-width:44%;text-align:right;line-height:1.25;white-space:normal;overflow-wrap:anywhere}
  .history-card summary small{line-height:1.45}
  .history-card .status-badge{margin:2px 0}

  /* Filter/picker event tidak pernah lebih lebar dari viewport. */
  .event-picker-form,.event-search-wrap,.event-search-wrap>*{min-width:0;max-width:100%}
  .event-picker-form .btn{min-height:43px}
  .event-list-filter>*{min-width:0}
  .event-list-filter input,.event-list-filter select{min-width:0;max-width:100%;font-size:16px}

  /* Nilai sumber closing / admin yang panjang boleh turun baris tanpa mendorong layout. */
  .metric-line{align-items:flex-start}.metric-line span{min-width:0;overflow-wrap:anywhere}.metric-line b{flex:0 0 auto;max-width:48%;text-align:right;overflow-wrap:anywhere}
  .bar-row>div:first-child span{min-width:0;overflow-wrap:anywhere}.bar-row>div:first-child b{flex:0 0 auto;max-width:55%;text-align:right;overflow-wrap:anywhere}

  /* Vendor / ledger / daftar harga. */
  .pending-vendor-card>div{min-width:0}.pending-vendor-card small{line-height:1.45;overflow-wrap:anywhere}
  .pending-vendor-card strong{white-space:normal;text-align:right;overflow-wrap:anywhere}
  .rafting-row>div{min-width:0}.rafting-row b,.rafting-row small{overflow-wrap:anywhere}.rafting-row>strong{flex:0 0 auto;text-align:right;overflow-wrap:anywhere}

  /* Payroll dan Backup: tombol tambah/download tidak terjepit. */
  .payroll-item-row input,.payroll-item-row textarea{width:100%;min-width:0}
  .restore-upload-form input[type="file"]{width:100%;min-width:0;white-space:normal}
  .backup-history>div>span{overflow-wrap:anywhere}
}

@media(max-width:520px){
  /* Daftar transaksi dibuat benar-benar nyaman untuk satu tangan. */
  .history-card summary{align-items:flex-start;flex-direction:column;gap:7px}
  .history-card summary strong{max-width:100%;width:100%;text-align:left;font-size:13px}
  .history-card[open] summary strong{color:var(--tvl-blue2)}

  .actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;align-items:stretch}
  .actions>.btn,.actions>form{width:100%;min-width:0;flex:none}.actions form .btn{width:100%;height:100%}
  .actions>*:only-child{grid-column:1/-1}

  .pending-vendor-card>div:last-child{align-items:stretch!important}.pending-vendor-card>div:last-child strong{text-align:left}
  .metric-line{flex-direction:column;gap:4px}.metric-line b{max-width:100%;text-align:left}
  .bar-row>div:first-child{align-items:flex-start;flex-direction:column;gap:3px}.bar-row>div:first-child b{max-width:100%;text-align:left}

  .weekly-payment-head{align-items:stretch;flex-direction:column}.weekly-payment-head .btn{width:100%}
  .payroll-total{align-items:flex-start;gap:5px;flex-direction:column}.payroll-total strong{font-size:18px}
}

@media(max-width:430px){
  .tvlff-wrap{padding-left:8px;padding-right:8px}
  .tvlff-nav{margin-left:-8px;margin-right:-8px;padding-left:8px;padding-right:8px}
  .page-title{margin-top:13px}.page-title h2{font-size:20px;line-height:1.2}.page-title p{font-size:12px}
  .card{padding:12px;margin:10px 0}

  /* Dua KPI tetap ringkas; angka besar boleh dua baris tanpa terpotong. */
  .kpi-grid,.kpi-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}
  .kpi{padding:10px;min-height:84px}.kpi span{font-size:10.5px}.kpi small{font-size:9px}
  .mini-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.mini-grid>div{padding:10px}

  /* Detail terbuka tetap dua kolom jika pendek, tetapi konten panjang aman. */
  .detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:9px}.detail-grid>div{padding:8px}

  /* Semua grup aksi tiga tombol atau lebih turun ke satu kolom agar tidak sempit. */
  .actions{grid-template-columns:1fr}.actions>.btn,.actions>form{grid-column:auto}
  .btn{min-height:42px}.btn.small{min-height:38px}

  .event-list-filter{gap:7px}.event-list-filter input,.event-list-filter select{height:44px}
  .payment-summary{gap:7px}.payment-summary>div{padding:10px}
  .period-filter,.inline-filter,.quick-search{padding:10px}

  .invoice-booking-head{flex-direction:column}.invoice-status{align-self:flex-start}
  .invoice-booking-total{align-items:flex-start;flex-direction:column;gap:3px}
  .invoice-booking-total strong{font-size:15px}

  .backup-history>div{flex-direction:column}.backup-history>div form,.backup-history>div .btn{width:100%}
}

@media(max-width:350px){
  .kpi-grid,.kpi-grid.compact,.mini-grid,.detail-grid{grid-template-columns:1fr}
}

/* ===== v1.6.2 Dashboard Utama ===== */
.dashboard-quick-actions{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px;margin:10px 0 14px}
.dashboard-quick{display:flex;align-items:center;gap:9px;border:1px solid var(--tvl-border);background:#fff;border-radius:14px;padding:11px 12px;text-decoration:none!important;color:var(--tvl-text)!important;min-width:0;box-shadow:0 2px 7px rgba(20,42,74,.04)}
.dashboard-quick:hover{border-color:#9ebce3;background:#f8fbff}
.dashboard-quick span{display:flex;align-items:center;justify-content:center;flex:0 0 34px;height:34px;border-radius:10px;background:#eaf3ff;color:var(--tvl-blue2);font-size:11px;font-weight:900;letter-spacing:.2px}
.dashboard-quick:nth-child(2) span{background:#fff1df;color:#a85c00}.dashboard-quick b{font-size:12px;line-height:1.25;min-width:0}
.dashboard-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.dashboard-summary-card{border:1px solid var(--tvl-border);background:linear-gradient(180deg,#fff,#f9fbfe);border-radius:14px;padding:13px;min-width:0}
.dashboard-summary-card span,.dashboard-summary-card small{display:block;color:var(--tvl-muted);font-size:11px;line-height:1.35}
.dashboard-summary-card strong{display:block;margin:4px 0;font-size:19px;line-height:1.18;color:var(--tvl-text);overflow-wrap:anywhere}
.dashboard-section{margin-top:12px}.dashboard-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-4px 0 10px}
.dashboard-section-head p{margin:0;color:var(--tvl-muted);font-size:11px}.dashboard-section-head.bottom{margin:12px 0 0;padding-top:10px;border-top:1px solid var(--tvl-border)}
.dashboard-event-card{border:1px solid var(--tvl-border);border-radius:14px;padding:13px;margin:9px 0;background:#fff}
.dashboard-event-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.dashboard-event-top>div{min-width:0}
.dashboard-event-top b{font-size:11px;color:var(--tvl-blue2)}.dashboard-event-top h4{margin:2px 0 0;font-size:15px;line-height:1.28;color:var(--tvl-text);overflow-wrap:anywhere}
.dashboard-day{flex:0 0 auto;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:900;white-space:nowrap}.dashboard-day.dash-info{background:#eaf3ff;color:#225f9f}.dashboard-day.dash-warning{background:#fff2db;color:#9a5c00}.dashboard-day.dash-danger{background:#ffe5e5;color:#a12626}
.dashboard-event-meta{display:flex;flex-wrap:wrap;gap:6px 12px;margin:9px 0 6px;color:#5f6b7c;font-size:11px}.dashboard-event-meta span{position:relative}.dashboard-event-meta span+span:before{content:'•';margin-right:10px;color:#9aa5b3}
.dashboard-event-package{margin:6px 0 9px;font-size:12px;color:#334155;line-height:1.45;overflow-wrap:anywhere}
.dashboard-readiness{display:flex;flex-wrap:wrap;gap:6px}.dashboard-readiness span{border-radius:999px;padding:5px 8px;font-size:10px;font-weight:800;line-height:1.2}.dashboard-readiness .ready{background:#e8f7ed;color:#1f7a3d}.dashboard-readiness .process{background:#fff2db;color:#946000}.dashboard-readiness .alert{background:#ffe7e7;color:#a02626}.dashboard-readiness .neutral{background:#eef1f5;color:#687386}
.dashboard-event-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px;padding-top:10px;border-top:1px solid var(--tvl-border)}
.dashboard-alert-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;text-decoration:none!important;color:var(--tvl-text)!important;border:1px solid var(--tvl-border);border-left-width:4px;border-radius:12px;padding:10px 11px;margin:7px 0;background:#fff}.dashboard-alert-item.warning{border-left-color:#e9a11d;background:#fffdf7}.dashboard-alert-item.danger{border-left-color:#d94a4a;background:#fff9f9}.dashboard-alert-type{font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.3px;border-radius:999px;padding:4px 6px;background:#eef3f8;color:#4d6076}.dashboard-alert-item div{min-width:0}.dashboard-alert-item b,.dashboard-alert-item small{display:block;overflow-wrap:anywhere}.dashboard-alert-item b{font-size:12px}.dashboard-alert-item small{margin-top:2px;color:var(--tvl-muted);font-size:10px;line-height:1.4}.dashboard-alert-item>strong{font-size:20px;color:#8b97a8}
.dashboard-empty{border:1px dashed #cbd5e1;background:#f8fafc;border-radius:12px;padding:13px;color:#64748b;font-size:12px;text-align:center}.dashboard-empty.success{background:#f5fbf7;border-color:#b9dbc4;color:#38754a}
.dashboard-two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.dashboard-two-col>.card{margin-top:0}
.dashboard-money-row,.dashboard-simple-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--tvl-border)}.dashboard-money-row:last-child,.dashboard-simple-row:last-child{border-bottom:0}.dashboard-money-row>div,.dashboard-simple-row>div{min-width:0}.dashboard-money-row b,.dashboard-money-row small,.dashboard-simple-row b,.dashboard-simple-row small{display:block;overflow-wrap:anywhere}.dashboard-money-row b,.dashboard-simple-row b{font-size:11.5px;color:var(--tvl-text)}.dashboard-money-row small,.dashboard-simple-row small{font-size:10px;color:var(--tvl-muted);margin-top:3px;line-height:1.35}.dashboard-money-row>div:last-child{text-align:right;flex:0 0 auto}.dashboard-money-row strong{display:block;font-size:12px}.dashboard-money-row a:not(.btn){display:block;margin-top:4px;font-size:10px;font-weight:800;color:var(--tvl-blue2);text-decoration:none}
.dashboard-invoice-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-bottom:8px}.dashboard-invoice-kpis>div{border:1px solid var(--tvl-border);border-radius:10px;background:#f9fbfe;padding:9px;text-align:center}.dashboard-invoice-kpis span{display:block;font-size:9px;color:var(--tvl-muted)}.dashboard-invoice-kpis b{display:block;font-size:17px;margin-top:2px;color:var(--tvl-text)}
.dashboard-inline-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.dashboard-inline-actions .btn{width:100%}
.dashboard-finance-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.dashboard-finance-grid>div{border:1px solid var(--tvl-border);border-radius:10px;padding:10px;background:#fafcff;min-width:0}.dashboard-finance-grid span{display:block;font-size:10px;color:var(--tvl-muted)}.dashboard-finance-grid b{display:block;margin-top:3px;font-size:13px;overflow-wrap:anywhere}.period-filter.compact{margin-bottom:10px}

@media(max-width:980px){.dashboard-quick-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-finance-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){
  .dashboard-two-col{grid-template-columns:1fr}.dashboard-section-head{align-items:flex-start}.dashboard-event-actions .btn{flex:1 1 120px}.dashboard-money-row{align-items:flex-start}.dashboard-simple-row{align-items:flex-start}.dashboard-simple-row .btn{flex:0 0 auto}
}
@media(max-width:520px){
  .dashboard-quick-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.dashboard-quick{padding:10px}.dashboard-quick span{flex-basis:31px;height:31px}.dashboard-summary-grid{gap:7px}.dashboard-summary-card{padding:10px}.dashboard-summary-card strong{font-size:15px}.dashboard-summary-card small{font-size:9.5px}
  .dashboard-section-head{flex-direction:column;align-items:stretch}.dashboard-section-head .btn{width:100%}.dashboard-event-card{padding:11px}.dashboard-event-top h4{font-size:14px}.dashboard-event-meta{gap:5px 8px}.dashboard-event-meta span+span:before{margin-right:7px}
  .dashboard-event-actions{display:grid;grid-template-columns:1fr 1fr}.dashboard-event-actions .btn:first-child{grid-column:1/-1}.dashboard-alert-item{grid-template-columns:1fr auto}.dashboard-alert-type{grid-column:1/-1;justify-self:start}.dashboard-money-row{flex-direction:column}.dashboard-money-row>div:last-child{text-align:left}.dashboard-simple-row{flex-direction:column}.dashboard-simple-row .btn{width:100%}.dashboard-inline-actions{grid-template-columns:1fr}.dashboard-invoice-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-finance-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:350px){.dashboard-summary-grid,.dashboard-finance-grid{grid-template-columns:1fr}.dashboard-quick-actions{grid-template-columns:1fr}}

/* v1.6.3 - Dashboard Keuangan dipisahkan dari Dashboard Utama */
.finance-dashboard-actions{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 14px}.finance-kpi-grid .finance-cash-now{border:2px solid rgba(13,84,140,.24)}.finance-cash-now strong{font-size:clamp(22px,4vw,32px)}
@media(max-width:640px){.finance-dashboard-actions{display:grid;grid-template-columns:1fr 1fr}.finance-dashboard-actions .btn:first-child{grid-column:1/-1}.finance-dashboard-actions .btn{width:100%;justify-content:center}.finance-kpi-grid{grid-template-columns:1fr 1fr}.finance-kpi-grid .kpi{min-width:0}.finance-kpi-grid .kpi strong{font-size:18px;overflow-wrap:anywhere}.finance-kpi-grid .finance-cash-now{grid-column:1/-1}.finance-kpi-grid .finance-cash-now strong{font-size:26px}}
@media(max-width:390px){.finance-kpi-grid{grid-template-columns:1fr}.finance-kpi-grid .finance-cash-now{grid-column:auto}}

/* ===== v1.6.4 Detail Event Terpusat ===== */
.event-detail-back{margin:0 0 9px}.event-detail-hero{border:1px solid var(--tvl-border);border-radius:18px;background:linear-gradient(135deg,#f8fbff,#fff);padding:18px;margin-bottom:10px;box-shadow:0 3px 12px rgba(20,42,74,.05)}
.event-detail-hero-main{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.event-detail-hero-main>div{min-width:0}.event-detail-id{display:inline-block;font-size:10px;font-weight:900;letter-spacing:.5px;color:var(--tvl-blue2);text-transform:uppercase}.event-detail-hero h2{margin:3px 0 5px;font-size:22px;line-height:1.2;color:var(--tvl-text);overflow-wrap:anywhere}.event-detail-hero p{margin:0;color:var(--tvl-muted);font-size:12px}.event-detail-status{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:0 0 auto}.event-detail-status b{font-size:11px;color:var(--tvl-text)}.event-detail-package{margin-top:13px;padding-top:11px;border-top:1px solid var(--tvl-border);font-size:13px;line-height:1.45;color:#334155;white-space:pre-wrap;overflow-wrap:anywhere}
.event-detail-readiness{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:10px 0}.event-detail-badge{border:1px solid var(--tvl-border);border-radius:12px;padding:9px 10px;background:#f8fafc;min-width:0}.event-detail-badge small,.event-detail-badge b{display:block;overflow-wrap:anywhere}.event-detail-badge small{font-size:9px;color:var(--tvl-muted);text-transform:uppercase;font-weight:800;letter-spacing:.25px}.event-detail-badge b{font-size:11px;margin-top:2px}.event-detail-badge.ready{background:#f1faf4;border-color:#c9e8d2;color:#23713a}.event-detail-badge.process{background:#fff9eb;border-color:#f3dab0;color:#8b5a00}.event-detail-badge.alert{background:#fff3f3;border-color:#efc5c5;color:#9d2929}.event-detail-badge.neutral{background:#f7f8fa;color:#667085}
.event-detail-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:10px 0 14px}.event-detail-actions .btn{width:100%;justify-content:center}
.event-detail-finance{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin-bottom:12px}.event-detail-finance>div{border:1px solid var(--tvl-border);background:#fff;border-radius:13px;padding:11px;min-width:0}.event-detail-finance span,.event-detail-finance small{display:block;color:var(--tvl-muted);font-size:9.5px}.event-detail-finance strong{display:block;font-size:14px;margin-top:3px;overflow-wrap:anywhere}.event-detail-finance .warning{background:#fffaf0;border-color:#f2d69d}.event-detail-finance .ok{background:#f4fbf6;border-color:#cde8d3}.event-detail-finance .danger{background:#fff4f4;border-color:#edcaca}.event-detail-finance .muted{background:#f8fafc}
.event-detail-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.event-detail-columns>.card{margin-top:0}.event-detail-card{margin-top:12px}.event-detail-card h3{margin-bottom:11px}.event-detail-data{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.event-detail-data>div{border:1px solid var(--tvl-border);background:#fafcff;border-radius:10px;padding:9px;min-width:0}.event-detail-data span,.event-detail-data small{display:block;font-size:9.5px;color:var(--tvl-muted);line-height:1.35}.event-detail-data b{display:block;font-size:11px;color:var(--tvl-text);margin-top:2px;overflow-wrap:anywhere}.event-detail-data .span-2{grid-column:1/-1}.event-detail-note{margin-top:10px;padding:10px;border-radius:10px;background:#fffaf0;border:1px solid #f3dfb9}.event-detail-note span{font-size:9px;font-weight:900;color:#89611c;text-transform:uppercase}.event-detail-note p{font-size:11px;line-height:1.5;margin:4px 0 0;color:#4b5563}
.event-detail-section-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-bottom:8px}.event-detail-section-summary>div{border:1px solid var(--tvl-border);border-radius:9px;padding:8px;background:#fafcff;min-width:0}.event-detail-section-summary span{font-size:9px;color:var(--tvl-muted);display:block}.event-detail-section-summary b{font-size:11px;display:block;margin-top:2px;overflow-wrap:anywhere}.event-detail-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--tvl-border);padding:9px 1px}.event-detail-row>div{min-width:0}.event-detail-row b,.event-detail-row small{display:block;overflow-wrap:anywhere}.event-detail-row b{font-size:11px}.event-detail-row small{font-size:9.5px;color:var(--tvl-muted);margin-top:2px}.event-detail-row strong{font-size:11px;flex:0 0 auto}.event-detail-total{display:flex;align-items:center;justify-content:space-between;gap:10px;border-radius:10px;background:#eaf3ff;padding:10px;margin-top:9px;color:#174c80}.event-detail-total span{font-size:10px;font-weight:900}.event-detail-total strong{font-size:13px}.event-detail-section-btn{margin-top:10px;width:100%;justify-content:center}
.event-detail-vendor-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--tvl-border)}.event-detail-vendor-row>div{min-width:0}.event-detail-vendor-row b,.event-detail-vendor-row small,.event-detail-vendor-row strong{display:block}.event-detail-vendor-row b{font-size:11px}.event-detail-vendor-row small{font-size:9px;color:var(--tvl-muted);margin-top:2px}.event-detail-vendor-row>div:last-child{text-align:right;flex:0 0 auto}.event-detail-vendor-row strong{font-size:9.5px;margin-top:4px;color:#475569}
.event-detail-activity-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.event-detail-activity-grid>div{border:1px solid var(--tvl-border);border-radius:9px;background:#fafcff;padding:8px;text-align:center;min-width:0}.event-detail-activity-grid span{display:block;font-size:9px;color:var(--tvl-muted);overflow-wrap:anywhere}.event-detail-activity-grid b{display:block;font-size:13px;margin-top:2px}
@media(max-width:900px){.event-detail-finance{grid-template-columns:repeat(3,minmax(0,1fr))}.event-detail-activity-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:680px){.event-detail-columns{grid-template-columns:1fr}.event-detail-readiness{grid-template-columns:repeat(2,minmax(0,1fr))}.event-detail-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.event-detail-finance{grid-template-columns:repeat(2,minmax(0,1fr))}.event-detail-activity-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.event-detail-hero{padding:14px}.event-detail-hero-main{flex-direction:column}.event-detail-status{align-items:flex-start}.event-detail-hero h2{font-size:18px}.event-detail-actions{grid-template-columns:1fr 1fr}.event-detail-finance{grid-template-columns:1fr 1fr}.event-detail-data{grid-template-columns:1fr}.event-detail-data .span-2{grid-column:auto}.event-detail-section-summary{grid-template-columns:1fr 1fr}.event-detail-section-summary>div:first-child{grid-column:1/-1}.event-detail-vendor-row{flex-direction:column}.event-detail-vendor-row>div:last-child{text-align:left}.event-detail-activity-grid{grid-template-columns:1fr 1fr}}

/* ===== v1.6.6 Status Kesiapan + Pasca Event ===== */
.dashboard-readiness-score{margin:8px 0 9px;padding:8px 9px;border:1px solid var(--tvl-border);border-radius:10px;background:#f8fbff}.dashboard-readiness-score>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:10px}.dashboard-readiness-score span{font-size:9px;color:var(--tvl-muted);font-weight:800;text-transform:uppercase;letter-spacing:.2px}.dashboard-readiness-score strong{font-size:12px;color:var(--tvl-blue2)}.dashboard-readiness-track{height:6px;background:#e8edf4;border-radius:999px;overflow:hidden;margin:6px 0 4px}.dashboard-readiness-track i{display:block;height:100%;background:linear-gradient(90deg,#0d548c,#f4a300);border-radius:inherit}.dashboard-readiness-score small{font-size:9px;color:var(--tvl-muted)}
.post-event-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(110px,180px) auto;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--tvl-border);text-decoration:none;color:inherit}.post-event-row:last-child{border-bottom:0}.post-event-row>div{min-width:0}.post-event-row b,.post-event-row small{display:block;overflow-wrap:anywhere}.post-event-row b{font-size:11px}.post-event-row small{font-size:9.5px;color:var(--tvl-muted);margin-top:2px}.post-event-row>strong{font-size:10px;color:var(--tvl-blue2);white-space:nowrap}.post-event-progress{height:7px;background:#edf1f6;border-radius:999px;overflow:hidden}.post-event-progress i{display:block;height:100%;background:#f4a300;border-radius:inherit}
.event-readiness-overall{display:grid;grid-template-columns:auto minmax(160px,1fr);gap:14px;align-items:center;margin:10px 0;padding:12px 13px;border:1px solid #d8e6f5;border-radius:14px;background:#f8fbff}.event-readiness-overall>div:first-child{min-width:125px}.event-readiness-overall span,.event-readiness-overall small{display:block}.event-readiness-overall span{font-size:9px;text-transform:uppercase;font-weight:900;color:var(--tvl-muted);letter-spacing:.25px}.event-readiness-overall strong{display:block;font-size:22px;line-height:1.1;color:var(--tvl-blue2);margin:2px 0}.event-readiness-overall small{font-size:9.5px;color:var(--tvl-muted)}.event-readiness-overall-track{height:11px;background:#e9eef5;border-radius:999px;overflow:hidden}.event-readiness-overall-track i{display:block;height:100%;background:linear-gradient(90deg,#0d548c,#f4a300);border-radius:inherit}
.event-post-card{border-top:3px solid #f4a300}.event-post-head{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--tvl-border);border-radius:13px;padding:12px;background:#fffaf0;margin-bottom:8px}.event-post-head.closed{background:#f2faf4;border-color:#c9e5cf}.event-post-head span,.event-post-head small{display:block}.event-post-head span{font-size:9px;font-weight:900;text-transform:uppercase;color:var(--tvl-muted)}.event-post-head strong{display:block;font-size:14px;margin:2px 0;color:#8a5c00}.event-post-head.closed strong{color:#26743e}.event-post-head small{font-size:9.5px;color:var(--tvl-muted)}.event-post-ring{display:grid;place-items:center;min-width:48px;height:48px;border-radius:50%;background:#fff;border:4px solid #f4a300;font-weight:900;font-size:12px;color:#755000}.event-post-head.closed .event-post-ring{border-color:#55a86d;color:#26743e}
.event-post-checklist{display:grid;gap:7px}.event-post-item{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:9px;align-items:center;padding:9px 10px;border:1px solid var(--tvl-border);border-radius:10px;text-decoration:none;color:inherit;background:#fff}.event-post-item>span{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;font-size:11px;font-weight:900}.event-post-item.done>span{background:#e7f7ec;color:#25713c}.event-post-item.todo>span{background:#fff0df;color:#a26400}.event-post-item b,.event-post-item small{display:block}.event-post-item b{font-size:11px}.event-post-item small{font-size:9.5px;color:var(--tvl-muted);margin-top:1px}.event-post-item>strong{font-size:14px;color:#8590a0}.event-post-complete-form{margin-top:10px;display:grid;gap:6px}.event-post-complete-form .btn{width:100%;justify-content:center}.event-post-complete-form small{font-size:9.5px;line-height:1.4;color:var(--tvl-muted)}.event-post-note{margin-top:9px;padding:9px 10px;border-radius:9px;background:#fff8e8;border:1px solid #eed7a2;font-size:10px;line-height:1.45;color:#6b5421}.event-post-note.success{background:#eff9f2;border-color:#cbe4d1;color:#2d6840}
@media(max-width:680px){.post-event-row{grid-template-columns:minmax(0,1fr) auto}.post-event-progress{grid-column:1/-1;grid-row:2}.event-readiness-overall{grid-template-columns:1fr;gap:8px}.event-readiness-overall>div:first-child{display:grid;grid-template-columns:1fr auto;align-items:end}.event-readiness-overall strong{grid-column:2;grid-row:1/3}.event-readiness-overall small{grid-column:1}.event-post-head{align-items:flex-start}}
@media(max-width:420px){.event-post-item{grid-template-columns:25px minmax(0,1fr) auto;padding:8px}.event-post-ring{min-width:42px;height:42px;border-width:3px}.dashboard-readiness-score{padding:7px 8px}}

/* ===== v1.6.7 Pencarian Global ===== */
.global-search-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;margin:10px 0 14px;padding:10px;border:1px solid #d7e3f0;border-radius:14px;background:linear-gradient(180deg,#fbfdff,#f5f9fe)}
.global-search-input{display:flex;align-items:center;gap:8px;min-width:0;border:1px solid var(--tvl-border);border-radius:11px;background:#fff;padding:0 10px;height:46px}.global-search-input>span{font-size:19px;line-height:1;color:#7890aa}.global-search-input input{border:0!important;box-shadow:none!important;background:transparent!important;min-width:0;width:100%;height:42px!important;padding:0!important;margin:0!important}
.global-search-chips{display:flex;gap:7px;overflow-x:auto;padding:0 1px 5px;margin:0 0 10px;scrollbar-width:none}.global-search-chips::-webkit-scrollbar{display:none}.global-search-chips a{flex:0 0 auto;text-decoration:none!important;border:1px solid var(--tvl-border);background:#fff;color:#526174!important;border-radius:999px;padding:7px 11px;font-size:10px;font-weight:800}.global-search-chips a.active{background:#eaf3ff;border-color:#9ebce3;color:var(--tvl-blue2)!important}
.global-search-count{display:flex;align-items:baseline;gap:6px;margin:2px 1px 10px;color:var(--tvl-muted)}.global-search-count b{font-size:17px;color:var(--tvl-text)}.global-search-count span{font-size:10px}
.global-search-empty{border:1px dashed #c9d5e3;border-radius:14px;background:#f8fbfe;padding:18px 14px;text-align:center;margin:10px 0}.global-search-empty b,.global-search-empty span{display:block}.global-search-empty b{font-size:13px;color:var(--tvl-text)}.global-search-empty span{font-size:10px;color:var(--tvl-muted);margin-top:4px;line-height:1.45}
.global-search-section{margin-top:10px}.global-result-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid var(--tvl-border)}.global-result-card:last-child{border-bottom:0}.global-result-main{min-width:0}.global-result-main b,.global-result-main small,.global-result-main p{display:block;overflow-wrap:anywhere}.global-result-main b{font-size:11.5px;color:var(--tvl-text);margin-top:3px}.global-result-main small{font-size:9.5px;color:var(--tvl-muted);margin-top:3px}.global-result-main p{font-size:10px;color:#465467;margin:4px 0 0;line-height:1.4}.global-result-type{display:inline-flex!important;width:max-content!important;border-radius:999px;padding:3px 6px;background:#eaf3ff;color:#245e97!important;font-size:8px!important;font-weight:900!important;letter-spacing:.35px}.global-result-type.invoice{background:#fff0dc;color:#986000!important}.global-result-type.payment{background:#eaf8ef;color:#2f7544!important}
.global-result-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;text-align:right;min-width:120px}.global-result-side strong{font-size:12px;color:var(--tvl-text)}.global-result-side small{font-size:9px;color:var(--tvl-muted)}.global-result-side .btn{margin-top:3px;white-space:nowrap}
.global-client-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--tvl-border)}.global-client-card:last-child{border-bottom:0}.global-client-card>div:first-child{min-width:0}.global-client-card b,.global-client-card small{display:block;overflow-wrap:anywhere}.global-client-card b{font-size:11.5px;margin-top:3px}.global-client-card small{font-size:9.5px;color:var(--tvl-muted);margin-top:3px}.global-client-actions{display:flex;gap:6px;flex:0 0 auto}
@media(max-width:620px){.global-search-bar{grid-template-columns:1fr}.global-search-bar>.btn{width:100%}.global-result-card{grid-template-columns:1fr}.global-result-side{align-items:flex-start;text-align:left;min-width:0}.global-result-side .btn{width:100%}.global-client-card{align-items:flex-start;flex-direction:column}.global-client-actions{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.global-client-actions .btn{width:100%}.global-search-input{height:48px}}
@media(max-width:390px){.global-client-actions{grid-template-columns:1fr}.global-search-bar{padding:8px}}

/* v1.6.8 — pagination/performance friendly list navigation */
.tvlff-pagination{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;margin:18px 0 4px;padding-top:12px;border-top:1px solid #e7edf5}
.tvlff-pagination>span{font-size:13px;color:#617087;white-space:nowrap}
@media(max-width:560px){.tvlff-pagination{justify-content:space-between;gap:8px}.tvlff-pagination>span{order:-1;width:100%;text-align:center}.tvlff-pagination .btn{flex:1;text-align:center}}

/* ===== v1.7.0 Database Client / CRM ===== */
.crm-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:10px 0 12px}.crm-toolbar>span{font-size:10px;color:var(--tvl-muted);text-align:right}
.crm-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:10px 0 13px}.crm-kpi-grid>div{border:1px solid var(--tvl-border);border-radius:13px;background:linear-gradient(180deg,#fff,#f8fbff);padding:12px;min-width:0}.crm-kpi-grid span{display:block;font-size:10px;color:var(--tvl-muted)}.crm-kpi-grid strong{display:block;font-size:17px;line-height:1.2;margin-top:4px;color:var(--tvl-text);overflow-wrap:anywhere}
.crm-filter{display:grid;grid-template-columns:minmax(220px,1.6fr) minmax(150px,.8fr) minmax(150px,.8fr) auto;gap:8px;align-items:end}.crm-filter>div{min-width:0}.crm-filter label{display:block;font-size:10px;font-weight:800;color:#546274;margin-bottom:4px}.crm-filter input,.crm-filter select{width:100%;min-width:0}
.crm-client-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--tvl-border)}.crm-client-card:last-child{border-bottom:0}.crm-client-main{min-width:0}.crm-client-title{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.crm-client-title b{font-size:12px;line-height:1.3;overflow-wrap:anywhere}.crm-client-main small,.crm-client-main>span{display:block;color:var(--tvl-muted);font-size:9.5px;line-height:1.4;margin-top:3px;overflow-wrap:anywhere}.crm-status{display:inline-flex;border-radius:999px;padding:4px 7px;font-size:8px;font-weight:900;letter-spacing:.2px;background:#eef2f7;color:#5a6675}.crm-status.aktif{background:#e8f7ed;color:#277340}.crm-status.repeat-client{background:#eaf3ff;color:#225f9f}.crm-status.prospek{background:#fff1dc;color:#986000}.crm-status.tidak-aktif{background:#f0f1f3;color:#727985}.crm-client-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.crm-detail-actions{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0 12px}.crm-detail-actions form{display:inline-flex}.crm-detail-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.crm-detail-columns>.card{margin-top:0}.crm-profile-card .event-detail-data{margin-top:0}
.crm-contact-row,.crm-history-row,.crm-suggestion-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--tvl-border)}.crm-contact-row:last-of-type,.crm-history-row:last-child,.crm-suggestion-row:last-child{border-bottom:0}.crm-contact-row>div:first-child,.crm-history-row>div:first-child,.crm-suggestion-row>div:first-child{min-width:0}.crm-contact-row b,.crm-contact-row small,.crm-history-row b,.crm-history-row small,.crm-suggestion-row b,.crm-suggestion-row small{display:block;overflow-wrap:anywhere}.crm-contact-row b,.crm-history-row b,.crm-suggestion-row b{font-size:11px}.crm-contact-row small,.crm-history-row small,.crm-suggestion-row small{font-size:9.5px;color:var(--tvl-muted);margin-top:2px;line-height:1.4}.crm-contact-row.inactive{opacity:.55}.crm-primary-badge{display:inline-flex;border-radius:999px;background:#e8f7ed;color:#277340;font-size:7.5px;font-weight:900;padding:3px 5px;margin-left:5px;vertical-align:middle}.crm-contact-actions,.crm-history-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.crm-contact-actions form,.crm-history-actions form{display:inline-flex}.crm-history-row>div:last-child{display:flex;align-items:flex-end;flex-direction:column;gap:5px}.crm-history-row>div:last-child>strong{font-size:11px}.crm-add-contact{margin-top:10px;border:1px dashed #cbd8e6;border-radius:11px;background:#f8fbfe}.crm-add-contact>summary{cursor:pointer;padding:10px 11px;font-size:10.5px;font-weight:900;color:var(--tvl-blue2)}.crm-add-contact[open]>summary{border-bottom:1px solid var(--tvl-border)}.crm-add-contact form{padding:10px}.crm-check{display:flex!important;align-items:center;gap:7px}.crm-check input{width:auto!important;min-width:auto!important}
.crm-suggestion-card{border-top:3px solid #f4a300}.crm-suggestion-row form{flex:0 0 auto}.crm-duplicate-warning{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #efcf8c;border-left:4px solid #f4a300;background:#fffaf0;border-radius:12px;padding:11px 12px;margin:10px 0}.crm-duplicate-warning b,.crm-duplicate-warning span{display:block}.crm-duplicate-warning b{font-size:11px;color:#7d5600}.crm-duplicate-warning span{font-size:9.5px;color:#6f6250;margin-top:2px}.crm-force-duplicate{border:1px solid #efcf8c;background:#fffaf0;border-radius:10px;padding:10px}.crm-force-duplicate label{display:flex!important;align-items:flex-start;gap:8px}.crm-force-duplicate input{width:auto!important;min-width:auto!important;margin-top:2px}.crm-force-duplicate small{display:block;margin:4px 0 0 24px;color:#76654c;font-size:9px}.crm-event-link-field{border:1px solid #dbe7f3;background:#f8fbff;border-radius:10px;padding:9px}.crm-event-link-field>small{display:block;color:var(--tvl-muted);font-size:9px;line-height:1.4;margin-top:4px}
@media(max-width:900px){.crm-filter{grid-template-columns:repeat(2,minmax(0,1fr))}.crm-filter .btn{width:100%}.crm-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.crm-toolbar{align-items:stretch;flex-direction:column}.crm-toolbar>span{text-align:left}.crm-toolbar .btn{width:100%}.crm-detail-columns{grid-template-columns:1fr}.crm-client-card{grid-template-columns:1fr}.crm-client-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.crm-client-actions .btn{width:100%}.crm-contact-row,.crm-history-row,.crm-suggestion-row{align-items:flex-start;flex-direction:column}.crm-contact-actions,.crm-history-actions,.crm-suggestion-row form{width:100%}.crm-contact-actions form,.crm-history-actions form{flex:1}.crm-contact-actions .btn,.crm-history-actions .btn,.crm-suggestion-row .btn{width:100%}.crm-history-row>div:last-child{width:100%;align-items:flex-start}.crm-duplicate-warning{align-items:stretch;flex-direction:column}.crm-duplicate-warning .btn{width:100%}}
@media(max-width:430px){.crm-filter{grid-template-columns:1fr}.crm-kpi-grid{gap:7px}.crm-kpi-grid>div{padding:10px}.crm-client-actions{grid-template-columns:1fr}.crm-detail-actions{display:grid;grid-template-columns:1fr 1fr}.crm-detail-actions>.btn,.crm-detail-actions form,.crm-detail-actions form .btn{width:100%}.crm-detail-actions form{grid-column:1/-1}.crm-contact-actions{display:grid;grid-template-columns:1fr}.crm-contact-actions form{width:100%}}

/* ===== v1.7.1 Pipeline Booking ===== */
.pipeline-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 12px}.pipeline-kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:10px 0 13px}.pipeline-kpi{display:block;text-decoration:none!important;border:1px solid var(--tvl-border);border-radius:13px;background:linear-gradient(180deg,#fff,#f8fbff);padding:11px;min-width:0;color:var(--tvl-text)!important}.pipeline-kpi span{display:block;font-size:9px;color:var(--tvl-muted);line-height:1.25}.pipeline-kpi strong{display:block;margin-top:4px;font-size:18px}.pipeline-filter{display:grid;grid-template-columns:minmax(220px,1.45fr) minmax(145px,.7fr) minmax(170px,.8fr) auto;gap:8px;align-items:end}.pipeline-filter>div{min-width:0}.pipeline-filter label{display:block;font-size:10px;font-weight:800;color:#546274;margin-bottom:4px}.pipeline-filter input,.pipeline-filter select{width:100%;min-width:0}
.pipeline-booking-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--tvl-border)}.pipeline-booking-card:last-child{border-bottom:0}.pipeline-booking-card.followup-due{border-left:4px solid #ef9f21;padding-left:10px;background:linear-gradient(90deg,#fffaf0,transparent 38%)}.pipeline-booking-main{min-width:0}.pipeline-booking-title{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.pipeline-booking-title b{font-size:12px;line-height:1.35;overflow-wrap:anywhere}.pipeline-booking-main>small,.pipeline-booking-main>p{display:block;margin:4px 0 0;color:var(--tvl-muted);font-size:9.5px;line-height:1.4;overflow-wrap:anywhere}.pipeline-booking-main>p{font-size:10.5px;color:#334155}.pipeline-booking-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.pipeline-booking-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}.pipeline-booking-tags span{display:inline-flex;border-radius:999px;background:#eef3f8;color:#56677a;padding:4px 7px;font-size:8.5px;font-weight:800}.pipeline-booking-tags span.due{background:#fff0d8;color:#9a5d00}
.pipeline-status{display:inline-flex;align-items:center;border-radius:999px;padding:4px 7px;font-size:8px;font-weight:900;letter-spacing:.15px;background:#eef2f7;color:#5b6675}.pipeline-status.prospek{background:#fff1dc;color:#976000}.pipeline-status.penawaran{background:#eaf3ff;color:#225f9f}.pipeline-status.follow-up{background:#f3edff;color:#6940a5}.pipeline-status.menunggu-dp{background:#fff4d8;color:#9a6400}.pipeline-status.confirmed{background:#e8f7ed;color:#24723c}.pipeline-status.tidak-jadi{background:#f1f2f4;color:#7a8089}
.pipeline-detail-actions{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0 12px}.pipeline-hero{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;border:1px solid var(--tvl-border);border-radius:17px;padding:16px;background:linear-gradient(135deg,#f8fbff,#fff);box-shadow:0 3px 12px rgba(20,42,74,.05);margin-bottom:11px}.pipeline-hero>div{min-width:0}.pipeline-hero h3{margin:7px 0 4px;font-size:20px;color:var(--tvl-text);overflow-wrap:anywhere}.pipeline-hero p{margin:0;color:var(--tvl-muted);font-size:11px;line-height:1.45;white-space:pre-wrap}.pipeline-hero-meta{text-align:right;flex:0 0 auto}.pipeline-hero-meta strong,.pipeline-hero-meta span{display:block}.pipeline-hero-meta strong{font-size:12px}.pipeline-hero-meta span{margin-top:4px;color:var(--tvl-muted);font-size:10px}.pipeline-followup-alert,.pipeline-info-banner{display:flex;justify-content:space-between;gap:12px;align-items:center;border-radius:12px;padding:10px 12px;margin:9px 0}.pipeline-followup-alert{border:1px solid #efcf8c;background:#fff9eb;color:#7f5700}.pipeline-info-banner{border:1px solid #c9dced;background:#f5f9ff;color:#2e557e}.pipeline-followup-alert b,.pipeline-followup-alert span,.pipeline-info-banner b,.pipeline-info-banner span{display:block}.pipeline-followup-alert b,.pipeline-info-banner b{font-size:10.5px}.pipeline-followup-alert span,.pipeline-info-banner span{font-size:9.5px;line-height:1.4}.pipeline-info-banner{align-items:flex-start;flex-direction:column}
.pipeline-status-actions{display:flex;gap:7px;flex-wrap:wrap}.pipeline-status-actions form{display:inline-flex}.pipeline-lost-form{margin-top:10px;border:1px dashed #e0b9b9;border-radius:11px;background:#fffafa}.pipeline-lost-form>summary{cursor:pointer;padding:10px 11px;font-size:10px;font-weight:900;color:#9b3434}.pipeline-lost-form[open]>summary{border-bottom:1px solid #eed3d3}.pipeline-lost-form form{padding:10px}.pipeline-log-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--tvl-border)}.pipeline-log-row:last-child{border-bottom:0}.pipeline-log-row b,.pipeline-log-row small{display:block}.pipeline-log-row b{font-size:10.5px}.pipeline-log-row small,.pipeline-log-row>span{font-size:9px;color:var(--tvl-muted)}.pipeline-form-card .form-grid>div>small{display:block;margin-top:4px;color:var(--tvl-muted);font-size:9px;line-height:1.4}.crm-pipeline-history{border-top:3px solid #2e6fa8}.global-result-type.booking{background:#edf4ff;color:#2d63a0}
@media(max-width:980px){.pipeline-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:680px){.pipeline-filter{grid-template-columns:1fr 1fr}.pipeline-filter .btn{width:100%;grid-column:1/-1}.pipeline-booking-card{grid-template-columns:1fr}.pipeline-booking-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.pipeline-booking-actions .btn{width:100%}.pipeline-hero{flex-direction:column}.pipeline-hero-meta{text-align:left}.pipeline-detail-actions{display:grid;grid-template-columns:1fr 1fr}.pipeline-detail-actions .btn{width:100%}.pipeline-status-actions{display:grid;grid-template-columns:1fr 1fr}.pipeline-status-actions form,.pipeline-status-actions .btn{width:100%}.pipeline-followup-alert{align-items:flex-start;flex-direction:column}}
@media(max-width:430px){.pipeline-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.pipeline-filter{grid-template-columns:1fr}.pipeline-filter .btn{grid-column:auto}.pipeline-detail-actions,.pipeline-status-actions,.pipeline-booking-actions{grid-template-columns:1fr}.pipeline-log-row{align-items:flex-start;flex-direction:column}.pipeline-hero h3{font-size:17px}}


/* v1.7.2 — Follow Up & Warning */
.pipeline-followup-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:0 0 13px}
.pipeline-followup-kpi{display:block;text-decoration:none!important;color:var(--tvl-text)!important;border:1px solid var(--tvl-border);border-radius:14px;background:#fff;padding:11px 12px;min-width:0;box-shadow:0 2px 8px rgba(20,42,74,.04)}
.pipeline-followup-kpi span,.pipeline-followup-kpi small{display:block;overflow-wrap:anywhere}.pipeline-followup-kpi span{font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.2px;color:var(--tvl-muted)}.pipeline-followup-kpi strong{display:block;margin:3px 0;font-size:20px;line-height:1.15}.pipeline-followup-kpi small{font-size:9px;color:var(--tvl-muted);line-height:1.35}
.pipeline-followup-kpi.today{border-top:3px solid #d89a20}.pipeline-followup-kpi.overdue{border-top:3px solid #d94a4a;background:#fffafa}.pipeline-followup-kpi.waiting{border-top:3px solid #e6ad35}.pipeline-followup-kpi.unscheduled{border-top:3px solid #7d91aa}
.dashboard-followup-wrap{margin-bottom:12px}.dashboard-followup-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;text-decoration:none!important;color:var(--tvl-text)!important;padding:10px 0;border-bottom:1px solid var(--tvl-border)}.dashboard-followup-row:last-child{border-bottom:0}.dashboard-followup-row>div{min-width:0}.dashboard-followup-row b,.dashboard-followup-row small{display:block;overflow-wrap:anywhere}.dashboard-followup-row b{font-size:11px;margin-top:4px;line-height:1.35}.dashboard-followup-row small{font-size:9px;color:var(--tvl-muted);margin-top:3px;line-height:1.35}.dashboard-followup-row>div:last-child{text-align:right;white-space:nowrap}.dashboard-followup-row>div:last-child strong{display:block;font-size:10px}.dashboard-followup-row.overdue>div:last-child strong{color:#b32c2c}.dashboard-followup-row.today>div:last-child strong{color:#936000}.dashboard-followup-row.waiting>div:last-child strong{color:#855900}
@media(max-width:980px){.pipeline-followup-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.pipeline-followup-kpis{gap:7px}.pipeline-followup-kpi{padding:10px}.pipeline-followup-kpi strong{font-size:17px}.dashboard-followup-row{grid-template-columns:1fr}.dashboard-followup-row>div:last-child{text-align:left;white-space:normal}.pipeline-filter{grid-template-columns:1fr 1fr}.pipeline-filter .btn{grid-column:1/-1}}
@media(max-width:430px){.pipeline-followup-kpis{grid-template-columns:1fr 1fr}.pipeline-followup-kpi span{font-size:8px}.pipeline-followup-kpi small{font-size:8.5px}.pipeline-filter{grid-template-columns:1fr}.pipeline-filter .btn{grid-column:auto}}


/* v1.7.3 - Quotation */
.quotation-form{max-width:1040px;margin:0 auto}.quotation-discount-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}.quotation-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.quotation-text-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.quotation-text-grid .span-2{grid-column:1/-1}.quotation-text-grid textarea{min-height:110px}.quotation-detail-hero{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}.quotation-detail-hero>div{background:#fff;border:1px solid #dbe4ef;border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:5px}.quotation-detail-hero strong{font-size:22px;color:#123a72}.quotation-detail-actions{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 16px}.quotation-history-card{overflow:hidden}.quotation-version-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid #e6edf5}.quotation-version-row:last-child{border-bottom:0}.quotation-version-row>div:first-child{display:flex;flex-direction:column;gap:4px;min-width:0}.quotation-version-row small{color:#64748b}.quotation-version-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.quotation-version-actions form{margin:0}.quotation-status{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;background:#eef3f8;color:#476078;white-space:nowrap}.quotation-status.terkirim{background:#e8f1ff;color:#1557a0}.quotation-status.disetujui{background:#e7f7ed;color:#19733d}.quotation-status.ditolak{background:#ffebeb;color:#a51d25}.quotation-status.kedaluwarsa{background:#fff0dc;color:#9a5311}.quotation-status.draft{background:#eef1f5;color:#56606d}.quotation-card{margin-bottom:12px}.quotation-list{display:grid;gap:12px}
@media(max-width:700px){.quotation-discount-grid,.quotation-text-grid,.quotation-detail-hero{grid-template-columns:1fr}.quotation-text-grid .span-2{grid-column:auto}.quotation-summary{grid-template-columns:1fr}.quotation-version-row{align-items:flex-start;flex-direction:column}.quotation-version-actions{width:100%;justify-content:flex-start}.quotation-version-actions .btn{min-height:40px}.quotation-detail-actions{display:grid;grid-template-columns:1fr 1fr}.quotation-detail-actions .btn{text-align:center}.quotation-text-grid textarea{min-height:96px}}
@media(max-width:430px){.quotation-detail-actions{grid-template-columns:1fr}}

/* v1.7.4 Quotation -> Invoice DP */
.invoice-source-segment{grid-template-columns:auto minmax(0,1fr);align-items:center}.invoice-source-segment span{font-size:11px;color:#526079;font-weight:750;padding:0 8px;overflow-wrap:anywhere}.invoice-source-segment button:disabled{cursor:default;opacity:1}
@media(max-width:520px){.invoice-source-segment{grid-template-columns:1fr}.invoice-source-segment span{text-align:center;padding:7px 4px 4px}}

/* ===== v1.7.5 Master Paket & Paket Builder ===== */
.master-package-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:10px 0 14px}.master-package-filter{display:grid;grid-template-columns:minmax(180px,1.4fr) minmax(130px,.8fr) minmax(120px,.7fr) auto;gap:8px;align-items:end;flex:1 1 620px}.master-package-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:0 0 14px}.master-package-summary>div{border:1px solid var(--tvl-border);border-radius:14px;background:#fff;padding:12px;min-width:0}.master-package-summary span,.master-package-summary strong{display:block}.master-package-summary span{font-size:9px;color:var(--tvl-muted);font-weight:800;text-transform:uppercase}.master-package-summary strong{font-size:17px;margin-top:4px;overflow-wrap:anywhere}.master-package-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.master-package-card{border:1px solid var(--tvl-border);border-radius:16px;background:#fff;padding:14px;box-shadow:0 2px 9px rgba(20,42,74,.04);min-width:0}.master-package-card-main{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.master-package-card-main>div{min-width:0}.master-package-card-main>div:first-child{display:flex;flex-direction:column;gap:5px}.master-package-card-main>div:last-child{text-align:right;flex:0 0 auto}.master-package-card-main b{font-size:13px;line-height:1.35;overflow-wrap:anywhere}.master-package-card-main strong{font-size:16px;color:var(--tvl-blue2)}.master-package-card-main small,.master-package-card p{font-size:9.5px;color:var(--tvl-muted);line-height:1.45}.master-package-card p{margin:10px 0}.master-package-card-actions,.master-package-detail-actions{display:flex;gap:7px;flex-wrap:wrap}.master-package-detail-actions form{margin:0}.master-package-status{display:inline-flex;align-items:center;width:max-content;padding:4px 8px;border-radius:999px;font-size:8px;font-weight:900;background:#eef2f7;color:#667487}.master-package-status.aktif{background:#e7f7ed;color:#237440}.master-package-status.nonaktif{background:#f2f3f5;color:#747b85}.master-package-form{max-width:1080px;margin:0 auto}.master-package-help{margin:-2px 0 10px}.master-package-item{border:1px solid #dbe4ef;border-radius:14px;padding:12px;margin:9px 0;background:#fbfdff}.master-package-item-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.master-package-item-head b{font-size:11px}.master-package-item-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.master-package-item-grid .span-2{grid-column:span 2}.master-package-item-grid label,.master-package-tier label{font-size:9px;font-weight:800;color:#475569}.master-package-tier{display:grid;grid-template-columns:1fr 1fr 1.2fr auto;gap:8px;align-items:end;border:1px solid #e1e8f0;border-radius:12px;padding:10px;margin:8px 0;background:#fff}.master-package-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:start;border:1px solid var(--tvl-border);border-radius:17px;background:linear-gradient(135deg,#f8fbff,#fff);padding:16px;margin:10px 0 12px}.master-package-hero h3{font-size:21px;margin:7px 0 5px}.master-package-hero p{font-size:10px;color:var(--tvl-muted);line-height:1.5;margin:0}.master-package-hero>div:last-child{text-align:right}.master-package-hero>div:last-child span,.master-package-hero>div:last-child small,.master-package-hero>div:last-child strong{display:block}.master-package-hero>div:last-child strong{font-size:22px;color:var(--tvl-blue2);margin:4px 0}.master-package-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.master-package-tags span{padding:4px 7px;border-radius:999px;background:#edf4fb;color:#395d7f;font-size:8.5px;font-weight:800}.master-package-builder-form{display:grid;grid-template-columns:minmax(170px,1fr) auto;gap:8px;align-items:end;max-width:430px;margin-bottom:12px}.master-package-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.master-package-kpis>div{border:1px solid #dfe7ef;border-radius:13px;padding:11px;background:#fff;min-width:0}.master-package-kpis span,.master-package-kpis strong,.master-package-kpis small{display:block}.master-package-kpis span{font-size:8.5px;color:var(--tvl-muted);font-weight:850;text-transform:uppercase}.master-package-kpis strong{font-size:16px;margin:4px 0;overflow-wrap:anywhere}.master-package-kpis small{font-size:8.5px;color:var(--tvl-muted)}.master-package-kpis .ready{border-top:3px solid #34a35d}.master-package-kpis .alert{border-top:3px solid #d94a4a}.master-package-use{display:flex;align-items:center;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--tvl-border)}.master-package-use small{font-size:9px;color:var(--tvl-muted);line-height:1.4}.master-package-component-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--tvl-border)}.master-package-component-row:last-child{border-bottom:0}.master-package-component-row b,.master-package-component-row small,.master-package-component-row span,.master-package-component-row strong{display:block}.master-package-component-row b{font-size:11px}.master-package-component-row small{font-size:9px;color:var(--tvl-muted);margin-top:3px}.master-package-component-row>div:last-child{text-align:right}.master-package-tier-view{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--tvl-border)}.master-package-tier-view:last-child{border-bottom:0}.master-package-info p{margin:5px 0 0;white-space:normal;line-height:1.55;font-size:10px;color:#425269}.quotation-master-picker{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(150px,.6fr) auto;gap:9px;align-items:end;border:1px solid #d6e3ef;background:#f7fbff;border-radius:14px;padding:12px;margin:10px 0}.quotation-master-picker label{display:block;font-size:9px;font-weight:850;color:#42546a;margin-bottom:4px}.quotation-package-banner{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;border:1px solid #c9dced;background:linear-gradient(135deg,#f5f9ff,#fff);border-radius:14px;padding:11px 12px;margin:8px 0 12px}.quotation-package-banner b,.quotation-package-banner span,.quotation-package-banner strong,.quotation-package-banner small{display:block}.quotation-package-banner b{font-size:10.5px}.quotation-package-banner span,.quotation-package-banner small{font-size:9px;color:#5c6f84;line-height:1.4}.quotation-package-banner>div:last-child{text-align:right}.quotation-package-banner strong{font-size:14px;color:#164d83;margin:3px 0}
@media(max-width:900px){.master-package-list{grid-template-columns:1fr}.master-package-item-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.master-package-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.master-package-filter{grid-template-columns:1fr 1fr}.master-package-filter input:first-of-type{grid-column:1/-1}.master-package-filter .btn{grid-column:1/-1}.master-package-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.master-package-summary>div:last-child{grid-column:1/-1}.master-package-card-main,.master-package-hero{grid-template-columns:1fr}.master-package-card-main>div:last-child,.master-package-hero>div:last-child{text-align:left}.master-package-detail-actions{display:grid;grid-template-columns:1fr 1fr}.master-package-detail-actions .btn,.master-package-detail-actions form,.master-package-detail-actions form .btn{width:100%}.master-package-tier{grid-template-columns:1fr 1fr}.master-package-tier>div:nth-child(3){grid-column:1/-1}.master-package-tier>.btn{grid-column:1/-1;width:100%}.master-package-builder-form{grid-template-columns:1fr}.master-package-use{align-items:stretch;flex-direction:column}.master-package-use .btn{width:100%}.quotation-master-picker{grid-template-columns:1fr}.quotation-package-banner{grid-template-columns:1fr}.quotation-package-banner>div:last-child{text-align:left}.master-package-component-row{grid-template-columns:1fr}.master-package-component-row>div:last-child{text-align:left}}
@media(max-width:430px){.master-package-filter,.master-package-summary,.master-package-item-grid,.master-package-kpis,.master-package-detail-actions{grid-template-columns:1fr}.master-package-summary>div:last-child,.master-package-item-grid .span-2{grid-column:auto}.master-package-card-actions{display:grid;grid-template-columns:1fr}.master-package-card-actions .btn{width:100%}.master-package-tier{grid-template-columns:1fr}.master-package-tier>div:nth-child(3),.master-package-tier>.btn{grid-column:auto}.master-package-hero h3{font-size:18px}}

/* v1.7.6 — Booking Confirmed -> Event Resmi */
.pipeline-info-banner.success{border-color:#b9ddc6;background:#f3fbf6;color:#24613a}
.pipeline-event-create-card{margin:10px 0 12px}
.pipeline-event-create-card h3{margin:0 0 10px;font-size:13px}
.pipeline-create-event-form{margin-top:12px;display:flex;justify-content:flex-end}
@media(max-width:560px){
  .pipeline-create-event-form .btn{width:100%}
}

/* ===== v1.7.7 User & Role Dasar ===== */
.tvlff-user-login label{font-size:11px;font-weight:800;color:#526079;margin-top:2px}.tvlff-user-login select{width:100%;height:46px;border:1px solid var(--tvl-border);border-radius:10px;padding:9px 11px;background:#fff;color:var(--tvl-text);font:inherit}.tvlff-user-login select:focus{border-color:#5f83b0;box-shadow:0 0 0 3px rgba(17,58,114,.08);outline:none}.tvlff-user-session{display:flex!important;align-items:center!important;gap:10px!important}.tvlff-user-session>span{display:flex!important;flex-direction:column;border-left:0!important;padding-left:0!important;line-height:1.25;text-align:right}.tvlff-user-session>span b{font-size:11px;color:var(--tvl-blue2);max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tvlff-user-session>span small{font-size:9px;color:var(--tvl-muted);font-weight:750;margin-top:2px}.tvlff-user-session form{margin:0}.user-role-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin:10px 0 13px}.user-role-kpis>div{background:#fff;border:1px solid var(--tvl-border);border-radius:13px;padding:12px;min-width:0}.user-role-kpis span,.user-role-kpis strong{display:block}.user-role-kpis span{font-size:9px;text-transform:uppercase;color:var(--tvl-muted);font-weight:850}.user-role-kpis strong{font-size:18px;color:var(--tvl-blue2);margin-top:4px}.role-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-bottom:13px}.role-info-grid>div{border:1px solid #dfe7ef;background:#f9fbfd;border-radius:12px;padding:11px}.role-info-grid b,.role-info-grid span{display:block}.role-info-grid b{font-size:11px;color:var(--tvl-blue2);margin-bottom:4px}.role-info-grid span{font-size:9.5px;color:var(--tvl-muted);line-height:1.48}.app-user-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:10px;border:1px solid var(--tvl-border);border-radius:13px;padding:11px;margin:8px 0;background:#fff}.app-user-row.inactive{opacity:.65;background:#f6f7f9}.app-user-avatar{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#eaf2fb;color:var(--tvl-blue2);font-size:15px;font-weight:900}.app-user-main{min-width:0}.app-user-main b,.app-user-main small{display:block;overflow-wrap:anywhere}.app-user-main b{font-size:12px;color:var(--tvl-blue2)}.app-user-main small{font-size:9px;color:var(--tvl-muted);margin-top:3px}.app-user-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.app-user-actions form{margin:0}.field-help{display:block;color:var(--tvl-muted);font-size:9px;margin-top:4px}.user-security-note p{font-size:11px;line-height:1.55;margin:6px 0}.settings-user-access{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #d6e3ef;background:#f7fbff;border-radius:13px;padding:12px;margin-bottom:12px}.settings-user-access div{min-width:0}.settings-user-access b,.settings-user-access span{display:block}.settings-user-access b{font-size:11px;color:var(--tvl-blue2)}.settings-user-access span{font-size:9px;color:var(--tvl-muted);margin-top:3px}.role-readonly-note{display:flex;flex-direction:column;gap:3px;border:1px solid #dbe4ed;background:#f7f9fc;border-radius:11px;padding:10px 11px;margin:8px 0}.role-readonly-note b{font-size:10px;color:#42546a}.role-readonly-note span{font-size:9px;color:var(--tvl-muted);line-height:1.45}.role-readonly-badge{display:inline-flex;align-items:center;padding:7px 10px;border-radius:999px;background:#eef2f6;color:#5a6676;font-size:9px;font-weight:850}.access-denied-card{max-width:620px;margin:30px auto!important;text-align:center;padding:28px!important}.access-denied-card b{font-size:17px;color:var(--tvl-blue2)}.access-denied-card p{font-size:11px;color:var(--tvl-muted);line-height:1.55;margin:8px auto 16px;max-width:480px}.user-management-form .field-help{font-weight:500}.user-security-note{border-left:4px solid var(--tvl-blue)}
@media(max-width:820px){.user-role-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.role-info-grid{grid-template-columns:1fr}}
@media(max-width:640px){.tvlff-top{align-items:flex-start}.tvlff-user-session{margin-left:auto}.tvlff-user-session>span{display:flex!important}.tvlff-user-session .btn{padding:7px 9px;font-size:10px}.user-role-kpis{grid-template-columns:1fr 1fr}.user-role-kpis>div:first-child{grid-column:1/-1}.app-user-row{grid-template-columns:38px minmax(0,1fr)}.app-user-avatar{width:38px;height:38px}.app-user-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr}.app-user-actions .btn,.app-user-actions form,.app-user-actions form .btn{width:100%}.settings-user-access{align-items:stretch;flex-direction:column}.settings-user-access .btn{width:100%}}
@media(max-width:430px){.tvlff-user-session>span b{max-width:90px}.tvlff-user-session .btn{min-height:32px;padding:6px 7px}.user-role-kpis{grid-template-columns:1fr 1fr}.app-user-actions{grid-template-columns:1fr}.tvlff-user-login{margin:25px auto;padding:20px}.tvlff-user-login input{font-size:18px}}

/* ===== v1.8.0 Approval & Penguncian ===== */
.approval-panel{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid var(--tvl-border);border-left:4px solid #94a4b7;border-radius:13px;padding:11px 12px;margin:10px 0 12px;background:#fff}
.approval-panel.approval-final{border-left-color:#2f9b55;background:#f6fcf8}.approval-panel.approval-revision{border-left-color:#e6a11b;background:#fffaf0}.approval-panel.approval-draft{border-left-color:#7290b1;background:#f8fbff}
.approval-panel-main{min-width:0}.approval-panel-main span,.approval-panel-main strong,.approval-panel-main small{display:block}.approval-panel-main span{font-size:8.5px;text-transform:uppercase;letter-spacing:.35px;color:var(--tvl-muted);font-weight:850}.approval-panel-main strong{font-size:13px;color:var(--tvl-blue2);margin-top:2px}.approval-panel-main small{font-size:9px;color:var(--tvl-muted);line-height:1.4;margin-top:3px;overflow-wrap:anywhere}
.approval-panel-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}.approval-panel-actions form{margin:0}.approval-revision-form{display:grid!important;grid-template-columns:minmax(150px,220px) auto;gap:6px;align-items:center}.approval-revision-form input{height:34px!important;min-height:34px!important;font-size:10px!important}
.btn.warning{background:#e6a11b!important;border-color:#e6a11b!important;color:#fff!important}.btn.warning:hover{filter:brightness(.96)}
.approval-locked-fieldset{display:contents;border:0;padding:0;margin:0;min-width:0}.approval-locked-fieldset input,.approval-locked-fieldset textarea,.approval-locked-fieldset select{background:#f5f7fa!important;color:#586474!important;opacity:1!important}.approval-locked-fieldset .btn{opacity:.55!important}
.approval-locked-note{border-left-color:#2f9b55!important;background:#f6fcf8!important}.approval-rules{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.approval-rules>div{border:1px solid #dfe7ef;border-radius:12px;padding:11px;background:#f9fbfd}.approval-rules b,.approval-rules span{display:block}.approval-rules b{font-size:10.5px;color:var(--tvl-blue2)}.approval-rules span{font-size:9.5px;line-height:1.5;color:var(--tvl-muted);margin-top:4px}
.approval-history-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--tvl-border)}.approval-history-row:last-child{border-bottom:0}.approval-history-row>div:first-child{min-width:0}.approval-history-row b,.approval-history-row small{display:block;overflow-wrap:anywhere}.approval-history-row b{font-size:11px}.approval-history-row small{font-size:9px;color:var(--tvl-muted);margin-top:3px}.approval-history-row>div:last-child{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.approval-kpis .warn{border-top:3px solid #e6a11b;background:#fffaf0}
@media(max-width:720px){.approval-panel{grid-template-columns:1fr}.approval-panel-actions{justify-content:stretch}.approval-panel-actions>form{width:100%}.approval-panel-actions .btn{width:100%}.approval-revision-form{grid-template-columns:1fr!important}.approval-rules{grid-template-columns:1fr}.approval-history-row{grid-template-columns:1fr}.approval-history-row>div:last-child{justify-content:flex-start}.approval-history-row .btn{flex:1}}

/* ===== v1.8.1 Closing Bulanan & Penguncian Periode ===== */
.monthly-period-banner,.closing-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;border:1px solid var(--tvl-border);border-left:5px solid #7890a9;border-radius:14px;padding:13px 14px;margin:10px 0 14px;background:#fff}
.monthly-period-banner span,.monthly-period-banner strong,.monthly-period-banner small{display:block}.monthly-period-banner span{font-size:8px;font-weight:900;letter-spacing:.35px;text-transform:uppercase;color:var(--tvl-muted)}.monthly-period-banner strong{font-size:14px;color:var(--tvl-blue2);margin-top:2px}.monthly-period-banner small{font-size:9px;color:var(--tvl-muted);line-height:1.45;margin-top:4px}.monthly-period-banner.closed{border-left-color:#2f9b55;background:#f6fcf8}.monthly-period-banner.revision{border-left-color:#e7a31a;background:#fffaf0}.monthly-period-banner.review{border-left-color:#3e79b7;background:#f6faff}
.closing-hero{padding:16px 17px;border-left-width:6px}.closing-hero span{display:block;font-size:8.5px;text-transform:uppercase;font-weight:900;letter-spacing:.45px;color:var(--tvl-muted)}.closing-hero h3{margin:3px 0 4px;font-size:20px;color:var(--tvl-blue2)}.closing-hero p{margin:0;font-size:10px;line-height:1.5;color:var(--tvl-muted)}.closing-hero.closed{border-left-color:#2f9b55;background:#f5fcf7}.closing-hero.revision{border-left-color:#e5a11d;background:#fffaf1}.closing-hero.review{border-left-color:#3f78b4;background:#f5faff}.closing-hero-badge{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#eef4fa;font-size:18px}.closing-hero.closed .closing-hero-badge{background:#e2f5e8}.closing-kpis{margin-bottom:12px}
.closing-check-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid var(--tvl-border)}.closing-check-row:last-of-type{border-bottom:0}.closing-check-row>span{width:25px;height:25px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:11px;background:#eef2f6;color:#667487}.closing-check-row.done>span{background:#e5f7ea;color:#24753f}.closing-check-row.blocker>span{background:#fde7e7;color:#a63333}.closing-check-row.warning>span{background:#fff1d7;color:#986300}.closing-check-row b,.closing-check-row small{display:block}.closing-check-row b{font-size:10.5px}.closing-check-row small{font-size:9px;color:var(--tvl-muted);line-height:1.4;margin-top:2px}.closing-check-row strong{font-size:10px;white-space:nowrap;color:var(--tvl-blue2)}
.closing-warning-note,.closing-blockers,.closing-locked-info{border-radius:11px;padding:11px 12px;margin-top:10px;font-size:9.5px;line-height:1.5}.closing-warning-note{background:#fff8e8;border:1px solid #efd7a6;color:#77500a}.closing-blockers{display:grid;gap:3px;background:#fff2f2;border:1px solid #ecc5c5;color:#8f3131}.closing-blockers b{font-size:10.5px}.closing-locked-info{display:grid;gap:3px;background:#f0faf3;border:1px solid #bfe0c8;color:#2f6740}.closing-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}.closing-actions form{margin:0}.closing-reopen-form{display:grid;gap:7px;margin-top:14px;padding-top:13px;border-top:1px solid var(--tvl-border)}.closing-reopen-form textarea{min-height:78px}.closing-history-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--tvl-border)}.closing-history-row:last-child{border-bottom:0}.closing-history-row b,.closing-history-row small{display:block}.closing-history-row small{font-size:9px;color:var(--tvl-muted);margin-top:2px}.closing-history-row>div:last-child{display:flex;gap:7px;align-items:center}
@media(max-width:720px){.monthly-period-banner,.closing-hero{grid-template-columns:1fr}.monthly-period-banner>a{width:100%}.closing-hero-badge{display:none}.closing-check-row{grid-template-columns:25px minmax(0,1fr);align-items:start}.closing-check-row>strong{grid-column:2;white-space:normal}.closing-actions{display:grid;grid-template-columns:1fr}.closing-actions form,.closing-actions .btn{width:100%}.closing-history-row{grid-template-columns:1fr}.closing-history-row>div:last-child{justify-content:flex-start}.closing-history-row .btn{flex:1}}

/* v1.8.2 - SDM, Payroll, Kasbon, Bonus & Komisi */
.sdm-tabs{display:flex;gap:8px;overflow-x:auto;padding:4px 0 12px;margin-bottom:10px;scrollbar-width:thin}
.sdm-tabs a{white-space:nowrap;text-decoration:none;border:1px solid #d8e2ee;background:#fff;color:#28445f;padding:9px 13px;border-radius:10px;font-size:13px;font-weight:700}
.sdm-tabs a.active{background:#0d4f86;color:#fff;border-color:#0d4f86}
.sdm-list-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid #e8eef5}
.sdm-list-row:last-child{border-bottom:0}
.sdm-list-row>div:first-child{min-width:0;display:flex;flex-direction:column;gap:4px}
.sdm-list-row b{color:#173956}.sdm-list-row small,.sdm-list-row span{font-size:12px;color:#66788a;overflow-wrap:anywhere}
.sdm-row-actions{display:flex!important;flex-direction:row!important;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap;min-width:190px}
.sdm-row-actions strong{color:#0d4f86;white-space:nowrap}
.sdm-row-actions form{margin:0}
.muted-row{opacity:.62}
.sdm-inline-form{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sdm-inline-form input[type="month"]{width:auto;min-width:135px}
.sdm-inline-form input.money{width:125px}
.sdm-loan-card{padding:14px 0;border-bottom:1px solid #e8eef5}.sdm-loan-card:last-child{border-bottom:0}
.sdm-loan-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:10px}.sdm-loan-head>div{display:flex;flex-direction:column;gap:3px}.sdm-loan-head small{color:#6c7a89}
.sdm-loan-payment-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:8px;align-items:end;margin-top:12px;padding:10px;background:#f7fafc;border-radius:10px}
.sdm-loan-payment-form label{font-size:11px}.sdm-loan-payment-form button{height:42px}
.sdm-generate-box{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:13px 15px;border:1px dashed #9bb9d2;border-radius:12px;background:#f7fbff;margin:0 0 15px}.sdm-generate-box>div{display:flex;flex-direction:column;gap:3px}.sdm-generate-box small{color:#65798a}
.sdm-checks{display:flex;gap:18px;flex-wrap:wrap}.sdm-checks label{display:flex;align-items:center;gap:7px;font-size:13px}
.payroll-auto-box{border:1px solid #b7d2e8;background:#f3f9ff;border-radius:11px;padding:12px 14px}.payroll-auto-box.deduction{border-color:#ead29b;background:#fffaf0}.payroll-auto-box>b{display:block;color:#17466d;margin-bottom:7px}.payroll-auto-box>div{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-top:1px solid rgba(60,100,130,.12)}.payroll-auto-box>div:first-of-type{border-top:0}.payroll-auto-box span{font-size:12px;color:#4f6170}.payroll-auto-box strong{font-size:13px;white-space:nowrap;color:#0d4f86}.payroll-auto-box.deduction strong{color:#8a5a00}
@media(max-width:700px){
 .sdm-tabs{margin-left:-2px;margin-right:-2px}
 .sdm-list-row{flex-direction:column;gap:10px}
 .sdm-row-actions{width:100%;min-width:0;justify-content:flex-start}
 .sdm-inline-form{width:100%}.sdm-inline-form input[type="month"],.sdm-inline-form input.money{flex:1;min-width:120px;width:auto}
 .sdm-loan-payment-form{grid-template-columns:1fr 1fr}.sdm-loan-payment-form>div:nth-child(3){grid-column:1/-1}.sdm-loan-payment-form button{grid-column:1/-1;width:100%}
 .sdm-generate-box{align-items:flex-start;flex-direction:column}.sdm-generate-box button{width:100%}
 .payroll-auto-box>div{align-items:flex-start}.payroll-auto-box span{max-width:70%}
}

/* ===== v1.8.3 Pusat Laporan ===== */
.report-period{padding:14px 15px}.report-period-form{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}.report-period-chips{display:flex;gap:7px;flex-wrap:wrap}.report-chip{display:inline-flex;align-items:center;min-height:34px;padding:7px 11px;border-radius:999px;border:1px solid #d7e2ec;background:#fff;color:#36526d;text-decoration:none;font-size:10px;font-weight:800}.report-chip.active{background:#0d4f86;color:#fff;border-color:#0d4f86}.report-period-inputs{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}.report-period-inputs label{display:flex;flex-direction:column;gap:4px;font-size:9px;font-weight:800;color:#526579}.report-period-inputs input{min-height:36px}.report-period-label{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:11px;border-top:1px solid var(--tvl-border);font-size:9.5px;color:var(--tvl-muted)}.report-period-label b{color:var(--tvl-blue2)}
.report-kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:12px 0}.report-kpi-grid>div{border:1px solid #dfe7ef;border-radius:14px;padding:12px;background:#fff;min-width:0}.report-kpi-grid span,.report-kpi-grid strong,.report-kpi-grid small{display:block}.report-kpi-grid span{font-size:8.5px;font-weight:900;text-transform:uppercase;color:var(--tvl-muted)}.report-kpi-grid strong{font-size:16px;color:var(--tvl-blue2);margin:4px 0;overflow-wrap:anywhere}.report-kpi-grid small{font-size:8.5px;color:var(--tvl-muted);line-height:1.4}
.report-hub-section h4{font-size:11px;color:var(--tvl-blue2);margin:0 0 8px}.report-hub-list{display:grid;gap:8px}.report-hub-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid #dfe7ef;border-radius:13px;padding:11px 12px;background:#fff}.report-hub-item.primary{border-left:4px solid #0d4f86;background:#f8fbff}.report-hub-copy{min-width:0}.report-hub-copy b,.report-hub-copy p,.report-hub-copy small{display:block}.report-hub-copy b{font-size:10.5px;color:#173956}.report-hub-copy p{font-size:9.3px;line-height:1.45;color:#526579;margin:3px 0}.report-hub-copy small{font-size:8.5px;color:#7a8998;overflow-wrap:anywhere}.report-hub-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.report-download-card .muted{margin-top:0}.report-download-actions{display:flex;gap:8px;flex-wrap:wrap}.report-download-actions form{margin:0}.report-archive-note{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--tvl-border);margin-top:12px;padding-top:11px}.report-archive-note span{font-size:9px;color:var(--tvl-muted);line-height:1.45}
.report-history-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:9px;align-items:center;padding:10px 0;border-bottom:1px solid var(--tvl-border)}.report-history-row:last-of-type{border-bottom:0}.report-history-row b,.report-history-row small{display:block}.report-history-row b{font-size:10.5px}.report-history-row small{font-size:8.7px;color:var(--tvl-muted);margin-top:3px}.report-history-footer{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px;padding-top:10px;border-top:1px solid var(--tvl-border)}
@media(max-width:820px){.report-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.report-hub-columns{grid-template-columns:1fr}}
@media(max-width:620px){.report-period-form{display:grid;grid-template-columns:1fr}.report-period-inputs{display:grid;grid-template-columns:1fr 1fr;width:100%}.report-period-inputs .btn{grid-column:1/-1;width:100%}.report-period-chips{overflow-x:auto;flex-wrap:nowrap;padding-bottom:3px}.report-chip{white-space:nowrap}.report-hub-item{grid-template-columns:1fr}.report-hub-item .btn{width:100%;text-align:center}.report-download-actions{display:grid;grid-template-columns:1fr 1fr}.report-download-actions form,.report-download-actions .btn{width:100%}.report-archive-note{align-items:flex-start;flex-direction:column}.report-history-row{grid-template-columns:1fr auto}.report-history-row .btn{grid-column:1/-1;width:100%}.report-kpi-grid{grid-template-columns:1fr 1fr}}
@media(max-width:420px){.report-period-inputs{grid-template-columns:1fr}.report-download-actions{grid-template-columns:1fr}.report-kpi-grid{grid-template-columns:1fr}}

/* ===== v1.8.4 Dashboard Owner / Executive Summary ===== */
.owner-period{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end;padding:14px 15px}.owner-period-chips{display:flex;gap:7px;flex-wrap:wrap}.owner-period-form{display:flex;align-items:flex-end;gap:8px}.owner-period-form label{display:flex;flex-direction:column;gap:4px;font-size:9px;font-weight:850;color:var(--tvl-muted)}.owner-period-form input{min-height:36px}.owner-period-label{grid-column:1/-1;display:flex;gap:7px;align-items:center;padding-top:10px;border-top:1px solid var(--tvl-border);font-size:9px;color:var(--tvl-muted)}.owner-period-label b{color:var(--tvl-blue2)}
.owner-main-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:12px 0}.owner-kpi{border:1px solid #dfe7ef;border-radius:14px;padding:12px;background:#fff;min-width:0}.owner-kpi span,.owner-kpi strong,.owner-kpi small{display:block}.owner-kpi span{font-size:8.5px;font-weight:900;text-transform:uppercase;letter-spacing:.25px;color:var(--tvl-muted)}.owner-kpi strong{font-size:17px;color:var(--tvl-blue2);margin:4px 0;overflow-wrap:anywhere}.owner-kpi small{font-size:8.5px;line-height:1.4;color:var(--tvl-muted)}.owner-kpi.accent{border-left:4px solid #2f9b55;background:#f7fcf8}.owner-kpi.warning{border-left:4px solid #e6a11b;background:#fffaf1}.owner-kpi.danger{border-left:4px solid #d85656;background:#fff6f6}.owner-kpi.danger strong{color:#a73939}
.owner-two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px}.owner-card{min-width:0}.owner-event-summary,.owner-cash-grid,.owner-mini-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:11px}.owner-event-summary>div,.owner-cash-grid>div,.owner-mini-kpis>div{border:1px solid #e2e9f0;border-radius:11px;padding:10px;background:#f9fbfd;min-width:0}.owner-event-summary span,.owner-event-summary b,.owner-cash-grid span,.owner-cash-grid b,.owner-mini-kpis span,.owner-mini-kpis b{display:block}.owner-event-summary span,.owner-cash-grid span,.owner-mini-kpis span{font-size:8.5px;color:var(--tvl-muted);font-weight:800}.owner-event-summary b,.owner-cash-grid b,.owner-mini-kpis b{font-size:14px;color:var(--tvl-blue2);margin-top:3px;overflow-wrap:anywhere}.owner-cash-grid .accent{background:#f2fbf5;border-color:#c5e4ce}.owner-cash-grid .danger{background:#fff5f5;border-color:#edcccc}.owner-cash-grid .danger b{color:#a33b3b}
.owner-attention-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--tvl-border)}.owner-attention-row:last-child{border-bottom:0}.owner-attention-row>div{min-width:0;padding-left:10px;border-left:4px solid #e6a11b}.owner-attention-row.danger>div{border-left-color:#d85656}.owner-attention-row.warning>div{border-left-color:#e6a11b}.owner-attention-row span,.owner-attention-row b,.owner-attention-row small{display:block}.owner-attention-row span{font-size:8px;text-transform:uppercase;font-weight:900;color:var(--tvl-muted)}.owner-attention-row b{font-size:10.5px;color:var(--tvl-blue2);margin:2px 0}.owner-attention-row small{font-size:9px;line-height:1.45;color:var(--tvl-muted)}.owner-empty-ok{display:flex;flex-direction:column;gap:4px;border:1px solid #c6e3cf;background:#f5fcf7;border-radius:12px;padding:12px}.owner-empty-ok b{font-size:11px;color:#2f7746}.owner-empty-ok span{font-size:9px;line-height:1.5;color:#5d7466}
.owner-profit-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--tvl-border)}.owner-profit-row:last-child{border-bottom:0}.owner-profit-row>div:first-child{min-width:0}.owner-profit-row b,.owner-profit-row small,.owner-profit-row span,.owner-profit-row strong{display:block}.owner-profit-row b{font-size:10px;color:var(--tvl-blue2)}.owner-profit-row small{font-size:8.5px;color:var(--tvl-muted);margin-top:3px}.owner-profit-row>div:last-child{text-align:right}.owner-profit-row span{font-size:8.3px;color:var(--tvl-muted)}.owner-profit-row strong{font-size:12px;color:#2f7746;margin-top:2px}
.owner-closing-head{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid #dfe7ef;border-radius:11px;background:#f9fbfd;padding:10px;margin-bottom:9px}.owner-closing-head span{font-size:8.5px;color:var(--tvl-muted);font-weight:850}.owner-closing-head strong{font-size:12px;color:var(--tvl-blue2)}.owner-closing-head.closed{background:#f3fbf6;border-color:#c1e1ca}.owner-closing-head.closed strong{color:#2f7746}.owner-closing-head.revision{background:#fff9ed;border-color:#ead39f}.owner-closing-checks{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px}.owner-closing-checks span{display:flex;justify-content:space-between;gap:8px;border:1px solid #e4eaf0;border-radius:9px;padding:8px;font-size:8.8px;color:#5e6d7c}.owner-closing-checks b{color:var(--tvl-blue2)}.owner-closing-warning{display:block;border:1px solid #ecd6aa;background:#fff9eb;color:#79540c;border-radius:9px;padding:8px;margin:0 0 9px;font-size:8.7px;line-height:1.45}
.owner-dashboard-footer{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border:1px solid #dbe5ee;background:#f8fbfd;border-radius:13px;padding:12px;margin-top:12px}.owner-dashboard-footer span{font-size:8.8px;color:var(--tvl-muted);line-height:1.45;flex:1;min-width:220px}
@media(max-width:920px){.owner-main-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.owner-two-col{grid-template-columns:1fr}}
@media(max-width:620px){.owner-period{grid-template-columns:1fr}.owner-period-form{display:grid;grid-template-columns:1fr auto}.owner-period-label{grid-column:auto}.owner-period-chips{overflow-x:auto;flex-wrap:nowrap;padding-bottom:3px}.owner-period-chips .report-chip{white-space:nowrap}.owner-attention-row{grid-template-columns:1fr}.owner-attention-row .btn{width:100%}.owner-profit-row{grid-template-columns:1fr}.owner-profit-row>div:last-child{text-align:left;display:grid;grid-template-columns:1fr 1fr}.owner-profit-row strong{grid-column:1/-1}.owner-dashboard-footer{align-items:stretch;flex-direction:column}.owner-dashboard-footer .btn{width:100%;text-align:center}.owner-dashboard-footer span{min-width:0}}
@media(max-width:430px){.owner-main-kpis,.owner-event-summary,.owner-cash-grid,.owner-mini-kpis,.owner-closing-checks{grid-template-columns:1fr}.owner-period-form{grid-template-columns:1fr}.owner-period-form .btn{width:100%}.owner-kpi strong{font-size:16px}.owner-profit-row>div:last-child{grid-template-columns:1fr}}

/* v1.8.5 - Compact grouped navigation */
.tvlff-nav.tvlff-nav-compact{
  overflow:visible;
  flex-wrap:wrap;
  align-items:center;
  gap:7px;
  padding-bottom:11px;
}
.tvlff-nav-compact>.tvlff-nav-home,
.tvlff-nav-compact>.tvlff-nav-group>summary,
.tvlff-nav-compact>a{
  white-space:nowrap;
  text-decoration:none!important;
  padding:10px 13px;
  border-radius:11px;
  background:#fff;
  border:1px solid var(--tvl-border);
  font-size:13px;
  font-weight:700;
  color:var(--tvl-blue2)!important;
  box-shadow:0 2px 7px rgba(20,47,79,.04);
  min-height:39px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
}
.tvlff-nav-compact>.tvlff-nav-home.active,
.tvlff-nav-compact>a.active,
.tvlff-nav-compact>.tvlff-nav-group.active>summary{
  background:var(--tvl-blue);
  color:#fff!important;
  border-color:var(--tvl-blue);
}
.tvlff-nav-group{position:static;margin:0;padding:0}
.tvlff-nav-group>summary{list-style:none;cursor:pointer;user-select:none}
.tvlff-nav-group>summary::-webkit-details-marker{display:none}
.tvlff-nav-caret{font-size:12px;line-height:1;transition:transform .18s ease}
.tvlff-nav-group[open] .tvlff-nav-caret{transform:rotate(180deg)}
.tvlff-nav-group[open]>summary{
  border-color:#9fb3cb;
  box-shadow:0 4px 12px rgba(20,47,79,.09);
}
.tvlff-nav-group.active[open]>summary{border-color:var(--tvl-blue)}
.tvlff-nav-menu{
  position:absolute;
  left:2px;
  right:2px;
  top:calc(100% - 3px);
  z-index:40;
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  padding:10px;
  background:#fff;
  border:1px solid var(--tvl-border);
  border-radius:13px;
  box-shadow:0 12px 28px rgba(20,47,79,.15);
}
.tvlff-nav .tvlff-nav-menu a{
  white-space:nowrap;
  text-decoration:none!important;
  padding:9px 12px;
  border-radius:9px;
  background:#f7f9fc;
  border:1px solid #e0e7f0;
  font-size:12px;
  font-weight:700;
  color:var(--tvl-blue2)!important;
  box-shadow:none;
}
.tvlff-nav .tvlff-nav-menu a:hover{background:#eef4fb;border-color:#cbd9e8}
.tvlff-nav .tvlff-nav-menu a.active{
  background:var(--tvl-blue);
  border-color:var(--tvl-blue);
  color:#fff!important;
}
@media(max-width:640px){
  .tvlff-nav.tvlff-nav-compact{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    margin-left:-9px;
    margin-right:-9px;
    padding:8px 9px 10px;
    gap:6px;
  }
  .tvlff-nav-compact>.tvlff-nav-home,
  .tvlff-nav-compact>.tvlff-nav-group>summary,
  .tvlff-nav-compact>a{
    width:100%;
    min-width:0;
    padding:9px 8px;
    font-size:12px;
    text-align:center;
  }
  .tvlff-nav-group{min-width:0}
  .tvlff-nav-menu{
    left:9px;
    right:9px;
    top:calc(100% - 2px);
    gap:6px;
    padding:9px;
  }
  .tvlff-nav .tvlff-nav-menu a{
    flex:1 1 calc(50% - 6px);
    min-width:130px;
    text-align:center;
    padding:9px 8px;
  }
}
@media(max-width:390px){
  .tvlff-nav.tvlff-nav-compact{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tvlff-nav .tvlff-nav-menu a{flex-basis:100%;min-width:0}
}

/* v1.8.6 — Invoice -> Pembayaran -> Data Event */
.invoice-back-row{display:flex;align-items:center;margin:0 0 10px}
.invoice-payment-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 14px}
.invoice-payment-overview>div,.invoice-list-money>div{background:#fff;border:1px solid var(--tvl-border);border-radius:12px;padding:12px 14px;min-width:0}
.invoice-payment-overview span,.invoice-list-money span{display:block;font-size:11px;color:var(--tvl-muted);margin-bottom:5px}
.invoice-payment-overview strong,.invoice-list-money strong{display:block;font-size:15px;color:var(--tvl-blue2);overflow-wrap:anywhere}
.invoice-payment-overview .status-badge{display:inline-flex;width:auto;font-size:12px}
.invoice-card-statuses{display:flex;align-items:flex-end;justify-content:flex-start;gap:6px;flex-wrap:wrap}
.invoice-list-money{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0}
.invoice-detail-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0 14px}
.invoice-detail-actions form{margin:0}
.invoice-payment-history-total{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;padding-top:10px;border-top:1px solid var(--tvl-border)}
.invoice-payment-history-total span{font-size:12px;color:var(--tvl-muted)}
.invoice-payment-history-total strong{font-size:16px;color:var(--tvl-blue2)}
.invoice-fix-panel{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;margin:10px 0;background:#f4f8fc;border:1px solid #cbd9e8;border-radius:13px}
.invoice-fix-panel>div{display:flex;flex-direction:column;gap:4px;min-width:0}
.invoice-fix-panel b{color:var(--tvl-blue2)}
.invoice-fix-panel span{font-size:12px;color:var(--tvl-muted);line-height:1.5}
.invoice-fix-panel form,.invoice-cancel-row form{margin:0;flex:0 0 auto}
.invoice-cancel-row{display:flex;justify-content:flex-end;margin:8px 0 12px}
.invoice-legacy-history{margin:12px 0;padding:10px 12px;background:#fafbfd;border:1px dashed #cbd6e2;border-radius:11px}
.invoice-legacy-history>summary{cursor:pointer;font-weight:700;color:var(--tvl-blue2)}
.invoice-info-note{margin:10px 0 12px;padding:10px 12px;border-radius:10px;background:#f7f9fc;border:1px solid var(--tvl-border);font-size:12px;color:var(--tvl-muted)}
@media(max-width:760px){
  .invoice-payment-overview{grid-template-columns:repeat(2,minmax(0,1fr))}
  .invoice-fix-panel{align-items:stretch;flex-direction:column}
  .invoice-fix-panel .btn{width:100%}
}
@media(max-width:520px){
  .invoice-payment-overview,.invoice-list-money{grid-template-columns:1fr}
  .invoice-detail-actions>*{width:100%}
  .invoice-detail-actions .btn{width:100%;text-align:center;justify-content:center}
  .invoice-card-statuses{align-items:flex-start}
}

/* v1.8.7 - Data Event & Detail Event simplification */
.event-page-toolbar{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin:0 0 12px;flex-wrap:wrap}
.event-list-card{border:1px solid var(--tvl-border);border-radius:14px;background:#fff;padding:14px;margin:10px 0;box-shadow:0 3px 10px rgba(20,54,89,.04)}
.event-list-main{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.event-list-main>div:first-child{min-width:0}.event-list-main b,.event-list-main small{display:block}.event-list-main small{color:var(--tvl-muted);margin-top:4px}.event-list-main p{margin:8px 0 0;font-size:12px;line-height:1.45;color:#334155}.event-list-side{display:flex;flex-direction:column;gap:7px;align-items:flex-end;flex:0 0 auto}.event-list-side strong{font-size:15px;color:var(--tvl-blue2)}
.event-detail-hero.simplified .event-detail-status{gap:8px}.event-detail-hero.simplified .event-detail-status strong{font-size:16px;color:var(--tvl-blue2)}
.event-detail-section-summary.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.event-management-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0 4px}.event-management-buttons .btn{justify-content:center;min-height:44px}
.payment-invoice-link{margin:8px 0 12px}
@media(max-width:720px){.event-list-main{flex-direction:column}.event-list-side{align-items:flex-start}.event-management-buttons{grid-template-columns:1fr}.event-detail-section-summary.four{grid-template-columns:1fr 1fr}}
@media(max-width:420px){.event-detail-section-summary.four{grid-template-columns:1fr}.event-page-toolbar .btn{width:100%;justify-content:center}}


/* v1.8.8 — Konfirmasi pembayaran langsung dari Invoice */
.invoice-confirm-payment{display:inline-block;position:relative;margin:0}.invoice-confirm-payment>summary{list-style:none;cursor:pointer}.invoice-confirm-payment>summary::-webkit-details-marker{display:none}
.invoice-confirm-payment-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:min(620px,calc(100vw - 44px));margin-top:10px;padding:14px;background:#f8fbff;border:1px solid #cbd9e8;border-radius:12px;box-shadow:0 8px 24px rgba(20,54,89,.08)}
.invoice-confirm-payment-form label{display:block;font-size:11px;font-weight:700;color:var(--tvl-muted);margin-bottom:5px}.invoice-confirm-payment-form .span-2{grid-column:1/-1}.invoice-paid-note{display:inline-flex;align-items:center;padding:7px 10px;border-radius:999px;background:#ecfdf3;color:#166534;font-size:12px;font-weight:700;border:1px solid #bbf7d0}
@media(max-width:620px){.invoice-confirm-payment{width:100%}.invoice-confirm-payment>summary{width:100%;justify-content:center}.invoice-confirm-payment-form{grid-template-columns:1fr;width:100%;box-sizing:border-box}.invoice-confirm-payment-form .span-2{grid-column:auto}}

/* v1.8.9 — indikator kelengkapan Event */
.event-completion-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0 12px}
.event-completion-pill{display:flex;align-items:center;justify-content:space-between;gap:8px;text-decoration:none;border-radius:12px;padding:9px 10px;font-size:11px;font-weight:700;transition:.15s ease}
.event-completion-pill span{opacity:.78}.event-completion-pill b{font-size:11px;text-align:right}
.event-completion-pill.status-paid{background:#e7f7ef;color:#147248;border:1px solid #bfe7d3}
.event-completion-pill.status-dp{background:#fff5da;color:#8a5d00;border:1px solid #f1d58d}
.event-completion-pill.status-unpaid{background:#fff0ee;color:#ad3427;border:1px solid #f3c6c0}
.event-completion-pill:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(20,54,89,.08)}
.completion-toolbar,.vendor-action-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.vendor-action-toolbar span{font-size:12px;color:var(--tvl-muted,#667085)}
.completion-action{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 14px;padding:12px;border:1px dashed var(--tvl-border);border-radius:12px;background:#fbfcfe}
.completion-action small{color:var(--tvl-muted,#667085);font-size:11px}
.btn.success{background:#147248;color:#fff;border-color:#147248}
.cash-ledger-filter{margin-bottom:12px}
@media(max-width:720px){.event-completion-row{grid-template-columns:1fr}.event-completion-pill{padding:10px 11px}.completion-action{align-items:stretch}.completion-action .btn{width:100%}}


/* ===== v1.9.2 Mobile minimize, client outstanding, vendor quick-pay, cash tabs ===== */
.tvlff-mobile-nav-toggle{display:none}
.crm-payment-line{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:7px}
.crm-payment-line b{font-size:11px;color:var(--tvl-blue2)}
.crm-kpi-warning{background:#fff9ed!important;border-color:#ead39f!important}
.vendor-quick-pay{padding:12px}
.vendor-quick-pay-main{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}
.vendor-quick-pay-main label{display:block;font-size:11px;font-weight:800;color:#526579;margin-bottom:5px}
.vendor-quick-pay-main input{width:100%;min-height:42px;border:1px solid #ccd7e5;border-radius:10px;padding:9px 11px;background:#fff}
.vendor-quick-pay-main small{display:block;font-size:9px;color:var(--tvl-muted);margin-top:4px}
.vendor-pay-extra{margin-top:9px;border-top:1px dashed var(--tvl-border);padding-top:8px}
.vendor-pay-extra>summary{cursor:pointer;font-size:10px;font-weight:800;color:var(--tvl-blue2)}
.cash-tab-nav{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0 12px}
.cash-tab-nav a{display:inline-flex;align-items:center;justify-content:center;min-height:37px;padding:8px 12px;border:1px solid var(--tvl-border);border-radius:999px;background:#fff;text-decoration:none!important;color:var(--tvl-blue2)!important;font-size:11px;font-weight:800}
.cash-tab-nav a.active{background:var(--tvl-blue);border-color:var(--tvl-blue);color:#fff!important}
.cash-position-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}
.cash-position-strip>div{border:1px solid var(--tvl-border);border-radius:10px;padding:10px;background:#f9fbfd}
.cash-position-strip span,.cash-position-strip b{display:block}.cash-position-strip span{font-size:9px;color:var(--tvl-muted);font-weight:800}.cash-position-strip b{font-size:13px;color:var(--tvl-blue2);margin-top:3px}
.cash-transfer-row{border-left:4px solid #7b8fa6}.cash-transfer-row summary strong{color:#596f86}
.cash-transfer-form .field-help{margin-left:8px}
@media(max-width:640px){
  .tvlff-mobile-nav-shell{position:sticky;top:0;z-index:55;margin-left:-9px;margin-right:-9px;background:rgba(244,247,251,.97);backdrop-filter:blur(9px);padding:6px 9px;border-bottom:1px solid rgba(210,220,231,.75)}
  .tvlff-mobile-nav-toggle{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;min-height:42px;padding:8px 10px;border:1px solid var(--tvl-border);border-radius:11px;background:#fff;color:var(--tvl-blue2);font:inherit;box-shadow:0 2px 8px rgba(20,47,79,.06)}
  .tvlff-mobile-nav-brand{font-weight:900;font-size:12px}.tvlff-mobile-nav-current{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;font-size:10px;color:var(--tvl-muted)}.tvlff-mobile-nav-toggle b{font-size:18px}
  .tvlff-mobile-nav-shell .tvlff-nav.tvlff-nav-compact{position:static;top:auto;margin:6px 0 0;padding:0;max-height:70vh;overflow-y:auto}
  .tvlff-mobile-nav-shell.is-collapsed .tvlff-nav{display:none}
  .tvlff-mobile-nav-shell.is-collapsed{padding-bottom:6px}
  .vendor-quick-pay-main{grid-template-columns:1fr}.vendor-quick-pay-main .btn{width:100%}
  .cash-tab-nav{display:grid;grid-template-columns:1fr}.cash-tab-nav a{width:100%}
  .cash-position-strip{grid-template-columns:1fr 1fr}
}
@media(max-width:420px){.cash-position-strip{grid-template-columns:1fr}}

/* ===== v1.9.3 Mobile slim icon navigation ===== */
.tvlff-nav-icon{display:none}
@media(max-width:640px){
  .tvlff-mobile-nav-shell{display:flex;align-items:center;gap:5px;position:sticky;top:0;z-index:55;margin-left:-9px;margin-right:-9px;padding:5px 7px;background:rgba(244,247,251,.97);backdrop-filter:blur(9px);border-bottom:1px solid rgba(210,220,231,.8)}
  .tvlff-mobile-nav-shell .tvlff-nav.tvlff-nav-compact{display:flex;flex:1 1 auto;flex-wrap:nowrap;align-items:center;gap:5px;position:static;top:auto;margin:0;padding:0;overflow-x:auto;overflow-y:visible;max-height:none;background:transparent;backdrop-filter:none;scroll-snap-type:x proximity}
  .tvlff-nav-compact>.tvlff-nav-home,.tvlff-nav-compact>.tvlff-nav-group>summary,.tvlff-nav-compact>a{flex:0 0 38px;width:38px;height:38px;min-width:38px;min-height:38px;padding:0;border-radius:10px;display:flex;align-items:center;justify-content:center}
  .tvlff-nav-icon{display:inline-flex;align-items:center;justify-content:center;font-size:18px;line-height:1;font-weight:800}
  .tvlff-nav-compact>.tvlff-nav-home .tvlff-nav-label,.tvlff-nav-compact>.tvlff-nav-group>summary .tvlff-nav-label,.tvlff-nav-compact>a .tvlff-nav-label,.tvlff-nav-compact>.tvlff-nav-group>summary .tvlff-nav-caret{display:none}
  .tvlff-mobile-nav-toggle{display:flex;flex:0 0 32px;width:32px;height:38px;min-height:38px;padding:0;align-items:center;justify-content:center;border:1px solid var(--tvl-border);border-radius:9px;background:#fff;color:var(--tvl-blue2);font:inherit;box-shadow:0 2px 7px rgba(20,47,79,.05)}
  .tvlff-mobile-nav-toggle span{font-size:16px;font-weight:900;line-height:1}
  .tvlff-mobile-nav-shell.is-collapsed .tvlff-nav{display:none!important}
  .tvlff-mobile-nav-shell.is-collapsed{justify-content:flex-end;padding-top:4px;padding-bottom:4px}
  .tvlff-mobile-nav-shell.is-collapsed .tvlff-mobile-nav-toggle{height:30px;min-height:30px}
  .tvlff-nav-group{position:static;flex:0 0 38px}
  .tvlff-nav-menu{left:7px;right:7px;top:48px;max-height:65vh;overflow-y:auto;gap:6px;padding:9px}
  .tvlff-nav .tvlff-nav-menu a{flex:1 1 calc(50% - 6px);min-width:125px;padding:9px 8px;font-size:11px;text-align:center}
}

/* ===== v1.9.3 SDM, Payroll & Slip Gaji ===== */
.sdm-tabs{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0 12px}.sdm-tabs a{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 13px;border:1px solid var(--tvl-border);border-radius:999px;background:#fff;color:var(--tvl-blue2)!important;text-decoration:none!important;font-size:11px;font-weight:800}.sdm-tabs a.active{background:var(--tvl-blue);border-color:var(--tvl-blue);color:#fff!important}
.sdm-list-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--tvl-border)}.sdm-list-row:last-child{border-bottom:0}.sdm-list-row>div:first-child{display:flex;flex-direction:column;min-width:0}.sdm-list-row b{color:var(--tvl-blue2)}.sdm-list-row small,.sdm-list-row span{font-size:10px;color:var(--tvl-muted);margin-top:3px}.sdm-row-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.muted-row{opacity:.66}
.sdm-loan-card{border:1px solid var(--tvl-border);border-radius:12px;padding:12px;margin:9px 0;background:#fff}.sdm-loan-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.sdm-loan-head>div{display:flex;flex-direction:column}.sdm-loan-head small{font-size:10px;color:var(--tvl-muted);margin-top:3px}
.payroll-period-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.payroll-period-head>div:first-child{display:flex;flex-direction:column;gap:4px}.payroll-period-head span{font-size:10px;color:var(--tvl-muted);font-weight:800}.payroll-period-head small{font-size:10px;color:var(--tvl-muted)}
.payroll-employee-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}.payroll-employee-summary>div{border:1px solid var(--tvl-border);background:#f9fbfd;border-radius:10px;padding:9px}.payroll-employee-summary span,.payroll-employee-summary b{display:block}.payroll-employee-summary span{font-size:9px;color:var(--tvl-muted);font-weight:800}.payroll-employee-summary b{font-size:12px;color:var(--tvl-blue2);margin-top:3px;overflow-wrap:anywhere}.payroll-total{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid #bfd4e8;background:#f2f8fd;border-radius:11px;padding:12px}.payroll-total span{font-size:11px;color:var(--tvl-muted);font-weight:800}.payroll-total strong{font-size:18px;color:var(--tvl-blue2)}.approval-locked-fieldset{border:0;padding:0;margin:0;display:contents}.payroll-final-actions,.payroll-pay-form{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.payroll-pay-form input,.payroll-pay-form select{min-height:38px;border:1px solid #ccd7e5;border-radius:9px;padding:7px 9px;background:#fff}.payroll-download button:disabled{opacity:.45;cursor:not-allowed}
.payroll-slip-preview{margin-top:12px}.payroll-slip-preview>summary{list-style:none;cursor:pointer;width:max-content}.payroll-slip-preview>summary::-webkit-details-marker{display:none}.salary-slip-preview{max-width:760px;margin:12px auto;border:1px solid #d8e1eb;border-radius:12px;background:#fff;padding:22px;box-shadow:0 7px 22px rgba(20,47,79,.07)}.salary-preview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:3px solid var(--tvl-blue)}.salary-preview-head>div{display:flex;flex-direction:column}.salary-preview-head>div b{font-size:13px;color:var(--tvl-blue2)}.salary-preview-head>div span{font-size:10px;color:var(--tvl-muted);margin-top:3px}.salary-preview-head>strong{font-size:20px;color:var(--tvl-blue2)}.salary-preview-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin:14px 0}.salary-preview-meta>div{border:1px solid var(--tvl-border);border-radius:9px;padding:8px}.salary-preview-meta span,.salary-preview-meta b{display:block}.salary-preview-meta span{font-size:8px;color:var(--tvl-muted);font-weight:800;text-transform:uppercase}.salary-preview-meta b{font-size:10px;color:var(--tvl-blue2);margin-top:3px}.salary-preview-section{margin-top:12px;border:1px solid var(--tvl-border);border-radius:10px;overflow:hidden}.salary-preview-section>b{display:block;padding:8px 10px;background:var(--tvl-blue);color:#fff;font-size:10px}.salary-preview-section.deduction>b{background:#d89a10}.salary-preview-section>div{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-top:1px solid var(--tvl-border);font-size:10px}.salary-preview-section>div span{color:#4d5d70}.salary-preview-section>div strong{color:var(--tvl-blue2)}.salary-preview-subtotal{background:#f7f9fc;font-weight:800}.salary-preview-total{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:13px;padding:13px;border:1px solid #bfd4e8;background:#f2f8fd;border-radius:10px}.salary-preview-total>div{display:flex;flex-direction:column}.salary-preview-total span{font-size:9px;color:var(--tvl-muted);font-weight:800}.salary-preview-total strong{font-size:19px;color:var(--tvl-blue2);margin-top:2px}.salary-preview-loan{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}.salary-preview-loan>span{border:1px solid var(--tvl-border);border-radius:9px;padding:8px;font-size:9px;color:var(--tvl-muted)}.salary-preview-loan b{display:block;margin-top:3px;font-size:11px;color:var(--tvl-blue2)}.salary-preview-sign{margin:18px 0 0 auto;width:185px;display:flex;flex-direction:column;align-items:center;text-align:center}.salary-preview-sign span,.salary-preview-sign small{font-size:9px;color:var(--tvl-muted)}.salary-preview-sign img{display:block;width:135px;height:auto;margin:3px 0 -2px}.salary-preview-sign b{font-size:10px;color:var(--tvl-blue2)}
.allocation-carry-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:720px){.payroll-period-head{align-items:stretch;flex-direction:column}.payroll-employee-summary{grid-template-columns:1fr 1fr}.salary-preview-meta{grid-template-columns:1fr 1fr}.allocation-carry-grid{grid-template-columns:1fr 1fr}.payroll-final-actions,.payroll-pay-form{align-items:stretch;flex-direction:column}.payroll-final-actions form,.payroll-final-actions .btn,.payroll-pay-form input,.payroll-pay-form select,.payroll-pay-form .btn{width:100%}}
@media(max-width:430px){.payroll-employee-summary,.salary-preview-meta,.salary-preview-loan,.allocation-carry-grid{grid-template-columns:1fr}.salary-slip-preview{padding:13px}.salary-preview-head>strong{font-size:17px}.sdm-list-row{align-items:flex-start;flex-direction:column}.sdm-row-actions{width:100%}.sdm-row-actions .btn{flex:1}.salary-preview-sign{width:160px}}

/* ===== v1.9.4 Payroll preview before finalization ===== */
.payroll-period-preview{margin:0 0 16px;border:1px solid #dbe3ec;border-radius:14px;background:#fff;overflow:hidden}
.payroll-period-preview>summary{margin:12px;list-style:none;cursor:pointer;display:inline-flex}
.payroll-period-preview>summary::-webkit-details-marker{display:none}
.payroll-preview-wrap{padding:0 12px 12px}
.payroll-preview-row{display:grid;grid-template-columns:minmax(180px,1.3fr) repeat(7,minmax(110px,1fr));gap:8px;align-items:stretch;padding:10px 0;border-top:1px solid #eef2f6}
.payroll-preview-row>div{padding:9px 10px;background:#f8fafc;border-radius:10px;display:flex;flex-direction:column;gap:3px}
.payroll-preview-row span,.payroll-preview-row small{font-size:11px;color:#64748b}
.payroll-preview-row b{font-size:13px;color:#0f172a}
.payroll-preview-name{background:#f1f5f9!important}
.payroll-preview-net{background:#ecfdf5!important}
@media(max-width:900px){.payroll-preview-row{grid-template-columns:repeat(2,minmax(0,1fr))}.payroll-preview-name,.payroll-preview-net{grid-column:1/-1}}

/* ===== v1.9.5 Mobile menu: icon + label ===== */
@media(max-width:640px){
  .tvlff-mobile-nav-shell .tvlff-nav.tvlff-nav-compact{gap:6px;padding-bottom:1px}
  .tvlff-nav-compact>.tvlff-nav-home,
  .tvlff-nav-compact>.tvlff-nav-group>summary,
  .tvlff-nav-compact>a{
    flex:0 0 auto;width:auto;min-width:92px;height:42px;min-height:42px;padding:0 10px;gap:6px;border-radius:10px;
  }
  .tvlff-nav-icon{font-size:15px;flex:0 0 auto}
  .tvlff-nav-compact>.tvlff-nav-home .tvlff-nav-label,
  .tvlff-nav-compact>.tvlff-nav-group>summary .tvlff-nav-label,
  .tvlff-nav-compact>a .tvlff-nav-label{display:inline!important;font-size:10.5px;font-weight:800;line-height:1.1}
  .tvlff-nav-compact>.tvlff-nav-group>summary .tvlff-nav-caret{display:none!important}
  .tvlff-nav-group{flex:0 0 auto;min-width:0}
  .tvlff-mobile-nav-toggle{height:42px;min-height:42px}
}

/* ===== v1.9.5 Payroll simplified form ===== */
.payroll-manual-section{border:1px solid var(--tvl-border);border-radius:12px;background:#fbfcfe;padding:12px}
.payroll-manual-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.payroll-manual-head>div{display:flex;flex-direction:column;gap:3px}.payroll-manual-head b{font-size:12px;color:var(--tvl-blue2)}.payroll-manual-head small{font-size:9.5px;color:var(--tvl-muted)}
.payroll-item-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(130px,.8fr) minmax(180px,1.2fr) auto;gap:8px;align-items:end;padding:9px 0;border-top:1px dashed #dce5ee}.payroll-item-row:first-child{border-top:0;padding-top:0}.payroll-item-row label{display:block;font-size:10px;font-weight:800;color:#526579;margin-bottom:5px}.payroll-item-row input{width:100%;min-height:40px;border:1px solid #ccd7e5;border-radius:9px;padding:8px 9px;background:#fff}.payroll-remove{min-height:40px}
.payroll-preview-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:12px;padding-top:11px;border-top:1px dashed var(--tvl-border)}.payroll-preview-actions form{margin:0}.payroll-preview-actions small{font-size:9.5px;color:var(--tvl-muted)}
.role-info-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:760px){.payroll-item-row{grid-template-columns:1fr 1fr}.payroll-item-note{grid-column:1/-1}.payroll-remove{grid-column:1/-1;width:100%}.role-info-grid{grid-template-columns:1fr}}
@media(max-width:430px){.payroll-manual-head{align-items:stretch;flex-direction:column}.payroll-manual-head .btn{width:100%}.payroll-item-row{grid-template-columns:1fr}.payroll-item-note,.payroll-remove{grid-column:auto}.payroll-preview-actions{align-items:stretch;flex-direction:column}.payroll-preview-actions form,.payroll-preview-actions .btn{width:100%}}


/* v1.9.7 - Schedule calendar, dokumentasi share, Event Minggu Ini */
.schedule-day{justify-content:flex-start;align-items:center;padding-top:8px;gap:3px}
.schedule-day span{line-height:1;font-size:16px}
.schedule-day small{display:block!important;font-size:11px!important;line-height:1.15;font-weight:850;letter-spacing:-.1px;margin-top:2px}
.schedule-day.has-event small{color:#fff}
.schedule-client-share{margin-top:14px;padding:14px;border:1px solid #d7e3ef;border-radius:12px;background:#f8fbff}
.schedule-client-share-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.schedule-client-share-head>div:first-child{display:flex;flex-direction:column;gap:3px}.schedule-client-share-head small{color:var(--tvl-muted)}
.schedule-client-share textarea{width:100%;min-height:390px;resize:vertical;border:1px solid #cfdae7;border-radius:10px;padding:12px;background:#fff;font:13px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--tvl-text)}
.schedule-client-share .copy-status{display:inline-block;margin-top:7px;font-weight:800;color:#14804a}
.event-week-summary{display:flex;justify-content:space-between;gap:14px;align-items:center;margin:12px 0 16px;padding:15px 17px;border:1px solid #cfe0f4;border-left:5px solid var(--tvl-blue);border-radius:13px;background:#f5f9ff;text-decoration:none;color:var(--tvl-text);box-shadow:0 3px 10px rgba(32,78,128,.06)}
.event-week-summary>div:first-child{display:flex;flex-direction:column;gap:4px}.event-week-summary span{font-size:11px;font-weight:900;color:var(--tvl-blue)}.event-week-summary b{font-size:16px;color:var(--tvl-blue2)}.event-week-summary small{color:var(--tvl-muted)}
.event-week-summary-stats{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.event-week-summary-stats strong{padding:8px 10px;border-radius:9px;background:#fff;border:1px solid #d9e5f3;color:var(--tvl-blue2);font-size:13px}.event-week-summary-stats em{font-style:normal;font-size:11px;font-weight:850;color:var(--tvl-blue)}
@media(max-width:760px){.schedule-day{padding-top:6px}.schedule-day span{font-size:14px}.schedule-day small{font-size:10px!important}.schedule-client-share-head{flex-direction:column}.schedule-client-share-head .actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.schedule-client-share-head .btn{width:100%;text-align:center}.event-week-summary{align-items:flex-start;flex-direction:column}.event-week-summary-stats{width:100%;justify-content:flex-start}}
@media(max-width:430px){.schedule-day{aspect-ratio:1/1.12;padding-top:5px}.schedule-day span{font-size:13px}.schedule-day small{font-size:9px!important}.schedule-client-share textarea{min-height:430px;font-size:12px}.schedule-client-share-head .actions{grid-template-columns:1fr}.event-week-summary-stats strong{flex:1;text-align:center}.event-week-summary-stats em{width:100%}}

/* v1.9.9 - Schedule compact Event Terdekat + multi PIC */
.schedule-upcoming-details{padding:0;overflow:hidden}
.schedule-upcoming-details>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 16px;color:var(--tvl-blue2);user-select:none}
.schedule-upcoming-details>summary::-webkit-details-marker{display:none}
.schedule-upcoming-details>summary>span:first-child{display:flex;flex-direction:column;gap:2px}
.schedule-upcoming-details>summary b{font-size:15px}
.schedule-upcoming-details>summary small{font-size:11px;color:var(--tvl-muted);font-weight:650}
.schedule-dropdown-label{font-size:11px;font-weight:850;padding:6px 9px;border:1px solid var(--tvl-border);border-radius:999px;background:#f7faff;white-space:nowrap}
.schedule-upcoming-details[open] .schedule-dropdown-label{background:#edf5ff;border-color:#cbdff4}
.schedule-upcoming-body{padding:0 16px 15px;border-top:1px solid var(--tvl-border)}
.schedule-upcoming-body .schedule-upcoming:first-child{margin-top:10px}
.schedule-pic-picker{position:relative;width:100%;border:1px solid var(--tvl-border);border-radius:9px;background:#fff}
.schedule-pic-picker>summary{list-style:none;cursor:pointer;min-height:42px;display:flex;align-items:center;justify-content:space-between;padding:9px 11px;font-weight:750;color:var(--tvl-text)}
.schedule-pic-picker>summary::-webkit-details-marker{display:none}
.schedule-pic-picker>summary:after{content:'▾';font-size:12px;color:var(--tvl-muted);margin-left:8px}
.schedule-pic-picker[open]>summary:after{content:'▴'}
.schedule-pic-options{display:grid;gap:5px;padding:8px;border-top:1px solid var(--tvl-border);max-height:220px;overflow:auto}
.schedule-pic-options label{display:flex;align-items:center;gap:8px;padding:8px 9px;border-radius:7px;cursor:pointer;margin:0}
.schedule-pic-options label:hover{background:#f5f8fc}
.schedule-pic-options input[type=checkbox]{width:17px;height:17px;margin:0;flex:0 0 auto}
.schedule-pic-options span{font-size:13px;font-weight:700}
.schedule-add-pic-card{padding:12px 14px}
.schedule-add-pic-details>summary{list-style:none;width:max-content;cursor:pointer}
.schedule-add-pic-details>summary::-webkit-details-marker{display:none}
.schedule-add-pic-details[open]>summary{margin-bottom:10px}
.schedule-add-pic-details .schedule-add-pic{margin:0;padding-top:4px}
@media(max-width:640px){.schedule-upcoming-details>summary{padding:13px 12px}.schedule-upcoming-body{padding:0 12px 12px}.schedule-dropdown-label{font-size:10px}.schedule-add-pic-card{padding:10px 12px}.schedule-add-pic-details>summary{width:100%;text-align:center;box-sizing:border-box}}

/* v1.10.0 — Catatan Data Event & alur pintasan Aktivitas/HPP */
.event-list-note{margin-top:9px;padding:8px 10px;border-left:3px solid #f1b51c;border-radius:8px;background:#fff9e8;color:#5d4a16;font-size:11px;line-height:1.45}
.event-list-note b{display:inline!important;color:#7a5b00}
@media(max-width:720px){.event-list-note{font-size:11px;padding:8px 9px}}

/* v1.10.1 — Event Minggu Ini sebagai informasi, bukan tombol */
.event-week-summary.event-week-summary-info{cursor:default;text-decoration:none}
.event-week-summary.event-week-summary-info:hover{transform:none}

/* v1.10.5 - Finance redesign */
.finance-subnav{display:flex;gap:8px;overflow-x:auto;padding:4px 0 12px;margin-bottom:14px;scrollbar-width:thin}.finance-subnav a{white-space:nowrap;text-decoration:none;border:1px solid #d8e0ea;background:#fff;color:#334155;border-radius:999px;padding:9px 14px;font-weight:700;font-size:13px}.finance-subnav a.active{background:#123f70;color:#fff;border-color:#123f70}.finance-real-grid .kpi{height:100%}.kpi-link{text-decoration:none;color:inherit;display:block}.kpi-link .kpi{transition:transform .15s ease,box-shadow .15s ease}.kpi-link:hover .kpi{transform:translateY(-1px);box-shadow:0 8px 22px rgba(15,23,42,.08)}.reconciliation-mini{display:flex;gap:14px;align-items:center;justify-content:space-between;border:1px solid #d9e1ea;border-radius:14px;padding:14px 16px;margin:14px 0;background:#fff}.reconciliation-mini div{display:flex;flex-direction:column}.reconciliation-mini span,.reconciliation-mini small{color:#64748b}.reconciliation-mini.is-ok{border-color:#b9dfc7;background:#f4fbf6}.reconciliation-mini.is-warning{border-color:#f1d39a;background:#fffaf0}.allocation-lock-head,.reconciliation-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.allocation-lock-head>div,.reconciliation-head>div{display:flex;flex-direction:column;gap:3px}.allocation-lock-head small,.reconciliation-head span,.reconciliation-head small{color:#64748b}.allocation-readonly-pct{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:12px}.allocation-readonly-pct>div{border:1px solid #e2e8f0;border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:4px}.allocation-readonly-pct span{font-size:12px;color:#64748b}.allocation-readonly-pct b{font-size:18px}.allocation-position-card{margin-bottom:12px}.allocation-position-card.is-negative{border-color:#efb3b3;background:#fff8f8}.allocation-position-grid .allocation-current-balance{background:#f5f8fb;border-radius:10px;padding:10px}.allocation-position-grid .allocation-current-balance b{font-size:18px}.finance-action-details{border:1px solid #dbe3ec;border-radius:12px;background:#fbfdff;margin-top:10px}.finance-action-details>summary{cursor:pointer;padding:12px 14px;font-weight:800;color:#123f70}.finance-action-details>form{padding:4px 14px 14px}.zakat-summary{margin-bottom:8px}.reconciliation-account-row{display:grid;grid-template-columns:minmax(140px,1fr) minmax(140px,1fr) auto;gap:8px;margin-bottom:8px}.reconciliation-card .reconciliation-head{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.reconciliation-card .reconciliation-head>div{border:1px solid #dce5ee;border-radius:12px;padding:14px;background:#fff}.reconciliation-card .reconciliation-head strong{font-size:20px}.finance-event-filter{flex-wrap:wrap}.profit-month-kpis .kpi small{display:block;margin-top:5px}.event-cash-table td[data-label]::before{display:none}
@media (max-width:640px){.finance-subnav{position:sticky;top:0;z-index:15;background:#f7f9fc;padding-top:7px}.finance-real-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-real-grid>.kpi:first-child,.finance-real-grid>.kpi-link:first-child{grid-column:1/-1}.reconciliation-mini{align-items:flex-start;flex-direction:column}.allocation-readonly-pct{grid-template-columns:1fr}.reconciliation-card .reconciliation-head{grid-template-columns:1fr}.reconciliation-account-row{grid-template-columns:1fr}.event-cash-table thead{display:none}.event-cash-table,.event-cash-table tbody,.event-cash-table tr,.event-cash-table td{display:block;width:100%}.event-cash-table tr{border:1px solid #e1e7ef;border-radius:12px;margin-bottom:10px;padding:8px;background:#fff}.event-cash-table td{border:0!important;padding:5px 7px!important;display:flex!important;justify-content:space-between;gap:12px;text-align:right}.event-cash-table td[data-label]::before{display:block;content:attr(data-label);font-weight:700;color:#64748b;text-align:left}.table-wrap:has(.event-cash-table){overflow:visible}}

/* v1.10.10 — Penyelesaian Pembatalan Event */
.status-cancel{background:#fff0f0;color:#a92c2c;border:1px solid #efb9b9}
.event-cancellation-card{border-color:#efcccc;background:linear-gradient(180deg,#fff 0%,#fffafa 100%)}
.cancellation-status-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid #f0dede}
.cancellation-status-head>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cancellation-status-head b{font-size:13px}
.cancellation-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.cancellation-summary>div:last-child{background:#fff7f7;border-color:#efcccc}.cancellation-summary small{display:block;margin-top:3px;font-size:9px;color:var(--tvl-muted)}
.cancellation-meta{margin-top:8px}.cancellation-warning{border-color:#efc2c2!important;background:#fff7f7!important;color:#743333!important}.cancellation-warning a{color:#8f2525;font-weight:800}
.cancellation-form-details{margin-top:12px;border-color:#efcccc;background:#fffdfd}.cancellation-form-details>summary{color:#9e2f2f}.cancellation-checks{display:grid;gap:8px;padding:10px 12px;border:1px solid #ead7d7;border-radius:10px;background:#fff}.cancellation-checks label{display:flex;align-items:flex-start;gap:8px;margin:0;font-size:12px;font-weight:700}.cancellation-checks input[type=checkbox]{width:17px;height:17px;margin:1px 0 0;flex:0 0 auto}
.cancellation-finalize{margin-top:12px;padding:12px;border:1px solid #cfe4d8;border-radius:12px;background:#f7fcf9}.cancellation-reopen-form{margin-top:12px}
@media(max-width:720px){.cancellation-summary{grid-template-columns:1fr 1fr}.cancellation-status-head{align-items:flex-start;flex-direction:column}}
@media(max-width:420px){.cancellation-summary{grid-template-columns:1fr}.cancellation-summary>div:first-child{grid-column:auto}}

/* v1.10.11 — Aktivitas & HPP Event digabung dalam satu halaman */
.combined-completion-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.combined-completion-toolbar .btn{margin-left:auto}
.combined-hpp-section{scroll-margin-top:84px}
.activity-hpp-table-wrap{margin-top:4px}
.activity-hpp-table{min-width:760px}
.activity-hpp-table th:nth-child(2),.activity-hpp-table td:nth-child(2){width:120px;text-align:center}
.activity-hpp-table th:nth-child(3),.activity-hpp-table td:nth-child(3){width:120px}
.activity-hpp-table th:nth-child(4),.activity-hpp-table td:nth-child(4),.activity-hpp-table th:nth-child(5),.activity-hpp-table td:nth-child(5){width:155px;text-align:right;white-space:nowrap}
.activity-hpp-table .activity-qty-input{width:100%;min-width:82px;text-align:center;padding:8px 9px}
.activity-hpp-table tfoot th{background:#f7f9fc;font-weight:800}
.combined-note-field{margin-top:14px}
.combined-note-field label{display:block;font-weight:700;margin-bottom:6px}
.combined-note-field textarea{width:100%;min-height:78px}
.combined-inline-completion{margin-top:14px}
.combined-hpp-summary{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:900px){.combined-hpp-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.combined-hpp-summary .accent{grid-column:1/-1}}
@media(max-width:680px){.combined-completion-toolbar .btn{margin-left:0;width:100%}.activity-hpp-table{min-width:680px}.combined-hpp-summary{grid-template-columns:1fr 1fr}}

/* ===== v1.10.12 Aktivitas & HPP mobile + event filter ===== */
.hpp-event-context{display:grid;grid-template-columns:minmax(0,2fr) repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px}
.hpp-event-context>div{min-width:0;padding:10px 12px;border:1px solid var(--tvl-border);border-radius:12px;background:#fff}
.hpp-event-context span,.hpp-event-context strong{display:block}.hpp-event-context span{font-size:9px;line-height:1.35;text-transform:uppercase;letter-spacing:.04em;font-weight:800;color:var(--tvl-muted)}.hpp-event-context strong{margin-top:4px;font-size:13px;line-height:1.35;color:var(--tvl-blue2);overflow-wrap:anywhere}
.combined-hpp-form{display:block}.hpp-save-actions{display:flex;gap:8px;flex-wrap:wrap}.event-work-filter-note{margin:8px 0 12px}
.event-completion-row{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:760px){.hpp-event-context{grid-template-columns:1fr 1fr}.hpp-event-context>div:first-child{grid-column:1/-1}}
@media(max-width:680px){
  .activity-hpp-table-wrap{overflow:visible!important}
  .activity-hpp-table{display:block!important;width:100%!important;min-width:0!important;border:0!important;background:transparent!important}
  .activity-hpp-table thead{display:none!important}
  .activity-hpp-table tbody,.activity-hpp-table tfoot{display:block!important;width:100%!important}
  .activity-hpp-table tbody tr{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:8px 10px!important;margin:0 0 10px!important;padding:11px!important;border:1px solid var(--tvl-border)!important;border-radius:12px!important;background:#fff!important;box-shadow:0 2px 8px rgba(20,54,89,.04)!important}
  .activity-hpp-table tbody td{display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:flex-start!important;gap:3px!important;width:auto!important;min-width:0!important;padding:0!important;border:0!important;text-align:left!important;white-space:normal!important}
  .activity-hpp-table tbody td::before{content:attr(data-label);display:block;font-size:8px;line-height:1.2;text-transform:uppercase;letter-spacing:.04em;font-weight:800;color:var(--tvl-muted)}
  .activity-hpp-table tbody td:first-child{grid-column:1/-1;padding-bottom:6px!important;border-bottom:1px dashed var(--tvl-border)!important}
  .activity-hpp-table tbody td:first-child::before{display:none}
  .activity-hpp-table tbody td:first-child b{font-size:13px;color:var(--tvl-blue2)}
  .activity-hpp-table .activity-qty-input{width:100%!important;min-width:0!important;max-width:none!important;min-height:42px!important;padding:9px 10px!important;text-align:left!important;font-size:16px!important;box-sizing:border-box!important}
  .activity-hpp-table tbody td.money{align-items:flex-start!important;text-align:left!important}
  .activity-hpp-table tfoot tr{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;padding:11px!important;border:1px solid #cbd9e8!important;border-radius:12px!important;background:#f7f9fc!important}
  .activity-hpp-table tfoot th{display:block!important;width:auto!important;padding:0!important;border:0!important;background:transparent!important;text-align:left!important;white-space:normal!important}
  .activity-hpp-table tfoot th[colspan]{flex:1 1 auto}.activity-hpp-table tfoot th.money{flex:0 0 auto;text-align:right!important}
  .combined-note-field textarea{min-height:88px}.hpp-save-actions{display:grid!important;grid-template-columns:1fr!important}.hpp-save-actions .btn{width:100%;justify-content:center;min-height:44px}
  .event-list-filter input:disabled{opacity:.55;background:#f1f4f8}
}
@media(max-width:440px){
  .hpp-event-context{grid-template-columns:1fr}.hpp-event-context>div:first-child{grid-column:auto}
  .activity-hpp-table tbody tr{grid-template-columns:1fr!important}
  .activity-hpp-table tbody td:first-child{grid-column:auto}
  .activity-hpp-table tfoot tr{align-items:flex-start;flex-direction:column}.activity-hpp-table tfoot th.money{text-align:left!important}
  .combined-hpp-summary{grid-template-columns:1fr!important}
}

/* v1.10.13 — Biaya SDM Event di HPP */
.staff-fee-basis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:12px}.staff-fee-basis>div{padding:13px 14px;border:1px solid var(--line,#dbe3ec);border-radius:12px;background:#fff;display:flex;flex-direction:column;gap:5px}.staff-fee-basis span,.staff-fee-card small{font-size:12px;opacity:.72}.staff-fee-basis b{font-size:16px}.staff-fee-basis .accent{background:#f4f8ff;border-color:#b7cef2}.staff-fee-list{display:grid;gap:12px;margin-top:14px}.staff-fee-card{border:1px solid var(--line,#dbe3ec);border-radius:14px;padding:14px;background:#fff}.staff-fee-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:5px}.staff-fee-head label{display:flex;align-items:center;gap:8px;font-size:15px}.staff-fee-fields{display:grid;grid-template-columns:1.2fr 1fr 1fr .8fr;gap:10px;align-items:end;margin-top:12px}.staff-fee-fields>div{min-width:0}.staff-fee-preview{min-height:44px;padding:8px 10px;border-radius:10px;background:#f7f9fc;display:flex;flex-direction:column;justify-content:center}.staff-fee-preview span{font-size:11px;opacity:.7}.staff-fee-preview b{font-size:14px}.hpp-final-save-actions{position:sticky;bottom:8px;z-index:5;background:rgba(255,255,255,.95);padding:10px;border:1px solid #dbe3ec;border-radius:14px;box-shadow:0 8px 24px rgba(15,23,42,.08);margin:14px 0}
@media(max-width:760px){.staff-fee-basis{grid-template-columns:1fr 1fr}.staff-fee-fields{grid-template-columns:1fr}.staff-fee-card{padding:12px}.staff-fee-head{align-items:flex-start;flex-direction:column}.staff-fee-fields input,.staff-fee-fields select{width:100%;max-width:100%;box-sizing:border-box}.hpp-final-save-actions{display:grid;grid-template-columns:1fr;position:sticky;bottom:8px;z-index:45;margin:12px 0 8px;background:rgba(255,255,255,.97);box-shadow:0 10px 30px rgba(15,23,42,.16);backdrop-filter:blur(8px)}.hpp-final-save-actions .btn{width:100%;min-height:46px}}
@media(max-width:430px){.staff-fee-basis{grid-template-columns:1fr}}


/* ===== v1.10.18 — 4 revisi tertunda: menu, Cancel, Arus Kas Event, Profit & Alokasi ===== */
/* Menu mobile selalu tampil; tidak ada lagi tombol minimize. */
.tvlff-mobile-nav-toggle{display:none!important}
@media(max-width:640px){
  .tvlff-mobile-nav-shell{display:block!important;padding:5px 7px!important}
  .tvlff-mobile-nav-shell .tvlff-nav.tvlff-nav-compact{display:flex!important;width:100%;margin:0!important}
}

/* Event Cancel menjadi read-only secara operasional tanpa menghapus histori. */
.cancellation-readonly-note{border-color:#efc7c7!important;background:#fff8f8!important;color:#743333!important}
.cancellation-readonly-note b{color:#9a2f2f}

/* Arus Kas Event: progressive rows + mobile card layout yang tidak tumpang tindih. */
.progressive-table-actions{display:flex;align-items:center;justify-content:center;gap:10px;padding:12px 4px 2px}
.progressive-table-actions small{color:var(--tvl-muted);font-size:10px}
[data-progressive-row][hidden]{display:none!important}
.event-cash-table-wrap{max-width:100%}
.event-cash-table td,.event-cash-table th{overflow-wrap:anywhere;word-break:break-word}
@media(max-width:640px){
  .finance-event-filter{display:grid!important;grid-template-columns:1fr!important;align-items:stretch!important}
  .finance-event-filter label,.finance-event-filter input,.finance-event-filter .btn{width:100%!important;min-width:0!important}
  .event-cash-table-wrap{overflow:visible!important;border:0!important}
  .event-cash-table{min-width:0!important;width:100%!important}
  .event-cash-table tr{max-width:100%;overflow:hidden}
  .event-cash-table td{align-items:flex-start!important;min-width:0!important;white-space:normal!important}
  .event-cash-table td::before{flex:0 0 38%;max-width:38%}
  .event-cash-table td>*{min-width:0;max-width:60%;overflow-wrap:anywhere}
  .event-cash-table td.money b{white-space:normal;text-align:right}
  .progressive-table-actions{align-items:stretch;flex-direction:column}
  .progressive-table-actions .btn{width:100%}
  .progressive-table-actions small{text-align:center}
}

/* Profit & Alokasi: fokus pada layout responsif; rumus/perhitungan tidak diubah. */
@media(max-width:760px){
  .profit-month-kpis{grid-template-columns:1fr 1fr!important}
  .profit-month-kpis .kpi{min-width:0}
  .allocation-lock-head{align-items:flex-start;flex-direction:column}
  .allocation-percent-card .form-grid{grid-template-columns:1fr!important}
  .allocation-percent-card .span-2{grid-column:auto!important}
  .allocation-percent-card .btn{max-width:100%}
  .allocation-position-card>div:first-child{align-items:flex-start;flex-wrap:wrap;gap:6px}
  .allocation-position-grid{grid-template-columns:1fr 1fr!important}
  .allocation-position-grid .span-2{grid-column:1/-1!important}
  .allocation-position-grid>div{min-width:0}
  .allocation-position-grid b{overflow-wrap:anywhere;word-break:break-word}
  .allocation-transaction-form{grid-template-columns:1fr!important}
  .allocation-transaction-form .span-2{grid-column:auto!important}
  .zakat-summary{grid-template-columns:1fr 1fr!important}
  .card .table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .card .weekly-table{max-width:none}
}
@media(max-width:430px){
  .profit-month-kpis{grid-template-columns:1fr!important}
  .allocation-position-grid,.zakat-summary{grid-template-columns:1fr!important}
  .allocation-position-grid .span-2{grid-column:auto!important}
  .allocation-readonly-pct{grid-template-columns:1fr!important}
  .allocation-percent-card .btn,.finance-action-details .btn{width:100%}
  .profit-pos>div:first-child{flex-direction:column;align-items:flex-start}
  .profit-pos>div:first-child span{white-space:normal}
}


/* ===== v1.10.19 — HPP SDM manual + kewajiban SDM Arus Kas ===== */
.staff-fee-manual{display:flex;flex-direction:column;gap:14px}
.staff-fee-add-toggle{align-self:flex-start}
.staff-fee-add-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:14px;border:1px solid var(--line,#dfe3e8);border-radius:14px;background:rgba(0,0,0,.015)}
.staff-fee-add-panel label,.staff-fee-edit-grid label{display:block;font-size:12px;font-weight:700;margin-bottom:5px}
.staff-fee-add-panel input,.staff-fee-add-panel select,.staff-fee-edit-grid input,.staff-fee-edit-grid select{width:100%;min-width:0}
.staff-fee-selected-head{display:flex;justify-content:space-between;gap:12px;align-items:center;padding-top:4px}
.staff-fee-selected-head span{font-size:12px;opacity:.7}
.staff-fee-selected-list{display:flex;flex-direction:column;gap:12px}
.staff-fee-empty{padding:16px;border:1px dashed var(--line,#dfe3e8);border-radius:12px;text-align:center;opacity:.7}
.staff-fee-selected-card{border:1px solid var(--line,#dfe3e8);border-radius:14px;padding:14px;background:var(--card,#fff)}
.staff-fee-selected-title{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}
.staff-fee-selected-title>div{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.staff-fee-selected-title small{opacity:.65}
.staff-fee-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.staff-fee-edit-grid .span-2,.staff-fee-add-panel .span-2{grid-column:1/-1}
.staff-fee-row-preview{grid-column:1/-1;display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 12px;border-radius:10px;background:rgba(0,0,0,.035)}
.staff-fee-row-preview span{font-size:12px;opacity:.7}.staff-fee-row-preview b{font-size:16px}
.staff-fee-calculation{margin-top:4px;padding-top:14px;border-top:1px solid var(--line,#dfe3e8)}
.staff-fee-calculation h4{margin:0 0 12px}
.staff-fee-summary-grid{margin-bottom:10px}
.finance-real-grid .kpi strong{overflow-wrap:anywhere}
@media(max-width:720px){
  .staff-fee-add-panel,.staff-fee-edit-grid{grid-template-columns:1fr}
  .staff-fee-add-panel .span-2,.staff-fee-edit-grid .span-2,.staff-fee-row-preview{grid-column:auto}
  .staff-fee-selected-title{align-items:flex-start}
  .staff-fee-selected-title>div{min-width:0}
  .staff-fee-add-toggle{width:100%}
}

/* ===== v1.10.20 — HPP ringkas + Payroll SDM + sticky Profit mobile ===== */
.activity-hpp-simple{table-layout:fixed}
.activity-hpp-simple th:nth-child(1),.activity-hpp-simple td:nth-child(1){width:48%}
.activity-hpp-simple th:nth-child(2),.activity-hpp-simple td:nth-child(2){width:18%;text-align:center}
.activity-hpp-simple th:nth-child(3),.activity-hpp-simple td:nth-child(3){width:34%;text-align:right}
.activity-hpp-simple .activity-qty-input{max-width:105px;text-align:center;margin:auto}
.hpp-bottom-note-label{display:block;font-size:12px;font-weight:750;color:#526079;margin-bottom:6px}
.hpp-bottom-note{width:100%;min-height:90px;border:1px solid #ccd7e5;border-radius:11px;padding:11px;font:inherit;resize:vertical}
.payroll-fee-sources{margin-top:8px;border-top:1px dashed var(--tvl-border);padding-top:7px}
.payroll-fee-sources summary{cursor:pointer;font-size:12px;font-weight:750;color:var(--tvl-blue)}
.payroll-fee-source-list{display:flex;flex-direction:column;gap:5px;margin-top:8px}
.payroll-fee-source-list>div{display:flex;justify-content:space-between;gap:12px;font-size:11px;background:#f8fafc;border:1px solid var(--tvl-border);border-radius:8px;padding:7px 9px}
.payroll-fee-source-list span{color:#526079;min-width:0;overflow-wrap:anywhere}
.payroll-fee-source-list strong{white-space:nowrap;color:var(--tvl-blue2)}
.allocation-mobile-sticky{display:none}
@media (max-width:640px){
  .activity-simple-card{padding:12px}
  .activity-hpp-table-wrap{overflow:visible}
  .activity-hpp-simple thead{display:none}
  .activity-hpp-simple,.activity-hpp-simple tbody,.activity-hpp-simple tr,.activity-hpp-simple td{display:block;width:100%!important}
  .activity-hpp-simple tr{display:grid;grid-template-columns:minmax(0,1fr) 82px;gap:8px;align-items:center;border:1px solid var(--tvl-border);border-radius:13px;padding:10px;margin-bottom:9px;background:#fff}
  .activity-hpp-simple td{border:0!important;padding:0!important;text-align:left!important}
  .activity-hpp-simple td:nth-child(1){font-size:13px;grid-column:1}
  .activity-hpp-simple td:nth-child(2){grid-column:2;grid-row:1 / span 2}
  .activity-hpp-simple td:nth-child(3){grid-column:1;font-size:12px;color:var(--tvl-muted)}
  .activity-hpp-simple td:nth-child(3)::before{content:'Total: ';font-weight:600}
  .activity-hpp-simple .activity-qty-input{max-width:82px;min-height:42px;text-align:center}
  .payroll-employee-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .payroll-auto-income{grid-column:1/-1}
  .allocation-mobile-sticky{display:grid;grid-template-columns:1fr 1fr;gap:8px;position:fixed;left:10px;right:10px;bottom:10px;z-index:90;padding:8px;background:rgba(255,255,255,.96);border:1px solid var(--tvl-border);border-radius:14px;box-shadow:0 8px 28px rgba(15,39,70,.18);backdrop-filter:blur(8px)}
  .allocation-mobile-sticky .btn{min-height:46px;padding:8px;font-size:12px}
  .tvlff-wrap:has(.allocation-mobile-sticky){padding-bottom:88px}
}

/* ===== v1.10.21 — Aktivitas HPP realtime & visual refinement ===== */
.activity-simple-card{overflow:hidden}
.activity-hpp-simple{border-collapse:separate;border-spacing:0 7px;background:transparent}
.activity-hpp-simple thead th{border:0;background:#edf4fb;color:#38516e;font-size:11px;font-weight:800;letter-spacing:.035em;text-transform:uppercase;padding:10px 12px}
.activity-hpp-simple thead th:first-child{border-radius:10px 0 0 10px}
.activity-hpp-simple thead th:last-child{border-radius:0 10px 10px 0}
.activity-hpp-simple tbody tr{background:#fff;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.activity-hpp-simple tbody tr:hover{box-shadow:0 5px 16px rgba(18,63,112,.07)}
.activity-hpp-simple tbody td{border-top:1px solid #e2eaf3;border-bottom:1px solid #e2eaf3;padding:10px 12px;vertical-align:middle}
.activity-hpp-simple tbody td:first-child{border-left:1px solid #e2eaf3;border-radius:11px 0 0 11px}
.activity-hpp-simple tbody td:last-child{border-right:1px solid #e2eaf3;border-radius:0 11px 11px 0}
.activity-hpp-simple .activity-name-cell b{display:inline-flex;align-items:center;min-height:32px;color:#173f6b;font-size:13px;font-weight:800}
.activity-hpp-simple .activity-qty-input{width:100%;max-width:106px;min-height:40px;margin:auto;border:1px solid #bdcee1;border-radius:9px;background:#fbfdff;color:#162f4b;font-weight:750;text-align:center;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}
.activity-hpp-simple .activity-qty-input:focus{outline:0;border-color:#3d77b3;background:#fff;box-shadow:0 0 0 3px rgba(61,119,179,.12)}
.activity-hpp-simple .activity-live-price-cell b{display:inline-flex;justify-content:flex-end;align-items:center;min-width:124px;min-height:38px;padding:7px 10px;border:1px solid #cae9df;border-radius:9px;background:#f1fbf7;color:#176b55;font-size:13px;font-weight:850;box-sizing:border-box}
.activity-hpp-simple tr.is-live-edited{box-shadow:0 4px 14px rgba(38,113,90,.08)}
.activity-hpp-simple tr.is-live-edited td{border-top-color:#b9dfd2;border-bottom-color:#b9dfd2}
.activity-hpp-simple tr.is-live-edited td:first-child{border-left-color:#b9dfd2}
.activity-hpp-simple tr.is-live-edited td:last-child{border-right-color:#b9dfd2}

@media (max-width:640px){
  .activity-simple-card{padding:11px!important}
  .activity-hpp-simple{border-spacing:0}
  .activity-hpp-simple tbody{display:flex!important;flex-direction:column;gap:9px}
  .activity-hpp-simple tbody tr{display:grid!important;grid-template-columns:92px minmax(0,1fr)!important;gap:8px 10px!important;padding:11px!important;margin:0!important;border:1px solid #dce7f2!important;border-radius:14px!important;background:linear-gradient(180deg,#fff 0%,#fbfdff 100%)!important;box-shadow:0 3px 12px rgba(20,54,89,.045)!important}
  .activity-hpp-simple tbody td{border:0!important;border-radius:0!important;padding:0!important;width:auto!important;min-width:0!important;background:transparent!important}
  .activity-hpp-simple .activity-name-cell{grid-column:1/-1!important;padding-bottom:8px!important;border-bottom:1px solid #e7edf4!important}
  .activity-hpp-simple .activity-name-cell::before{display:none!important}
  .activity-hpp-simple .activity-name-cell b{min-height:0;font-size:13px;color:#173f6b}
  .activity-hpp-simple .activity-qty-cell{grid-column:1!important;grid-row:2!important}
  .activity-hpp-simple .activity-live-price-cell{grid-column:2!important;grid-row:2!important;align-items:stretch!important}
  .activity-hpp-simple .activity-qty-cell::before,.activity-hpp-simple .activity-live-price-cell::before{display:block!important;margin-bottom:5px;font-size:9px;line-height:1;text-transform:uppercase;letter-spacing:.05em;font-weight:800;color:#7a899b}
  .activity-hpp-simple .activity-qty-input{max-width:none!important;width:100%!important;min-height:42px!important;margin:0!important;padding:8px!important;font-size:16px!important;text-align:center!important}
  .activity-hpp-simple .activity-live-price-cell b{display:flex!important;width:100%;min-width:0;min-height:42px;justify-content:flex-start;padding:9px 11px;font-size:13px}
  .activity-hpp-simple tr.is-live-edited{border-color:#b8ddd1!important;background:linear-gradient(180deg,#fff 0%,#f6fcfa 100%)!important}
}
@media (max-width:640px){
  .activity-hpp-simple .activity-live-price-cell::before{content:attr(data-label)!important}
}


/* ===== v1.10.22 — mobile finance polish + concise fee summary + payroll manual titles ===== */
.staff-fee-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.staff-fee-summary-grid>div{min-width:0}
.cash-mobile-table td[data-label]::before,.profit-mobile-table td[data-label]::before{display:none}
.payroll-item-row .payroll-item-note small{font-weight:600;color:var(--tvl-muted)}

@media(max-width:640px){
  /* Aktivitas Event: Harga dibuat lebih lapang dan sejajar presisi dengan QTY. */
  .activity-hpp-simple tbody tr{grid-template-columns:minmax(96px,.72fr) minmax(0,1.28fr)!important;column-gap:10px!important}
  .activity-hpp-simple .activity-qty-cell,.activity-hpp-simple .activity-live-price-cell{min-width:0!important;width:100%!important;align-self:stretch!important}
  .activity-hpp-simple .activity-live-price-cell{display:flex!important;flex-direction:column!important}
  .activity-hpp-simple .activity-live-price-cell b{width:100%!important;min-width:0!important;flex:1!important;justify-content:flex-start!important;box-sizing:border-box!important}

  /* Ringkasan Fee hanya empat angka inti. */
  .staff-fee-summary-grid{grid-template-columns:1fr 1fr!important;gap:8px!important}
  .staff-fee-summary-grid>div{padding:10px!important;border-radius:10px!important}
  .staff-fee-summary-grid span{font-size:9px!important;line-height:1.25!important}
  .staff-fee-summary-grid b{font-size:13px!important;overflow-wrap:anywhere}

  /* Arus Kas Real: seluruh detail dibaca sebagai kartu, bukan tabel sempit. */
  .finance-action-details{border-radius:14px!important;overflow:hidden}
  .finance-action-details>summary{padding:13px 12px!important;line-height:1.35!important}
  .finance-action-details .detail-grid{grid-template-columns:1fr 1fr!important;gap:8px!important;padding:0 10px 10px}
  .finance-action-details .detail-grid>div{min-width:0;padding:9px!important;border:1px solid var(--tvl-border);border-radius:10px;background:#fff}
  .finance-action-details .detail-grid>div b{display:block;margin-top:4px;font-size:12px;overflow-wrap:anywhere}
  .cash-mobile-table-wrap,.finance-action-details>.table-wrap{overflow:visible!important;padding:0 8px 8px}
  .cash-mobile-table thead,.finance-action-details .weekly-table thead{display:none!important}
  .cash-mobile-table,.cash-mobile-table tbody,.cash-mobile-table tr,.cash-mobile-table td,
  .finance-action-details .weekly-table,.finance-action-details .weekly-table tbody,.finance-action-details .weekly-table tr,.finance-action-details .weekly-table td{display:block!important;width:100%!important;box-sizing:border-box}
  .cash-mobile-table tr,.finance-action-details .weekly-table tr{border:1px solid #dce6f0!important;border-radius:12px!important;margin:8px 0!important;padding:7px 9px!important;background:#fff!important;box-shadow:0 2px 8px rgba(18,63,112,.04)}
  .cash-mobile-table td,.finance-action-details .weekly-table td{border:0!important;padding:5px 0!important;display:flex!important;justify-content:space-between!important;align-items:flex-start!important;gap:12px!important;text-align:right!important;white-space:normal!important;overflow-wrap:anywhere}
  .cash-mobile-table td[data-label]::before,.finance-action-details .weekly-table td[data-label]::before{display:block!important;content:attr(data-label);flex:0 0 42%;font-size:10px;font-weight:800;color:#6f7f91;text-align:left}
  .cash-mobile-table td.money,.finance-action-details .weekly-table td.money{font-variant-numeric:tabular-nums}
  .finance-action-details p.muted{padding:0 11px 11px;margin:4px 0 0;line-height:1.5}

  /* Arus Kas Event: detail Kas Masuk/Keluar dirapikan hingga isi transaksi. */
  .event-cash-table-wrap{overflow:visible!important}
  .event-cash-table tr[data-progressive-row]{padding:9px 11px!important;border-radius:13px!important;border:1px solid #dbe6f1!important;box-shadow:0 3px 10px rgba(18,63,112,.045)!important}
  .event-cash-table tr[data-progressive-row] td{padding:5px 0!important;align-items:flex-start!important;line-height:1.35!important;white-space:normal!important;overflow-wrap:anywhere!important}
  .event-cash-table td[data-label]::before{flex:0 0 38%;font-size:10px;line-height:1.35}
  .event-cash-table td.money b{font-size:13px;color:var(--tvl-blue2)}
  .progressive-table-actions{display:flex!important;flex-direction:column!important;gap:6px!important;padding:8px 0 2px!important}
  .progressive-table-actions .btn{width:100%!important;min-height:42px!important}
  .progressive-table-actions small{text-align:center!important;color:var(--tvl-muted)!important}
  .finance-event-filter{display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important;align-items:end!important}
  .finance-event-filter label{font-size:10px!important;margin:0!important}
  .finance-event-filter input,.finance-event-filter .btn{width:100%!important;box-sizing:border-box!important}
  .finance-event-filter .btn{min-height:40px!important}

  /* Profit & Alokasi: histori dari Profit Event ke bawah menjadi kartu mobile. */
  .profit-mobile-table thead{display:none!important}
  .profit-mobile-table,.profit-mobile-table tbody,.profit-mobile-table tr,.profit-mobile-table td{display:block!important;width:100%!important;box-sizing:border-box}
  .profit-mobile-table tr{border:1px solid #dce6f0!important;border-radius:13px!important;padding:8px 10px!important;margin:9px 0!important;background:#fff!important;box-shadow:0 2px 8px rgba(18,63,112,.04)}
  .profit-mobile-table td{border:0!important;padding:5px 0!important;display:flex!important;justify-content:space-between!important;gap:12px!important;text-align:right!important;white-space:normal!important;overflow-wrap:anywhere!important}
  .profit-mobile-table td[data-label]::before{display:block!important;content:attr(data-label);flex:0 0 42%;font-size:10px;font-weight:800;color:#6f7f91;text-align:left}
  .profit-mobile-table .status-badge{white-space:normal!important;text-align:center!important;line-height:1.25!important}
  .row-card{gap:8px!important;align-items:flex-start!important}
  .row-card>span{overflow-wrap:anywhere!important;line-height:1.45!important}

  /* Payroll manual: judul & nominal fokus, tetap mudah Edit/Hapus sebelum Dibayar. */
  .payroll-item-row{padding:10px!important;border:1px solid #dce6f0!important;border-radius:11px!important;background:#fff!important;margin-top:8px!important}
  .payroll-item-row input{min-height:42px!important}
  .payroll-remove{min-height:42px!important}
}
@media(max-width:430px){
  .staff-fee-summary-grid{grid-template-columns:1fr 1fr!important}
  .finance-action-details .detail-grid{grid-template-columns:1fr!important}
  .finance-event-filter{grid-template-columns:1fr!important}
}

/* ===== v1.10.23 — mobile fixes: Aktivitas HPP, Kewajiban SDM, Arus Kas Event ===== */
/* Dedicated tables are intentionally detached from .weekly-table so legacy mobile
   grid rules cannot override these layouts. */
.activity-entry-table{width:100%;border-collapse:separate;border-spacing:0 7px;background:transparent}
.sdm-liability-table,.event-cash-detail-table{width:100%;border-collapse:collapse;background:#fff}
.sdm-liability-table th,.event-cash-detail-table th{background:#123f73;color:#fff;text-align:left;padding:11px 12px;font-size:12px;font-weight:800}
.sdm-liability-table td,.event-cash-detail-table td{padding:10px 12px;border-bottom:1px solid #dce5ef;font-size:13px;vertical-align:top}
.sdm-liability-table td.money,.event-cash-detail-table td.money{text-align:right;white-space:nowrap}

@media(max-width:640px){
  /* 1) HPP Event Aktivitas: Nama penuh di atas, QTY dan Harga sama lebar. */
  .activity-entry-table,
  .activity-entry-table tbody,
  .activity-entry-table tr,
  .activity-entry-table td{width:100%!important;max-width:100%!important;box-sizing:border-box!important}
  .activity-entry-table thead{display:none!important}
  .activity-entry-table tbody{display:flex!important;flex-direction:column!important;gap:10px!important}
  .activity-entry-table tbody tr{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    gap:9px 10px!important;
    margin:0!important;
    padding:11px!important;
    border:1px solid #dce7f2!important;
    border-radius:14px!important;
    background:linear-gradient(180deg,#fff 0%,#fbfdff 100%)!important;
    box-shadow:0 3px 12px rgba(20,54,89,.045)!important;
  }
  .activity-entry-table tbody td{display:flex!important;flex-direction:column!important;min-width:0!important;padding:0!important;border:0!important;background:transparent!important;text-align:left!important}
  .activity-entry-table .activity-name-cell{grid-column:1/-1!important;grid-row:1!important;padding-bottom:8px!important;border-bottom:1px solid #e7edf4!important}
  .activity-entry-table .activity-name-cell::before{display:none!important}
  .activity-entry-table .activity-name-cell b{font-size:13px!important;font-weight:800!important;color:#173f6b!important;line-height:1.25!important;min-height:0!important}
  .activity-entry-table .activity-qty-cell{grid-column:1!important;grid-row:2!important;width:100%!important}
  .activity-entry-table .activity-live-price-cell{grid-column:2!important;grid-row:2!important;width:100%!important;align-items:stretch!important}
  .activity-entry-table .activity-qty-cell::before,
  .activity-entry-table .activity-live-price-cell::before{display:block!important;content:attr(data-label)!important;margin:0 0 6px!important;font-size:9px!important;line-height:1!important;text-transform:uppercase!important;letter-spacing:.05em!important;font-weight:800!important;color:#7a899b!important}
  .activity-entry-table .activity-qty-input,
  .activity-entry-table .activity-live-price-cell b{
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
    min-height:44px!important;
    height:44px!important;
    margin:0!important;
    box-sizing:border-box!important;
    border-radius:10px!important;
  }
  .activity-entry-table .activity-qty-input{padding:8px 10px!important;text-align:center!important;font-size:16px!important}
  .activity-entry-table .activity-live-price-cell b{display:flex!important;align-items:center!important;justify-content:flex-start!important;padding:9px 11px!important;font-size:13px!important;white-space:nowrap!important}
  .activity-entry-table tr.is-live-edited{border-color:#b8ddd1!important;background:linear-gradient(180deg,#fff 0%,#f6fcfa 100%)!important}

  /* 2) Rincian Kewajiban SDM: satu transaksi = satu kartu vertikal yang terbaca. */
  .finance-action-details .table-wrap:has(.sdm-liability-table){overflow:visible!important;padding:0 10px 10px!important;border:0!important}
  .sdm-liability-table,
  .sdm-liability-table tbody,
  .sdm-liability-table tr,
  .sdm-liability-table td{display:block!important;width:100%!important;max-width:100%!important;box-sizing:border-box!important}
  .sdm-liability-table thead{display:none!important}
  .sdm-liability-table tr{
    margin:0 0 10px!important;
    padding:10px 11px!important;
    border:1px solid #dce6f0!important;
    border-radius:13px!important;
    background:#fff!important;
    box-shadow:0 3px 10px rgba(18,63,112,.045)!important;
  }
  .sdm-liability-table td{
    display:grid!important;
    grid-template-columns:minmax(92px,34%) minmax(0,1fr)!important;
    gap:10px!important;
    align-items:start!important;
    padding:6px 0!important;
    border:0!important;
    border-bottom:1px dashed #edf1f5!important;
    text-align:left!important;
    white-space:normal!important;
    word-break:normal!important;
    overflow-wrap:break-word!important;
    line-height:1.4!important;
  }
  .sdm-liability-table td:last-child{border-bottom:0!important;padding-bottom:2px!important}
  .sdm-liability-table td[data-label]::before{
    display:block!important;
    content:attr(data-label)!important;
    min-width:0!important;
    margin:0!important;
    font-size:10px!important;
    line-height:1.35!important;
    font-weight:800!important;
    color:#718096!important;
    text-align:left!important;
  }
  .sdm-liability-table td>*{min-width:0!important;max-width:100%!important}
  .sdm-liability-table td b{font-size:12px!important;color:#173f6b!important;white-space:normal!important}
  .sdm-liability-table td.money{text-align:left!important;font-variant-numeric:tabular-nums!important}
  .sdm-liability-table td.money b{color:#173f6b!important}

  /* 3) Arus Kas Event: seluruh rincian Kas Masuk/Keluar sebagai kartu label–nilai. */
  .event-cash-table-wrap{overflow:visible!important;border:0!important;background:transparent!important}
  .event-cash-detail-table,
  .event-cash-detail-table tbody,
  .event-cash-detail-table tr,
  .event-cash-detail-table td{display:block!important;width:100%!important;max-width:100%!important;box-sizing:border-box!important}
  .event-cash-detail-table thead{display:none!important}
  .event-cash-detail-table tr[data-progressive-row]{
    margin:0 0 10px!important;
    padding:10px 11px!important;
    border:1px solid #dbe6f1!important;
    border-radius:13px!important;
    background:#fff!important;
    box-shadow:0 3px 10px rgba(18,63,112,.045)!important;
    overflow:hidden!important;
  }
  .event-cash-detail-table tr[data-progressive-row] td{
    display:grid!important;
    grid-template-columns:minmax(86px,32%) minmax(0,1fr)!important;
    gap:10px!important;
    align-items:start!important;
    padding:6px 0!important;
    border:0!important;
    border-bottom:1px dashed #edf1f5!important;
    text-align:left!important;
    white-space:normal!important;
    word-break:normal!important;
    overflow-wrap:break-word!important;
    line-height:1.4!important;
    min-width:0!important;
  }
  .event-cash-detail-table tr[data-progressive-row] td:last-child{border-bottom:0!important}
  .event-cash-detail-table td[data-label]::before{
    display:block!important;
    content:attr(data-label)!important;
    min-width:0!important;
    margin:0!important;
    font-size:10px!important;
    line-height:1.35!important;
    font-weight:800!important;
    color:#718096!important;
    text-align:left!important;
  }
  .event-cash-detail-table td>*{min-width:0!important;max-width:100%!important}
  .event-cash-detail-table td b{font-size:12px!important;color:#173f6b!important;white-space:normal!important}
  .event-cash-detail-table td.money{text-align:left!important;font-variant-numeric:tabular-nums!important}
  .event-cash-detail-table td.money b{font-size:13px!important;color:#0f4a7d!important}
  .event-cash-detail-table .progressive-empty{display:block!important;padding:12px!important;border:1px dashed #d7e1eb!important;border-radius:12px!important}
}


/* ===== v1.10.24 — true mobile cards + SDM workflow ===== */
.fee-source-badge{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;font-size:10px;font-weight:800;line-height:1.2}
.fee-source-badge.auto{background:#e9f3ff;color:#19558f;border:1px solid #c7def5}
.fee-source-badge.manual{background:#eef9f3;color:#24704c;border:1px solid #cfe9da}
.manual-fee-form input[readonly]{background:#f5f7fa;color:#637184}
.payroll-control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:stretch}
.payroll-auto-box,.payroll-control-total{border:1px solid #dce5ef;border-radius:13px;padding:12px;background:#fff;min-width:0}
.payroll-auto-box>b{display:block;margin-bottom:8px;color:#173f6b}
.payroll-auto-box>div{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px dashed #edf1f5;min-width:0}
.payroll-auto-box>div:last-of-type{border-bottom:0}
.payroll-auto-box>div span{min-width:0;overflow-wrap:break-word}
.payroll-auto-box>div strong{white-space:nowrap;text-align:right}
.payroll-control-total{display:flex;flex-direction:column;justify-content:center;background:#f5f9fd}
.payroll-control-total strong{font-size:20px;color:#123f73;margin:4px 0}

@media(max-width:700px){
  /* HPP Event: activity card really uses the full available width. */
  .activity-entry-table{table-layout:fixed!important;width:100%!important;margin:0!important}
  .activity-entry-table tbody{width:100%!important}
  .activity-entry-table tbody tr{width:100%!important;grid-template-columns:calc(50% - 5px) calc(50% - 5px)!important;padding:10px!important;box-sizing:border-box!important}
  .activity-entry-table .activity-qty-cell,.activity-entry-table .activity-live-price-cell{width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important}
  .activity-entry-table .activity-qty-input,.activity-entry-table .activity-live-price-cell b{display:flex!important;width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important;margin:0!important}
  .activity-entry-table .activity-live-price-cell b{justify-content:flex-start!important;overflow:hidden!important;text-overflow:ellipsis!important}

  /* Dedicated finance/profit tables: no legacy weekly-table pseudo labels, one record = one card. */
  .finance-action-details .table-wrap,
  .cash-mobile-table-wrap,
  .event-cash-table-wrap,
  .card .table-wrap:has(.mobile-safe-table){overflow:visible!important;width:100%!important;max-width:100%!important;padding:0 8px 8px!important;box-sizing:border-box!important}

  table.mobile-safe-table,
  table.cash-mobile-table,
  table.profit-mobile-table,
  table.event-cash-detail-table,
  table.sdm-liability-table,
  table.mobile-safe-table tbody,
  table.cash-mobile-table tbody,
  table.profit-mobile-table tbody,
  table.event-cash-detail-table tbody,
  table.sdm-liability-table tbody{display:block!important;width:100%!important;max-width:100%!important;table-layout:auto!important;border:0!important;background:transparent!important}

  table.mobile-safe-table thead,
  table.cash-mobile-table thead,
  table.profit-mobile-table thead,
  table.event-cash-detail-table thead,
  table.sdm-liability-table thead{display:none!important}

  table.mobile-safe-table tbody>tr,
  table.cash-mobile-table tbody>tr,
  table.profit-mobile-table tbody>tr,
  table.event-cash-detail-table tbody>tr,
  table.sdm-liability-table tbody>tr{
    display:block!important;width:100%!important;max-width:100%!important;box-sizing:border-box!important;
    margin:0 0 10px!important;padding:9px 11px!important;border:1px solid #dce6f0!important;border-radius:13px!important;
    background:#fff!important;box-shadow:0 2px 9px rgba(18,63,112,.045)!important;overflow:hidden!important;
  }

  table.mobile-safe-table tbody>tr>td,
  table.cash-mobile-table tbody>tr>td,
  table.profit-mobile-table tbody>tr>td,
  table.event-cash-detail-table tbody>tr>td,
  table.sdm-liability-table tbody>tr>td{
    display:grid!important;grid-template-columns:minmax(96px,35%) minmax(0,1fr)!important;gap:9px!important;align-items:start!important;
    width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important;
    padding:6px 0!important;margin:0!important;border:0!important;border-bottom:1px dashed #edf1f5!important;
    text-align:left!important;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;line-height:1.4!important;
    font-size:12px!important;
  }
  table.mobile-safe-table tbody>tr>td:last-child,
  table.cash-mobile-table tbody>tr>td:last-child,
  table.profit-mobile-table tbody>tr>td:last-child,
  table.event-cash-detail-table tbody>tr>td:last-child,
  table.sdm-liability-table tbody>tr>td:last-child{border-bottom:0!important}

  table.mobile-safe-table td[data-label]::before,
  table.cash-mobile-table td[data-label]::before,
  table.profit-mobile-table td[data-label]::before,
  table.event-cash-detail-table td[data-label]::before,
  table.sdm-liability-table td[data-label]::before{
    content:attr(data-label)!important;display:block!important;position:static!important;float:none!important;width:auto!important;height:auto!important;
    margin:0!important;padding:0!important;border:0!important;background:none!important;color:#718096!important;
    font-size:10px!important;font-weight:800!important;line-height:1.35!important;text-transform:none!important;letter-spacing:0!important;text-align:left!important;
    white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;
  }
  table.mobile-safe-table td.money,
  table.cash-mobile-table td.money,
  table.profit-mobile-table td.money,
  table.event-cash-detail-table td.money,
  table.sdm-liability-table td.money{font-variant-numeric:tabular-nums!important;text-align:left!important;white-space:normal!important}
  table.mobile-safe-table td b,table.mobile-safe-table td strong,
  table.cash-mobile-table td b,table.cash-mobile-table td strong,
  table.profit-mobile-table td b,table.profit-mobile-table td strong,
  table.event-cash-detail-table td b,table.event-cash-detail-table td strong,
  table.sdm-liability-table td b,table.sdm-liability-table td strong{min-width:0!important;max-width:100%!important;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important}

  /* Empty table row remains a simple message, not a label/value grid. */
  table.mobile-safe-table tbody>tr>td[colspan],
  table.cash-mobile-table tbody>tr>td[colspan],
  table.profit-mobile-table tbody>tr>td[colspan],
  table.event-cash-detail-table tbody>tr>td[colspan]{display:block!important;border:0!important;text-align:center!important;padding:12px 4px!important}
  table.mobile-safe-table tbody>tr>td[colspan]::before,
  table.cash-mobile-table tbody>tr>td[colspan]::before,
  table.profit-mobile-table tbody>tr>td[colspan]::before,
  table.event-cash-detail-table tbody>tr>td[colspan]::before{display:none!important;content:none!important}

  /* Finance details and Profit history spacing. */
  .finance-action-details{margin-top:10px!important;border-radius:14px!important}
  .finance-action-details>summary{padding:13px 12px!important;font-size:12px!important;line-height:1.4!important;white-space:normal!important}
  .finance-action-details p.muted{padding:0 10px 11px!important;margin:4px 0 0!important;line-height:1.5!important}
  .profit-mobile-table .status-badge{display:inline-flex!important;max-width:100%!important;white-space:normal!important;text-align:center!important;justify-content:center!important;line-height:1.25!important}
  .progressive-table-actions{padding:2px 8px 8px!important}
  .progressive-table-actions .btn{width:100%!important;min-height:42px!important}

  /* SDM pages. */
  .payroll-control-grid{grid-template-columns:1fr!important;gap:9px!important}
  .payroll-auto-box,.payroll-control-total{padding:11px!important;border-radius:12px!important}
  .payroll-auto-box>div{align-items:flex-start!important}
  .payroll-auto-box>div span{font-size:11px!important;line-height:1.35!important;padding-right:6px!important}
  .payroll-auto-box>div strong{font-size:12px!important}
  .sdm-list-row.fee-source-row,.sdm-list-row{min-width:0!important}
  .sdm-row-actions{flex-wrap:wrap!important;gap:6px!important}
  .manual-fee-form .span-2{grid-column:1/-1!important}
}

@media(max-width:430px){
  table.mobile-safe-table tbody>tr>td,
  table.cash-mobile-table tbody>tr>td,
  table.profit-mobile-table tbody>tr>td,
  table.event-cash-detail-table tbody>tr>td,
  table.sdm-liability-table tbody>tr>td{grid-template-columns:minmax(88px,34%) minmax(0,1fr)!important;gap:8px!important;font-size:11.5px!important}
  .activity-entry-table tbody tr{grid-template-columns:calc(50% - 4px) calc(50% - 4px)!important;gap:8px!important;padding:9px!important}
}


.payroll-source-links{display:flex!important;gap:6px!important;flex-wrap:wrap!important;margin-top:8px!important}
.payroll-source-links .btn{margin:0!important}
@media(max-width:700px){.payroll-source-links{display:grid!important;grid-template-columns:1fr!important}.payroll-source-links .btn{width:100%!important;box-sizing:border-box!important;text-align:center!important}}

/* v1.10.26 - Pinjaman SDM: potongan fleksibel per periode Payroll. */
.loan-period-plan-form{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin-top:10px;padding:10px 12px;border:1px solid #dbe5ef;border-radius:10px;background:#f8fbfe}
.loan-period-plan-form>div{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}
.loan-period-plan-form label{font-size:11px;font-weight:800;color:#29445e}
.loan-period-plan-form small{font-size:10px;color:#6c7a89;line-height:1.35}
.loan-period-plan-form input{width:100%;box-sizing:border-box}
@media(max-width:700px){.loan-period-plan-form{display:grid;grid-template-columns:1fr;align-items:stretch}.loan-period-plan-form .btn{width:100%;min-height:42px}}

/* v1.10.31 — navigasi user-facing berbasis role */
.tvl-role-topnav{display:flex;gap:8px;overflow-x:auto;padding:10px 2px 12px;margin:0 0 10px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
.tvl-role-topnav a{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:38px;padding:0 14px;border:1px solid #d9e2ec;border-radius:999px;background:#fff;color:#35516b;text-decoration:none;font-size:12px;font-weight:800;white-space:nowrap}
.tvl-role-topnav a.active{background:#173f5f;color:#fff;border-color:#173f5f}
@media(max-width:700px){.tvl-role-topnav{margin-inline:-4px;padding-inline:4px}.tvl-role-topnav a{min-height:40px;padding-inline:13px}}

/* v1.10.32 — menu role tunggal + pintasan Owner */
.tvlff-role-primary-shell{margin-top:14px}
.tvlff-role-primary{width:100%}
.owner-quick-shortcuts{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 16px}
@media(max-width:720px){
  .tvlff-role-primary{overflow-x:auto;display:flex;flex-wrap:nowrap;scrollbar-width:none}
  .tvlff-role-primary::-webkit-scrollbar{display:none}
  .tvlff-role-primary>a{flex:0 0 auto}
  .owner-quick-shortcuts .btn{flex:1 1 140px;text-align:center}
}

/* v1.10.33 — self-service account controls */
.tvlff-pin-change{position:relative;margin:0}.tvlff-pin-change>summary{list-style:none;cursor:pointer}.tvlff-pin-change>summary::-webkit-details-marker{display:none}.tvlff-pin-change-form{position:absolute;right:0;top:calc(100% + 7px);z-index:80;width:260px;padding:12px;background:#fff;border:1px solid var(--tvl-border);border-radius:12px;box-shadow:0 12px 34px rgba(20,47,79,.16);display:grid;gap:7px}.tvlff-pin-change-form label{font-size:10px;font-weight:800;color:#526079}.tvlff-pin-change-form input{width:100%;min-height:38px;border:1px solid #ccd7e5;border-radius:9px;padding:7px 9px;font:inherit;letter-spacing:.18em}.tvlff-pin-change-form .btn{width:100%;margin-top:3px}.tvlff-ops-account-tools{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:6px 0 10px}.tvlff-ops-account-tools>span{display:flex;flex-direction:column;text-align:right}.tvlff-ops-account-tools>span b{font-size:11px;color:var(--tvl-blue2)}.tvlff-ops-account-tools>span small{font-size:9px;color:var(--tvl-muted)}.tvlff-ops-account-tools form{margin:0}@media(max-width:640px){.tvlff-user-session{flex-wrap:wrap;justify-content:flex-end}.tvlff-pin-change-form{position:fixed;left:12px;right:12px;top:80px;width:auto}.tvlff-ops-account-tools{flex-wrap:wrap}.tvlff-ops-account-tools>span{width:100%;text-align:left}}

/* v1.10.39 — role-aware return-to-dashboard button */
.tvlff-role-backbar{display:flex;justify-content:flex-start;align-items:center;margin:10px 0 14px}
.tvlff-role-backbar .btn{display:inline-flex;align-items:center;gap:6px;text-decoration:none}
@media(max-width:640px){.tvlff-role-backbar{margin:8px 0 12px}.tvlff-role-backbar .btn{width:100%;justify-content:center}}

/* v1.10.40 - aksi histori alokasi */
.history-row-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.history-row-actions form{margin:0}.allocation-edit-card{scroll-margin-top:20px}
@media(max-width:760px){.history-row-actions{justify-content:flex-end}.history-row-actions .btn{min-width:72px}}

/* v1.10.44 — warna alokasi & kuitansi */
.allocation-tone-owner{border-color:#8fc2ec!important;background:linear-gradient(135deg,#eef7ff,#dbeeff)!important}.allocation-tone-owner>div:first-child>b,.allocation-tone-owner>span,.allocation-tone-owner label{color:#0b5797}.allocation-tone-ops{border-color:#f6b76d!important;background:linear-gradient(135deg,#fff8ef,#ffead0)!important}.allocation-tone-ops>div:first-child>b,.allocation-tone-ops>span,.allocation-tone-ops label{color:#b65a00}.allocation-tone-saving{border-color:#9cd8ab!important;background:linear-gradient(135deg,#f1fbf3,#dff5e4)!important}.allocation-tone-saving>div:first-child>b,.allocation-tone-saving>span,.allocation-tone-saving label{color:#247a3b}.allocation-percent-card .form-grid>div.allocation-tone-owner,.allocation-percent-card .form-grid>div.allocation-tone-ops,.allocation-percent-card .form-grid>div.allocation-tone-saving{padding:12px;border:1px solid;border-radius:12px}.receipt-success-panel{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px 16px;margin:12px 0 16px;border:1px solid #9bd4ae;background:#f0fbf4;border-radius:14px}.receipt-success-panel>div{display:flex;flex-direction:column;gap:3px}.receipt-success-panel span{color:#587065;font-size:13px}.receipt-success-panel form{margin:0}@media(max-width:640px){.receipt-success-panel{align-items:stretch;flex-direction:column}.receipt-success-panel .btn{width:100%}}

/* v1.10.45 Payroll visual hierarchy */
.payroll-auto-box.payroll-auto-income{background:linear-gradient(180deg,#f0fbf5 0%,#f8fffb 100%);border-color:#9bd7b6;box-shadow:0 6px 18px rgba(29,129,77,.07)}
.payroll-auto-box.payroll-auto-income>b,.payroll-auto-box.payroll-auto-income strong{color:#187548}
.payroll-auto-box.payroll-manual-fee{background:linear-gradient(180deg,#fff7ed 0%,#fffaf5 100%);border-color:#f3bd82;box-shadow:0 6px 18px rgba(218,116,25,.07)}
.payroll-auto-box.payroll-manual-fee>b,.payroll-auto-box.payroll-manual-fee strong{color:#b85d12}
.payroll-auto-box.deduction{background:linear-gradient(180deg,#fff3f3 0%,#fffafa 100%);border-color:#efaaaa;box-shadow:0 6px 18px rgba(190,52,52,.07)}
.payroll-auto-box.deduction>b,.payroll-auto-box.deduction strong{color:#b52e2e}
.payroll-auto-box.payroll-auto-income,.payroll-auto-box.payroll-manual-fee,.payroll-auto-box.deduction{border-width:1px;border-top-width:4px}

/* v1.10.46 - Operasional cash summary */
.ops-allocation-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:18px 0 10px}.ops-allocation-title span{font-size:11px;color:var(--tvl-muted)}.ops-allocation-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.allocation-tone-zakat{border-color:#b9a6e8!important;background:linear-gradient(135deg,#f8f5ff,#eee8ff)!important}.allocation-tone-zakat span,.allocation-tone-zakat strong{color:#6844a8}.tvlff-ops-account-tools-bottom{margin:14px 0 6px;padding:12px 14px;border:1px solid var(--tvl-border);border-radius:14px;background:#fff}.tvlff-ops-account-tools-bottom .tvlff-pin-change-form{bottom:calc(100% + 7px);top:auto}
@media(max-width:640px){.ops-cash-primary{display:grid!important;grid-template-columns:1fr 1fr!important}.ops-cash-primary .ops-cash-total{grid-column:1/-1!important}.ops-cash-primary .ops-cash-main,.ops-cash-primary .ops-cash-balance{grid-column:auto!important;min-width:0;padding:14px 10px}.ops-cash-primary .ops-cash-main strong,.ops-cash-primary .ops-cash-balance strong{font-size:clamp(15px,4.2vw,20px);word-break:break-word}.ops-allocation-grid{grid-template-columns:1fr 1fr!important}.tvlff-ops-account-tools-bottom{display:grid!important;grid-template-columns:1fr 1fr;gap:8px}.tvlff-ops-account-tools-bottom>span{grid-column:1/-1!important;text-align:left!important}.tvlff-ops-account-tools-bottom form,.tvlff-ops-account-tools-bottom details,.tvlff-ops-account-tools-bottom .btn{width:100%}}

/* v1.10.50 - Schedule calendar polish + PIC monthly recap */
@media(min-width:761px){
  .schedule-day small{font-size:13px!important;line-height:1.15;font-weight:900;margin-top:4px}
}
.schedule-event-card{background:#eef6ff;border:1px solid #cfe2f6!important;border-radius:11px;padding:11px 12px!important;margin:8px 0;box-shadow:0 2px 8px rgba(33,78,121,.05)}
.schedule-event-card:last-child{border:1px solid #cfe2f6!important}
.schedule-pic-monthly{margin:12px 0;padding:14px}
.schedule-pic-monthly-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}
.schedule-pic-monthly-head>div{display:flex;flex-direction:column;gap:2px}
.schedule-pic-monthly-head b{color:var(--tvl-blue2);font-size:15px}
.schedule-pic-monthly-head small{color:var(--tvl-muted);font-size:11px}
.schedule-pic-monthly-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:8px}
.schedule-pic-monthly-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 11px;border:1px solid #dbe7f3;border-radius:10px;background:#f8fbff}
.schedule-pic-monthly-item span{font-size:12px;font-weight:750;min-width:0;overflow-wrap:anywhere}
.schedule-pic-monthly-item strong{font-size:12px;color:var(--tvl-blue2);white-space:nowrap}
@media(max-width:760px){
  .schedule-day{justify-content:center!important;align-items:center!important;padding-top:0!important;gap:3px}
  .schedule-day span,.schedule-day small{width:100%;text-align:center;margin-left:auto!important;margin-right:auto!important}
  .schedule-day small{font-size:10px!important;line-height:1.05!important;margin-top:2px!important}
  .schedule-pic-monthly-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:430px){
  .schedule-day{justify-content:center!important;padding-top:0!important}
  .schedule-day small{font-size:9px!important}
  .schedule-pic-monthly-grid{grid-template-columns:1fr}
}


/* v1.10.51 - Schedule mobile precision + hide inactive PIC recap */
@media(max-width:760px){
  .schedule-calendar{padding:8px 6px!important}
  .schedule-week,.schedule-days{grid-template-columns:repeat(7,1fr)!important;column-gap:4px!important;row-gap:4px!important;width:100%!important}
  .schedule-week b{display:flex!important;align-items:center!important;justify-content:center!important;height:34px!important;padding:0!important;line-height:1!important}
  .schedule-day{box-sizing:border-box!important;width:100%!important;min-width:0!important;height:64px!important;aspect-ratio:auto!important;padding:0 1px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:4px!important;line-height:1!important}
  .schedule-day span{display:block!important;width:100%!important;margin:0!important;padding:0!important;text-align:center!important;font-size:15px!important;line-height:18px!important}
  .schedule-day small{display:block!important;width:100%!important;margin:0!important;padding:0!important;text-align:center!important;font-size:9px!important;line-height:11px!important;font-weight:850!important;white-space:nowrap!important}
  .schedule-day.empty-day{height:64px!important}
}
@media(max-width:390px){
  .schedule-calendar{padding-left:5px!important;padding-right:5px!important}
  .schedule-week,.schedule-days{column-gap:3px!important;row-gap:3px!important}
  .schedule-day,.schedule-day.empty-day{height:60px!important}
  .schedule-day span{font-size:14px!important;line-height:17px!important}
  .schedule-day small{font-size:8px!important;line-height:10px!important}
}

/* v1.10.59 — rincian paket + diskon booking Invoice */
.invoice-item-detail{margin-top:10px;padding-top:10px;border-top:1px dashed #d7e2ee}.invoice-item-detail label span{font-weight:600;color:var(--tvl-muted)}.invoice-item-detail textarea{width:100%;min-height:96px;border:1px solid #ced9e6;border-radius:9px;padding:9px 10px;background:#fff;color:var(--tvl-text);font:inherit;resize:vertical}.invoice-discount-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.invoice-discount-grid select,.invoice-discount-grid input{width:100%;min-height:41px;border:1px solid #ced9e6;border-radius:9px;padding:8px 10px;background:#fff;color:var(--tvl-text);font:inherit}.invoice-discount-preview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}.invoice-discount-preview>div,.invoice-discount-locked>div{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border:1px solid #dce5ef;border-radius:10px;background:#fbfdff}.invoice-discount-preview span,.invoice-discount-locked span{font-size:11px;color:var(--tvl-muted);font-weight:750}.invoice-discount-preview strong,.invoice-discount-locked strong{color:var(--tvl-blue2)}.invoice-discount-preview .accent{background:#eef5ff}.invoice-discount-preview .accent strong{color:#1556d8}.invoice-discount-locked{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.invoice-discount-summary strong{color:#b45309!important}
@media(max-width:640px){.invoice-discount-grid,.invoice-discount-preview,.invoice-discount-locked{grid-template-columns:1fr}.invoice-item-detail textarea{font-size:16px;min-height:110px}}

/* v1.10.60 - aksi dokumen Invoice/Kuitansi + rincian paket Schedule */
.btn.doc-download{background:#1565c0!important;border-color:#1565c0!important;color:#fff!important;box-shadow:0 2px 7px rgba(21,101,192,.18)}.btn.doc-download:hover{background:#0d47a1!important;border-color:#0d47a1!important;color:#fff!important;filter:none}
.btn.doc-print{background:#f57c00!important;border-color:#f57c00!important;color:#fff!important;box-shadow:0 2px 7px rgba(245,124,0,.18)}.btn.doc-print:hover{background:#e65100!important;border-color:#e65100!important;color:#fff!important;filter:none}
.schedule-package-list{display:grid;gap:7px;margin:3px 0 2px}.schedule-package-item{display:flex;flex-direction:column;gap:2px;padding:7px 9px;border:1px solid #d9e8f6;border-radius:8px;background:#f8fbff}.schedule-package-item>b{font-size:12px;color:var(--tvl-blue2)}.schedule-package-item>small{font-size:11px!important;line-height:1.45;color:#526579!important}.schedule-upcoming-packages{display:flex;flex-direction:column;gap:3px;max-width:48%;text-align:right}.schedule-upcoming-packages>b{font-size:12px;color:var(--tvl-blue2)}.schedule-upcoming-packages>small{font-size:10px!important;line-height:1.4;color:var(--tvl-muted)!important}
@media(max-width:640px){.schedule-upcoming-packages{max-width:100%;text-align:left;width:100%}}


/* v1.10.61 - Multiple Invoice per Event */
.invoice-group-banner{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 12px;padding:9px 12px;border:1px solid #d9e6f5;border-radius:10px;background:#f7fbff}.invoice-group-banner b{color:var(--tvl-blue2)}.invoice-group-banner span{font-size:11px;color:var(--tvl-muted)}
.event-invoice-list{display:flex;flex-direction:column;gap:8px}.event-invoice-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 11px;border:1px solid var(--tvl-border);border-radius:10px;background:#fbfdff}.event-invoice-row>div:first-child{display:flex;flex-direction:column;gap:3px;min-width:0}.event-invoice-row small{font-size:9.5px;color:var(--tvl-muted);font-weight:800;text-transform:uppercase}.event-invoice-row b{color:var(--tvl-blue2);font-size:12px}.event-invoice-row span{font-size:10.5px;color:var(--tvl-muted)}.event-invoice-row>div:last-child{display:flex;align-items:center;gap:7px;flex-shrink:0}.event-invoice-add{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}.event-invoice-add small{color:var(--tvl-muted);font-size:10.5px}
@media(max-width:520px){.event-invoice-row{align-items:flex-start;flex-direction:column}.event-invoice-row>div:last-child{width:100%;justify-content:space-between}.event-invoice-add .btn{width:100%;justify-content:center}}


/* v1.10.65 - Mobile document actions compact */
@media(max-width:640px){
  .receipt-success-panel{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;align-items:stretch!important;gap:8px!important}
  .receipt-success-panel>div{grid-column:1/-1!important;margin-bottom:2px}
  .receipt-success-panel form{width:100%!important;min-width:0!important}
  .receipt-success-panel form .btn{width:100%!important;min-width:0!important;padding-left:8px!important;padding-right:8px!important}
}
@media(max-width:430px){
  .invoice-doc-actions{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}
  .invoice-doc-actions .btn,.invoice-doc-actions form,.invoice-doc-actions form .btn{width:100%!important;min-width:0!important}
  .invoice-doc-actions .btn{padding-left:7px!important;padding-right:7px!important}
}

/* v1.10.66 - Jumlah peserta Invoice terpisah dari QTY item + mobile kuitansi */
@media(max-width:640px){
  .invoice-doc-actions .invoice-paid-note{grid-column:1/-1!important;width:100%!important;box-sizing:border-box;justify-content:flex-start;border-radius:10px!important;min-height:38px}
}

/* v1.10.69 - HPP Lainnya: QTY x Harga Satuan + Total read-only + catatan. */
.hpp-manual-card .card-body{overflow:visible}
.hpp-manual-help{display:flex;align-items:center;gap:8px 14px;flex-wrap:wrap;margin:0 0 12px;padding:10px 12px;border:1px solid #dce8f4;border-radius:11px;background:#f7fbff;color:#36526f;font-size:12px}
.hpp-manual-help b{color:#173f6b}.hpp-manual-help span{opacity:.82}
.hpp-manual-list{display:flex;flex-direction:column;gap:10px}
.hpp-manual-row{display:block;padding:11px;border:1px solid #dfe8f1;border-radius:13px;background:#fff;box-shadow:0 2px 9px rgba(20,54,89,.035)}
.hpp-manual-row.is-custom{border-style:dashed}
.hpp-manual-row label,.hpp-operational-box label{display:block;margin:0 0 5px;font-size:10px;line-height:1.2;font-weight:800;letter-spacing:.035em;text-transform:uppercase;color:#718196}
.hpp-manual-row label small,.hpp-operational-box label small{font-size:9px;font-weight:650;text-transform:none;letter-spacing:0;opacity:.78}
.hpp-manual-row input,.hpp-operational-box input{width:100%;min-width:0;box-sizing:border-box;min-height:40px}
.hpp-manual-name{margin-bottom:9px}.hpp-manual-name b{display:flex;align-items:center;min-height:40px;padding:8px 10px;border:1px solid #d5e0eb;border-radius:9px;background:#f8fbfe;color:#173f6b;font-size:13px;box-sizing:border-box}
.hpp-manual-metrics,.hpp-operational-editor-metrics{display:grid;grid-template-columns:72px minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:end}
.hpp-metric-qty input{text-align:center;font-weight:800}.hpp-metric-total input{font-size:14px;padding-left:9px;padding-right:9px}
.hpp-manual-total{font-weight:850!important;color:#176b55!important;background:#f1fbf7!important;border-color:#cae9df!important;cursor:default}
.hpp-manual-note{margin-top:9px}.hpp-manual-note input{font-size:13px}
.hpp-manual-remove{margin-top:8px;min-height:36px;white-space:nowrap}.hpp-manual-row-spacer{display:none}
.hpp-manual-add{align-self:flex-start;margin-top:2px}
/* Warna lembut per kategori HPP agar daftar panjang lebih mudah dipindai. */
.hpp-manual-row.hpp-tone-blue{background:#f3f8ff;border-color:#c9dcf4;box-shadow:inset 4px 0 #79a9df,0 2px 9px rgba(20,54,89,.035)}
.hpp-manual-row.hpp-tone-green{background:#f2fbf6;border-color:#c8ead6;box-shadow:inset 4px 0 #67b989,0 2px 9px rgba(20,54,89,.035)}
.hpp-manual-row.hpp-tone-orange{background:#fff8ef;border-color:#f0d8b8;box-shadow:inset 4px 0 #e4a45a,0 2px 9px rgba(20,54,89,.035)}
.hpp-manual-row.hpp-tone-purple{background:#faf5ff;border-color:#ddccef;box-shadow:inset 4px 0 #9a78c5,0 2px 9px rgba(20,54,89,.035)}
.hpp-manual-row.hpp-tone-teal{background:#f0fbfb;border-color:#c5e7e5;box-shadow:inset 4px 0 #55aaa5,0 2px 9px rgba(20,54,89,.035)}
.hpp-manual-row.hpp-tone-slate{background:#f6f8fb;border-color:#d5deea;box-shadow:inset 4px 0 #879bb2,0 2px 9px rgba(20,54,89,.035)}
.hpp-manual-row.hpp-tone-yellow{background:#fffbea;border-color:#eadc9d;box-shadow:inset 4px 0 #d6ae35,0 2px 9px rgba(20,54,89,.035)}
.hpp-manual-name b small{display:block;font-size:9px;font-weight:700;line-height:1.15;color:#718196}
.hpp-manual-add-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px}
/* v1.10.78: Biaya Operasional menjadi satu kotak khusus dengan rincian tersimpan + editor kosong. */
.hpp-operational-box{padding:13px;border:1px solid #e4cf70;border-radius:15px;background:#fff9df;box-shadow:inset 5px 0 #d6ae35,0 3px 12px rgba(95,73,10,.06)}
.hpp-operational-box-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:11px}.hpp-operational-kicker{font-size:9px;font-weight:900;letter-spacing:.08em;color:#9b7b16}.hpp-operational-box-head h4{margin:2px 0 3px;color:#644e0d;font-size:17px}.hpp-operational-box-head p{margin:0;max-width:560px;color:#7b6a37;font-size:11px;line-height:1.45}.hpp-operational-box-total{min-width:128px;padding:8px 11px;border:1px solid #dfcf83;border-radius:11px;background:#fff3b9;text-align:right}.hpp-operational-box-total span{display:block;font-size:9px;font-weight:800;text-transform:uppercase;color:#8b7120}.hpp-operational-box-total b{display:block;margin-top:2px;font-size:17px;color:#58450d}
.hpp-operational-saved-list{display:flex;flex-direction:column;gap:7px;margin-bottom:11px}.hpp-operational-empty{padding:10px;border:1px dashed #ddc978;border-radius:10px;background:rgba(255,255,255,.55);color:#8a7740;font-size:11px;text-align:center}
.hpp-operational-saved-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:9px 10px;border:1px solid #e5d58f;border-radius:11px;background:#fffef8}.hpp-operational-saved-main{min-width:0}.hpp-operational-saved-main b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#5f4b11;font-size:12px}.hpp-operational-saved-main span{display:block;margin-top:2px;color:#857342;font-size:10px}.hpp-operational-saved-main i{font-style:normal}.hpp-operational-saved-row>strong{white-space:nowrap;color:#5b4710;font-size:13px}.hpp-operational-saved-actions{display:flex;gap:5px}.hpp-operational-saved-actions .btn{min-height:31px;padding:5px 8px;font-size:10px}
.hpp-operational-editor{padding:11px;border:1px solid #e2cf7a;border-radius:12px;background:#fff}.hpp-operational-editor.is-editing{outline:2px solid rgba(226,158,34,.22)}.hpp-operational-editor-title{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-bottom:9px}.hpp-operational-editor-title>b{color:#644e0d;font-size:12px}.hpp-operational-description{margin-bottom:9px}.hpp-operational-editor-actions{display:flex;align-items:center;gap:7px;margin-top:10px;flex-wrap:wrap}.hpp-operational-editor-actions .btn.orange{min-height:40px}.hpp-operational-save-note{display:block;margin-top:7px;color:#8a7740;font-size:9.5px;line-height:1.4}
@media(max-width:680px){
  .hpp-manual-help{align-items:flex-start;flex-direction:column;gap:2px}
  .hpp-manual-row{padding:10px}
  .hpp-manual-metrics,.hpp-operational-editor-metrics{grid-template-columns:64px minmax(0,1fr) minmax(0,1fr);gap:6px}
  .hpp-manual-metrics input,.hpp-operational-editor-metrics input{min-height:42px;font-size:14px;padding-left:7px;padding-right:7px}
  .hpp-metric-qty input{font-size:16px!important}.hpp-metric-total input{font-size:12px!important}
  .hpp-manual-add{width:100%}.hpp-manual-add-actions{display:grid;grid-template-columns:1fr;gap:7px;width:100%}
  .hpp-operational-box{padding:10px}.hpp-operational-box-head{align-items:stretch;flex-direction:column;gap:7px}.hpp-operational-box-total{display:flex;align-items:center;justify-content:space-between;min-width:0;text-align:left;padding:8px 10px}.hpp-operational-box-total b{font-size:15px;margin:0}
  .hpp-operational-saved-row{grid-template-columns:minmax(0,1fr) auto;gap:7px}.hpp-operational-saved-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr}.hpp-operational-saved-actions .btn{width:100%}
  .hpp-operational-editor-title{align-items:stretch;flex-direction:column}.hpp-operational-editor-title .btn{width:100%}
  .hpp-operational-editor-actions{display:grid;grid-template-columns:1fr 1fr}.hpp-operational-editor-actions .btn{width:100%}.hpp-operational-editor-actions .btn.orange:first-child:last-child{grid-column:1/-1}
  .hpp-manual-name b,.hpp-manual-row input,.hpp-operational-box input{min-height:42px}
}

/* v1.10.71 - Link HPP PIC freelance per Event + public mobile-first form */
.hpp-owner-pic-list{margin-top:14px}.hpp-owner-list-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.hpp-owner-list-head h3{margin:0 0 4px}.hpp-owner-list-head p{margin:0;color:var(--tvl-muted);font-size:12px;line-height:1.5}.hpp-owner-event-list{display:flex;flex-direction:column;gap:9px}.hpp-owner-event-card{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px;border:1px solid var(--tvl-border);border-radius:12px;background:#fbfdff}.hpp-owner-event-main{min-width:0;display:flex;flex-direction:column;gap:5px}.hpp-owner-event-title{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.hpp-owner-event-title b{color:var(--tvl-blue2);font-size:14px}.hpp-owner-event-title span{font-size:10px;font-weight:800;color:var(--tvl-muted)}.hpp-owner-event-meta{display:flex;gap:6px;flex-wrap:wrap}.hpp-owner-event-meta span{font-size:10px;padding:4px 7px;border:1px solid #dce6f0;border-radius:999px;background:#fff;color:#526579}.hpp-owner-last-pic{font-size:10.5px;color:#617387}.hpp-owner-link-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap;flex-shrink:0}.hpp-owner-link-actions form{margin:0}.hpp-owner-copy-input{position:absolute!important;left:-99999px!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
.hpp-pic-link-panel{border-color:#cfe0f3;background:linear-gradient(135deg,#f8fbff,#fff)}.hpp-pic-link-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.hpp-pic-link-head .eyebrow{display:block;font-size:9px;font-weight:900;letter-spacing:.13em;color:#4d78a8;margin-bottom:3px}.hpp-pic-link-head h3{margin:0 0 5px}.hpp-pic-link-head p{margin:0;color:var(--tvl-muted);font-size:12px;line-height:1.5}.hpp-pic-url-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:13px}.hpp-pic-url-row input{width:100%;min-width:0;height:42px;border:1px solid #ccd9e7;border-radius:10px;padding:8px 10px;background:#fff;font:inherit;font-size:12px;color:#526579}.hpp-pic-link-buttons{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px}.hpp-pic-link-buttons form{margin:0}.hpp-pic-last-editor{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:7px;margin-top:12px;padding:9px 11px;border:1px solid #dce8f4;border-radius:10px;background:#fff}.hpp-pic-last-editor span,.hpp-pic-last-editor small{font-size:10.5px;color:var(--tvl-muted)}.hpp-pic-last-editor b{font-size:12px;color:var(--tvl-blue2)}.hpp-pic-create-form{margin-top:12px}
.tvlff-public-hpp-wrap{max-width:760px!important;margin:0 auto!important;padding:0 12px 36px!important}.tvlff-public-hpp{width:100%;padding-top:14px}.public-hpp-header{display:flex;align-items:center;gap:16px;padding:18px 18px;margin-bottom:12px;border-radius:18px;background:linear-gradient(135deg,#0c2d5b,#174d87);color:#fff;box-shadow:0 10px 30px rgba(12,45,91,.18)}.public-hpp-brand{display:flex;align-items:baseline;white-space:nowrap;font-size:22px;font-weight:900;letter-spacing:-.7px}.public-hpp-brand span{color:#fff}.public-hpp-brand b{color:#f4c542}.public-hpp-header>div:last-child{padding-left:16px;border-left:1px solid rgba(255,255,255,.22)}.public-hpp-kicker{font-size:9px;font-weight:900;letter-spacing:.14em;color:#d9e8fb}.public-hpp-header h1{margin:3px 0 2px;font-size:23px;line-height:1.1;color:#fff}.public-hpp-header p{margin:0;font-size:11.5px;color:#dce8f6}.public-hpp-event{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.public-hpp-event>div{display:flex;flex-direction:column;gap:3px;padding:11px 12px;border:1px solid #dfe7f0;border-radius:12px;background:#fff;min-width:0}.public-hpp-event span{font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.04em;color:#7b8798}.public-hpp-event b{font-size:12.5px;color:var(--tvl-blue2);overflow-wrap:anywhere}.public-hpp-event-package{grid-column:1/-1}.public-hpp-security-note{display:flex;align-items:flex-start;gap:7px 12px;flex-wrap:wrap;padding:10px 12px;margin:10px 0 12px;border:1px solid #d7e8dd;border-radius:11px;background:#f3fbf6;font-size:11px;color:#4e6858}.public-hpp-security-note b{color:#26704a}.public-hpp-pic-card{display:flex;flex-direction:column;gap:5px;padding:14px;margin:12px 0;border:2px solid #cfdff1;border-radius:14px;background:#f8fbff}.public-hpp-pic-card label{font-size:12px;font-weight:850;color:var(--tvl-blue2)}.public-hpp-pic-card label em{font-style:normal;color:var(--tvl-red)}.public-hpp-pic-card input{width:100%;height:46px;border:1px solid #bfcfe0;border-radius:10px;padding:9px 11px;background:#fff;font:inherit;font-size:16px;color:var(--tvl-text)}.public-hpp-pic-card small{font-size:10px;color:var(--tvl-muted)}.public-hpp-section{padding:14px;margin:11px 0}.public-hpp-section-head{display:flex;align-items:center;gap:10px;margin-bottom:11px}.public-hpp-section-head>span{width:28px;height:28px;flex:0 0 28px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--tvl-blue);color:#fff;font-size:12px;font-weight:900}.public-hpp-section-head h2{margin:0;font-size:16px;color:var(--tvl-blue2)}.public-hpp-section-head p{margin:2px 0 0;font-size:10.5px;color:var(--tvl-muted)}.public-hpp-form fieldset{border:0;padding:0;margin:0}.public-hpp-form .activity-name-cell small{display:block;margin-top:2px;color:var(--tvl-muted);font-size:9px;font-weight:650}.public-hpp-save{position:sticky;bottom:0;z-index:12;display:flex;align-items:center;gap:12px;padding:11px 12px;margin:15px -2px 0;border:1px solid #d7e2ee;border-radius:14px;background:rgba(255,255,255,.96);box-shadow:0 -6px 20px rgba(20,54,89,.08);backdrop-filter:blur(8px)}.public-hpp-save .btn{flex:1;min-height:48px;font-size:14px}.public-hpp-save small{max-width:230px;color:var(--tvl-muted);font-size:10px;line-height:1.35}.public-hpp-footer{text-align:center;padding:20px 8px 4px;color:#8995a5;font-size:10px}.public-hpp-invalid{text-align:center;padding:34px 20px;margin:18px 0;border:1px solid #dfe6ef;border-radius:16px;background:#fff}.public-hpp-invalid-icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;margin:0 auto 10px;border-radius:50%;background:#fff2ef;color:#b4392b;font-size:24px;font-weight:900}.public-hpp-invalid h2{margin:0 0 6px;color:var(--tvl-blue2)}.public-hpp-invalid p{margin:0;color:var(--tvl-muted);font-size:12px;line-height:1.55}
@media(max-width:680px){
  .hpp-owner-list-head{align-items:flex-start}.hpp-owner-event-card{align-items:flex-start;flex-direction:column}.hpp-owner-link-actions{display:grid;grid-template-columns:1fr 1fr;width:100%;justify-content:stretch}.hpp-owner-link-actions>.btn,.hpp-owner-link-actions>button,.hpp-owner-link-actions>form,.hpp-owner-link-actions form .btn,.hpp-owner-link-actions>.status-badge{width:100%}.hpp-owner-link-actions>.status-badge{display:flex;align-items:center;justify-content:center;min-height:34px}.hpp-pic-link-head{flex-direction:column}.hpp-pic-url-row{grid-template-columns:1fr}.hpp-pic-url-row .btn{width:100%}.hpp-pic-link-buttons{display:grid;grid-template-columns:1fr 1fr}.hpp-pic-link-buttons form,.hpp-pic-link-buttons .btn{width:100%}.hpp-pic-last-editor{grid-template-columns:1fr}.tvlff-public-hpp-wrap{padding-left:8px!important;padding-right:8px!important}.tvlff-public-hpp{padding-top:8px}.public-hpp-header{align-items:flex-start;flex-direction:column;gap:7px;padding:15px;border-radius:14px}.public-hpp-brand{font-size:20px}.public-hpp-header>div:last-child{padding-left:0;border-left:0}.public-hpp-header h1{font-size:21px}.public-hpp-event{grid-template-columns:1fr 1fr;gap:6px}.public-hpp-event>div{padding:9px}.public-hpp-section{padding:11px}.public-hpp-form .activity-hpp-table-wrap{overflow:visible}.public-hpp-form .activity-entry-table{min-width:0;width:100%;display:block}.public-hpp-form .activity-entry-table thead{display:none}.public-hpp-form .activity-entry-table tbody{display:flex;flex-direction:column;gap:7px}.public-hpp-form .activity-entry-table tr{display:grid;grid-template-columns:minmax(0,1.2fr) 78px minmax(94px,.8fr);align-items:center;gap:7px;padding:9px;border:1px solid #e0e7ef;border-radius:11px;background:#fff}.public-hpp-form .activity-entry-table td{display:block!important;border:0!important;padding:0!important;min-width:0}.public-hpp-form .activity-entry-table .activity-name-cell b{font-size:11.5px}.public-hpp-form .activity-entry-table .activity-qty-input{min-height:42px;font-size:16px;padding:7px;text-align:center}.public-hpp-form .activity-live-price-cell{text-align:right!important;font-size:11px}.public-hpp-save{display:flex;flex-direction:column;align-items:stretch;gap:5px;margin-left:0;margin-right:0;padding:9px}.public-hpp-save small{max-width:none;text-align:center}.public-hpp-save .btn{width:100%;min-height:50px}.public-hpp-pic-card{padding:12px}.public-hpp-form .hpp-manual-row input{font-size:16px}
}
@media(max-width:390px){.hpp-owner-link-actions,.hpp-pic-link-buttons{grid-template-columns:1fr}.public-hpp-event{grid-template-columns:1fr}.public-hpp-event-package{grid-column:auto}.public-hpp-form .activity-entry-table tr{grid-template-columns:minmax(0,1fr) 70px}.public-hpp-form .activity-live-price-cell{grid-column:1/-1;text-align:left!important;padding-top:2px!important;border-top:1px dashed #e2e8ef!important}.public-hpp-header{padding:13px}.public-hpp-section-head h2{font-size:15px}}

/* v1.10.73 — Pusat Pembayaran Vendor */
.vendor-overview-filter{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(180px,.7fr) auto;gap:10px;align-items:end;background:#fff;border:1px solid var(--tvl-border);border-radius:13px;padding:12px;margin:12px 0}.vendor-overview-filter label{display:block;font-size:11px;font-weight:800;color:#526579;margin-bottom:5px}.vendor-overview-filter input,.vendor-overview-filter select{width:100%;min-height:42px;border:1px solid #ccd7e5;border-radius:10px;padding:9px 11px;background:#fff;color:var(--tvl-text);font:inherit}.vendor-overview-event{border:1px solid var(--tvl-border);border-radius:13px;background:#fff;margin:10px 0;overflow:hidden}.vendor-overview-event>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 14px}.vendor-overview-event>summary::-webkit-details-marker{display:none}.vendor-overview-event>summary>div{display:flex;flex-direction:column;gap:3px;min-width:0}.vendor-overview-event>summary>div:last-child{align-items:flex-end}.vendor-overview-event>summary b{color:var(--tvl-blue2);overflow-wrap:anywhere}.vendor-overview-event>summary small{font-size:10px;color:var(--tvl-muted)}.vendor-overview-event>summary strong{font-size:12px;color:var(--tvl-blue2)}.vendor-overview-event[open]>summary{background:#f8fafc;border-bottom:1px solid var(--tvl-border)}.vendor-overview-event-head{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:8px;align-items:stretch;padding:12px 12px 2px}.vendor-overview-event-head>div{border:1px solid var(--tvl-border);border-radius:10px;padding:9px 10px;display:flex;flex-direction:column;gap:3px}.vendor-overview-event-head span{font-size:9px;font-weight:800;color:var(--tvl-muted)}.vendor-overview-event-head b{font-size:12px;color:var(--tvl-blue2)}.vendor-overview-event-head>.btn{align-self:stretch}.vendor-overview-table td,.vendor-history-table td{vertical-align:middle}.vendor-detail-hero{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid var(--tvl-border);background:#fff;border-radius:14px;padding:15px 16px;margin:12px 0}.vendor-detail-title{min-width:0}.vendor-detail-title>span{display:block;font-size:9px;font-weight:850;letter-spacing:.08em;color:var(--tvl-muted)}.vendor-detail-title h3{margin:3px 0 2px;font-size:18px;color:var(--tvl-blue2);overflow-wrap:anywhere}.vendor-detail-title small{font-size:10px;color:var(--tvl-muted)}.vendor-detail-summary{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:13px}.vendor-pay-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.vendor-pay-grid label{display:block;font-size:11px;font-weight:800;color:#526579;margin-bottom:5px}.vendor-pay-grid input{width:100%;min-height:42px;border:1px solid #ccd7e5;border-radius:10px;padding:9px 11px;background:#fff;color:var(--tvl-text);font:inherit}.vendor-pay-grid small{font-size:9px;color:var(--tvl-muted)}.vendor-pay-submit{margin-top:10px;min-width:160px}.finance-vendor-pay .vendor-quick-pay-main b{display:block;color:var(--tvl-blue2);margin-top:4px}.vendor-payment-history-card .table-wrap{margin-top:4px}
@media(max-width:760px){.vendor-overview-filter{grid-template-columns:1fr 1fr}.vendor-overview-filter>button{grid-column:1/-1}.vendor-overview-event-head{grid-template-columns:1fr 1fr}.vendor-overview-event-head>.btn{grid-column:1/-1}.vendor-detail-summary{grid-template-columns:1fr 1fr}.vendor-pay-grid{grid-template-columns:1fr}.vendor-pay-submit{width:100%}}
@media(max-width:430px){.vendor-overview-filter{grid-template-columns:1fr}.vendor-overview-filter>button{grid-column:auto}.vendor-overview-event>summary{align-items:flex-start;flex-direction:column}.vendor-overview-event>summary>div:last-child{align-items:flex-start;width:100%;flex-direction:row;justify-content:space-between}.vendor-overview-event-head{grid-template-columns:1fr 1fr}.vendor-detail-hero{align-items:flex-start;flex-direction:column}.vendor-detail-summary{grid-template-columns:1fr 1fr}.vendor-action-toolbar .btn{flex:1 1 calc(50% - 8px);font-size:10px;padding:8px}.vendor-action-toolbar span{width:100%}}


/* v1.10.74 — Vendor hanya Event berjalan + Rekap Pembayaran per Aktivitas */
.vendor-date-rule{margin:10px 0 12px}.vendor-activity-recap-card{margin-top:14px}.vendor-activity-recap-intro{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:11px 12px;margin:2px 0 10px;border:1px solid #dbe6f1;border-radius:12px;background:#f8fbff}.vendor-activity-recap-intro>div{display:flex;flex-direction:column;gap:3px;min-width:0}.vendor-activity-recap-intro b{color:var(--tvl-blue2)}.vendor-activity-recap-intro span{font-size:10px;line-height:1.45;color:var(--tvl-muted)}.vendor-activity-recap-intro>strong{flex:0 0 auto;color:var(--tvl-blue2);font-size:13px}.vendor-activity-recap-list{display:flex;flex-direction:column;gap:8px}.vendor-activity-recap-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(145px,.55fr) minmax(140px,auto);gap:10px;align-items:center;padding:11px;border:1px solid var(--tvl-border);border-radius:12px;background:#fff}.vendor-activity-recap-row>div:not(.vendor-activity-recap-name):not(.vendor-bulk-paid){display:flex;flex-direction:column;gap:2px}.vendor-activity-recap-row span{font-size:9px;font-weight:800;color:var(--tvl-muted)}.vendor-activity-recap-row b{font-size:12px;color:var(--tvl-blue2)}.vendor-activity-recap-name{display:flex;flex-direction:column;gap:3px;min-width:0}.vendor-activity-recap-name>b{font-size:13px;overflow-wrap:anywhere}.vendor-activity-recap-name small{font-size:9.5px;color:var(--tvl-muted)}.vendor-activity-recap-remain{padding:8px 10px;border-radius:9px;background:#fff7ed}.vendor-activity-recap-remain b{font-size:14px;color:#b45309}.vendor-bulk-pay-form{margin:0}.vendor-bulk-pay-form .btn{width:100%;white-space:nowrap}.vendor-bulk-paid{display:flex;align-items:center;justify-content:center;min-height:36px;padding:7px 10px;border-radius:9px;background:#eefbf3;color:#24704a;font-size:11px;font-weight:850}.vendor-future-event-note{display:flex!important;flex-direction:column;align-items:flex-start;gap:7px}.vendor-future-event-note span{color:var(--tvl-muted);font-size:11px;line-height:1.5}
@media(max-width:760px){.vendor-activity-recap-row{grid-template-columns:minmax(0,1fr) minmax(130px,.72fr)}.vendor-bulk-pay-form,.vendor-bulk-paid{grid-column:1/-1}}
@media(max-width:640px){.vendor-activity-recap-intro{align-items:flex-start;flex-direction:column}.vendor-activity-recap-intro>strong{font-size:15px}.vendor-activity-recap-row{grid-template-columns:1fr 1fr;gap:7px;padding:10px}.vendor-activity-recap-name{min-width:0}.vendor-activity-recap-remain{padding:8px}.vendor-bulk-pay-form,.vendor-bulk-paid{grid-column:1/-1}.vendor-bulk-pay-form .btn{min-height:42px}}
@media(max-width:380px){.vendor-activity-recap-row{grid-template-columns:1fr}.vendor-activity-recap-remain,.vendor-bulk-pay-form,.vendor-bulk-paid{grid-column:1}.vendor-bulk-pay-form .btn{width:100%}}

/* v1.10.79 — Simpan Biaya Operasional via AJAX + token PIC fokus Aktivitas & Operasional. */
.hpp-operational-inline-status{display:inline-flex;align-items:center;min-height:22px;font-size:10px;font-weight:800;color:#7d6a35;transition:opacity .15s ease}
.hpp-operational-inline-status.ok{color:#24704a}.hpp-operational-inline-status.error{color:#b42318}.hpp-operational-inline-status.busy{color:#8b6b12}
[data-save-operational-hpp].is-loading{opacity:.78;cursor:wait}
.public-hpp-operational-only .hpp-operational-box{margin:0}
.public-hpp-operational-only .hpp-operational-save-note{font-size:10px}
@media(max-width:680px){.hpp-operational-inline-status{grid-column:1/-1;justify-content:center}.public-hpp-operational-only{padding-left:10px!important;padding-right:10px!important}}

/* v1.10.81 - pembeda visual card besar Pembuatan Invoice */
.invoice-form .invoice-section{border-width:1px}
.invoice-form .invoice-section:nth-of-type(1){background:#f4f8ff;border-color:#d9e7fb}
.invoice-form .invoice-section:nth-of-type(2){background:#f7fbf8;border-color:#dceee2}
.invoice-form .invoice-internal-meta{background:#fffaf0!important;border-color:#f1dfb8!important}
.invoice-form .invoice-section:nth-of-type(4){background:#f8f7fc;border-color:#e5e0f2}
.invoice-form .invoice-section:nth-of-type(5){background:#fbf8f5;border-color:#eee1d5}
\n\n/* v1.10.82 — pembatas visual card seluruh aplikasi + shortcut pembayaran vendor */\n.tvlff-app{background:#f5f7fa}\n.tvlff-app .card{background:#f8fbff;border-color:#dce6f1;box-shadow:0 3px 14px rgba(32,58,85,.045)}\n.tvlff-app .card:nth-of-type(4n+2){background:#f8fcf9;border-color:#dcebe2}\n.tvlff-app .card:nth-of-type(4n+3){background:#fffaf3;border-color:#eee1c8}\n.tvlff-app .card:nth-of-type(4n){background:#faf8fd;border-color:#e6e0ef}\n.tvlff-app .card input,.tvlff-app .card select,.tvlff-app .card textarea{background:#fff}\n.tvlff-app .card>h3{padding-bottom:8px;border-bottom:1px solid rgba(88,112,136,.13)}\n.vendor-overview-quick-actions{display:flex;align-items:center;gap:10px;justify-content:space-between;margin:10px 0 12px;padding:11px 12px;border:1px solid #ead8b2;border-radius:12px;background:#fffaf0}\n.vendor-overview-quick-actions span{font-size:10px;line-height:1.45;color:var(--tvl-muted)}\n@media(max-width:640px){.vendor-overview-quick-actions{align-items:stretch;flex-direction:column}.vendor-overview-quick-actions .btn{width:100%;min-height:44px}.vendor-overview-quick-actions span{text-align:center}}\n
/* v1.10.83 — mobile-first card DP Vendor: satu HPP, banyak transaksi */
.vendor-dp-card-list{display:flex;flex-direction:column;gap:12px}.vendor-dp-item-card{border:1px solid #d8e5ef;border-radius:14px;background:#f8fbff;padding:13px}.vendor-dp-item-card:nth-child(4n+2){background:#f7fcf8;border-color:#d8eadf}.vendor-dp-item-card:nth-child(4n+3){background:#fffaf2;border-color:#ecdfc4}.vendor-dp-item-card:nth-child(4n){background:#faf8fd;border-color:#e4deee}.vendor-dp-item-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.vendor-dp-item-head span{display:block;font-size:9px;font-weight:850;color:var(--tvl-muted);letter-spacing:.04em}.vendor-dp-item-head h4{margin:2px 0;font-size:15px;color:var(--tvl-blue2)}.vendor-dp-item-head small{font-size:10px;color:var(--tvl-muted)}.vendor-dp-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:11px 0}.vendor-dp-summary>div{background:#fff;border:1px solid rgba(130,151,172,.22);border-radius:10px;padding:9px}.vendor-dp-summary span{display:block;font-size:9px;font-weight:800;color:var(--tvl-muted);margin-bottom:3px}.vendor-dp-summary b{font-size:12px;color:var(--tvl-blue2)}.vendor-dp-history{display:flex;flex-direction:column;gap:7px}.vendor-dp-history-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;background:#fff;border:1px solid rgba(130,151,172,.2);border-radius:10px;padding:9px}.vendor-dp-history-row>div:first-child{display:flex;flex-direction:column;gap:2px}.vendor-dp-history-row small{font-size:9px;color:var(--tvl-muted)}.vendor-dp-history-row strong{font-size:12px;color:var(--tvl-blue2)}.vendor-dp-history-actions{display:flex;gap:5px;align-items:center}.vendor-dp-history-actions form{margin:0}.vendor-dp-entry-card{background:#fffaf3!important;border-color:#eadfc8!important}
@media(max-width:640px){.tvlff-app{background:#f3f6f9}.tvlff-app .card{border-radius:14px;margin-bottom:12px;box-shadow:0 2px 10px rgba(32,58,85,.04)}.vendor-dp-item-card{padding:11px}.vendor-dp-item-head{align-items:flex-start;flex-direction:column}.vendor-dp-summary{grid-template-columns:1fr 1fr}.vendor-dp-summary>div:first-child{grid-column:1/-1}.vendor-dp-history-row{grid-template-columns:minmax(0,1fr) auto}.vendor-dp-history-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.vendor-dp-history-actions .btn,.vendor-dp-history-actions form,.vendor-dp-history-actions form .btn{width:100%;min-height:34px;padding:6px 7px;font-size:10px}.vendor-dp-entry-card .form-grid{grid-template-columns:1fr}.vendor-dp-entry-card .span-2{grid-column:1}.vendor-dp-entry-card .btn.primary{width:100%;min-height:44px}}

/* v1.10.102 — Quotation PDF layout polish */
.quotation-optional-row{display:grid;grid-template-columns:minmax(150px,1.2fr) minmax(120px,.7fr) minmax(110px,.6fr) minmax(180px,1.2fr) auto auto;gap:9px;align-items:end;padding:11px;margin:9px 0;border:1px solid #dce5ef;border-radius:14px;background:#fbfdff}.quotation-optional-row label{display:block;font-size:9px;font-weight:850;color:#475569;margin-bottom:4px}.quotation-optional-check{display:flex!important;align-items:center;gap:6px;min-height:42px;margin:0!important;padding:0 4px;font-size:9px!important;white-space:nowrap}.quotation-optional-check input[type=checkbox]{width:18px;height:18px;flex:0 0 18px}.quotation-optional-desc{min-width:0}.quotation-terms-textarea{min-height:260px!important}
@media(max-width:900px){.quotation-optional-row{grid-template-columns:1fr 1fr}.quotation-optional-desc{grid-column:1/-1}.quotation-optional-check{grid-column:1/-1}.quotation-optional-row>.btn{width:100%}}
@media(max-width:520px){.quotation-optional-row{grid-template-columns:1fr}.quotation-optional-desc,.quotation-optional-check{grid-column:auto}.quotation-optional-row input{font-size:16px}.quotation-optional-row>.btn{min-height:42px}.quotation-terms-textarea{min-height:330px!important}}
.public-hpp-event-packages,.public-hpp-event-note{grid-column:1/-1}.public-hpp-event-packages .public-hpp-package-line{display:flex;flex-direction:column;gap:2px;padding:5px 0;border-bottom:1px dashed #e1e7ee}.public-hpp-event-packages .public-hpp-package-line:last-child{border-bottom:0}.public-hpp-event-packages .public-hpp-package-line b{font-size:12px}.public-hpp-event-packages .public-hpp-package-line small{font-size:10px;color:#66758a;line-height:1.45}.public-hpp-event-note b{font-weight:650;line-height:1.5;color:#34485e}

/* v1.10.103 — Secure Document Verification / Document Center */
.document-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:12px 0 16px}.document-kpis>div{padding:13px 14px;border:1px solid #dbe6f0;border-radius:14px;background:#fff;box-shadow:0 3px 14px rgba(32,58,85,.045)}.document-kpis span{display:block;font-size:9px;font-weight:850;letter-spacing:.04em;text-transform:uppercase;color:var(--tvl-muted);margin-bottom:5px}.document-kpis strong{display:block;font-size:22px;line-height:1;color:var(--tvl-blue2)}
.document-toolbar{gap:10px;align-items:center}.document-sync-form{margin:0 0 0 auto;flex:0 0 auto}.document-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.document-card{margin:0!important;min-width:0}.document-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:11px;border-bottom:1px solid rgba(88,112,136,.13)}.document-card-head>div{display:flex;flex-direction:column;gap:3px;min-width:0}.document-card-head b{font-size:14px;color:var(--tvl-blue2);overflow-wrap:anywhere}.document-card-head small{font-size:9.5px;color:var(--tvl-muted);overflow-wrap:anywhere}.document-status{display:inline-flex;align-items:center;justify-content:center;min-width:74px;padding:6px 9px;border-radius:999px;font-size:9px;font-weight:900;letter-spacing:.035em}.document-status.valid{background:#e9f8ef;color:#167247;border:1px solid #bde8ce}.document-status.superseded{background:#fff5df;color:#99620a;border:1px solid #f1d492}.document-status.expired{background:#eef2f6;color:#586575;border:1px solid #d9e0e7}.document-status.revoked{background:#fff0f0;color:#b42318;border:1px solid #f1c6c3}
.document-card-body{display:grid;grid-template-columns:112px minmax(0,1fr);gap:13px;align-items:start;padding:13px 0}.document-qr{display:block;width:112px;height:112px;object-fit:contain;background:#fff;border:1px solid #d9e2ec;border-radius:12px;padding:5px}.document-meta{display:grid;grid-template-columns:1fr 1fr;gap:7px}.document-meta>div{min-width:0;padding:8px 9px;border:1px solid rgba(130,151,172,.18);border-radius:10px;background:#fff}.document-meta span{display:block;font-size:8.5px;font-weight:850;color:var(--tvl-muted);margin-bottom:3px}.document-meta strong{display:block;font-size:10.5px;color:var(--tvl-blue2);overflow-wrap:anywhere}.document-link-row{display:flex;align-items:center;gap:7px;padding-top:10px;border-top:1px solid rgba(88,112,136,.11)}.document-link-row input{min-width:0;flex:1;font-size:10px;background:#fff}.document-revoke{margin-top:9px;border:1px solid #f0d4d1;border-radius:10px;background:#fff8f7;padding:8px 10px}.document-revoke summary{cursor:pointer;color:#a7372d;font-size:10px;font-weight:850}.document-revoke form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:end;margin-top:8px}.document-revoke label{grid-column:1/-1;font-size:9px;font-weight:800;color:var(--tvl-muted)}.document-revoke input{min-width:0}.source-note{margin-top:14px;padding:11px 13px;border:1px solid #dbe6f0;border-radius:12px;background:#f7fbff;font-size:10px;line-height:1.55;color:#56677a}.source-note b{color:var(--tvl-blue2)}
@media(max-width:980px){.document-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.document-list{grid-template-columns:1fr}.document-toolbar{align-items:stretch;flex-direction:column}.document-sync-form{margin:0;width:100%}.document-sync-form .btn{width:100%}}
@media(max-width:620px){.document-kpis{grid-template-columns:1fr 1fr;gap:7px}.document-kpis>div:first-child{grid-column:1/-1}.document-kpis>div{padding:11px}.document-card-body{grid-template-columns:88px minmax(0,1fr);gap:9px}.document-qr{width:88px;height:88px}.document-meta{grid-template-columns:1fr}.document-link-row{align-items:stretch;flex-direction:column}.document-link-row .btn{width:100%;min-height:40px}.document-revoke form{grid-template-columns:1fr}.document-revoke label{grid-column:auto}.document-revoke .btn{width:100%;min-height:40px}.document-status{min-width:65px;padding:5px 7px}}


/* v1.10.104 — Document Verification UI & Security Polish */
.document-filter{display:grid!important;grid-template-columns:minmax(210px,1.35fr) minmax(140px,.7fr) minmax(140px,.7fr) auto;gap:8px;align-items:center;flex:1}.document-result-summary{margin:-5px 0 12px;color:var(--tvl-muted);font-size:10px}.document-card-actions{display:grid;grid-template-columns:auto auto 1fr;gap:7px;padding-top:10px;border-top:1px solid rgba(88,112,136,.11)}.document-card-actions .btn:last-child{justify-self:end}.document-detail-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 12px}.document-detail-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(135deg,#f8fbfe,#fff);border-color:#d7e4ef!important}.document-detail-hero h2{margin:10px 0 4px;font-size:22px;color:var(--tvl-blue2)}.document-detail-hero p{margin:0;color:var(--tvl-muted)}.document-detail-qr{width:160px;height:160px;object-fit:contain;background:#fff;border:1px solid #d8e3ec;border-radius:14px;padding:7px}.document-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.document-detail-grid>.card{margin:0!important}.document-detail-meta{display:grid;gap:8px}.document-detail-meta>div{display:grid;grid-template-columns:135px minmax(0,1fr) auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px dashed #e0e7ed}.document-detail-meta>div:last-child{border-bottom:0}.document-detail-meta span{font-size:9px;font-weight:850;color:var(--tvl-muted)}.document-detail-meta strong{font-size:11px;color:var(--tvl-blue2);overflow-wrap:anywhere}.btn.tiny{padding:4px 7px;font-size:9px;min-height:0}.document-public-payload{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.document-public-payload>div{padding:10px 11px;border:1px solid #dfe7ee;border-radius:11px;background:#fbfdff}.document-public-payload span{display:block;color:var(--tvl-muted);font-size:9px;font-weight:850;margin-bottom:3px}.document-public-payload strong{font-size:11px;color:var(--tvl-blue2);overflow-wrap:anywhere}.document-detail-revoke{margin-top:12px}.btn.is-copied{background:#e9f8ef!important;border-color:#bde8ce!important;color:#167247!important}
@media(max-width:900px){.document-filter{grid-template-columns:1fr 1fr}.document-filter input{grid-column:1/-1}.document-filter .btn{width:100%}.document-detail-grid{grid-template-columns:1fr}}
@media(max-width:620px){.document-filter{grid-template-columns:1fr}.document-filter input{grid-column:auto}.document-card-actions{grid-template-columns:1fr 1fr}.document-card-actions .btn{width:100%;justify-content:center}.document-card-actions .btn:last-child{grid-column:1/-1;justify-self:stretch}.document-detail-actions{display:grid;grid-template-columns:1fr}.document-detail-actions .btn{width:100%;justify-content:center}.document-detail-hero{align-items:flex-start;flex-direction:column}.document-detail-qr{width:128px;height:128px;align-self:center}.document-detail-meta>div{grid-template-columns:1fr}.document-public-payload{grid-template-columns:1fr}}

/* v1.10.106 — Document lifecycle & Document Center polish */
.document-sync-form{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.document-sync-form small{max-width:280px;text-align:right;font-size:8.5px;line-height:1.35;color:var(--tvl-muted)}
.document-table-wrap{overflow:auto;border:1px solid #dce6ef;border-radius:14px;background:#fff;box-shadow:0 4px 16px rgba(32,58,85,.035)}.document-table{width:100%;border-collapse:collapse;min-width:850px}.document-table th,.document-table td{padding:11px 12px;border-bottom:1px solid #edf1f5;text-align:left;vertical-align:middle}.document-table th{font-size:8.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--tvl-muted);background:#f8fbfd}.document-table td{font-size:10.5px;color:var(--tvl-text)}.document-table td:first-child strong{display:block;color:var(--tvl-blue2);font-size:11.5px}.document-table td:first-child small{display:block;margin-top:2px;color:var(--tvl-muted);font-size:8px}.document-table tr:last-child td{border-bottom:0}.document-table td:last-child{text-align:right}
.document-mobile-list{display:none}.document-mobile-card{margin:0!important}.document-mobile-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.document-mobile-head>div{min-width:0}.document-mobile-head b{display:block;color:var(--tvl-blue2);font-size:12px;overflow-wrap:anywhere}.document-mobile-head span:not(.document-status){display:block;margin-top:3px;color:var(--tvl-muted);font-size:9.5px;overflow-wrap:anywhere}.document-mobile-meta{display:flex;justify-content:space-between;gap:10px;margin-top:10px;padding-top:9px;border-top:1px solid #edf1f5;color:var(--tvl-muted);font-size:9px}.document-mobile-detail{width:100%;justify-content:center;margin-top:10px}
.document-detail-hero-v106{display:flex;align-items:center;justify-content:space-between;gap:18px;background:linear-gradient(135deg,#f8fbfe,#fff);border-color:#d7e4ef!important}.document-detail-primary{min-width:0}.document-detail-primary .document-status{margin-bottom:9px}.document-detail-type{display:block;font-size:9px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:var(--tvl-muted)}.document-detail-primary h2{margin:5px 0 4px;font-size:22px;line-height:1.2;color:var(--tvl-blue2);overflow-wrap:anywhere}.document-detail-primary p{margin:0;color:var(--tvl-muted);font-size:11px}.document-detail-clean{margin-top:12px!important}.document-id-small{font-size:9.5px!important;font-weight:750!important;color:#64778a!important}.document-link-text{font-size:9px!important;font-weight:650!important;color:#4f6578!important}.document-replacement-internal,.document-expired-action{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px!important}.document-replacement-internal>div,.document-expired-action>div{display:flex;flex-direction:column;gap:3px}.document-replacement-internal span,.document-expired-action span{font-size:9px;color:var(--tvl-muted)}.document-replacement-internal strong,.document-expired-action b{font-size:11px;color:var(--tvl-blue2)}
.document-version-history{margin-top:12px!important}.document-version-list{display:grid;gap:7px}.document-version-item{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:9px 10px;border:1px solid #dfe7ee;border-radius:10px;background:#fbfdff;text-decoration:none;color:inherit}.document-version-item:hover{border-color:#b7ccdc;background:#f6fbff}.document-version-item.is-current{border-color:#9fc5df;background:#f1f9ff}.document-version-item span{font-size:10px;font-weight:850;color:var(--tvl-blue2)}.document-version-item b{font-size:9px;color:#4d6175}.document-version-item small{font-size:8.5px;color:var(--tvl-muted)}.document-revoke-reason{margin-top:12px!important;border-color:#f0d4d1!important;background:#fff8f7!important}.document-revoke-reason p{margin:0;color:#7f453f;font-size:10px;line-height:1.55}.document-revoke textarea{width:100%;min-height:74px;resize:vertical}.document-detail-revoke form{grid-template-columns:minmax(0,1fr) auto}.document-detail-revoke textarea{grid-column:1/-1}
.quotation-status-stack{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.verified-mini{color:#167247!important;background:#edf9f2!important;border-color:#c7e9d4!important;font-weight:850!important}
@media(max-width:980px){.document-sync-form{align-items:stretch}.document-sync-form small{text-align:left;max-width:none}.document-table-wrap{display:none}.document-mobile-list{display:grid;grid-template-columns:1fr;gap:9px}.document-detail-hero-v106{align-items:flex-start}.document-detail-primary h2{font-size:19px}}
@media(max-width:620px){.document-mobile-meta{flex-direction:column;gap:3px}.document-detail-hero-v106{flex-direction:column}.document-detail-hero-v106 .document-detail-qr{align-self:center}.document-replacement-internal,.document-expired-action{align-items:stretch;flex-direction:column}.document-replacement-internal .btn,.document-expired-action .btn{width:100%;justify-content:center}.document-version-item{grid-template-columns:1fr auto}.document-version-item small{grid-column:1/-1}.document-detail-revoke form{grid-template-columns:1fr}.document-detail-revoke textarea{grid-column:auto}.quotation-status-stack{align-items:flex-end}}

/* v1.10.107 — Internal branded QR */
.document-detail-actions form.inline-form{display:inline-flex;margin:0}
.document-detail-qr{image-rendering:auto}
@media(max-width:620px){
  .document-detail-actions form.inline-form{width:100%}
  .document-detail-actions form.inline-form .btn{width:100%;justify-content:center}
}

/* v1.10.110 — Document Integrity */
.document-integrity-card .document-hash-full{margin-top:12px;border-top:1px solid #e4ebf1;padding-top:10px}
.document-integrity-card .document-hash-full summary{cursor:pointer;font-weight:700;color:#214c72}
.document-integrity-card .document-hash-full code{display:block;margin-top:9px;padding:10px 12px;background:#f4f7fa;border-radius:10px;word-break:break-all;font-size:11px;color:#334b60}

/* v1.10.112 — Audit Log & Activity History */
.audit-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}.audit-filter{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:8px;flex:1}.audit-filter input,.audit-filter select{min-width:0}.audit-filter .btn{align-self:stretch}.audit-export-menu{position:relative}.audit-export-menu>summary{list-style:none;cursor:pointer}.audit-export-menu>summary::-webkit-details-marker{display:none}.audit-export-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:30;min-width:170px;padding:10px;border:1px solid #dbe5ee;border-radius:12px;background:#fff;box-shadow:0 14px 30px rgba(30,52,74,.14)}.audit-export-pop>b{display:block;margin-bottom:7px;font-size:10px;color:var(--tvl-blue2)}.audit-export-pop form{margin:5px 0}.audit-export-pop .btn{width:100%;justify-content:center}.audit-table-wrap{overflow:auto;border:1px solid #dce6ef;border-radius:14px;background:#fff}.audit-table{width:100%;border-collapse:collapse;min-width:850px}.audit-table th,.audit-table td{padding:10px 11px;border-bottom:1px solid #edf1f5;text-align:left;vertical-align:middle}.audit-table th{font-size:8.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--tvl-muted);background:#f8fbfd}.audit-table td{font-size:10px}.audit-table td b{display:block;color:var(--tvl-blue2)}.audit-table td small{display:block;margin-top:2px;color:var(--tvl-muted);font-size:8px}.audit-mobile-list{display:none}.audit-card{padding:11px;border:1px solid #dfe7ee;border-radius:12px;background:#fff}.audit-card-head{display:flex;justify-content:space-between;gap:10px}.audit-card-head b{display:block;font-size:9px;color:#5b6d7f}.audit-card-head span{display:block;margin-top:2px;font-size:11px;font-weight:850;color:var(--tvl-blue2)}.audit-card-head small{font-size:8px;color:var(--tvl-muted)}.audit-card-action{margin-top:8px;font-size:11px;font-weight:800;color:#263b4e}.audit-card-doc{margin-top:3px;font-size:9px;color:var(--tvl-muted)}.audit-card-amount{display:block;margin-top:6px;font-size:12px;color:#176b55}.audit-card .btn{margin-top:9px;width:100%;justify-content:center}.audit-detail-card{margin-top:12px}.audit-detail-note{margin-top:12px;padding:10px 12px;border:1px solid #e1e8ee;border-radius:10px;background:#fbfdff}.audit-detail-note span{display:block;font-size:9px;font-weight:850;color:var(--tvl-muted)}.audit-detail-note p{margin:5px 0 0;font-size:10px;line-height:1.5}.document-activity-history{margin-top:12px!important}.document-activity-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px}.document-activity-head h3{margin:0}.document-activity-head span{font-size:8.5px;color:var(--tvl-muted)}.document-activity-list{display:grid;gap:7px;margin:10px 0}.document-activity-item{display:grid;grid-template-columns:minmax(155px,.7fr) minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 10px;border:1px solid #e1e8ee;border-radius:10px;background:#fbfdff}.document-activity-item>div b{display:block;font-size:8.5px;color:#5c6f82}.document-activity-item>div span{display:block;margin-top:2px;font-size:9.5px;font-weight:800;color:var(--tvl-blue2)}.document-activity-item>strong{font-size:10px;color:#263b4e}.document-activity-item>small{font-size:9px;font-weight:800;color:#176b55}.audit-revision-note textarea{width:100%;min-height:78px;resize:vertical}.quotation-audit-note{margin-top:12px!important}
@media(max-width:980px){.audit-filter{grid-template-columns:1fr 1fr}.audit-table-wrap{display:none}.audit-mobile-list{display:grid;gap:8px}.audit-toolbar{align-items:stretch}.audit-export-menu{flex:0 0 auto}}
@media(max-width:620px){.audit-toolbar{display:grid;grid-template-columns:1fr auto;gap:7px}.audit-filter{grid-column:1/-1;grid-template-columns:1fr 1fr;gap:6px}.audit-filter input,.audit-filter select{font-size:11px;min-height:40px}.audit-filter input[name="audit_document_q"],.audit-filter input[name="audit_client"],.audit-filter input[name="audit_status"],.audit-filter input[name="audit_q"],.audit-filter .btn{grid-column:1/-1}.audit-export-menu{grid-column:2;grid-row:1}.audit-export-pop{right:0;min-width:155px}.audit-card{padding:10px}.audit-card-head b{font-size:8px}.audit-card-head span{font-size:10.5px}.audit-card-action{font-size:10.5px}.audit-card-doc{font-size:8.5px}.document-activity-head{align-items:flex-start;flex-direction:column;gap:2px}.document-activity-item{grid-template-columns:1fr;padding:8px 9px;gap:4px}.document-activity-item>small{margin-top:1px}.document-activity-history .btn{width:100%;justify-content:center}}
/* v1.10.113 — Audit Log Hierarchy Polish */
.audit-card-summary{margin-top:4px;font-size:8.5px;line-height:1.35;color:var(--tvl-muted)}
.audit-system-checklist{margin-top:12px!important}.audit-system-checklist h3{margin:0 0 3px}.audit-system-checklist>.muted{margin:0 0 10px;font-size:9px}.audit-system-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.audit-system-check{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid #e1e8ee;border-radius:10px;background:#fbfdff}.audit-system-check span{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;font-size:11px;font-weight:900}.audit-system-check b{font-size:9.5px;color:#263b4e}.audit-system-check.ok span{background:#e8f7ef;color:#16824f}.audit-system-check.warn span{background:#fff3df;color:#bd7714}
@media(max-width:620px){.audit-system-checks{grid-template-columns:1fr}.audit-system-check{padding:8px 9px}.audit-system-check b{font-size:9px}.audit-system-checklist>.muted{font-size:8.5px}}

/* v1.10.118 - Final Pax & Event Selesai */
.event-pax-card .event-detail-section-summary small{display:block;margin-top:3px;color:var(--tvl-muted);font-size:9px;line-height:1.35}
.event-pax-card .finance-action-details{margin-top:10px}
.event-pax-card .event-invoice-add{margin:10px 0}
.event-pax-card .completion-action{margin-top:12px;margin-bottom:0}
@media(max-width:520px){.event-pax-card .event-detail-section-summary{grid-template-columns:1fr 1fr}.event-pax-card .event-detail-section-summary>div:first-child{grid-column:1/-1}}
/* v1.10.123 — Profit Final & Defisit Event */
.event-deficit-card{border-color:#efb9b9}
.event-deficit-card .source-note{margin-top:8px}
.money-negative{color:#a92c2c!important}

/* v1.10.125 - simplified profit allocation */
.event-simple-allocation{margin-top:12px;padding-top:10px;border-top:1px solid var(--tvl-border)}
.event-simple-allocation>b{display:block;margin-bottom:8px;color:#123f70;font-size:12px}
.event-simple-allocation .btn{margin-top:2px}

/* v1.10.131 - Invoice revision history: simple vertical/mobile-friendly layout */
.invoice-doc-actions .invoice-revise-action{grid-column:1/-1!important;width:100%!important;min-height:42px!important;display:flex!important;align-items:center!important;justify-content:center!important}
.invoice-version-list{margin:0;padding:10px 13px 13px;border-top:1px dashed var(--tvl-border);background:#fff}
.invoice-version-list>b{display:block;font-size:12px;color:var(--tvl-blue2);padding:2px 0 7px}
.invoice-version-list .invoice-version-row{display:grid;grid-template-columns:minmax(110px,1fr) auto;gap:10px;align-items:center;padding:9px 0;border-top:1px solid #eef2f6;font-size:12px}
.invoice-version-list .invoice-version-row>span{display:flex;flex-direction:column;gap:2px;min-width:0}
.invoice-version-list .invoice-version-row>span small{color:var(--tvl-muted);font-size:11px}
.invoice-version-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.invoice-version-actions form{margin:0}
.invoice-version-actions .btn{min-width:0!important;white-space:nowrap}
@media(max-width:600px){
  .invoice-version-list .invoice-version-row{grid-template-columns:1fr}
  .invoice-version-actions{display:grid;grid-template-columns:1fr 1fr;width:100%;justify-content:stretch}
  .invoice-version-actions .btn,.invoice-version-actions form,.invoice-version-actions form .btn{width:100%!important}
}
@media(max-width:600px){
  .invoice-version-actions{display:flex!important;flex-wrap:wrap!important}
  .invoice-version-actions>a,.invoice-version-actions>form{flex:1 1 145px!important;width:auto!important}
  .invoice-version-actions .btn,.invoice-version-actions form .btn{width:100%!important}
  .receipt-success-panel>a.btn{grid-column:1/-1!important;width:100%!important}
}

/* v1.10.134 — Document Center simplified */
.document-toolbar-simple{margin-bottom:10px}.document-toolbar-simple .document-filter{width:100%}
.document-maintenance{margin:0 0 12px!important;padding:0!important;overflow:visible}.document-maintenance>summary,.document-security-history>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 15px}.document-maintenance>summary::-webkit-details-marker,.document-security-history>summary::-webkit-details-marker,.document-more-actions>summary::-webkit-details-marker{display:none}.document-maintenance>summary div,.document-security-history>summary div{display:flex;flex-direction:column;gap:2px}.document-maintenance>summary b,.document-security-history>summary b{font-size:12px;color:var(--tvl-blue2)}.document-maintenance>summary small,.document-security-history>summary small{font-size:9px;color:var(--tvl-muted);font-weight:600}.document-maintenance[open]>summary,.document-security-history[open]>summary{border-bottom:1px solid #e0e7ed}.document-maintenance-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;padding:12px 15px 15px}.document-maintenance-actions .document-sync-form{align-items:stretch;margin:0;padding:10px;border:1px solid #e0e7ed;border-radius:10px;background:#fbfdff}.document-maintenance-actions .document-sync-form small{text-align:left;max-width:none}.document-maintenance-actions .btn{width:100%;justify-content:center}
.document-detail-back{margin-bottom:8px}.document-detail-actions-simple{align-items:center;margin-bottom:12px}.document-detail-actions-simple>form.inline-form{display:inline-flex}.document-more-actions{position:relative}.document-more-actions>summary{list-style:none;cursor:pointer}.document-more-pop{position:absolute;z-index:20;right:0;top:calc(100% + 7px);min-width:220px;display:grid;gap:7px;padding:9px;background:#fff;border:1px solid #dbe4ec;border-radius:11px;box-shadow:0 12px 28px rgba(34,55,75,.14)}.document-more-pop .btn,.document-more-pop form.inline-form,.document-more-pop form.inline-form .btn{width:100%;justify-content:center}
.document-security-history{margin-top:12px!important;padding:0!important;overflow:visible}.document-security-history-body{padding:12px}.document-security-history-body>.card{margin:0 0 10px!important;box-shadow:none}.document-security-history-body>.card:last-child{margin-bottom:0!important}.document-simple-note{margin-top:12px}
@media(max-width:900px){.document-maintenance-actions{grid-template-columns:1fr}.document-detail-actions-simple{display:grid;grid-template-columns:1fr 1fr}.document-detail-actions-simple>form.inline-form,.document-detail-actions-simple>form.inline-form .btn,.document-detail-actions-simple>a.btn,.document-detail-actions-simple>.document-more-actions,.document-detail-actions-simple>.document-more-actions>summary{width:100%;justify-content:center}.document-more-actions{grid-column:1/-1}.document-more-pop{position:static;margin-top:7px;min-width:0}.document-security-history-body{padding:10px}}
@media(max-width:620px){.document-detail-actions-simple{grid-template-columns:1fr}.document-more-actions{grid-column:auto}.document-maintenance>summary,.document-security-history>summary{padding:12px}.document-maintenance-actions{padding:10px 12px 12px}.document-security-history-body{padding:8px}}

/* v1.10.135 — Closing simplified */
.closing-simple-kpis{margin-bottom:12px}
.closing-simple-ready{display:flex;align-items:center;justify-content:space-between;gap:12px;border-radius:12px;padding:12px 13px;margin-bottom:7px;border:1px solid var(--tvl-border)}
.closing-simple-ready>div{display:grid;gap:2px}.closing-simple-ready b{font-size:11px}.closing-simple-ready span{font-size:9px;color:var(--tvl-muted)}.closing-simple-ready strong{font-size:10px}
.closing-simple-ready.ready{background:#f1fbf4;border-color:#c3e4cd;color:#2f7144}.closing-simple-ready.not-ready{background:#fff5f5;border-color:#ebcccc;color:#973737}
.closing-monitor-details{margin-top:10px}.closing-monitor-list{display:grid;gap:6px;margin:9px 0}.closing-monitor-list>div{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--tvl-border);padding:6px 0;font-size:9.5px}.closing-monitor-list>div:last-child{border-bottom:0}.closing-monitor-list span{color:var(--tvl-muted)}.closing-monitor-list b{text-align:right}
.closing-main-button{width:100%;min-height:43px;font-size:11px}.closing-simple-action form{margin:0}
.closing-optional-section{margin-top:12px}.closing-optional-section>summary{align-items:center}.closing-optional-section>summary>div{display:grid;gap:2px}.closing-optional-section>summary small{font-size:9px;color:var(--tvl-muted);font-weight:500}.closing-optional-body{padding-top:12px}.closing-optional-body .reconciliation-head{margin-bottom:12px}.closing-month-snapshot{margin-bottom:12px}.closing-subtitle{margin:15px 0 6px;font-size:10.5px;color:var(--tvl-blue2)}
@media(max-width:720px){.closing-simple-ready{align-items:flex-start}.closing-monitor-list>div{display:grid;grid-template-columns:1fr}.closing-monitor-list b{text-align:left}.closing-optional-section>summary>span{margin-top:4px}}

/* v1.10.136 — Owner Dashboard simplified */
.owner-main-kpis-simple{grid-template-columns:repeat(3,minmax(0,1fr))}
.owner-month-detail{margin-top:13px}.owner-month-detail>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 15px}.owner-month-detail>summary::-webkit-details-marker{display:none}.owner-month-detail>summary>div{display:flex;flex-direction:column;gap:2px}.owner-month-detail>summary b{font-size:12px;color:var(--tvl-blue2)}.owner-month-detail>summary small{font-size:9px;color:var(--tvl-muted)}.owner-month-detail>summary strong{font-size:9px;color:var(--tvl-blue2)}.owner-month-detail[open]>summary{background:#f8fafc;border-bottom:1px solid var(--tvl-border)}.owner-month-detail-body{padding:0 13px 13px}.owner-month-detail-body>.owner-two-col:first-child{margin-top:0}.owner-month-detail-body .card{box-shadow:none}
@media(max-width:920px){.owner-main-kpis-simple{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:430px){.owner-main-kpis-simple{grid-template-columns:1fr}.owner-month-detail>summary{align-items:flex-start}.owner-month-detail>summary strong{white-space:nowrap}}

/* v1.10.137 — internal cash mutation reconciliation + sticky HPP mobile save */

/* v1.10.139 — navigasi laporan + sumber closing */
.owner-closing-source-card .metric-line{align-items:center}.owner-source-sub{display:flex;justify-content:space-between;gap:10px;padding:7px 10px 7px 18px;margin:0 0 2px;border-left:2px solid #dbe6f1;color:#53667a;font-size:11px}.owner-source-sub b{color:#173956}.owner-source-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;padding-top:10px;border-top:1px solid #e5ebf1}.owner-source-foot small{color:#728296;line-height:1.45}.report-admin-profit{display:block;text-align:right;color:#6d7f91;margin:-5px 0 6px;font-size:10px}.report-source-sub{margin-left:4px}
@media(max-width:620px){.owner-source-foot{align-items:flex-start;flex-direction:column}.owner-source-foot .btn{width:100%}.owner-source-sub{padding-left:12px}.report-admin-profit{text-align:left}}

/* v1.10.140 — detail sumber/admin closing */
.metric-line-link{display:flex;text-decoration:none;color:inherit;border-radius:10px;padding:8px 9px;margin:0 -4px 2px;transition:background .15s ease,border-color .15s ease}
.metric-line-link:hover{background:#f4f8fb}.metric-line-link em,.owner-source-sub-link em{font-style:normal;font-size:9px;color:var(--tvl-blue2);margin-left:4px}
.owner-source-sub-link{text-decoration:none;color:inherit}.owner-source-sub-link:hover{background:#f7fafc}
.closing-detail-list{display:grid;gap:7px;margin:0 0 10px}.closing-detail-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 11px;border:1px solid var(--tvl-border);border-radius:11px;background:#fff}.closing-detail-row>div:first-child{display:grid;gap:3px}.closing-detail-row b{font-size:11px;color:var(--tvl-blue2)}.closing-detail-row small{font-size:9px;color:var(--tvl-muted)}.closing-detail-side{display:flex;align-items:center;gap:10px}.closing-detail-side strong{font-size:10px;white-space:nowrap}
@media(max-width:620px){.closing-detail-row{align-items:flex-start;flex-direction:column}.closing-detail-side{width:100%;justify-content:space-between}.closing-detail-side .btn{min-width:110px}.metric-line-link{align-items:flex-start}}

/* v1.10.142 — Final UI polish: compact navigation + mobile readability */
@media(max-width:640px){
  .tvlff-wrap{padding-left:10px;padding-right:10px}
  .tvlff-top{gap:8px;margin-bottom:8px;align-items:center}
  .tvlff-top>div:first-child{min-width:0}
  .brand{font-size:20px}
  .tvlff-user-session{gap:6px!important;flex-wrap:nowrap;min-width:0}
  .tvlff-user-session>span{min-width:0}
  .tvlff-user-session>span b{max-width:105px;font-size:10px}
  .tvlff-user-session>span small{font-size:8.5px}
  .tvlff-user-session .btn{min-height:34px;padding:7px 8px;font-size:9.5px}

  .tvlff-nav.tvlff-nav-compact{
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:5px;
    padding-top:7px;
    padding-bottom:8px;
  }
  .tvlff-nav-compact>.tvlff-nav-home,
  .tvlff-nav-compact>.tvlff-nav-group>summary,
  .tvlff-nav-compact>a{
    min-height:36px;
    padding:7px 5px;
    font-size:10.5px;
    gap:4px;
  }
  .tvlff-nav-icon{font-size:12px;line-height:1}
  .tvlff-nav-caret{font-size:10px}
  .tvlff-nav-menu{gap:5px;padding:8px}
  .tvlff-nav .tvlff-nav-menu a{font-size:11px;min-height:38px}

  .page-title{margin:13px 0 9px}
  .page-title h2{font-size:20px;line-height:1.2}
  .page-title p{font-size:11px;line-height:1.45}
  .card{margin:9px 0;padding:12px}
  .card h3{font-size:15px;margin-bottom:11px}
  .btn{min-height:42px}
  details>summary{min-height:42px}

  .owner-kpi span,.owner-kpi small,.owner-event-summary span,.owner-cash-grid span,.owner-mini-kpis span,
  .owner-attention-row span,.owner-attention-row small,.owner-profit-row small,.owner-profit-row span,
  .owner-closing-head span,.owner-closing-checks span,.owner-closing-warning,
  .report-kpi-grid span,.report-kpi-grid small,.report-hub-copy p,.report-hub-copy small,
  .report-history-row small,.report-archive-note span{font-size:9.5px}
  .owner-kpi strong{font-size:16px}
  .owner-event-summary b,.owner-cash-grid b,.owner-mini-kpis b{font-size:13px}
  .owner-attention-row b,.report-hub-copy b,.report-history-row b{font-size:11px}
  .report-kpi-grid strong{font-size:15px}
  .finance-subnav a{min-height:38px;padding:8px 12px;font-size:11px}
}
@media(max-width:390px){
  .tvlff-nav.tvlff-nav-compact{grid-template-columns:repeat(3,minmax(0,1fr))}
  .tvlff-nav-compact>.tvlff-nav-home,
  .tvlff-nav-compact>.tvlff-nav-group>summary,
  .tvlff-nav-compact>a{font-size:10px;padding-left:3px;padding-right:3px}
  .tvlff-user-session>span{display:none!important}
}
