:root{--bg:#f6f4ef;--surface:#fff;--text:#1d2327;--muted:#5d676d;--border:#dedad1;--accent:#1f4e5f;--accent-soft:#e3eef1;--warning-bg:#fff4d6;--warning-text:#6b4e00;--error-bg:#fdecea;--error-text:#8a1c12;--success-bg:#e6f4ea;--success-text:#1e5b30;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-family:system-ui,Segoe UI,Roboto,sans-serif;line-height:1.5}*{box-sizing:border-box}body{background:var(--bg);margin:0}.app{max-width:1120px;margin:0 auto;padding:2rem 1rem 3rem}.app-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:2rem;display:flex}.user-menu{color:var(--muted);align-items:center;gap:.75rem;display:flex}.login{justify-content:center;display:flex}.login-card{border:1px solid var(--border);background:var(--surface);border-radius:12px;flex-direction:column;width:100%;max-width:380px;padding:1.5rem;display:flex}.login-intro{color:var(--muted);margin:0 0 1rem}.login-card label{margin:.75rem 0 .25rem;font-weight:500}.login-card input{border:1px solid var(--border);font:inherit;border-radius:8px;padding:.6rem .75rem}.login-card input:focus-visible{outline:3px solid var(--accent);outline-offset:1px}.login-card .button-primary{margin-top:1.25rem}.button-primary{border-color:var(--accent);background:var(--accent);color:#fff}.button-primary:hover:not(:disabled){background:#173d4a}button:disabled{opacity:.6;cursor:not-allowed}.message{border-radius:8px;margin:0 0 .5rem;padding:.6rem .75rem}.message--info{background:var(--accent-soft);color:var(--accent)}.message--error{background:var(--error-bg);color:var(--error-text)}.message--success{background:var(--success-bg);color:var(--success-text)}.main-nav{border-bottom:1px solid var(--border);gap:.25rem;margin:-1rem 0 1.5rem;display:flex}.main-nav a{color:var(--muted);border-bottom:3px solid #0000;padding:.5rem .75rem;font-weight:500;text-decoration:none}.main-nav a:hover{color:var(--accent)}.main-nav a.active{border-bottom-color:var(--accent);color:var(--accent)}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.page-header h2{margin:0}a.button{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:.5rem 1rem;font-weight:500;text-decoration:none;display:inline-block}a.button:hover{background:var(--accent-soft)}a.button-primary{border-color:var(--accent);background:var(--accent);color:#fff}a.button-primary:hover{background:#173d4a}a:focus-visible{outline:3px solid var(--accent);outline-offset:2px}a{color:var(--accent)}.toolbar{flex-wrap:wrap;gap:1rem;margin-bottom:1rem;display:flex}.toolbar .field{flex:220px}.toolbar .field:last-child{flex:0 180px}.field{border:0;flex-direction:column;gap:.25rem;margin:0 0 1rem;padding:0;display:flex}.field label,.field legend{padding:0;font-weight:500}.field input:not([type=radio]):not([type=checkbox]),.field select{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:inherit;border-radius:8px;padding:.55rem .75rem}.field input:focus-visible,.field select:focus-visible{outline:3px solid var(--accent);outline-offset:1px}.field input[aria-invalid=true],.field[aria-invalid=true] .radio-group{border-color:var(--error-text)}.field-error{color:var(--error-text);margin:0;font-size:.875rem}.radio-group{gap:1.5rem;padding:.25rem 0;display:flex}.radio{cursor:pointer;align-items:center;gap:.4rem;font-weight:400;display:flex}.radio input{width:1.1rem;height:1.1rem;accent-color:var(--accent)}.form-card{border:1px solid var(--border);background:var(--surface);border-radius:12px;max-width:520px;padding:1.5rem}.form-actions{gap:.75rem;margin-top:.5rem;display:flex}.data-table{border-collapse:collapse;border:1px solid var(--border);background:var(--surface);border-radius:10px;width:100%;overflow:hidden}.data-table th,.data-table td{border-bottom:1px solid var(--border);text-align:left;padding:.65rem 1rem}.data-table th{background:var(--bg);color:var(--muted);font-size:.875rem;font-weight:600}.data-table tbody tr:last-child td{border-bottom:0}.data-table .cell-actions{text-align:right;white-space:nowrap}.row--highlight td{background:var(--success-bg)}.badge{border-radius:999px;padding:.1rem .6rem;font-size:.8125rem;font-weight:600;display:inline-block}.badge--band{background:var(--accent-soft);color:var(--accent)}.badge--solist{background:var(--warning-bg);color:var(--warning-text)}.empty{border:1px dashed var(--border);text-align:center;color:var(--muted);border-radius:10px;padding:1.5rem}.empty p{margin:0 0 .75rem}.spinner--inline{vertical-align:middle;width:.8rem;height:.8rem;margin-left:.5rem;display:inline-block}.muted{color:var(--muted)}.table-scroll{overflow-x:auto}.data-table .num,.amounts-table td{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.data-table .cell-actions a+a{margin-left:1rem}.row--muted td{color:var(--muted);font-style:italic}.badge--status-actief{background:var(--success-bg);color:var(--success-text)}.badge--status-toekomstig{background:var(--accent-soft);color:var(--accent)}.badge--status-beeindigd{color:var(--muted);background:#ecebe7}.filter-note{color:var(--muted);margin:-.5rem 0 1rem}.link-button{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.link-button:hover{background:0 0}.breadcrumb{color:var(--muted);margin:0 0 .5rem;font-size:.875rem}.form-card--wide{max-width:760px}.fieldset-group{border:1px solid var(--border);border-radius:10px;margin:0 0 1rem;padding:1rem}.fieldset-group>legend{padding:0 .25rem;font-weight:600}.field-row{flex-wrap:wrap;gap:1rem;display:flex}.field-row>.field{flex:220px}.field-hint{color:var(--muted);margin:0;font-size:.875rem}.fieldset-group>.field-hint{margin-bottom:.75rem}.euro-input{align-items:center;gap:.4rem;display:flex}.euro-input span{color:var(--muted)}.preview{background:var(--bg);border-radius:8px;padding:.75rem 1rem}.preview__empty{color:var(--muted);margin:0}.amounts-table{border-collapse:collapse;width:100%;max-width:520px}.amounts-table caption{text-align:left;margin-bottom:.25rem;font-weight:600}.amounts-table th,.amounts-table td{text-align:left;padding:.3rem 0;font-weight:400}.amounts-table td{text-align:right}.amounts-table__sub th,.amounts-table__sub td{color:var(--muted);padding-left:1.25rem;font-size:.9375rem}.amounts-table__total th,.amounts-table__total td{border-top:1px solid var(--border);font-weight:700}.detail-grid{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;display:flex}.details{grid-template-columns:max-content 1fr;gap:.4rem 1.25rem;margin:0;display:grid}.details dt{color:var(--muted)}.details dd{margin:0}.detail-actions{flex-wrap:wrap;gap:.5rem;display:flex}.action-card{margin-bottom:1.5rem}.action-card h3{margin-top:0}.message--warning{background:var(--warning-bg);color:var(--warning-text)}.message p{margin:0}.message p+p{margin-top:.4rem}h3{margin:1.5rem 0 .75rem;font-size:1.1rem}.calculation{border:1px solid var(--border);background:var(--surface);border-radius:12px;margin-top:2rem;padding:1.25rem}.calculation h3{margin-top:0}.calculation h4{margin:1rem 0 .5rem}.month-picker__row{gap:.5rem;max-width:320px;display:flex}.blocks{grid-template-columns:repeat(4,1fr);gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:grid}.block{border:1px dashed var(--border);color:var(--muted);border-radius:8px;flex-direction:column;padding:.5rem .75rem;font-size:.875rem;display:flex}.block--on{border-style:solid;border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.block__days{font-size:1rem;font-weight:700}.is-stale{opacity:.6}@media (width<=560px){.blocks{grid-template-columns:repeat(2,1fr)}.details{grid-template-columns:1fr}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}h1{color:var(--accent);margin:0 0 .5rem;font-size:1.75rem}h2{margin:0 0 1rem;font-size:1.25rem}.notice{background:var(--warning-bg);color:var(--warning-text);border-radius:999px;margin:0;padding:.25rem .75rem;font-size:.875rem;display:inline-block}.summary{color:var(--muted);margin:0 0 1rem}.room-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.room-card{border:1px solid var(--border);background:var(--surface);border-radius:10px;align-items:center;gap:.75rem;padding:.875rem 1rem;display:flex}.room-number{background:var(--accent-soft);width:2.25rem;height:2.25rem;color:var(--accent);font-variant-numeric:tabular-nums;border-radius:8px;place-items:center;font-weight:700;display:grid}.room-name{font-weight:500}.status{color:var(--muted);align-items:center;gap:.5rem;display:flex}.status--error{background:var(--error-bg);color:var(--error-text);border-radius:10px;flex-wrap:wrap;justify-content:space-between;gap:.75rem;padding:.75rem 1rem}.status--error p{margin:0}button{background:var(--surface);color:inherit;font:inherit;cursor:pointer;border:1px solid;border-radius:8px;padding:.5rem 1rem}button:hover{background:var(--accent-soft)}button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:1rem;height:1rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation:none}}.nowrap{white-space:nowrap}.button-danger,button.button-danger{border-color:var(--error-text);background:var(--surface);color:var(--error-text)}.action-card--danger .button-danger,button.button-danger:hover:not(:disabled){background:var(--error-text);color:#fff}.action-card--danger{border-color:var(--error-text)}.action-card--danger .details{margin-bottom:1rem}.field textarea{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:inherit;resize:vertical;border-radius:8px;padding:.55rem .75rem}.field textarea:focus-visible{outline:3px solid var(--accent);outline-offset:1px}.compare-table th[scope=col]{text-align:right;font-weight:600}.compare-table td{padding-left:1.5rem}.row--changed th,.row--changed td{font-weight:700}.history ul{margin:0;padding:0;list-style:none}.history li{border-bottom:1px solid var(--border);padding:.6rem 0}.history li p{margin:0}.history li .muted{font-size:.875rem}.data-table--compact th,.data-table--compact td{padding:.6rem .65rem}.holidays{margin-top:2rem}.section-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.section-header h3{margin:0}.holidays>.field-hint{margin:.5rem 0 1rem}.holidays .action-card h4{margin:0 0 .75rem}.inline-form{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.inline-form select{border:1px solid var(--border);font:inherit;border-radius:8px;padding:.4rem .6rem}.inline-confirm{margin-top:.5rem}.holiday-history{margin-top:.75rem}.holiday-history summary{cursor:pointer;color:var(--accent)}.holiday-history ul{margin:.5rem 0 0;padding-left:1.25rem}.holiday-heading{color:var(--success-text)}.sub-nav{flex-wrap:wrap;gap:.5rem;margin:0 0 1rem;display:flex}.sub-nav a{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:999px;padding:.35rem .85rem;font-size:.9375rem;text-decoration:none}.sub-nav a.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}.period-label{margin:0 0 .75rem;font-size:1.05rem}.summary-cards{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.75rem;margin:0 0 .75rem;padding:0;list-style:none;display:grid}.summary-card{border:1px solid var(--border);background:var(--surface);border-radius:10px;flex-direction:column;gap:.25rem;padding:.9rem 1rem;display:flex}.summary-card--primary{border-color:var(--accent);background:var(--accent-soft)}.summary-card__label{color:var(--muted);font-size:.875rem}.summary-card__value{font-variant-numeric:tabular-nums;font-size:1.35rem;font-weight:700}.revenue-note{color:var(--muted);margin:0 0 1rem;font-size:.875rem}.revenue-table tbody th,.revenue-table tfoot th{text-align:left;color:var(--text);background:0 0;font-size:1rem;font-weight:500}.revenue-table tfoot th,.revenue-table tfoot td{border-top:2px solid var(--border);font-weight:700}.revenue-table .badge{margin-left:.4rem}.extra-totals{flex-wrap:wrap;gap:.5rem 2rem;margin:.75rem 0 1.5rem;display:flex}.extra-totals div{gap:.5rem;display:flex}.extra-totals dt{color:var(--muted)}.extra-totals dd{font-variant-numeric:tabular-nums;margin:0;font-weight:600}.badge--holiday{background:var(--success-bg);color:var(--success-text)}.small{font-size:.8125rem}.app:has(.planning-grid){max-width:1440px}.planning-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:.75rem;display:flex}.planning-nav{gap:.5rem;display:flex}.planning-date{min-width:200px;margin:0}.planning-note{color:var(--muted);margin:0 0 .75rem;font-size:.875rem}.planning-empty{margin-bottom:.75rem;padding:.75rem}.planning-legend{color:var(--muted);flex-wrap:wrap;gap:.5rem 1.25rem;margin:0 0 .5rem;padding:0;font-size:.875rem;list-style:none;display:flex}.planning-legend li{align-items:center;gap:.4rem;display:flex}.legend-swatch{border-radius:6px;padding:.1rem .45rem;font-size:.75rem;display:inline-block}.legend-swatch.free{border:1px dashed var(--border);color:#9aa1a6}.planning-scroll{border:1px solid var(--border);background:var(--surface);border-radius:10px;min-height:320px;max-height:calc(100vh - 230px);position:relative;overflow:auto}.planning-scroll:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.planning-grid{border-collapse:separate;border-spacing:0;font-size:.8125rem}.planning-grid th,.planning-grid td{border-bottom:1px solid #ece9e2}.planning-grid thead th{z-index:2;background:var(--bg);position:sticky}.planning-grid thead tr:first-child th{white-space:nowrap;height:2.4rem;padding:.25rem .4rem;top:0}.planning-grid thead tr:nth-child(2) th{color:var(--muted);padding:.2rem .25rem;font-size:.75rem;font-weight:500;top:2.4rem}.planning-day{border-left:2px solid var(--border);text-align:center}.planning-day__name{color:var(--text);font-weight:700}.planning-day__date{color:var(--muted)}.planning-today{background:var(--accent);color:#fff;border-radius:999px;margin-left:.35rem;padding:0 .4rem;font-size:.6875rem;font-weight:600}.planning-corner,.planning-room{border-right:1px solid var(--border);background:var(--surface);text-align:left;white-space:nowrap;min-width:6.5rem;padding:.3rem .6rem;position:sticky;left:0}.planning-corner{z-index:3!important;background:var(--bg)!important}.planning-room{z-index:1;font-weight:600}.planning-cell{vertical-align:top;width:5rem;min-width:5rem;max-width:5rem;height:3.1rem;padding:.2rem}.planning-part{min-width:5rem}.day-start{border-left:2px solid var(--border)}.planning-cell.day-alt{background:#faf9f6}.planning-grid thead th.day-alt{background:#efede7}.planning-cell.is-today{background:#eef5f7}.planning-grid thead th.is-today{background:var(--accent-soft)}.slot-free{color:#b3b8bb;border:1px dashed #e3e0d8;border-radius:6px;justify-content:center;align-items:center;height:100%;min-height:2.6rem;font-size:.6875rem;display:flex}.booking{border:1px solid var(--accent);background:var(--surface);min-height:2.6rem;color:var(--text);border-left-width:4px;border-radius:6px;flex-direction:column;gap:.1rem;padding:.25rem .35rem;font-weight:600;line-height:1.2;text-decoration:none;display:flex}.booking+.booking{margin-top:.2rem}.booking:hover{background:var(--accent-soft)}.booking:focus-visible{outline:3px solid var(--accent);outline-offset:1px}.booking__name{-webkit-line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.booking__tag{font-size:.6875rem;font-weight:500}.booking--holiday{border-color:var(--success-text);color:var(--success-text);background:repeating-linear-gradient(135deg,#f2f8f3,#f2f8f3 6px,#e3f0e6 6px 12px);border-style:dashed dashed dashed solid}.slot-conflict{border:2px solid var(--error-text);background:var(--error-bg);border-radius:7px;padding:.15rem}.booking--conflict{border-color:var(--error-text)}.conflict-label{color:var(--error-text);margin-bottom:.15rem;font-size:.6875rem;font-weight:700;display:block}.legend-swatch.booking{flex-direction:row;min-height:0;display:inline-flex}.booking--holiday .booking__name{-webkit-line-clamp:1}.badge--arrears{background:var(--error-bg);color:var(--error-text)}.badge--charge-open{background:var(--warning-bg);color:var(--warning-text)}.badge--charge-partial{background:var(--warning-bg);color:var(--warning-text);outline:1px dashed var(--warning-text)}.badge--charge-paid,.badge--match-gekoppeld,.badge--match-losseboeking{background:var(--success-bg);color:var(--success-text)}.badge--charge-holiday,.badge--charge-none,.badge--match-niettoewijsbaar{color:var(--muted);background:#ecebe7}.badge--match-voorstel{background:var(--accent-soft);color:var(--accent)}.badge--match-meerderecontracten,.badge--match-geenmatch{background:var(--warning-bg);color:var(--warning-text)}a.badge{text-decoration:none}a.badge:hover,a.badge:focus-visible{text-decoration:underline}.payments,.assign{margin-top:2rem}.payment-list{margin:0;padding-left:1.1rem}.payment-list li+li{margin-top:.25rem}.strike{color:var(--muted);text-decoration:line-through}.euro-input--small input{width:7rem}.field--checkbox{align-self:end}.field--checkbox label{white-space:nowrap;align-items:center;gap:.4rem;min-height:2.6rem;font-weight:600;display:flex}.field--checkbox input{margin:0}.contract-choice{margin-bottom:1rem}.non-rent{border:0;min-width:0;margin:1rem 0;padding:0}.non-rent .field-row{margin-top:.5rem}
