:root{
  --navy:#0b2540;
  --navy-2:#123c5a;
  --teal:#0f766e;
  --teal-2:#0d9488;
  --sky:#e7f6f5;
  --bg:#f4f7fb;
  --surface:#ffffff;
  --surface-2:#f8fafc;
  --text:#172033;
  --muted:#64748b;
  --line:#e2e8f0;
  --danger:#b42318;
  --danger-bg:#fff1f0;
  --warning:#9a6700;
  --warning-bg:#fff8e6;
  --success:#027a48;
  --success-bg:#ecfdf3;
  --info:#175cd3;
  --info-bg:#eff8ff;
  --radius:18px;
  --radius-sm:12px;
  --shadow:0 12px 36px rgba(15,35,55,.08);
  --shadow-lg:0 24px 70px rgba(7,31,52,.16);
}
*{box-sizing:border-box}
html{font-size:16px;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.45}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
a{color:var(--teal);text-decoration:none}a:hover{text-decoration:underline}
.hidden{display:none!important}

/* Login */
.login-shell{min-height:100svh;display:grid;grid-template-columns:minmax(360px,1.05fr) minmax(420px,.95fr);background:var(--surface)}
.login-visual{position:relative;display:flex;align-items:flex-end;overflow:hidden;padding:clamp(36px,6vw,88px);background:
  radial-gradient(circle at 20% 15%,rgba(45,212,191,.30),transparent 28%),
  radial-gradient(circle at 80% 78%,rgba(56,189,248,.16),transparent 30%),
  linear-gradient(145deg,#071b30 0%,#0b3551 58%,#0f766e 100%);color:#fff}
.login-visual::before,.login-visual::after{content:"";position:absolute;border:1px solid rgba(255,255,255,.13);border-radius:50%}
.login-visual::before{width:420px;height:420px;right:-140px;top:-110px}
.login-visual::after{width:260px;height:260px;left:-90px;bottom:70px}
.visual-content{position:relative;z-index:1;max-width:650px}
.eyebrow{display:inline-flex;padding:7px 11px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(255,255,255,.08);font-size:.78rem;font-weight:750;letter-spacing:.08em;text-transform:uppercase}
.visual-content h2{font-size:clamp(2rem,4vw,4.25rem);line-height:1.04;letter-spacing:-.045em;margin:22px 0 18px;max-width:760px}
.visual-content p{max-width:600px;margin:0;color:rgba(255,255,255,.78);font-size:clamp(1rem,1.5vw,1.18rem)}
.feature-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:34px}
.feature-list span{padding:9px 12px;border-radius:999px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.13);font-size:.88rem}
.login-panel{display:grid;place-items:center;padding:32px;background:linear-gradient(180deg,#fff,#f8fafc)}
.login-card{width:min(100%,440px)}
.brand-row{display:flex;align-items:center;gap:12px;margin-bottom:58px}
.brand-row>div:last-child{display:flex;flex-direction:column}.brand-row strong{font-size:1.12rem;letter-spacing:.08em}.brand-row small{color:var(--muted);font-size:.78rem}
.brand-mark,.sidebar-brand>span{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:linear-gradient(145deg,var(--teal-2),var(--navy));color:#fff;font-weight:850;box-shadow:0 10px 24px rgba(15,118,110,.22)}
.login-copy h1{margin:0;font-size:2rem;letter-spacing:-.03em}.login-copy p{margin:8px 0 28px;color:var(--muted)}
.login-form{display:grid;gap:18px}.login-submit{margin-top:4px;min-height:48px}
.login-security{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:22px;color:var(--muted);font-size:.8rem}.login-security span{color:var(--success);font-size:.65rem}

/* Application shell */
.app{min-height:100vh;display:grid;grid-template-columns:268px minmax(0,1fr)}
.sidebar{position:sticky;top:0;height:100vh;padding:20px 16px 18px;background:linear-gradient(180deg,#081d31 0%,#0b2943 100%);color:#fff;display:flex;flex-direction:column;z-index:50}
.sidebar-brand{display:flex;align-items:center;gap:12px;padding:4px 6px 24px;border-bottom:1px solid rgba(255,255,255,.09)}
.sidebar-brand>span{width:40px;height:40px;border-radius:12px}
.sidebar-brand div{display:flex;flex-direction:column}.sidebar-brand b{letter-spacing:.08em}.sidebar-brand small{color:rgba(255,255,255,.58);font-size:.72rem}
#nav{display:grid;gap:5px;padding:20px 0;overflow:auto;scrollbar-width:thin}
.nav-btn{width:100%;display:flex;align-items:center;gap:11px;padding:11px 12px;border:0;border-radius:11px;background:transparent;color:rgba(255,255,255,.72);font-weight:650;text-align:left;transition:.16s ease}
.nav-btn:hover{background:rgba(255,255,255,.07);color:#fff}.nav-btn.active{background:linear-gradient(90deg,rgba(45,212,191,.20),rgba(45,212,191,.08));color:#fff;box-shadow:inset 3px 0 0 #2dd4bf}
.nav-icon{display:grid;place-items:center;width:24px;height:24px;color:#5eead4;font-size:1.05rem}
.sidebar-user{display:flex;align-items:center;gap:10px;margin-top:auto;padding:14px 8px 0;border-top:1px solid rgba(255,255,255,.09);min-width:0}
.sidebar-user>div:last-child{display:flex;flex-direction:column;min-width:0}.sidebar-user b,.sidebar-user small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user small{color:rgba(255,255,255,.56);font-size:.74rem}
.avatar{flex:0 0 auto;display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:#fff;color:var(--navy);font-weight:850}
.sidebar-overlay{display:none}
.main{min-width:0}
.topbar{position:sticky;top:0;z-index:30;min-height:76px;padding:14px clamp(18px,3vw,36px);display:flex;align-items:center;gap:14px;border-bottom:1px solid rgba(226,232,240,.85);background:rgba(244,247,251,.91);backdrop-filter:blur(14px)}
.menu-btn{display:none;width:42px;height:42px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--navy);font-size:1.15rem}
.page-heading{min-width:0}.page-heading h2{margin:0;font-size:1.2rem;letter-spacing:-.02em}.page-heading p{margin:2px 0 0;color:var(--muted);font-size:.8rem}
.top-actions{margin-left:auto;display:flex;gap:8px}
.content{width:min(100%,1600px);margin:0 auto;padding:clamp(18px,3vw,36px)}

/* Components */
.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}
.card,.panel{background:var(--surface);border:1px solid rgba(226,232,240,.9);border-radius:var(--radius);box-shadow:0 4px 18px rgba(15,35,55,.035)}
.card.metric{min-height:145px;padding:20px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;overflow:hidden;position:relative}
.card.metric::after{content:"";position:absolute;width:105px;height:105px;border-radius:50%;right:-42px;bottom:-52px;background:var(--sky)}
.metric>div:first-child{display:flex;flex-direction:column;gap:7px;min-width:0}.metric small{color:var(--muted)}.metric b{font-size:1.9rem;line-height:1;letter-spacing:-.04em}.metric-icon{position:relative;z-index:1;display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:var(--sky);color:var(--teal);font-size:1.2rem}
.progress{width:100%;height:7px;margin-top:6px;border-radius:999px;background:#eef2f6;overflow:hidden}.progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--teal),#2dd4bf)}
.panel{margin-bottom:18px;overflow:hidden}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:19px 20px;border-bottom:1px solid var(--line)}.panel-header h3{margin:0;font-size:1rem}.panel-header p{margin:4px 0 0}
.modal-body{padding:20px}.actions,.table-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.quick-links{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.quick{padding:17px;text-align:left;border:1px solid var(--line);border-radius:14px;background:var(--surface-2);color:var(--text);transition:.15s ease}.quick:hover{transform:translateY(-2px);border-color:#99d5cf;box-shadow:var(--shadow)}.quick b,.quick small{display:block}.quick small{margin-top:6px;color:var(--muted)}
.muted{color:var(--muted);font-size:.86rem}.help{margin:6px 0 0;color:var(--muted);font-size:.76rem}.empty{padding:44px 20px;text-align:center;color:var(--muted)}

/* Forms and buttons */
.field{display:flex;flex-direction:column;gap:6px}.field label,form>label{font-size:.82rem;font-weight:720;color:#344054}.required::after{content:" *";color:var(--danger)}
input,select,textarea{width:100%;min-height:42px;padding:9px 11px;border:1px solid #cfd8e3;border-radius:10px;background:#fff;color:var(--text);outline:0;transition:border-color .15s,box-shadow .15s}
textarea{min-height:104px;resize:vertical}input:focus,select:focus,textarea:focus{border-color:#4fb3aa;box-shadow:0 0 0 3px rgba(15,118,110,.11)}input:disabled{background:#f1f5f9;color:#64748b}
.password-wrap{position:relative}.password-wrap input{padding-right:66px}.icon-btn{position:absolute;right:6px;top:50%;transform:translateY(-50%);height:32px;padding:0 10px;border:0;border-radius:8px;background:#eef4f7;color:var(--navy);font-size:.76rem;font-weight:700}
button.primary,button.secondary,button.danger-ghost{min-height:40px;padding:9px 14px;border-radius:10px;font-weight:720;border:1px solid transparent;transition:.15s ease}
button.primary{background:linear-gradient(135deg,var(--teal),#0b8278);color:#fff;box-shadow:0 7px 18px rgba(15,118,110,.17)}button.primary:hover{filter:brightness(.96);transform:translateY(-1px)}
button.secondary{background:#fff;color:var(--navy);border-color:#d5dee8}button.secondary:hover{background:#f8fafc;border-color:#aab8c8}
button.danger-ghost{background:var(--danger-bg);color:var(--danger);border-color:#ffd4d0}button.danger-ghost:hover{background:#ffe8e5}button:disabled{cursor:not-allowed;opacity:.52;transform:none!important}
.wide{width:100%}.compact{min-height:36px!important;padding:7px 11px!important;font-size:.82rem}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid .full{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.filters{display:grid;grid-template-columns:minmax(220px,1.4fr) repeat(3,minmax(140px,.7fr)) auto;gap:10px;padding:14px 20px;background:#fbfcfe;border-bottom:1px solid var(--line)}

/* Tables */
.table-wrap{width:100%;overflow:auto}.data-table{width:100%;border-collapse:collapse;min-width:820px}.data-table th,.data-table td{padding:13px 15px;border-bottom:1px solid #edf1f5;text-align:left;vertical-align:top;font-size:.82rem}.data-table th{position:sticky;top:0;background:#f8fafc;color:#475467;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.data-table tbody tr:hover{background:#fbfdfd}.data-table td>b,.data-table td>small{display:block}.data-table td>small{margin-top:3px;color:var(--muted)}
.badge{display:inline-flex;align-items:center;max-width:100%;padding:4px 8px;border-radius:999px;font-size:.7rem;font-weight:760;line-height:1.2;white-space:normal}.badge.success{background:var(--success-bg);color:var(--success)}.badge.danger{background:var(--danger-bg);color:var(--danger)}.badge.warning{background:var(--warning-bg);color:var(--warning)}.badge.info{background:var(--info-bg);color:var(--info)}

/* Modal, toast and loading */
.modal-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:18px;background:rgba(5,20,34,.55);backdrop-filter:blur(5px)}
.modal{width:min(920px,100%);max-height:min(92vh,900px);overflow:auto;border-radius:20px;background:#fff;box-shadow:var(--shadow-lg)}.modal.small{width:min(640px,100%)}.modal.large{width:min(1100px,100%)}
.modal-head{position:sticky;top:0;z-index:2;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:19px 20px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.96);backdrop-filter:blur(10px)}.modal-head h3{margin:0}.modal-head p{margin:4px 0 0}.close{width:36px;height:36px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--muted)}
.toast{position:fixed;right:18px;top:18px;z-index:300;max-width:min(420px,calc(100vw - 36px));padding:12px 15px;border-radius:12px;background:#142235;color:#fff;box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;transform:translateY(-8px);transition:.2s}.toast.show{opacity:1;transform:none}.toast.success{background:#05603a}.toast.error{background:#9f1d16}
.loading{position:fixed;inset:0;z-index:250;display:grid;place-content:center;justify-items:center;gap:12px;background:rgba(244,247,251,.72);backdrop-filter:blur(4px);font-weight:720;color:var(--navy)}.spinner{width:40px;height:40px;border:4px solid #d8e4eb;border-top-color:var(--teal);border-radius:50%;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.timeline{display:grid;gap:0}.timeline-item{position:relative;padding:0 0 24px 28px;border-left:2px solid #dfe8ee}.timeline-item:last-child{padding-bottom:0}.timeline-item::before{content:"";position:absolute;left:-7px;top:3px;width:12px;height:12px;border:2px solid #fff;border-radius:50%;background:var(--teal);box-shadow:0 0 0 2px #b9ded9}.timeline-item h4{margin:0 0 4px}.timeline-item p{margin:6px 0;color:#475467}.timeline-item small{color:var(--muted)}
pre{white-space:pre-wrap;word-break:break-word;padding:13px;border-radius:10px;background:#f7f9fb;border:1px solid var(--line);font-size:.75rem}

/* Skeleton */
.skeleton{display:block;border-radius:999px;background:linear-gradient(90deg,#edf1f5 25%,#f8fafc 45%,#edf1f5 65%);background-size:300% 100%;animation:shimmer 1.15s infinite}.skeleton.line{height:11px;margin:7px 0}.skeleton.line.sm{width:34%}.skeleton.line.md{width:58%}.skeleton.line.lg{width:78%;height:27px}.skeleton.line.full{width:100%}.skeleton-panel{padding:22px}@keyframes shimmer{to{background-position:-100% 0}}

@media (max-width:1180px){
  .cards{grid-template-columns:repeat(2,minmax(0,1fr))}.quick-links{grid-template-columns:repeat(2,minmax(0,1fr))}
  .filters{grid-template-columns:repeat(2,minmax(0,1fr))}.filters button{width:100%}
}
@media (max-width:900px){
  .login-shell{grid-template-columns:1fr}.login-visual{display:none}.login-panel{min-height:100svh;padding:24px}.brand-row{margin-bottom:38px}
  .app{display:block}.sidebar{position:fixed;left:0;top:0;width:min(84vw,290px);transform:translateX(-105%);transition:transform .2s ease;box-shadow:20px 0 60px rgba(3,20,34,.25)}.sidebar.open{transform:none}
  .sidebar-overlay{position:fixed;inset:0;z-index:45;border:0;background:rgba(3,20,34,.42);display:none}.sidebar-open .sidebar-overlay{display:block}
  .menu-btn{display:grid;place-items:center}.topbar{min-height:68px;padding:11px 15px}.content{padding:16px}.top-actions .secondary{display:none}
  .cards{gap:12px}.card.metric{min-height:126px;padding:16px}.metric b{font-size:1.6rem}
}
@media (max-width:700px){
  .page-heading p{display:none}.topbar{gap:10px}.top-actions{gap:6px}.top-actions button{padding:7px 9px!important}
  .cards{grid-template-columns:1fr 1fr}.quick-links{grid-template-columns:1fr}.panel-header{align-items:flex-start;flex-direction:column}.panel-header .actions{width:100%}.panel-header .actions button{width:100%}
  .filters{grid-template-columns:1fr;padding:12px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.modal-backdrop{padding:0;align-items:end}.modal,.modal.small,.modal.large{width:100%;max-height:94svh;border-radius:20px 20px 0 0}.modal-head,.modal-body{padding:16px}
  .table-wrap{overflow:visible;padding:12px}.data-table{min-width:0;display:block}.data-table thead{display:none}.data-table tbody{display:grid;gap:12px}.data-table tr{display:block;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 3px 12px rgba(15,35,55,.04);overflow:hidden}.data-table td{display:grid;grid-template-columns:minmax(95px,.72fr) minmax(0,1.28fr);gap:10px;padding:10px 12px;border-bottom:1px solid #edf1f5;font-size:.82rem}.data-table td:last-child{border-bottom:0}.data-table td::before{content:attr(data-label);color:#667085;font-size:.68rem;font-weight:780;text-transform:uppercase;letter-spacing:.04em}.data-table td .table-actions{justify-content:flex-start}.data-table td .table-actions button{min-height:34px;padding:6px 9px;font-size:.76rem}
}
@media (max-width:460px){
  .login-panel{padding:20px}.brand-row{margin-bottom:30px}.login-copy h1{font-size:1.72rem}
  .cards{grid-template-columns:1fr}.card.metric{min-height:116px}.content{padding:12px}.topbar{padding:10px 12px}.page-heading h2{font-size:1.02rem}.danger-ghost.compact{font-size:0;padding:7px 10px!important}.danger-ghost.compact::after{content:"Salir";font-size:.78rem}
  .data-table td{grid-template-columns:1fr}.data-table td::before{margin-bottom:-5px}.form-actions{flex-direction:column-reverse}.form-actions button{width:100%}
}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* SISAC 2.1: indicador ligero de sincronización en segundo plano */
.sync-note{display:flex;align-items:center;gap:.55rem;margin:0 0 1rem;padding:.7rem .9rem;border:1px solid rgba(30,64,175,.12);border-radius:12px;background:rgba(239,246,255,.72);font-size:.88rem;color:#334155}
.sync-dot{width:.62rem;height:.62rem;border-radius:50%;background:currentColor;opacity:.72;animation:sisacPulse 1.15s ease-in-out infinite}
@keyframes sisacPulse{0%,100%{transform:scale(.75);opacity:.35}50%{transform:scale(1);opacity:1}}
