:root{--ink:#20252b;--wine:#731d34;--wine-dark:#541326;--cream:#f6f1e7;--gold:#c9a15d;--line:#ddd5c7;--muted:#66707a}
*{box-sizing:border-box}
body{margin:0;background:#f3f2ef;color:var(--ink);font-family:"Segoe UI",Arial,sans-serif;line-height:1.5}
header{min-height:72px;background:var(--wine);color:white;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100% - 1180px)/2));box-shadow:0 2px 8px #0002}
.brand{font-family:Georgia,serif;font-size:1.35rem;color:white;text-decoration:none}
.brand span{display:block;color:#f0d69c;font-family:"Segoe UI",sans-serif;font-size:.75rem;text-transform:uppercase;letter-spacing:.14em}
nav{display:flex;gap:22px;align-items:center}
nav a,button.link{color:white;background:none;border:0;padding:0;font:inherit;text-decoration:none;cursor:pointer}
nav form{margin:0}
main{max-width:1180px;margin:42px auto;padding:0 20px;min-height:calc(100vh - 180px)}
.panel{background:white;border:1px solid var(--line);border-top:4px solid var(--gold);border-radius:5px;padding:32px;box-shadow:0 5px 22px #2525250c;max-width:760px}
.auth{max-width:460px;margin:50px auto}
.wide{max-width:none}
.form-panel{max-width:650px}
h1{font-family:Georgia,serif;color:var(--wine-dark);font-weight:normal;margin:0 0 8px}
p{margin-top:6px}
form{margin-top:24px}
label{display:block;font-weight:600;margin:16px 0 6px}
input,select{width:100%;font:inherit;padding:11px 12px;border:1px solid #9ba1a6;border-radius:4px;background:white}
input:focus,select:focus{outline:3px solid #c9a15d55;border-color:var(--wine)}
label.check{display:flex;gap:9px;align-items:center;font-weight:normal}
.check input{width:auto}
button,.button{display:inline-block;background:var(--wine);color:white;border:0;border-radius:4px;padding:11px 18px;font:inherit;font-weight:600;text-decoration:none;cursor:pointer}
button:hover,.button:hover{background:var(--wine-dark)}
.validation,span[data-valmsg-for]:not(:empty){display:block;color:#a42020;margin-top:6px}
.validation:empty{display:none}
.heading{display:flex;justify-content:space-between;gap:30px;align-items:start}
.table-wrap{overflow:auto;margin-top:25px}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
th{color:var(--muted);font-size:.85rem;text-transform:uppercase}
.status{border-radius:99px;padding:4px 9px;font-size:.85rem}
.active{background:#dff3e5;color:#185f31}
.inactive{background:#eee;color:#555}
.actions{display:flex;align-items:center;gap:18px;margin-top:24px}
footer{text-align:center;color:var(--muted);padding:20px;display:flex;flex-direction:column;gap:3px}
@media(max-width:650px){header{padding:12px 18px;align-items:flex-start}
.heading{display:block}
.heading .button{margin-top:12px}
.panel{padding:23px}
nav{gap:12px;font-size:.9rem}
}
textarea{width:100%;font:inherit;padding:11px 12px;border:1px solid #9ba1a6;border-radius:4px;background:white;resize:vertical}
textarea:focus{outline:3px solid #c9a15d55;border-color:var(--wine)}
.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.money{display:flex;align-items:center;border:1px solid #9ba1a6;border-radius:4px;background:white}
.money:focus-within{outline:3px solid #c9a15d55;border-color:var(--wine)}
.money span{padding-left:12px;color:var(--muted)}
.money input{border:0;outline:0}
.description{display:block;max-width:380px;white-space:normal;color:var(--muted);font-size:.9rem;margin-top:3px}
.notice{background:#e8f4eb;color:#185f31;border-left:4px solid #368b52;padding:11px 14px;margin-top:20px}
.filter{margin:18px 0 0}
.filter label{margin:0}
.hirer-filter{display:flex;gap:16px;align-items:end;flex-wrap:wrap}
.hirer-filter>div{flex:1 1 300px}
.hirer-filter .check{margin-bottom:11px}
.hirer-filter button{margin:0}
fieldset{border:1px solid var(--line);border-radius:4px;margin:24px 0;padding:8px 18px 20px}
legend{font-weight:600;color:var(--wine-dark);padding:0 6px}
.empty{text-align:center;padding:38px 15px;color:var(--muted)}
.hint{color:var(--muted);font-size:.9rem;margin-left:25px}
.booking-filter{display:flex;gap:16px;align-items:end;flex-wrap:wrap}
.booking-filter>div:first-child{flex:1 1 240px}.booking-filter>div:nth-child(2),.booking-filter>div:nth-child(3){flex:0 1 170px}
.booking-filter .check{margin-bottom:11px}.booking-filter button{margin:0}
.provisional{background:#fff0c9;color:#6d5000}.confirmed{background:#dcecf8;color:#155378}
.cancelled{background:#f6dddd;color:#7a2222}.completed{background:#eee;color:#555}
@media(max-width:760px){.form-grid{grid-template-columns:1fr}.hirer-filter{align-items:stretch}.hirer-filter .check{margin-bottom:0}}
@media(max-width:760px){.booking-filter{align-items:stretch}.booking-filter .check{margin-bottom:0}}
.calendar-panel{padding:24px}.calendar-toolbar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;margin:24px 0 16px}.calendar-toolbar h2{font-family:Georgia,serif;font-weight:normal;margin:0;color:var(--wine-dark);text-align:center}.calendar-nav,.view-switch{display:flex;gap:6px}.view-switch{justify-content:flex-end}.small-button,.view-switch a{border:1px solid var(--line);border-radius:4px;padding:7px 10px;color:var(--wine-dark);background:white;text-decoration:none;font-size:.9rem}.view-switch a.selected{background:var(--wine);border-color:var(--wine);color:white}
.month-calendar{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));border-left:1px solid var(--line);border-top:1px solid var(--line);overflow:auto}.weekday{text-align:center;background:var(--cream);font-weight:600;color:var(--muted);padding:8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.calendar-day{min-height:120px;padding:7px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:white}.calendar-day.outside{background:#f7f7f6;color:#999}.calendar-day.today{box-shadow:inset 0 0 0 2px var(--gold)}.day-number{display:block;color:inherit;text-decoration:none;font-weight:600;margin-bottom:5px}.calendar-booking{display:block;padding:4px 6px;margin:3px 0;border-radius:3px;color:inherit;text-decoration:none;font-size:.79rem;line-height:1.25;overflow:hidden}.calendar-booking span{font-weight:700}.calendar-booking small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.8}
.agenda-grid{display:grid;grid-template-columns:repeat(7,minmax(130px,1fr));border-left:1px solid var(--line);border-top:1px solid var(--line);overflow:auto}.agenda-grid.single-day{grid-template-columns:1fr}.agenda-day{min-height:260px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px;background:white}.agenda-day.today{box-shadow:inset 0 0 0 2px var(--gold)}.agenda-day h3{font-family:Georgia,serif;font-weight:normal;color:var(--wine-dark);margin:0 0 10px}.agenda-day h3 span{display:block;font-family:"Segoe UI",sans-serif;text-transform:uppercase;font-size:.75rem;color:var(--muted)}.agenda-booking{display:block;position:relative;padding:9px;margin-bottom:8px;border-radius:4px;color:inherit;text-decoration:none;font-style:normal}.agenda-booking strong,.agenda-booking span,.agenda-booking small{display:block}.agenda-booking span{font-weight:600}.agenda-booking small{opacity:.8}.agenda-booking em{font-size:.7rem;font-style:normal;text-transform:uppercase}.no-bookings{color:var(--muted);font-size:.9rem}.calendar-key{display:flex;gap:18px;flex-wrap:wrap;margin-top:16px;color:var(--muted);font-size:.85rem}.calendar-key span{display:flex;align-items:center;gap:6px}.calendar-key i{width:13px;height:13px;border-radius:3px;display:inline-block}
@media(max-width:900px){.calendar-toolbar{grid-template-columns:1fr}.calendar-toolbar h2{grid-row:1}.calendar-nav,.view-switch{justify-content:center}.month-calendar,.agenda-grid{min-width:850px}.calendar-panel{overflow:hidden}.calendar-panel>.month-calendar,.calendar-panel>.agenda-grid{overflow:visible}.calendar-panel{overflow-x:auto}nav{flex-wrap:wrap}}
.repeat-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.repeat-grid label{margin-top:8px}
@media(max-width:650px){.repeat-grid{grid-template-columns:1fr}}
.invoice-filter{display:flex;gap:16px;align-items:end;flex-wrap:wrap}.invoice-filter>div:first-child{flex:1 1 280px}.invoice-filter>div:nth-child(2){flex:0 1 190px}.invoice-filter button{margin:0}
.outstanding{background:#dcecf8;color:#155378}.part-paid{background:#fff0c9;color:#6d5000}.paid{background:#dff3e5;color:#185f31}.overdue{background:#f6dddd;color:#7a2222}.draft{background:#eee;color:#555}
.invoice-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:25px 0}.invoice-summary>div{border:1px solid var(--line);border-radius:4px;padding:15px;background:var(--cream)}.invoice-summary span,.invoice-summary strong{display:block}.invoice-summary>div>span{color:var(--muted);font-size:.85rem;margin-bottom:6px}.invoice-summary>div>strong{font-size:1.15rem}.invoice-summary .status{display:inline-block;font-size:.9rem}
.invoice-info{display:grid;grid-template-columns:2fr 1fr;gap:30px;margin:25px 0}.invoice-info h2,.payment-form h2,.wide>h2{font-family:Georgia,serif;font-weight:normal;color:var(--wine-dark)}dl{display:grid;grid-template-columns:120px 1fr;gap:7px 14px}dt{font-weight:600;color:var(--muted)}dd{margin:0}.top-actions{margin-top:0}.payment-form{border-top:1px solid var(--line);margin-top:28px;padding-top:20px}.empty-payment{color:var(--muted)}
@media(max-width:760px){.invoice-summary{grid-template-columns:1fr 1fr}.invoice-info{grid-template-columns:1fr}.invoice-filter{align-items:stretch}}
.print-button{color:var(--wine-dark)}
.period-grid{grid-template-columns:1fr 1fr}.invoice-total-row td{border-top:2px solid var(--wine);background:var(--cream)}
@media print{header,footer,.no-print,.invoice-page .payment-form{display:none!important}body{background:white}.invoice-page{border:0;box-shadow:none;padding:0}main{margin:0;max-width:none}.invoice-summary>div{break-inside:avoid}}
.payment-filter{display:flex;gap:14px;align-items:end;flex-wrap:wrap}.payment-filter .validation{flex-basis:100%}.payment-filter>div{flex:0 1 170px}.payment-filter .payment-search{flex:1 1 260px}.payment-filter button{margin:0}.payment-total{display:flex;align-items:baseline;gap:14px;margin:24px 0 5px;padding:16px 18px;background:var(--cream);border-left:4px solid var(--gold)}.payment-total span{color:var(--muted)}.payment-total strong{font-family:Georgia,serif;color:var(--wine-dark);font-size:1.45rem}.payment-total small{margin-left:auto;color:var(--muted)}
@media(max-width:760px){.payment-filter{align-items:stretch}.payment-filter>div{flex:1 1 100%}.payment-total{flex-wrap:wrap}.payment-total small{margin-left:0;flex-basis:100%}}
.row-actions{display:flex;align-items:center;gap:12px}.row-actions form,.top-actions form,td form{margin:0}.delete-link{background:none;color:#9b2020;padding:0;font-weight:normal;text-decoration:underline}.delete-link:hover{background:none;color:#641313}.danger-button{background:#9b2020}.danger-button:hover{background:#641313}.error-notice{background:#f8e4e4;color:#7a2222;border-left-color:#b83d3d}.action-note{color:var(--muted);font-size:.82rem}
.dashboard-heading{display:flex;align-items:start;justify-content:space-between;gap:24px;margin-bottom:24px}.dashboard-heading p{color:var(--muted);margin-bottom:0}.dashboard-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:24px}.metric-card{display:flex;min-height:126px;flex-direction:column;justify-content:center;background:white;border:1px solid var(--line);border-top:4px solid var(--gold);border-radius:5px;padding:20px;color:inherit;text-decoration:none;box-shadow:0 5px 22px #2525250c}.metric-card:hover{border-color:var(--gold)}.metric-card.attention{border-top-color:#d69d24}.metric-card.danger{border-top-color:#b83d3d}.metric-card span{color:var(--muted);font-size:.88rem}.metric-card strong{font-family:Georgia,serif;color:var(--wine-dark);font-size:1.8rem;font-weight:normal;line-height:1.2;margin-top:5px}.metric-card small{color:var(--muted);margin-top:4px}.dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.dashboard-panel{background:white;border:1px solid var(--line);border-radius:5px;padding:22px;box-shadow:0 5px 22px #2525250c}.dashboard-panel-heading{display:flex;justify-content:space-between;align-items:baseline;gap:15px;padding-bottom:13px;border-bottom:1px solid var(--line)}.dashboard-panel-heading h2{font-family:Georgia,serif;color:var(--wine-dark);font-weight:normal;margin:0;font-size:1.3rem}.dashboard-panel-heading a,.dashboard-list a{color:var(--wine-dark)}.dashboard-list article{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:13px 0;border-bottom:1px solid var(--line)}.dashboard-list article:last-child{border-bottom:0;padding-bottom:0}.dashboard-list article>div{display:flex;flex-direction:column;gap:3px}.dashboard-list article>div:last-child{align-items:flex-end;text-align:right}.dashboard-list span,.dashboard-list time{color:var(--muted);font-size:.86rem}.dashboard-list .status{color:inherit;font-size:.78rem}.dashboard-empty{color:var(--muted);margin:20px 0 0}
@media(max-width:760px){.dashboard-heading{display:block}.dashboard-heading .button{margin-top:14px}.dashboard-grid{grid-template-columns:1fr}.dashboard-list article{align-items:flex-start}.dashboard-metrics{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.dashboard-metrics{grid-template-columns:1fr}.dashboard-list article{display:block}.dashboard-list article>div:last-child{align-items:flex-start;text-align:left;margin-top:6px}}
