/* Estados de carga homologados con el Buscador Jurídico: nav-progress.css, skeleton.css y polish.css (pantallas vacías). */

/* Barra superior de progreso */
#nav-progress{position:fixed;top:0;left:0;right:0;height:4px;z-index:9999;pointer-events:none;opacity:0;transition:opacity .25s}
#nav-progress .np-fill{display:block;height:100%;width:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,#9b2247,#c2466d 60%,#e6b865);box-shadow:0 0 8px #9b224780;border-radius:0 2px 2px 0}
#nav-progress.np-active{opacity:1}
#nav-progress.np-active .np-fill{animation:np-trickle 8s cubic-bezier(.08,.8,.2,1) forwards}
#nav-progress.np-done .np-fill{animation:none;transform:scaleX(1);transition:transform .2s ease-out}
#nav-progress.np-done{opacity:0;transition:opacity .3s .15s}
@keyframes np-trickle{0%{transform:scaleX(0)}15%{transform:scaleX(.35)}50%{transform:scaleX(.7)}100%{transform:scaleX(.9)}}
html.is-loading,html.is-loading *{cursor:progress}
#nav-progress-pill{position:fixed;top:14px;left:50%;z-index:9999;display:flex;align-items:center;gap:10px;padding:8px 16px 8px 12px;border-radius:999px;background:#fff;color:#5c1430;font:700 13.5px/1 Noto,Arial,sans-serif;box-shadow:0 8px 24px #2a07142e,0 0 0 1px #9b224722;pointer-events:none;opacity:0;transform:translate(-50%,-8px);transition:opacity .2s,transform .2s}
#nav-progress-pill.np-active{opacity:1;transform:translate(-50%,0)}
#nav-progress-pill .np-spinner{width:16px;height:16px;border-radius:50%;border:2px solid #9b224733;border-top-color:#9b2247;animation:np-spin .7s linear infinite}
@keyframes np-spin{to{transform:rotate(360deg)}}
:root[data-theme=dark] #nav-progress-pill{background:#262321;color:#f4d7e0;box-shadow:0 8px 24px #0008,0 0 0 1px #ffffff1f}
:root[data-theme=dark] #nav-progress-pill .np-spinner{border-color:#ffffff33;border-top-color:#e8a3b9}

