/* ecodrill.css - ECODRILL OKR sobre el ECODRILL Enterprise Design System v1.0.0
   Requiere tokens.css (var(--ec-*)) cargado ANTES de este archivo.
   Componentes segun ecodrill-design-system/components/*.md.
   SSR + CSS puro + cero frameworks. Claro/oscuro via [data-theme]. */

/* ── Fuentes del sistema (autohospedadas, variables) ── */
@font-face{
  font-family:'Geist';
  src:url('/fonts/geist-var-latin.woff2') format('woff2');
  font-weight:300 800;font-style:normal;font-display:swap;
}
@font-face{
  font-family:'Geist Mono';
  src:url('/fonts/geist-mono-var-latin.woff2') format('woff2');
  font-weight:400 700;font-style:normal;font-display:swap;
}

/* ── Tokens de app (solo composicion de tokens --ec-*; el tema los
      reasigna aqui una sola vez: los componentes no conocen el tema) ── */
:root{
  --app-chip-ok-bg:var(--ec-success-50);   --app-chip-ok-fg:var(--ec-success-700);
  --app-chip-warn-bg:var(--ec-warning-50); --app-chip-warn-fg:var(--ec-warning-700);
  --app-tag-suave-bg:var(--ec-selected);   --app-tag-suave-fg:var(--ec-lime-800);
  --app-tag-info-bg:var(--ec-info-50);     --app-tag-info-fg:var(--ec-info-700);
  --app-banner-ok-bg:var(--ec-success-50); --app-banner-ok-fg:var(--ec-success-700);
  --app-banner-err-bg:var(--ec-danger-50); --app-banner-err-fg:var(--ec-danger-700);
  --app-kpi-warn:var(--ec-warning-600);
  /* Alias de compatibilidad: los usa lib/sparkline.js (SVG del servidor) */
  --color-accent:var(--ec-accent-strong);
  --color-accent-100:var(--ec-lime-100);
  --color-accent-600:var(--ec-lime-600);
  --color-accent-700:var(--ec-accent-strong);
  --color-accent-2:var(--ec-warning);
  --color-accent-2-100:var(--ec-warning-50);
  --color-accent-2-800:var(--ec-warning-700);
}
[data-theme="dark"]{
  --app-chip-ok-bg:var(--ec-success-900);  --app-chip-ok-fg:var(--ec-success-300);
  --app-chip-warn-bg:var(--ec-warning-900);--app-chip-warn-fg:var(--ec-warning-300);
  --app-tag-suave-bg:var(--ec-selected);   --app-tag-suave-fg:var(--ec-lime-200);
  --app-tag-info-bg:var(--ec-info-900);    --app-tag-info-fg:var(--ec-info-300);
  --app-banner-ok-bg:var(--ec-success-900);--app-banner-ok-fg:var(--ec-success-300);
  --app-banner-err-bg:var(--ec-danger-900);--app-banner-err-fg:var(--ec-danger-300);
  --app-kpi-warn:var(--ec-warning);
  --color-accent:var(--ec-primary-strong);
  --color-accent-100:var(--ec-lime-900);
  --color-accent-700:var(--ec-primary-strong);
  --color-accent-2:var(--ec-warning);
  --color-accent-2-100:var(--ec-warning-900);
  --color-accent-2-800:var(--ec-warning-300);
}

/* ── Base ── */
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  font-family:var(--ec-font-sans);background:var(--ec-bg);color:var(--ec-text);
  font-size:15px;line-height:1.55;min-height:100vh;
  transition:background var(--ec-dur-base) var(--ec-ease-standard),color var(--ec-dur-base) var(--ec-ease-standard);
}
h1,h2,h3,h4{line-height:1.2;font-weight:600;letter-spacing:-0.01em}
h1{font-size:26px}h2{font-size:21px}h3{font-size:18px}h4{font-size:16px}
a{color:var(--ec-accent-strong);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%}
:focus-visible{outline:2px solid var(--ec-focus);outline-offset:2px}
::placeholder{color:var(--ec-text-3)}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}

