/* /Layout/MainLayout.razor.rz.scp.css */
.app-layout[b-ah28bw99kn] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    font-family: system-ui, -apple-system, sans-serif;
}

.main-viewport[b-ah28bw99kn] {
    flex: 1;
    display: flex;
    flex-direction: column;
    background-color: #f8f9fa;
}

.content-container[b-ah28bw99kn] {
    flex: 1;
    width: 100%;
    box-sizing: border-box;
}

/* ========== ADMIN MODE BANNER (F-14) ========== */

/* When admin mode is on, this exposes the banner height so the calendar
   (height: calc(100dvh - 62px - var(--admin-banner-h))) compresses instead of
   being pushed under the bottom nav. Must match .admin-mode-banner height. */
.app-layout.admin-active[b-ah28bw99kn] {
    --admin-banner-h: 44px;
}

/* Persistent, unmistakable strip while admin mode is on — admin actions must be
   explicit and clearly separated from the normal parental flow. Fixed height so
   the offset above is deterministic; the message ellipsizes on narrow screens. */
.admin-mode-banner[b-ah28bw99kn] {
    position: sticky;
    top: 0;
    z-index: 300;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    height: 44px;
    padding: 0 12px;
    background: #f59e0b;
    color: #1f2937;
    font-size: 13px;
}

.admin-mode-msg[b-ah28bw99kn] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.admin-mode-exit[b-ah28bw99kn] {
    background: #1f2937;
    color: #ffffff;
    border: none;
    padding: 5px 14px;
    border-radius: 14px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    flex-shrink: 0;
}

/* ========== FAMILY DELETION BANNER (S-11 PR2) ========== */

/* Persistent red strip while a family-deletion request is pending — every
   member must see it on every screen until they respond or the requester
   withdraws. Tapping it opens the profile page's consent panel. */
.family-deletion-banner[b-ah28bw99kn] {
    position: sticky;
    top: 0;
    z-index: 300;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 44px;
    padding: 6px 12px;
    background: #dc2626;
    color: #ffffff;
    font-size: 13px;
    cursor: pointer;
}

.family-deletion-msg[b-ah28bw99kn] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.3;
}

/* ========== DEV BADGE ========== */

/* Bottom-right, above the bottom nav — out of the way of the admin banner's
   "Sair" button (top-right) and unlikely to sit over a calendar day. */
.dev-badge[b-ah28bw99kn] {
    position: fixed;
    bottom: 70px;
    right: 10px;
    z-index: 9999;
    background: #f59e0b;
    color: #1a1a1a;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.08em;
    padding: 3px 8px;
    border-radius: 20px;
    pointer-events: none;
    opacity: 0.9;
}

/* ========== INSTALL BANNER ========== */

.install-banner[b-ah28bw99kn] {
    position: fixed;
    bottom: 62px;
    left: 0;
    right: 0;
    max-width: 450px;
    margin: 0 auto;
    background: #1a1a2e;
    color: #ffffff;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 14px;
    z-index: 190;
    box-shadow: 0 -2px 16px rgba(0, 0, 0, 0.3);
    animation: slideUpBanner-b-ah28bw99kn 0.3s ease-out;
    border-radius: 16px 16px 0 0;
}

@media (min-width: 641px) {
    .install-banner[b-ah28bw99kn] {
        bottom: 0;
        border-radius: 0;
    }
}

@keyframes slideUpBanner-b-ah28bw99kn {
    from { transform: translateY(100%); opacity: 0; }
    to   { transform: translateY(0);    opacity: 1; }
}

.install-banner-icon[b-ah28bw99kn] {
    font-size: 26px;
    flex-shrink: 0;
    line-height: 1;
}

.install-banner-text[b-ah28bw99kn] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.install-banner-title[b-ah28bw99kn] {
    font-size: 13px;
    font-weight: 700;
    white-space: nowrap;
}

.install-banner-hint[b-ah28bw99kn] {
    font-size: 11px;
    opacity: 0.8;
    line-height: 1.4;
}

.install-banner-btn[b-ah28bw99kn] {
    background: #ffffff;
    color: #1a1a2e;
    border: none;
    padding: 8px 16px;
    border-radius: 20px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
}

.install-banner-dismiss[b-ah28bw99kn] {
    background: transparent;
    color: rgba(255, 255, 255, 0.6);
    border: none;
    font-size: 16px;
    cursor: pointer;
    padding: 4px 6px;
    flex-shrink: 0;
    line-height: 1;
}

.install-banner-dismiss:hover[b-ah28bw99kn] {
    color: #ffffff;
}

.install-banner-ios .install-banner-hint strong[b-ah28bw99kn] {
    font-weight: 700;
}

.ios-share-icon[b-ah28bw99kn] {
    font-style: normal;
    font-size: 13px;
}

/* ========== ERROR BOUNDARY ========== */

.error-boundary-fallback[b-ah28bw99kn] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 24px;
    text-align: center;
    min-height: 50vh;
}

.error-boundary-icon[b-ah28bw99kn] {
    font-size: 48px;
    margin-bottom: 16px;
}

.error-boundary-fallback h2[b-ah28bw99kn] {
    margin: 0 0 8px;
    font-size: 20px;
    color: #1a1a2e;
}

.error-boundary-fallback p[b-ah28bw99kn] {
    margin: 0 0 24px;
    color: #6b7280;
    font-size: 14px;
}

.error-boundary-btn[b-ah28bw99kn] {
    background: #2563eb;
    color: #fff;
    border: none;
    padding: 10px 24px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
}

/* ========== GLOBAL PROGRESS BAR ========== */

.global-progress[b-ah28bw99kn] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    z-index: 9999;
    overflow: hidden;
    background: rgba(0,0,0,.05);
}

.global-progress-bar[b-ah28bw99kn] {
    height: 100%;
    width: 40%;
    background: #2563eb;
    border-radius: 2px;
    animation: progressSlide-b-ah28bw99kn 1.2s ease-in-out infinite;
}

.global-progress-determinate[b-ah28bw99kn] {
    animation: none;
    transition: width 0.3s ease-out;
}

.global-progress-message[b-ah28bw99kn] {
    position: fixed;
    top: 5px;
    left: 50%;
    transform: translateX(-50%);
    background: #1e293b;
    color: #ffffff;
    font-size: 12px;
    font-weight: 500;
    padding: 4px 14px;
    border-radius: 12px;
    z-index: 9999;
    white-space: nowrap;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}

@keyframes progressSlide-b-ah28bw99kn {
    0% { transform: translateX(-100%); }
    50% { transform: translateX(200%); }
    100% { transform: translateX(-100%); }
}

/* ========== TOAST ========== */

.global-toast[b-ah28bw99kn] {
    position: fixed;
    bottom: 80px;
    left: 50%;
    transform: translateX(-50%);
    padding: 12px 20px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    font-weight: 500;
    z-index: 9998;
    box-shadow: 0 4px 16px rgba(0,0,0,.15);
    animation: toastIn-b-ah28bw99kn 0.25s ease-out;
    max-width: min(90vw, 520px);
    width: max-content;
    align-items: flex-start;
    cursor: pointer;   /* tap anywhere on it to dismiss */
}

.toast-success[b-ah28bw99kn] { background: #ecfdf5; color: #065f46; border: 1px solid #6ee7b7; }
.toast-error[b-ah28bw99kn] { background: #fef2f2; color: #991b1b; border: 1px solid #fca5a5; }
.toast-info[b-ah28bw99kn] { background: #eff6ff; color: #1e40af; border: 1px solid #93c5fd; }

.toast-icon[b-ah28bw99kn] { font-size: 16px; flex-shrink: 0; }

/* QA (July 2026): long operation summaries (e.g. bulk results with conflict
   counts) were ellipsized — the part explaining WHAT happened was the part
   cut off. Toasts now wrap; the dismiss timer scales with length instead. */
.toast-message[b-ah28bw99kn] {
    white-space: normal;
    overflow-wrap: break-word;
    line-height: 1.45;
    text-align: left;
    min-width: 0;
}

@keyframes toastIn-b-ah28bw99kn {
    from { opacity: 0; transform: translateX(-50%) translateY(10px); }
    to { opacity: 1; transform: translateX(-50%) translateY(0); }
}

/* S-15/B-4 — notice banner during the 15-day window before the re-consent gate
   starts blocking. Deliberately informative (indigo), not alarming: the deletion
   banner above owns red, and this one is a heads-up, not a pending loss. */
.policy-notice-banner[b-ah28bw99kn] {
    position: sticky;
    top: 0;
    z-index: 300;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 44px;
    padding: 6px 12px;
    background: #3730a3;
    color: #ffffff;
    font-size: 13px;
    cursor: pointer;
}

.policy-notice-msg[b-ah28bw99kn] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* /Layout/NavMenu.razor.rz.scp.css */
.navbar-toggler[b-ra5zbd8gtm] {
    background-color: rgba(255, 255, 255, 0.1);
}

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

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

.bi[b-ra5zbd8gtm] {
    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-ra5zbd8gtm] {
    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-ra5zbd8gtm] {
    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-ra5zbd8gtm] {
    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");
}

.nav-item[b-ra5zbd8gtm] {
    font-size: 0.9rem;
    padding-bottom: 0.5rem;
}

    .nav-item:first-of-type[b-ra5zbd8gtm] {
        padding-top: 1rem;
    }

    .nav-item:last-of-type[b-ra5zbd8gtm] {
        padding-bottom: 1rem;
    }

    .nav-item[b-ra5zbd8gtm]  a {
        color: #d7d7d7;
        border-radius: 4px;
        height: 3rem;
        display: flex;
        align-items: center;
        line-height: 3rem;
    }

.nav-item[b-ra5zbd8gtm]  a.active {
    background-color: rgba(255,255,255,0.37);
    color: white;
}

.nav-item[b-ra5zbd8gtm]  a:hover {
    background-color: rgba(255,255,255,0.1);
    color: white;
}

@media (min-width: 641px) {
    .navbar-toggler[b-ra5zbd8gtm] {
        display: none;
    }

    .collapse[b-ra5zbd8gtm] {
        /* Never collapse the sidebar for wide screens */
        display: block;
    }

    .nav-scrollable[b-ra5zbd8gtm] {
        /* Allow sidebar to scroll for tall menus */
        height: calc(100vh - 3.5rem);
        overflow-y: auto;
    }
}
/* /Pages/Components/FrozenDayPanel.razor.rz.scp.css */
.frozen-panel .frozen-panel-header[b-jt61viq0c5] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 4px;
}

.frozen-panel-header h3[b-jt61viq0c5] {
    margin: 0;
    font-size: 17px;
    font-weight: 700;
    color: #212529;
}

.frozen-panel-icon[b-jt61viq0c5] {
    font-size: 22px;
}

.frozen-panel-date[b-jt61viq0c5] {
    margin: 0 0 16px;
    font-size: 14px;
    color: #6b7280;
}

.frozen-panel-urgent[b-jt61viq0c5] {
    background: #fff3cd;
    border: 1px solid #ffc107;
    border-radius: 8px;
    padding: 8px 12px;
    margin: 0 0 14px;
    font-size: 13px;
    font-weight: 600;
    color: #856404;
    text-align: center;
}

/* F-20: handoff already passed */
.frozen-panel-overdue[b-jt61viq0c5] {
    background: #fef2f2;
    border-color: #f87171;
    color: #b91c1c;
}

.frozen-panel-info[b-jt61viq0c5] {
    background: #f8f9fa;
    border-radius: 10px;
    padding: 12px 14px;
    margin-bottom: 16px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.frozen-info-row[b-jt61viq0c5] {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    font-size: 14px;
}

.frozen-info-label[b-jt61viq0c5] {
    color: #6b7280;
    font-weight: 500;
    flex-shrink: 0;
}

.frozen-info-value[b-jt61viq0c5] {
    color: #212529;
    font-weight: 600;
    text-align: right;
}

.frozen-panel-reason[b-jt61viq0c5] {
    margin-bottom: 16px;
}

.frozen-panel-reason label[b-jt61viq0c5] {
    font-size: 13px;
    font-weight: 600;
    color: #495057;
    display: block;
    margin-bottom: 6px;
}

.frozen-panel-observer[b-jt61viq0c5] {
    font-size: 14px;
    color: #6b7280;
    text-align: center;
    margin: 8px 0 0;
}

.panel-actions[b-jt61viq0c5] {
    margin-top: 12px;
}

.panel-actions-buttons[b-jt61viq0c5] {
    display: flex;
    gap: 8px;
}

.panel-actions-secondary[b-jt61viq0c5] {
    display: flex;
    justify-content: center;
}
/* /Pages/Components/GuidedTour.razor.rz.scp.css */
/* U-23 — the guided tour's overlay and card.
   Layer 9000: above the nav (300) and the bottom sheets (100), below the toasts
   (9999) so a message that fires mid-tour is still readable. The spotlight
   classes themselves (9001/9002) are global — see shared.css. */

.tour-overlay[b-b7njqwmaq3] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.62);
    z-index: 9000;
}

/* Pinned above the bottom nav, exactly where the bottom sheets sit, so the tour
   does not introduce a new place for content to appear. */
.tour-card[b-b7njqwmaq3] {
    position: fixed;
    bottom: 62px;
    left: 0;
    right: 0;
    z-index: 9003;
    max-width: 450px;
    margin: 0 auto;
    background: #ffffff;
    border-top-left-radius: 20px;
    border-top-right-radius: 20px;
    padding: 18px 20px 20px;
    box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.28);
    animation: tour-rise-b-b7njqwmaq3 0.2s ease-out;
}

@keyframes tour-rise-b-b7njqwmaq3 {
    from { transform: translateY(14px); opacity: 0; }
    to   { transform: translateY(0);    opacity: 1; }
}

.tour-card:focus[b-b7njqwmaq3] {
    outline: none;
}

.tour-card-head[b-b7njqwmaq3] {
    display: flex;
    align-items: center;
}

.tour-progress[b-b7njqwmaq3] {
    font-size: 12px;
    font-weight: 600;
    color: #868e96;
    background-color: #f1f3f5;
    border-radius: 999px;
    padding: 2px 8px;
}

.btn-tour-skip[b-b7njqwmaq3] {
    margin-left: auto;
    background: none;
    border: none;
    padding: 4px 2px;
    font-size: 13px;
    color: #868e96;
    cursor: pointer;
}

.tour-title[b-b7njqwmaq3] {
    margin: 10px 0 4px;
    font-size: 17px;
    font-weight: 700;
    color: #212529;
}

.tour-body[b-b7njqwmaq3] {
    margin: 0;
    font-size: 13px;
    line-height: 1.5;
    color: #495057;
}

.tour-actions[b-b7njqwmaq3] {
    display: flex;
    gap: 8px;
    margin-top: 16px;
}

.btn-tour-prev[b-b7njqwmaq3],
.btn-tour-next[b-b7njqwmaq3] {
    flex: 1;
    padding: 12px 16px;
    border-radius: 8px;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
}

.btn-tour-prev[b-b7njqwmaq3] {
    border: 1px solid #dee2e6;
    background-color: #ffffff;
    color: #495057;
}

.btn-tour-next[b-b7njqwmaq3] {
    border: none;
    background-color: #212529;
    color: #ffffff;
}
/* /Pages/Components/HowSwapsWork.razor.rz.scp.css */
/* U-23 — the "Como funciona a troca" sheet contents. The sheet chrome
   (backdrop, rounded top, handle) belongs to the page; this file styles only
   what goes inside it. */

.how-swaps-title[b-iizxpffmwh] {
    margin: 0 0 4px;
    font-size: 17px;
    font-weight: 700;
    color: #212529;
}

.how-swaps-intro[b-iizxpffmwh] {
    margin: 0 0 14px;
    font-size: 13px;
    color: #868e96;
}