/* Esqueletos */
.sk-wrap{--sk-base:#efe9e1;--sk-hi:#f8f4ef;--sk-card:#fff;--sk-border:#ece6dd;display:grid;gap:14px;width:100%;margin:0 auto;padding:8px 0 24px;animation:sk-in .25s ease-out}
.sk-line,.sk-hero,.sk-icon,.sk-kpi,.sk-node{display:block;border-radius:8px;background:linear-gradient(100deg,var(--sk-base) 30%,var(--sk-hi) 50%,var(--sk-base) 70%) 0 0/300% 100%;animation:sk-shimmer 1.4s ease-in-out infinite;animation-delay:var(--d,0ms)}
.sk-line{height:11px}.sk-line.sk-xs{height:9px}.sk-line.sk-lg{height:16px}.sk-line.sk-xl{height:24px;border-radius:10px}.sk-line.sk-pill{height:26px;border-radius:999px}
.w-20{width:20%}.w-22{width:22%}.w-26{width:26%}.w-30{width:30%}.w-34{width:34%}.w-38{width:38%}.w-40{width:40%}.w-46{width:46%}.w-48{width:48%}.w-56{width:56%}.w-58{width:58%}.w-60{width:60%}.w-62{width:62%}.w-64{width:64%}.w-70{width:70%}.w-80{width:80%}.w-82{width:82%}.w-88{width:88%}.w-96{width:96%}.w-100{width:100%}
.d-0{--d:0ms}.d-1{--d:90ms}.d-2{--d:180ms}.d-3{--d:270ms}.d-4{--d:360ms}.d-5{--d:450ms}
.sk-wrap .d-1 .sk-line,.sk-wrap .d-1>.sk-icon{--d:90ms}.sk-wrap .d-2 .sk-line,.sk-wrap .d-2>.sk-icon{--d:180ms}.sk-wrap .d-3 .sk-line{--d:270ms}
.sk-head{display:grid;gap:10px;padding:6px 2px}
.sk-card{display:grid;gap:10px;padding:20px 22px;background:var(--sk-card);border:1px solid var(--sk-border);border-radius:14px}
.sk-row{display:flex;gap:8px;margin-top:4px}
.sk-hero{height:220px;border-radius:20px}.sk-hero-sm{height:170px}
.sk-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.sk-kpi{height:92px;border-radius:12px}
.sk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.sk-tile{display:flex;gap:14px;align-items:center;padding:16px;background:var(--sk-card);border:1px solid var(--sk-border);border-radius:14px}
.sk-tile>div{flex:1;display:grid;gap:9px}
.sk-icon{width:44px;height:44px;border-radius:12px;flex:none}
.sk-tl{display:grid;grid-template-columns:44px minmax(0,1fr);gap:10px}.sk-node{width:44px;height:48px;border-radius:12px}
.sk-table{display:grid;gap:12px;padding:12px;border:1px solid var(--sk-border);border-radius:10px}
.sk-article{padding:24px;gap:12px}
:root[data-theme=dark] .sk-wrap{--sk-base:#2a2426;--sk-hi:#352e30;--sk-card:#1f1a1c;--sk-border:#332b2e}
@keyframes sk-shimmer{0%{background-position:100% 0}100%{background-position:0 0}}
@keyframes sk-in{from{opacity:0}}
@media (min-width:640px){.sk-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.sk-tl{grid-template-columns:64px minmax(0,1fr)}.sk-node{width:64px;height:62px}}
@media (max-width:640px){.sk-hero{height:170px}.sk-card{padding:16px}.sk-article{padding:18px}}

/* Pantallas vacías ilustradas */
.empty-art{display:block;margin:0 auto 6px;overflow:visible;animation:ea-float 5s ease-in-out infinite}
.empty-art .ea-paper{fill:#fff}.empty-art .ea-bg{fill:#fbf3f5}
:root[data-theme=dark] .empty-art .ea-paper{fill:#262022}:root[data-theme=dark] .empty-art .ea-bg{fill:#2e2226}
.empty:has(.empty-art){border-style:dashed}
.empty .empty-art+h3{margin-top:4px;font:700 20px Patria,Georgia,serif}
@keyframes ea-float{50%{transform:translateY(-4px)}}

/* Precarga tras iniciar sesión: la R con su nodo dorado mientras llega la biblioteca */
#boot-loader{position:fixed;inset:0;z-index:10040;display:flex;align-items:center;justify-content:center;background:var(--paper);opacity:0;pointer-events:none;transition:opacity .25s}
#boot-loader.is-on{opacity:1;pointer-events:auto}
#boot-loader .bl-box{display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center;padding:0 24px}
#boot-loader .bl-mark{width:64px;height:auto;animation:bl-breathe 1.6s ease-in-out infinite}
#boot-loader .bl-mark .bm-line,#boot-loader .bl-mark .bm-lens circle:last-child{fill:var(--paper)}
#boot-loader .bl-mark .bm-lens{transform-box:fill-box;transform-origin:50% 50%;animation:bl-node 1.6s ease-in-out infinite}
#boot-loader .bl-name{font:700 22px Patria,Georgia,serif;color:var(--ink)}
#boot-loader .bl-text{font:600 13px Noto,Arial,sans-serif;color:var(--muted)}
#boot-loader .bl-bar{width:180px;height:4px;border-radius:4px;background:color-mix(in srgb,var(--guinda) 14%,transparent);overflow:hidden}
#boot-loader .bl-bar span{display:block;width:40%;height:100%;border-radius:4px;background:linear-gradient(90deg,#9b2247,#e6b865);animation:bl-slide 1.2s ease-in-out infinite}
:root[data-theme=dark] #boot-loader .bl-mark .bm-bar,:root[data-theme=dark] #boot-loader .bl-mark .bm-page,:root[data-theme=dark] #boot-loader .bl-mark .bm-leg{fill:#e27a9c}
@keyframes bl-breathe{50%{transform:scale(1.05)}}
@keyframes bl-node{50%{transform:scale(1.18)}}
@keyframes bl-slide{0%{transform:translateX(-110%)}100%{transform:translateX(260%)}}

@media (prefers-reduced-motion:reduce){
  #nav-progress.np-active .np-fill{animation:none;transform:scaleX(.6)}#nav-progress.np-done .np-fill{transition:none}#nav-progress-pill{transition:none}
  .sk-line,.sk-hero,.sk-icon,.sk-kpi,.sk-node{animation:none}.empty-art{animation:none}
  #boot-loader .bl-mark,#boot-loader .bl-mark .bm-lens,#boot-loader .bl-bar span{animation:none}
}
@media print{#nav-progress,#nav-progress-pill,#boot-loader{display:none!important}}
