:root {
  --rsh-blue: #1f4e6b;
  --rsh-sand: #fbf3dc;
  --rsh-block: #d6ecf6;
  --rsh-other: #eeeeee;
}
[data-bs-theme="dark"] {
  --rsh-sand: #3a3524;
  --rsh-block: #1e3a48;
  --rsh-other: #2b2f33;
}
body { background: var(--bs-tertiary-bg); font-size: .925rem; }
.app-nav { background: var(--rsh-blue); }
.app-nav .navbar-brand, .app-nav .nav-link { color: #fff; }
.app-nav .nav-link:hover, .app-nav .nav-link.active { color: #fff; background: rgba(255,255,255,.14); border-radius: .375rem; }
.app-nav .btn-outline-secondary { color: #fff; border-color: rgba(255,255,255,.4); }
.app-nav .navbar-toggler { border-color: rgba(255,255,255,.5); }
.app-nav .navbar-toggler-icon { filter: invert(1); }
.login-wrap { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.login-card { width: 100%; max-width: 400px; }
.code-input { letter-spacing: .4em; font-variant-numeric: tabular-nums; }

/* Nøgletal */
.kpi { background: var(--bs-body-bg); border: 1px solid var(--bs-border-color); border-radius: .5rem; padding: .75rem 1rem; height: 100%; }
.kpi .kpi-label { font-size: .75rem; text-transform: uppercase; letter-spacing: .04em; color: var(--bs-secondary-color); }
.kpi .kpi-value { font-size: 1.7rem; font-weight: 600; line-height: 1.2; font-variant-numeric: tabular-nums; }
.kpi .kpi-sub { font-size: .8rem; color: var(--bs-secondary-color); }
.card { border-color: var(--bs-border-color); }
.card-header { background: var(--bs-body-bg); font-weight: 600; }

/* Tabeller */
.table-num td.num, .table-num th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.table-overview th { position: sticky; top: 56px; background: var(--bs-body-bg); z-index: 2; font-size: .8rem; }
.neg { color: var(--bs-danger); font-weight: 600; }
.pos { color: var(--bs-success); }
.komit-input { width: 70px; text-align: right; padding: .1rem .3rem; }
.bar { height: 6px; background: var(--bs-secondary-bg); border-radius: 3px; overflow: hidden; min-width: 60px; }
.bar > span { display: block; height: 100%; background: var(--rsh-blue); }
.bar > span.full { background: var(--bs-success); }
.bar > span.over { background: var(--bs-danger); }

/* Værelsesplan */
.roomplan td, .roomplan th { padding: .25rem .45rem; vertical-align: middle; }
.roomplan tr.cat-row td { background: var(--rsh-sand); font-weight: 600; font-size: .82rem; }
.roomplan tr.blocked td { background: var(--rsh-block); }
.roomplan tr.other td { background: var(--rsh-other); color: var(--bs-secondary-color); }
.roomplan tr.room-start td { border-top: 2px solid var(--bs-border-color); }
.roomplan .rno { font-weight: 600; width: 52px; }
.roomplan .bedno { color: var(--bs-secondary-color); width: 22px; font-size: .75rem; }
.roomplan .actions { white-space: nowrap; text-align: right; width: 1%; }
.roomplan .actions .btn { padding: .05rem .35rem; }
.roomplan tr.free:hover td { background: var(--bs-success-bg-subtle); cursor: pointer; }
.roomplan .note { font-size: .82rem; color: var(--bs-secondary-color); }
.badge-m { background: #2a6f97; }
.chip { display: inline-block; padding: .1rem .5rem; border-radius: 1rem; font-size: .75rem; background: var(--bs-secondary-bg); }
.manchet { white-space: pre-wrap; font-size: .9rem; max-height: 340px; overflow: auto; }
.sticky-side { position: sticky; top: 70px; }
.search-hit { cursor: pointer; }
.copied { animation: flash 1s; }
@keyframes flash { from { background: var(--bs-success-bg-subtle); } to { background: transparent; } }
@media print {
  .app-nav, .no-print, .btn, form.d-flex { display: none !important; }
  body { background: #fff; }
  .col-lg-8 { width: 100% !important; }
}

.testdata-banner { background: repeating-linear-gradient(45deg, #ffe08a, #ffe08a 12px, #ffd45c 12px, #ffd45c 24px); color: #3d2e00; }
.testdata-banner a { color: #3d2e00; font-weight: 600; }
.season-pills .nav-link { border: 1px solid var(--bs-border-color); margin-right: .35rem; }
