:root {
    --azul: #0b3d91;
    --azul-oscuro: #082a66;
    --azul-claro: #e8f0ff;
    --acento: #ff7a1a;
    --gris: #6b7280;
    --gris-claro: #f4f6fb;
    --borde: #e2e6ee;
    --ok: #16a34a;
    --peligro: #dc2626;
}

* { box-sizing: border-box; }

body {
    font-family: "Segoe UI", Roboto, Arial, sans-serif;
    background: var(--gris-claro);
    color: #1f2430;
    margin: 0;
}

a { color: var(--azul); text-decoration: none; }

/* ---------- Landing / index.php ---------- */
.landing-hero {
    background: linear-gradient(135deg, var(--azul) 0%, var(--azul-oscuro) 100%);
    color: #fff;
    padding: 90px 8vw 120px;
    position: relative;
    overflow: hidden;
}
.landing-hero::after {
    content: "";
    position: absolute; right: -100px; top: -100px;
    width: 400px; height: 400px; border-radius: 50%;
    background: rgba(255,122,26,0.15);
}
.landing-nav { display:flex; justify-content:space-between; align-items:center; padding: 24px 8vw; }
.landing-nav .brand { font-size: 24px; font-weight: 800; letter-spacing: 1px; color:#fff; }
.landing-nav .brand span { color: var(--acento); }
.btn-login-nav {
    background:#fff; color: var(--azul); padding: 10px 22px; border-radius: 8px;
    font-weight: 600; border: none; cursor:pointer;
}
.landing-hero h1 { font-size: 48px; max-width: 620px; line-height: 1.15; margin-bottom: 18px; }
.landing-hero p { font-size: 18px; max-width: 560px; opacity: .9; }
.landing-cta { margin-top: 30px; display:flex; gap:14px; }
.btn-primary {
    background: var(--acento); color: #fff; padding: 14px 28px; border-radius: 10px;
    font-weight: 700; border:none; cursor:pointer; font-size:16px;
}
.btn-outline {
    background: transparent; color:#fff; border: 2px solid rgba(255,255,255,.6);
    padding: 12px 26px; border-radius: 10px; font-weight:600; cursor:pointer; font-size:16px;
}
.features { display:grid; grid-template-columns: repeat(3,1fr); gap: 24px; padding: 60px 8vw; }
.feature-card { background:#fff; border-radius:14px; padding:28px; box-shadow: 0 6px 24px rgba(11,61,145,.08); }
.feature-card .ico { font-size: 30px; margin-bottom: 12px; }
.feature-card h3 { margin: 0 0 8px; color: var(--azul-oscuro); }
.feature-card p { color: var(--gris); font-size: 14.5px; margin:0; }

/* ---------- Login ---------- */
.login-wrap {
    min-height: 100vh; display:flex; align-items:center; justify-content:center;
    background: linear-gradient(135deg, var(--azul) 0%, var(--azul-oscuro) 100%);
}
.login-card {
    background:#fff; width: 380px; padding: 40px 32px; border-radius: 16px;
    box-shadow: 0 20px 60px rgba(0,0,0,.25);
}
.login-card h2 { text-align:center; color: var(--azul-oscuro); margin-bottom: 4px; }
.login-card p.sub { text-align:center; color: var(--gris); margin-top:0; margin-bottom: 24px; font-size:14px;}
.login-card label { font-size: 13px; font-weight:600; color:#333; }
.login-card input {
    width:100%; padding: 11px 12px; margin: 6px 0 16px; border:1px solid var(--borde);
    border-radius: 8px; font-size:14px;
}
.login-card button {
    width:100%; padding: 12px; background: var(--azul); color:#fff; border:none;
    border-radius: 8px; font-weight:700; cursor:pointer; font-size:15px;
}
.login-error { background:#fde8e8; color:var(--peligro); padding:10px 12px; border-radius:8px; font-size:13.5px; margin-bottom:14px; }
.login-back { display:block; text-align:center; margin-top:16px; font-size:13px; color: var(--gris); }

/* ---------- Layout dashboard ---------- */
.app-shell { display:flex; min-height:100vh; }
.sidebar {
    width: 250px; background: var(--azul-oscuro); color:#fff; flex-shrink:0;
    display:flex; flex-direction:column; padding: 20px 0;
}
.sidebar .brand { font-size:20px; font-weight:800; padding: 0 22px 20px; }
.sidebar .brand span { color: var(--acento); }
.sidebar nav { flex:1; }
.sidebar a.item {
    display:flex; align-items:center; gap:10px; padding: 13px 22px; color: #cdd7f0;
    font-size: 14.5px; border-left: 3px solid transparent;
}
.sidebar a.item:hover { background: rgba(255,255,255,.06); color:#fff; }
.sidebar a.item.active { background: rgba(255,255,255,.1); color:#fff; border-left-color: var(--acento); font-weight:600; }
.sidebar .userbox { padding: 16px 22px; border-top: 1px solid rgba(255,255,255,.12); font-size:13px; }
.sidebar .userbox .rol { color: var(--acento); font-weight:700; text-transform:uppercase; font-size:11px; }
.sidebar .logout { display:block; margin-top:8px; color:#cdd7f0; }

.main { flex:1; padding: 28px 34px; max-width: 100%; overflow-x:auto; }
.main h1 { font-size: 22px; color: var(--azul-oscuro); margin: 0 0 22px; }

.card { background:#fff; border-radius: 12px; padding: 22px; box-shadow: 0 3px 14px rgba(20,30,60,.06); margin-bottom: 22px; }
.card h2 { font-size:16px; margin:0 0 16px; color:#26314d; }

.stat-grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(190px,1fr)); gap:18px; margin-bottom: 22px; }
.stat-card { background:#fff; border-radius:12px; padding:20px; box-shadow: 0 3px 14px rgba(20,30,60,.06); }
.stat-card .num { font-size: 28px; font-weight:800; color: var(--azul); }
.stat-card .label { color: var(--gris); font-size:13px; margin-top:4px; }

.toolbar { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; gap:12px; flex-wrap:wrap; }
.toolbar h1 { margin:0; }

.form-grid { display:grid; grid-template-columns: repeat(2, 1fr); gap: 14px 18px; }
.form-grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
.field label { font-size: 13px; font-weight:600; color:#333; display:block; margin-bottom:5px; }
.field input, .field select, .field textarea {
    width:100%; padding: 10px 11px; border:1px solid var(--borde); border-radius:8px; font-size:14px; background:#fff;
}
.field small.hint { color: var(--gris); font-size:12px; }

button, .btn { cursor:pointer; border:none; border-radius:8px; font-weight:600; font-size:13.5px; padding:9px 16px; }
.btn-blue { background: var(--azul); color:#fff; }
.btn-orange { background: var(--acento); color:#fff; }
.btn-ghost { background: var(--gris-claro); color:#333; }
.btn-danger { background:#fde8e8; color: var(--peligro); }
.btn-sm { padding:6px 11px; font-size:12.5px; }

table.grid { width:100%; border-collapse: collapse; font-size: 13.5px; }
table.grid th { text-align:left; background: var(--azul-claro); color: var(--azul-oscuro); padding: 10px 12px; font-size:12.5px; text-transform:uppercase; letter-spacing:.3px;}
table.grid td { padding: 10px 12px; border-bottom: 1px solid var(--borde); vertical-align:middle; }
table.grid tr:hover td { background: #fafcff; }

.badge { padding:3px 9px; border-radius:20px; font-size:11.5px; font-weight:700; }
.badge.ok { background:#e7f8ee; color: var(--ok); }
.badge.bloq { background:#fde8e8; color: var(--peligro); }

.switch { position:relative; display:inline-block; width:40px; height:22px; }
.switch input { opacity:0; width:0; height:0; }
.slider-tog { position:absolute; cursor:pointer; inset:0; background:#d5dbe6; border-radius:22px; transition:.2s; }
.slider-tog:before { content:""; position:absolute; height:16px; width:16px; left:3px; bottom:3px; background:#fff; border-radius:50%; transition:.2s; }
.switch input:checked + .slider-tog { background: var(--ok); }
.switch input:checked + .slider-tog:before { transform: translateX(18px); }

.modal-overlay {
    position: fixed; inset:0; background: rgba(15,20,35,.45); display:none;
    align-items:center; justify-content:center; z-index: 999;
}
.modal-overlay.show { display:flex; }
.modal-box { background:#fff; border-radius:14px; width:420px; max-width:92vw; padding: 26px; text-align:center; }
.modal-box .ico-ok { font-size:44px; color: var(--ok); }
.modal-box h3 { margin: 10px 0 6px; }
.modal-box p { color: var(--gris); margin:0 0 20px; font-size:14px;}

.toast { position: fixed; top:20px; right:20px; background:#1f2430; color:#fff; padding:12px 18px; border-radius:10px; font-size:13.5px; z-index:1000; box-shadow:0 8px 24px rgba(0,0,0,.2); }
.toast.err { background: var(--peligro); }
.toast.ok { background: var(--ok); }

.autocomplete-box { position:relative; }
.autocomplete-list { position:absolute; top:100%; left:0; right:0; background:#fff; border:1px solid var(--borde); border-radius:8px; max-height:220px; overflow:auto; z-index:50; box-shadow:0 8px 20px rgba(0,0,0,.1); }
.autocomplete-list div { padding:9px 12px; font-size:13.5px; cursor:pointer; }
.autocomplete-list div:hover { background: var(--azul-claro); }

.locked { opacity:.55; pointer-events:none; }

@media (max-width: 900px) {
    .sidebar { position: fixed; left:-260px; top:0; bottom:0; z-index: 200; transition:.2s; }
    .sidebar.open { left:0; }
    .main { padding: 18px; }
    .form-grid, .form-grid.cols-3 { grid-template-columns: 1fr; }
    .features { grid-template-columns: 1fr; }
}
