:root{
  --bg:#eef1f0;
  --surface:#ffffff;
  --surface-alt:#e2e9e7;
  --ink:#16211f;
  --muted:#56655f;
  --muted-2:#7b8b85;
  --accent:#146b63;
  --accent-ink:#ffffff;
  --accent-soft:#dcece9;
  --line:#d3dcd9;
  --line-strong:#b9c6c2;
  --ok:#2e7d4f;
  --ok-soft:#e1f0e6;
  --warn:#a8681a;
  --warn-soft:#f6e8d5;
  --beta:#8a7300;
  --beta-soft:#f7efc7;
  --tpl:#6e5b9e;
  --tpl-soft:#eae5f5;
  --console:#2f6fae;
  --console-soft:#dde8f5;
  --dll:#a13d5c;
  --dll-soft:#f5e2ea;
  --sdk:#4a5a7a;
  --sdk-soft:#e3e6ee;
  --danger:#b3412f;
  --danger-soft:#f6e2dd;
  --shadow: 0 1px 2px rgba(20,30,28,0.06), 0 6px 20px -8px rgba(20,30,28,0.12);
  color-scheme: light;
}
@media (prefers-color-scheme: dark){
  html:not(.theme-light){
    --bg:#10181a; --surface:#182322; --surface-alt:#1f2b29; --ink:#e9f1ee; --muted:#a3b6b0; --muted-2:#7e938c;
    --accent:#57c7b6; --accent-ink:#0a1918; --accent-soft:#1f3936; --line:#2a3634; --line-strong:#3b4b47;
    --ok:#6fbf8c; --ok-soft:#1c332356; --warn:#dba85b; --warn-soft:#3a2c1656; --beta:#e0c34c; --beta-soft:#3a331256; --tpl:#b6a3e6; --tpl-soft:#2c264656;
    --console:#7fb2e8; --console-soft:#1c2c3f56; --dll:#e08bab; --dll-soft:#3a1f2856; --sdk:#a9b8d9; --sdk-soft:#262c3956;
    --danger:#e2897a; --danger-soft:#3a221e56;
    --shadow: 0 1px 2px rgba(0,0,0,0.3), 0 10px 28px -10px rgba(0,0,0,0.45);
    color-scheme: dark;
  }
}
html.theme-dark{
  --bg:#10181a; --surface:#182322; --surface-alt:#1f2b29; --ink:#e9f1ee; --muted:#a3b6b0; --muted-2:#7e938c;
  --accent:#57c7b6; --accent-ink:#0a1918; --accent-soft:#1f3936; --line:#2a3634; --line-strong:#3b4b47;
  --ok:#6fbf8c; --ok-soft:#1c332356; --warn:#dba85b; --warn-soft:#3a2c1656; --beta:#e0c34c; --beta-soft:#3a331256; --tpl:#b6a3e6; --tpl-soft:#2c264656;
  --console:#7fb2e8; --console-soft:#1c2c3f56; --dll:#e08bab; --dll-soft:#3a1f2856; --sdk:#a9b8d9; --sdk-soft:#262c3956;
  --danger:#e2897a; --danger-soft:#3a221e56;
  --shadow: 0 1px 2px rgba(0,0,0,0.3), 0 10px 28px -10px rgba(0,0,0,0.45);
  color-scheme: dark;
}

*{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:"IBM Plex Sans", ui-sans-serif, system-ui, sans-serif; font-size:15px; line-height:1.5;
}
h1,h2,h3{ font-family:"IBM Plex Sans Condensed","IBM Plex Sans",sans-serif; text-wrap:balance; margin:0; }
.mono{ font-family:"IBM Plex Mono", ui-monospace, monospace; font-variant-numeric:tabular-nums; }
a{ color:inherit; }
button{ font:inherit; }
:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; border-radius:4px; }
@media (prefers-reduced-motion: reduce){ *{ animation-duration:0.001ms !important; transition-duration:0.001ms !important; } }

