/* =============================================================================
   modules/tecnico/static/css/tecnico.css — Portal de Técnicos
   Standalone: no extiende base.html (sin sidebar/navbar), pero reutiliza las
   variables CSS de static/css/base.css (linkeado en cada template). Prefijo
   .tc- obligatorio en TODAS las clases. Mobile-first desde 320px.
   ============================================================================= */

*{box-sizing:border-box;}
body.tc-body{
    background:var(--bg);color:var(--tx);
    font-family:system-ui,sans-serif;
    min-height:100vh;margin:0;
}

/* ── Tamaño de fuente accesible (perfil → data-font en <html>) ────────────── */
/* Casi todos los font-size de este archivo están en px fijos (no rem), así que
   cambiar el font-size del <html> por sí solo no escala el texto. Se usa zoom
   sobre .tc-body para lograr el escalado real; la regla de font-size% queda
   igual como base semántica del atributo. */
[data-font="grande"]     { font-size: 112%; }
[data-font="muy_grande"] { font-size: 125%; }
html[data-font="grande"] body.tc-body     { zoom: 1.12; }
html[data-font="muy_grande"] body.tc-body { zoom: 1.25; }

/* ── Login ────────────────────────────────────────────────────────────────── */
.tc-login-wrap{
    min-height:100vh;display:flex;align-items:center;justify-content:center;
    padding:1.25rem;
}
.tc-login-card{
    background:var(--bg2);border:1px solid var(--bd);border-radius:14px;
    padding:2.25rem 1.75rem;width:100%;max-width:360px;
    box-shadow:0 20px 60px rgba(0,0,0,.4);
}
.tc-login-logo{text-align:center;margin-bottom:1.75rem;}
.tc-login-logo-img{max-height:48px;max-width:100%;margin-bottom:.5rem;}
.tc-login-logo h1{font-size:22px;font-weight:600;letter-spacing:-.02em;color:var(--tx);}
.tc-login-logo h1 span{color:var(--accent);}
.tc-login-logo p{font-size:13px;color:var(--tx2);margin-top:4px;}
.tc-field{margin-bottom:1rem;}
.tc-field label{display:block;font-size:13px;color:var(--tx2);margin-bottom:6px;}
.tc-input{
    width:100%;background:var(--bg3);border:1px solid var(--bd2);border-radius:var(--r);
    padding:12px 14px;color:var(--tx);font-size:15px;outline:none;
    transition:border-color .2s,box-shadow .2s;
}
.tc-input:focus{border-color:var(--accent);box-shadow:0 0 8px rgba(99,102,241,.2);}
.tc-btn{
    width:100%;background:var(--accent);color:#fff;border:none;border-radius:var(--r);
    padding:14px;font-size:15px;font-weight:600;cursor:pointer;margin-top:.5rem;
    transition:opacity .15s;min-height:48px;
}
.tc-btn:hover{opacity:.9;}
.tc-btn:active{transform:scale(.98);}
.tc-error{
    background:rgba(239,68,68,.1);border:1px solid var(--red);color:var(--red);
    box-shadow:var(--glow-red);border-radius:var(--r);padding:.7rem 1rem;
    font-size:13px;margin-bottom:1rem;
}

