html {
  font-size: 14px;
}

@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

html {
  position: relative;
  min-height: 100%;
}

body {
  margin-bottom: 60px;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
  color: var(--bs-secondary-color);
  text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
  text-align: start;
}
/* Registro de Jornada: móvil primero. */
:root { --j-blue:#0877ff; --j-ink:#0d124b; --j-muted:#66749b; --j-line:#e2ebf8; }
body.app-shell { margin:0; background:#f2f7fd; color:var(--j-ink); font-family:system-ui,-apple-system,"Segoe UI",sans-serif; }
.app-header { display:flex; align-items:center; justify-content:space-between; gap:10px; background:#fff; padding:16px; box-shadow:0 5px 22px #326bb00a; position:relative; z-index:20; }
.app-brand { display:flex; align-items:center; gap:9px; color:var(--j-ink); text-decoration:none; font-size:clamp(.95rem,3.8vw,1.5rem); font-weight:750; letter-spacing:-.5px; }
.app-brand em { font-style:normal; color:var(--j-blue); }
.app-brand img { width:34px; height:34px; flex-shrink:0; }
.app-brand img.approved-logo { width:150px; height:150px; margin:-32px 0; object-fit:contain; }
.mobile-brand { display:none; }
.account-menu { position:relative; }
.account-menu summary { display:flex; align-items:center; gap:6px; list-style:none; padding:9px 11px; background:#f7faff; border:1px solid #edf3fd; border-radius:32px; cursor:pointer; font-size:.9rem; }
.account-menu summary::-webkit-details-marker { display:none; }
.account-menu svg { width:22px; height:22px; color:var(--j-ink); }
.account-menu summary>span:not(.account-chevron) { max-width:80px; overflow:hidden; text-overflow:ellipsis; }
.account-panel { position:absolute; right:0; top:calc(100% + 10px); width:250px; padding:20px; background:white; border:1px solid var(--j-line); border-radius:18px; box-shadow:0 12px 35px #233b6920; }
.app-main { padding:20px 16px; min-width:0; }
.app-navigation { padding:12px 16px 0; }
.mobile-menu-toggle { color:var(--j-muted); font-size:.9rem; cursor:pointer; list-style:none; display:flex; justify-content:space-between; }
.navigation-content { padding:12px 0; }
.navigation-content h2 { font-size:.8rem; font-weight:700; color:var(--j-muted); margin:12px 0; }
.navigation-content a { display:block; text-decoration:none; color:#365886; padding:10px 14px; border-radius:8px; }
.navigation-content a.selected { color:var(--j-blue); background:#e2eeff; font-weight:600; }
.configuration-title { border-top:1px solid var(--j-line); padding-top:20px; }
.app-footer { padding:20px; color:var(--j-muted); font-size:.8rem; text-align:center; }
.has-session { padding-bottom:calc(80px + env(safe-area-inset-bottom)); }
.mobile-bottom-nav { position:fixed; bottom:0; left:0; right:0; z-index:30; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); padding:7px 8px calc(8px + env(safe-area-inset-bottom)); background:#fffffff5; border-radius:22px 22px 0 0; box-shadow:0 -3px 25px #426aa10c; }
.mobile-bottom-nav a,.mobile-bottom-nav button { color:#7383a9; display:flex; flex-direction:column; align-items:center; gap:5px; padding:9px 2px; border:0; border-radius:18px; background:transparent; text-decoration:none; font-size:.78rem; }
.mobile-bottom-nav svg { width:25px; height:25px; }
.mobile-bottom-nav .selected { color:var(--j-blue); background:#edf5ff; }
.jornada-page { max-width:1100px; margin:auto; }
.jornada-person { padding:8px 12px 22px; }
.jornada-person h1 { font-size:1.65rem; letter-spacing:-.5px; font-weight:750; margin:0 0 4px; }
.jornada-person p { font-size:1.15rem; color:#536186; margin:0; }
.surface { background:#fff; border:1px solid #ecf2fc; border-radius:22px; box-shadow:0 5px 20px #326bb008; }
.jornada-selector { padding:18px; }
.jornada-selector select { flex:1 1 220px; width:auto; }
.jornada-status { padding:22px 18px; }
.status-columns { display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:16px; padding:0 4px; }
.metric-label { color:#536186; margin:0 0 10px; font-size:1rem; }
.clock-column { border-left:1px solid #dbe6f7; padding-left:20px; }
.current-clock { font-size:clamp(1.6rem,7vw,3.3rem); font-weight:750; line-height:1.1; letter-spacing:-1.5px; font-variant-numeric:tabular-nums; }
.state-pill { display:inline-flex; align-items:center; gap:8px; padding:10px 14px; border-radius:30px; font-weight:700; font-size:.95rem; }
.state-dot { width:9px; height:9px; background:currentColor; border-radius:50%; }
.tone-blue { color:#0877ff; background:#eaf3ff; }
.tone-success { color:#087f51; background:#e0faee; }
.tone-meal { color:#f78109; background:#fff2e4; }
.tone-warning { color:#966700; background:#fff4d8; }
.tone-slate { color:#566b91; background:#edf2f8; }
.tone-danger { color:#ef1845; background:#ffe6ec; }
.status-banner { display:flex; align-items:center; gap:14px; border:1px solid #c8f1df; border-radius:14px; padding:17px 14px; margin-top:24px; font-size:1.05rem; }
.status-banner.tone-blue { border-color:#d0e4ff; }
.status-banner.tone-meal,.status-banner.tone-warning { border-color:#ffe1af; }
.banner-symbol { display:grid; place-items:center; flex-shrink:0; width:35px; height:35px; background:currentColor; border-radius:50%; font-size:0; }
.banner-symbol::after { content:"✓"; font-size:23px; color:#fff; }
.tone-warning .banner-symbol::after { content:"!"; }
.jornada-action .btn { border-radius:14px; font-weight:650; }
.jornada-metrics { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin:16px 0; }
.metric-card { display:flex; align-items:center; gap:10px; padding:18px 12px; min-width:0; }
.metric-icon { width:44px; height:44px; border-radius:50%; display:grid; place-items:center; flex-shrink:0; }
.metric-icon svg { width:25px; height:25px; }
.metric-card p { margin:0 0 4px; font-size:.9rem; color:#536186; }
.metric-card strong { font-size:clamp(1rem,4.5vw,1.7rem); font-weight:750; letter-spacing:-.5px; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.jornada-movements { padding:22px 16px; }
.movements-heading { display:flex; gap:10px; justify-content:space-between; align-items:flex-start; margin-bottom:16px; }
.movements-heading h2 { display:flex; align-items:center; gap:8px; font-size:1.1rem; font-weight:750; margin-bottom:7px; }
.movements-heading svg { width:25px; height:25px; color:var(--j-blue); flex-shrink:0; }
.movements-heading p { color:var(--j-muted); font-size:.85rem; margin:0; padding-left:33px; }
.movements-heading .btn { white-space:nowrap; border-color:var(--j-blue); color:var(--j-blue); border-radius:9px; padding:8px 9px; font-size:.8rem; }
.movements-heading .btn:hover { color:white; background:var(--j-blue); }
.movement-list { list-style:none; margin:0; padding:0; }
.movement-list li { display:grid; grid-template-columns:36px minmax(0,1fr) auto; align-items:center; gap:12px; padding:15px 0; position:relative; }
.movement-list li+li::before { content:""; position:absolute; top:0; left:48px; right:0; border-top:1px solid var(--j-line); }
.movement-icon { width:36px; height:36px; display:grid; place-items:center; border-radius:50%; }
.movement-icon svg { width:20px; height:20px; }
.movement-label { color:#536186; font-size:.95rem; }
.movement-time { color:#45557c; font-size:.95rem; max-width:105px; text-align:right; font-variant-numeric:tabular-nums; }
.jornada-timezone { margin:16px 8px; font-size:.75rem; color:var(--j-muted); }
.jornada-setup-notice { padding:1rem; margin-bottom:1rem; border:1px solid #ffe69c; border-radius:.375rem; color:#664d03; background:#fff3cd; }
@media (min-width:600px) { .app-header { padding:20px 28px; } .app-brand img { width:46px;height:46px; } .jornada-status { padding:28px; } .metric-card { padding:24px; gap:16px; } .metric-icon { width:58px;height:58px; } .jornada-movements { padding:28px; } .movements-heading h2 { font-size:1.5rem; } .movement-label,.movement-time { font-size:1.1rem; } }
@media (min-width:992px) { .has-session { padding-bottom:0; } .app-frame { display:flex; align-items:stretch; } .app-navigation { width:240px;flex-shrink:0;border-right:1px solid var(--j-line);padding:20px 12px; } .mobile-menu-toggle { display:none; } .navigation-content { display:block; } .app-main { flex:1;padding:30px; } .app-shell:not(.has-session) .app-main { max-width:1100px;margin:auto; } .mobile-bottom-nav { display:none; } .jornada-person h1 { font-size:2rem; } .account-menu summary>span:not(.account-chevron) { max-width:200px; } .jornada-metrics { gap:20px; } }
@media (max-width:359px) { .app-brand { font-size:.85rem;gap:5px; } .app-brand img { width:28px;height:28px; } .account-menu summary { padding:7px; } .account-chevron { display:none; } .metric-card { gap:7px;padding:14px 8px; } .metric-icon { width:34px;height:34px; } .movements-heading { flex-wrap:wrap; } }
@media print { .app-navigation,.mobile-bottom-nav { display:none!important; } .app-main { width:100%;padding:0; } .has-session { padding-bottom:0; } }
@media screen and (max-width:991.98px) {
  .app-navigation { display:none; }
  .app-header { min-height:60px; padding:8px 12px; gap:8px; }
  .app-header .app-brand { flex:0 1 auto; min-width:0; }
  .jornada-setup-notice { color:#087f51; background:#e0faee; border-color:#c8f1df; border-radius:14px; }
  .app-brand img.approved-logo { display:none; }
  .mobile-brand { display:inline-flex; align-items:center; gap:6px; font-size:clamp(.85rem,3.5vw,1.15rem); white-space:nowrap; line-height:1.15; }
  .app-brand .mobile-brand img { width:30px; height:30px; object-fit:contain; }
  .account-menu { margin-left:auto; flex-shrink:0; align-self:center; }
  .account-menu summary { padding:8px; gap:5px; }
  .account-menu summary>span:not(.account-chevron) { max-width:85px; }
  .has-session { padding-bottom:0; }
  .has-session .app-main { padding-bottom:calc(112px + env(safe-area-inset-bottom)); }
  .has-session .app-footer { margin-bottom:calc(90px + env(safe-area-inset-bottom)); }
  .mobile-bottom-nav { position:fixed; inset:auto 0 0; }
}

/* Dashboard: presentación con los datos y estados existentes. */
.admin-dashboard { max-width:1440px; margin:0 auto; }
.dashboard-heading { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px; margin:0 0 24px; }
.dashboard-eyebrow { font-size:.75rem; font-weight:700; letter-spacing:.08em; color:#5b79a8; margin:0 0 8px; }
.dashboard-heading h1 { font-size:clamp(1.65rem,3vw,2.15rem); font-weight:750; letter-spacing:-.7px; margin:0 0 7px; }
.dashboard-heading p:not(.dashboard-eyebrow) { color:var(--j-muted); margin:0; }
.dashboard-date { display:flex; align-items:center; gap:12px; color:#526f9b; font-size:.9rem; }
.dashboard-date svg { width:26px; height:26px; color:var(--j-blue); }
.dashboard-date small { display:block; margin-top:4px; color:var(--j-muted); }
.dashboard-filters,.dashboard-jornadas,.dashboard-shortcuts { padding:20px; margin-bottom:24px; }
.dashboard-filters .form-label { font-weight:600; font-size:.9rem; }
.dashboard-filters .form-select { border-color:#dce6f5; border-radius:10px; min-height:44px; color:#405984; }
.admin-dashboard .btn { border-radius:10px; min-height:44px; font-weight:600; }
.dashboard-kpis { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 14px; margin-bottom:16px; }
.dashboard-kpi { padding:14px 18px; }
.kpi-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; color:#526588; font-weight:600; font-size:.9rem; }
.dashboard-kpi .metric-icon { width:36px; height:36px; }
.dashboard-kpi .metric-icon svg { width:20px; height:20px; }
.dashboard-kpi>strong { display:block; font-size:2.4rem; font-weight:750; line-height:1.2; margin:10px 0 4px; font-variant-numeric:tabular-nums; }
.dashboard-kpi p { font-size:.78rem; color:var(--j-muted); margin:0; }
.dashboard-secondary { display:grid; gap:12px; grid-template-columns:1fr; margin-bottom:12px; }
.dashboard-secondary>div { display:flex; justify-content:space-between; gap:12px; align-items:center; padding:14px 20px; color:#596d90; font-size:.9rem; }
.dashboard-secondary strong { font-size:1.4rem; color:var(--j-ink); }
.dashboard-note { color:var(--j-muted); font-size:.78rem; margin:12px 4px 24px; }
.dashboard-section-heading { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; margin-bottom:20px; }
.dashboard-section-heading h2,.dashboard-shortcuts h2 { font-size:1.15rem; font-weight:700; margin:0; }
.dashboard-section-heading h2 { display:flex; align-items:center; gap:10px; }
.dashboard-section-heading svg { width:26px; height:26px; color:var(--j-blue); }
.dashboard-section-heading>span { font-size:.8rem; color:var(--j-muted); }
.dashboard-jornadas .table { --bs-table-striped-bg:#f7faff; --bs-table-hover-bg:#edf5ff; color:#50668e; font-size:.88rem; }
.dashboard-jornadas .table th { background:#f0f6ff; color:#415e90; font-size:.8rem; white-space:nowrap; padding:14px 12px; border-color:var(--j-line); }
.dashboard-jornadas .table td { padding:16px 12px; border-color:var(--j-line); }
.dashboard-person-name { font-weight:600; color:var(--j-ink)!important; }
.dashboard-jornadas .badge { border-radius:20px; padding:7px 10px; font-weight:600; white-space:normal; }
.dashboard-jornadas .badge.bg-success { background:#e0faee!important; color:#087f51!important; }
.dashboard-jornadas .badge.bg-primary { background:#eaf3ff!important; color:#0877ff!important; }
.dashboard-jornadas .badge.bg-info { background:#e6f5ff!important; color:#267493!important; }
.dashboard-jornadas .badge.bg-warning { background:#fff4d8!important; color:#966700!important; }
.dashboard-jornadas .badge.bg-secondary { background:#edf2f8!important; color:#566b91!important; }
.dashboard-mobile-rows .card { border:1px solid var(--j-line); border-radius:16px; color:#526588; }
.dashboard-mobile-rows strong { color:var(--j-ink); }
.dashboard-shortcuts h2 { margin-bottom:16px; }
@media (min-width:768px) { .dashboard-kpis { grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px 20px; } .dashboard-kpi { padding:18px 24px; } .dashboard-secondary { grid-template-columns:repeat(2,minmax(0,1fr)); } .dashboard-filters,.dashboard-jornadas,.dashboard-shortcuts { padding:26px; } }
@media (min-width:992px) { .dashboard-shell .app-brand img.approved-logo { width:136px; height:136px; margin:-28px 0; } .dashboard-shell .app-navigation { background:#f8fbff; min-height:calc(100vh - 120px); padding-top:32px; } .dashboard-shell .navigation-content h2 { text-transform:uppercase; letter-spacing:.04em; padding-left:12px; } .dashboard-shell .navigation-content a { padding:13px 16px; margin-bottom:3px; } .dashboard-shell .navigation-content a.selected { background:#e2eeff; box-shadow:inset 3px 0 var(--j-blue); } }
@media (min-width:1600px) {
  .dashboard-kpis { grid-template-columns:repeat(6,minmax(0,1fr)); gap:16px; align-items:stretch; }
  .dashboard-kpi { padding:18px 16px; min-width:0; }
  .dashboard-kpi .kpi-heading { min-height:44px; align-items:flex-start; }
}
@media (min-width:992px) {
  .app-header { min-height:64px; padding:8px 12px; }
  .desktop-brand { width:216px; align-items:center; gap:8px; font-size:.95rem; letter-spacing:-.2px; white-space:nowrap; }
  .app-brand .desktop-brand img { width:40px; height:40px; object-fit:contain; margin:0; flex-shrink:0; }
}

/* Empresas: presentación, sin cambios en formularios ni handlers. */
.admin-empresas { max-width:1440px; margin-left:auto; margin-right:auto; }
.empresas-heading { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:18px; margin-bottom:24px; }
.empresas-heading h1 { font-size:clamp(1.7rem,3vw,2.15rem); font-weight:750; letter-spacing:-.6px; margin:0 0 8px; }
.empresas-heading p:not(.dashboard-eyebrow) { color:var(--j-muted); margin:0; }
.admin-empresas .card { border:1px solid #ecf2fc; border-radius:22px; box-shadow:0 5px 20px #326bb008!important; }
.admin-empresas>.card>.card-body,.empresas-form .card-body { padding:20px; }
.admin-empresas .btn { border-radius:10px; min-height:44px; display:inline-flex; align-items:center; justify-content:center; font-weight:600; }
.admin-empresas .btn-sm { min-height:36px; padding:7px 12px; }
.empresas-list .table { --bs-table-striped-bg:#f9fbff; --bs-table-hover-bg:#edf5ff; font-size:.9rem; color:#50668e; }
.empresas-list .table th { background:#f0f6ff; color:#415e90; padding:12px; font-size:.82rem; white-space:nowrap; border-color:var(--j-line); }
.empresas-list .table td { padding:12px; border-color:var(--j-line); }
.empresas-list .table td:first-child { color:var(--j-ink); font-weight:600; }
.admin-empresas .badge { padding:7px 11px; border-radius:20px; font-weight:600; }
.admin-empresas .badge.bg-success { background:#e0faee!important; color:#087f51!important; }
.admin-empresas .badge.bg-secondary { background:#edf2f8!important; color:#566b91!important; }
.empresas-mobile { display:grid; gap:14px; }
.empresas-mobile .card { border-radius:16px; box-shadow:none!important; }
.empresas-mobile .card-body { padding:18px; }
.empresas-mobile h2 { font-size:1.05rem; font-weight:700; margin-bottom:16px; overflow-wrap:anywhere; }
.empresas-mobile dl { margin-bottom:20px; overflow-wrap:anywhere; }
.empresas-mobile dt { color:var(--j-muted); font-size:.78rem; font-weight:500; }
.empresas-mobile dd { color:#50668e; margin-bottom:12px; }
.empresas-form h1 { font-weight:750; letter-spacing:-.5px; }
.empresas-form .form-label { color:#405984; font-weight:600; margin-bottom:8px; }
.empresas-form .form-control { min-height:46px; border-color:#dce6f5; border-radius:10px; padding:10px 14px; }
.empresas-form-actions { margin-top:24px; padding-top:20px; border-top:1px solid var(--j-line); }
@media (min-width:768px) { .admin-empresas>.card>.card-body,.empresas-form .card-body { padding:28px; } }
.admin-centros.empresas-form .form-select { min-height:46px; border-color:#dce6f5; border-radius:10px; padding:10px 36px 10px 14px; color:#405984; }
.admin-personas .personas-search .form-label { color:#405984; font-size:.9rem; font-weight:600; }
.admin-personas .personas-search .form-control { min-height:46px; border-color:#dce6f5; border-radius:10px; padding:10px 14px; }
.admin-personas .personas-fields { margin-top:24px; }
.admin-personas .personas-fields h2 { font-size:1.05rem; font-weight:700; margin-bottom:8px; }
.admin-personas .personas-fields>.form-text { margin-bottom:20px; }
.admin-personas .personas-fields .row>div:last-child { border-top:1px solid var(--j-line); margin-top:24px; padding-top:20px; }
.admin-relaciones .form-select { min-height:46px; border-color:#dce6f5; border-radius:10px; padding:10px 36px 10px 14px; color:#405984; }
.admin-relaciones .relaciones-filters .form-label { font-size:.9rem; font-weight:600; color:#405984; }
.admin-relaciones .relaciones-section { margin:24px 0 0; padding:20px 0 0; border-top:1px solid var(--j-line); }
.admin-relaciones .relaciones-section legend { float:none; width:auto; font-size:1.05rem; font-weight:700; margin:0 0 16px; }
.admin-relaciones .relaciones-section .form-check { padding-top:8px; padding-bottom:8px; }
.admin-cuentas .badge.cuenta-role { color:#3564a1; background:#eaf3ff; }
.admin-cuentas .form-select { min-height:46px; border-color:#dce6f5; border-radius:10px; padding:10px 36px 10px 14px; color:#405984; }
.admin-cuentas .cuentas-section { margin:24px 0 0; padding:20px 0 0; border-top:1px solid var(--j-line); }
.admin-cuentas .cuentas-section legend { float:none; width:auto; font-size:1.05rem; font-weight:700; margin:0 0 16px; }
.admin-cuentas .cuentas-section .form-check { padding-top:6px; padding-bottom:6px; }
.admin-aclaraciones .badge.bg-warning { color:#966700!important; background:#fff4d8!important; }
.admin-aclaraciones .badge.bg-danger { color:#ad3652!important; background:#ffe8ee!important; }
.admin-aclaraciones .aclaracion-section { border-top:1px solid var(--j-line); padding-top:20px; margin-top:24px; }
.admin-aclaraciones .aclaracion-section h2 { font-size:1.05rem; font-weight:700; margin-bottom:16px; }
.admin-aclaraciones .aclaracion-section dt { color:var(--j-muted); font-weight:500; font-size:.9rem; }
.admin-aclaraciones .aclaracion-section dd { color:#405984; overflow-wrap:anywhere; }
.admin-aclaraciones .aclaracion-text { white-space:pre-wrap; overflow-wrap:anywhere; color:#50668e; }
.admin-aclaraciones .aclaracion-value { padding:16px; background:#f4f8ff; border:1px solid var(--j-line); border-radius:12px; white-space:pre-wrap; overflow-wrap:anywhere; min-height:52px; }
.admin-aclaraciones .form-select { min-height:46px; border-color:#dce6f5; border-radius:10px; padding:10px 36px 10px 14px; color:#405984; }
.admin-aclaraciones textarea.form-control { min-height:110px; }
.admin-ausencias .badge.bg-primary { color:#3564a1; background:#eaf3ff!important; }
.admin-ausencias .badge.bg-danger { color:#ad3652; background:#ffe8ee!important; }
.admin-ausencias .badge.bg-info { color:#267493!important; background:#e6f5ff!important; }
.admin-ausencias .ausencias-notice { padding:14px 16px; margin-bottom:22px; border:1px solid var(--j-line); border-radius:12px; background:#f4f8ff; color:#597098; font-size:.9rem; }
.admin-ausencias .ausencia-section { border-top:1px solid var(--j-line); padding-top:20px; margin-top:24px; }
.admin-ausencias .ausencia-section legend { float:none; width:auto; font-size:1.05rem; font-weight:700; margin:0 0 16px; }
.admin-ausencias .form-select { min-height:46px; border-color:#dce6f5; border-radius:10px; padding:10px 36px 10px 14px; color:#405984; }
.admin-ausencias textarea.form-control { min-height:110px; }
.admin-ausencias .ausencia-observacion { white-space:pre-wrap; overflow-wrap:anywhere; }

.admin-report .report-filter-card { padding:22px; margin-bottom:24px; }
.admin-report .report-filter-card .form-label { font-weight:600; color:#405984; font-size:.9rem; }
.admin-report .report-filter-card .form-control,.admin-report .report-filter-card .form-select { min-height:46px; border-color:#dce6f5; border-radius:10px; color:#405984; }
.admin-report .report-summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-bottom:20px; }
.admin-report .report-summary>div { padding:16px 20px; }
.admin-report .report-summary span { display:block; color:var(--j-muted); font-size:.85rem; margin-bottom:8px; }
.admin-report .report-summary strong { font-size:1.75rem; font-weight:750; font-variant-numeric:tabular-nums; }
.admin-report .report-results>.card-body { padding:20px; }
.admin-report .report-table th { white-space:normal; vertical-align:middle; font-size:.85rem; }
.admin-report .report-table td { font-size:.85rem; padding:.7rem .45rem; }
.admin-report .report-table td:nth-child(2) { max-width:220px; overflow-wrap:anywhere; }
.report-row-actions { display:flex; justify-content:center; align-items:center; gap:6px; }
.report-row-actions .btn { display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; padding:5px; }
.report-row-actions svg { width:18px; height:18px; }
.report-detail-modal .modal-content { border-radius:18px; }
.report-detail-modal .modal-body { overflow-wrap:anywhere; }
.report-detail-text { white-space:pre-wrap; overflow-wrap:anywhere; }
@media print { .report-row-actions,.report-detail-modal { display:none!important; } }
.admin-report .report-mobile .card { border-radius:16px; box-shadow:none!important; }
.admin-report .report-mobile p { color:#50668e; overflow-wrap:anywhere; }
.admin-report .report-mobile dl { font-size:.85rem; color:#50668e; }
.admin-report .report-mobile dt { font-weight:500; }
.admin-report .report-mobile dd { overflow-wrap:anywhere; }
.admin-report .report-observation,.admin-report .report-adjustments { margin-top:14px; padding-top:14px; border-top:1px solid var(--j-line); }
.admin-report .report-adjustments { padding:14px; border:1px solid #e2ebf8; border-radius:12px; background:#f4f8ff; }
.admin-report .report-mobile h2 { font-size:.85rem; font-weight:700; margin-bottom:10px; }
@media (min-width:992px) { .admin-report .report-summary { grid-template-columns:repeat(5,minmax(0,1fr)); gap:16px; } .admin-report .report-filter-card,.admin-report .report-results>.card-body { padding:26px; } }
@media screen {
  .admin-report .badge.bg-primary { color:#3564a1; background:#eaf3ff!important; }
  .admin-report .badge.bg-info { color:#267493!important; background:#e6f5ff!important; }
  .admin-report .badge.bg-warning { color:#966700!important; background:#fff4d8!important; }
}
@media print {
  @page jornada-report { size:letter landscape; margin:8mm; }
  .admin-report { page:jornada-report; max-width:none; color:#000; }
  .app-header,.app-footer,.app-navigation,.mobile-bottom-nav,.admin-report .report-filters,.admin-report .report-actions { display:none!important; }
  .app-frame { display:block; }
  .admin-report .report-heading .dashboard-eyebrow,.admin-report .report-heading p { display:none; }
  .admin-report .report-mobile { display:none!important; }
  .admin-report .report-table { display:block!important; overflow:visible!important; }
  .admin-report .surface,.admin-report .card { border:0!important; box-shadow:none!important; }
  .admin-report .report-results>.card-body { padding:0; }
  .admin-report .report-summary { grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; }
  .admin-report .report-summary>div { padding:8px 0; }
  .admin-report .report-summary strong { font-size:13pt; }
  .admin-report .table { width:100%; table-layout:fixed; }
  .admin-report .table th,.admin-report .table td { font-size:7.5pt!important; padding:5px 3px!important; white-space:normal!important; overflow-wrap:anywhere; min-width:0!important; color:#000!important; background:transparent!important; }
  .admin-report .badge { color:#000!important; background:transparent!important; border:1px solid #777; font-size:7pt; padding:3px!important; }
  .admin-report tr { break-inside:avoid; }
  .admin-report thead { display:table-header-group; }
}
.worker-aclaraciones .badge.bg-warning { color:#966700!important; background:#fff4d8!important; }
.worker-aclaraciones .badge.bg-danger { color:#ad3652!important; background:#ffe8ee!important; }
.worker-aclaraciones .worker-date { font-size:.8rem; color:var(--j-muted); margin-bottom:8px; }
.worker-aclaraciones .worker-text { white-space:pre-wrap; overflow-wrap:anywhere; }
.worker-aclaraciones .worker-resolution { padding:16px; background:#f4f8ff; border:1px solid var(--j-line); border-radius:14px; color:#50668e; }
.worker-aclaraciones .worker-resolution h3,.worker-aclaraciones .worker-selected h2 { font-size:.9rem; font-weight:700; margin-bottom:10px; }
.worker-aclaraciones .worker-selected { padding:18px; margin-bottom:24px; border:1px solid var(--j-line); border-radius:14px; background:#f4f8ff; }
.worker-aclaraciones .worker-selected p { color:#50668e; margin-top:6px; }
.worker-aclaraciones .form-select { min-height:46px; border-color:#dce6f5; border-radius:10px; padding:10px 36px 10px 14px; color:#405984; }
.worker-aclaraciones textarea.form-control { min-height:130px; }
.worker-calendar .calendar-filters .form-label { font-weight:600; color:#405984; font-size:.9rem; }
.worker-calendar .calendar-filters .form-control,.worker-calendar .calendar-filters .form-select { min-height:46px; border:1px solid #dce6f5; border-radius:10px; color:#405984; }
.worker-calendar .calendar-scroll { overflow-x:auto; padding-bottom:10px; }
.worker-calendar .calendar-scroll:focus-visible { outline:2px solid var(--j-blue); outline-offset:4px; }
.worker-calendar .month-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:10px; min-width:770px; }
.worker-calendar .month-weekdays { margin-bottom:12px; color:#5a7097; }
.worker-calendar .month-weekdays>div { padding:12px 8px; background:#f0f6ff; border-radius:10px; }
.worker-calendar .month-weekdays>div:nth-child(n+6) { background:#edf1f8; }
.worker-calendar .month-day { min-height:140px; border:1px solid #e5edf8; border-radius:14px; padding:12px; background:#fcfdff; overflow-wrap:anywhere; }
.worker-calendar .month-weekend { background:#f3f6fb; }
.worker-calendar .month-day-number { font-weight:700; font-size:1rem; margin-bottom:14px; color:#405984; }
.worker-calendar .month-day .badge { white-space:normal; font-size:.73rem; padding:7px 5px; border-radius:9px; line-height:1.35; font-weight:600; }
.worker-calendar .calendar-jornada { background:#eaf3ff; color:#3564a1; }
.worker-calendar .badge.bg-success { background:#e0faee!important; color:#087f51!important; }
.worker-calendar .badge.bg-primary { background:#e9edff!important; color:#5964ad!important; }
.worker-calendar .badge.bg-danger { background:#ffe8ee!important; color:#ad3652!important; }
.worker-calendar .badge.bg-secondary { background:#edf2f8!important; color:#566b91!important; }
.worker-calendar .badge.bg-info { background:#e6f5ff!important; color:#267493!important; }
.worker-calendar .calendar-scroll-hint { color:var(--j-muted); font-size:.8rem; margin-bottom:14px; }
@media (min-width:1200px) { .worker-calendar .month-grid { gap:12px; } .worker-calendar .month-day { min-height:155px; } .worker-calendar .month-day .badge { font-size:.8rem; } }
.worker-registros .registros-filters { margin-bottom:24px; }
.worker-registros .registros-filters .form-label { color:#405984; font-weight:600; font-size:.9rem; }
.worker-registros .registros-filters .form-control { min-height:46px; border-color:#dce6f5; border-radius:10px; color:#405984; }
.worker-registros .registros-mobile .card { border-radius:16px; box-shadow:none!important; }
.worker-registros .registros-mobile p { color:#50668e; overflow-wrap:anywhere; }
.worker-registros .registros-mobile dl { color:#50668e; font-size:.9rem; }
.worker-registros .registros-mobile dt { font-weight:500; }
.worker-registros .registros-mobile dd { overflow-wrap:anywhere; }
.worker-registros .badge.bg-primary { color:#3564a1; background:#eaf3ff!important; }
.worker-registros .badge.bg-warning { color:#966700!important; background:#fff4d8!important; }
.worker-registros .badge.bg-danger { color:#ad3652; background:#ffe8ee!important; }
.worker-registros .badge.bg-info { color:#267493!important; background:#e6f5ff!important; }
.login-shell .app-main { display:flex; align-items:center; justify-content:center; min-height:calc(100dvh - 124px); width:100%; }
.login-view { width:100%; max-width:420px; }
.login-card { border:1px solid #e5edf8; border-radius:24px; box-shadow:0 12px 40px #326bb00d!important; }
.login-card .card-body { padding:24px; }
.login-logo { display:block; width:180px; height:180px; object-fit:contain; margin:-12px auto -8px; }
.login-card h1 { font-weight:750; font-size:1.5rem; letter-spacing:-.4px; }
.login-card .form-label { color:#405984; font-size:.95rem; font-weight:600; margin-bottom:8px; }
.login-card .form-control { min-height:49px; border-color:#dce6f5; border-radius:12px; padding:12px 14px; }
.login-card .btn { min-height:49px; border-radius:12px; font-weight:650; }
@media (min-width:768px) { .login-card .card-body { padding:30px; } }

/* Privacy notice: comfortable reading on desktop and mobile. */
.privacy-notice { max-width:960px; margin:0 auto; font-size:1rem; line-height:1.75; overflow-wrap:anywhere; }
.privacy-notice h1 { font-size:clamp(1.7rem,4vw,2.3rem); line-height:1.2; }
.privacy-notice h2 { font-size:1.3rem; line-height:1.35; margin-bottom:16px; }
.privacy-notice h3 { font-size:1.1rem; margin-top:20px; }
.privacy-review { padding:20px; border-color:#d7e6fa; }
.privacy-body { padding:clamp(20px,4vw,40px); }
.privacy-body section + section { margin-top:30px; padding-top:26px; border-top:1px solid var(--j-line); }
.privacy-body li { margin-bottom:10px; }
.privacy-location { padding:22px; border-radius:16px; background:#eff7ff; }
.privacy-body dd { margin-bottom:16px; }