.how-swaps-block[b-iizxpffmwh] {
    padding: 10px 0;
    border-top: 1px solid #f1f3f5;
}

.how-swaps-block h4[b-iizxpffmwh] {
    margin: 0 0 4px;
    font-size: 14px;
    font-weight: 700;
    color: #212529;
}

.how-swaps-block p[b-iizxpffmwh] {
    margin: 0;
    font-size: 13px;
    line-height: 1.5;
    color: #495057;
}

/* The emphasis inside these paragraphs is the reason they are rendered as
   markup at all — it marks the words the concept rests on ("planejado",
   "de fato", "congelado"), so it has to read as heavier, not just bolder. */
.how-swaps-block p[b-iizxpffmwh]  strong {
    font-weight: 700;
    color: #212529;
}

.btn-how-swaps-close[b-iizxpffmwh] {
    width: 100%;
    margin-top: 16px;
    padding: 12px 16px;
    border: none;
    border-radius: 8px;
    background-color: #212529;
    color: #ffffff;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
}
/* /Pages/Components/LanguagePicker.razor.rz.scp.css */
/* U-13 — a segmented pair, deliberately quiet: on the login screen it must be
   findable by someone who cannot read the page, but it is not the call to action.
   Both labels are written in their OWN language (Português / English), so the
   switch is legible to a reader who understands neither of the current strings. */

.lang-picker[b-w4wgpm9qvu] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.lang-options[b-w4wgpm9qvu] {
    display: inline-flex;
    align-self: flex-start;
    border: 1px solid #dee2e6;
    border-radius: 999px;
    overflow: hidden;
    background: #f8f9fa;
}

.lang-option[b-w4wgpm9qvu] {
    border: none;
    background: transparent;
    padding: 6px 14px;
    font-size: 13px;
    font-weight: 600;
    color: #6c757d;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.15s, color 0.15s;
    -webkit-tap-highlight-color: transparent;
}

.lang-option:hover:not(:disabled)[b-w4wgpm9qvu] {
    color: #212529;
}

.lang-selected[b-w4wgpm9qvu] {
    background: #212529;
    color: #ffffff;
}

.lang-selected:hover:not(:disabled)[b-w4wgpm9qvu] {
    color: #ffffff;
}

.lang-option:disabled[b-w4wgpm9qvu] {
    cursor: default;
    opacity: 0.6;
}

/* Compact: centred under the auth card's content, smaller hit area but still
   above the 32px the mobile guidelines ask for at 344px. */
.lang-compact[b-w4wgpm9qvu] {
    align-items: center;
    /* Sits below the auth card's own footer links — the spacing lives here and
       not in the pages because CSS isolation would need ::deep to reach it. */
    margin-top: 18px;
}

.lang-compact .lang-options[b-w4wgpm9qvu] {
    align-self: center;
}

.lang-compact .lang-option[b-w4wgpm9qvu] {
    padding: 5px 12px;
    font-size: 12px;
}
/* /Pages/Components/OnboardingChecklist.razor.rz.scp.css */
/* U-23 — "Primeiros passos" activation card.
   It renders INSIDE the page's bottom sheet, which already owns the surface
   (white, rounded top, padding), so the card adds no chrome of its own — a
   bordered box inside a sheet reads as two panels stacked for no reason. */

.onboarding-checklist[b-t6y0xx2e75] {
    display: block;
}

.onb-header[b-t6y0xx2e75] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.onb-title[b-t6y0xx2e75] {
    margin: 0;
    font-size: 18px;   /* matches the other sheets' h3 */
    font-weight: 700;
    color: #212529;
}

.onb-progress[b-t6y0xx2e75] {
    font-size: 13px;
    font-weight: 600;
    color: #6c757d;
    background-color: #f1f3f5;
    border-radius: 999px;
    padding: 2px 8px;
}

/* Pushed to the far edge, and quiet: dismissing is available, not suggested. */
.btn-onb-dismiss[b-t6y0xx2e75] {
    margin-left: auto;
    background: none;
    border: none;
    padding: 4px 2px;
    font-size: 13px;
    color: #868e96;
    cursor: pointer;
}

.btn-onb-dismiss:hover[b-t6y0xx2e75] {
    color: #212529;
}

.onb-intro[b-t6y0xx2e75] {
    margin: 6px 0 12px;
    font-size: 13px;
    line-height: 1.4;
    color: #6c757d;
}

.onb-steps[b-t6y0xx2e75] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.onb-step[b-t6y0xx2e75] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}

.onb-step-mark[b-t6y0xx2e75] {
    font-size: 16px;
    line-height: 1.3;
    flex-shrink: 0;
}

.onb-step-body[b-t6y0xx2e75] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;   /* lets the hint wrap instead of widening the row */
    flex: 1;
}

.onb-step-title[b-t6y0xx2e75] {
    font-size: 14px;
    font-weight: 600;
    color: #212529;
}

.onb-step-hint[b-t6y0xx2e75] {
    font-size: 12px;
    line-height: 1.4;
    color: #868e96;
}

/* A done step keeps its row (the checklist is also a map of what the product
   needs, not only a to-do list) but stops competing for attention. */
.onb-step-done .onb-step-title[b-t6y0xx2e75] {
    color: #868e96;
}

.onb-step-action[b-t6y0xx2e75] {
    flex-shrink: 0;
    align-self: center;
    padding: 7px 12px;
    border: 1px solid #212529;
    border-radius: 8px;
    background-color: #212529;
    color: #ffffff;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
}

.onb-step-done .onb-step-action[b-t6y0xx2e75] {
    background-color: #ffffff;
    color: #495057;
    border-color: #dee2e6;
}

.onb-visually-hidden[b-t6y0xx2e75] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* 344 px is the floor the whole app is held to. Below ~360 the action button
   and a three-word title cannot share a row without one of them truncating, so
   the button drops under the text and spans the row instead. */
@media (max-width: 359px) {
    .onb-step[b-t6y0xx2e75] {
        flex-wrap: wrap;
    }

    .onb-step-action[b-t6y0xx2e75] {
        width: 100%;
        margin-left: 26px;   /* aligns with the text column, past the tick */
        align-self: stretch;
    }
}

/* Quiet by design: the tour is a second chance, not the main action of the card. */
.btn-onb-replay-tour[b-t6y0xx2e75] {
    display: block;
    width: 100%;
    margin-top: 12px;
    padding: 8px;
    border: none;
    border-top: 1px solid #f1f3f5;
    background: none;
    font-size: 13px;
    font-weight: 600;
    color: #868e96;
    cursor: pointer;
}

.btn-onb-replay-tour:hover[b-t6y0xx2e75] {
    color: #212529;
}

/* The ordinary way out of the sheet — full width, the shape every other sheet's
   closing button has, so it lands where the thumb already expects it. */
.btn-onb-close[b-t6y0xx2e75] {
    display: block;
    width: 100%;
    margin-top: 8px;
    padding: 12px;
    border: 1px solid #dee2e6;
    border-radius: 10px;
    background-color: #f8f9fa;
    font-size: 14px;
    font-weight: 600;
    color: #495057;
    cursor: pointer;
}

.btn-onb-close:hover[b-t6y0xx2e75] {
    background-color: #f1f3f5;
}
/* /Pages/Components/OnboardingLauncher.razor.rz.scp.css */
/* U-23 — the "Primeiros passos" launcher bar.
   Every pixel here is taken from the calendar's day cells (Home is a fixed-height
   flex column), so the bar is held to a single 40px row: one line of text, no
   wrapping, no growth. It borrows the page's card vocabulary — hairline border,
   #212529 ink — so it reads as part of the app and not as a banner. */

.onboarding-launcher[b-6gr9qiekdd] {
    display: flex;
    align-items: stretch;
    gap: 4px;
    flex-shrink: 0;          /* never absorb the squeeze it exists to avoid */
    width: 100%;
    max-width: 450px;
    margin: 0 auto 8px;
    padding: 0 12px;
}

@media (min-width: 641px) {
    .onboarding-launcher[b-6gr9qiekdd] {
        max-width: none;
        padding: 0;
    }
}

