/* ═══════════════ MI NUBE · nube.css ═══════════════
   Pantalla "Mi nube" (static/js/nube.js). Diseño de la muestra aprobada (mi_nube_muestra.html).
   Reglas: todo cuelga de .nb-app, solo clases nb-* y variables --nb-*; cada elemento fija sus
   propias propiedades para que el CSS genérico de la app (table, th, td, button, h3…) no lo cambie. */

.nb-app{
  --nb-surface:#FFFFFF; --nb-ink:#0F172A; --nb-muted:#5B6678; --nb-line:#DCE2EB; --nb-soft:#F4F6FA;
  --nb-accent:#1556C0; --nb-accent-soft:#E3ECFA; --nb-accent-ink:#0F3F8F; --nb-hover:#EEF3FB;
  --nb-on-accent:#FFFFFF;
  --nb-shadow:0 12px 32px rgba(15,23,42,.14),0 2px 6px rgba(15,23,42,.06);
  --nb-grid:#E3E7EE; --nb-gridhead:#F3F5F9; --nb-visor:#525659;
  --nb-danger:#C42A38; --nb-danger-soft:#FDECEE; --nb-warn:#9A6400; --nb-warn-soft:#FFF6E0; --nb-star:#D99A00;
  --nb-doc:#1E64D6; --nb-hoja:#0B8A5A; --nb-pdf:#D93A45; --nb-img:#7C5CD6; --nb-carpeta:#E3A33B;
  --nb-ff:var(--font-body,'Inter',system-ui,-apple-system,'Segoe UI',sans-serif);
  --nb-fd:var(--font-display,'Inter Tight','Inter',system-ui,sans-serif);
  --nb-alto:calc(100vh - 104px);
  position:relative; display:block; color:var(--nb-ink); font-family:var(--nb-ff); font-size:14px;
  line-height:1.45; letter-spacing:normal; text-align:left;
}
:root[data-theme="dark"] .nb-app{
  color-scheme:dark;
  --nb-surface:#0F1728; --nb-ink:#E6ECF5; --nb-muted:#95A2BA; --nb-line:#223049; --nb-soft:#131D33;
  --nb-accent:#7AA8FF; --nb-accent-soft:#16264A; --nb-accent-ink:#B9D0FF; --nb-hover:#15213A;
  --nb-on-accent:#06101F;
  --nb-shadow:0 12px 32px rgba(0,0,0,.5),0 2px 6px rgba(0,0,0,.3);
  --nb-grid:#223049; --nb-gridhead:#131D33; --nb-visor:#0A1120;
  --nb-danger:#FF8A94; --nb-danger-soft:#3A1620; --nb-warn:#F2C45A; --nb-warn-soft:#2E2410; --nb-star:#F2C045;
}
.nb-app *,.nb-app *::before,.nb-app *::after{box-sizing:border-box}
.nb-app [hidden]{display:none !important}
.nb-app button,.nb-app input,.nb-app select{font:inherit;font-family:var(--nb-ff);color:inherit;letter-spacing:normal;text-transform:none;margin:0}
.nb-app button{cursor:pointer}
.nb-app button:disabled{cursor:not-allowed;opacity:.55}
.nb-app svg{display:inline-block;flex-shrink:0}
.nb-app :focus{outline:none}
.nb-app :focus-visible{outline:2px solid var(--nb-accent);outline-offset:2px}
.nb-app h2,.nb-app h3{margin:0;padding:0;border:0;background:none;text-transform:none}
.nb-app h2::before,.nb-app h3::before,.nb-app h2::after,.nb-app h3::after{content:none;display:none}
.nb-app table{background:transparent;color:var(--nb-ink);font-family:var(--nb-ff);margin:0}
.nb-app tbody tr,.nb-app tbody tr:hover{background:transparent;transition:none;filter:none}
.nb-app .nb-sr{position:absolute !important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;padding:0;margin:-1px}
.nb-app .nb-fi{display:block;flex-shrink:0}

/* ───────── marco ───────── */
.nb-app .nb-frame{display:flex;flex-direction:column;height:var(--nb-alto);min-height:520px;border-radius:14px;overflow:hidden;border:1px solid var(--nb-line);background:var(--nb-surface);position:relative}
.nb-app .nb-vista{display:flex;flex-direction:column;min-height:0;min-width:0;flex:1}

