/* ═══════════════════════════════════════════════════════════════════════════
   SGE — Sistema de Gestión de Equipamiento Científico
   Theme: Teal-Green Scientific
   ═══════════════════════════════════════════════════════════════════════════ */
:root {
  --primary:  #0f766e;
  --primary-dark: #0d5f59;
  --accent:   #14b8a6;
  --accent-light: #ccfbf1;
  --bg:       #f0fdfa;
  --surface:  #ffffff;
  --text:     #1e293b;
  --muted:    #64748b;
  --border:   #e2e8f0;
  --danger:   #ef4444;
  --warning:  #f59e0b;
  --success:  #10b981;
  --info:     #0ea5e9;
  --purple:   #8b5cf6;
  --radius:   12px;
  --shadow:   0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);
  --shadow-md:0 4px 12px rgba(0,0,0,.08);
}

*{margin:0;padding:0;box-sizing:border-box;}
html{font-size:15px;scroll-behavior:smooth;}
body{font-family:'Inter',system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;}
a{color:var(--primary);text-decoration:none;}

/* ── NAVBAR ───────────────────────────────────────────────────────────────── */
.navbar{background:linear-gradient(135deg,var(--primary),#0d9488);color:#fff;padding:.75rem 1.5rem;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100;box-shadow:0 2px 8px rgba(0,0,0,.15);}
.navbar-brand{font-size:1.15rem;font-weight:800;color:#fff;display:flex;align-items:center;gap:.5rem;}
.navbar-brand i{font-size:1.3rem;}
.nav-links{display:flex;gap:.3rem;align-items:center;}
.nav-links a{color:rgba(255,255,255,.85);padding:.4rem .7rem;border-radius:8px;font-size:.82rem;font-weight:500;transition:all .2s;}
.nav-links a:hover,.nav-links a.active{background:rgba(255,255,255,.15);color:#fff;}
.nav-user{display:flex;align-items:center;gap:.6rem;color:rgba(255,255,255,.9);font-size:.82rem;}
.nav-role{background:rgba(255,255,255,.2);padding:.15rem .5rem;border-radius:6px;font-size:.7rem;font-weight:700;text-transform:uppercase;}
.hamburger{display:none;background:none;border:none;color:#fff;font-size:1.4rem;cursor:pointer;}

/* ── LAYOUT ───────────────────────────────────────────────────────────────── */
.container{max-width:1300px;margin:0 auto;padding:1.5rem;}
.dash-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;flex-wrap:wrap;gap:.8rem;}

/* ── CARDS ────────────────────────────────────────────────────────────────── */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow);margin-bottom:1rem;}
.card h2{font-size:1.05rem;font-weight:700;color:var(--primary);margin-bottom:1rem;display:flex;align-items:center;gap:.5rem;}
.card h3{font-size:.9rem;font-weight:700;color:var(--text);margin-bottom:.6rem;display:flex;align-items:center;gap:.4rem;}
.card-sm{padding:1rem;}

/* ── KPI CARDS ────────────────────────────────────────────────────────────── */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-bottom:1.5rem;}
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.2rem;box-shadow:var(--shadow);position:relative;overflow:hidden;}
.kpi::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;}
.kpi-teal::before{background:var(--accent);}
.kpi-green::before{background:var(--success);}
.kpi-orange::before{background:var(--warning);}
.kpi-red::before{background:var(--danger);}
.kpi-blue::before{background:var(--info);}
.kpi-purple::before{background:var(--purple);}
.kpi-value{font-size:1.8rem;font-weight:800;line-height:1;margin-bottom:.2rem;}
.kpi-label{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-weight:600;}
.kpi-sub{font-size:.72rem;color:var(--muted);margin-top:.3rem;}