.btn-onb-open[b-6gr9qiekdd] {
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 8px;
    height: 40px;
    padding: 0 10px;
    border: 1px solid #e9ecef;
    border-radius: 10px;
    background-color: #ffffff;
    font: inherit;
    text-align: left;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

.btn-onb-open:hover[b-6gr9qiekdd] {
    background-color: #f8f9fa;
}

.onb-launcher-icon[b-6gr9qiekdd] {
    font-size: 15px;
    line-height: 1;
    flex-shrink: 0;
}

/* The title is the only elastic part: below ~344px it truncates rather than
   pushing the progress badge — the count is what makes the bar worth a tap. */
.onb-launcher-title[b-6gr9qiekdd] {
    flex: 1;
    min-width: 0;
    font-size: 13px;
    font-weight: 600;
    color: #212529;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.onb-launcher-progress[b-6gr9qiekdd] {
    flex-shrink: 0;
    font-size: 12px;
    font-weight: 600;
    color: #6c757d;
    background-color: #f1f3f5;
    border-radius: 999px;
    padding: 2px 8px;
}

.onb-launcher-chevron[b-6gr9qiekdd] {
    flex-shrink: 0;
    font-size: 18px;
    line-height: 1;
    color: #adb5bd;
}

/* Quiet, and a full 40x40 tap target even though the glyph is small. */
.btn-onb-hide[b-6gr9qiekdd] {
    flex-shrink: 0;
    width: 40px;
    border: 1px solid #e9ecef;
    border-radius: 10px;
    background-color: #ffffff;
    font-size: 14px;
    line-height: 1;
    color: #adb5bd;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

.btn-onb-hide:hover[b-6gr9qiekdd] {
    color: #212529;
    background-color: #f8f9fa;
}
/* /Pages/Components/PasswordInput.razor.rz.scp.css */
/* Password field wrapper: input + trailing show/hide (eye) toggle.
   The input reserves room on the right so its text never runs under the button. */
.password-field[b-davgnjfv4h] {
    position: relative;
}

.password-field-input[b-davgnjfv4h] {
    /* leave space for the 44px toggle target */
    padding-right: 44px;
}

.password-toggle[b-davgnjfv4h] {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 44px; /* min touch target (mobile-first) */
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0;
    padding: 0;
    background: transparent;
    border: none;
    border-radius: 0 8px 8px 0; /* match .form-control corner */
    color: #6c757d;
    cursor: pointer;
    transition: color 0.15s ease-in-out;
}

.password-toggle:hover:not(:disabled)[b-davgnjfv4h],
.password-toggle:focus-visible:not(:disabled)[b-davgnjfv4h] {
    color: #212529;
}

.password-toggle:focus-visible[b-davgnjfv4h] {
    outline: 2px solid #212529;
    outline-offset: -2px;
}

.password-toggle:disabled[b-davgnjfv4h] {
    cursor: default;
    opacity: 0.45;
}

.password-toggle svg[b-davgnjfv4h] {
    width: 20px;
    height: 20px;
    display: block;
}
/* /Pages/Components/ReportsTabs.razor.rz.scp.css */
/* F-33 — segmented control for the report views (Resumo · Histórico · PDF).
   Scales to any number of tabs (each flex:1); fits the 344px minimum width.

   IMPORTANT: the tabs are <NavLink> child components, so Blazor CSS isolation
   does NOT stamp the scope attribute on their rendered <a>. Everything that
   targets a NavLink must go through ::deep (scoped to the .reports-tabs
   container) — without it the links fall back to the browser default (blue,
   underlined, "broken-link" look). */

.reports-tabs[b-lwec2pxhsx] {
    display: flex;
    gap: 4px;
    background: #eceef2;
    padding: 5px;
    border-radius: 14px;
    margin: 0 0 22px;
}

.reports-tabs[b-lwec2pxhsx]  .reports-tab {
    flex: 1 1 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-width: 0;
    padding: 10px 8px;
    border-radius: 10px;
    text-decoration: none;
    font-size: 13.5px;
    font-weight: 600;
    line-height: 1;
    color: #667085;
    white-space: nowrap;
    transition: color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
}

.reports-tabs[b-lwec2pxhsx]  .reports-tab:hover {
    color: #344054;
}

.reports-tabs[b-lwec2pxhsx]  .reports-tab:focus-visible {
    outline: 2px solid var(--theme-active-color, #667eea);
    outline-offset: 1px;
}

/* Active segment lifts to a white card with the theme accent. */
.reports-tabs[b-lwec2pxhsx]  .reports-tab.active {
    background: #ffffff;
    color: var(--theme-active-color, #667eea);
    box-shadow: 0 1px 4px rgba(16, 24, 40, 0.12);
}

/* On very narrow screens keep the labels; the icon can drop if space is tight. */
@media (max-width: 359px) {
    .reports-tabs[b-lwec2pxhsx]  .reports-tab {
        padding: 10px 4px;
        font-size: 13px;
    }
}
/* /Pages/Components/SudoPrompt.razor.rz.scp.css */
h3[b-093thvj7kv] {
    margin-top: 0;
    font-size: 18px;
    font-weight: 700;
    color: #212529;
}

.sudo-hint[b-093thvj7kv] {
    font-size: 13px;
    color: #6c757d;
    margin: 0 0 16px;
}

.form-group[b-093thvj7kv] {
    margin-bottom: 16px;
    text-align: left;
}

    .form-group label[b-093thvj7kv] {
        font-size: 13px;
        font-weight: 600;
        color: #495057;
        display: block;
        margin-bottom: 6px;
    }

.sudo-actions[b-093thvj7kv] {
    display: flex;
    gap: 10px;
    margin-top: 4px;
}

    .sudo-actions .btn[b-093thvj7kv] {
        flex: 1;
    }

.sudo-forgot[b-093thvj7kv] {
    font-size: 12px;
    color: #6c757d;
    margin: 14px 0 0;
}
/* /Pages/CustomRolesPage.razor.rz.scp.css */
/* F-41 QA round 2 — custom-roles management page (moved off the family page). */

.roles-loading[b-teuxq9m6jj] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 24px 0;
    color: #6c757d;
    font-size: 14px;
}

.roles-back[b-teuxq9m6jj] {
    display: inline-block;
    font-size: 14px;
    font-weight: 600;
    color: #495057;
    text-decoration: none;
    margin: 12px 0 4px;
}

.roles-back:hover[b-teuxq9m6jj] {
    text-decoration: underline;
}

.roles-intro[b-teuxq9m6jj] {
    font-size: 13px;
    color: #6c757d;
    line-height: 1.5;
    margin: 0 0 16px;
}

.roles-empty[b-teuxq9m6jj] {
    font-size: 13px;
    color: #6c757d;
    margin: 0 0 12px;
}

/* ── List ──────────────────────────────────────────────────────────────────── */

.custom-roles-list[b-teuxq9m6jj] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 16px;
}

.custom-role-row[b-teuxq9m6jj] {
    display: flex;
    align-items: center;
    gap: 8px;
    border: 1px solid #dee2e6;
    border-radius: 10px;
    background: #ffffff;
    padding: 8px 12px;
}

.custom-role-row.editing[b-teuxq9m6jj] {
    border-color: #7c3aed;
}

.custom-role-name[b-teuxq9m6jj] {
    flex: 1;
    font-size: 14px;
    color: #212529;
    overflow-wrap: anywhere;
}

.custom-role-confirm[b-teuxq9m6jj] {
    font-size: 13px;
    color: #dc3545;
    font-weight: 600;
}

.btn-role-edit[b-teuxq9m6jj],
.btn-role-delete[b-teuxq9m6jj] {
    border: none;
    background: transparent;
    font-size: 15px;
    padding: 4px 6px;
    cursor: pointer;
}

.btn-role-delete-confirm[b-teuxq9m6jj] {
    border: none;
    background: #dc3545;
    color: #ffffff;
    border-radius: 8px;
    padding: 6px 12px;
    font-size: 13px;
    cursor: pointer;
}

.btn-role-delete-cancel[b-teuxq9m6jj] {
    border: 1px solid #dee2e6;
    background: #ffffff;
    border-radius: 8px;
    padding: 6px 12px;
    font-size: 13px;
    cursor: pointer;
}

/* ── Create/edit card ──────────────────────────────────────────────────────── */

.roles-card[b-teuxq9m6jj] {
    background: #ffffff;
    border: 1px solid #e9ecef;
    border-radius: 14px;
    padding: 16px 14px;
    text-align: left;
}

.roles-card-title[b-teuxq9m6jj] {
    font-size: 15px;
    font-weight: 700;
    color: #212529;
    margin: 0 0 12px;
}

.form-group[b-teuxq9m6jj] {
    margin-bottom: 16px;
    text-align: left;
}

.form-group label[b-teuxq9m6jj] {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: #495057;
    margin-bottom: 6px;
}

.emoji-grid[b-teuxq9m6jj] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.emoji-option[b-teuxq9m6jj] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    padding: 0;
    border: 1px solid #dee2e6;
    border-radius: 8px;
    background: #ffffff;
    font-size: 20px;
    cursor: pointer;
}

.emoji-option.selected[b-teuxq9m6jj] {
    border-color: #7c3aed;
    background: #faf5ff;
    box-shadow: 0 0 0 1px #7c3aed;
}

.emoji-option.emoji-none[b-teuxq9m6jj] {
    width: auto;
    padding: 0 10px;
    font-size: 13px;
    color: #6c757d;
}

.roles-actions-row[b-teuxq9m6jj] {
    display: flex;
    gap: 8px;
}

.btn-role-save[b-teuxq9m6jj] {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: none;
    border-radius: 10px;
    background: #212529;
    color: #ffffff;
    font-size: 14px;
    font-weight: 600;
    padding: 12px;
    min-height: 44px;
    cursor: pointer;
}

.btn-role-cancel-edit[b-teuxq9m6jj] {
    border: 1px solid #dee2e6;
    background: #ffffff;
    border-radius: 10px;
    font-size: 14px;
    padding: 12px 16px;
    min-height: 44px;
    cursor: pointer;
}

/* ── Free upsell (F-37-style gate card) ───────────────────────────────────── */

.premium-gate-card[b-teuxq9m6jj] {
    border-color: #e9d5ff;
    background: linear-gradient(180deg, #faf5ff 0%, #ffffff 100%);
}

.roles-gate-hint[b-teuxq9m6jj] {
    font-size: 13px;
    color: #6c757d;
    line-height: 1.5;
    margin: 0 0 12px;
}

.btn-premium-gate[b-teuxq9m6jj] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    margin-top: 12px;
    border: none;
    background: linear-gradient(135deg, #7c3aed 0%, #9333ea 100%);
    color: #ffffff;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    padding: 12px;
    min-height: 44px;
    cursor: pointer;
    text-decoration: none;
}
/* /Pages/FamilyPage.razor.rz.scp.css */
/* (bottom-nav clearance now lives globally on .page-container — shared.css) */

/* App version — "about the app" footer for signed-in users */
.app-version[b-kjwf1v9jds] {
    margin: 28px 0 0;
    font-size: 11px;
    color: #adb5bd;
    text-align: center;
    letter-spacing: 0.3px;
}

/* ── Family rename (admin) ───────────────────────────────────── */

.family-name-row[b-kjwf1v9jds] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.family-name-edit-btn[b-kjwf1v9jds] {
    border: none;
    background: transparent;
    font-size: 14px;
    cursor: pointer;
    padding: 2px 4px;
    opacity: 0.7;
}

.family-name-edit-btn:hover[b-kjwf1v9jds] { opacity: 1; }

.family-name-edit[b-kjwf1v9jds] {
    display: flex;
    gap: 6px;
    margin: 4px 0 20px 0;
}

.family-name-edit input[b-kjwf1v9jds] {
    flex: 1;
    min-width: 0;
}

.family-name-btn[b-kjwf1v9jds] {
    border: 1px solid #dee2e6;
    background: #f8f9fa;
    color: #495057;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    padding: 8px 12px;
    cursor: pointer;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.family-name-btn.save[b-kjwf1v9jds] {
    border-color: #212529;
    background: #212529;
    color: #ffffff;
    min-width: 70px;
}

.family-name-btn:disabled[b-kjwf1v9jds] {
    opacity: 0.6;
    cursor: not-allowed;
}

.family-loading[b-kjwf1v9jds] {
    display: flex;
    align-items: center;
    gap: 8px;
    color: #6c757d;
    font-size: 14px;
    padding: 24px 0;
}

.family-section[b-kjwf1v9jds] {
    margin-top: 24px;
}

.section-title[b-kjwf1v9jds] {
    font-size: 14px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: #6c757d;
    margin: 0 0 10px;
}

/* ── Members ─────────────────────────────────────────────────── */

.member-card[b-kjwf1v9jds] {
    display: flex;
    align-items: center;
    gap: 12px;
    background: #ffffff;
    border: 1px solid #e9ecef;
    border-radius: 14px;
    padding: 12px 14px;
    margin-bottom: 10px;
}

.member-avatar[b-kjwf1v9jds] {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: #212529;
    color: #ffffff;
    font-size: 17px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.member-info[b-kjwf1v9jds] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
    text-align: left;
}

.member-name[b-kjwf1v9jds] {
    font-size: 15px;
    font-weight: 600;
    color: #212529;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.member-you[b-kjwf1v9jds] {
    font-size: 12px;
    font-weight: 500;
    color: #868e96;
    margin-left: 4px;
}

.member-role[b-kjwf1v9jds] {
    font-size: 12px;
    color: #6c757d;
    display: flex;
    align-items: center;
    gap: 6px;
}

/* F-16: member cards navigate to the profile page (edits live there) */
.member-card-link[b-kjwf1v9jds] {
    cursor: pointer;
    transition: background-color 0.12s;
}

.member-card-link:hover[b-kjwf1v9jds] {
    background-color: #f8f9fa;
}

.member-chevron[b-kjwf1v9jds] {
    font-size: 22px;
    color: #adb5bd;
    margin-left: auto;
    padding-left: 8px;
}

.member-admin-badge[b-kjwf1v9jds] {
    background: #fffbeb;
    border: 1px solid #fcd34d;
    color: #92400e;
    font-size: 10px;
    font-weight: 700;
    border-radius: 10px;
    padding: 1px 7px;
    white-space: nowrap;
}

/* (F-16: the inline admin button moved to the profile page.) */

/* ── Invitation ──────────────────────────────────────────────── */

.invite-card[b-kjwf1v9jds] {
    background: #ffffff;
    border: 1px solid #e9ecef;
    border-radius: 14px;
    padding: 16px 14px;
    text-align: left;
}

.invite-card.expired[b-kjwf1v9jds] {
    border-color: #fca5a5;
}

/* F-37: the extra-caregiver freemium gate shown in place of the invite form. */
.premium-gate-card[b-kjwf1v9jds] {
    border-color: #e9d5ff;
    background: linear-gradient(180deg, #faf5ff 0%, #ffffff 100%);
}

.btn-premium-gate[b-kjwf1v9jds] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    margin-top: 12px;
    border: none;
    background: linear-gradient(135deg, #7c3aed 0%, #9333ea 100%);
    color: #ffffff;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    padding: 12px;
    min-height: 44px;
    cursor: pointer;
    text-decoration: none;
}

.invite-status-row[b-kjwf1v9jds] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 8px;
}

.invite-status-badge[b-kjwf1v9jds] {
    background: #ecfdf5;
    border: 1px solid #6ee7b7;
    color: #047857;
    font-size: 11px;
    font-weight: 700;
    border-radius: 10px;
    padding: 2px 8px;
    white-space: nowrap;
}

.invite-status-badge.expired[b-kjwf1v9jds] {
    background: #fef2f2;
    border-color: #fca5a5;
    color: #b91c1c;
}

.invite-email[b-kjwf1v9jds] {
    font-size: 13px;
    font-weight: 600;
    color: #212529;
    overflow: hidden;
    text-overflow: ellipsis;
}

.invite-expiry[b-kjwf1v9jds] {
    font-size: 12px;
    color: #6c757d;
    margin: 0 0 10px;
}

.invite-link-row[b-kjwf1v9jds] {
    display: flex;
    gap: 6px;
    margin-bottom: 6px;
}

.invite-link-input[b-kjwf1v9jds] {
    flex: 1;
    min-width: 0;
    font-size: 12px;
    color: #495057;
    background: #f8f9fa;
    border: 1px solid #dee2e6;
    border-radius: 8px;
    padding: 8px 10px;
}

.invite-copy-btn[b-kjwf1v9jds] {
    border: 1px solid #dee2e6;
    background: #ffffff;
    border-radius: 8px;
    font-size: 15px;
    padding: 6px 10px;
    cursor: pointer;
    flex-shrink: 0;
}

.invite-hint[b-kjwf1v9jds] {
    font-size: 13px;
    color: #6c757d;
    line-height: 1.5;
    margin: 0 0 12px;
}

.invite-actions[b-kjwf1v9jds] {
    display: flex;
    gap: 8px;
    margin-top: 6px;
}

.btn-invite[b-kjwf1v9jds] {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: none;
    border-radius: 10px;
    background: #212529;
    color: #ffffff;
    font-size: 14px;
    font-weight: 600;
    padding: 12px;
    cursor: pointer;
}

.btn-invite:disabled[b-kjwf1v9jds] {
    background: #868e96;
    cursor: not-allowed;
}

/* The form's submit sits right below the role select — breathing room
   (the resend button inside .invite-actions gets its gap from the flex row). */
.btn-invite-send[b-kjwf1v9jds] {
    margin-top: 14px;
}

.btn-revoke[b-kjwf1v9jds] {
    border: 1px solid #fca5a5;
    background: #fff5f5;
    color: #b91c1c;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    padding: 12px 14px;
    cursor: pointer;
    flex-shrink: 0;
}

.btn-revoke:disabled[b-kjwf1v9jds] {
    opacity: 0.6;
    cursor: not-allowed;
}

/* ── Admin mode (F-14 toggle; mobile home of the nav button) ─── */

.admin-card[b-kjwf1v9jds] {
    background: #ffffff;
    border: 1px solid #e9ecef;
    border-radius: 14px;
    padding: 16px 14px;
    text-align: left;
}

.admin-card.active[b-kjwf1v9jds] {
    background: #fffbeb;
    border-color: #fcd34d;
}

.admin-card-text[b-kjwf1v9jds] {
    font-size: 13px;
    color: #495057;
    line-height: 1.5;
    margin: 0 0 12px;
}

/* F-40: the tier line explaining the correction window (free) vs reach (premium). */
.admin-card-tier[b-kjwf1v9jds] {
    font-size: 12px;
    color: #6b7280;
    line-height: 1.5;
    margin: 0 0 12px;
    padding: 8px 10px;
    background: #faf5ff;
    border-radius: 8px;
}

.admin-card-tier a[b-kjwf1v9jds] {
    color: #7c3aed;
    font-weight: 600;
}

.btn-admin-toggle[b-kjwf1v9jds] {
    width: 100%;
    border: 1px solid #fcd34d;
    background: #fffbeb;
    color: #92400e;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    padding: 12px;
    cursor: pointer;
}

.btn-admin-toggle.active[b-kjwf1v9jds] {
    background: #f59e0b;
    border-color: #d97706;
    color: #ffffff;
}

/* S-11: departed member — dimmed card + "Saiu" badge. */
.member-card-left[b-kjwf1v9jds] {
    opacity: 0.6;
}

.member-left-badge[b-kjwf1v9jds] {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 8px;
    border-radius: 10px;
    background: #f1f3f5;
    color: #868e96;
    font-size: 11px;
    font-weight: 700;
    vertical-align: middle;
}

/* ── S-11 PR2 (QA): family-deletion panel moved here from the profile ── */

.danger-title[b-kjwf1v9jds] { color: #c92a2a; }

.danger-card[b-kjwf1v9jds] {
    border: 1px solid #ffc9c9;
    background: #fff5f5;
    border-radius: 16px;
    padding: 16px;
}

.family-hint[b-kjwf1v9jds] {
    font-size: 13px;
    color: #495057;
    line-height: 1.5;
    margin: 0 0 12px;
}

.danger-consequences[b-kjwf1v9jds] {
    margin: 0 0 14px;
    padding-left: 20px;
    font-size: 13px;
    color: #495057;
    line-height: 1.5;
}

.danger-consequences li[b-kjwf1v9jds] { margin-bottom: 6px; }

.danger-confirm-text[b-kjwf1v9jds] {
    font-size: 14px;
    font-weight: 600;
    color: #c92a2a;
    margin: 0 0 12px;
}

.consent-status[b-kjwf1v9jds] {
    margin: 0 0 14px;
    padding: 10px 12px;
    list-style: none;
    background: #ffffff;
    border: 1px solid #ffc9c9;
    border-radius: 10px;
    font-size: 13px;
    color: #495057;
    line-height: 1.6;
}

.family-actions-row[b-kjwf1v9jds] {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 12px;
}

.btn-execute-now[b-kjwf1v9jds] { margin-top: 4px; width: 100%; }

/* S-10 sudo sheet chrome (bottom-sheet pattern: chrome in the page) */
.backdrop[b-kjwf1v9jds] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.4);
    z-index: 99;
}

.bottom-sheet[b-kjwf1v9jds] {
    position: fixed;
    bottom: 62px;
    left: 0;
    right: 0;
    background: #ffffff;
    padding: 24px 20px;
    border-top-left-radius: 24px;
    border-top-right-radius: 24px;
    box-shadow: 0 -4px 16px rgba(0,0,0,0.15);
    z-index: 100;
    max-width: 450px;
    margin: 0 auto;
}

.sheet-handle[b-kjwf1v9jds] {
    width: 40px;
    height: 5px;
    background: #dee2e6;
    border-radius: 3px;
    margin: -12px auto 16px auto;
}

/* F-32: Premium section — soft, aspirational card (no hard sell, no price). */
.premium-card[b-kjwf1v9jds] {
    background: linear-gradient(180deg, #faf5ff 0%, #ffffff 60%);
    border: 1px solid #e9d8fd;
    border-radius: 14px;
    padding: 16px 14px;
    text-align: left;
}

.premium-badge[b-kjwf1v9jds] {
    display: inline-block;
    font-size: 12px;
    font-weight: 700;
    padding: 4px 10px;
    border-radius: 999px;
    margin-bottom: 10px;
}

.premium-badge.trial[b-kjwf1v9jds] {
    background: #f3e8ff;
    color: #6b21a8;
    border: 1px solid #d8b4fe;
}

.premium-badge.active[b-kjwf1v9jds] {
    background: #ede9fe;
    color: #5b21b6;
    border: 1px solid #c4b5fd;
}

.premium-badge.free[b-kjwf1v9jds] {
    background: #f1f3f5;
    color: #495057;
    border: 1px solid #dee2e6;
}

/* U-22: "seu Premium expirou em X" under the free badge — informative, not
   alarming (the lapse already happened; the offer below is the way back). */
.premium-expired-note[b-kjwf1v9jds] {
    font-size: 12px;
    color: #868e96;
    margin: 0 0 10px;
}

.premium-intro[b-kjwf1v9jds] {
    font-size: 13px;
    color: #495057;
    line-height: 1.5;
    margin: 0 0 12px;
}

.premium-features[b-kjwf1v9jds] {
    list-style: none;
    padding: 0;
    margin: 0 0 14px;
}

.premium-features li[b-kjwf1v9jds] {
    font-size: 13px;
    color: #343a40;
    line-height: 1.4;
    padding: 5px 0;
    border-bottom: 1px solid #f1e9fb;
}

.premium-features li:last-child[b-kjwf1v9jds] {
    border-bottom: none;
}

.btn-premium-interest[b-kjwf1v9jds] {
    width: 100%;
    border: none;
    background: linear-gradient(135deg, #7c3aed 0%, #9333ea 100%);
    color: #ffffff;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    padding: 12px;
    cursor: pointer;
    min-height: 44px;
}

.btn-premium-interest:disabled[b-kjwf1v9jds] {
    opacity: 0.65;
    cursor: default;
}

.premium-hint[b-kjwf1v9jds] {
    font-size: 12px;
    color: #868e96;
    text-align: center;
    margin: 8px 0 0;
}

/* F-48: the 7-day guarantee line — quiet box so it reads as a commitment,
   not as fine print, without competing with the checkout buttons above. */
.premium-guarantee[b-kjwf1v9jds] {
    background: #f1f8ff;
    border: 1px solid #d0ebff;
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 12px;
    color: #1864ab;
    text-align: center;
    margin: 10px 0 0;
}

.premium-guarantee a[b-kjwf1v9jds] {
    color: #1864ab;
    font-weight: 600;
}

/* T-38: neutral note shown instead of the offer inside the Play/TWA shell —
   informational tone, no CTA styling on purpose (there is nothing to click). */
.premium-store-note[b-kjwf1v9jds] {
    background: #f8f9fa;
    border: 1px solid #e9ecef;
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 13px;
    color: #495057;
    text-align: center;
    margin: 10px 0 0;
}

.premium-interest-done[b-kjwf1v9jds] {
    font-size: 13px;
    color: #5b21b6;
    font-weight: 600;
    background: #f3e8ff;
    border: 1px solid #e9d5ff;
    border-radius: 10px;
    padding: 12px;
    margin: 0;
    text-align: center;
}

/* ── T-39: checkout offer + subscription management ─────────────────────── */

.premium-offer[b-kjwf1v9jds] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.btn-premium-subscribe[b-kjwf1v9jds] {
    width: 100%;
    border: none;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    padding: 12px;
    cursor: pointer;
    color: #ffffff;
}

.btn-premium-subscribe.monthly[b-kjwf1v9jds] {
    background: linear-gradient(135deg, #7c3aed 0%, #9333ea 100%);
}

.btn-premium-subscribe.annual[b-kjwf1v9jds] {
    background: linear-gradient(135deg, #0d9488 0%, #14b8a6 100%);
}

.btn-premium-subscribe:disabled[b-kjwf1v9jds] {
    opacity: 0.65;
    cursor: default;
}

/* F-48: Pix avulso — the no-recurrence rail, visually the "quiet sibling" of
   the subscribe buttons (outline, Pix teal) so it reads as an alternative,
   not as the main path. */
.premium-avulso-lead[b-kjwf1v9jds] {
    font-size: 13px;
    color: #495057;
    text-align: center;
    margin: 14px 0 8px;
}

.premium-offer.avulso[b-kjwf1v9jds] {
    margin-top: 0;
}

.btn-premium-avulso[b-kjwf1v9jds] {
    width: 100%;
    border: 1.5px solid #0d9488;
    border-radius: 10px;
    background: #ffffff;
    color: #0d9488;
    font-size: 14px;
    font-weight: 600;
    padding: 12px;
    cursor: pointer;
}

.btn-premium-avulso:disabled[b-kjwf1v9jds] {
    opacity: 0.65;
    cursor: default;
}

/* F-48: the near-lapse warning under the paid-until notice. */
.premium-expiring-soon[b-kjwf1v9jds] {
    background: #fff9db;
    border: 1px solid #ffe066;
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 13px;
    color: #997404;
    margin: 8px 0 10px;
}

.subscription-panel[b-kjwf1v9jds] {
    background: #f8f9fa;
    border: 1px solid #e9ecef;
    border-radius: 10px;
    padding: 12px;
}

.subscription-panel.overdue[b-kjwf1v9jds] {
    background: #fff9db;
    border-color: #ffe066;
}

.subscription-status[b-kjwf1v9jds] {
    font-size: 13px;
    color: #495057;
    margin: 0 0 8px;
}

.subscription-panel.overdue .subscription-status[b-kjwf1v9jds] {
    margin: 0;
}

.subscription-cancel-warning[b-kjwf1v9jds] {
    font-size: 12px;
    color: #c92a2a;
    margin: 0 0 8px;
}

.subscription-cancel-actions[b-kjwf1v9jds] {
    display: flex;
    gap: 8px;
}

.btn-subscription-cancel[b-kjwf1v9jds] {
    border: 1px solid #dee2e6;
    background: #ffffff;
    color: #868e96;
    border-radius: 8px;
    font-size: 12px;
    padding: 8px 12px;
    cursor: pointer;
}

.btn-subscription-cancel.confirm[b-kjwf1v9jds] {
    border-color: #fa5252;
    background: #fa5252;
    color: #ffffff;
    font-weight: 600;
}

.btn-subscription-keep[b-kjwf1v9jds] {
    border: none;
    background: #e7f5ff;
    color: #1971c2;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 600;
    padding: 8px 12px;
    cursor: pointer;
}

.btn-subscription-cancel:disabled[b-kjwf1v9jds],
.btn-subscription-keep:disabled[b-kjwf1v9jds] {
    opacity: 0.65;
    cursor: default;
}

.subscription-paid-until[b-kjwf1v9jds] {
    background: #ebfbee;
    border: 1px solid #b2f2bb;
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 13px;
    color: #2b8a3e;
    margin: 0 0 10px;
}

/* ── F-42: scheduled reactivation (no charge today) ─────────────────────── */

/* Blue, deliberately not the green of "already paid" nor the yellow of
   overdue: nothing was charged and nothing is wrong — a date is simply set. */
.subscription-panel.scheduled[b-kjwf1v9jds] {
    background: #e7f5ff;
    border-color: #a5d8ff;
}

.subscription-panel.scheduled .subscription-status[b-kjwf1v9jds] {
    color: #1864ab;
}

.premium-reactivate[b-kjwf1v9jds] {
    margin-bottom: 12px;
}

/* Outlined, so the "pay now" buttons below stay the visually dominant CTA
   while this one reads as the calmer, cheaper alternative. */
.btn-premium-reactivate[b-kjwf1v9jds] {
    width: 100%;
    border: 1.5px solid #1971c2;
    border-radius: 10px;
    background: #ffffff;
    color: #1971c2;
    font-size: 14px;
    font-weight: 600;
    padding: 12px;
    cursor: pointer;
}

.btn-premium-reactivate:disabled[b-kjwf1v9jds] {
    opacity: 0.65;
    cursor: default;
}

.premium-reactivate-hint[b-kjwf1v9jds] {
    font-size: 12px;
    color: #495057;
    margin: 6px 0 0;
}

/* ── F-43: payment history ──────────────────────────────────────────────── */

.billing-history[b-kjwf1v9jds] {
    margin-top: 12px;
    border-top: 1px solid #e9ecef;
    padding-top: 10px;
}

.billing-history-toggle[b-kjwf1v9jds] {
    background: none;
    border: none;
    color: #495057;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    padding: 4px 0;
}

.billing-history-loading[b-kjwf1v9jds],
.billing-history-empty[b-kjwf1v9jds] {
    font-size: 12px;
    color: #868e96;
    margin: 8px 0 0;
}

.billing-history-list[b-kjwf1v9jds] {
    list-style: none;
    margin: 8px 0 0;
    padding: 0;
}

.billing-history-item[b-kjwf1v9jds] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    font-size: 12.5px;
    padding: 6px 0;
    border-bottom: 1px dashed #f1f3f5;
}

.billing-history-item:last-child[b-kjwf1v9jds] {
    border-bottom: none;
}

.bh-date[b-kjwf1v9jds] {
    color: #868e96;
    white-space: nowrap;
}

.bh-label[b-kjwf1v9jds] {
    flex: 1;
    color: #495057;
}

.bh-method[b-kjwf1v9jds] {
    color: #868e96;
}

.bh-amount[b-kjwf1v9jds] {
    font-weight: 600;
    color: #212529;
    white-space: nowrap;
}

.bh-receipt[b-kjwf1v9jds] {
    font-size: 12px;
    color: #1971c2;
    text-decoration: underline;
    white-space: nowrap;
}

/* Shortcut from the invite form to the custom-roles management page (F-41 QA2). */
.link-custom-role[b-kjwf1v9jds] {
    display: inline-block;
    margin-top: 6px;
    font-size: 13px;
    color: #7c3aed;
    text-decoration: none;
}

.link-custom-role:hover[b-kjwf1v9jds] {
    text-decoration: underline;
}
/* /Pages/Home.razor.rz.scp.css */
/* Reset e Layout Base Mobile-First */

*[b-sfztc1nyh8], *[b-sfztc1nyh8]::before, *[b-sfztc1nyh8]::after {
    box-sizing: border-box;
}

/* ========== HOME PAGE LAYOUT ========== */

.home-page[b-sfztc1nyh8] {
    display: flex;
    flex-direction: column;
    height: calc(100dvh - 62px - var(--admin-banner-h, 0px)); /* subtract bottom nav */
    overflow: hidden;
}

@media (min-width: 641px) {
    .home-page[b-sfztc1nyh8] {
        height: auto;
        max-width: 440px;
        margin: 16px auto 32px;
        overflow: visible;
    }
}

.calendar-app[b-sfztc1nyh8] {
    flex: 1;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 450px;
    margin: 0 auto;
    padding: 8px 12px 4px;
    font-family: system-ui, -apple-system, sans-serif;
    min-height: 0;
    overflow-x: hidden;
}

@media (min-width: 641px) {
    .calendar-app[b-sfztc1nyh8] {
        flex: none;
        max-width: none;
        min-height: 0;
        padding: 8px 0 4px;
    }

    .days-grid[b-sfztc1nyh8] {
        flex: none;
        grid-auto-rows: auto; /* height driven by aspect-ratio on cells */
    }

    .day-cell[b-sfztc1nyh8] {
        aspect-ratio: 1; /* square cells on desktop */
    }
}

.calendar-header[b-sfztc1nyh8] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
    flex-shrink: 0;
}

    .calendar-header h2[b-sfztc1nyh8] {
        font-size: 18px;
        margin: 0;
        font-weight: 700;
        text-transform: capitalize;
    }

.btn-nav[b-sfztc1nyh8] {
    background: #f1f3f5;
    border: none;
    width: 40px;
    height: 40px;
    font-size: 18px;
    font-weight: bold;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
}

.btn-wizard[b-sfztc1nyh8], .btn-select[b-sfztc1nyh8] {
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    width: 36px;
    height: 36px;
    font-size: 18px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-left: 8px;
    transition: background 0.15s;
}

.btn-wizard:hover[b-sfztc1nyh8], .btn-select:hover[b-sfztc1nyh8] {
    background: #dbeafe;
}

.calendar-legend[b-sfztc1nyh8] {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
    flex-shrink: 0;
}

.legend-badge[b-sfztc1nyh8] {
    padding: 4px 12px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 600;
    text-align: center;
    box-sizing: border-box;
}

.weekdays-grid[b-sfztc1nyh8] {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 4px;
    text-align: center;
    font-weight: 600;
    font-size: 11px;
    color: #adb5bd;
    margin-bottom: 4px;
    text-transform: uppercase;
    flex-shrink: 0;
}

/* Days grid: fills remaining vertical space, rows share it equally */
.days-grid[b-sfztc1nyh8] {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    grid-auto-rows: 1fr;
    gap: 4px;
    text-align: center;
    flex: 1;
    min-height: 0;
    touch-action: pan-y;
    user-select: none;
}

.day-cell[b-sfztc1nyh8] {
    width: 100%;
    min-width: 0;
    border: none;
    border-radius: 10px;
    background-color: #f8f9fa;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: space-between;
    padding: 4px;
    cursor: pointer;
    transition: transform 0.1s;
    -webkit-tap-highlight-color: transparent;
    -webkit-appearance: none;
    appearance: none;
    font: inherit;
    text-align: center;
    overflow: hidden;
}

    .day-cell:active[b-sfztc1nyh8] {
        transform: scale(0.92);
    }

.day-number[b-sfztc1nyh8] {
    font-weight: 600;
    font-size: 13px;
    color: #212529;
}

.parent-indicator[b-sfztc1nyh8] {
    font-size: 10px;
    font-weight: 800;
    opacity: 0.8;
}

.day-time-badge[b-sfztc1nyh8] {
    font-size: 8px;
    font-weight: 600;
    opacity: 0.75;
    line-height: 1;
    letter-spacing: 0;
}

/* ── Calendar empty state ── */
.calendar-empty-state[b-sfztc1nyh8] {
    text-align: center;
    padding: 24px 16px;
    color: #6b7280;
}
.calendar-empty-state .empty-icon[b-sfztc1nyh8] { font-size: 32px; display: block; margin-bottom: 8px; }
.calendar-empty-state .empty-title[b-sfztc1nyh8] { font-size: 14px; font-weight: 600; margin: 0 0 4px; color: #374151; }
.calendar-empty-state .empty-hint[b-sfztc1nyh8] { font-size: 13px; margin: 0; }

/* ── Read-only banner ── */
.readonly-banner[b-sfztc1nyh8] {
    background: #fef3c7;
    border: 1px solid #fde68a;
    color: #92400e;
    font-size: 13px;
    padding: 8px 12px;
    border-radius: 8px;
    margin-bottom: 16px;
    text-align: center;
}

/* F-14: admin mode editing a normally-protected day — solid amber, not a lock */
.admin-override-banner[b-sfztc1nyh8] {
    background: #f59e0b;
    border-color: #d97706;
    color: #1f2937;
    font-weight: 600;
}

/* Slot 1 — Blue */
/* S-11 QA: slot 0 — inactive/departed member (single gray identity with
   vertical hatching; the 4 color themes belong to ACTIVE members only). */
.role-0-day[b-sfztc1nyh8] {
    background: repeating-linear-gradient(90deg, #f1f3f5 0 6px, #e3e5e8 6px 12px);
    color: #6c757d;
    border: 1px solid #ced4da;
}

.role-1-day[b-sfztc1nyh8] {
    background-color: #dbeafe;
    color: #1e3a8a;
    border: 1px solid #93c5fd;
}

/* Slot 2 — Pink */
.role-2-day[b-sfztc1nyh8] {
    background-color: #ffe4e6;
    color: #881337;
    border: 1px solid #fda4af;
}

/* Slot 3 — Teal */
.role-3-day[b-sfztc1nyh8] {
    background-color: #ccfbf1;
    color: #0f766e;
    border: 1px solid #5eead4;
}

/* Slot 4 — Orange (was purple: too close to slot 1's blue in pastels;
   distinct from the swapped amber, which keeps its dashed border) */
.role-4-day[b-sfztc1nyh8] {
    background-color: #fed7aa;
    color: #7c2d12;
    border: 1px solid #ea580c;
}

.swapped[b-sfztc1nyh8] {
    background-color: #fef3c7;
    color: #92400e;
    border: 2px dashed #f59e0b;
}

.unassigned[b-sfztc1nyh8] {
    background-color: #ffffff;
    border: 1px solid #e9ecef;
}

    .unassigned .parent-indicator[b-sfztc1nyh8] {
        color: #dee2e6;
    }

.empty[b-sfztc1nyh8] {
    background-color: transparent;
    border: none;
    cursor: default;
    pointer-events: none;
}

.today[b-sfztc1nyh8] {
    border: 2px solid #212529;
}

.day-frozen[b-sfztc1nyh8] {
    opacity: 0.75;
    cursor: pointer;
}

.day-frozen-mine[b-sfztc1nyh8] {
    opacity: 1;
    border: 2px solid #f59e0b;
    box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.25);
    animation: pulse-amber-b-sfztc1nyh8 1.8s ease-in-out infinite;
}

@keyframes pulse-amber-b-sfztc1nyh8 {
    0%   { box-shadow: 0 0 0 0   rgba(245, 158, 11, 0.40); }
    60%  { box-shadow: 0 0 0 5px rgba(245, 158, 11, 0.00); }
    100% { box-shadow: 0 0 0 0   rgba(245, 158, 11, 0.00); }
}

.day-frozen-badge[b-sfztc1nyh8] {
    font-size: 10px;
    line-height: 1;
    opacity: 0.55;
}

.day-frozen-badge--mine[b-sfztc1nyh8] {
    opacity: 1;
    animation: bell-shake-b-sfztc1nyh8 2s ease-in-out infinite;
}

/* F-20: the pending request's handoff has passed — red glow + faster shake
   so the approver acts before the F-24 auto-approval kicks in. */
.day-frozen-badge--overdue[b-sfztc1nyh8] {
    animation: bell-shake-b-sfztc1nyh8 1s ease-in-out infinite;
    filter: drop-shadow(0 0 3px #dc2626) drop-shadow(0 0 1px #dc2626);
}

@keyframes bell-shake-b-sfztc1nyh8 {
    0%, 80%, 100% { transform: rotate(0deg); }
    85%  { transform: rotate(-15deg); }
    90%  { transform: rotate(15deg); }
    95%  { transform: rotate(-10deg); }
}

/* Efeito de Gaveta Inferior (Bottom Sheet Modal) */
.backdrop[b-sfztc1nyh8] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.4);
    z-index: 99;
}

.bottom-sheet[b-sfztc1nyh8] {
    position: fixed;
    bottom: 62px;
    left: 0;
    right: 0;
    background: #ffffff;
    padding: 24px 20px;
    border-top-left-radius: 24px;
    border-top-right-radius: 24px;
    box-shadow: 0 -4px 16px rgba(0,0,0,0.15);
    z-index: 100;
    max-width: 450px;
    margin: 0 auto;
    animation: slideUp 0.25s ease-out;
    overflow-y: auto;
    max-height: 85dvh;
}

@media (min-width: 641px) {
    .bottom-sheet[b-sfztc1nyh8] {
        bottom: 0;
    }
}

.sheet-handle[b-sfztc1nyh8] {
    width: 40px;
    height: 5px;
    background: #dee2e6;
    border-radius: 3px;
    margin: -12px auto 16px auto;
}

.bottom-sheet h3[b-sfztc1nyh8] {
    margin-top: 0;
    font-size: 18px;
    font-weight: 700;
    color: #212529;
}

.form-group[b-sfztc1nyh8] {
    margin-bottom: 16px;
    text-align: left;
}

    .form-group label[b-sfztc1nyh8] {
        font-size: 13px;
        font-weight: 600;
        color: #495057;
        display: block;
        margin-bottom: 6px;
    }

.field-locked-hint[b-sfztc1nyh8] {
    display: block;
    font-size: 11px;
    color: #92400e;
    margin-top: 4px;
    line-height: 1.3;
}

.form-hint[b-sfztc1nyh8] {
    font-size: 11px;
    font-weight: 400;
    color: #868e96;
}

.time-select-row[b-sfztc1nyh8] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.time-select[b-sfztc1nyh8] {
    width: auto;
    flex: 1;
    text-align: center;
}

.time-select-sep[b-sfztc1nyh8] {
    font-size: 20px;
    font-weight: 700;
    color: #495057;
    flex-shrink: 0;
}

.panel-actions[b-sfztc1nyh8] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 8px;
}

.panel-actions-buttons[b-sfztc1nyh8] {
    display: flex;
    gap: 12px;
}

.panel-actions-secondary[b-sfztc1nyh8] {
    display: flex;
    justify-content: center;
    margin-top: 4px;
}

/* T-27: handoff time on a day without a responsibility transition */
.handoff-no-transition-hint[b-sfztc1nyh8] {
    margin-top: 8px;
    background: #fffbeb;
    border: 1px solid #fcd34d;
    border-radius: 8px;
    padding: 8px 10px;
    font-size: 12px;
    color: #92400e;
    line-height: 1.4;
}

/* T-28: the .frozen-panel* / .frozen-info-* rules that used to live here were
   a dead byte-identical copy left behind by the T-26 extraction — CSS
   isolation scopes them to Home while the elements render inside the
   FrozenDayPanel component. FrozenDayPanel.razor.css is the single source. */

/* ========== SKELETON LOADERS ========== */

.skeleton-home[b-sfztc1nyh8] {
    display: flex;
    flex-direction: column;
    height: calc(100dvh - 62px - var(--admin-banner-h, 0px));
    overflow: hidden;
    padding: 0;
}

@media (min-width: 641px) {
    .skeleton-home[b-sfztc1nyh8] {
        height: auto;
        max-width: 440px;
        margin: 16px auto 32px;
    }
}

/* Card skeleton */
.skel-card[b-sfztc1nyh8] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin: 10px 12px 6px;
    padding: 14px 16px;
    border-radius: 16px;
    background: #dee2e6;
    flex-shrink: 0;
}

.skel-card-top[b-sfztc1nyh8] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 10px;
    border-bottom: 1px solid #ced4da;
}

.skel-card-bottom[b-sfztc1nyh8] {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 52px;
}

.skel-avatar[b-sfztc1nyh8] {
    width: 42px !important;
    height: 42px !important;
    border-radius: 50% !important;
    flex-shrink: 0;
    background: #c4c9ce !important;
}

.skel-card-lines[b-sfztc1nyh8] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

/* Calendar skeleton */
.skel-cal[b-sfztc1nyh8] {
    flex: 1;
    display: flex;
    flex-direction: column;
    padding: 8px 12px 4px;
    min-height: 0;
    gap: 8px;
}

@media (min-width: 641px) {
    .skel-cal[b-sfztc1nyh8] {
        flex: none;
    }
}

.skel-cal-header[b-sfztc1nyh8] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-shrink: 0;
}

