.global-clinic-control[hidden] { display: none; }
.app-content--manager > .app-content__header,
.app-content--manager > .rotate-hint { display: none; }
.app-content.app-content--manager > .app-page { margin-top: 0; }

@font-face {
  font-family: "Wigrum";
  src: url("fonts/Wigrum-Regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Wigrum";
  src: url("fonts/Wigrum-Medium.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "LyonDisplay";
  src: url("fonts/LyonDisplay-Light.woff2") format("woff2");
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}

:root {
  color-scheme: light;
  --color-black: #000000;
  --color-charcoal: #1a1919;
  --color-white: #ffffff;
  --color-light-grey: #f0f0f4;
  --color-blue: #95a5dc;
  --color-dark-blue: #8898d2;
  --color-green: #6ca491;
  --color-orange: #fb9c63;

  --radius-sm: 10px;
  --radius-md: 15px;
  --radius-lg: 20px;

  --shadow-1: 0 6px 18px rgba(0, 0, 0, 0.08);
  --shadow-2: 0 10px 28px rgba(0, 0, 0, 0.12);

  --font-sans: "Wigrum", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --font-serif: "LyonDisplay", Georgia, "Times New Roman", serif;

  --app-bg: var(--color-light-grey);
  --panel-bg: var(--color-white);
  --text: var(--color-charcoal);
  --muted: rgba(26, 25, 25, 0.7);
  --border: rgba(26, 25, 25, 0.14);
  --primary: var(--color-dark-blue);
  --primary-contrast: var(--color-white);
  --accent: var(--color-orange);
  --accent-contrast: var(--color-white);
  --success: var(--color-green);
  --warning: var(--color-orange);
  --danger: #d94d4d;
}

* {
  box-sizing: border-box;
}

html, body {
  margin: 0;
  min-height: 100%;
  font-family: var(--font-sans);
  background: var(--app-bg);
  color: var(--text);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  background:
    radial-gradient(circle at top left, rgba(251, 156, 99, 0.18), transparent 30%),
    radial-gradient(circle at top right, rgba(136, 152, 210, 0.18), transparent 28%),
    var(--app-bg);
}

::selection {
  background: #f89155;
  color: var(--color-white);
}

.app-shell {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 20px;
  padding: 20px;
  transition: grid-template-columns 0.2s ease;
}

.sidebar-is-collapsed .app-shell {
  grid-template-columns: 64px minmax(0, 1fr);
}

.app-nav {
  background: linear-gradient(180deg, #111214 0%, #1a1919 100%);
  color: #f2f4ff;
  border-radius: var(--radius-lg);
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow: var(--shadow-2);
  padding: 20px 16px;
  position: sticky;
  top: 20px;
  height: calc(100vh - 40px);
  overflow: auto;
  transition: padding 0.2s ease;
}

.app-nav__toggle {
  display: flex;
  width: 34px;
  height: 34px;
  margin: 0 0 14px auto;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255, 255, 255, 0.3);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.08);
  color: #fff;
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
}

.app-nav__toggle:hover,
.app-nav__toggle:focus-visible {
  background: rgba(149, 165, 220, 0.28);
  outline: 2px solid rgba(255, 255, 255, 0.75);
  outline-offset: 2px;
}

.sidebar-is-collapsed .app-nav {
  padding: 20px 14px;
  overflow: hidden;
}

.sidebar-is-collapsed .app-nav__toggle {
  margin-inline: auto;
}

.sidebar-is-collapsed .app-brand,
.sidebar-is-collapsed .app-nav__menu {
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
}

.app-brand__overline {
  margin: 0;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.72rem;
  color: rgba(255, 255, 255, 0.6);
}

.app-brand__logo {
  display: block;
  width: 58px;
  height: 58px;
  margin-bottom: 14px;
  border-radius: 10px;
}

.app-header-mobile-logo {
  display: none;
}

.app-brand__title {
  margin: 6px 0 8px;
  font-size: 1.65rem;
  line-height: 1.05;
  color: #ffffff;
}

.app-brand__subtitle {
  margin: 0;
  color: rgba(255, 255, 255, 0.75);
  font-family: var(--font-serif);
}

.app-brand__welcome {
  margin: 0 0 8px;
  color: rgba(255, 255, 255, 0.9);
  font-size: 0.95rem;
}

.app-nav__menu {
  margin-top: 18px;
  display: grid;
  gap: 8px;
}

.app-nav__link {
  display: block;
  text-decoration: none;
  color: #f6f7ff;
  border: 1px solid rgba(255, 255, 255, 0.18);
  background: rgba(255, 255, 255, 0.04);
  border-radius: 12px;
  padding: 10px 12px;
  transition: transform 0.15s ease, background 0.15s ease;
}

.app-nav__link:hover {
  transform: translateX(3px);
  background: rgba(149, 165, 220, 0.22);
}

.app-nav__link--active {
  border-color: rgba(149, 165, 220, 0.7);
  background: rgba(149, 165, 220, 0.26);
}

.app-nav__link-short {
  display: none;
}

.app-nav__link--logout {
  margin-top: 32px;
  border-color: rgba(251, 156, 99, 0.38);
  background: rgba(251, 156, 99, 0.12);
}

.app-nav__link--logout:hover {
  background: rgba(251, 156, 99, 0.24);
}

.app-content {
  min-width: 0;
}

.app-content__header {
  background: var(--panel-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 7px 12px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
}

.app-refresh {
  margin: 0 0 0 auto;
  color: var(--muted);
  font-size: 0.82rem;
  line-height: 1.15;
  text-align: right;
  white-space: nowrap;
}

.app-header-right {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 12px;
}


.auth-action-link {
  text-decoration: none;
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 6px 12px;
  background: #fff;
  color: #111214;
  font-size: 0.86rem;
}

.auth-action-link:hover {
  background: #f3f4fa;
}

.rotate-hint {
  display: none;
}

.app-page {
  margin-top: 14px;
}

.page-grid {
  display: grid;
  gap: 14px;
}

.page-heading {
  margin-bottom: 16px;
}

.landing-shell {
  display: grid;
  place-items: center;
  min-height: calc(100vh - 220px);
}

.auth-root {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 20px;
}

.landing-card {
  width: min(760px, 100%);
  background:
    linear-gradient(150deg, rgba(136, 152, 210, 0.16), rgba(108, 164, 145, 0.12)),
    var(--panel-bg);
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 30px;
  box-shadow: var(--shadow-1);
}

.landing-card__logo {
  display: block;
  width: 72px;
  height: 72px;
  margin-bottom: 16px;
  border-radius: 12px;
}

.landing-card__eyebrow {
  margin: 0;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: #273167;
  font-size: 0.78rem;
}

.landing-card__title {
  margin: 8px 0;
  font-size: clamp(1.8rem, 4vw, 2.5rem);
  font-family: var(--font-serif);
  font-weight: 300;
  color: #1a244f;
}

.landing-card__subtitle {
  margin: 0;
  max-width: 62ch;
  color: var(--muted);
  line-height: 1.5;
}

.landing-card__actions {
  margin-top: 22px;
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
}

.landing-login-button {
  display: inline-block;
  text-decoration: none;
  border: 1px solid rgba(17, 18, 20, 0.2);
  border-radius: 999px;
  padding: 11px 18px;
  background: linear-gradient(135deg, #1e2b63, #263775);
  color: #ffffff;
  font-weight: 500;
}

.landing-login-button:hover {
  filter: brightness(1.05);
}

.landing-secondary-link {
  color: #1e2b63;
  text-decoration: none;
  font-weight: 500;
}

.landing-secondary-link:hover {
  text-decoration: underline;
}

.landing-card__hint {
  margin: 16px 0 0;
  color: #4f5574;
  font-size: 0.92rem;
}

.panel {
  background: var(--panel-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 18px;
  box-shadow: var(--shadow-1);
}

.panel__title {
  margin-top: 0;
  font-family: var(--font-serif);
  font-weight: 300;
  color: #273167;
}

.panel__subtitle {
  margin: 4px 0 0;
  color: var(--muted);
}

.global-clinic-control {
  display: grid;
  grid-template-columns: auto minmax(170px, 230px);
  align-items: center;
  gap: 8px;
}

.global-clinic-control label {
  color: var(--muted);
  font-size: 0.86rem;
}

#global-clinic-filter {
  min-width: 170px;
}

.definition-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.definition-section h3 { margin-top: 0; color: #273167; }
.definition-card { border: 1px solid var(--border); border-radius: 12px; padding: 16px; background: #fff; }
.definition-card:focus { outline: 3px solid var(--color-blue); outline-offset: 2px; }
.definition-card__title { margin: 0 0 8px; }
.definition-card p { line-height: 1.5; }
.definition-guide { margin-bottom: 24px; }
.definition-guide h3:not(:first-child) { margin-top: 24px; }
.definition-guide h4 { margin: 0 0 8px; color: #273167; }
.definition-guide p, .definition-guide li { line-height: 1.5; }
.definition-card__caveat { padding: 10px; border-left: 4px solid var(--color-orange); background: rgba(251, 156, 99, 0.12); }
.surge-physician-list { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); }
.surge-physician-list h4 { margin: 0 0 6px; }
.surge-physician-list ul { columns: 2; margin-bottom: 0; padding-left: 22px; }

.controls-row {
  display: grid;
  grid-template-columns: 180px minmax(220px, 420px);
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
}

.controls-row[hidden] {
  display: none;
}

.control {
  width: 100%;
}

.kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(120px, 1fr));
  gap: 10px;
}

.kpi-card {
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 12px;
  background: #fff;
}

.kpi-card__label {
  margin: 0;
  font-size: 0.82rem;
  color: var(--muted);
}

.kpi-card__value {
  margin: 6px 0 0;
  font-size: 1.6rem;
  font-weight: 500;
  color: #111214;
}

.floorplan-wrapper {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 12px;
  align-items: start;
}

.floorplan-sections {
  display: grid;
  gap: 20px;
}

.floorplan-section-title {
  margin: 0;
  color: var(--text, inherit);
  font-size: 1.1rem;
}

/* Carte collective superposee au plan; la legende generale explique les couleurs. */
.floorplan-summary-card {
  position: absolute;
  z-index: 3;
  box-sizing: border-box;
  container-type: size;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  padding: 2px;
  border: 1px solid #273167;
  border-radius: 6px;
  background: #fff;
  color: #273167;
  line-height: 1;
  text-align: center;
  overflow: hidden;
}

.floorplan-summary-card__title {
  font-size: min(11cqw, 12cqh);
  font-weight: 700;
  text-transform: uppercase;
}

.floorplan-summary-card__heading {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-width: 0;
  max-width: 100%;
}

.floorplan-card-icon {
  display: block;
  width: clamp(12px, 8cqh, 24px);
  height: clamp(12px, 8cqh, 24px);
  flex: 0 0 auto;
  object-fit: contain;
}

.floorplan-summary-card--vertical .floorplan-summary-card__heading {
  flex-direction: column;
  gap: 1px;
}

.floorplan-summary-card--vertical {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr) minmax(0, 0.8fr) minmax(0, 2fr);
  justify-content: stretch;
  justify-items: center;
  gap: 2px;
  padding: 4px;
}

.floorplan-summary-card--vertical .floorplan-summary-card__heading {
  align-self: stretch;
  gap: 1cqh;
}

.floorplan-summary-card--vertical .floorplan-summary-card__title {
  font-size: min(12cqw, 10cqh);
}

.floorplan-summary-card--vertical .floorplan-card-icon {
  width: min(42cqw, 12cqh);
  height: min(42cqw, 12cqh);
}

.floorplan-summary-card__total {
  font-size: min(32cqw, 18cqh);
}

.floorplan-summary-card--vertical .floorplan-summary-card__buckets {
  flex-direction: column;
  align-self: stretch;
  gap: 2px;
}

.floorplan-summary-card__buckets {
  display: flex;
  justify-content: center;
  gap: 4cqw;
  width: 100%;
}

.floorplan-summary-card__bucket {
  flex: 1 1 0;
  max-width: 24cqw;
  padding: 2cqh 0;
  border-radius: 4px;
  color: #111214;
  font-size: min(20cqw, 10cqh);
  font-weight: 700;
}

.floorplan-summary-card__bucket-label {
  display: block;
  margin-top: 0.3em;
  font-size: 0.45em;
  font-weight: 500;
  white-space: nowrap;
}

.floorplan-summary-card:not(.floorplan-summary-card--vertical) {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 4fr);
  grid-template-rows: minmax(0, 1fr) minmax(0, 2fr);
  gap: 2px;
  padding: 3px;
}

.floorplan-summary-card:not(.floorplan-summary-card--vertical) .floorplan-summary-card__heading {
  grid-column: 1 / -1;
  justify-content: flex-start;
}

.floorplan-summary-card:not(.floorplan-summary-card--vertical) .floorplan-summary-card__total {
  font-size: min(12cqw, 38cqh);
}

.floorplan-summary-card:not(.floorplan-summary-card--vertical) .floorplan-summary-card__buckets {
  height: 100%;
  min-height: 0;
  gap: 2cqw;
}

.floorplan-summary-card:not(.floorplan-summary-card--vertical) .floorplan-summary-card__bucket {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
  padding: 0;
  font-size: min(8cqw, 25cqh);
}

.floorplan-summary-card--vertical .floorplan-summary-card__bucket {
  max-width: none;
  width: 100%;
  padding: 1cqh 0;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 0;
  padding: 0;
  font-size: min(24cqw, 10cqh);
}

.floorplan-summary-card__bucket--up-to-60 { background: #6CA491; }
.floorplan-summary-card__bucket--between-60-and-90 { background: #F2C94C; }
.floorplan-summary-card__bucket--at-least-90 { background: #D94D4D; }
.floorplan-summary-card__bucket--unknown {
  background: #fff;
  box-shadow: inset 0 0 0 1px var(--border);
}

.floorplan-summary-card--radiology.floorplan-summary-card--vertical {
  grid-template-rows: minmax(0, 1fr) minmax(0, 0.8fr) minmax(0, 2fr) minmax(0, 0.45fr);
}

.floorplan-summary-card--radiology:not(.floorplan-summary-card--vertical) {
  grid-template-rows: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr);
}

.floorplan-summary-card__wait {
  grid-column: 1 / -1;
  width: 100%;
  min-width: 0;
  align-self: stretch;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 1px;
}

.floorplan-summary-card__wait-bar {
  height: max(2px, 1cqh);
  flex-shrink: 0;
  border-radius: 999px;
}

.floorplan-summary-card__wait .floorplan-room-card__footer {
  border-top: 0;
  padding-top: 0;
  gap: 1px;
  font-size: clamp(5px, 6cqw, 10px);
}

.floorplan-summary-card__wait .floorplan-room-card__footer strong {
  font-size: 1em;
}

.floorplan-radiology-wait-zone {
  position: absolute;
  z-index: 2;
  pointer-events: none;
  box-sizing: border-box;
  border: 1px solid #273167;
  border-radius: 2px;
}

/* Carte detaillee d'une salle; clics et survol passent a la salle en dessous. */
.floorplan-room-card {
  position: absolute;
  z-index: 3;
  box-sizing: border-box;
  container-type: size;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: space-between;
  padding: 4px;
  border: 2px solid var(--room-card-accent, #273167);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.96);
  color: #273167;
  line-height: 1.05;
  text-align: center;
  overflow: hidden;
  pointer-events: none;
  box-shadow: 0 2px 6px rgba(17, 18, 20, 0.18);
}

.floorplan-room-card--alert {
  border-color: #D94D4D;
  background: #fdf1f1;
}

/* Le padding de la carte ne doit pas dependre des dimensions du plan parent. */
.floorplan-stage--cropped .floorplan-room-card:not(.floorplan-room-card--strip) {
  padding: 4px 8px;
}

.floorplan-room-card__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2cqw;
  font-size: min(6cqw, 5cqh);
  font-weight: 700;
  text-transform: uppercase;
  white-space: nowrap;
}

.floorplan-room-card__title {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.floorplan-room-card__title .floorplan-card-icon {
  width: min(11cqw, 7cqh);
  height: min(11cqw, 7cqh);
}

.floorplan-room-card--waiting-summary .floorplan-room-card__buckets {
  flex-direction: column;
  gap: 1cqh;
  min-height: 0;
  flex: 1 1 0;
}

.floorplan-room-card--waiting-summary {
  justify-content: flex-start;
  gap: 2px;
}

.floorplan-room-card--waiting-summary .floorplan-room-card__header {
  font-size: min(7cqw, 5cqh);
}

.floorplan-room-card--waiting-summary .floorplan-room-card__caption {
  margin-bottom: 2cqh;
}

.floorplan-room-card--waiting-summary .floorplan-room-card__bucket {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  max-width: none;
  box-sizing: border-box;
  gap: 4cqw;
  padding: 1cqh 4cqw;
  font-size: min(13cqw, 8cqh);
  text-align: left;
}

.floorplan-room-card--waiting-summary .floorplan-room-card__bucket-label {
  max-width: 76%;
  font-size: min(5.5cqw, 3.8cqh);
  line-height: 1.15;
}

.floorplan-room-card--waiting-summary .floorplan-room-card__footer {
  font-size: min(5.5cqw, 3.8cqh);
  padding-top: 1cqh;
}

.floorplan-room-card--waiting-summary .floorplan-room-card__total {
  font-size: min(30cqw, 15cqh);
}

.floorplan-room-card--waiting-horizontal .floorplan-room-card__buckets {
  flex-direction: row;
  gap: 2cqw;
  flex: 0 1 32%;
}

.floorplan-room-card--waiting-horizontal .floorplan-room-card__header {
  font-size: min(7cqw, 7cqh);
}

.floorplan-room-card--waiting-horizontal .floorplan-room-card__title .floorplan-card-icon {
  width: min(14cqw, 12cqh);
  height: min(14cqw, 12cqh);
}

.floorplan-room-card--waiting-horizontal .floorplan-room-card__total {
  font-size: min(30cqw, 20cqh);
}

.floorplan-room-card--waiting-horizontal .floorplan-room-card__caption {
  font-size: min(5cqw, 5cqh);
  text-transform: none;
}

.floorplan-room-card--waiting-horizontal .floorplan-room-card__header {
  justify-content: center;
}

.floorplan-room-card--waiting-horizontal .floorplan-room-card__title {
  gap: 2cqw;
}

.floorplan-room-card--waiting-horizontal .floorplan-room-card__bar {
  margin-top: auto;
}

.floorplan-room-card--waiting-horizontal .floorplan-room-card__bucket {
  flex-direction: column;
  justify-content: center;
  gap: 1cqh;
  min-width: 0;
  padding: 2cqh 1cqw;
}

.floorplan-room-card--waiting-horizontal .floorplan-room-card__bucket-label {
  max-width: none;
  font-size: min(4cqw, 5cqh);
  white-space: nowrap;
}

.floorplan-room-card__bucket-label {
  font-size: 0.75em;
  font-weight: 500;
}

.floorplan-room-card__alert {
  color: #B42318;
  font-size: 0.85em;
  white-space: nowrap;
}

.floorplan-room-card__total {
  font-size: clamp(10px, 18cqh, 34px);
}

.floorplan-room-card__caption {
  margin-top: 0;
  font-size: clamp(5px, 5.5cqw, 11px);
  text-transform: uppercase;
  white-space: nowrap;
  opacity: 0.8;
}

.floorplan-room-card__buckets {
  display: flex;
  gap: 3cqw;
}

.floorplan-room-card__bucket {
  flex: 1 1 0;
  padding: 3cqh 0;
  border-radius: 4px;
  color: #111214;
  font-size: clamp(7px, 11cqh, 20px);
  font-weight: 700;
}

.floorplan-room-card__bar {
  display: flex;
  gap: 2px;
  height: clamp(3px, 3cqh, 6px);
}

.floorplan-room-card__segment {
  flex: 1 1 0;
  border-radius: 999px;
}

.floorplan-room-card__footer {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 2cqw;
  padding-top: 2cqh;
  border-top: 1px solid rgba(39, 49, 103, 0.15);
  font-size: clamp(5px, 6.5cqw, 12px);
  white-space: nowrap;
}

.floorplan-room-card__footer strong {
  font-size: 1.5em;
}

.floorplan-room-card--alert .floorplan-room-card__footer strong {
  color: #B42318;
}

/* Variante large : salle d'attente et suivi des places, comme une maquette 2:1. */
.floorplan-room-card--wide {
  justify-content: flex-start;
  gap: 3px;
  padding: 4px 6px;
}

.floorplan-room-card--wide .floorplan-room-card__header {
  font-size: clamp(6px, 3.6cqw, 15px);
}

.floorplan-room-card__section {
  display: flex;
  flex-direction: column;
  gap: 0.8cqh;
  padding: 1.2cqh 2cqw;
  border: 1px solid rgba(39, 49, 103, 0.18);
  border-radius: 6px;
  background: #fff;
}

.floorplan-room-card__section-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 2cqw;
}

.floorplan-room-card__section-caption {
  color: var(--muted);
  font-size: clamp(8px, 1.2cqw, 14px);
  white-space: nowrap;
}

.floorplan-room-card__waiting-heading {
  display: flex;
  align-items: center;
  gap: 8px;
}

.floorplan-room-card__section-title {
  font-size: clamp(5px, 2.5cqw, 11px);
  font-weight: 700;
  text-align: left;
  text-transform: uppercase;
  white-space: nowrap;
}

.floorplan-room-card__occupancy {
  font-size: clamp(6px, 3cqw, 13px);
  white-space: nowrap;
}

.floorplan-room-card__row {
  display: flex;
  align-items: center;
  gap: 2.5cqw;
}

.floorplan-room-card__count {
  display: flex;
  flex-direction: column;
}

.floorplan-room-card--wide .floorplan-room-card__total {
  font-size: clamp(8px, 11cqh, 30px);
}

.floorplan-room-card--wide .floorplan-room-card__caption {
  margin-top: 0;
  font-size: clamp(4px, 1.9cqw, 9px);
}

.floorplan-room-card--wide .floorplan-room-card__buckets {
  flex: 1 1 auto;
  gap: 1.5cqw;
}

.floorplan-room-card--wide .floorplan-room-card__bucket {
  padding: 2cqh 0;
  font-size: clamp(6px, 9cqh, 18px);
}

.floorplan-room-card--wide .floorplan-room-card__footer {
  flex-direction: column;
  align-items: flex-start;
  gap: 0.5cqh;
  padding: 0 0 0 2cqw;
  border-top: 0;
  border-left: 1px solid rgba(39, 49, 103, 0.15);
  font-size: clamp(4px, 2.1cqw, 10px);
}

.floorplan-room-card__places {
  flex: 1 1 auto;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 0.8cqw;
}

.floorplan-room-card__section:has(.floorplan-room-card__places) {
  flex: 1 1 auto;
}

.floorplan-room-card__place {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.6cqh;
  padding: 0.8cqh 0;
  border-radius: 4px;
  color: #111214;
  font-size: clamp(4px, 2.1cqw, 10px);
  line-height: 1;
  white-space: nowrap;
}

.floorplan-room-card__place strong {
  font-size: 1.35em;
}

.floorplan-room-card__place--up-to-60 { background: #6CA491; }
.floorplan-room-card__place--between-60-and-90 { background: #F2C94C; }
.floorplan-room-card__place--at-least-90 { background: #D94D4D; }
.floorplan-room-card__place--at-least-120 { background: #8F1F1F; color: #fff; }
.floorplan-room-card__place--unknown,
.floorplan-room-card__place--free {
  background: #fff;
  box-shadow: inset 0 0 0 1px var(--border);
}

.floorplan-room-card__place--free {
  color: #6b7280;
}

/* Variante en bande : salle mince, attente sur une ligne puis places de suivi. */
.floorplan-room-card--strip {
  justify-content: center;
  gap: 2px;
  padding: 2px 4px;
  border-radius: 6px;
}

.floorplan-room-card__strip-row {
  display: flex;
  align-items: center;
  gap: 1.5cqw;
  font-size: min(3cqw, 25cqh);
  white-space: nowrap;
}

.floorplan-room-card__strip-row .floorplan-room-card__title {
  font-weight: 700;
  text-transform: uppercase;
}

.floorplan-room-card--strip .floorplan-room-card__total {
  font-size: 1.35em;
}

.floorplan-room-card--strip .floorplan-room-card__buckets {
  flex: 1 1 0;
  min-width: 0;
  gap: 1cqw;
}

.floorplan-room-card--strip .floorplan-room-card__bucket {
  min-width: 0;
  padding: 0;
  font-size: 1em;
}

.floorplan-room-card__max strong {
  font-size: 1.2em;
}

.floorplan-room-card--alert .floorplan-room-card__max strong {
  color: #B42318;
}

.floorplan-room-card__places--strip {
  grid-template-columns: repeat(var(--place-count), minmax(0, 1fr));
  gap: 2px;
}

.floorplan-room-card__places--strip .floorplan-room-card__place {
  gap: 0;
  padding: 1px 0;
  font-size: clamp(6px, 3.2cqw, 12px);
}

.floorplan-room-card__places--strip .floorplan-room-card__place strong {
  font-size: 1.15em;
}

.floorplan-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 20px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #fff;
  padding: 12px;
}

.floorplan-legend__heading,
.floorplan-legend__metric {
  margin: 0;
}

.floorplan-legend__heading {
  color: #273167;
  font-size: 1rem;
}

.floorplan-legend__metric {
  margin-top: 3px;
  color: var(--muted);
  font-size: 0.88rem;
}

.floorplan-legend__items {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
}

.floorplan-legend__item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.86rem;
  white-space: nowrap;
}

.floorplan-legend__swatch {
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  border: 1px solid rgba(17, 18, 20, 0.4);
  border-radius: 4px;
}

.floorplan-stage .floorplan-summary-card--siblings:not(.floorplan-summary-card--vertical) {
  grid-template-columns: auto minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr) minmax(0, 2fr);
}

.floorplan-stage .floorplan-summary-card--siblings:not(.floorplan-summary-card--vertical) .floorplan-summary-card__bucket {
  flex: 1 1 auto;
  max-width: none;
}

.floorplan-stage .floorplan-summary-card--siblings:not(.floorplan-summary-card--vertical) .floorplan-summary-card__heading {
  justify-content: center;
  gap: 0.6em;
}

.floorplan-stage {
  position: relative;
  container-type: inline-size;
  overflow: hidden;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: #fff;
}

.floorplan-stage-scroll {
  min-width: 0;
}

/* Hauteur disponible pour voir un plan complet sans defilement. */
:root {
  --floorplan-fit-height: calc(100dvh - 120px);
}

.floorplan-layout {
  display: grid;
  gap: 12px;
}

/* Les deux plans de Brossard partagent la meme echelle (largeurs SVG 1193 et 1735). */
.floorplan-stage--brossard-urgence {
  width: min(
    calc(100% * 1193 / 1735),
    calc(var(--floorplan-fit-height) * 1193 / 1160)
  );
  margin-inline: auto;
}

.floorplan-stage--brossard-specialites {
  width: min(100%, calc(var(--floorplan-fit-height) * 1735 / 1160));
  margin-inline: auto;
}

.floorplan-canvas {
  position: relative;
  width: 100%;
}

/* Le fichier St-Eustache contient de grandes marges blanches.
   Recadrage sur le dessin (x 6-1016, y 146-551 du canevas 1024 x 768);
   le canevas complet est conservé pour que les hotspots restent alignés. */
.floorplan-stage--cropped {
  width: min(100%, calc(var(--floorplan-fit-height) * 1010 / 405));
  margin-inline: auto;
  aspect-ratio: 1010 / 405;
}

.floorplan-stage--cropped .floorplan-canvas {
  width: calc(100% * 1024 / 1010);
  transform: translate(-0.5859%, -19.0104%);
}

.floorplan-image {
  display: block;
  width: 100%;
  height: auto;
}

.floorplan-hotspots {
  position: absolute;
  inset: 0;
}

.floorplan-hotspot {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border-radius: 8px;
  border: 0;
  background: rgba(255, 255, 255, 0.18);
  color: #111214;
  font-weight: 500;
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
  padding: 0;
}

/* Sans z-index : l'ancre ne cree pas de contexte d'empilement, donc la salle
   reste sous les etiquettes et cartes, et seule l'infobulle passe au-dessus. */
.floorplan-hotspot-anchor {
  position: absolute;
  pointer-events: none;
}

.floorplan-hotspot-anchor .floorplan-hotspot {
  pointer-events: auto;
}

.floorplan-hover-tooltip {
  position: absolute;
  z-index: 20;
  width: max-content;
  min-width: 210px;
  max-width: 280px;
  padding: 8px 10px;
  border: 1px solid #273167;
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(17, 18, 20, 0.28);
  color: #111214;
  font-size: 0.82rem;
  font-weight: 400;
  line-height: 1.35;
  text-align: left;
  white-space: normal;
  opacity: 0;
  pointer-events: none;
  transform: translateY(4px);
  transition: opacity 0.12s ease, transform 0.12s ease;
}

.floorplan-hover-tooltip--above {
  bottom: calc(100% + 8px);
}

.floorplan-hover-tooltip--below {
  top: calc(100% + 8px);
}

.floorplan-hover-tooltip--left {
  left: 0;
}

.floorplan-hover-tooltip--right {
  right: 0;
}

.floorplan-hover-tooltip--center {
  left: 50%;
  transform: translate(-50%, 4px);
}

.floorplan-hotspot-anchor:hover .floorplan-hover-tooltip,
.floorplan-hotspot--selected + .floorplan-hover-tooltip {
  opacity: 1;
  transform: translateY(0);
}

.floorplan-hotspot-anchor:hover .floorplan-hover-tooltip--center,
.floorplan-hotspot--selected + .floorplan-hover-tooltip--center {
  transform: translate(-50%, 0);
}

/* La bulle ouverte absorbe les taps, sinon ils atteignent la salle en dessous. */
.floorplan-hotspot--selected + .floorplan-hover-tooltip {
  pointer-events: auto;
}

.floorplan-room-label {
  position: absolute;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1px;
  color: #fff;
  font-size: clamp(5px, 0.9cqw, 13px);
  font-weight: 700;
  line-height: 1.05;
  text-align: center;
  text-wrap: balance;
  overflow: visible;
  pointer-events: none;
  text-shadow:
    -1px -1px 0 rgba(0, 0, 0, 0.95),
    1px -1px 0 rgba(0, 0, 0, 0.95),
    -1px 1px 0 rgba(0, 0, 0, 0.95),
    1px 1px 0 rgba(0, 0, 0, 0.95);
}

.floorplan-room-label--vertical {
  writing-mode: vertical-rl;
  text-orientation: mixed;
  white-space: nowrap;
}

/* Salle inactive pour la selection : fond neutre, sans zone interactive. */
.floorplan-room-label--inactive {
  z-index: 1;
  border-radius: 8px;
  background: #fff;
}

.floorplan-hotspot:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.18);
}

.floorplan-hotspot--selected {
  box-shadow: 0 0 0 2px #111214 inset;
}

.floorplan-details {
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #fff;
  padding: 12px;
}

.floorplan-details h4 {
  margin: 0 0 10px;
  color: #273167;
}

.floorplan-details p {
  margin: 0 0 8px;
  font-size: 0.92rem;
}

.daily-grid--compact {
  --ag-grid-size: 2px;
  --ag-cell-horizontal-padding: 3px;
  --ag-row-border-color: rgba(17, 18, 20, 0.1);
  font-size: 0.78rem;
}

.daily-grid--compact .ag-header-cell,
.daily-grid--compact .ag-cell {
  padding-inline: 3px;
}

.daily-grid--compact .ag-header-cell,
.daily-grid--compact .ag-header-cell-text {
  font-weight: 700;
}

.daily-grid--compact .daily-total-cell {
  font-weight: 700;
  justify-content: flex-end;
  text-align: right;
}

.daily-panel {
  padding-block: 14px;
}

.daily-panel .controls-row {
  margin-bottom: 10px;
}

.daily-panel h3 {
  margin-block: 8px;
}

.daily-grid--compact .ag-row-pinned {
  background: #eef0f8;
  font-weight: 700;
  border-top: 2px solid #273167;
}

.lean-grid--compact {
  --ag-grid-size: 2px;
  --ag-cell-horizontal-padding: 3px;
  font-size: 0.73rem;
}

.lean-grid--compact .ag-header-cell {
  padding-inline: 3px;
}

.lean-grid--compact .ag-header-cell-text {
  display: block;
  max-width: 100%;
  overflow: hidden;
  overflow-wrap: anywhere;
  line-height: 1.1;
  text-align: center;
  text-overflow: clip;
  white-space: normal;
}

.lean-grid--compact .ag-header-cell-comp-wrapper,
.lean-grid--compact .ag-header-cell-label {
  max-width: 100%;
  overflow: hidden;
  white-space: normal;
}

.lean-grid--compact .ag-header-cell-label {
  align-items: center;
  justify-content: center;
}

.lean-grid--compact .ag-cell {
  padding-inline: 3px;
}

.lean-grid--compact .ag-right-aligned-cell {
  justify-content: flex-end;
  text-align: right;
}

.lean-grid--compact .ag-row-pinned {
  border-top: 2px solid #273167;
  background: #eef0f8;
}

.lean-grid--compact .ag-row-pinned .ag-cell,
.lean-grid--compact .ag-row-pinned .ag-cell-value {
  font-weight: 700 !important;
}

.lean-grid--compact .surge-level--normal,
.surge-grid .surge-level--normal {
  background: rgba(108, 164, 145, 0.3);
  font-weight: 700;
}

.lean-grid--compact .surge-level--warning,
.surge-grid .surge-level--warning {
  background: rgba(255, 214, 64, 0.48);
  font-weight: 700;
}

.lean-grid--compact .surge-level--elevated,
.surge-grid .surge-level--elevated {
  background: rgba(251, 156, 99, 0.48);
  font-weight: 700;
}

.lean-grid--compact .surge-level--critical,
.surge-grid .surge-level--critical {
  background: rgba(217, 77, 77, 0.34);
  color: #8f1f1f;
  font-weight: 700;
}

.lean-grid--compact .ag-tooltip {
  max-width: min(420px, 90vw);
  padding: 10px 12px;
  border: 1px solid rgba(26, 25, 25, 0.28);
  border-radius: 8px;
  background: #ffffff !important;
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.24);
  color: var(--text) !important;
  opacity: 1 !important;
  white-space: pre-line;
}

.surge-mobile-tooltip {
  display: none;
  position: fixed;
  z-index: 260;
  right: 12px;
  bottom: calc(72px + env(safe-area-inset-bottom));
  left: 12px;
  max-height: min(58vh, 360px);
  padding: 12px 38px 12px 14px;
  overflow: auto;
  border: 1px solid rgba(26, 25, 25, 0.3);
  border-radius: 12px;
  background: #ffffff;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
  color: var(--text);
}

.surge-mobile-tooltip__close {
  position: absolute;
  top: 5px;
  right: 7px;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--text);
  font-size: 1.4rem;
  line-height: 1;
}