/* ── BUTTONS ──────────────────────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.1rem;border:none;border-radius:8px;font-size:.82rem;font-weight:600;cursor:pointer;transition:all .2s;text-decoration:none;line-height:1.2;}
.btn-primary{background:var(--primary);color:#fff;}.btn-primary:hover{background:var(--primary-dark);}
.btn-accent{background:var(--accent);color:#fff;}.btn-accent:hover{background:#0d9488;}
.btn-ghost{background:transparent;color:var(--primary);border:1px solid var(--border);}.btn-ghost:hover{background:var(--bg);}
.btn-danger{background:var(--danger);color:#fff;}.btn-danger:hover{background:#dc2626;}
.btn-warning{background:var(--warning);color:#fff;}.btn-warning:hover{background:#d97706;}
.btn-info{background:var(--info);color:#fff;}.btn-info:hover{background:#0284c7;}
.btn-sm{padding:.35rem .7rem;font-size:.78rem;}

/* ── FORMS ────────────────────────────────────────────────────────────────── */
.form-group{margin-bottom:1rem;}
.form-group label{display:block;font-size:.8rem;font-weight:600;color:var(--text);margin-bottom:.3rem;}
.form-group label.req::after{content:' *';color:var(--danger);}
.form-control{width:100%;padding:.55rem .75rem;border:1px solid var(--border);border-radius:8px;font-size:.88rem;background:var(--surface);transition:border .2s;font-family:inherit;}
.form-control:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(20,184,166,.15);}
select.form-control{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;}
textarea.form-control{resize:vertical;min-height:80px;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
.form-row.cols3{grid-template-columns:1fr 1fr 1fr;}
.form-row.cols4{grid-template-columns:1fr 1fr 1fr 1fr;}
.form-check{display:flex;align-items:center;gap:.5rem;font-size:.85rem;}
.form-check input[type="checkbox"]{width:16px;height:16px;accent-color:var(--accent);}

/* ── FILTERS BAR ──────────────────────────────────────────────────────────── */
.filter-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;margin-bottom:1rem;display:flex;flex-wrap:wrap;gap:.8rem;align-items:flex-end;box-shadow:var(--shadow);}
.filter-group{display:flex;flex-direction:column;gap:.2rem;flex:1;min-width:150px;}
.filter-group label{font-size:.72rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;}
.filter-group select,.filter-group input{padding:.4rem .6rem;border:1px solid var(--border);border-radius:6px;font-size:.82rem;font-family:inherit;}
.filter-group select:focus,.filter-group input:focus{outline:none;border-color:var(--accent);}

/* ── TABLES ───────────────────────────────────────────────────────────────── */
.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;}
.data-table{width:100%;min-width:700px;border-collapse:collapse;}
.data-table th{background:var(--bg);font-size:.72rem;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);padding:.6rem .8rem;text-align:left;border-bottom:2px solid var(--border);white-space:nowrap;}
.data-table td{padding:.65rem .8rem;border-bottom:1px solid var(--border);font-size:.85rem;vertical-align:middle;}
.data-table tbody tr:hover{background:var(--accent-light);}