.skel-btn-nav[b-sfztc1nyh8] {
    width: 40px !important;
    height: 40px !important;
    border-radius: 50% !important;
}

.skel-cal-legend[b-sfztc1nyh8] {
    display: flex;
    justify-content: center;
    gap: 8px;
    flex-shrink: 0;
}

.skel-pill[b-sfztc1nyh8] {
    height: 28px !important;
    width: 72px !important;
    border-radius: 20px !important;
}

.skel-week-row[b-sfztc1nyh8] {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 4px;
    flex-shrink: 0;
}

.skel-week-label[b-sfztc1nyh8] {
    height: 16px !important;
    border-radius: 4px !important;
}

.skel-days-grid[b-sfztc1nyh8] {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    grid-auto-rows: 1fr;
    gap: 4px;
    flex: 1;
    min-height: 0;
}

@media (min-width: 641px) {
    .skel-days-grid[b-sfztc1nyh8] {
        flex: none;
        grid-auto-rows: auto;
    }
    .skel-day-cell[b-sfztc1nyh8] {
        aspect-ratio: 1;
    }
}

.skel-day-cell[b-sfztc1nyh8] {
    width: 100%;
    min-height: 44px;
    border-radius: 10px !important;
}

/* Shared skeleton text helpers */
.skel-text-sm[b-sfztc1nyh8]  { height: 13px !important; }
.skel-text-md[b-sfztc1nyh8]  { height: 17px !important; }
.skel-text-lg[b-sfztc1nyh8]  { height: 22px !important; }