.surge-mobile-tooltip pre {
  margin: 0;
  overflow: visible;
  font: inherit;
  line-height: 1.4;
  white-space: pre-wrap;
}

@media (max-width: 900px), (pointer: coarse) {
  .surge-mobile-tooltip--visible {
    display: block;
  }
}

label,
h1,
h2,
h3,
p,
li,
span {
  font-family: var(--font-sans);
}

@media (max-width: 1100px) {
  .app-shell {
    grid-template-columns: 1fr;
  }

  .app-nav {
    position: static;
    height: auto;
  }

  .sidebar-is-collapsed .app-shell {
    grid-template-columns: 1fr;
  }

  .sidebar-is-collapsed .app-nav {
    height: 64px;
  }

  .kpi-grid {
    grid-template-columns: repeat(2, minmax(120px, 1fr));
  }
}

@media (max-width: 900px) and (orientation: portrait) {
  .rotate-hint {
    display: block;
    margin: 8px 0 0;
    color: var(--muted);
    font-size: 0.72rem;
    line-height: 1.2;
  }
}

/* Telephones : portrait etroit ou paysage peu haut (iPhone 13 = 844x390). */
@media (max-width: 700px), (max-height: 520px) and (orientation: landscape) {
  .app-shell {
    width: 100%;
    padding: 8px 8px calc(70px + env(safe-area-inset-bottom));
    gap: 8px;
  }

  .app-nav,
  .sidebar-is-collapsed .app-nav {
    position: fixed;
    z-index: 200;
    inset: auto 0 0 0;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    height: auto;
    padding: 5px 6px calc(5px + env(safe-area-inset-bottom));
    overflow: visible;
    border-radius: 14px 14px 0 0;
    box-shadow: 0 -6px 18px rgba(0, 0, 0, 0.28);
  }

  .app-nav__toggle,
  .app-brand {
    display: none;
  }

  .sidebar-is-collapsed .app-nav__menu {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
  }

  .app-nav__menu {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 1fr;
    gap: 4px;
    margin-top: 0;
  }

  .app-nav__link {
    display: grid;
    min-height: 46px;
    align-content: center;
    justify-items: center;
    padding: 4px 2px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    font-size: 0.74rem;
    text-align: center;
  }

  .app-nav__link:hover {
    transform: none;
  }

  .app-nav__link--logout {
    margin-top: 0;
    margin-inline-start: 16px;
    min-width: 44px;
    box-shadow: -8px 0 0 -7px rgba(255, 255, 255, 0.3);
    background: transparent;
    color: rgba(251, 156, 99, 0.95);
  }

  .app-nav__link--active {
    background: rgba(149, 165, 220, 0.28);
  }

  .app-nav__link-full {
    display: none;
  }

  .app-nav__link-short {
    display: inline;
  }

  .app-content__header {
    --mobile-header-height: 44px;
    height: var(--mobile-header-height);
    padding: 0 8px;
    border-radius: 12px;
  }

  .app-header-right {
    width: 100%;
    height: 100%;
    min-width: 0;
    gap: 8px;
  }

  .global-clinic-control {
    flex: 1 1 58%;
    min-width: 0;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 4px;
  }

  .app-header-mobile-logo {
    display: block;
    width: auto;
    height: 100%;
    aspect-ratio: 1;
    flex: 0 0 auto;
    border-radius: 4px;
    background: url("up-logo-avion.png") center / contain no-repeat;
  }

  .global-clinic-control label {
    display: none;
  }

  #global-clinic-filter {
    min-width: 0;
  }

  .app-refresh {
    flex: 0 1 42%;
    font-size: 0.7rem;
    line-height: 1.2;
    text-align: right;
    white-space: normal;
  }

  .app-page {
    margin-top: 8px;
    min-width: 0;
  }

  .page-grid {
    min-width: 0;
    gap: 8px;
  }

  .panel {
    min-width: 0;
    padding: 10px;
    border-radius: 12px;
  }

  .panel__title {
    margin-bottom: 0;
    font-size: 1.2rem;
    line-height: 1.2;
  }

  .daily-panel h3 {
    margin: 6px 0;
    font-size: 0.95rem;
  }

  /* Deux filtres cote a cote : visibles sans aucun clic. */
  .controls-row {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto auto;
    grid-auto-flow: column;
    gap: 2px 8px;
    margin-bottom: 8px;
  }

  .controls-row label {
    color: var(--muted);
    font-size: 0.74rem;
  }

  .kpi-grid,
  .definition-grid {
    grid-template-columns: 1fr;
  }

  .floorplan-wrapper {
    grid-template-columns: 1fr;
  }

  .floorplan-legend {
    gap: 6px 12px;
    padding: 8px;
  }

  .floorplan-legend__item {
    font-size: 0.76rem;
  }

  .floorplan-stage-scroll {
    max-width: 100%;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    border-radius: 12px;
    touch-action: pan-x pan-y;
  }

  .floorplan-stage {
    width: 700px;
    max-width: none;
  }

  /* Le detail s'affiche dans l'infobulle de la salle touchee sur le plan. */
  .floorplan-details {
    display: none;
  }

  .daily-grid,
  .lean-grid {
    max-width: 100%;
    min-width: 0;
    touch-action: pan-x pan-y;
  }

  .daily-grid .ag-root-wrapper,
  .lean-grid .ag-root-wrapper {
    max-width: 100%;
  }

  .daily-grid--compact {
    font-size: 0.7rem;
  }

  .lean-grid--compact {
    font-size: 0.68rem;
  }

  .floorplan-hotspot {
    touch-action: manipulation;
  }

  .landing-card {
    padding: 20px;
  }
}

