.upca-vb{--upca-maroon:#800000;--upca-maroon-dark:#5f0000;color:#292929;margin:30px 0;font-family:inherit}
.upca-vb *{box-sizing:border-box}
.upca-vb-intro{margin-bottom:24px}
.upca-vb-intro h2{margin:0 0 8px;color:var(--upca-maroon)}
.upca-vb-layout{display:grid;grid-template-columns:minmax(280px,1fr) minmax(320px,1.15fr);gap:24px;align-items:start}
.upca-vb-calendar-panel,.upca-vb-form-panel{background:#fff;border:1px solid #e2e2e2;border-radius:12px;padding:22px;box-shadow:0 3px 14px rgba(0,0,0,.045)}
.upca-vb-calendar-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:20px}
.upca-vb-calendar-head h3{margin:0;font-size:20px}
.upca-vb-calendar-head button{border:0;border-radius:6px;background:var(--upca-maroon);color:#fff;padding:9px 13px;cursor:pointer}
.upca-vb-calendar-head button:hover,.upca-vb-submit:hover{background:var(--upca-maroon-dark)}
.upca-vb-weekdays,.upca-vb-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;text-align:center}
.upca-vb-weekdays span{font-size:12px;font-weight:700;color:var(--upca-maroon);padding:8px 0}
.upca-vb-days button,.upca-vb-days span{min-width:0;min-height:40px;border-radius:7px;display:flex;align-items:center;justify-content:center}
.upca-vb-days button{border:1px solid transparent;background:#f6f6f6;color:#222;cursor:pointer}
.upca-vb-days button:hover{border-color:var(--upca-maroon)}
.upca-vb-days button.is-selected{background:var(--upca-maroon);color:#fff;font-weight:700}
.upca-vb-days button.is-today{outline:1px solid var(--upca-maroon);outline-offset:-2px}
.upca-vb-days button:disabled{background:#fafafa;color:#bbb;cursor:not-allowed}
.upca-vb-legend{display:flex;align-items:center;gap:7px;margin-top:18px;font-size:12px;color:#555}
.upca-vb-dot{width:10px;height:10px;border-radius:50%;display:inline-block}
.upca-vb-dot.selected{background:var(--upca-maroon)}
.upca-vb-dot.today{border:1px solid var(--upca-maroon);margin-left:10px}
.upca-vb-calendar-help{font-size:12px;color:#666;margin:12px 0 0}
.upca-vb-form-panel h3{margin:0 0 18px;color:var(--upca-maroon)}
.upca-vb-field{margin-bottom:14px}
.upca-vb-field label{display:block;font-weight:600;font-size:13px;margin-bottom:6px}
.upca-vb-field label span{color:#a00000}
.upca-vb-field input,.upca-vb-field select,.upca-vb-field textarea{width:100%;max-width:100%;border:1px solid #ccc;border-radius:6px;padding:10px 11px;background:#fff;min-height:42px}
.upca-vb-field textarea{resize:vertical}
.upca-vb-time-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.upca-vb-availability{padding:10px 12px;background:#f7f4f4;border-left:3px solid #999;border-radius:4px;font-size:13px;margin:2px 0 16px}
.upca-vb-availability.is-available{border-color:#278344;background:#f0f8f2}
.upca-vb-availability.is-unavailable{border-color:#b42318;background:#fff4f3}
.upca-vb-consent{display:flex;gap:9px;align-items:flex-start;font-size:12px;line-height:1.5;margin:12px 0 16px}
.upca-vb-consent input{margin-top:3px}
.upca-vb-submit{width:100%;border:0;border-radius:6px;background:var(--upca-maroon);color:#fff;padding:13px 18px;font-weight:700;cursor:pointer}
.upca-vb-submit:disabled{opacity:.6;cursor:wait}
.upca-vb-result{margin-top:12px;font-size:13px}
.upca-vb-result.success{color:#176b32}.upca-vb-result.error{color:#a21b16}
.upca-vb-notice{padding:14px;border:1px solid #ddd;border-radius:8px}
@media(max-width:800px){.upca-vb-layout{grid-template-columns:1fr}.upca-vb-calendar-panel,.upca-vb-form-panel{padding:16px}}
@media(max-width:420px){.upca-vb-time-row{grid-template-columns:1fr}.upca-vb-days button,.upca-vb-days span{min-height:36px;font-size:13px}}

/* Per-venue availability calendars */
.upca-vb-venue-calendars{margin:26px 0}
.upca-vb-venue-calendars>h3{margin:0 0 6px;color:var(--upca-maroon)}
.upca-vb-calendar-intro{margin:0 0 16px;color:#666;font-size:13px}
.upca-vb-calendar-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:18px}
.upca-vb-venue-calendar{min-width:0;background:#fff;border:1px solid #e2e2e2;border-radius:12px;padding:18px;box-shadow:0 3px 14px rgba(0,0,0,.045)}
.upca-vb-venue-calendar .upca-vb-calendar-head{margin-bottom:10px}
.upca-vb-venue-calendar .upca-vb-calendar-head h4{margin:0;font-size:16px;text-align:center;flex:1}
.upca-vb-venue-calendar .upca-vb-calendar-head button{padding:7px 10px;flex:0 0 auto}
.upca-vb-venue-name{font-size:15px!important;color:var(--upca-maroon);margin:0 0 10px;text-align:center}
.upca-vb-venue-calendar .upca-vb-days button{font-size:13px;min-height:36px;border:1px solid #e7e7e7}
.upca-vb-venue-calendar .upca-vb-days button.is-available{background:#eaf6ed;border-color:#c8e6ce;color:#185b2a}
.upca-vb-venue-calendar .upca-vb-days button.is-booked{background:#fdebea;border-color:#f3c6c3;color:#98251f}
.upca-vb-venue-calendar .upca-vb-days button.is-selected{background:var(--upca-maroon);border-color:var(--upca-maroon);color:#fff;box-shadow:0 0 0 2px rgba(128,0,0,.15)}
.upca-vb-venue-calendar .upca-vb-days button.is-today{outline:2px solid #333;outline-offset:-3px}
.upca-vb-venue-calendar .upca-vb-days button:disabled{opacity:.48;cursor:not-allowed}
.upca-vb-calendar-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:13px;font-size:11px;color:#555}
.upca-vb-calendar-legend span{display:inline-flex;align-items:center;gap:5px}
.upca-vb-calendar-legend i{display:inline-block;width:10px;height:10px;border-radius:3px}
.upca-vb-calendar-legend i.available{background:#bfe2c7}.upca-vb-calendar-legend i.booked{background:#efb8b4}.upca-vb-calendar-legend i.today{border:1px solid #333}
.upca-vb-calendar-error{grid-column:1/-1;color:#a21b16;font-size:12px}
.upca-vb-form-highlight{outline:2px solid rgba(128,0,0,.35);outline-offset:3px;transition:outline .2s}
@media(max-width:420px){.upca-vb-venue-calendar{padding:13px}.upca-vb-venue-calendar .upca-vb-days button{min-height:33px;font-size:12px}}
.upca-vb-layout{grid-template-columns:minmax(0,1fr)}

/* Standalone Gutenberg venue calendar block */
.upca-vb-calendar-only .upca-vb-venue-calendars{margin:18px 0 10px}
.upca-vb-calendar-only .upca-vb-calendar-grid{grid-template-columns:minmax(260px,520px)}
.upca-vb-calendar-selection{max-width:520px;padding:11px 13px;margin:10px 0 20px;border-left:3px solid #800000;background:#f8f5f5;border-radius:4px;font-size:13px;color:#444}

/* Hourly availability displayed under each venue calendar */
.upca-vb-day-slots{margin-top:16px;padding-top:13px;border-top:1px solid #e8e8e8}
.upca-vb-slots-heading{margin:0 0 5px;color:#800000;font-size:14px}
.upca-vb-slots-help{margin:0 0 10px;color:#666;font-size:11px;line-height:1.5}
.upca-vb-slot-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.upca-vb-time-slot{padding:8px 6px;border:1px solid #c8e6ce;border-radius:6px;background:#eaf6ed;color:#185b2a;font-size:11px;line-height:1.3;cursor:pointer}
.upca-vb-time-slot.is-booked{border-color:#f3c6c3;background:#fdebea;color:#98251f;cursor:not-allowed;opacity:.9}
.upca-vb-time-slot.is-selected{outline:2px solid #800000;outline-offset:1px;font-weight:700}
.upca-vb-time-slot:disabled{cursor:not-allowed}
.upca-vb-slots-empty{grid-column:1/-1;color:#777;font-size:12px}
@media(max-width:420px){.upca-vb-slot-list{grid-template-columns:1fr 1fr}.upca-vb-time-slot{font-size:10px;padding:7px 3px}}

/* Facility rental request details */
.upca-vb-form-subheading{margin:20px 0 6px;color:#800000;font-size:15px}
.upca-vb-form-note{margin:0 0 12px;color:#666;font-size:12px;line-height:1.5}
.upca-vb-equipment-section{margin:20px 0;padding:16px;border:1px solid #e5e5e5;border-radius:8px;background:#fff}
.upca-vb-equipment-table-wrap{width:100%;overflow-x:auto;margin:10px 0 14px}
.upca-vb-equipment-table{width:100%;border-collapse:collapse;font-size:13px}
.upca-vb-equipment-table th,.upca-vb-equipment-table td{border:1px solid #ddd;padding:9px;text-align:left;vertical-align:middle}
.upca-vb-equipment-table th{background:#f7f3f3;color:#5f0000;font-weight:700}
.upca-vb-equipment-table td:first-child{width:145px}
.upca-vb-equipment-table input{width:100%;min-width:70px;max-width:110px;padding:7px;border:1px solid #ccc;border-radius:5px}
@media(max-width:520px){.upca-vb-equipment-section{padding:10px}.upca-vb-equipment-table th,.upca-vb-equipment-table td{padding:7px;font-size:12px}}

/* Quotation submission confirmation and responsive form safeguards */
.upca-vb .upca-vb-result{overflow-wrap:anywhere;word-break:normal;line-height:1.65}
.upca-vb .upca-vb-result.success{display:block;margin-top:18px;padding:16px 18px;border:1px solid #b7d9c0;border-left:4px solid #278344;border-radius:8px;background:#f1f8f2;color:#174f29;font-size:14px;font-weight:600}
.upca-vb .upca-vb-result.error{display:block;margin-top:18px;padding:13px 16px;border:1px solid #efc2bf;border-left:4px solid #b42318;border-radius:8px;background:#fff5f4;color:#8d1b16}
.upca-vb .upca-vb-form,.upca-vb .upca-vb-form-panel{min-width:0;max-width:100%}
.upca-vb .upca-vb-field input,.upca-vb .upca-vb-field select,.upca-vb .upca-vb-field textarea{min-width:0}
@media(max-width:600px){.upca-vb .upca-vb-form-panel{padding:14px}.upca-vb .upca-vb-equipment-table{min-width:420px}.upca-vb .upca-vb-result.success{padding:13px;font-size:13px}}

.upca-vb .upca-vb-download{display:inline-block;margin-top:12px;padding:10px 16px;border-radius:5px;background:#800000;color:#fff!important;text-decoration:none;font-weight:700}
.upca-vb .upca-vb-download:hover{background:#5f0000;color:#fff!important}

/* UPCA Venue Rentals v1.8.0: responsive four-column equipment selector */
.upca-vb-equipment-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:12px 0 16px}
.upca-vb-equipment-group{min-width:0;border:1px solid #e4dddd;border-radius:8px;padding:12px;background:#fff}
.upca-vb-equipment-group h5{margin:0 0 10px;color:#800000;font-size:13px;line-height:1.35}
.upca-vb-equipment-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 0;border-top:1px solid #eee;font-size:12px;line-height:1.35}
.upca-vb-equipment-item span{min-width:0;overflow-wrap:anywhere}
.upca-vb-equipment-item input{flex:0 0 62px;width:62px;min-width:0;max-width:62px;padding:6px;border:1px solid #ccc;border-radius:5px}
.upca-vb-admin-equipment-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;max-width:1100px}
.upca-vb-admin-equipment-grid label{display:flex;flex-direction:column;gap:6px;padding:10px;border:1px solid #ddd;border-radius:6px;background:#fff}
.upca-vb-admin-equipment-grid input{max-width:100%;width:100%}
@media(max-width:900px){.upca-vb-equipment-grid,.upca-vb-admin-equipment-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.upca-vb-equipment-grid,.upca-vb-admin-equipment-grid{grid-template-columns:minmax(0,1fr)}.upca-vb-equipment-group{padding:10px}.upca-vb-equipment-item{font-size:13px}}
.upca-vb-admin-equipment-grid{align-items:stretch}
.upca-vb-admin-equipment-card{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid #ddd;border-radius:7px;background:#fff}
.upca-vb-admin-equipment-card strong{color:#800000;font-size:13px}
.upca-vb-admin-equipment-card label{display:flex;flex-direction:column;gap:4px;font-size:12px}

/* v1.9.0 calendar filters, reservation states, and live estimate */
.upca-vb-calendar-wrap { min-width: 0; }
.upca-vb-calendar-filter { max-width: 100%; min-width: 240px; padding: 10px; border: 1px solid #c8c8c8; border-radius: 4px; }
.upca-vb-calendar-legend i.pending, .upca-vb-venue-calendar .upca-vb-days button.is-pending { background: #f0ad4e; }
.upca-vb-venue-calendar .upca-vb-days button.is-pending { color: #382400; border-color: #d8942b; }
.upca-vb-estimated-total { margin: 18px 0; padding: 16px 18px; border: 1px solid #d7c2c2; border-left: 4px solid #800000; border-radius: 5px; background: #faf7f7; display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; }
.upca-vb-estimated-total strong { color: #4d0000; }
.upca-vb-estimated-total-value { font-size: 1.35rem; font-weight: 700; color: #800000; }
.upca-vb-estimated-total small { display: block; flex-basis: 100%; color: #666; }
.upca-vb-equipment-item small { display: block; color: #6b5555; font-size: .82em; font-weight: 500; }

/* v2.0.0 request letter and confirmation presentation */
.upca-vb-calendar-wrap[hidden]{display:none!important}
.upca-vb-letter-upload{padding:16px;border:1px solid #dedede;border-radius:8px;background:#fafafa}
.upca-vb-letter-upload input[type=file]{display:block;max-width:100%;margin-top:8px}
.upca-vb-confirmation-summary{margin:16px 0;padding:16px;border:1px solid #d7e3d9;border-radius:8px;background:#f7fbf7;color:#242424}
.upca-vb-confirmation-summary h4{margin:0 0 12px}
.upca-vb-confirmation-summary dl{display:grid;grid-template-columns:minmax(110px,180px) 1fr;gap:6px 14px;margin:0}
.upca-vb-confirmation-summary dt{font-weight:700}
.upca-vb-confirmation-summary dd{margin:0;overflow-wrap:anywhere}
.upca-vb-email-note{margin-top:12px;padding:10px;background:#fff4e5;border-left:3px solid #b7791f}
@media(max-width:600px){.upca-vb-confirmation-summary dl{grid-template-columns:1fr;gap:2px}.upca-vb-confirmation-summary dd{margin-bottom:8px}}

.upca-vb-estimated-breakdown-list{list-style:none;margin:8px 0 12px;padding:0;border-top:1px solid #e4e4e4}
.upca-vb-estimated-breakdown-list li{display:flex;justify-content:space-between;gap:14px;padding:7px 0;border-bottom:1px solid #e4e4e4;font-size:12px}
.upca-vb-estimated-breakdown-list li span{min-width:0}
.upca-vb-estimated-breakdown-list li strong{white-space:nowrap}
.upca-vb-estimated-total h5{margin:0 0 8px;font-size:14px}

/* v2.0.1 calendar fit adjustment: keep the booking calendar within its parent */
#upca-vb-booking .upca-vb-venue-calendars,
#upca-vb-booking .upca-vb-calendar-grid,
#upca-vb-booking .upca-vb-calendar-wrap,
#upca-vb-booking .upca-vb-venue-calendar {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}
#upca-vb-booking .upca-vb-calendar-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
}
#upca-vb-booking .upca-vb-venue-calendar {
    padding: clamp(10px, 2.5vw, 20px);
    overflow: hidden;
}
#upca-vb-booking .upca-vb-weekdays,
#upca-vb-booking .upca-vb-days {
    width: 100%;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: clamp(2px, .8vw, 6px);
}
#upca-vb-booking .upca-vb-weekdays span {
    min-width: 0;
    padding: 7px 0;
    font-size: clamp(10px, 1.4vw, 12px);
}
#upca-vb-booking .upca-vb-days button,
#upca-vb-booking .upca-vb-days span {
    width: 100%;
    min-width: 0;
    min-height: clamp(32px, 5vw, 44px);
    padding: 2px;
    font-size: clamp(11px, 1.5vw, 14px);
}
#upca-vb-booking .upca-vb-calendar-head {
    width: 100%;
    gap: 8px;
}
#upca-vb-booking .upca-vb-calendar-head h4 {
    min-width: 0;
    overflow-wrap: anywhere;
}
#upca-vb-booking .upca-vb-calendar-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 7px 12px;
    line-height: 1.5;
}
#upca-vb-booking .upca-vb-day-slots,
#upca-vb-booking .upca-vb-slot-list {
    min-width: 0;
    max-width: 100%;
}
@media (max-width: 480px) {
    #upca-vb-booking .upca-vb-calendar-head button { padding: 7px 9px; }
    #upca-vb-booking .upca-vb-calendar-legend { font-size: 10px; }
    #upca-vb-booking .upca-vb-slot-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