/* ========== ESTADOS DE CARREGAMENTO E ALERTAS ========== */
.loading-container[b-sfztc1nyh8] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: calc(100dvh - 62px - var(--admin-banner-h, 0px));
    font-family: sans-serif;
}

.alert-danger[b-sfztc1nyh8] {
    background: #fff5f5;
    border: 1px solid #ffe3e3;
    color: #e03131;
    padding: 20px;
    border-radius: 12px;
    text-align: center;
    max-width: 350px;
}

/* ========== BULK SELECTION ========== */

/* Selected day cell — ring + tinted overlay */
.day-cell.day-selected[b-sfztc1nyh8] {
    outline: 2px solid #212529;
    outline-offset: -2px;
    position: relative;
}

/* Check mark in top-right corner */
.day-selected-mark[b-sfztc1nyh8] {
    position: absolute;
    top: 2px;
    right: 3px;
    font-size: 9px;
    font-weight: 900;
    color: #212529;
    line-height: 1;
    pointer-events: none;
}

/* ========== SELECTION ACTION BAR ========== */

/* Overlays the bottom nav (z-index 200) */
/* Single fixed 62px row: selection counts live on the buttons themselves
   (Resolver (N) / Editar (N)), so no separate count label is needed and the bar
   never grows over the calendar. Cancel is pushed to the far right. */
.selection-action-bar[b-sfztc1nyh8] {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: 62px;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0 12px;
    background: #212529;
    color: #ffffff;
    z-index: 210;
    box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.25);
}

.btn-bulk-edit[b-sfztc1nyh8] {
    background: #ffffff;
    color: #212529;
    border: none;
    padding: 8px 14px;
    border-radius: 20px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
}

.btn-bulk-cancel[b-sfztc1nyh8] {
    background: transparent;
    color: #adb5bd;
    border: 1px solid #495057;
    padding: 8px 12px;
    border-radius: 20px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    flex-shrink: 0;
    margin-left: auto;   /* keep the dismiss action separated on the far right */
}

.btn-bulk-cancel:hover[b-sfztc1nyh8] {
    color: #ffffff;
    border-color: #adb5bd;
}

/* Amber accent signals "workflow requests need attention" (matches frozen-day cues) */
.btn-bulk-workflow[b-sfztc1nyh8] {
    background: #ffc107;
    color: #212529;
    border: none;
    padding: 8px 14px;
    border-radius: 20px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
}

/* Sections inside the bulk workflow sheet (F-25) */
.workflow-section[b-sfztc1nyh8] {
    padding: 14px 0;
    border-bottom: 1px solid #e9ecef;
}

.workflow-section:last-of-type[b-sfztc1nyh8] {
    border-bottom: none;
}

.workflow-section-title[b-sfztc1nyh8] {
    margin: 0 0 10px;
    font-size: 14px;
    font-weight: 600;
    color: #495057;
}

/* Solid, always-legible action buttons for the bulk workflow sheet (F-25).
   Avoids the transparent text-link look (btn-delete-day) that looked "broken"
   and vanished while disabled during the batch. Each keeps a solid fill and/or
   a border so the dimmed (disabled) state still reads clearly as a button. */
.btn-wf-approve[b-sfztc1nyh8] {
    background: #212529;
    color: #ffffff;
    border: 1px solid #212529;
}

.btn-wf-secondary[b-sfztc1nyh8] {
    background: #e9ecef;
    color: #343a40;
    border: 1px solid #ced4da;
}

.btn-wf-revert[b-sfztc1nyh8] {
    background: #ffc107;
    color: #212529;
    border: 1px solid #e0a800;
}

/* ========== BULK BOTTOM SHEET ========== */

/* Sits above the action bar (210) and normal backdrop (99) */
.bulk-sheet[b-sfztc1nyh8] {
    bottom: 62px;
    max-height: calc(100dvh - 80px);
    overflow-y: auto;
    z-index: 220;
}

@media (min-width: 641px) {
    .bulk-sheet[b-sfztc1nyh8] {
        bottom: 0;
    }
}

.bulk-field-row[b-sfztc1nyh8] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
    gap: 8px;
}

.bulk-field-row label:first-child[b-sfztc1nyh8] {
    font-size: 13px;
    font-weight: 600;
    color: #495057;
    margin: 0;
}

/* Clear checkbox label */
.clear-checkbox[b-sfztc1nyh8] {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    font-weight: 500;
    color: #dc3545;
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
    user-select: none;
}

.clear-checkbox input[type="checkbox"][b-sfztc1nyh8] {
    accent-color: #dc3545;
    width: 15px;
    height: 15px;
    cursor: pointer;
}

/* Unavailable state: checkbox disabled because field has a value */
.clear-checkbox-unavailable[b-sfztc1nyh8] {
    color: #adb5bd;
    cursor: not-allowed;
}

.clear-checkbox-unavailable input[type="checkbox"][b-sfztc1nyh8] {
    cursor: not-allowed;
}

/* Greyed-out group when scheduled parent not set */
.field-disabled[b-sfztc1nyh8] {
    opacity: 0.4;
    pointer-events: none;
}

/* "Delete all" button inside the scheduled-parent row */
.btn-clear-field[b-sfztc1nyh8] {
    background: #fff0f0;
    color: #dc3545;
    border: 1px solid #fca5a5;
    padding: 4px 10px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
}

.btn-clear-field:hover[b-sfztc1nyh8] {
    background: #fee2e2;
}

/* Delete-all confirmation alert inside the bulk sheet */
.bulk-delete-alert[b-sfztc1nyh8] {
    background: #fff5f5;
    border: 1px solid #fca5a5;
    border-radius: 12px;
    padding: 16px;
    margin-bottom: 12px;
}

.bulk-delete-alert p[b-sfztc1nyh8] {
    font-size: 14px;
    color: #991b1b;
    margin: 0 0 12px;
    line-height: 1.5;
}

.bulk-delete-actions[b-sfztc1nyh8] {
    display: flex;
    gap: 10px;
}

.btn-delete-confirm[b-sfztc1nyh8] {
    flex: 1;
    padding: 12px;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    background: #dc3545;
    color: white;
}

/* F-47: the day-observation question, shown when undoing a swap would also
   change the observation. Reuses the confirmation-block chrome in a NEUTRAL
   tone — this is a choice between two valid outcomes, not a destructive step,
   so the red of .bulk-delete-alert would misread it. */
.revert-notes-confirm[b-sfztc1nyh8] {
    background: #f8fafc;
    border-color: #cbd5e1;
}

.revert-notes-confirm p[b-sfztc1nyh8] {
    color: #1f2937;
}

.revert-notes-diff[b-sfztc1nyh8] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 12px;
}

.revert-notes-line[b-sfztc1nyh8] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.revert-notes-label[b-sfztc1nyh8] {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: #64748b;
}

/* Free text from the family: wrap it instead of pushing the 344px panel wide. */
.revert-notes-value[b-sfztc1nyh8] {
    font-size: 14px;
    line-height: 1.4;
    color: #1f2937;
    overflow-wrap: anywhere;
}

.revert-notes-confirm .bulk-delete-actions .btn[b-sfztc1nyh8] {
    flex: 1;
}

.revert-notes-dismiss[b-sfztc1nyh8] {
    display: block;
    width: 100%;
    margin-top: 10px;
    padding: 8px;
    background: none;
    border: none;
    font-size: 13px;
    color: #64748b;
    text-decoration: underline;
    cursor: pointer;
}

.revert-notes-dismiss:disabled[b-sfztc1nyh8] {
    opacity: 0.55;
    cursor: not-allowed;
}

/* ========== NAVIGATION GUARD DIALOG ========== */

.nav-guard-backdrop[b-sfztc1nyh8] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    z-index: 300;
}

.nav-guard-dialog[b-sfztc1nyh8] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: #ffffff;
    border-radius: 16px;
    padding: 24px 20px;
    max-width: 320px;
    width: calc(100% - 40px);
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.22);
    z-index: 301;
    text-align: center;
}

.nav-guard-dialog p[b-sfztc1nyh8] {
    font-size: 14px;
    color: #343a40;
    margin: 0 0 8px;
    line-height: 1.5;
}

.nav-guard-actions[b-sfztc1nyh8] {
    display: flex;
    gap: 10px;
    margin-top: 16px;
}
/* /Pages/Leaving.razor.rz.scp.css */
.leaving-container[b-b05ymwepnd] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 80vh;
    padding: 20px;
}