/* ── Header fijo ──────────────────────────────────────────────────────────── */
.tc-header{
    position:sticky;top:0;z-index:30;background:var(--bg2);border-bottom:1px solid var(--bd);
    padding:.85rem 1rem;display:flex;align-items:center;gap:.75rem;
}
.tc-avatar{
    width:38px;height:38px;border-radius:50%;background:var(--bg-accent);color:var(--accent);
    display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;
    border:1px solid var(--accent);flex-shrink:0;overflow:hidden;
}
.tc-avatar-img{width:100%;height:100%;object-fit:cover;}
.tc-header-link{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0;text-decoration:none;}
.tc-header-info{flex:1;min-width:0;}
.tc-header-nombre{font-size:14px;font-weight:600;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tc-header-fecha{font-size:11.5px;color:var(--tx2);text-transform:capitalize;}
.tc-header-nav{display:flex;gap:.4rem;}
.tc-header-btn{
    display:flex;align-items:center;justify-content:center;
    width:40px;height:40px;border-radius:var(--r);border:1px solid var(--bd2);
    background:var(--bg3);color:var(--tx2);text-decoration:none;font-size:18px;
}
.tc-header-btn.active{background:var(--bg-accent);color:var(--accent);border-color:var(--accent);}
.tc-header-btn.tc-logout{color:var(--red);}

.tc-wrap{max-width:640px;margin:0 auto;padding:1rem;}
/* Sin margen/padding lateral — usada en inicio.html, donde .tc-list-row ya
   trae su propio padding de 12px y no necesita el inset del wrap. */
.tc-wrap-flush{padding-left:0;padding-right:0;}

/* ── Tabs de /tecnico/ (inicio) ───────────────────────────────────────────── */
.tc-tabs-bar{display:flex;border-bottom:1px solid var(--bd);margin:0;padding:0;width:100%;}
.tc-tab{
    flex:1;background:none;border:none;border-bottom:2px solid transparent;
    text-align:center;padding:8px 4px;font-size:11px;font-weight:600;
    color:var(--tx3);cursor:pointer;font-family:inherit;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
#tc-tab-hacer.active{color:var(--accent);border-bottom-color:var(--accent);}
#tc-tab-progreso.active{color:var(--amber);border-bottom-color:var(--amber);}
#tc-tab-completadas.active{color:var(--green);border-bottom-color:var(--green);}
.tc-tab-panel{display:none;margin-top:1rem;}

/* ── Lista compacta con separador de hora (tabs de /tecnico/) ─────────────── */
/* .tc-list vive dentro de .tc-wrap-flush (sin padding lateral, ver arriba),
   así que no necesita margen negativo — cada fila ya trae su propio padding
   de 12px como único inset lateral. */
.tc-list{margin:0;}
.tc-hora-sep{
    display:flex;align-items:center;gap:6px;padding:8px 12px 4px;
}
.tc-hora-badge{
    font-size:10px;font-weight:600;color:var(--accent);background:var(--bg-accent);
    padding:2px 8px;border-radius:20px;flex-shrink:0;
}
.tc-badge-vencida{
    font-size:10px;font-weight:600;color:var(--red);background:rgba(239,68,68,.12);
    padding:2px 8px;border-radius:20px;flex-shrink:0;
}
.tc-hora-line{flex:1;height:0.5px;background:var(--bd);}
.tc-list-row{
    display:flex;align-items:center;gap:8px;padding:9px 12px;
    border-bottom:0.5px solid var(--bd);cursor:pointer;width:100%;box-sizing:border-box;
}
.tc-list-row:last-child{border-bottom:none;}
.tc-list-row:hover{background:var(--bg2);}
.tc-list-icon{
    width:34px;height:34px;border-radius:8px;display:flex;align-items:center;
    justify-content:center;flex-shrink:0;font-size:15px;
}
.tc-icon-op{background:rgba(245,158,11,.12);color:var(--amber);}
.tc-icon-inst{background:var(--bg-accent);color:var(--accent);}
.tc-list-info{flex:1;min-width:0;}
.tc-list-name{
    font-size:12px;font-weight:500;color:var(--tx);white-space:nowrap;
    overflow:hidden;text-overflow:ellipsis;
}
.tc-list-sub{font-size:10px;color:var(--tx3);margin-top:1px;}
.tc-list-btn{
    font-size:10px;padding:5px 9px;border-radius:6px;border:none;
    background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;
    flex-shrink:0;font-weight:500;display:inline-block;
}
.tc-list-btn.completar{background:var(--green);}

/* ── Grupos y cards de OT ─────────────────────────────────────────────────── */
.tc-grupo-titulo{
    font-size:13px;font-weight:700;color:var(--tx2);text-transform:uppercase;
    letter-spacing:.04em;margin:1.5rem 0 .6rem;
}
.tc-grupo-titulo:first-child{margin-top:0;}
.tc-empty{
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    text-align:center;color:var(--tx3);padding:2.5rem 1rem;gap:.5rem;
}
.tc-empty i{font-size:36px;}
.tc-empty p{font-size:13px;margin:0;}

.tc-card{
    background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r);
    padding:1rem;margin-bottom:.85rem;
}
.tc-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;}
.tc-cliente{font-size:16px;font-weight:700;color:var(--tx);}
.tc-dir{font-size:13px;color:var(--tx2);margin-top:2px;}
.tc-meta{display:flex;flex-wrap:wrap;gap:.5rem;margin:.6rem 0;}
.tc-meta span{font-size:12px;color:var(--tx2);background:var(--bg3);border-radius:20px;padding:3px 10px;}
.tc-hist-card-link{text-decoration:none;color:inherit;display:block;}
.tc-ver-detalle{
    display:block;text-align:center;background:var(--bg3);border:1px solid var(--bd);
    border-radius:20px;padding:6px 16px;font-size:12px;color:var(--tx2);
    margin:10px 0 8px;text-decoration:none;
}
.tc-ver-detalle:hover{background:var(--bd);color:var(--tx);}
.tc-mt-0{margin-top:0;}
.tc-mt-1{margin-top:1rem;}