/* En paysage la hauteur est la ressource rare : barre d'onglets plus basse. */
@media (max-height: 520px) and (orientation: landscape) {
  .app-shell {
    padding-bottom: calc(52px + env(safe-area-inset-bottom));
  }

  .app-nav,
  .sidebar-is-collapsed .app-nav {
    padding: 2px 6px calc(2px + env(safe-area-inset-bottom));
  }

  .app-nav__link {
    min-height: 36px;
    font-size: 0.72rem;
  }

  .app-content__header {
    --mobile-header-height: 38px;
  }

  .app-page {
    margin-top: 6px;
  }

  /* Plan complet d'un coup d'oeil : hauteur moins la barre d'onglets et le titre. */
  :root {
    --floorplan-fit-height: calc(
      100dvh - 100px - env(safe-area-inset-bottom)
    );
  }

  .floorplan-stage--brossard-specialites {
    width: min(100%, calc(var(--floorplan-fit-height) * 1735 / 1160));
  }

  .floorplan-stage--cropped {
    width: min(100%, calc(var(--floorplan-fit-height) * 1010 / 405));
  }

  /* Urgence et Specialites cote a cote, a la meme echelle. */
  .floorplan-sections--paired {
    grid-template-columns: minmax(0, 1193fr) minmax(0, 1735fr);
    gap: 8px;
    align-items: start;
    width: 100%;
    max-width: calc(var(--floorplan-fit-height) * 2928 / 1160 + 8px);
    margin-inline: auto;
  }

  .floorplan-sections--paired .floorplan-wrapper {
    gap: 4px;
  }

  .floorplan-sections--paired .floorplan-section-title {
    font-size: 0.82rem;
  }

  .floorplan-sections--paired .floorplan-stage {
    width: 100%;
  }

  /* Plans cote a cote : la carte large garde seulement l'essentiel lisible. */
  .floorplan-sections--paired
    .floorplan-stage
    .floorplan-room-card--wide:not(.floorplan-room-card--reference) {
    gap: 2px;
    padding: 2px 3px;
    border-width: 1px;
  }

  .floorplan-sections--paired
    .floorplan-stage
    .floorplan-room-card--wide:not(.floorplan-room-card--reference)
    .floorplan-room-card__section {
    padding: 1px 2px;
  }

  .floorplan-sections--paired .floorplan-stage
    .floorplan-room-card__section--waiting
    > .floorplan-room-card__section-title,
  .floorplan-sections--paired .floorplan-stage
    .floorplan-room-card--wide:not(.floorplan-room-card--reference)
    .floorplan-room-card__caption,
  .floorplan-sections--paired .floorplan-stage
    .floorplan-room-card--wide:not(.floorplan-room-card--reference)
    .floorplan-room-card__bar,
  .floorplan-sections--paired
    .floorplan-stage
    .floorplan-room-card--wide:not(.floorplan-room-card--reference)
    .floorplan-room-card__places {
    display: none;
  }

  .floorplan-sections--paired .floorplan-stage
    .floorplan-room-card--wide:not(.floorplan-room-card--reference)
    .floorplan-room-card__footer
    span {
    display: none;
  }

  /* Carte en bande trop basse pour les tuiles : la ligne d'attente seulement. */
  .floorplan-room-card__places--strip {
    display: none;
  }
}

