:root { --vl-motion-ease:cubic-bezier(.22,1,.36,1); }
.vl-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
#view-loading:not([hidden]) { position:fixed; inset:0; z-index:80; overflow-y:auto; background:#131e2b; color:#c4ccd8; display:flex; flex-direction:column; align-items:center; padding:clamp(32px,7vh,80px) 24px 72px; }
#view-loading .vl-preparation-content { position:relative; width:min(100%,680px); margin:auto; z-index:1; }
#view-loading .vl-eyebrow { color:#8794a4; }
#view-loading #loadTitle { font:500 clamp(36px,5vw,52px)/1.05 var(--vl-font-serif); color:#fff; outline:none; }
#view-loading #loadSummary { color:#a9b1bd; max-width:54ch; font-size:14px; line-height:1.65; }
#view-loading .vl-card { background:transparent; border:0; box-shadow:none; padding:0; }
#view-loading .vl-stage { background:transparent; border-color:#24313f; padding:14px 0; }
#view-loading .vl-stage-name { color:#c4ccd8; }
#view-loading .vl-body-sm { color:#8794a4; line-height:1.5; }
#view-loading .vl-stage-dot { background:#1d2c3d; border-color:#24313f; color:#8794a4; }
#view-loading .is-running .vl-stage-name { color:#4fb0c0; animation:vl-status-glow 2.4s ease-in-out infinite; }
#view-loading .is-running .vl-stage-dot { border-color:#4fb0c0; }
#view-loading .is-done .vl-stage-dot { background:#1d343b; color:#4fb0c0; border-color:#24606b; }
#view-loading .is-failed .vl-stage-dot { color:#ffb6a7; border-color:#b14434; }
#view-loading .vl-stage-note { color:#4fb0c0; }
#view-loading .vl-spin { border-color:#24313f; border-top-color:#4fb0c0; }
#view-loading .errbox { color:#ffdbd2; background:#35282c; border-color:#805246; }
#view-loading .vl-btn-secondary { color:#c4ccd8; background:#1d2c3d; border-color:#435367; }
#view-loading .vl-preparation-content:before { content:''; position:absolute; inset:-48px 0; z-index:-1; background:radial-gradient(ellipse,#131e2bf2 35%,#131e2b00 75%); pointer-events:none; }
.vl-preparation-dust { position:absolute; inset:0; overflow:hidden; opacity:.55; pointer-events:none; }
.vl-preparation-dust canvas { width:100%; height:100%; }
.vl-preparation-identity { display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin-bottom:24px; font:11px var(--vl-font-mono); }
.vl-preparation-identity .vl-identity-tile { display:inline-flex; align-items:center; gap:8px; }
.vl-preparation-identity [data-company-logo] { width:32px; height:32px; border-radius:50%; background:#24313f; border:1px solid #435367; display:grid; place-items:center; position:relative; overflow:hidden; flex-shrink:0; }
.vl-preparation-identity .vl-company-logo { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.vl-preparation-signature { position:relative; margin-top:32px; font:500 22px var(--vl-font-serif); color:#8794a4; letter-spacing:-.03em; }
.vl-preparation-progress { position:fixed; bottom:0; left:0; right:0; height:2px; background:#24313f; }
.vl-preparation-progress > span { display:block; height:100%; background:#4fb0c0; transform:scaleX(var(--vl-progress,0)); transform-origin:left; transition:transform .9s var(--vl-motion-ease); }
.vl-chart-body { position:relative; isolation:isolate; }
.vl-chart-body > canvas { transition:opacity .7s ease-out,filter 1.1s ease-out; }
.vl-chart-body[data-chart-state='waiting'] > canvas,
.vl-chart-body[data-chart-state='empty'] > canvas,
.vl-chart-body[data-chart-state='error'] > canvas { opacity:0; }
.vl-chart-body[data-chart-state='waiting'] > canvas { filter:blur(24px); }
.vl-chart-loading { position:absolute; inset:0; pointer-events:none; display:grid; place-items:center; opacity:1; transition:opacity .55s .2s ease-in,filter .7s ease-out; }
.vl-chart-loading > canvas { width:100%; height:100%; }
.vl-chart-body[data-chart-state='ready'] .vl-chart-loading { opacity:0; filter:blur(20px); }
.vl-chart-message { position:absolute; inset:0; display:grid; place-items:center; padding:24px; text-align:center; color:var(--vl-ink-500); font:13px/1.5 var(--vl-font-sans); }
.vl-workspace-curtain { position:fixed; inset:0; z-index:85; display:grid; place-content:center; gap:16px; text-align:center; background:#131e2b; color:#c4ccd8; font:32px/1.2 var(--vl-font-serif); }
.vl-workspace-curtain small { font:12px var(--vl-font-sans); color:#8794a4; }
.vl-workspace-curtain.is-leaving { transform:translateY(-100%); transition:transform .85s cubic-bezier(.76,0,.24,1); }
.vl-workspace-entering aside { animation:vl-enter-left .75s .2s var(--vl-motion-ease) both; }
.vl-workspace-entering header { animation:vl-enter-top .7s .3s var(--vl-motion-ease) both; }
.vl-workspace-entering #exec > * { animation:vl-enter-content .6s var(--vl-motion-ease) both; animation-delay:calc(450ms + var(--vl-enter-i,0) * 90ms); }
@keyframes vl-enter-left { from { opacity:0; transform:translateX(-40px); } to { opacity:1; transform:none; } }
@keyframes vl-enter-top { from { opacity:0; transform:translateY(-24px); } to { opacity:1; transform:none; } }
@keyframes vl-enter-content { from { opacity:0; transform:translateY(-14px); } to { opacity:1; transform:none; } }
@keyframes vl-status-glow { 50% { opacity:.55; } }
@media(prefers-reduced-motion:reduce) {
  #view-loading *, .vl-workspace-entering *, .vl-chart-body > canvas, .vl-chart-loading, .vl-workspace-curtain { animation:none!important; transition:none!important; filter:none!important; }
}
@media print {
  .vl-chart-loading,.vl-workspace-curtain,#view-loading { display:none!important; }
  .vl-chart-body > canvas { opacity:1!important; filter:none!important; }
}
.vl-preparation-back { position:relative; margin-top:24px; flex-shrink:0; }
#view-loading #retryRow { flex-wrap:wrap; }
#view-loading:not([hidden]) { overflow-x:clip; }
#view-loading .vl-preparation-content { flex-shrink:0; }
#view-loading .vl-stage-note { flex-shrink:0; }
.vl-chart-body { overflow:hidden; }
.vl-chart-body > canvas { max-width:100%; }

@media print { .vl-workspace-entering * { animation:none!important; } }

/* Initial data fetch: never present empty metrics as a completed analysis. */
#projectLoading { display:none; }
.vl-project-loading main > :not(#projectLoading) { display:none !important; }
.vl-project-loading #projectLoading { display:block; padding:32px; }
.loading-identity { display:flex; align-items:center; gap:16px; padding-bottom:28px; border-bottom:1px solid var(--line); }
.loading-identity > div { width:min(360px,70%); }
.skeleton { display:block; background:linear-gradient(100deg,#e8edef 20%,#f4f6f7 45%,#e8edef 70%); background-size:250% 100%; border-radius:5px; animation:vl-skeleton 2s ease-in-out infinite; }
.skeleton-logo { width:44px; height:44px; border-radius:50%; }
.skeleton-title { width:90%; height:23px; margin-bottom:10px; }
.skeleton-meta { width:55%; height:10px; }
.loading-copy { padding:46px 0 32px; }
.loading-eyebrow { font:10px var(--vl-font-mono); letter-spacing:.2em; color:var(--vl-accent); }
.loading-copy h1 { margin:12px 0; font:500 40px/1.1 var(--vl-font-serif); }
.loading-copy p { font:italic 17px var(--vl-font-serif); color:var(--mute); }
.loading-kpis { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border:1px solid var(--line); border-radius:10px; background:white; overflow:hidden; }
.loading-kpis > div { padding:28px; border-right:1px solid var(--line); }
.loading-kpis > div:last-child { border:0; }
.skeleton-value { width:65%; height:38px; margin-bottom:20px; }
.loading-brief { margin-top:24px; padding:28px; border:1px solid var(--line); border-radius:10px; background:white; }
.loading-brief .skeleton-meta { width:220px; max-width:70%; margin-bottom:30px; }
.skeleton-line { width:100%; height:12px; margin-top:18px; }
.skeleton-line:nth-child(3n) { width:82%; }
.skeleton-line:last-child { width:58%; }
@keyframes vl-skeleton { to { background-position:-150% 0; } }
@media(max-width:640px) { .vl-project-loading #projectLoading { padding:24px 16px; } .loading-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); } .loading-kpis > div { padding:20px; } .loading-copy h1 { font-size:32px; } }
@media(prefers-reduced-motion:reduce) { .skeleton { animation:none; } }
