/* Bornée à la hauteur d'écran : sans cela la boîte (598 px avec ses trois cases de choix)
   dépassait par le haut sur un écran de 568 px et emportait hors du viewport le titre et la
   moitié du texte, sans aucun moyen d'y revenir (le conteneur ne défilait pas). Une interface
   de consentement doit rester lisible en entier. Vaut pour les deux variantes. */
.hmb-cookies { position: fixed; z-index: 98; left: 0; right: 0; bottom: 0; padding: 12px; max-height: 100dvh; overflow-y: auto; overscroll-behavior: contain; }
.hmb-cookies[hidden] { display: none; }
.hmb-cookies--centre { top: 0; display: flex; align-items: center; justify-content: center; background: rgba(63,47,37,0.45); }
/* La boîte porte sa propre borne : elle ne dépasse donc jamais son conteneur, et le centrage
   de la variante « centre » ne peut pas rendre son haut inatteignable. */
.hmb-cookies__box { display: flex; flex-direction: column; max-width: 720px; max-height: calc(100dvh - var(--hm-bottombar-h, 0px) - env(safe-area-inset-bottom, 0px) - 24px); overflow-y: auto; overscroll-behavior: contain; margin: 0 auto; background: #fff; color: var(--hm-brown, #3f2f25); border: 1px solid var(--hm-border, #eadfd3); border-radius: 18px; padding: 22px 24px; box-shadow: 0 16px 48px rgba(63,47,37,0.18); font-size: 0.95rem; line-height: 1.5; }
.hmb-cookies--bas .hmb-cookies__box { margin-bottom: calc(var(--hm-bottombar-h, 0px) + env(safe-area-inset-bottom, 0px)); }
.hmb-cookies__title { flex: none; font-family: var(--hm-font-title, Georgia, serif); font-size: 1.25rem; margin: 0 0 6px; }
.hmb-cookies__text { flex: none; margin: 0 0 14px; color: var(--hm-brown-soft, #6b5a4b); }
.hmb-cookies__text a { color: var(--hm-caramel-dark, #a96f44); }
/* Quand la place manque, c'est la liste des choix qui se comprime et défile : le titre, le
   texte et surtout la rangée « Tout refuser / Tout accepter » restent visibles sans manœuvre. */
.hmb-cookies__choices { display: grid; gap: 8px; margin: 0 0 14px; flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.hmb-cookies__choices[hidden] { display: none; }
.hmb-cookies__choice { display: grid; grid-template-columns: 22px 1fr; gap: 10px; align-items: start; padding: 10px 12px; border: 1.5px solid var(--hm-border, #eadfd3); border-radius: 12px; cursor: pointer; }
.hmb-cookies__choice.is-locked { opacity: 0.75; cursor: default; }
.hmb-cookies__choice input { margin: 4px 0 0; width: 18px; height: 18px; accent-color: var(--hm-caramel-dark, #a96f44); }
.hmb-cookies__choice span { display: flex; flex-direction: column; }
.hmb-cookies__choice small { color: var(--hm-muted, #8a7a6b); }
.hmb-cookies__actions { flex: none; display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; }
/* 44 px : cible tactile minimale, « Tout accepter » restait à 42 px. */
.hmb-cookies__actions .hm-btn { min-height: 44px; padding: 8px 16px; font-size: 0.92rem; }
.hmb-cookies__actions [hidden] { display: none; }
.hmb-cookies-link { border: 0; background: none; padding: 0; color: inherit; font: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.hmb-ext { position: relative; background: var(--hm-surface-2, #f6efe6); border-radius: 12px; overflow: hidden; min-height: 200px; }
.hmb-ext iframe { display: block; width: 100%; aspect-ratio: 16 / 9; border: 0; }
.hmb-ext__mask { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 20px; text-align: center; background: var(--hm-surface-2, #f6efe6); }
.hmb-ext.is-on .hmb-ext__mask { display: none; }
@media (max-width: 600px) { .hmb-cookies { padding: 8px; } .hmb-cookies__box { padding: 18px; } .hmb-cookies__actions .hm-btn { flex: 1 1 45%; } }