.floorplan-room-card--reference {
  display: grid;
  grid-template-rows: minmax(0, 0.7fr) minmax(0, 1.65fr) minmax(0, 2fr);
  gap: 1px;
  padding: 3px;
  border: 1px solid #6f8da8;
  border-radius: 6px;
  background: #f9f9f9;
  color: #172027;
  font-family: Arial, sans-serif;
}

.floorplan-room-card--reference span {
  font-family: inherit;
}

.floorplan-room-card--reference.floorplan-room-card--alert {
  border-color: #6f8da8;
  background: #f9f9f9;
}

.floorplan-room-card--reference .floorplan-room-card__header {
  padding: 0 1cqw;
  min-height: 0;
  justify-content: space-between;
  font-size: min(4.5cqw, 10cqh);
}

.floorplan-room-card--reference .floorplan-room-card__badge {
  padding: 0.3em 0.7em;
  border-radius: 999px;
  background: #ededed;
  color: #34383b;
  font-size: min(2.5cqw, 6cqh);
  text-transform: none;
}

.floorplan-room-card--reference .floorplan-room-card__title {
  margin-right: auto;
}

.floorplan-room-card--reference .floorplan-room-card__section {
  box-sizing: border-box;
  min-height: 0;
  padding: 1.5cqh 1.5cqw;
  border-radius: 1.3cqw;
}

