/* =====================================================================
   NMASUNO CDE — identidad visual
   Los colores de marca viven en las variables de :root. Para cambiar la
   paleta de N+UNO alcanza con tocar estas líneas.
   ===================================================================== */
:root {
    /* Colores de marca N+UNO */
    --n1-negro: #0b0b0b;
    --n1-oliva: #444e3a;
    --n1-naranja: #d9531e;
    --n1-naranja-oscuro: #b8431a;

    /* Roles */
    --n1-oliva-oscuro: #33392c;
    --n1-oliva-claro: #eef0ea;

    /* Roles: la interfaz usa casi solo oliva, blanco y grises. El naranja queda disponible pero no se usa. */
    --n1-navy: var(--n1-oliva);          /* fondo del menú lateral y del header público */
    --n1-navy-2: var(--n1-oliva-oscuro); /* variante para hover */
    --n1-primary: var(--n1-oliva);       /* botones y links */
    --n1-primary-dark: var(--n1-oliva-oscuro);
    --n1-accent: var(--n1-oliva);        /* detalles */
    --n1-bg: #ffffff;                    /* fondo de página: blanco */
    --n1-surface: #ffffff;               /* tarjetas */
    --n1-border: #e3e4e0;
    --n1-text: var(--n1-negro);          /* texto: negro */
    --n1-muted: #6b6f66;
    --n1-radius: .5rem;
    --n1-shadow: 0 1px 2px rgba(0, 0, 0, .05), 0 4px 14px rgba(0, 0, 0, .05);
    --n1-font: "Aeonik", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
}

/* Aeonik (fuente con licencia). Archivos en wwwroot/fonts/, los sirve la app: nadie tiene que instalarla.
   Pesos disponibles: Light 300, Regular 400, Bold 700. Los pesos 500/600 caen en Regular/Bold. */
@font-face { font-family: "Aeonik"; font-weight: 300; font-style: normal; font-display: swap; src: url("fonts/Aeonik-Light.woff2") format("woff2"); }
@font-face { font-family: "Aeonik"; font-weight: 400; font-style: normal; font-display: swap; src: url("fonts/Aeonik-Regular.woff2") format("woff2"); }
@font-face { font-family: "Aeonik"; font-weight: 700; font-style: normal; font-display: swap; src: url("fonts/Aeonik-Bold.woff2") format("woff2"); }

/* ---------- Bootstrap 5.3: variables de tema ---------- */
:root, [data-bs-theme=light] {
    --bs-font-sans-serif: var(--n1-font);
    --bs-body-font-family: var(--n1-font);
    --bs-body-color: var(--n1-text);
    --bs-body-bg: var(--n1-bg);
    --bs-secondary-color: var(--n1-muted);
    --bs-border-color: var(--n1-border);
    --bs-primary: var(--n1-oliva);
    --bs-primary-rgb: 68, 78, 58;
    --bs-link-color: var(--n1-primary);
    --bs-link-color-rgb: 68, 78, 58;
    --bs-link-hover-color: var(--n1-primary-dark);
    --bs-link-hover-color-rgb: 51, 57, 44;
    --bs-code-color: var(--n1-primary-dark);
    --bs-focus-ring-color: rgba(68, 78, 58, .25);
}

html, body { background: var(--n1-bg); }

/* ---------- Tipografía: Aeonik Light 300 / Regular 400 / Bold 700 ----------
   Light: títulos grandes (nombre de página, de proyecto, "Ingresar").
   Regular: texto, formularios, botones, menú y etiquetas en mayúsculas con tracking.
   Bold: lo que el ojo tiene que encontrar primero: nombres de archivo, encabezados de tarjeta, datos clave. */
