/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-5k0dlzbq3g] {
    position: relative;
    display: flex;
    flex-direction: column;
}

main[b-5k0dlzbq3g] {
    flex: 1;
    /* Without this, a flex row item defaults to min-width:auto (content-based) — a wide table
       (e.g. the 13-column "Búsqueda de turnos" report) pushes main, and the whole page, wider
       than the viewport instead of scrolling inside its own .table-responsive container. */
    min-width: 0;
}

.top-row[b-5k0dlzbq3g] {
    background-color: #f7f7f7;
    border-bottom: 1px solid #d6d5d5;
    justify-content: flex-end;
    height: 3.5rem;
    display: flex;
    align-items: center;
}

    .top-row[b-5k0dlzbq3g]  a, .top-row[b-5k0dlzbq3g]  .btn-link {
        white-space: nowrap;
        margin-left: 1.5rem;
        text-decoration: none;
    }

    .top-row[b-5k0dlzbq3g]  a:hover, .top-row[b-5k0dlzbq3g]  .btn-link:hover {
        text-decoration: underline;
    }

    .top-row[b-5k0dlzbq3g]  a:first-child {
        overflow: hidden;
        text-overflow: ellipsis;
    }

@media (max-width: 640.98px) {
    .top-row[b-5k0dlzbq3g] {
        justify-content: space-between;
    }

    .top-row[b-5k0dlzbq3g]  a, .top-row[b-5k0dlzbq3g]  .btn-link {
        margin-left: 0;
    }
}

@media (min-width: 641px) {
    .page[b-5k0dlzbq3g] {
        flex-direction: row;
    }

    .top-row[b-5k0dlzbq3g] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

    .top-row.auth[b-5k0dlzbq3g]  a:first-child {
        flex: 1;
        text-align: right;
        width: 0;
    }

    .top-row[b-5k0dlzbq3g], article[b-5k0dlzbq3g] {
        padding-left: 2rem !important;
        padding-right: 1.5rem !important;
    }
}

#blazor-error-ui[b-5k0dlzbq3g] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-5k0dlzbq3g] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/NavMenu.razor.rz.scp.css */
.sidebar[b-cw44r1nx4l] {
    background-image: linear-gradient(180deg, #0f766e 0%, #134e4a 70%);
    font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

.navbar-toggler[b-cw44r1nx4l] {
    appearance: none;
    cursor: pointer;
    width: 3.5rem;
    height: 2.5rem;
    color: white;
    position: absolute;
    top: 0.5rem;
    right: 1rem;
    border: 1px solid rgba(255, 255, 255, 0.1);
    background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1);
}

.navbar-toggler:checked[b-cw44r1nx4l] {
    background-color: rgba(255, 255, 255, 0.5);
}

.top-row[b-cw44r1nx4l] {
    min-height: 3.5rem;
    padding-left: 1rem;
    background-color: rgba(0,0,0,0.4);
}

.navbar-brand[b-cw44r1nx4l] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-size: 1.1rem;
}

.brand-mark[b-cw44r1nx4l] {
    flex-shrink: 0;
    border-radius: 6px;
    margin-right: 0.75rem;
}

.brand-text[b-cw44r1nx4l] {
    display: inline-block;
    overflow: hidden;
    white-space: nowrap;
    max-width: 200px;
    opacity: 1;
    font-family: 'Fredoka', 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    font-weight: 600;
    font-size: 1.2rem;
    letter-spacing: 0.01em;
    transition: opacity 0.15s ease, max-width 0.15s ease, margin 0.15s ease;
}

.nav-item[b-cw44r1nx4l] {
    font-size: 0.9rem;
    padding-bottom: 0.5rem;
}

    .nav-item:first-of-type[b-cw44r1nx4l] {
        padding-top: 1rem;
    }

    .nav-item:last-of-type[b-cw44r1nx4l] {
        padding-bottom: 1rem;
    }

    .nav-item[b-cw44r1nx4l]  .nav-link {
        color: #d7d7d7;
        background: none;
        border: none;
        border-radius: 4px;
        height: 3rem;
        display: flex;
        align-items: center;
        line-height: 3rem;
        width: 100%;
    }