/* ───────── barra superior ───────── */
.nb-app .nb-top{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--nb-line);background:var(--nb-surface)}
.nb-app .nb-titulo{font-family:var(--nb-fd);font-size:20px;font-weight:700;line-height:1.2;letter-spacing:-.01em;color:var(--nb-ink);margin:0;display:flex;align-items:center;gap:8px;white-space:nowrap}
.nb-app .nb-titulo svg{width:22px;height:22px;color:var(--nb-accent)}
.nb-app .nb-search{flex:1;max-width:460px;position:relative;display:block;margin:0}
.nb-app .nb-search input{width:100%;font-size:13.5px;padding:9px 12px 9px 34px;border-radius:10px;border:1px solid var(--nb-line);background:var(--nb-soft);color:var(--nb-ink);height:auto;box-shadow:none}
.nb-app .nb-search input::placeholder{color:var(--nb-muted)}
.nb-app .nb-search input:focus{outline:2px solid var(--nb-accent);outline-offset:0;border-color:transparent;background:var(--nb-surface)}
.nb-app .nb-search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--nb-muted);pointer-events:none}
.nb-app .nb-crear-wrap{position:relative;margin-left:auto}
.nb-app .nb-btn-crear{border:0;border-radius:10px;padding:9px 16px;font-weight:700;font-size:13.5px;line-height:1.3;color:#fff;background:linear-gradient(180deg,#1E64D6,#1350B8);box-shadow:0 6px 16px rgba(21,86,192,.25);display:flex;align-items:center;gap:6px;white-space:nowrap}
.nb-app .nb-btn-crear:hover{filter:brightness(1.06)}
.nb-app .nb-btn-crear:focus-visible{outline:2px solid var(--nb-accent);outline-offset:2px}

/* menús (Crear y "⋯") */
.nb-app .nb-menu{background:var(--nb-surface);border:1px solid var(--nb-line);border-radius:14px;box-shadow:var(--nb-shadow);padding:6px;z-index:1200;color:var(--nb-ink)}
.nb-app .nb-menu-crear{position:absolute;right:0;top:calc(100% + 8px);width:290px}
.nb-app .nb-menu-fila{position:fixed;min-width:230px;max-width:calc(100vw - 16px);border-radius:12px;padding:5px}
.nb-app .nb-mc-it{display:flex;align-items:center;gap:12px;width:100%;border:0;background:none;padding:9px 10px;border-radius:9px;text-align:left;color:var(--nb-ink);font-size:13.5px;line-height:1.3}
.nb-app .nb-mc-it:hover,.nb-app .nb-mc-it:focus-visible{background:var(--nb-hover);outline:none}
.nb-app .nb-mc-it .nb-fi{width:30px;height:30px;flex:0 0 30px}
.nb-app .nb-mc-it b{display:block;font-size:13.5px;font-weight:600}
.nb-app .nb-mc-it small{display:block;font-size:11.5px;color:var(--nb-muted)}
.nb-app .nb-mc-sep{height:1px;background:var(--nb-line);margin:5px 6px}
.nb-app .nb-menu-fila .nb-mc-it{padding:7px 10px;gap:10px;font-size:13px}
.nb-app .nb-menu-fila .nb-mc-it svg{width:17px;height:17px;color:var(--nb-muted)}
.nb-app .nb-menu-fila .nb-mc-it.nb-peligro,.nb-app .nb-menu-fila .nb-mc-it.nb-peligro svg{color:var(--nb-danger)}
.nb-app .nb-menu-fila .nb-mc-it:disabled{opacity:.5}
.nb-app .nb-menu-fila .nb-mc-it small{margin-left:auto;font-size:11px;padding-left:8px}

/* ───────── cuerpo: lugares + archivos ───────── */
.nb-app .nb-body{flex:1;display:grid;grid-template-columns:210px minmax(0,1fr);min-height:0}
.nb-app .nb-lugares{border-right:1px solid var(--nb-line);padding:12px 10px;overflow:auto;display:flex;flex-direction:column;gap:2px;background:var(--nb-surface)}
.nb-app .nb-lg{display:flex;align-items:center;gap:9px;width:100%;border:0;background:none;padding:7px 10px;border-radius:9px;font-size:13px;line-height:1.35;color:var(--nb-ink);text-align:left;font-weight:400}
.nb-app .nb-lg span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nb-app .nb-lg:hover{background:var(--nb-hover)}
.nb-app .nb-lg.nb-act{background:var(--nb-accent-soft);color:var(--nb-accent-ink);font-weight:600}
.nb-app .nb-lg svg{width:17px;height:17px;flex:0 0 17px;color:var(--nb-muted)}
.nb-app .nb-lg.nb-act svg{color:var(--nb-accent)}
.nb-app .nb-lg .nb-n{margin-left:auto;font-size:11px;color:var(--nb-muted);font-weight:500;flex-shrink:0}
.nb-app .nb-lg.nb-sub{padding-left:28px;font-size:12.5px}
.nb-app .nb-lg.nb-sub .nb-fi{width:16px;height:16px;flex:0 0 16px}
.nb-app .nb-lg-t{font-size:9.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--nb-muted);padding:12px 10px 4px}
.nb-app .nb-lg-vacio{font-size:12px;color:var(--nb-muted);padding:4px 10px 4px 28px}
.nb-app .nb-espacio{margin-top:auto;padding:12px 10px 4px;font-size:11.5px;color:var(--nb-muted)}
.nb-app .nb-espacio .nb-barra{height:6px;border-radius:3px;background:var(--nb-line);overflow:hidden;margin-bottom:6px}
.nb-app .nb-espacio .nb-barra i{display:block;height:100%;min-width:2px;background:var(--nb-accent);border-radius:3px}