/* ---- layout shells ---- */
.centered-shell{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px; }
.auth-card{
  width:100%; max-width:400px; background:var(--surface); border:1px solid var(--line); border-radius:14px;
  padding:28px 26px; box-shadow:var(--shadow);
}
.auth-eyebrow{ font-family:"IBM Plex Mono"; font-size:11.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--muted-2); display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.auth-eyebrow .dot{ width:6px; height:6px; border-radius:50%; background:var(--accent); }
.auth-card h1{ font-size:22px; margin-bottom:18px; }

.app-shell{ max-width:1440px; margin:0 auto; padding:0 20px 60px; }
@media (max-width:480px){
  .app-shell{ padding:0 14px 40px; }
  .topbar{ padding:14px; }
  .brand h1{ font-size:18px; }
}
.topbar{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 20px; border-bottom:1px solid var(--line); margin-bottom:20px; flex-wrap:wrap; }
.brand{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.brand-eyebrow{ font-family:"IBM Plex Mono"; font-size:11.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--muted-2); display:flex; align-items:center; gap:8px; }
.brand-eyebrow .dot{ width:6px; height:6px; border-radius:50%; background:var(--accent); flex:none; }
.brand h1{ font-size:21px; font-weight:700; letter-spacing:-0.01em; }
.nav-toggle{ display:none; align-items:center; justify-content:center; width:38px; height:38px; border-radius:8px; border:1px solid var(--line); background:var(--surface); color:var(--ink); cursor:pointer; flex:none; }
.nav-toggle:hover{ background:var(--surface-alt); }
.nav-right{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.nav-link{ font-size:13.5px; font-weight:600; color:var(--muted); text-decoration:none; padding:7px 10px; border-radius:8px; }
.nav-link:hover{ background:var(--surface-alt); color:var(--ink); }
.nav-link.active{ background:var(--accent-soft); color:var(--accent); }
.role-pill{
  display:inline-flex; align-items:center; gap:6px; padding:5px 11px 5px 9px; border-radius:999px; font-size:12.5px;
  font-weight:600; font-family:"IBM Plex Mono"; white-space:nowrap; border:1px solid var(--line-strong); background:var(--surface); color:var(--muted);
}
.role-pill.is-admin{ background:var(--accent-soft); border-color:var(--accent); color:var(--accent); }
.role-pill.is-tecnico{ background:var(--tpl-soft); border-color:var(--tpl); color:var(--tpl); }
.role-pill .pip{ width:7px; height:7px; border-radius:50%; background:currentColor; }
.icon-btn{ display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; border-radius:8px; border:1px solid var(--line); background:var(--surface); color:var(--muted); cursor:pointer; }
.icon-btn:hover{ background:var(--surface-alt); color:var(--ink); }

/* ---- navegación móvil (menú "hamburguesa") ----
   Bajo 760px, el botón .nav-toggle se muestra y .nav-right se colapsa en un
   panel desplegable para no amontonar enlaces, la píldora de rol, el
   interruptor de tema y "Salir" en una sola fila estrecha. */
@media (max-width:760px){
  .nav-toggle{ display:inline-flex; }
  .nav-right{
    display:none; width:100%; order:3; flex-direction:column; align-items:stretch; gap:6px;
    margin-top:10px; padding-top:12px; border-top:1px solid var(--line);
  }
  .nav-right.is-open{ display:flex; }
  .nav-right .nav-link{ padding:10px 12px; }
  .nav-right .role-pill{ justify-content:center; }
  .nav-right .icon-btn{ width:100%; height:38px; }
  .nav-right .btn{ width:100%; justify-content:center; }
}

/* ---- forms ---- */
.field{ display:flex; flex-direction:column; gap:5px; margin-bottom:14px; }
.field label{ font-size:12.5px; font-weight:600; color:var(--muted); }
.field .hint{ font-size:11.5px; color:var(--muted-2); font-weight:400; }
input[type=text], input[type=password], input[type=date], input[type=number], input[type=url], input[type=email], input[type=file], select, textarea{
  padding:9px 11px; border-radius:8px; border:1px solid var(--line); background:var(--bg); color:var(--ink);
  font-size:14px; font-family:inherit; width:100%;
}
textarea{ resize:vertical; min-height:70px; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
@media (max-width:560px){ .field-row{ grid-template-columns:1fr; } }

/* iOS Safari hace zoom automático al enfocar un campo con font-size menor a
   16px; en móvil se sube el tamaño de fuente de los controles de formulario
   para evitarlo (en escritorio se mantiene el 14px original). */
@media (max-width:600px){
  input[type=text], input[type=password], input[type=date], input[type=number], input[type=url], input[type=email], input[type=file], select, textarea{
    font-size:16px;
  }
}

.btn{
  display:inline-flex; align-items:center; gap:7px; padding:9px 16px; border-radius:9px; border:1px solid var(--line-strong);
  background:var(--surface); color:var(--ink); font-weight:600; font-size:14px; cursor:pointer; white-space:nowrap; box-shadow:var(--shadow);
  text-decoration:none;
}
.btn:hover{ border-color:var(--muted-2); }
.btn.primary{ background:var(--accent); color:var(--accent-ink); border-color:transparent; }
.btn.primary:hover{ filter:brightness(1.06); }
.btn.block{ width:100%; justify-content:center; }
.btn.ghost{ box-shadow:none; border-color:transparent; }
.btn.ghost:hover{ background:var(--surface-alt); }
.btn.danger-ghost{ box-shadow:none; border-color:transparent; color:var(--danger); }
.btn.danger-ghost:hover{ background:var(--danger-soft); }
.btn.small{ padding:6px 11px; font-size:12.5px; }
.btn:disabled{ opacity:.5; cursor:not-allowed; }

/* ---- toolbar / filters ---- */
.toolbar{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-bottom:14px; }
.search-box{ flex:1 1 260px; display:flex; align-items:center; gap:8px; background:var(--surface); border:1px solid var(--line); border-radius:10px; padding:9px 12px; box-shadow:var(--shadow); }
.search-box svg{ flex:none; color:var(--muted-2); }
.search-box input{ border:none; background:none; outline:none; padding:0; box-shadow:none; }
.type-toggle{ display:flex; gap:4px; padding:4px; background:var(--surface-alt); border-radius:10px; flex:none; flex-wrap:wrap; max-width:100%; }
@media (max-width:600px){ .type-toggle{ flex-basis:100%; } }
.type-toggle a{ display:inline-block; padding:6px 12px; border-radius:7px; font-weight:600; font-size:13px; color:var(--muted); text-decoration:none; }
.type-toggle a.active{ background:var(--surface); color:var(--ink); box-shadow:var(--shadow); }
.chiprow{ display:flex; gap:8px; flex-wrap:wrap; overflow-x:auto; -webkit-overflow-scrolling:touch; padding-bottom:2px; margin-bottom:20px; }
.chip{ flex:none; padding:7px 13px; border-radius:999px; border:1px solid var(--line); background:var(--surface); font-size:13px; font-weight:600; color:var(--muted); text-decoration:none; }
.chip:hover{ border-color:var(--muted-2); }
.chip.active{ background:var(--ink); color:var(--bg); border-color:var(--ink); }

/* ---- catalog ---- */
.category-section{ margin-bottom:30px; }
.category-head{ display:flex; align-items:baseline; gap:10px; margin-bottom:12px; padding-bottom:8px; border-bottom:1px solid var(--line); }
.category-head h2{ font-size:19px; font-weight:600; }
.category-count{ font-family:"IBM Plex Mono"; font-size:12.5px; color:var(--muted-2); }
.model-group{ margin-bottom:20px; }
.model-head{ display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.model-head h3{ font-size:15px; font-weight:600; }
.count-badge{ font-family:"IBM Plex Mono"; font-size:11.5px; color:var(--muted-2); background:var(--surface-alt); padding:1px 7px; border-radius:6px; }
.version-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(300px,1fr)); gap:12px; }
.vcard{ background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:14px 15px; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:10px; }
.vcard-top{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.vtag{ font-family:"IBM Plex Mono"; font-size:16px; font-weight:600; letter-spacing:-0.01em; }
.badge-row{ display:flex; gap:6px; flex-wrap:wrap; }
.badge{ font-size:11px; font-weight:600; padding:3px 8px; border-radius:6px; font-family:"IBM Plex Mono"; letter-spacing:.02em; white-space:nowrap; }
.badge.fw{ background:var(--accent-soft); color:var(--accent); }
.badge.tpl{ background:var(--tpl-soft); color:var(--tpl); }
.badge.console{ background:var(--console-soft); color:var(--console); }
.badge.dll{ background:var(--dll-soft); color:var(--dll); }
.badge.sdk{ background:var(--sdk-soft); color:var(--sdk); }
.badge.ok{ background:var(--ok-soft); color:var(--ok); }
.badge.warn{ background:var(--warn-soft); color:var(--warn); }
.badge.beta{ background:var(--beta-soft); color:var(--beta); }
.badge.tag{ background:var(--surface-alt); color:var(--muted); }
.badge.locked{ background:var(--danger-soft); color:var(--danger); }
.module-line{ font-size:12.5px; color:var(--muted); }
.module-line strong{ color:var(--ink); font-weight:600; }
.vcard-meta{ display:flex; flex-wrap:wrap; column-gap:14px; row-gap:2px; font-size:12.5px; color:var(--muted); }
.vcard-changelog{ font-size:13.5px; color:var(--ink); line-height:1.5; white-space:pre-wrap; max-height:4.6em; overflow:hidden; }
.vcard-foot{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:auto; padding-top:10px; border-top:1px dashed var(--line); }
.file-info{ font-size:12px; color:var(--muted-2); display:flex; align-items:center; gap:6px; overflow:hidden; }
.file-info .fname{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:130px; }
.foot-actions{ display:flex; align-items:center; gap:2px; flex:none; }
.dl-btn{ display:inline-flex; align-items:center; gap:6px; padding:7px 12px; border-radius:8px; background:var(--ink); color:var(--bg); font-size:12.5px; font-weight:600; text-decoration:none; white-space:nowrap; }
.dl-btn:hover{ filter:brightness(1.15); }

.empty{ text-align:center; padding:56px 24px; border:1px dashed var(--line-strong); border-radius:14px; background:var(--surface); display:flex; flex-direction:column; align-items:center; gap:10px; }
.empty svg{ color:var(--muted-2); }
.empty h3{ font-size:17px; }
.empty p{ color:var(--muted); max-width:420px; font-size:14px; margin:0; }

/* ---- flash / alerts ---- */
.flash{ padding:11px 14px; border-radius:9px; font-size:13.5px; margin-bottom:14px; }
.flash.success{ background:var(--ok-soft); color:var(--ok); }
.flash.error{ background:var(--danger-soft); color:var(--danger); }
.flash.info{ background:var(--warn-soft); color:var(--warn); }
.form-error{ font-size:13px; color:var(--danger); background:var(--danger-soft); padding:9px 12px; border-radius:8px; margin-bottom:14px; }
.form-note{ font-size:12px; color:var(--muted-2); background:var(--surface-alt); padding:8px 11px; border-radius:8px; line-height:1.5; }

/* ---- tables (users admin) ---- */
.table-wrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--line); border-radius:12px; background:var(--surface); box-shadow:var(--shadow); }
table{ width:100%; border-collapse:collapse; font-size:13.5px; min-width:560px; }
th, td{ text-align:left; padding:11px 14px; border-bottom:1px solid var(--line); }
th{ font-size:11.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted-2); font-weight:600; }
tr:last-child td{ border-bottom:none; }
/* La última columna (acciones, p. ej. "Ver") queda fija a la derecha del
   área con desplazamiento horizontal, para que siempre esté visible sin
   tener que desplazar la tabla hasta el final en pantallas angostas. */