.floorplan-room-card--reference
  .floorplan-room-card__section--waiting {
  display: grid;
  grid-template-columns: minmax(0, 0.95fr) minmax(0, 2.8fr);
  grid-template-rows: minmax(0, 1fr);
  align-items: center;
  gap: 1cqh 1cqw;
  min-height: 0;
  border: 1px solid #D94D4D;
  background: #fffafa;
}

.floorplan-room-card--reference .floorplan-room-card__waiting-heading {
  flex-direction: row-reverse;
  align-self: start;
  align-items: flex-start;
  justify-content: space-between;
  padding-top: 1cqh;
  gap: 1cqw;
}

.floorplan-room-card--reference .floorplan-room-card__waiting-heading .floorplan-card-icon {
  width: min(3.2cqw, 7cqh);
  height: min(3.2cqw, 7cqh);
}

.floorplan-room-card--reference
  .floorplan-room-card__section-title {
  font-size: min(2.4cqw, 5cqh);
  white-space: normal;
}

.floorplan-room-card--reference .floorplan-room-card__row {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 2.8fr) minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr) minmax(0, 0.22fr);
  grid-column: 2;
  align-self: stretch;
  align-items: stretch;
  min-width: 0;
  gap: 1cqh 1cqw;
}

.floorplan-room-card--reference .floorplan-room-card__count {
  justify-content: center;
  min-width: 0;
  align-items: center;
  border-radius: 1.2cqw;
  background: #fff;
}