.nb-app .nb-archivos{display:flex;flex-direction:column;min-width:0;min-height:0;position:relative}
.nb-app .nb-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 18px 8px}
.nb-app .nb-crumb{font-size:15px;font-weight:600;display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0;color:var(--nb-ink)}
.nb-app .nb-crumb button{border:0;background:none;padding:3px 6px;border-radius:7px;font-weight:600;font-size:15px;color:var(--nb-muted)}
.nb-app .nb-crumb button:hover{background:var(--nb-hover);color:var(--nb-ink)}
.nb-app .nb-crumb .nb-yo{color:var(--nb-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:420px}
.nb-app .nb-crumb .nb-sep{color:var(--nb-muted)}
.nb-app .nb-chips{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.nb-app .nb-chip{border:1px solid var(--nb-line);background:var(--nb-surface);border-radius:99px;padding:5px 11px;font-size:12px;line-height:1.3;color:var(--nb-muted);display:flex;align-items:center;gap:6px;font-weight:400}
.nb-app .nb-chip:hover{background:var(--nb-hover)}
.nb-app .nb-chip .nb-fi{width:14px;height:14px}
.nb-app .nb-chip[aria-pressed="true"]{background:var(--nb-accent-soft);border-color:transparent;color:var(--nb-accent-ink);font-weight:600}
.nb-app .nb-modo{display:flex;border:1px solid var(--nb-line);border-radius:9px;overflow:hidden}
.nb-app .nb-modo button{border:0;background:var(--nb-surface);padding:5px 9px;color:var(--nb-muted);display:flex;border-radius:0}
.nb-app .nb-modo button svg{width:16px;height:16px}
.nb-app .nb-modo button[aria-pressed="true"]{background:var(--nb-accent-soft);color:var(--nb-accent-ink)}
.nb-app .nb-modo button:focus-visible{outline-offset:-2px}
.nb-app .nb-lista{flex:1;overflow:auto;padding:0 12px 16px;min-height:0}

/* lista */
.nb-app table.nb-fl{width:100%;border-collapse:collapse;font-size:13px;table-layout:auto;background:transparent}
.nb-app .nb-fl th{position:sticky;top:0;background:var(--nb-surface);text-align:left;font-size:11px;font-weight:600;color:var(--nb-muted);padding:8px;border:0;border-bottom:1px solid var(--nb-line);z-index:1;text-transform:none;letter-spacing:normal;white-space:nowrap;cursor:default;font-family:var(--nb-ff)}
.nb-app .nb-fl td{padding:8px;border:0;border-bottom:1px solid var(--nb-line);white-space:nowrap;background:transparent;color:var(--nb-ink);font-size:13px;transition:none;vertical-align:middle}
.nb-app .nb-fl tbody tr:last-child td{border-bottom:1px solid var(--nb-line)}
.nb-app .nb-fl tr.nb-row{cursor:pointer}
.nb-app .nb-fl tr.nb-row:hover td{background:var(--nb-hover)}
.nb-app .nb-fl tr.nb-row:focus-visible{outline:2px solid var(--nb-accent);outline-offset:-2px}
.nb-app .nb-fl tr.nb-row:focus-visible td{background:var(--nb-hover)}
.nb-app .nb-fl .nb-c-nom{width:100%;max-width:0}
.nb-app .nb-fl .nb-nm{display:flex;align-items:center;gap:10px;min-width:0}
.nb-app .nb-fl .nb-nm .nb-t{overflow:hidden;text-overflow:ellipsis;font-weight:500;white-space:nowrap}
.nb-app .nb-fl .nb-nm .nb-fi{width:22px;height:22px;flex:0 0 22px}
.nb-app .nb-ubic{color:var(--nb-muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;min-width:0}
.nb-app .nb-mut{color:var(--nb-muted)}
.nb-app .nb-fl .nb-acc{text-align:right;width:120px;padding-right:4px}
.nb-app .nb-acc-in{display:inline-flex;align-items:center;gap:2px}
.nb-app .nb-ib{border:0;background:none;border-radius:7px;padding:4px 6px;color:var(--nb-muted);display:inline-flex;align-items:center;justify-content:center;line-height:1}
.nb-app .nb-ib:hover{background:var(--nb-accent-soft);color:var(--nb-accent-ink)}
.nb-app .nb-ib svg{width:16px;height:16px}
.nb-app .nb-ib.nb-on{color:var(--nb-star)}
.nb-app .nb-shared-ic{width:14px;height:14px;color:var(--nb-muted);flex:0 0 14px}
.nb-app .nb-badge{font-size:10.5px;font-weight:600;border-radius:99px;padding:1px 7px;white-space:nowrap;flex-shrink:0}
.nb-app .nb-badge.nb-lock{background:var(--nb-warn-soft);color:var(--nb-warn)}

/* arrastrar y soltar */
.nb-app .nb-drop-on,.nb-app .nb-fl tr.nb-drop-on td{background:var(--nb-accent-soft) !important;box-shadow:inset 0 0 0 2px var(--nb-accent)}
.nb-app .nb-fl tr.nb-drop-on td{box-shadow:none}
.nb-app .nb-fl tr.nb-drop-on{outline:2px solid var(--nb-accent);outline-offset:-2px}
.nb-app .nb-arrastrando{opacity:.45}
.nb-app .nb-soltar{position:absolute;inset:8px;border:2px dashed var(--nb-accent);border-radius:14px;background:color-mix(in srgb,var(--nb-accent-soft) 88%,transparent);display:grid;place-items:center;z-index:5;pointer-events:none;text-align:center;color:var(--nb-accent-ink)}
.nb-app .nb-soltar svg{width:34px;height:34px;display:block;margin:0 auto 6px;color:var(--nb-accent)}
.nb-app .nb-soltar b{display:block;font-size:15px}
.nb-app .nb-soltar small{display:block;font-size:12px;color:var(--nb-muted);margin-top:2px}

/* cuadrícula */
.nb-app .nb-grid-f{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px;padding:4px 6px 8px}
.nb-app .nb-card{position:relative;border:1px solid var(--nb-line);border-radius:12px;background:var(--nb-surface);overflow:hidden;min-width:0}
.nb-app .nb-card:hover{box-shadow:0 4px 14px rgba(15,23,42,.08);border-color:var(--nb-accent-soft)}
.nb-app .nb-card-main{display:block;width:100%;border:0;background:none;padding:0;text-align:left;color:var(--nb-ink)}
.nb-app .nb-card-main:focus-visible{outline-offset:-2px;border-radius:12px}
.nb-app .nb-thumb{height:92px;display:grid;place-items:center;background:var(--nb-soft);border-bottom:1px solid var(--nb-line);overflow:hidden}
.nb-app .nb-thumb .nb-fi{width:40px;height:40px}
.nb-app .nb-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.nb-app .nb-cap{display:flex;align-items:center;gap:8px;padding:9px 34px 9px 10px;font-size:12.5px;font-weight:500}
.nb-app .nb-cap .nb-fi{width:16px;height:16px;flex:0 0 16px}
.nb-app .nb-cap span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nb-app .nb-card .nb-card-mas{position:absolute;right:4px;bottom:5px}
.nb-app .nb-card .nb-card-star{position:absolute;right:6px;top:6px;background:var(--nb-surface);box-shadow:0 1px 3px rgba(15,23,42,.12)}
.nb-app .nb-vacio{padding:50px 20px;text-align:center;color:var(--nb-muted);font-size:13.5px}
.nb-app .nb-vacio b{display:block;color:var(--nb-ink);font-size:15px;margin-bottom:4px}
.nb-app .nb-vacio .nb-btn{margin:14px auto 0}
.nb-app .nb-cargando{padding:18px 8px}
.nb-app .nb-cargando i{display:block;height:14px;border-radius:6px;background:var(--nb-soft);margin:14px 0;animation:nbPulso 1.2s ease-in-out infinite}
.nb-app .nb-cargando i:nth-child(2){width:82%}.nb-app .nb-cargando i:nth-child(3){width:64%}.nb-app .nb-cargando i:nth-child(4){width:74%}
@keyframes nbPulso{0%,100%{opacity:1}50%{opacity:.45}}

/* ───────── botones genéricos ───────── */
.nb-app .nb-btn{border:1px solid var(--nb-line);background:var(--nb-surface);border-radius:9px;padding:7px 12px;font-size:12.5px;font-weight:600;line-height:1.3;color:var(--nb-ink);display:inline-flex;align-items:center;gap:6px;white-space:nowrap;text-decoration:none}
.nb-app .nb-btn:hover{background:var(--nb-hover)}
.nb-app .nb-btn.nb-pri{background:var(--nb-accent);border-color:var(--nb-accent);color:var(--nb-on-accent)}
.nb-app .nb-btn.nb-pri:hover{filter:brightness(1.08)}
.nb-app .nb-btn.nb-peligro{background:var(--nb-danger);border-color:var(--nb-danger);color:#fff}
:root[data-theme="dark"] .nb-app .nb-btn.nb-peligro{color:#1A0A0D}
.nb-app .nb-btn svg{width:15px;height:15px}

/* ───────── editor (hoja / visor) ───────── */
.nb-app .nb-ed-top{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--nb-line);flex-wrap:wrap;background:var(--nb-surface)}
.nb-app .nb-back{border:0;background:none;padding:6px 10px;border-radius:9px;color:var(--nb-muted);font-weight:600;font-size:13px;white-space:nowrap}
.nb-app .nb-back:hover{background:var(--nb-hover);color:var(--nb-ink)}
.nb-app .nb-ed-top > .nb-fi{width:24px;height:24px;flex:0 0 24px}
.nb-app .nb-ed-name{font-family:var(--nb-fd);font-size:16px;font-weight:700;border:1px solid transparent;background:none;color:var(--nb-ink);padding:4px 8px;border-radius:8px;min-width:120px;max-width:380px;width:auto;flex:0 1 380px;height:auto;box-shadow:none}
.nb-app .nb-ed-name:hover{border-color:var(--nb-line)}
.nb-app .nb-ed-name:focus{outline:2px solid var(--nb-accent);outline-offset:0}
.nb-app .nb-ed-name[readonly]:hover{border-color:transparent}
.nb-app .nb-estado{font-size:12px;color:var(--nb-muted);display:flex;align-items:center;gap:5px;white-space:nowrap}
.nb-app .nb-estado svg{width:14px;height:14px}
.nb-app .nb-estado.nb-err{color:var(--nb-danger)}
.nb-app .nb-ed-acts{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.nb-app .nb-aviso{display:flex;align-items:center;gap:8px;padding:8px 14px;font-size:12.5px;background:var(--nb-warn-soft);color:var(--nb-warn);border-bottom:1px solid var(--nb-line)}
.nb-app .nb-aviso svg{width:16px;height:16px}
.nb-app .nb-aviso b{font-weight:700}

/* libro de cálculo */
.nb-app .nb-xl-tool{display:flex;align-items:center;gap:4px;padding:7px 12px;border-bottom:1px solid var(--nb-line);background:var(--nb-soft);flex-wrap:wrap}
.nb-app .nb-tb{border:1px solid transparent;background:none;border-radius:7px;padding:5px 9px;font-size:12.5px;font-weight:600;line-height:1.3;color:var(--nb-ink);min-width:30px}
.nb-app .nb-tb:hover{background:var(--nb-surface);border-color:var(--nb-line)}
.nb-app .nb-tb.nb-on{background:var(--nb-accent-soft);color:var(--nb-accent-ink)}
.nb-app .nb-tsep{width:1px;height:20px;background:var(--nb-line);margin:0 4px}
.nb-app .nb-xl-ayuda{margin-left:auto;font-size:11.5px;color:var(--nb-muted)}
.nb-app .nb-fx{display:flex;align-items:center;border-bottom:1px solid var(--nb-line);background:var(--nb-surface)}
.nb-app .nb-fx .nb-ref{width:64px;text-align:center;font-size:12px;font-weight:700;color:var(--nb-muted);border-right:1px solid var(--nb-line);padding:7px 0;flex-shrink:0}
.nb-app .nb-fx .nb-fxl{font-style:italic;font-weight:700;color:var(--nb-muted);padding:0 8px;font-family:Georgia,serif}
.nb-app .nb-fx input{flex:1;border:0;background:none;font-size:13px;padding:7px 8px;color:var(--nb-ink);min-width:0;height:auto;box-shadow:none;border-radius:0}
.nb-app .nb-fx input:focus{outline:none;background:var(--nb-hover)}
.nb-app .nb-xl-wrap{flex:1;overflow:auto;background:var(--nb-surface);min-height:0}
.nb-app .nb-xl-wrap:focus-visible{outline:2px solid var(--nb-accent);outline-offset:-2px}
.nb-app table.nb-xl{border-collapse:separate;border-spacing:0;font-size:13px;table-layout:fixed;width:auto;background:var(--nb-surface)}
.nb-app .nb-xl th{background:var(--nb-gridhead);color:var(--nb-muted);font-weight:600;font-size:11.5px;border:0;border-right:1px solid var(--nb-grid);border-bottom:1px solid var(--nb-grid);padding:4px;position:sticky;top:0;z-index:2;text-align:center;text-transform:none;letter-spacing:normal;white-space:nowrap;cursor:default;font-family:var(--nb-ff);line-height:1.3}
.nb-app .nb-xl th.nb-rh{position:sticky;left:0;z-index:1;width:44px}
.nb-app .nb-xl thead th.nb-corner{left:0;z-index:3}
.nb-app .nb-xl th.nb-hsel{background:var(--nb-accent-soft);color:var(--nb-accent-ink)}
.nb-app .nb-xl td{border:0;border-right:1px solid var(--nb-grid);border-bottom:1px solid var(--nb-grid);padding:0 7px;height:27px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:cell;background:var(--nb-surface);color:var(--nb-ink);font-size:13px;transition:none;vertical-align:middle;line-height:26px}
.nb-app .nb-xl tbody tr:last-child td{border-bottom:1px solid var(--nb-grid)}
.nb-app .nb-xl td.nb-num{text-align:right;font-variant-numeric:tabular-nums}
.nb-app .nb-xl td.nb-b{font-weight:700}
.nb-app .nb-xl td.nb-e{color:var(--nb-danger)}
.nb-app .nb-xl td.nb-sel{outline:2px solid var(--nb-accent);outline-offset:-2px;background:var(--nb-accent-soft)}
/* rango seleccionado (Shift+flechas / arrastrar) y celdas señaladas mientras se escribe una fórmula */
.nb-app .nb-xl td.nb-rng{background:var(--nb-accent-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--nb-accent) 35%,transparent)}
.nb-app .nb-xl td.nb-rng.nb-sel{background:var(--nb-surface)}
.nb-app .nb-xl td.nb-pt{outline:2px dashed var(--nb-accent);outline-offset:-3px;background:color-mix(in srgb,var(--nb-accent-soft) 70%,var(--nb-surface))}
.nb-app .nb-xl{user-select:none;-webkit-user-select:none}
.nb-app .nb-xl td input{user-select:text;-webkit-user-select:text}
.nb-app .nb-xl td input{width:100%;border:0;font:inherit;font-family:var(--nb-ff);background:var(--nb-surface);color:var(--nb-ink);padding:0;height:25px;outline:none;box-shadow:none;border-radius:0}
.nb-app .nb-tabs-x{display:flex;align-items:center;gap:2px;padding:4px 10px;border-top:1px solid var(--nb-line);background:var(--nb-soft);overflow-x:auto}
.nb-app .nb-tabx{border:0;background:none;padding:5px 12px;border-radius:7px;font-size:12.5px;color:var(--nb-muted);font-weight:600;white-space:nowrap}
.nb-app .nb-tabx:hover{color:var(--nb-ink)}
.nb-app .nb-tabx.nb-act{background:var(--nb-surface);color:var(--nb-accent-ink);box-shadow:0 1px 2px rgba(15,23,42,.08)}

/* visor de PDF e imágenes */
.nb-app .nb-visor{flex:1;overflow:auto;background:var(--nb-visor);padding:18px 16px;display:flex;flex-direction:column;align-items:center;gap:10px;min-height:0}
.nb-app .nb-visor-frame{flex:1;width:min(980px,100%);min-height:420px;border:0;background:#fff;border-radius:4px;box-shadow:0 3px 14px rgba(0,0,0,.4)}
.nb-app .nb-visor img{max-width:100%;height:auto;border-radius:6px;box-shadow:0 3px 14px rgba(0,0,0,.4);background:#fff}
.nb-app .nb-visor a{color:#fff;font-size:12px;opacity:.85}

/* ───────── diálogos (compartir, nombre, mover, confirmar) ───────── */
.nb-app .nb-modal{position:fixed;inset:0;background:rgba(15,23,42,.45);display:grid;place-items:center;z-index:1300;padding:16px}
.nb-app .nb-mbox{width:min(460px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--nb-surface);color:var(--nb-ink);border-radius:16px;box-shadow:var(--nb-shadow);padding:20px 22px;position:relative}
.nb-app .nb-mbox h3{margin:0 0 12px;font-family:var(--nb-fd);font-size:18px;font-weight:700;line-height:1.25;color:var(--nb-ink);letter-spacing:-.01em;display:block;padding-right:28px;overflow-wrap:anywhere}
.nb-app .nb-mbox p{margin:0 0 12px;font-size:13px;color:var(--nb-muted)}
.nb-app .nb-mcerrar{position:absolute;right:12px;top:12px}
.nb-app .nb-mbox input.nb-add{width:100%;padding:9px 12px;border:1px solid var(--nb-line);border-radius:10px;background:var(--nb-soft);color:var(--nb-ink);margin:0 0 12px;font-size:13.5px;height:auto;box-shadow:none}
.nb-app .nb-mbox input.nb-add:focus{outline:2px solid var(--nb-accent);outline-offset:0;background:var(--nb-surface);border-color:transparent}
.nb-app .nb-mbox .nb-msg-err{color:var(--nb-danger);font-size:12px;margin:-6px 0 10px;min-height:0}
.nb-app .nb-persona{display:flex;align-items:center;gap:10px;padding:7px 0}
.nb-app .nb-av{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;color:#fff;flex:0 0 30px}
.nb-app .nb-persona .nb-pn{min-width:0}
.nb-app .nb-persona b{font-size:13px;font-weight:600;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nb-app .nb-persona small{font-size:11.5px;color:var(--nb-muted);display:block}
.nb-app .nb-persona select,.nb-app .nb-mbox select{margin-left:auto;font-size:12.5px;border:1px solid var(--nb-line);border-radius:8px;padding:4px 6px;background:var(--nb-surface);color:var(--nb-ink);height:auto;max-width:100%}
.nb-app .nb-persona .nb-prop{margin-left:auto;font-size:11.5px;color:var(--nb-muted)}
.nb-app .nb-personas{max-height:min(40vh,320px);overflow:auto;margin:0 -4px;padding:0 4px}
.nb-app .nb-sugs{position:relative}
.nb-app .nb-sug-list{margin:-6px 0 12px;background:var(--nb-surface);border:1px solid var(--nb-line);border-radius:10px;box-shadow:0 6px 18px rgba(15,23,42,.10);max-height:200px;overflow:auto;padding:4px}
.nb-app .nb-sug{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:6px 8px;border-radius:8px;text-align:left;color:var(--nb-ink)}
.nb-app .nb-sug:hover,.nb-app .nb-sug.nb-act{background:var(--nb-hover)}
.nb-app .nb-sug .nb-av{width:26px;height:26px;flex-basis:26px;font-size:11px}
.nb-app .nb-sug b{font-size:13px;font-weight:600;display:block}
.nb-app .nb-sug small{font-size:11px;color:var(--nb-muted);display:block}
.nb-app .nb-general{display:flex;align-items:center;gap:10px;padding:10px 0 0;margin-top:8px;border-top:1px solid var(--nb-line);font-size:13px}
.nb-app .nb-general svg{width:18px;height:18px;color:var(--nb-muted)}
.nb-app .nb-general select{margin-left:auto}
.nb-app .nb-mfoot{display:flex;gap:8px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}
.nb-app .nb-destinos{display:flex;flex-direction:column;gap:2px;max-height:min(46vh,340px);overflow:auto;margin:0 0 10px}
.nb-app .nb-dest{display:flex;align-items:center;gap:10px;width:100%;border:1px solid transparent;background:none;padding:8px 10px;border-radius:9px;text-align:left;color:var(--nb-ink);font-size:13px}
.nb-app .nb-dest:hover{background:var(--nb-hover)}
.nb-app .nb-dest[aria-checked="true"]{background:var(--nb-accent-soft);color:var(--nb-accent-ink);font-weight:600;border-color:transparent}
.nb-app .nb-dest svg,.nb-app .nb-dest .nb-fi{width:18px;height:18px;flex:0 0 18px;color:var(--nb-muted)}
.nb-app .nb-dest .nb-n{margin-left:auto;font-size:11px;color:var(--nb-muted)}
.nb-app .nb-dest-actual{font-size:11px;color:var(--nb-muted);margin-left:auto}

/* ───────── panel de subidas ───────── */
.nb-app .nb-subidas{position:fixed;right:18px;bottom:18px;width:min(340px,calc(100vw - 32px));background:var(--nb-surface);color:var(--nb-ink);border:1px solid var(--nb-line);border-radius:14px;box-shadow:var(--nb-shadow);z-index:1250;overflow:hidden}
.nb-app .nb-sub-hd{display:flex;align-items:center;gap:8px;padding:10px 12px 10px 14px;border-bottom:1px solid var(--nb-line);font-weight:600;font-size:13px}
.nb-app .nb-sub-hd .nb-ib{margin-left:auto}
.nb-app .nb-sub-list{max-height:240px;overflow:auto;padding:4px 0}
.nb-app .nb-sub-it{display:flex;align-items:center;gap:10px;padding:7px 14px;font-size:12.5px}
.nb-app .nb-sub-it .nb-fi{width:20px;height:20px;flex:0 0 20px}
.nb-app .nb-sub-in{flex:1;min-width:0}
.nb-app .nb-sub-in b{display:block;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nb-app .nb-sub-in small{display:block;font-size:11.5px;color:var(--nb-muted)}
.nb-app .nb-sub-in small.nb-err{color:var(--nb-danger)}
.nb-app .nb-sub-in small.nb-ok{color:var(--nb-hoja)}
.nb-app .nb-prog{height:4px;border-radius:2px;background:var(--nb-line);overflow:hidden;margin-top:4px}
.nb-app .nb-prog i{display:block;height:100%;background:var(--nb-accent);border-radius:2px;transition:width .15s}

/* área de archivos angosta (ventana pequeña con el menú del SPA abierto): primero el nombre */
.nb-app .nb-archivos{container-type:inline-size;container-name:nbarch}
@container nbarch (max-width:720px){
  .nb-app .nb-fl .nb-col-d{display:none}
  .nb-app .nb-chips{margin-left:0}
}
@container nbarch (max-width:520px){
  .nb-app .nb-fl .nb-col-t{display:none}
  .nb-app .nb-fl .nb-acc{width:auto}
}

/* ───────── móvil ───────── */
@media (max-width:760px){
  .nb-app{--nb-alto:auto}
  .nb-app .nb-frame{height:auto;min-height:calc(100vh - 150px)}
  .nb-app .nb-body{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}
  .nb-app .nb-lugares{border-right:0;border-bottom:1px solid var(--nb-line);flex-direction:row;overflow-x:auto;overflow-y:hidden;padding:8px;gap:4px}
  .nb-app .nb-lugares .nb-lg{width:auto;white-space:nowrap;flex:0 0 auto}
  .nb-app .nb-lugares .nb-lg-t,.nb-app .nb-lugares .nb-lg.nb-sub,.nb-app .nb-lugares .nb-lg-vacio,.nb-app .nb-espacio{display:none}
  .nb-app .nb-top{flex-wrap:wrap;padding:12px 14px}
  .nb-app .nb-search{order:3;flex-basis:100%;max-width:none}
  .nb-app .nb-bar{padding:10px 12px 6px}
  .nb-app .nb-chips{margin-left:0;flex-wrap:nowrap;overflow-x:auto;max-width:100%;padding-bottom:2px}
  .nb-app .nb-chip{flex:0 0 auto}
  .nb-app .nb-lista{padding:0 6px 12px;min-height:50vh}
  .nb-app .nb-fl .nb-col-d,.nb-app .nb-fl .nb-col-t{display:none}
  .nb-app .nb-fl .nb-acc{width:auto}
  .nb-app .nb-fl .nb-acc .nb-ib[data-nb="share"],.nb-app .nb-fl .nb-acc .nb-ib[data-nb="star"]:not(.nb-on){display:none}
  .nb-app .nb-fl .nb-col-m{font-size:12px;padding-left:4px;padding-right:4px}
  .nb-app .nb-lugares,.nb-app .nb-chips{scrollbar-width:thin}
  .nb-app .nb-grid-f{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
  .nb-app .nb-ed-name{flex:1 1 160px;max-width:none}
  .nb-app .nb-ed-acts{margin-left:0;width:100%}
  .nb-app .nb-xl-ayuda{display:none}
  .nb-app .nb-xl-wrap{min-height:55vh}
  .nb-app .nb-visor{min-height:60vh}
  .nb-app .nb-subidas{right:10px;bottom:74px}
}
@media (prefers-reduced-motion:reduce){
  .nb-app .nb-cargando i{animation:none}
  .nb-app .nb-prog i{transition:none}
}
