/* Shared private-portal layout. Public SEO pages use their own stylesheet. */
body.portal-ui { padding-top: 0; margin-bottom: 0; min-width: 0; overflow-wrap: anywhere; }
.portal-ui *, .portal-ui *::before, .portal-ui *::after { box-sizing: border-box; }
.portal-ui .portal-header { position: sticky; top: 0; z-index: 1020; }
.portal-ui .navbar > .container, .portal-ui footer > .container {
    padding-left: clamp(.75rem, 2.5vw, 2rem) !important;
    padding-right: clamp(.75rem, 2.5vw, 2rem) !important;
}
.portal-ui .portal-main { padding-inline: clamp(.75rem, 2.5vw, 2rem); }
.portal-ui main, .portal-ui .card, .portal-ui .card-body,
.portal-ui .row > *, .portal-ui .d-flex > *, .portal-ui .min-w-0 { min-width: 0; }
.portal-ui main > .container { margin-top: 0 !important; }
.portal-ui main > .container > .row { margin-inline: 0; }
.portal-ui .navbar-brand { display: flex; align-items: center; gap: .3rem; font-size: 1.05rem; white-space: normal; min-width: 0; }
.portal-ui .navbar-brand img { flex-shrink: 0; width: auto; max-width: 115px; object-fit: contain; }
.portal-ui .navbar-toggler { min-height: 44px; min-width: 44px; }
.portal-ui .nav-link, .portal-ui .dropdown-item { min-height: 44px; display: flex; align-items: center; gap: .4rem; white-space: normal; }
.portal-ui .dropdown-menu { max-width: 100%; }
.portal-ui .portal-account { gap: .35rem; max-width: 100%; }
.portal-ui .portal-account img, .portal-ui .portal-account > .btn { flex-shrink: 0; }
.portal-ui .portal-account > div { max-width: 20rem; }
.portal-ui .portal-nav-label { font-size: .85rem; }
.portal-ui .btn { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: .25rem; max-width: 100%; white-space: normal; }
.portal-ui .btn.btn-sm.rounded-circle { min-width: 44px; }
.portal-ui .btn:hover { transform: none; }
.portal-ui .btn-close { min-width: 32px; min-height: 32px; flex-shrink: 0; }
.portal-ui .form-control, .portal-ui .form-select { min-height: 44px; max-width: 100%; }
.portal-ui input[type="file"] { width: 100%; max-width: 100%; }
.portal-ui .input-group { flex-wrap: nowrap; }
.portal-ui .input-group > .form-control { min-width: 0; }
.portal-ui .form-check-input { min-width: 1.15em; min-height: 1.15em; }
.portal-ui .form-check-label { padding-block: .25rem; }
.portal-ui textarea { resize: vertical; }
.portal-ui .d-flex:not(.input-group):not(.toast-header) { flex-wrap: wrap; row-gap: .65rem; }
.portal-ui .pagination { flex-wrap: wrap; gap: .25rem; margin-bottom: .5rem; }
.portal-ui .page-link { min-width: 44px; min-height: 44px; display: flex; align-items: center; justify-content: center; }
.portal-ui .nav-tabs { gap: .25rem; }
.portal-ui .nav-tabs .nav-link { height: 100%; }
.portal-ui .table-responsive { max-width: 100%; overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; }
.portal-ui .table-responsive > table { margin-bottom: .5rem; }
.portal-ui .table th, .portal-ui .table td { vertical-align: middle; overflow-wrap: anywhere; }
.portal-ui .table th { min-width: 6rem; }
.portal-ui .table td { min-width: 7rem; max-width: 28rem; }
.portal-ui .table .btn { margin: .15rem; }
.portal-ui .table td:has(input[type="checkbox"]), .portal-ui .table th:has(input[type="checkbox"]) { min-width: 2.75rem; }
.portal-ui .portal-scroll-hint { margin: .5rem 0; font-size: .85rem; color: #555; }
.portal-ui .badge, .portal-ui .pill { white-space: normal; line-height: 1.4; overflow-wrap: anywhere; }
.portal-ui .text-truncate { white-space: normal; overflow: visible; text-overflow: clip; }
.portal-ui main img, .portal-ui .modal-body img, .portal-ui video, .portal-ui iframe { max-width: 100%; }
.portal-ui main img:not(.rounded-circle), .portal-ui .modal-body img { object-fit: contain; }
.portal-ui pre { max-width: 100%; white-space: pre-wrap; overflow-wrap: anywhere; }
.portal-ui .portal-chart { position: relative; height: 320px; width: 100%; min-width: 0; background: #fff; border-radius: .5rem; padding: .5rem; }
.portal-ui .modal-content { max-width: 100%; overflow-wrap: anywhere; }
.portal-ui .modal-body { min-width: 0; }
.portal-ui .toast-container { max-width: 100vw; }
.portal-ui .toast, .portal-ui .toast-amc { min-width: 0; width: 390px; max-width: 100%; }
.portal-ui .toast-container .toast-amc { max-height: 70vh; overflow-y: auto !important; }
.portal-ui footer { position: relative; line-height: 1.6; }
.portal-ui footer .row { margin-inline: -.5rem; }
.portal-ui footer .row > * { padding-inline: .5rem; }
.portal-ui footer a:not(.btn) { display: inline-block; padding-block: .35rem; }
.portal-ui footer > .container { padding-bottom: 3rem; }
.portal-ui :focus-visible { outline: 3px solid #176aaf !important; outline-offset: 3px; }
.portal-skip-link { position: fixed; top: -100px; left: 1rem; z-index: 10000; padding: .75rem 1rem; background: #fff; color: #172b3a; }
.portal-skip-link:focus { top: .5rem; }
/* Match Bootstrap navbar-expand-lg: laptop navigation stays inline at normal zoom. */
@media (max-width: 991.98px) {
    .portal-ui #mainNavbar { max-height: min(65vh, calc(100vh - 76px)); max-height: min(65dvh, calc(100dvh - 76px)); overflow-y: auto; padding-block: .75rem; }
    .portal-ui .navbar-nav { margin-bottom: .75rem; }
    .portal-ui .navbar .dropdown-menu { border: 0; margin-left: .75rem; }
    .portal-ui .navbar .nav-link { padding-inline: .75rem; }
    .portal-ui .portal-account { margin-top: .75rem; }
    .portal-ui .portal-account > div { flex: 1; text-align: left !important; }
    .portal-ui .navbar .nav-link > .badge { position: static !important; transform: none !important; order: 1; flex-shrink: 0; }
}
@media (min-width: 992px) {
    .portal-ui .portal-nav-label { display: none; }
    .portal-ui .navbar-nav .nav-link { min-width: 44px; justify-content: center; }
    .portal-ui .portal-account { flex-wrap: nowrap !important; }
    .portal-ui .navbar-brand { flex-shrink: 0; white-space: nowrap; }
    .portal-ui #mainNavbar { min-width: 0; }
    .portal-ui .navbar-nav { flex-shrink: 0; }
    .portal-ui #themeToggleBtn { flex-shrink: 0; }
    .portal-ui .portal-account > div { max-width: clamp(7rem, 14vw, 13rem); }
    .portal-ui .portal-account > div > div { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .portal-ui .navbar .nav-link > .badge { left: auto !important; right: 0; transform: none !important; }
}
@media (max-width: 767.98px) {
    .portal-ui .portal-main { margin-top: 1rem !important; }
    .portal-ui main .p-4, .portal-ui main .p-5 { padding: 1rem !important; }
    .portal-ui main .px-4, .portal-ui main .px-5 { padding-inline: 1rem !important; }
    .portal-ui h1 { font-size: 1.75rem; }
    .portal-ui h2, .portal-ui h3 { font-size: 1.4rem; }
    .portal-ui h4 { font-size: 1.2rem; }
    .portal-ui .form-control, .portal-ui .form-select { font-size: 16px; }
    .portal-ui form.d-flex > .form-control, .portal-ui form.d-flex > .d-flex { width: 100% !important; margin-right: 0 !important; }
    .portal-ui form.d-flex > .d-flex .form-control { width: 100% !important; }
    .portal-ui .row > .col-auto { max-width: 100%; }
    .portal-ui main .d-flex.justify-content-between { column-gap: .75rem; }
    .portal-ui .portal-chart { height: 280px; }
    .portal-ui .modal-dialog { margin: .5rem; }
    .portal-ui .modal-dialog-scrollable { height: calc(100% - 1rem); }
    .portal-ui .modal-header, .portal-ui .modal-footer { gap: .5rem; }
    .portal-ui .modal-footer { justify-content: flex-start; }
}
@media (max-width: 359.98px) {
    .portal-ui .navbar-brand { font-size: .9rem; margin-right: .25rem; }
    .portal-ui .navbar-brand img { max-width: 88px; height: auto; }
    .portal-ui .portal-main { padding-inline: .5rem; }
}
.portal-ui.dark-theme { color-scheme: dark; }
.portal-ui.dark-theme .table { --bs-table-color: #e7e7ef; --bs-table-bg: #1e1e2f; --bs-table-striped-color: #e7e7ef; --bs-table-striped-bg: #29293b; --bs-table-hover-color: #fff; --bs-table-hover-bg: #323246; color: #e7e7ef; border-color: #525268; }
.portal-ui.dark-theme .table-light { --bs-table-bg: #303046; --bs-table-color: #fff; }
.portal-ui.dark-theme .bg-light, .portal-ui.dark-theme .bg-white, .portal-ui.dark-theme .modal-content, .portal-ui.dark-theme footer, .portal-ui.dark-theme .kv-note, .portal-ui.dark-theme .kv-code code, .portal-ui.dark-theme .count-pill, .portal-ui.dark-theme .empty-state { background: #1e1e2f !important; color: #e7e7ef !important; }
.portal-ui.dark-theme .text-dark:not(.badge), .portal-ui.dark-theme footer a, .portal-ui.dark-theme .dropdown-item, .portal-ui.dark-theme .navbar-brand, .portal-ui.dark-theme .navbar .nav-link { color: #e7e7ef !important; }
.portal-ui.dark-theme .text-muted, .portal-ui.dark-theme .kv-label, .portal-ui.dark-theme .portal-scroll-hint { color: #bcbccc !important; }
.portal-ui.dark-theme footer h5 { color: #ff9698 !important; }
.portal-ui.dark-theme .hero-bar, .portal-ui.dark-theme .glass { background: #1e1e2f !important; }
.portal-ui.dark-theme .pill { color: #333; }
.portal-ui.dark-theme .form-control::placeholder { color: #aaaabb; }
.portal-ui.dark-theme .navbar-toggler-icon { filter: invert(1); }
.portal-ui.dark-theme .navbar-toggler { border-color: #777; }
.portal-ui.dark-theme .page-link, .portal-ui.dark-theme .input-group-text { background: #29293b; color: #eee; border-color: #525268; }
.portal-ui.dark-theme .dropdown-item:hover, .portal-ui.dark-theme .dropdown-item:focus { background: #38384c; }
@media (prefers-reduced-motion: reduce) {
    .portal-ui *, .portal-ui *::before, .portal-ui *::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; }
}