.floorplan-room-card--reference.floorplan-room-card--wide .floorplan-room-card__total {
  font-size: min(4.8cqw, 10cqh);
  line-height: 1.1;
}

.floorplan-room-card--reference.floorplan-room-card--wide .floorplan-room-card__caption {
  font-size: min(1.7cqw, 3.8cqh);
  color: #626d76;
  text-transform: none;
}

.floorplan-room-card--reference .floorplan-room-card__buckets {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  min-width: 0;
  height: 100%;
  gap: 1cqw;
}

.floorplan-room-card--reference .floorplan-room-card__bucket {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.7cqh;
  min-width: 0;
  min-height: 0;
  padding: 0.5cqh 0;
  border-radius: 1.2cqw;
  font-size: min(4cqw, 9cqh);
}

.floorplan-room-card--reference .floorplan-room-card__bucket-label {
  font-size: min(1.65cqw, 3.6cqh);
  line-height: 1.1;
  white-space: nowrap;
}

.floorplan-room-card--reference .floorplan-room-card__footer {
  grid-column: 3;
  grid-row: 1 / span 2;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 1cqh;
  min-width: 0;
  padding-left: 1cqw;
  border-top: 0;
  border-left: 1px solid #d5d8db;
  font-size: min(1.9cqw, 4.2cqh);
  white-space: normal;
  color: #7a858d;
  text-align: left;
}

