

/* =========================================================
   MODALS
========================================================= */

.modal-overlay,
.qr-modal {
    position: fixed;
    inset: 0;
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 18px;
    background: rgba(54, 32, 22, 0.42);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.24s ease, visibility 0.24s ease;
}

.modal-overlay.open,
.qr-modal.open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.modal-card,
.qr-card {
    position: relative;
    z-index: 100000;
    transform: translateY(14px) scale(0.96);
    opacity: 0;
    transition:
        transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
        opacity 0.22s ease;
}

.modal-overlay.open .modal-card,
.qr-modal.open .qr-card {
    transform: translateY(0) scale(1);
    opacity: 1;
}

#owner-add-booking-modal,
#paid-modal {
    z-index: 99999;
}

#owner-add-booking-modal .modal-card {
    width: min(96vw, 980px);
    height: auto;
    max-height: 92vh;
    overflow-y: auto;
    padding: clamp(20px, 4vw, 36px);
    text-align: center;
}

#owner-add-booking-modal .modal-card h2 {
    width: 100%;
    padding: 0 44px;
    text-align: center;
    line-height: 1;
}

#owner-selected-slot-text {
    display: block;
    width: 100%;
    margin: 0.35rem auto 1.5rem;
    padding: 0 44px;
    text-align: center;
    font-weight: 800;
    line-height: 1.25;
    color: #7a4f3f;
}

#owner-add-booking-modal form {
    text-align: left;
}

#owner-add-booking-modal button[type="submit"] {
    background: #3a2b27;
    color: #fff;
    margin-top: 10px;
}

#owner-add-booking-modal button[type="submit"]:hover {
    background: #5a4037;
}

.paid-modal-card,
.paid-modal-card h2,
.paid-modal-card p,
.paid-modal-card label {
    text-align: center;
}

.paid-modal-card input {
    text-align: center;
}

.paid-modal-card #save-paid-button,
#save-paid-button {
    width: auto;
    min-width: 140px;
    height: 44px;
    padding: 0 28px;
    border: 0;
    border-radius: 999px;
    background: #4f7d5a;
    color: white;
    font-weight: 700;
    font-size: 15px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 16px auto 0;
    box-shadow: 0 8px 18px rgba(0, 0, 0, 0.14);
}

.paid-modal-card #save-paid-button:hover {
    transform: translateY(-1px);
}


/* =========================================================
   HOLIDAY CONTROLS + HOLIDAY MODAL
========================================================= */

.add-holiday-from-day,
.delete-holiday-from-day {
    position: absolute;
    top: 6px;
    right: 6px;
    width: 22px;
    height: 22px;
    border: 0;
    border-radius: 999px;
    color: #7a3f22;
    font-size: 1rem;
    font-weight: 900;
    line-height: 1;
    cursor: pointer;
    opacity: 0;
    transform: scale(0.88);
    transition: 0.2s ease;
}

.add-holiday-from-day {
    background: rgba(138, 75, 42, 0.12);
}

.delete-holiday-from-day {
    width: 24px;
    height: 24px;
    background: #8a2f20;
    color: #ffffff;
}

.owner-day-header:hover .add-holiday-from-day,
.owner-day-header:focus-within .add-holiday-from-day,
.owner-day-header:hover .delete-holiday-from-day,
.owner-day-header:focus-within .delete-holiday-from-day {
    opacity: 1;
    transform: scale(1);
}

.add-holiday-from-day:hover {
    background: #8a4b2a;
    color: #ffffff;
}

.delete-holiday-from-day:hover {
    background: #5f1f16;
}

.delete-owner-holiday-form {
    position: absolute;
    top: 6px;
    right: 6px;
    margin: 0;
    z-index: 8;
}

.view-owner-holidays-btn,
.owner-holiday-modal-card button[type="submit"] {
    border: 0;
    border-radius: 999px;
    background: #8a4b2a;
    color: #ffffff;
    padding: 9px 14px;
    font-weight: 800;
    cursor: pointer;
    box-shadow: 0 8px 18px rgba(80, 42, 22, 0.12);
}

.view-owner-holidays-btn:hover {
    background: #6f3a20;
}

.owner-holiday-modal-card {
    max-width: 460px;
}

.owner-holiday-modal-card input,
.owner-holiday-modal-card textarea {
    width: 100%;
}

.owner-holiday-modal-card button[type="submit"] {
    padding: 10px 16px;
}

.owner-holiday-modal-card input[readonly] {
    background: #f1e6dd;
    color: #7a3f22;
    cursor: not-allowed;
}