.nav-item[b-cw44r1nx4l]  a.active {
    background-color: rgba(255,255,255,0.37);
    color: white;
}

.nav-item[b-cw44r1nx4l]  .nav-link:hover {
    background-color: rgba(255,255,255,0.1);
    color: white;
}

.nav-scrollable[b-cw44r1nx4l] {
    display: none;
}

.navbar-toggler:checked ~ .nav-scrollable[b-cw44r1nx4l] {
    display: block;
}

.collapse-toggle[b-cw44r1nx4l] {
    display: none;
}

.nav-group-header[b-cw44r1nx4l] {
    appearance: none;
    cursor: pointer;
    width: 100%;
    color: #d7d7d7;
    background: none;
    border: none;
    border-radius: 4px;
    height: 3rem;
    display: flex;
    align-items: center;
    line-height: 3rem;
    padding: 0 1rem;
    font-size: 0.9rem;
    text-align: left;
}

    .nav-group-header:hover[b-cw44r1nx4l] {
        background-color: rgba(255, 255, 255, 0.1);
        color: white;
    }

.nav-group-title[b-cw44r1nx4l] {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nav-group-caret[b-cw44r1nx4l] {
    width: 0.9rem;
    height: 0.9rem;
    margin-right: 0;
    transition: transform 0.15s ease-in-out;
    opacity: 0.7;
}

    .nav-group-caret.open[b-cw44r1nx4l] {
        transform: rotate(180deg);
    }

.nav-group-items[b-cw44r1nx4l] {
    max-height: 0;
    overflow: hidden;
    list-style: none;
    margin: 0;
    padding: 0;
    transition: max-height 0.2s ease;
}

    .nav-group-items.show[b-cw44r1nx4l] {
        /* Comfortably above any real group's natural height (~56px/item) — CSS can't transition
           max-height to "none"/"auto", so this just needs to be a fixed value large enough to
           never clip a group as pages get added, not an exact fit. */
        max-height: 2000px;
    }

.nav-label[b-cw44r1nx4l] {
    display: inline-block;
    overflow: hidden;
    white-space: nowrap;
    vertical-align: middle;
    max-width: 220px;
    opacity: 1;
    transition: opacity 0.15s ease, max-width 0.15s ease;
}

@media (min-width: 641px) {
    .sidebar[b-cw44r1nx4l] {
        width: 290px;
        height: 100vh;
        position: sticky;
        top: 0;
        z-index: 10;
        transition: width 0.15s ease-in-out;
    }

    .sidebar.collapsed[b-cw44r1nx4l] {
        width: 64px;
    }

    .navbar-toggler[b-cw44r1nx4l] {
        display: none;
    }

    .nav-scrollable[b-cw44r1nx4l] {
        /* Never collapse the sidebar for wide screens */
        display: block;

        /* Allow sidebar to scroll for tall menus */
        height: calc(100vh - 3.5rem);
        overflow-y: auto;
        overflow-x: visible;
    }

    /* Collapsed rail content is short (icons only) and never needs to scroll — and per the
       CSS overflow spec, overflow-x:visible is silently coerced to auto whenever overflow-y
       isn't also visible, which was clipping the flyout. Match both to visible when collapsed
       so the flyout can actually escape the 64px rail. */
    .sidebar.collapsed .nav-scrollable[b-cw44r1nx4l] {
        overflow-y: visible;
        overflow-x: visible;
    }

    .collapse-toggle[b-cw44r1nx4l] {
        display: flex;
        align-items: center;
        justify-content: center;
        position: absolute;
        top: 50%;
        right: -0.75rem;
        transform: translateY(-50%);
        width: 1.5rem;
        height: 1.5rem;
        padding: 0;
        appearance: none;
        cursor: pointer;
        color: white;
        background: #0f766e;
        border: 2px solid rgba(255, 255, 255, 0.6);
        border-radius: 50%;
        box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35);
        z-index: 5;
    }

        .collapse-toggle:hover[b-cw44r1nx4l] {
            background: #14958a;
        }

        .collapse-toggle .bi[b-cw44r1nx4l] {
            width: 0.75rem;
            height: 0.75rem;
            margin-right: 0;
        }

    .collapse-toggle-icon[b-cw44r1nx4l] {
        transition: transform 0.15s ease-in-out;
        transform: rotate(90deg);
    }

        .collapse-toggle-icon.collapsed[b-cw44r1nx4l] {
            transform: rotate(-90deg);
        }

    /* Collapsed rail: narrow, icon-only, groups reveal their items in a flyout on hover */
    .sidebar.collapsed .nav-label[b-cw44r1nx4l] {
        opacity: 0;
        max-width: 0;
    }

    .sidebar.collapsed .brand-text[b-cw44r1nx4l] {
        margin-right: 0;
    }

    .sidebar.collapsed .top-row[b-cw44r1nx4l] {
        padding-left: 0;
    }

    .sidebar.collapsed .top-row .container-fluid[b-cw44r1nx4l] {
        display: flex;
        justify-content: center;
        padding-left: 0;
        padding-right: 0;
    }

    .sidebar.collapsed .navbar-brand[b-cw44r1nx4l] {
        margin-right: 0;
        gap: 0;
    }

    .sidebar.collapsed .nav-group-caret[b-cw44r1nx4l] {
        display: none;
    }

    .sidebar.collapsed .nav-item[b-cw44r1nx4l]  .nav-link,
    .sidebar.collapsed .nav-group-header[b-cw44r1nx4l] {
        justify-content: center;
        padding-left: 0;
        padding-right: 0;
    }

    .sidebar.collapsed .nav-item[b-cw44r1nx4l]  .nav-link .bi,
    .sidebar.collapsed .nav-group-header .bi[b-cw44r1nx4l] {
        margin-right: 0;
    }

    .nav-group[b-cw44r1nx4l] {
        position: relative;
    }

    .sidebar.collapsed .nav-group-items[b-cw44r1nx4l] {
        max-height: none;
        overflow: visible;
        position: absolute;
        left: 100%;
        top: 0;
        min-width: 220px;
        background: #134e4a;
        box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);
        border-radius: 0 4px 4px 4px;
        z-index: 20;
        padding: 0.25rem 0;
        opacity: 0;
        transform: translateX(-6px);
        pointer-events: none;
        transition: opacity 0.12s ease, transform 0.12s ease;
    }

        /* Deliberately hover-only, never keyed off .show: .show reflects the accordion-expanded
           state used by the wide sidebar, which is unrelated Blazor state that doesn't get reset
           when collapsing — if this selector also matched .show, a group left expanded before
           collapsing (or after navigating to one of its pages, since navigation doesn't touch
           expandedGroups either) would show its flyout permanently instead of only on hover. */
        .sidebar.collapsed .nav-group:hover .nav-group-items[b-cw44r1nx4l] {
            opacity: 1;
            transform: translateX(0);
            pointer-events: auto;
        }

        .sidebar.collapsed .nav-group-items .nav-label[b-cw44r1nx4l] {
            opacity: 1;
            max-width: 180px;
        }

        /* Inside the flyout there's room for full labels — undo the icon-only centering
           that .sidebar.collapsed applies to nav-links everywhere else. */
        .sidebar.collapsed .nav-group-items .nav-item[b-cw44r1nx4l]  .nav-link {
            justify-content: flex-start;
            padding-left: 1rem;
            padding-right: 1rem;
        }

        .sidebar.collapsed .nav-group-items .nav-item[b-cw44r1nx4l]  .nav-link .bi {
            margin-right: 0.75rem;
        }
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-9t6ylrpvk5],
.components-reconnect-repeated-attempt-visible[b-9t6ylrpvk5],
.components-reconnect-failed-visible[b-9t6ylrpvk5],
.components-pause-visible[b-9t6ylrpvk5],
.components-resume-failed-visible[b-9t6ylrpvk5],
.components-rejoining-animation[b-9t6ylrpvk5] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-9t6ylrpvk5],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-9t6ylrpvk5],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-9t6ylrpvk5],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-9t6ylrpvk5],
#components-reconnect-modal.components-reconnect-retrying[b-9t6ylrpvk5],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-9t6ylrpvk5],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-9t6ylrpvk5],
#components-reconnect-modal.components-reconnect-failed[b-9t6ylrpvk5],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-9t6ylrpvk5] {
    display: block;
}