.floorplan-room-card--reference .floorplan-room-card__footer strong {
  color: #B42318;
  font-size: min(3.1cqw, 7cqh);
  white-space: nowrap;
}

.floorplan-room-card--reference .floorplan-room-card__bar {
  grid-column: 1 / span 2;
  grid-row: 2;
  height: 100%;
  gap: 1cqw;
}

.floorplan-room-card--reference .floorplan-room-card__segment {
  border-radius: 0;
}

.floorplan-room-card--reference .floorplan-room-card__segment:first-child {
  border-radius: 999px 0 0 999px;
}

.floorplan-room-card--reference .floorplan-room-card__segment:last-child {
  border-radius: 0 999px 999px 0;
}

.floorplan-room-card--reference .floorplan-room-card__section--alert {
  border-color: #D94D4D;
}

.floorplan-room-card--reference
  .floorplan-room-card__section--follow-up {
  display: grid;
  grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
  gap: 1cqh;
  padding: 1.5cqh 1.5cqw;
  background: #f7f8f8;
  border-color: #d5d8db;
}

.floorplan-room-card--reference .floorplan-room-card__section-header {
  display: grid;
  grid-template-columns: minmax(0, 0.39fr) minmax(0, 0.18fr) minmax(0, 0.43fr);
  grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
  align-items: center;
  column-gap: 1cqw;
}

.floorplan-room-card--reference .floorplan-room-card__section-caption {
  grid-column: 1;
  font-size: min(1.9cqw, 4.2cqh);
  color: #818a91;
  white-space: nowrap;
  text-align: left;
}

.floorplan-room-card--reference .floorplan-room-card__occupancy {
  grid-column: 2;
  grid-row: 1 / span 2;
  align-self: center;
  display: flex;
  flex-direction: column;
  gap: 0.5cqh;
  font-size: min(4.2cqw, 9cqh);
  font-weight: 700;
}

.floorplan-room-card--reference .floorplan-room-card__occupied-label {
  font-size: 0.45em;
  font-weight: 400;
  color: #818a91;
}

.floorplan-room-card--reference .floorplan-room-card__places {
  grid-template-columns: none;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  min-height: 0;
  gap: 0.8cqw;
}

.floorplan-room-card--reference .floorplan-room-card__place {
  flex-direction: column;
  justify-content: center;
  gap: 1cqh;
  min-height: 0;
  padding: 0;
  border-radius: 1.2cqw;
  font-size: min(2cqw, 4.5cqh);
}

.floorplan-room-card--reference .floorplan-room-card__place strong {
  font-size: 1.2em;
}

/* Echelle commune par plan; les deux SVG Brossard ont la meme echelle physique. */
.floorplan-stage--brossard-urgence .floorplan-hotspots {
  font-size: 1cqw;
}

.floorplan-stage--brossard-specialites .floorplan-hotspots {
  font-size: calc(1cqw * 1193 / 1735);
}

.floorplan-stage--cropped .floorplan-hotspots {
  font-size: 0.6cqw;
}

.floorplan-stage :is(.floorplan-summary-card, .floorplan-room-card) {
  font-size: inherit;
  padding: 0.4em;
  gap: 0.3em;
}

.floorplan-stage :is(.floorplan-summary-card, .floorplan-room-card) :is(.floorplan-summary-card__title, .floorplan-room-card__header) {
  font-size: 1.6em;
}

.floorplan-stage .floorplan-room-card__header {
  gap: 0.1em;
}

.floorplan-stage .floorplan-room-card__title {
  gap: 0.15em;
}

.floorplan-stage :is(.floorplan-summary-card, .floorplan-room-card) :is(.floorplan-summary-card__total, .floorplan-room-card__total) {
  font-size: 4em;
}

.floorplan-stage :is(.floorplan-summary-card, .floorplan-room-card) :is(.floorplan-summary-card__bucket, .floorplan-room-card__bucket) {
  font-size: 2.7em;
}

