/* CAE · Renovación visual. Capa de presentación compartida; sin lógica. */
:root, :root[data-theme="light"] {
 --bg:#f3f6fa; --surface:#ffffff; --surface-raised:#f8fafc;
 --text:#192d42; --text-muted:#5c6f82;
 --accent:#126b79; --accent-strong:#0d5360; --accent-soft:rgba(18,107,121,.09);
 --btn-on-accent:#fff; --border:#dce5ed; --border-strong:#8aadb5;
 --glow-accent:0 4px 14px rgba(18,107,121,.16); --glow-text:none; --glow-filter:none;
 --shadow-hover:0 12px 30px rgba(25,45,66,.09);
 --ui-shadow:0 3px 16px rgba(25,45,66,.045);
 --ui-navy:#152f46; --ui-on-navy:#f5f9fc; --ui-navy-muted:#b8ccda;
 --ui-photo-tint:rgba(13,47,62,.72);
 --clip-card:none; --clip-button:none; --radius-sm:9px; --tracking-wide:.035em;
 --sb-w:236px; --sb-w-min:68px;
 --bs-body-bg:var(--bg); --bs-body-color:var(--text); --bs-secondary-color:var(--text-muted);
 --bs-border-color:var(--border); --bs-primary:var(--accent); --bs-primary-rgb:18,107,121;
 --bs-link-color:var(--accent); --bs-link-color-rgb:18,107,121;
 --bs-link-hover-color:var(--accent-strong); --bs-link-hover-color-rgb:13,83,96;
}
:root[data-theme="dark"] {
 --bg:#101b28; --surface:#172637; --surface-raised:#1d3043;
 --text:#e6eef6; --text-muted:#a7b8c9;
 --accent:#70d1d2; --accent-strong:#9be3e3; --accent-soft:rgba(112,209,210,.1);
 --btn-on-accent:#102a32; --border:#304357; --border-strong:#648c9a;
 --glow-accent:0 4px 16px rgba(0,0,0,.16); --glow-text:none; --glow-filter:none;
 --shadow-hover:0 12px 30px rgba(0,0,0,.2); --ui-shadow:0 3px 16px rgba(0,0,0,.12);
 --bs-primary-rgb:112,209,210; --bs-link-color-rgb:112,209,210; --bs-link-hover-color-rgb:155,227,227;
}
body { background:var(--bg); color:var(--text); font-family:var(--font-display,system-ui,sans-serif); -webkit-font-smoothing:antialiased; }
h1,h2,h3,.page-header { letter-spacing:-.035em; }
.page-header { font-size:clamp(1.45rem,2.5vw,2rem); font-weight:750; text-transform:none; }
:where(a,button,input,select,textarea,[tabindex]):focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
.topbar { height:64px; padding-inline:1.5rem; }
.topbar-title { font-size:.875rem; text-transform:none; letter-spacing:0; }
.app-ambito { font-size:.7rem; border-radius:7px; padding:.4rem .65rem; }
.sidebar { background:var(--ui-navy); color:var(--ui-on-navy); border-right:0; }
.sb-head { height:64px; padding-inline:1rem; border-color:rgba(255,255,255,.13); }
.sb-brand,.sb-brand:hover { color:var(--ui-on-navy); text-shadow:none; letter-spacing:-.02em; }
.sb-nav { padding:.9rem .65rem; gap:.3rem; }
.sidebar .sb-link { color:var(--ui-navy-muted); border-radius:9px; font-size:.86rem; padding:.7rem .8rem; border-left:0; }
.sidebar .sb-link:hover { color:var(--ui-on-navy); background:rgba(255,255,255,.07); }
.sidebar .sb-link.is-active { color:var(--ui-on-navy); background:rgba(255,255,255,.13); box-shadow:inset 3px 0 #70d1d2; }
.sidebar .sb-section-label { color:var(--ui-navy-muted); opacity:1; font-size:.62rem; }
.sidebar .sb-user,.sidebar .sb-cfg,.sidebar .sb-collapse { color:var(--ui-navy-muted); }
.sidebar .sb-foot,.sidebar .sb-divider,.sidebar .sb-section { border-color:rgba(255,255,255,.13); }
.sidebar .sb-collapse { border-color:rgba(255,255,255,.2); background:transparent; }
.sidebar .sb-logo { border-radius:10px; }
.sidebar ~ main { padding:1.8rem clamp(1rem,2.5vw,2.5rem) 3rem; }
.card,.hub-card,.cae-kpi-card,.cae-panel-card { border-radius:15px; clip-path:none; box-shadow:var(--ui-shadow); }
.card-header { background:transparent; padding:1rem 1.2rem; border-bottom-color:var(--border); }
.card-header:first-child { border-radius:15px 15px 0 0; }
.card-body { padding:1.2rem; }
.card-footer { background:var(--surface-raised); border-top-color:var(--border); }
.card-footer:last-child { border-radius:0 0 15px 15px; }
.btn { border-radius:9px; font-weight:600; letter-spacing:0; text-transform:none; }
.btn-primary { --bs-btn-color:var(--btn-on-accent); --bs-btn-bg:var(--accent); --bs-btn-border-color:var(--accent); --bs-btn-hover-bg:var(--accent-strong); --bs-btn-hover-border-color:var(--accent-strong); --bs-btn-hover-color:var(--btn-on-accent); border-radius:9px; text-transform:none; letter-spacing:0; box-shadow:0 2px 5px var(--accent-soft); }
.btn:not(.btn-sm):not(.btn-lg) { padding:.55rem .95rem; }
.form-control,.form-select { background-color:var(--surface); border-color:var(--border); border-radius:9px; color:var(--text); }
.form-control:not(.form-control-sm),.form-select:not(.form-select-sm) { min-height:43px; }
.form-control:focus,.form-select:focus { background-color:var(--surface); border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); color:var(--text); }
.form-label { font-size:.85rem; font-weight:600; margin-bottom:.45rem; }
.input-group-text { background:var(--surface-raised); border-color:var(--border); color:var(--text-muted); }
.table { --bs-table-hover-bg:var(--accent-soft); --bs-table-hover-color:var(--text); vertical-align:middle; }
.table > thead > tr > th { background:var(--surface-raised); color:var(--text-muted); font-size:.73rem; font-weight:650; letter-spacing:.025em; padding:.85rem .8rem; border-bottom:1px solid var(--border); }
.table > tbody > tr > td { padding:.8rem; border-bottom-color:var(--border); }
.table .btn-sm { border-radius:7px; }
.badge { border-radius:6px; font-weight:600; letter-spacing:0; padding:.4em .65em; }
.alert { border-radius:12px; }
.nav-tabs { gap:.3rem; border-color:var(--border); }
.nav-tabs .nav-link { border-radius:9px 9px 0 0; color:var(--text-muted); font-weight:600; }
.nav-tabs .nav-link.active { color:var(--accent); background:var(--surface); border-color:var(--border) var(--border) var(--surface); }
.dropdown-menu,.modal-content,.swal2-popup { border:1px solid var(--border); border-radius:14px; box-shadow:var(--shadow-hover); }
.dropdown-item { border-radius:6px; }
.modal-header,.modal-footer { border-color:var(--border); padding:1rem 1.3rem; }
.page-link { color:var(--accent); }
.active>.page-link { background:var(--accent); border-color:var(--accent); color:var(--btn-on-accent); }
.hub-grid { max-width:1040px; gap:1.4rem; }
.hub-card { align-items:flex-start; text-align:left; padding:2rem; transition:transform .18s ease,box-shadow .18s ease; }
.hub-card:hover { transform:translateY(-3px); box-shadow:var(--shadow-hover); }
.hub-card .hub-icon { background:var(--accent-soft); padding:.6rem; border-radius:12px; }
.cae-dashboard { gap:1.5rem; }
.cae-dash-hero { border-radius:20px; min-height:195px; border-color:var(--border); box-shadow:var(--ui-shadow); background:radial-gradient(ellipse at 100% 0,var(--accent-soft),transparent 65%),var(--surface); }
.cae-dash-hero h1,.cae-dash-hero h2 { letter-spacing:-.04em; font-weight:750; }
.cae-dash-hero::after { border-width:1px; width:320px; height:320px; right:-70px; bottom:-170px; border-color:var(--border-strong); }
.cae-dash-alert { border-radius:14px; }
.cae-dashboard .cae-kpi-card { border-radius:14px; padding:1.3rem; }
.cae-kpi-icon { border-radius:11px; }
.cae-kpi-value { font-size:2rem; letter-spacing:-.04em; font-variant-numeric:tabular-nums; }
/* Acceso y recuperación conservan campos, mensajes y destinos. */
.acceso-foto { background-image:linear-gradient(160deg,var(--ui-photo-tint),rgba(13,47,62,.28)),url('/assets/img/acceso.jpg'); }
.acceso-caption { left:clamp(2rem,5vw,5rem); bottom:4rem; }
.acceso-caption h2 { font-size:clamp(2rem,3.3vw,3.3rem); letter-spacing:-.04em; text-transform:none; }
.acceso-caption p { text-transform:none; letter-spacing:0; font-weight:400; font-size:1.05rem; }
.acceso-panel { background:radial-gradient(ellipse at 100% 0,var(--accent-soft),transparent 70%),var(--bg); }
.login-box { border-radius:22px; padding:clamp(1.4rem,3vw,2.5rem); max-width:420px; box-shadow:var(--shadow-hover); }
.login-logo h1 { text-transform:none; letter-spacing:-.035em; font-size:1.75rem; }
.login-logo p { font-size:.85rem; }
.login-box .form-control { padding:.75rem .85rem; }
/* Portada: misma identidad, con un ritmo más editorial. */
.lp-wrap { max-width:1180px; }
.lp-nav .lp-wrap { height:76px; }
.lp-nav nav a:not(.lp-btn) { font-size:.9rem; }
.lp-btn { border-radius:10px; text-transform:none; letter-spacing:0; font-size:.9rem; padding:12px 23px; }
.lp-hero { padding:clamp(3.5rem,7vw,7rem) 0; background:radial-gradient(ellipse at 85% 15%,var(--accent-soft),transparent 60%),var(--surface); }
.lp-hero h1 { font-size:clamp(2.35rem,5.5vw,4.6rem); letter-spacing:-.055em; max-width:19ch; line-height:1.06; }
.lp-eyebrow { font-family:var(--font-display); font-weight:650; }
.lp-lede { font-size:1.13rem; line-height:1.8; }
.lp-chip { border-radius:100px; }
.lp-sec { padding:clamp(3rem,6vw,5.5rem) 0; }
.lp-sec h2 { font-size:clamp(1.8rem,3vw,2.6rem); letter-spacing:-.045em; }
.lp-card,.lp-ia-item,.lp-luz,.lp-nota { border-radius:16px; box-shadow:var(--ui-shadow); }
.lp-card { padding:1.8rem; }
.lp-card>i { display:inline-flex; padding:.65rem; border-radius:12px; background:var(--accent-soft); }
.lp-sec-ia { background:var(--surface); }
.err-box { margin:1rem; padding:clamp(1.5rem,5vw,3.5rem); border-radius:22px; box-shadow:var(--shadow-hover); }
.err-code { color:var(--accent); font-size:5rem; letter-spacing:-.06em; }
@media(max-width:900px) {
 .sidebar ~ main,html.sb-collapsed .sidebar ~ main { max-width:100%; padding:1.2rem 1rem 2rem; }
 .topbar { height:58px; }
 .acceso-panel { background:radial-gradient(ellipse at top,var(--accent-soft),transparent 70%),var(--bg); padding:1.5rem; }
}
@media(max-width:576px) {
 .card-body { padding:1rem; }
 main>.d-flex:has(.page-header) { flex-wrap:wrap; gap:1rem; align-items:flex-start!important; }
 main>.d-flex:has(.page-header)>div { min-width:0; max-width:100%; }
 .cae-dash-hero { padding:1.3rem; border-radius:15px; }
 .lp-nav .lp-wrap { height:64px; }
 .lp-wrap { padding-inline:20px; }
 .lp-hero h1 { font-size:2.6rem; }
}
@media(prefers-reduced-motion:reduce) {
 *,*::before,*::after { scroll-behavior:auto!important; transition:none!important; animation:none!important; }
}
@media print {
 body { background:white; }
 .card,.cae-dash-hero,.hub-card { box-shadow:none; }
}

/* Identidad legible también sobre el menú azul del portal. */
.sidebar .pt-marca { color:var(--ui-on-navy); background:rgba(255,255,255,.06); border-color:rgba(255,255,255,.13); }
.sidebar .pt-empresa strong { color:var(--ui-on-navy); }
.sidebar .pt-empresa span { color:var(--ui-navy-muted); }
.login-box .pass-campo .form-control { padding-right:42px; }
.login-box .btn-login { border-radius:9px; text-transform:none; letter-spacing:0; padding:.8rem 1rem; }