/* ── Navbar (Navbar.md: 60px, surface, sticky, borde inferior) ── */
.brand-strip{height:3px;background:var(--ec-accent)}
.masthead{
  position:sticky;top:0;z-index:var(--ec-z-sticky);
  background:var(--ec-surface);border-bottom:1px solid var(--ec-border);
}
.masthead .titulo{
  max-width:1200px;margin:0 auto;padding:var(--ec-space-3) var(--ec-space-5) 0;
  display:flex;align-items:baseline;justify-content:space-between;gap:var(--ec-space-3);flex-wrap:wrap;
}
.masthead h1{font-size:18px;font-weight:700;letter-spacing:-0.01em;display:flex;align-items:center;gap:var(--ec-space-2)}
.masthead h1 .logo-mark{width:24px;height:24px;vertical-align:middle}
.masthead h1 .fino{font-weight:400;color:var(--ec-text-2)}
.masthead .fecha{font-size:13px;color:var(--ec-text-3)}
.masthead-rule{display:none}

/* Navegacion dentro del masthead */
.navbar{
  max-width:1200px;margin:0 auto;padding:var(--ec-space-1) var(--ec-space-5) var(--ec-space-2);
  display:flex;gap:var(--ec-space-1);align-items:center;flex-wrap:wrap;
}
.navlink{
  font-size:13.5px;font-weight:500;color:var(--ec-text-2);
  padding:var(--ec-space-2) var(--ec-space-3);border-radius:var(--ec-radius-sm);
  text-decoration:none;position:relative;
  transition:background var(--ec-dur-fast) var(--ec-ease-standard),color var(--ec-dur-fast) var(--ec-ease-standard);
}
.navlink:hover{background:var(--ec-hover);color:var(--ec-text);text-decoration:none}
.navlink.activo{background:var(--ec-selected);color:var(--ec-text);font-weight:600}
.nav-sec{margin-left:auto;display:flex;gap:var(--ec-space-1);align-items:center;flex-wrap:wrap}
.nav-user{font-size:12px;color:var(--ec-text-3);padding:0 var(--ec-space-2)}
.navlink-bell{position:relative}
.badge{
  display:inline-block;min-width:16px;height:16px;line-height:16px;text-align:center;
  background:var(--ec-danger);color:#fff;font-size:10.5px;font-weight:700;
  font-family:var(--ec-font-mono);border-radius:var(--ec-radius-full);
  padding:0 var(--ec-space-1);margin-left:var(--ec-space-1);vertical-align:top;
}
.theme-toggle{
  border:none;background:transparent;color:var(--ec-text-2);cursor:pointer;
  font:inherit;font-size:15px;line-height:1;
  padding:var(--ec-space-2) var(--ec-space-3);border-radius:var(--ec-radius-sm);
}
.theme-toggle:hover{background:var(--ec-hover);color:var(--ec-text)}
.theme-toggle .icon-luna{display:none}
[data-theme="dark"] .theme-toggle .icon-sol{display:none}
[data-theme="dark"] .theme-toggle .icon-luna{display:inline}

/* ── Layout ── */
.contenido{max-width:1200px;margin:0 auto;padding:var(--ec-space-5) var(--ec-space-5) var(--ec-space-10)}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--ec-space-5)}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--ec-space-5)}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--ec-space-4)}
.sec-label{
  font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:0.1em;
  color:var(--ec-text-2);margin:var(--ec-space-6) 0 var(--ec-space-4);
}
.sec-label:first-child{margin-top:0}

/* ── Card (Card.md: card, borde, radio md, sombra sm, padding 24) ── */
.card{
  background:var(--ec-card);border:1px solid var(--ec-border);
  border-radius:var(--ec-radius-md);box-shadow:var(--ec-shadow-sm);
  padding:var(--ec-space-5);
}
.card.acento{border-left:3px solid var(--ec-accent)}
.card h3{font-size:16px;margin-bottom:var(--ec-space-2)}
.meta,.card .meta{font-size:13px;color:var(--ec-text-2)}