.floorplan-stage :is(.floorplan-summary-card__bucket-label, .floorplan-room-card__bucket-label) {
  font-size: 0.46em;
}

.floorplan-stage .floorplan-room-card__footer,
.floorplan-stage .floorplan-room-card__caption {
  font-size: 1.1em;
}

.floorplan-stage .floorplan-room-card__footer strong {
  font-size: 1em;
}

.floorplan-stage .floorplan-summary-card__wait .floorplan-room-card__footer {
  flex-direction: column;
  align-items: center;
  font-size: 1.1em;
}

.floorplan-stage .floorplan-card-icon {
  width: 2em;
  height: 2em;
}

.floorplan-stage .floorplan-room-card--reference {
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto minmax(0, 1.4fr) minmax(0, 1fr);
  justify-content: stretch;
  font-family: inherit;
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__badge {
  display: none;
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__section {
  padding: 0.3em;
  gap: 0.3em;
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__section--waiting {
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto minmax(0, 1fr);
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__waiting-heading {
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  padding: 0;
  gap: 0.3em;
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__section-title,
.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__place {
  font-size: 1.1em;
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__section-caption {
  font-size: 0.75em;
  white-space: nowrap;
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__bucket-label {
  white-space: normal;
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__buckets {
  grid-auto-columns: minmax(min-content, 1fr);
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__row {
  grid-column: 1;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 0.3em;
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__footer {
  font-size: 1.1em;
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__footer strong {
  font-size: 1em;
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__section--follow-up {
  grid-template-rows: auto minmax(0, 1fr);
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__section-header {
  display: flex;
  justify-content: space-between;
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__occupancy {
  flex-direction: row;
  align-items: baseline;
  font-size: 1.4em;
}

.floorplan-stage--brossard-specialites .floorplan-room-card__places {
  grid-auto-flow: column;
  grid-template-columns: none;
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__place {
  gap: 0.1em;
}

.floorplan-stage--cropped .floorplan-room-card--reference {
  grid-template-rows: auto minmax(0, 1fr) minmax(0, 1fr);
  padding: 0.2em 0.4em;
  gap: 0.1em;
}

.floorplan-stage--cropped .floorplan-room-card--reference .floorplan-room-card__section {
  padding: 0.15em 0.3em;
  gap: 0.15em;
}

.floorplan-stage--cropped .floorplan-room-card--reference .floorplan-room-card__place,
.floorplan-stage--cropped .floorplan-room-card--reference .floorplan-room-card__place strong {
  font-size: 1em;
  gap: 0;
}

.floorplan-stage--brossard-specialites .floorplan-room-card--reference .floorplan-room-card__row {
  grid-template-columns: auto minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr) auto 2px;
}

.floorplan-stage--brossard-specialites .floorplan-room-card--reference .floorplan-room-card__footer {
  grid-column: 1 / -1;
  grid-row: 2;
  flex-direction: row;
  justify-content: space-between;
  border: 0;
  padding: 0;
}

.floorplan-stage--brossard-specialites .floorplan-room-card--reference .floorplan-room-card__bar {
  grid-row: 3;
}

.floorplan-stage--cropped :is(.floorplan-summary-card, .floorplan-room-card) :is(.floorplan-summary-card__total, .floorplan-room-card__total) {
  font-size: 3em;
}

.floorplan-stage--cropped :is(.floorplan-summary-card, .floorplan-room-card) :is(.floorplan-summary-card__bucket, .floorplan-room-card__bucket) {
  font-size: 2em;
}

.floorplan-stage--cropped .floorplan-room-card--reference .floorplan-room-card__section--waiting {
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 3fr);
  grid-template-rows: minmax(0, 1fr);
}

.floorplan-stage--cropped .floorplan-room-card--reference .floorplan-room-card__row {
  grid-column: 2;
}

.floorplan-stage--cropped .floorplan-room-card--reference .floorplan-room-card__footer {
  max-width: 5.5em;
}

.floorplan-stage .floorplan-room-card__bar {
  gap: 0;
  min-height: max(2px, 1cqh);
  flex-shrink: 0;
  overflow: hidden;
  border-radius: 999px;
}

.floorplan-stage .floorplan-room-card__segment {
  flex-basis: 0;
  min-width: 0;
  border-radius: 0;
}

.floorplan-summary-card__count {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  min-width: 0;
  align-self: stretch;
}

.floorplan-summary-card__caption {
  display: block;
  font-size: 0.9em;
  font-weight: 400;
  line-height: 1.1;
}

.floorplan-stage .floorplan-room-card--reference .floorplan-room-card__caption {
  display: block;
  font-size: 0.9em;
  white-space: normal;
  line-height: 1.1;
}

.floorplan-summary-card__count .floorplan-summary-card__total {
  line-height: 0.85;
}

@media (max-width: 760px) {
  .floorplan-stage--brossard-specialites {
    width: calc(700px * 1735 / 1193);
  }
}

.manager-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.manager-clinic dt { margin-top: 24px; font-weight: 600; }
.manager-value { margin: 8px 0 0; font-size: clamp(1.5rem, 3vw, 2.5rem); font-weight: 700; }
.manager-header { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: 6px 20px; padding: 10px 16px; }
.manager-header__title { min-width: 0; }
.manager-header__title h1 { margin: 0; font-size: clamp(1.3rem, 2vw, 1.7rem); }
.manager-header__title p { margin: 4px 0 0; font-size: 0.875rem; }
.manager-header__updates { text-align: right; font-size: 0.875rem; overflow-wrap: anywhere; }
.manager-header__updates p { margin: 0; line-height: 1.35; }
@media (max-width: 480px) {
  .manager-header { grid-template-columns: 1fr; gap: 6px; }
  .manager-header__updates { text-align: left; }
}
.manager-surge--normal { background: rgba(108, 164, 145, 0.3); }
.manager-surge--warning { background: rgba(255, 214, 64, 0.48); }
.manager-surge--elevated { background: rgba(251, 156, 99, 0.48); }
.manager-surge--critical { background: rgba(217, 77, 77, 0.34); color: #8f1f1f; }
.manager-surge-detail { white-space: pre-wrap; font: inherit; }
.manager-clinic { min-width: 0; }
.manager-surge { overflow-wrap: anywhere; }
@media (max-width: 760px), (max-height: 520px) and (orientation: landscape) {
  .manager-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; align-items: start; }
  .manager-grid .manager-clinic { padding: 12px 10px; }
  .manager-clinic h2 { margin: 0 0 12px; font-size: clamp(1rem, 4vw, 1.25rem); }
  .manager-clinic dl { margin: 0; }
  .manager-clinic dt { margin-top: 12px; min-height: 2.6em; font-size: 0.8rem; line-height: 1.3; }
  .manager-clinic dt:first-child { margin-top: 0; }
  .manager-clinic .manager-value { margin: 2px 0 0; font-size: clamp(1.4rem, 5vw, 1.8rem); line-height: 1.2; }
  .manager-clinic .manager-surge { display: flex; align-items: center; min-height: 3em; padding: 6px; border-radius: 6px; font-size: 0.85rem; line-height: 1.25; }
  .manager-clinic__reference { margin: 8px 0; font-size: 0.75rem; line-height: 1.3; }
  .manager-clinic details { font-size: 0.8rem; }
  .manager-clinic summary { padding: 8px 0; cursor: pointer; }
  .manager-surge-detail { overflow-wrap: anywhere; }
  .manager-header { padding: 10px; gap: 6px 12px; }
  .manager-header__title p, .manager-header__updates { font-size: 0.75rem; }
}
