:root {
  color-scheme: light;
  --paper: #f5f7fa;
  --surface: #fff;
  --text: #192b3a;
  --muted: #68788a;
  --border: #e3e9ef;
  --green: #147d79;
  --green-dark: #105c5c;
  --green-light: #e8f5f2;
  --warning: #98551b;
  --warning-light: #fff6e9;
  --sidebar-width: 236px;
  --shadow-card: 0 2px 8px #17344804, 0 1px 2px #17344803;
  font-family: "Segoe UI", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;
  font-size: 14px;
  color: var(--text);
  background: var(--paper);
}

*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
body { margin: 0; line-height: 1.6; -webkit-font-smoothing: antialiased; }
h1, h2, h3, p { margin: 0; }
a { color: var(--green); text-underline-offset: .23em; }
button, input, textarea, select { font: inherit; color: inherit; }
button, .button {
  display: inline-flex;
  min-height: 39px;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 8px 15px;
  background: var(--surface);
  color: var(--green-dark);
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
button:hover, .button:hover { border-color: #b7cbc9; background: #f4f9f8; }
button:disabled, .button:disabled { opacity: .55; cursor: not-allowed; }
button.primary { background: var(--green); border-color: var(--green); color: #fff; box-shadow: 0 2px 3px #105c5c14; }
button.primary:not(:disabled):hover { background: var(--green-dark); }
button.compact { min-height: 34px; padding: 5px 10px; font-size: .88rem; white-space: nowrap; }
button.danger { color: #9b332e; border-color: #e3bbb8; }
button.danger:hover { background: #fff2f1; }
:focus-visible { outline: 3px solid #388f88; outline-offset: 3px; }
.skip-link { position: fixed; left: 12px; top: -80px; z-index: 10; padding: 10px 14px; background: var(--surface); }
.skip-link:focus { top: 10px; }
.icon-definitions { display: none; }

.sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  width: var(--sidebar-width);
  padding: 30px 18px 20px;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  background: #fff;
  border-right: 1px solid var(--border);
}
.brand { display: flex; align-items: center; gap: 11px; padding: 0 7px; color: var(--text); font-size: 1.55rem; font-weight: 800; line-height: 1.15; text-decoration: none; letter-spacing: -.045em; }
.brand small { display: block; margin-top: 5px; color: var(--muted); font-size: .60rem; font-weight: 700; letter-spacing: .24em; }
.brand-mark { display: grid; place-items: center; width: 41px; height: 41px; border-radius: 12px; background: var(--green); color: #fff; font-size: 1.5rem; box-shadow: 0 4px 9px #147d7918; }
.property-summary { display: flex; align-items: center; gap: 9px; margin: 31px 0 12px; padding: 13px 11px; border: 1px solid var(--border); border-radius: 11px; background: #f8fafb; }
.property-summary small { display: block; font-size: .78rem; color: var(--muted); }
.property-mark { display: grid; flex: 0 0 32px; place-items: center; height: 34px; border-radius: 9px; color: var(--green); background: #e6f2f0; font-size: 1.3rem; }
.property-summary label { flex: 1; min-width: 0; }
.property-summary select { width: 100%; min-height: 32px; margin-top: 3px; padding: 3px 18px 3px 0; border: 0; background-color: transparent; font-weight: 650; }
.host-properties-link { display: block; padding: 9px 12px; margin-bottom: 19px; border-radius: 8px; font-size: .88rem; font-weight: 600; text-decoration: none; }
.host-properties-link:hover, .host-properties-link[aria-current="page"] { background: var(--green-light); color: var(--green-dark); }
.host-property-quick-add { justify-content: flex-start; gap: 7px; width: 100%; min-height: 35px; margin: 0 0 5px; padding: 5px 12px; border-color: transparent; color: var(--green); background: transparent; font-size: .84rem; }
.host-property-quick-add span { font-size: 1.1rem; }
.host-account-menu { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 6px 10px; margin-top: auto; padding: 18px 7px 0; border-top: 1px solid var(--border); color: var(--muted); font-size: .87rem; }
.host-account-menu span { min-width: 0; overflow-wrap: anywhere; }
.host-legacy-form { margin-top: 12px; }
.property-management { display: grid; max-width: 980px; gap: 20px; }
.property-information { max-width: 940px; }
.property-details { display: grid; grid-template-columns: minmax(92px, 1fr) minmax(0, 3fr); margin: 0; }
.property-details dt, .property-details dd { padding: 12px 0; margin: 0; border-top: 1px solid var(--border); }
.property-details dt { padding-right: 12px; color: var(--muted); font-weight: 650; }
.property-details dd { overflow-wrap: anywhere; }
.property-dialog-description { margin-bottom: 16px; }
.room-settings-toolbar { margin-bottom: 10px; }
.room-settings-row { margin-top: 14px; padding: 0 16px 16px; border: 1px solid var(--border); border-radius: 10px; background: #fff; }
.room-settings-row:first-child { margin-top: 0; }
.room-settings-row > .summary-row { border-top: 0; }
.room-settings-row .summary-row strong { color: var(--text); font-size: 1rem; }
.room-settings-row .share-link-row input { background: #f8fafb; }
.room-settings-row .share-link-row input { min-width: 0; }
.room-settings-row > .muted { font-size: .85rem; }
.room-share-platform { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; margin-bottom: 6px; color: var(--muted); font-size: .85rem; }
.room-share-platform select { min-height: 34px; width: auto; padding: 4px 8px; }
.sidebar nav { display: grid; gap: 6px; }
.sidebar nav a { position: relative; display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 11px 13px; border-radius: 9px; color: #607181; font-weight: 600; text-decoration: none; transition: background-color .15s ease, color .15s ease; }
.sidebar nav a:hover { color: var(--text); background: #f3f6f8; }
.sidebar nav a[aria-current="page"] { color: var(--green-dark); background: var(--green-light); font-weight: 750; }
.sidebar nav a[aria-current="page"]::before { content: ""; position: absolute; inset: 12px auto 12px 0; width: 3px; border-radius: 3px; background: var(--green); }
.sidebar nav svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }

main { margin-left: var(--sidebar-width); min-width: 0; }
.topbar { position: sticky; top: 0; z-index: 20; display: flex; justify-content: space-between; align-items: center; min-height: 66px; gap: 12px; padding: 12px clamp(22px, 2.5vw, 38px); border-bottom: 1px solid var(--border); background: #ffffffed; backdrop-filter: blur(12px); color: var(--muted); font-size: .88rem; }
.today-label { padding: 5px 10px; border: 1px solid var(--border); border-radius: 7px; color: #4c6174; background: #fff; font-size: .83rem; font-weight: 600; white-space: nowrap; }
.workspace { max-width: 1640px; margin: 0 auto; padding: 30px clamp(22px, 2.5vw, 38px) 42px; }
.page-header { display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 16px; margin-bottom: 24px; }
.page-header h1 { margin: 3px 0 7px; font-size: clamp(1.75rem, 2.5vw, 2.2rem); line-height: 1.2; letter-spacing: -.055em; }
.page-header p:not(.eyebrow), .muted { color: var(--muted); }
.eyebrow { color: #68788a; font-size: .68rem; font-weight: 750; letter-spacing: .16em; }
.actions { display: flex; gap: 8px; flex-wrap: wrap; }
.panel, .metric {
  min-width: 0;
  padding: 21px;
  border: 1px solid var(--border);
  border-radius: 13px;
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.panel-heading { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 17px; }
.panel-heading h2 { font-size: 1.08rem; font-weight: 750; letter-spacing: -.025em; }
.panel-heading a { font-size: .88rem; white-space: nowrap; }
.metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-bottom: 21px; }
.metric { position: relative; display: flex; flex-direction: column; padding: 20px 22px; }
.metric span { color: #617386; font-size: .9rem; font-weight: 600; }
.metric strong { margin: 8px 0 7px; color: var(--text); font-size: 2.25rem; line-height: 1.1; font-weight: 750; letter-spacing: -.055em; font-variant-numeric: tabular-nums; }
.metric small { color: #68788a; font-size: .78rem; }
.overview-grid, .settings-grid, .intake-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; align-items: start; }
.settings-tabs { display: flex; flex-wrap: wrap; gap: 5px 20px; margin-bottom: 24px; border-bottom: 1px solid var(--border); }
.settings-tabs a { padding: 10px 4px 12px; border-bottom: 2px solid transparent; color: var(--muted); text-decoration: none; font-weight: 650; }
.settings-tabs a:hover, .settings-tabs a[aria-current="page"] { border-bottom-color: var(--green); color: var(--green-dark); }
.ota-platform-tabs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 13px; margin-bottom: 25px; }
.ota-platform-tabs button { position: relative; display: grid; justify-items: start; min-width: 0; gap: 5px; padding: 17px 16px; border-radius: 11px; text-align: left; box-shadow: var(--shadow-card); }
.ota-platform-tabs button::before { content: ""; width: 22px; height: 3px; margin-bottom: 5px; border-radius: 3px; background: #ff6f72; }
.ota-platform-tabs button[data-ota-platform="네이버"]::before { background: #32b66b; }
.ota-platform-tabs button[data-ota-platform="Trip.com"]::before { background: #3478e5; }
.ota-platform-tabs button[data-ota-platform="Agoda"]::before { background: #9170ce; }
.ota-platform-tabs button strong { color: var(--text); font-size: 1rem; font-weight: 750; }
.ota-platform-tabs button[aria-selected="true"] { border-color: #78b8b0; background: #f0f9f6; color: var(--green-dark); box-shadow: 0 0 0 1px #78b8b018; }
.ota-platform-tabs small, .ota-platform-state { color: var(--muted); font-size: .80rem; font-weight: 400; }
.ota-platform-tabs [aria-selected="true"] .ota-platform-state { color: var(--green-dark); font-weight: 650; }
.ota-platform-detail { display: grid; gap: 21px; }
.ota-platform-heading h2 { margin: 0 0 5px; font-size: 1.22rem; letter-spacing: -.03em; }
.ota-platform-heading p { font-size: .9rem; }
.ota-platform-detail .panel-heading h3 { margin: 0; font-size: 1.03rem; font-weight: 750; letter-spacing: -.02em; }
.connection-feature-header { display: flex; align-items: center; gap: 13px; margin-bottom: 16px; }
.connection-feature-icon { display: grid; flex: 0 0 44px; height: 44px; place-items: center; border: 1px solid #f0dedc; border-radius: 11px; background: #fff5f1; color: #d56b5f; font-size: 1.3rem; font-weight: 750; }
.connection-feature-icon svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.6; }
.connection-feature-copy { flex: 1; min-width: 0; }
.connection-feature-copy .eyebrow { margin-bottom: 3px; font-size: .59rem; }
.connection-feature-copy h3 { font-size: 1.07rem; font-weight: 750; letter-spacing: -.025em; }
.connection-feature-header > .badge { margin-left: auto; }
.setup-notice { display: flex; justify-content: space-between; align-items: center; gap: 15px; padding: 18px 21px; margin-bottom: 21px; border: 1px solid #cce4de; border-radius: 12px; background: #eff8f5; }
.setup-notice p { margin-top: 3px; color: var(--muted); }
.setup-notice a { flex-shrink: 0; }
.summary-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 15px 0; border-top: 1px solid #edf1f5; }
.summary-row strong { font-size: .92rem; font-weight: 650; }
.summary-row small { display: block; margin-top: 4px; color: #68788a; font-size: .81rem; line-height: 1.5; }
.summary-row div { min-width: 0; overflow-wrap: anywhere; }
.summary-row > :last-child:not(div) { flex-shrink: 0; }
.empty-text { color: #68788a; padding: 30px 8px; font-size: .9rem; text-align: center; }
.badge { display: inline-flex; align-items: center; padding: 3px 9px; border: 1px solid #dcece7; border-radius: 5px; background: #edf7f3; color: #37715a; font-size: .76rem; font-weight: 600; white-space: nowrap; }
.badge.positive { color: #2b7656; background: #edf8f1; border-color: #d8eedf; }
.badge.neutral { color: #5f7183; background: #f2f5f8; border-color: #e4eaf0; }
.badge.warning { color: var(--warning); background: var(--warning-light); }
.feedback { margin-bottom: 18px; padding: 12px 15px; border: 1px solid #cbe4dc; border-radius: 9px; background: #f0f9f4; color: var(--green-dark); overflow-wrap: anywhere; }
.feedback.error, .inline-note { border-color: #efdfc7; background: var(--warning-light); color: var(--warning); }
.empty-panel { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }

.auth-screen { background: #f4f7f9; }
.auth-screen .sidebar, .auth-screen .topbar { display: none; }
.auth-screen main { display: grid; min-height: 100dvh; margin: 0; place-items: center; }
.auth-screen .workspace { width: min(100%, 468px); padding: 38px 18px; }
.auth-card { padding: clamp(24px, 6vw, 37px); border: 1px solid var(--border); border-radius: 17px; background: var(--surface); box-shadow: 0 10px 38px #233f5209; }
.auth-brand { justify-content: center; padding: 0; margin: 0 0 22px; }
.auth-heading { margin-bottom: 23px; text-align: center; }
.auth-heading h1 { color: var(--text); font-size: 1.65rem; line-height: 1.25; letter-spacing: -.04em; }
.auth-heading p { margin-top: 6px; color: var(--muted); }
.auth-form { display: grid; gap: 14px; }
.auth-field { display: grid; gap: 7px; font-size: .9rem; font-weight: 600; }
.auth-field input { min-height: 44px; font-weight: 400; }
.auth-options { display: flex; flex-wrap: wrap; gap: 6px 18px; color: var(--muted); }
.auth-options label { display: flex; gap: 6px; align-items: center; cursor: pointer; }
.auth-options input { width: 16px; height: 16px; min-height: 0; margin: 0; accent-color: var(--green); }
.auth-form > button { min-height: 44px; }
.auth-information { padding: 9px 10px; border-radius: 7px; background: var(--paper); color: var(--muted); font-size: .85rem; }
.auth-switch { margin-top: 18px; color: var(--muted); text-align: center; }
.auth-switch a { font-weight: 700; }

.table-scroll { overflow-x: auto; }
.data-table, .room-calendar { width: 100%; border-collapse: separate; border-spacing: 0; text-align: left; }
.data-table { min-width: 590px; }
.data-table td, .data-table th { padding: 15px 12px; overflow-wrap: anywhere; border-bottom: 1px solid #edf1f5; }
.data-table th { color: #68788a; background: #f8fafc; font-size: .77rem; font-weight: 650; white-space: nowrap; }
.data-table td { vertical-align: middle; font-size: .89rem; }
.data-table tbody tr:hover { background: #f8fbfb; }
.data-table thead th:first-child { border-radius: 7px 0 0 7px; }
.data-table thead th:last-child { border-radius: 0 7px 7px 0; }
.data-table tr:last-child td { border-bottom: 0; }
:is(#view-calendar, #view-room-status) > .page-header { align-items: center; gap: 10px; margin-bottom: 14px; }
:is(#view-calendar, #view-room-status) > .page-header h1 { margin: 0 0 3px; font-size: clamp(1.55rem, 2.45vw, 2rem); }
:is(#view-calendar, #view-room-status) > .page-header .eyebrow { font-size: .66rem; line-height: 1.15; }
:is(#view-calendar, #view-room-status) > .page-header p:not(.eyebrow) { font-size: .88rem; line-height: 1.4; }
:is(#view-calendar, #view-room-status) > .page-header button { min-height: 34px; padding: 4px 10px; }
.calendar-panel, .room-status-panel {
  --calendar-line: #e7edf3;
  --calendar-reservation: #58a58c;
  --calendar-ota: #7f8fc3;
  --calendar-manual: #a08e77;
  --calendar-overlap: #d5a065;
  --calendar-week-height: clamp(62px, calc((100dvh - 310px) / 6), 96px);
  --calendar-date-row-height: 32px;
  --calendar-event-row-height: 32px;
  margin-bottom: 16px;
  padding: 12px;
}
.calendar-toolbar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px 15px; margin-bottom: 13px; }
.period-controls, .calendar-filters, .legend, .calendar-room-filter, .calendar-jump { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.period-controls button, .calendar-jump button { min-height: 34px; padding: 4px 10px; }
.period-controls button:first-child, .period-controls button:nth-of-type(2) { min-width: 34px; padding: 0; font-size: 1.45rem; line-height: 1; }
.period-controls strong { min-width: 122px; margin-inline: 2px; color: var(--text); font-size: 1.23rem; letter-spacing: -.03em; text-align: center; white-space: nowrap; font-variant-numeric: tabular-nums; }
.calendar-filters { gap: 8px 14px; }
.calendar-room-filter label, .calendar-jump label, .legend { color: #68788a; font-size: .79rem; }
.calendar-room-filter select, .calendar-jump input { min-height: 34px; width: auto; max-width: 100%; padding: 4px 8px; }
.calendar-room-filter select { min-width: 93px; max-width: 165px; }
.legend { flex-basis: 100%; gap: 7px 14px; }
.legend span { white-space: nowrap; }
.legend span::before { content: ""; display: inline-block; width: 9px; height: 9px; margin-right: 5px; border-radius: 2px; background: var(--calendar-reservation); }
.legend .legend-ota::before { background: var(--calendar-ota); }
.legend .legend-manual::before { background: var(--calendar-manual); }
.legend .legend-overlap::before { background: var(--calendar-overlap); }
.inline-note { padding: 9px 12px; margin: 0 0 12px; border-width: 1px; border-style: solid; border-radius: 7px; font-size: .89rem; }
.calendar-panel > .inline-note { padding: 6px 8px; margin: 0 0 8px; font-size: .82rem; }
.calendar-scroll { border: 1px solid var(--calendar-line); border-radius: 10px; background: #fff; }
.calendar-scroll > .empty-text { padding: 18px; }
.room-calendar { min-width: 0; table-layout: fixed; }
.room-calendar th, .room-calendar .calendar-day { border-right: 1px solid var(--calendar-line); }
.room-calendar :is(th, td):last-child { border-right: 0; }
.room-calendar th { padding: 9px 3px; border-bottom: 1px solid var(--calendar-line); background: #f8fafc; color: #66788b; text-align: center; font-size: .78rem; font-weight: 600; }
.room-calendar .calendar-day {
  height: var(--calendar-date-row-height);
  padding: 4px 7px;
  vertical-align: top;
  background: #fff;
}
.room-calendar .calendar-week-dates.calendar-week-end .calendar-day { height: var(--calendar-week-height); }
.room-calendar .calendar-week-events td { height: var(--calendar-event-row-height); padding: 2px 3px; vertical-align: top; }
.room-calendar .calendar-week-events:nth-child(2).calendar-week-end td { height: calc(var(--calendar-week-height) - var(--calendar-date-row-height)); }
.room-calendar .calendar-week-end td { border-bottom: 1px solid var(--calendar-line); }
.room-calendar .calendar-week:last-child .calendar-week-end td { border-bottom: 0; }
.room-calendar .calendar-event-gap { border-right: 1px solid var(--calendar-line); }
.room-calendar .calendar-event-cell:has(> .continues-before) { padding-inline-start: 0; }
.room-calendar .calendar-event-cell:has(> .continues-after) { padding-inline-end: 0; }
.room-calendar :is(.calendar-day, .calendar-event-gap):is(:first-child, :last-child) { background: #fcfdfe; }
.room-calendar th.weekend-sun, .room-calendar .calendar-day:first-child .calendar-day-number { color: #c57278; }
.room-calendar th.weekend-sat, .room-calendar .calendar-day:last-child .calendar-day-number { color: #6e8dbb; }
.room-calendar :is(.calendar-day, .calendar-event-gap).outside-month { background: #f7f9fb; }
.room-calendar .outside-month .calendar-day-number { color: #b0bbc5; }
.room-calendar :is(.calendar-day, .calendar-event-gap).today-column { background: #f0f9f7; }
.room-calendar .calendar-day.overlap-cell { background: #fff1e4; }
.room-calendar .calendar-day.duplicate-cell { background: #fcf7e8; }
.calendar-day-header { display: flex; align-items: center; justify-content: space-between; gap: 2px; min-width: 0; }
.calendar-day-number { display: grid; place-items: center; width: 25px; height: 25px; border-radius: 7px; color: #5c6f81; font-size: .85rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.room-calendar .calendar-day.today-column .calendar-day-number { color: #fff; background: var(--green); }
.room-calendar .conflict-label { display: block; min-width: 0; color: var(--warning); font-size: .71rem; line-height: 1.15; overflow-wrap: anywhere; }
.calendar-entry, .platform-legend-item { --channel-accent: #7d9992; --channel-bg: #edf4f1; --channel-text: #47665e; }
.calendar-entry { display: flex; align-items: flex-start; justify-content: flex-start; gap: 4px; min-width: 0; width: 100%; min-height: 28px; padding: 5px 6px; overflow: hidden; border-radius: 5px; border-color: var(--channel-bg); border-left: 3px solid var(--channel-accent); color: var(--channel-text); background: var(--channel-bg); text-align: left; font-size: .80rem; line-height: 1.25; box-shadow: none; }
.calendar-entry.block { --channel-accent: #ad9676; --channel-bg: #f5f0e7; --channel-text: #786344; }
.calendar-entry.imported-block { --channel-accent: #7d9992; --channel-bg: #edf4f1; --channel-text: #47665e; }
:is(.calendar-entry, .platform-legend-item)[data-channel="airbnb"] { --channel-accent: #e47d8a; --channel-bg: #fff0f2; --channel-text: #a44759; }
:is(.calendar-entry, .platform-legend-item)[data-channel="bookingcom"] { --channel-accent: #42679b; --channel-bg: #eaf0fa; --channel-text: #284e83; }
:is(.calendar-entry, .platform-legend-item)[data-channel="tripcom"] { --channel-accent: #5b99d0; --channel-bg: #eaf4fd; --channel-text: #2b6da7; }
:is(.calendar-entry, .platform-legend-item)[data-channel="agoda"] { --channel-accent: #9b7cc3; --channel-bg: #f3edfb; --channel-text: #755298; }
:is(.calendar-entry, .platform-legend-item)[data-channel="네이버"] { --channel-accent: #52a772; --channel-bg: #eaf7ee; --channel-text: #327549; }
:is(.calendar-entry, .platform-legend-item):is([data-channel="direct"], [data-channel="직접예약"], [data-channel="직접"]) { --channel-accent: #3e9d91; --channel-bg: #e4f5f0; --channel-text: #246f63; }
:is(.calendar-entry, .platform-legend-item)[data-channel="other"] { --channel-accent: #7d9992; --channel-bg: #edf4f1; --channel-text: #47665e; }
:is(.calendar-entry, .platform-legend-item):is([data-channel="blocked"], [data-channel="manual"]) { --channel-accent: #ad9676; --channel-bg: #f5f0e7; --channel-text: #786344; }
.platform-legend-item { display: inline-flex; align-items: center; gap: 6px; color: var(--channel-text); font-size: .78rem; font-weight: 600; white-space: nowrap; }
.platform-legend-swatch { flex: 0 0 14px; width: 14px; height: 14px; border: 1px solid var(--channel-accent); border-left-width: 3px; border-radius: 3px; background: var(--channel-bg); }
.platform-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 15px; margin: 12px 0 0; padding: 10px 12px; border: 1px solid var(--border); border-radius: 8px; background: #f8fafb; list-style: none; }
.calendar-entry.continues-before { border-start-start-radius: 0; border-end-start-radius: 0; }
.calendar-entry.continues-after { border-start-end-radius: 0; border-end-end-radius: 0; }
.calendar-entry.continues-before::before, .calendar-entry.continues-after::after { flex: 0 0 auto; opacity: .78; font-size: 1.1em; line-height: .85; }
.calendar-entry.continues-before::before { content: "‹"; }
.calendar-entry.continues-after::after { content: "›"; }
.calendar-entry-content { flex: 1 1 0; min-width: 0; display: grid; gap: 2px; }
.calendar-entry-meta, .calendar-entry-party { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 4px; min-width: 0; }
.calendar-entry-guest-name { min-width: 0; max-width: 100%; overflow-wrap: anywhere; font-weight: 750; }
.calendar-entry-guests { white-space: nowrap; }
.calendar-entry-room, .calendar-entry-nights, .calendar-entry-guests, .calendar-entry-mail { flex: 0 0 auto; padding: 1px 4px; border-radius: 3px; background: #ffffffb8; font-size: .70rem; font-weight: 650; line-height: 1.25; }
.calendar-entry-mail { flex-shrink: 1; max-width: 100%; overflow-wrap: anywhere; }
.calendar-entry-room { max-width: 42%; white-space: normal; overflow-wrap: anywhere; }
.calendar-entry-platform, .calendar-entry-detail { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.calendar-entry-detail { flex: 1 1 0; font-size: .79rem; font-weight: 500; }
.calendar-entry-detail::before { content: "· "; }
.calendar-event-cell:is(:not([colspan]), [colspan="1"]) .calendar-entry-meta,
.calendar-event-cell:is(:not([colspan]), [colspan="1"]) .calendar-entry-party { flex-wrap: nowrap; }
.calendar-event-cell:is(:not([colspan]), [colspan="1"]) .calendar-entry-room { flex: 1 1 0; max-width: 44%; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.calendar-event-cell:is(:not([colspan]), [colspan="1"]) .calendar-entry-platform { flex: 0 1 auto; min-width: 0; white-space: nowrap; text-overflow: ellipsis; }
.calendar-event-cell:is(:not([colspan]), [colspan="1"]) .calendar-entry-guest-name { flex: 1 1 0; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.calendar-event-cell:is(:not([colspan]), [colspan="1"]) .calendar-entry-guests { flex-shrink: 0; }
.calendar-entry:hover { color: var(--channel-text); background: var(--channel-bg); border-color: var(--channel-bg); border-left-color: var(--channel-accent); filter: brightness(.96); }
.calendar-add { flex: 0 0 24px; width: 24px; min-height: 24px; padding: 0; border-radius: 5px; background: transparent; border-color: transparent; color: #91a8a5; font-size: 1rem; line-height: 1; }
.calendar-add:hover { background: #e1f0ec; color: var(--green); }
.calendar-entry:focus-visible, .calendar-add:focus-visible { outline-offset: -1px; }

.calendar-month-totals { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; }
.calendar-total { display: inline-flex; align-items: center; gap: 8px; padding: 5px 10px; border-radius: 6px; font-size: .78rem; font-weight: 550; white-space: nowrap; }
.calendar-total strong { font-size: .83rem; font-weight: 750; font-variant-numeric: tabular-nums; }
.calendar-total.checkin { color: #2a7764; background: #e2f7ee; }
.calendar-total.checkout { color: #8a611e; background: #fff4d5; }
.turnover-calendar { --turnover-cell-height: clamp(62px, calc((100dvh - 280px) / 6), 112px); width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; }
.turnover-calendar thead th { padding: 9px 3px; border-right: 1px solid var(--calendar-line); border-bottom: 1px solid var(--calendar-line); background: #f8fafc; color: #66788b; font-size: .78rem; font-weight: 600; text-align: center; }
.turnover-calendar thead th:last-child { border-right: 0; }
.turnover-calendar thead th:first-child { color: #b25c66; }
.turnover-calendar thead th:last-child { color: #527cac; }
.turnover-day { height: var(--turnover-cell-height); padding: 5px 6px; border-right: 1px solid var(--calendar-line); border-bottom: 1px solid var(--calendar-line); vertical-align: top; background: #fff; }
.turnover-day:last-child { border-right: 0; }
.turnover-week:last-child .turnover-day { border-bottom: 0; }
.turnover-day.outside-month { background: #f7f9fb; }
.turnover-day.outside-month .calendar-day-number { color: #a5b1bd; }
.turnover-day.today-column { background: #f0f9f4; }
.turnover-day.today-column .calendar-day-number { color: #fff; background: var(--green); }
.turnover-day-header { display: flex; align-items: center; justify-content: space-between; gap: 3px; margin-bottom: 4px; }
.turnover-day-header .calendar-day-number { width: 23px; height: 23px; font-size: .78rem; }
.turnover-day:first-child:not(.outside-month):not(.today-column) .calendar-day-number { color: #b25c66; }
.turnover-day:last-child:not(.outside-month):not(.today-column) .calendar-day-number { color: #527cac; }
.turnover-day-header .calendar-add { flex-basis: 22px; width: 22px; min-height: 22px; font-size: .9rem; }
.calendar-count-strip { display: flex; align-items: center; justify-content: space-between; gap: 4px; width: 100%; min-height: 20px; margin-top: 4px; padding: 2px 6px; border: 0; border-radius: 3px; font-size: .75rem; font-weight: 500; line-height: 1.3; box-shadow: none; }
.calendar-count-strip span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.calendar-count-strip strong { flex-shrink: 0; font-size: .77rem; font-weight: 750; font-variant-numeric: tabular-nums; }
.calendar-count-strip.checkin { color: #23775f; background: #e0f8ed; }
.calendar-count-strip.checkout { color: #895c17; background: #fff3ce; }
.calendar-count-strip.checkin:hover { color: #1b644e; background: #cef1df; }
.calendar-count-strip.checkout:hover { color: #724b10; background: #ffe9ad; }
.cal-summary-note { margin-top: 12px; color: var(--muted); font-size: .81rem; }
.turnover-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.turnover-detail-panel { min-width: 0; padding: 16px; border: 1px solid var(--border); border-radius: 10px; background: #fbfcfd; }
.turnover-detail-panel h3 { margin: 0 0 9px; font-size: .98rem; letter-spacing: -.025em; }
.turnover-detail-panel .summary-row { gap: 9px; padding: 12px 0; }
.turnover-detail-panel .summary-row strong { font-size: .86rem; }
#calendar-day-dialog { width: min(740px, calc(100% - 28px)); }

.room-status-toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px 16px; margin-bottom: 12px; }
.room-status-summary { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 15px; color: var(--muted); font-size: .78rem; }
.room-timeline-scroll { max-height: calc(100dvh - 258px); overflow: auto; border: 1px solid var(--calendar-line); border-radius: 10px; background: #fff; overscroll-behavior: contain; }
.room-timeline { --timeline-room-width: 144px; --timeline-day-min-width: 64px; width: 100%; min-width: calc(var(--timeline-room-width) + var(--timeline-days, 31) * var(--timeline-day-min-width)); border-collapse: separate; border-spacing: 0; table-layout: fixed; }
.room-timeline col:first-child { width: var(--timeline-room-width); }
.room-timeline col:not(:first-child) { width: calc((100% - var(--timeline-room-width)) / var(--timeline-days, 31)); }
.room-timeline thead th { position: sticky; top: 0; z-index: 3; padding: 8px 1px; border-right: 1px solid var(--calendar-line); border-bottom: 1px solid var(--calendar-line); color: #718091; background: #f8fafc; font-size: .7rem; font-weight: 550; text-align: center; }
.room-timeline thead th:first-child { left: 0; z-index: 4; padding-left: 12px; text-align: left; }
.timeline-date strong, .timeline-date time { display: block; color: #53697b; font-size: .79rem; font-weight: 650; font-variant-numeric: tabular-nums; }
.timeline-date small { display: block; margin-top: 1px; font-size: .65rem; font-weight: 500; }
.room-timeline .timeline-date.weekend-sun, .room-timeline .timeline-date.weekend-sun :is(strong, time) { color: #b25c66; }
.room-timeline .timeline-date.weekend-sat, .room-timeline .timeline-date.weekend-sat :is(strong, time) { color: #527cac; }
.room-timeline .timeline-date.today-column { color: var(--green-dark); background: #e3f4ed; }
.room-timeline .timeline-date.today-column :is(strong, time) { color: var(--green-dark); }
.room-timeline .timeline-room-heading { position: sticky; left: 0; z-index: 2; padding: 12px; border-right: 1px solid var(--calendar-line); border-bottom: 1px solid var(--calendar-line); color: var(--text); background: #fff; font-size: .82rem; font-weight: 650; line-height: 1.5; text-align: left; vertical-align: middle; overflow-wrap: anywhere; }
.timeline-room-heading strong { display: block; font-size: .84rem; font-weight: 650; }
.timeline-room-heading small { display: block; margin-top: 4px; color: var(--muted); font-size: .72rem; font-weight: 400; }
.timeline-day, .timeline-gap { padding: 0; border-right: 1px solid var(--calendar-line); background: #fff; }
.timeline-day { height: 15px; }
.timeline-day.today-column, .timeline-gap.today-column { background: #f0f9f4; }
.timeline-day > button { display: block; width: 100%; min-height: 15px; height: 15px; padding: 0; border: 0; border-radius: 0; background: transparent; color: #a2b2bb; font-size: .68rem; line-height: 1; }
.timeline-day > button:hover { color: var(--green); background: #e1f2eb; }
.timeline-event-cell { height: 82px; padding: 3px; border-right: 1px solid var(--calendar-line); vertical-align: top; }
.timeline-events .timeline-gap { height: 82px; }
.timeline-event-cell:has(> .continues-before) { padding-inline-start: 0; }
.timeline-event-cell:has(> .continues-after) { padding-inline-end: 0; }
.room-timeline-group tr:last-child :is(.timeline-event-cell, .timeline-gap, .timeline-day) { border-bottom: 1px solid var(--calendar-line); }
.room-timeline-group:last-child tr:last-child :is(.timeline-event-cell, .timeline-gap, .timeline-day),
.room-timeline-group:last-child .timeline-room-heading { border-bottom: 0; }
.room-timeline :is(th, td):last-child { border-right: 0; }
.room-timeline .calendar-entry { min-height: 74px; padding: 7px 5px; font-size: 13px; }
.room-timeline .calendar-entry-content { gap: 6px; }
.room-timeline .calendar-entry-party { flex-wrap: wrap; align-items: center; gap: 4px; }
.room-timeline .calendar-entry-guest-name { display: -webkit-box; min-width: 0; max-width: 100%; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; text-overflow: ellipsis; white-space: normal; overflow-wrap: anywhere; font-size: 14px; line-height: 1.3; font-weight: 750; }
.room-timeline .calendar-entry-guests { max-width: 100%; padding: 0; border-radius: 0; background: transparent; white-space: normal; overflow-wrap: anywhere; font-size: 12.5px; line-height: 1.3; font-weight: 750; }
.room-timeline .calendar-entry-nights { padding: 1px 2px; font-size: 12px; line-height: 1.3; font-weight: 650; }
.room-timeline .calendar-entry-mail { justify-self: start; padding: 2px 4px; font-size: 11px; line-height: 1.3; font-weight: 650; }
.room-timeline .calendar-entry-room { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.room-timeline .calendar-entry :is(.calendar-entry-nights, .calendar-entry-guests) { flex-shrink: 0; }
.room-timeline .manual-block .calendar-entry-detail { white-space: normal; overflow-wrap: anywhere; font-size: 12px; line-height: 1.4; }
.room-timeline .needs-guest-review { position: relative; box-shadow: inset 0 0 0 1px #bb7a2866; }
.guest-review-flag { position: absolute; top: 3px; right: 3px; display: grid; place-items: center; width: 13px; height: 13px; border-radius: 50%; color: #fff; background: #a36b1f; font-size: 10px; font-weight: 800; line-height: 1; }
.needs-guest-review .calendar-entry-guest-name { padding-right: 11px; }
.guest-review { margin-top: 14px; padding: 16px; border: 1px solid #ead5b3; border-radius: 10px; background: #fffcf7; scroll-margin-top: 85px; }
.guest-review .panel-heading { align-items: center; gap: 12px; margin-bottom: 7px; }
.guest-review h2 { font-size: 1rem; }
.guest-review > p, .guest-review summary { font-size: .82rem; }
.guest-review details { margin-top: 10px; }
.guest-review summary { cursor: pointer; color: #86581d; font-weight: 650; }
.guest-review .summary-row { flex-wrap: wrap; align-items: flex-start; gap: 10px; padding-block: 13px; }
.guest-review .summary-row > :first-child { flex: 1 1 300px; }
.guest-review .summary-row strong { font-size: .86rem; }
.guest-review .summary-row small { line-height: 1.6; }
.guest-review .actions { gap: 7px; font-size: .8rem; }
.guest-review .actions button { min-height: 32px; padding: 4px 9px; font-size: .79rem; }

.field-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 17px 16px; }
.panel > p.muted + form { margin-top: 14px; }
.field-grid > label, .filters > label { display: flex; flex-direction: column; min-width: 0; gap: 7px; font-size: .88rem; font-weight: 600; }
.field-grid label small { color: var(--muted); font-weight: 400; }
.required-label { margin-left: 4px; color: var(--green); font-size: .76rem; font-weight: 500; white-space: nowrap; }
.full-width { grid-column: 1 / -1; }
input, select, textarea { width: 100%; min-height: 42px; padding: 9px 11px; border: 1px solid #dbe3eb; border-radius: 8px; background: #fff; font-size: .9rem; font-weight: 400; transition: border-color .15s ease, box-shadow .15s ease; }
input::placeholder, textarea::placeholder { color: #68788a; }
input:hover, select:hover, textarea:hover { border-color: #bfccd6; }
input:focus, select:focus, textarea:focus { border-color: var(--green); box-shadow: 0 0 0 3px #147d7910; outline: 2px solid #388f88; outline-offset: 1px; }
input[readonly], input:disabled, select:disabled, fieldset:disabled input, fieldset:disabled textarea { background: #f7f9fb; color: #647587; }
textarea { resize: vertical; }
.filters { display: flex; flex-wrap: wrap; align-items: end; gap: 12px; padding-bottom: 18px; margin-bottom: 7px; border-bottom: 1px solid var(--border); }
.filters input { min-width: min(245px, 100%); }
.email-preview { border: 1px solid #dceae6; border-radius: 11px; background: #fbfefd; margin-top: 22px; padding: 19px; }
.email-preview h3 { color: var(--text); font-size: 1.05rem; letter-spacing: -.02em; }
.email-preview > :not(:first-child) { margin-top: 10px; }
.gmail-guest-message { border: 1px solid var(--border); border-radius: 9px; background: #fff; padding: 15px; }
.gmail-guest-message h4 { margin: 0 0 6px; }
.gmail-guest-message > :nth-child(n+3) { margin-top: 6px; }
.gmail-guest-message-text { white-space: pre-wrap; overflow-wrap: anywhere; }
.draft-details { display: grid; grid-template-columns: max-content 1fr; gap: 8px 18px; margin: 0; padding: 12px 0; font-size: .89rem; }
.draft-details dt { color: #68788a; }
.draft-details dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.warning-list { padding-left: 1.4rem; color: var(--warning); }
.panel > .inline-note { margin: 14px 0 0; }
.gmail-panel { grid-column: 1 / -1; }
.gmail-account, .gmail-note { margin-top: 13px; }
.gmail-account { padding: 12px 15px; border: 1px solid #e3ece8; border-radius: 9px; background: #f7fbf9; }
.gmail-account strong { overflow-wrap: anywhere; }
.gmail-account small { display: block; color: var(--muted); }
.gmail-actions:not(:has(button:not([hidden]))) { display: none; }
.gmail-actions { margin-top: 16px; }
.gmail-queue, .manual-email { padding-top: 20px; margin-top: 22px; border-top: 1px solid var(--border); }
.gmail-queue .panel-heading { margin-bottom: 8px; }
.gmail-queue h3 { font-size: 1rem; }
.gmail-categories { display: flex; gap: 7px; flex-wrap: wrap; margin-top: 12px; }
.gmail-categories button { border-radius: 20px; min-height: 32px; padding: 5px 11px; color: #68788a; border-color: #e6ecf1; background: #fafcfd; font-size: .79rem; font-weight: 550; }
.gmail-categories button[aria-pressed="true"] { color: var(--green-dark); background: var(--green-light); border-color: #bcdcd3; font-weight: 650; }
.gmail-room-filter { display: flex; align-items: center; gap: 8px; margin: 10px 0 8px; color: var(--muted); font-size: .87rem; }
.gmail-room-filter select { width: auto; max-width: 100%; min-height: 34px; }
.gmail-mail-row .badge { margin: 0 6px 3px 0; }
.gmail-mail-row .mail-subject { font-weight: 600; line-height: 1.6; }
#gmail-more { margin-top: 8px; }
.manual-email summary { cursor: pointer; color: var(--green-dark); font-weight: 700; }
.manual-email form { margin-top: 12px; }
.share-link-box > label { display: block; margin-bottom: 4px; font-weight: 700; }
.share-link-row { display: flex; align-items: center; gap: 8px; }
.share-link-row input { min-width: 0; font-size: .82rem; }
.share-link-row button { flex-shrink: 0; }
#share-copy-note { margin-top: 5px; font-size: .87rem; }
#share-rotate { margin-top: 8px; }
.share-instructions { margin-top: 14px; font-size: .9rem; }
.ical-connection { display: grid; gap: 10px; padding: 14px; border: 1px solid #dceae4; border-radius: 9px; background: #f6fbf8; }
.ical-connection > p, .ical-note, #ota-ical-feedback { margin: 0; font-size: .88rem; }

dialog { width: min(620px, calc(100% - 28px)); max-height: calc(100dvh - 40px); padding: 26px; border: 1px solid #e0e8ed; border-radius: 16px; color: var(--text); background: var(--surface); box-shadow: 0 22px 80px #1c364230; }
dialog::backdrop { background: #1c2d3c66; backdrop-filter: blur(3px); }
.dialog-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 22px; padding-bottom: 15px; border-bottom: 1px solid var(--border); }
.dialog-heading h2 { font-size: 1.2rem; letter-spacing: -.03em; }
.close-button { min-width: 32px; min-height: 32px; padding: 0; border-color: transparent; background: #f3f6f8; color: #647587; font-size: 1.35rem; }
fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
.field-note { font-size: .83rem; }
.gmail-calendar-detail { display: grid; gap: 10px; padding: 14px; border: 1px solid var(--border); border-radius: 9px; background: #f9fbfd; }
.gmail-calendar-detail h3, .gmail-calendar-detail p { margin: 0; }
.gmail-calendar-detail h3 { font-size: .95rem; }
.dialog-actions { display: flex; justify-content: flex-end; gap: 9px; margin-top: 24px; padding-top: 18px; border-top: 1px solid var(--border); }
.dialog-actions:empty { margin: 0; }
.property-delete-dialog { max-width: 510px; }
.property-delete-dialog .field-grid { margin-top: 19px; }
.property-delete-dialog .auth-form { margin-top: 17px; }
.property-delete-dialog .auth-form > label { display: grid; gap: 8px; color: var(--muted); font-size: .87rem; font-weight: 600; }
.property-delete-target { padding: 12px 14px; border: 1px solid var(--border); border-radius: 8px; background: #f8fafb; }
.property-danger-zone { display: flex; justify-content: space-between; align-items: center; gap: 18px; max-width: 940px; margin-top: 23px; padding: 18px 20px; border: 1px solid #efdfdc; border-radius: 11px; background: #fffafa; }
.property-danger-zone strong { color: #9b514b; font-size: .92rem; font-weight: 650; }
.property-danger-zone p { margin-top: 4px; font-size: .85rem; }
.property-danger-zone > button { flex-shrink: 0; }
.property-delete-dialog .dialog-actions button.danger { color: #fff; background: #bc5b59; border-color: #bc5b59; }
.property-delete-dialog .dialog-actions button.danger:hover { background: #a84e4d; }
#host-archived-panel { border-color: #e3e8ed; background: #fbfcfd; }
#host-archived-panel > .muted { margin-bottom: 14px; font-size: .88rem; }
#host-archived-list .summary-row strong { color: #68788a; }

.channex-workspace { display: grid; gap: 18px; max-width: 1180px; }
.channex-workspace > :is(.feedback, .inline-note) { margin: 0; }
.channex-progress-panel { background: linear-gradient(110deg, #fff, #f6fbfa); }
.channex-progress { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; margin: 0 0 20px; padding: 0; list-style: none; }
.channex-progress li { display: flex; align-items: flex-start; gap: 9px; min-width: 0; padding: 12px 0; color: var(--muted); }
.channex-step-number { display: grid; flex: 0 0 27px; height: 27px; place-items: center; border: 1px solid #dce5ea; border-radius: 50%; background: #f3f6f8; color: #778691; font-size: .78rem; font-weight: 750; }
.channex-progress strong { display: block; margin-top: 1px; font-size: .86rem; line-height: 1.6; font-weight: 650; }
.channex-progress small { display: block; margin-top: 4px; font-size: .73rem; line-height: 1.5; }
.channex-progress li.current strong { color: var(--green-dark); font-weight: 750; }
.channex-progress li.current .channex-step-number { border-color: var(--green); color: #fff; background: var(--green); box-shadow: 0 0 0 4px #e8f5f2; }
.channex-scope-note { padding: 14px 16px; border: 1px solid #dcebe7; border-radius: 9px; color: #4c6e67; background: #f0f8f5; font-size: .84rem; line-height: 1.8; }
.channex-status-grid { display: grid; grid-template-columns: 1fr 1fr 1.1fr; gap: 16px; margin: 0 0 17px; padding: 16px 18px; border: 1px solid var(--border); border-radius: 9px; background: #fafcfd; }
.channex-status-grid > div { min-width: 0; }
.channex-status-grid dt { margin-bottom: 5px; color: var(--muted); font-size: .78rem; }
.channex-status-grid dd { margin: 0; font-size: .94rem; font-weight: 650; overflow-wrap: anywhere; }
.channex-memory-note { max-width: 880px; color: var(--muted); font-size: .85rem; line-height: 1.8; }
.channex-connect-form { display: flex; align-items: flex-end; gap: 12px; max-width: 840px; margin-top: 17px; }
.channex-connect-form > label { display: grid; flex: 1 1 auto; gap: 7px; min-width: 0; font-size: .88rem; font-weight: 650; }
.channex-connect-form > button { flex-shrink: 0; min-height: 40px; }
.channex-help { margin-top: 9px; font-size: .8rem; line-height: 1.8; overflow-wrap: anywhere; }
.panel-heading .channex-help { margin-top: 5px; }
.channex-connection-actions { margin-top: 16px; padding-top: 15px; border-top: 1px solid #edf1f5; }
.channex-inspect-empty { padding: 25px 20px; border: 1px dashed #dce5ea; border-radius: 9px; color: var(--muted); background: #fafcfd; text-align: center; font-size: .88rem; }
.channex-inspection { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; }
.channex-inspection h3 { display: flex; gap: 8px; align-items: center; margin-bottom: 12px; font-size: .97rem; }
.channex-data-table { min-width: 440px; table-layout: fixed; }
.channex-data-table th:first-child { width: 55%; }
.channex-data-table th:last-child { width: 18%; }
.channex-data-table td strong { display: block; font-size: .9rem; font-weight: 650; }
.channex-resource-id { display: block; margin-top: 4px; color: var(--muted); font-size: .72rem; font-weight: 400; }
.channex-inspection > section > .muted { padding: 14px 12px; font-size: .85rem; }
.channex-mapping-note { display: flex; flex-wrap: wrap; align-items: center; gap: 7px 14px; margin-top: 23px; padding: 16px; border: 1px solid var(--border); border-radius: 9px; background: #f8fafb; }
.channex-mapping-note > div { flex: 1 1 340px; }
.channex-mapping-note strong { color: #596c79; font-size: .87rem; font-weight: 650; }
.channex-mapping-note p, .channex-mapping-note > span { margin-top: 3px; font-size: .79rem; }
.channex-mapping-note > span { flex-basis: 100%; text-align: right; }
.channex-view-error { overflow-wrap: anywhere; }
.service-admin-link { margin-top: 20px; border: 1px solid var(--border); background: #f8fafb; }
.airbnb-connection-description { margin-bottom: 16px; max-width: 880px; color: #4b6170; font-size: .93rem; line-height: 1.8; }
.airbnb-connect-actions { margin-top: 20px; }
.airbnb-connect-actions > .primary { min-width: 168px; }
.airbnb-admin-link { display: inline-block; margin-top: 14px; font-size: .85rem; font-weight: 650; }
.airbnb-currency-field { max-width: 680px; margin: 0 0 18px; padding: 15px 16px; border: 1px solid var(--border); border-radius: 9px; background: #fafcfd; }
.airbnb-currency-field label { display: grid; gap: 7px; max-width: 360px; font-size: .87rem; font-weight: 650; }
.airbnb-currency-field select { width: 100%; }
.airbnb-currency-field .channex-help { margin-top: 8px; }
#airbnb-profile-note { margin: 0 0 15px; }
.airbnb-listing-list { margin-top: 18px; }
.airbnb-listing-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 0; border-top: 1px solid var(--border); }
.airbnb-listing-row > div { min-width: 0; }
.airbnb-listing-row strong { font-size: .96rem; font-weight: 650; overflow-wrap: anywhere; }
.airbnb-listing-row > .badge { flex-shrink: 0; }
.airbnb-empty-state { margin-top: 17px; padding: 25px 20px; border: 1px dashed #dce5ea; border-radius: 9px; color: var(--muted); background: #fafcfd; text-align: center; font-size: .88rem; }
.channex-mapping-note > .badge { flex: 0 1 auto; max-width: 100%; margin-top: 0; text-align: left; white-space: normal; }
.service-key-clear-note { margin-top: 12px; font-size: .8rem; line-height: 1.8; }
.airbnb-connection-origin { margin-bottom: 10px; }
.airbnb-diagnostics-controls { display: flex; align-items: flex-end; gap: 12px; margin-top: 18px; }
.airbnb-diagnostics-controls > label { display: grid; flex: 1 1 280px; gap: 7px; min-width: 0; max-width: 480px; font-size: .87rem; font-weight: 650; }
.airbnb-diagnostics-controls > button { flex-shrink: 0; min-height: 40px; }
#airbnb-diagnostics-feedback { margin-top: 16px; }
#airbnb-diagnostics-results { margin-top: 20px; }
#airbnb-diagnostics-room-note { margin-bottom: 14px; }
.airbnb-diagnostics-table { min-width: 650px; table-layout: fixed; }
.airbnb-diagnostics-table th:first-child { width: 21%; }
.airbnb-diagnostics-table th:last-child { width: 26%; }
.airbnb-diagnostics-table tbody th { background: #fff; color: var(--text); font-size: .88rem; font-weight: 650; white-space: normal; vertical-align: top; }
.airbnb-diagnostics-table tbody td { vertical-align: top; }
.airbnb-diagnostics-table .diagnostic-details { margin-top: 7px; color: #5c7180; font-size: .82rem; line-height: 1.8; }
.airbnb-diagnostics-table .diagnostic-probe-error { margin-top: 7px; color: var(--warning); font-size: .81rem; line-height: 1.8; }
.airbnb-diagnostics-table .diagnostic-usage { color: var(--muted); font-size: .83rem; line-height: 1.8; }
.airbnb-diagnostics-zero-note { margin-top: 16px; }
.airbnb-messaging-setup { margin-top: 19px; padding: 16px; border: 1px solid var(--border); border-radius: 9px; background: #fafcfd; }
.airbnb-messaging-setup h3 { font-size: .96rem; font-weight: 700; }
.airbnb-messaging-setup .existing-ownership-confirm { margin-block: 13px; background: #f0f7f3; }
.messaging-feedback, .sandbox-feedback { margin: 15px 0 0; }
.message-test-workspace { display: grid; gap: 18px; margin-top: 20px; }
.message-test-step { display: grid; grid-template-columns: 29px minmax(0, 1fr); gap: 12px; padding-top: 18px; border-top: 1px solid var(--border); }
.message-test-step-number { display: grid; align-items: center; justify-content: center; width: 27px; height: 27px; color: var(--green-dark); background: #eaf4f1; border-radius: 50%; font-size: .8rem; font-weight: 700; }
.message-test-step h3 { font-size: .94rem; }
.message-test-step .existing-ownership-confirm { margin-block: 12px; }
.message-test-marker { width: min(100%, 470px); margin-top: 11px; font-family: ui-monospace, Consolas, monospace; font-size: .92rem; letter-spacing: .025em; color: var(--green-dark); background: #f7fbf9; }
.message-test-reply { margin-top: 10px; padding: 13px 15px; border: 1px solid #d3e3dd; border-radius: 8px; color: var(--text); background: #f5faf7; font-size: .9rem; line-height: 1.8; overflow-wrap: anywhere; }
.message-test-step button { margin-top: 10px; }
.message-test-panel .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.button-spinner { flex: 0 0 15px; width: 15px; height: 15px; margin-right: 8px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: button-spin .85s linear infinite; }
.sandbox-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 18px; }
.sandbox-summary > div { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 9px; padding: 14px; border: 1px solid var(--border); border-radius: 9px; background: #fafcfd; }
.sandbox-summary strong { font-size: .88rem; font-weight: 650; }
.sandbox-pms-results { margin-top: 18px; padding: 15px; border: 1px solid var(--border); border-radius: 9px; background: #f5faf7; }
.sandbox-pms-results h3 { font-size: .94rem; }
.sandbox-pms-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px 18px; margin-top: 12px; }
.sandbox-pms-summary > div { display: flex; justify-content: space-between; align-items: center; gap: 10px; font-size: .84rem; }
.sandbox-details { margin-top: 17px; padding: 12px 14px; border: 1px solid var(--border); border-radius: 8px; background: #fff; }
.sandbox-details > summary { color: var(--green-dark); font-size: .86rem; font-weight: 650; cursor: pointer; }
.sandbox-steps { display: grid; gap: 10px; margin: 15px 0 0; padding-left: 22px; }
.sandbox-steps li { padding-left: 3px; }
.sandbox-steps li > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.sandbox-steps strong { font-size: .85rem; font-weight: 600; }
.sandbox-steps p { margin-top: 5px; font-size: .79rem; line-height: 1.7; overflow-wrap: anywhere; }
@keyframes button-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .button-spinner { animation: none; } }
.existing-connection-target { display: grid; gap: 4px; margin: 17px 0; padding: 13px 15px; border: 1px solid var(--border); border-radius: 9px; background: #fafcfd; }
.existing-connection-target > span, .existing-connection-target > small { color: var(--muted); font-size: .8rem; }
.existing-connection-target > strong { font-size: 1rem; font-weight: 700; overflow-wrap: anywhere; }
.existing-connection-feedback { margin-top: 16px; }
.existing-connection-preview { margin-top: 22px; padding: 18px; border: 1px solid #cfdfd9; border-radius: 10px; background: #fcfefd; }
.existing-connection-preview > h3 { margin-bottom: 15px; font-size: 1rem; }
.existing-affected-properties { display: grid; gap: 10px; margin: 13px 0; padding: 0; list-style: none; }
.existing-affected-properties li { display: grid; justify-items: start; gap: 4px; padding: 12px 14px; border: 1px solid var(--border); border-radius: 8px; background: #fff; overflow-wrap: anywhere; }
.existing-affected-properties strong { font-size: .92rem; font-weight: 650; }
.existing-affected-properties small { font-size: .78rem; }
.existing-ownership-confirm { display: flex; align-items: flex-start; gap: 9px; margin: 17px 0; padding: 13px 14px; border: 1px solid #dbe7e1; border-radius: 8px; background: #edf7f2; font-size: .87rem; font-weight: 600; line-height: 1.8; cursor: pointer; }
.existing-ownership-confirm input { flex: 0 0 17px; width: 17px; min-height: 17px; height: 17px; margin-top: 4px; accent-color: var(--green); }

@media (min-width: 691px) {
  .workspace:has(> #views:not([hidden]) > :is(#view-calendar, #view-room-status):not([hidden])) {
    max-width: none;
    padding: 18px clamp(14px, 1.5vw, 25px) 26px;
  }
}
@media (min-width: 691px) and (max-height: 760px) {
  .calendar-panel { --calendar-date-row-height: 28px; --calendar-event-row-height: 24px; }
  .room-calendar .calendar-day { padding: 2px 5px; }
  .calendar-day-number { width: 22px; height: 22px; }
  .calendar-add { flex-basis: 22px; width: 22px; min-height: 22px; }
  .calendar-entry { min-height: 22px; padding: 2px 4px; }
}
@media (min-width: 1240px) {
  .calendar-toolbar .legend { flex-basis: auto; gap: 5px 9px; }
}
@media (max-width: 1050px) {
  :root { --sidebar-width: 210px; }
  .metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 820px) {
  .settings-grid, .intake-grid { grid-template-columns: minmax(0, 1fr); }
  .ota-platform-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .channex-progress { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px 14px; }
}
@media (max-width: 690px) {
  .airbnb-messaging-setup { padding: 13px; }
  .message-test-step { grid-template-columns: 24px minmax(0, 1fr); gap: 9px; }
  .message-test-step-number { width: 23px; height: 23px; }
  .message-test-step button, #airbnb-message-test-start { width: 100%; }
  .message-test-marker { font-size: .81rem; letter-spacing: 0; }
  .sandbox-summary { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .sandbox-pms-summary { grid-template-columns: minmax(0, 1fr); }
  #service-sandbox-run { width: 100%; }
  .airbnb-diagnostics-controls { flex-wrap: wrap; }
  .airbnb-diagnostics-controls > label { flex-basis: 100%; max-width: none; }
  .airbnb-diagnostics-controls > button { width: 100%; }
  .existing-connection-preview { padding: 13px; }
  .existing-connection-preview > .actions > button { width: 100%; }
  .sidebar > .service-admin-link { grid-column: 1 / -1; margin: 0; padding: 6px 10px; font-size: .77rem; }
  .airbnb-listing-row { flex-wrap: wrap; }
  .airbnb-connect-actions { gap: 9px; }
  .airbnb-connect-actions > .primary { flex-basis: 100%; }
  .airbnb-connect-actions > button:not(.primary) { flex: 1 1 145px; }
  .airbnb-currency-field { padding: 13px; }
  .channex-workspace { gap: 13px; }
  .channex-workspace .panel-heading { flex-wrap: wrap; align-items: flex-start; gap: 10px; }
  .channex-progress { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 13px; }
  .channex-progress li { padding: 8px 0; }
  .channex-progress strong { font-size: .8rem; }
  .channex-scope-note { padding: 11px 12px; font-size: .78rem; }
  .channex-status-grid { grid-template-columns: minmax(0, 1fr); gap: 12px; padding: 14px; }
  .channex-status-grid > div { display: grid; grid-template-columns: 104px minmax(0, 1fr); gap: 8px; }
  .channex-status-grid dt { margin-bottom: 0; }
  .channex-status-grid dd { font-size: .86rem; }
  .channex-connect-form { flex-wrap: wrap; }
  .channex-connect-form > label { flex-basis: 100%; }
  .channex-connect-form > button { width: 100%; }
  .channex-mapping-note { padding: 13px; }
  .channex-mapping-note > span { text-align: left; }
  .sidebar { position: static; width: auto; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 10px; padding: 15px 15px 8px; border-right: 0; border-bottom: 1px solid var(--border); }
  .host-account-menu { grid-column: 1 / -1; justify-content: flex-end; padding: 7px 3px 0; border-top: 1px solid var(--border); }
  .brand { padding: 0; font-size: 1.2rem; }
  .brand-mark { width: 34px; height: 34px; font-size: 1.25rem; }
  .property-summary { margin: 0 0 0 auto; padding: 4px 8px; }
  .property-summary strong { font-size: .87rem; }
  .property-mark { display: none; }
  .host-property-quick-add { min-height: 29px; padding: 4px 7px; font-size: .75rem; }
  .host-properties-link { margin: 0; padding: 5px 7px; font-size: .77rem; }
  .sidebar nav { grid-column: 1 / -1; display: flex; gap: 3px; overflow-x: auto; padding: 3px; }
  .sidebar nav a { flex: 0 0 auto; min-height: 38px; padding: 7px 9px; gap: 5px; font-size: .80rem; }
  .sidebar nav a[aria-current="page"]::before { display: none; }
  .sidebar nav svg { width: 15px; height: 15px; }
  main { margin: 0; }
  .topbar { min-height: 45px; padding: 8px 15px; font-size: .75rem; }
  .today-label { border: 0; padding: 0; background: transparent; font-size: .74rem; }
  .workspace { padding: 23px 15px 30px; }
  .workspace:has(> #views:not([hidden]) > :is(#view-calendar, #view-room-status):not([hidden])) { padding-inline: 8px; }
  .page-header { margin-bottom: 16px; }
  .overview-grid { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .panel, .metric { padding: 16px; }
  .metric-grid { gap: 10px; margin-bottom: 16px; }
  .metric strong { margin: 8px 0; font-size: 1.8rem; }
  .metric small { font-size: .72rem; }
  .metric span { font-size: .80rem; }
  .calendar-panel { --calendar-week-height: 60px; --calendar-date-row-height: 27px; --calendar-event-row-height: 23px; padding: 7px; }
  .room-status-panel { padding: 7px; }
  .calendar-toolbar { gap: 8px; }
  .calendar-filters, .calendar-room-filter, .calendar-jump { gap: 5px 8px; }
  .legend { gap: 4px 9px; font-size: .75rem; }
  .room-calendar th { padding: 4px 2px; font-size: .76rem; }
  .room-calendar .calendar-day { padding: 2px; }
  .room-calendar .calendar-week-events td { padding-inline: 2px; }
  .calendar-day-header { gap: 0; }
  .calendar-day-number { width: 21px; height: 21px; font-size: .79rem; }
  .calendar-add { flex-basis: 19px; width: 19px; min-height: 21px; font-size: .91rem; }
  .calendar-entry { gap: 2px; min-height: 21px; padding: 2px 2px; border-left-width: 2px; font-size: .75rem; }
  .calendar-entry-room, .calendar-entry-nights, .calendar-entry-guests, .calendar-entry-mail { padding: 1px 2px; font-size: .67rem; }
  .calendar-entry-platform { white-space: normal; overflow-wrap: anywhere; text-overflow: clip; }
  .calendar-entry-detail { font-size: .71rem; }
  .calendar-event-cell:is(:not([colspan]), [colspan="1"]) .calendar-entry-detail { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .room-calendar .conflict-label { font-size: .65rem; }
  .setup-notice { align-items: flex-start; flex-direction: column; }
  .ota-platform-tabs { gap: 9px; }
  .ota-platform-tabs button { padding: 13px; }
  .page-header .actions { width: 100%; }
  .share-link-row { flex-wrap: wrap; }
  .share-link-row input { flex: 1 1 100%; }
  .share-link-row button { flex: 1 1 auto; }
  .room-settings-row { padding: 15px; }
  .property-details { grid-template-columns: minmax(78px, 1fr) minmax(0, 3fr); }
  dialog { max-height: calc(100dvh - 24px); padding: 20px; }
  .dialog-heading { margin-bottom: 18px; }
  .dialog-actions button { flex: 1 1 auto; }
  .connection-feature-header { gap: 10px; }
  .connection-feature-icon { flex-basis: 38px; height: 38px; border-radius: 9px; }
  .connection-feature-copy h3 { font-size: .97rem; }
  .connection-feature-copy .eyebrow { font-size: .55rem; }
  .property-danger-zone { align-items: flex-start; flex-direction: column; gap: 12px; padding: 16px; }
  .property-danger-zone > button { align-self: flex-end; }
  .calendar-month-totals { gap: 5px; }
  .calendar-total { gap: 5px; padding: 4px 7px; font-size: .7rem; }
  .calendar-total strong { font-size: .73rem; }
  .turnover-calendar { --turnover-cell-height: 65px; }
  .turnover-calendar thead th { padding: 6px 2px; font-size: .72rem; }
  .turnover-day { padding: 3px 2px; }
  .turnover-day-header { gap: 0; margin-bottom: 3px; }
  .turnover-day-header .calendar-day-number { width: 20px; height: 20px; font-size: .72rem; }
  .turnover-day-header .calendar-add { flex-basis: 17px; width: 17px; min-height: 20px; }
  .calendar-count-strip { gap: 2px; min-height: 18px; margin-top: 3px; padding: 2px 3px; font-size: .63rem; }
  .calendar-count-strip strong { font-size: .66rem; }
  .cal-summary-note { margin-top: 9px; font-size: .74rem; }
  .turnover-detail-grid { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .turnover-detail-panel { padding: 13px; }
  .room-status-toolbar { gap: 10px; }
  .room-status-summary { gap: 6px 10px; font-size: .72rem; }
  .room-timeline { --timeline-room-width: 120px; }
  .room-timeline-scroll { max-height: max(260px, calc(100dvh - 330px)); }
  .room-timeline .timeline-room-heading { padding: 9px; font-size: .77rem; }
  .timeline-room-heading strong { font-size: .78rem; }
  .room-timeline .calendar-entry { min-height: 74px; padding: 7px 5px; font-size: 13px; }
}
@media (max-width: 400px) {
  .field-grid { grid-template-columns: minmax(0, 1fr); }
  .topbar { flex-wrap: wrap; gap: 3px 10px; }
  .page-header p:not(.eyebrow) { font-size: .91rem; }
  .calendar-day-number { width: 17px; height: 21px; }
  .calendar-add { flex-basis: 16px; width: 16px; }
  .calendar-event-cell:is(:not([colspan]), [colspan="1"]) .calendar-entry-room { max-width: 100%; }
  .calendar-event-cell:is(:not([colspan]), [colspan="1"]) .calendar-entry-nights { flex-shrink: 0; }
}

.room-settings-row .room-settings-memo {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  white-space: pre-wrap;
}
.room-editor-section h3 {
  margin: 0 0 6px;
  color: var(--green-dark);
  font-size: .94rem;
}
.room-editor-section + .room-editor-section { margin-top: 3px; }
.room-editor-mapping {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px 14px;
  background: #fafcfd;
}
.room-editor-mapping summary { color: var(--green-dark); cursor: pointer; font-weight: 700; }
.room-editor-mapping[open] summary { margin-bottom: 9px; }