/* ── KPI (Card kpi: valor grande en mono + etiqueta) ── */
.kpi-num{
  font-family:var(--ec-font-mono);font-size:clamp(28px,4vw,38px);font-weight:600;
  line-height:1.1;color:var(--ec-text);font-variant-numeric:tabular-nums;
}
.kpi-warn{color:var(--app-kpi-warn)}
.kpi-lbl{font-size:12px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ec-text-3);margin-top:var(--ec-space-1)}

/* ── Barra de avance ── */
.track{
  position:relative;height:8px;background:var(--ec-bg-subtle);
  border:1px solid var(--ec-border);border-radius:var(--ec-radius-full);overflow:hidden;
}
.track > span{
  display:block;height:100%;background:var(--ec-accent);border-radius:var(--ec-radius-full);
  transition:width var(--ec-dur-slow) var(--ec-ease-standard);
}
.track.retraso > span{background:var(--ec-warning)}
.track-row{display:flex;align-items:center;gap:var(--ec-space-3)}
.track-row .track{flex:1}
.track-pct{
  font-family:var(--ec-font-mono);font-size:13px;font-weight:600;min-width:44px;
  text-align:right;font-variant-numeric:tabular-nums;
}

/* ── Chips / Tags (estado siempre con texto, no solo color) ── */
.chip{
  display:inline-block;font-size:11.5px;font-weight:600;letter-spacing:0.02em;
  padding:var(--ec-space-1) var(--ec-space-3);border-radius:var(--ec-radius-full);
  border:1px solid transparent;margin:2px 3px 2px 0;
}
.chip.ok{color:var(--app-chip-ok-fg);background:var(--app-chip-ok-bg)}
.chip.warn{color:var(--app-chip-warn-fg);background:var(--app-chip-warn-bg)}
.chip.off{color:var(--ec-text-2);background:var(--ec-bg-subtle);border-color:var(--ec-border)}
.tag{
  display:inline-block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;
  padding:2px var(--ec-space-2);border-radius:var(--ec-radius-xs);
  background:var(--ec-secondary);color:var(--ec-bg);margin-right:var(--ec-space-1);
}
.tag.suave{background:var(--app-tag-suave-bg);color:var(--app-tag-suave-fg)}
.tag.impacto{background:var(--app-tag-info-bg);color:var(--app-tag-info-fg)}
.chip-x{color:inherit;font-weight:700;text-decoration:none;margin-left:var(--ec-space-1)}
.chip-x:hover{text-decoration:none;opacity:.7}

/* ── Formularios (Input.md: label 13/600, control 40px, radio sm) ── */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--ec-space-4) var(--ec-space-5)}
.campo{margin-bottom:var(--ec-space-4)}
.campo label{
  display:block;font-size:13px;font-weight:600;color:var(--ec-text);
  margin-bottom:var(--ec-space-1);
}
.input,select.input,textarea.input{
  width:100%;font-family:var(--ec-font-sans);font-size:14px;color:var(--ec-text);
  background:var(--ec-surface);border:1px solid var(--ec-border-strong);
  border-radius:var(--ec-radius-sm);padding:0 var(--ec-space-3);min-height:40px;
  transition:border-color var(--ec-dur-fast) var(--ec-ease-standard);
}
textarea.input{padding:var(--ec-space-2) var(--ec-space-3);min-height:96px;resize:vertical}
.input:hover{border-color:var(--ec-text-3)}
.input:focus,.input:focus-visible{
  outline:2px solid var(--ec-focus);outline-offset:0;border-color:var(--ec-accent-strong);
}
.input[multiple]{min-height:112px;padding:var(--ec-space-2) var(--ec-space-3)}
.input:disabled{background:var(--ec-disabled);border-color:var(--ec-border);opacity:.6;cursor:not-allowed}
.input-alerta{border-color:var(--ec-danger)}
.ayuda{font-size:13px;color:var(--ec-text-3);margin-top:var(--ec-space-1)}
input[type=checkbox],input[type=radio]{accent-color:var(--ec-accent-strong)}