.leaving-card[b-b05ymwepnd] {
    background: #fff;
    border: 1px solid #ffe3e3;
    border-radius: 20px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, .05);
    padding: 32px 24px;
    max-width: 420px;
    width: 100%;
    text-align: center;
}

.leaving-icon[b-b05ymwepnd] {
    font-size: 40px;
    display: block;
    margin-bottom: 12px;
}

.leaving-card h2[b-b05ymwepnd] {
    font-size: 20px;
    font-weight: 700;
    color: #212529;
    margin: 0 0 16px;
}

.leaving-text[b-b05ymwepnd] {
    font-size: 14px;
    color: #495057;
    margin: 0 0 12px;
    line-height: 1.5;
}

.leaving-actions[b-b05ymwepnd] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 20px;
}

.leaving-sudo[b-b05ymwepnd] {
    margin-top: 20px;
    text-align: left;
}
/* /Pages/Login.razor.rz.scp.css */
.login-container[b-s6il88vlgs] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    background-color: #f8f9fa;
    padding: 20px;
    font-family: system-ui, -apple-system, sans-serif;
}

/* App version — discreet, below the card (support & PWA deploy check) */
.app-version[b-s6il88vlgs] {
    margin-top: 14px;
    font-size: 11px;
    color: #adb5bd;
    letter-spacing: 0.3px;
}

.login-card[b-s6il88vlgs] {
    background: #ffffff;
    padding: 32px 24px;
    border-radius: 20px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.05);
    width: 100%;
    max-width: 400px;
    text-align: center;
}

.login-header[b-s6il88vlgs] {
    margin-bottom: 28px;
}

.app-icon[b-s6il88vlgs] {
    font-size: 40px;
    margin-bottom: 12px;
}

.login-header h2[b-s6il88vlgs] {
    font-size: 24px;
    font-weight: 700;
    color: #212529;
    margin: 0 0 6px 0;
}

.login-header p[b-s6il88vlgs] {
    font-size: 14px;
    color: #6c757d;
    margin: 0;
}

.form-group[b-s6il88vlgs] {
    margin-bottom: 20px;
    text-align: left;
}

.form-group label[b-s6il88vlgs] {
    font-size: 13px;
    font-weight: 600;
    color: #495057;
    display: block;
    margin-bottom: 6px;
}

.btn-login[b-s6il88vlgs] {
    width: 100%;
    padding: 14px;
    border: none;
    border-radius: 10px;
    font-size: 16px;
    font-weight: 600;
    background-color: #212529;
    color: #ffffff;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    transition: background-color 0.15s;
}

.btn-login:disabled[b-s6il88vlgs] {
    background-color: #868e96;
    cursor: not-allowed;
}

.forgot-link[b-s6il88vlgs] {
    display: inline-block;
    margin-top: 16px;
    font-size: 13px;
    color: #6c757d;
    text-decoration: none;
}

.forgot-link:hover[b-s6il88vlgs] { color: #212529; }

/* F-15: sign-up entry point */
.signup-cta[b-s6il88vlgs] {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid #e9ecef;
    font-size: 13px;
    color: #6c757d;
}

.signup-cta a[b-s6il88vlgs] {
    color: #212529;
    font-weight: 600;
    text-decoration: none;
}

.signup-cta a:hover[b-s6il88vlgs] { text-decoration: underline; }

/* F-19: Session expiry banner */
.session-expired-banner[b-s6il88vlgs] {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #fffbeb;
    border: 1px solid #f59e0b;
    border-radius: 12px;
    padding: 12px 14px;
    margin-bottom: 20px;
    text-align: left;
    animation: slideDown-b-s6il88vlgs 0.3s ease-out;
}

.session-expired-icon[b-s6il88vlgs] {
    font-size: 20px;
    flex-shrink: 0;
}

.session-expired-text[b-s6il88vlgs] {
    flex: 1;
    font-size: 13px;
    font-weight: 500;
    color: #92400e;
    line-height: 1.4;
}

.session-expired-dismiss[b-s6il88vlgs] {
    background: transparent;
    border: none;
    color: #92400e;
    font-size: 16px;
    cursor: pointer;
    padding: 2px 4px;
    opacity: 0.7;
    flex-shrink: 0;
}

.session-expired-dismiss:hover[b-s6il88vlgs] {
    opacity: 1;
}

@keyframes slideDown-b-s6il88vlgs {
    from { opacity: 0; transform: translateY(-8px); }
    to { opacity: 1; transform: translateY(0); }
}

/* /Pages/Notifications.razor.rz.scp.css */
.notif-tab-badge[b-2poz70l2ke] {
    background: #dc2626;
    color: #ffffff;
    font-size: 10px;
    font-weight: 700;
    padding: 1px 5px;
    border-radius: 10px;
    min-width: 16px;
    text-align: center;
}

.notif-loading[b-2poz70l2ke] {
    display: flex;
    align-items: center;
    gap: 10px;
    justify-content: center;
    color: #6b7280;
    padding: 32px 0;
}

.notif-empty[b-2poz70l2ke] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 48px 0;
    color: #9ca3af;
    text-align: center;
}

.notif-empty-icon[b-2poz70l2ke] {
    font-size: 40px;
}

.notif-empty p[b-2poz70l2ke] {
    margin: 0;
    font-size: 14px;
}

/* Swap request cards */

.swap-card[b-2poz70l2ke] {
    background: #ffffff;
    border-radius: 12px;
    box-shadow: 0 1px 4px rgba(0,0,0,0.08);
    margin-bottom: 12px;
    overflow: hidden;
}

.swap-card-header[b-2poz70l2ke] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 14px 8px;
}

.swap-card-date[b-2poz70l2ke] {
    font-size: 15px;
    font-weight: 700;
    color: #212529;
}

