*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,Helvetica,sans-serif;background:#f7f8fb;color:#0f172a}.app-shell{min-height:100vh}
.sidebar{
    position:fixed;
    left:0;
    top:0;
    bottom:0;
    width:260px;

    background:#fff;
    border-right:1px solid #e5e7eb;

    padding:24px 18px;

    display:flex;
    flex-direction:column;

    z-index:100;

    overflow-y:auto;
    overflow-x:hidden;

    scrollbar-width:thin;
    scrollbar-color:#22c55e #f1f5f9;
}
.brand{display:flex;align-items:center;gap:10px;margin-bottom:28px}.brand-icon{width:34px;height:34px;border-radius:10px;background:#16a34a;color:white;display:grid;place-items:center;font-weight:900}.brand-name{font-size:22px;font-weight:900;letter-spacing:-.04em}.brand-badge{margin-left:auto;background:#dcfce7;color:#15803d;border-radius:9px;padding:6px 9px;font-size:12px;font-weight:800}.side-nav{display:flex;flex-direction:column;gap:4px}.nav-title{font-size:12px;color:#6b7280;margin:22px 8px 10px;border-top:1px solid #e5e7eb;padding-top:18px}.nav-item{display:flex;align-items:center;gap:13px;padding:12px 14px;border-radius:10px;color:#111827;text-decoration:none;font-weight:600}.nav-item span{width:22px;color:#111827}.nav-item.active,.nav-item:hover{background:#eef9ef;color:#16a34a}.nav-item.active span,.nav-item:hover span{color:#16a34a}.logout-form{margin-top:auto;border-top:1px solid #e5e7eb;padding-top:18px}.logout-form button{border:0;background:transparent;font-size:15px;cursor:pointer;color:#111827}.main{margin-left:260px;padding:0 16px 28px}.topbar{height:70px;display:flex;align-items:center;justify-content:space-between}.menu-btn,.icon-btn{border:0;background:white;border-radius:12px;width:42px;height:42px;font-size:22px;cursor:pointer}.top-actions{display:flex;align-items:center;gap:18px}.notify{position:relative}.notify span{position:absolute;right:3px;top:3px;background:#ef4444;color:white;font-size:10px;border-radius:999px;padding:2px 5px}.user-pill{display:flex;gap:12px;align-items:center}.avatar{width:42px;height:42px;border-radius:50%;background:#16a34a;color:white;display:grid;place-items:center;font-weight:800}.user-pill small{display:block;color:#64748b}.page-title{display:flex;align-items:center;justify-content:space-between;margin:0 8px 14px}.page-title h1{margin:0;font-size:24px}.page-title p{margin:8px 0;color:#475569}.date-chip{background:white;border:1px solid #e5e7eb;border-radius:12px;padding:13px 18px;font-weight:700}.hero-panel{position:relative;margin:0 8px 12px;padding:30px;border-radius:14px;background:radial-gradient(circle at 30% 15%,#1d2939,#090b10 60%);color:white;min-height:270px;box-shadow:0 12px 30px rgba(15,23,42,.14)}.system-row{display:flex;gap:16px;align-items:center}.system-logo{width:60px;height:60px;border-radius:14px;background:rgba(34,197,94,.18);display:grid;place-items:center;color:#22c55e;font-size:34px}.system-row h2{margin:0;font-size:20px}.system-row h2 span{font-size:12px;color:#22c55e;background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.35);border-radius:999px;padding:6px 12px;margin-left:8px}.system-row p{color:#e5e7eb}.service-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.service-tags span{border:1px solid rgba(34,197,94,.35);background:rgba(34,197,94,.13);color:#22c55e;border-radius:8px;padding:8px 12px;font-weight:800;font-size:13px}.hero-right{position:absolute;right:28px;top:62px;display:grid;grid-template-columns:220px 1fr;gap:12px;width:50%}.ip-card,.mini-dark{position:relative;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);border-radius:12px;padding:15px}.ip-card small,.mini-dark small{display:block;color:#cbd5e1;font-weight:800;letter-spacing:.08em}.ip-card strong{display:block;color:#22c55e;margin-top:8px;font-family:monospace;font-size:17px}.ip-card.purple strong{color:#d8b4fe}.ip-card em{position:absolute;right:15px;top:18px;color:#cbd5e1}.mini-dark strong{display:block;font-size:20px;margin-top:10px}.mini-dark strong b{font-size:13px;font-weight:500}.mini-dark p{margin:5px 0 0}.green{color:#22c55e!important}.spark,.tiny-line{display:block;height:18px;margin-top:8px;background:linear-gradient(135deg,transparent 15%,#22c55e 16%,transparent 24%,#22c55e 25%,transparent 32%,#22c55e 33%,transparent 42%);opacity:.85}.live-line{position:absolute;left:30px;right:30px;bottom:18px;border-top:1px solid rgba(255,255,255,.12);padding-top:14px;color:#e5e7eb}.live-line span{display:inline-block;width:10px;height:10px;border-radius:50%;background:#22c55e;box-shadow:0 0 15px #22c55e;margin-right:8px}.live-line b{float:right;font-weight:500}.metric-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:0 8px 12px}.metric-card.dark{background:linear-gradient(145deg,#151922,#090b0f);color:white;border-radius:10px;padding:17px;box-shadow:0 8px 18px rgba(0,0,0,.12)}.metric-card div:first-child{display:flex;justify-content:space-between}.metric-card small{font-weight:900;color:#cbd5e1;letter-spacing:.08em}.metric-card em{font-style:normal;color:#22c55e;font-weight:800}.metric-card strong{display:block;font-size:28px;margin:10px 0}.metric-card p{margin:9px 0 0;color:#e5e7eb}.bar{height:5px;border-radius:999px;background:rgba(255,255,255,.1);overflow:hidden}.bar span{display:block;height:100%;background:#22c55e}.bar.amber span{background:#f59e0b}.chips-row{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin:0 8px 12px}.chips-row div{background:white;border:1px solid #e5e7eb;border-radius:10px;padding:12px;text-align:center;font-weight:700}.chips-row div::first-letter{color:#16a34a}.two-col{display:grid;grid-template-columns:1.45fr 1fr;gap:12px;margin:0 8px 12px}.white-card{background:white;border:1px solid #e5e7eb;border-radius:12px;padding:18px;box-shadow:0 7px 18px rgba(15,23,42,.04)}.white-card h2{margin:0 0 18px;font-size:18px}.white-card h2 span{display:inline-grid;place-items:center;margin-right:10px;width:36px;height:36px;border-radius:9px;background:#ecfdf5;color:#16a34a}.timeline{display:grid;grid-template-columns:repeat(5,1fr);position:relative;margin:28px 20px}.timeline:before{content:"";position:absolute;left:7%;right:7%;top:8px;height:2px;background:#d1d5db}.timeline div{text-align:center;position:relative}.timeline i{display:block;width:16px;height:16px;border-radius:50%;background:white;border:2px solid #cbd5e1;margin:0 auto 12px;position:relative;z-index:1}.timeline .done i{background:#16a34a;border-color:#16a34a;box-shadow:0 0 0 4px #dcfce7}.timeline .active-step i{background:#22d3ee;border-color:#0891b2}.timeline b,.timeline small{display:block}.timeline small{color:#6b7280;margin-top:5px}.timeline .done small{color:#16a34a}.timeline .active-step small{color:#0891b2}.status-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;border-top:1px solid #e5e7eb;padding-top:16px}.status-grid div{border:1px solid #e5e7eb;border-radius:9px;padding:14px}.status-grid small{display:block;color:#64748b}.status-grid strong{display:block;margin-top:8px;font-size:18px}.status-grid div:first-child strong{color:#16a34a}.progress{height:7px;background:#e5e7eb;border-radius:999px;margin-top:10px}.progress span{display:block;height:100%;background:#16a34a;border-radius:999px}.activity{display:grid;grid-template-columns:42px 1fr auto 8px;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid #e5e7eb}.activity i{width:36px;height:36px;border-radius:9px;background:#ecfdf5;color:#16a34a;display:grid;place-items:center}.activity b,.activity small{display:block}.activity small,.activity em{color:#64748b;font-style:normal}.activity span{width:8px;height:8px;background:#16a34a;border-radius:50%}.outline-btn{width:100%;border:1px solid #d1d5db;background:white;border-radius:8px;padding:11px;font-weight:800;margin-top:12px}.table-card{margin:0 8px}table{width:100%;border-collapse:collapse;background:white}th,td{text-align:left;padding:10px;border-bottom:1px solid #e5e7eb}th{color:#64748b;font-size:13px}.status-ok{color:#16a34a;font-weight:700}.login{display:grid;place-items:center;min-height:100vh}.login-card{width:380px;background:white;border:1px solid #e5e7eb;border-radius:16px;padding:25px;box-shadow:0 18px 50px rgba(15,23,42,.12)}input,select,textarea{width:100%;padding:11px;border:1px solid #d1d5db;border-radius:9px;margin-top:5px}label{display:block;margin-bottom:12px}.btn,.primary,button[type=submit]{background:#16a34a;color:white;border:none;padding:10px 14px;border-radius:8px;text-decoration:none;cursor:pointer;font-weight:800}.alert{padding:12px;border-radius:8px;margin:12px 0}.success{background:#dcfce7;color:#166534}.error{background:#fee2e2;color:#991b1b}.form{max-width:760px}.sale-row{display:grid;grid-template-columns:1fr 120px;gap:10px;margin-bottom:8px}@media(max-width:1100px){.hero-right{position:static;width:auto;margin-top:18px}.metric-grid{grid-template-columns:repeat(2,1fr)}.chips-row{grid-template-columns:repeat(2,1fr)}.two-col{grid-template-columns:1fr}}@media(max-width:800px){.sidebar{position:static;width:auto}.main{margin-left:0}.metric-grid,.chips-row,.status-grid{grid-template-columns:1fr}.hero-panel{padding:20px}.live-line b{float:none;display:block;margin-top:8px}}

/* ===== Scroll del menú lateral ===== */

.sidebar::-webkit-scrollbar{
    width:8px;
}

.sidebar::-webkit-scrollbar-track{
    background:#f1f5f9;
    border-radius:20px;
}

.sidebar::-webkit-scrollbar-thumb{
    background:linear-gradient(#22c55e,#16a34a);
    border-radius:20px;
}

.sidebar::-webkit-scrollbar-thumb:hover{
    background:#15803d;
}

/*================ LOGIN =================*/

.login-layout{

    display:grid;
    grid-template-columns:55% 45%;

    min-height:100vh;

    background:#eef5fb;

}

.login-banner{

    position:relative;

    overflow:hidden;

    background:
        linear-gradient(rgba(235,250,255,.85),
        rgba(230,255,245,.88)),
        url('/img/login-bg.jpg');

    background-size:cover;

    background-position:center;

}

.login-banner .overlay{

    position:absolute;
    inset:0;

    background:

    radial-gradient(circle at top left,
    rgba(20,184,166,.18),
    transparent 45%),

    radial-gradient(circle at bottom right,
    rgba(37,99,235,.18),
    transparent 45%);
}

.banner-content{

    position:relative;

    z-index:5;

    height:100%;

    padding:70px;

    display:flex;

    flex-direction:column;

    justify-content:center;

}

.login-logo{

    width:360px;

    margin-bottom:25px;

}

.banner-content .line{

    width:180px;

    height:4px;

    background:linear-gradient(90deg,#14b8a6,#2563eb);

    margin-bottom:30px;

    border-radius:20px;

}

.banner-content h1{

    font-size:58px;

    line-height:1.05;

    color:#0f172a;

    margin-bottom:20px;

}

.banner-content h1 span{

    display:block;

    color:#14b8a6;

}

.banner-content p{

    font-size:22px;

    color:#334155;

    max-width:520px;

    line-height:1.6;

}

.features{

    margin-top:55px;

    display:grid;

    gap:24px;

}

.features>div{

    display:flex;

    gap:18px;

    align-items:center;

}

.features i{

    width:58px;

    height:58px;

    border-radius:50%;

    display:flex;

    justify-content:center;

    align-items:center;

    background:white;

    font-size:26px;

    box-shadow:0 8px 24px rgba(0,0,0,.08);

}

.features strong{

    display:block;

    color:#059669;

    font-size:22px;

}

.features small{

    color:#475569;

    font-size:16px;

}

.login-form-panel{

    display:flex;

    justify-content:center;

    align-items:center;

    padding:60px;

}

.login-card{

    width:100%;

    max-width:470px;

    background:white;

    padding:50px;

    border-radius:24px;

    box-shadow:0 20px 60px rgba(15,23,42,.10);

}

.login-card h2{

    font-size:40px;

    color:#0f172a;

}

.login-card p{

    margin:12px 0 30px;

    color:#64748b;

}

.login-card label{

    display:block;

    margin-bottom:18px;

    font-weight:600;

}

.login-card input{

    width:100%;

    margin-top:8px;

}

.login-card .primary{

    width:100%;

    margin-top:20px;

    padding:16px;

    border:none;

    border-radius:14px;

    background:linear-gradient(90deg,#14b8a6,#2563eb);

    color:white;

    font-size:18px;

    font-weight:700;

    cursor:pointer;

}

@media(max-width:980px){

.login-layout{

grid-template-columns:1fr;

}

.login-banner{

display:none;

}

}