/* Badge de tipo de OT */
.tc-tipo{
    display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;
    font-size:11px;font-weight:600;text-transform:capitalize;
}
.tc-tipo-instalacion{background:var(--bg-accent);color:var(--accent);border:1px solid var(--accent);}
.tc-tipo-baja{background:rgba(239,68,68,.12);color:var(--red);border:1px solid rgba(239,68,68,.35);}
.tc-tipo-reclamo{background:rgba(245,158,11,.12);color:var(--amber);border:1px solid rgba(245,158,11,.35);}
.tc-tipo-visita{background:var(--bg-accent);color:var(--accent);border:1px solid var(--accent);}
.tc-tipo-tarea_operativa{background:rgba(245,158,11,.12);color:var(--amber);border:1px solid rgba(245,158,11,.35);}

/* Badge de estado (historial / detalle) */
.tc-badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:11.5px;font-weight:600;white-space:nowrap;}
.tc-badge-pendiente{background:rgba(245,158,11,.12);color:var(--amber);border:1px solid rgba(245,158,11,.35);}
.tc-badge-asignada{background:rgba(59,130,246,.12);color:var(--blue);border:1px solid rgba(59,130,246,.35);}
.tc-badge-en_progreso{background:var(--bg-accent);color:var(--accent);border:1px solid var(--accent);}
.tc-badge-completada{background:var(--bg3);color:var(--tx2);border:1px solid var(--bd2);}
.tc-badge-aprobada{background:rgba(34,197,94,.12);color:var(--green);border:1px solid rgba(34,197,94,.35);}
.tc-badge-rechazada{background:rgba(239,68,68,.12);color:var(--red);border:1px solid rgba(239,68,68,.35);}
.tc-badge-error_ejecucion{background:rgba(239,68,68,.12);color:var(--red);border:1px solid var(--red);box-shadow:var(--glow-red);}
.tc-badge-senal-baja{background:rgba(245,158,11,.12);color:var(--amber);border:1px solid rgba(245,158,11,.35);margin-bottom:1rem;gap:6px;}