/* Banners persistentes (Notification.md: color semantico + contexto) */
.error-box{
  background:var(--app-banner-err-bg);border-left:3px solid var(--ec-danger);
  color:var(--app-banner-err-fg);padding:var(--ec-space-3) var(--ec-space-4);
  border-radius:var(--ec-radius-sm);font-size:14px;margin-bottom:var(--ec-space-4);
}
.ok-box{
  background:var(--app-banner-ok-bg);border-left:3px solid var(--ec-success);
  color:var(--app-banner-ok-fg);padding:var(--ec-space-3) var(--ec-space-4);
  border-radius:var(--ec-radius-sm);font-size:14px;margin-bottom:var(--ec-space-4);
}

/* ── Botones (Button.md: radio sm, peso 600, md 40px) ── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--ec-space-2);
  font-family:var(--ec-font-sans);font-size:14px;font-weight:600;
  min-height:40px;padding:0 var(--ec-space-4);border-radius:var(--ec-radius-sm);
  cursor:pointer;text-decoration:none;border:1px solid transparent;
  transition:filter var(--ec-dur-fast) var(--ec-ease-standard),background var(--ec-dur-fast) var(--ec-ease-standard);
}
.btn:hover{text-decoration:none}
.btn.primary{background:var(--ec-accent);color:var(--ec-on-accent)}
.btn.primary:hover{filter:brightness(.96)}
.btn.primary:active{background:var(--ec-lime-600)}
.btn.secondary{background:var(--ec-surface);color:var(--ec-text);border-color:var(--ec-border-strong)}
.btn.secondary:hover{background:var(--ec-hover)}
.btn.ghost{background:transparent;color:var(--ec-text-2)}
.btn.ghost:hover{background:var(--ec-hover);color:var(--ec-text)}
.btn.peligro{background:var(--ec-danger);color:#fff}
.btn.peligro:hover{filter:brightness(.94)}
.btn.sm{min-height:32px;padding:0 var(--ec-space-3);font-size:13px}
.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
.btn-block{width:100%}

/* ── Tablas (Table.md: header bg-subtle 11px uppercase, hover fila) ── */
.tabla{width:100%;border-collapse:collapse;font-size:14px}
.tabla th{
  text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;
  color:var(--ec-text-3);background:var(--ec-bg-subtle);
  border-bottom:1px solid var(--ec-border);padding:var(--ec-space-2) var(--ec-space-3);white-space:nowrap;
}
.tabla td{padding:var(--ec-space-3);border-bottom:1px solid var(--ec-border);vertical-align:middle}
.tabla tr:hover td{background:var(--ec-hover)}
.tabla-wrap{overflow-x:auto}
.tabla-wrap.card{padding:var(--ec-space-2) var(--ec-space-4) var(--ec-space-4)}

/* ── Arbol OKR (detalle) ── */
.okr-head{
  background:var(--ec-card);border:1px solid var(--ec-border);border-left:3px solid var(--ec-accent);
  border-radius:var(--ec-radius-md);box-shadow:var(--ec-shadow-sm);
  padding:var(--ec-space-5);margin-bottom:var(--ec-space-5);
}
.okr-head .clave{
  font-family:var(--ec-font-mono);font-size:13px;font-weight:600;letter-spacing:0.06em;
  color:var(--ec-accent-strong);
}
.okr-head h2{font-size:clamp(18px,3vw,22px);margin:var(--ec-space-2) 0 var(--ec-space-3)}
.kr-item{
  background:var(--ec-card);border:1px solid var(--ec-border);
  border-radius:var(--ec-radius-md);box-shadow:var(--ec-shadow-sm);
  padding:var(--ec-space-4) var(--ec-space-5);margin-bottom:var(--ec-space-3);
  transition:box-shadow var(--ec-dur-fast) var(--ec-ease-standard);
}
.kr-item:hover{box-shadow:var(--ec-shadow-md)}
.kr-item .kr-top{display:flex;justify-content:space-between;gap:var(--ec-space-3);align-items:baseline;flex-wrap:wrap}
.kr-item .clave{
  font-family:var(--ec-font-mono);font-size:12px;font-weight:600;letter-spacing:0.06em;
  color:var(--ec-text-2);
}
.kr-item h3 a{color:var(--ec-text)}
.accion-item{
  border-left:3px solid var(--ec-border-strong);
  margin:var(--ec-space-2) 0 var(--ec-space-2) var(--ec-space-4);
  padding:var(--ec-space-2) var(--ec-space-3);
  background:var(--ec-bg-subtle);border-radius:0 var(--ec-radius-sm) var(--ec-radius-sm) 0;
  font-size:14px;
}
.accion-item.plan-A{border-left-color:var(--ec-accent)}
.accion-item.plan-B{border-left-color:var(--ec-info)}

