@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

:root{
  --bg:#f8fafc; --surface:#ffffff; --surface-2:#f1f5f9;
  --ink:#1e293b; --text:#334155; --muted:#64748b; --line:#e2e8f0;
  --topnav-h:100px;   /* logo 60 + padding 20*2; se cambia a cabeceira, cambiar aquí */
  --primary:#0057FF; --primary-600:#0049D9; --primary-700:#003CB3;
  --primary-soft:#E9F0FF; --ring:rgba(0,87,255,.25);
  --danger:#ef4444; --danger-soft:#fef2f2; --danger-line:#fecaca;
  --radius:8px; --radius-lg:12px;
  --shadow-sm:0 1px 2px rgba(15,23,42,.06);
  --shadow:0 1px 3px rgba(15,23,42,.08),0 1px 2px rgba(15,23,42,.04);
  --shadow-md:0 6px 20px rgba(15,23,42,.08);
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:'Inter',system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--text);
  background:var(--bg);font-size:14.5px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:var(--primary-600);text-decoration:none}
a:hover{color:var(--primary-700)}
h1,h2,h3{color:var(--ink);font-weight:700;letter-spacing:-.01em;margin:0}
h1{font-size:1.5rem;margin:.1rem 0 1.3rem}
h2{font-size:1.1rem;margin:0 0 .9rem}

/* layout */
.layout{display:grid;grid-template-columns:248px 1fr;min-height:100vh}
.sidebar{display:flex;flex-direction:column;background:var(--surface);
  border-right:1px solid var(--line);padding:1.4rem 1rem;position:sticky;top:0;height:100vh}
.brand{margin:.2rem .4rem 1.8rem;line-height:1.1}
.brand-mark{font-size:1.5rem;font-weight:700;color:var(--ink);display:block;letter-spacing:-.02em}
.brand-mark::before{content:"";display:inline-block;width:10px;height:10px;border-radius:3px;
  background:var(--primary);margin-right:.5rem;vertical-align:middle}
.brand-sub{font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-left:1rem}
.sidebar nav{display:flex;flex-direction:column;gap:.2rem}
.sidebar nav a{display:flex;align-items:center;gap:.5rem;padding:.6rem .85rem;border-radius:var(--radius);
  color:var(--text);font-weight:500;font-size:.95rem;transition:background .12s,color .12s}
.sidebar nav a:hover{background:var(--surface-2);color:var(--ink)}
.sidebar nav a.active{background:var(--primary-soft);color:var(--primary-700);font-weight:600}
.content{padding:2rem 2.4rem;max-width:1180px}

.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.4rem;gap:1rem}
.muted{color:var(--muted)}

/* cards */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem;margin-bottom:2rem}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:1.15rem 1.25rem;box-shadow:var(--shadow);transition:box-shadow .15s,transform .15s}
a.card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.card .n{font-size:1.9rem;font-weight:700;color:var(--ink);line-height:1}
.card .l{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:.45rem;font-weight:600}

/* table */
table{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow)}
th,td{text-align:left;padding:.7rem .9rem;border-bottom:1px solid var(--line)}
th{font-size:.7rem;letter-spacing:.04em;text-transform:uppercase;color:var(--primary-700);font-weight:600;background:var(--primary-soft)}
tbody tr:last-child td{border-bottom:none}
tbody tr{transition:background .1s}
tbody tr:hover{background:var(--surface-2)}
th a{color:var(--primary-700)}
th a:hover{color:var(--primary-700)}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;border-radius:var(--radius);
  border:1px solid var(--line);background:var(--surface);color:var(--text);font:inherit;font-weight:500;
  font-size:.9rem;cursor:pointer;transition:all .12s;box-shadow:var(--shadow-sm)}
.btn:hover{background:var(--surface-2);border-color:#cbd5e1}
.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}
.btn-primary:hover{background:var(--primary-600);border-color:var(--primary-600);color:#fff}
.btn-danger{color:var(--danger);border-color:var(--danger-line);background:var(--surface)}
.btn-danger:hover{background:var(--danger-soft)}
.btn-sm{padding:.32rem .65rem;font-size:.82rem}

/* forms */
input[type=text],input[type=number],input[type=search],input[type=date],input[type=password],select,textarea{
  width:100%;padding:.55rem .75rem;border:1px solid #cbd5e1;border-radius:var(--radius);
  background:#fff;font:inherit;color:var(--ink);transition:border-color .12s,box-shadow .12s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}
textarea{resize:vertical;min-height:74px}
label{display:block;font-size:.78rem;font-weight:600;color:var(--muted);margin:0 0 .35rem}

.search{max-width:340px;margin-bottom:1.1rem}
fieldset{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);
  padding:1.2rem 1.4rem 1.4rem;margin:0 0 1.3rem;box-shadow:var(--shadow)}
legend{font-weight:700;color:var(--ink);padding:0 .5rem;font-size:.98rem}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.field{margin-bottom:.2rem}
.chips{display:flex;flex-wrap:wrap;gap:.5rem;max-height:180px;overflow:auto;padding:.4rem;
  border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2)}
.chip{display:flex;align-items:center;gap:.4rem;border:1px solid var(--line);border-radius:999px;
  padding:.28rem .7rem;font-size:.85rem;background:#fff}
.chip input{width:auto}
.actions{display:flex;gap:.7rem;align-items:center;margin-top:.5rem}
.inline-form{display:flex;gap:.6rem;align-items:end;flex-wrap:wrap;margin-bottom:1rem}
.inline-form .field{flex:1;min-width:150px}
.cat-block{margin-bottom:2.2rem}
.tag{display:inline-block;background:var(--primary-soft);color:var(--primary-700);border-radius:999px;
  padding:.12rem .6rem;font-size:.78rem;font-weight:500;margin:.1rem}

/* fotos */
.thumb{width:46px;height:46px;object-fit:cover;border-radius:6px;border:1px solid var(--line);display:block}
.thumb-empty{background:var(--surface-2);display:inline-block}
.foto-grid{display:flex;flex-wrap:wrap;gap:.9rem}
.foto{border:1px solid var(--line);border-radius:var(--radius);padding:.4rem;background:#fff;box-shadow:var(--shadow-sm)}
.foto.principal{border-color:var(--primary);box-shadow:0 0 0 2px var(--ring)}
.foto>img{width:128px;height:128px;object-fit:cover;border-radius:6px;display:block}
.foto-acts{display:flex;gap:.35rem;justify-content:space-between;align-items:center;margin-top:.4rem}
.foto-acts form{margin:0}

/* listado */
.filtros{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-bottom:1.1rem;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:.9rem 1rem;box-shadow:var(--shadow-sm)}
.filtros input[type=search]{flex:1 1 240px;max-width:320px}
.filtros select{flex:0 1 170px}
.paxinacion{display:flex;gap:1rem;align-items:center;justify-content:center;margin:1.3rem 0}
.export-bar{display:flex;gap:.5rem;align-items:center;margin:0 0 1rem}
.row-edit{display:flex;gap:.5rem;align-items:center;margin:.4rem 0;flex-wrap:wrap}
.row-edit input,.row-edit select{flex:0 1 220px;padding:.42rem .65rem}
.row-edit .btn{flex:0 0 auto}

/* sidebar foot + login */
.sidebar-foot{margin-top:auto;padding-top:1rem;border-top:1px solid var(--line);font-size:.85rem;margin-left:.4rem}
.sidebar-foot .muted{display:block;margin-bottom:.35rem;font-weight:500;color:var(--ink)}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;
  background:radial-gradient(1200px 500px at 50% -10%, var(--primary-soft), var(--bg))}
.login-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:2.4rem 2.4rem;box-shadow:var(--shadow-md);width:360px;max-width:100%}
.login-erro{background:var(--danger-soft);color:var(--danger);padding:.55rem .7rem;border-radius:var(--radius);
  font-size:.88rem;margin-bottom:1rem;text-align:center;border:1px solid var(--danger-line)}
.aviso{padding:.55rem .85rem;border-radius:var(--radius);font-size:.9rem;margin-bottom:1rem;display:inline-block}
.aviso.ok{background:var(--primary-soft);color:var(--primary-700)}
.aviso.err{background:var(--danger-soft);color:var(--danger)}

@media(max-width:760px){.layout{grid-template-columns:1fr}.sidebar{position:static;height:auto}
  .content{padding:1.3rem}.grid,.grid-3{grid-template-columns:1fr}}
@media print{.sidebar,.filtros,.export-bar,.paxinacion,.topbar .btn,th:last-child,td:last-child,th:first-child,td:first-child{display:none!important}
  .layout{grid-template-columns:1fr}.content{padding:0}table{box-shadow:none}a{color:#000}}

/* Verona-style data panel */
.card-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  box-shadow:var(--shadow);overflow:hidden;margin-bottom:1.5rem}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:1.05rem 1.3rem;border-bottom:1px solid var(--line)}
.panel-title{font-size:1.05rem;font-weight:700;color:var(--ink);margin:0}
.card-panel .filtros{margin:0;border:none;border-radius:0;box-shadow:none;background:var(--surface);
  border-bottom:1px solid var(--line)}