.tc-btn-grande{
    width:100%;padding:14px;border:none;border-radius:var(--r);font-size:15px;font-weight:700;
    cursor:pointer;margin-top:.4rem;min-height:48px;transition:transform .12s ease,opacity .12s ease;
}
.tc-btn-iniciar{background:var(--accent);color:#fff;}
.tc-btn-completar{background:var(--green);color:#08210f;}
/* Trigger "Completar tarea" en la card del tab En progreso — texto blanco,
   a diferencia de .tc-btn-completar (texto oscuro, usado en los submit
   "Enviar para revisión"/"Solicitar excepción" del formulario de completar,
   sin tocar). */
.tc-btn-completar-tarea{background:var(--green);color:#fff;}
.tc-btn-grande:active{transform:scale(.98);}
.tc-btn-grande:hover{opacity:.92;}

/* ── Formularios inline (completar / editar) ─────────────────────────────── */
.tc-form{margin-top:.85rem;padding-top:.85rem;border-top:1px solid var(--bd);display:none;}
.tc-form.tc-abierto{display:block;}
.tc-form label{display:block;font-size:12.5px;color:var(--tx2);margin:.6rem 0 4px;}
.tc-form .tc-input, .tc-form .tc-select, .tc-form .tc-textarea{font-size:15px;padding:12px;}
.tc-select, .tc-textarea{
    width:100%;background:var(--bg3);border:1px solid var(--bd2);border-radius:var(--r);
    color:var(--tx);padding:12px;font-size:15px;outline:none;appearance:none;
    transition:border-color .2s, box-shadow .2s;
}
.tc-select:focus, .tc-textarea:focus{border-color:var(--accent);box-shadow:0 0 8px rgba(99,102,241,.2);}
.tc-textarea{resize:vertical;min-height:70px;}
.tc-select{
    padding-right:32px;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6' fill='none'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%239098c0' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat:no-repeat;background-position:right 12px center;
}

/* ── Umbral de señal óptica al completar (JS en vivo) ─────────────────────── */
.tc-senal-hint{display:block;font-size:12.5px;margin-top:4px;}
.tc-senal-hint-ok{color:var(--green);}
.tc-senal-hint-warn{color:var(--amber);}
.tc-excepcion-block{
    display:none;margin-top:.75rem;padding:.85rem;border-radius:var(--r);
    background:rgba(245,158,11,.08);border:1px solid var(--amber);
}
.tc-excepcion-block.tc-abierto{display:block;}
.tc-excepcion-header{display:flex;align-items:center;gap:6px;color:var(--amber);font-weight:700;font-size:13.5px;margin-bottom:.5rem;}
.tc-excepcion-dato{font-size:13px;color:var(--tx2);margin-bottom:.5rem;}
.tc-excepcion-dato b{color:var(--tx);}
.tc-pon-row{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;}
.tc-form-actions{display:flex;gap:.5rem;margin-top:.85rem;}
.tc-form-actions .tc-btn-grande{margin-top:0;}
.tc-btn-secundario{background:var(--bg3);color:var(--tx2);border:1px solid var(--bd2);}

/* ── Detalle de OT ────────────────────────────────────────────────────────── */
.tc-acciones-fila{display:flex;gap:8px;margin-top:12px;}
/* Especificidad a propósito sobre .tc-btn-secundario (más abajo, ya usado
   junto con .tc-btn-grande en los Cancelar de los formularios) — así estos
   botones puntuales de la fila de acciones no cambian el look de esos otros. */
.tc-acciones-fila .tc-btn-secundario{
    flex:1;padding:10px 14px;font-size:13px;font-weight:500;text-align:center;
    border-radius:var(--r);border:0.5px solid var(--bd);background:var(--bg3);color:var(--tx2);
}
.tc-btn-primario{
    flex:2;padding:10px 14px;font-size:13px;font-weight:500;text-align:center;
    border-radius:var(--r);border:none;background:var(--green);color:#fff;
}
.tc-dato-fila{display:flex;justify-content:space-between;align-items:flex-start;padding:5px 0;gap:12px;}
.tc-dato-label{
    font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:.04em;
    flex-shrink:0;
}
.tc-dato-valor{font-size:13px;color:var(--tx);text-align:right;}
.tc-notas-box{
    background:rgba(99,102,241,.08);border-left:3px solid var(--accent);
    border-radius:0 6px 6px 0;padding:12px;margin:12px 0;
}
.tc-notas-title{
    font-size:10px;font-weight:500;color:var(--accent);text-transform:uppercase;
    letter-spacing:.05em;margin:0 0 4px;
}
.tc-notas-texto{font-size:13px;color:var(--tx);margin:0;line-height:1.5;}
.tc-nota{margin-top:.85rem;font-size:13px;color:var(--tx2);}
.tc-nota + .tc-nota{margin-top:.5rem;}
.tc-subtitulo{margin-top:1rem;font-size:13px;color:var(--tx2);}
.tc-fotos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:.5rem;margin-top:.5rem;}
.tc-foto-thumb{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--r);border:1px solid var(--bd);}
.tc-readonly-banner{
    background:var(--bg-accent);border:1px solid var(--accent);color:var(--tx);
    border-radius:var(--r);padding:.65rem 1rem;font-size:12.5px;margin-bottom:1rem;
}
.tc-banner-reabierta{
    background:rgba(245,158,11,.08);border:1px solid var(--amber);color:var(--tx);
    border-radius:var(--r);padding:.65rem 1rem;font-size:12.5px;margin-bottom:1rem;
    display:flex;align-items:center;gap:6px;
}
.tc-banner-reabierta i{color:var(--amber);flex-shrink:0;}

/* ── Herramientas (/tecnico/herramientas) ─────────────────────────────────── */
.tc-herramientas-grid{display:grid;grid-template-columns:1fr;gap:.85rem;}
.tc-herramienta-card{
    display:flex;flex-direction:column;gap:.5rem;text-align:left;
    background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r);
    padding:1.1rem;text-decoration:none;color:inherit;
    transition:border-color .15s ease,transform .12s ease;
}
.tc-herramienta-card:hover{border-color:var(--accent);}
.tc-herramienta-card:active{transform:scale(.98);}
.tc-herramienta-icon{
    width:44px;height:44px;border-radius:10px;background:var(--bg-accent);color:var(--accent);
    display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;
}
.tc-herramienta-titulo{font-size:15px;font-weight:700;color:var(--tx);}
.tc-herramienta-desc{font-size:12.5px;color:var(--tx2);margin-top:2px;}
.tc-herramienta-abrir{font-size:12.5px;font-weight:600;color:var(--accent);margin-top:.2rem;}