/* ── Linea de tiempo (historial) ── */
.linea-tiempo{list-style:none}
.linea-tiempo li{
  border-left:2px solid var(--ec-border-strong);
  padding:2px 0 var(--ec-space-4) var(--ec-space-4);position:relative;
}
.linea-tiempo li::before{
  content:'';position:absolute;left:-6px;top:6px;width:10px;height:10px;
  border-radius:var(--ec-radius-full);background:var(--ec-accent);
  border:2px solid var(--ec-surface);
}
.linea-tiempo .lt-fecha{font-size:12px;color:var(--ec-text-3);font-family:var(--ec-font-mono)}

/* ── Utilidades ── */
.fila{display:flex;gap:var(--ec-space-3);align-items:center;flex-wrap:wrap}
.derecha{margin-left:auto}
.mt{margin-top:var(--ec-space-4)}.mb{margin-bottom:var(--ec-space-4)}
.muted,.text-muted{color:var(--ec-text-2)}
.centro{text-align:center}
.mono{font-family:var(--ec-font-mono);font-variant-numeric:tabular-nums}
.f1{flex:1}.f2{flex:2}
.fila .sec-label{flex:1;margin:0}
.card.atencion{border-left:3px solid var(--ec-warning)}
.card-leida{opacity:.75}
.card-error{max-width:560px;margin:var(--ec-space-8) auto 0}
.form-inline{display:inline}
.form-pop{min-width:280px;max-width:100%}
.td-right{text-align:right;vertical-align:top}
.codigo{font-family:var(--ec-font-mono);font-size:15px;letter-spacing:0.06em}
.label-check{
  display:flex!important;gap:var(--ec-space-2);align-items:center;
  font-weight:400!important;margin:0;cursor:pointer;
}
summary{cursor:pointer}
summary.btn{list-style:none}
summary.btn::-webkit-details-marker{display:none}
.texto-nota{font-size:14px}

/* ── Acceso (login / recuperar / restablecer / cambiar contrasena) ── */
.login-wrap{
  min-height:100vh;display:flex;flex-direction:column;align-items:center;
  padding:var(--ec-space-6) var(--ec-space-5) var(--ec-space-5);
}
.login-brand{display:flex;flex-direction:column;align-items:center;gap:var(--ec-space-3);margin-bottom:var(--ec-space-6)}
.login-logo{width:180px;display:block}
.login-eyebrow{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:0.1em;color:var(--ec-text-3)}
.login-card{
  width:100%;max-width:420px;background:var(--ec-card);border:1px solid var(--ec-border);
  border-radius:var(--ec-radius-lg);box-shadow:var(--ec-shadow-md);overflow:hidden;padding:0;
}
.login-card .brand-strip{height:3px}
.login-card-body{padding:var(--ec-space-6);display:flex;flex-direction:column;gap:var(--ec-space-4)}
.card-kicker{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:0.1em;color:var(--ec-accent-strong)}
.login-card-title{font-size:21px;margin-top:var(--ec-space-1)}
.login-row{
  display:flex;align-items:center;justify-content:space-between;gap:var(--ec-space-3);flex-wrap:wrap;
  font-size:13px;margin-bottom:var(--ec-space-4);
}
.login-remember{display:inline-flex;align-items:center;gap:var(--ec-space-2);color:var(--ec-text-2);cursor:pointer}
.login-forgot{font-size:13px}
.login-footer{
  margin-top:auto;padding-top:var(--ec-space-5);width:100%;max-width:420px;
  display:flex;justify-content:space-between;gap:var(--ec-space-3);
  font-size:12px;color:var(--ec-text-3);
}
.login-theme{position:fixed;top:var(--ec-space-3);right:var(--ec-space-3)}
.pie{
  max-width:1200px;margin:var(--ec-space-6) auto 0;
  padding:var(--ec-space-4) var(--ec-space-5);border-top:1px solid var(--ec-border);
  font-size:12px;color:var(--ec-text-3);
}

