/*
 * Account and owner area (MIG-014), on the tokens of app.css. Mobile first; touch targets ≥ 44 px on coarse pointers;
 * visible focus (app.css focus ring); contrasts ≥ 4.5:1 for text.
 */

/* Account pages: a centred card */
.account-page { padding: 2.5rem 0 3.5rem; background: linear-gradient(180deg, var(--oov-section), #fff 60%); }
.account-card { max-width: 30rem; margin: 0 auto; background: #fff; border: 1px solid var(--oov-line-soft); border-radius: var(--radius-panel); box-shadow: var(--shadow-soft); padding: 2rem 1.5rem; }
@media (min-width: 576px) { .account-card { padding: 2.25rem 2.5rem; } }
.account-title { font-size: 1.6rem; font-weight: 800; color: var(--oov-navy); margin-bottom: .5rem; }
.account-lead { color: var(--oov-muted); margin-bottom: 1.25rem; }
.account-below { max-width: 30rem; margin: 1.25rem auto 0; text-align: center; }
.account-icon { font-size: 2.5rem; color: var(--oov-blue); margin-bottom: .5rem; }
.account-icon-success { color: #198754; }
.account-form .form-control-lg { font-size: 1rem; min-height: 3rem; }

/* Fields */
.required-mark { color: var(--oov-pink-dark); margin-left: .15rem; }
.form-label { font-weight: 600; color: var(--oov-navy); }
.form-label-optional { font-weight: 400; color: var(--oov-muted); font-size: .9em; }
.form-text { color: var(--oov-muted); }
.invalid-feedback { font-weight: 600; }
.error-summary:focus { outline: 3px solid var(--oov-blue); outline-offset: 2px; }
.password-wrap { position: relative; }
.password-wrap .form-control { padding-right: 5.5rem; }
.password-toggle { position: absolute; right: .25rem; top: 50%; transform: translateY(-50%); font-size: .88rem; font-weight: 600; text-decoration: none; min-height: 2.5rem; }
.chip-fieldset { border: 0; padding: 0; margin-left: 0; margin-right: 0; min-width: 0; }
.chip-fieldset legend { float: none; width: auto; font-size: 1rem; margin-bottom: .5rem; }
.chip-fieldset[aria-invalid="true"] .btn-chip { border-color: #dc3545; }
.char-counter { font-size: .82rem; margin-top: .25rem; }
.altcha-row altcha-widget { display: block; max-width: 100%; --altcha-max-width: 100%; --altcha-border-radius: var(--radius-control); --altcha-color-border: var(--oov-line); }

/* Owner area layout */
.owner-shell { background: var(--oov-section); padding: 1.5rem 0 3rem; min-height: 60vh; }
.owner-grid { display: grid; gap: 1.25rem; }
@media (min-width: 992px) { .owner-grid { grid-template-columns: 15rem minmax(0, 1fr); align-items: start; } }
.owner-nav { background: #fff; border: 1px solid var(--oov-line-soft); border-radius: var(--card-radius); padding: .75rem; box-shadow: var(--shadow-soft); }
@media (min-width: 992px) { .owner-nav { position: sticky; top: 1rem; } }
.owner-nav-title { font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--oov-muted); margin: .25rem .5rem .5rem; }
.owner-nav ul { display: flex; flex-wrap: wrap; gap: .25rem; }
@media (min-width: 992px) { .owner-nav ul { flex-direction: column; } }
.owner-nav-link { display: flex; align-items: center; padding: .55rem .75rem; border-radius: var(--radius-control); color: var(--oov-navy); font-weight: 600; font-size: .95rem; min-height: 2.75rem; }
.owner-nav-link:hover { background: var(--oov-surface); text-decoration: none; }
.owner-nav-link.active { background: var(--oov-blue); color: #fff; }
.owner-nav-link.active .bi { color: #fff; }
.owner-nav-link .bi { color: var(--oov-blue); }
.owner-main { min-width: 0; }
.owner-head { display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-end; justify-content: space-between; margin-bottom: 1rem; }
.owner-title { font-size: clamp(1.45rem, 2.4vw, 1.9rem); font-weight: 800; color: var(--oov-navy); margin-bottom: .25rem; }
.owner-section-title { font-size: 1.25rem; font-weight: 800; color: var(--oov-navy); margin: .5rem 0 1rem; }
.owner-section-title:focus { outline: none; }
.owner-subtitle { font-size: 1.05rem; font-weight: 700; color: var(--oov-navy); margin: 1.5rem 0 .75rem; }
.owner-panel { background: #fff; border: 1px solid var(--oov-line-soft); border-radius: var(--card-radius); padding: 1.25rem; margin-bottom: 1.25rem; box-shadow: var(--shadow-soft); }
@media (min-width: 768px) { .owner-panel { padding: 1.5rem 1.75rem; } }
.owner-panel-muted { background: var(--oov-section); box-shadow: none; }
.owner-panel-tip { background: var(--oov-warm); border-color: #f5e3b0; }
.owner-panel-title { font-size: 1.1rem; font-weight: 800; color: var(--oov-navy); margin-bottom: .75rem; }
.owner-subpanel { border: 1px solid var(--oov-line-soft); border-radius: var(--radius-control); padding: 1rem; margin: 1rem 0; }
.owner-subpanel legend { float: none; width: auto; padding: 0 .35rem; font-size: 1rem; }
.owner-actions { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; margin-top: 1.25rem; }
.owner-empty { background: #fff; border: 1px dashed var(--oov-line); border-radius: var(--card-radius); padding: 2rem 1rem; text-align: center; color: var(--oov-muted); }
.owner-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: .75rem; margin-bottom: 1.25rem; }
.owner-stat { background: #fff; border: 1px solid var(--oov-line-soft); border-radius: var(--card-radius); padding: .9rem 1rem; display: flex; flex-direction: column; }
.owner-stat strong { font-size: 1.6rem; color: var(--oov-navy); line-height: 1.1; }
.owner-stat span { font-size: .85rem; color: var(--oov-muted); font-weight: 600; }

/* Owner ad rows */
.owner-ads { display: grid; gap: 1rem; }
.owner-ad { display: grid; grid-template-columns: 1fr; background: #fff; border: 1px solid var(--oov-line-soft); border-radius: var(--card-radius); overflow: hidden; box-shadow: var(--shadow-soft); }
@media (min-width: 576px) { .owner-ad { grid-template-columns: 10rem minmax(0, 1fr); } }
.owner-ad-media { background: #eef2f8; aspect-ratio: 4 / 3; }
@media (min-width: 576px) { .owner-ad-media { aspect-ratio: auto; } }
.owner-ad-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.owner-ad-body { padding: .9rem 1rem 1rem; min-width: 0; }
.owner-ad-status { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-bottom: .35rem; }
.owner-ad-title { font-size: 1.05rem; font-weight: 700; line-height: 1.3; margin-bottom: .35rem; }
.owner-ad-title a { color: var(--oov-navy); }
.owner-ad-meta { display: flex; flex-wrap: wrap; gap: .25rem 1rem; font-size: .86rem; color: var(--oov-muted); margin-bottom: .35rem; }
.owner-ad-meta .bi { color: var(--oov-blue); }
.owner-ad-help { color: var(--oov-muted); margin-bottom: .6rem; }
.owner-ad-actions { display: flex; flex-wrap: wrap; gap: .4rem; }
@media (pointer: coarse) { .owner-ad-actions .btn, .media-buttons .btn { min-height: 2.75rem; } }
.text-bg-warning { color: #000 !important; }

/* Ad form steps */
.ad-steps { margin-bottom: 1.25rem; }
.ad-steps-list { list-style: none; display: flex; gap: .4rem; padding: 0; margin: 0; overflow-x: auto; scrollbar-width: thin; }
.ad-step a, .ad-step-disabled { display: flex; align-items: center; gap: .45rem; padding: .45rem .8rem .45rem .45rem; border-radius: 999px; border: 1px solid var(--oov-line); background: #fff; color: var(--oov-navy); font-weight: 600; font-size: .92rem; white-space: nowrap; min-height: 2.75rem; }
.ad-step a:hover { background: var(--oov-surface); text-decoration: none; }
.ad-step-disabled { color: var(--oov-muted); background: var(--oov-section); }
.ad-step-num { display: inline-flex; align-items: center; justify-content: center; width: 1.8rem; height: 1.8rem; border-radius: 50%; background: var(--oov-surface); color: var(--oov-blue); font-weight: 800; font-size: .85rem; }
.ad-step.is-current a { background: var(--oov-blue); border-color: var(--oov-blue); color: #fff; }
.ad-step.is-current .ad-step-num { background: #fff; color: var(--oov-blue); }
.ad-form .ad-step-panel { background: #fff; border: 1px solid var(--oov-line-soft); border-radius: var(--card-radius); padding: 1.25rem; margin-bottom: 1.25rem; box-shadow: var(--shadow-soft); }
@media (min-width: 768px) { .ad-form .ad-step-panel { padding: 1.5rem 1.75rem; } }
.ad-form.is-stepped .ad-step-panel[hidden] { display: none; }
.ad-form .location-search { position: relative; }
.rates-grid { display: grid; grid-template-columns: 1fr; gap: 0 1rem; }
@media (min-width: 768px) { .rates-grid { grid-template-columns: 8rem repeat(3, minmax(0, 1fr)); align-items: end; } }
.rates-grid-head { font-weight: 700; color: var(--oov-navy); margin: .5rem 0; }
@media (min-width: 768px) { .rates-grid-head { margin: 0 0 1.6rem; } }

/* Photos */
.media-drop { border: 2px dashed var(--oov-line); border-radius: var(--card-radius); padding: 1.5rem 1rem; text-align: center; background: var(--oov-section); transition: background .15s, border-color .15s; }
.media-drop.is-over { border-color: var(--oov-blue); background: var(--oov-surface); }
.media-drop-icon { font-size: 2rem; color: var(--oov-blue); margin-bottom: .25rem; }
.media-drop input[type="file"] { max-width: 28rem; margin: 0 auto .5rem; }
.media-progress { margin: .75rem 0 0; display: grid; gap: .4rem; }
.media-progress-item { display: grid; grid-template-columns: minmax(0, 1fr) 8rem; gap: .2rem .75rem; align-items: center; font-size: .88rem; }
.media-progress-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.media-progress-item progress { width: 100%; height: .6rem; accent-color: var(--oov-blue); }
.media-progress-status { grid-column: 1 / -1; color: var(--oov-muted); }
.media-progress-item.is-error .media-progress-status { color: #b02a37; font-weight: 600; }
.media-progress-item.is-done .media-progress-status { color: #146c43; font-weight: 600; }
.media-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); gap: 1rem; margin: 0; }
.media-item { background: #fff; border: 1px solid var(--oov-line-soft); border-radius: var(--card-radius); overflow: hidden; display: flex; flex-direction: column; }
.media-item.is-cover { border-color: var(--oov-blue); box-shadow: 0 0 0 2px rgba(0, 87, 194, .2); }
.media-item.is-dragging { opacity: .5; }
.media-item[draggable="true"] .media-thumb { cursor: grab; }
.media-thumb { position: relative; aspect-ratio: 4 / 3; background: #eef2f8; }
.media-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.media-cover-badge { position: absolute; left: .5rem; top: .5rem; background: var(--oov-blue); color: #fff; font-size: .75rem; font-weight: 700; padding: .2rem .6rem; border-radius: 999px; }
.media-handle { position: absolute; right: .4rem; top: .4rem; background: rgba(255, 255, 255, .92); border-radius: 8px; padding: .2rem .3rem; color: var(--oov-navy); }
.media-caption { padding: .6rem .7rem 0; }
.media-buttons { display: flex; flex-wrap: wrap; gap: .35rem; padding: .6rem .7rem .7rem; }

/* Profile */
.profile-photo-row { display: flex; gap: 1rem; align-items: flex-start; flex-wrap: wrap; margin-bottom: .5rem; }
.profile-photo-preview { display: flex; flex-direction: column; align-items: center; gap: .35rem; }
.profile-photo-preview img { border-radius: 50%; object-fit: cover; }
.host-avatar-lg { width: 96px; height: 96px; font-size: 2rem; }

/* Activation wizard */
.wizard-summary { display: grid; gap: 1rem; margin-bottom: 1rem; }
@media (min-width: 576px) { .wizard-summary { grid-template-columns: 15rem minmax(0, 1fr); } }
.wizard-summary img { width: 100%; height: auto; border-radius: var(--radius-control); object-fit: cover; aspect-ratio: 4 / 3; }
.wizard-facts { display: grid; grid-template-columns: max-content 1fr; gap: .3rem 1rem; margin: 0; }
.wizard-facts dt { color: var(--oov-muted); font-weight: 600; }
.wizard-facts dd { margin: 0; }

/* Pricing and availability screens (PRICE-2). States never rely on colour alone (text labels and patterns). */
.pricing-tabs { margin-bottom: 1rem; }
.pricing-tabs-list { list-style: none; display: flex; gap: .4rem; padding: 0 0 .25rem; margin: 0; overflow-x: auto; scrollbar-width: thin; }
.pricing-tab { display: inline-flex; align-items: center; padding: .45rem .85rem; border-radius: 999px; border: 1px solid var(--oov-line); background: #fff; color: var(--oov-navy); font-weight: 600; font-size: .92rem; white-space: nowrap; min-height: 2.75rem; }
@media (min-width: 992px) { .pricing-tabs-list { flex-wrap: wrap; overflow-x: visible; } }
.pricing-tab:hover { background: var(--oov-surface); text-decoration: none; }
.pricing-tab.is-current { background: var(--oov-blue); border-color: var(--oov-blue); color: #fff; }
.pricing-grid { display: grid; gap: 1.25rem; }
@media (min-width: 1200px) { .pricing-grid { grid-template-columns: minmax(0, 1fr) 21rem; align-items: start; } .pricing-aside { position: sticky; top: 1rem; } }
.pricing-main { min-width: 0; }
.legacy-rates { white-space: pre-wrap; font-family: inherit; font-size: .92rem; background: #fff; border: 1px solid #f5e3b0; border-radius: var(--radius-control); padding: .75rem; }
.pricing-list { list-style: none; padding: 0; margin: 0 0 1rem; display: grid; gap: .5rem; }
.pricing-item { display: flex; flex-wrap: wrap; gap: .75rem; justify-content: space-between; align-items: center; border: 1px solid var(--oov-line-soft); border-radius: var(--radius-control); padding: .75rem .9rem; background: #fff; }
.pricing-item-title { font-weight: 700; color: var(--oov-navy); margin-bottom: .15rem; }
.feed-item.is-failing { border-color: #dc3545; }
.feed-url { font-family: var(--bs-font-monospace); word-break: break-all; }
.period-actions { display: flex; flex-wrap: wrap; gap: .35rem; justify-content: flex-end; }
.period-actions form { display: inline; }
@media (pointer: coarse) { .period-actions .btn, .pricing-item .btn { min-height: 2.75rem; min-width: 2.75rem; } }

.owner-ad-signals { list-style: none; padding: 0; margin: 0 0 .6rem; color: #8a4b00; }
.owner-ad-signals .bi { color: #b35c00; }

/* Timeline of the rate periods (decorative copy of the table) */
.period-timeline { margin: .5rem 0 1rem; }
.timeline-track { position: relative; border: 1px solid var(--oov-line-soft); border-radius: var(--radius-control); background: repeating-linear-gradient(90deg, #fff 0, #fff calc(100% / 12 - 1px), var(--oov-line-soft) calc(100% / 12 - 1px), var(--oov-line-soft) calc(100% / 12)); padding: 1.6rem 0 .4rem; overflow: hidden; }
.timeline-months { position: absolute; inset: 0 0 auto 0; height: 1.4rem; }
.timeline-month { position: absolute; top: .2rem; padding-left: .25rem; font-size: .72rem; font-weight: 700; color: var(--oov-muted); white-space: nowrap; }
.timeline-row { position: relative; height: 1.6rem; margin-bottom: .2rem; }
.timeline-bar { position: absolute; top: .25rem; height: 1.1rem; border-radius: 6px; background: var(--oov-blue); }
.timeline-label { position: absolute; top: 0; font-size: .75rem; font-weight: 600; line-height: 1.6rem; color: var(--oov-navy); white-space: nowrap; }
.timeline-bar.is-closed { background: repeating-linear-gradient(135deg, #55627a 0 6px, #3e4a5f 6px 12px); }
.timeline-today { position: absolute; top: 1.4rem; bottom: 0; width: 2px; background: var(--oov-pink-dark); }

/* Quote preview */
.quote-preview .date-range { display: block; }
.quote-preview .when-enhanced, .quote-preview .is-enhanced .when-plain { display: none; }
.quote-preview .is-enhanced .when-enhanced { display: inline; }
.quote-guests { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
.quote-guests .form-label { font-size: .88rem; margin-bottom: .2rem; }
.quote-lines { list-style: none; padding: 0; margin: 0 0 .5rem; }
.quote-lines li { display: flex; justify-content: space-between; gap: .75rem; padding: .35rem 0; border-bottom: 1px dashed var(--oov-line); font-size: .92rem; }
.quote-lines .quote-detail { display: block; color: var(--oov-muted); font-size: .82rem; }
.quote-lines .is-discount .quote-amount { color: #146c43; font-weight: 700; }
.quote-total { display: flex; justify-content: space-between; font-weight: 800; color: var(--oov-navy); font-size: 1.1rem; padding-top: .35rem; }
.quote-errors { padding-left: 1.1rem; margin-bottom: .5rem; }
.quote-alternatives { list-style: none; padding: 0; margin: 0; display: grid; gap: .35rem; }

/* Calendar */
.calendar-legend { display: flex; flex-wrap: wrap; gap: .35rem 1rem; font-size: .85rem; margin-bottom: .75rem; }
.calendar-legend li { display: inline-flex; align-items: center; gap: .35rem; }
.cal-swatch { display: inline-block; width: 1rem; height: 1rem; border-radius: 4px; border: 1px solid var(--oov-line); }
.calendar-months { display: grid; gap: 1rem; }
@media (min-width: 768px) { .calendar-months { grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); } }
.calendar-month { width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 2px; }
.calendar-month caption { caption-side: top; font-weight: 800; color: var(--oov-navy); padding: 0 0 .35rem; }
.calendar-month th { text-align: center; font-size: .75rem; color: var(--oov-muted); font-weight: 700; }
.cal-day { padding: 0; height: 2.9rem; position: relative; }
.cal-btn { width: 100%; height: 100%; min-height: 2.75rem; border: 1px solid transparent; border-radius: 6px; background: transparent; display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1.05; padding: 0; color: inherit; }
.cal-btn:focus-visible { outline: 3px solid var(--oov-blue); outline-offset: 1px; }
.cal-btn[aria-pressed="true"] { border-color: var(--oov-navy); box-shadow: inset 0 0 0 2px var(--oov-navy); }
.cal-num { font-weight: 700; font-size: .88rem; }
.cal-price { font-size: .66rem; color: inherit; opacity: .85; }
.cal-past { color: #9aa4b5; text-align: center; vertical-align: middle; }
.cal-free { background: #fff; border: 1px solid var(--oov-line-soft); border-radius: 6px; }
.cal-booked { background: #f8d7da; color: #58151c; border-radius: 6px; }
.cal-blocked { background: #e2e3e5; color: #2b2f32; border-radius: 6px; }
.cal-option { background: #fff3cd; color: #523d00; border-radius: 6px; }
.cal-preparation { background: repeating-linear-gradient(135deg, #f1f3f6 0 5px, #e2e6ec 5px 10px); color: #2b2f32; border-radius: 6px; }
.cal-closed { background: repeating-linear-gradient(135deg, #cfd4db 0 5px, #b9c0ca 5px 10px); color: #1f242b; border-radius: 6px; }
.cal-ical-dot::after { content: ""; position: absolute; top: 4px; right: 4px; width: 6px; height: 6px; border-radius: 50%; background: var(--oov-pink-dark); }
.cal-day.is-selected .cal-btn { background: var(--oov-blue-dark); color: #fff; }
.cal-badge-booked { background: #f8d7da; color: #58151c; }
.cal-badge-blocked { background: #e2e3e5; color: #2b2f32; }
.cal-badge-option { background: #fff3cd; color: #523d00; }
.ical-ranges { font-size: .88rem; columns: 2 14rem; }
.ical-help [data-provider-help] { background: var(--oov-section); border-radius: var(--radius-control); padding: .5rem .75rem; }
.ical-help.is-enhanced [data-provider-help]:not(.is-active) { display: none; }
.export-link .form-control { font-family: var(--bs-font-monospace); font-size: .85rem; }

/* MIG-015: inbox and conversation page. */
.inbox-tabs { display: flex; flex-wrap: wrap; gap: .4rem; margin: 1rem 0; }
.inbox-list { display: grid; gap: .5rem; }
.inbox-item { background: #fff; border: 1px solid var(--oov-line-soft); border-radius: var(--card-radius); }
.inbox-item.is-unread { border-color: #9cc2f5; box-shadow: var(--shadow-soft); }
.inbox-link { display: grid; grid-template-columns: 1fr auto; gap: .15rem .75rem; padding: .8rem 1rem; color: inherit; text-decoration: none; min-height: 2.75rem; }
.inbox-link:hover .inbox-who, .inbox-link:focus-visible .inbox-who { text-decoration: underline; }
.inbox-who { font-weight: 700; color: var(--oov-navy); display: flex; align-items: center; gap: .4rem; min-width: 0; }
.inbox-item.is-unread .inbox-who { font-weight: 800; }
.inbox-dot { width: .55rem; height: .55rem; border-radius: 50%; background: var(--oov-blue); flex: none; }
.inbox-status { justify-self: end; align-self: start; }
.inbox-ad, .inbox-stay, .inbox-excerpt, .inbox-date { grid-column: 1 / -1; font-size: .86rem; color: var(--oov-muted); overflow: hidden; text-overflow: ellipsis; }
.inbox-ad { color: var(--oov-navy); font-weight: 600; white-space: nowrap; }
.inbox-excerpt { color: #333d4f; }
.inbox-status-new { background: #0057c2; color: #fff; }
.inbox-status-answered { background: #e8edf4; color: #14213d; }
.inbox-status-booked { background: #1e7b45; color: #fff; }
.inbox-status-declined { background: #f3e1e1; color: #7a1f1f; }
.inbox-status-archived, .inbox-status-legacy { background: #eef0f3; color: #55627a; }
.message-grid { display: grid; gap: 1.25rem; }
.message-main { min-width: 0; }
@media (min-width: 992px) {
    .message-grid { grid-template-columns: minmax(0, 1fr) 18rem; align-items: start; }
    .message-side { position: sticky; top: 1rem; }
}

/* REVIEW-1: owner reviews page and review moderation. */
.owner-review { padding-bottom: .5rem; border-bottom: 1px solid var(--oov-line-soft); margin-bottom: 1rem; }
.owner-review:last-child { border-bottom: 0; margin-bottom: 0; }
.owner-review .review { border-bottom: 0; padding-bottom: .5rem; }
.owner-review-actions { display: grid; gap: .5rem; margin-bottom: .75rem; }
.owner-review-form summary { cursor: pointer; font-weight: 600; color: var(--oov-blue); padding: .35rem 0; }
.owner-review-form form { margin-top: .5rem; }
.review-score { font-size: 1.1rem; color: var(--oov-navy); }
.review-score strong { font-size: 1.75rem; font-weight: 800; }
.moderation-review { border: 1px solid var(--oov-line-soft); border-radius: var(--radius-control); padding: 1rem; margin-bottom: 1rem; }
.moderation-review .review { padding-top: .5rem; border-bottom: 0; }
.moderation-reports { background: var(--oov-section); border-radius: var(--radius-control); padding: .75rem 1rem; margin-bottom: .75rem; }
.moderation-form { margin-bottom: .5rem; }
.moderation-log summary { cursor: pointer; font-size: .88rem; color: var(--oov-muted); }