@media (min-width:768px){
    .tc-herramientas-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));}
}

/* ── Test ONU (/tecnico/herramientas/test-onu) ────────────────────────────── */
.tc-card label{display:block;font-size:12.5px;color:var(--tx2);margin:.6rem 0 4px;}
.tc-card label:first-child{margin-top:0;}
.tou-oculto{display:none;}
/* Botón "Escanear SN" + resultados — mismo estilo que "Escanear PON" del
   panel admin (modules/sistema/static/css/sistema.css, prefijo .tou-*
   compartido a propósito entre los dos Test ONU). */
.tou-btn-scan{
    display:inline-flex;align-items:center;gap:6px;
    padding:7px 16px;border-radius:6px;background:var(--cyan);color:#fff;
    border:none;font-size:13px;font-weight:500;cursor:pointer;
    margin-bottom:12px;transition:opacity .15s;width:100%;justify-content:center;
}
.tou-btn-scan:hover{opacity:.85;}
.tou-btn-scan:disabled{opacity:.5;cursor:wait;}
.tou-uncfg-item{
    display:flex;align-items:center;justify-content:space-between;
    padding:9px 12px;background:var(--bg3);border:1px solid var(--bd);
    border-radius:var(--r);margin-bottom:6px;cursor:pointer;gap:10px;
}
.tou-uncfg-item:hover{border-color:var(--accent);}
.tou-uncfg-sn{font-family:monospace;font-size:13px;font-weight:700;color:var(--tx);margin-right:8px;}
.tou-uncfg-iface{font-size:11px;color:var(--tx3);font-family:monospace;}
.tou-uncfg-btn{
    background:var(--bg-accent);color:var(--accent);border:1px solid var(--accent);
    border-radius:var(--r);padding:6px 10px;font-size:12px;font-weight:600;
    cursor:pointer;flex-shrink:0;white-space:nowrap;
}
.tou-baja-item{
    display:flex;justify-content:space-between;align-items:center;gap:.75rem;
    background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r);
    padding:.85rem 1rem;margin-bottom:.6rem;
}
.tou-baja-sn{font-size:13px;font-weight:600;color:var(--tx);}
.tou-baja-meta{font-size:11px;color:var(--tx3);margin-top:2px;}
.tc-btn-peligro-sm{
    background:rgba(239,68,68,.1);color:var(--red);border:1px solid var(--red);
    border-radius:var(--r);padding:7px 12px;font-size:12.5px;font-weight:600;
    cursor:pointer;flex-shrink:0;white-space:nowrap;
}
.tc-btn-peligro-sm:disabled{opacity:.6;cursor:default;}