#components-reconnect-modal[b-9t6ylrpvk5] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-9t6ylrpvk5 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-9t6ylrpvk5 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-9t6ylrpvk5 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-9t6ylrpvk5]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-9t6ylrpvk5 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-9t6ylrpvk5 {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-9t6ylrpvk5 {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-9t6ylrpvk5 {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-9t6ylrpvk5] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-9t6ylrpvk5] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-9t6ylrpvk5] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-9t6ylrpvk5] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-9t6ylrpvk5] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-9t6ylrpvk5] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-9t6ylrpvk5] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-9t6ylrpvk5 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-9t6ylrpvk5] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-9t6ylrpvk5 {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Pages/Agenda.razor.rz.scp.css */
.agenda-table[b-0ok1gpadqm] {
    font-size: 0.9rem;
}

/* Without this, an empty hour row collapses to ~35px (just the hour label) while a row holding a
   turno card sits at ~145px (the card's natural content height) — so a 3-hour turno's rowspan
   only added two ~35px slivers instead of two more ~145px rows, and looked barely taller than a
   30-minute one. A `height` on <tr> acts as a floor in table auto-layout (rows still grow past it
   if content needs more, e.g. several turnos stacked in one cell), so this makes every hour row
   worth roughly the same vertical space regardless of whether it holds a turno — which is what
   actually makes a rowspan-based multi-hour turno look proportionally taller. */
