/* ============================================================
   COP OXILENO — Estilos principales
   Paleta inspirada en oxileno.com: azul marino + teal + blanco
   ============================================================ */
*{box-sizing:border-box;margin:0;padding:0}
:root{
  --navy:#0a2240;
  --blue:#1565c0;
  --blue-lt:#1e88e5;
  --teal:#00838f;
  --green:#2e7d32;
  --amber:#f57f17;
  --red:#c62828;
  --gray-50:#f0f4f8;
  --gray-100:#e0e7ef;
  --gray-400:#90a4b7;
  --gray-600:#607d8b;
  --sidebar-w:224px;
}
body{font-family:system-ui,-apple-system,sans-serif;background:var(--gray-50);color:#1a2332;font-size:14px;line-height:1.5;min-height:100vh}
a{color:var(--blue);text-decoration:none}

/* ─── LAYOUT ─── */
.layout{display:flex;min-height:100vh}
.sidebar{width:var(--sidebar-w);background:var(--navy);display:flex;flex-direction:column;flex-shrink:0;position:sticky;top:0;height:100vh;overflow-y:auto}
.main{flex:1;display:flex;flex-direction:column;min-height:100vh;overflow:hidden}

/* ─── SIDEBAR ─── */
.sidebar-header{padding:18px 16px 14px;border-bottom:1px solid rgba(255,255,255,.1)}
.sidebar-logo{display:flex;align-items:center;gap:10px}
.sidebar-logo-icon{width:38px;height:38px;background:rgba(255,255,255,.12);border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sidebar-logo-icon svg{width:24px;height:24px}
.sidebar-logo-text h2{font-size:15px;font-weight:700;color:#fff;letter-spacing:.5px}
.sidebar-logo-text p{font-size:9px;color:rgba(255,255,255,.45);letter-spacing:2px;margin-top:1px}
.sidebar-user{padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.08)}
.user-badge{display:flex;align-items:center;gap:9px}
.user-avatar{width:32px;height:32px;border-radius:50%;background:var(--teal);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;flex-shrink:0}
.user-info p{font-size:12px;font-weight:600;color:#fff;line-height:1.3}
.role-badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:9px;font-weight:700;letter-spacing:.6px;margin-top:3px}
.role-admin{background:rgba(249,168,37,.2);color:#fbc02d}
.role-gte-admin{background:rgba(0,131,143,.3);color:#4dd0e1}
.role-gte-op{background:rgba(46,125,50,.3);color:#81c784}
.role-operador{background:rgba(255,255,255,.1);color:rgba(255,255,255,.7)}
.nav{flex:1;padding:10px 0;overflow-y:auto}
.nav-section{padding:14px 16px 5px;font-size:9px;letter-spacing:2px;color:rgba(255,255,255,.3);font-weight:700}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 16px;color:rgba(255,255,255,.62);text-decoration:none;font-size:13px;font-weight:500;border-left:3px solid transparent;transition:all .15s}
.nav-item:hover{background:rgba(255,255,255,.07);color:#fff}
.nav-item.active{background:rgba(255,255,255,.1);color:#fff;border-left-color:var(--teal)}
.nav-item svg{flex-shrink:0;opacity:.8}
.nav-item.active svg{opacity:1}
.sidebar-footer{padding:12px 16px;border-top:1px solid rgba(255,255,255,.08)}
.btn-logout{width:100%;padding:8px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);border-radius:6px;color:rgba(255,255,255,.7);font-size:12px;cursor:pointer;transition:all .15s}
.btn-logout:hover{background:rgba(255,255,255,.14);color:#fff}

/* ─── TOPBAR ─── */
.topbar{background:#fff;padding:14px 22px;border-bottom:1px solid var(--gray-100);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.topbar h3{font-size:16px;font-weight:600;color:var(--navy)}
.topbar-meta{font-size:12px;color:var(--gray-600)}

/* ─── CONTENT ─── */
.content{flex:1;padding:22px;overflow-y:auto}

/* ─── CARDS / STATS ─── */
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}
@media(max-width:900px){.stats-grid{grid-template-columns:repeat(2,1fr)}}
.stat-card{background:#fff;border-radius:10px;padding:16px;border:1px solid var(--gray-100)}
.stat-icon{width:38px;height:38px;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:10px}
.stat-label{font-size:11px;color:var(--gray-600);font-weight:600;letter-spacing:.5px;margin-bottom:4px}
.stat-value{font-size:28px;font-weight:700;color:var(--navy);line-height:1}
.stat-unit{font-size:14px;font-weight:500;color:var(--gray-600)}
.stat-sub{font-size:11px;color:var(--gray-600);margin-top:4px}
.icon-blue{background:#e3f2fd}
.icon-teal{background:#e0f7fa}
.icon-green{background:#e8f5e9}
.icon-amber{background:#fff8e1}
.card{background:#fff;border-radius:10px;border:1px solid var(--gray-100);padding:18px;margin-bottom:18px}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}
@media(max-width:800px){.two-col{grid-template-columns:1fr}}

/* ─── SECTION TITLE ─── */
.section-title{font-size:14px;font-weight:600;color:var(--navy);margin-bottom:14px;display:flex;align-items:center;justify-content:space-between}
.section-title span{font-size:12px;font-weight:400;color:var(--gray-600)}

/* ─── TABLE ─── */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse}
th{font-size:11px;font-weight:700;color:var(--gray-600);letter-spacing:.5px;padding:9px 11px;text-align:left;border-bottom:2px solid var(--gray-100);white-space:nowrap}
td{padding:10px 11px;border-bottom:1px solid #f5f7fa;font-size:13px;color:var(--navy);vertical-align:middle}
tr:hover td{background:#fafbfc}
tr:last-child td{border-bottom:0}

/* ─── BADGES ─── */
.badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap}
.badge-green{background:#e8f5e9;color:#2e7d32}
.badge-blue{background:#e3f2fd;color:#1565c0}
.badge-amber{background:#fff8e1;color:#e65100}
.badge-red{background:#ffebee;color:#c62828}
.badge-gray{background:var(--gray-50);color:var(--gray-600)}
.badge-teal{background:#e0f7fa;color:#00695c}
.badge-navy{background:#e8edf2;color:var(--navy)}

/* ─── CYLINDERS GRID ─── */
.cylinders-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:8px;margin-top:8px}
.cylinder{border-radius:8px;padding:10px 7px;text-align:center;border:1px solid transparent;transition:transform .15s,box-shadow .15s;cursor:default}
.cylinder:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.08)}
.cyl-plant{background:#e3f2fd;border-color:#bbdefb}
.cyl-client{background:#e8f5e9;border-color:#c8e6c9}
.cyl-transit{background:#fff8e1;border-color:#fff176}
.cyl-maint{background:#ffebee;border-color:#ffcdd2}
.cyl-id{font-size:11px;font-weight:700;color:var(--navy)}
.cyl-loc{font-size:10px;color:var(--gray-600);margin-top:2px}
.cyl-pct{font-size:12px;font-weight:700;margin-top:3px}
.cyl-plant .cyl-pct{color:var(--blue)}
.cyl-client .cyl-pct{color:var(--green)}
.cyl-transit .cyl-pct{color:var(--amber)}
.cyl-maint .cyl-pct{color:var(--red)}

/* ─── BAR PROGRESS ─── */
.prog-wrap{display:flex;align-items:center;gap:7px}
.prog-bar{flex:1;height:6px;background:var(--gray-100);border-radius:3px;overflow:hidden}
.prog-fill{height:6px;border-radius:3px}
.prog-fill-blue{background:var(--blue)}
.prog-fill-amber{background:var(--amber)}
.prog-pct{font-size:11px;font-weight:600;color:var(--gray-600);min-width:30px;text-align:right}

/* ─── TABS ─── */
.tabs{display:flex;gap:2px;margin-bottom:18px;border-bottom:2px solid var(--gray-100)}
.tab{padding:9px 18px;font-size:13px;font-weight:500;color:var(--gray-600);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;text-decoration:none}
.tab.active{color:var(--blue);border-bottom-color:var(--blue)}
.tab:hover{color:var(--navy)}

/* ─── FORMS ─── */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-field{display:flex;flex-direction:column;gap:5px}
.form-field label{font-size:12px;font-weight:600;color:var(--gray-600);letter-spacing:.3px}
.form-field input,.form-field select,.form-field textarea{padding:9px 12px;border:1px solid var(--gray-100);border-radius:7px;font-size:13px;color:var(--navy);outline:none;transition:border .2s;background:#fff}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(21,101,192,.1)}
.form-actions{display:flex;gap:10px;margin-top:6px}
.btn{padding:9px 18px;border-radius:7px;font-size:13px;font-weight:600;cursor:pointer;border:none;transition:all .15s}
.btn-primary{background:var(--navy);color:#fff}
.btn-primary:hover{background:var(--blue)}
.btn-secondary{background:var(--gray-50);color:var(--navy);border:1px solid var(--gray-100)}
.btn-secondary:hover{background:var(--gray-100)}
.btn-danger{background:#ffebee;color:var(--red);border:1px solid #ffcdd2}
.btn-sm{padding:5px 12px;font-size:12px}

/* ─── PERMISOS MATRIX ─── */
.perm-table td:not(:first-child){text-align:center}
.perm-yes{color:var(--green);font-weight:700}
.perm-no{color:var(--gray-100)}
.perm-toggle{cursor:pointer;user-select:none;font-size:16px}

/* ─── ALERT ─── */
.alert{padding:12px 16px;border-radius:8px;font-size:13px;margin-bottom:16px;display:flex;align-items:center;gap:10px}
.alert-info{background:#e3f2fd;color:#1565c0;border-left:4px solid #1565c0}
.alert-success{background:#e8f5e9;color:var(--green);border-left:4px solid var(--green)}
.alert-danger{background:#ffebee;color:var(--red);border-left:4px solid var(--red)}
.alert-warning{background:#fff8e1;color:#e65100;border-left:4px solid #e65100}

/* ─── MODAL ─── */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;align-items:center;justify-content:center}
.modal-overlay.open{display:flex}
.modal{background:#fff;border-radius:12px;padding:24px;width:100%;max-width:520px;max-height:90vh;overflow-y:auto;position:relative}
.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.modal-header h4{font-size:16px;font-weight:600;color:var(--navy)}
.modal-close{background:none;border:none;cursor:pointer;color:var(--gray-600);font-size:20px;line-height:1}
.modal-close:hover{color:var(--navy)}

/* ─── LOGIN ─── */
.login-wrap{min-height:100vh;background:linear-gradient(135deg,var(--navy) 0%,var(--blue) 55%,var(--teal) 100%);display:flex;align-items:center;justify-content:center;padding:20px}
.login-card{background:#fff;border-radius:16px;padding:40px 36px;width:100%;max-width:380px;box-shadow:0 24px 64px rgba(0,0,0,.3)}
.login-logo{text-align:center;margin-bottom:28px}
.login-logo-ring{width:68px;height:68px;border-radius:50%;background:var(--navy);display:flex;align-items:center;justify-content:center;margin:0 auto 12px}
.login-logo-ring svg{width:38px;height:38px}
.login-logo h1{font-size:22px;font-weight:800;color:var(--navy);letter-spacing:1.5px}
.login-logo p{font-size:10px;color:var(--gray-600);letter-spacing:2.5px;margin-top:3px}
.login-field{margin-bottom:14px}
.login-field label{display:block;font-size:11px;font-weight:700;color:var(--gray-600);letter-spacing:.5px;margin-bottom:6px}
.login-field input{width:100%;padding:11px 13px;border:1.5px solid var(--gray-100);border-radius:8px;font-size:14px;color:var(--navy);outline:none;transition:border .2s}
.login-field input:focus{border-color:var(--blue)}
.btn-login{width:100%;padding:13px;background:var(--navy);color:#fff;border:none;border-radius:8px;font-size:15px;font-weight:700;cursor:pointer;transition:background .2s;letter-spacing:.5px;margin-top:4px}
.btn-login:hover{background:var(--blue)}
.login-error{color:var(--red);font-size:12px;text-align:center;margin-top:10px;display:none}
.login-copy{text-align:center;margin-top:20px;font-size:11px;color:var(--gray-600)}