/* ── BADGES ───────────────────────────────────────────────────────────────── */
.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .6rem;border-radius:6px;font-size:.72rem;font-weight:700;white-space:nowrap;}
.badge-green{background:#dcfce7;color:#15803d;}
.badge-red{background:#fee2e2;color:#b91c1c;}
.badge-orange{background:#fef3c7;color:#92400e;}
.badge-blue{background:#dbeafe;color:#1d4ed8;}
.badge-purple{background:#ede9fe;color:#6d28d9;}
.badge-teal{background:#ccfbf1;color:#0f766e;}
.badge-gray{background:#f1f5f9;color:#475569;}

/* ── STATUS DOTS ──────────────────────────────────────────────────────────── */
.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:.4rem;}
.dot-green{background:var(--success);}
.dot-red{background:var(--danger);}
.dot-orange{background:var(--warning);}
.dot-blue{background:var(--info);}
.dot-gray{background:#94a3b8;}

/* ── TABS ─────────────────────────────────────────────────────────────────── */
.tabs-nav{display:flex;gap:.3rem;border-bottom:2px solid var(--border);margin-bottom:1.5rem;overflow-x:auto;-webkit-overflow-scrolling:touch;}
.tab-btn{padding:.5rem 1rem;border:none;background:none;font-size:.82rem;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .2s;white-space:nowrap;display:flex;align-items:center;gap:.35rem;}
.tab-btn:hover{color:var(--primary);}
.tab-btn.active{color:var(--primary);border-bottom-color:var(--accent);}
.tab-pane{display:none;}
.tab-pane.active{display:block;}

/* ── DETAIL GRID ──────────────────────────────────────────────────────────── */
.detail-grid{display:grid;grid-template-columns:1fr 320px;gap:1.5rem;}

/* ── TIMELINE ─────────────────────────────────────────────────────────────── */
.timeline{display:flex;flex-direction:column;gap:.8rem;}
.timeline-item{display:flex;gap:.8rem;align-items:flex-start;}
.tl-icon{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:.7rem;flex-shrink:0;}
.tl-body{flex:1;min-width:0;}
.tl-title{font-size:.85rem;font-weight:600;}
.tl-meta{font-size:.72rem;color:var(--muted);}
.tl-detail{font-size:.8rem;color:#64748b;margin-top:.2rem;}

/* ── FLASH MESSAGES ───────────────────────────────────────────────────────── */
.flash{padding:.65rem 1rem;border-radius:8px;margin-bottom:1rem;font-size:.85rem;font-weight:500;display:flex;align-items:center;gap:.5rem;}
.flash-success{background:#dcfce7;color:#15803d;border:1px solid #bbf7d0;}
.flash-danger{background:#fee2e2;color:#b91c1c;border:1px solid #fecaca;}
.flash-warning{background:#fef3c7;color:#92400e;border:1px solid #fde68a;}
.flash-info{background:#dbeafe;color:#1d4ed8;border:1px solid #bfdbfe;}

/* ── SCORE BAR ────────────────────────────────────────────────────────────── */
.score-bar{height:6px;background:#e2e8f0;border-radius:3px;overflow:hidden;}
.score-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--primary));border-radius:3px;transition:width .4s;}

/* ── CALIBRATION BADGES ───────────────────────────────────────────────────── */
.cal-vigente{background:#dcfce7;color:#15803d;}
.cal-proxima{background:#fef3c7;color:#92400e;}
.cal-vencida{background:#fee2e2;color:#b91c1c;}
.cal-sin{background:#f1f5f9;color:#475569;}

/* ── EQUIPMENT CARD (grid view) ───────────────────────────────────────────── */
.equipo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;}
.equipo-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.2rem;box-shadow:var(--shadow);transition:all .2s;display:flex;flex-direction:column;gap:.6rem;}
.equipo-card:hover{box-shadow:var(--shadow-md);border-color:var(--accent);}
.equipo-card-header{display:flex;align-items:center;gap:.8rem;}
.equipo-card-icon{width:44px;height:44px;border-radius:10px;background:var(--accent-light);display:flex;align-items:center;justify-content:center;color:var(--primary);font-size:1.1rem;}
.equipo-card-title{font-weight:700;font-size:.9rem;line-height:1.3;}
.equipo-card-code{font-size:.72rem;color:var(--muted);}
.equipo-card-meta{display:flex;flex-wrap:wrap;gap:.4rem;font-size:.75rem;color:var(--muted);}

/* ── CHART CONTAINER ──────────────────────────────────────────────────────── */
.chart-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.2rem;box-shadow:var(--shadow);}
.chart-card h3{font-size:.88rem;font-weight:700;color:var(--primary);margin-bottom:.8rem;}
.chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem;}

/* ── FOOTER ───────────────────────────────────────────────────────────────── */
.footer{text-align:center;padding:2rem 1rem;color:var(--muted);font-size:.75rem;border-top:1px solid var(--border);margin-top:2rem;}

/* ── RESPONSIVE ───────────────────────────────────────────────────────────── */
@media(max-width:900px){
  .detail-grid{grid-template-columns:1fr;}
  .chart-grid{grid-template-columns:1fr;}
  .form-row{grid-template-columns:1fr;}
  .form-row.cols3,.form-row.cols4{grid-template-columns:1fr 1fr;}
}
@media(max-width:700px){
  html{font-size:14px;}
  .navbar{padding:.6rem 1rem;}
  .nav-links{display:none;flex-direction:column;position:absolute;top:100%;left:0;right:0;background:var(--primary);padding:.8rem;gap:.3rem;box-shadow:var(--shadow-md);}
  .nav-links.open{display:flex;}
  .hamburger{display:block;}
  .container{padding:1rem .8rem;}
  .kpi-grid{grid-template-columns:1fr 1fr;}
  .filter-bar{flex-direction:column;}
  .filter-group{min-width:100%;}
  .form-row.cols3,.form-row.cols4{grid-template-columns:1fr;}
  .equipo-grid{grid-template-columns:1fr;}
  .dash-header{flex-direction:column;align-items:flex-start;}
}
