/*
 * Row with equal height columns
 * --------------------------------------------------
 */

body {
    font-family: 'Roboto', sans-serif;
}

.row-eq-height {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
}

.widget {
    background-color: #fff;
}

.statusWidget {
    height: 130px;
}

.widget-watermark {
    color: rgba(255,255,255,0.75);
    float:left;
    padding-right: 35px;
    margin-top: -10px;
}

.padding-30 {
    padding: 30px;
}

/* ==========================================================================
   2026 visual refresh: heading font, subtle glow + glass, snappier motion.
   Additive overrides only (theme files untouched). Tunable via :root vars.
   ========================================================================== */
:root {
    --snap-fast: 120ms;
    --snap: 160ms;
    --ease-snap: cubic-bezier(.2, .7, .3, 1);
    --glow: rgba(63, 81, 181, .55); /* theme indigo #3f51b5 */
}

/* --- Heading / display font (Poppins) for headings & points of interest --- */
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6,
.page-title, .panel-title, .brand-text,
.counter-number, .site-menubar-user, legend {
    font-family: 'Poppins', 'Roboto', sans-serif;
    letter-spacing: -0.012em;
}

/* --- Logo glow in the header --- */
.site-navbar .navbar-brand-logo {
    transition: filter var(--snap) var(--ease-snap), transform var(--snap) var(--ease-snap);
    filter: drop-shadow(0 0 5px var(--glow));
}
.site-navbar .navbar-brand:hover .navbar-brand-logo,
.site-navbar .navbar-brand-center:hover .navbar-brand-logo {
    filter: drop-shadow(0 0 11px rgba(63, 81, 181, .9));
    transform: translateY(-1px);
}
.navbar-brand-text {
    text-shadow: 0 0 16px rgba(63, 81, 181, .35);
}

/* Login page: gently breathing glow on the brand */
.page-login .brand .brand-img {
    animation: brandGlow 3.2s var(--ease-snap) infinite alternate;
}
.page-login .brand .brand-text {
    text-shadow: 0 0 18px rgba(255, 255, 255, .35);
}
@keyframes brandGlow {
    from { filter: drop-shadow(0 0 4px rgba(63, 81, 181, .35)); }
    to   { filter: drop-shadow(0 0 14px rgba(63, 81, 181, .85)); }
}

/* --- Subtle glass / transparency on fixed chrome (navbar + sidebar) --- */
.site-navbar .navbar-container {
    background-color: rgba(255, 255, 255, .82);
    -webkit-backdrop-filter: saturate(180%) blur(12px);
    backdrop-filter: saturate(180%) blur(12px);
}
.site-menubar {
    background: rgba(255, 255, 255, .85);
    -webkit-backdrop-filter: saturate(180%) blur(14px);
    backdrop-filter: saturate(180%) blur(14px);
}

/* --- Snappier, more responsive motion on interactive elements --- */
.btn,
.nav-link,
.site-menu-item > a,
.site-menu-arrow,
.badge, .label,
.counter,
.panel,
.widget,
.statuswidget {
    transition-duration: var(--snap-fast) !important;
    transition-timing-function: var(--ease-snap) !important;
}

/* faster sub-menu arrow flip */
.site-menu-item.open > a .site-menu-arrow {
    transition: transform var(--snap-fast) var(--ease-snap);
}

/* tactile feedback */
.btn { transition: transform var(--snap-fast) var(--ease-snap), box-shadow var(--snap-fast) var(--ease-snap), background-color var(--snap-fast) var(--ease-snap); }
.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); }

.panel {
    transition: box-shadow var(--snap) var(--ease-snap), transform var(--snap) var(--ease-snap);
}
.panel:hover {
    box-shadow: 0 6px 22px rgba(0, 0, 0, .10);
}

/* status widgets (dashboard POIs) react a touch on hover */
.statuswidget { transition: transform var(--snap) var(--ease-snap), box-shadow var(--snap) var(--ease-snap); }
.statuswidget:hover { transform: translateY(-2px); }

/* --- Respect users who prefer less motion --- */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .001ms !important;
        scroll-behavior: auto !important;
    }
}

/* --- Confirmation popups (bootbox): always centered in the current viewport,
       never above the scrolled-out-of-view area. The .modal is position:fixed
       (spans the viewport), so flex-centering keeps the dialog in view
       regardless of how far the page is scrolled. --- */
.bootbox.modal.in {
    display: flex !important;
    align-items: center;
}
.bootbox.modal .modal-dialog {
    width: 100%;
    max-width: 500px;
    margin: 8px auto;
}