/* Travellin unified Property builder (PB-5). Professional blue theme. */
.travellin-property-builder { max-width: 1120px; margin: 0 auto; color: #0f172a; }
.tv-pb-head { margin: 0 0 18px; }
.tv-pb-title { font-size: 26px; font-weight: 800; margin: 0 0 4px; }
.tv-pb-sub { color: #475569; margin: 0; font-size: 14px; }
.travellin-listing-gate { padding: 16px; background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 10px; }

.tv-pb-layout { display: grid; grid-template-columns: 220px 1fr; gap: 24px; align-items: start; }
.tv-pb-nav { position: sticky; top: 16px; display: flex; flex-direction: column; gap: 2px; }
.tv-pb-navlink { padding: 9px 12px; border-radius: 8px; color: #334155; text-decoration: none; font-size: 14px; font-weight: 600; }
.tv-pb-navlink:hover { background: #f1f5f9; }
.tv-pb-navlink.is-active { background: #1a73e8; color: #fff; }

.tv-pb-form { min-width: 0; }
.tv-pb-loading { padding: 40px; text-align: center; color: #64748b; }
.tv-pb-section { background: #fff; border: 1px solid #e2e8f0; border-radius: 14px; padding: 20px; margin: 0 0 18px; box-shadow: 0 1px 2px rgba(15,23,42,.04); scroll-margin-top: 16px; }
.tv-pb-sectitle { font-size: 18px; font-weight: 800; margin: 0 0 14px; color: #0f172a; }
.tv-pb-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px 18px; }
.tv-pb-field { display: flex; flex-direction: column; gap: 6px; }
.tv-pb-field--textarea, .tv-pb-field--autocomplete, .tv-pb-field--coordinates,
.tv-pb-field--media, .tv-pb-field--file, .tv-pb-field--calendar { grid-column: 1 / -1; }
.tv-pb-label { font-size: 13px; font-weight: 700; color: #334155; }
.tv-pb-input {
    width: 100%; box-sizing: border-box; padding: 10px 12px; border: 1px solid #cbd5e1;
    border-radius: 8px; font-size: 15px; background: #fff; color: #0f172a;
}
.tv-pb-input:focus { outline: none; border-color: #1a73e8; box-shadow: 0 0 0 3px rgba(26,115,232,.15); }
textarea.tv-pb-input { resize: vertical; min-height: 72px; }

/* stars */
.tv-pb-stars { display: flex; gap: 4px; }
.tv-pb-star { font-size: 24px; line-height: 1; background: none; border: none; cursor: pointer; color: #cbd5e1; padding: 0; }
.tv-pb-star.is-on { color: #f59e0b; }

/* chips */
.tv-pb-chips { display: flex; flex-direction: column; gap: 8px; }
.tv-pb-chiplist { display: flex; flex-wrap: wrap; gap: 6px; }
.tv-pb-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; background: #eef2ff; color: #1e3a8a; border-radius: 999px; font-size: 13px; font-weight: 600; }
.tv-pb-chipx { background: none; border: none; cursor: pointer; color: #64748b; font-size: 15px; line-height: 1; }
.tv-pb-chipinput { padding: 9px 12px; border: 1px dashed #cbd5e1; border-radius: 8px; font-size: 14px; }

/* coordinates */
.tv-pb-coords { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }

/* uploads */
.tv-pb-upload { display: flex; flex-direction: column; gap: 10px; }
.tv-pb-thumbs { display: flex; flex-wrap: wrap; gap: 10px; }
.tv-pb-thumb { position: relative; width: 96px; height: 96px; border-radius: 10px; overflow: hidden; border: 1px solid #e2e8f0; background: #f8fafc; display: flex; align-items: center; justify-content: center; }
.tv-pb-thumb img { width: 100%; height: 100%; object-fit: cover; }
.tv-pb-fileicon { font-size: 34px; }
.tv-pb-thumbx { position: absolute; top: 4px; right: 4px; width: 22px; height: 22px; border-radius: 50%; border: none; background: rgba(15,23,42,.7); color: #fff; cursor: pointer; font-size: 14px; line-height: 1; }
.tv-pb-file { font-size: 14px; }
.tv-pb-hint, .tv-pb-upstatus { font-size: 12px; color: #64748b; }

/* calendar */
.tv-pb-cal { border: 1px solid #e2e8f0; border-radius: 12px; padding: 12px; }
.tv-pb-cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.tv-pb-cal-title { font-weight: 800; }
.tv-pb-cal-nav { background: #f1f5f9; border: none; border-radius: 8px; width: 34px; height: 34px; cursor: pointer; font-size: 18px; }
.tv-pb-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.tv-pb-cal-dow { text-align: center; font-size: 11px; font-weight: 700; color: #94a3b8; padding: 4px 0; }
.tv-pb-cal-cell { aspect-ratio: 1 / 1; border: 1px solid #e2e8f0; border-radius: 8px; background: #fff; cursor: pointer; font-size: 13px; color: #0f172a; }
.tv-pb-cal-cell:hover { border-color: #1a73e8; }
.tv-pb-cal-cell--empty { border: none; background: none; cursor: default; }
.tv-pb-cal-cell--past { opacity: .35; cursor: not-allowed; }
.tv-pb-cal-cell--blocked { background: #fee2e2; border-color: #fca5a5; color: #b91c1c; font-weight: 700; }
.tv-pb-cal-legend { margin-top: 10px; font-size: 12px; color: #475569; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.tv-pb-cal-key { display: inline-block; width: 12px; height: 12px; border-radius: 3px; margin-left: 8px; }
.tv-pb-cal-key--free { background: #fff; border: 1px solid #cbd5e1; }
.tv-pb-cal-key--blocked { background: #fee2e2; border: 1px solid #fca5a5; }
.tv-pb-ical { margin-top: 6px; }

/* rooms repeater */
.tv-pb-repeater { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 12px; }
.tv-pb-rows { display: flex; flex-direction: column; gap: 12px; }
.tv-pb-row { border: 1px solid #e2e8f0; border-radius: 12px; padding: 14px; background: #f8fafc; }
.tv-pb-rowbody { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.tv-pb-rowrm { margin-top: 10px; background: #fff; border: 1px solid #fca5a5; color: #b91c1c; border-radius: 8px; padding: 7px 12px; cursor: pointer; font-weight: 600; font-size: 13px; }
.tv-pb-add { align-self: flex-start; background: #eef2ff; border: 1px solid #bfdbfe; color: #1e3a8a; border-radius: 8px; padding: 9px 14px; cursor: pointer; font-weight: 700; }

/* toggle */
.tv-pb-toggle { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: #334155; cursor: pointer; }

/* footer */
.tv-pb-footer { position: sticky; bottom: 0; background: #fff; padding: 14px 0; border-top: 1px solid #e2e8f0; display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.tv-pb-submit { background: #1a73e8; color: #fff; border: none; border-radius: 10px; padding: 12px 22px; font-size: 15px; font-weight: 800; cursor: pointer; }
.tv-pb-submit:hover { background: #1557b0; }
.tv-pb-submit:disabled { opacity: .6; cursor: default; }
.tv-pb-error { color: #b91c1c; margin: 0; font-weight: 600; }
.tv-pb-notice { color: #047857; margin: 0; font-weight: 600; }

@media (max-width: 820px) {
    .tv-pb-layout { grid-template-columns: 1fr; }
    .tv-pb-nav { position: static; flex-direction: row; flex-wrap: wrap; }
    .tv-pb-grid, .tv-pb-rowbody { grid-template-columns: 1fr; }
}
@media (prefers-color-scheme: dark) {
    .travellin-property-builder { color: #e2e8f0; }
    .tv-pb-section, .tv-pb-cal, .tv-pb-footer { background: #0f172a; border-color: #1e293b; }
    .tv-pb-sectitle, .tv-pb-title { color: #f1f5f9; }
    .tv-pb-input, .tv-pb-cal-cell { background: #1e293b; color: #e2e8f0; border-color: #334155; }
    .tv-pb-row { background: #111827; border-color: #1e293b; }
    .tv-pb-navlink { color: #cbd5e1; }
    .tv-pb-navlink:hover { background: #1e293b; }
}

/* PROP-4 wizard: progress + autosave */
.tv-pb-progress { margin-top: 14px; }
.tv-pb-progress-bar { height: 8px; background: #e2e8f0; border-radius: 999px; overflow: hidden; }
.tv-pb-progress-bar span { display: block; height: 100%; background: #1a73e8; border-radius: 999px; transition: width .3s ease; }
.tv-pb-progress-meta { margin-top: 6px; font-size: 12px; color: #475569; }
.tv-pb-save { color: #047857; font-weight: 600; }
@media (prefers-color-scheme: dark) { .tv-pb-progress-bar { background: #1e293b; } }