.swap-card-body[b-2poz70l2ke] {
    padding: 0 14px 8px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.swap-info-row[b-2poz70l2ke] {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    gap: 8px;
}

.swap-info-label[b-2poz70l2ke] {
    color: #6b7280;
    flex-shrink: 0;
}

.swap-info-value[b-2poz70l2ke] {
    color: #212529;
    font-weight: 500;
    text-align: right;
}

.swap-rejection-reason[b-2poz70l2ke] {
    padding: 4px 14px 8px;
}

.swap-card-actions[b-2poz70l2ke] {
    display: flex;
    gap: 8px;
    padding: 8px 14px 12px;
}

.status-badge[b-2poz70l2ke] {
    font-size: 11px;
    font-weight: 700;
    padding: 3px 10px;
    border-radius: 20px;
}

.status-pending[b-2poz70l2ke]   { background: #fef3c7; color: #92400e; }
.status-approved[b-2poz70l2ke]  { background: #d1fae5; color: #065f46; }
.status-rejected[b-2poz70l2ke]  { background: #fee2e2; color: #991b1b; }
.status-cancelled[b-2poz70l2ke] { background: #f3f4f6; color: #6b7280; }
.status-revert[b-2poz70l2ke]    { background: #ede9fe; color: #5b21b6; }
.status-auto[b-2poz70l2ke]      { background: #e0e7ff; color: #3730a3; }

/* Allows the auto-approved marker to sit next to the status badge */
.status-badges[b-2poz70l2ke] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.swap-card-urgent[b-2poz70l2ke] {
    border: 1.5px solid #fbbf24;
}

/* F-20: handoff already passed */
.swap-card-overdue[b-2poz70l2ke] {
    border: 1.5px solid #f87171;
}

.swap-urgent-banner[b-2poz70l2ke] {
    background: #fff3cd;
    border: 1px solid #ffc107;
    border-radius: 8px;
    padding: 6px 12px;
    margin: 0 0 10px;
    font-size: 13px;
    font-weight: 600;
    color: #856404;
    text-align: center;
}

.swap-overdue-banner[b-2poz70l2ke] {
    background: #fef2f2;
    border-color: #f87171;
    color: #b91c1c;
}

/* F-20: frozen resolution-time tag shown on history cards */
.status-tag-urgent[b-2poz70l2ke] {
    background: #fff3cd;
    color: #856404;
}

.status-tag-overdue[b-2poz70l2ke] {
    background: #fef2f2;
    color: #b91c1c;
}

.btn-approve[b-2poz70l2ke] {
    flex: 1;
    padding: 10px;
    background: #212529;
    color: #ffffff;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
}

.btn-reject[b-2poz70l2ke] {
    flex: 1;
    padding: 10px;
    background: #f3f4f6;
    color: #374151;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
}

.btn-cancel-req[b-2poz70l2ke] {
    flex: 1;
    padding: 10px;
    background: none;
    color: #dc2626;
    border: 1px solid #fca5a5;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
}

.btn-approve:disabled[b-2poz70l2ke],
.btn-reject:disabled[b-2poz70l2ke],
.btn-cancel-req:disabled[b-2poz70l2ke] {
    opacity: 0.55;
    cursor: not-allowed;
}

/* Notification history items */

.notif-item[b-2poz70l2ke] {
    display: flex;
    gap: 12px;
    padding: 12px 0;
    border-bottom: 1px solid #f3f4f6;
}

.notif-item:last-child[b-2poz70l2ke] {
    border-bottom: none;
}

.notif-item-icon[b-2poz70l2ke] {
    font-size: 22px;
    flex-shrink: 0;
    width: 32px;
    text-align: center;
}

.notif-item-content[b-2poz70l2ke] {
    flex: 1;
    min-width: 0;
}

.notif-item-title[b-2poz70l2ke] {
    margin: 0 0 2px;
    font-size: 14px;
    font-weight: 600;
    color: #212529;
}

.notif-item-message[b-2poz70l2ke] {
    margin: 0 0 4px;
    font-size: 13px;
    color: #374151;
    line-height: 1.4;
}

.notif-item-time[b-2poz70l2ke] {
    font-size: 11px;
    color: #9ca3af;
}

/* F-45: the calendar change a notification announced (from its resolution log) */
.notif-diff-list[b-2poz70l2ke] {
    list-style: none;
    margin: 0 0 4px;
    padding: 4px 8px;
    background: #f1f5f9;
    border-left: 3px solid #64748b;
    border-radius: 0 6px 6px 0;
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.notif-diff-item[b-2poz70l2ke] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px;
    font-size: 12px;
    line-height: 1.4;
}

.notif-diff-label[b-2poz70l2ke] {
    font-weight: 700;
    color: #495057;
}

.notif-diff-label[b-2poz70l2ke]::after {
    content: ':';
}

.notif-diff-old[b-2poz70l2ke] {
    background: #fee2e2;
    color: #991b1b;
    padding: 1px 6px;
    border-radius: 4px;
    text-decoration: line-through;
    white-space: nowrap;
}

.notif-diff-arrow[b-2poz70l2ke] {
    color: #adb5bd;
    font-size: 11px;
    flex-shrink: 0;
}

.notif-diff-new[b-2poz70l2ke] {
    background: #dcfce7;
    color: #166534;
    padding: 1px 6px;
    border-radius: 4px;
    white-space: nowrap;
}

.notif-unread .notif-item-title[b-2poz70l2ke] {
    color: #1d4ed8;
}

.notif-unread[b-2poz70l2ke] {
    background: #eff6ff;
    border-radius: 8px;
    padding: 12px 8px;
    margin-bottom: 4px;
    border-bottom: none;
}


/* /Pages/PolicyUpdate.razor.rz.scp.css */
/* S-15/B-4 — the re-consent screen. Mirrors the Leaving screen's centred-card
   chrome (the other blocking, full-page state) so the two feel like one family. */

.policy-update-container[b-4jg6x4919m] {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    padding: 1.25rem 1rem 2rem;
    min-height: 100%;
}

.policy-update-card[b-4jg6x4919m] {
    width: 100%;
    max-width: 32rem;
    background: var(--surface, #fff);
    border-radius: var(--radius-lg, 14px);
    box-shadow: var(--shadow-md, 0 2px 12px rgba(16, 32, 61, .1));
    padding: 1.5rem 1.25rem;
    text-align: center;
}

.policy-update-icon[b-4jg6x4919m] {
    font-size: 2.5rem;
    line-height: 1;
    display: block;
    margin-bottom: .5rem;
}

.policy-update-card h2[b-4jg6x4919m] {
    margin: 0 0 .75rem;
    font-size: 1.25rem;
    color: var(--text-strong, #16305c);
}

.policy-update-text[b-4jg6x4919m] {
    margin: 0 0 1rem;
    color: var(--text, #33404f);
    line-height: 1.5;
}

/* What changed — left-aligned, because it is read, not scanned. */
.policy-update-summary[b-4jg6x4919m] {
    text-align: left;
    background: var(--surface-alt, #f4f7fb);
    border-radius: var(--radius-md, 10px);
    padding: .875rem 1rem;
    margin-bottom: 1rem;
}

.policy-update-summary h3[b-4jg6x4919m] {
    margin: 0 0 .5rem;
    font-size: .95rem;
    color: var(--text-strong, #16305c);
}

.policy-update-summary ul[b-4jg6x4919m] {
    margin: 0;
    padding-left: 1.1rem;
}

.policy-update-summary li[b-4jg6x4919m] {
    margin-bottom: .5rem;
    line-height: 1.45;
    font-size: .92rem;
    color: var(--text, #33404f);
}

.policy-update-summary li:last-child[b-4jg6x4919m] { margin-bottom: 0; }

.policy-update-links[b-4jg6x4919m] {
    margin: 0 0 1rem;
    font-size: .92rem;
    color: var(--text-muted, #5a6b80);
}

/* The consent checkbox is the one interactive element that must not be missed:
   left-aligned and roomy enough for a 344 px screen. */
.policy-update-check[b-4jg6x4919m] {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    text-align: left;
    margin-bottom: 1rem;
    line-height: 1.45;
    font-size: .95rem;
}

/* S-15/A-1: the path declaration, set apart inside the same acceptance (mirrors
   Register's .consent-declaration — same text, same visual weight). */
.policy-update-declaration[b-4jg6x4919m] {
    display: block;
    margin-bottom: .5rem;
    padding-left: .5rem;
    border-left: 2px solid var(--border, #dee2e6);
    color: var(--text, #33404f);
}

/* Shown while the profile (and therefore WHICH declaration applies) loads. */
.policy-update-loading[b-4jg6x4919m] {
    display: flex;
    justify-content: center;
    padding: 1rem 0 1.25rem;
    color: var(--text-muted, #5a6b80);
}

.policy-update-check input[type="checkbox"][b-4jg6x4919m] {
    flex: 0 0 auto;
    width: 1.15rem;
    height: 1.15rem;
    margin-top: .1rem;
}

.policy-update-accept[b-4jg6x4919m] {
    width: 100%;
    justify-content: center;
}

.policy-update-decline[b-4jg6x4919m] {
    margin: 1rem 0 0;
    font-size: .85rem;
    line-height: 1.45;
    color: var(--text-muted, #5a6b80);
}
/* /Pages/PremiumReturn.razor.rz.scp.css */
/* T-39: post-checkout return page — single centered card. */

.premium-return-page[b-z0zbgrj36f] {
    display: flex;
    justify-content: center;
    padding-top: 32px;
}

.return-card[b-z0zbgrj36f] {
    max-width: 420px;
    width: 100%;
    background: #ffffff;
    border: 1px solid #e9ecef;
    border-radius: 14px;
    padding: 28px 20px;
    text-align: center;
}

.return-card.success[b-z0zbgrj36f] {
    border-color: #b2f2bb;
    background: linear-gradient(180deg, #ebfbee 0%, #ffffff 60%);
}

.return-icon[b-z0zbgrj36f] {
    font-size: 40px;
    margin-bottom: 8px;
}

.return-card h1[b-z0zbgrj36f] {
    font-size: 20px;
    margin: 0 0 10px;
    color: #212529;
}

.return-card p[b-z0zbgrj36f] {
    font-size: 14px;
    color: #495057;
    margin: 0 0 12px;
}

.return-hint[b-z0zbgrj36f] {
    font-size: 12px;
    color: #868e96;
}

/* F-48: the 7-day guarantee reminder on the confirmation card. */
.return-guarantee[b-z0zbgrj36f] {
    background: #f1f8ff;
    border: 1px solid #d0ebff;
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 12px;
    color: #1864ab;
}

.return-guarantee a[b-z0zbgrj36f] {
    color: #1864ab;
    font-weight: 600;
}

.btn-return-primary[b-z0zbgrj36f] {
    display: inline-block;
    background: linear-gradient(135deg, #7c3aed 0%, #9333ea 100%);
    color: #ffffff;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    padding: 12px 20px;
    text-decoration: none;
    margin-top: 6px;
}

.spinner-large[b-z0zbgrj36f] {
    width: 34px;
    height: 34px;
    margin: 0 auto 14px;
    border: 3px solid #e9ecef;
    border-top-color: #7c3aed;
    border-radius: 50%;
    animation: premium-return-spin-b-z0zbgrj36f 0.8s linear infinite;
}

@keyframes premium-return-spin-b-z0zbgrj36f {
    to { transform: rotate(360deg); }
}
/* /Pages/ProfilePage.razor.rz.scp.css */
/* F-16/F-17 — profile page (own + admin view of a member).
   Bottom-nav clearance comes from the global .page-container rule. */

.profile-loading[b-w38dlp7soy] {
    display: flex;
    align-items: center;
    gap: 8px;
    color: #6c757d;
    padding: 24px 0;
}

.profile-back[b-w38dlp7soy] {
    display: inline-block;
    font-size: 14px;
    font-weight: 600;
    color: #495057;
    text-decoration: none;
    margin: 12px 0 4px;
}

.profile-back:hover[b-w38dlp7soy] {
    text-decoration: underline;
}

.profile-header[b-w38dlp7soy] {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-top: 12px;
}

.profile-avatar[b-w38dlp7soy] {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #eef2ff;
    color: #4f46e5;
    font-size: 24px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.profile-name[b-w38dlp7soy] {
    margin: 0;
    font-size: 20px;
    color: #1e293b;
}

.profile-you[b-w38dlp7soy] {
    font-size: 13px;
    font-weight: 400;
    color: #6c757d;
    margin-left: 6px;
}

.profile-role[b-w38dlp7soy] {
    font-size: 13px;
    color: #6c757d;
    display: flex;
    align-items: center;
    gap: 8px;
}

.profile-admin-badge[b-w38dlp7soy] {
    font-size: 11px;
    font-weight: 700;
    color: #4f46e5;
    background: #eef2ff;
    border-radius: 999px;
    padding: 2px 8px;
}

.profile-section[b-w38dlp7soy] {
    margin-top: 24px;
}

.section-title[b-w38dlp7soy] {
    font-size: 14px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: #6c757d;
    margin: 0 0 10px;
}

.profile-card[b-w38dlp7soy] {
    background: #ffffff;
    border: 1px solid #e9ecef;
    border-radius: 14px;
    padding: 16px;
}

.profile-card .btn[b-w38dlp7soy] {
    margin-top: 4px;
}

.profile-hint[b-w38dlp7soy] {
    font-size: 13px;
    color: #6c757d;
    margin: 0 0 12px;
}

.profile-info-banner[b-w38dlp7soy] {
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    color: #1d4ed8;
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 13px;
    margin-bottom: 12px;
}

.profile-actions-row[b-w38dlp7soy] {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 12px;
}

.profile-export-btn[b-w38dlp7soy] {
    width: 100%;
}

@media (min-width: 700px) {
    .profile-export-btn[b-w38dlp7soy] {
        width: auto;
    }
}

/* ── S-10: sudo sheet chrome (same pattern as the Home sheets) ── */
.backdrop[b-w38dlp7soy] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.4);
    z-index: 99;
}

.bottom-sheet[b-w38dlp7soy] {
    position: fixed;
    bottom: 62px;
    left: 0;
    right: 0;
    background: #ffffff;
    padding: 24px 20px;
    border-top-left-radius: 24px;
    border-top-right-radius: 24px;
    box-shadow: 0 -4px 16px rgba(0,0,0,0.15);
    z-index: 100;
    max-width: 450px;
    margin: 0 auto;
}

.sheet-handle[b-w38dlp7soy] {
    width: 40px;
    height: 5px;
    background: #dee2e6;
    border-radius: 3px;
    margin: -12px auto 16px auto;
}

/* ── S-11: danger zone (sair da família) ── */
.danger-title[b-w38dlp7soy] {
    color: #c92a2a;
}

.danger-card[b-w38dlp7soy] {
    border: 1px solid #ffc9c9;
    background: #fff5f5;
}

.danger-confirm-text[b-w38dlp7soy] {
    font-size: 14px;
    font-weight: 600;
    color: #c92a2a;
    margin: 0 0 12px;
}

.danger-consequences[b-w38dlp7soy] {
    margin: 0 0 14px;
    padding-left: 20px;
    font-size: 13px;
    color: #495057;
    line-height: 1.5;
}

.danger-consequences li[b-w38dlp7soy] {
    margin-bottom: 6px;
}

/* S-11 PR2: who already responded to the family-deletion request */
.consent-status[b-w38dlp7soy] {
    margin: 0 0 14px;
    padding: 10px 12px;
    list-style: none;
    background: #fff5f5;
    border: 1px solid #ffc9c9;
    border-radius: 10px;
    font-size: 13px;
    color: #495057;
    line-height: 1.6;
}
/* /Pages/Register.razor.rz.scp.css */
.register-container[b-8p4p4kpg8k] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    background-color: #f8f9fa;
    padding: 20px;
    font-family: system-ui, -apple-system, sans-serif;
}

.register-card[b-8p4p4kpg8k] {
    background: #ffffff;
    padding: 32px 24px;
    border-radius: 20px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.05);
    width: 100%;
    max-width: 400px;
    text-align: center;
}

.register-header[b-8p4p4kpg8k] {
    margin-bottom: 28px;
}

.app-icon[b-8p4p4kpg8k] {
    font-size: 40px;
    margin-bottom: 12px;
}

.register-header h2[b-8p4p4kpg8k] {
    font-size: 24px;
    font-weight: 700;
    color: #212529;
    margin: 0 0 6px 0;
}

.register-header p[b-8p4p4kpg8k] {
    font-size: 14px;
    color: #6c757d;
    margin: 0;
    line-height: 1.5;
}

.form-group[b-8p4p4kpg8k] {
    margin-bottom: 20px;
    text-align: left;
}

.form-group label[b-8p4p4kpg8k] {
    font-size: 13px;
    font-weight: 600;
    color: #495057;
    display: block;
    margin-bottom: 6px;
}

.form-group input[readonly][b-8p4p4kpg8k] {
    background-color: #f1f3f5;
    color: #6c757d;
}

.field-hint[b-8p4p4kpg8k] {
    display: block;
    font-size: 11px;
    color: #868e96;
    margin-top: 4px;
}

/* F-15: founder picks a role with two large tap targets */
/* F-27: the catalog has 21 roles — a wrapping chip grid replaces the old
   two-button pair (holds at 344px: 2-3 chips per row, natural wrap). */
.role-options[b-8p4p4kpg8k] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.role-option[b-8p4p4kpg8k] {
    padding: 9px 12px;
    border: 2px solid #dee2e6;
    border-radius: 999px;
    background: #ffffff;
    font-size: 14px;
    font-weight: 600;
    color: #495057;
    cursor: pointer;
    transition: border-color 0.15s, background-color 0.15s;
    white-space: nowrap;
}

.role-option.selected[b-8p4p4kpg8k] {
    border-color: #212529;
    background-color: #212529;
    color: #ffffff;
}

.role-option:disabled[b-8p4p4kpg8k] {
    opacity: 0.6;
    cursor: not-allowed;
}

.btn-register[b-8p4p4kpg8k] {
    width: 100%;
    padding: 14px;
    border: none;
    border-radius: 10px;
    font-size: 16px;
    font-weight: 600;
    background-color: #212529;
    color: #ffffff;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    transition: background-color 0.15s;
}

.btn-register:disabled[b-8p4p4kpg8k] {
    background-color: #868e96;
    cursor: not-allowed;
}

.back-link[b-8p4p4kpg8k] {
    display: inline-block;
    margin-top: 16px;
    font-size: 13px;
    color: #6c757d;
    text-decoration: none;
}

.back-link:hover[b-8p4p4kpg8k] { color: #212529; }

/* F-18: LGPD consent checkbox */
.consent-check[b-8p4p4kpg8k] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin: 8px 0 4px;
    font-size: 13px;
    color: #495057;
    line-height: 1.4;
    cursor: pointer;
}

.consent-check input[b-8p4p4kpg8k] {
    margin-top: 2px;
    flex-shrink: 0;
}

.consent-check a[b-8p4p4kpg8k] {
    color: #4f46e5;
    font-weight: 600;
}

/* S-15/A-1: the path declaration, inside the SAME acceptance as the policy/terms
   line (no second checkbox — see the page comment). Set apart visually so it is
   read as its own undertaking, not as fine print appended to the links. */
.consent-declaration[b-8p4p4kpg8k] {
    display: block;
    margin-bottom: 6px;
    padding-left: 8px;
    border-left: 2px solid #dee2e6;
    color: #495057;
}

/* U-13: shown only in an English session — says which version of the declaration,
   the policy and the terms legally binds. Fine print on purpose: it qualifies the
   text above it, it is not a third thing to read. */
.consent-binding-notice[b-8p4p4kpg8k] {
    margin: 0 0 4px;
    font-size: 11px;
    line-height: 1.4;
    color: #868e96;
}

.invite-loading[b-8p4p4kpg8k] {
    padding: 12px 0 4px;
}

.invite-loading .spinner-small.dark[b-8p4p4kpg8k] {
    border-color: #ced4da;
    border-top-color: #212529;
}

/* S-11: cross-family migration warning modal */
.migration-backdrop[b-8p4p4kpg8k] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    z-index: 1000;
}

.migration-dialog[b-8p4p4kpg8k] {
    background: #ffffff;
    border-radius: 20px;
    padding: 28px 24px;
    width: 100%;
    max-width: 400px;
    text-align: center;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
}

.migration-icon[b-8p4p4kpg8k] {
    font-size: 40px;
    margin-bottom: 8px;
}

.migration-dialog h3[b-8p4p4kpg8k] {
    font-size: 20px;
    font-weight: 700;
    color: #212529;
    margin: 0 0 12px 0;
}

.migration-dialog p[b-8p4p4kpg8k] {
    font-size: 14px;
    color: #495057;
    line-height: 1.5;
    margin: 0 0 12px 0;
    text-align: left;
}

/* U-13: the irreversible consequence. The emphasis used to be an inline <strong>
   around "apagado definitivamente"; it moved to the paragraph because the English
   sentence puts that phrase in a different position, and a placeholder cannot
   carry markup around user data (family names are free text). */
.migration-consequence[b-8p4p4kpg8k] {
    font-weight: 600;
    color: #b02a37 !important;
}

.migration-dialog .btn-register.btn-danger[b-8p4p4kpg8k] {
    background-color: #dc2626;
    margin-top: 8px;
}

.migration-dialog .btn-register.btn-danger:disabled[b-8p4p4kpg8k] {
    background-color: #f0a0a0;
}

.btn-secondary[b-8p4p4kpg8k] {
    width: 100%;
    padding: 12px;
    margin-top: 10px;
    border: none;
    border-radius: 10px;
    font-size: 15px;
    font-weight: 600;
    background-color: #f1f3f5;
    color: #495057;
    cursor: pointer;
}

.btn-secondary:disabled[b-8p4p4kpg8k] {
    opacity: 0.6;
    cursor: not-allowed;
}
/* /Pages/ReportsAudit.razor.rz.scp.css */
.filter-card[b-nlcbu1kpap] {
    background: #ffffff;
    border: 1px solid #e9ecef;
    border-radius: 14px;
    padding: 14px;
    margin-bottom: 24px;
    box-shadow: 0 2px 6px rgba(0,0,0,0.02);
}

.filter-selectors[b-nlcbu1kpap] {
    display: flex;
    gap: 8px;
}

.form-control-filter[b-nlcbu1kpap] {
    flex: 1;
    padding: 10px;
    border: 1px solid #ced4da;
    border-radius: 8px;
    font-size: 14px;
    background-color: #f8f9fa;
}

.btn-search[b-nlcbu1kpap] {
    background: #212529;
    color: white;
    border: none;
    padding: 0 16px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
}

.load-more-row[b-nlcbu1kpap] {
    display: flex;
    justify-content: center;
    padding: 8px 0 4px;
}

.btn-load-more[b-nlcbu1kpap] {
    display: flex;
    align-items: center;
    gap: 8px;
    background: #f1f3f5;
    color: #495057;
    border: 1px solid #dee2e6;
    padding: 10px 24px;
    border-radius: 20px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
}

.btn-load-more:hover:not(:disabled)[b-nlcbu1kpap] {
    background: #e9ecef;
    color: #212529;
}

.btn-load-more:disabled[b-nlcbu1kpap] {
    opacity: 0.6;
    cursor: default;
}

.timeline-container[b-nlcbu1kpap] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    position: relative;
    padding-left: 12px;
}

    .timeline-container[b-nlcbu1kpap]::before {
        content: '';
        position: absolute;
        left: 29px;
        top: 10px;
        bottom: 10px;
        width: 2px;
        background: #e9ecef;
    }

.timeline-item[b-nlcbu1kpap] {
    display: flex;
    gap: 12px;
    position: relative;
}

.timeline-badge[b-nlcbu1kpap] {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    z-index: 1;
    background: white;
    box-shadow: 0 0 0 3px white;
    border: 2px solid #ced4da;
    flex-shrink: 0;
}

.badge-create[b-nlcbu1kpap] {
    border-color: #10b981;
    color: #10b981;
}

.badge-update[b-nlcbu1kpap] {
    border-color: #f59e0b;
    color: #f59e0b;
}

.badge-delete[b-nlcbu1kpap] {
    border-color: #ef4444;
    color: #ef4444;
}

.diff-list[b-nlcbu1kpap] {
    list-style: none;
    margin: 6px 0 8px 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.diff-item[b-nlcbu1kpap] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px;
    font-size: 12px;
    line-height: 1.4;
}

.diff-label[b-nlcbu1kpap] {
    font-weight: 700;
    color: #495057;
    min-width: fit-content;
}

.diff-label[b-nlcbu1kpap]::after {
    content: ':';
}

.diff-old[b-nlcbu1kpap] {
    background: #fee2e2;
    color: #991b1b;
    padding: 1px 6px;
    border-radius: 4px;
    text-decoration: line-through;
    white-space: nowrap;
}

.diff-arrow[b-nlcbu1kpap] {
    color: #adb5bd;
    font-size: 11px;
    flex-shrink: 0;
}

.diff-new[b-nlcbu1kpap] {
    background: #dcfce7;
    color: #166534;
    padding: 1px 6px;
    border-radius: 4px;
    white-space: nowrap;
}

/* F-45: origin of a workflow-produced change (requester/approver + texts) */
.timeline-origin[b-nlcbu1kpap] {
    margin: 6px 0 8px 0;
    padding: 6px 8px;
    background: #f1f5f9;
    border-left: 3px solid #64748b;
    border-radius: 0 6px 6px 0;
}

.origin-text[b-nlcbu1kpap] {
    margin: 0;
    font-size: 12px;
    color: #334155;
    line-height: 1.4;
}

.origin-detail[b-nlcbu1kpap] {
    margin: 3px 0 0 0;
    font-size: 12px;
    color: #475569;
    line-height: 1.4;
}

.origin-label[b-nlcbu1kpap] {
    font-weight: 700;
    color: #495057;
}

.timeline-content[b-nlcbu1kpap] {
    flex: 1;
    background: #ffffff;
    border: 1px solid #e9ecef;
    padding: 12px;
    border-radius: 12px;
}

.timeline-date[b-nlcbu1kpap] {
    font-size: 11px;
    font-weight: 700;
    color: #6c757d;
}

.timeline-desc[b-nlcbu1kpap] {
    margin: 4px 0;
    font-size: 13px;
    color: #212529;
    line-height: 1.4;
}

.timeline-timestamp[b-nlcbu1kpap] {
    font-size: 10px;
    color: #adb5bd;
    display: block;
    text-align: right;
}

.empty-logs[b-nlcbu1kpap] {
    display: none;
}

.timeline-container .empty-state[b-nlcbu1kpap] {
    background: #ffffff;
    border: 1px solid #e9ecef;
    border-radius: 14px;
    padding: 40px 24px;
}

.loading-box[b-nlcbu1kpap] {
    display: none;
}

.spinner[b-nlcbu1kpap] {
    display: none;
}

.skel-audit[b-nlcbu1kpap] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-top: 4px;
}

.skel-timeline-item[b-nlcbu1kpap] {
    display: flex;
    gap: 12px;
    align-items: flex-start;
}

.skel-badge[b-nlcbu1kpap] {
    width: 36px !important;
    height: 36px !important;
    border-radius: 50% !important;
    flex-shrink: 0;
}

.skel-timeline-body[b-nlcbu1kpap] {
    flex: 1;
    background: #f8f9fa;
    border-radius: 12px;
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 7px;
}

.skel-audit-date[b-nlcbu1kpap] {
    height: 11px !important;
    width: 38% !important;
}

.skel-audit-desc[b-nlcbu1kpap] {
    height: 13px !important;
    width: 80% !important;
}

.skel-audit-ts[b-nlcbu1kpap] {
    height: 10px !important;
    width: 45% !important;
    align-self: flex-end;
}


/* /Pages/ReportsPdf.razor.rz.scp.css */
/* F-33 — "Relatório do histórico em PDF" page. Two visual zones: the generator
   form (screen only) and the printable document (.report-print). */

.reports-loading[b-z1x9wy2z3k] {
    display: flex;
    align-items: center;
    gap: 8px;
    color: #6c757d;
    font-size: 14px;
    padding: 24px 0;
}

/* ── Premium gate (free family) ─────────────────────────────────────────── */
.upsell-card[b-z1x9wy2z3k] {
    background: linear-gradient(180deg, #faf5ff 0%, #ffffff 60%);
    border: 1px solid #e9d8fd;
    border-radius: 14px;
    padding: 20px 16px;
    text-align: center;
}

.upsell-badge[b-z1x9wy2z3k] {
    display: inline-block;
    background: #f3e8ff;
    color: #6b21a8;
    border: 1px solid #d8b4fe;
    font-size: 12px;
    font-weight: 700;
    padding: 4px 10px;
    border-radius: 999px;
}

.upsell-title[b-z1x9wy2z3k] {
    font-size: 18px;
    color: #212529;
    margin: 12px 0 6px;
}

.upsell-text[b-z1x9wy2z3k] {
    font-size: 14px;
    color: #495057;
    line-height: 1.5;
    margin: 0 0 16px;
}

.btn-upsell[b-z1x9wy2z3k] {
    border: none;
    background: linear-gradient(135deg, #7c3aed 0%, #9333ea 100%);
    color: #ffffff;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    padding: 12px 20px;
    cursor: pointer;
    min-height: 44px;
}

/* ── Generator form ────────────────────────────────────────────────────── */
.filter-card[b-z1x9wy2z3k] {
    background: #ffffff;
    border: 1px solid #e9ecef;
    border-radius: 14px;
    padding: 14px;
    margin-bottom: 20px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.02);
}

.toggle-tabs[b-z1x9wy2z3k] {
    display: flex;
    gap: 4px;
    background: #f1f3f5;
    padding: 4px;
    border-radius: 10px;
    margin-bottom: 12px;
}

.toggle-tab[b-z1x9wy2z3k] {
    flex: 1;
    border: none;
    background: transparent;
    padding: 8px 4px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    color: #495057;
    cursor: pointer;
}

.toggle-tab.active[b-z1x9wy2z3k] {
    background: #ffffff;
    color: var(--theme-active-color, #667eea);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

.filter-selectors[b-z1x9wy2z3k] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.form-control-filter[b-z1x9wy2z3k] {
    flex: 1;
    min-width: 120px;
    padding: 10px;
    border: 1px solid #ced4da;
    border-radius: 8px;
    font-size: 14px;
    background-color: #f8f9fa;
}

.date-field[b-z1x9wy2z3k],
.child-field[b-z1x9wy2z3k] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 13px;
    color: #495057;
    flex: 1;
    min-width: 130px;
}

.child-field[b-z1x9wy2z3k] {
    margin-bottom: 12px;
}

.child-optional[b-z1x9wy2z3k] {
    color: #adb5bd;
    font-weight: 400;
}

/* U-20: projection option ("considerar trocas futuras já aceitas") */
.future-swaps-toggle[b-z1x9wy2z3k] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
    font-size: 13px;
    color: #495057;
    cursor: pointer;
    user-select: none;
}

.future-swaps-toggle input[b-z1x9wy2z3k] {
    width: 16px;
    height: 16px;
    accent-color: #667eea;
    cursor: pointer;
}

.filter-error[b-z1x9wy2z3k] {
    color: #dc2626;
    font-size: 13px;
    margin: 0 0 12px;
}

.btn-generate[b-z1x9wy2z3k] {
    width: 100%;
    border: none;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: #ffffff;
    border-radius: 10px;
    font-size: 15px;
    font-weight: 600;
    padding: 13px;
    cursor: pointer;
    min-height: 46px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.btn-generate:disabled[b-z1x9wy2z3k] {
    opacity: 0.7;
    cursor: default;
}

/* ── Preview actions ───────────────────────────────────────────────────── */
.preview-actions[b-z1x9wy2z3k] {
    margin-bottom: 16px;
}

.btn-print[b-z1x9wy2z3k] {
    width: 100%;
    border: 1px solid #667eea;
    background: #eef1fe;
    color: #4c51bf;
    border-radius: 10px;
    font-size: 15px;
    font-weight: 600;
    padding: 13px;
    cursor: pointer;
    min-height: 46px;
}

.preview-hint[b-z1x9wy2z3k] {
    font-size: 12px;
    color: #6c757d;
    text-align: center;
    margin: 8px 0 0;
}

/* ── Printable document ────────────────────────────────────────────────── */
.report-print[b-z1x9wy2z3k] {
    background: #ffffff;
    color: #212529;
    border: 1px solid #e9ecef;
    border-radius: 8px;
    padding: 24px;
    font-size: 13px;
    line-height: 1.5;
}

.rp-title[b-z1x9wy2z3k] {
    font-size: 20px;
    font-weight: 700;
    margin: 0;
}

.rp-subtitle[b-z1x9wy2z3k] {
    font-size: 13px;
    color: #6c757d;
    margin: 2px 0 14px;
    letter-spacing: 0.02em;
}

.rp-meta[b-z1x9wy2z3k] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 4px;
    margin: 0 0 16px;
    padding: 12px 0;
    border-top: 1px solid #e9ecef;
    border-bottom: 1px solid #e9ecef;
}

.rp-meta > div[b-z1x9wy2z3k] {
    display: flex;
    gap: 8px;
}

.rp-meta dt[b-z1x9wy2z3k] {
    font-weight: 700;
    min-width: 90px;
    color: #495057;
}

.rp-meta dd[b-z1x9wy2z3k] {
    margin: 0;
}

.rp-immutability[b-z1x9wy2z3k] {
    background: #f8f9fa;
    border-left: 3px solid #667eea;
    padding: 10px 12px;
    border-radius: 4px;
    margin: 0 0 20px;
    font-size: 12.5px;
}

.rp-section[b-z1x9wy2z3k] {
    margin-bottom: 20px;
    break-inside: avoid;
    /* U-07/U-20: the summary table can exceed 344px with the extra columns —
       scroll the section on screen; print lays it out at page width. */
    overflow-x: auto;
}

@media print {
    .rp-section[b-z1x9wy2z3k] {
        overflow-x: visible;
    }
}

.rp-h2[b-z1x9wy2z3k] {
    font-size: 15px;
    font-weight: 700;
    margin: 0 0 10px;
    padding-bottom: 4px;
    border-bottom: 1px solid #dee2e6;
}

.rp-table[b-z1x9wy2z3k] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12.5px;
}

.rp-table th[b-z1x9wy2z3k],
.rp-table td[b-z1x9wy2z3k] {
    text-align: left;
    padding: 6px 8px;
    border-bottom: 1px solid #e9ecef;
}

.rp-table th[b-z1x9wy2z3k] {
    background: #f8f9fa;
    font-weight: 700;
}

.rp-table td:nth-child(n+3)[b-z1x9wy2z3k],
.rp-table th:nth-child(n+3)[b-z1x9wy2z3k] {
    /* numeric columns (planejados/realizados/previstos/trocas) */
    text-align: right;
    white-space: nowrap;
}

.rp-swaps[b-z1x9wy2z3k] {
    margin: 10px 0 0;
    font-size: 13px;
}

.rp-empty[b-z1x9wy2z3k] {
    color: #6c757d;
    font-style: italic;
    margin: 0;
}

.rp-timeline[b-z1x9wy2z3k] {
    list-style: none;
    padding: 0;
    margin: 0;
}

.rp-entry[b-z1x9wy2z3k] {
    padding: 8px 0;
    border-bottom: 1px solid #f1f3f5;
    break-inside: avoid;
}

.rp-entry-head[b-z1x9wy2z3k] {
    margin: 0;
}

.rp-entry-when[b-z1x9wy2z3k] {
    color: #6c757d;
    font-variant-numeric: tabular-nums;
}

/* F-45: origin + motivation of workflow-produced changes */
.rp-origin[b-z1x9wy2z3k] {
    margin: 3px 0 0 0;
    padding-left: 10px;
    border-left: 2px solid #94a3b8;
    color: #334155;
    font-style: italic;
}

.rp-origin-detail[b-z1x9wy2z3k] {
    margin: 2px 0 0 0;
    padding-left: 10px;
    border-left: 2px solid #94a3b8;
    color: #475569;
}

.rp-changes[b-z1x9wy2z3k] {
    list-style: none;
    padding: 4px 0 0 12px;
    margin: 0;
    font-size: 12.5px;
    color: #343a40;
}

.rp-change-label[b-z1x9wy2z3k] {
    font-weight: 600;
}

.rp-footer[b-z1x9wy2z3k] {
    margin-top: 20px;
    padding-top: 12px;
    border-top: 1px solid #e9ecef;
    font-size: 11px;
    color: #6c757d;
    line-height: 1.5;
}

/* On paper: no card chrome, black text. */
@media print {
    .report-print[b-z1x9wy2z3k] {
        border: none;
        border-radius: 0;
        padding: 0;
        color: #000000;
        font-size: 11pt;
    }
}
/* /Pages/ReportsSummary.razor.rz.scp.css */
.filter-card[b-gkc2cf9j5s] {
    background: #ffffff;
    border: 1px solid #e9ecef;
    border-radius: 14px;
    padding: 14px;
    margin-bottom: 24px;
    box-shadow: 0 2px 6px rgba(0,0,0,0.02);
}

.filter-selectors[b-gkc2cf9j5s] {
    display: flex;
    gap: 8px;
}

.form-control-filter[b-gkc2cf9j5s] {
    flex: 1;
    padding: 10px;
    border: 1px solid #ced4da;
    border-radius: 8px;
    font-size: 14px;
    background-color: #f8f9fa;
}

.btn-search[b-gkc2cf9j5s] {
    background: #212529;
    color: white;
    border: none;
    padding: 0 16px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
}

/* U-20: projection toggle ("considerar trocas futuras já aceitas") */
.future-swaps-toggle[b-gkc2cf9j5s] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
    font-size: 13px;
    color: #495057;
    cursor: pointer;
    user-select: none;
}

.future-swaps-toggle input[b-gkc2cf9j5s] {
    width: 16px;
    height: 16px;
    accent-color: #667eea;
    cursor: pointer;
}

.stats-grid[b-gkc2cf9j5s] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-bottom: 12px;
}

.stats-card[b-gkc2cf9j5s] {
    padding: 16px;
    border-radius: 14px;
    border: 1px solid transparent;
}

    .stats-card h4[b-gkc2cf9j5s] {
        margin: 0 0 10px 0;
        font-size: 15px;
        font-weight: 700;
    }

.stat-row[b-gkc2cf9j5s] {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    margin-bottom: 4px;
    color: #495057;
}

    .stat-row strong[b-gkc2cf9j5s] {
        color: #212529;
    }

    .stat-row .highlight[b-gkc2cf9j5s] {
        font-size: 15px;
        font-weight: 700;
    }

/* U-07: per-caregiver swap row — longer value, allow a graceful wrap at 344px */
.stat-row-swaps[b-gkc2cf9j5s] {
    flex-wrap: wrap;
    gap: 2px 8px;
}

    .stat-row-swaps strong[b-gkc2cf9j5s] {
        font-size: 12px;
        white-space: nowrap;
    }

/* S-11 QA: inactive/departed member (gray, hatched). */
.role-0-card[b-gkc2cf9j5s] {
    background: repeating-linear-gradient(90deg, #f1f3f5 0 6px, #e3e5e8 6px 12px);
    border-color: #ced4da;
    color: #6c757d;
}

.role-1-card[b-gkc2cf9j5s] {
    background: #dbeafe;
    border-color: #93c5fd;
    color: #1e3a8a;
}

.role-2-card[b-gkc2cf9j5s] {
    background: #ffe4e6;
    border-color: #fda4af;
    color: #881337;
}

.role-3-card[b-gkc2cf9j5s] {
    background: #ccfbf1;
    border-color: #5eead4;
    color: #134e4a;
}

/* Orange — aligned with role-4-day (this card had drifted to yellow) */
.role-4-card[b-gkc2cf9j5s] {
    background: #fed7aa;
    border-color: #ea580c;
    color: #7c2d12;
}

.swaps-summary[b-gkc2cf9j5s] {
    background: #fef3c7;
    border: 1px solid #fde68a;
    color: #92400e;
    padding: 12px;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 500;
    text-align: center;
}

.loading-box[b-gkc2cf9j5s] {
    display: none;
}

.spinner[b-gkc2cf9j5s] {
    display: none;
}

.summary-empty-state[b-gkc2cf9j5s] {
    background: #ffffff;
    border: 1px solid #e9ecef;
    border-radius: 14px;
    padding: 40px 24px;
    margin-top: 4px;
}

.skel-reports[b-gkc2cf9j5s] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-top: 4px;
}

.skel-stats-grid[b-gkc2cf9j5s] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.skel-stats-card[b-gkc2cf9j5s] {
    padding: 16px;
    border-radius: 14px;
    background: #f1f3f5;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.skel-total-card[b-gkc2cf9j5s] {
    grid-column: span 2;
}

.skel-rpt-title[b-gkc2cf9j5s] {
    height: 18px !important;
    width: 40% !important;
    margin-bottom: 4px;
}

.skel-stat-row[b-gkc2cf9j5s] {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.skel-rpt-label[b-gkc2cf9j5s] {
    height: 13px !important;
    width: 55% !important;
}

.skel-rpt-value[b-gkc2cf9j5s] {
    height: 16px !important;
    width: 28% !important;
}

@keyframes spin-b-gkc2cf9j5s {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}