/* ── Dashboard: filtros, paneles y tiempo real ── */
.filtros-bar{display:flex;gap:var(--ec-space-2);flex-wrap:wrap}
.filtros-bar .input{width:auto;flex:1;min-width:150px;font-size:13px;min-height:36px}
.area-row{display:flex;align-items:center;gap:var(--ec-space-3);margin:var(--ec-space-2) 0}
.area-row .area-nombre{flex:0 0 45%;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.area-row .track{flex:1}
.atencion-row{margin:var(--ec-space-2) 0;font-size:14px;line-height:1.4}
.rt-indicador{opacity:0;transition:opacity var(--ec-dur-slower) var(--ec-ease-standard)}
.rt-indicador.activo{opacity:1}
.sparkline{display:block;max-width:100%}

/* ── Responsivo (breakpoints.json: 480 / 768 / 1024 / 1280) ── */
@media(max-width:1024px){
  .grid-3,.grid-4{grid-template-columns:1fr 1fr}
}
@media(max-width:768px){
  .grid-2,.grid-3,.form-grid{grid-template-columns:1fr}
  .grid-4{grid-template-columns:1fr 1fr;gap:var(--ec-space-3)}  /* KPIs 2x2 en movil */
  .contenido{padding:var(--ec-space-4) var(--ec-space-4) var(--ec-space-9)}
  .masthead .titulo{padding:var(--ec-space-2) var(--ec-space-4) 0}
  .navbar{padding:var(--ec-space-1) var(--ec-space-3) var(--ec-space-2)}
}
@media(max-width:480px){
  /* navegacion apilada: campana y salir SIEMPRE visibles (personal de campo) */
  .navbar{flex-wrap:wrap;row-gap:2px}
  .nav-sec{margin-left:auto;flex-wrap:wrap}
  .nav-user{display:none}                 /* solo se oculta el nombre */
  .navlink{white-space:nowrap;padding:var(--ec-space-3)}  /* area tactil >= 44px */
  .theme-toggle{padding:var(--ec-space-3)}
  .masthead .fecha{display:none}
  .okr-head,.kr-item{padding:var(--ec-space-3)}
  .card{padding:var(--ec-space-4)}
  .accion-item{margin-left:var(--ec-space-1)}
  input,select,textarea{font-size:16px}   /* anti-zoom iOS */
  .btn,.btn.sm{min-height:44px}           /* tactil >= 44px */
  .chip-x{display:inline-block;padding:var(--ec-space-2) var(--ec-space-3);margin:-8px -6px}
  .kpi-num{font-size:clamp(24px,7vw,32px)}
  .area-row{flex-wrap:wrap;row-gap:2px}
  .area-row .area-nombre{flex:1 1 100%;white-space:normal}
  .sparkline{width:100%;height:auto}
  .filtros-bar .input{min-width:100%;flex:1 1 100%}
  .login-remember input{width:20px;height:20px}
  .login-logo{width:150px}
  .login-card-body{padding:var(--ec-space-5)}
  .login-footer{flex-direction:column;gap:2px;align-items:center}
}