.agenda-table tbody tr[b-0ok1gpadqm] {
    height: 145px;
}

.agenda-cell[b-0ok1gpadqm] {
    min-width: 150px;
    vertical-align: top;
    position: relative;
}

/* display:flex + the handle's margin-top:auto (see .agenda-resize-handle) is what pins the
   resize handle to the bottom of the card. The actual height/min-height for a rowspan-tall card
   is set inline per-card in Agenda.razor (in px, computed from the rowspan) — percentage height
   against a table-cell child isn't reliably treated as "definite" across browsers even once the
   <tr> has an explicit height, so `height:100%` here silently did nothing. */
.agenda-appt-card[b-0ok1gpadqm] {
    display: flex;
    flex-direction: column;
}

.agenda-resize-handle[b-0ok1gpadqm] {
    margin-top: auto;
    text-align: center;
    font-size: 0.7rem;
    line-height: 1;
    color: #6c757d;
    cursor: ns-resize;
    padding-top: 2px;
    border-top: 1px dashed rgba(0, 0, 0, 0.15);
}

.agenda-resize-handle:hover[b-0ok1gpadqm] {
    color: #0d6efd;
}

/* One strip per reachable 15-minute increment, all stacked inside the resizing turno's own
   starting cell (only rendered while its resize drag is in progress) — dropping on one snaps
   EndAt to that quarter's boundary. Fixed 36.25px (=145px/4) rather than a percentage so the
   spacing stays exactly 15 real minutes regardless of anything else affecting the cell's
   rendered height.

   z-index is not decorative here — a <td> with position:relative but z-index:auto (every
   .agenda-cell) doesn't isolate its children into their own stacking context, so a target that
   extends past its own cell's box (to reach hours beyond the first) was losing the paint order
   to the *later* rows' own <td> elements once past that first row's boundary — later table cells
   win ties over earlier absolutely-positioned content with no z-index, table source order, so
   the targets were there but silently unclickable/unhoverable past the first hour. */
.agenda-resize-target[b-0ok1gpadqm] {
    position: absolute;
    left: 0;
    right: 0;
    height: 36.25px;
    z-index: 10;
}

.agenda-resize-target-active[b-0ok1gpadqm] {
    background-color: rgba(13, 110, 253, 0.25);
    outline: 1px dashed #0d6efd;
    outline-offset: -1px;
}

/* Same shading Bootstrap's table-hover gives other screens (Clientes, etc.) — here per-cell
   instead of per-row, since each cell is its own clickable day/hour slot, not a row of one
   record. */
.agenda-cell:hover[b-0ok1gpadqm],
.agenda-month-cell:hover[b-0ok1gpadqm] {
    background-color: rgba(0, 0, 0, 0.075);
}

