/* /Layout/GlobalTimer.razor.rz.scp.css */
/* Global timer surfaces (ADR-018). Fixed-position overlays layered on the app shell. */

/* ── Small Bubble (FR-126): circular launcher, bottom-right, above content, clear of bottom bars ── */
.et-timer-bubble[b-z3nt5j2m30] {
    position: fixed;
    right: max(1rem, env(safe-area-inset-right));
    bottom: calc(1rem + env(safe-area-inset-bottom));
    z-index: 1045; /* above page content, below Bootstrap modal (1055) */
    width: 56px;
    height: 56px;
    min-width: 44px;  /* NFR-A11Y-005 touch target */
    min-height: 44px;
    border-radius: 50%;
    border: none;
    background: var(--bs-primary);
    color: #fff;
    box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .3);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
}

.et-timer-bubble:hover[b-z3nt5j2m30] { filter: brightness(1.08); }
.et-timer-bubble-icon[b-z3nt5j2m30] { font-size: 1.6rem; line-height: 1; }
.et-timer-bubble-time[b-z3nt5j2m30] { font-size: 1rem; font-variant-numeric: tabular-nums; }

/* ── Medium Floating panel (FR-127): floats over the page, app stays interactive ── */
/* Default bottom-right anchor; JS (timer-drag.js) overrides left/top only after a drag (FR-132). */
.et-timer-medium[b-z3nt5j2m30] {
    position: fixed;
    right: max(1rem, env(safe-area-inset-right));
    bottom: calc(1rem + env(safe-area-inset-bottom));
    z-index: 1045;
    width: min(20rem, calc(100vw - 2rem));
    /* touch-action:none lives on the WHOLE panel, not just the handle: the panel is a floating control,
       not scrollable content, so any touch on it must never scroll or pull-to-refresh the page. This is
       what closes the accidental pull-to-refresh reload path (a missed grab used to reset the timer). */
    touch-action: none;
}

/* Drag handle: a contrasted top bar that signposts the panel is movable (FR-132). The whole panel is
   grabbable (timer-drag.js); this bar is the visual affordance. Primary/#fff matches the bubble, so all
   8 themes read well. min-height meets the 44px touch target (NFR-A11Y-005). */
.et-timer-medium-handle[b-z3nt5j2m30] {
    background: var(--bs-primary);
    color: #fff;
    padding: .5rem .75rem;
    min-height: 44px;
    display: flex;
    align-items: center;
    gap: .5rem;
    border-top-left-radius: var(--bs-card-border-radius);
    border-top-right-radius: var(--bs-card-border-radius);
    cursor: grab;
    user-select: none;
}

.et-timer-medium-handle:active[b-z3nt5j2m30] { cursor: grabbing; }

/* Grip glyph: the "this is draggable" signifier — slightly larger, subtly dimmed. */
.et-timer-grip[b-z3nt5j2m30] { font-size: 1.15rem; line-height: 1; opacity: .85; }

.et-timer-readout[b-z3nt5j2m30] {
    font-size: 2.5rem;
    font-weight: 700;
    text-align: center;
    font-variant-numeric: tabular-nums;
    margin-bottom: .75rem;
}

/* ── Large Workout Rest (FR-128): modal-like, dims the page ── */
.et-timer-large-backdrop[b-z3nt5j2m30] {
    position: fixed;
    inset: 0;
    z-index: 1050;
    background: rgba(0, 0, 0, .65);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}

.et-timer-large[b-z3nt5j2m30] {
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
    border-radius: 1rem;
    padding: 2rem 1.5rem;
    width: min(28rem, 100%);
    text-align: center;
    box-shadow: 0 1rem 3rem rgba(0, 0, 0, .5);
}

.et-timer-large-state[b-z3nt5j2m30] { font-size: 1.25rem; font-weight: 600; margin-bottom: .5rem; }

.et-timer-large-readout[b-z3nt5j2m30] {
    font-size: clamp(4rem, 18vw, 7rem);
    font-weight: 800;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    margin-bottom: 1.5rem;
}

.et-timer-large-controls[b-z3nt5j2m30] { margin-bottom: .5rem; }
.et-timer-shrink[b-z3nt5j2m30] { text-decoration: none; }

/* ── Alarm visual: alternate colour signalling "done" (FR-131); reverts on dismiss ── */
.et-timer-bubble.alarming[b-z3nt5j2m30] { background: var(--bs-warning); color: #000; animation: et-timer-pulse-b-z3nt5j2m30 1s ease-in-out infinite; }
.et-timer-readout.alarming[b-z3nt5j2m30] { color: var(--bs-warning); }
.et-timer-large.alarming[b-z3nt5j2m30] { outline: .35rem solid var(--bs-warning); }
.et-timer-large.alarming .et-timer-large-readout[b-z3nt5j2m30] { color: var(--bs-warning); }

@keyframes et-timer-pulse-b-z3nt5j2m30 {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.08); }
}

@media (prefers-reduced-motion: reduce) {
    .et-timer-bubble.alarming[b-z3nt5j2m30] { animation: none; }
}
/* /Layout/MainLayout.razor.rz.scp.css */
/* MainLayout renders <NavMenu /> + a Bootstrap .container <main>; the nav owns its own styling.
   The default Blazor template's sidebar/.page/.top-row rules were dead (no such elements here) and
   were removed. */