/* ── Historial (tabla desktop 1024px+) ────────────────────────────────────── */
.tc-hist-wrap{max-width:1100px;margin:0 auto;padding:1rem;}
.tc-hist-aviso{font-size:12.5px;color:var(--tx2);margin-bottom:1rem;}
.tc-tabla-scroll{overflow-x:auto;border:1px solid var(--bd);border-radius:var(--r);}
.tc-tabla{width:100%;border-collapse:collapse;font-size:12.5px;min-width:600px;}
.tc-tabla thead th{
    background:var(--bg2);color:var(--tx3);padding:8px 12px;text-align:left;
    border-bottom:1px solid var(--bd);font-weight:600;white-space:nowrap;
    font-size:11px;text-transform:uppercase;letter-spacing:.03em;
}
.tc-tabla td{padding:9px 12px;border-bottom:1px solid var(--bd);color:var(--tx2);vertical-align:middle;}
.tc-tabla tr:last-child td{border-bottom:none;}
.tc-tabla tr:hover td{background:var(--bg3);}
.tc-tabla .tc-nm{color:var(--tx);font-weight:600;}
.tc-tabla-cliente-dir{font-size:11px;color:var(--tx3);}
.tc-paginacion{display:flex;justify-content:center;align-items:center;gap:.75rem;margin-top:1.25rem;}
.tc-pag-btn{
    padding:8px 14px;border-radius:var(--r);border:1px solid var(--bd2);background:var(--bg2);
    color:var(--tx2);text-decoration:none;font-size:13px;
}
.tc-pag-btn.tc-disabled{opacity:.4;pointer-events:none;}
.tc-pag-info{font-size:12.5px;color:var(--tx2);}

/* Cards de historial en mobile (<1024px) */
.tc-hist-cards{display:block;}
.tc-hist-tabla-cont{display:none;}

