:root {
    --timbrapp-blue: #0d6efd;
    --timbrapp-charcoal: #212529;
    --timbrapp-primary: #0d6efd;
    --timbrapp-secondary: #6c757d;
}

body {
    min-height: 100vh;
}

.login-shell {
    min-height: calc(100vh - 11rem);
}

.login-card {
    border-radius: 1.25rem;
}

.brand-mark {
    display: grid;
    place-items: center;
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 1rem;
    background: var(--timbrapp-blue);
    color: #fff;
    font-size: 1.75rem;
    font-weight: 700;
}

.login-brand-logo { width:min(100%, 22rem); height:9rem; object-fit:contain; }
.navbar .tenant-logo { background:#fff; }

.status-card {
    border-radius: 1rem;
}

.status-dot {
    display: inline-block;
    width: 0.8rem;
    height: 0.8rem;
    border-radius: 50%;
    box-shadow: 0 0 0 0.3rem rgba(25, 135, 84, 0.12);
}

.kpi-card { background:#fff; border-radius:.9rem; padding:1rem; height:100%; box-shadow:0 .125rem .5rem rgba(0,0,0,.06); display:flex; flex-direction:column; }
.kpi-card strong { font-size:1.35rem; }
.kpi-card span { color:#6c757d; font-size:.78rem; }
.status-badge { display:inline-flex; align-items:center; gap:.25rem; margin:.15rem; padding:.25rem .5rem; border-radius:999px; font-size:.78rem; font-weight:600; border:1px solid transparent; }
.status-success { color:#146c43; background:#d1e7dd; }.status-primary { color:#084298; background:#cfe2ff; }.status-danger { color:#842029; background:#f8d7da; }.status-secondary { color:#41464b; background:#e2e3e5; }.status-warning { color:#664d03; background:#fff3cd; }.status-purple { color:#59359a; background:#eee5ff; }
.text-purple { color:#6f42c1; }
.tenant-brand { font-size:.7rem; font-weight:500; padding:.2rem .45rem; border:1px solid rgba(255,255,255,.35); border-radius:999px; vertical-align:middle; }
.tenant-navbar { background:linear-gradient(105deg, var(--timbrapp-primary), color-mix(in srgb, var(--timbrapp-primary), #000 35%))!important; }
.tenant-logo { width:2rem; height:2rem; object-fit:contain; background:#fff; border-radius:.4rem; padding:.15rem; }
.btn-primary { --bs-btn-bg:var(--timbrapp-primary); --bs-btn-border-color:var(--timbrapp-primary); --bs-btn-hover-bg:color-mix(in srgb, var(--timbrapp-primary), #000 15%); --bs-btn-hover-border-color:color-mix(in srgb, var(--timbrapp-primary), #000 15%); }
.text-primary { color:var(--timbrapp-primary)!important; }
.tenant-card { transition:transform .15s ease, box-shadow .15s ease; }.tenant-card:hover { transform:translateY(-2px); box-shadow:0 .5rem 1.25rem rgba(0,0,0,.1)!important; }
.tenant-avatar { width:2.8rem; height:2.8rem; border-radius:.85rem; display:grid; place-items:center; background:#e7f1ff; color:#0d6efd; font-size:1.2rem; font-weight:700; }
.mini-stat { padding:.7rem; background:#f8f9fa; border-radius:.7rem; display:flex; flex-direction:column; text-align:center; }.mini-stat strong { font-size:1.1rem; }.mini-stat span { color:#6c757d; font-size:.68rem; }
.timeline { border-left:3px solid #dee2e6; padding-left:1.25rem; }.timeline-item { position:relative; margin-bottom:1rem; }.timeline-item:before { content:""; position:absolute; left:-1.72rem; top:1.25rem; width:.8rem; height:.8rem; background:#0d6efd; border:3px solid #fff; border-radius:50%; box-shadow:0 0 0 1px #adb5bd; }.timeline-item.cancelled { opacity:.62; text-decoration:line-through; }.timeline-item.cancelled .btn,.timeline-item.cancelled details { text-decoration:none; }
.schedule-badge { display:inline-flex; padding:.35rem .6rem; border-radius:999px; font-size:.76rem; font-weight:700; border:1px solid transparent; white-space:nowrap; }
.schedule-highlight { display:flex; flex-direction:column; gap:.15rem; padding:.75rem .9rem; border-radius:.8rem; border-left:5px solid; }
.schedule-highlight .schedule-label { font-size:.68rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; opacity:.72; }
.schedule-continuous_2 { color:#146c43; background:#e8f7ef; border-color:#198754; }
.schedule-split_4 { color:#7a4b00; background:#fff4db; border-color:#f0a500; }
.schedule-fixed_break_2 { color:#084298; background:#e7f1ff; border-color:#0d6efd; }
.employee-mobile-card { border-radius:1rem; overflow:hidden; }
.user-chip { display:inline-flex; flex-direction:column; justify-content:center; line-height:1.05; color:#fff; padding:.35rem .7rem; border-left:1px solid rgba(255,255,255,.3); cursor:default; }
.user-chip-label { font-size:.58rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; opacity:.7; margin-bottom:.15rem; }
.user-chip strong { font-size:.78rem; font-weight:700; }
.dashboard-heading { display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.dashboard-actions { display:flex; flex-wrap:wrap; gap:.5rem; }
.date-navigator { display:grid; grid-template-columns:auto auto minmax(9.5rem, 12rem) auto; align-items:center; justify-content:start; gap:.5rem; padding:.65rem; }
.date-jump-form { margin:0; }
.dashboard-filters { padding:.65rem; }
.dashboard-filter-grid { display:grid; grid-template-columns:minmax(13rem, 1.5fr) minmax(10rem, 1fr) minmax(11rem, 1fr) auto auto; gap:.5rem; align-items:center; }
.filter-reset { white-space:nowrap; }
.attendance-table th { white-space:nowrap; font-size:.76rem; color:#6c757d; text-transform:uppercase; letter-spacing:.025em; }
.attendance-table .schedule-badge { white-space:normal; min-width:7.5rem; }
.punch-time { font-size:1rem; font-weight:700; font-variant-numeric:tabular-nums; }
.punch-not-expected { color:#ced4da!important; }
.attendance-day-card { border-left:4px solid var(--timbrapp-primary)!important; }
.worked-total { font-size:1.1rem; font-variant-numeric:tabular-nums; }
.mobile-punch-grid { display:grid; gap:.5rem; }
.mobile-punch-grid.two-punches { grid-template-columns:repeat(2, 1fr); }
.mobile-punch-grid.four-punches { grid-template-columns:repeat(4, 1fr); }
.mobile-punch-grid > div { min-width:0; padding:.65rem .45rem; border:1px solid #e9ecef; border-radius:.7rem; background:#f8f9fa; text-align:center; }
.mobile-punch-grid small { display:block; color:#6c757d; font-size:.65rem; line-height:1.1; margin-bottom:.3rem; }
.mobile-punch-grid strong { display:block; font-size:1rem; font-variant-numeric:tabular-nums; }
.punch-editor label { font-weight:600; margin-bottom:.4rem; }
.punch-editor input[type="date"], .punch-editor input[type="time"] { width:100%; min-width:0; font-size:1rem; min-height:3.15rem; }
.punch-datetime-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.punch-form-actions { display:flex; justify-content:flex-end; gap:.65rem; }
.schedule-editor label { font-weight:600; margin-bottom:.4rem; }
.schedule-break-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.schedule-form-actions { display:flex; justify-content:flex-end; gap:.65rem; }
.schedule-history-row { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:1rem 1.25rem; border-bottom:1px solid #e9ecef; }
.schedule-history-row:last-child { border-bottom:0; }
.schedule-history-row.is-current { background:#eefaf4; border-left:4px solid #198754; }
.schedule-history-date { font-size:.78rem; font-weight:700; color:#495057; text-transform:uppercase; letter-spacing:.025em; }
@media (max-width: 767.98px) { .dashboard-heading { align-items:flex-start; }.dashboard-actions { flex-direction:column; }.dashboard-filter-grid { grid-template-columns:1fr 1fr; }.dashboard-filter-grid .filter-search { grid-column:1 / -1; }.dashboard-filter-grid .btn-dark { width:100%; }.date-navigator { grid-template-columns:auto auto minmax(8.75rem, 1fr) auto; } }
@media (max-width: 575.98px) { main.container { padding-left:.75rem; padding-right:.75rem; }.navbar .container { gap:.5rem; }.navbar .d-flex { gap:.6rem!important; }.user-chip { width:100%; border-left:0; border-top:1px solid rgba(255,255,255,.25); padding:.75rem 0 .35rem; margin-top:.35rem; }.dashboard-heading { display:block; }.dashboard-heading h1 { font-size:1.45rem; }.dashboard-actions { display:grid; grid-template-columns:1fr 1fr; margin-top:1rem; }.dashboard-actions .btn { padding-left:.55rem; padding-right:.55rem; }.date-navigator { grid-template-columns:auto auto 1fr auto; gap:.35rem; padding:.5rem; }.date-navigator .btn { padding-left:.65rem; padding-right:.65rem; }.dashboard-filters { padding:.5rem; }.dashboard-filter-grid { grid-template-columns:1fr; }.dashboard-filter-grid .filter-search { grid-column:auto; }.filter-reset { text-align:center; }.mobile-punch-grid.four-punches { gap:.3rem; }.mobile-punch-grid > div { padding:.55rem .2rem; }.mobile-punch-grid small { font-size:.6rem; }.mobile-punch-grid strong { font-size:.92rem; }.punch-datetime-grid,.schedule-break-grid { grid-template-columns:1fr; gap:.75rem; }.punch-form-actions,.schedule-form-actions { display:grid; grid-template-columns:1fr; }.punch-form-actions .btn,.schedule-form-actions .btn { width:100%; }.punch-editor .card-body { padding:1rem!important; }.schedule-history-row { align-items:flex-start; flex-direction:column; padding:1rem; }.schedule-history-row > div:last-child { width:100%; justify-content:space-between; } }
