:root{
  --navy:#063f4d;--navy2:#075867;--teal:#0da6b3;--teal2:#0b8792;--gold:#d4aa32;
  --bg:#f3f6f8;--card:#fff;--text:#102630;--muted:#6a7a84;--line:#e2e8ec;
  --green:#138a50;--orange:#e17818;--red:#b42318;--blue:#2e78c7;--purple:#7048c8;
  --shadow:0 12px 32px rgba(4,46,59,.08);--radius:18px;
}
*{box-sizing:border-box}.hidden{display:none!important}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
.app{display:grid;grid-template-columns:265px 1fr;min-height:100vh}
.sidebar{position:sticky;top:0;height:100vh;padding:18px 14px;background:linear-gradient(180deg,var(--navy),#064e5d 62%,#063541);color:#fff;overflow:auto}
.brand{display:flex;align-items:center;gap:11px;padding:2px 5px 20px}
.brand img{width:58px;height:58px;object-fit:contain}
.brand-name{font-family:Georgia,serif;font-size:23px;line-height:.9;letter-spacing:.4px}
.brand-name small{display:block;font:600 9px Inter,sans-serif;letter-spacing:1.7px;margin-top:7px;color:#c9e5e8}
.nav{display:grid;gap:7px}
.nav button{display:flex;align-items:center;gap:11px;border:0;background:transparent;color:#fff;text-align:left;padding:12px 14px;border-radius:12px;font-weight:750}
.nav button.active,.nav button:hover{background:linear-gradient(90deg,var(--teal),var(--teal2))}
.sidebar-info{margin-top:20px;padding:12px;border:1px solid rgba(255,255,255,.13);background:rgba(255,255,255,.07);border-radius:14px;font-size:12px;line-height:1.55}
.content{padding:23px 27px 55px;min-width:0}
.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}
.topbar h1{margin:0;font-size:30px}.sub{color:var(--muted);margin-top:4px}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.btn{border:0;border-radius:11px;padding:10px 14px;font-weight:800}
.primary{background:linear-gradient(90deg,var(--teal),var(--teal2));color:white}
.secondary{background:#e7f3f4;color:var(--navy)}
.danger{background:#fee8e6;color:var(--red)}
.success{background:#e7f6ed;color:var(--green)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.stat,.card,.panel,.tablebox{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.stat{padding:17px;display:flex;gap:13px;align-items:center;min-height:104px}
.stat-icon{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;font-size:23px;background:#e4f7f8}
.stat b{display:block;font-size:27px}.stat span{font-size:13px;color:var(--muted)}
.dashboard-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:15px;margin-top:15px}
.panel{padding:16px}.panel h2{font-size:17px;margin:0 0 12px}
.chart{height:230px;display:flex;align-items:end;gap:9px;padding:12px 5px 28px;position:relative}
.bar-wrap{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;min-width:20px}
.bar{width:72%;min-width:16px;border-radius:8px 8px 2px 2px;background:linear-gradient(180deg,var(--teal),var(--navy2));position:relative}
.bar.cost{background:linear-gradient(180deg,#f1a354,#d86a15)}
.bar-label{font-size:10px;color:var(--muted);position:absolute;bottom:5px;transform:rotate(-35deg);white-space:nowrap}
.legend{display:flex;gap:18px;font-size:12px;color:var(--muted);margin-top:4px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px}
.kpi-list{display:grid;gap:10px}
.kpi{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:10px 0}
.kpi:last-child{border-bottom:0}
.kpi small{color:var(--muted)}
.tab{display:none}.tab.active{display:block}
.toolbar{display:flex;gap:9px;flex-wrap:wrap;margin:15px 0}
.toolbar input,.toolbar select{background:#fff;border:1px solid var(--line);border-radius:11px;padding:10px 11px}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}
.card{padding:15px}.card h3{margin:0 0 7px}.meta{font-size:13px;color:var(--muted);line-height:1.55}
.card-actions{display:flex;gap:8px;margin-top:12px}
.tablebox{overflow:auto}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:12px;border-bottom:1px solid var(--line);white-space:nowrap}
th{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.badge{display:inline-block;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:800}
.b-open{background:#fff0dc;color:#a85a00}.b-paid{background:#e6f6eb;color:#247d44}.b-sent{background:#e7f1ff;color:#2569ad}.b-admin{background:#ebe8ff;color:#5f42b5}
.filter-note{font-size:12px;color:var(--muted);margin-top:-7px;margin-bottom:12px}
/* 16.0.105 — expliciete, robuuste centrering (i.p.v. te vertrouwen op het
   standaardgedrag van de browser voor <dialog>), zodat een geopend
   formulier nooit half buiten beeld kan vallen, op geen enkel apparaat. */
dialog{border:0;border-radius:19px;max-width:680px;width:calc(100% - 22px);padding:0;box-shadow:0 25px 75px rgba(0,0,0,.25);position:fixed;inset:0;margin:auto}
dialog::backdrop{background:rgba(4,36,47,.57)}
.modal{padding:20px}.modal h2{margin:0 0 15px}
.form{display:grid;gap:11px}.form input,.form select,.form textarea{width:100%;padding:11px;border:1px solid var(--line);border-radius:10px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:7px}
.invoice-preview{display:none;background:#fff;padding:34px;color:#111;max-width:850px;margin:auto}
.invoice-head{display:flex;justify-content:space-between}.invoice-head img{width:105px}.invoice-preview h1{font-family:Georgia,serif;color:var(--navy)}
.invoice-preview .totals{width:320px;margin-left:auto;margin-top:18px}
.invoice-preview .totals div{display:flex;justify-content:space-between;padding:6px 0}.invoice-preview .grand{font-weight:900;font-size:18px;border-top:2px solid #222}
.mobile-nav{display:none}
.empty{padding:26px;text-align:center;color:var(--muted)}
@media print{
 body>*:not(#invoicePreview){display:none!important}
 #invoicePreview{display:block!important}
}
@media(max-width:1050px){.stats{grid-template-columns:1fr 1fr}.dashboard-grid{grid-template-columns:1fr}.grid{grid-template-columns:1fr 1fr}.app{grid-template-columns:225px 1fr}}
@media(max-width:720px){
 .app{display:block}.sidebar{display:none}.content{padding:17px 13px 88px}.grid{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}.row2{grid-template-columns:1fr}
 .mobile-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);z-index:30;padding:8px 3px}
 .mobile-nav button{border:0;background:#fff;color:var(--muted);font-size:10px}.mobile-nav b{display:block;font-size:19px}.mobile-nav button.active{color:var(--teal2)}
 .topbar h1{font-size:25px}
}

/* v1.3 Planboard Pro + Cleaning */
.planboard-shell{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:14px}
.planboard{display:grid;grid-template-columns:repeat(7,minmax(240px,1fr));gap:12px;overflow-x:auto;align-items:start;padding-bottom:12px}
.daycol{background:#f8fafb;border:1px solid var(--line);border-radius:16px;min-height:600px;overflow:hidden}
.dayhead{position:sticky;top:0;z-index:2;padding:14px 15px;background:linear-gradient(135deg,#063f4d,#0b7885);color:#fff}
.dayhead .dayname{font-size:16px;font-weight:900}
.dayhead .daycount{font-size:12px;opacity:.82;margin-top:3px}
.daybody{padding:10px;display:grid;gap:10px}
.taskcard{border-radius:14px;padding:12px;border-left:7px solid #999;background:#fff;box-shadow:0 5px 15px rgba(7,45,58,.08);cursor:pointer}
.taskcard:hover{transform:translateY(-1px)}
.tasktop{display:flex;justify-content:space-between;align-items:center;gap:8px}
.time{font-weight:900;font-size:14px}
.statuspill{font-size:10px;font-weight:900;padding:4px 8px;border-radius:999px;background:rgba(255,255,255,.9)}
.tasktitle{font-weight:900;font-size:15px;margin-top:8px}
.taskhome{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.35}
.taskperson{font-size:11px;margin-top:8px;display:flex;justify-content:space-between;gap:8px}
.tasknote{font-size:11px;color:var(--muted);margin-top:7px;padding-top:7px;border-top:1px dashed rgba(0,0,0,.12)}
.type-checkin{border-left-color:#2879c8;background:#edf5ff}
.type-checkout{border-left-color:#e17818;background:#fff2e6}
.type-endclean{border-left-color:#138a50;background:#eaf7ef}
.type-midclean{border-left-color:#6ba96d;background:#f0f8f1}
.type-deepclean{border-left-color:#0d6f4c;background:#e2f3eb}
.type-laundry{border-left-color:#7048c8;background:#f2edff}
.type-pool{border-left-color:#0da6b3;background:#e8f9fb}
.type-garden{border-left-color:#3c7f3f;background:#edf7ee}
.type-maintenance{border-left-color:#6f7780;background:#f0f2f4}
.type-urgent{border-left-color:#b42318;background:#fff0ef}
.status-planned{color:#586b74}.status-confirmed{color:#2879c8}.status-inprogress{color:#e17818}.status-done{color:#138a50}.status-cancelled{color:#b42318}
.planboard-summary{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin:14px 0}
.plan-kpi{background:#fff;border:1px solid var(--line);border-radius:15px;padding:12px 14px;box-shadow:var(--shadow)}
.plan-kpi b{display:block;font-size:22px}.plan-kpi span{font-size:12px;color:var(--muted)}
.plan-legend{display:flex;gap:9px;flex-wrap:wrap;margin:10px 0 14px}
.plan-legend span{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 10px;font-size:12px}
.plan-legend i{width:11px;height:11px;border-radius:3px;display:inline-block}
.cleaning-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0}
.cleaning-stat{background:#fff;border:1px solid var(--line);border-radius:16px;padding:15px;box-shadow:var(--shadow)}
.cleaning-stat b{display:block;font-size:26px}.cleaning-stat span{font-size:12px;color:var(--muted)}
@media(max-width:1100px){.planboard-summary{grid-template-columns:repeat(3,1fr)}.cleaning-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.planboard{grid-template-columns:repeat(7,minmax(270px,1fr))}.planboard-summary{grid-template-columns:repeat(2,1fr)}.cleaning-grid{grid-template-columns:1fr 1fr}}


.billing-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0}
.billing-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:15px;box-shadow:var(--shadow)}
.billing-card b{display:block;font-size:24px}.billing-card span{font-size:12px;color:var(--muted)}
.calendar-list{display:grid;gap:10px}.calendar-item{background:#fff;border:1px solid var(--line);border-radius:14px;padding:13px 15px;display:grid;grid-template-columns:90px 1fr auto;gap:12px;align-items:center}
.calendar-date{font-weight:900;color:var(--navy)}.calendar-meta{font-size:12px;color:var(--muted);margin-top:3px}
.status-concept{background:#fff0dc;color:#a85a00}.status-goedgekeurd{background:#eaf0ff;color:#355cb7}.status-verzonden{background:#e7f1ff;color:#2569ad}.status-herinnering{background:#fff0ef;color:#b42318}.status-betaald{background:#e6f6eb;color:#247d44}
@media(max-width:900px){.billing-grid{grid-template-columns:repeat(2,1fr)}.calendar-item{grid-template-columns:70px 1fr}}

.module-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0}
.module-stat{background:#fff;border:1px solid var(--line);border-radius:16px;padding:15px;box-shadow:var(--shadow)}
.module-stat b{display:block;font-size:24px}.module-stat span{font-size:12px;color:var(--muted)}
.calc-box{background:#eef8f9;border:1px solid #cce9ec;border-radius:13px;padding:12px 14px}
.calc-box b{font-size:20px}
@media(max-width:900px){.module-stats{grid-template-columns:repeat(2,1fr)}}

.invoice-paper{background:#fff;color:#142a35;max-width:900px;margin:0 auto;padding:26px 30px 24px;font-family:Arial,Helvetica,sans-serif}
.invoice-brand-row{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
.invoice-logo{width:140px;height:auto;object-fit:contain}
.invoice-doc-meta{text-align:right;font-size:12px;line-height:1.55}
.invoice-titlebar{margin:12px 0 20px;background:#245c86;color:#fff;text-align:center;font-weight:900;font-size:24px;padding:8px 12px;letter-spacing:.5px}
.invoice-info-grid{display:grid;grid-template-columns:1.4fr .9fr;gap:20px;margin-bottom:20px}
.invoice-info-box{border:1px solid #cfd9e3;background:#f7fafc}
.invoice-info-row{display:grid;grid-template-columns:140px 1fr;border-bottom:1px solid #d9e2ea}
.invoice-info-row:last-child{border-bottom:0}
.invoice-info-row b,.invoice-info-row span{padding:7px 9px;font-size:12px}
.invoice-lines{width:100%;border-collapse:collapse;margin-top:8px}
.invoice-lines th{background:#245c86;color:#fff;font-size:12px;padding:8px;text-transform:none}
.invoice-lines td{border:1px solid #d4dde6;padding:8px;font-size:12px}
.invoice-lines th:nth-child(2),.invoice-lines td:nth-child(2){width:70px;text-align:center}
.invoice-lines th:nth-child(3),.invoice-lines td:nth-child(3),
.invoice-lines th:nth-child(4),.invoice-lines td:nth-child(4){width:130px;text-align:right}
.invoice-bottom{display:grid;grid-template-columns:1.45fr .95fr;gap:0;margin-top:24px}
.invoice-paybox{border:1px solid #d4dde6;background:#f7fafc;padding:12px;font-size:12px;line-height:1.55;min-height:180px}
.invoice-totals{border-collapse:collapse;width:100%}
.invoice-totals td{border:1px solid #d4dde6;padding:8px;font-size:12px}
.invoice-totals td:first-child{font-weight:800;text-align:right}
.invoice-totals td:last-child{text-align:right;font-weight:800}
.invoice-totals .grand td{background:#f7c8a8;font-size:13px}
.invoice-footer{margin-top:26px;background:#245c86;color:#fff;text-align:center;font-weight:800;padding:13px}
.invoice-language-switch{display:flex;gap:8px;align-items:center;margin:0 0 14px}
.invoice-language-switch button{border:1px solid var(--line);background:#fff;padding:8px 12px;border-radius:10px;font-weight:800}
.invoice-language-switch button.active{background:var(--teal);color:#fff;border-color:var(--teal)}
@media print{
 .invoice-language-switch{display:none!important}
 .invoice-paper{max-width:none;padding:10mm 12mm}
 .invoice-titlebar,.invoice-lines th,.invoice-footer{background:#245c86!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
 .invoice-totals .grand td{background:#f7c8a8!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

.owner-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0}
.owner-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:15px;box-shadow:var(--shadow)}
.owner-card b{display:block;font-size:24px}.owner-card span{font-size:12px;color:var(--muted)}
.owner-section{background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px;box-shadow:var(--shadow);margin-top:14px}
.payment-alert{background:#fff8e9;border:1px solid #f0d29b;border-radius:16px;padding:15px}
@media(max-width:900px){.owner-grid{grid-template-columns:repeat(2,1fr)}}

.checklist-box{background:#f7fafb;border:1px solid var(--line);border-radius:14px;padding:13px 15px;margin-top:10px}
.checklist-box h3{margin:0 0 10px}
.check-item{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}
.check-item:last-child{border-bottom:0}
.check-item input{width:20px;height:20px;margin-top:1px}
.photo-preview{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.photo-preview img{width:92px;height:72px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.booking-section-title{font-weight:900;font-size:16px;margin:14px 0 8px}
.guest-summary{background:#eef8f9;border:1px solid #cce9ec;border-radius:13px;padding:11px 13px}

.fee-control{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px;margin:12px 0;box-shadow:var(--shadow)}
.fee-control h3{margin:0 0 5px}.fee-grid{display:grid;grid-template-columns:repeat(2,minmax(260px,1fr));gap:8px;margin-top:10px}
.fee-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:11px;padding:9px 11px;background:#f8fbfc}
.fee-row label{display:flex;align-items:center;gap:9px;font-weight:800}.fee-row input{width:19px;height:19px}
.rate-table input{min-width:105px}
@media(max-width:850px){.fee-grid{grid-template-columns:1fr}}

.staff-hero{background:linear-gradient(135deg,#063f4d,#0b7885);color:#fff;border-radius:22px;padding:20px;box-shadow:var(--shadow);margin-bottom:14px}
.staff-hero-top{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
.staff-hero h1{margin:0;font-size:25px}.staff-hero p{margin:6px 0 0;opacity:.86}
.staff-next{margin-top:15px;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.24);border-radius:16px;padding:14px}
.staff-next b{font-size:18px}.staff-next small{display:block;margin-top:5px;opacity:.85}
.staff-view-switch{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
.staff-view-switch button{border:1px solid var(--line);background:#fff;border-radius:12px;padding:9px 14px;font-weight:850}
.staff-view-switch button.active{background:var(--teal);color:#fff;border-color:var(--teal)}
.staff-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;margin:12px 0}
.staff-kpi{background:#fff;border:1px solid var(--line);border-radius:17px;padding:14px;box-shadow:var(--shadow)}
.staff-kpi b{display:block;font-size:23px}.staff-kpi span{font-size:12px;color:var(--muted)}
.staff-agenda{display:grid;gap:10px}
.staff-day-group{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--shadow)}
.staff-day-title{display:flex;justify-content:space-between;align-items:center;background:#f4f8f9;padding:12px 14px;font-weight:900}
.staff-task{display:grid;grid-template-columns:62px 1fr auto;gap:12px;align-items:center;padding:13px 14px;border-top:1px solid var(--line)}
.staff-task:first-child{border-top:0}.staff-task-time{font-weight:900;font-size:15px}
.staff-task-main b{display:block;font-size:15px}.staff-task-main span{font-size:12px;color:var(--muted);display:block;margin-top:3px}
.staff-task .btn{white-space:nowrap}.staff-empty{background:#fff;border:1px dashed var(--line);border-radius:17px;padding:28px;text-align:center;color:var(--muted)}
.staff-role-chip{display:inline-flex;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.16);font-size:11px;font-weight:900}
@media(max-width:850px){
 .staff-kpis{grid-template-columns:repeat(2,1fr)}
 .staff-task{grid-template-columns:52px 1fr}
 .staff-task .btn{grid-column:1/-1;width:100%;font-size:15px;padding:12px}
 .staff-hero{border-radius:18px;padding:17px}
}

.staff-hero h1{font-weight:950!important;font-size:29px!important}
.staff-next b{font-size:21px!important;font-weight:950!important}
.staff-day-title{font-size:17px!important}
.staff-task-time{font-size:17px!important}
.staff-task-main b{font-size:18px!important;font-weight:950!important}
.staff-task-main span{font-size:14px!important;color:#405763!important}
.staff-kpi b{font-size:27px!important;font-weight:950!important}
.staff-kpi span{font-size:13px!important;font-weight:750!important}
.staff-quick-actions{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}
.staff-quick-actions .btn{font-size:16px;padding:12px 16px}
.staff-modal-title{font-size:18px;font-weight:950;margin:8px 0}
.staff-info-card{background:#eef8f9;border:1px solid #bddfe3;border-radius:15px;padding:14px;font-size:16px;line-height:1.5}
.staff-info-card b{font-size:19px}
.staff-complete-btn{width:100%;font-size:18px!important;padding:14px!important;margin-top:10px}
@media(max-width:850px){
 .modal h2{font-size:25px}.form label{font-size:15px;font-weight:850}
 .form input,.form select,.form textarea{font-size:16px;min-height:48px}
}

.completion-ready{display:none;background:#e7f8ee;border:2px solid #38a169;color:#146c3a;border-radius:14px;padding:13px;text-align:center;font-size:17px;font-weight:950;margin-top:10px}
.completion-ready.show{display:block}

.conditional-panel{display:none;background:#f5fbfc;border:1px solid #b8dfe3;border-radius:15px;padding:14px;margin-top:10px}
.conditional-panel.show{display:block}
.package-box{background:#fff8ed;border:1px solid #f3c892;border-radius:15px;padding:14px;margin-top:10px}
.package-box h4{margin:0 0 8px}.package-box ul{columns:2;margin:8px 0 0;padding-left:20px}.package-price{font-size:20px;font-weight:950}
.workflow-actions{display:flex;gap:7px;flex-wrap:wrap}
.email-preview{background:#f7fafb;border:1px solid var(--line);border-radius:14px;padding:13px;white-space:pre-wrap;line-height:1.5}
@media(max-width:700px){.package-box ul{columns:1}}

body.role-owner .admin-only-cost{display:none!important}

body[data-role="admin"] #staffdashboard{display:none!important}
body[data-role="owner"] .admin-only-cost{display:none!important}
body[data-role="owner"] #staffdashboard{display:none!important}

.unassigned-person{
  color:#a54d00;
  font-weight:900;
}
.assign-warning{
  margin-top:9px;
  padding:8px 10px;
  border-radius:9px;
  background:#fff1df;
  border:1px solid #f1bd78;
  color:#8a4200;
  font-weight:900;
  font-size:12px;
}
.taskcard:has(.unassigned-person){
  outline:3px solid #f0a340;
  background:#fffaf2;
}


.task-progress{background:#f2f8f9;border:1px solid #c6dfe3;border-radius:14px;padding:12px;margin:10px 0}.task-progress b{font-size:17px}.progress-bar{height:10px;background:#dfecee;border-radius:999px;overflow:hidden;margin-top:8px}.progress-bar span{display:block;height:100%;background:#1d7f8d;width:0;transition:width .2s}.task-checklist{display:grid;gap:9px;margin:12px 0}.task-check-item{display:flex;gap:10px;align-items:flex-start;padding:11px 12px;border:1px solid #d6e5e8;border-radius:12px;background:#fff}.task-check-item input[type="checkbox"]{width:20px;height:20px;margin-top:1px}.meter-block{border:1px solid #b9d8dd;background:#f6fbfc;border-radius:14px;padding:13px;margin:10px 0}.meter-block h4{margin:0 0 8px}.meter-photo-preview img{max-width:180px;max-height:130px;border-radius:10px;border:1px solid #cadcdf;margin-top:8px}.task-complete-note{display:none;background:#e8f7ee;border:2px solid #39a869;color:#17683e;border-radius:13px;padding:12px;font-weight:900;text-align:center;margin-top:12px}.task-complete-note.show{display:block}


/* Villa Curadise 8.6: absentieplanner en kostenoverzicht */
.compact-topbar{margin-bottom:12px}
.module-stats{display:grid;grid-template-columns:repeat(4,minmax(170px,1fr));gap:14px;margin:14px 0}
.absence-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}
.absence-card{border:1px solid #cfe3e7;border-left:7px solid #e17818;border-radius:14px;padding:14px;background:#fffaf4}
.absence-card.active-now{border-left-color:#b42318;background:#fff0ee}
.absence-card-top{display:flex;justify-content:space-between;gap:10px;align-items:center}
.absence-card-top span{font-size:11px;font-weight:900;letter-spacing:.05em;color:#b42318}
.absence-period{font-weight:800;margin-top:8px}
.absence-reason{margin-top:5px;color:#4f6870}
.absence-days{margin-top:8px;font-size:12px;color:#607983}
.absence-calendar-wrap{overflow-x:auto}
.absence-calendar-table{min-width:1050px;border-collapse:separate;border-spacing:2px}
.absence-calendar-table th,.absence-calendar-table td{text-align:center;min-width:28px;padding:7px 5px;border-radius:5px}
.absence-calendar-table td:first-child,.absence-calendar-table th:first-child{position:sticky;left:0;z-index:2;background:#fff;text-align:left;min-width:150px}
.absence-day-off{background:#fee4e2!important;color:#b42318;font-weight:900}
.absence-badge{background:#fee4e2;color:#b42318}
.absence-cancelled{opacity:.5}
.plan-absence-warning{background:#fff0dc;border:1px solid #f3c886;border-left:7px solid #e17818;border-radius:14px;padding:13px 16px;margin-bottom:14px}
.plan-absence-warning>div{display:flex;gap:9px;flex-wrap:wrap;margin-top:8px}
.plan-absence-warning span{background:white;border-radius:999px;padding:7px 11px;font-size:12px}
.staff-absence-banner{background:#fee4e2;color:#b42318;border-radius:14px;padding:13px 15px;margin-bottom:12px;display:flex;flex-direction:column;gap:4px}
.dashboard-cost-table{max-height:520px;overflow:auto}
.dashboard-cost-table table{min-width:1300px}
.dashboard-cost-table thead th{position:sticky;top:0;z-index:2}
@media(max-width:900px){
 .module-stats{grid-template-columns:repeat(2,minmax(140px,1fr))}
}

.cleaning-month-toolbar{
 display:flex!important;
 align-items:center;
 gap:10px;
 flex-wrap:wrap;
 background:#ffffff;
 border:1px solid #d6e4e7;
 border-radius:14px;
 padding:14px;
 margin:0 0 16px 0;
 box-shadow:0 8px 22px rgba(8,67,78,.06);
}
.cleaning-month-toolbar input,.cleaning-month-toolbar select{min-height:44px}

.workflow-actions{
 display:flex;
 gap:8px;
 flex-wrap:wrap;
 align-items:center;
}
.workflow-actions .btn{
 white-space:nowrap;
}


/* Villa Curadise 10.0 — productie-auth en cross-device */
.auth-pending > :not(#vcAuthGate):not(#vcForcePassword):not(.vc-startup-error){visibility:hidden!important}
.vc-auth-gate{display:none;position:fixed;inset:0;z-index:100000;background:linear-gradient(150deg,#073f4d,#0b7180);padding:24px;align-items:center;justify-content:center}
.vc-auth-gate.show{display:flex}
.vc-auth-card{width:min(430px,100%);background:#fff;border-radius:22px;padding:28px;box-shadow:0 28px 80px rgba(0,0,0,.28)}
.vc-auth-card img{display:block;width:150px;max-height:85px;object-fit:contain;margin:0 auto 10px}
.vc-auth-card h1{text-align:center;font-size:24px;margin:8px 0}
.vc-auth-card p{min-height:22px;color:#a13c2f;text-align:center}
.vc-auth-card form{display:grid;gap:14px}
.vc-auth-card label{display:grid;gap:6px;font-weight:800}
.vc-auth-card input{font-size:16px;min-height:48px}
.vc-auth-card button{min-height:50px;font-size:16px}
.vc-auth-card small{display:block;text-align:center;margin-top:16px;color:#607983}
.logout-nav{margin-top:auto!important}
body[data-role="owner"] .internal-cost,
body[data-role="owner"] [data-financial-internal],
body[data-role="owner"] .adminOnly{display:none!important}

@media (max-width: 980px){
 body{padding-bottom:76px}
 .sidebar{display:none!important}
 .main,.content,main{margin-left:0!important;width:100%!important;max-width:none!important}
 .mobile-nav{display:grid!important;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:9999;padding:7px max(7px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(7px,env(safe-area-inset-left));background:#063f4d;box-shadow:0 -8px 24px rgba(0,0,0,.18)}
 .mobile-nav button{min-width:0;min-height:56px;padding:6px 3px;font-size:10px;line-height:1.1;border-radius:10px}
 .mobile-nav button b{display:block;font-size:19px;margin-bottom:3px}
 .topbar{align-items:flex-start;gap:12px;flex-wrap:wrap}
 .topbar .actions,.toolbar,.actions{width:100%;display:flex;gap:8px;flex-wrap:wrap}
 .topbar input,.topbar select,.toolbar input,.toolbar select{min-height:44px;font-size:16px;flex:1 1 145px}
 .btn,button{min-height:44px;touch-action:manipulation}
 .tablebox{overflow:auto;-webkit-overflow-scrolling:touch}
 .tablebox table{min-width:760px}
 .row2,.dashboard-grid,.owner-grid,.stats,.module-stats{grid-template-columns:1fr 1fr!important}
 dialog{width:min(96vw,720px);max-height:92dvh;margin:auto}
 dialog form{max-height:78dvh;overflow:auto;-webkit-overflow-scrolling:touch}
}
@media (max-width: 620px){
 body{font-size:14px}
 .page,.content,.main-content,main{padding:12px!important}
 h1{font-size:23px!important}
 h2{font-size:18px!important}
 .row2,.dashboard-grid,.owner-grid,.stats,.module-stats{grid-template-columns:1fr!important}
 .panel,.card,.tablebox{border-radius:14px!important}
 .topbar .btn,.toolbar .btn{flex:1 1 135px}
 .mobile-nav button{font-size:9px}
 .tablebox table{min-width:680px}
 input,select,textarea{font-size:16px!important}
}
@supports (-webkit-touch-callout:none){
 input,select,textarea{font-size:16px!important}
}


/* 10.1 — veilige beheerder-testweergave */
.admin-preview-banner{
 position:sticky;top:0;z-index:10000;
 display:flex;align-items:center;justify-content:space-between;gap:14px;
 padding:10px 18px;background:#fff3cd;color:#5d4200;
 border-bottom:2px solid #e2ad25;box-shadow:0 4px 16px rgba(0,0,0,.12);
}
.admin-preview-banner button{
 min-height:38px;padding:8px 14px;border:0;border-radius:9px;
 background:#063f4d;color:#fff;font-weight:800;cursor:pointer;
}
@media(max-width:620px){
 .admin-preview-banner{position:fixed;left:0;right:0;top:0;flex-direction:column;align-items:stretch;font-size:12px;padding:9px 12px}
 .admin-preview-active .app{padding-top:92px}
 .admin-preview-banner button{width:100%}
}


/* =========================================================
   Villa Curadise 11.1 — Mobile production layer
   Windows, macOS, Android, iOS/iPadOS and tablets
   ========================================================= */
html{
 -webkit-text-size-adjust:100%;
 text-size-adjust:100%;
 scroll-behavior:smooth;
}
body{
 min-height:100dvh;
 overscroll-behavior-y:none;
 -webkit-tap-highlight-color:transparent;
}
img,svg,canvas{max-width:100%}
button,a,input,select,textarea{touch-action:manipulation}
input,select,textarea{max-width:100%}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
 outline:3px solid rgba(13,166,179,.32);
 outline-offset:2px;
}
.tablebox{
 max-width:100%;
 -webkit-overflow-scrolling:touch;
 scrollbar-gutter:stable;
}
table{font-variant-numeric:tabular-nums}
dialog{
 max-height:min(92dvh,900px);
 overflow:hidden;
}
dialog .modal{
 max-height:92dvh;
 overflow:auto;
 overscroll-behavior:contain;
 -webkit-overflow-scrolling:touch;
}
body.mobile-menu-open{overflow:hidden}
.mobile-menu-overlay{
 display:none;
 position:fixed;
 inset:0;
 z-index:20000;
 background:rgba(3,31,39,.58);
 align-items:flex-end;
 justify-content:center;
 padding:0;
}
.mobile-menu-overlay.show{display:flex}
.mobile-menu-sheet{
 width:100%;
 max-height:min(82dvh,760px);
 background:#fff;
 border-radius:22px 22px 0 0;
 padding:12px 14px calc(14px + env(safe-area-inset-bottom));
 box-shadow:0 -20px 70px rgba(0,0,0,.28);
 overflow:auto;
 -webkit-overflow-scrolling:touch;
 animation:vcSheetUp .18s ease-out;
}
@keyframes vcSheetUp{from{transform:translateY(22px);opacity:.3}to{transform:none;opacity:1}}
.mobile-menu-head{
 position:sticky;
 top:-12px;
 z-index:2;
 display:flex;
 justify-content:space-between;
 align-items:center;
 gap:12px;
 background:#fff;
 padding:11px 2px 12px;
 border-bottom:1px solid var(--line);
}
.mobile-menu-head b{display:block;font-size:20px}
.mobile-menu-head span{display:block;font-size:12px;color:var(--muted);margin-top:3px}
.mobile-menu-head button{
 width:42px;height:42px;border:0;border-radius:50%;
 background:#e7f3f4;color:var(--navy);font-weight:900;
}
.mobile-menu-items{
 display:grid;
 grid-template-columns:repeat(2,minmax(0,1fr));
 gap:9px;
 padding:13px 0;
}
.mobile-menu-items button{
 display:flex;align-items:center;gap:10px;
 min-height:54px;
 border:1px solid var(--line);
 border-radius:13px;
 background:#fff;
 color:var(--text);
 text-align:left;
 padding:10px 12px;
 font-weight:800;
}
.mobile-menu-items button b{font-size:20px}
.mobile-menu-items button.active{
 border-color:var(--teal);
 background:#e8f8f9;
 color:var(--navy);
}
.mobile-menu-logout{
 width:100%;min-height:48px;border:0;border-radius:12px;
 background:#fee8e6;color:var(--red);font-weight:900;
}
.mobile-nav button span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

@media (hover:none) and (pointer:coarse){
 .btn,.nav button,.mobile-nav button,.toolbar button,.card-actions button{
   min-height:44px;
 }
 .taskcard:hover{transform:none}
}

@media(max-width:980px){
 .content{padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right))}
 .topbar{position:relative}
 .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
 .stat{min-width:0}
 .stat b{font-size:clamp(20px,5vw,27px);overflow-wrap:anywhere}
 .dashboard-grid{grid-template-columns:1fr}
 .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .toolbar{align-items:stretch}
 .toolbar input,.toolbar select,.toolbar .btn{min-height:46px}
 .planboard-shell{padding:10px}
 .planboard{scroll-snap-type:x proximity}
 .daycol{scroll-snap-align:start}
}

@media(max-width:720px){
 .content{padding:14px 12px calc(92px + env(safe-area-inset-bottom))}
 .topbar{display:grid;grid-template-columns:1fr;gap:12px}
 .topbar h1{font-size:clamp(23px,7vw,29px);line-height:1.08}
 .topbar .actions{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
 .topbar .actions .btn,.topbar .actions input,.topbar .actions select{width:100%;min-width:0}
 .stats,.grid,.row2,.dashboard-grid,.cleaning-grid,.billing-grid{grid-template-columns:1fr!important}
 .stat{min-height:84px;padding:13px}
 .panel,.card,.tablebox,.stat{border-radius:14px}
 .panel{padding:13px}
 .card-actions,.modal-actions{flex-wrap:wrap}
 .card-actions .btn,.modal-actions .btn{flex:1 1 125px}
 .tablebox table{min-width:720px}
 th,td{padding:10px 9px}
 .chart{height:205px;overflow-x:auto}
 .planboard{grid-template-columns:repeat(7,minmax(86vw,1fr));gap:9px}
 .daycol{min-height:480px}
 .planboard-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 .mobile-nav{
   grid-template-columns:repeat(5,minmax(0,1fr))!important;
   gap:3px;
   padding:6px max(5px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(5px,env(safe-area-inset-left))!important;
 }
 .mobile-nav button{
   min-height:58px!important;
   border-radius:10px!important;
   overflow:hidden;
 }
 dialog{
   width:100%;
   max-width:none;
   max-height:96dvh;
   margin:auto 0 0;
   border-radius:20px 20px 0 0;
 }
 dialog .modal{max-height:96dvh;padding:16px 14px calc(18px + env(safe-area-inset-bottom))}
 .invoice-preview{padding:18px 12px}
}

@media(max-width:420px){
 .topbar .actions{grid-template-columns:1fr}
 .stats{grid-template-columns:1fr!important}
 .mobile-menu-items{grid-template-columns:1fr}
 .planboard-summary{grid-template-columns:1fr 1fr!important}
 .mobile-nav button{font-size:8.5px!important}
 .mobile-nav button b{font-size:18px!important}
}

@media(min-width:721px) and (max-width:1180px){
 .app{grid-template-columns:220px 1fr}
 .content{padding:20px}
 .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media(orientation:landscape) and (max-height:520px){
 .mobile-menu-sheet{max-height:94dvh}
 dialog{max-height:94dvh}
 dialog .modal{max-height:94dvh}
 .mobile-nav button{min-height:48px!important}
}

@media print{
 .mobile-nav,.mobile-menu-overlay,.admin-preview-banner{display:none!important}
}

/* Villa Curadise 12.2 notifications */
[data-unread]:not([data-unread=""]){position:relative}
[data-unread]:not([data-unread=""])::after{
 content:attr(data-unread);
 position:absolute;
 top:3px;
 right:5px;
 min-width:19px;
 height:19px;
 padding:0 5px;
 border-radius:12px;
 background:#d92d20;
 color:#fff;
 font-size:11px;
 line-height:19px;
 text-align:center;
 font-weight:900;
 box-shadow:0 2px 7px rgba(0,0,0,.22);
}
.notice.ok{border-color:#9ad7b0;background:#effaf3}
.notice .btn{margin-top:10px}

/* Villa Curadise 12.4 mobile branding and device hardening */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{min-width:320px;overflow-x:hidden}
img{max-width:100%}
.brand img{border-radius:14px;background:#fff}
@supports (min-height:100dvh){.app{min-height:100dvh}.sidebar{height:100dvh}}
@media(max-width:720px){
  input,select,textarea{font-size:16px}
  .content>*{min-width:0}
  .toolbar>*{max-width:100%}
}

/* Villa Curadise 12.5 – mobile-first live gebruikers en meldingen */
.auth-link{border:0;background:transparent;color:#087986;text-decoration:underline;font-weight:700;cursor:pointer;padding:12px;width:100%}
.vc-force-password{position:fixed;inset:0;background:rgba(0,42,50,.82);z-index:100000;display:none;align-items:center;justify-content:center;padding:18px}.vc-force-password.show{display:flex}.vc-force-card{background:#fff;border-radius:20px;width:min(440px,100%);padding:28px;box-shadow:0 24px 70px rgba(0,0,0,.35)}.vc-force-card img{display:block;width:92px;margin:0 auto 12px}.vc-force-card h2{text-align:center}.vc-force-card label{display:block;font-weight:700;margin:14px 0}.vc-force-card input{width:100%;min-height:48px;margin-top:6px;padding:10px;border:1px solid #9db4ba;border-radius:10px}.vc-force-error{color:#b42318;min-height:24px}.vc-force-card button{width:100%;min-height:48px}
.user-help{background:#eef8f9;border:1px solid #c5e4e7;border-radius:14px;padding:14px;margin-bottom:12px;display:flex;flex-direction:column;gap:4px}.user-actions{display:flex;gap:6px;flex-wrap:wrap}.notice.compact{padding:12px;margin:8px 0}.responsive-table{overflow:auto}
@media(max-width:760px){
 body{font-size:15px}.content,main{padding-left:10px!important;padding-right:10px!important}.panel{padding:14px!important;border-radius:14px}.topbar{align-items:flex-start;gap:12px}.topbar h1{font-size:1.45rem}.toolbar,.actions{width:100%;display:grid!important;grid-template-columns:1fr;gap:8px}.toolbar>* ,.actions>*{width:100%!important;min-height:46px}.btn{min-height:44px;padding:10px 13px}.row2,.dashboard-grid,.owner-grid,.cleaning-grid{grid-template-columns:1fr!important}.modal{width:min(100%,calc(100vw - 16px))!important;max-height:94vh;overflow:auto;padding:16px!important}dialog{padding:0}.responsive-table table,.responsive-table tbody,.responsive-table tr,.responsive-table td{display:block;width:100%}.responsive-table thead{display:none}.responsive-table tr{border:1px solid #dce8ea;border-radius:14px;margin-bottom:12px;padding:10px;background:#fff}.responsive-table td{border:0!important;padding:7px 6px!important}.responsive-table td:before{content:attr(data-label);display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#63777d;font-weight:800;margin-bottom:3px}.user-actions .btn{flex:1 1 46%;font-size:12px}.vc-auth-card{width:min(94vw,430px)!important;padding:22px!important}.vc-auth-card input{font-size:16px!important;min-height:48px}.staff-task{grid-template-columns:64px 1fr!important}.planboard-shell{overflow-x:auto}.planboard{min-width:900px}.mobile-nav{padding-bottom:max(7px,env(safe-area-inset-bottom))}.staff-hero{padding:16px!important}.staff-hero-top{display:block!important}.staff-hero-top .btn{margin-top:12px;width:100%}
}
@media(min-width:761px) and (max-width:1100px){.dashboard-grid{grid-template-columns:1fr}.content{padding:18px}.modal{width:min(760px,94vw)}}


/* Villa Curadise 13.0 — schaalbaar gebruikers- en eigenarenbeheer */
.directory-tabs{display:flex;gap:8px;margin:0 0 12px;position:sticky;top:0;z-index:6;background:var(--bg,#eef3f4);padding:8px 0}.directory-tabs button{border:1px solid #c7dfe2;background:#fff;color:#073f4b;border-radius:12px;padding:11px 16px;font-weight:900;cursor:pointer;min-height:46px}.directory-tabs button.active{background:#0d9eaa;color:#fff;border-color:#0d9eaa}.directory-tabs button span{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;margin-left:6px;padding:0 7px;border-radius:14px;background:rgba(6,63,77,.1)}.directory-tabs button.active span{background:rgba(255,255,255,.22)}
.directory-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.directory-search{display:flex;align-items:center;gap:8px;flex:1;max-width:720px;background:#fff;border:1px solid #bfd5d9;border-radius:12px;padding:0 12px}.directory-search input{border:0!important;outline:0;width:100%;min-height:48px;background:transparent}.directory-stats{display:flex;gap:8px;flex-wrap:wrap}.directory-stats span{background:#fff;border:1px solid #d4e4e7;border-radius:12px;padding:9px 12px;font-size:13px}.directory-pager{display:flex;align-items:center;justify-content:center;gap:14px;padding:16px 8px}.directory-result-count{text-align:right;padding:10px;color:#60757a;font-size:13px}.empty-directory{text-align:center;padding:28px;color:#60757a}.directory-pager button:disabled{opacity:.4;cursor:not-allowed}
@media(max-width:760px){.directory-tabs{top:0;display:grid;grid-template-columns:1fr 1fr}.directory-tabs button{padding:9px 6px;font-size:12px}.directory-toolbar{display:grid;grid-template-columns:1fr}.directory-search{max-width:none}.directory-stats{display:grid;grid-template-columns:1fr 1fr}.directory-pager{display:grid;grid-template-columns:1fr 1fr}.directory-pager span{grid-column:1/-1;grid-row:1;text-align:center}.directory-pager button{width:100%}}

/* Villa Curadise 13.1 - woningkoppeling en stabiel zoeken */
.vc-hidden-home-select{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
.vc-home-picker{display:grid;gap:10px;margin:4px 0 12px}
.vc-home-picker-note{display:grid;gap:3px;padding:11px 13px;border-radius:12px;background:#eef8f9;border:1px solid #cde9ec;color:#063f49}
.vc-home-picker-note span{font-size:.9rem;line-height:1.35}
.vc-home-search{display:flex;align-items:center;gap:8px;border:1px solid #cbd5db;border-radius:12px;padding:0 12px;background:#fff}
.vc-home-search input{border:0!important;outline:0!important;width:100%;min-height:44px;background:transparent!important}
.vc-selected-homes{display:flex;flex-wrap:wrap;gap:7px;min-height:34px;align-items:center}
.vc-home-chip{border:0;border-radius:999px;background:#dff3f5;color:#064f5b;padding:7px 10px;font-weight:700;cursor:pointer}
.vc-home-chip b{margin-left:5px}
.vc-home-results{max-height:220px;overflow:auto;border:1px solid #d6e0e4;border-radius:12px;background:#fff;padding:5px}
.vc-home-result{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;cursor:pointer}
.vc-home-result:hover,.vc-home-result.selected{background:#eaf7f8}
.vc-home-result input{width:18px;height:18px;flex:0 0 auto}
.vc-no-home{color:#68777d;font-size:.9rem;padding:6px}
@media(max-width:700px){.vc-home-results{max-height:190px}.vc-home-chip{font-size:.84rem}.vc-home-picker-note{font-size:.9rem}}


/* Villa Curadise 14.0 — wachtwoordoogje */
.vc-password-wrap{position:relative;display:block;width:100%;margin-top:6px}
.vc-password-wrap>input{width:100%!important;margin-top:0!important;padding-right:52px!important}
.vc-password-eye{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:42px;height:40px;border:0;border-radius:9px;background:transparent;color:#075867;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:20px;line-height:1}
.vc-password-eye:hover,.vc-password-eye:focus-visible{background:#e6f4f5;outline:2px solid #0aa3ad;outline-offset:1px}
.vc-password-eye.active{background:#dff3f5}

/* Villa Curadise 14.1.1 — mobiele wachtwoordvelden definitief hersteld */
.vc-force-card .vc-password-wrap,
.vc-auth-card .vc-password-wrap{position:relative!important;display:block!important;width:100%!important;margin-top:6px!important}
.vc-force-card .vc-password-wrap>input,
.vc-auth-card .vc-password-wrap>input{display:block!important;width:100%!important;min-height:48px!important;margin:0!important;padding:10px 52px 10px 12px!important;box-sizing:border-box!important}
.vc-force-card .vc-password-eye,
.vc-auth-card .vc-password-eye{position:absolute!important;right:5px!important;top:50%!important;transform:translateY(-50%)!important;width:42px!important;min-width:42px!important;max-width:42px!important;height:40px!important;min-height:40px!important;padding:0!important;margin:0!important;border:0!important;border-radius:9px!important;background:transparent!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:20px!important;line-height:1!important;z-index:2!important;box-shadow:none!important}
.vc-force-card .vc-password-eye.active,
.vc-auth-card .vc-password-eye.active{background:#dff3f5!important}
@media(max-width:760px){
 .vc-force-card{padding:22px!important;max-height:94dvh!important;overflow:auto!important}
 .vc-force-card .vc-password-eye,.vc-auth-card .vc-password-eye{width:44px!important;min-width:44px!important;max-width:44px!important;height:42px!important;min-height:42px!important}
}

/* 14.2 Facturatie workflow */
.invoice-actions-wrap{display:flex;flex-wrap:wrap;gap:6px;min-width:330px}.invoice-actions-wrap .btn{padding:8px 10px;font-size:12px;white-space:nowrap}.status-concept{background:#fff3cd}.status-goedgekeurd{background:#dbeafe}.status-verzonden,.status-openstaand{background:#ffedd5}.status-herinnering{background:#fee2e2}.status-betaald{background:#dcfce7}.status-gearchiveerd{background:#e5e7eb}@media(max-width:760px){.invoice-actions-wrap{min-width:0}.invoice-actions-wrap .btn{flex:1 1 46%}}

/* Villa Curadise 14.3.7 — check-in/out dossier & mobiele formulieren */
.meter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:12px}
.inspection-photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:10px}
.inspection-photo-grid img{width:100%;height:145px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.workflow-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
@media(max-width:760px){
 .meter-grid{grid-template-columns:1fr}
 .inspection-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .inspection-photo-grid img{height:120px}
 .workflow-actions .btn{flex:1 1 100%;width:100%}
 .meter-block input,.meter-block textarea{font-size:16px}
}
.notification-read-receipts{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:12px}.notification-read-receipts .receipt{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px}.notification-read-receipts .read{background:#e7f7ec;color:#176b39}.notification-read-receipts .unread{background:#fff4dd;color:#8a5a00}


/* Villa Curadise 15.4.6 — veilige mobiele bediening en Android landscape */
.taskperson-filter{border:0;background:transparent;color:inherit;padding:0;margin:0;font:inherit;font-weight:800;text-align:left;cursor:pointer;text-decoration:none}
.taskperson-filter:hover,.taskperson-filter:focus-visible{text-decoration:underline;outline:none;color:var(--teal2)}

@media (orientation:landscape) and (max-height:560px) and (min-width:721px){
 .app{display:block!important;min-height:100dvh!important}
 .sidebar{display:none!important}
 .mobile-nav{display:grid!important;grid-template-columns:repeat(5,1fr)!important;position:fixed!important;left:0!important;right:0!important;bottom:0!important;z-index:50!important;background:#fff!important;border-top:1px solid var(--line)!important;padding:6px 3px max(6px,env(safe-area-inset-bottom))!important}
 .mobile-nav button{min-height:44px!important;font-size:9px!important}
 .mobile-nav b{display:block!important;font-size:18px!important}
 .content{padding:12px 14px 72px!important;max-width:100vw!important;overflow-x:hidden!important}
 .topbar{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;align-items:start!important;gap:10px!important;margin-bottom:10px!important}
 .topbar h1{font-size:1.65rem!important;line-height:1.05!important;white-space:normal!important}
 .topbar .actions{display:flex!important;width:auto!important;gap:7px!important;align-items:center!important}
 .topbar .actions>*{width:auto!important;min-height:42px!important}
 .stats{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}
 .stat{min-width:0!important;min-height:88px!important;padding:12px!important;gap:10px!important}
 .stat-icon{width:42px!important;height:42px!important;flex:0 0 42px!important;font-size:20px!important}
 .stat>div{min-width:0!important}
 .stat b{font-size:clamp(19px,3.2vw,25px)!important;line-height:1.08!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
 .stat span{font-size:12px!important;line-height:1.2!important}
 .dashboard-grid{grid-template-columns:1fr!important}
 dialog{max-height:92dvh!important}
 dialog .modal{max-height:92dvh!important;overflow:auto!important}
}

/* 16.0.54 — geïsoleerd Snel plannen */
.quick-plan-section{background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px;margin:0 0 18px;box-shadow:var(--shadow)}
.quick-plan-section h2{display:flex;align-items:center;gap:9px;margin:0 0 12px;font-size:18px}.quick-plan-section h2 span{background:#eef5f6;border-radius:999px;padding:3px 9px;font-size:13px}.quick-plan-card{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(190px,1fr) minmax(270px,1.2fr);gap:14px;align-items:center;padding:13px;border:1px solid #dce8ea;border-radius:14px;margin:9px 0;background:#fff}.quick-plan-card.overdue{border-left:5px solid #c84a3b}.quick-plan-main{display:grid;gap:3px}.quick-plan-main b{font-size:16px}.quick-plan-main span,.quick-plan-main small,.quick-plan-ai small{color:#63777d}.quick-plan-date{font-size:12px;font-weight:800;letter-spacing:.03em}.quick-plan-ai{display:grid;gap:2px;padding:9px 11px;border-radius:11px;background:#f4f8f8}.quick-plan-ai span{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#63777d;font-weight:800}.quick-plan-action{display:grid;grid-template-columns:minmax(130px,1fr) auto auto;gap:7px}.quick-plan-action select{min-height:42px}.quick-plan-empty{padding:18px;border-radius:12px;background:#f5faf7;color:#286b48;font-weight:700}.overdue-section{background:#fffdfc}@media(max-width:900px){.quick-plan-card{grid-template-columns:1fr}.quick-plan-action{grid-template-columns:1fr 1fr}.quick-plan-action select{grid-column:1/-1}}

/* 16.0.55 — alleen Snel plannen filters / overdue accent */
.quick-plan-filters{display:flex;gap:10px;align-items:center;margin:0 0 16px}.quick-plan-filters select{min-width:220px;min-height:44px;background:#fff}.quick-planning-kpis .plan-kpi.overdue-alert{background:#fff0ee!important;border:2px solid #c84a3b!important}.quick-planning-kpis .plan-kpi.overdue-alert b,.quick-planning-kpis .plan-kpi.overdue-alert span{color:#a62f24!important}.quick-plan-section.overdue-section.has-overdue{background:#fff6f4;border:2px solid #c84a3b}.quick-plan-section.overdue-section.has-overdue h2{color:#a62f24}.quick-plan-section.overdue-section.has-overdue h2 span{background:#c84a3b;color:#fff}.quick-plan-card.overdue{background:#fff9f8;border-color:#e7b5ae;border-left:6px solid #c84a3b}.quick-plan-card.overdue .quick-plan-date{color:#a62f24}.quick-plan-action.details-only{grid-template-columns:auto;justify-content:end}@media(max-width:700px){.quick-plan-filters{display:grid;grid-template-columns:1fr}.quick-plan-filters select{min-width:0;width:100%}}

/* 16.0.57 — achterstallige tegel klikbaar, normale afrondroute via planbord */
.quick-planning-kpis .overdue-kpi-button{font:inherit;text-align:left;width:100%;cursor:pointer}.quick-planning-kpis .overdue-kpi-button:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(0,0,0,.08)}.quick-planning-kpis .overdue-kpi-button:disabled{cursor:default;opacity:1}.quick-plan-card.overdue .quick-plan-action.details-only{align-self:center}
