h1:focus {
    outline: none;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid #e50000;
}

.validation-message {
    color: #e50000;
}

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.darker-border-checkbox.form-check-input {
    border-color: #929292;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
    color: var(--bs-secondary-color);
    text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
    text-align: start;
}
/* ---- Kashmirly admin shared styles ---- */
:root {
  --ink: #1d3340;
  --ink-soft: #5d7180;
  --line: #e2eaef;
  --surface: #ffffff;
  --brand: #146c8c;
  --brand-deep: #0f556e;
  --warm: #e8703d;
  --ok-bg: #e3f4e8; --ok-ink: #1f7a43;
  --bad-bg: #fdecea; --bad-ink: #b3261e;
  --card-shadow: 0 1px 2px rgba(16, 42, 56, 0.06), 0 10px 28px -18px rgba(16, 42, 56, 0.25);
}
body { color: var(--ink); }
h1 { font-size: 1.45rem; font-weight: 700; letter-spacing: -0.01em; margin: 0 0 1.1rem; }
.page-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.2rem; gap: 1rem; }
.page-head h1 { margin: 0; }
.btn {
  --bs-btn-bg: var(--brand); --bs-btn-color: #fff; --bs-btn-border-color: var(--brand);
  --bs-btn-hover-bg: var(--brand-deep); --bs-btn-hover-color: #fff; --bs-btn-hover-border-color: var(--brand-deep);
  --bs-btn-active-bg: var(--brand-deep); --bs-btn-active-color: #fff; --bs-btn-active-border-color: var(--brand-deep);
  --bs-btn-disabled-bg: var(--brand); --bs-btn-disabled-color: #fff; --bs-btn-disabled-border-color: var(--brand);
  background: linear-gradient(135deg, #17708f, #10566e); color: #fff; border: none; border-radius: 8px;
  padding: 0.48rem 1rem; cursor: pointer; font-size: 0.9rem; font-weight: 600;
  box-shadow: 0 2px 8px -3px rgba(15, 85, 110, 0.5);
  transition: filter 0.12s ease, transform 0.12s ease, box-shadow 0.12s ease;
}
.btn:hover { background: linear-gradient(135deg, #17708f, #10566e); color: #fff; filter: brightness(1.08); }
.btn:active { transform: translateY(1px); }
.btn-secondary {
  --bs-btn-bg: #f1f5f7; --bs-btn-border-color: #f1f5f7;
  --bs-btn-hover-bg: #e2eaef; --bs-btn-hover-border-color: #e2eaef;
  --bs-btn-disabled-bg: #f1f5f7; --bs-btn-disabled-border-color: #f1f5f7;
  background: #f1f5f7; color: #33505f; box-shadow: none; font-weight: 600;
}
.btn-secondary:hover { background: #e2eaef; color: #22404f; filter: none; }
.btn-link { background: none; border: none; color: var(--brand); cursor: pointer; padding: 0; font-size: 0.88rem; font-weight: 500; }
.btn-link:hover { text-decoration: underline; }
.btn-link.danger { color: #b3261e; }
.alert-error { background: var(--bad-bg); color: var(--bad-ink); padding: 0.65rem 1rem; border-radius: 9px; border: 1px solid #f6cdc9; }
.alert-success { background: var(--ok-bg); color: var(--ok-ink); padding: 0.65rem 1rem; border-radius: 9px; border: 1px solid #bfe4cb; }
.data-table {
  width: 100%; border-collapse: separate; border-spacing: 0; background: var(--surface);
  border-radius: 12px; overflow: hidden; box-shadow: var(--card-shadow); border: 1px solid var(--line);
}
.data-table th {
  text-align: left; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--ink-soft); padding: 0.7rem 0.95rem; border-bottom: 1px solid var(--line);
  background: #f6f9fb; font-weight: 700;
}
.data-table td { padding: 0.62rem 0.95rem; border-bottom: 1px solid #eef3f6; font-size: 0.92rem; }
.data-table tbody tr { transition: background 0.1s ease; }
.data-table tbody tr:hover { background: #f4f9fb; }
.data-table tr:last-child td { border-bottom: none; }
.row-actions { display: flex; gap: 0.8rem; }
.edit-card {
  background: var(--surface); border: 1px solid var(--line); border-radius: 12px;
  padding: 1.15rem 1.35rem 1.25rem; margin-bottom: 1.2rem; box-shadow: var(--card-shadow);
}
.form-row { display: flex; flex-wrap: wrap; gap: 1rem; }
.field { display: flex; flex-direction: column; gap: 0.25rem; min-width: 140px; }
.field label { font-size: 0.78rem; font-weight: 600; color: #40586698; color: #405866; }
.field input, .field select, .field textarea {
  padding: 0.45rem 0.6rem; border: 1px solid #c9d5dc; border-radius: 8px; font-size: 0.92rem;
  transition: border-color 0.12s ease, box-shadow 0.12s ease; background: #fff;
}
.field input:focus, .field select:focus, .field textarea:focus {
  outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px rgba(20, 108, 140, 0.16);
}
.field.checkbox { justify-content: flex-end; }
.field.checkbox label { display: flex; align-items: center; gap: 0.4rem; font-weight: 500; }
.form-actions { margin-top: 1rem; display: flex; gap: 0.6rem; }
.stat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 1rem; }
.stat {
  background: var(--surface); border-radius: 12px; padding: 1.05rem 1.2rem 1rem; text-decoration: none;
  color: inherit; box-shadow: var(--card-shadow); border: 1px solid var(--line); border-top: 4px solid var(--brand);
  display: flex; flex-direction: column; gap: 0.15rem; transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.stat:hover { transform: translateY(-2px); box-shadow: 0 4px 6px rgba(16,42,56,0.07), 0 16px 32px -16px rgba(16,42,56,0.3); }
.stat strong { font-size: 1.75rem; font-weight: 750; color: #14303f; font-variant-numeric: tabular-nums; }
.stat span { color: var(--ink-soft); font-size: 0.84rem; font-weight: 500; }
.stat-grid .stat:nth-child(6n+1) { border-top-color: #e8703d; }
.stat-grid .stat:nth-child(6n+2) { border-top-color: #1b8aa5; }
.stat-grid .stat:nth-child(6n+3) { border-top-color: #3f9d63; }
.stat-grid .stat:nth-child(6n+4) { border-top-color: #7b6fd0; }
.stat-grid .stat:nth-child(6n+5) { border-top-color: #d99a2b; }
.stat-grid .stat:nth-child(6n+6) { border-top-color: #d05a6e; }
.validation-message { color: #b3261e; font-size: 0.8rem; }
.chip {
  border: 1px solid #c9d5dc; border-radius: 999px; padding: 0.27rem 0.8rem; font-size: 0.85rem;
  cursor: pointer; user-select: none; background: #fff; transition: all 0.12s ease;
}
.chip:hover { border-color: var(--brand); color: var(--brand); }
.chip-on { background: var(--warm); color: #fff; border-color: var(--warm); font-weight: 500; }
.chip-on:hover { border-color: var(--warm); color: #fff; filter: brightness(1.06); }
h3 { font-size: 1rem; font-weight: 650; margin: 1.1rem 0 0.5rem; }
.tag { font-size: 0.76rem; font-weight: 600; padding: 0.14rem 0.55rem; border-radius: 999px; background: #e8eef1; color: #44606f; }
.tag-red { background: var(--bad-bg); color: var(--bad-ink); }
.tag-green { background: var(--ok-bg); color: var(--ok-ink); }
.tag-blue { background: #e1eef5; color: #14607f; }
.pager { display: flex; align-items: center; gap: 1rem; margin-top: 1rem; font-size: 0.9rem; color: var(--ink-soft); }
select.filter { padding: 0.42rem 0.6rem; border: 1px solid #c9d5dc; border-radius: 8px; background: #fff; }
.reject-reason { font-size: 0.8rem; color: #b3261e; margin-top: 0.25rem; max-width: 220px; }
.gallery { margin-top: 1rem; }
.gallery-grid { display: flex; flex-wrap: wrap; gap: 0.9rem; margin-bottom: 0.7rem; }
.gallery-item { width: 150px; display: flex; flex-direction: column; gap: 0.3rem; }
.gallery-item img { width: 150px; height: 105px; object-fit: cover; border-radius: 10px; border: 1px solid var(--line); box-shadow: 0 3px 10px -6px rgba(16,42,56,0.4); }
.gallery-loading { width: 150px; height: 105px; border-radius: 10px; background: #eef1f3; display: flex; align-items: center; justify-content: center; color: #9aa7b0; }
.gallery-actions { display: flex; gap: 0.6rem; align-items: center; font-size: 0.8rem; }
.gallery-caption { width: 100%; font-size: 0.78rem; padding: 0.28rem 0.45rem; border: 1px solid var(--line); border-radius: 7px; }
.gallery-hint { font-size: 0.78rem; color: var(--ink-soft); margin-left: 0.5rem; }
.room-block { border: 1px solid var(--line); border-radius: 10px; padding: 0.7rem 0.9rem; margin-bottom: 0.8rem; background: #fcfdfe; }
.rates-row .field { min-width: 90px; }
.rates-row input { width: 90px; }
.muted { font-weight: 400; font-size: 0.8rem; color: var(--ink-soft); }


/* ── Tour builder ─────────────────────────────────────────────────────── */
.tour-builder { display: flex; flex-direction: column; gap: 1.1rem; }
.tb-topbar {
  position: sticky; top: 0; z-index: 20;
  display: flex; align-items: center; gap: 1rem;
  background: #fbfcfd; border: 1px solid #e4e9ec; border-radius: 10px;
  padding: 0.65rem 1rem; box-shadow: 0 2px 10px rgba(22, 48, 61, 0.06);
}
.tb-back { color: #51646e; text-decoration: none; font-size: 0.9rem; white-space: nowrap; }
.tb-back:hover { color: #16303d; }
.tb-topbar-title { display: flex; align-items: center; gap: 0.7rem; flex: 1; min-width: 0; }
.tb-topbar-title h1 { font-size: 1.15rem; margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tb-topbar-actions { display: flex; align-items: center; gap: 0.8rem; }
.tb-pill {
  font-size: 0.72rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase;
  padding: 0.18rem 0.6rem; border-radius: 99px; background: #eef1f3; color: #6b7d88; white-space: nowrap;
}
.tb-pill-on { background: #e0f0e3; color: #2d6a35; }
.tb-saved { color: #2d6a35; font-size: 0.9rem; white-space: nowrap; }

.tb-card {
  background: #fff; border: 1px solid #e4e9ec; border-radius: 10px; padding: 1.1rem 1.3rem 1.2rem;
}
.tb-card-plain { padding-bottom: 1rem; }
.tb-card-head { margin-bottom: 0.9rem; }
.tb-card-head h3 { margin: 0 0 0.15rem; font-size: 1.02rem; }
.tb-card-head p { margin: 0; color: #6b7d88; font-size: 0.85rem; }

.tb-day {
  background: #fff; border: 1px solid #e4e9ec; border-radius: 10px; overflow: hidden;
  padding: 0 1.3rem 1.1rem;
}
.tb-day-head {
  display: flex; align-items: center; gap: 0.6rem;
  background: linear-gradient(90deg, #f2f8fa, #f8fafb); border-bottom: 1px solid var(--line);
  margin: 0 -1.3rem 1rem; padding: 0.55rem 1.3rem;
}
.tb-day-badge {
  font-size: 0.7rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: #35586b;
}
.tb-day-num { width: 3.2rem !important; text-align: center; font-weight: 600; }
.tb-day-summary { flex: 1; color: #51646e; font-size: 0.9rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.tb-subhead {
  font-size: 0.72rem; font-weight: 700; letter-spacing: 0.09em; text-transform: uppercase; color: #35586b;
  border-bottom: 1px solid #e9eef1; padding-bottom: 0.25rem; margin: 1.1rem 0 0.6rem;
}
.tb-line { display: flex; flex-wrap: wrap; gap: 0.55rem 0.9rem; align-items: flex-end; }
.tb-line + .tb-line { margin-top: 0.55rem; }
.tb-line .field { display: flex; flex-direction: column; gap: 0.22rem; margin: 0; }
.tb-line .field.checkbox { align-self: flex-end; padding-bottom: 0.35rem; display: flex; flex-direction: row; gap: 0.6rem; align-items: center; }
.f-xs { width: 88px; }  .f-sm { width: 140px; }  .f-md { width: 200px; }
.f-lg { width: 250px; } .f-xl { width: 320px; }  .f-grow { flex: 1 1 220px; min-width: 180px; }

.tb-item { border-left: 3px solid #e4e9ec; padding: 0.35rem 0 0.35rem 0.8rem; margin: 0.35rem 0; border-radius: 2px; }
.tb-item:hover { border-left-color: #9fbecb; }

.tb-rate {
  display: inline-block; background: #eef4f6; color: #35586b; border-radius: 6px;
  padding: 0.32rem 0.55rem; font-size: 0.8rem; line-height: 1.35; max-width: 230px;
  font-variant-numeric: tabular-nums;
}
.tb-rate-dim { background: #f2f4f5; color: #93a1a9; }
.tb-add-rate {
  background: #fdf3ef; color: #a03325; border: 1px dashed #dba392; border-radius: 6px;
  padding: 0.3rem 0.55rem; font-size: 0.8rem; cursor: pointer; white-space: nowrap;
}
.tb-add-rate:hover { background: #fae7e0; }

.tb-add {
  background: none; border: 1px dashed #b9c8cf; color: #35586b; border-radius: 7px;
  padding: 0.35rem 0.9rem; font-size: 0.85rem; cursor: pointer; margin-top: 0.5rem;
}
.tb-add:hover { border-color: #35586b; background: #f3f7f9; }

.tb-remove {
  background: none; border: none; color: #b9c8cf; font-size: 1.25rem; line-height: 1;
  cursor: pointer; padding: 0.3rem 0.45rem; align-self: flex-end; border-radius: 6px;
}
.tb-remove:hover { color: #a03325; background: #fdf3ef; }

.tb-empty { color: #93a1a9; font-size: 0.85rem; margin: 0.2rem 0 0.4rem; font-style: italic; }
.tb-warn { color: #8a5a13; background: #fdf3e2; border: 1px solid #f0dcb4; border-radius: 6px; font-size: 0.85rem; margin: 0.2rem 0 0.4rem; padding: 0.35rem 0.6rem; }
.tb-warn .btn-link { margin-left: 0.4rem; }

.tb-inline-form {
  background: #f6f9fa; border: 1px solid #dfe8ec; border-radius: 8px;
  padding: 0.7rem 1rem 0.9rem; margin: 0.4rem 0 0.6rem 0.8rem;
}
.tb-inline-form-title { font-size: 0.83rem; font-weight: 600; color: #35586b; margin-bottom: 0.5rem; }

.tb-twocol { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 1rem; }
.tb-panel { background: #fbfcfd; border: 1px solid #e9eef1; border-radius: 8px; padding: 0.8rem 1rem 1rem; }
.tb-panel .tb-subhead { margin-top: 0; }
.tb-chiprow { display: flex; flex-wrap: wrap; gap: 0.45rem; padding: 0.2rem 0; }
.tb-regions { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; min-height: 2.1rem; }
.tb-region { display: inline-flex; align-items: center; gap: 0.35rem; padding-right: 0.45rem; cursor: default; }
.tb-region-x { border: 0; background: rgba(255,255,255,0.22); color: #fff; border-radius: 999px; width: 1.15rem; height: 1.15rem; line-height: 1; font-size: 0.7rem; cursor: pointer; padding: 0; }
.tb-region-x:hover { background: rgba(255,255,255,0.4); }
.tb-region-add { width: 200px; }
.tb-tags { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; border: 1px solid #c9d5dc; border-radius: 8px; padding: 0.3rem 0.45rem; background: #fff; min-height: 2.3rem; }
.tb-tags:focus-within { border-color: var(--brand); }
.tb-tag { display: inline-flex; align-items: center; gap: 0.3rem; background: #eef4f7; color: #24505f; border-radius: 999px; padding: 0.18rem 0.3rem 0.18rem 0.65rem; font-size: 0.82rem; font-weight: 500; }
.tb-tag-x { border: 0; background: rgba(36,80,95,0.12); color: #24505f; border-radius: 999px; width: 1.1rem; height: 1.1rem; line-height: 1; font-size: 0.65rem; cursor: pointer; padding: 0; }
.tb-tag-x:hover { background: rgba(36,80,95,0.28); }
.tb-tag-input { border: 0; outline: 0; flex: 1 1 10rem; min-width: 8rem; font: inherit; font-size: 0.88rem; padding: 0.2rem 0.2rem; background: transparent; }
.tour-tagbar { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; margin: 0 0 0.8rem; }
.tour-tagbar .chip em { font-style: normal; opacity: 0.7; margin-left: 0.25rem; font-size: 0.78rem; }
.tour-tags { display: inline-flex; flex-wrap: wrap; gap: 0.25rem; margin-left: 0.5rem; vertical-align: middle; }
.tour-tag { border: 1px solid #d5e2e8; background: #eef4f7; color: #24505f; border-radius: 999px; padding: 0.05rem 0.5rem; font-size: 0.72rem; font-weight: 600; cursor: pointer; }
.tour-tag:hover { border-color: var(--brand); color: var(--brand); }
.tour-glance-cell { font-size: 0.82rem; color: #24505f; max-width: 16rem; }
.tour-glance-cell .tour-tag { cursor: default; }
.tour-glance-cell .tour-tag em { font-style: normal; font-weight: 500; opacity: 0.75; margin-left: 0.2rem; }
.tour-tag-on { background: var(--warm); border-color: var(--warm); color: #fff; }
.tour-glance-cell a.tour-tag { text-decoration: none; cursor: pointer; white-space: nowrap; }
.tour-dep-open { border-color: #bfe3c9; background: #eaf7ee; color: #1f6b3a; }
.tour-dep-shut { border-style: dashed; opacity: 0.7; }

.tb-savebar {
  position: sticky; bottom: 0; z-index: 20;
  display: flex; align-items: center; justify-content: flex-end; gap: 1rem;
  background: #fbfcfd; border: 1px solid #e4e9ec; border-radius: 10px;
  padding: 0.65rem 1rem; box-shadow: 0 -2px 10px rgba(22, 48, 61, 0.06);
}


/* Bootstrap interplay + collapsible days */
.tour-builder .form-control-sm, .tour-builder .form-select-sm { font-size: 0.9rem; }
.tb-chevron {
  background: none; border: none; color: #35586b; cursor: pointer;
  font-size: 0.95rem; padding: 0.15rem 0.35rem; border-radius: 6px;
  transition: transform 0.15s ease;
}
.tb-chevron:hover { background: #e6eef2; }
.tb-chevron-closed { transform: rotate(-90deg); }
.tb-day-body.tb-collapsed { display: none; }
.tb-day-counts { display: flex; gap: 0.35rem; }
.tb-day-counts .badge { font-weight: 500; border: 1px solid #e4e9ec; }
@media (prefers-reduced-motion: reduce) { .tb-chevron { transition: none; } }


/* ── Hotel rate grid ─────────────────────────────────────────────────── */
.rate-line { border: 1px solid var(--line); border-radius: 12px; padding: 0.9rem 1.1rem 1rem; margin-bottom: 1rem; background: #fcfdfe; }
.rate-line-head { display: flex; flex-wrap: wrap; gap: 0.9rem; align-items: flex-end; margin-bottom: 0.8rem; }
.rate-line-head .field { margin: 0; }
.rate-grid { border-collapse: collapse; }
.rate-grid th, .rate-grid td { padding: 0.3rem 0.45rem; }
.rate-grid thead th {
  font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--ink-soft); text-align: left; padding-bottom: 0.45rem;
}
.rate-grid thead th span { display: block; font-weight: 500; text-transform: none; letter-spacing: 0; color: #93a5b0; font-size: 0.7rem; }
.rate-grid tbody th {
  font-size: 0.84rem; font-weight: 600; color: #33505f; text-align: left; padding-right: 1rem; white-space: nowrap;
}
.rate-grid tbody th span { display: block; font-weight: 400; color: #93a5b0; font-size: 0.72rem; }
.rate-grid td input { width: 120px; padding: 0.35rem 0.5rem; border: 1px solid #c9d5dc; border-radius: 7px; font-size: 0.9rem; text-align: right; font-variant-numeric: tabular-nums; }
.rate-grid td input:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px rgba(20, 108, 140, 0.16); }
.rate-grid-room th, .rate-grid-room td { border-bottom: 1px solid var(--line); padding-bottom: 0.55rem; }
.rate-grid-room + tr th, .rate-grid-room + tr td { padding-top: 0.55rem; }

/* ── SearchSelect (type-to-filter dropdowns) ─────────────────────────── */
.search-select { position: relative; }
.search-select-input {
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23667382'%3E%3Cpath d='M8 11 3 6h10z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.55rem center;
  background-size: 12px;
  padding-right: 1.7rem;
}
.search-select-input.open { cursor: text; }
.search-select-menu {
  position: absolute;
  z-index: 40;
  top: calc(100% + 2px);
  left: 0;
  min-width: 100%;
  max-width: 30rem;
  max-height: 16rem;
  overflow-y: auto;
  background: #fff;
  border: 1px solid var(--border, #d6dde4);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(16, 42, 58, 0.14);
  padding: 0.25rem;
}
.search-select-option {
  padding: 0.32rem 0.6rem;
  border-radius: 5px;
  font-size: 0.85rem;
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.search-select-option:hover,
.search-select-option.active { background: var(--brand-50, #e8f2f6); color: var(--brand, #146c8c); }
.search-select-option.is-clear { color: #8b97a3; font-style: italic; }
.search-select-empty { padding: 0.4rem 0.6rem; font-size: 0.85rem; color: #8b97a3; }

/* ── Quote sheet (departure pricing) ─────────────────────────────────── */
.qs { margin-top: 0.6rem; }
.qs-meta {
  display: flex; flex-wrap: wrap; gap: 0.4rem 1.4rem;
  font-size: 0.82rem; color: #64748b; margin-bottom: 0.8rem;
}
.qs-meta strong { color: #1f2f3a; font-weight: 600; }
.qs-cards {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(165px, 1fr));
  gap: 0.7rem; margin-bottom: 1rem;
}
.qs-card {
  background: #fff; border: 1px solid #dde5ea; border-radius: 10px;
  padding: 0.7rem 0.9rem 0.65rem;
}
.qs-card.primary { border-color: var(--brand, #146c8c); box-shadow: inset 0 3px 0 var(--brand, #146c8c); }
.qs-cat {
  font-size: 0.68rem; font-weight: 700; letter-spacing: 0.06em;
  text-transform: uppercase; color: #64748b; margin-bottom: 0.25rem;
}
.qs-price { font-size: 1.35rem; font-weight: 700; color: #16323f; font-variant-numeric: tabular-nums; line-height: 1.2; }
.qs-price small { font-size: 0.72rem; font-weight: 600; color: #64748b; margin-left: 0.2rem; }
.qs-sub { font-size: 0.78rem; color: #64748b; margin-top: 0.2rem; font-variant-numeric: tabular-nums; }
.qs-table-wrap { overflow-x: auto; }
.qs-table { border-collapse: collapse; width: 100%; font-size: 0.85rem; background: #fff; }
.qs-table th, .qs-table td { padding: 0.34rem 0.7rem; border-bottom: 1px solid #edf1f4; }
.qs-table thead th {
  font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em;
  color: #64748b; text-align: right; border-bottom: 2px solid #dde5ea;
}
.qs-table thead th:first-child { text-align: left; }
.qs-table tbody th {
  font-weight: 500; text-align: left; color: #33465366; color: #334653; white-space: nowrap;
}
.qs-table tbody th span { color: #8b98a4; font-size: 0.78rem; font-weight: 400; }
.qs-table td { text-align: right; font-variant-numeric: tabular-nums; color: #334653; }
.qs-table tr.qs-total th, .qs-table tr.qs-total td {
  font-weight: 700; color: #16323f; border-top: 1.5px solid #cfd9e0; background: #f6f9fa;
}
.qs-table tr.qs-b2b th, .qs-table tr.qs-b2b td { background: #eef5f7; color: #0f4c60; font-weight: 700; }
.qs-table tr.qs-b2c th, .qs-table tr.qs-b2c td { background: #fdf3ec; color: #8a4a1d; font-weight: 700; }
.qs-section td, .qs-section th { padding-top: 0.7rem !important; border-bottom: none !important; }
.qs-section th {
  font-size: 0.7rem !important; font-weight: 700 !important; text-transform: uppercase;
  letter-spacing: 0.06em; color: #8b98a4 !important;
}
.qs-audit { margin-top: 1rem; }
.qs-audit-title { font-size: 0.8rem; font-weight: 700; color: #334653; margin-bottom: 0.3rem; }
.qs-audit table { border-collapse: collapse; width: 100%; font-size: 0.8rem; background: #fff; }
.qs-audit th, .qs-audit td { padding: 0.28rem 0.6rem; border-bottom: 1px solid #edf1f4; text-align: left; }
.qs-audit thead th { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.05em; color: #64748b; }
.qs-audit td.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.qs-audit td.dim { color: #8b98a4; }

/* Group totals strip on the quote sheet */
.qs-strip {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 0.7rem; margin-bottom: 0.7rem;
}
.qs-stat {
  background: #f4f8fa; border: 1px solid #dde5ea; border-radius: 10px;
  padding: 0.6rem 0.9rem 0.55rem;
}
.qs-stat.total { background: var(--brand, #146c8c); border-color: var(--brand, #146c8c); }
.qs-stat.total .qs-stat-label, .qs-stat.total .qs-stat-value, .qs-stat.total .qs-stat-sub { color: #fff; }
.qs-stat.total .qs-stat-sub { opacity: 0.75; }
.qs-stat-label {
  font-size: 0.66rem; font-weight: 700; letter-spacing: 0.07em;
  text-transform: uppercase; color: #64748b;
}
.qs-stat-value { font-size: 1.2rem; font-weight: 700; color: #16323f; font-variant-numeric: tabular-nums; margin-top: 0.1rem; }
.qs-stat-sub { font-size: 0.72rem; color: #64748b; margin-top: 0.1rem; }

/* Clickable component cards + day-wise detail */
.qs-stat.clickable { cursor: pointer; transition: border-color 0.12s, box-shadow 0.12s; }
.qs-stat.clickable:hover { border-color: var(--brand, #146c8c); }
.qs-stat.clickable.open { border-color: var(--brand, #146c8c); box-shadow: inset 0 3px 0 var(--brand, #146c8c); background: #fff; }
.qs-detail { margin: -0.1rem 0 0.9rem; }
.qs-detail table { border-collapse: collapse; width: 100%; font-size: 0.83rem; background: #fff; border: 1px solid #dde5ea; border-radius: 10px; overflow: hidden; }
.qs-detail th, .qs-detail td { padding: 0.35rem 0.7rem; border-bottom: 1px solid #edf1f4; text-align: left; }
.qs-detail thead th { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.05em; color: #64748b; }
.qs-detail thead th.num, .qs-detail td.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.qs-detail td.dim { color: #8b98a4; }
.qs-detail tr.qs-detail-total td { font-weight: 700; color: #16323f; background: #f6f9fa; border-top: 1.5px solid #cfd9e0; }

/* Click-to-reveal technical ids on quote rows */
.qs-row-click { cursor: pointer; }
.qs-row-click:hover td { background: #f6f9fa; }
.qs-tech td {
  font-family: ui-monospace, "SF Mono", Consolas, monospace;
  font-size: 0.72rem; color: #8b98a4; background: #fafcfd;
  word-break: break-all;
}

/* Missing-rate rows in the component panels */
.qs-missing { color: var(--bad-ink, #b3261e); font-size: 0.83rem; }
.qs-fix-link {
  color: var(--brand, #146c8c); font-weight: 600; text-decoration: none;
  white-space: nowrap;
}
.qs-fix-link:hover { text-decoration: underline; }

/* Inline add-rate form row */
.qs-ratef td { background: #f4f8fa; border-bottom: 1px solid #dde5ea; }
button.qs-fix-link { background: none; border: none; padding: 0; cursor: pointer; font: inherit; }

/* Per-line override pencil + editor */
.qs-ov-pencil {
  background: none; border: none; cursor: pointer; padding: 0 0.15rem;
  color: #9fb0bb; font-size: 0.85rem; visibility: hidden;
}
tr:hover .qs-ov-pencil { visibility: visible; }
.qs-ov-pencil:hover { color: var(--brand, #146c8c); }
.qs-ov-input { width: 7rem; display: inline-block; }

/* ── Small screens ───────────────────────────────────────────────────── */
/* The shell (drawer nav, topbar) is handled in MainLayout.razor.css; this
   block makes the shared page furniture — tables, forms, cards — usable at
   phone width. Wide tables scroll inside themselves rather than pushing the
   page sideways. */
@media (max-width: 900px) {
  h1 { font-size: 1.25rem; }
  .page-head { flex-wrap: wrap; align-items: flex-start; gap: 0.6rem; }

  .data-table,
  .rate-grid {
    display: block;
    width: 100%;
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
  }

  .edit-card { padding: 0.9rem 0.95rem 1rem; }
  .form-row { gap: 0.75rem; }
  .form-row > .field { flex: 1 1 100%; min-width: 0; }
  .field input, .field select, .field textarea { width: 100%; max-width: 100%; }
  .form-actions { flex-wrap: wrap; }
  .pager { flex-wrap: wrap; gap: 0.7rem; }
  .reject-reason { max-width: none; }

  .stat-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 0.7rem; }
  .stat strong { font-size: 1.5rem; }

  /* Tour builder: sticky bars sit below the fixed topbar, wide fields relax. */
  .tb-topbar { top: 52px; flex-wrap: wrap; gap: 0.5rem 0.8rem; padding: 0.55rem 0.8rem; }
  .tb-topbar-title h1 { font-size: 1.05rem; }
  .tb-savebar { flex-wrap: wrap; justify-content: flex-start; gap: 0.6rem; padding: 0.6rem 0.8rem; }
  .tb-card { padding: 0.9rem 1rem 1rem; }
  .tb-day { padding: 0 0.9rem 1rem; }
  .tb-day-head { margin: 0 -0.9rem 0.9rem; padding: 0.55rem 0.9rem; }
  .tb-inline-form { margin-left: 0; }
  .f-md, .f-lg, .f-xl { width: 100%; }
  .f-grow { flex-basis: 100%; }
  .tb-line .field input, .tb-line .field select { width: 100%; }
  .tb-rate { max-width: 100%; }

  .qs-cards, .qs-strip { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
}

/* ── Partner storefront (white label) ────────────────────────────────── */
.brand-admin { display: flex; flex-wrap: wrap; gap: 1.6rem; padding: 0.5rem 0; }
.brand-admin-facts { display: flex; flex-direction: column; gap: 0.25rem; font-size: 0.9rem; min-width: 15rem; }
.brand-admin-facts .tag { margin-left: 0.4rem; }
.brand-admin-grants { display: flex; flex-direction: column; gap: 0.45rem; font-size: 0.88rem; }
.brand-admin-grants label { display: flex; align-items: center; gap: 0.45rem; }
.brand-admin-grants .btn { align-self: flex-start; margin-top: 0.3rem; }
.brand-admin-sub { display: flex; flex-direction: column; gap: 0.3rem; font-size: 0.88rem; min-width: 20rem; }
.brand-admin-sub-row { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; margin-top: 0.3rem; }
.brand-admin-sub-row select, .brand-admin-sub-row input { padding: 0.4rem 0.55rem; border: 1px solid #c9d5dc; border-radius: 8px; background: #fff; }
.brand-admin-sub-row input[placeholder] { flex: 1; min-width: 8rem; }

/* ── Tours split by departure type ───────────────────────────────────── */
.tour-group { margin-bottom: 2.4rem; }
.tour-group:last-child { margin-bottom: 0; }
.tour-group-head {
  display: flex; align-items: baseline; flex-wrap: wrap; gap: 0.6rem;
  margin: 0 0 0.7rem; padding: 0.15rem 0 0.15rem 0.85rem; border-left: 4px solid var(--brand);
}
.tour-group-head h2 { margin: 0; font-size: 1.08rem; letter-spacing: -0.01em; }
.tour-group-count {
  font-size: 0.76rem; font-weight: 700; padding: 0.1rem 0.55rem; border-radius: 999px;
  background: #e8eef1; color: #44606f;
}
.tour-group-note { color: var(--ink-soft); font-size: 0.85rem; }
.tour-group-empty { color: var(--ink-soft); font-size: 0.9rem; font-style: italic; margin: 0 0 0 0.85rem; }
.tour-group-individual .tour-group-head { border-left-color: var(--warm); }
.tour-group-individual .tour-group-count { background: #fbe9e0; color: #a2512a; }
.tour-group-shared .tour-group-head { border-left-color: var(--brand); }
.tour-group-shared .tour-group-count { background: #e1eef5; color: #14607f; }
.tour-group-custom .tour-group-head { border-left-color: #6b8f3a; }
.tour-group-custom .tour-group-count { background: #eaf2df; color: #4d6b26; }

/* ── Trip at a glance: places, overnights and hotels under a tour row ── */
.tour-glance-toggle {
  background: none; border: 0; padding: 0; font: inherit; color: inherit; cursor: pointer;
  display: inline-flex; align-items: center; gap: 0.35rem; text-align: left;
}
.tour-glance-toggle:hover { color: var(--brand); }
.tour-glance-chevron { color: var(--ink-soft); font-size: 0.8rem; width: 0.8rem; display: inline-block; }
.tour-row-open td { background: #f7fafb; border-bottom-color: transparent; }
.tour-glance-row td { background: #f7fafb; padding: 0.4rem 1.2rem 1rem 2.1rem; }
.tour-glance { display: grid; grid-template-columns: 1.1fr 1.6fr 1.1fr; gap: 1.4rem; }
.tour-glance-col h4 { margin: 0 0 0.45rem; font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-soft); }
.tour-glance-col h4 span { margin-left: 0.4rem; font-weight: 600; text-transform: none; letter-spacing: 0; color: #44606f; background: #e8eef1; border-radius: 999px; padding: 0.05rem 0.5rem; }
.tour-glance-chips { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.tour-glance-chip { background: #fff; border: 1px solid #d5e0e6; border-radius: 999px; padding: 0.15rem 0.6rem; font-size: 0.84rem; }
.tour-glance-stops, .tour-glance-hotels, .tour-glance-days { margin: 0; padding: 0; list-style: none; }
.tour-glance-stops li { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0.5rem; font-size: 0.88rem; padding: 0.2rem 0; }
.tour-glance-nights { font-size: 0.76rem; font-weight: 700; color: #14607f; background: #e1eef5; border-radius: 999px; padding: 0.05rem 0.45rem; }
.tour-glance-hotel { color: #3b4f5a; }
.tour-glance-hotel small { color: var(--ink-soft); }
.tour-glance-hotels li { font-size: 0.88rem; padding: 0.15rem 0; }
.tour-glance-days { display: flex; flex-wrap: wrap; gap: 0.3rem 1rem; margin-top: 0.9rem; padding-top: 0.7rem; border-top: 1px dashed #d5e0e6; }
.tour-glance-days li { font-size: 0.82rem; color: #51646e; }
.tour-glance-daynum { font-weight: 700; color: var(--brand); margin-right: 0.35rem; font-size: 0.76rem; }
.tour-glance-empty { margin: 0; color: var(--ink-soft); font-size: 0.86rem; font-style: italic; }
@media (max-width: 900px) { .tour-glance { grid-template-columns: 1fr; } }

/* ── Compare tours: pick rows, then a day-by-day table side by side ─── */
.tour-pick-col { width: 1.6rem; padding-right: 0 !important; }
.tour-pick { width: 1rem; height: 1rem; accent-color: var(--brand); cursor: pointer; vertical-align: middle; }
.tour-compare-bar {
  position: sticky; bottom: 1rem; z-index: 20; margin-top: 1.4rem;
  display: flex; align-items: center; gap: 0.9rem; width: fit-content; margin-left: auto; margin-right: auto;
  background: #0e2029; color: #fff; border-radius: 999px; padding: 0.55rem 0.7rem 0.55rem 1.2rem;
  box-shadow: 0 10px 30px rgba(14, 32, 41, 0.35); font-size: 0.9rem;
}
.tour-compare-bar .btn-link { color: #cfe0e8; }
.tour-compare-bar .btn[disabled] { opacity: 0.55; cursor: default; }
.tour-compare-backdrop { position: fixed; inset: 0; background: rgba(14, 32, 41, 0.45); z-index: 40; }
.tour-compare {
  position: fixed; inset: 3vh 3vw; z-index: 41; background: #fff; border-radius: 16px;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.3); display: flex; flex-direction: column; overflow: hidden;
}
.tour-compare-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.4rem; border-bottom: 1px solid #e6edf1; }
.tour-compare-head h2 { margin: 0; font-size: 1.15rem; display: flex; align-items: center; gap: 0.6rem; }
.tour-compare-scroll { overflow: auto; flex: 1; padding: 0 1.4rem 1.4rem; }
.tour-compare-table { border-collapse: separate; border-spacing: 0; width: 100%; min-width: 40rem; font-size: 0.9rem; }
.tour-compare-table th, .tour-compare-table td { padding: 0.65rem 0.9rem; border-bottom: 1px solid #eef3f6; vertical-align: top; text-align: left; }
.tour-compare-table thead th { position: sticky; top: 0; background: #fff; z-index: 2; border-bottom: 2px solid #d5e0e6; padding-top: 1rem; }
.tour-compare-table thead th a { font-weight: 700; color: var(--brand); text-decoration: none; font-size: 0.98rem; }
.tour-compare-table thead th small { display: block; color: var(--ink-soft); font-weight: 500; margin-top: 0.15rem; }
.tour-compare-table tbody th { position: sticky; left: 0; background: #fff; z-index: 1; white-space: nowrap; color: #44606f; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.05em; width: 6rem; }
.tour-compare-table td { min-width: 15rem; }
.tour-compare-fact td { color: #3b4f5a; background: #f7fafb; }
.tour-compare-fact th { background: #f7fafb; }
.tour-compare-route { display: block; font-weight: 600; color: #0e2029; }
.tour-compare-table td small { display: block; color: var(--ink-soft); margin-top: 0.15rem; }
.tour-compare-none { color: #c3ced5; text-align: center; }

/* ── Partner details + temporary password ────────────────────────────── */
.agent-edit { display: flex; flex-direction: column; gap: 0.5rem; padding: 0.5rem 0; font-size: 0.9rem; }
.agent-edit-row { display: flex; flex-wrap: wrap; gap: 0.7rem; align-items: flex-end; }
.agent-edit label { display: flex; flex-direction: column; gap: 0.2rem; font-weight: 600; }
.agent-edit input { padding: 0.4rem 0.55rem; border: 1px solid #c9d5dc; border-radius: 8px; background: #fff; font-weight: 400; min-width: 14rem; }
.agent-edit-notes { flex: 1; }
.agent-perm { flex-direction: row !important; align-items: center; gap: 0.4rem !important; }
.agent-perm-off { opacity: 0.45; }
.agent-edit-notes input { width: 100%; }
.temp-password { font-size: 1.05rem; letter-spacing: 0.06em; background: #fff; border: 1px solid #c9d5dc; border-radius: 8px; padding: 0.35rem 0.7rem; user-select: all; }

/* The type decides which rules apply, so it reads on the row itself. */
.bk-tour { display: flex; align-items: center; flex-wrap: wrap; gap: 0.45rem; }
.bk-kind {
  font-size: 0.68rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em;
  padding: 0.12rem 0.45rem; border-radius: 999px; white-space: nowrap;
  background: #e1eef5; color: #14607f;
}
.bk-kind-2 { background: #fbe9e0; color: #a2512a; }
.bk-kind-3 { background: #eaf2df; color: #4d6b26; }
.bk-filters { display: flex; flex-wrap: wrap; gap: 0.9rem; align-items: flex-end; margin: 0 0 1rem; }
.bk-filters label { display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.76rem;
  text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-soft); font-weight: 700; }
.bk-filters select { padding: 0.4rem 0.6rem; border: 1px solid #c9d5dc; border-radius: 8px;
  background: #fff; font-weight: 400; text-transform: none; letter-spacing: 0; font-size: 0.9rem; }
.bk-filter-count { font-size: 0.83rem; color: var(--ink-soft); padding-bottom: 0.5rem; }

/* ── Booking detail: the confirm decision, on one screen ─────────────── */
.bkd-cell { background: #f6f9fb; padding: 1rem 1.1rem !important; }
.bkd { display: flex; flex-direction: column; gap: 1rem; }
.bkd-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(270px, 1fr)); gap: 1rem; }
.bkd-block {
  background: var(--surface); border: 1px solid var(--line); border-radius: 10px;
  padding: 0.85rem 1rem 0.95rem;
}
.bkd-block h4 {
  margin: 0 0 0.55rem; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.07em;
  color: var(--ink-soft); font-weight: 700;
}
.bkd-block p {
  display: flex; justify-content: space-between; gap: 1rem; margin: 0.22rem 0; font-size: 0.86rem;
}
.bkd-block p > span:first-child { color: var(--ink-soft); flex: 0 0 auto; }
.bkd-block p > span:last-child { text-align: right; font-variant-numeric: tabular-nums; }
.bkd-strong { font-weight: 700; border-top: 1px solid var(--line); padding-top: 0.35rem; margin-top: 0.35rem !important; }
.bkd-sub { font-size: 0.78rem !important; color: var(--ink-soft); }
.bkd-due span:last-child { color: var(--bad-ink); font-weight: 700; }
.bkd-table { box-shadow: none; margin-top: 0.2rem; }
.bkd-table th.n, .bkd-table td.n { text-align: right; font-variant-numeric: tabular-nums; }
.bkd-table td { font-size: 0.85rem; }
.bkd-margin { color: var(--ok-ink); font-weight: 650; }
.bkd-total-row td { border-top: 2px solid var(--line); background: #f8fbfc; }

.bkd-note { display: block !important; font-size: 0.78rem; color: var(--ink-soft); line-height: 1.45;
  margin: 0 0 0.7rem !important; max-width: 90ch; }

/* Component totals, as four figures that can be read at a glance. */
.bkd-comp { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-bottom: 0.9rem; }
.bkd-comp-item {
  display: flex; flex-direction: column; gap: 0.1rem; padding: 0.5rem 0.85rem;
  border-radius: 9px; background: #f2f6f8; min-width: 9rem;
}
.bkd-comp-item em { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--ink-soft); font-style: normal; font-weight: 700; }
.bkd-comp-item strong { font-size: 0.95rem; font-variant-numeric: tabular-nums; }
.bkd-comp-ride { background: #fdf1e8; }
.bkd-comp-stay { background: #edf4fa; }
.bkd-comp-extra { background: #ecf6ee; }

/* One block per day, so a cost can be traced to the day it is incurred. */
.bkd-day { border: 1px solid var(--line); border-radius: 9px; margin-bottom: 0.6rem; overflow: hidden; }
.bkd-day-head {
  display: flex; justify-content: space-between; align-items: baseline; gap: 1rem;
  padding: 0.45rem 0.75rem; background: #f6f9fb; border-bottom: 1px solid var(--line);
}
.bkd-day-num { font-size: 0.76rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink); }
.bkd-day-total { font-size: 0.86rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.bkd-line {
  display: grid; grid-template-columns: 6.5rem minmax(0, 1fr) 6rem 7rem;
  gap: 0.6rem; align-items: baseline; padding: 0.4rem 0.75rem;
  border-bottom: 1px solid #f2f6f8; font-size: 0.84rem;
}
.bkd-line:last-child { border-bottom: none; }
.bkd-line-kind {
  font-size: 0.68rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em;
  padding: 0.12rem 0.45rem; border-radius: 999px; text-align: center; white-space: nowrap;
}
.bkd-line-ride .bkd-line-kind { background: #fdf1e8; color: #8a4f22; }
.bkd-line-stay .bkd-line-kind { background: #edf4fa; color: #25526f; }
.bkd-line-extra .bkd-line-kind { background: #ecf6ee; color: #2f6b3a; }
.bkd-line-other .bkd-line-kind { background: #fdecea; color: #b3261e; }
.bkd-line-name { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.bkd-line-name em { font-size: 0.75rem; color: var(--ink-soft); font-style: normal; overflow-wrap: anywhere; }
.bkd-line-applies { font-size: 0.74rem; color: var(--ink-soft); text-align: right; }
.bkd-line-amount { text-align: right; font-variant-numeric: tabular-nums; font-weight: 650; }

@media (max-width: 900px) {
  .bkd-line { grid-template-columns: 1fr auto; }
  .bkd-line-kind { grid-column: 1; justify-self: start; }
  .bkd-line-amount { grid-column: 2; grid-row: 1; }
  .bkd-line-name, .bkd-line-applies { grid-column: 1 / -1; text-align: left; }
}

/* Margin is the number this screen exists for. */
.bkd-profit { border-color: #cfe0d6; background: #fbfdfc; }
.bkd-net {
  border-top: 2px solid #cfe0d6; margin-top: 0.45rem !important; padding-top: 0.45rem;
  font-weight: 700; font-size: 0.98rem !important;
}
.bkd-net span:last-child { color: var(--ok-ink); }
.bkd-net em { display: block; font-size: 0.74rem; font-weight: 500; font-style: normal; color: var(--ink-soft); }
.bkd-caveat {
  display: block !important; font-size: 0.78rem; color: #8a5a13; background: #fdf3e2;
  border-radius: 6px; padding: 0.35rem 0.5rem; margin-top: 0.4rem !important; line-height: 1.4;
}
.bkd-caveat span:first-child { color: inherit !important; }

/* ── Service status ──────────────────────────────────────────────────── */
.svc-warn-banner { background: #fdf3e2; color: #8a5a13; padding: 0.65rem 1rem; border-radius: 9px; border: 1px solid #f0dcb4; }
.svc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1rem; }
.svc-card { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 0.9rem 1.1rem 1rem; border-top: 3px solid #c9d5dc; box-shadow: var(--card-shadow); }
.svc-ok { border-top-color: #3f9d63; }
.svc-warning { border-top-color: #d99a2b; }
.svc-failed { border-top-color: #d05a6e; }
.svc-notconfigured { border-top-color: #b9c6ce; }
.svc-head { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.4rem; }
.svc-dot { width: 9px; height: 9px; border-radius: 50%; background: #b9c6ce; flex: 0 0 auto; }
.svc-ok .svc-dot { background: #3f9d63; }
.svc-warning .svc-dot { background: #d99a2b; }
.svc-failed .svc-dot { background: #d05a6e; }
.svc-ms { margin-left: auto; font-size: 0.75rem; color: var(--ink-soft); font-variant-numeric: tabular-nums; }
.svc-detail { margin: 0 0 0.6rem; font-size: 0.88rem; color: #33424c; }
.svc-facts { display: grid; grid-template-columns: auto 1fr; gap: 0.15rem 0.7rem; margin: 0; font-size: 0.82rem; }
.svc-facts dt { color: var(--ink-soft); }
.svc-facts dd { margin: 0; color: #22404f; word-break: break-word; }

/* ── Email delivery pipeline ─────────────────────────────────────────── */
.pipe { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.pipe-step { flex: 1 1 150px; display: flex; flex-direction: column; gap: 0.15rem; background: #f6f9fb; border: 1px solid var(--line); border-radius: 10px; padding: 0.7rem 0.85rem; }
.pipe-dot { width: 10px; height: 10px; border-radius: 50%; background: #c9d5dc; }
.pipe-done { background: #eef8f1; border-color: #cfe6d6; }
.pipe-done .pipe-dot { background: #3f9d63; }
.pipe-bad { background: var(--bad-bg); border-color: #f6cdc9; }
.pipe-bad .pipe-dot { background: #d05a6e; }
.pipe-wait .pipe-dot { background: #d99a2b; }
.pipe-step strong { font-size: 0.9rem; color: #22404f; }
.pipe-when { font-size: 0.78rem; color: var(--ink-soft); font-variant-numeric: tabular-nums; }

/* Payments are not real — say so where nobody can miss it. */
.mode-banner {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.5rem;
  background: repeating-linear-gradient(45deg, #fdf3e2, #fdf3e2 12px, #fbecd0 12px, #fbecd0 24px);
  border: 1px solid #edd9ab; border-radius: 10px;
  padding: 0.55rem 0.9rem; margin-bottom: 1rem; font-size: 0.85rem; color: #7a4f12;
}
.mode-banner strong { letter-spacing: 0.06em; }

/* ══ Partner site editor ════════════════════════════════════════════════════
   The same pages-and-blocks editor the partner has in their own portal, so we
   can build a site for a partner who does not want to build it themselves. */
.site-layout { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 1.2rem; align-items: start; }
.site-pages { background: var(--surface); border: 1px solid var(--line); border-radius: 12px;
  padding: 0.9rem 1rem 1rem; box-shadow: var(--card-shadow); position: sticky; top: 1rem; }
.site-pages-head { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; margin-bottom: 0.7rem; }
.site-pages-head h2 { margin: 0; font-size: 0.98rem; }
.site-newpage { display: flex; flex-direction: column; gap: 0.45rem; margin-bottom: 0.8rem;
  padding: 0.7rem; background: #f2f7fa; border-radius: 8px; }
.site-newpage label { display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.74rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.05em; color: #3d6a70; }
.site-page-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.2rem; }
.site-page-list li { display: flex; align-items: center; gap: 0.4rem; }
.site-page-list button { flex: 1; text-align: left; background: none; border: none; cursor: pointer;
  padding: 0.5rem 0.6rem; border-radius: 8px; display: flex; flex-direction: column; gap: 0.1rem; }
.site-page-list button:hover { background: #f2f6f8; }
.site-page-list li.on button { background: #eaf3f7; }
.site-page-list strong { font-size: 0.92rem; color: var(--ink); }
.site-page-list span { font-size: 0.76rem; color: var(--ink-soft); }
.site-draft { font-size: 0.66rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em;
  background: #fdf3e2; color: #8a5a13; border-radius: 999px; padding: 0.1rem 0.4rem; }

.site-editor { display: flex; flex-direction: column; gap: 0.9rem; min-width: 0; }
.site-card { background: var(--surface); border: 1px solid var(--line); border-radius: 12px;
  padding: 1rem 1.15rem 1.1rem; box-shadow: var(--card-shadow); }
.site-card h2 { margin: 0 0 0.7rem; font-size: 1rem; }
.site-row { display: flex; flex-wrap: wrap; gap: 0.7rem; align-items: flex-end; }
.site-row label { display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.74rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-soft); flex: 1 1 12rem; }
.site-row label.wide { flex: 1 1 100%; }
.site-row input, .site-row select, .site-row textarea { font-weight: 400; text-transform: none; letter-spacing: 0;
  padding: 0.4rem 0.55rem; border: 1px solid #c6d0d7; border-radius: 6px; font-size: 0.9rem; color: var(--ink); }
.site-check { flex-direction: row !important; align-items: center; gap: 0.45rem !important;
  text-transform: none !important; letter-spacing: 0 !important; font-weight: 500 !important;
  color: var(--ink) !important; flex: 0 0 auto !important; }

.site-blocks-head { display: flex; align-items: center; gap: 0.7rem; margin-top: 0.4rem; }
.site-blocks-head h2 { margin: 0; font-size: 1rem; flex: 1; }
.site-blocks-head select { padding: 0.4rem 0.55rem; border: 1px solid #c6d0d7; border-radius: 6px; font-size: 0.9rem; }

.site-block { background: var(--surface); border: 1px solid var(--line); border-radius: 12px;
  box-shadow: var(--card-shadow); overflow: hidden; }
.site-block.off { opacity: .6; }
.site-block-head { display: flex; align-items: center; gap: 0.6rem; padding: 0.6rem 1rem;
  background: #f6f9fb; border-bottom: 1px solid var(--line); }
.site-block-kind { font-size: 0.74rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em;
  color: var(--brand); }
.site-block-hint { font-size: 0.8rem; color: var(--ink-soft); flex: 1; }
.site-block-tools { display: flex; gap: 0.5rem; }
.site-block-body { padding: 0.9rem 1rem 1rem; display: flex; flex-direction: column; gap: 0.7rem; }
.site-block-body > label.wide { display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.74rem;
  font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-soft); }
.site-block-body textarea { font-weight: 400; text-transform: none; letter-spacing: 0; resize: vertical;
  padding: 0.4rem 0.55rem; border: 1px solid #c6d0d7; border-radius: 6px; font-size: 0.9rem; }
.site-block-foot { border-top: 1px dashed var(--line); padding-top: 0.75rem; }
.site-saved { color: var(--ok-ink); font-size: 0.84rem; font-weight: 600; }

.site-items { border: 1px dashed var(--line); border-radius: 8px; padding: 0.7rem 0.8rem; }
.site-items-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.5rem;
  font-size: 0.8rem; }
.site-item { display: flex; gap: 0.45rem; align-items: center; margin-bottom: 0.4rem; }
.site-item input { flex: 1; min-width: 0; padding: 0.35rem 0.5rem; border: 1px solid #c6d0d7; border-radius: 6px;
  font-size: 0.88rem; }
.site-item-icon { flex: 0 0 3.2rem !important; text-align: center; }

@media (max-width: 900px) {
  .site-layout { grid-template-columns: 1fr; }
  .site-pages { position: static; }
}
.site-look { margin-bottom: 1rem; display: flex; flex-direction: column; gap: 0.7rem; }
.site-look-head { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; }
.site-look-head h2 { margin: 0; font-size: 1rem; }
.site-slug { display: flex; align-items: center; gap: 0.25rem; }
.site-slug span { font-size: 0.85rem; color: var(--ink-soft); font-weight: 400; }
.site-slug input { flex: 1; min-width: 0; }
.site-sub { margin: 0.4rem 0 0; font-size: 0.8rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.05em; color: var(--brand); }
.site-look-head .muted { flex: 1; }
.site-radios { display: flex; flex-direction: column; gap: 0.3rem; }
.site-radios > span { font-size: 0.74rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.05em; color: var(--ink-soft); }
.site-locked { color: var(--warm); font-style: normal; font-size: 0.78rem; margin-left: 0.3rem; }
.site-row label em { font-style: normal; text-transform: none; letter-spacing: 0; font-weight: 400;
  color: var(--warm); font-size: 0.74rem; }
.site-ok { color: var(--ok-ink); font-size: 0.84rem; margin: 0; }
.site-bad { color: var(--bad-ink); font-size: 0.84rem; margin: 0; }

/* ── Destination settings (site editor) ─────────────────────────────────── */
/* Each destination is its own card: who it is on one line, its presentation in a
   tidy three-column grid beneath — nothing shares a baseline with something taller. */
.site-dest { margin-top: 1.2rem; }
.site-dest-lede { margin: 0 0 0.4rem; font-size: 0.88rem; color: #5c6b75; max-width: 72ch; line-height: 1.55; }
.site-dest-empty { color: #8b98a4; font-style: italic; }
.site-dest-row {
  display: flex; flex-direction: column; gap: 0.9rem;
  border: 1px solid #e2eaee; border-radius: 12px; background: #fbfcfd;
  padding: 0.85rem 1.1rem 1.1rem; margin-top: 0.8rem;
}
.site-dest-row.off { opacity: 0.6; background: #f4f6f8; }
.site-dest-head { display: flex; align-items: center; gap: 0.8rem; }
.site-dest-order { display: flex; gap: 4px; }
.site-dest-order button {
  border: 1px solid #cdd8df; background: #fff; border-radius: 7px;
  width: 28px; height: 26px; line-height: 1; cursor: pointer; font-size: 0.8rem; color: #41505a;
}
.site-dest-order button:hover:not(:disabled) { border-color: #9fb2bc; }
.site-dest-order button:disabled { opacity: 0.35; cursor: default; }
.site-dest-name { display: flex; align-items: baseline; gap: 0.5rem; }
.site-dest-name strong { font-size: 1rem; }
.site-dest-name span { font-size: 0.78rem; color: #8b98a4; }
.site-dest-listed { margin-left: auto; }
.site-dest-fields {
  display: grid; grid-template-columns: minmax(180px, 1fr) minmax(240px, 1.6fr) minmax(230px, 1.2fr);
  gap: 1.1rem; align-items: start;
}
.site-dest-fields > label {
  display: flex; flex-direction: column; gap: 0.25rem;
  font-size: 0.74rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: #7a8a94;
}
.site-dest-fields input {
  font-weight: 400; text-transform: none; letter-spacing: 0;
  padding: 0.45rem 0.6rem; border: 1px solid #c6d0d7; border-radius: 7px; font-size: 0.9rem; color: #16232b; background: #fff;
}
@media (max-width: 1000px) {
  .site-dest-fields { grid-template-columns: 1fr; }
}

/* ── Site image upload field ────────────────────────────────────────────── */
.siu { display: flex; flex-direction: column; gap: 0.35rem; min-width: 0; }
.siu-label { font-size: 0.74rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: #7a8a94; }
.siu-preview { display: flex; align-items: center; gap: 0.7rem; }
.siu-preview img { height: 52px; max-width: 130px; object-fit: cover; border-radius: 8px; border: 1px solid #dde5ea; background: #f4f7f9; }
.siu-remove { background: none; border: none; color: #b3261e; font-size: 0.8rem; font-weight: 600; cursor: pointer; padding: 0; text-align: left; }
.siu-remove:hover { text-decoration: underline; }
.siu input[type="file"] { font-size: 0.8rem; max-width: 240px; }
.siu-list { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.siu-list-item { position: relative; }
.siu-list-item img { height: 52px; width: 92px; object-fit: cover; border-radius: 8px; border: 1px solid #dde5ea; background: #f4f7f9; display: block; }
.siu-list-item .siu-remove {
  position: absolute; top: -6px; right: -6px; width: 20px; height: 20px; line-height: 1;
  border-radius: 50%; border: 1px solid #dde5ea; background: #fff; color: #b3261e;
  font-size: 0.85rem; cursor: pointer; text-align: center; padding: 0;
}
.siu-hint { font-size: 0.72rem; color: #8b98a4; }
.siu-error { color: #b3261e; }

.site-headerpick select { padding: 0.3rem 0.45rem; border: 1px solid #c6d0d7; border-radius: 7px; font-size: 0.85rem; background: #fff; }

.site-page-list li { position: relative; }
.site-page-order { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); display: flex; flex-direction: column; gap: 2px; }
.site-page-order button { border: 1px solid #cdd8df; background: #fff; border-radius: 5px; width: 22px; height: 18px; line-height: 1; cursor: pointer; font-size: 0.65rem; color: #41505a; padding: 0; }
.site-page-order button:disabled { opacity: 0.3; cursor: default; }

/* Website pages / blog editors */
.form-section { margin: 1.2rem 0 0.4rem; font-size: 0.82rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: #405866; }
.muted.warn { color: #b3261e; }
.faq-editor { margin-top: 1rem; display: flex; flex-direction: column; gap: 0.6rem; align-items: flex-start; }
.faq-editor-label { font-size: 0.78rem; font-weight: 600; color: #405866; }
.faq-editor-row { display: flex; gap: 0.8rem; width: 100%; align-items: flex-start; }
.faq-editor-row .btn-link { margin-top: 0.6rem; }

/* SEO score panel + badges */
.seo-panel { margin-top: 1.2rem; border: 1px solid #e2eaee; border-radius: 12px; padding: 1rem 1.1rem; background: #fbfdfe; }
.seo-head { display: flex; gap: 1rem; align-items: center; margin-bottom: 0.6rem; }
.seo-ring { width: 64px; height: 64px; border-radius: 50%; display: grid; place-items: center; border: 5px solid; flex: 0 0 auto; }
.seo-score { font-weight: 800; font-size: 1.25rem; }
.seo-ring.good, .seo-grade.good, .seo-badge.good { border-color: #1f9d55; color: #1f7a44; }
.seo-ring.mid, .seo-grade.mid, .seo-badge.mid { border-color: #e0a100; color: #9a6b00; }
.seo-ring.poor, .seo-grade.poor, .seo-badge.poor { border-color: #d64545; color: #b3261e; }
.seo-grade { font-weight: 700; font-size: 1rem; }
.seo-group { margin-top: 0.4rem; }
.seo-group summary { cursor: pointer; font-weight: 600; font-size: 0.85rem; color: #405866; }
.seo-group ul { margin: 0.3rem 0 0.4rem; padding-left: 1.1rem; font-size: 0.86rem; }
.seo-group li { margin: 0.2rem 0; }
.seo-group li.seo-fail::marker { color: #d64545; content: "✖  "; }
.seo-group li.seo-warn::marker { color: #e0a100; content: "▲  "; }
.seo-group li.seo-pass::marker { color: #1f9d55; content: "✔  "; }
.seo-group li.seo-info::marker { color: #7a8b95; content: "ℹ  "; }
.seo-badge { display: inline-block; min-width: 2.4rem; text-align: center; padding: 0.15rem 0.5rem; border-radius: 999px; border: 2px solid; font-weight: 700; font-size: 0.82rem; }

/* ===================== Dashboard ===================== */
.dash-hero {
  display: flex; justify-content: space-between; align-items: flex-end; gap: 1.5rem; flex-wrap: wrap;
  margin: -0.2rem 0 1.3rem; padding: 1.5rem 1.7rem 1.4rem; border-radius: 18px; color: #fff;
  background:
    radial-gradient(600px 220px at 100% 0%, rgba(232, 112, 61, 0.55), transparent 60%),
    radial-gradient(500px 240px at 0% 100%, rgba(127, 180, 196, 0.35), transparent 60%),
    linear-gradient(120deg, #0f4c5c 0%, #146c8c 55%, #1b8aa5 100%);
  box-shadow: 0 18px 40px -22px rgba(15, 76, 92, 0.7);
}
.dash-hero h1 { color: #fff; margin: 0.1rem 0 0.35rem; font-size: 1.7rem; letter-spacing: -0.02em; }
.dash-eyebrow { margin: 0; font-size: 0.78rem; letter-spacing: 0.08em; text-transform: uppercase; color: rgba(255,255,255,0.75); font-weight: 600; }
.dash-sub { margin: 0; color: rgba(255,255,255,0.88); font-size: 0.95rem; }
.dash-sub b { color: #ffd9a8; }
.dash-actions { display: flex; flex-wrap: wrap; gap: 0.55rem; }
.dash-action {
  display: inline-flex; align-items: center; gap: 0.45rem; padding: 0.5rem 0.9rem; border-radius: 999px;
  background: rgba(255,255,255,0.14); border: 1px solid rgba(255,255,255,0.28); color: #fff; font-weight: 600;
  font-size: 0.88rem; text-decoration: none; backdrop-filter: blur(6px); transition: background 0.12s ease, transform 0.12s ease;
}
.dash-action:hover { background: rgba(255,255,255,0.26); color: #fff; transform: translateY(-1px); }
.dash-action .ic { font-size: 1rem; }
.dash-action .badge { background: #ffd9a8; color: #5a2b0f; border-radius: 999px; padding: 0.05rem 0.5rem; font-size: 0.75rem; font-weight: 800; }

.kpi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 1rem; margin-bottom: 1.3rem; }
.kpi {
  position: relative; display: flex; flex-direction: column; gap: 0.2rem; padding: 1.1rem 1.2rem 1rem; min-height: 150px;
  background: var(--surface); border: 1px solid var(--line); border-radius: 16px; color: inherit; text-decoration: none;
  box-shadow: var(--card-shadow); overflow: hidden; transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.kpi::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 5px; background: var(--tone); }
.kpi::after { content: ""; position: absolute; right: -30px; top: -30px; width: 120px; height: 120px; border-radius: 50%; background: var(--tone); opacity: 0.08; }
.kpi:hover { transform: translateY(-3px); box-shadow: 0 6px 10px rgba(16,42,56,0.07), 0 22px 40px -18px rgba(16,42,56,0.35); color: inherit; }
.kpi-ic { font-size: 1.35rem; line-height: 1; margin-bottom: 0.25rem; }
.kpi-label { font-size: 0.8rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--ink-soft); }
.kpi strong { font-size: 2rem; font-weight: 800; letter-spacing: -0.02em; color: #14303f; font-variant-numeric: tabular-nums; line-height: 1.1; }
.kpi strong small { font-size: 1rem; color: var(--ink-soft); font-weight: 600; }
.kpi-sub { font-size: 0.83rem; color: var(--ink-soft); }
.kpi-sub b { font-weight: 600; color: var(--ink); }
.kpi-sub b.hot { color: #c2410c; }
.kpi-foot { margin-top: auto; padding-top: 0.5rem; font-size: 0.8rem; color: var(--tone); font-weight: 600; }
.tone-teal { --tone: #1b8aa5; } .tone-orange { --tone: #e8703d; } .tone-green { --tone: #2f9e5f; } .tone-violet { --tone: #7b6fd0; } .tone-rose { --tone: #d05a6e; }
.kpi.skeleton { background: linear-gradient(90deg, #eef3f6 25%, #f7fafb 50%, #eef3f6 75%); background-size: 200% 100%; animation: dash-shimmer 1.2s infinite; border-color: transparent; }
@keyframes dash-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }

.dash-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1rem; }
.dash-columns:has(.wide) { grid-template-columns: 1.6fr 1fr; }
.dash-panel {
  background: var(--surface); border: 1px solid var(--line); border-radius: 16px; padding: 1.05rem 1.25rem 1.15rem;
  box-shadow: var(--card-shadow); margin-bottom: 1rem; min-width: 0;
}
.dash-panel header { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; margin-bottom: 0.75rem; }
.dash-panel h2 { font-size: 1.02rem; font-weight: 750; margin: 0; letter-spacing: -0.01em; }
.dash-panel header a.muted:hover { color: var(--brand); }
.dash-empty { margin: 0.4rem 0 0; color: var(--ink-soft); font-size: 0.9rem; }

.attn-list, .dep-list, .act-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.attn-list li { display: flex; align-items: center; gap: 0.75rem; padding: 0.6rem 0; border-top: 1px solid #eef3f6; }
.attn-list li:first-child { border-top: none; }
.attn-list li > div { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.attn-list a { font-weight: 600; color: var(--ink); }
.attn-list a:hover { color: var(--brand); }
.attn-list small { color: var(--ink-soft); font-size: 0.8rem; }
.attn-go { font-size: 0.82rem !important; color: var(--brand) !important; white-space: nowrap; }
.dot { width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; box-shadow: 0 0 0 4px color-mix(in srgb, currentColor 18%, transparent); }
.dot-orange { color: #e8703d; background: #e8703d; } .dot-teal { color: #1b8aa5; background: #1b8aa5; }
.dot-green { color: #2f9e5f; background: #2f9e5f; } .dot-rose { color: #d05a6e; background: #d05a6e; }

.dep-list li { display: flex; align-items: center; gap: 0.85rem; padding: 0.6rem 0; border-top: 1px solid #eef3f6; }
.dep-list li:first-child { border-top: none; }
.dep-date { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 46px; height: 50px; border-radius: 12px; background: linear-gradient(160deg, #146c8c, #1b8aa5); color: #fff; flex: 0 0 auto; }
.dep-date b { font-size: 1.15rem; line-height: 1; } .dep-date small { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.06em; opacity: 0.85; }
.dep-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 0.15rem; }
.dep-body a { font-weight: 600; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dep-body a:hover { color: var(--brand); }
.dep-body small { color: var(--ink-soft); font-size: 0.78rem; }
.dep-bar { display: block; height: 6px; border-radius: 999px; background: #eef3f6; overflow: hidden; margin-top: 0.2rem; }
.dep-bar span { display: block; height: 100%; border-radius: 999px; background: #1b8aa5; }
.dep-bar span.half { background: #d99a2b; } .dep-bar span.full { background: #d05a6e; }
.dep-pct { font-size: 0.82rem; font-weight: 700; color: var(--ink-soft); font-variant-numeric: tabular-nums; }

.table-scroll { overflow-x: auto; }
.dash-table { width: 100%; }
.dash-table th, .dash-table td { padding: 0.5rem 0.6rem; font-size: 0.85rem; vertical-align: middle; }
.dash-table td.nowrap { white-space: nowrap; }
.dash-table td.clip { max-width: 170px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dash-table .pill { white-space: nowrap; }
.dash-table td.num { font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; }
.dash-table a { font-weight: 600; color: var(--ink); } .dash-table a:hover { color: var(--brand); }
.tag-test { margin-left: 0.4rem; font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.06em; background: #fff3e6; color: #9a4b12; border-radius: 6px; padding: 0.05rem 0.35rem; font-weight: 700; }
.pill { display: inline-block; padding: 0.12rem 0.55rem; border-radius: 999px; font-size: 0.75rem; font-weight: 700; }
.pill-pending { background: #fff3e6; color: #9a4b12; } .pill-confirmed { background: var(--ok-bg); color: var(--ok-ink); }
.pill-cancelled { background: var(--bad-bg); color: var(--bad-ink); } .pill-completed { background: #e6f1f8; color: #14506b; }

.act-list li { display: flex; gap: 0.7rem; padding: 0.5rem 0; border-top: 1px solid #eef3f6; align-items: flex-start; }
.act-list li:first-child { border-top: none; }
.act-list li > div { display: flex; flex-direction: column; min-width: 0; }
.act-list b { font-size: 0.88rem; }
.act-list small { color: var(--ink-soft); font-size: 0.76rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.act-code { flex: 0 0 auto; min-width: 2.4rem; text-align: center; font-size: 0.72rem; font-weight: 800; border-radius: 8px; padding: 0.25rem 0.3rem; margin-top: 0.15rem; }
.act-code.ok { background: var(--ok-bg); color: var(--ok-ink); } .act-code.bad { background: var(--bad-bg); color: var(--bad-ink); }

.cat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 0.7rem; }
.cat-tile {
  display: flex; flex-direction: column; align-items: flex-start; gap: 0.1rem; padding: 0.8rem 0.9rem; border-radius: 12px;
  background: color-mix(in srgb, var(--tone) 9%, #fff); border: 1px solid color-mix(in srgb, var(--tone) 22%, #fff);
  color: inherit; text-decoration: none; transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.cat-tile:hover { transform: translateY(-2px); box-shadow: 0 10px 22px -14px var(--tone); color: inherit; }
.cat-ic { font-size: 1.15rem; }
.cat-tile strong { font-size: 1.35rem; font-weight: 800; color: #14303f; font-variant-numeric: tabular-nums; }
.cat-tile span:last-child { font-size: 0.78rem; color: var(--ink-soft); font-weight: 600; }

.nav-groups { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 0.8rem; }
.nav-card { border: 1px solid var(--line); border-radius: 12px; padding: 0.85rem 1rem; background: #fbfdfe; }
.nav-card h3 { margin: 0 0 0.5rem; font-size: 0.85rem; font-weight: 800; letter-spacing: 0.03em; text-transform: uppercase; color: #405866; display: flex; gap: 0.4rem; align-items: center; }
.nav-links { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.nav-links a { font-size: 0.83rem; padding: 0.28rem 0.65rem; border-radius: 999px; background: #fff; border: 1px solid #d9e3e9; color: var(--ink); font-weight: 500; text-decoration: none; transition: all 0.12s ease; }
.nav-links a:hover { border-color: var(--brand); color: var(--brand); background: #eaf3f7; }

@media (max-width: 1000px) {
  .dash-columns, .dash-columns:has(.wide) { grid-template-columns: 1fr; }
  .dash-hero { padding: 1.2rem 1.2rem 1.1rem; }
  .dash-hero h1 { font-size: 1.4rem; }
}

/* ===================== Keyboard navigation ===================== */
kbd { display: inline-block; min-width: 1.35em; padding: 0.05em 0.4em; border-radius: 5px; border: 1px solid #c9d5dc; border-bottom-width: 2px; background: #f7fafb; color: #22404f; font: 600 0.72rem/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; text-align: center; vertical-align: middle; }
.nav-search { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; width: calc(100% - 1.6rem); margin: 0 0.8rem 0.6rem; padding: 0.45rem 0.7rem; border-radius: 9px; border: 1px solid rgba(255,255,255,0.16); background: rgba(255,255,255,0.08); color: rgba(255,255,255,0.8); font-size: 0.83rem; cursor: pointer; text-align: left; }
.nav-search:hover { background: rgba(255,255,255,0.14); color: #fff; }
.nav-search kbd { background: rgba(255,255,255,0.12); border-color: rgba(255,255,255,0.25); color: #fff; }
.nav-links a kbd { margin-left: 0.3rem; font-size: 0.62rem; padding: 0 0.3em; opacity: 0.8; }
.kp-backdrop { position: fixed; inset: 0; background: rgba(9, 30, 40, 0.45); backdrop-filter: blur(2px); z-index: 1000; }
.kp { position: fixed; z-index: 1001; left: 50%; top: 12vh; transform: translateX(-50%); width: min(640px, calc(100vw - 2rem)); background: #fff; border-radius: 16px; box-shadow: 0 30px 80px -20px rgba(9, 30, 40, 0.6); overflow: hidden; }
.kp-input-wrap { display: flex; align-items: center; gap: 0.7rem; padding: 0.8rem 1rem; border-bottom: 1px solid var(--line); }
.kp-glyph { font: 700 0.75rem ui-monospace, monospace; color: var(--ink-soft); }
.kp-input { flex: 1; border: none; outline: none; font-size: 1.05rem; color: var(--ink); background: transparent; }
.kp-list { list-style: none; margin: 0; padding: 0.4rem 0; max-height: 52vh; overflow-y: auto; }
.kp-group { padding: 0.45rem 1rem 0.15rem; font-size: 0.68rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-soft); }
.kp-item { display: flex; align-items: center; gap: 0.7rem; padding: 0.5rem 1rem; cursor: pointer; }
.kp-item.active { background: #eaf3f7; box-shadow: inset 3px 0 0 var(--brand); }
.kp-ic { width: 1.4rem; text-align: center; }
.kp-label { flex: 1; font-weight: 600; }
.kp-keys { display: flex; gap: 0.2rem; }
.kp-empty { padding: 1rem; color: var(--ink-soft); }
.kp-foot { display: flex; flex-wrap: wrap; gap: 1rem; padding: 0.55rem 1rem; border-top: 1px solid var(--line); background: #fbfdfe; font-size: 0.76rem; color: var(--ink-soft); }
.kp-foot kbd { margin-right: 0.15rem; }
.kp-help { padding: 1.1rem 1.3rem 1.2rem; }
.kp-help h2 { font-size: 1.05rem; margin: 0 0 0.9rem; display: flex; justify-content: space-between; align-items: center; }
.kp-help h3 { font-size: 0.78rem; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ink-soft); margin: 0 0 0.5rem; }
.kp-help-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 1.2rem; }
.kp-help dl { display: grid; grid-template-columns: auto 1fr; gap: 0.35rem 0.7rem; margin: 0; font-size: 0.86rem; align-items: center; }
.kp-help dt { white-space: nowrap; } .kp-help dd { margin: 0; }
.kp-help p { margin: 0.7rem 0 0; font-size: 0.78rem; }
.kp-toast { position: fixed; z-index: 1002; left: 50%; bottom: 1.5rem; transform: translateX(-50%); background: #14303f; color: #fff; padding: 0.5rem 0.9rem; border-radius: 999px; font-size: 0.85rem; box-shadow: 0 10px 30px -10px rgba(0,0,0,0.5); }
.kp-toast .muted { color: rgba(255,255,255,0.65); }

/* ===================== Analytics ===================== */
.an-filters { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.an-seg { display: inline-flex; border: 1px solid #c9d5dc; border-radius: 999px; overflow: hidden; background: #fff; }
.an-seg button { border: none; background: transparent; padding: 0.35rem 0.8rem; font-size: 0.85rem; font-weight: 600; color: var(--ink-soft); cursor: pointer; }
.an-seg button.active { background: var(--brand); color: #fff; }
.an-select, .an-date { border: 1px solid #c9d5dc; border-radius: 999px; padding: 0.33rem 0.7rem; font-size: 0.85rem; background: #fff; color: var(--ink); }
.an-kpis .kpi { min-height: 120px; }
.an-legend { display: flex; gap: 0.9rem; font-size: 0.8rem; color: var(--ink-soft); align-items: center; }
.an-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 0.35rem; vertical-align: middle; }
.an-chart-wrap { overflow-x: auto; }
.an-chart { width: 100%; height: auto; min-width: 520px; display: block; }
.an-grid { stroke: #eef3f6; stroke-width: 1; }
.an-tick { font-size: 11px; fill: var(--ink-soft); }
.an-day rect:hover { opacity: 0.8; }
.an-three { grid-template-columns: 1fr 1fr 1fr; }
.an-count td { padding: 0.42rem 0.5rem; font-size: 0.86rem; }
.an-count td.clip { max-width: 260px; }
.an-count td.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.an-bar-cell { width: 40%; }
.an-bar { display: block; height: 8px; border-radius: 999px; background: #1b8aa5; min-width: 2px; }
.tag-partner { margin-left: 0.4rem; font-size: 0.7rem; background: #e6f1f8; color: #14506b; border-radius: 6px; padding: 0.05rem 0.4rem; font-weight: 700; }
.dash-table code { font-size: 0.8rem; color: var(--ink-soft); }
.an-split { grid-template-columns: 1fr; }
.an-single { grid-template-columns: 1fr; }
.an-timeline { position: fixed; top: 0; right: 0; bottom: 0; width: min(460px, 100vw); z-index: 900; border-radius: 0; margin: 0; overflow-y: auto; box-shadow: -20px 0 60px -30px rgba(9, 30, 40, 0.5); border-left: 1px solid var(--line); }
.an-timeline header { position: sticky; top: 0; background: var(--surface); padding-top: 0.2rem; z-index: 1; }
.act-code.view { background: #eaf3f7; color: #14506b; }
.dash-table tr.active td { background: #eaf3f7; }
.pill-active { background: var(--ok-bg); color: var(--ok-ink); } .pill-pendingapproval, .pill-pendingpayment, .pill-pendingphoneverification { background: #fff3e6; color: #9a4b12; }
.pill-suspended, .pill-rejected { background: var(--bad-bg); color: var(--bad-ink); }
@media (max-width: 1000px) { .an-three { grid-template-columns: 1fr; } }
.an-chip { display: inline-block; font-size: 0.78rem; font-weight: 600; padding: 0.1rem 0.45rem; border-radius: 999px; background: #f1f5f8; color: var(--ink); margin-right: 0.15rem; }

/* ===================== Email marketing ===================== */
.mk-tabs { display: flex; flex-wrap: wrap; gap: 0.35rem; margin: -0.3rem 0 1.1rem; }
.mk-tabs a { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.4rem 0.85rem; border-radius: 999px; border: 1px solid #d9e3e9; background: #fff; color: var(--ink); font-size: 0.86rem; font-weight: 600; text-decoration: none; }
.mk-tabs a.active { background: var(--brand); border-color: var(--brand); color: #fff; }
.mk-tabs a:hover:not(.active) { border-color: var(--brand); color: var(--brand); }
.mk-checks { display: flex; flex-wrap: wrap; gap: 0.35rem 0.8rem; }
.mk-check { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.86rem; font-weight: 500; }
.mk-audience { border: 1px solid var(--line); border-radius: 12px; padding: 0.9rem 1rem; background: #fbfdfe; }
.mk-audience-count { margin-top: 0.7rem; display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; font-size: 0.9rem; }
.mk-audience-count strong { font-size: 1.3rem; color: var(--brand-deep); }
.mk-chip { display: inline-block; padding: 0.1rem 0.55rem; border-radius: 999px; background: #eaf3f7; color: #14506b; font-size: 0.78rem; font-weight: 600; text-transform: capitalize; }
.mk-editor { display: grid; grid-template-columns: 1fr 300px; gap: 1rem; align-items: start; }
.mk-editor-main .field { margin-bottom: 0.6rem; }
.mk-fields { display: flex; flex-wrap: wrap; gap: 0.3rem; margin: 0.3rem 0 0.4rem; }
.mk-field-chip { border: 1px solid #d9e3e9; background: #fff; border-radius: 999px; padding: 0.12rem 0.55rem; font: 600 0.74rem ui-monospace, monospace; color: #14506b; cursor: pointer; }
.mk-field-chip:hover { background: #eaf3f7; border-color: var(--brand); }
.mk-preview { margin-top: 0.8rem; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: #f2f5f7; }
.mk-preview-bar { display: flex; gap: 0.7rem; align-items: baseline; padding: 0.55rem 0.9rem; background: #fff; border-bottom: 1px solid var(--line); font-size: 0.88rem; }
.mk-preview iframe { width: 100%; height: 640px; border: 0; background: #f2f5f7; }
.mk-score ul { list-style: none; margin: 0.4rem 0 0; padding: 0; font-size: 0.84rem; }
.mk-score li { padding: 0.25rem 0 0.25rem 1.3rem; position: relative; }
.mk-score li::before { position: absolute; left: 0; }
.mk-score li.seo-pass::before { content: "✔"; color: #1f9d55; } .mk-score li.seo-warn::before { content: "▲"; color: #e0a100; } .mk-score li.seo-fail::before { content: "✖"; color: #d64545; }
.mk-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 0.9rem; }
.mk-card { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 1rem 1.1rem; box-shadow: var(--card-shadow); display: flex; flex-direction: column; gap: 0.4rem; }
.mk-card h3 { margin: 0; font-size: 1rem; display: flex; gap: 0.5rem; align-items: center; }
.mk-card .muted { font-size: 0.83rem; }
.mk-card-foot { margin-top: auto; display: flex; gap: 0.6rem; align-items: center; flex-wrap: wrap; padding-top: 0.5rem; }
.mk-switch { position: relative; width: 42px; height: 24px; border-radius: 999px; background: #c9d5dc; border: none; cursor: pointer; transition: background 0.15s ease; flex: 0 0 auto; }
.mk-switch::after { content: ""; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: left 0.15s ease; }
.mk-switch.on { background: #2f9e5f; } .mk-switch.on::after { left: 21px; }
.mk-rate { display: inline-flex; flex-direction: column; align-items: center; min-width: 62px; }
.mk-rate b { font-size: 1.05rem; } .mk-rate small { color: var(--ink-soft); font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em; }
.pill-draft { background: #f1f5f8; color: #405866; } .pill-scheduled { background: #e6f1f8; color: #14506b; } .pill-sending { background: #fff3e6; color: #9a4b12; }
.pill-sent { background: var(--ok-bg); color: var(--ok-ink); } .pill-paused { background: #fdf3d2; color: #7a5600; } .pill-cancelled, .pill-failed { background: var(--bad-bg); color: var(--bad-ink); }
.pill-subscribed { background: var(--ok-bg); color: var(--ok-ink); } .pill-unsubscribed { background: #f1f5f8; color: #405866; } .pill-bounced, .pill-complained { background: var(--bad-bg); color: var(--bad-ink); }
.pill-engaged { background: var(--ok-bg); color: var(--ok-ink); } .pill-sleeping { background: #fdf3d2; color: #7a5600; } .pill-cold { background: #f1f5f8; color: #405866; } .pill-new { background: #e6f1f8; color: #14506b; }
.mk-drawer { position: fixed; top: 0; right: 0; bottom: 0; width: min(560px, 100vw); background: #fff; z-index: 900; overflow-y: auto; padding: 1.1rem 1.3rem 1.5rem; box-shadow: -20px 0 60px -30px rgba(9,30,40,.5); border-left: 1px solid var(--line); }
.mk-drawer header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.8rem; }
.mk-drawer h2 { font-size: 1.05rem; margin: 0; }
.mk-toolbar { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }

/* A send waiting on a second pair of eyes — the one thing on the page that should stop you. */
.mk-approval { border: 1px solid #f0c98a; background: #fff8ec; border-radius: 12px; padding: 0.9rem 1.1rem; margin-bottom: 1rem; }
.mk-approval b { color: #8a4c07; }
.mk-approval ul { list-style: none; margin: 0.6rem 0 0; padding: 0; display: grid; gap: 0.45rem; }
.mk-approval li { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.btn-sm { padding: 0.25rem 0.7rem; font-size: 0.82rem; }

/* Sequence steps: a vertical spine with the wait between each message on it. */
.mk-steps { display: grid; gap: 0.75rem; }
.mk-step { border: 1px solid var(--line, #dfe6ea); border-radius: 12px; padding: 0.85rem 1rem; background: #fff; }
.mk-step-head { display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; margin-bottom: 0.5rem; }
.mk-step-no { width: 1.7rem; height: 1.7rem; border-radius: 50%; background: #146c8c; color: #fff; display: grid; place-items: center; font-weight: 700; font-size: 0.82rem; flex: none; }
.mk-step-wait { color: #5c6b75; font-size: 0.85rem; }
.mk-goal { background: #eef7f0; border: 1px solid #cbe6d2; border-radius: 10px; padding: 0.6rem 0.85rem; color: #2d6a35; font-size: 0.88rem; }
.mk-seq-stats { display: flex; flex-wrap: wrap; gap: 1.2rem; margin: 0.6rem 0; }
.mk-seq-stats div { font-size: 0.85rem; color: #5c6b75; }
.mk-seq-stats b { display: block; font-size: 1.25rem; color: #0d2530; }
.mk-stat-row { display: flex; flex-wrap: wrap; gap: 1.2rem; margin: 0.4rem 0 0.9rem; }
.mk-hours { display: flex; align-items: flex-end; gap: 2px; height: 90px; }
.mk-hours span { flex: 1; background: #1b8aa5; border-radius: 3px 3px 0 0; min-height: 2px; position: relative; }
.mk-hours span i { position: absolute; left: 0; right: 0; bottom: 0; background: #e8703d; border-radius: 3px 3px 0 0; }
.mk-links td.clip { max-width: 420px; }
@media (max-width: 1000px) { .mk-editor { grid-template-columns: 1fr; } }

.mk-offer-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 0.7rem; }
.mk-offer { display: flex; gap: 0.7rem; align-items: flex-start; border: 2px solid var(--line); border-radius: 12px; padding: 0.6rem; cursor: pointer; background: #fff; }
.mk-offer.on { border-color: var(--brand); background: #eaf3f7; }
.mk-offer.off { opacity: 0.6; }
.mk-offer input { margin-top: 0.3rem; }
.mk-offer img, .mk-offer-noimg { width: 72px; height: 48px; object-fit: cover; border-radius: 8px; flex: 0 0 auto; background: #f1f5f8; display: grid; place-items: center; font-size: 1.3rem; }
.mk-offer-body { display: flex; flex-direction: column; gap: 0.1rem; font-size: 0.85rem; min-width: 0; }
.mk-offer-body small { font-size: 0.76rem; }

/* Deliverability */
.dl-head { display: flex; align-items: center; gap: 1.1rem; flex-wrap: wrap; }
.dl-section { font-size: .85rem; text-transform: uppercase; letter-spacing: .05em; color: #405866; margin: 1.2rem 0 .5rem; }
.dl-section .muted { text-transform: none; letter-spacing: 0; font-weight: 400; }
.dl-check { padding: .85rem 1rem; margin-bottom: .6rem; border-left: 4px solid var(--line); }
.dl-check.dl-fail { border-left-color: #d64545; }
.dl-check.dl-warn { border-left-color: #e0a100; }
.dl-check.dl-pass { border-left-color: #1f9d55; }
.dl-check-head { display: flex; gap: .7rem; align-items: flex-start; font-size: .9rem; }
.dl-icon { font-weight: 800; }
.dl-fail .dl-icon { color: #d64545; } .dl-warn .dl-icon { color: #e0a100; } .dl-pass .dl-icon { color: #1f9d55; }
.dl-found code { background: #f1f5f8; padding: .05rem .35rem; border-radius: 5px; font-size: .8rem; word-break: break-all; }
.dl-fix { margin-top: .35rem; color: #14506b; font-size: .88rem; }
.dl-record { display: flex; gap: 1rem; align-items: flex-end; flex-wrap: wrap; margin-top: .7rem; padding: .7rem .8rem; background: #fbfdfe; border: 1px dashed #c9d5dc; border-radius: 10px; }
.dl-record > div { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.dl-record .muted { font-size: .7rem; text-transform: uppercase; letter-spacing: .05em; }
.dl-record code { font-size: .82rem; word-break: break-all; background: #fff; border: 1px solid var(--line); border-radius: 6px; padding: .3rem .5rem; }
.dl-glossary { display: grid; grid-template-columns: auto 1fr; gap: .4rem .8rem; margin: 0; font-size: .86rem; }
.dl-glossary dt { font-weight: 700; } .dl-glossary dd { margin: 0; color: var(--ink-soft); }
.mk-rate b.hot { color: #b3261e; } .mk-rate b.warn { color: #9a6b00; }

.mk-money { color: #1f7a44; }
.mk-revenue .mk-stat-row { margin-bottom: .8rem; }
.mk-slots { display: grid; grid-template-columns: 1fr 2.4fr; gap: 1.4rem; }
.mk-slots h4 { margin: 0 0 .4rem; font-size: .78rem; text-transform: uppercase; letter-spacing: .05em; color: #405866; }
.mk-slot-labels { display: flex; margin-top: .2rem; font-size: .68rem; color: var(--ink-soft); }
.mk-slot-labels span { flex: 1; text-align: center; }
@media (max-width: 900px) { .mk-slots { grid-template-columns: 1fr; } }

.mk-segment-row { border-bottom: 1px dashed var(--line); padding-bottom: .7rem; margin-bottom: .5rem; }
.mk-preview-stage { display: flex; justify-content: center; background: #f2f5f7; padding: 10px 0; }
.mk-preview-stage iframe { height: 640px; border: 0; background: #f2f5f7; max-width: 100%; }
.mk-preview-bar .an-seg button { padding: .18rem .55rem; font-size: .78rem; }

/* Partner logo review */
.agent-logo-preview { display: inline-flex; align-items: center; justify-content: center; background: #fff; border: 1px solid #dfe7ec; border-radius: 8px; padding: 0.5rem 0.8rem; }
.agent-logo-preview img { max-height: 64px; max-width: 220px; object-fit: contain; }
.btn-link.attention { font-weight: 700; color: #9a4b12; }

/* Routes: filter bar */
.route-filters { display: flex; flex-wrap: wrap; gap: 0.6rem 1.4rem; align-items: center; margin: 0.2rem 0 0.4rem; }
.route-filter-group { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; }
.route-filter-group-end { margin-left: auto; }
.route-filter-label { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-soft); margin-right: 0.2rem; }
.route-filters .chip em { font-style: normal; opacity: 0.7; margin-left: 0.25rem; font-size: 0.78rem; }
.route-search { padding: 0.42rem 0.6rem; border: 1px solid #c9d5dc; border-radius: 8px; background: #fff; min-width: 13rem; }
.route-count { font-size: 0.86rem; margin: 0 0 0.6rem; display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; }
.route-tag-stale { background: #fff3e6; color: #9a4b12; }
.route-top { white-space: nowrap; }
.route-rank { display: inline-block; min-width: 2rem; text-align: center; padding: 0.1rem 0.45rem; border-radius: 999px; background: var(--warm); color: #fff; font-weight: 600; font-size: 0.8rem; margin-right: 0.3rem; }
.route-rank-btn { border: 1px solid #c9d5dc; background: #fff; border-radius: 6px; padding: 0.05rem 0.4rem; font-size: 0.72rem; cursor: pointer; color: #44606f; margin-right: 0.15rem; }
.route-rank-btn:hover:not(:disabled) { border-color: var(--warm); color: var(--warm); }
.route-rank-btn:disabled { opacity: 0.35; cursor: default; }
.route-rank-btn.danger:hover:not(:disabled) { border-color: #b3261e; color: #b3261e; }
.route-pin { font-size: 0.82rem; }
a.tag { text-decoration: none; }

/* ── AI reader test verdict on Platform Settings ─────────────────────── */
.ai-ok { color: #1f7a43; font-weight: 600; }
.ai-bad { color: #b3261e; font-weight: 600; }

/* ── AI Reader module ──────────────────────────────────────────────────── */
.ai-tabs { display: flex; gap: 0.3rem; background: #e8eef1; border-radius: 999px; padding: 0.2rem; }
.ai-tab { border: 0; background: transparent; padding: 0.4rem 1rem; border-radius: 999px; font: inherit; font-weight: 600; color: #44606f; cursor: pointer; }
.ai-tab.on { background: #fff; color: var(--brand); box-shadow: 0 1px 3px rgba(0,0,0,0.12); }
.ai-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; margin: 0.8rem 0 1rem; font-size: 0.9rem; }
.ai-toolbar label { display: flex; align-items: center; gap: 0.4rem; color: #44606f; }
.ai-toolbar select { padding: 0.35rem 0.5rem; border: 1px solid #c9d5dc; border-radius: 8px; background: #fff; font: inherit; }
.ai-chip { background: #e1eef5; color: #14607f; border-radius: 999px; padding: 0.15rem 0.7rem; font-size: 0.82rem; }
.ai-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 0.8rem; margin-bottom: 1.2rem; }
.ai-tile { background: #fff; border: 1px solid #e6edf1; border-radius: 12px; padding: 0.9rem 1rem; display: flex; flex-direction: column; gap: 0.15rem; }
.ai-tile span { font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-soft); }
.ai-tile strong { font-size: 1.5rem; letter-spacing: -0.02em; }
.ai-tile small { color: #51646e; font-size: 0.8rem; }
.ai-tile-cost strong { color: var(--brand); }
.ai-readings td { vertical-align: top; }
.ai-detail { display: grid; grid-template-columns: 1fr 1.2fr; gap: 1.6rem; padding: 0.4rem 0 0.6rem; }
.ai-detail h4 { margin: 0.6rem 0 0.3rem; font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-soft); }
.ai-detail h4:first-child { margin-top: 0; }
.ai-raw { white-space: pre-wrap; background: #fff; border: 1px solid #e6edf1; border-radius: 10px; padding: 0.7rem 0.9rem; font-size: 0.9rem; margin: 0; }
.ai-fields { border-collapse: collapse; width: 100%; font-size: 0.86rem; }
.ai-fields th { text-align: left; color: #44606f; font-weight: 600; padding: 0.22rem 0.6rem 0.22rem 0; width: 11rem; white-space: nowrap; vertical-align: top; }
.ai-fields td { padding: 0.22rem 0; }
.ai-fields tr.ai-changed th, .ai-fields tr.ai-changed td { background: #fff4e0; }
@media (max-width: 900px) { .ai-detail { grid-template-columns: 1fr; } }
.ai-checks { margin: 0; padding: 0; list-style: none; font-size: 0.86rem; }
.ai-checks li { padding: 0.15rem 0; }
.ai-checks li.ok { color: #1f7a43; }
.ai-checks li.bad { color: #a2512a; }

/* ── Installment schedule editor (departures) ─────────────────────────── */
.inst { display: inline-grid; grid-template-columns: max-content 1fr max-content; column-gap: 1rem; row-gap: 0.4rem;
  align-items: center; min-width: 420px; max-width: 640px; padding: 0.6rem 0.85rem; border: 1px solid #dde5ea; border-radius: 10px; background: #f8fafc; }
.inst-head, .inst-row, .inst-foot { display: contents; }
.inst-head span { font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: #6a7f8c; }
.inst-pct, .inst-due { display: flex; align-items: center; gap: 0.4rem; }
.inst-pct input { width: 5rem; text-align: right; }
.inst-due select { width: auto; }
.inst-due input { width: 4.5rem; text-align: right; }
.inst em { font-style: normal; font-size: 0.82rem; color: var(--ink-soft); white-space: nowrap; }
.inst-remove { background: none; border: none; color: #9aacb6; font-size: 1.1rem; line-height: 1; padding: 0 0.2rem; cursor: pointer; }
.inst-remove:hover:not(:disabled) { color: #b3261e; }
.inst-remove:disabled { opacity: 0.35; cursor: default; }
.inst-foot .btn-link { grid-column: 1; justify-self: start; }
.inst-foot .inst-total { grid-column: 2 / 4; justify-self: end; font-size: 0.82rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.inst-total.ok { color: #1b7a4a; } .inst-total.bad { color: #b3261e; }
@media (max-width: 640px) { .inst { min-width: 0; width: 100%; } }

/* ── Tours list: live badge ──────────────────────────────────────────────── */
.live-badge {
  display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.18rem 0.6rem 0.18rem 0.5rem;
  border-radius: 999px; background: #e8f7ee; color: #14733d; font-size: 0.74rem; font-weight: 700;
  letter-spacing: 0.06em; text-transform: uppercase; white-space: nowrap;
}
.live-badge i { position: relative; width: 0.55rem; height: 0.55rem; border-radius: 50%; background: #1fa757; }
.live-badge i::after {
  content: ""; position: absolute; inset: -0.3rem; border-radius: 50%; background: #1fa757; opacity: 0.45;
  animation: live-pulse 1.6s ease-out infinite;
}
@keyframes live-pulse { 0% { transform: scale(0.4); opacity: 0.6; } 100% { transform: scale(1.6); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .live-badge i::after { animation: none; opacity: 0; } }
.status-dim { color: #8b98a4; font-size: 0.85rem; white-space: nowrap; }

/* ── Tours: itinerary & stays view ───────────────────────────────────────── */
.tour-viewbar { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; margin: 0 0 0.6rem; }
.tour-plan-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); gap: 0.9rem; }
.tour-plan-card { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 0.85rem 1rem 0.9rem; box-shadow: var(--card-shadow); }
.tour-plan-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 0.8rem; margin-bottom: 0.6rem; }
.tour-plan-head > div { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.tour-plan-title { font-weight: 650; color: var(--ink); text-decoration: none; font-size: 1rem; }
.tour-plan-title:hover { color: var(--brand); }
.tour-plan-meta { font-size: 0.78rem; color: var(--ink-soft); }
.tour-plan-days { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; }
.tour-plan-days li { display: grid; grid-template-columns: 2.4rem 1fr 1.2fr; gap: 0.6rem; align-items: baseline; padding: 0.32rem 0; border-top: 1px solid #eef3f6; font-size: 0.86rem; }
.tour-plan-days li:first-child { border-top: 0; }
.tour-plan-daynum { font-size: 0.72rem; font-weight: 700; color: #14607f; background: #e1eef5; border-radius: 999px; padding: 0.05rem 0.45rem; text-align: center; }
.tour-plan-route { color: var(--ink); }
.tour-plan-stay strong { font-weight: 600; }
.tour-plan-stay small { color: var(--ink-soft); }
.tour-plan-stay em { color: #9aacb6; font-style: normal; }
@media (max-width: 720px) { .tour-plan-grid { grid-template-columns: 1fr; } .tour-plan-days li { grid-template-columns: 2.4rem 1fr; } .tour-plan-stay { grid-column: 2; } }
.tb-fs { border: 0; padding: 0; margin: 0; min-width: 0; }
.tb-fs:disabled { opacity: 0.62; }
.tour-plan-route em { font-style: normal; color: #9aacb6; }

/* ── Compare tours: differences ──────────────────────────────────────────── */
.tour-compare-table td.tour-compare-diff { background: #fff8e6; box-shadow: inset 3px 0 0 #e9b949; }
.tour-compare-list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 0.15rem; }
.tour-compare-list li { position: relative; padding-left: 1rem; font-size: 0.86rem; }
.tour-compare-list li::before { content: "•"; position: absolute; left: 0.2rem; color: #9aacb6; }
.tour-compare-list li.only-here { background: #e8f7ee; color: #14733d; border-radius: 6px; padding: 0.1rem 0.4rem 0.1rem 1.1rem; font-weight: 600; }
.tour-compare-list li.only-here::before { content: "+"; color: #1fa757; left: 0.35rem; font-weight: 800; }
.tour-compare-missing { margin-top: 0.5rem; padding-top: 0.4rem; border-top: 1px dashed #e3eaee; }
.tour-compare-missing > span { display: block; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: #a3261e; margin-bottom: 0.2rem; }
.tour-compare-missing li { color: #a3261e; text-decoration: line-through; text-decoration-color: rgba(163,38,30,.5); }
.tour-compare-missing li::before { content: "−"; color: #a3261e; font-weight: 800; }

/* ── Hotel desk ──────────────────────────────────────────────────────────── */
.alert-ok { background: #e8f7ee; color: #14733d; border: 1px solid #bfe6cd; border-radius: 10px; padding: 0.6rem 0.9rem; }
.hd-tiles { display: flex; flex-wrap: wrap; gap: 0.7rem; margin: 0 0 1rem; }
.hd-tile { display: flex; flex-direction: column; gap: 0.1rem; min-width: 9rem; padding: 0.7rem 0.95rem; border: 1px solid var(--line); border-radius: 12px; background: #fff; text-align: left; cursor: pointer; text-decoration: none; color: inherit; box-shadow: var(--card-shadow); }
.hd-tile b { font-size: 1.4rem; line-height: 1.1; color: var(--ink); }
.hd-tile span { font-size: 0.78rem; color: var(--ink-soft); }
.hd-tile.on { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(20,108,140,.14); }
.hd-tile-warn b { color: #b3261e; }
.hd-table td { vertical-align: top; }
.hd-when > *, .hd-hotel > *, .hd-group > *, .hd-rooms > * { display: block; }
.hd-rooms strong, .hd-rooms > span:first-of-type { display: inline; }
.hd-when strong { white-space: nowrap; }
.hd-when span, .hd-hotel span, .hd-group span, .hd-rooms span { font-size: 0.84rem; color: var(--ink-soft); }
.hd-when small, .hd-hotel small, .hd-group small, .hd-rooms small { font-size: 0.76rem; color: #8b98a4; }
.hd-due { color: #b3261e !important; font-weight: 700; }
.hd-noemail { color: #b3261e !important; }
.hd-status { display: inline-block; padding: 0.15rem 0.6rem; border-radius: 999px; font-size: 0.74rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; white-space: nowrap; }
.hd-status-1 { background: #fdecec; color: #a3261e; }
.hd-status-2 { background: #fff4d6; color: #8a5a13; }
.hd-status-3 { background: #e8f7ee; color: #14733d; }
.hd-status-4 { background: #eef2f5; color: #6a7f8c; }
.hd-ref, td .hd-ref { display: block; font-size: 0.78rem; color: var(--ink); margin-top: 0.2rem; }
.hd-row-due td { background: #fff8f7; }
.hd-row-ok td { background: #f6fcf8; }
.hd-row-off td { opacity: 0.55; }
.hd-detail-row td { background: #f7fafb; padding: 0.8rem 1.2rem 1rem; }
.hd-detail { display: grid; grid-template-columns: 1.6fr 1fr; gap: 1.4rem; }
.hd-detail h4 { margin: 0.6rem 0 0.4rem; font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-soft); }
.hd-detail h4:first-child { margin-top: 0; }
.hd-detail-actions { display: flex; flex-wrap: wrap; gap: 0.4rem 1.2rem; margin-top: 0.5rem; }
.hd-guests { margin: 0; padding-left: 1.1rem; font-size: 0.86rem; }
.hd-preview { margin-top: 0.7rem; border: 1px solid var(--line); border-radius: 10px; background: #fff; overflow: hidden; }
.hd-preview-head { padding: 0.5rem 0.8rem; background: #eef3f6; font-size: 0.82rem; }
.hd-preview-body { padding: 0.8rem 1rem; font-size: 0.9rem; }
@media (max-width: 900px) { .hd-detail { grid-template-columns: 1fr; } }
.dot-red { color: #d05a6e; background: #d05a6e; }

/* ── Group requests (office) ─────────────────────────────────────────────── */
.gq-layout { display: grid; grid-template-columns: 360px 1fr; gap: 1.2rem; align-items: start; }
.gq-list { display: flex; flex-direction: column; gap: 0.5rem; }
.gq-row { display: flex; justify-content: space-between; gap: 0.6rem; align-items: center; background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 0.65rem 0.85rem; text-decoration: none; color: inherit; }
.gq-row:hover { border-color: var(--brand); } .gq-row.on { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(20,108,140,.14); }
.gq-row.unread { border-left: 4px solid #e8703d; }
.gq-row-main { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.gq-row-main strong { color: var(--ink); } .gq-row-main span { font-size: 0.82rem; color: var(--ink-soft); } .gq-row-main small { font-size: 0.74rem; color: #8b98a4; }
.gq-status { display: inline-block; padding: 0.14rem 0.55rem; border-radius: 999px; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; white-space: nowrap; }
.gq-status-1 { background: #e1eef5; color: #14607f; } .gq-status-2 { background: #fff4d6; color: #8a5a13; } .gq-status-3 { background: #e8f7ee; color: #14733d; }
.gq-status-4 { background: #dff5e7; color: #0f5a30; } .gq-status-5 { background: #fdecec; color: #a3261e; } .gq-status-6, .gq-status-7 { background: #eef2f5; color: #6a7f8c; }
.gq-detail { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 1.1rem 1.3rem; box-shadow: var(--card-shadow); min-height: 20rem; }
.gq-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: 0.8rem; }
.gq-head h2 { margin: 0 0 0.2rem; display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; }
.gr-ref { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.78rem; color: var(--ink-soft); background: #eef2f5; border-radius: 6px; padding: 0.1rem 0.45rem; }
.gq-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 0.8rem; margin-bottom: 1rem; }
.gq-facts div { display: flex; flex-direction: column; gap: 0.1rem; } .gq-facts span { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-soft); }
.gq-facts strong { font-size: 0.95rem; } .gq-facts small { font-size: 0.78rem; color: #8b98a4; }
.gq-section { margin-top: 1rem; padding-top: 0.8rem; border-top: 1px solid #eef3f6; }
.gq-section h3 { margin: 0 0 0.5rem; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-soft); }
.gq-table td small { display: inline; }
.gq-changed td { background: #fff8e6; }
.gq-incl { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.gq-incl span { font-size: 0.82rem; padding: 0.15rem 0.6rem; border-radius: 999px; background: #eef2f5; }
.gq-incl-added { background: #e8f7ee !important; color: #14733d; font-weight: 600; } .gq-incl-removed { background: #fdecec !important; color: #a3261e; text-decoration: line-through; } .gq-incl-excluded { color: #8b98a4; }
.gq-special { margin: 0.6rem 0 0; }
.gq-answer { background: #f7fafb; border-radius: 12px; padding: 0.8rem 1rem; border-top: 0; }
.gq-decline { margin-top: 0.6rem; } .gq-decline summary { cursor: pointer; color: #b3261e; font-size: 0.88rem; }
.gr-msgs { display: flex; flex-direction: column; gap: 0.5rem; max-height: 22rem; overflow: auto; }
.gr-msg { padding: 0.5rem 0.75rem; border-radius: 12px; max-width: 85%; } .gr-msg p { margin: 0.15rem 0 0; white-space: pre-wrap; } .gr-msg small { color: #8b98a4; font-size: 0.72rem; }
.gr-msg.mine { align-self: flex-end; background: #e6f1f2; } .gr-msg.theirs { align-self: flex-start; background: #f4f8fa; }
@media (max-width: 900px) { .gq-layout { grid-template-columns: 1fr; } }