/* ── Perfil (avatar / contraseña / tema) ──────────────────────────────────── */
.tc-msg-ok{
    background:rgba(34,197,94,.1);border:1px solid var(--green);color:var(--green);
    border-radius:var(--r);padding:.7rem 1rem;font-size:13px;margin-bottom:1rem;
    display:flex;align-items:center;gap:6px;
}
.tc-error{display:flex;align-items:center;gap:6px;}
.tc-perfil-header{text-align:center;}
.tc-perfil-avatar-grande{
    width:88px;height:88px;border-radius:50%;margin:0 auto .75rem;overflow:hidden;
    border:3px solid var(--accent);background:var(--bg3);
}
.tc-perfil-avatar-grande img{width:100%;height:100%;object-fit:cover;}
.tc-perfil-nombre{font-size:17px;font-weight:700;color:var(--tx);}
.tc-perfil-username{font-size:13px;color:var(--tx2);margin-top:2px;}
.tc-perfil-titulo{font-size:14px;font-weight:700;color:var(--tx);margin-bottom:.85rem;}
.tc-perfil-avatar-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem;}
.tc-perfil-avatar-form{margin:0;}
.tc-perfil-avatar-opt{
    width:100%;aspect-ratio:1;border-radius:50%;overflow:hidden;padding:0;
    border:3px solid transparent;background:var(--bg3);cursor:pointer;
}
.tc-perfil-avatar-opt img{width:100%;height:100%;object-fit:cover;display:block;}
.tc-perfil-avatar-opt.tc-selected{border-color:var(--accent);}
.tc-perfil-divisor{border-top:1px solid var(--bd);margin:1rem 0;}
.tc-perfil-tema-opts{display:flex;gap:.6rem;}
.tc-perfil-tema-btn{
    flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;
    padding:.85rem .5rem;border-radius:var(--r);border:1px solid var(--bd2);
    background:var(--bg3);color:var(--tx2);font-size:12.5px;font-weight:600;cursor:pointer;
}
.tc-perfil-tema-btn i{font-size:20px;}
.tc-perfil-tema-btn.tc-selected{background:var(--bg-accent);color:var(--accent);border-color:var(--accent);}

.tc-radio-group{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.25rem;}
.tc-radio-item{
    display:flex;align-items:center;gap:.6rem;padding:.7rem .85rem;
    border-radius:var(--r);border:1px solid var(--bd2);background:var(--bg3);cursor:pointer;
}
.tc-radio-item:has(input:checked){border-color:var(--accent);background:var(--bg-accent);}
.tc-radio-item input[type="radio"]{accent-color:var(--accent);width:16px;height:16px;flex-shrink:0;}
.tc-radio-item span{font-size:13px;color:var(--tx);}
.tc-radio-item .tc-radio-desc{font-size:11.5px;color:var(--tx3);margin-left:auto;}

/* ── Responsive ───────────────────────────────────────────────────────────── */
@media (min-width: 768px){
    .tc-wrap:not(.tc-wrap-flush){padding:1.5rem;}
    .tc-pon-row{grid-template-columns:1fr 1fr;}
}

@media (min-width: 1024px){
    .tc-hist-cards{display:none;}
    .tc-hist-tabla-cont{display:block;}
}

/* ── Layout dos columnas en desktop (inicio.html, ≥1024px) ────────────────── */
/* .tc-col-detalle oculto por default — solo existe para el layout desktop,
   en mobile la fila navega directo a /tecnico/ot/<id> (ver tcFilaClick). */
.tc-col-detalle{display:none;}