h1, h2, h3, .h1, .h2, .h3, .h4 { font-weight: 300; letter-spacing: -.02em; line-height: 1.15; }
h1:focus { outline: none; }
.page-header h1, .entrada-card h1 { font-size: 2rem; }
.page-header h1 code { font-size: .55em; vertical-align: .18em; letter-spacing: 0; }
.etiqueta, .table thead th, .nav-seccion, .carpeta-titulo, .portada-proyecto .cliente, .marca-sub { font-weight: 400; font-size: .74rem; letter-spacing: .12em; text-transform: uppercase; color: var(--n1-muted); }
strong, b, .card-header, .lista-archivos .nombre, .nav-usuario-nombre, .estado-vacio strong, .portada-proyecto .datos strong, .subida-lista .estado-ok, .copiado { font-weight: 700; }
.fw-semibold { font-weight: 700 !important; } /* Aeonik no tiene 600 */
.btn { font-weight: 400; }
.form-label { font-weight: 400; color: var(--n1-muted); font-size: .9rem; }
.text-muted, .form-text { font-weight: 400; }

code { white-space: nowrap; background: rgba(68, 78, 58, .1); padding: .1em .4em; border-radius: .3rem; font-size: .9em; }

.btn-primary {
    --bs-btn-bg: var(--n1-primary); --bs-btn-border-color: var(--n1-primary);
    --bs-btn-hover-bg: var(--n1-primary-dark); --bs-btn-hover-border-color: var(--n1-primary-dark);
    --bs-btn-active-bg: var(--n1-primary-dark); --bs-btn-active-border-color: var(--n1-primary-dark);
    --bs-btn-disabled-bg: var(--n1-primary); --bs-btn-disabled-border-color: var(--n1-primary);
}
.btn-outline-primary {
    --bs-btn-color: var(--n1-primary); --bs-btn-border-color: var(--n1-primary);
    --bs-btn-hover-bg: var(--n1-primary); --bs-btn-hover-border-color: var(--n1-primary);
    --bs-btn-active-bg: var(--n1-primary-dark); --bs-btn-active-border-color: var(--n1-primary-dark);
    --bs-btn-disabled-color: var(--n1-primary); --bs-btn-disabled-border-color: var(--n1-primary);
}
.btn-link { --bs-btn-color: var(--n1-primary); --bs-btn-hover-color: var(--n1-primary-dark); }
.form-control, .form-select, .form-check-input { background-color: #fff; }
.form-floating > .form-control:focus ~ label::after, .form-floating > .form-control:not(:placeholder-shown) ~ label::after { background-color: #fff; }
.form-control:focus, .form-select:focus, .form-check-input:focus { border-color: var(--n1-primary); box-shadow: 0 0 0 .2rem rgba(68, 78, 58, .2); }
.form-check-input:checked { background-color: var(--n1-primary); border-color: var(--n1-primary); }
.progress { --bs-progress-bar-bg: var(--n1-primary); }
.table { --bs-table-hover-bg: rgba(68, 78, 58, .05); }
.text-bg-secondary { background-color: var(--n1-muted) !important; }
.text-bg-light { background-color: #eeefec !important; color: var(--n1-text) !important; }

/* ---------- Tarjetas y tablas ---------- */
.card { --bs-card-border-color: var(--n1-border); --bs-card-border-radius: var(--n1-radius); --bs-card-inner-border-radius: calc(var(--n1-radius) - 1px); --bs-card-cap-bg: #fff; box-shadow: var(--n1-shadow); }
.table thead th { border-bottom-width: 1px; }
.tabla-archivos td { vertical-align: middle; }
.badge-version { font-variant-numeric: tabular-nums; }

/* ---------- Área interna ---------- */
.content { padding-top: 1.1rem; }
.page-header { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: .75rem 1rem; margin-bottom: 1.25rem; }
.page-header .btn { white-space: nowrap; }
.page-header h1 { margin: 0; }

/* ---------- Marca N+UNO (logos SVG en Components/Layout/Marca.razor) ---------- */
.marca { display: inline-flex; align-items: center; gap: .75rem; line-height: 1; text-decoration: none !important; color: var(--n1-negro); }
.marca svg { display: block; height: 1.25rem; width: auto; fill: currentColor; }
.marca .isotipo { height: 1.6rem; }
.marca-sub { font-size: .7rem; padding-left: .75rem; border-left: 1px solid var(--n1-border); }
.marca-clara { color: #fff; }
.marca-clara .marca-sub { color: rgba(255, 255, 255, .6); border-left-color: rgba(255, 255, 255, .25); }
.marca-grande svg { height: 2.4rem; }
.marca-grande .marca-sub { font-size: .85rem; }
.marca-naranja { color: var(--n1-naranja); }

/* ---------- Login ---------- */
.entrada { min-height: 100vh; display: grid; grid-template-columns: 1fr; }
.entrada-panel { background: var(--n1-oliva); color: #fff; padding: 2.5rem; display: flex; flex-direction: column; justify-content: space-between; }
.entrada-panel p { color: rgba(255, 255, 255, .75); max-width: 28rem; font-size: 1.05rem; line-height: 1.55; }
.entrada-form { display: flex; align-items: center; justify-content: center; padding: 2rem 1.25rem; }
.entrada-card { width: 100%; max-width: 26rem; background: var(--n1-surface); border: 1px solid var(--n1-border); border-radius: var(--n1-radius); box-shadow: var(--n1-shadow); padding: 2rem; }
.entrada-card h1 { margin-bottom: .35rem; }
.campo-password { position: relative; }
.campo-password .form-control { padding-right: 3rem; }
.ver-password { position: absolute; top: 0; right: 0; height: calc(3.5rem + 2px); width: 3rem; display: flex; align-items: center; justify-content: center; background: none; border: 0; color: var(--n1-muted); cursor: pointer; border-radius: 0 var(--bs-border-radius) var(--bs-border-radius) 0; }
.ver-password:hover { color: var(--n1-text); }
.ver-password .ojo-cerrado { display: none; }
.ver-password.visible .ojo-abierto { display: none; }
.ver-password.visible .ojo-cerrado { display: block; }
@media (min-width: 900px) {
    .entrada { grid-template-columns: 5fr 7fr; }
}

/* ---------- Portal público ---------- */
.public-page { min-height: 100vh; display: flex; flex-direction: column; background: var(--n1-bg); }
.public-page main { flex: 1; }
.public-header { background: var(--n1-oliva); color: #fff; }
.public-header .container { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-top: 1rem; padding-bottom: 1rem; }
.public-header .encabezado-derecha { font-size: .85rem; color: rgba(255, 255, 255, .7); }
.public-footer { border-top: 1px solid var(--n1-border); color: var(--n1-muted); font-size: .85rem; }

.portada-proyecto { background: var(--n1-surface); border: 1px solid var(--n1-border); border-radius: var(--n1-radius); box-shadow: var(--n1-shadow); padding: 1.5rem; }
.portada-proyecto .cliente { margin-bottom: .35rem; }
.portada-proyecto h1 { font-size: 2rem; margin: 0 0 .5rem; }
.portada-proyecto .codigo { display: inline-block; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .8rem; letter-spacing: 0; background: rgba(68, 78, 58, .1); color: var(--n1-primary-dark); padding: .15rem .5rem; border-radius: .35rem; margin-right: .5rem; vertical-align: middle; }
.portada-proyecto .datos { display: flex; flex-wrap: wrap; gap: .4rem 1.5rem; margin-top: 1rem; font-size: .85rem; color: var(--n1-muted); }
.portada-proyecto .datos strong { color: var(--n1-text); }

.carpeta-titulo { margin: 1.75rem 0 .5rem; }
.lista-archivos { list-style: none; margin: 0; padding: 0; background: var(--n1-surface); border: 1px solid var(--n1-border); border-radius: var(--n1-radius); box-shadow: var(--n1-shadow); }
.lista-archivos li { display: grid; grid-template-columns: auto 1fr auto; gap: 1rem; align-items: center; padding: .85rem 1.1rem; border-top: 1px solid var(--n1-border); }
.lista-archivos li:first-child { border-top: 0; }
.lista-archivos .nombre { font-size: 1.02rem; }
.lista-archivos .detalle { font-size: .82rem; color: var(--n1-muted); }
.lista-archivos .acciones { text-align: right; white-space: nowrap; }
.lista-archivos details { margin-top: .35rem; }
.lista-archivos summary { font-size: .8rem; color: var(--n1-muted); cursor: pointer; }
.lista-archivos .anteriores { font-size: .82rem; margin-top: .25rem; }
.ext { display: inline-flex; align-items: center; justify-content: center; width: 3rem; height: 2.4rem; border-radius: .4rem; font-size: .68rem; font-weight: 700; letter-spacing: .06em; background: #eeefec; color: var(--n1-muted); }
.ext-pdf { background: #fde8e8; color: #b42318; }
.ext-dwg, .ext-dxf, .ext-rvt, .ext-ifc { background: #e6e9df; color: var(--n1-oliva); }
.ext-xlsx, .ext-xls, .ext-csv { background: #e3f5e8; color: #1e7f3c; }
.ext-docx, .ext-doc { background: #e6edfb; color: #2f4fa8; }
.ext-zip, .ext-rar, .ext-7z { background: #f4ecdc; color: #8a5a00; }
@media (max-width: 575.98px) {
    .lista-archivos li { grid-template-columns: auto 1fr; }
    .lista-archivos .acciones { grid-column: 1 / -1; text-align: left; }
}

/* ---------- Varios ---------- */
.valid.modified:not([type=checkbox]) { outline: 1px solid #26b050; }
.invalid { outline: 1px solid #e50000; }
.validation-message { color: #e50000; font-size: .85rem; }
.darker-border-checkbox.form-check-input { border-color: #929292; }

.blazor-error-boundary {
    background: #b42318;
    padding: 1rem 1.25rem;
    color: white;
    border-radius: var(--n1-radius);
}

/* ---------- Estados: carga, vacío, avisos ---------- */
.estado-carga { display: flex; align-items: center; gap: .6rem; color: var(--n1-muted); padding: 1.5rem 0; }
.estado-carga .spinner-border { width: 1.1rem; height: 1.1rem; border-width: .15em; color: var(--n1-oliva); }
.estado-vacio { text-align: center; color: var(--n1-muted); padding: 2.5rem 1rem; }
.estado-vacio strong { display: block; color: var(--n1-text); margin-bottom: .25rem; }
.aviso { display: flex; align-items: flex-start; gap: .6rem; border-radius: var(--n1-radius); padding: .7rem .9rem; font-size: .9rem; border: 1px solid var(--n1-border); background: var(--n1-surface); }
.aviso-ok { border-color: #cfd8c4; background: var(--n1-oliva-claro); color: var(--n1-oliva-oscuro); }
.aviso-error { border-color: #f0c9c4; background: #fdf1ef; color: #9b2c1c; }
.paso { display: inline-flex; align-items: center; justify-content: center; width: 1.5rem; height: 1.5rem; border-radius: 50%; background: var(--n1-oliva); color: #fff; font-size: .75rem; font-weight: 400; margin-right: .5rem; }
.card-header.con-paso { display: flex; align-items: center; }
.subida-lista { list-style: none; margin: .75rem 0 0; padding: 0; font-size: .88rem; }
.subida-lista li { display: flex; align-items: center; gap: .6rem; padding: .35rem 0; border-top: 1px solid var(--n1-border); }
.subida-lista li:first-child { border-top: 0; }
.subida-lista .nombre { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.subida-lista .estado { color: var(--n1-muted); white-space: nowrap; }
.subida-lista .estado-ok { color: var(--n1-oliva); }
.subida-lista .estado-error { color: #9b2c1c; }
.acciones-fila { display: flex; flex-wrap: nowrap; gap: .25rem; justify-content: flex-end; align-items: center; }
.acciones-fila .btn { white-space: nowrap; }
.acciones-fila .btn-link { padding-left: .35rem; padding-right: .35rem; text-decoration: none; }
.copiado { font-size: .8rem; color: var(--n1-oliva); }

/* Tablas anchas: scroll horizontal dentro de la tarjeta, nunca en la página */
.tabla-scroll { overflow-x: auto; }
.tabla-scroll table { min-width: 560px; }

.blazor-error-boundary::after { content: "Ocurrió un error. Recargá la página."; }

/* ---------- Visor de archivos (dialog) ---------- */
.visor { width: min(96vw, 1400px); height: 94vh; max-width: none; max-height: none; padding: 0; border: 0; border-radius: var(--n1-radius); background: #fff; box-shadow: 0 20px 60px rgba(0, 0, 0, .35); display: flex; flex-direction: column; overflow: hidden; }
.visor:not([open]) { display: none; }
.visor::backdrop { background: rgba(11, 11, 11, .6); }
.visor-cabecera { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .7rem 1rem; border-bottom: 1px solid var(--n1-border); background: #fff; }
.visor-titulos { min-width: 0; }
.visor-titulo { font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.visor-subtitulo { font-size: .8rem; color: var(--n1-muted); }
.visor-acciones { display: flex; gap: .4rem; flex-shrink: 0; }
.visor-cuerpo { flex: 1; min-height: 0; overflow: auto; background: #f0f0ee; position: relative; }
.visor-estado { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: flex; align-items: center; gap: .7rem; background: #fff; border: 1px solid var(--n1-border); border-radius: var(--n1-radius); box-shadow: var(--n1-shadow); padding: .8rem 1.1rem; max-width: 90%; font-size: .9rem; }
.visor-estado .spinner-border { width: 1.1rem; height: 1.1rem; border-width: .15em; color: var(--n1-oliva); }
.visor-estado-error { border-color: #f0c9c4; background: #fdf1ef; color: #9b2c1c; }
.visor-pdf { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 12px; }
.visor-pdf canvas { background: #fff; box-shadow: 0 1px 4px rgba(0, 0, 0, .15); max-width: 100%; }
.visor-doc { max-width: 860px; margin: 1.5rem auto; background: #fff; padding: 3rem 3.5rem; box-shadow: 0 1px 4px rgba(0, 0, 0, .12); line-height: 1.6; }
.visor-doc table { border-collapse: collapse; margin: 1rem 0; }
.visor-doc td, .visor-doc th { border: 1px solid var(--n1-border); padding: .3rem .6rem; }
.visor-doc img { max-width: 100%; }
.visor-hoja { display: flex; flex-direction: column; height: 100%; }
.visor-hoja-tabs { display: flex; gap: .25rem; padding: .5rem .75rem 0; background: #fff; border-bottom: 1px solid var(--n1-border); overflow-x: auto; }
.visor-hoja-tabs button { border: 1px solid var(--n1-border); border-bottom: 0; background: #f6f6f4; padding: .3rem .8rem; border-radius: .4rem .4rem 0 0; font-size: .85rem; color: var(--n1-muted); }
.visor-hoja-tabs button.activa { background: #fff; color: var(--n1-text); font-weight: 700; }
.visor-hoja-tabla { flex: 1; overflow: auto; background: #fff; }
.visor-hoja-tabla table { font-size: .85rem; white-space: nowrap; margin: 0; }
.visor-hoja-tabla td { padding: .2rem .5rem; }
.visor-texto { margin: 0; padding: 1.25rem 1.5rem; background: #fff; min-height: 100%; font-size: .85rem; white-space: pre-wrap; word-break: break-word; }
.visor-marco { width: 100%; height: 100%; border: 0; background: #fff; }
.visor-imagen { display: flex; align-items: center; justify-content: center; min-height: 100%; padding: 1rem; }
.visor-imagen img { max-width: 100%; max-height: calc(94vh - 5rem); object-fit: contain; box-shadow: 0 1px 4px rgba(0, 0, 0, .15); background: #fff; }
.visor-3d, .visor-cad { position: relative; width: 100%; height: 100%; overflow: hidden; background: #fff; }
.visor-3d canvas { display: block; width: 100% !important; height: 100% !important; }
.visor-cad-lienzo { width: 100%; height: 100%; }
.visor-cad-lienzo canvas { display: block; }
.visor-3d-ayuda { position: absolute; left: .75rem; bottom: .75rem; font-size: .75rem; color: var(--n1-muted); background: rgba(255, 255, 255, .85); padding: .25rem .6rem; border-radius: .35rem; pointer-events: none; }
.archivo-ver { color: inherit; text-decoration: none; }
.archivo-ver:hover { color: var(--n1-oliva); text-decoration: underline; }
@media (max-width: 575.98px) {
    .visor { width: 100vw; height: 100dvh; border-radius: 0; }
    .visor-doc { padding: 1.25rem; margin: .75rem; }
}
.visor-estado span { word-break: break-word; }
/* Interfaz propia del visor CAD (barra de comandos, marca, coordenadas): oculta, solo se ve el dibujo */
.visor-cad .ml-cli-container, .visor-cad .ml-brand-mark, .visor-cad .ml-ccl-wrapper { display: none !important; }

/* ---------- Explorador de carpetas (Detalle de proyecto) ---------- */
.explorador { display: grid; grid-template-columns: 240px minmax(0, 1fr); }
.explorador-carpetas { border-right: 1px solid var(--n1-border); padding: .9rem .75rem; background: #fafaf8; border-radius: 0 0 0 var(--n1-radius); }
.explorador-archivos { min-width: 0; }
.arbol { list-style: none; margin: 0 0 .75rem; padding: 0; }
.arbol-item { display: flex; align-items: center; gap: .4rem; width: 100%; border: 0; background: none; padding: .32rem .5rem; border-radius: .35rem; text-align: left; color: var(--n1-text); font-size: .9rem; line-height: 1.3; }
.arbol-item:hover { background: #f0f0ec; }
.arbol-item.activa { background: var(--n1-oliva-claro); font-weight: 700; }
.arbol-nombre { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.arbol-item .cant { margin-left: auto; color: var(--n1-muted); font-size: .75rem; font-weight: 400; }
.ico-carpeta { flex-shrink: 0; display: inline-block; width: 1rem; height: .85rem; border: 1.3px solid currentColor; border-radius: .15rem; position: relative; opacity: .75; }
.ico-carpeta::before { content: ""; position: absolute; left: -1.3px; top: -.3rem; width: .45rem; height: .3rem; border: 1.3px solid currentColor; border-bottom: 0; border-radius: .15rem .15rem 0 0; }
.ico-todas { border-style: dashed; }
.arbol-nueva { display: flex; gap: .35rem; }
.arbol-acciones { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; margin-top: .6rem; font-size: .85rem; }
.acciones-fila .mover { width: auto; max-width: 9rem; font-size: .78rem; padding-top: .2rem; padding-bottom: .2rem; }
@media (max-width: 767.98px) {
    .explorador { grid-template-columns: 1fr; }
    .explorador-carpetas { border-right: 0; border-bottom: 1px solid var(--n1-border); border-radius: 0; }
}

/* ---------- Revisiones ---------- */
.card-header.con-paso .btn-group { margin-left: auto; }
.arbol-superados { margin-top: .5rem; padding-top: .5rem; border-top: 1px dashed var(--n1-border); }
.ico-superados { opacity: .45; }
.matriz th { white-space: nowrap; }
.matriz td a { text-decoration: none; font-variant-numeric: tabular-nums; }
.matriz .celda-vigente { background: var(--n1-oliva-claro); }
.matriz .celda-vigente a { color: var(--n1-oliva-oscuro); font-weight: 700; }
.matriz .celda-superada a { color: var(--n1-muted); }
.fila-superada td { background: #fafaf8; }

/* ---------- Descargas múltiples (portal) ---------- */
.barra-descargas { position: sticky; top: 0; z-index: 5; display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; background: rgba(255, 255, 255, .95); backdrop-filter: blur(4px); border: 1px solid var(--n1-border); border-radius: var(--n1-radius); padding: .6rem .9rem; margin-top: 1.25rem; }
.lista-archivos li { grid-template-columns: auto auto 1fr auto; }
.lista-archivos .form-check-input { margin: 0; width: 1.1rem; height: 1.1rem; }
.lista-superados .nombre, .lista-superados .ext { opacity: .7; }
.matriz-portal summary { cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: .5rem; line-height: 1; margin: 0; padding: .55rem .9rem .55rem .7rem; border: 1px solid var(--n1-border); border-radius: var(--n1-radius); background: var(--n1-surface); color: var(--n1-text); font-size: .9rem; letter-spacing: .06em; user-select: none; }
.matriz-portal summary::-webkit-details-marker { display: none; }
.matriz-portal summary:hover { background: var(--n1-oliva-claro); border-color: var(--n1-oliva); }
.matriz-portal summary::before { content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16'%3E%3Cpath d='M5 2l6 6-6 6' fill='none' stroke='%23444e3a' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); display: block; width: 12px; height: 12px; line-height: 0; flex-shrink: 0; transition: transform .15s; }
.matriz-portal[open] summary::before { transform: rotate(90deg); }
@media (max-width: 575.98px) {
    .lista-archivos li { grid-template-columns: auto auto 1fr; }
    .barra-descargas .ms-auto { margin-left: 0 !important; width: 100%; }
    .barra-descargas .ms-auto .btn { flex: 1; }
}
.barra-descargas-interna { position: static; margin: 0; border: 0; border-bottom: 1px solid var(--n1-border); border-radius: 0; padding: .55rem .9rem; }
.tabla-archivos .celda-sel { width: 2rem; }
.tabla-archivos .celda-sel .form-check-input { margin: 0; }

/* ---------- Detalle: subida compacta, links en filas, listas acotadas ---------- */
.subida-lista.con-scroll { max-height: calc(7 * 2.1rem); overflow-y: auto; }
.compartir-fila { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; }
.compartir-nuevo { max-width: 26rem; }
.lista-links { margin-top: .75rem; display: flex; flex-direction: column; gap: .4rem; }
.lista-links.con-scroll { max-height: calc(3 * 3.1rem); overflow-y: auto; padding-right: .25rem; }
.link-fila { display: grid; grid-template-columns: 12rem minmax(0, 1fr) auto; gap: .75rem; align-items: center; border: 1px solid var(--n1-border); border-radius: .4rem; padding: .4rem .6rem; }
.link-datos { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.link-datos span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.link-url { font-size: .8rem; }
@media (max-width: 767.98px) {
    .link-fila { grid-template-columns: 1fr; gap: .4rem; }
    .compartir-nuevo { max-width: none; width: 100%; }
}
.orden-barra { display: flex; align-items: center; gap: .75rem; margin-bottom: .6rem; }
.matriz .celda-eliminada { background: #fbe9e7; }
.matriz .celda-eliminada span, .matriz .celda-eliminada a { color: #9b2c1c; }
.fila-eliminada td:first-child { background: #fdf3f2; }
.texto-eliminado { color: #9b2c1c; }
.carpeta-titulo-fila { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .5rem 1rem; margin-top: 1.75rem; }
.carpeta-titulo-fila .carpeta-titulo { margin: 0 0 .5rem; }
.sel-superados-todo { display: flex; align-items: center; gap: .4rem; margin-bottom: .5rem; }
.sel-superados-todo .form-check-input { margin: 0; }
