/* === TEMAS === */
:root, [data-theme="oscuro"]{
  --bg:#0d1117; --panel:#161b22; --panel2:#1c2330; --border:#2d3748;
  --txt:#e6edf3; --muted:#8b949e;
  --accent:#2f81f7; --accent2:#1f6feb;
  --ok:#2ea043; --warn:#d29922; --danger:#da3633;
  --old1:#3fb950; --old2:#d29922; --old3:#da3633;
  --shadow:rgba(0,0,0,.5);
}
[data-theme="medianoche"]{
  --bg:#0b0e14; --panel:#12151c; --panel2:#181c26; --border:#252a36;
  --txt:#d4dae3; --muted:#6e7681;
  --accent:#7c3aed; --accent2:#6d28d9;
  --ok:#22c55e; --warn:#eab308; --danger:#ef4444;
  --old1:#22c55e; --old2:#eab308; --old3:#ef4444;
  --shadow:rgba(0,0,0,.6);
}
[data-theme="claro"]{
  --bg:#f5f6f8; --panel:#ffffff; --panel2:#eef0f4; --border:#d1d5db;
  --txt:#1f2937; --muted:#6b7280;
  --accent:#2563eb; --accent2:#1d4ed8;
  --ok:#16a34a; --warn:#ca8a04; --danger:#dc2626;
  --old1:#16a34a; --old2:#ca8a04; --old3:#dc2626;
  --shadow:rgba(0,0,0,.1);
}
[data-theme="arena"]{
  --bg:#faf6f1; --panel:#ffffff; --panel2:#f0ebe4; --border:#d6cfc5;
  --txt:#3d3529; --muted:#8a7f72;
  --accent:#b45309; --accent2:#92400e;
  --ok:#15803d; --warn:#a16207; --danger:#b91c1c;
  --old1:#15803d; --old2:#a16207; --old3:#b91c1c;
  --shadow:rgba(0,0,0,.08);
}
[data-theme="oceano"]{
  --bg:#0f172a; --panel:#1e293b; --panel2:#253345; --border:#334155;
  --txt:#e2e8f0; --muted:#94a3b8;
  --accent:#06b6d4; --accent2:#0891b2;
  --ok:#10b981; --warn:#f59e0b; --danger:#f43f5e;
  --old1:#10b981; --old2:#f59e0b; --old3:#f43f5e;
  --shadow:rgba(0,0,0,.4);
}

/* === BASE === */
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}
input,textarea,select,[contenteditable]{-webkit-user-select:text;user-select:text}
html,body{height:100%}
body{background:var(--bg);color:var(--txt);font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;font-size:15px;line-height:1.45;overflow-x:hidden;transition:background .3s,color .3s}
.hidden{display:none!important}