.agenda-cell-off-hours[b-0ok1gpadqm] {
    background-image: repeating-linear-gradient(45deg, #f1f3f5, #f1f3f5 6px, #e9ecef 6px, #e9ecef 12px);
}

/* Licencia (leave/vacation) — solid gray, distinct from the off-hours stripes, since these days
   are actually unavailable rather than just outside working hours. */
.agenda-cell-blocked[b-0ok1gpadqm] {
    background-color: #ced4da !important;
}

/* Feriado (holiday) — distinct color from licencia since it blocks the whole tenant, not just
   one professional. */
.agenda-cell-holiday[b-0ok1gpadqm] {
    background-color: #f8d7c4 !important;
}

.agenda-month-cell[b-0ok1gpadqm] {
    width: 14.28%;
    height: 110px;
    vertical-align: top;
}

/* Drag-and-drop reschedule target feedback — !important since it needs to win over the
   off-hours/blocked/holiday background it's layered on top of while dragging. */
.agenda-cell-drag-over[b-0ok1gpadqm] {
    background-color: rgba(13, 110, 253, 0.15) !important;
    outline: 2px dashed #0d6efd;
    outline-offset: -2px;
}

/* Preview of where a dragged turno would land if dropped in the cell currently under the
   pointer — visually distinct from a real appointment card (dashed, translucent, striped) so
   it's never mistaken for a committed turno while dragging. */
.agenda-drag-ghost[b-0ok1gpadqm] {
    border: 2px dashed #0d6efd !important;
    background: repeating-linear-gradient(45deg, rgba(13, 110, 253, 0.08), rgba(13, 110, 253, 0.08) 6px, rgba(13, 110, 253, 0.16) 6px, rgba(13, 110, 253, 0.16) 12px);
    color: #0d6efd;
    opacity: 0.85;
    pointer-events: none;
}

/* The resize live preview reuses .agenda-drag-ghost's look but floats above the grid instead of
   sitting in normal flow — position:absolute lets its height (set inline, in px, from the live
   drag position) grow past its own <td>'s boundary into the rows below without disturbing them.
   z-index keeps it above the (dimmed) real card and the invisible resize-target strips it's
   layered over; pointer-events:none (inherited from .agenda-drag-ghost) is what lets drag events
   fall through to those strips instead of hitting the ghost. */
.agenda-resize-ghost[b-0ok1gpadqm] {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    /* Must beat .agenda-resize-target's z-index (10) too: same table-cell stacking
       trap (see comment there) — a later row's <td> would otherwise paint over the
       ghost as soon as it grows past its own cell's box. */
    z-index: 11;
    overflow: hidden;
}

.reagenda-highlight[b-0ok1gpadqm] {
    outline: 3px solid #0d6efd;
    outline-offset: 1px;
    animation: reagenda-pulse-b-0ok1gpadqm 1.5s ease-in-out infinite;
}

@keyframes reagenda-pulse-b-0ok1gpadqm {
    0%, 100% { outline-color: #0d6efd; }
    50% { outline-color: #9ec5fe; }
}
/* /Components/Pages/Landing.razor.rz.scp.css */
.hero[b-hg7l84sr7m] {
    background: linear-gradient(180deg, #f0fbf9 0%, #ffffff 100%);
    padding: 3.5rem 1.25rem 3rem;
}

.hero-inner[b-hg7l84sr7m] {
    max-width: 1140px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2.5rem;
    align-items: center;
}

.eyebrow[b-hg7l84sr7m] {
    display: inline-block;
    color: #0d9488;
    font-weight: 700;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 0.75rem;
}

.hero-copy h1[b-hg7l84sr7m] {
    font-size: 2.4rem;
    font-weight: 800;
    line-height: 1.15;
    color: #0f5850;
    margin-bottom: 1rem;
}

.hero-copy .lead[b-hg7l84sr7m] {
    font-size: 1.1rem;
    color: #495057;
    margin-bottom: 1.75rem;
}

.hero-actions[b-hg7l84sr7m] {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.hero-shot img[b-hg7l84sr7m] {
    width: 100%;
    border-radius: 12px;
    box-shadow: 0 20px 45px rgba(15, 88, 80, 0.25);
    border: 1px solid rgba(15, 88, 80, 0.1);
}

.value-strip[b-hg7l84sr7m] {
    background: #0f5850;
    padding: 2rem 1.25rem;
}

.value-strip-inner[b-hg7l84sr7m] {
    max-width: 1140px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.5rem;
}

.value-item[b-hg7l84sr7m] {
    display: flex;
    gap: 0.9rem;
    align-items: flex-start;
    color: #e6f5f2;
}

.value-icon[b-hg7l84sr7m] {
    color: #f59e0b;
    flex: none;
    margin-top: 0.1rem;
}

.value-item strong[b-hg7l84sr7m] {
    display: block;
    color: #fff;
    margin-bottom: 0.2rem;
}

.value-item p[b-hg7l84sr7m] {
    margin: 0;
    font-size: 0.92rem;
    color: #cfe8e3;
}

.features[b-hg7l84sr7m] {
    padding: 4rem 1.25rem;
    background: #ffffff;
}

.features-inner[b-hg7l84sr7m] {
    max-width: 1140px;
    margin: 0 auto;
}

.features h2[b-hg7l84sr7m] {
    font-size: 1.9rem;
    font-weight: 800;
    color: #0f5850;
    text-align: center;
    margin-bottom: 0.4rem;
}

.features-sub[b-hg7l84sr7m] {
    text-align: center;
    color: #6c757d;
    max-width: 560px;
    margin: 0 auto;
}

.feature-card[b-hg7l84sr7m] {
    height: 100%;
    background: #fff;
    border: 1px solid #e9ecef;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.05);
    display: flex;
    flex-direction: column;
}

.feature-card img[b-hg7l84sr7m] {
    width: 100%;
    display: block;
    border-bottom: 1px solid #e9ecef;
}

.feature-card-icon[b-hg7l84sr7m] {
    justify-content: center;
}

.feature-icon-hero[b-hg7l84sr7m] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 140px;
    background: linear-gradient(135deg, #0d9488, #0f5850);
}

.feature-icon-hero svg[b-hg7l84sr7m] {
    color: #fff;
}

.feature-body[b-hg7l84sr7m] {
    padding: 1.1rem 1.25rem 1.3rem;
}

.feature-body h3[b-hg7l84sr7m] {
    font-size: 1.1rem;
    font-weight: 700;
    color: #0f5850;
    margin-bottom: 0.35rem;
}

.feature-body p[b-hg7l84sr7m] {
    margin: 0;
    color: #6c757d;
    font-size: 0.92rem;
}

.final-cta[b-hg7l84sr7m] {
    background: linear-gradient(135deg, #0d9488, #0f5850);
    padding: 3.5rem 1.25rem;
    text-align: center;
}

.final-cta-inner h2[b-hg7l84sr7m] {
    color: #fff;
    font-weight: 800;
    font-size: 1.8rem;
    margin-bottom: 0.4rem;
}

.final-cta-inner p[b-hg7l84sr7m] {
    color: #cfe8e3;
    margin-bottom: 1.5rem;
}

.landing-footer[b-hg7l84sr7m] {
    background: #0f5850;
    padding: 1.25rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.landing-footer-inner[b-hg7l84sr7m] {
    max-width: 1140px;
    margin: 0 auto;
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
    color: #a9d4cd;
    font-size: 0.85rem;
}

@media (max-width: 767px) {
    .hero-inner[b-hg7l84sr7m] {
        grid-template-columns: 1fr;
    }

    .value-strip-inner[b-hg7l84sr7m] {
        grid-template-columns: 1fr;
    }

    .hero-copy h1[b-hg7l84sr7m] {
        font-size: 1.9rem;
    }
}
/* /Components/Shared/AssistantWidget.razor.rz.scp.css */
.assistant-widget[b-pl44b7irr2] {
    position: fixed;
    left: 1rem;
    right: 1rem;
    bottom: 1.5rem;
    z-index: 1050;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.75rem;
    pointer-events: none;
}

.assistant-widget .assistant-fab[b-pl44b7irr2],
.assistant-widget .assistant-panel[b-pl44b7irr2] {
    pointer-events: auto;
}

.assistant-fab[b-pl44b7irr2] {
    position: relative;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    border: none;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 14px rgba(15, 88, 80, 0.35);
    background: #fff;
    cursor: pointer;
}

.assistant-fab-badge[b-pl44b7irr2] {
    position: absolute;
    top: -2px;
    right: -2px;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #f59e0b;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 0 0 2px #fff;
}

.assistant-panel[b-pl44b7irr2] {
    width: 340px;
    max-width: 100%;
    max-height: min(560px, 70vh);
    display: flex;
    flex-direction: column;
    border-radius: 0.75rem;
    overflow: hidden;
}

.assistant-panel-header[b-pl44b7irr2] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.6rem 0.9rem;
    background: linear-gradient(135deg, #2dd4bf, #0f5850);
    color: #fff;
}

.assistant-panel-body[b-pl44b7irr2] {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 0.75rem 0.9rem;
    background: #f8f9fa;
}

.assistant-panel-footer[b-pl44b7irr2] {
    padding: 0.6rem 0.9rem;
    border-top: 1px solid #e9ecef;
    background: #fff;
}

.assistant-bubble[b-pl44b7irr2] {
    max-width: 85%;
    padding: 0.45rem 0.7rem;
    border-radius: 0.75rem;
    margin-bottom: 0.5rem;
    font-size: 0.85rem;
    white-space: pre-wrap;
    word-break: break-word;
}

.assistant-bubble-user[b-pl44b7irr2] {
    background: #0d9488;
    color: #fff;
    margin-left: auto;
    border-bottom-right-radius: 0.2rem;
}

.assistant-bubble-bot[b-pl44b7irr2] {
    background: #e9ecef;
    color: #212529;
    margin-right: auto;
    border-bottom-left-radius: 0.2rem;
}

.assistant-proposal-card[b-pl44b7irr2] {
    background: #fff;
    border: 1px solid #0d9488;
    border-radius: 0.5rem;
    padding: 0.6rem 0.7rem;
    margin-bottom: 0.5rem;
}
/* /Components/Shared/MiniCalendar.razor.rz.scp.css */
.mini-calendar[b-2gu5pyjamj] {
    width: 100%;
    max-width: 220px;
}

.mini-calendar-table[b-2gu5pyjamj] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

.mini-calendar-table th[b-2gu5pyjamj] {
    font-size: 0.7rem;
    font-weight: 600;
    color: #6c757d;
    text-align: center;
    padding-bottom: 0.25rem;
}

.mini-calendar-table td[b-2gu5pyjamj] {
    padding: 1px;
    text-align: center;
}

.mini-calendar-day[b-2gu5pyjamj] {
    width: 26px;
    height: 26px;
    line-height: 26px;
    padding: 0;
    border: none;
    background: none;
    border-radius: 50%;
    font-size: 0.75rem;
    color: #212529;
}

.mini-calendar-day:hover[b-2gu5pyjamj] {
    background-color: #ccfbf1;
}

.mini-calendar-day.is-today[b-2gu5pyjamj] {
    font-weight: 700;
    color: #0d9488;
}

.mini-calendar-day.is-selected[b-2gu5pyjamj] {
    background-color: #0d9488;
    color: #fff;
}
/* /Components/Shared/SortableHeader.razor.rz.scp.css */
.sortable-header[b-dje38x8bqs] {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}

    .sortable-header:hover[b-dje38x8bqs] {
        background-color: rgba(0, 0, 0, 0.035);
    }

.sort-caret[b-dje38x8bqs] {
    display: inline-block;
    width: 0.7rem;
    height: 0.7rem;
    margin-left: 0.35rem;
    margin-right: 0;
    background-size: cover;
    position: relative;
    top: -1px;
}

.bi-caret-up-nav-menu[b-dje38x8bqs] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23495057' viewBox='0 0 16 16'%3E%3Cpath d='M8 3.5 3 10h10z'/%3E%3C/svg%3E");
}

.bi-caret-down-nav-menu[b-dje38x8bqs] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23495057' viewBox='0 0 16 16'%3E%3Cpath d='M8 12.5 3 6h10z'/%3E%3C/svg%3E");
}
