:root {
    color-scheme: light;
    --bg: #f7f5ef;
    --ink: #1d2430;
    --muted: #68717d;
    --line: #d9d5c8;
    --panel: #ffffff;
    --accent: #1f6f5f;
    --accent-dark: #155347;
    --warn: #a15c17;
}

* { box-sizing: border-box; }
body {
    margin: 0;
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    background: var(--bg);
    color: var(--ink);
}
a { color: inherit; text-decoration: none; }
.topbar {
    height: 64px;
    padding: 0 28px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid var(--line);
    background: rgba(255,255,255,.88);
    position: sticky;
    top: 0;
    z-index: 10;
}
.brand { font-weight: 750; font-size: 19px; }
nav { display: flex; align-items: center; gap: 14px; }
button, .button {
    border: 1px solid var(--line);
    background: #fff;
    padding: 9px 13px;
    border-radius: 6px;
    cursor: pointer;
    font: inherit;
}
.primary {
    color: #fff;
    background: var(--accent);
    border-color: var(--accent);
}
.primary:hover { background: var(--accent-dark); }
.inline { display: inline; }
.hero {
    min-height: calc(100vh - 64px);
    display: flex;
    align-items: center;
    padding: 9vh 9vw;
    background:
        linear-gradient(90deg, rgba(20,26,31,.78), rgba(20,26,31,.28)),
        url("https://images.unsplash.com/photo-1566073771259-6a8506099945?auto=format&fit=crop&w=1800&q=80") center/cover;
    color: #fff;
}
.hero > div { max-width: 720px; }
.eyebrow { text-transform: uppercase; letter-spacing: .08em; font-size: 13px; opacity: .82; }
h1 { font-size: 42px; line-height: 1.1; margin: 0 0 18px; }
h2 { margin-top: 34px; }
.lead { font-size: 19px; line-height: 1.55; max-width: 620px; }
.actions { margin-top: 28px; }
.band { padding: 28px 9vw; background: #fff; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.grid { display: grid; gap: 16px; }
.three { grid-template-columns: repeat(3, 1fr); }
.four { grid-template-columns: repeat(4, 1fr); }
.band strong, .band span { display: block; }
.band span { color: var(--muted); margin-top: 4px; }
.panel, .dashboard {
    width: min(1120px, calc(100% - 32px));
    margin: 32px auto;
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 26px;
}
.panel { max-width: 720px; }
.wide { max-width: 1040px; }
.form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}
.stack { display: grid; gap: 16px; }
label { display: grid; gap: 7px; color: var(--muted); font-size: 14px; }
input, select, textarea {
    width: 100%;
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 10px 11px;
    font: inherit;
    color: var(--ink);
    background: #fff;
}
textarea { min-height: 96px; resize: vertical; }
.checkbox { display: flex; align-items: center; gap: 10px; color: var(--ink); }
.checkbox input { width: auto; }
.full { grid-column: 1 / -1; }
.split { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.metric {
    background: #f8faf8;
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 18px;
}
.metric strong { display: block; font-size: 30px; }
.metric span { color: var(--muted); }
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 12px 10px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
th { color: var(--muted); font-size: 13px; font-weight: 650; }
small { color: var(--muted); }
.badge {
    display: inline-block;
    border: 1px solid var(--line);
    border-radius: 999px;
    padding: 3px 8px;
    background: #fff;
}
.error { color: #a22424; }

@media (max-width: 760px) {
    .topbar { padding: 0 16px; }
    nav { gap: 8px; font-size: 14px; }
    h1 { font-size: 34px; }
    .hero { padding: 56px 24px; min-height: 70vh; }
    .three, .four, .form-grid { grid-template-columns: 1fr; }
    .split { align-items: flex-start; flex-direction: column; }
}

.subpanel {
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 18px;
    background: #fbfcfb;
    margin: 20px 0 24px;
}
.subpanel h2, .subpanel h3 { margin: 0 0 12px; }
.compact-form { margin-top: 16px; }
.alert {
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 10px 12px;
    background: #eef8f3;
    margin: 14px 0;
}
.alert.error { background: #fff3f1; color: #8d2424; }
.rooms-stack { display: grid; gap: 18px; }
.room-editor {
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 18px;
    background: #fff;
}
.room-head h2 { margin: 0 0 4px; }
.price-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin: 18px 0;
}
.price-grid > div {
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 14px;
    background: #f8faf8;
}
.price-grid h3 { margin: 0 0 12px; }
.price-grid label { margin-bottom: 10px; }
.lock-list { display: flex; flex-wrap: wrap; gap: 8px; }
.spaced-inline { display: block; margin-top: 8px; }

@media (max-width: 760px) {
    .price-grid { grid-template-columns: 1fr; }
}

.timeline { display: grid; gap: 12px; margin-top: 12px; }
.message-item {
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    padding: 14px;
}
.message-item pre {
    white-space: pre-wrap;
    font-family: inherit;
    background: #f8faf8;
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 10px;
    overflow-x: auto;
}

/* Compact operations panel */
:root {
    --bg: #f3f4f1;
    --ink: #172026;
    --muted: #66727c;
    --line: #d8ddd6;
    --panel: #ffffff;
    --accent: #0f766e;
    --accent-dark: #115e59;
    --gold: #b88746;
}
body { font-size: 14px; background: linear-gradient(180deg, #eef2ef 0, #f8f7f2 260px, #f3f4f1 100%); }
.topbar { height: 52px; padding: 0 18px; background: rgba(255,255,255,.94); backdrop-filter: blur(12px); box-shadow: 0 8px 28px rgba(23,32,38,.06); }
.brand { font-size: 17px; letter-spacing: .01em; }
nav { gap: 8px; }
nav a { padding: 6px 8px; border-radius: 6px; color: #314047; }
nav a:hover { background: #edf4f1; color: var(--accent-dark); }
button, .button { padding: 6px 10px; min-height: 32px; border-radius: 6px; font-size: 13px; }
input, select, textarea { padding: 7px 9px; border-radius: 6px; font-size: 13px; }
textarea { min-height: 72px; }
label { gap: 5px; font-size: 12px; }
h1 { font-size: 28px; margin: 0 0 12px; }
h2 { font-size: 18px; margin: 18px 0 10px; }
h3 { font-size: 14px; }
.panel, .dashboard { width: min(1380px, calc(100% - 24px)); margin: 16px auto; padding: 16px; border-color: #e3e6df; box-shadow: 0 18px 48px rgba(23,32,38,.07); }
.panel { max-width: 760px; }
.form-grid { gap: 10px; }
.grid { gap: 10px; }
.metric { padding: 12px 14px; border-radius: 7px; background: linear-gradient(180deg,#fff,#f7faf8); box-shadow: inset 0 1px 0 rgba(255,255,255,.9); }
.metric strong { font-size: 22px; }
th, td { padding: 8px 7px; }
th { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; }
.badge { padding: 2px 7px; font-size: 12px; }
.subpanel, .room-editor, .message-item, .template-editor { border-radius: 7px; padding: 12px; box-shadow: 0 8px 24px rgba(23,32,38,.04); }
.alert { padding: 8px 10px; margin: 10px 0; }
.spaced-inline { margin-top: 6px; }
.page-head { padding-bottom: 10px; border-bottom: 1px solid var(--line); margin-bottom: 12px; }
.eyebrow.dark { color: var(--gold); opacity: 1; margin: 0 0 4px; font-weight: 800; }
.workflow-strip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin: 12px 0; }
.workflow-step { min-height: 86px; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: linear-gradient(135deg, #ffffff 0%, #f3faf7 100%); position: relative; overflow: hidden; }
.workflow-step::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 3px; background: linear-gradient(90deg, var(--accent), var(--gold)); }
.workflow-step span { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: #103c38; color: #fff; font-size: 12px; font-weight: 800; }
.workflow-step strong { display: block; margin-top: 8px; line-height: 1.15; }
.workflow-step small { display: block; margin-top: 4px; }
.muted-step { opacity: .55; }
.variables-panel { margin: 10px 0 12px; }
.token-list { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.token-list code { padding: 4px 6px; border-radius: 5px; background: #ecf3ef; border: 1px solid #d7e6de; color: #17443f; font-size: 12px; }
.template-stack { display: grid; gap: 12px; }
.template-editor { background: #fff; border: 1px solid var(--line); scroll-margin-top: 70px; }
.template-title h2 { margin: 2px 0 0; }
.channel-toggles { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.template-body { min-height: 150px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; line-height: 1.45; }
.sms-body { min-height: 74px; }
.send-box { display: grid; gap: 5px; min-width: 190px; margin-top: 6px; }
.send-box select { max-width: 230px; }
.checkbox.mini { display: inline-flex; margin-right: 8px; font-size: 12px; }
.checkbox.mini input { width: 13px; height: 13px; }
.table-wrap table button { white-space: nowrap; }

@media (max-width: 980px) {
    .workflow-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .four { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 760px) {
    .topbar { height: auto; min-height: 52px; align-items: flex-start; padding: 10px 12px; gap: 8px; flex-direction: column; }
    nav { flex-wrap: wrap; }
    .dashboard, .panel { width: calc(100% - 14px); margin: 8px auto; padding: 12px; }
    .workflow-strip, .four { grid-template-columns: 1fr; }
    th, td { padding: 7px 5px; }
}

/* Informational dashboard */
.ops-dashboard { display: grid; gap: 12px; }
.quick-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.ops-grid { display: grid; grid-template-columns: 1.15fr repeat(5, 1fr); gap: 8px; }
.hero-metric { background: linear-gradient(135deg, #103c38, #0f766e); color: #fff; border-color: #0f766e; }
.hero-metric span { color: rgba(255,255,255,.78); }
.dashboard-columns { display: grid; grid-template-columns: minmax(360px, .9fr) 1.1fr; gap: 10px; }
.compact-head h2 { margin: 0; }
.today-lists { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.today-lists h3 { margin: 0 0 8px; color: #334047; }
.mini-row { display: grid; gap: 2px; padding: 7px 8px; border: 1px solid var(--line); border-radius: 6px; margin-bottom: 6px; background: #fff; }
.mini-row strong { font-size: 13px; }
.mini-row span { color: var(--muted); font-size: 12px; }
.weather-strip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.weather-day { display: grid; gap: 3px; min-height: 82px; padding: 9px; border-radius: 8px; border: 1px solid #dce6df; background: linear-gradient(160deg, #ffffff, #eef7f4); }
.weather-day strong { font-size: 13px; }
.weather-day span { color: var(--accent-dark); font-weight: 700; font-size: 12px; }
.weather-day b { font-size: 18px; }
.weather-day small { font-size: 11px; }
.calendar-panel { overflow: hidden; }
.legend { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; color: var(--muted); font-size: 12px; }
.dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; margin-left: 8px; }
.dot.free { background: #edf3ef; border: 1px solid #dce6df; }
.dot.occupied { background: #0f766e; }
.dot.arrival { background: #b88746; }
.dot.departure { background: #8aa0ad; }
.room-calendar { overflow-x: auto; padding-bottom: 4px; }
.calendar-row { display: grid; grid-template-columns: 86px repeat(14, minmax(68px, 1fr)); gap: 4px; min-width: 1050px; margin-bottom: 4px; }
.calendar-head { position: sticky; top: 52px; z-index: 2; background: rgba(255,255,255,.96); padding-bottom: 2px; }
.room-label { min-height: 34px; display: grid; align-content: center; padding: 5px 7px; border-radius: 6px; background: #f6f8f5; border: 1px solid var(--line); }
.room-label strong { font-size: 13px; }
.room-label small { font-size: 11px; }
.day-label { min-height: 34px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 6px; background: #fff; }
.day-label.weekend { background: #fff8ec; border-color: #ead7b8; }
.day-label strong { font-size: 12px; }
.day-label small { font-size: 10px; color: var(--muted); }
.day-cell { min-height: 34px; border-radius: 6px; border: 1px solid #dfe5de; background: #f6faf7; display: grid; place-items: center; padding: 2px 4px; overflow: hidden; }
.day-cell span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
.day-cell.occupied { background: linear-gradient(135deg, #0f766e, #115e59); color: #fff; border-color: #0f766e; }
.day-cell.arrival { background: linear-gradient(135deg, #b88746, #d5a15d); color: #fff; border-color: #b88746; }
.day-cell.departure { background: #eaf0f2; color: #536b78; border-color: #c9d5dc; }
.compact-reservations .send-box { display: none; }
.compact-reservations table th:nth-child(7), .compact-reservations table td:nth-child(7),
.compact-reservations table th:nth-child(8), .compact-reservations table td:nth-child(8) { display: none; }

@media (max-width: 1200px) {
    .ops-grid { grid-template-columns: repeat(3, 1fr); }
    .dashboard-columns { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
    .ops-grid, .today-lists, .weather-strip { grid-template-columns: 1fr; }
    .calendar-row { grid-template-columns: 76px repeat(14, 64px); min-width: 980px; }
}

/* LSI Cloud Hotel inspired PMS skin */
:root {
    --bg: #eef3f7;
    --ink: #1f2223;
    --muted: #6d7b86;
    --line: #e2e8ee;
    --panel: #ffffff;
    --accent: #007ec2;
    --accent-dark: #006399;
    --accent-soft: #e8f5fc;
    --success: #1fbd90;
    --warn: #f7b640;
    --danger: #dc313b;
}
body {
    font-family: Roboto, "Segoe UI", Arial, sans-serif;
    background: #eef3f7;
    color: var(--ink);
    font-size: 13px;
}
.topbar {
    height: 50px;
    background: #fff;
    border-bottom-color: #d9e4ec;
    box-shadow: 0 1px 4px rgba(31,34,35,.08);
}
.brand { color: var(--accent); font-weight: 700; }
nav a:hover { background: var(--accent-soft); color: var(--accent-dark); }
button, .button {
    min-height: 32px;
    border-radius: 3px;
    border-color: #cfdbe5;
    background: #fff;
    color: #243746;
}
.primary, .button.primary {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
}
.primary:hover, .button.primary:hover { background: var(--accent-dark); }
input, select, textarea { border-radius: 3px; border-color: #cfdbe5; }
.panel, .dashboard {
    border-radius: 4px;
    border-color: #dce6ee;
    box-shadow: none;
    background: transparent;
}
.lsi-dashboard { gap: 10px; }
.lsi-head {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 4px;
    padding: 10px 12px;
    margin-bottom: 0;
}
.lsi-head h1 { font-size: 22px; margin: 0; color: #263b4a; }
.lsi-head .eyebrow { color: var(--accent); }
.lsi-board {
    display: grid;
    grid-template-columns: 1.05fr 1.25fr 1.2fr 1fr;
    gap: 10px;
    align-items: stretch;
}
.lsi-card {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 4px;
    padding: 10px;
    box-shadow: 0 1px 2px rgba(31,34,35,.04);
}
.lsi-card h2 { font-size: 14px; color: #2d3f4d; margin: 0; font-weight: 700; }
.lsi-card h3 { font-size: 12px; color: #536473; margin: 0 0 6px; text-transform: none; }
.compact-head small { color: #8a9aa6; }
.status-tiles {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    margin-top: 10px;
}
.status-tile {
    min-height: 78px;
    border: 1px solid #d9e6ef;
    border-radius: 3px;
    padding: 9px;
    display: grid;
    align-content: space-between;
    background: #f8fbfd;
}
.status-tile span { color: #5e7180; }
.status-tile strong { font-size: 30px; line-height: 1; color: #223847; }
.status-tile.available strong { color: var(--success); }
.status-tile.occupied strong { color: var(--accent); }
.status-tile.blocked strong { color: var(--warn); }
.weather-card { grid-column: span 1; }
.weather-now {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin: 8px 0;
    padding: 8px;
    background: linear-gradient(135deg, #e8f6ff, #ffffff);
    border: 1px solid #d4eaf8;
    border-radius: 3px;
}
.weather-now strong, .weather-now span { display: block; }
.weather-now b { font-size: 34px; color: var(--accent); }
.weather-mini {
    display: grid;
    grid-template-columns: repeat(5, minmax(58px, 1fr));
    gap: 5px;
}
.weather-mini div {
    border: 1px solid #e3ebf1;
    border-radius: 3px;
    padding: 5px;
    display: grid;
    gap: 2px;
    min-height: 58px;
}
.weather-mini span, .weather-mini small { color: #768794; font-size: 11px; }
.weather-mini strong { font-size: 12px; color: #263b4a; }
.housekeeping-grid, .movement-grid, .revenue-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
    margin-top: 9px;
}
.housekeeping-grid div, .movement-grid div, .revenue-list div {
    border-bottom: 1px solid #edf2f6;
    padding: 5px 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}
.housekeeping-grid span, .movement-grid span, .revenue-list span { color: #5e7180; }
.housekeeping-grid strong, .movement-grid strong, .revenue-list strong { font-size: 16px; color: #243746; }
.today-card { grid-column: span 2; }
.rooms-card, .revenue-card { grid-column: span 1; }
.today-columns {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    margin-top: 8px;
}
.big-count { display: block; font-size: 32px; color: var(--accent); }
.mini-row {
    border-radius: 3px;
    border-color: #dfe8ef;
    background: #fbfdff;
    padding: 6px 7px;
}
.compact-table th, .compact-table td { padding: 6px 7px; }
.compact-table th {
    background: #f3f7fa;
    color: #536473;
    letter-spacing: 0;
    text-transform: none;
}
.tape-panel { overflow: hidden; }
.room-calendar.tape-calendar { overflow-x: auto; padding-bottom: 6px; }
.tape-row {
    grid-template-columns: 92px repeat(14, minmax(70px, 1fr));
    gap: 0;
    min-width: 1080px;
    margin: 0;
}
.calendar-head.tape-row {
    top: 50px;
    background: #fff;
    border-bottom: 1px solid #dce6ee;
}
.calendar-head .room-label, .calendar-head .day-label {
    border-radius: 0;
    border-width: 0 1px 1px 0;
    min-height: 36px;
    background: #f3f7fa;
}
.booking-row {
    position: relative;
    min-height: 42px;
    border-bottom: 1px solid #eef3f7;
}
.booking-row .room-label {
    border-radius: 0;
    border-width: 0 1px 0 0;
    background: #f8fbfd;
    min-height: 42px;
    z-index: 1;
}
.tape-slot {
    min-height: 42px;
    border-right: 1px solid #edf2f6;
    background: #fff;
}
.tape-slot.free { background: #fff; }
.tape-slot.occupied { background: #f4fbff; }
.tape-slot.arrival { background: #fff9eb; }
.tape-slot.departure { background: #f6f8fa; }
.booking-bar {
    z-index: 2;
    align-self: center;
    height: 26px;
    margin: 0 3px;
    border-radius: 3px;
    background: linear-gradient(180deg, #078fd9, #007ec2);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
    padding: 0 8px;
    min-width: 0;
    box-shadow: 0 1px 3px rgba(0,126,194,.28);
    overflow: hidden;
}
.booking-bar strong, .booking-bar span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 11px;
}
.booking-bar span { opacity: .85; flex: 0 0 auto; }
.booking-bar.continues-left { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.booking-bar.continues-right { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.occupancy-chart .mini-chart {
    height: 148px;
    display: grid;
    grid-template-columns: repeat(14, minmax(42px, 1fr));
    align-items: end;
    gap: 6px;
    overflow-x: auto;
    padding: 10px 0 2px;
}
.chart-day {
    height: 118px;
    display: grid;
    grid-template-rows: 1fr auto auto;
    align-items: end;
    min-width: 42px;
    text-align: center;
    color: #657684;
    font-size: 11px;
}
.chart-day div {
    width: 100%;
    background: linear-gradient(180deg, #4cc0ff, #007ec2);
    border-radius: 3px 3px 0 0;
}
.chart-day span { color: #263b4a; font-weight: 700; margin-top: 3px; }
.chart-day small { font-size: 10px; }
.compact-reservations table th:nth-child(7), .compact-reservations table td:nth-child(7),
.compact-reservations table th:nth-child(8), .compact-reservations table td:nth-child(8) { display: none; }
@media (max-width: 1180px) {
    .lsi-board { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .today-card { grid-column: span 2; }
}
@media (max-width: 760px) {
    .lsi-board, .today-columns, .status-tiles { grid-template-columns: 1fr; }
    .today-card { grid-column: span 1; }
    .weather-mini { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .tape-row { grid-template-columns: 82px repeat(14, 64px); min-width: 978px; }
    .occupancy-chart .mini-chart { grid-template-columns: repeat(14, 42px); }
}

/* Application shell and PMS modules */
.app-body { background: #eef3f7; overflow: hidden; }
.app-shell { display: grid; grid-template-columns: 232px minmax(0, 1fr); min-height: 100vh; }
.app-sidebar {
    background: linear-gradient(180deg, #142635, #0f1d29);
    color: #dbe9f2;
    display: grid;
    grid-template-rows: auto 1fr;
    min-height: 100vh;
    border-right: 1px solid rgba(255,255,255,.08);
}
.app-brand {
    min-height: 58px;
    display: grid;
    align-content: center;
    padding: 10px 16px;
    border-bottom: 1px solid rgba(255,255,255,.08);
}
.app-brand strong { color: #fff; font-size: 18px; }
.app-brand span { color: #8fb5cc; font-size: 12px; }
.side-nav { display: block; overflow-y: auto; padding: 8px; }
.side-nav a {
    display: block;
    padding: 8px 10px;
    margin-bottom: 2px;
    border-radius: 4px;
    color: #c5d7e2;
    font-size: 13px;
}
.side-nav a:hover { background: rgba(76,192,255,.12); color: #fff; }
.side-nav a.active { background: #007ec2; color: #fff; box-shadow: 0 8px 18px rgba(0,126,194,.28); }
.app-main { min-width: 0; height: 100vh; overflow: hidden; display: grid; grid-template-rows: 50px minmax(0, 1fr); }
.app-topbar { position: static; height: 50px; padding: 0 14px; }
.topbar-title { font-weight: 700; color: #263b4a; }
.app-content { min-height: 0; overflow: auto; padding-bottom: 18px; }
.app-content .dashboard { width: min(1540px, calc(100% - 20px)); margin: 10px auto; }
.tape-panel { overflow: visible; }
.room-calendar.tape-calendar {
    overflow: auto;
    max-height: none;
    border: 1px solid #dce6ee;
    border-radius: 4px;
    background: #fff;
}
.tape-row { min-width: 100%; }
.booking-row { min-height: 38px; }
.booking-row .room-label, .tape-slot { min-height: 38px; }
.booking-bar { height: 24px; }
.days-31 { grid-template-columns: 92px repeat(31, minmax(54px, 1fr)); min-width: 1820px; }
.full-calendar { max-height: calc(100vh - 245px); }
.full-calendar .calendar-head { position: sticky; top: 0; z-index: 4; }
.full-calendar .room-label { position: sticky; left: 0; z-index: 3; }
.full-calendar .calendar-head .room-label { z-index: 5; }
.module-dashboard, .module-detail { display: grid; gap: 10px; }
.module-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.module-card {
    background: #fff;
    border: 1px solid #dce6ee;
    border-radius: 6px;
    padding: 12px;
    min-height: 138px;
    display: grid;
    align-content: start;
    gap: 8px;
    box-shadow: 0 1px 2px rgba(31,34,35,.04);
}
.module-card:hover { border-color: #b9dff4; box-shadow: 0 10px 28px rgba(0,126,194,.10); transform: translateY(-1px); }
.module-card strong { font-size: 17px; color: #263b4a; }
.module-card p { margin: 0; color: #607384; line-height: 1.35; }
.module-card small { color: #8a9aa6; }
.module-status {
    justify-self: start;
    display: inline-block;
    border-radius: 999px;
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 700;
    color: #006399;
    background: #e8f5fc;
    border: 1px solid #c9e7f7;
}
.module-status.do-uruchomienia { color: #8a5a00; background: #fff5df; border-color: #f7dca0; }
.module-status.dziala-czesciowo { color: #117358; background: #e5f8f2; border-color: #bdebdc; }
.module-layout { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(320px, .8fr); gap: 10px; }
.compact-lead { font-size: 14px; color: #536473; margin: 10px 0; }
.feature-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 12px; }
.feature-list div {
    display: flex;
    gap: 8px;
    align-items: flex-start;
    padding: 8px;
    border: 1px solid #e2e8ee;
    border-radius: 4px;
    background: #fbfdff;
}
.feature-list span { width: 8px; height: 8px; margin-top: 5px; border-radius: 50%; background: #1fbd90; flex: 0 0 auto; }
.next-list { margin: 10px 0 0; padding-left: 22px; color: #354a59; }
.next-list li { margin-bottom: 8px; }
.preview-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 10px 0; }
.preview-stats div { border: 1px solid #e2e8ee; border-radius: 4px; padding: 10px; background: #fbfdff; }
.preview-stats span { color: #607384; display: block; }
.preview-stats strong { font-size: 24px; color: #007ec2; }
@media (max-width: 1180px) {
    .app-shell { grid-template-columns: 190px minmax(0, 1fr); }
    .module-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .module-layout { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
    .app-body { overflow: auto; }
    .app-shell { display: block; }
    .app-sidebar { min-height: auto; }
    .side-nav { display: flex; overflow-x: auto; gap: 4px; padding: 8px; }
    .side-nav a { white-space: nowrap; margin: 0; }
    .app-main { height: auto; display: block; }
    .app-content { overflow: visible; }
    .module-grid, .feature-list, .preview-stats { grid-template-columns: 1fr; }
}

/* Dashboard density fixes */
.lsi-dashboard .revenue-card { min-width: 0; }
.lsi-dashboard .revenue-list { grid-template-columns: 1fr; }
.lsi-dashboard .revenue-list div { padding: 3px 0; }
.lsi-dashboard .revenue-list span { font-size: 11px; line-height: 1.15; }
.lsi-dashboard .revenue-list strong { font-size: 13px; line-height: 1.15; white-space: normal; text-align: right; }
.dashboard-calendar {
    max-height: 238px;
    overflow: auto;
}
.dashboard-calendar .calendar-head { position: sticky; top: 0; z-index: 4; }
.dashboard-calendar .room-label { position: sticky; left: 0; z-index: 3; }
.dashboard-calendar .calendar-head .room-label { z-index: 5; }
.dashboard-calendar .booking-row { min-height: 31px; }
.dashboard-calendar .booking-row .room-label,
.dashboard-calendar .tape-slot { min-height: 31px; }
.dashboard-calendar .calendar-head .room-label,
.dashboard-calendar .calendar-head .day-label { min-height: 30px; }
.dashboard-calendar .booking-bar { height: 20px; padding: 0 6px; }
.dashboard-calendar .booking-bar strong,
.dashboard-calendar .booking-bar span { font-size: 10px; }
.dashboard-calendar .room-label strong { font-size: 12px; }
.dashboard-calendar .room-label small { font-size: 10px; }
.lsi-board { grid-template-columns: 1fr 1.2fr 1.1fr .9fr; }
.status-tile { min-height: 64px; }
.status-tile strong { font-size: 24px; }
.weather-now b { font-size: 28px; }
@media (max-width: 1180px) {
    .dashboard-calendar { max-height: 260px; }
}
.housekeeping-board { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin-top: 10px; }
.housekeeping-room { border: 1px solid #dce6ee; border-radius: 4px; padding: 10px; background: #fbfdff; display: grid; gap: 4px; }
.housekeeping-room strong { font-size: 22px; color: #263b4a; }
.housekeeping-room span, .housekeeping-room small { color: #607384; }
.housekeeping-room b { color: #117358; font-size: 12px; }
@media (max-width: 1180px) { .housekeeping-board { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 760px) { .housekeeping-board { grid-template-columns: 1fr; } }

/* Compact reservation operations list */
.reservations-list { display: grid; gap: 6px; margin-top: 10px; }
.reservation-row-card {
    display: grid;
    grid-template-columns: 54px minmax(220px, 1.35fr) 72px minmax(126px, .75fr) 92px 96px minmax(160px, .85fr) 118px;
    align-items: center;
    gap: 8px;
    min-height: 54px;
    padding: 6px 8px;
    border: 1px solid #d8e5ee;
    border-left: 4px solid #007ec2;
    border-radius: 5px;
    background: #fff;
    box-shadow: 0 1px 2px rgba(31,34,35,.04);
}
.reservation-row-card:nth-child(even) { background: #fbfdff; }
.reservation-row-card:hover { border-color: #add9f0; box-shadow: 0 8px 20px rgba(0,126,194,.08); }
.res-id span {
    display: inline-grid;
    place-items: center;
    min-width: 42px;
    height: 28px;
    border-radius: 4px;
    background: #eef6fb;
    color: #006399;
    font-weight: 800;
    font-size: 12px;
}
.res-main { min-width: 0; display: grid; gap: 2px; }
.res-guest-line { display: flex; align-items: center; gap: 6px; min-width: 0; }
.res-guest { font-size: 13px; font-weight: 800; color: #263b4a; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.res-subline { display: flex; gap: 8px; min-width: 0; color: #718390; font-size: 11px; }
.res-subline span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.res-cell { min-width: 0; display: flex; align-items: center; gap: 6px; color: #354a59; }
.res-cell strong { font-size: 13px; line-height: 1.1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.res-cell small { display: block; color: #7a8b97; font-size: 11px; line-height: 1.1; }
.room-cell strong { font-size: 18px; color: #007ec2; }
.amount-cell strong { font-size: 12px; color: #263b4a; }
.res-icon {
    width: 22px;
    height: 22px;
    border-radius: 4px;
    display: inline-grid;
    place-items: center;
    flex: 0 0 auto;
    background: #eef6fb;
    color: #007ec2;
    font-size: 13px;
    line-height: 1;
}
.res-statuses { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; min-width: 0; }
.status-pill {
    display: inline-flex;
    align-items: center;
    height: 22px;
    max-width: 100%;
    padding: 0 7px;
    border-radius: 999px;
    border: 1px solid #d7e4ed;
    background: #f6fafc;
    color: #526a7a;
    font-size: 11px;
    font-weight: 800;
    white-space: nowrap;
}
.status-pill.payment.paid { background: #e5f8f2; border-color: #bdebdc; color: #117358; }
.status-pill.payment.pending { background: #fff5df; border-color: #f2d694; color: #8a5a00; }
.status-pill.payment.pay-on-arrival { background: #eef6fb; border-color: #c9e7f7; color: #006399; }
.status-pill.access.sent-ttlock { background: #e5f8f2; border-color: #bdebdc; color: #117358; }
.status-pill.access.ttlock-error { background: #fdebed; border-color: #f4c0c6; color: #a51f2b; }
.res-actions { display: flex; align-items: center; justify-content: flex-end; gap: 4px; }
.icon-action {
    width: 30px;
    min-width: 30px;
    height: 30px;
    min-height: 30px;
    padding: 0;
    border-radius: 5px;
    display: inline-grid;
    place-items: center;
    font-size: 14px;
    background: #fff;
}
.icon-action.success { color: #117358; border-color: #bdebdc; background: #f3fcf9; }
.icon-action.warn { color: #8a5a00; border-color: #f2d694; background: #fff9eb; }
.icon-action.key { color: #006399; border-color: #c9e7f7; background: #f2f9fd; }
.icon-action:hover { transform: translateY(-1px); box-shadow: 0 4px 10px rgba(31,34,35,.12); }
.res-message-box, .res-note { grid-column: 2 / -1; margin-top: -2px; color: #6a7c88; font-size: 11px; }
.res-note.error { color: #b4232d; font-weight: 800; }
.car-cell strong { font-size: 12px; }
.res-message-box summary { cursor: pointer; color: #006399; font-weight: 800; }
.compact-send-form { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: 5px; }
.compact-send-form select { width: 210px; min-height: 28px; padding: 4px 7px; }
.compact-send-form button { min-height: 28px; padding: 4px 8px; }
.empty-state { padding: 16px; border: 1px solid #d8e5ee; background: #fff; border-radius: 5px; color: #607384; }
.compact-reservations .reservation-row-card {
    grid-template-columns: 46px minmax(170px, 1fr) 62px minmax(112px, .75fr) 82px 86px minmax(118px, .75fr) 92px;
    min-height: 46px;
    padding: 5px 7px;
}
.compact-reservations .res-message-box,
.compact-reservations .res-note { display: none; }
.compact-reservations .res-subline { display: none; }
@media (max-width: 1180px) {
    .reservation-row-card { grid-template-columns: 48px minmax(180px, 1fr) 70px minmax(132px, .8fr) 96px; }
    .car-cell, .res-statuses { grid-column: 2 / 5; }
    .res-actions { grid-column: 5 / 6; grid-row: 1 / 3; }
}
@media (max-width: 760px) {
    .reservation-row-card { grid-template-columns: 42px minmax(0, 1fr) 92px; align-items: start; }
    .res-cell, .res-statuses { grid-column: 2 / -1; }
    .res-actions { grid-column: 3 / 4; grid-row: 1 / 2; align-self: center; }
    .res-message-box, .res-note { grid-column: 1 / -1; }
}

.icon-action.danger { color: #a51f2b; border-color: #f4c0c6; background: #fdebed; }
.icon-action.portal { color: #5b2bbd; border-color: #d8c8ff; background: #f5f0ff; }
.public-body:has(.guest-app) { background: #08111f; }
.guest-app {
    min-height: calc(100vh - 50px);
    max-width: 560px;
    margin: 0 auto;
    padding: 18px 12px 34px;
    color: #f7fbff;
    background:
        radial-gradient(circle at 20% -10%, rgba(76,192,255,.38), transparent 34%),
        radial-gradient(circle at 92% 12%, rgba(31,189,144,.30), transparent 32%),
        linear-gradient(180deg, #101d2d 0%, #08111f 44%, #f3f7fa 44%, #f3f7fa 100%);
}
.guest-hero { display: flex; align-items: center; gap: 12px; padding: 10px 4px 18px; }
.guest-logo { width: 54px; height: 54px; border-radius: 16px; display: grid; place-items: center; background: linear-gradient(135deg, #fff, #dff5ff); color: #0b2a3d; box-shadow: 0 14px 30px rgba(0,0,0,.25); }
.guest-logo span { font-weight: 900; font-size: 20px; }
.guest-hero p { margin: 0; color: #95c8e3; font-weight: 800; text-transform: uppercase; font-size: 11px; }
.guest-hero h1 { margin: 2px 0; font-size: 30px; color: #fff; }
.guest-hero small { color: #c9ddea; }
.guest-alert { margin: 0 0 10px; padding: 10px 12px; border-radius: 12px; background: #fdebed; color: #8f1d28; border: 1px solid #f4c0c6; }
.guest-alert.info { background: #e8f5fc; color: #006399; border-color: #c9e7f7; }
.guest-card { margin: 10px 0; padding: 14px; border-radius: 18px; background: rgba(255,255,255,.96); color: #1f2c37; box-shadow: 0 16px 36px rgba(10,25,40,.12); border: 1px solid rgba(218,230,238,.8); }
.guest-card span { display: block; color: #667b8c; font-size: 11px; font-weight: 800; text-transform: uppercase; }
.guest-card strong { display: block; color: #172635; }
.guest-card small { color: #718390; }
.guest-stay-card { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.guest-stay-card strong { font-size: 16px; }
.guest-money-card, .gate-card { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.guest-money-card strong { font-size: 24px; }
.guest-button { min-height: 42px; border: 0; border-radius: 999px; padding: 0 16px; display: inline-flex; align-items: center; justify-content: center; background: #e8f5fc; color: #006399; font-weight: 900; white-space: nowrap; }
.guest-button.primary { background: linear-gradient(135deg, #00a2ff, #007ec2); color: #fff; box-shadow: 0 10px 24px rgba(0,126,194,.28); }
.guest-button.muted { background: #eef2f5; color: #526a7a; }
.guest-button:disabled { opacity: .55; cursor: not-allowed; }
.guest-actions-row { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.guest-actions-row form, .guest-actions-row button { width: 100%; }
.guest-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.code-card strong { font-size: 32px; letter-spacing: .08em; margin: 5px 0; }
.room-code { background: linear-gradient(135deg, #ffffff, #eaf8ff); }
.guest-tabs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin: 12px 0; position: sticky; top: 6px; z-index: 4; }
.guest-tabs a { min-height: 36px; border-radius: 999px; display: grid; place-items: center; background: rgba(255,255,255,.92); color: #006399; font-weight: 900; font-size: 12px; box-shadow: 0 6px 18px rgba(10,25,40,.08); }
.info-card h2, .area-card h2 { margin: 0 0 10px; font-size: 18px; color: #172635; }
.info-card p { margin: 0 0 12px; color: #526a7a; line-height: 1.45; }
.info-list { display: grid; gap: 8px; }
.info-list div { display: flex; align-items: center; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #edf2f6; }
.area-card { display: grid; gap: 8px; }
.area-card a { padding: 11px 12px; border-radius: 12px; background: #f3f8fb; color: #006399; font-weight: 900; }
@media (max-width: 520px) {
    .topbar:has(+ main .guest-app) { display: none; }
    .guest-app { min-height: 100vh; padding: 14px 10px 28px; }
    .guest-stay-card { grid-template-columns: repeat(2, 1fr); }
    .guest-money-card, .gate-card { align-items: stretch; flex-direction: column; }
    .guest-money-card form, .guest-money-card button, .gate-card .guest-button, .gate-card button { width: 100%; }
    .guest-grid { grid-template-columns: 1fr; }
    .guest-tabs { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* Guest portal information pass */
html:has(.guest-app), body:has(.guest-app) { min-height: 100%; background: #08111f; }
.guest-app {
    min-height: 100vh;
    max-width: none;
    width: 100%;
    background:
        radial-gradient(circle at 16% 0%, rgba(76,192,255,.30), transparent 28rem),
        radial-gradient(circle at 92% 8%, rgba(31,189,144,.24), transparent 24rem),
        linear-gradient(180deg, #101d2d 0%, #0b1726 34rem, #eef3f7 34rem, #eef3f7 100%);
    background-repeat: no-repeat;
}
.guest-app > * { max-width: 560px; margin-left: auto; margin-right: auto; }
.guest-money-card.needs-payment { border-color: #a9daf5; box-shadow: 0 18px 38px rgba(0,126,194,.18); }
.guest-alert.payment-first { background: linear-gradient(135deg, #fff5df, #ffe9af); color: #7d5100; border-color: #f4cb75; font-weight: 800; }
.entry-code strong { font-size: 28px; letter-spacing: .03em; }
.welcome-card { background: linear-gradient(135deg, #ffffff, #eef8ff); }
.restaurant-card { background: linear-gradient(135deg, #ffffff, #f2fbf7); }
.info-card p, .area-card p { color: #526a7a; line-height: 1.55; margin: 0 0 10px; }
.info-card p:last-child, .area-card p:last-child { margin-bottom: 0; }
.guest-contact-actions { display: grid; gap: 8px; margin: 10px 0 12px; }
.guest-contact-actions .guest-button { width: 100%; }
.guest-card h2 { letter-spacing: 0; }
@media (min-width: 760px) {
    .guest-app { padding-top: 24px; padding-bottom: 52px; }
}
@media (max-width: 520px) {
    .guest-app {
        background:
            radial-gradient(circle at 12% 0%, rgba(76,192,255,.32), transparent 22rem),
            radial-gradient(circle at 100% 10%, rgba(31,189,144,.25), transparent 20rem),
            linear-gradient(180deg, #101d2d 0%, #0b1726 29rem, #eef3f7 29rem, #eef3f7 100%);
    }
    .guest-hero h1 { font-size: 28px; }
    .code-card strong { font-size: 29px; }
    .entry-code strong { font-size: 25px; }
}

/* Guest portal full-height background fix */
html:has(.guest-app), body:has(.guest-app), .public-body:has(.guest-app) {
    min-height: 100%;
    background: #08111f;
}
.guest-app {
    min-height: 100vh;
    background:
        radial-gradient(circle at 16% 0%, rgba(76,192,255,.30), transparent 28rem),
        radial-gradient(circle at 92% 8%, rgba(31,189,144,.24), transparent 24rem),
        linear-gradient(180deg, #101d2d 0%, #0b1726 58%, #08111f 100%) !important;
    background-color: #08111f !important;
    background-repeat: no-repeat !important;
}
@media (max-width: 520px) {
    .guest-app {
        background:
            radial-gradient(circle at 12% 0%, rgba(76,192,255,.32), transparent 22rem),
            radial-gradient(circle at 100% 10%, rgba(31,189,144,.25), transparent 20rem),
            linear-gradient(180deg, #101d2d 0%, #0b1726 55%, #08111f 100%) !important;
        background-color: #08111f !important;
    }
}

/* Compact guests operations list */
.guests-dashboard { display: grid; gap: 10px; }
.guests-list { display: grid; gap: 6px; }
.guest-row-card {
    display: grid;
    grid-template-columns: 44px minmax(230px, 1.35fr) minmax(210px, 1fr) 86px minmax(160px, .8fr) 46px;
    align-items: center;
    gap: 8px;
    min-height: 58px;
    padding: 7px 8px;
    border: 1px solid #d8e5ee;
    border-left: 4px solid #5b2bbd;
    border-radius: 5px;
    background: #fff;
    box-shadow: 0 1px 2px rgba(31,34,35,.04);
}
.guest-row-card:nth-child(even) { background: #fbfdff; }
.guest-row-card:hover { border-color: #d8c8ff; box-shadow: 0 8px 20px rgba(91,43,189,.08); }
.guest-avatar {
    width: 34px;
    height: 34px;
    border-radius: 10px;
    display: grid;
    place-items: center;
    background: linear-gradient(135deg, #5b2bbd, #007ec2);
    color: #fff;
    font-size: 15px;
    font-weight: 900;
}
.guest-main, .guest-company, .guest-notes { min-width: 0; display: grid; gap: 2px; }
.guest-name { color: #263b4a; font-size: 13px; font-weight: 900; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.guest-contact-line { display: flex; gap: 8px; min-width: 0; color: #718390; font-size: 11px; }
.guest-contact-line span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.guest-mini-label { color: #7a8b97; font-size: 10px; text-transform: uppercase; font-weight: 900; }
.guest-company strong { color: #354a59; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.guest-company small, .guest-notes small { color: #718390; font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.guest-invoice-status { display: flex; align-items: center; justify-content: center; }
.status-pill.invoice.yes { background: #fff5df; border-color: #f2d694; color: #8a5a00; }
.status-pill.invoice.no { background: #eef2f5; border-color: #d6e0e7; color: #607384; }
.guest-actions { display: flex; justify-content: flex-end; }
@media (max-width: 1180px) {
    .guest-row-card { grid-template-columns: 42px minmax(190px, 1fr) minmax(160px, .8fr) 76px 42px; }
    .guest-notes { display: none; }
}
@media (max-width: 760px) {
    .guest-row-card { grid-template-columns: 40px minmax(0, 1fr) 44px; align-items: start; }
    .guest-company, .guest-invoice-status { grid-column: 2 / 3; }
    .guest-actions { grid-column: 3 / 4; grid-row: 1 / 2; }
    .guest-contact-line { flex-direction: column; gap: 2px; }
}

.minibar-card { background: linear-gradient(135deg, #ffffff, #fff8ec); }
.minibar-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 10px; margin-top: 10px; }
.minibar-list div { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 7px 0; border-bottom: 1px solid #edf2f6; }
.minibar-list span { color: #354a59; font-size: 12px; font-weight: 800; text-transform: none; }
.minibar-list strong { color: #7d5100; font-size: 12px; white-space: nowrap; }
@media (max-width: 520px) { .minibar-list { grid-template-columns: 1fr; } }

/* Guest chat */
.guest-tabs { grid-template-columns: repeat(3, 1fr); }
.guest-chat-card { background: linear-gradient(135deg, #ffffff, #f3f8ff); }
.guest-chat-card h2 { margin: 0 0 8px; }
.guest-chat-card p { color: #526a7a; line-height: 1.45; }
.guest-chat-messages { display: grid; gap: 8px; height: min(420px, 54vh); overflow: auto; margin: 12px 0; padding: 2px; align-content: start; scroll-behavior: smooth; }
.guest-chat-message { padding: 9px 10px; border-radius: 14px; background: #eef4f8; color: #263b4a; }
.guest-chat-message.guest { margin-left: 34px; background: #e8f5fc; }
.guest-chat-message.staff, .guest-chat-message.ai { margin-right: 34px; background: #f1fbf7; }
.guest-chat-message strong { display: block; font-size: 12px; color: #006399; }
.guest-chat-message p { margin: 3px 0; color: #263b4a; }
.guest-chat-message small { color: #718390; font-size: 10px; }
.guest-chat-form { display: grid; gap: 8px; }
.guest-chat-form textarea { min-height: 82px; border-radius: 14px; }
.chat-dashboard { display: grid; gap: 10px; }
.chat-thread-list { display: grid; gap: 7px; }
.chat-thread-card { display: grid; grid-template-columns: 82px minmax(0, 1fr) 150px; align-items: center; gap: 10px; min-height: 62px; padding: 8px 10px; background: #fff; border: 1px solid #d8e5ee; border-left: 4px solid #007ec2; border-radius: 6px; }
.chat-thread-card:hover { border-color: #add9f0; box-shadow: 0 8px 20px rgba(0,126,194,.08); }
.chat-room { display: grid; place-items: center; min-height: 38px; border-radius: 8px; background: #eef6fb; color: #006399; font-weight: 900; }
.chat-thread-main { min-width: 0; display: grid; gap: 3px; }
.chat-thread-main strong { color: #263b4a; font-size: 14px; }
.chat-thread-main span { color: #607384; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-thread-meta { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
.chat-thread-meta b { min-width: 24px; height: 24px; display: grid; place-items: center; border-radius: 50%; background: #dc313b; color: #fff; }
.chat-thread-meta small { color: #718390; }
.staff-chat-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 10px; }
.staff-chat-panel, .knowledge-panel { background: #fff; border: 1px solid #d8e5ee; border-radius: 6px; padding: 12px; }
.staff-chat-messages { display: grid; gap: 8px; max-height: calc(100vh - 270px); overflow: auto; padding-right: 4px; }
.chat-bubble { padding: 10px; border-radius: 12px; background: #f4f8fb; border: 1px solid #e2eaf0; }
.chat-bubble.guest { border-left: 4px solid #007ec2; }
.chat-bubble.staff { border-left: 4px solid #1fbd90; }
.chat-bubble.ai { border-left: 4px solid #5b2bbd; background: #f7f3ff; }
.chat-bubble-head { display: flex; justify-content: space-between; gap: 8px; }
.chat-bubble p { margin: 6px 0 0; color: #263b4a; line-height: 1.4; }
.staff-chat-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; margin-top: 10px; }
.staff-chat-form textarea { min-height: 64px; }
.knowledge-panel h2 { margin: 0 0 10px; }
.knowledge-panel article { border-top: 1px solid #edf2f6; padding: 8px 0; }
.knowledge-panel article:first-of-type { border-top: 0; }
.knowledge-panel p { margin: 4px 0 0; color: #607384; line-height: 1.35; }
@media (max-width: 900px) { .staff-chat-layout { grid-template-columns: 1fr; } .chat-thread-card { grid-template-columns: 72px minmax(0, 1fr); } .chat-thread-meta { grid-column: 2; justify-content: flex-start; } }
@media (max-width: 520px) { .guest-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); } .guest-tabs a, .guest-tabs button { font-size: 11px; } .staff-chat-form { grid-template-columns: 1fr; } }

.guest-language-switcher { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 6px; max-width: 560px; margin: 0 auto 12px; padding: 0 12px; }
.guest-language-switcher button { border: 1px solid rgba(255,255,255,.28); background: rgba(255,255,255,.12); color: #fff; border-radius: 999px; padding: 8px 6px; font-weight: 900; font-size: 12px; backdrop-filter: blur(12px); }
.guest-language-switcher button.active { background: #fff; color: #1b3d56; border-color: #fff; }
.knowledge-editor { display: grid; gap: 10px; }
.knowledge-editor-list { display: grid; gap: 8px; }
.knowledge-editor-card, .knowledge-new-card { background: #fff; border: 1px solid #d8e5ee; border-radius: 6px; padding: 10px; }
.knowledge-editor-card { display: grid; grid-template-columns: minmax(160px, .6fr) minmax(220px, 1fr) auto auto; gap: 8px; align-items: end; }
.knowledge-editor-card label, .knowledge-new-grid label { display: grid; gap: 4px; color: #607384; font-size: 11px; font-weight: 800; }
.knowledge-editor-card .wide { grid-column: 1 / -1; }
.knowledge-editor-card input, .knowledge-editor-card textarea, .knowledge-new-card input, .knowledge-new-card textarea { width: 100%; border: 1px solid #d8e5ee; border-radius: 6px; padding: 8px; font: inherit; }
.checkline { display: flex !important; align-items: center; gap: 6px; color: #354a59 !important; }
.checkline input { width: auto !important; }
.checkline.danger { color: #b4232d !important; }
.knowledge-new-card h2 { margin: 0 0 8px; font-size: 16px; }
.knowledge-new-grid { display: grid; grid-template-columns: minmax(160px, .6fr) minmax(220px, 1fr); gap: 8px; }
.knowledge-new-grid .wide { grid-column: 1 / -1; }
.button-row { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
@media (max-width: 860px) { .knowledge-editor-card, .knowledge-new-grid { grid-template-columns: 1fr; } .knowledge-new-grid .wide { grid-column: auto; } }
@media (max-width: 420px) { .guest-language-switcher { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

.guest-hero-compact { grid-template-columns: 58px minmax(0, 1fr) auto; align-items: center; }
.guest-hero-copy { min-width: 0; }
.guest-hero-actions { display: flex; align-items: center; gap: 7px; }
.guest-icon-button { width: 42px; height: 42px; border: 1px solid rgba(255,255,255,.55); border-radius: 14px; display: grid; place-items: center; background: rgba(255,255,255,.95); color: #006399; font-weight: 950; font-size: 17px; box-shadow: 0 10px 24px rgba(10,25,40,.16); position: relative; }
.guest-icon-button.active { background: #006399; color: #fff; border-color: #006399; }
.guest-chat-top.active { background: #10b981; color: #fff; border-color: #10b981; }
.guest-chat-top span { transform: none; letter-spacing: 0; font-size: 12px; }
.guest-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
.guest-tabs button { min-height: 34px; border: 0; border-radius: 999px; display: grid; place-items: center; background: rgba(255,255,255,.92); color: #006399; font-weight: 900; font-size: 12px; box-shadow: 0 6px 18px rgba(10,25,40,.08); }
.guest-tabs button.active { background: #006399; color: #fff; }
.guest-language-switcher { display: flex !important; flex-wrap: nowrap; justify-content: center; gap: 4px; max-width: 100%; margin: -4px auto 8px; padding: 0 10px; }
.guest-language-switcher button { flex: 0 0 auto; min-width: 38px; padding: 5px 7px; font-size: 10px; line-height: 1; }
@media (max-width: 420px) { .guest-language-switcher { grid-template-columns: none !important; } .guest-hero-compact { grid-template-columns: 48px minmax(0, 1fr) auto; } .guest-icon-button { width: 38px; height: 38px; border-radius: 12px; font-size: 15px; } .guest-hero-actions { gap: 5px; } }

.guest-chat-badge { position: absolute; top: -7px; right: -7px; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 999px; display: grid; place-items: center; background: #dc2626; color: #fff; border: 2px solid #fff; font-size: 11px; font-weight: 950; line-height: 1; box-shadow: 0 6px 14px rgba(220,38,38,.32); }
.guest-chat-badge[hidden] { display: none !important; }

.guest-checkin-card { background: linear-gradient(135deg, #ffffff, #f7fbff); }
.guest-checkin-card h2 { margin: 0 0 8px; }
.guest-checkin-card p { margin: 0 0 12px; color: #526a7a; line-height: 1.45; }
.guest-checkin-form { display: grid; gap: 12px; }
.guest-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.guest-form-grid label { display: grid; gap: 5px; color: #526a7a; font-size: 12px; font-weight: 850; }
.guest-form-grid label.wide, .guest-form-grid .wide { grid-column: 1 / -1; }
.guest-form-grid input, .guest-form-grid select, .guest-form-grid textarea { min-height: 40px; border: 1px solid #d8e5ee; border-radius: 10px; padding: 8px 10px; font-size: 14px; background: #fff; }
.guest-form-grid textarea { min-height: 74px; }
.guest-check-block { border: 1px solid #dce8f0; border-radius: 14px; padding: 10px; background: rgba(255,255,255,.78); display: grid; gap: 8px; }
.guest-checkline { display: flex; align-items: center; gap: 8px; color: #263b4a; font-size: 13px; font-weight: 900; }
.guest-checkline input { width: 16px; height: 16px; flex: 0 0 auto; }
.guest-checkline.terms { align-items: flex-start; line-height: 1.35; }
.is-muted { opacity: .48; }
.is-muted input, .is-muted textarea { background: #f5f8fa; }
@media (max-width: 520px) { .guest-form-grid { grid-template-columns: 1fr; } .guest-form-grid label.wide, .guest-form-grid .wide { grid-column: auto; } }

/* Guest virtual room card */
.virtual-room-card {
    position: relative;
    overflow: hidden;
    display: grid;
    grid-template-columns: 116px minmax(0, 1fr);
    gap: 12px;
    padding: 16px;
    background:
        linear-gradient(135deg, rgba(255,255,255,.96), rgba(237,249,255,.94)),
        var(--room-card-image, none);
    background-size: cover;
    background-position: center;
    border-color: rgba(164,216,245,.9);
}
.virtual-room-card::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: radial-gradient(circle at 14% 20%, rgba(0,162,255,.18), transparent 12rem), radial-gradient(circle at 90% 0%, rgba(16,185,129,.15), transparent 10rem);
}
.virtual-room-card > * { position: relative; z-index: 1; }
.virtual-room-art {
    grid-row: span 3;
    min-height: 164px;
    border-radius: 18px;
    display: grid;
    place-items: center;
    background: linear-gradient(160deg, #0d2438, #0f5d82 58%, #10b981);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 16px 32px rgba(0,126,194,.20);
    overflow: hidden;
}
.virtual-room-glow { position: absolute; width: 120px; height: 120px; border-radius: 999px; background: rgba(255,255,255,.16); filter: blur(6px); transform: translate(-26px, -28px); }
.virtual-room-door {
    width: 72px;
    height: 108px;
    border-radius: 18px 18px 10px 10px;
    display: grid;
    place-items: center;
    background: linear-gradient(180deg, rgba(255,255,255,.95), rgba(222,242,252,.92));
    color: #0d3550;
    border: 1px solid rgba(255,255,255,.72);
    box-shadow: 0 18px 40px rgba(6,28,44,.32);
}
.virtual-room-door span { color: #0d3550; font-size: 24px; font-weight: 950; text-transform: none; }
.virtual-room-copy span, .virtual-room-code span { color: #006399; }
.virtual-room-copy strong { font-size: 22px; }
.virtual-room-code {
    padding: 10px 12px;
    border: 1px solid #d7eaf5;
    border-radius: 14px;
    background: rgba(255,255,255,.76);
}
.virtual-room-code strong {
    font-size: 32px;
    letter-spacing: .08em;
    margin: 3px 0;
}
.virtual-room-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
}
.virtual-room-actions form, .virtual-room-actions button { width: 100%; }
.room-open-button { min-height: 48px; }
.gate-open-button { min-height: 48px; background: #f1fbf7; color: #117358; }
.virtual-room-note {
    grid-column: 2;
    display: block;
    color: #607384;
    line-height: 1.35;
}
.secondary-codes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.access-state-card strong { font-size: 22px; color: #117358; }
@media (max-width: 520px) {
    .virtual-room-card { grid-template-columns: 1fr; }
    .virtual-room-art { grid-row: auto; min-height: 138px; }
    .virtual-room-actions { grid-template-columns: 1fr; }
    .virtual-room-note { grid-column: auto; }
    .secondary-codes { grid-template-columns: 1fr; }
}

.virtual-room-art.has-room-image {
    aspect-ratio: 2008 / 1276;
    min-height: 0;
    background-image: var(--room-card-image);
    background-size: cover;
    background-position: center;
    border: 1px solid rgba(255,255,255,.7);
}
.virtual-room-art.has-room-image::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(180deg, rgba(4,16,28,0) 58%, rgba(4,16,28,.22));
}

/* Pałacyk logo and guest header refresh */
.brand-logo { display: inline-flex; align-items: center; height: 44px; }
.brand-logo img { display: block; width: 150px; max-height: 42px; object-fit: contain; }
.hero-logo { display: block; width: min(300px, 70vw); max-height: 150px; object-fit: contain; margin: 0 0 24px; filter: drop-shadow(0 14px 28px rgba(0,0,0,.35)); }
.guest-hero-compact {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding: 8px 4px 14px;
}
.guest-logo-mark {
    width: min(190px, 48vw);
    min-width: 132px;
    min-height: 64px;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding: 2px 0;
}
.guest-logo-mark img { display: block; width: 100%; max-height: 54px; object-fit: contain; filter: drop-shadow(0 10px 18px rgba(0,0,0,.32)); }
.guest-hero-actions { display: grid; grid-template-columns: repeat(2, 74px); gap: 8px; }
.guest-action-tile {
    position: relative;
    min-height: 64px;
    border: 1px solid rgba(255,255,255,.42);
    border-radius: 18px;
    display: grid;
    place-items: center;
    align-content: center;
    gap: 4px;
    overflow: hidden;
    background:
        radial-gradient(circle at 20% 0%, rgba(255,255,255,.96), rgba(255,255,255,.58) 34%, rgba(255,255,255,.20)),
        linear-gradient(135deg, rgba(255,255,255,.94), rgba(219,242,255,.82));
    color: #06344f;
    font-weight: 950;
    box-shadow: 0 16px 32px rgba(0,0,0,.20), inset 0 1px 0 rgba(255,255,255,.9);
    backdrop-filter: blur(14px);
}
.guest-action-tile::after {
    content: "";
    position: absolute;
    inset: auto -20% -55% -20%;
    height: 72%;
    background: radial-gradient(circle, rgba(0,126,194,.22), transparent 62%);
    pointer-events: none;
}
.guest-action-tile.active { background: linear-gradient(135deg, #ffffff, #0ea5e9); color: #fff; border-color: rgba(255,255,255,.8); }
.guest-chat-top.active { background: linear-gradient(135deg, #ffffff, #10b981); color: #fff; border-color: rgba(255,255,255,.8); }
.guest-action-icon {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: rgba(0,126,194,.12);
    color: #006399;
    font-size: 16px;
    line-height: 1;
    font-weight: 950;
}
.guest-action-tile.active .guest-action-icon { background: rgba(255,255,255,.24); color: #fff; }
.guest-action-tile b { font-size: 12px; line-height: 1; letter-spacing: 0; z-index: 1; }
.guest-action-tile .guest-chat-badge { top: -6px; right: -6px; }
.guest-stay-card {
    grid-template-columns: minmax(130px, 1.35fr) repeat(4, minmax(0, 1fr));
    align-items: stretch;
    gap: 8px;
}
.guest-stay-card > div {
    min-width: 0;
    padding: 8px 9px;
    border-radius: 13px;
    background: #f6fafc;
    border: 1px solid #e3edf3;
}
.guest-stay-card .stay-summary-title {
    background: linear-gradient(135deg, #f0f9ff, #ecfdf5);
    border-color: #cceaf8;
}
.guest-stay-card .stay-summary-title strong { font-size: 13px; }
.guest-stay-card small { display: block; margin-top: 2px; color: #006399; font-weight: 900; }
@media (max-width: 520px) {
    .brand-logo img { width: 132px; }
    .hero-logo { width: min(240px, 76vw); }
    .guest-logo-mark { width: min(172px, 45vw); min-width: 122px; min-height: 58px; }
    .guest-hero-actions { grid-template-columns: repeat(2, 62px); gap: 6px; }
    .guest-action-tile { min-height: 58px; border-radius: 16px; }
    .guest-action-icon { width: 24px; height: 24px; font-size: 14px; }
    .guest-stay-card { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .guest-stay-card .stay-summary-title { grid-column: 1 / -1; }
}

/* Compact guest wow header and one-screen access view */
.guest-hero-compact { padding: 5px 4px 8px; gap: 8px; }
.guest-logo-mark { width: min(164px, 36vw); min-width: 106px; min-height: 48px; }
.guest-logo-mark img { max-height: 46px; }
.guest-hero-actions { grid-template-columns: repeat(3, 60px); gap: 6px; }
.guest-action-tile,
.guest-language-menu > summary {
    min-height: 54px;
    border: 1px solid rgba(255,255,255,.44);
    border-radius: 16px;
    display: grid;
    place-items: center;
    align-content: center;
    gap: 3px;
    background:
        radial-gradient(circle at 16% 0%, rgba(255,255,255,.98), rgba(255,255,255,.50) 38%, rgba(255,255,255,.18)),
        linear-gradient(145deg, rgba(255,255,255,.94), rgba(230,245,255,.78));
    color: #06344f;
    font-weight: 950;
    box-shadow: 0 12px 26px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.9);
    backdrop-filter: blur(14px);
}
.guest-action-icon { width: 23px; height: 23px; font-size: 13px; }
.guest-action-tile b,
.guest-language-menu b { font-size: 10px; line-height: 1; }
.guest-language-menu { position: relative; }
.guest-language-menu > summary { list-style: none; cursor: pointer; padding: 0; }
.guest-language-menu > summary::-webkit-details-marker { display: none; }
.guest-language-menu > summary span { font-size: 20px; line-height: 1; }
.guest-language-switcher {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    z-index: 30;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
    min-width: 150px;
    margin: 0;
    padding: 8px;
    border: 1px solid rgba(255,255,255,.46);
    border-radius: 18px;
    background: rgba(10,31,48,.84);
    box-shadow: 0 18px 40px rgba(0,0,0,.26);
    backdrop-filter: blur(18px);
}
.guest-language-switcher button {
    min-width: 0;
    padding: 7px 8px;
    border-radius: 12px;
    border: 1px solid rgba(255,255,255,.18);
    background: rgba(255,255,255,.10);
    color: #fff;
    font-size: 12px;
    line-height: 1;
    font-weight: 950;
}
.guest-language-switcher button.active { background: #fff; color: #12394f; border-color: #fff; }
.guest-language-switcher button span { margin-left: 3px; }
.guest-stay-card {
    margin: 6px 0;
    padding: 7px;
    grid-template-columns: 1.1fr .68fr .68fr 1fr 1fr;
    gap: 5px;
    border-radius: 15px;
}
.guest-stay-card > div { padding: 5px 6px; border-radius: 10px; }
.guest-stay-card span { font-size: 9px; line-height: 1; }
.guest-stay-card strong { font-size: 12px; line-height: 1.12; }
.guest-stay-card .stay-summary-title strong { font-size: 11px; }
.guest-stay-card small { font-size: 10px; margin-top: 0; }
.virtual-room-card {
    margin-top: 7px;
    grid-template-columns: 104px minmax(0, 1fr);
    gap: 8px;
    padding: 10px;
    border-radius: 18px;
}
.virtual-room-art { min-height: 126px; border-radius: 15px; grid-row: span 4; }
.virtual-room-copy strong { font-size: 18px; }
.virtual-room-copy small { display: none; }
.virtual-room-code { padding: 7px 9px; border-radius: 12px; }
.virtual-room-code strong { font-size: 24px; margin: 0; }
.virtual-room-code small { font-size: 10px; line-height: 1.15; }
.virtual-room-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.virtual-room-meta > div { padding: 7px 8px; border: 1px solid #d7eaf5; border-radius: 12px; background: rgba(255,255,255,.78); }
.virtual-room-meta span { color: #006399; }
.virtual-room-meta strong { font-size: 15px; line-height: 1.1; }
.virtual-room-meta small { display: block; font-size: 9px; line-height: 1.12; }
.virtual-room-actions { gap: 6px; }
.room-open-button,
.gate-open-button { min-height: 40px; }
.virtual-room-note { display: none; }
.guest-money-card { margin: 6px 0; padding: 9px 10px; border-radius: 15px; }
.guest-money-card strong { font-size: 18px; }
.guest-actions-row { margin: 6px 0; }
@media (max-width: 520px) {
    .guest-hero-compact { align-items: center; }
    .guest-logo-mark { width: min(132px, 34vw); min-width: 94px; min-height: 44px; }
    .guest-logo-mark img { max-height: 40px; }
    .guest-hero-actions { grid-template-columns: repeat(3, 54px); gap: 5px; }
    .guest-action-tile,
    .guest-language-menu > summary { min-height: 50px; border-radius: 15px; }
    .guest-stay-card { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .guest-stay-card .stay-summary-title { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
    .virtual-room-card { grid-template-columns: 96px minmax(0, 1fr); }
    .virtual-room-art { grid-row: span 4; min-height: 118px; }
    .virtual-room-art.has-room-image { min-height: 0; }
    .virtual-room-meta { grid-template-columns: 1fr 1fr; }
    .virtual-room-meta small { display: none; }
}
@media (max-width: 380px) {
    .guest-hero-actions { grid-template-columns: repeat(3, 50px); }
    .guest-action-tile,
    .guest-language-menu > summary { min-height: 48px; }
    .guest-action-icon { width: 21px; height: 21px; }
    .guest-language-menu > summary span { font-size: 18px; }
    .virtual-room-card { grid-template-columns: 88px minmax(0, 1fr); }
}

/* Keep stay summary in one compact row on guest mobile */
@media (max-width: 520px) {
    .guest-stay-card {
        grid-template-columns: 1.08fr .62fr .62fr 1fr 1fr;
        gap: 4px;
        padding: 5px;
    }
    .guest-stay-card .stay-summary-title {
        grid-column: auto;
        display: grid;
        align-items: center;
        justify-content: stretch;
        gap: 2px;
    }
    .guest-stay-card > div { padding: 4px 5px; }
    .guest-stay-card span { font-size: 8px; }
    .guest-stay-card strong { font-size: 10px; }
    .guest-stay-card .stay-summary-title strong { font-size: 9px; }
    .guest-stay-card small { font-size: 9px; }
}
@media (max-width: 360px) {
    .guest-stay-card { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .guest-stay-card .stay-summary-title { grid-column: 1 / -1; display: flex; }
}

/* Palacyk hero image and restored virtual room card layout */
.hero {
    background:
        linear-gradient(90deg, rgba(20,26,31,.72), rgba(20,26,31,.22)),
        url('/assets/brand/palacyk.jpg') center/cover;
}
.virtual-room-card {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
    padding: 12px;
    border-radius: 20px;
}
.virtual-room-card .virtual-room-art {
    grid-row: auto;
    width: 100%;
    min-height: 0;
    aspect-ratio: 2008 / 1276;
    border-radius: 18px;
}
.virtual-room-card .virtual-room-copy {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-top: -2px;
}
.virtual-room-card .virtual-room-copy strong { font-size: 19px; }
.virtual-room-access-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 7px;
}
.virtual-access-tile {
    min-width: 0;
    min-height: 62px;
    padding: 8px;
    border: 1px solid rgba(183,218,236,.9);
    border-radius: 15px;
    background:
        radial-gradient(circle at 18% 0%, rgba(255,255,255,.98), rgba(255,255,255,.58) 40%, rgba(255,255,255,.14)),
        linear-gradient(145deg, rgba(255,255,255,.92), rgba(236,249,255,.82));
    box-shadow: 0 10px 24px rgba(10,25,40,.10), inset 0 1px 0 rgba(255,255,255,.9);
    overflow: hidden;
}
.virtual-access-tile span {
    color: #006399;
    font-size: 9px;
    line-height: 1;
    font-weight: 950;
    text-transform: uppercase;
}
.virtual-access-tile strong {
    display: block;
    margin-top: 4px;
    color: #172635;
    font-size: 18px;
    line-height: 1.05;
    letter-spacing: .03em;
}
.virtual-access-tile small {
    display: block;
    margin-top: 3px;
    color: #607384;
    font-size: 9px;
    line-height: 1.12;
}
.virtual-access-tile.status-tile strong { color: #117358; letter-spacing: 0; }
.virtual-access-tile.action-tile {
    padding: 0;
    display: grid;
}
.virtual-access-tile.action-tile .guest-button {
    width: 100%;
    min-height: 62px;
    border: 0;
    border-radius: 15px;
    padding: 8px 6px;
    font-size: 12px;
    font-weight: 950;
    box-shadow: none;
}
.virtual-access-tile.placeholder-tile .guest-button {
    background: linear-gradient(145deg, #f1fbf7, #e7f3fb);
    color: #607384;
    opacity: .78;
}
.entrance-open-button { background: #f4f8fb; color: #607384; }
@media (max-width: 520px) {
    .virtual-room-card { padding: 10px; gap: 8px; }
    .virtual-room-card .virtual-room-art { border-radius: 17px; }
    .virtual-room-access-grid { gap: 5px; }
    .virtual-access-tile { min-height: 56px; padding: 6px; border-radius: 13px; }
    .virtual-access-tile span { font-size: 8px; }
    .virtual-access-tile strong { font-size: 15px; }
    .virtual-access-tile small { display: none; }
    .virtual-access-tile.action-tile .guest-button { min-height: 56px; border-radius: 13px; font-size: 11px; }
}
@media (max-width: 360px) {
    .virtual-room-access-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .virtual-access-tile strong { font-size: 13px; }
    .virtual-access-tile.action-tile .guest-button { font-size: 10px; }
}


/* Guest panels open only after tapping the bottom tiles */
.guest-app [hidden],
.guest-app [data-guest-panel][hidden] {
    display: none !important;
}
.guest-tabs { margin-bottom: 0; }
.guest-tabs button { min-height: 40px; }

/* Center codes/status inside virtual card info tiles */
.virtual-access-tile.info-tile {
    display: grid;
    grid-template-rows: auto 1fr auto;
    align-items: stretch;
    text-align: center;
}
.virtual-access-tile.info-tile span {
    align-self: start;
    text-align: center;
}
.virtual-access-tile.info-tile strong {
    align-self: center;
    justify-self: center;
    margin: 0;
    text-align: center;
}
.virtual-access-tile.info-tile small {
    align-self: end;
    text-align: center;
}


/* Center virtual room card title */
.virtual-room-card .virtual-room-copy {
    justify-content: center;
    text-align: center;
}
.virtual-room-card .virtual-room-copy span {
    width: 100%;
    text-align: center;
}

/* Compact payment tile: amount left, payment action right */
.guest-money-card {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center !important;
    gap: 8px;
    min-height: 0;
}
.guest-money-card > div { min-width: 0; }
.guest-money-card span { font-size: 9px; line-height: 1; }
.guest-money-card strong { font-size: 17px; line-height: 1.05; }
.guest-money-card small { font-size: 10px; line-height: 1.1; }
.guest-money-card form { width: auto !important; margin: 0; }
.guest-money-card .guest-button {
    width: auto !important;
    min-height: 38px;
    white-space: nowrap;
    padding: 7px 10px;
    font-size: 12px;
}
@media (max-width: 520px) {
    .guest-money-card {
        grid-template-columns: minmax(0, 1fr) auto;
        padding: 7px 8px;
    }
    .guest-money-card strong { font-size: 15px; }
    .guest-money-card .guest-button { min-height: 34px; padding: 6px 8px; font-size: 11px; }
}

/* Center stay summary tiles like virtual card tiles */
.guest-stay-card > div {
    display: grid;
    grid-template-rows: auto 1fr auto;
    align-items: stretch;
    text-align: center;
}
.guest-stay-card > div span {
    align-self: start;
    text-align: center;
}
.guest-stay-card > div strong {
    align-self: center;
    justify-self: center;
    margin: 0;
    text-align: center;
}
.guest-stay-card > div small {
    align-self: end;
    text-align: center;
}
.guest-stay-card > div:nth-child(2) strong,
.guest-stay-card > div:nth-child(3) strong {
    font-size: 18px;
    line-height: 1;
}
@media (max-width: 520px) {
    .guest-stay-card > div:nth-child(2) strong,
    .guest-stay-card > div:nth-child(3) strong {
        font-size: 17px;
    }
}


/* Guest install-to-home tile */
.guest-install-top .guest-action-icon { font-size: 17px; }
.guest-install-top.active { background: linear-gradient(135deg, #ffffff, #f59e0b); color: #fff; }
.install-help { margin-top: 0; font-size: 12px; line-height: 1.3; }
.guest-hero-actions { grid-template-columns: repeat(4, 54px); }
@media (max-width: 520px) {
    .guest-hero-actions { grid-template-columns: repeat(4, 47px); gap: 4px; }
    .guest-action-tile,
    .guest-language-menu > summary { min-height: 48px; border-radius: 14px; }
    .guest-action-icon { width: 21px; height: 21px; font-size: 12px; }
    .guest-action-tile b,
    .guest-language-menu b { font-size: 9px; }
}
@media (max-width: 380px) {
    .guest-hero-actions { grid-template-columns: repeat(4, 43px); gap: 4px; }
}

.company-lookup-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; }
.company-lookup-row input { width: 100%; }
.company-lookup-button { white-space: nowrap; }
.company-lookup-button.is-loading { opacity: .7; cursor: wait; }
@media (max-width: 520px) { .company-lookup-row { grid-template-columns: 1fr; } .company-lookup-button { width: 100%; } }