@media (min-width: 1024px){
    /* .tc-wrap tiene margin:0 auto (base.css comparte body{display:flex;
       flex-direction:column} con el panel admin) — como hijo flex con
       márgenes auto en el eje transversal, NO estira: se dimensiona por su
       contenido (fit-content) y se centra, dejando espacio vacío a los
       costados (mucho más visible cuando el panel de detalle está casi
       vacío). margin:0 acá restaura el stretch normal de align-items.
       max-width/padding ya estaban, pero sin esto seguían sin efecto real. */
    .tc-wrap-flush{max-width:none;margin:0;padding:0;width:100%;}

    /* Grid Master-Detail — antes flex, la columna derecha quedaba enorme
       y vacía con .tc-card (pensada para mobile, ancho acotado) flotando
       chica en el medio. Con grid de columnas fijas + .tc-col-detalle sin
       tope de ancho, el panel de detalle ocupa todo el espacio real. */
    .tc-desktop-layout{
        display:grid;
        grid-template-columns:360px 1fr;
        gap:0;
        height:calc(100vh - 80px);
        overflow:hidden;
        margin:0;
        padding:0;
        width:100%;
    }
    .tc-col-lista{
        margin-left:0;
        padding-left:0;
        width:100%;
        border-right:0.5px solid var(--bd);
        overflow-y:auto;
        background:var(--bg2);
        padding:1rem 0;
    }
    .tc-col-detalle{
        display:block;
        overflow-y:auto;
        padding:24px 32px;
        background:var(--bg);
    }

    /* Lista — con 360px fijos el texto ya no se corta, filas más cómodas */
    .tc-list-row{padding:12px 16px;gap:12px;}
    .tc-list-name{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
    .tc-list-sub{font-size:11px;}
    .tc-list-btn{font-size:11px;padding:6px 12px;border-radius:6px;}
    .tc-list-icon{width:36px;height:36px;}
    .tc-hora-badge{font-size:11px;padding:3px 10px;}
    .tc-list-row.active{background:var(--bg-accent);}

    /* Panel de detalle — .tc-card ya no es una tarjeta flotante (sin fondo/
       borde propio, el panel entero hace de contenedor); los .tc-dato-fila
       pasan a grid de 2 columnas tipo tabla, y notas/fotos/acciones ocupan
       el ancho completo del panel. */
    .tc-col-detalle .tc-grupo-titulo{
        font-size:20px;font-weight:600;color:var(--tx);
        text-transform:none;letter-spacing:normal;margin:0 0 8px;
    }
    .tc-col-detalle .tc-tipo{margin-right:8px;margin-bottom:20px;}
    .tc-col-detalle .tc-badge{margin-bottom:20px;}

    .tc-col-detalle .tc-card{
        display:grid;grid-template-columns:1fr 1fr;gap:0;
        background:none;border:none;border-radius:0;padding:0;margin:0;
    }
    .tc-col-detalle .tc-dato-fila{
        flex-direction:column;align-items:flex-start;gap:2px;
        padding:10px 16px;border:0.5px solid var(--bd);
    }
    .tc-col-detalle .tc-dato-valor{text-align:left;font-weight:500;}
    .tc-col-detalle .tc-notas-box,
    .tc-col-detalle .tc-nota,
    .tc-col-detalle .tc-subtitulo,
    .tc-col-detalle .tc-fotos-grid,
    .tc-col-detalle .tc-acciones-fila{
        grid-column:1/-1;
    }
    .tc-col-detalle .tc-notas-box{padding:16px;}
    .tc-col-detalle .tc-notas-texto{font-size:14px;line-height:1.6;}
    /* justify-content:flex-start — sin esto, .tc-btn-primario solo (estado
       "asignada", sin botón "Editar" al lado) queda con flex:2 (heredado de
       la base mobile) sin ningún hermano con quien repartir la fila, así que
       ocupa el 100% del ancho. flex:none + min/max-width lo devuelven a un
       tamaño de botón normal, alineado a la izquierda. */
    .tc-col-detalle .tc-acciones-fila{gap:12px;margin-top:24px;justify-content:flex-start;}
    .tc-col-detalle .tc-acciones-fila .tc-btn-primario,
    .tc-col-detalle .tc-acciones-fila .tc-btn-secundario{
        flex:none;width:auto;min-width:200px;max-width:320px;
        padding:12px 20px;font-size:14px;
    }

    .tc-detalle-empty{
        display:flex;
        flex-direction:column;
        align-items:center;
        justify-content:center;
        height:100%;
        color:var(--tx3);
        gap:16px;
        font-size:14px;
    }
    .tc-detalle-empty i{
        font-size:64px;
        opacity:0.2;
    }

    /* Header alineado con el contenido del grid */
    .tc-header{
        padding:10px 24px 10px 16px;
        width:100%;
        box-sizing:border-box;
        display:flex;
        align-items:center;
        justify-content:space-between;
        border-bottom:0.5px solid var(--bd);
        background:var(--bg2);
    }
}

@media (max-width: 1023px){
    .tc-hist-tabla-cont{display:none;}
}

@media (max-width: 320px){
    .tc-pon-row{grid-template-columns:1fr;}
}
