/* Shared shell and small UI components; page layout lives in each main bundle. */
body { min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; }
body > #main { flex: 1 0 auto; min-width: 0; }
body > footer { flex-shrink: 0; margin-top: auto; }
.auth-page { padding: .75rem 1rem 1.5rem; }
.auth-page .auth-card-body { padding: 1rem 1.5rem; }
.auth-page .form-control, .auth-page form > .btn { min-height: 2.75rem; }
.auth-back-link { color: var(--bs-secondary-color); text-decoration: none; }
.auth-back-link:hover { color: var(--bs-body-color); text-decoration: underline; }
.site-header .header-auth .btn { padding: .6rem 1rem; }
.site-header .mobile-nav__panel .btn { min-height: 2.75rem; padding: .6rem 1rem; }
.site-header .header-auth { flex-shrink: 0; }
footer .footer-links { flex-wrap: wrap; }
footer #lang-form, footer .om-lang { min-width: 0; }
footer .ol-select { width: min(16rem, 58vw); }
footer .ol-select-menu { top: auto; bottom: calc(100% + .5rem); }
.ol-toast-stack { position: fixed; inset: auto max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) auto; z-index: 1200; display: grid; gap: .75rem; width: min(25rem, calc(100vw - 2rem)); pointer-events: none; }
.ol-toast { --toast-color: #246b4b; --toast-bg: #f1faf4; display: flex; align-items: flex-start; gap: .8rem; padding: 1rem; border: 1px solid color-mix(in srgb, var(--toast-color) 30%, transparent); border-inline-start: .3rem solid var(--toast-color); border-radius: .85rem; background: var(--toast-bg); color: #182c24; box-shadow: 0 .75rem 2rem #0002; pointer-events: none; font: 400 .95rem/1.5 system-ui, sans-serif; animation: ol-toast-in .2s ease-out; }
.ol-toast[data-variant=warning] { --toast-color: #9b6500; --toast-bg: #fff8e6; }
.ol-toast[data-variant=error] { --toast-color: #b52d36; --toast-bg: #fff1f1; }
.ol-toast[data-variant=info] { --toast-color: #236680; --toast-bg: #eef8fd; }
.ol-toast-icon { display: grid; place-items: center; flex: 0 0 1.6rem; height: 1.6rem; border-radius: 50%; background: var(--toast-color); color: white; font-weight: 700; }
.ol-toast-content { flex: 1; min-width: 0; overflow-wrap: anywhere; white-space: pre-line; }
.ol-toast-content strong { display: block; margin-bottom: .2rem; color: var(--toast-color); }
.ol-toast-close { pointer-events: auto; flex: 0 0 2rem; display: grid; place-items: center; width: 2rem; height: 2rem; padding: 0; margin: -.25rem -.25rem 0 0; border: 0; border-radius: .4rem; color: inherit; background: transparent; font: 1.5rem/1 system-ui; cursor: pointer; }
.ol-toast-close:hover { background: #0001; }
.ol-toast-close:focus-visible { outline: 2px solid var(--toast-color); outline-offset: 2px; }
@keyframes ol-toast-in { from { opacity: 0; transform: translateY(.5rem); } to { opacity: 1; transform: none; } }
.ol-select { position: relative; min-width: 0; width: 100%; }
.ol-select-native { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.ol-select-toggle { width: 100%; min-height: 2.75rem; text-align: start; padding: .65rem 2.5rem .65rem .85rem; box-shadow: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ol-select-toggle:disabled { opacity: .65; cursor: default; }
.ol-select-menu { position: absolute; z-index: 1080; inset: calc(100% + .35rem) 0 auto; min-width: 100%; padding: .65rem; border: 1px solid var(--bs-border-color, #b9c1bc); border-radius: .8rem; background: var(--ol-input-bg, white); color: var(--ol-input-color, #14372d); box-shadow: 0 .75rem 2rem #0002; }
.ol-select-up .ol-select-menu { top: auto; bottom: calc(100% + .35rem); }
.ol-select-search { margin-bottom: .5rem; }
.ol-select-results { max-height: min(15rem, 40dvh); overflow-y: auto; overscroll-behavior: contain; }
.ol-select-option { display: block; width: 100%; padding: .65rem .7rem; border: 0; border-radius: .4rem; background: transparent; color: inherit; text-align: start; font: inherit; overflow-wrap: anywhere; }
.ol-select-option:hover, .ol-select-option:focus, .ol-select-option[aria-selected=true] { background: var(--ol-dropdown-hover-bg, #f3efe6); outline: none; }
.ol-select-pager { display: flex; justify-content: space-between; gap: .5rem; padding-top: .5rem; }
.ol-select-pager:empty { display: none; }
.ol-select-message { padding: .75rem; margin: 0; font-size: .9rem; }
@media (max-width: 991.98px) { .site-header .header-auth { display: none !important; } }
@media (prefers-reduced-motion: reduce) { .ol-toast { animation: none; } }