.table-wrap table th:last-child, .table-wrap table td:last-child{
  position:sticky; right:0; background:var(--surface); box-shadow:-6px 0 6px -6px rgba(20,30,28,0.15);
}

/* ---- attach panel ---- */
.attach-panel{ border:1px solid var(--line); border-radius:10px; padding:12px; display:flex; flex-direction:column; gap:12px; background:var(--bg); margin-bottom:14px; }
.current-file{ font-size:12.5px; color:var(--ink); display:flex; align-items:center; justify-content:space-between; gap:8px; background:var(--surface); padding:7px 10px; border-radius:7px; }
.file-drop{ border:1.5px dashed var(--line-strong); border-radius:8px; padding:14px; text-align:center; font-size:13px; color:var(--muted); cursor:pointer; }
.file-drop:hover{ border-color:var(--accent); color:var(--accent); }

footer.note{ margin-top:36px; padding-top:16px; border-top:1px solid var(--line); font-size:12px; color:var(--muted-2); line-height:1.6; }

/* ---- Gestión de Reparaciones ---- */
.equipo-card{ background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:16px 18px; box-shadow:var(--shadow); margin-bottom:20px; }
.equipo-card-top{ display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:10px; }
.equipo-card-top h2{ font-size:19px; }
.equipo-fields{ display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:10px 20px; font-size:13.5px; }
.equipo-fields dt{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted-2); font-weight:600; margin-bottom:2px; }
.equipo-fields dd{ margin:0; color:var(--ink); }