/* === HEADER === */
header{position:sticky;top:0;z-index:10;background:var(--panel);border-bottom:1px solid var(--border);padding:10px 14px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
header h1{font-size:17px;font-weight:700;letter-spacing:.5px;margin-right:auto}
header button{background:var(--panel2);border:1px solid var(--border);color:var(--txt);padding:6px 12px;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer}
header button:active{opacity:.8}
.tecnico-badge{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px;background:var(--panel2);padding:5px 10px;border-radius:20px;border:1px solid var(--border);cursor:pointer}
.tecnico-badge b{color:var(--accent)}
.offline-dot{width:8px;height:8px;border-radius:50%;background:var(--ok);flex:none}
.offline-dot.off{background:var(--danger)}
.sync-pill{font-size:11px;color:var(--warn)}

/* === MAIN === */
main{padding:14px 14px 100px;max-width:680px;margin:0 auto}

/* === LOGIN === */
.login{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:24px;max-width:480px;margin:0 auto}
.login h2{font-size:22px;margin-bottom:4px}
.login p{color:var(--muted);margin-bottom:24px;font-size:14px}
.tec-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tec-btn{background:var(--panel);border:1px solid var(--border);color:var(--txt);padding:16px 12px;border-radius:12px;font-size:15px;font-weight:600;cursor:pointer;transition:.15s}
.tec-btn:active{background:var(--accent);border-color:var(--accent);color:#fff;transform:scale(.97)}
.tec-btn:disabled{opacity:.5;pointer-events:none}

/* === LISTA / CARDS === */
.empty{text-align:center;color:var(--muted);padding:48px 16px;font-size:14px}
.mda-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px;margin-bottom:12px;cursor:pointer;transition:.15s}
.mda-card:active{transform:scale(.99)}
.mda-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.mda-id{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums}
.mda-isla{color:var(--muted);font-size:13px;font-weight:500}
.mda-count{background:var(--panel2);border-radius:20px;padding:4px 12px;font-size:12px;font-weight:600;white-space:nowrap;border:1px solid var(--border)}
.fallas-mini{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.falla-mini{font-size:13px;padding:8px 0;border-top:1px solid var(--border)}
.falla-mini-top{display:flex;align-items:center;gap:8px;width:100%}
.ult-accion{font-size:11px;color:var(--muted);margin-left:18px;margin-top:2px}
.est-seg{display:flex;gap:0;border-radius:8px;overflow:hidden;border:1px solid var(--border);margin-left:18px;margin-top:6px}
.est-seg button{flex:1;background:var(--panel2);border:none;color:var(--muted);padding:6px 6px;font-size:11px;font-weight:600;cursor:pointer}
.est-seg button.on[data-e="pendiente"]{background:var(--warn);color:#000}
.est-seg button.on[data-e="observacion"]{background:var(--accent);color:#fff}
.est-seg button.on[data-e="resuelta"]{background:var(--ok);color:#fff}
.age-dot{width:10px;height:10px;border-radius:50%;flex:none}
.age-0{background:var(--old1)}.age-1{background:var(--old2)}.age-2{background:var(--old3)}
.age-dot.obs{background:var(--accent)}
.falla-txt{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.falla-age{font-size:11px;color:var(--muted);white-space:nowrap}
.volvio-btn{margin-left:18px;margin-top:6px;background:var(--danger);color:#fff;border:none;padding:7px 14px;border-radius:8px;font-size:11px;font-weight:600;cursor:pointer;width:calc(100% - 18px)}

/* === FAB === */
.fab{position:fixed;bottom:20px;right:20px;z-index:20;background:var(--accent);color:#fff;border:none;width:56px;height:56px;border-radius:50%;font-size:28px;cursor:pointer;box-shadow:0 4px 16px var(--shadow);display:flex;align-items:center;justify-content:center}
.fab:active{transform:scale(.92)}

/* === SCREENS === */
.screen{position:fixed;inset:0;z-index:30;background:var(--bg);overflow-y:auto;padding-bottom:40px}
.screen-head{position:sticky;top:0;background:var(--panel);border-bottom:1px solid var(--border);padding:10px 14px;display:flex;align-items:center;gap:10px}
.back-btn{background:none;border:none;color:var(--accent);font-size:15px;cursor:pointer;padding:6px;display:flex;align-items:center;gap:4px}
.screen-head h2{font-size:16px;flex:1}
.screen-body{padding:16px;max-width:680px;margin:0 auto}

/* === FORMS === */
label{display:block;font-size:12px;color:var(--muted);margin:14px 0 6px;font-weight:600}
input,textarea,select{width:100%;background:var(--panel2);border:1px solid var(--border);color:var(--txt);padding:12px;border-radius:10px;font-size:15px;font-family:inherit}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent)}
textarea{resize:vertical;min-height:80px}

/* === BUTTONS === */
.btn{width:100%;background:var(--accent);color:#fff;border:none;padding:14px;border-radius:10px;font-size:15px;font-weight:700;cursor:pointer;margin-top:20px}
.btn:active{transform:scale(.98)}
.btn:disabled{opacity:.5;pointer-events:none}
.btn-sec{background:var(--panel2);border:1px solid var(--border);color:var(--txt)}
.btn-ok{background:var(--ok)}
.btn-sm{padding:7px 12px;font-size:12px;margin-top:8px;width:auto}
.btn-danger{background:var(--danger);color:#fff}

/* === SEGMENTED === */
.seg{display:flex;gap:0;border:1px solid var(--border);border-radius:10px;overflow:hidden}
.seg button{flex:1;background:var(--panel2);border:none;color:var(--muted);padding:10px 4px;font-size:13px;font-weight:600;cursor:pointer}
.seg button.on{background:var(--accent);color:#fff}
.seg.res button.on[data-v="resolvio"]{background:var(--ok)}
.seg.res button.on[data-v="no_resolvio"]{background:var(--danger)}
.seg.res button.on[data-v="pendiente"]{background:var(--warn);color:#000}

/* === FALLA DETALLE === */
.falla-detalle{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px;margin-bottom:14px}
.falla-detalle h3{font-size:18px;margin-bottom:6px}
.meta{font-size:11px;color:var(--muted);margin-bottom:12px}
.estado-tag{display:inline-block;padding:2px 10px;border-radius:6px;font-size:11px;font-weight:700}
.estado-pendiente{background:var(--warn);color:#000}
.estado-observacion{background:var(--accent);color:#fff}
.estado-resuelta{background:var(--ok);color:#fff}

/* === ACCIONES === */
.accion-item{border-top:1px solid var(--border);padding:8px 0;font-size:13px}
.accion-item.anulada{opacity:1}
.accion-item.anulada .res-tag{text-decoration:line-through;background:var(--border);color:var(--muted)}
.a-head{display:flex;justify-content:space-between;gap:8px;margin-bottom:2px}
.res-tag{font-size:10px;font-weight:700;padding:1px 7px;border-radius:4px;white-space:nowrap}
.res-resolvio{background:var(--ok);color:#fff}
.res-no_resolvio{background:var(--danger);color:#fff}
.res-pendiente{background:var(--warn);color:#000}
.accion-meta{font-size:10px;color:var(--muted)}
.accion-hist{font-size:10px;color:var(--muted);margin-top:3px;padding-left:8px;border-left:2px solid var(--border)}
.ver-mas-acc{font-size:12px}

/* === ADD ACCION === */
.add-accion{background:var(--panel2);border:1px dashed var(--border);border-radius:10px;padding:14px;margin-top:12px}
.reg-arriba{margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--border)}

/* === CHIPS === */
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.chip{background:var(--panel2);border:1px solid var(--border);color:var(--txt);padding:7px 12px;border-radius:18px;font-size:12px;cursor:pointer}
.chip.fav{border-color:var(--accent2)}
.chip:active{background:var(--accent);color:#fff;border-color:var(--accent)}

/* === CATEGORÍAS === */
.cat-block{border:1px solid var(--border);border-radius:10px;margin-bottom:8px;overflow:hidden}
.cat-head{background:var(--panel2);padding:10px 14px;font-size:13px;font-weight:600;cursor:pointer;display:flex;justify-content:space-between;align-items:center}
.cat-head .arr{color:var(--muted);transition:.2s}
.cat-head.open .arr{transform:rotate(90deg)}
.cat-items{display:none;padding:4px}
.cat-items.open{display:block}
.cat-item{padding:10px 12px;font-size:13px;cursor:pointer;border-radius:8px}
.cat-item:active{background:var(--accent);color:#fff}

/* === SELECCIÓN === */
.sel-accion{background:transparent;padding:0;border-radius:0;margin-bottom:10px;display:flex;flex-wrap:wrap;gap:6px}
.acc-tag{background:var(--accent);color:#fff;padding:6px 10px;border-radius:8px;font-size:12px;display:inline-flex;align-items:center;gap:6px}
.acc-tag .x{cursor:pointer;font-weight:700;font-size:15px}
.no-res{color:var(--muted);font-size:12px;text-align:center;padding:12px}
.add-nueva-acc{background:var(--panel2);border:1px dashed var(--accent2);color:var(--accent);padding:10px 14px;border-radius:8px;font-size:12px;cursor:pointer;width:100%;text-align:left;margin-top:6px}
.acc-search{font-size:14px!important}

/* === TOAST === */
.toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%);background:var(--panel);border:1px solid var(--border);padding:10px 20px;border-radius:10px;z-index:50;font-size:13px;box-shadow:0 4px 20px var(--shadow)}

/* === ADMIN === */
.admin-section{margin-bottom:16px;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px}
.admin-item{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--border);font-size:13px}
.admin-item span{flex:1}
.admin-item input{padding:6px;font-size:13px;margin:0}
.btn-icon{background:none;border:none;cursor:pointer;padding:4px 8px;border-radius:6px;font-size:15px}
.btn-edit{color:var(--accent)}
.btn-del{color:var(--danger)}
.cat-select{margin-bottom:8px}
.obr-sub-label{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin-bottom:10px}

/* === STATS === */
.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}
.stats-row{display:flex;gap:10px;margin-bottom:16px}
.stats-row .stat-card{flex:1}
.stat-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px;text-align:center}
.stat-card.warn{border-color:var(--warn)}.stat-card.ok{border-color:var(--ok)}.stat-card.accent{border-color:var(--accent)}.stat-card.danger{border-color:var(--danger)}
.stat-card.mini{padding:10px}
.stat-num{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums}
.stat-num.mid{font-size:20px}
.stat-card.warn .stat-num{color:var(--warn)}.stat-card.ok .stat-num{color:var(--ok)}.stat-card.accent .stat-num{color:var(--accent)}.stat-card.danger .stat-num{color:var(--danger)}
.stat-label{font-size:11px;color:var(--muted);margin-top:2px}
.stat-section{margin-bottom:24px}
.stat-section h3{font-size:14px;font-weight:700;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.stat-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.stat-bar-label{font-size:12px;min-width:110px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat-bar-track{flex:1;height:18px;background:var(--panel2);border-radius:6px;overflow:hidden}
.stat-bar{height:100%;border-radius:6px;background:var(--warn);min-width:4px;transition:width .4s}
.stat-bar.ok{background:var(--ok)}.stat-bar.accent{background:var(--accent)}.stat-bar.warn{background:var(--warn)}
.stat-bar-val{font-size:12px;font-weight:700;min-width:24px;text-align:right}
.stat-empty{color:var(--muted);font-size:12px}

/* === URGENCIA === */
.urgente-badge{background:var(--danger);color:#fff;font-size:10px;font-weight:700;padding:3px 8px;border-radius:10px;animation:pulso 2s infinite}
@keyframes pulso{0%,100%{opacity:1}50%{opacity:.5}}
.falla-mini.urgente{border-left:3px solid var(--danger);padding-left:8px}
.urgente-card{animation:pulsoCard 2.5s infinite}
@keyframes pulsoCard{0%,100%{box-shadow:0 0 0 0 rgba(218,54,51,0)}50%{box-shadow:0 0 12px 2px rgba(218,54,51,.4)}}

/* === FOTOS === */
.fotos-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.foto-thumb{width:68px;height:68px;object-fit:cover;border-radius:8px;border:1px solid var(--border);cursor:pointer;transition:.15s}
.foto-thumb:active{transform:scale(.95)}
.foto-overlay{position:fixed;inset:0;background:rgba(0,0,0,.95);z-index:200;display:flex;align-items:center;justify-content:center;padding:16px}
.foto-overlay img{max-width:85%;max-height:80vh;border-radius:8px;object-fit:contain}
.gal-btn{position:absolute;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.15);border:none;color:#fff;font-size:28px;padding:10px 14px;cursor:pointer;border-radius:8px;z-index:201}
.gal-prev{left:10px}.gal-next{right:10px}
.gal-btn:active{background:rgba(255,255,255,.3)}
.gal-counter{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,.7);font-size:13px;font-weight:600}
.gal-close{position:absolute;top:12px;right:12px;background:rgba(255,255,255,.15);border:none;color:#fff;font-size:18px;padding:8px 12px;cursor:pointer;border-radius:8px}

/* === THEME PICKER === */
.theme-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:8px}
.theme-btn{border:2px solid var(--border);border-radius:10px;padding:12px 8px;cursor:pointer;text-align:center;font-size:11px;font-weight:600;transition:.15s}
.theme-btn.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}
.theme-btn:active{transform:scale(.95)}