.card-panel .export-bar{margin:0}
.card-panel table{border:none;border-radius:0;box-shadow:none}
.card-panel tbody tr:nth-child(even){background:#fafbfc}
.card-panel tbody tr:hover{background:var(--surface-2)}
.icon-btn{width:34px;height:34px;padding:0;justify-content:center;font-size:1rem}
.paginator{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.9rem 1.3rem}
.pg-controls,.pg-per{display:flex;gap:.3rem;align-items:center}
.pg{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:34px;padding:0 .55rem;
  border:1px solid var(--line);border-radius:8px;color:var(--text);font-size:.85rem;background:#fff;font-weight:500}
.pg:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}
.pg.active{background:var(--primary);border-color:var(--primary);color:#fff}
.pg.disabled{opacity:.4;pointer-events:none}

/* ===== Top navbar (substitúe a barra lateral) ===== */
.layout{display:block}
.sidebar,.sidebar-foot{display:none}
.topnav{position:sticky;top:0;z-index:50;background:var(--surface);
  border-bottom:1px solid var(--line);box-shadow:var(--shadow-sm)}
.topnav-inner{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:1.6rem;padding:20px 1.5rem}
.topnav .brand{margin:0;display:flex;align-items:baseline;gap:.45rem;text-decoration:none}
.topnav .brand-mark{font-size:1.3rem;margin:0}
.topnav .brand-sub{margin:0;font-size:.6rem}
.topnav-links{display:flex;gap:.25rem}
.topnav-links a{padding:.5rem .9rem;border-radius:var(--radius);color:var(--text);font-weight:500;font-size:.95rem}
.topnav-links a:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}
.topnav-links a.active{background:var(--primary-soft);color:var(--primary-700);font-weight:600}
.topnav-user{margin-left:auto;display:flex;align-items:center;gap:.85rem;font-size:.88rem}
.content{max-width:1180px;margin:0 auto;padding:1.8rem 1.5rem}
@media(max-width:760px){.topnav-inner{flex-wrap:wrap;gap:.5rem .9rem;padding:.6rem 1rem}
  .topnav-user{margin-left:0;width:100%;order:3}.content{padding:1.2rem 1rem}}
@media print{.topnav{display:none}}

.brand-logo{height:60px;width:auto;display:block}
.topnav .brand{align-items:center}

/* TabView (ficha de peza) */
.tabwrap{padding:0}
.tabs{display:flex;gap:.1rem;border-bottom:1px solid var(--line);padding:0 .8rem;overflow-x:auto}
.tab{background:none;border:none;padding:.9rem 1.15rem;font:inherit;font-weight:600;color:var(--muted);
  cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.tab:hover{color:var(--ink)}
.tab.active{color:var(--primary-700);border-bottom-color:var(--primary)}
.tab-pane{padding:1.5rem}
.fotos-pane{border-top:1px solid var(--line)}
.fotos-pane .sub{margin:0 0 .9rem;font-size:.95rem;color:var(--ink)}
.form-foot{display:flex;gap:.7rem;align-items:center;padding:1rem 1.5rem;border-top:1px solid var(--line)}

/* lightbox */
.foto-link{display:block;cursor:zoom-in}
.lightbox{position:fixed;inset:0;background:rgba(15,23,42,.88);display:none;align-items:center;justify-content:center;z-index:100}
.lightbox.open{display:flex}
.lightbox img{max-width:90vw;max-height:90vh;border-radius:8px;box-shadow:0 12px 50px rgba(0,0,0,.5);background:#fff}
.lb-close,.lb-prev,.lb-next{position:absolute;background:rgba(255,255,255,.15);color:#fff;border:none;cursor:pointer;
  font-size:1.7rem;line-height:1;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.lb-close{top:18px;right:18px}.lb-prev{left:18px;top:50%;transform:translateY(-50%)}.lb-next{right:18px;top:50%;transform:translateY(-50%)}
.lb-close:hover,.lb-prev:hover,.lb-next:hover{background:rgba(255,255,255,.32)}

.cat-body{padding:1.2rem 1.3rem}
.cat-body .inline-form{margin-bottom:1rem}

/* rejilla de fotos uniforme */
.foto-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.9rem}
.foto{margin:0}
.foto .foto-link{display:block}
.foto .foto-link img{width:100%;height:150px;object-fit:cover;border-radius:6px;display:block;transition:opacity .12s}
.foto .foto-link:hover img{opacity:.88}

/* modal lightbox */
.lb-bar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;
  padding:.9rem 1.2rem;color:#fff}
.lb-count{font-size:.95rem;font-weight:600;background:rgba(255,255,255,.15);padding:.3rem .8rem;border-radius:999px}
.lb-close{background:rgba(255,255,255,.15);color:#fff;border:none;cursor:pointer;font-size:.9rem;font-weight:600;
  padding:.5rem .9rem;border-radius:8px}
.lb-close:hover{background:rgba(255,255,255,.32)}
.lb-fig{margin:0;display:flex;align-items:center;justify-content:center}

/* ===== IFTA labels (etiqueta dentro do campo) ===== */
.field:has(> input), .field:has(> select), .field:has(> textarea){position:relative}
.field:has(> input) > label,
.field:has(> select) > label,
.field:has(> textarea) > label{
  position:absolute; top:.42rem; left:.8rem; margin:0; z-index:2;
  font-size:.66rem; font-weight:600; letter-spacing:.01em; color:var(--muted); pointer-events:none}
.field > input, .field > select, .field > textarea{padding:1.5rem .75rem .45rem}
.field > textarea{padding-top:1.55rem}
.field:has(> input):focus-within > label,
.field:has(> select):focus-within > label,
.field:has(> textarea):focus-within > label{color:var(--primary-700)}

/* máis separación entre filas nos formularios (pestañas) */
.tab-pane > .field, .tab-pane > .grid, .tab-pane > .grid-3{margin-bottom:1.4rem}
.tab-pane > *:last-child{margin-bottom:0}
.tab-pane .grid, .tab-pane .grid-3{gap:1.2rem}
/* campos máis altos + label IFTA sen ser pisado polo select */
.field > input, .field > select, .field > textarea{padding:1.6rem .8rem .5rem; min-height:3.3rem}
.field > textarea{min-height:0; padding-top:1.6rem}
.field:has(> input) > label, .field:has(> select) > label, .field:has(> textarea) > label{top:.55rem}

/* Selects: etiqueta normal ENRIBA (o IFTA non encaixa nun <select>) */
.field:has(> select){position:static}
.field:has(> select) > label{position:static;display:block;margin:0 0 .35rem;
  font-size:.78rem;font-weight:600;color:var(--muted)}
.field > select{padding:.6rem .8rem;min-height:0}
.field:has(> select):focus-within > label{color:var(--primary-700)}

/* ===== IFTA unificado FINAL (input, select e textarea igual) ===== */
.field:has(> input), .field:has(> select), .field:has(> textarea){position:relative}
.field:has(> input) > label,
.field:has(> select) > label,
.field:has(> textarea) > label{
  position:absolute; top:.5rem; left:.8rem; margin:0; z-index:2; display:block;
  font-size:.66rem; font-weight:600; letter-spacing:.01em; color:var(--muted); pointer-events:none}
.field > input, .field > select, .field > textarea{
  padding:1.5rem .8rem .45rem; min-height:0; height:auto; line-height:1.2}
.field > textarea{padding-top:1.55rem}
.field:has(> input):focus-within > label,
.field:has(> select):focus-within > label,
.field:has(> textarea):focus-within > label{color:var(--primary-700)}

/* ===== IFTA: caixas uniformes; select con altura fixa (macOS ignora padding no select) ===== */
.field > input, .field > select{height:3.5rem; min-height:0; line-height:1.2}
.field > input{padding:1.55rem .8rem .35rem}
.field > select{padding:0 .8rem}
.field > textarea{height:auto; min-height:96px; padding:1.55rem .8rem .5rem; line-height:1.4}
.field:has(> input) > label, .field:has(> select) > label, .field:has(> textarea) > label{top:.45rem; font-size:.64rem}

/* aliñar o valor do select coa mesma posición que os inputs */
.field > select{padding:1.55rem .8rem .35rem; height:3.5rem}

/* select sen apariencia nativa -> respecta padding (valor aliñado cos inputs) + frecha propia */
.field > select{
  -webkit-appearance:none; -moz-appearance:none; appearance:none;
  padding:1.55rem 2.2rem .4rem .8rem; height:3.5rem; line-height:1.2;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat:no-repeat; background-position:right .85rem center;
}

/* etiquetas dos campos en MAIÚSCULAS */
.field > label{text-transform:uppercase; letter-spacing:.04em}

/* FileUpload avanzado (estilo Verona) */
.uploader{margin-top:1.1rem}
.up-toolbar{display:flex;gap:.5rem;margin-bottom:.8rem}
.up-drop{border:2px dashed var(--line);border-radius:var(--radius-lg);padding:2.2rem;text-align:center;color:var(--muted);transition:.15s;cursor:default}
.up-drop.drag{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-700)}
.up-list{display:flex;flex-direction:column;gap:.55rem;margin-top:.9rem}
.up-row{display:flex;align-items:center;gap:.85rem;border:1px solid var(--line);border-radius:var(--radius);padding:.5rem .75rem;background:#fff}
.up-row img{width:46px;height:46px;object-fit:cover;border-radius:6px}
.up-row .up-name{font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.up-row .up-size{color:var(--muted);font-size:.82rem;margin-left:auto;white-space:nowrap}
.up-row .up-rm{cursor:pointer;border:none;background:none;color:var(--danger);font-size:1.2rem;line-height:1}
.up-progress{height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden;margin-top:.9rem}
.up-bar{height:100%;width:0;background:var(--primary);transition:width .15s}

/* botón pechar do lightbox: só icona redonda */
.lb-close{width:48px;height:48px;border-radius:50%;font-size:1.5rem;padding:0;
  display:flex;align-items:center;justify-content:center}

/* panel Temática: ver todas as temáticas sen scroll apertado */
.chips-full{max-height:none}

/* temáticas en 4 columnas aliñadas */
.chips-full{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem .8rem;
  max-height:none;border:none;background:none;padding:0}
.chips-full .chip{justify-content:flex-start;border-radius:6px}
@media(max-width:900px){.chips-full{grid-template-columns:repeat(2,1fr)}}

/* temáticas: orde por columnas (arriba->abaixo) e sen título */
.chips-full{display:block;column-count:4;column-gap:1.2rem;grid-template-columns:none;
  max-height:none;border:none;background:none;padding:0}
.chips-full .chip{display:flex;width:100%;justify-content:flex-start;border-radius:6px;
  margin:0 0 .5rem;break-inside:avoid;-webkit-column-break-inside:avoid}
@media(max-width:900px){.chips-full{column-count:2}}

/* lista de exposicións: unha por fila con lugar e datas */
.expo-list{display:flex;flex-direction:column;gap:.5rem}
.expo-row{display:flex;align-items:center;gap:.75rem;border:1px solid var(--line);border-radius:var(--radius);
  padding:.65rem .9rem;background:#fff;cursor:pointer;transition:.12s}
.expo-row:hover{background:var(--surface-2)}
.expo-row input{width:auto;flex:0 0 auto;margin:0}
.expo-nome{font-weight:500;color:var(--ink)}
.expo-meta{margin-left:auto;color:var(--muted);font-size:.85rem;text-align:right}
.expo-row:has(input:checked){border-color:var(--primary);background:var(--primary-soft)}

.expo-txt{color:var(--text)}
.expo-datas{color:var(--ink);font-weight:600}

/* Menubar con submenú (catálogos) */
.menubar{display:flex;gap:.2rem;align-items:center}
.menubar .mb-item{padding:.55rem .9rem;border-radius:var(--radius);color:var(--text);font-weight:500;
  font-size:.95rem;display:flex;align-items:center;gap:.35rem;cursor:pointer}
.menubar a.mb-item:hover, .menubar .mb-has-sub:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}
.menubar .mb-item.active{background:var(--primary-soft);color:var(--primary-700)}
.mb-caret{font-size:.65rem;color:var(--muted)}
.mb-has-sub{position:relative}
.mb-sub{position:absolute;top:100%;left:0;min-width:210px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow-md);padding:.4rem;display:none;flex-direction:column;gap:.1rem;z-index:60}
.mb-has-sub:hover .mb-sub, .mb-has-sub:focus-within .mb-sub{display:flex}
.mb-sub a{padding:.5rem .75rem;border-radius:6px;color:var(--text);font-weight:500;font-size:.92rem;white-space:nowrap}
.mb-sub a:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}

/* buscador global no menú */
.topsearch{margin-left:auto}
.topsearch input[type=search]{width:240px;height:auto;min-height:0;padding:.5rem .9rem .5rem 2.15rem;border-radius:999px;
  background:var(--surface-2) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round'><circle cx='11' cy='11' r='7'/><line x1='21' y1='21' x2='16.65' y2='16.65'/></svg>") no-repeat .75rem center}
.topsearch input[type=search]:focus{background-color:#fff}
.topnav-user{margin-left:1rem}

/* bloque Instagram no panel */
.insta-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:.6rem}
.insta-item{display:block;aspect-ratio:1/1;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line)}
.insta-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s}
.insta-item:hover img{transform:scale(1.05)}
@media(max-width:760px){.insta-grid{grid-template-columns:repeat(2,1fr)}}

/* Estatísticas */
.destacados{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1rem;margin-bottom:1.5rem}
.dest{display:flex;align-items:center;gap:.8rem;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-lg);padding:.85rem 1.1rem;box-shadow:var(--shadow)}
.dest-ic{font-size:1.6rem;line-height:1}
.dest b{color:var(--ink);font-size:1.02rem}
.dest .muted{font-size:.8rem}
.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.3rem}
@media(max-width:860px){.stat-grid{grid-template-columns:1fr}}
.barras{display:flex;flex-direction:column;gap:.5rem}
.barra-row{display:flex;align-items:center;gap:.6rem}
.barra-lbl{flex:0 0 130px;font-size:.84rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.barra-track{flex:1;height:14px;background:var(--surface-2);border-radius:999px;overflow:hidden}
.barra-fill{display:block;height:100%;border-radius:999px;min-width:3px}
.barra-val{flex:0 0 44px;font-size:.82rem;font-weight:700;color:var(--ink);text-align:right}

/* Breadcrumb (estilo PrimeNG) */
.breadcrumb{display:flex;align-items:center;gap:.55rem;font-size:.88rem;color:var(--muted);margin-bottom:1.35rem;flex-wrap:wrap}
.breadcrumb a{color:var(--muted);display:inline-flex;align-items:center;gap:.35rem;font-weight:500}
.breadcrumb a:hover{color:var(--primary-700);text-decoration:none}
.breadcrumb .bc-home svg{width:15px;height:15px}
.breadcrumb .bc-sep{color:#cbd5e1;font-size:1rem}
.breadcrumb .bc-cur{color:var(--ink);font-weight:600}

/* pé fixo con copyright e redes */
body{padding-bottom:50px}
.site-footer{position:fixed;left:0;right:0;bottom:0;height:48px;background:var(--surface);
  border-top:1px solid var(--line);z-index:40;display:flex;align-items:center}
.footer-inner{max-width:1180px;width:100%;margin:0 auto;padding:0 1.5rem;display:flex;
  align-items:center;justify-content:space-between;font-size:.83rem;color:var(--muted)}
.footer-social{display:flex;gap:.7rem;align-items:center}
.footer-social a{color:var(--muted);display:inline-flex}
.footer-social a:hover{color:var(--primary-700)}
.footer-social svg{width:19px;height:19px}
@media print{.site-footer{display:none}}

/* filtros: segunda liña + multiselect con checks (label IFTA) */
.filtros-form .filtros{margin:0;border:none;border-radius:0;box-shadow:none;background:var(--surface);border-bottom:1px solid var(--line)}
.filtros-2{align-items:flex-start}
.msel{position:relative;flex:0 1 320px;margin:0}
.msel > label{position:absolute;top:.5rem;left:.8rem;font-size:.64rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);z-index:2;pointer-events:none}
.msel-toggle{width:100%;height:3.5rem;padding:1.55rem 2.2rem .35rem .8rem;text-align:left;border:1px solid #cbd5e1;
  border-radius:var(--radius);font:inherit;color:var(--ink);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>") no-repeat right .85rem center}
.msel-toggle:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}
.msel-panel{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:30;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow-md);padding:.4rem;max-height:300px;overflow:auto;display:none}
.msel.open .msel-panel{display:block}
.msel-panel label{display:flex;gap:.55rem;align-items:center;padding:.4rem .55rem;border-radius:6px;font-size:.88rem;cursor:pointer;text-transform:none}
.msel-panel label:hover{background:var(--surface-2)}
.msel-panel input{width:auto;flex:0 0 auto}