.section-heading{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin:28px 0 12px; }
.section-heading h2{ font-size:17px; }

.timeline-entry{ background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:14px 16px; box-shadow:var(--shadow); margin-bottom:12px; }
.timeline-entry-head{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px; margin-bottom:10px; padding-bottom:10px; border-bottom:1px solid var(--line); }
.timeline-entry-head .mono{ color:var(--muted-2); font-size:12.5px; }
.timeline-label{ font-size:12px; font-weight:600; color:var(--muted); }
.timeline-field{ margin-bottom:8px; }
.timeline-field:last-child{ margin-bottom:0; }
.timeline-field .k{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted-2); font-weight:600; margin-bottom:3px; }
.timeline-field .v{ font-size:13.5px; color:var(--ink); white-space:pre-wrap; line-height:1.5; }
.timeline-actions{ display:flex; gap:2px; }

.parts-table-wrap{ margin-top:10px; overflow-x:auto; -webkit-overflow-scrolling:touch; }
.parts-table{ width:100%; border-collapse:collapse; font-size:12.5px; }
.parts-table th, .parts-table td{ text-align:left; padding:6px 8px; border-bottom:1px solid var(--line); }
.parts-table th{ font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted-2); font-weight:600; }

.thumb-grid{ display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
.thumb{ width:96px; height:96px; border-radius:8px; overflow:hidden; border:1px solid var(--line); background:var(--surface-alt); display:block; }
.thumb img{ width:100%; height:100%; object-fit:cover; display:block; }

/* Miniatura con casilla "Eliminar" debajo, usada al editar una revisión o
   reparación (a diferencia de .thumb, no recorta el contenido: aquí el
   checkbox necesita su propio espacio bajo la imagen). */
.thumb-edit{ width:112px; display:flex; flex-direction:column; gap:4px; }
.thumb-edit img{ width:112px; height:96px; object-fit:cover; border-radius:8px; border:1px solid var(--line); background:var(--surface-alt); display:block; }
.thumb-edit label{ display:flex; align-items:center; gap:5px; font-size:11px; color:var(--danger); }

/* Ventana emergente para ver una foto de evidencia en grande, más pequeña
   que la pantalla completa, con botón de cerrar (ver initLightbox en
   assets/app.js). */
.lightbox{ position:fixed; inset:0; z-index:200; background:rgba(10,18,16,0.72); display:flex; align-items:center; justify-content:center; padding:40px; }
.lightbox[hidden]{ display:none; }
.lightbox-inner{ position:relative; max-width:min(480px,90vw); max-height:min(480px,85vh); background:var(--surface); border-radius:10px; padding:10px; box-shadow:var(--shadow); }
.lightbox-inner img{ display:block; max-width:100%; max-height:calc(min(480px,85vh) - 20px); border-radius:6px; object-fit:contain; }
.lightbox-close{ position:absolute; top:-14px; right:-14px; width:30px; height:30px; border-radius:50%; background:var(--surface); border:1px solid var(--line-strong); display:flex; align-items:center; justify-content:center; cursor:pointer; box-shadow:var(--shadow); color:var(--ink); padding:0; }
.lightbox-close:hover{ color:var(--danger); border-color:var(--danger); }

.repeat-row{ display:grid; grid-template-columns:1fr 1fr 90px 34px; gap:8px; align-items:end; margin-bottom:8px; }
@media (max-width:560px){ .repeat-row{ grid-template-columns:1fr 1fr; } .repeat-row .field:nth-child(3){ grid-column:1; } .repeat-row .rm-row{ grid-column:2; } }
.repeat-row .field{ margin-bottom:0; }
.rm-row{ display:flex; align-items:center; justify-content:center; height:38px; }

.serie-picker{ position:relative; }
.serie-suggestions{ position:absolute; z-index:5; left:0; right:0; top:100%; margin-top:4px; background:var(--surface); border:1px solid var(--line-strong); border-radius:10px; box-shadow:var(--shadow); max-height:220px; overflow-y:auto; }
.serie-suggestions button{ display:block; width:100%; text-align:left; padding:9px 12px; border:none; background:none; font:inherit; font-size:13px; color:var(--ink); cursor:pointer; border-bottom:1px solid var(--line); }
.serie-suggestions button:last-child{ border-bottom:none; }
.serie-suggestions button:hover{ background:var(--surface-alt); }
.serie-suggestions .sub{ display:block; font-size:11.5px; color:var(--muted-2); margin-top:1px; }
.readonly-note{ font-size:11.5px; color:var(--muted-2); margin-top:3px; }

.card-panel{ background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:22px; box-shadow:var(--shadow); max-width:640px; }
.card-panel.wide{ max-width:900px; }
.card-panel + .card-panel{ margin-top:20px; }

/* ---- ficha de personal (Mi cuenta / Usuarios) ---- */
.form-section{ margin-top:26px; padding-top:18px; border-top:1px solid var(--line); }
.form-section h3{ font-size:15px; margin-bottom:12px; }
.subhead{ font-size:12.5px; font-weight:600; color:var(--muted); margin:4px 0 8px; }
.field-row-3{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px; }
@media (max-width:700px){ .field-row-3{ grid-template-columns:1fr; } }
.cert-row{ border:1px solid var(--line); border-radius:10px; padding:12px 14px; margin-bottom:10px; background:var(--bg); }
.cert-row-head{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }
.cert-row-title{ font-size:12.5px; font-weight:600; color:var(--muted); }

[hidden]{ display:none !important; }
.cert-row input[type=text], .cert-row input[type=date], .cert-row input[type=file]{ background:var(--surface); }

/* Campos asignados por un administrador (solo lectura para el resto) */
input:disabled { cursor: not-allowed; color: var(--muted); opacity: .85; }

input[readonly] { cursor: default; color: var(--muted); }
fieldset.equip-fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }

/* ---- L3 Issue Tracking ---- */
input[type=datetime-local]{
  padding:9px 11px; border-radius:8px; border:1px solid var(--line); background:var(--bg); color:var(--ink);
  font-size:14px; font-family:inherit; width:100%;
}
.l3-head{ display:flex; flex-wrap:wrap; gap:14px; align-items:flex-start; justify-content:space-between; }
.l3-head-actions{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.l3-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); gap:14px 22px; margin:0; }
.l3-item{ min-width:0; }
.l3-item.wide{ grid-column:1 / -1; }
.l3-item dt{ font-size:12px; font-weight:600; color:var(--muted); margin:0 0 3px; }
.l3-item dd{ margin:0; font-size:14px; line-height:1.55; overflow-wrap:anywhere; }
.l3-linkbox{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.l3-linkbox input{ flex:1 1 320px; font-family:"IBM Plex Mono", ui-monospace, monospace; font-size:12.5px; }
.l3-model-row{ display:grid; grid-template-columns:2fr 1fr 1fr auto; gap:8px; align-items:end; margin-bottom:8px; }
.l3-model-row .field{ margin-bottom:0; }
@media (max-width:560px){ .l3-model-row{ grid-template-columns:1fr 1fr; } .l3-model-row .field:first-child{ grid-column:1 / -1; } .l3-model-row button{ grid-column:1 / -1; justify-self:end; } }