main[b-huvq5zwe2l] {
    flex: 1;
}
/* /Layout/NavMenu.razor.rz.scp.css */
.navbar-toggler[b-dmogkdxdff] {
    background-color: rgba(255, 255, 255, 0.1);
}

.top-row[b-dmogkdxdff] {
    min-height: 3.5rem;
    background-color: rgba(0,0,0,0.4);
}

.navbar-brand[b-dmogkdxdff] {
    font-size: 1.1rem;
}

.bi[b-dmogkdxdff] {
    display: inline-block;
    position: relative;
    width: 1.25rem;
    height: 1.25rem;
    margin-right: 0.75rem;
    top: -1px;
    background-size: cover;
}

.bi-house-door-fill-nav-menu[b-dmogkdxdff] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}

.bi-plus-square-fill-nav-menu[b-dmogkdxdff] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");
}

.bi-list-nested-nav-menu[b-dmogkdxdff] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
}

[b-dmogkdxdff] .navbar-nav {
    align-items: center;
}

.nav-item[b-dmogkdxdff] {
    font-size: 0.9rem;
    display: flex;
    align-items: center;
}

    .nav-item[b-dmogkdxdff]  a {
        color: var(--bs-body-color);   /* follows the theme: dark on a light bar, light on a dark bar */
        border-radius: 4px;
        display: flex;
        align-items: center;
        padding: 0.4rem 0.75rem;
        line-height: 1.2;
    }

.nav-item[b-dmogkdxdff]  a.active,
.nav-item[b-dmogkdxdff]  a.active:hover {
    /* themed-blue pill (white text passes WCAG AA) marks the current page in every theme */
    background-color: #1b6ec2;
    color: #fff;
}

.nav-item[b-dmogkdxdff]  a:hover {
    background-color: var(--bs-tertiary-bg);
    color: var(--bs-body-color);
}

/* The clock + theme + bell + username + log-out cluster. A flex row on the desktop bar; a centered,
   wrapping row inside the open hamburger menu (see the media query below). */
.nav-utility[b-dmogkdxdff] {
    display: flex;
    align-items: center;
    gap: .5rem;
}

/* The responsive toggle (hide hamburger / show the bar at ≥lg) is handled by Bootstrap's
   .navbar-expand-lg. The previous custom min-width:641px override fought that breakpoint and
   left the menu stuck open between 641–991px, so it was removed. */

/* Help dropdown: on the desktop bar the menu OVERLAYS below the nav (absolute) so opening it does not
   push the bar taller. The li is the positioning context. (Mobile keeps it inline — see the media query.) */
.help-dropdown[b-dmogkdxdff] {
    position: relative;
}

.help-menu[b-dmogkdxdff] {
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 1050;
    margin-top: .25rem;
}

/* Open hamburger menu (< lg): lay the whole panel out as one tidy, centered vertical stack —
   the nav links and the utility cluster line up consistently instead of the default left-aligned
   block flow. `:not(.collapse)` targets the *shown* state only, so the closed menu stays hidden. */
@media (max-width: 991.98px) {
    .navbar-collapse:not(.collapse)[b-dmogkdxdff] {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 100%;
        margin-top: .5rem;
        padding-top: .75rem;
        border-top: 1px solid var(--bs-border-color, rgba(0, 0, 0, .12));
    }

    .navbar-collapse:not(.collapse) .navbar-nav[b-dmogkdxdff] {
        width: 100%;
        margin: 0 0 .5rem 0 !important;   /* cancel the desktop me-auto so links stay centered */
    }

    /* each link group becomes its own centered, wrapping row (matching the utility cluster) */
    .navbar-collapse:not(.collapse) .nav-group[b-dmogkdxdff] {
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: center;
        gap: .25rem .5rem;
    }

    .navbar-collapse:not(.collapse) .nav-utility[b-dmogkdxdff] {
        flex-wrap: wrap;
        justify-content: center;
        gap: .75rem 1rem;
    }

    /* In the open hamburger menu the Help items flow inline in the vertical stack (an absolute overlay
       would float over the items below it), so reset the desktop overlay positioning here. */
    .help-menu[b-dmogkdxdff] {
        position: static;
        margin-top: .25rem;
    }
}
/* /Layout/NotificationBell.razor.rz.scp.css */
/* The notifications dropdown. On the desktop bar the bell sits at the far right, so an absolute
   panel anchored to its right edge opens leftward and fits. */
.notif-panel[b-zbw74xy5bt] {
    position: absolute;
    right: 0;
    top: 100%;
    width: min(340px, 90vw);
    z-index: 1050;
}

/* In the hamburger layout (< lg) the bell sits mid-bar, so a right-anchored panel would run off the
   left edge. Pin it to the viewport instead — fixed, centered, with safe margins — so it's always
   fully on-screen regardless of where the bell is. */
@media (max-width: 991.98px) {
    .notif-panel[b-zbw74xy5bt] {
        position: fixed;
        top: 4rem;
        left: 50%;
        right: auto;
        transform: translateX(-50%);
        width: min(360px, calc(100vw - 1.5rem));
        max-height: 80vh;
        overflow: auto;
    }
}