/* filtros: sen filetes entre liñas */
.filtros-form .filtros{border-bottom:none;padding-bottom:.55rem}
.filtros-form .filtros-2{padding-top:.2rem;border-bottom:1px solid var(--line)}

/* contador de pezas no título do panel */
.conta-pezas{display:inline-flex;align-items:center;justify-content:center;min-width:1.6rem;height:1.5rem;padding:0 .5rem;
  margin-left:.5rem;background:var(--primary-soft);color:var(--primary-700);border-radius:999px;font-size:.8rem;font-weight:700;vertical-align:middle}

/* buscador por título co estilo IFTA */
.q-field{flex:1 1 240px;max-width:340px;margin:0}
.q-field > input{max-width:none}

/* terceira liña de filtros (exposicións) */
.filtros-form .filtros-2{border-bottom:none}
.filtros-form .filtros-3{padding-top:.2rem;border-bottom:1px solid var(--line)}
.msel-wide{flex:1 1 480px;max-width:620px}

.accion-field{flex:0 1 280px;margin:0}

/* filtros en 5 liñas, sen filetes intermedios */
.filtros-form .filtros{border-bottom:none;padding:.4rem 1rem}
.filtros-form .filtros:first-child{padding-top:.9rem}
.filtros-form .filtros-last{padding-bottom:.9rem;border-bottom:1px solid var(--line)}

/* cajas de filtro maiores e repartindo espazo */
.filtros-form .msel{flex:1 1 240px;max-width:none}
.filtros-form .q-field{flex:1 1 280px;max-width:none}
.filtros-form .accion-field{flex:1 1 240px;max-width:none}
.filtros-form .msel-wide{flex:1 1 auto;max-width:none}

/* filas de filtros con cajas de igual ancho (tercios) */
.filtros-eq{flex-wrap:nowrap}
.filtros-eq .msel{flex:1 1 0;max-width:none;min-width:0}
@media(max-width:760px){.filtros-eq{flex-wrap:wrap}.filtros-eq .msel{flex:1 1 200px}}

/* cajas de filtro de igual ancho (inclúe rango-field) + control de rango */
.filtros-eq > .field{flex:1 1 0;max-width:none;min-width:0}
.rango-field{position:relative;border:1px solid #cbd5e1;border-radius:var(--radius);height:3.5rem;padding:1.5rem .7rem .3rem;display:flex;align-items:center;background:#fff}
.rango-field > label{position:absolute;top:.5rem;left:.8rem;font-size:.64rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);pointer-events:none}
.rango{display:flex;align-items:center;gap:.4rem;width:100%}
.rango input{border:none;padding:0;height:auto;min-height:0;width:100%;background:transparent;font:inherit;color:var(--ink)}
.rango input:focus{outline:none;box-shadow:none}
.rango span{color:var(--muted)}
.rango-field:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}

/* forzar tercios exactos en filas de filtros e que o rango non desborde */
.filtros-eq > div{flex:1 1 0 !important;width:0;min-width:0;max-width:none}
.rango input{flex:1 1 0;min-width:0;width:auto}

/* filas de filtros con GRID de 3 columnas iguais (definitivo) */
.filtros-eq{display:grid !important;grid-template-columns:repeat(3, minmax(0, 1fr));gap:.6rem;align-items:start}
.filtros-eq > div{width:auto !important;min-width:0;max-width:none;flex:none !important}
@media(max-width:760px){.filtros-eq{grid-template-columns:1fr !important}}

/* L1: Buscar ocupa 2 columnas; botóns aliñados; iconos nos botóns */
.filtros-buscar{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:.6rem;align-items:stretch}
.filtros-buscar .q-field{grid-column:span 2;margin:0}
.buscar-acts{display:flex;gap:.5rem;align-items:center}
.btn svg{width:15px;height:15px;flex:0 0 auto}

/* o input de Buscar debe encher a caixa (2 columnas), sen o tope de 320px herdado */
.filtros-buscar .q-field > input{max-width:none !important;width:100%}

/* checkboxes co verde oficial (temáticas, exposicións, filtros…) */
input[type=checkbox]{accent-color:var(--primary)}

