/* INTEGRAR UI 3.0: única fuente de tokens y apariencia de componentes. */
:root{
 --ui-bg:var(--brand-bg,#f5f7fa);--ui-surface:#fff;--ui-surface-soft:#f8fafc;
 --ui-text:#182c3f;--ui-text-secondary:#40566b;--ui-muted:#617386;
 --ui-primary:color-mix(in srgb,var(--brand-primary,#509dd7) 60%,#123f66);--ui-primary-hover:color-mix(in srgb,var(--ui-primary) 86%,#102c43);--ui-primary-soft:color-mix(in srgb,var(--brand-primary,#509dd7) 10%,white);
 --ui-success:#18704e;--ui-warning:#865b12;--ui-danger:#b42e42;--ui-info:#286c9c;
 --ui-border:#dce4ec;--ui-border-strong:#b6c7d6;--ui-radius-sm:8px;--ui-radius-md:12px;--ui-radius-lg:18px;
 --ui-shadow-sm:0 2px 5px #182c3f05;--ui-shadow-md:0 14px 42px #182c3f1a;
 --ui-space-1:4px;--ui-space-2:8px;--ui-space-3:12px;--ui-space-4:16px;--ui-space-5:24px;--ui-space-6:32px;
 --ui-title:28px;--ui-section:20px;--ui-card-title:15px;--ui-body:var(--brand-size,14px);--ui-label:13px;--ui-helper:12px;--ui-caption:11px;--ui-kpi:32px;
 --ui-font:var(--brand-font,Inter,Arial,sans-serif);--ui-nav:#102f46;--ui-motion:160ms;
 /* Compatibilidad: los nombres anteriores apuntan al mismo sistema. */
 --bg:var(--ui-bg);--text:var(--ui-text);--muted:var(--ui-muted);--card:var(--ui-surface);--line:var(--ui-border);--primary:var(--ui-primary);--secondary:var(--brand-secondary,#76b6e2);--primary-dark:var(--ui-primary);--primary-light:var(--ui-primary-soft);--positive:var(--ui-success);--negative:var(--ui-danger);--warning:var(--ui-warning);--font:var(--ui-font);--font-size:var(--ui-body);
 --color-primary:var(--ui-primary);--color-primary-soft:var(--ui-primary-soft);--color-background:var(--ui-bg);--color-surface:var(--ui-surface);--color-border:var(--ui-border);--color-text:var(--ui-text);--color-muted:var(--ui-muted);--color-success:var(--ui-success);--color-warning:var(--ui-warning);--color-danger:var(--ui-danger);
 --radius:var(--ui-radius-md);--radius-sm:var(--ui-radius-sm);--radius-md:var(--ui-radius-md);--radius-lg:var(--ui-radius-lg);--shadow:var(--ui-shadow-sm);--shadow-sm:var(--ui-shadow-sm);--shadow-md:var(--ui-shadow-md);--space-xs:var(--ui-space-1);--space-sm:var(--ui-space-2);--space-md:var(--ui-space-4);--space-lg:var(--ui-space-5);--space-xl:var(--ui-space-6);--nav-height:68px;
}
*{box-sizing:border-box}body{margin:0;background:var(--ui-bg);color:var(--ui-text);font:var(--ui-body)/1.5 var(--ui-font)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,summary{cursor:pointer}h1,h2,h3,p{overflow-wrap:anywhere}h1{font-size:var(--ui-title);font-weight:750;line-height:1.2;letter-spacing:-.035em;margin:0}h2{font-size:var(--ui-section);font-weight:700;line-height:1.3;letter-spacing:-.02em}h3{font-size:var(--ui-card-title);line-height:1.4}small,.helper{font-size:var(--ui-helper);color:var(--ui-muted)}.muted{color:var(--ui-muted)}.eyebrow{display:block;color:var(--ui-muted);font-size:var(--ui-caption);font-weight:650;letter-spacing:.12em;margin-bottom:8px}.metric,.bi-kpi{font-variant-numeric:tabular-nums;letter-spacing:-.035em;font-weight:750;line-height:1.2}.metric{font-size:var(--ui-kpi)}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--ui-primary);outline-offset:3px}button:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}button,a,input,select,textarea{transition:background var(--ui-motion),border-color var(--ui-motion),box-shadow var(--ui-motion)}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-100px;left:16px;z-index:150;background:var(--ui-surface);padding:16px}.skip-link:focus{top:8px}
.topbar,.ui-page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin:0 0 28px}.title{min-width:0}.title p{color:var(--ui-muted);font-size:14px;line-height:1.6;margin:8px 0 0;max-width:760px}.ui-page-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex-shrink:0}.section-title{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:28px 0 14px}.section-title h2,.section-title h3{margin:0}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.actions>*{max-width:100%}.actions form{margin:0}
.btn,.icon-button,.sidebar-toggle,.period-chip,.view-choice{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:9px 14px;border:1px solid transparent;border-radius:var(--ui-radius-sm);font-size:13px;font-weight:600;line-height:1.3;white-space:normal;text-align:center;text-decoration:none;background:var(--ui-primary);color:#fff;cursor:pointer}.btn:hover{background:var(--ui-primary-hover)}.btn:active{transform:translateY(1px)}.btn.light,.btn.secondary,.btn.ui-secondary{background:var(--ui-surface);color:var(--ui-text-secondary);border-color:var(--ui-border)}.btn.light:hover,.btn.secondary:hover{border-color:var(--ui-border-strong);background:var(--ui-surface-soft)}.btn.ghost{background:transparent;color:var(--ui-primary)}.btn.ghost:hover{background:var(--ui-primary-soft)}.btn.danger{background:#fff3f4;color:var(--ui-danger);border-color:#f0cdd3}.btn.danger:hover{background:#ffe7eb}.icon-button,.sidebar-toggle{background:var(--ui-surface);border-color:var(--ui-border);color:var(--ui-text-secondary);padding:8px;min-width:40px}.btn svg,.icon-button svg{width:18px;height:18px}.spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:ui-spin .8s linear infinite;display:inline-block}.btn[aria-busy=true]{opacity:.75}
label{display:block;font-size:var(--ui-label);font-weight:600;margin-bottom:7px;color:var(--ui-text-secondary)}input,select,textarea{width:100%;min-width:0;min-height:42px;padding:10px 12px;background:var(--ui-surface);color:var(--ui-text);border:1px solid var(--ui-border-strong);border-radius:var(--ui-radius-sm);font-size:14px;line-height:1.4}input:hover,select:hover,textarea:hover{border-color:var(--ui-muted)}input:disabled,select:disabled,textarea:disabled{background:var(--ui-surface-soft);color:var(--ui-muted);opacity:.75;cursor:not-allowed}input[readonly]{background:var(--ui-surface-soft)}textarea{min-height:100px;resize:vertical}input[type=checkbox],input[type=radio]{width:18px;height:18px;min-height:0;accent-color:var(--ui-primary);flex-shrink:0}input[type=color]{padding:5px;min-height:42px}input[type=file]{padding:8px;max-width:100%}input::file-selector-button{padding:6px 10px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);background:var(--ui-surface);color:var(--ui-text-secondary);cursor:pointer;margin-right:12px}input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true],.selector-trigger[aria-invalid=true]{border-color:var(--ui-danger)}.field-error{display:block;color:var(--ui-danger);font-size:12px;margin-top:6px}.check-label{display:flex;align-items:center;gap:10px;min-height:36px;font-weight:500}.stack{display:grid;gap:20px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.form-grid>*{min-width:0}.stack>button,.stack>.btn{justify-self:start}.form-grid>button{align-self:end;justify-self:start}.form-section{padding-top:24px;border-top:1px solid var(--ui-border)}.card .card{box-shadow:none;border:0;border-top:1px solid var(--ui-border);border-radius:0;padding:24px 0 0}
.card,.bi-widget,.future-tile{background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--ui-radius-md);padding:22px;box-shadow:var(--ui-shadow-sm);min-width:0}.card h3{margin:0 0 8px;color:var(--ui-text-secondary);font-weight:600}.card>h2:first-child{margin-top:0}.card.interactive:hover{border-color:var(--ui-border-strong);box-shadow:var(--ui-shadow-md)}.summary-card{background:var(--ui-primary-soft);border:0}.alert-card{border-left:3px solid var(--ui-warning)}.negative{color:var(--ui-danger)}.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;max-width:100%;font-size:11px;line-height:1.4;font-weight:600;border-radius:6px;background:var(--ui-primary-soft);color:var(--ui-info)}.badge.warning,.state-atencion,.badge.ui-warning{background:#fff4dc;color:var(--ui-warning)}.state-critico,.badge.ui-danger{background:#fff0f2;color:var(--ui-danger)}.state-normal,.badge.ui-success{background:#e9f6ee;color:var(--ui-success)}.state-sin_datos,.badge.ui-muted{background:#eef2f6;color:var(--ui-muted)}
.table-wrap{max-width:100%;min-width:0;overflow:auto;background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--ui-radius-md);overscroll-behavior-x:contain}table{width:100%;border-collapse:separate;border-spacing:0}th,td{padding:13px 16px;border-bottom:1px solid var(--ui-border);text-align:left;vertical-align:middle;font-size:13px;overflow-wrap:anywhere;max-width:420px}th{font-size:12px;font-weight:650;letter-spacing:0;text-transform:none;color:var(--ui-text-secondary);background:var(--ui-surface-soft);white-space:nowrap}tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--ui-surface-soft)}.ui-number,.analysis-number{text-align:right;font-variant-numeric:tabular-nums}.ui-table-compact th,.ui-table-compact td{padding:9px 12px}.ui-table-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:16px 0 10px}.ui-table-tools input{width:min(320px,100%)}.ui-table-tools .ui-table-context{margin-left:auto;font-size:12px;color:var(--ui-muted)}.ui-sort{border:0;background:transparent;padding:0;color:inherit;font:inherit;text-align:inherit;display:flex;gap:6px;align-items:center;min-height:28px}.ui-sort span{color:var(--ui-muted);font-size:11px}.scroll-hint{display:block;color:var(--ui-primary);font-size:12px;padding:8px 0}.analytical-table th{position:sticky;top:0;z-index:2}.analytical-table td:first-child,.analytical-table th:first-child{position:sticky;left:0;background:var(--ui-surface);z-index:1;min-width:100px}.analytical-table th:first-child{z-index:3;background:var(--ui-surface-soft)}.analytical-table td{white-space:nowrap}.ui-row-actions{display:flex;align-items:center;gap:6px;position:relative}.ui-action-menu{position:relative}.ui-action-menu>summary{list-style:none;display:grid;place-items:center;min-width:36px;min-height:36px;border-radius:var(--ui-radius-sm);font-size:22px;color:var(--ui-muted);border:1px solid var(--ui-border);background:var(--ui-surface)}.ui-action-menu>summary::-webkit-details-marker{display:none}.ui-menu-items{display:grid;gap:4px;min-width:190px;padding:8px;background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--ui-radius-md);box-shadow:var(--ui-shadow-md);position:absolute;right:0;top:calc(100% + 5px);z-index:25}.ui-menu-items .btn,.ui-menu-items a,.ui-menu-items button{display:flex;width:100%;justify-content:flex-start;text-align:left;min-height:36px;border:0;background:transparent;border-radius:6px;padding:8px 10px;font-size:13px}.ui-menu-items .btn:hover,.ui-menu-items a:hover{background:var(--ui-surface-soft)}.ui-action-menu[open] .ui-menu-items{position:static;box-shadow:none;margin-top:5px}.ui-chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;background:var(--ui-primary-soft);border:1px solid transparent;border-radius:var(--ui-radius-sm);padding:5px 8px;color:var(--ui-primary);font-size:12px;overflow-wrap:anywhere}.ui-chip button{background:transparent;border:0;color:inherit;min-width:28px;min-height:28px;border-radius:6px}.ui-filter-chips{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.ui-tabs{display:flex;gap:6px;overflow:auto;border-bottom:1px solid var(--ui-border);margin-bottom:24px}.ui-tabs [role=tab]{white-space:nowrap;border:0;background:transparent;padding:12px 16px;border-bottom:2px solid transparent;font:inherit;color:var(--ui-muted)}.ui-tabs [aria-selected=true]{border-bottom-color:var(--ui-primary);color:var(--ui-primary);font-weight:650}
.empty-state,.analysis-empty,.bi-empty{padding:48px 24px;text-align:center;color:var(--ui-muted)}.empty-state h2,.analysis-empty h2{color:var(--ui-text)}.empty-state p{max-width:540px;margin:12px auto 20px}.ok,.error,.ui-alert,.analysis-help{padding:14px 16px;border-radius:var(--ui-radius-sm);margin:0 0 16px;font-size:13px;line-height:1.6}.ok{background:#eaf7ef;color:var(--ui-success);border:1px solid #c9e8d5}.error{background:#fff2f4;color:var(--ui-danger);border:1px solid #f1cdd5}.ui-alert,.analysis-help{background:var(--ui-primary-soft);color:var(--ui-text-secondary)}.toast-region{position:fixed;bottom:24px;right:24px;width:min(380px,calc(100vw - 32px));z-index:140;display:grid;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:12px;background:var(--ui-surface);border:1px solid var(--ui-border);border-left:4px solid var(--ui-success);padding:14px;border-radius:var(--ui-radius-md);box-shadow:var(--ui-shadow-md);pointer-events:auto;font-size:13px}.toast.error{color:var(--ui-danger);border-left-color:var(--ui-danger);margin:0}.toast.warning{border-left-color:var(--ui-warning)}.toast.info{border-left-color:var(--ui-info)}.toast button{margin-left:auto;background:transparent;border:0;min-width:36px;min-height:36px;font-size:20px;color:inherit}
dialog{background:var(--ui-surface);color:var(--ui-text);border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);box-shadow:var(--ui-shadow-md);padding:24px;width:min(600px,calc(100vw - 32px));max-height:85dvh;overflow:auto}dialog::backdrop{background:#102f4666;backdrop-filter:blur(2px)}.detail-heading,.sheet-heading,.selector-sheet-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.detail-heading h2,.sheet-heading h2,.sheet-heading h3,.selector-sheet-heading h2{margin:0;font-size:18px}.command-palette input{margin:16px 0}.command-results a{display:flex;justify-content:space-between;gap:16px;padding:14px 8px;border-bottom:1px solid var(--ui-border)}.command-results a:hover{background:var(--ui-primary-soft)}.confirm-dialog .actions{justify-content:flex-end;margin-top:24px}.chart-detail{width:min(1100px,calc(100vw - 32px))}.chart-detail .detail-chart{height:min(60dvh,600px);min-height:280px;position:relative}.chart-detail .table-wrap{max-height:240px;margin-top:20px}.chart-detail-button{margin-top:12px}.filter-backdrop,.navigation-backdrop{position:fixed;inset:0;background:#102f4666;z-index:60}.scroll-locked{overflow:hidden}.busy-indicator{position:fixed;inset:0 0 auto;z-index:150;height:3px;background:var(--ui-primary);animation:ui-pulse 1s infinite}.loading-skeleton,.ui-skeleton{height:180px;background:linear-gradient(100deg,var(--ui-surface-soft) 20%,#fff 50%,var(--ui-surface-soft) 80%);border-radius:var(--ui-radius-md);animation:ui-pulse 1.2s infinite}.ui-skeleton-line{height:14px;width:65%;margin:16px 0}.ui-skeleton-card{height:110px}.ui-skeleton-table{height:240px}.ui-skeleton-chart{height:300px}.upload-zone{padding:16px;border:1px dashed var(--ui-border-strong);border-radius:var(--ui-radius-sm);background:var(--ui-surface-soft);min-width:0}.upload-zone p{margin:10px 0 0;font-size:12px}.upload-zone.dragging{background:var(--ui-primary-soft);border-color:var(--ui-primary)}.import-steps{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:24px 0;counter-reset:steps}.import-steps li{counter-increment:steps;display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--ui-radius-sm);font-size:12px;color:var(--ui-muted);background:var(--ui-surface-soft);border:1px solid var(--ui-border)}.import-steps li::before{content:counter(steps);display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--ui-border);font-size:11px;font-weight:600}.import-steps [aria-current]{background:var(--ui-primary-soft);color:var(--ui-primary);border-color:var(--ui-primary)}.import-steps [aria-current]::before{background:var(--ui-primary);color:#fff}.period-selector{min-width:0}.period-selector>.smart-selector,.period-selector>select{max-width:400px}.period-presets{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.period-chip,.view-choice{background:transparent;color:var(--ui-muted);border-color:var(--ui-border);font-size:12px;padding:8px 10px;min-height:36px}.period-chip:hover,.view-choice:hover{background:var(--ui-primary-soft)}.view-choice[aria-pressed=true]{background:var(--ui-primary-soft);color:var(--ui-primary);border-color:transparent}.period-custom{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin-top:16px}.period-custom>div{flex:1;min-width:120px}.divider{height:1px;background:var(--ui-border);margin:20px 0}.permission-groups{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.permission-group{margin:0;padding:14px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);min-width:0}.permission-group legend{font-size:12px;font-weight:650;color:var(--ui-muted);padding:0 6px}.permission-group label{display:flex;gap:9px;align-items:center;font-weight:500;margin:0;padding:6px 0;font-size:13px}
.smart-selector{position:relative;min-width:0}.selector-trigger{width:100%;display:flex;align-items:center;gap:9px;background:var(--ui-surface);border:1px solid var(--ui-border-strong);border-radius:var(--ui-radius-sm);color:var(--ui-text);padding:10px 12px;min-height:42px;text-align:left;cursor:pointer}.selector-trigger .selector-name{flex:1;min-width:0;overflow-wrap:anywhere;font-size:14px}.selector-chevron{color:var(--ui-muted)}.selector-trigger[aria-expanded=true]{border-color:var(--ui-primary);box-shadow:0 0 0 3px var(--ui-primary-soft)}.selector-popover{position:absolute;top:calc(100% + 6px);left:0;z-index:95;background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--ui-radius-md);box-shadow:var(--ui-shadow-md);width:max(100%,280px);max-width:calc(100vw - 40px);padding:8px}.selector-popover.align-right{left:auto;right:0}.selector-search{width:100%;min-height:42px;margin-bottom:8px}.selector-options{max-height:280px;overflow:auto;overscroll-behavior:contain}.selector-option{display:flex;align-items:center;gap:10px;width:100%;border:0;border-radius:var(--ui-radius-sm);background:transparent;color:var(--ui-text);padding:10px;text-align:left;cursor:pointer;min-height:44px}.selector-option>span:nth-child(2){flex:1;min-width:0}.selector-option strong{font-size:13px;font-weight:500;overflow-wrap:anywhere}.selector-option small{display:block;font-size:11px;color:var(--ui-muted);margin-top:3px}.selector-option[aria-selected=true]{background:var(--ui-primary-soft);color:var(--ui-primary)}.selector-option.selector-active{outline:2px solid var(--ui-primary);outline-offset:-2px}.selector-option[aria-disabled=true]{opacity:.55;cursor:not-allowed}.selector-empty{padding:20px;font-size:13px;color:var(--ui-muted)}.selector-group{padding:12px 10px 6px;font-size:10px;color:var(--ui-muted);font-weight:700;letter-spacing:.08em;text-transform:uppercase}.field-type-icon{display:inline-flex;width:20px;height:20px;flex-shrink:0;align-items:center;justify-content:center;color:var(--ui-primary)}.field-type-icon svg{width:18px;height:18px}.selector-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.selector-sheet{padding:20px 16px calc(24px + env(safe-area-inset-bottom));margin:auto 0 0;width:100%;max-width:none;max-height:85dvh;border-radius:20px 20px 0 0;border:0}.selector-sheet .selector-popover{position:static;width:100%;max-width:none;box-shadow:none;border:0;padding:0}.selector-sheet .selector-options{max-height:55dvh}.selector-sheet-heading{position:sticky;top:-20px;background:var(--ui-surface);padding:12px 0;z-index:1}.selector-sheet .selector-search{font-size:16px}.selector-clear{background:transparent;color:var(--ui-primary);border:0;font-size:12px;min-height:32px;margin-top:4px}
/* Navegación y jerarquía compartida con los módulos anteriores. */
.sidebar{background:var(--ui-nav);color:#e6eff5;gap:24px}.sidebar .nav a{color:#c9d8e3;border-radius:var(--ui-radius-sm);font-size:13px;opacity:1;border-left:3px solid transparent}.sidebar .nav a:hover{background:#ffffff0c;color:#fff}.sidebar .nav a.active{background:#ffffff14;color:#fff;border-left-color:var(--brand-secondary,#76b6e2);box-shadow:none}.nav-heading,.sidebar .role,.brand-kicker{color:#b5c8d5}.nav-heading{font-size:9px;letter-spacing:.12em}.brand{display:flex;align-items:center;text-align:left;gap:12px;padding:0 6px}.brand-logo{width:46px;height:46px;margin:0;max-height:none}.brand-name{font-size:18px;letter-spacing:.09em;font-weight:750;color:#fff}.brand-kicker{font-size:8px;line-height:1.6;margin:3px 0 0}.side-bottom{font-size:12px}.side-bottom .btn{background:#ffffff0d;color:#e6eff5;border-color:#ffffff25;font-size:12px}.collapsed .brand{justify-content:center;padding:0}.collapsed .brand-logo{width:38px;height:38px}.collapsed .side-bottom .btn{font-size:10px}.header-brand strong{font-size:14px;font-weight:650;letter-spacing:.03em}.header-brand small,.desktop-user small{font-size:10px;color:var(--ui-muted)}.header-brand img{width:32px;height:32px}.desktop-user{font-size:12px}.user-avatar{background:var(--ui-primary-soft);color:var(--ui-primary);font-weight:650}.header-breadcrumbs,.breadcrumbs{font-size:12px;color:var(--ui-muted)}.app-header{margin-bottom:30px}.executive-context{background:transparent;border:0;border-bottom:1px solid var(--ui-border);border-radius:0;box-shadow:none;padding:0 0 24px;margin-bottom:24px}.source-summary small{font-size:12px}.attention-panel{border-left:3px solid var(--ui-warning);margin-bottom:24px;box-shadow:none}.attention-items{font-size:13px}.management-kpis{gap:18px;margin-bottom:24px}.kpi-heading h3{font-size:13px}.kpi-description,.kpi-links{font-size:12px}.kpi-links{color:var(--ui-primary)}.configured-kpis .metric,.management-kpis .metric{font-size:clamp(23px,1.9vw,34px)}.kpi-comparison strong{font-size:16px;color:var(--ui-text-secondary)}.kpi-comparison{margin-top:10px}.bi-canvas{border:0;background:transparent;padding:0}.bi-grid{gap:20px}.bi-widget-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.bi-widget-head h3{font-size:14px;color:var(--ui-text-secondary);margin:0}.bi-widget{padding:20px}.bi-kpi{font-size:clamp(21px,10cqw,38px)}.bi-panel h3{font-size:13px;letter-spacing:0;text-transform:none;color:var(--ui-text-secondary)}.bi-status{font-size:12px}.bi-title-input{font-size:var(--ui-title);font-weight:700;border:1px solid transparent;background:transparent;padding:0}.bi-title-input:focus{background:var(--ui-surface);padding:4px 8px}.bi-widget p{font-size:12px;color:var(--ui-muted)}.bi-filter-row input,.bi-filter-row select,.bi-config input,.bi-config select{font-size:13px}.future-tile{background:var(--ui-surface-soft);box-shadow:none}.recent-activity li{font-size:13px}.recent-activity time{font-size:11px;color:var(--ui-muted)}.activity-marker{color:var(--ui-success);background:#e9f6ee}.status-dot{background:var(--ui-success)}.analysis-config{gap:18px}.analysis-field strong{font-size:13px}.analysis-field small{font-size:11px;color:var(--ui-muted)}.analysis-field:hover{background:var(--ui-primary-soft)}.analysis-fields h2,.analysis-config h2{font-size:16px}.analysis-result-heading textarea{font-size:24px!important;font-weight:700;background:transparent;border:1px solid transparent;line-height:1.3;min-height:40px;padding:6px 0}.analysis-result-heading textarea:focus{background:var(--ui-surface);border-color:var(--ui-border)}.analysis-context{font-size:12px;color:var(--ui-muted)}.analysis-result-toolbar strong{font-size:12px;color:var(--ui-muted);font-weight:500}.analysis-help{font-size:12px}.analysis-suggestions a{background:var(--ui-surface);font-size:13px;border-radius:var(--ui-radius-md)}.analysis-big-value strong{font-size:clamp(32px,4vw,60px)}.analysis-filter-chips{display:flex;gap:6px;flex-wrap:wrap}.analysis-filter-chips>.ui-chip{padding:5px 8px}.analysis-suggestions summary{font-size:14px}.analysis-config small{font-size:12px;color:var(--ui-muted)}.analysis-source p{font-size:13px;color:var(--ui-muted)}
@keyframes ui-spin{to{transform:rotate(360deg)}}@keyframes ui-pulse{50%{opacity:.55}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:760px){:root{--ui-title:25px;--ui-section:18px;--ui-kpi:26px}.topbar,.ui-page-header{flex-direction:column;gap:16px;margin-bottom:24px}.ui-page-actions{width:100%;flex-shrink:1}.ui-page-actions .btn{flex:1}.form-grid{grid-template-columns:minmax(0,1fr);gap:18px}.btn,.icon-button,.sidebar-toggle,.period-chip,.view-choice,.selector-trigger{min-height:44px}input,select,textarea{font-size:16px;min-height:44px}.card,.bi-widget{padding:18px}.permission-groups{grid-template-columns:1fr}.period-presets{flex-wrap:nowrap;overflow:auto;padding-bottom:4px;max-width:100%}.period-chip{flex-shrink:0;white-space:nowrap}.toast-region{bottom:calc(var(--nav-height) + env(safe-area-inset-bottom) + 12px);right:16px}.section-title{flex-wrap:wrap;align-items:flex-start}.ui-table-tools input{width:100%}.ui-table-tools .ui-table-context{margin-left:0}.table-wrap .btn{min-height:40px}.ui-menu-items{width:100%;min-width:0}.ui-action-menu[open]{flex:1}.period-custom .btn{width:100%}.chart-detail{padding:16px}}
/* Login utiliza los mismos controles y tokens del producto. */
.login-layout{min-height:100dvh;display:grid;grid-template-columns:1fr 1fr}.login-brand{background:var(--ui-nav);color:white;display:flex;flex-direction:column;justify-content:space-between;padding:64px}.login-brand img{width:90px;height:90px;object-fit:contain;margin-bottom:24px}.login-brand h1{font-size:32px;letter-spacing:.1em}.login-brand .subtitle{font-size:12px;letter-spacing:.1em;color:#b5c8d5;margin-top:10px}.login-brand p{font-size:28px;line-height:1.5;max-width:380px;font-weight:600}.login-brand small{color:#b5c8d5;font-size:13px}.login-form-panel{display:grid;place-items:center;padding:48px}.login-form{width:100%;max-width:390px}.login-form h2{font-size:28px;margin:0}.login-form .intro{font-size:14px;color:var(--ui-muted);margin:10px 0 0}.login-form>.btn{width:100%}.login-footer{font-size:12px;color:var(--ui-muted);text-align:center}.card>summary{font-size:15px;font-weight:600;min-height:32px}.card>summary+form{margin-top:24px}.bi-config .selector-name{font-size:13px}.ui-filter-chips:empty{display:none}.analysis-result .ui-chip>button{display:grid;place-items:center}.analysis-result .ui-chip>span{background:transparent;padding:0}
@media(min-width:761px) and (max-width:1100px){.layout,.layout.collapsed{grid-template-columns:76px minmax(0,1fr)}.sidebar .brand-name,.sidebar .brand-kicker,.sidebar .nav-label,.sidebar .nav-heading,.sidebar .side-identity,.sidebar .profile-label{display:none}.sidebar .brand{justify-content:center;padding:0}.sidebar .brand-logo{width:38px;height:38px}.sidebar .nav a{justify-content:center;padding:12px 0}.sidebar-toggle{display:none}.content{padding:24px}.header-breadcrumbs{display:none}}
@media(max-width:760px){.brand{display:flex}.sidebar .brand-name{font-size:18px}.sidebar .brand-logo{width:46px;height:46px}.app-header{margin-bottom:24px}.header-brand img{width:28px;height:28px}.header-brand strong{font-size:13px}.header-brand small{font-size:9px;max-width:140px}.header-actions{gap:4px}.header-actions .icon-button{min-width:40px}.bottom-nav{background:var(--ui-surface)}.bottom-nav a,.bottom-nav button{color:var(--ui-muted)}.bottom-nav .active,.bottom-nav button[aria-expanded=true]{background:var(--ui-primary-soft);color:var(--ui-primary)}.configured-kpis .metric,.management-kpis .metric{font-size:clamp(20px,5.5vw,28px)}.configured-kpis .kpi-heading{align-items:flex-start;flex-direction:column}.bi-title-input{font-size:23px}.analysis-result-heading textarea{font-size:21px!important}.bi-widget-head{flex-wrap:wrap}.bi-grid{gap:16px}.bi-widget .widget-actions button{min-width:40px;min-height:40px}.filter-panel.sheet-open{background:var(--ui-surface);border-radius:var(--ui-radius-lg) var(--ui-radius-lg) 0 0;box-shadow:var(--ui-shadow-md)}.filter-panel .sheet-heading{background:var(--ui-surface)}.responsive-cards tr{background:var(--ui-surface);border-radius:var(--ui-radius-md);box-shadow:var(--ui-shadow-sm)}.responsive-cards td[data-label]::before{font-size:11px;letter-spacing:0;text-transform:none;color:var(--ui-muted)}.responsive-cards td:first-child strong{font-size:16px}.analysis-result-toolbar{margin-top:12px}.login-layout{display:block}.login-brand{padding:24px;gap:12px}.login-brand>div:first-child{display:grid;grid-template-columns:56px 1fr;column-gap:12px;align-items:center}.login-brand img{width:56px;height:56px;grid-row:span 2;margin:0}.login-brand h1{font-size:22px}.login-brand .subtitle{margin:0;font-size:10px}.login-brand p{font-size:16px;max-width:none;margin:10px 0}.login-brand small{display:none}.login-form-panel{padding:32px 24px}.login-form h2{font-size:25px}.login-layout+.toast-region{bottom:16px}.analysis-config .cube-filter{grid-template-columns:1fr}.analysis-context{font-size:11px}.analysis-source p{font-size:12px}}
@media(max-width:390px){.header-brand small{max-width:112px}.header-actions{gap:2px}.header-actions .icon-button{min-width:36px}.header-brand{gap:6px}}
/* Visibility stays explicit despite shared button display rules. */
.status-dot{border-radius:50%}.activity-marker{border-radius:50%}.kpi-heading{min-height:34px}.ui-menu-items button{font-weight:500}.ui-page-header .title{flex:1}.ui-page-header .ui-page-actions{max-width:55%}.ui-table-tools .btn{min-height:36px}.schema-table select{min-width:125px}.schema-table input{min-width:160px}.schema-format{white-space:nowrap;font-size:12px;color:var(--ui-muted)}.schema-quality{font-size:11px;color:var(--ui-muted)}
@media(min-width:761px){.mobile-only,.sheet-heading.mobile-only{display:none!important}}
@media(max-width:760px){.sidebar-toggle{display:none!important}.mobile-only{display:inline-flex}.sheet-heading.mobile-only{display:flex}.ui-page-header .ui-page-actions{max-width:100%}.ui-page-header .ui-page-actions .btn{flex:1}.ui-page-header .title{width:100%}.ui-table-tools .btn{min-height:44px}.kpi-heading{min-height:0}}

.schema-table td:first-child{min-width:120px;white-space:nowrap}.schema-table td:last-child .btn{white-space:nowrap}
@media(max-width:760px){.management-kpis:has(.ui-kpi-long){grid-template-columns:minmax(0,1fr)}.management-kpis:has(.ui-kpi-long) .kpi-heading{flex-direction:row;align-items:flex-start}.management-kpis:has(.ui-kpi-long) .metric{font-size:28px}}

.error-layout{min-height:100dvh;display:grid;place-items:center;padding:24px}.error-card{width:min(520px,100%);text-align:center;padding:32px}.error-card .actions{justify-content:center}.error-code{font-size:48px;color:var(--ui-primary);margin:24px 0}.error-logo{width:72px;height:72px;object-fit:contain;margin-bottom:16px}

/* Fase 2: el resultado ocupa el lienzo; configuración accesible en un único modal. */
.dashboard-shell .bi-workspace{display:block}.dashboard-shell .bi-canvas{border:0;padding:0}.visualization-dialog{width:min(740px,calc(100vw - 32px));max-height:90dvh}.visualization-dialog .bi-config{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.visualization-dialog .bi-config>div:first-child,.visualization-dialog .bi-config>.actions,.visualization-dialog .field-error,.visualization-dialog .widget-preview{grid-column:1/-1}.visualization-dialog .bi-config [hidden]{display:none!important}.visualization-dialog .widget-preview{max-height:320px;overflow:auto;padding:16px;background:var(--ui-surface-soft);border-radius:var(--ui-radius-md)}.visualization-dialog .actions{position:sticky;bottom:-24px;background:var(--ui-surface);padding:16px 0;margin:0;z-index:2}.visualization-dialog .smart-selector{min-width:0}.confirm-dialog.ui-warning h2{color:var(--ui-warning)}
@media(max-width:760px){.visualization-dialog{width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;border-radius:0;padding:20px 16px}.visualization-dialog .bi-config{grid-template-columns:1fr}.visualization-dialog .actions{bottom:-20px;flex-wrap:wrap}.visualization-dialog .actions .btn{flex:1;min-width:130px}}

.otp-code{font-size:26px!important;letter-spacing:.45em;text-align:center;font-variant-numeric:tabular-nums}.login-form #otp-expiry{font-size:14px;color:var(--ui-muted)}

.company-search{align-items:end;margin-bottom:24px}.company-search>div:first-child{flex:1;min-width:200px}.company-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.company-identity{display:flex;gap:14px;align-items:center}.company-identity h2{margin:0 0 6px}.company-identity img,.company-avatar{width:52px;height:52px;border-radius:12px;object-fit:contain}.company-avatar{display:grid;place-items:center;background:var(--ui-primary-soft);color:var(--ui-primary);font-size:24px}.company-counts{display:flex;gap:24px;flex-wrap:wrap}.company-counts dt{font-size:12px;color:var(--ui-muted)}.company-counts dd{margin:4px 0;font-size:22px;font-weight:650}.company-card .actions{margin-top:18px}.company-tabs{display:flex;gap:12px;overflow-x:auto;margin:0 0 24px;white-space:nowrap}.company-tabs a{padding:10px 14px;border-radius:8px}.company-tabs a[aria-current]{background:var(--ui-primary-soft);color:var(--ui-primary)}.company-summary{display:grid;grid-template-columns:1.2fr 1fr;gap:24px}.company-form{max-width:720px}.company-tabs+section.stack .btn{align-self:start}
@media(max-width:760px){.company-grid,.company-summary{grid-template-columns:1fr}.company-search>div{width:100%}.company-search>.btn{width:100%}.company-tabs{gap:4px}.company-counts{gap:20px}.company-form{padding:18px}.company-tabs+section.stack .btn{align-self:stretch}}

.kpi-sparkline{width:120px;height:34px;color:var(--ui-primary);margin:4px 0}.kpi-heading a{color:inherit}.trend-positive strong{color:var(--ui-success)}.trend-negative strong{color:var(--ui-danger)}.trend-neutral strong{color:var(--ui-muted)}.kpi-goal{display:grid;gap:4px;margin-top:8px}.kpi-goal progress{width:100%;height:6px;accent-color:var(--ui-primary)}

.formula-workspace{display:grid;grid-template-columns:minmax(200px,280px) minmax(0,1fr);gap:24px}.formula-fields{display:grid;gap:8px;margin-top:16px;max-height:440px;overflow:auto}.formula-field{display:grid;gap:4px;text-align:left;padding:12px;background:var(--ui-surface-soft);border:0;color:var(--ui-text);border-radius:8px;cursor:pointer}.formula-field small{color:var(--ui-muted)}.formula-field:disabled{opacity:.6;cursor:not-allowed}.formula-operators{display:flex;gap:8px;flex-wrap:wrap}.formula-operators button{min-width:44px}#formula-expression{font-family:ui-monospace,monospace;font-size:16px}#formula-preview-result{margin-top:24px}.formula-workspace>section,.formula-workspace>aside{min-width:0}@media(max-width:760px){.formula-workspace{display:flex;flex-direction:column;gap:16px}.formula-fields{max-height:200px;grid-template-columns:repeat(2,minmax(0,1fr))}.formula-field{overflow-wrap:anywhere}.formula-workspace .actions .btn{width:100%}}

.home-quick-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:24px}.home-chart-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.home-support-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:24px}.home-issue{display:flex;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--ui-border)}.home-support-grid .recent-activity li{display:grid;gap:5px}.home-support-grid .recent-activity small{overflow-wrap:anywhere;color:var(--ui-muted)}.home-currency{margin-top:24px}.home-currency summary{padding:4px;font-weight:600}
@media(max-width:1100px){.home-chart-grid{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.home-chart-grid,.home-support-grid{grid-template-columns:1fr}.home-quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.home-quick-actions .btn{font-size:12px;padding:10px}.configured-kpis.kpi-scroll{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;padding:4px 0 12px}.configured-kpis.kpi-scroll>.kpi-card{flex:0 0 min(310px,calc(100vw - 56px));scroll-snap-align:start}.configured-kpis .kpi-card{padding:16px}.configured-kpis .kpi-description{display:none}.configured-kpis .kpi-comparison>small:nth-of-type(2),.configured-kpis .kpi-comparison>small:nth-of-type(3){display:none}.configured-kpis .kpi-links{margin-top:12px;gap:8px}.configured-kpis .kpi-links>a{font-size:12px}.configured-kpis .metric{font-size:30px!important;line-height:1.2}.configured-kpis .kpi-heading{gap:8px;align-items:start}.configured-kpis .kpi-heading h3{font-size:15px}.configured-kpis .kpi-sparkline{height:24px}.bottom-nav{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:1fr}}

@media(max-width:760px){body:has(.home-period-trigger) .ui-page-header{margin-bottom:12px}body:has(.home-period-trigger) .ui-page-actions{display:none}.home-period-trigger{margin-bottom:12px;max-width:100%}.home-period{background:var(--ui-surface)}}

@media(max-width:760px){.configured-kpis:not(.kpi-scroll){grid-template-columns:minmax(0,1fr)}.configured-kpis:not(.kpi-scroll)>.kpi-card{min-width:0;width:100%}}

/* Empresas 2.3: datos administrativos y acciones touch sin comprimir tablas. */
.company-detail-identity{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-bottom:20px}.company-detail-identity img{width:56px;height:56px;object-fit:contain;border-radius:12px}.company-fields{border:0;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:18px}.company-fields legend{font-weight:650;margin-bottom:16px}.company-resource-list{display:grid;gap:16px}.company-resource-list article{display:flex;flex-direction:column;gap:10px;padding:16px;border-bottom:1px solid var(--ui-border)}.company-tabs a{min-height:44px}.company-card{min-width:0;overflow-wrap:anywhere}.company-card .actions,.company-search{flex-wrap:wrap}.company-kpis .configured-kpis{margin-bottom:24px}.company-detail-identity .muted{flex-basis:100%}.company-fields input[type=file]{max-width:100%}
@media(max-width:760px){.company-fields{grid-template-columns:1fr}.company-card .actions>.btn,.company-card .actions>form{flex:1 1 120px}.company-card .actions>form .btn{width:100%}.company-tabs{scroll-snap-type:x proximity}.company-tabs a{scroll-snap-align:start}.company-search>div:first-child{min-width:0}.company-resource-list .metric{font-size:28px;overflow-wrap:anywhere}}

/* Empresas 2.3 */
.company-detail-identity{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-bottom:20px}.company-detail-identity img{width:56px;height:56px;object-fit:contain;border-radius:12px}.company-fields{border:0;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:18px}.company-fields legend{font-weight:650;margin-bottom:16px}.company-resource-list{display:grid;gap:16px}.company-resource-list article{display:flex;flex-direction:column;gap:10px;padding:16px;border-bottom:1px solid var(--ui-border)}.company-tabs a{min-height:44px}.company-card{min-width:0;overflow-wrap:anywhere}.company-card .actions,.company-search{flex-wrap:wrap}.company-kpis .configured-kpis{margin-bottom:24px}.company-detail-identity .muted{flex-basis:100%}
@media(max-width:760px){.company-fields{grid-template-columns:1fr}.company-card .actions>.btn,.company-card .actions>form{flex:1 1 120px}.company-card .actions>form .btn{width:100%}.company-tabs{scroll-snap-type:x proximity}.company-tabs a{scroll-snap-align:start}.company-search>div:first-child{min-width:0}.company-resource-list .metric{font-size:28px;overflow-wrap:anywhere}}

/* Phase 2.4: progressive indicator configuration and compact result preview. */
.indicator-workspace{display:grid;grid-template-columns:minmax(0,2fr) minmax(240px,1fr);gap:24px;align-items:start}
.indicator-workspace>*{min-width:0}.indicator-preview{position:sticky;top:92px;overflow-wrap:anywhere}
.indicator-workspace .form-section>summary{cursor:pointer;font-weight:650;min-height:44px;display:flex;align-items:center}
.indicator-workspace .form-section label{margin-top:12px}.kpi-context{font-size:.8rem;color:var(--ui-text-muted);margin:8px 0}
.state-positivo{color:var(--ui-success)}.state-neutral{color:var(--ui-text-muted)}
#formula-template-fields{display:grid;gap:8px;margin:12px 0}.formula-field small{display:block}
@media(max-width:768px){.indicator-workspace{grid-template-columns:1fr}.indicator-preview{position:static;grid-row:1}.indicator-workspace .form-grid{grid-template-columns:1fr}.indicator-workspace .cube-filter{grid-template-columns:1fr}.indicator-workspace .cube-filter>*{min-width:0}.kpi-card .metric{font-size:1.7rem}.kpi-card .kpi-comparison{gap:4px}.kpi-card .kpi-description:empty{display:none}.kpi-card .kpi-sparkline{height:28px}}