.holiday-modal-list {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid rgba(138, 75, 42, 0.2);
}

.holiday-modal-list.standalone {
    margin-top: 8px;
    padding-top: 0;
    border-top: 0;
    max-height: 55vh;
    overflow-y: auto;
    padding-right: 6px;
}

.holiday-modal-list h3 {
    margin: 0 0 10px;
    color: #7a3f22;
    font-size: 1rem;
}

.holiday-modal-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding: 10px 0;
    border-top: 1px solid rgba(138, 75, 42, 0.12);
}

.holiday-modal-item:first-of-type {
    border-top: 0;
}

.holiday-modal-item strong,
.holiday-modal-item span {
    display: block;
}

.holiday-modal-item span {
    font-size: 0.82rem;
    color: #7a3f22;
}

.holiday-modal-item button {
    border: 0;
    border-radius: 999px;
    background: #5f4c3e;
    color: #ffffff;
    padding: 7px 11px;
    font-size: 0.78rem;
    font-weight: 800;
    cursor: pointer;
}

/* Recurring owner days off: compact controls and independently removable dates. */
.owner-holiday-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.owner-holiday-modal-card { width: min(96vw, 560px); }
.owner-holiday-modal-card select,
.owner-holiday-modal-card input[type="number"] { width: 100%; box-sizing: border-box; }
.holiday-mode-panel[hidden] { display: none !important; }
.holiday-mode-switch { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 18px; }
.holiday-mode-switch label { display: flex; align-items: center; gap: 7px; padding: 8px 10px; background: #fff; border: 1px solid #dbc8bc; border-radius: 12px; font-size: 13px; cursor: pointer; }
.holiday-mode-switch input { width: auto; margin: 0; }
.holiday-repeat-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; }
.holiday-preview-fieldset { border: 1px solid #d8bca9; border-radius: 12px; margin: 0 0 16px; padding: 10px 12px; }
.holiday-preview-fieldset legend { padding: 0 5px; font-weight: 800; }
.holiday-repeat-preview { max-height: 180px; overflow-y: auto; display: grid; grid-template-columns: repeat(auto-fit, minmax(165px, 1fr)); gap: 6px; }
.holiday-preview-item { display: flex !important; align-items: center; gap: 8px; padding: 7px; border-radius: 8px; background: #fff; font-size: 12px; cursor: pointer; }
.holiday-preview-item input[type="checkbox"] { width: auto; margin: 0; flex: none; }
@media (max-width: 480px) { .holiday-repeat-row { grid-template-columns: 1fr; gap: 0; } .owner-holiday-modal-card { padding: 24px 18px; } }


/* Time off modal: keep heading, action buttons and single/range inputs centred. */
.owner-calendar-heading .owner-holiday-actions {
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin-inline: auto;
}
#owner-holiday-modal .owner-holiday-modal-card h2,
#owner-holidays-list-modal .owner-holiday-modal-card h2 {
    text-align: center;
    padding-inline: 32px;
    font-size: clamp(30px, 6vw, 44px);
}
#owner-holiday-modal #owner-holiday-form > p {
    text-align: center;
}
#owner-holiday-modal .holiday-mode-switch {
    justify-content: center;
}
#owner-holiday-modal #owner-holiday-form > p > label,
#owner-holiday-modal #owner-holiday-single-fields label {
    display: block;
    text-align: center;
}
#owner-holiday-modal #owner-holiday-title,
#owner-holiday-modal #owner-holiday-notes {
    display: block;
    max-width: 360px;
    margin-inline: auto;
    box-sizing: border-box;
    text-align: center;
}
#owner-holiday-modal #owner-holiday-single-fields {
    width: 100%;
    text-align: center;
}
#owner-holiday-modal #owner-holiday-single-fields > p {
    max-width: 330px;
    margin: 0 auto 16px;
    text-align: center;
}
#owner-holiday-modal #owner-holiday-single-fields input[type="date"] {
    display: block;
    width: 100%;
    box-sizing: border-box;
    margin-inline: auto;
    text-align: center;
}
#owner-holiday-modal #owner-holiday-submit {
    display: block;
    width: fit-content;
    min-width: 180px;
    max-width: 100%;
    margin: 14px auto 0;
    text-align: center;
}

/* Match server messages to their success/warning/error meaning. */
#ajax-message-area .message.success { background: #eaf7ed; color: #256d3b; }
#ajax-message-area .message.warning { background: #fff0d1; color: #694712; }
#ajax-message-area .message.error { background: #fdecec; color: #9f2d2d; }