/* sección Usuarios */
.ua-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.8rem}
.taboa-usuarios{width:100%;border-collapse:collapse}
.taboa-usuarios th,.taboa-usuarios td{padding:.55rem .65rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.taboa-usuarios th{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--primary-700)}
.taboa-usuarios input{padding:.45rem .55rem;border:1px solid #cbd5e1;border-radius:6px;font:inherit;max-width:200px}
.taboa-usuarios form.inline{display:flex;gap:.45rem;align-items:center;margin:0}
.taboa-usuarios .acc{text-align:right}
.btn-danger{background:#dc2626;color:#fff;border-color:#dc2626}
.btn-danger:hover{background:#b91c1c;border-color:#b91c1c}
.taboa-usuarios select{padding:.45rem .55rem;border:1px solid #cbd5e1;border-radius:6px;font:inherit}

/* rol só-consulta: ocultar accións de edición (Filtrar/exportar/ver mantéñense) */
body.is-consulta .topbar a.btn-primary,
body.is-consulta .inline-form,
body.is-consulta .uploader,
body.is-consulta .foto-acts form,
body.is-consulta .form-foot .btn-primary,
body.is-consulta .form-foot .btn-danger,
body.is-consulta .row-edit button{display:none !important}
body.is-consulta .row-edit input,
body.is-consulta .row-edit select{pointer-events:none;background:#f8fafc;border-color:transparent}

/* listado de usuarios: anchos iguais e mesma altura input/select */
.taboa-usuarios input{width:180px;max-width:none}
.taboa-usuarios input,.taboa-usuarios select{height:38px;box-sizing:border-box;vertical-align:middle}
.taboa-usuarios select{padding:.35rem .5rem;width:auto}
.taboa-usuarios .btn,.taboa-usuarios .btn-sm{vertical-align:middle}
.taboa-usuarios td{white-space:nowrap}

/* engadir usuario: todos os campos enchen a súa columna (anchos iguais) */
.ua-grid .field{margin:0}
.ua-grid .field input,.ua-grid .field select{width:100%;max-width:none;box-sizing:border-box}

/* ===== buscador despregable + perfil de usuario (estilo Verona) ===== */
.topsearch-wrap{margin-left:auto;display:flex;align-items:center;position:relative}
.ts-toggle{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer;transition:background .15s}
.ts-toggle:hover{background:var(--surface-2);color:var(--ink)}
.ts-toggle svg{width:18px;height:18px}
.topsearch{margin:0;width:0;overflow:hidden;transition:width .22s ease}
.topsearch-wrap.open .topsearch{width:250px;margin-left:.35rem}
.topsearch input[type=search]{width:240px}

.topnav-user.mb-has-sub{margin-left:.6rem;display:block}
.user-chip{display:flex;align-items:center;background:transparent;border:none;cursor:pointer;padding:2px;border-radius:999px;font:inherit;color:var(--ink)}
.user-chip:hover{background:var(--surface-2)}
.avatar{width:38px;height:38px;border-radius:999px;background:var(--primary);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.95rem;flex:0 0 auto;letter-spacing:.02em}
.user-meta{display:flex;flex-direction:column;align-items:flex-start;line-height:1.18}
.user-name{font-weight:600;font-size:.9rem;color:var(--ink)}
.user-rol{font-size:.72rem;color:var(--muted)}
.user-sub{left:auto;right:0;min-width:190px}
.user-sub-head{display:flex;flex-direction:column;line-height:1.2;padding:.55rem .8rem .6rem;margin-bottom:.25rem;border-bottom:1px solid var(--line)}

/* taboa con POST: cabeceiras ordenables e paxinador como botóns */
.th-sort{display:inline;margin:0}
.th-sort button{background:none;border:0;padding:0;font:inherit;font-weight:600;color:inherit;cursor:pointer}
.th-sort button:hover{color:var(--primary-700);text-decoration:none}
.pg-f{display:inline-flex;margin:0}
button.pg{cursor:pointer;font:inherit}
.pg[disabled]{opacity:.45;pointer-events:none;cursor:default}
.exp-f{display:inline;margin:0}

/* login: logo en vez de texto */
.login-logo{text-align:center;margin-bottom:1.7rem}
.login-logo img{height:62px;width:auto}

/* consulta: aparencia de só lectura nos campos da ficha */
body.is-consulta #pezaform input[readonly],
body.is-consulta #pezaform textarea[readonly],
body.is-consulta #pezaform input:disabled,
body.is-consulta #pezaform select:disabled{background:#f3f5f8;color:#475569;cursor:default}
.icon-btn svg{width:15px;height:15px;display:block}

/* consulta: KPIs do panel sen click */
body.is-consulta .card{pointer-events:none;cursor:default}

/* cabeceiras ordenables en maiúsculas (Rexistro / Título) */
.th-sort button{text-transform:uppercase;letter-spacing:.03em}

/* todas as cabeceiras da táboa de pezas en maiúsculas */
#taboa-pezas thead th{text-transform:uppercase;letter-spacing:.03em}

/* caret de submenú estilo Verona (pi-angle-down: chevron de trazo) */
svg.mb-caret{width:.72rem;height:.72rem;color:var(--muted);vertical-align:middle;flex:0 0 auto}

/* ficha de só lectura (peza_ver) */
.ver-acts{display:flex;gap:.5rem;align-items:center}
.ver-grid{display:grid;grid-template-columns:minmax(280px,360px) 1fr;gap:1.2rem;align-items:start}
.ver-fotos{padding:1rem;text-align:center}
.ver-foto-main img{max-width:100%;border-radius:var(--radius)}
.ver-foto-empty{height:200px;display:flex;align-items:center;justify-content:center}
.ver-foto-thumbs{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.7rem}
.ver-foto-thumbs img{width:54px;height:54px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}
.ver-datos{padding:1rem 1.4rem}
.ver-row{display:flex;gap:1rem;padding:.5rem 0;border-bottom:1px solid var(--line)}
.ver-row:last-child{border-bottom:none}
.ver-l{flex:0 0 175px;color:var(--muted);font-size:.74rem;text-transform:uppercase;letter-spacing:.03em;font-weight:600;padding-top:.1rem}
.ver-v{flex:1;color:var(--ink);white-space:pre-wrap}
@media(max-width:760px){.ver-grid{grid-template-columns:1fr}}
.ver-foto-main,.ver-foto-thumbs a{cursor:zoom-in}

/* ítem de menú "Pezas" como botón (reinicia filtros) */
.menubar .mb-form{margin:0;display:flex}
.menubar button.mb-item{background:none;border:0;cursor:pointer;font:inherit;font-weight:500}
.menubar button.mb-item:hover{background:var(--surface-2);color:var(--ink)}

/* aviso emerxente: ver o bloque consolidado ao final */

/* selector de idioma no menú */
.lang-switch{display:flex;align-items:center;gap:.25rem;padding:.45rem .6rem;border-radius:8px;cursor:pointer;font-weight:600;letter-spacing:.03em;color:var(--text);white-space:nowrap}
.lang-switch:hover{background:var(--surface-2)}
.lang-sub{min-width:60px;right:0;left:auto}
.lang-f{margin:0}
.lang-sub .lang-opt{display:block;width:100%;text-align:left;background:none;border:0;cursor:pointer;font:inherit;padding:.45rem .7rem;border-radius:6px;color:var(--text)}
.lang-sub .lang-opt:hover{background:var(--surface-2);color:var(--ink)}
.lang-sub .lang-opt.active{background:var(--primary-soft);color:var(--primary-700)}

/* notas */
.notas-block{margin-top:1.4rem;border-top:1px solid var(--line);padding-top:1rem}
.notas-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem;font-size:.95rem}
.nota-row{display:flex;align-items:center;gap:.9rem;padding:.5rem .1rem;border-bottom:1px solid var(--line)}
.nota-row:last-child{border-bottom:0}
.nota-fecha{color:var(--muted);font-size:.85rem;white-space:nowrap}
.nota-imp{font-weight:600;white-space:nowrap;color:var(--ink)}
.nota-det{flex:1;color:var(--text)}
.nota-edit{margin-left:auto}
.nota-empty{padding:.4rem .1rem;margin:0}
.nota-modal{display:none;position:fixed;inset:0;background:rgba(15,23,42,.5);z-index:200;align-items:center;justify-content:center;padding:1rem}
.nota-modal.open{display:flex}
.nota-modal-box{background:var(--surface);border:1px solid var(--line);border-radius:12px;max-width:460px;width:100%;padding:1.5rem;box-shadow:0 20px 60px rgba(15,23,42,.3)}
.nota-modal-box h3{margin:0 0 1rem;color:var(--ink)}
.nota-modal-box .field{margin-bottom:.8rem}
.nota-modal-acts{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1.2rem}

/* modelos de documentación */
.md-tabs{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;margin:1rem 0}
.md-tabcard{margin:0}
.md-todo{font-size:.82rem;font-weight:500;display:flex;align-items:center;gap:.35rem;cursor:pointer;color:var(--text)}
.md-fields{display:flex;flex-direction:column;gap:.55rem}
.md-field{display:flex;align-items:center;gap:.5rem;cursor:pointer}

/* ===== cabeceira modelo doc: codigo 20% / descricion 80% ===== */
.md-cabec{display:flex;gap:1rem;align-items:flex-start;flex-wrap:nowrap}
.md-cabec .field{margin-bottom:0}
.field-lock > input[readonly]{background:var(--surface-2);color:var(--muted);cursor:not-allowed;border-style:dashed}

/* etiqueta dos campos con chips (técnicas de soporte / decoración) */
.field-chips > label{display:block;margin:0 0 .4rem;font-size:.78rem;font-weight:600;color:var(--muted)}

/* ===== Visor de documentación técnica ===== */
.docs-wrap{display:flex;gap:1.2rem;align-items:flex-start}
.docs-nav{flex:0 0 232px;padding:.5rem}
.docs-nav a{display:block;padding:.45rem .7rem;border-radius:8px;color:var(--ink);font-size:.9rem;text-decoration:none}
.docs-nav a:hover{background:var(--surface-2)}
.docs-nav a.active{background:var(--primary-soft);color:var(--primary-700);font-weight:600}
.docs-body{flex:1 1 auto;min-width:0;padding:1.3rem 1.8rem}
.md-doc{line-height:1.6;color:var(--ink)}
.md-doc h1{font-size:1.55rem;margin:0 0 1rem;color:var(--primary-700)}
.md-doc h2{font-size:1.18rem;margin:1.6rem 0 .6rem;border-bottom:1px solid var(--line);padding-bottom:.3rem}
.md-doc h3{font-size:1.02rem;margin:1.1rem 0 .4rem}
.md-doc p,.md-doc li{font-size:.92rem}
.md-doc ul,.md-doc ol{padding-left:1.3rem}
.md-doc code{background:var(--surface-2);padding:.1rem .35rem;border-radius:4px;font-size:.85em}
.md-doc pre{background:#0f172a;color:#e2e8f0;padding:.9rem 1.1rem;border-radius:8px;overflow:auto;font-size:.82rem}
.md-doc pre code{background:none;padding:0;color:inherit}
.md-doc table{border-collapse:collapse;margin:.8rem 0;font-size:.88rem}
.md-doc th,.md-doc td{border:1px solid var(--line);padding:.4rem .7rem;text-align:left}
.md-doc th{background:var(--surface-2)}
.md-doc a{color:var(--primary-600)}
.md-doc blockquote{border-left:3px solid var(--primary);margin:.7rem 0;padding:.25rem .9rem;color:var(--muted);background:var(--surface-2);border-radius:0 6px 6px 0}
@media(max-width:820px){.docs-wrap{flex-direction:column}.docs-nav{flex:1 1 auto;width:100%}}

/* ===== Proxectos: selección de pezas ===== */
.prox-sel{display:flex;flex-wrap:wrap;gap:.55rem;margin-bottom:.9rem}
.prox-peza{display:inline-flex;align-items:center;gap:.45rem;border:1px solid var(--line);border-radius:999px;padding:.2rem .5rem .2rem .25rem;background:#fff;font-size:.85rem}
.prox-peza img,.prox-noimg{width:30px;height:30px;border-radius:50%;object-fit:cover;flex:0 0 auto;background:var(--surface-2)}
.prox-noimg.sm{width:34px;height:34px;border-radius:6px}
.prox-peza form{margin:0;display:inline-flex}
.prox-x{border:none;background:none;color:var(--muted);cursor:pointer;font-size:.85rem;padding:0 .15rem;line-height:1}
.prox-x:hover{color:var(--danger)}
.prox-buscar .q-field{max-width:380px;margin-bottom:0}
.prox-res{display:flex;flex-direction:column;gap:.35rem;margin-top:.55rem;max-height:340px;overflow:auto}
.prox-res-row{display:flex;align-items:center;gap:.7rem;padding:.35rem .55rem;border:1px solid var(--line);border-radius:8px;margin:0;background:#fff}
.prox-res-row img{width:34px;height:34px;border-radius:6px;object-fit:cover;flex:0 0 auto}
.prox-res-t{flex:1 1 auto;min-width:0;font-size:.88rem}

/* ===== Proxectos: sub-navegación e relato ===== */
.prox-subnav{display:flex;gap:.2rem;margin:-.5rem 0 1.3rem;border-bottom:1px solid var(--line);flex-wrap:wrap}
.prox-subnav a{padding:.55rem .95rem;color:var(--muted);font-weight:600;font-size:.9rem;border-bottom:2px solid transparent;text-decoration:none}
.prox-subnav a:hover{color:var(--ink)}
.prox-subnav a.active{color:var(--primary-700);border-bottom-color:var(--primary)}
.relato-list{display:flex;flex-direction:column;gap:.8rem}
.relato-bloque{padding:0}
.rb-head{display:flex;align-items:center;gap:.7rem;padding:.7rem 1rem}
.rb-num{width:26px;height:26px;border-radius:50%;background:var(--primary-soft);color:var(--primary-700);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem;flex:0 0 auto}
.rb-tit{flex:1 1 auto;min-width:0;font-size:1rem;margin:0}
.rb-acts{display:flex;align-items:center;gap:.3rem;flex:0 0 auto}
.rb-acts form{margin:0;display:inline}
.rb-texto{margin:0;padding:0 1rem .8rem 3.4rem;color:var(--muted);font-size:.9rem;white-space:pre-wrap}

/* ===== Proxectos: árbore de espazos ===== */
.esp-tree{display:block}
.esp-children{margin-left:1.3rem;border-left:2px solid var(--line);padding-left:1rem;margin-top:.4rem}
.esp-row{display:flex;align-items:center;gap:.55rem;padding:.5rem .75rem;border:1px solid var(--line);border-radius:8px;background:#fff;margin-bottom:.4rem}
.esp-nome{font-weight:600}
.esp-tipo{font-size:.72rem;color:var(--primary-700);background:var(--primary-soft);border-radius:999px;padding:.08rem .5rem;font-weight:600;flex:0 0 auto}
.esp-meta{font-size:.8rem;color:var(--muted);flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.esp-acts{display:flex;align-items:center;gap:.25rem;flex:0 0 auto}
.esp-acts form{margin:0;display:inline}

/* ===== Proxectos: vitrinas ===== */
.vit-list{display:flex;flex-direction:column;gap:.7rem}
.vit-card{display:flex;align-items:center;gap:.8rem;padding:.7rem 1rem}
.vit-cod{font-weight:700;color:var(--primary-700);flex:0 0 auto}
.vit-tit{flex:1 1 auto;min-width:0;font-weight:600}
.vit-meta{font-size:.8rem;color:var(--muted);display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;flex:0 0 auto}
.vit-tag{background:var(--surface-2);border-radius:999px;padding:.1rem .55rem;font-size:.74rem;white-space:nowrap}
.vit-acts{display:flex;gap:.3rem;flex:0 0 auto}
.vit-acts form{margin:0;display:inline}
.prox-peza-add{border:1px dashed var(--line);cursor:pointer;background:#fff;color:var(--ink);font:inherit}
.prox-peza-add:hover{border-color:var(--primary);color:var(--primary-700)}
.prox-add{margin:0;display:inline-flex}
.vit-avail-h{font-size:.76rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:.6rem 0 .5rem;border-top:1px solid var(--line);padding-top:.8rem}

/* ===== Proxectos: comprobacións ===== */
.comp-resumo{color:var(--muted);font-size:.9rem;margin:-.5rem 0 1rem}
.comp-ok{color:var(--primary-700);font-weight:600;margin:0}
.comp-list{display:flex;flex-direction:column;gap:.7rem}
.comp-item{display:flex;gap:.7rem;padding:.75rem 1rem;border:1px solid var(--line);border-radius:10px;background:#fff;border-left-width:4px}
.comp-aviso{border-left-color:#f59e0b;background:#fffbeb}
.comp-info{border-left-color:#3b82f6;background:#eff6ff}
.comp-ic{font-size:1.05rem;flex:0 0 auto;line-height:1.5}
.comp-body{flex:1 1 auto;min-width:0}
.comp-txt{font-weight:600;font-size:.94rem}
.comp-det{margin:.4rem 0 0;padding-left:1.1rem;color:var(--muted);font-size:.85rem}
.comp-det li{margin:.12rem 0}

/* ===== Proxectos: checklist ===== */
.chk-prog{display:flex;align-items:center;gap:.7rem;margin:-.4rem 0 1.1rem}
.chk-bar{flex:0 1 300px;height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden}
.chk-bar-fill{height:100%;background:var(--primary);border-radius:999px;transition:width .2s}
.chk-prog-lbl{font-size:.85rem;color:var(--muted);font-weight:600}
.chk-add{display:flex;gap:.6rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:1.2rem}
.chk-add .field{margin:0}
.chk-add .field.t{flex:1 1 260px}
.chk-list{display:flex;flex-direction:column;gap:.4rem}
.chk-item{display:flex;align-items:center;gap:.7rem;padding:.5rem .8rem;border:1px solid var(--line);border-radius:8px;background:#fff}
.chk-item.done{background:var(--surface-2)}
.chk-cb{width:19px;height:19px;flex:0 0 auto;cursor:pointer;accent-color:var(--primary)}
.chk-main{flex:1 1 auto;min-width:0}
.chk-txt{font-weight:500}
.chk-item.done .chk-txt{text-decoration:line-through;color:var(--muted)}
.chk-sub{font-size:.8rem;color:var(--muted);display:flex;gap:.7rem;flex-wrap:wrap;margin-top:.05rem}
.chk-venc{color:var(--danger);font-weight:600}
.chk-com{font-size:.82rem;color:var(--muted);margin-top:.1rem;white-space:pre-wrap}
.chk-acts{display:flex;gap:.25rem;flex:0 0 auto}
.chk-acts form{margin:0;display:inline}

/* ===== Proxectos: cronograma (Gantt) ===== */
.gantt{display:flex;flex-direction:column;gap:.45rem;margin:.4rem 0 1.4rem}
.gantt-row{display:flex;align-items:center;gap:.8rem}
.gantt-lbl{flex:0 0 170px;font-size:.86rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gantt-track{flex:1 1 auto;position:relative;height:24px;background:var(--surface-2);border-radius:6px}
.gantt-bar{position:absolute;top:3px;height:18px;border-radius:5px;background:#bfdbfe;overflow:hidden;min-width:6px}
.gantt-bar.feita{background:var(--primary-soft)}
.gantt-bar.atrasada{background:#fecaca}
.gantt-fill{position:absolute;left:0;top:0;bottom:0;background:#3b82f6;opacity:.85}
.gantt-bar.feita .gantt-fill{background:var(--primary)}
.gantt-bar.atrasada .gantt-fill{background:var(--danger)}
.gantt-pct{position:absolute;right:5px;top:1px;font-size:.68rem;font-weight:700;color:#0f2b4d;z-index:2}
.gantt-fito{position:absolute;top:1px;font-size:.95rem;z-index:2}
.gantt-hoxe{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--danger);z-index:3}
.gantt-nodate{flex:1 1 auto;font-size:.82rem;color:var(--muted);font-style:italic}
.gantt-axis{display:flex;justify-content:space-between;margin-left:178px;font-size:.74rem;color:var(--muted);margin-top:.1rem}
.fase-add{display:flex;gap:.55rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:1.2rem}
.fase-add .field{margin:0}.fase-add .field.n{flex:1 1 200px}
.fase-av{display:inline-block;min-width:2.6rem;text-align:right;font-variant-numeric:tabular-nums;font-weight:600}

/* ===== Proxectos: documentos ===== */
.doc-up{display:flex;gap:.6rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:1.3rem}
.doc-up .field{margin:0}.doc-up .field.n{flex:1 1 180px}
.doc-list{display:flex;flex-direction:column;gap:.5rem}
.doc-item{display:flex;align-items:center;gap:.8rem;padding:.6rem .9rem;border:1px solid var(--line);border-radius:8px;background:#fff}
.doc-ic{font-size:1.35rem;flex:0 0 auto;line-height:1}
.doc-main{flex:1 1 auto;min-width:0}
.doc-nome{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.doc-sub{font-size:.8rem;color:var(--muted);display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.1rem;align-items:center}
.doc-tipo{background:var(--primary-soft);color:var(--primary-700);border-radius:999px;padding:.05rem .55rem;font-size:.72rem;font-weight:600}
.doc-com{font-size:.82rem;color:var(--muted);margin-top:.1rem}
.doc-acts{display:flex;gap:.3rem;flex:0 0 auto}
.doc-acts form{margin:0;display:inline}

/* ===== Proxectos: plano (editor drag&drop) ===== */
.plano-help{color:var(--muted);font-size:.88rem;margin:.1rem 0 1rem}
.plano-wrap{position:relative;display:inline-block;max-width:100%;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--surface-2);line-height:0}
.plano-img{display:block;max-width:100%;height:auto;user-select:none;-webkit-user-drag:none}
.vit-mark{position:absolute;transform:translate(-50%,-50%);background:var(--primary);color:#fff;border:2px solid #fff;border-radius:999px;min-width:26px;height:26px;padding:0 .45rem;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;cursor:grab;box-shadow:0 1px 5px rgba(0,0,0,.35);touch-action:none;white-space:nowrap;line-height:1}
.vit-mark.sen{background:#94a3b8}
.vit-mark.drag{cursor:grabbing;z-index:20;box-shadow:0 3px 10px rgba(0,0,0,.4)}
.plano-tray{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.9rem}
.plano-tray .lg{font-size:.8rem;color:var(--muted);margin-right:.3rem;align-self:center}

/* ===== Proxectos: composición de vitrina ===== */
.comp-wrap{position:relative;width:100%;max-width:760px;border:1px solid var(--line);border-radius:8px;overflow:hidden;
  background:#fbfdff;background-image:linear-gradient(45deg,#eef2f7 25%,transparent 25%),linear-gradient(-45deg,#eef2f7 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#eef2f7 75%),linear-gradient(-45deg,transparent 75%,#eef2f7 75%);background-size:26px 26px;background-position:0 0,0 13px,13px -13px,-13px 0}
.comp-wrap.hasimg{background:var(--surface-2);background-image:none}
.comp-canvas{position:relative;width:100%;aspect-ratio:4/3}
.comp-img{display:block;width:100%;height:auto}
.comp-pz{position:absolute;transform:translate(-50%,-50%);width:62px;cursor:grab;touch-action:none;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35))}
.comp-pz img{width:100%;height:auto;display:block;border-radius:4px;pointer-events:none;user-select:none;-webkit-user-drag:none}
.comp-pz.drag{cursor:grabbing;z-index:20;filter:drop-shadow(0 4px 9px rgba(0,0,0,.5))}
.comp-pz.sen img{outline:2px dashed #94a3b8;outline-offset:2px}

/* ===== Proxectos: itinerario (liña do recorrido) ===== */
.itin-list{display:flex;flex-direction:column}
.itin-stop{display:flex;gap:.9rem;align-items:flex-start;position:relative;padding-bottom:.85rem}
.itin-stop:not(:last-child)::before{content:"";position:absolute;left:13px;top:30px;bottom:-3px;width:2px;background:var(--line)}
.itin-num{width:28px;height:28px;flex:0 0 auto;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.82rem;z-index:1}
.itin-body{flex:1 1 auto;min-width:0;border:1px solid var(--line);border-radius:8px;background:#fff;padding:.55rem .9rem;display:flex;align-items:center;gap:.7rem}
.itin-main{flex:1 1 auto;min-width:0}
.itin-nome{font-weight:600}
.itin-badges{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.15rem}
.itin-badge{font-size:.72rem;border-radius:999px;padding:.05rem .55rem;font-weight:600}
.itin-badge.esp{background:var(--primary-soft);color:var(--primary-700)}
.itin-badge.blo{background:#ede9fe;color:#6d28d9}
.itin-nota{font-size:.82rem;color:var(--muted);margin-top:.15rem}
.itin-acts{display:flex;gap:.25rem;flex:0 0 auto}
.itin-acts form{margin:0;display:inline}
.itin-add{display:flex;gap:.55rem;align-items:flex-end;flex-wrap:wrap;margin-top:1.3rem}
.itin-add .field{margin:0}.itin-add .field.n{flex:1 1 160px}

/* ===== Proxectos: sub-nav con grupos desplegables ===== */
.prox-subnav{align-items:stretch}
.psub-group{position:relative;display:flex;align-items:center}
.psub-top{display:inline-flex;align-items:center;gap:.28rem;padding:.55rem .95rem;color:var(--muted);font-weight:600;font-size:.9rem;border-bottom:2px solid transparent;cursor:pointer;user-select:none}
.psub-group:hover .psub-top,.psub-group:focus-within .psub-top{color:var(--ink)}
.psub-group.active .psub-top{color:var(--primary-700);border-bottom-color:var(--primary)}
.psub-caret{width:13px;height:13px;opacity:.7}
.psub-menu{position:absolute;top:100%;left:0;margin-top:1px;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-md);padding:.3rem;min-width:165px;display:none;z-index:50}
.psub-group:hover .psub-menu,.psub-group:focus-within .psub-menu{display:block}
.psub-menu a{display:block;padding:.42rem .7rem;border-radius:6px;color:var(--ink);font-size:.88rem;text-decoration:none;font-weight:500;border-bottom:none}
.psub-menu a:hover{background:var(--surface-2);color:var(--ink)}
.psub-menu a.act{background:var(--primary-soft);color:var(--primary-700);font-weight:600}

/* ===== Proxectos: multimedia ===== */
.mm-asoc{background:var(--surface-2);border-radius:999px;padding:.05rem .55rem;font-size:.72rem;color:var(--muted);font-weight:600}
.mm-qr{width:15mm;height:15mm}

/* ===== Proxectos: libro do comisario ===== */
.lc-list{display:flex;flex-direction:column;gap:.9rem}
.lc-entry{border:1px solid var(--line);border-radius:10px;background:#fff;padding:.85rem 1.1rem}
.lc-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.3rem}
.lc-data{font-size:.78rem;color:var(--muted);font-weight:600;white-space:nowrap}
.lc-tipo{background:#ede9fe;color:#6d28d9;border-radius:999px;padding:.05rem .55rem;font-size:.72rem;font-weight:600}
.lc-tit{font-weight:700;flex:1 1 auto;min-width:0;font-size:1rem}
.lc-acts{display:flex;gap:.25rem;flex:0 0 auto}
.lc-acts form{margin:0;display:inline}
.lc-texto{white-space:pre-wrap;font-size:.92rem;line-height:1.5;color:var(--text)}
.lc-img{margin-top:.6rem}
.lc-img img{max-width:240px;max-height:170px;border-radius:6px;border:1px solid var(--line);display:block}
.lc-form .field{margin-bottom:1rem}
.lc-form .row{display:flex;gap:.7rem;flex-wrap:wrap}
.lc-form .row .field{flex:1 1 150px;margin-bottom:0}

/* ===== Tema alternativo: verde ===== */
:root[data-tema="verde"]{
  --primary:#10b981; --primary-600:#059669; --primary-700:#047857;
  --primary-soft:#ecfdf5; --ring:rgba(16,185,129,.25);
}
/* selector de tema no menú de usuario */
.tema-sw{display:flex;gap:.45rem;align-items:center;padding:.45rem .8rem .55rem;border-bottom:1px solid var(--line);margin-bottom:.25rem}
.tema-sw form{margin:0;display:inline-flex}
.tema-dot{width:20px;height:20px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;outline:1px solid var(--line);outline-offset:1px}
.tema-dot.verde{background:#10b981}
.tema-dot.azul{background:#0057FF}
.tema-dot.on{border-color:var(--ink);outline-color:var(--ink)}
.tema-lbl{font-size:.92rem;color:var(--text);font-weight:500;margin-right:.35rem}

/* ===== Cabeceira en cor de marca, avatar invertido e pé cálido ===== */
.topnav{background:var(--primary);border-bottom:none;box-shadow:0 1px 4px rgba(15,23,42,.16)}
.menubar .mb-item{color:rgba(255,255,255,.9)}
.menubar a.mb-item:hover,.menubar .mb-has-sub:hover{background:rgba(255,255,255,.14);color:#fff}
.menubar button.mb-item:hover{background:rgba(255,255,255,.14);color:#fff}
.menubar .mb-item.active{background:rgba(255,255,255,.2);color:#fff;font-weight:600}
.topnav svg.mb-caret{color:currentColor;opacity:.85}
.ts-toggle{color:rgba(255,255,255,.9)}
.ts-toggle:hover{background:rgba(255,255,255,.14);color:#fff}
.topsearch input[type=search]{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.38);color:#fff}
.topsearch input[type=search]::placeholder{color:rgba(255,255,255,.72)}
.topsearch input[type=search]:focus{background-color:rgba(255,255,255,.26);border-color:rgba(255,255,255,.65);box-shadow:none;color:#fff}
.lang-switch{color:#fff}
.lang-switch:hover{background:rgba(255,255,255,.24)}
.user-chip{color:#fff}
.user-chip:hover{background:rgba(255,255,255,.24)}
.avatar{background:#fff;color:var(--primary)}
/* os desplegables seguen sendo paneis claros */
.mb-sub{color:var(--text)}
.mb-sub a,.mb-sub .lang-opt{color:var(--text)}
.mb-sub a:hover,.mb-sub .lang-opt:hover{color:var(--ink)}
/* pé cálido */
.site-footer{background:#F8F7F4;border-top:1px solid #ece9e3}

/* Grupo "Auxiliares" dentro do despregable Catalogo */
.mb-sub-h{margin-top:.35rem;padding:.5rem .75rem .3rem;border-top:1px solid var(--line);
  font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.mb-sub .mb-subf{margin:0;display:block}
.mb-sub .mb-subf button{display:block;width:100%;text-align:left;background:none;border:0;cursor:pointer;
  font:inherit;font-weight:500;font-size:.92rem;padding:.5rem .75rem;border-radius:6px;
  color:var(--text);white-space:nowrap}
.mb-sub .mb-subf button:hover{background:var(--surface-2);color:var(--ink)}
/* nivel de agrupacion nas migas (non e un destino) */
.bc-grp{color:var(--muted)}

/* hover dos itens dentro dos despregables (mais presenza) */
.mb-sub a:hover,.mb-sub .mb-subf button:hover,.mb-sub .lang-opt:hover{background:color-mix(in srgb,var(--primary) 20%,#fff);color:var(--primary-700)}

/* multiselect: manter o resalte mentres o panel estea aberto ou o foco dentro
   (o :focus do botón pérdese ao marcar unha casilla, e Safari/macOS nin sequera
   dá foco a un <button> ao facer clic) */
.msel.open > .msel-toggle,.msel:focus-within > .msel-toggle{border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}
.msel.open > label,.msel:focus-within > label{color:var(--primary-700)}

/* fila da táboa clicable */
tr.row-link{cursor:pointer}
tr.row-link:hover{background:color-mix(in srgb,var(--primary) 7%,#fff)}

/* versión desplegada, á dereita da barra de migas */
.bc-ver{margin-left:auto;color:var(--muted);font-size:.76rem;letter-spacing:.03em;
  font-variant-numeric:tabular-nums;white-space:nowrap}

/* alta de fabricante: formulario amplo en catro filas.
   Conserva a clase .inline-form (body.is-consulta agóchaa) e só lle cambia o eixe. */
.cat-alta{flex-direction:column;align-items:stretch;gap:.7rem}
.cat-alta .ca-row{display:flex;gap:.7rem}
.cat-alta .ca-row .field{margin:0;min-width:0}
.cat-alta .ca-70{flex:0 1 70%}
.cat-alta .ca-30{flex:0 1 30%}
.cat-alta .ca-50{flex:1 1 50%}
.cat-alta .ca-acc{display:flex;justify-content:flex-end}
@media (max-width:760px){
  .cat-alta .ca-row{flex-wrap:wrap}
  .cat-alta .ca-70,.cat-alta .ca-30,.cat-alta .ca-50{flex:1 1 100%}
}

/* edición de fabricante: mesmo tratamento ca o alta, cun filete entre fichas.
   .row-edit input{padding:.42rem} gaña por especificidade a .field > input e
   esmagaría a etiqueta flotante: hai que devolverlle o padding do compoñente. */
.cat-edit{margin:1rem 0 0;padding-top:1rem;border-top:1px solid var(--line)}
.cat-edit .field > input,.cat-edit .field > select{flex:none;padding:1.5rem .75rem .45rem}
.cat-edit .ca-acc{gap:.5rem}

/* buscador do catálogo de fabricantes (mesmo aire ca o de /pezas) */
.fab-buscar{display:flex;gap:.7rem;align-items:stretch;margin-bottom:1.1rem}
.fab-buscar .q-field{flex:1 1 auto;max-width:none;margin:0}
.fab-buscar .buscar-acts{display:flex;gap:.5rem;align-items:center;flex:0 0 auto}
@media (max-width:760px){.fab-buscar{flex-wrap:wrap}.fab-buscar .q-field{flex:1 1 100%}}

/* ---- catálogos auxiliares: hub, ficha e táboa ---- */
.cat-hub{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.9rem}
.cat-card{display:flex;align-items:center;justify-content:space-between;gap:.8rem;
  padding:1.05rem 1.2rem;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow-sm);color:var(--ink);font-weight:600;
  transition:border-color .12s,box-shadow .12s,transform .12s}
.cat-card:hover{border-color:var(--primary);box-shadow:0 0 0 3px var(--ring);text-decoration:none;transform:translateY(-1px)}
.cc-n{font-size:.78rem;font-weight:700;color:var(--primary-700);background:var(--primary-soft);
  padding:.2rem .55rem;border-radius:999px;font-variant-numeric:tabular-nums}
/* o ancho de cada campo da ficha vén do rexistro (style inline) */
.cat-alta .ca-f{min-width:0}
.ficha-acc{align-items:center;gap:.7rem}
.ficha-acc .btn-primary{margin-left:auto}
.cat-usos{font-size:.84rem;color:var(--muted)}
/* botón de alta na cabeceira do panel */
.panel-head .cat-novo{flex:0 0 auto}

/* ---- modal de axuda ---- */
.tb-acts{display:flex;align-items:center;gap:.5rem}
.px-axuda{padding:.42rem .5rem;line-height:0}
.px-axuda svg{width:17px;height:17px}
.modal-fondo{position:fixed;inset:0;z-index:80;background:rgba(15,23,42,.55);
  display:flex;align-items:center;justify-content:center;padding:2rem 1rem}
.modal-fondo[hidden]{display:none}
.modal-caixa{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-md);
  width:min(860px,100%);max-height:min(86vh,900px);display:flex;flex-direction:column;overflow:hidden}
.modal-cab{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:1rem 1.4rem;border-bottom:1px solid var(--line);background:var(--primary-soft)}
.modal-cab h2{margin:0;font-size:1.02rem;color:var(--primary-700)}
.modal-x{background:none;border:0;font-size:1.7rem;line-height:1;cursor:pointer;
  color:var(--muted);padding:0 .2rem}
.modal-x:hover{color:var(--ink)}
.modal-corpo{overflow-y:auto;padding:1.4rem 1.6rem}
@media (max-width:760px){.modal-fondo{padding:0}.modal-caixa{max-height:100vh;border-radius:0}}

/* columnas de data no listado de pezas: cifras de ancho fixo para que non bailen */
.col-data{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.85rem}

/* selo de última modificación, baixo a tarxeta da peza */
.selo-mod{margin:.6rem .1rem 0;text-align:right;font-size:.78rem;color:var(--muted);
  font-variant-numeric:tabular-nums}

/* tras gardar: o selo de data resáltase un intre para que se vexa que cambiou */
.selo-novo{animation:selo-flash 2.4s ease-out 1}
@keyframes selo-flash{
  0%,55%{color:var(--primary-700);font-weight:700}
  100%{color:var(--muted);font-weight:400}
}
@media (prefers-reduced-motion:reduce){.selo-novo{animation:none;color:var(--primary-700)}}

/* ---- Aviso emerxente (toast) ----
   Vai nun carril que repite o ancho e o padding de .content, así o aviso
   queda aliñado coa zona da versión sen cravar ningún píxel: ao cambiar o
   ancho da xanela móvese con ela. O carril non intercepta o rato. */
.toast-rail{position:fixed;left:0;right:0;z-index:2000;
  top:calc(var(--topnav-h) + 8px);
  max-width:1180px;margin:0 auto;padding:0 1.5rem;   /* mesmo inset ca .content (24px) */
  display:flex;justify-content:flex-end;pointer-events:none}
.toast-ok{pointer-events:auto;display:flex;align-items:center;gap:.6rem;
  background:var(--primary-soft);color:var(--primary-700);border:1px solid var(--primary);
  font-weight:600;font-size:.9rem;border-radius:10px;padding:.65rem 1.05rem;
  box-shadow:0 8px 24px rgba(2,6,23,.14);animation:toast-entra .28s ease-out}
.toast-ok svg{width:18px;height:18px;flex:0 0 auto}
/* o bloqueo non segue a marca: non é a mesma clase de mensaxe */
.toast-err{background:#fef2f2;border-color:#b91c1c;color:#b91c1c}
@keyframes toast-entra{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.toast-ok{animation:none}}
/* en estreito a cabeceira envolve e medra: abaixo e a ancho completo */
@media (max-width:760px){
  .toast-rail{top:auto;bottom:12px;padding:0 12px;justify-content:stretch}
  .toast-ok{flex:1;justify-content:center}
}

/* opción "incluír portada" na definición do modelo de documento */
.md-portada{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin:1rem 0 0;
  padding-top:.9rem;border-top:1px solid var(--line)}
.md-portada .mp-lbl{font-size:.72rem;font-weight:700;letter-spacing:.05em;
  text-transform:uppercase;color:var(--muted)}
.md-portada .mp-op{display:inline-flex;align-items:center;gap:.35rem;font-size:.92rem;cursor:pointer}
.md-portada .mp-axuda{font-size:.8rem;flex:1 1 100%}
@media (min-width:900px){.md-portada .mp-axuda{flex:1 1 auto;margin-left:.4rem}}

/* barra de formato dos campos de notas */
.md-field{position:relative}
.md-bar{display:flex;gap:.25rem;position:absolute;top:.3rem;right:.4rem;z-index:2}
.md-btn{min-width:26px;height:24px;padding:0 .35rem;border:1px solid var(--line);
  background:#fff;border-radius:6px;cursor:pointer;font-size:.78rem;line-height:1;
  color:var(--muted);transition:border-color .12s,color .12s,background .12s}
.md-btn:hover{border-color:var(--primary);color:var(--primary-700);background:var(--primary-soft)}
.md-btn.md-b{font-weight:800}
.md-btn.md-i{font-style:italic;font-family:Georgia,serif}
.md-btn.md-h{font-weight:700}
/* deixar sitio á barra para que non pise a etiqueta flotante nin o texto */
.md-field > textarea{padding-top:2.2rem}
.md-axuda{font-size:.78rem;margin:.1rem 0 0}

/* editor visual dos campos de notas: mesmo aspecto ca un textarea */
.md-editor{width:100%;padding:2.2rem .75rem .5rem;border:1px solid #cbd5e1;
  border-radius:var(--radius);background:#fff;font:inherit;color:var(--ink);
  overflow-y:auto;transition:border-color .12s,box-shadow .12s}
.md-editor:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}
.md-field:has(> .md-editor:focus) > label{color:var(--primary-700)}
.md-editor p{margin:0 0 .5rem}
.md-editor p:last-child{margin-bottom:0}
.md-editor ul,.md-editor ol{margin:.3rem 0;padding-left:1.4rem}
.md-editor li{margin:.15rem 0}
.md-editor a{color:var(--primary-700)}
.md-editor strong{font-weight:700}
.md-editor em{font-style:italic}

/* botón de nota ao pé */
.md-btn.md-n{font-size:.72rem;letter-spacing:-.02em}

/* ---- editor rico (Quill) nos campos de notas ---- */
.rt-field{position:relative}
.rt-field > label{position:absolute;top:.42rem;left:.8rem;z-index:3;
  font-size:.66rem;font-weight:600;letter-spacing:.01em;color:var(--muted);pointer-events:none}
.rt-wrap{border:1px solid #cbd5e1;border-radius:var(--radius);background:#fff;
  overflow:hidden;padding-top:1.5rem;transition:border-color .12s,box-shadow .12s}
.rt-field:has(.ql-editor:focus) .rt-wrap{border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}
.rt-field:has(.ql-editor:focus) > label{color:var(--primary-700)}
/* barra de Quill: sen bordo propio, alineada á dereita da etiqueta */
.rt-wrap .ql-toolbar.ql-snow{border:0;border-bottom:1px solid var(--line);padding:.25rem .4rem;
  display:flex;flex-wrap:wrap;justify-content:flex-end}
.rt-wrap .ql-container.ql-snow{border:0;font:inherit}
.rt-wrap .ql-editor{padding:.55rem .75rem;font-size:1rem;line-height:1.5}
.rt-wrap .ql-editor.ql-blank::before{font-style:normal;color:#94a3b8;left:.75rem}
.ql-snow .ql-stroke{stroke:var(--muted)}
.ql-snow .ql-fill{fill:var(--muted)}
.ql-snow .ql-picker{color:var(--muted)}
.ql-snow button:hover .ql-stroke,.ql-snow button.ql-active .ql-stroke{stroke:var(--primary-700)}
.ql-snow button:hover .ql-fill,.ql-snow button.ql-active .ql-fill{fill:var(--primary-700)}
.ql-snow button:hover,.ql-snow button.ql-active{background:var(--primary-soft);border-radius:5px}
.ql-nota{font-size:.72rem;font-weight:700;color:var(--muted)}

/* ligazóns do fabricante, como iconas */
.fab-ligazons{display:flex;gap:.5rem;margin:0 0 1.1rem}
.fabl{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
  border:1px solid var(--line);border-radius:var(--radius);background:#fff;
  color:var(--primary-700);cursor:pointer;transition:border-color .12s,background .12s,color .12s}
.fabl svg{width:17px;height:17px}
.fabl:hover{border-color:var(--primary);background:var(--primary-soft);text-decoration:none}
.fabl.off{color:#cbd5e1;background:var(--surface-2);border-color:var(--line);
  cursor:not-allowed;pointer-events:none}

/* separador antes do lapis de edición do fabricante */
.fabl-sep{width:1px;background:var(--line);margin:.15rem .25rem}
.fab-editar:not(.off){color:var(--primary-700)}

/* botón de axuda da área activa, ao final da subnavegación */
.psub-axuda{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;
  width:30px;height:30px;border:1px solid var(--line);border-radius:var(--radius);
  background:#fff;color:var(--muted);cursor:pointer;flex:0 0 auto;
  transition:border-color .12s,color .12s,background .12s}
.psub-axuda svg{width:16px;height:16px}
.psub-axuda:hover{border-color:var(--primary);color:var(--primary-700);background:var(--primary-soft)}
.ax-todo{margin-top:1.6rem;padding-top:1rem;border-top:1px solid var(--line)}
.ax-todo a{font-weight:600}

/* título da área activa dentro dun proxecto */
.prox-area{margin:1.1rem 0 1rem}
.prox-area h2{margin:0;font-size:1.12rem;color:var(--ink)}
.prox-area p{margin:.25rem 0 0;font-size:.88rem;color:var(--muted);max-width:76ch}

/* buscar no catálogo enteiro desde a composición dunha vitrina */
.vit-busca{margin:1rem 0 .4rem}
.vit-busca-in{width:100%;max-width:520px;margin:.35rem 0 .5rem}
.vit-nova{display:inline-block;margin-left:.35rem;padding:0 .3rem;border-radius:4px;
  background:var(--primary-soft);color:var(--primary-700);font-size:.66rem;font-weight:700}

/* Interrogante de axuda por campo.

   pointer-events:auto é imprescindible: o interrogante vai dentro da etiqueta
   flotante, que leva pointer-events:none para non estorbar ao escribir. Sen
   isto o rato atravesa a icona e o bocadillo non aparece nunca.

   Non se usa o title do navegador: tarda case un segundo en saír, córtase se é
   longo e non se pode estilar. */
.cx-i{position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:14px;height:14px;margin-left:.32rem;border-radius:50%;
  background:var(--primary-soft);color:var(--primary-700);
  font-size:.6rem;font-weight:700;cursor:help;vertical-align:middle;line-height:1;
  pointer-events:auto}
.cx-i:hover,.cx-i:focus{background:var(--primary);color:#fff;outline:none}

.cx-i::after{
  content:attr(data-tip);
  /* position:fixed e non absolute: as tarxetas levan overflow:hidden e
     cortaban o bocadillo. Coordenadas en variables, postas polo JS. */
  position:fixed;left:var(--cx-x, 0);top:var(--cx-y, 0);transform:translateY(-100%);
  min-width:200px;max-width:var(--cx-w, 330px);width:max-content;
  background:#0f172a;color:#fff;text-align:left;font-weight:400;
  font-size:.78rem;line-height:1.4;letter-spacing:0;text-transform:none;
  /* as lapelas levan white-space:nowrap e o bocadillo herdábao: saía
     nunha soa liña e cortábase polo bordo */
  white-space:normal;
  padding:.5rem .7rem;border-radius:8px;box-shadow:0 8px 24px rgba(2,6,23,.28);
  opacity:0;visibility:hidden;transition:opacity .12s;z-index:60;pointer-events:none}
.cx-i::before{
  content:"";position:fixed;left:var(--cx-ax, 0);top:var(--cx-y, 0);transform:translateX(-50%);
  border:5px solid transparent;border-top-color:#0f172a;
  opacity:0;visibility:hidden;transition:opacity .12s;z-index:61}
.cx-i:hover::after,.cx-i:focus::after,.cx-i.cx-open::after,
.cx-i:hover::before,.cx-i:focus::before,.cx-i.cx-open::before{opacity:1;visibility:visible}
.cx-i.cx-open{background:var(--primary);color:#fff}
/* co bocadillo en posición fixa xa non fai falla mover nada por CSS:
   o lado decídeo o JS ao calcular --cx-x */

/* táboa de pezas dentro dun proxecto e dunha vitrina */
.px-taboa{width:100%;border-collapse:collapse;margin-top:.2rem}
.px-taboa th{font-size:.68rem}
.px-taboa td{vertical-align:middle}
.px-taboa .thumb{width:34px;height:34px;object-fit:cover;border-radius:6px;display:block}
.px-taboa .thumb-empty{background:var(--surface-2);border:1px dashed var(--line)}
.px-taboa tbody tr:hover{background:var(--surface-2)}
/* quitar peza: botón vermello con ✕ branca en negriña */
.px-taboa .prox-x{display:inline-flex;align-items:center;justify-content:center;
  width:26px;height:26px;border:0;border-radius:6px;background:#dc2626;color:#fff;
  font-size:.82rem;font-weight:800;line-height:1;cursor:pointer;
  transition:background .12s}
.px-taboa .prox-x:hover{background:#b91c1c}

/* medidas na segunda liña, baixo o título da peza */
.px-medidas{display:block;font-size:.78rem;color:var(--muted);margin-top:.1rem}

/* ---- modal de engadir pezas ----
   Ampla e alta: o contido principal é unha táboa de resultados. */
.modal-engadir{width:min(1180px,96vw);max-height:92vh}
.modal-engadir .modal-corpo{padding:1.1rem 1.4rem;display:flex;flex-direction:column;gap:.8rem}

/* pé: reconto á esquerda, botón á dereita e con folgura */
.modal-pe{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:1.05rem 1.4rem;border-top:1px solid var(--line);background:var(--surface-2)}
.modal-pe .btn{padding:.62rem 1.7rem}
.eng-conta{font-size:.86rem}

/* buscador e fonte na mesma fila */
.eng-fila{display:flex;gap:.7rem;align-items:stretch}
.eng-campo{margin:0;flex:1 1 auto;max-width:none}
.eng-fonte-campo{margin:0;flex:0 0 240px}
.eng-res{flex:1;min-height:300px;max-height:64vh;overflow-y:auto}
.eng-vacio{margin:2.2rem 0;text-align:center;font-size:.88rem}

/* táboa de resultados */
.eng-taboa{margin-top:0}
.eng-taboa .thumb{width:34px;height:34px;object-fit:cover;border-radius:6px;display:block}
.eng-taboa .thumb-empty{background:var(--surface-2);border:1px dashed var(--line)}
.eng-taboa tbody tr:hover{background:var(--primary-soft)}
.eng-pax{border-top:1px solid var(--line);margin-top:.5rem;padding-top:.6rem;
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;font-size:.84rem;
  /* .paginator trae justify-content:space-between, que impide que as columnas
     1fr medren e deixa a terceira en 0: hai que anulalo para centrar de verdade */
  justify-content:stretch}
.eng-pax .pg-controls{grid-column:2;justify-self:center}

/* Cabeceiras ordenables. A frecha é a mesma ca en /pezas: ↑ / ↓ como texto e
   só na columna pola que se está a ordenar. */
.px-taboa th.ord{cursor:pointer;user-select:none}
.px-taboa th.ord:hover{color:var(--primary-700)}
.px-taboa th.ord::after{content:attr(data-frecha);margin-left:.3rem;font-weight:600}

/* filete separador dentro dun despregable do menú */
.mb-sep{height:1px;background:var(--line);margin:.35rem .4rem}

/* ---- facturas ---- */
.fac-pdf{display:inline-flex;align-items:center;justify-content:center;padding:.15rem .5rem;
  border-radius:5px;background:#fee2e2;color:#b91c1c;font-size:.72rem;font-weight:700;
  text-decoration:none;letter-spacing:.02em}
.fac-pdf:hover{background:#fecaca;text-decoration:none}
.fac-pdf-zona{display:flex;align-items:center;gap:.9rem;margin:.4rem 0 .2rem}
.fac-pdf-info{display:inline-flex;align-items:center;gap:.6rem;font-size:.86rem}
.fac-imp{max-width:110px;text-align:right;padding:.35rem .5rem}
.fac-add{display:flex;gap:.4rem;align-items:center;margin:0}
.fac-cadre{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  margin-top:.7rem;padding-top:.7rem;border-top:1px solid var(--line);font-size:.86rem}
.fac-dif{color:#b45309;background:#fef3c7;padding:.2rem .6rem;border-radius:6px;font-weight:600}

/* ---- tab de compra da ficha de peza ---- */
.grid-compra{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.2rem;
  grid-template-areas:"lugar lugar lugar pais" "ano det det det" "prezo det det det" "fact det det det"}
.cp-lugar{grid-area:lugar} .cp-pais{grid-area:pais} .cp-ano{grid-area:ano}
.cp-prezo{grid-area:prezo} .cp-fact{grid-area:fact} .cp-det{grid-area:det}
.cp-det{display:flex;flex-direction:column}
.cp-det textarea{flex:1;min-height:150px;resize:vertical}
.cp-fact-link{display:flex;flex-direction:column;gap:.1rem;text-decoration:none;
  border:1px solid var(--line);border-left:3px solid var(--primary);border-radius:6px;
  padding:.42rem .6rem;line-height:1.25}
.cp-fact-link:hover{background:var(--primary-soft);text-decoration:none}
.cp-fact-num{font-weight:600;color:var(--primary)}
.cp-fact-sub{font-size:.76rem;color:var(--muted)}
.cp-fact-non{display:block;padding:.42rem .6rem;border:1px dashed var(--line);
  border-radius:6px;color:var(--muted);font-size:.84rem}
@media(max-width:760px){.grid-compra{grid-template-columns:1fr;
  grid-template-areas:"lugar" "pais" "ano" "prezo" "fact" "det"}}

/* ---- botón de manual na cabeceira dunha ficha ---- */
/* a icona dentro dunha lapela non debe herdar o subliñado nin o cursor da lapela */
.tabs .tab .cx-i{margin-left:.35rem;vertical-align:middle}

/* ---- control > traducións ---- */
.tr-sel{display:flex;align-items:center;gap:.5rem;margin:0}
.tr-sel label{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.tr-sel select{padding:.3rem .5rem}
.tr-scroll{overflow-x:auto}
.tr-matriz{min-width:640px}
.tr-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tr-base{font-weight:600;color:var(--ink)}
.tr-pc{font-weight:600}
.tr-pc.ok{color:#2c7a52} .tr-pc.med{color:#96690f} .tr-pc.baixo{color:#a33a30}
.tr-cad{margin-left:.4rem;font-size:.72rem;color:#96690f;background:#fbf1dc;
  padding:.05rem .3rem;border-radius:3px}
.tr-man{margin-left:.3rem;font-size:.72rem;color:var(--muted)}
.tr-cero{color:var(--line)}
.tr-tag{margin-left:.5rem;font-size:.66rem;letter-spacing:.05em;text-transform:uppercase;
  color:var(--muted);border:1px solid var(--line);padding:.05rem .35rem;border-radius:3px}
/* lenda en lista: o símbolo nunha columna fixa para que o texto aliñe */
.tr-lenda{list-style:none;margin:1rem 0 0;padding:.85rem 0 0;max-width:82ch;
  border-top:1px solid var(--line);display:grid;gap:.4rem}
.tr-lenda li{display:grid;grid-template-columns:2.6rem 1fr;gap:.6rem;
  align-items:baseline;font-size:.8rem;line-height:1.45;color:var(--muted)}
.tr-lenda .lg-s{justify-self:start;min-width:1.75rem;text-align:center;
  padding:.08rem .38rem;border-radius:5px;background:var(--surface-2);
  border:1px solid var(--line);color:var(--ink);font-size:.76rem;font-weight:600}
.tr-lenda .lg-orixe{font-weight:500;font-style:italic;letter-spacing:.01em}
.tr-why{font-size:.86rem;margin:0 0 .9rem;max-width:80ch}
.tr-nota{font-size:.8rem;margin:.7rem 0 0;max-width:80ch}
.tr-campos{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.5rem .9rem}
.tr-chk{display:flex;align-items:baseline;gap:.45rem;font-size:.88rem;cursor:pointer}
.tr-chk .muted{font-size:.76rem;margin-left:auto;white-space:nowrap}
.tr-custo{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  flex-wrap:wrap;margin-top:1.1rem;padding-top:.9rem;border-top:1px solid var(--line);
  font-size:.9rem}
.tr-mod{margin-left:.5rem;font-size:.76rem}
.tr-txt{font-size:.82rem;line-height:1.4}
.tr-mini{font-size:.74rem;word-break:break-all}
.tr-marca{font-size:.72rem;background:var(--primary-soft);color:var(--primary-700);
  padding:.05rem .3rem;border-radius:3px;margin-right:.25rem}
.tr-motivo{font-size:.76rem;color:#96690f;background:#fbf1dc;padding:.1rem .4rem;border-radius:4px}
.est-ok{background:var(--primary-soft);color:var(--primary-700)}
.est-err{background:#fee2e2;color:#b91c1c}
.est-run{background:#fef9c3;color:#854d0e}
.est-pen{background:#f1f5f9;color:#475569}

.tr-sen{margin-left:.3rem;font-size:.72rem;color:var(--muted)}

/* ---- texto rico na ficha de só lectura ---- */
.ver-row-rico{align-items:flex-start}
.ver-rico{line-height:1.55}
.ver-rico p{margin:0 0 .6rem}
.ver-rico p:last-child{margin-bottom:0}
.ver-rico ul,.ver-rico ol{margin:.3rem 0 .6rem;padding-left:1.3rem}
.ver-rico li{margin:.15rem 0}
.ver-rico h1,.ver-rico h2,.ver-rico h3,.ver-rico h4{margin:.7rem 0 .3rem;font-size:1rem;color:var(--ink)}
.ver-rico a{text-decoration:underline}
.ver-rico img{max-width:100%;height:auto}
.ver-rico .nota-pe{font-size:.82rem;color:var(--muted);border-top:1px solid var(--line);
  margin-top:.8rem;padding-top:.5rem}

.est-int{background:#fbf1dc;color:#96690f}

.tr-det{display:block;font-size:.78rem;color:var(--muted);font-weight:400;margin-top:.1rem;
  max-width:52ch;line-height:1.35}
.tr-sup td{vertical-align:top}
.tr-alias{font-size:.72rem;color:#96690f;background:#fbf1dc;padding:.1rem .4rem;border-radius:4px}

.tr-suplanz{display:flex;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin-top:1.1rem;
  padding-top:.9rem;border-top:1px solid var(--line)}
.tr-suplanz .field{margin:0;min-width:220px}
.tr-suplangs{display:flex;gap:.7rem;flex-wrap:wrap;padding-bottom:.35rem}
.tr-suplangs .tr-chk{gap:.3rem;font-size:.82rem}

/* ---- cadro unificado de traducións ---- */
.tr-lanzarow th{padding-top:0;padding-bottom:.5rem;border-bottom:1px solid var(--line)}
.tr-lanz{margin:0;display:flex;justify-content:flex-end}
.tr-lanz .btn{padding:.2rem .5rem;font-size:.72rem;white-space:nowrap}
.tr-aodia{color:#2c7a52;font-weight:700}
.tr-grupo td{background:var(--primary-soft);color:var(--primary-700);font-size:.7rem;
  letter-spacing:.1em;text-transform:uppercase;font-weight:600;padding:.35rem .9rem}
.tr-orixe{font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.tr-basecol{background:var(--line2)}
.tr-cel{white-space:nowrap}

.tr-selpanel{display:flex;align-items:center;gap:.45rem;margin:0}
.tr-selpanel label{margin:0;font-size:.82rem;color:var(--muted)}
.tr-selpanel select{padding:.2rem .45rem;font-size:.82rem}

/* estado dun traballo como icona: mantén as cores de .est-* que xa existían */
.est-ico{display:inline-flex;align-items:center;justify-content:center;
  width:26px;height:26px;border-radius:999px}
.est-ico svg{width:15px;height:15px;display:block}
.ico-xira{transform-origin:50% 50%;animation:ico-xira 1.1s linear infinite}
@keyframes ico-xira{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.ico-xira{animation:none}}
/* un botón que só leva icona non debe herdar o padding pensado para texto */
.btn.icon-btn{padding:.28rem .45rem;line-height:0}

/* A data leva 16 caracteres ("21/07/2026 18:05") e en 126px partíase en dúas
   liñas. Ensánchase, pero o que garante a liña única é o nowrap: a anchura
   soa depende do tipo de letra do navegador e volvería romper noutro equipo. */
.tr-data{white-space:nowrap;width:150px}


/* ficha de catálogo en pestanas: as filas van dentro do .tab-pane, que non
   herda o gap do formulario; devólveselle a separación vertical. */
.cat-alta .tab-pane{flex-direction:column;gap:.7rem;padding:1.3rem}
/* o flex só no panel visible: se non, gaña ao display:none de [hidden] e as
   pestanas non alternan */
.cat-alta .tab-pane:not([hidden]){display:flex}
.cat-alta .tab-pane[data-pane="notas"]{padding-top:1.5rem}
/* accións (Gardar/Eliminar) en modo pestanas: separación do bordo e da grella */
.tabwrap .ca-acc{padding:1rem 1.3rem 1.3rem;border-top:1px solid var(--line)}
/* coletilla de uso á dereita da barra de pestanas */
.tabs .tab-usos{margin-left:auto;align-self:center;font-size:.82rem;color:var(--muted);
  white-space:nowrap;padding-right:.4rem}
.tabs .tab-usos a{font-weight:700;color:var(--primary-700)}
.tabs .tab-usos a:hover{text-decoration:none;color:var(--primary)}

/* logotipo do fabricante, ao final dos datos xerais */
.fab-logo{margin-top:.4rem;padding-top:1rem;border-top:1px solid var(--line)}
.fab-logo > label{display:block;text-align:left;text-transform:uppercase;letter-spacing:.04em;font-size:.78rem;font-weight:700;color:var(--muted);margin-bottom:.8rem}
/* cuerpo en columna centrada: logo arriba, botones debajo */
.fab-logo-body{display:flex;flex-direction:column;align-items:center;gap:1rem}
/* marco do logo: ocupa polo menos a metade da caixa e vai centrado; a
   imaxe vai dentro, centrada, contain. Válido con enlace (<a>) ou sen el. */
.fab-logo-frame{width:60%;min-width:min(300px,100%);height:170px;box-sizing:border-box;
  display:flex;align-items:center;justify-content:center;padding:1.1rem 1.4rem;
  border:1px solid var(--line);border-radius:10px;background:#fff}
.fab-logo-frame img{max-width:100%;max-height:100%;object-fit:contain;display:block}
.fab-logo-vacio{background:transparent;border-style:dashed;color:var(--muted);font-size:.9rem}
/* botóns centrados debaixo do logo */
.fab-logo-acts{display:flex;justify-content:flex-start;align-self:flex-start;gap:.5rem;flex-wrap:wrap}
.fab-logo-acts .lg-subir-lbl{cursor:pointer;margin:0}
@media(max-width:760px){.fab-logo-img,.fab-logo-vacio{width:100%}}

/* fila de filtro a ancho completo (exposicións) */
.filtros-1{display:grid !important;grid-template-columns:1fr;gap:.6rem;align-items:start}
/* botón Filtros activo cando a sección está aberta / hai filtros */
#btn-filtros.on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary-700)}
