/* Piezas del maestro, sobre app.css (la hoja compartida con ingeniería y comercial: mismos tokens, mismas tarjetas). */

/* La lámina: los dibujos salen de Rhino con el fondo oscuro del viewport y líneas claras; se muestran sobre ese mismo
   fondo, como una hoja de trabajo, en vez de recortarles el fondo */
:root{--lamina:#2a2a2a;--lamina-2:#343434}
.tbox.tall{max-height:70vh}
.chk{display:flex;gap:6px;align-items:center;font-size:13px;color:var(--color-fg-muted);cursor:pointer}
.tag.manual{background:#fbefd5;color:#8a5d05}.tag.odoo{background:#e3ecf6;color:var(--info)}
.tag.e-propuesto{background:#eeeae4;color:var(--color-fg-muted)}.tag.e-revision{background:#fbefd5;color:#8a5d05}
.tag.e-validado{background:#dcefe3;color:var(--color-ok)}.tag.e-obsoleto{background:#f8dcd8;color:var(--color-bad)}
.tag.parcial{background:#fbefd5;color:#8a5d05}
#tb-in tr.fila,#tb-eq tr.fila{cursor:pointer}
#tb-in tr.fila:hover td,#tb-eq tr.fila:hover td{background:var(--panel-2)}
.pn td.sin-precio{color:#8a5d05}

.sol-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));gap:14px}
.sol{display:flex;flex-direction:column;background:var(--color-panel);border:1px solid var(--color-border-line);border-radius:var(--cds-radius);box-shadow:var(--shadow);overflow:hidden;cursor:pointer;text-align:left;padding:0;font:inherit;color:inherit;transition:border-color .15s,transform .15s}
.sol:hover{border-color:var(--accent-2);transform:translateY(-1px)}
.sol:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}
.sol .lamina{aspect-ratio:4/3;border-radius:0}
.sol-txt{padding:10px 12px 12px;display:grid;gap:4px;min-width:0}
.sol-cod{font-weight:650;font-variant-numeric:tabular-nums;display:flex;justify-content:space-between;gap:8px;align-items:center}
.sol-nom{font-size:13px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.7em}
.sol-nom.vacio{color:var(--color-fg-muted);font-style:italic}
.sol-pie{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--color-fg-muted);font-variant-numeric:tabular-nums}
.lamina{background:var(--lamina);border-radius:8px;display:grid;place-items:center;overflow:hidden;position:relative}
.lamina img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block}
.lamina .sin{color:#8f8a84;font-size:12px;letter-spacing:.04em;text-transform:uppercase}
.lamina.big{aspect-ratio:4/5;cursor:zoom-in}
.lamina.big.vacia{cursor:default;aspect-ratio:16/7}
#so-filtro-clave:empty{display:none}
#so-estado,#in-seg{max-width:100%;overflow-x:auto;scrollbar-width:none}
#so-estado button,#in-seg button{white-space:nowrap}
.fi-sec .tbox{overflow-x:auto}
.vacio-lista{grid-column:1/-1}

/* Ficha: panel lateral sobre la lista (en el celular, pantalla completa) */
.ficha-bg{position:fixed;inset:0;background:rgba(37,34,30,.35);z-index:40;display:flex;justify-content:flex-end}
.ficha{width:min(100%,1080px);height:100%;background:var(--page);box-shadow:-8px 0 30px rgba(40,30,20,.18);display:flex;flex-direction:column}
.fi-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;background:var(--color-panel);border-bottom:1px solid var(--color-border-line);flex-wrap:wrap}
.fi-cod{font-size:20px;font-weight:650;font-variant-numeric:tabular-nums;display:flex;gap:10px;align-items:center}
.fi-acc{display:flex;gap:8px;align-items:center}
.fi-body{flex:1;overflow:auto;padding:16px 18px 28px;display:flex;flex-direction:column;gap:16px}
.fi-cols{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:16px;align-items:start}
.fi-img{display:flex;flex-direction:column;gap:10px;position:sticky;top:0}
.fi-fotos{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px}
.fi-fotos:empty{display:none}
.fi-fotos .ft{position:relative;aspect-ratio:1;border-radius:6px;overflow:hidden;background:var(--lamina-2);border:0;padding:0;cursor:zoom-in}
.fi-fotos .ft img{width:100%;height:100%;object-fit:cover;display:block}
.fi-fotos .ft .x{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:12px;line-height:20px;cursor:pointer;padding:0}
.drop{border:1.5px dashed var(--color-border-line);border-radius:8px;padding:12px;text-align:center;font-size:12px;color:var(--color-fg-muted);background:var(--color-panel)}
.drop.sobre{border-color:var(--accent);background:#fbf6ef;color:var(--accent)}
.fi-form{background:var(--color-panel);border:1px solid var(--color-border-line);border-radius:var(--cds-radius);padding:14px;box-shadow:var(--shadow)}
.fi-form :disabled{background:var(--panel-2);color:var(--color-fg);opacity:1}
.fi-sec{background:var(--color-panel);border:1px solid var(--color-border-line);border-radius:var(--cds-radius);padding:14px;box-shadow:var(--shadow)}
.fi-sec h3{font-size:14px;font-weight:650;margin:0;display:inline}
.fi-sec summary{cursor:pointer}
.fi-sec-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.fi-costo{font-size:18px;font-weight:650;font-variant-numeric:tabular-nums}
.fi-costo small{font-size:12px;font-weight:550;color:var(--color-fg-muted);margin-left:6px}
.fi-dp{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums;min-width:640px}
.fi-dp th{text-align:left;background:var(--panel-2);color:var(--color-fg-muted);font-size:12px;font-weight:600;padding:6px 8px;border-bottom:1px solid var(--color-border-line)}
.fi-dp td{padding:4px 8px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
.fi-dp td.n,.fi-dp th.n{text-align:right}
.fi-dp input{width:100%;border:1px solid var(--color-border-line);border-radius:6px;padding:4px 6px;background:var(--color-bg)}
.fi-dp input.q{max-width:6rem;text-align:right}
.fi-dp input:disabled{border-color:transparent;background:transparent}
.fi-dp .it b{font-weight:600}.fi-dp .it small{display:block;color:var(--color-fg-muted)}
.fi-dp .falta{color:#8a5d05}
.fi-dp .quitar{border:0;background:none;color:var(--color-fg-muted);cursor:pointer;font-size:14px}
.fi-dp .quitar:hover{color:var(--color-bad)}
.fi-dp .vacio td{color:var(--color-fg-muted);text-align:center;padding:12px}
.fi-add{position:relative;margin-top:8px}
.fi-add input{width:100%;border:1px dashed var(--color-border-line);border-radius:8px;padding:8px 10px;background:var(--color-bg)}
.fi-add input:focus{outline:2px solid var(--accent-2);outline-offset:-1px;border-style:solid}
.faltas{margin:8px 0 0;padding-left:1.1rem;font-size:12px;color:#8a5d05;display:grid;gap:2px}
.faltas:empty{display:none}
.hist{margin:10px 0 0;padding-left:1.1rem;font-size:12px;display:grid;gap:4px;color:var(--color-fg-muted)}
.hist b{color:var(--color-fg);font-weight:600}
.fi-pie{display:flex;justify-content:space-between;align-items:center;gap:12px}
.solo-ver #fi-guardar,.solo-ver #fi-borrar,.solo-ver #fi-add,.solo-ver .fi-dp .quitar,.solo-ver #fi-drop,.solo-ver .fi-fotos .x,
.solo-ver #so-nueva,.solo-ver #in-nuevo,.solo-ver #in-odoo{display:none!important}
.nueva{max-width:460px}
.nueva select,.nueva input{padding:8px 10px;border:1px solid var(--color-border-line);border-radius:8px;background:var(--color-bg)}
#nueva{justify-content:center;align-items:center;padding:16px}

.visor{position:fixed;inset:0;z-index:60;background:rgba(20,18,16,.92);display:grid;place-items:center;padding:24px}
.visor img{max-width:100%;max-height:calc(100vh - 48px);object-fit:contain;box-shadow:0 10px 40px rgba(0,0,0,.5)}
.visor .btn{position:absolute;top:14px;right:14px;color:#fff;border-color:rgba(255,255,255,.3)}

/* Matriz: lado A en filas, lado B en columnas; cada casilla, cuántas soluciones tiene */
.mx-wrap{overflow:auto;max-height:75vh}
.mx{border-collapse:separate;border-spacing:2px;font-size:11px;font-variant-numeric:tabular-nums}
.mx th{font-weight:650;color:var(--color-fg-muted);padding:2px 4px;white-space:nowrap;background:var(--color-panel);position:sticky;z-index:1}
.mx thead th{top:0}
.mx tbody th{left:0;text-align:right}
.mx th.grupo{color:var(--color-fg);text-align:center;border-bottom:1px solid var(--color-border-line)}
.mx td{min-width:30px;height:26px;text-align:center;border-radius:4px;cursor:pointer;background:var(--panel-2);color:#c4bcb1}
.mx td.no{background:transparent;cursor:default}
.mx td.n1{background:#f1e4d3;color:var(--accent-dark)}
.mx td.n2{background:#dfbf98;color:#4f3317}
.mx td.n3{background:var(--accent);color:#fff}
.mx td.ok{box-shadow:inset 0 -3px 0 var(--color-ok)}
.mx td.int{border:1px dashed var(--accent-2)}
.mx td:not(.no):hover{outline:2px solid var(--accent-2)}
.mx-sw{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-2px}

@media (max-width:860px){.fi-cols{grid-template-columns:1fr}.fi-img{position:static}.lamina.big{aspect-ratio:4/3}}
@media (max-width:720px){.ficha{width:100%}.fi-head{padding:10px 12px}.fi-body{padding:12px}.sol-grid{grid-template-columns:1fr 1fr;gap:10px}}
