/* =============================================
   MINIMAL RESET (T-28)
   Replaces the pieces of Bootstrap Reboot the app
   actually relied on — the vendored Bootstrap was
   removed; everything else is styled by shared.css
   and component-isolated CSS.
   ============================================= */
*, *::before, *::after {
    box-sizing: border-box;
}

html {
    -webkit-text-size-adjust: 100%;
}

html, body {
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

body {
    margin: 0;
    line-height: 1.5;
    color: #212529;
    background-color: #fff;
}

h1, h2, h3, h4, h5, h6 {
    margin-top: 0;
    margin-bottom: .5rem;
    font-weight: 500;
    line-height: 1.2;
}

p {
    margin-top: 0;
    margin-bottom: 1rem;
}

button, input, select, textarea {
    margin: 0;
    font-family: inherit;
    font-size: inherit;
    line-height: inherit;
}

/* =============================================
   ROLE-BASED COLOR THEME
   Colorblind-safe: Blue (father) vs Orange (mother).
   Blue/orange are distinguishable under deuteranopia
   and protanopia, the most common types.
   ============================================= */

/* Default (no role set yet � neutral purple from original design) */
:root {
    --theme-gradient-from:  #667eea;
    --theme-gradient-to:    #764ba2;
    --theme-shadow-color:   rgba(102, 126, 234, 0.38);
    --theme-active-color:   #667eea;
    --theme-day-bg:         #e8e8ff;
    --theme-day-border:     #c7c7f0;
    --theme-day-text:       #3730a3;
}

/* Father � Darker Blue */
[data-role="father"] {
    --theme-gradient-from:  #1d4ed8;
    --theme-gradient-to:    #1e3a8a;
    --theme-shadow-color:   rgba(29, 78, 216, 0.40);
    --theme-active-color:   #1d4ed8;
    --theme-day-bg:         #dbeafe;
    --theme-day-border:     #93c5fd;
    --theme-day-text:       #1e3a8a;
}

/* Mother � Reddish pink */
[data-role="mother"] {
    --theme-gradient-from:  #e11d48;
    --theme-gradient-to:    #9f1239;
    --theme-shadow-color:   rgba(225, 29, 72, 0.38);
    --theme-active-color:   #e11d48;
    --theme-day-bg:         #ffe4e6;
    --theme-day-border:     #fda4af;
    --theme-day-text:       #881337;
}

/* =============================================
   SKELETON LOADER � shared shimmer foundation
   ============================================= */
@keyframes shimmer {
    0%   { background-position: -600px 0; }
    100% { background-position:  600px 0; }
}

.skel {
    background: linear-gradient(90deg, #e9ecef 25%, #f8f9fa 50%, #e9ecef 75%);
    background-size: 1200px 100%;
    animation: shimmer 1.4s infinite linear;
    border-radius: 6px;
    display: block;
}

/* =============================================
   EMPTY STATE � shared friendly illustration
   ============================================= */
.empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 32px 24px;
    text-align: center;
    gap: 12px;
}

.empty-state-icon {
    font-size: 52px;
    line-height: 1;
    filter: grayscale(0.15);
}

.empty-state-title {
    font-size: 15px;
    font-weight: 700;
    color: #343a40;
    margin: 0;
}

.empty-state-body {
    font-size: 13px;
    color: #6c757d;
    margin: 0;
    max-width: 260px;
    line-height: 1.5;
}



h1:focus {
    outline: none;
}

a {
    color: #0071c1;
}

#blazor-error-ui {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }

/* T-28: the Blazor-template leftovers that used to live below (.btn-primary,
   EditForm validation classes, .blazor-error-boundary, the default
   .loading-progress circle, .form-floating) were removed — the app uses none
   of them (custom splash in index.html, custom ErrorBoundary content in
   MainLayout, plain inputs instead of EditForm). */