:root{--bg:#f3f6f9;--panel:#fff;--ink:#17202b;--muted:#667385;--line:#dfe5eb;--nav:#081d33;--accent:#ef7d00;--blue:#006cc5;--success:#0b8a57;--danger:#b42318}*{box-sizing:border-box}body{margin:0;font-family:var(--font-body,Inter),Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--ink)}a{color:var(--blue);text-decoration:none}.topbar{height:68px;background:var(--nav);color:#fff;display:flex;align-items:center;padding:0 32px;gap:36px;box-shadow:0 2px 12px #0002}.brand{font-size:23px;font-weight:800;color:#fff;letter-spacing:-.5px}.brand span,.login-brand span{color:var(--accent)}.topbar nav{display:flex;gap:22px;flex:1}.topbar nav a{color:#dfe8f1;font-weight:600}.userbox{display:flex;align-items:center;gap:18px;font-size:14px}.userbox a{color:#fff}.page{padding:32px;max-width:1500px;margin:auto}.login-shell{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#071b30,#0f416c 60%,#ef7d00)}.login-card{width:min(420px,92vw);background:#fff;padding:42px;border-radius:18px;box-shadow:0 28px 80px #0005}.login-brand{font-size:28px;font-weight:900;margin-bottom:28px}.login-card h1{margin:0 0 6px}.muted{color:var(--muted)}.tiny{font-size:12px;color:#8692a2;margin-top:24px}.stack{display:grid;gap:16px;margin-top:24px}label{display:grid;gap:7px;font-size:13px;font-weight:700;color:#465467}input,select,textarea{width:100%;padding:11px 12px;border:1px solid #ccd5de;border-radius:8px;background:#fff;font:inherit;color:var(--ink)}button,.button{border:0;border-radius:8px;padding:11px 16px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.primary{background:var(--blue);color:#fff}.secondary{background:#eaf0f5;color:#1d3449}.alert{padding:12px 14px;border-radius:8px;margin:16px 0}.error{background:#fff0ee;color:var(--danger);border:1px solid #ffd1cc}.page-heading,.report-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:28px}.page-heading h1,.report-heading h1{margin:3px 0 0;font-size:30px}.eyebrow{font-size:11px;letter-spacing:1.6px;color:var(--blue);font-weight:900;margin:0}.client-section{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:24px;margin-bottom:24px}.client-heading{display:flex;align-items:center;gap:16px;margin-bottom:18px}.client-heading img{max-height:46px;max-width:180px;object-fit:contain}.client-heading h2,.client-heading p{margin:0}.client-heading p{color:var(--muted);font-size:12px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.report-card{display:flex;gap:16px;padding:20px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);transition:.15s}.report-card:hover{transform:translateY(-2px);box-shadow:0 10px 24px #16344c12;border-color:#b9cbd9}.report-card h3{margin:0 0 6px}.report-card p{margin:0 0 13px;color:var(--muted);font-size:14px}.report-card span{font-weight:700;color:var(--blue);font-size:13px}.report-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:10px;background:#eaf4fd;color:var(--blue);font-size:22px}.empty{padding:40px;background:#fff;border:1px dashed #bdc9d4;border-radius:12px;text-align:center;color:var(--muted)}.client-inline{display:flex;align-items:center;gap:16px}.client-inline img{max-width:180px;max-height:52px}.client-inline p,.client-inline h1{margin:0}.embed-wrap{height:calc(100vh - 150px);min-height:620px;background:#fff;border-radius:12px;overflow:hidden;border:1px solid var(--line)}.embed-wrap iframe{width:100%;height:100%;border:0}.metric-grid{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:16px;margin-bottom:22px}.metric{background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px}.metric strong{display:block;font-size:30px}.metric span{color:var(--muted);font-size:13px}.admin-cards{max-width:none;grid-template-columns:repeat(3,minmax(0,1fr))}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px 15px;border-bottom:1px solid #edf1f4;font-size:14px}th{background:#f7f9fb;color:#526172;font-size:12px;text-transform:uppercase;letter-spacing:.4px}.pill{display:inline-block;padding:4px 8px;border-radius:99px;font-size:12px;font-weight:700}.pill.ok{background:#e6f7ef;color:var(--success)}.pill.off{background:#f1f3f5;color:#6d7784}.mono{font-family:Consolas,monospace;font-size:12px}.form-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:24px;max-width:900px}.grid-form{display:grid;grid-template-columns:1fr 1fr;gap:18px}.span2{grid-column:1/-1}.form-actions{display:flex;gap:10px;margin-top:8px}fieldset{border:1px solid var(--line);border-radius:8px;padding:14px}legend{font-weight:700;color:#465467}.check{display:flex;align-items:center;gap:8px;margin:7px 0}.check input{width:auto}.tabs{display:flex;gap:8px;margin:0 0 14px}.tabs a{padding:8px 12px;background:#eaf0f5;border-radius:7px;color:#42566a}.tabs a.active{background:var(--blue);color:#fff}.permission-list{display:grid;gap:2px}.permission-row{display:grid;grid-template-columns:1fr 220px;align-items:center;gap:20px;padding:13px 0;border-bottom:1px solid #edf1f4}.permission-row small{display:block;color:var(--muted);margin-top:4px}@media(max-width:760px){.topbar{padding:0 16px}.topbar nav{display:none}.page{padding:18px}.grid-form{grid-template-columns:1fr}.span2{grid-column:auto}.metric-grid{grid-template-columns:1fr}.permission-row{grid-template-columns:1fr}.embed-wrap{height:78vh;min-height:500px}}

/* 2.7.25 - Portales por cliente + administracion Jackpots Systems */
:root{--brand-primary:#081d33;--brand-secondary:#006cc5;--brand-accent:#ef7d00}
.topbar{background:var(--brand-primary)}
.topbar nav a:hover{color:#fff}
.eyebrow{color:var(--brand-secondary)}
.primary,.brand-button{background:var(--brand-secondary);color:#fff}
.report-card span{color:var(--brand-secondary)}
.report-icon{background:color-mix(in srgb,var(--brand-secondary) 10%,white);color:var(--brand-secondary)}
.tabs a.active{background:var(--brand-secondary)}
.brand-image{display:flex;align-items:center;min-width:150px;max-width:230px;height:46px}
.brand-image img{display:block;max-height:40px;max-width:220px;object-fit:contain}
.brand-image span{font-size:20px;font-weight:800;color:#fff}
.mode-client .topbar{border-bottom:3px solid var(--brand-accent)}
.login-shell{display:block;padding:0;background:#eef2f6}
.login-layout{min-height:100vh;display:grid;grid-template-columns:minmax(320px,46%) 1fr;background:#fff}
.login-brand-panel{position:relative;display:flex;flex-direction:column;justify-content:space-between;padding:64px;background:var(--login-bg-color,var(--brand-primary));color:#fff;overflow:hidden}
.login-brand-panel:after{display:none}
.admin-brand-panel{background:var(--login-bg-color,var(--brand-primary))}
.client-logo-box{position:relative;z-index:1;width:min(360px,90%);min-height:112px;padding:24px;border-radius:18px;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 18px 45px #0002}
.client-logo-box img{max-height:82px;max-width:100%;object-fit:contain}
.client-name-fallback{font-size:30px;font-weight:900;color:var(--brand-primary);text-align:center}
.login-brand-copy{position:relative;z-index:1;max-width:520px;margin-top:48px}
.login-brand-copy h1{font-size:42px;line-height:1.05;margin:8px 0 12px}
.login-brand-copy p{font-size:17px;opacity:.9}.eyebrow.light{color:#fff;opacity:.75;font-size:11px}
.login-form-panel{display:grid;place-items:center;padding:48px;background:#fff}
.login-card-flat{width:min(440px,100%);box-shadow:none;border:0;padding:24px}
.login-card-flat h2{font-size:30px;margin:0 0 8px}
.login-card-flat input{padding:13px 14px;border-radius:9px}
.login-card-flat button{margin-top:4px;padding:13px 16px}
.powered-login{margin-top:38px;padding-top:22px;border-top:1px solid var(--line);display:flex;align-items:center;gap:12px;color:var(--muted);font-size:12px}
.powered-login img{max-width:130px;max-height:34px;object-fit:contain}
.powered-login strong{font-size:15px;color:var(--ink)}
.powered-footer{max-width:1500px;margin:0 auto 24px;padding:0 32px;display:flex;justify-content:flex-end;align-items:center;gap:9px;color:var(--muted);font-size:11px}
.powered-footer img{max-height:24px;max-width:110px;object-fit:contain}
.client-page-heading{align-items:center}.page-client-logo{max-height:68px;max-width:240px;object-fit:contain}.client-section-flat{padding:0;background:transparent;border:0}
.table-logo{max-height:36px;max-width:150px;object-fit:contain}.actions-cell{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.actions-cell .button{font-size:12px;padding:8px 10px}
.branding-preview{border:1px solid var(--line);border-radius:10px;min-height:100px;display:flex;align-items:center;gap:20px;padding:20px;overflow:hidden;position:relative}.branding-preview .preview-strip{position:absolute;left:0;top:0;bottom:0;width:9px;background:linear-gradient(var(--preview-primary),var(--preview-secondary),var(--preview-accent))}.branding-preview img{max-height:52px;max-width:190px;object-fit:contain}.branding-preview strong{font-size:20px}
@media(max-width:900px){.login-layout{grid-template-columns:1fr}.login-brand-panel{min-height:300px;padding:36px}.login-brand-copy{margin-top:30px}.login-brand-copy h1{font-size:34px}.client-logo-box{min-height:90px;width:min(300px,90%)}.login-form-panel{padding:28px}.powered-footer{padding:0 18px}.brand-image{min-width:90px;max-width:150px}.brand-image img{max-width:145px}}

/* 2.7.26 - Tipografia por cliente, fondo login y BI embebido */
h1,h2,h3,.brand,.client-name-fallback,.branding-preview strong{font-family:var(--font-title,Montserrat),sans-serif}
.eyebrow,button,.button,.topbar nav,.report-card span,.pill{font-family:var(--font-accent,Inter),sans-serif}
.login-brand-panel:before{content:"";position:absolute;inset:0;background-image:var(--login-bg-image,none);background-size:cover;background-position:center;background-repeat:no-repeat;opacity:var(--login-bg-opacity,.35);z-index:0;pointer-events:none}
.login-brand-panel:after{z-index:0}.client-logo-box,.login-brand-copy{z-index:1}
.branding-preview strong{display:block}.branding-preview small{display:block;margin-top:5px;color:var(--muted);font-family:var(--font-body,Inter),sans-serif}.branding-help{align-self:end;padding-bottom:10px;font-size:12px}
.embed-status{margin:-12px 0 10px;padding:8px 12px;border-radius:8px;background:#eef3f7;color:var(--muted);font-size:12px}.embed-status.ok{background:#e6f7ef;color:var(--success)}.embed-status.error{background:#fff0ee;color:var(--danger)}
.embed-wrap{position:relative}.embed-wrap>iframe{width:100%;height:100%;border:0}

/* 2.7.27 - administracion consolidada y permisos por usuario */
.wide-form{max-width:1180px}.section-title{font-size:18px;margin:8px 0 0;padding-top:12px;border-top:1px solid var(--line)}.section-title:first-child{border-top:0;padding-top:0}.inline-form{display:inline-flex;margin:0}.danger-soft{background:#fff0ee;color:var(--danger)}.success-soft{background:#e6f7ef;color:var(--success)}.info-box{padding:12px 14px;border-radius:8px;background:#eef6fc;color:#365267;border:1px solid #d9e9f5}.check-grid{display:flex;gap:20px;flex-wrap:wrap}.check-boxed{border:1px solid var(--line);border-radius:8px;padding:11px 12px;align-self:end}.editor-section{padding:4px 0 22px;border-bottom:1px solid var(--line);margin-bottom:22px}.editor-section:last-of-type{border-bottom:0}.editor-section h2{margin:0 0 8px;font-size:21px}.client-permission-card{border:1px solid var(--line);border-radius:10px;margin:12px 0;background:#fbfcfd}.client-permission-card summary{padding:14px 16px;cursor:pointer;list-style:none}.client-permission-card summary::-webkit-details-marker{display:none}.summary-check{display:inline-flex;margin:0;cursor:pointer}.client-permission-body{padding:0 16px 18px}.permission-columns{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:14px;margin-top:16px}.strong-check{font-weight:800;border-bottom:1px solid #edf1f4;padding-bottom:8px}.subchecks{max-height:210px;overflow:auto;padding-top:4px}.disabled-subchecks{opacity:.42}.th-filter{margin-top:7px;padding:6px 7px;font-size:11px;min-width:105px;text-transform:none;letter-spacing:0}.permission-summary{max-width:520px;white-space:normal;line-height:1.35}.actions-cell form button{font-size:12px;padding:8px 10px}.readonly-note{font-size:12px;color:var(--muted)}
@media(max-width:1000px){.permission-columns{grid-template-columns:1fr}.wide-form{max-width:none}}
.button.disabled,button.disabled{opacity:.48;cursor:not-allowed;pointer-events:none;filter:grayscale(.15)}


/* 3.1.2 - Administrador de empresa + viewport login + BI embebido full width */
html,body{width:100%;min-height:100%;overflow-x:hidden}
.login-shell{width:100vw!important;max-width:none!important;margin:0!important;padding:0!important;min-height:100vh;min-height:100dvh}
.login-layout{width:100vw!important;max-width:none!important;margin:0!important;min-height:100vh;min-height:100dvh}
.company-admin-callout{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:18px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px 22px;margin-bottom:24px}
.company-admin-callout h2{margin:2px 0 5px;font-size:20px}.company-admin-callout p{margin:0}.company-admin-icon{width:48px;height:48px}.company-admin-callout .button{white-space:nowrap}
@media(max-width:760px){.company-admin-callout{grid-template-columns:auto 1fr}.company-admin-callout .button{grid-column:1/-1;width:100%}}


/* 3.1.3 - Previsión E-S mensual */
.admin-option-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:24px}.admin-option-card{display:flex;gap:18px;padding:24px;background:#fff;border:1px solid var(--line);border-radius:14px;color:var(--ink);transition:.15s}.admin-option-card:hover{transform:translateY(-2px);box-shadow:0 10px 24px #16344c12;border-color:#b9cbd9}.admin-option-card h2{margin:0 0 7px}.admin-option-card p{margin:0 0 10px;color:var(--muted)}.admin-option-card strong{display:block;margin-bottom:10px}.admin-option-card span{font-weight:800;color:var(--brand-secondary)}.forecast-year-list{display:flex;gap:10px;flex-wrap:wrap}.forecast-year-list a{display:grid;gap:3px;min-width:190px;padding:12px 14px;border:1px solid var(--line);border-radius:9px;background:#fbfcfd}.forecast-year-list span{font-size:12px;color:var(--muted)}.forecast-mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px}.forecast-card{max-width:none}.forecast-card h2{margin:4px 0 8px}.compact-stack{gap:12px}.forecast-quick{display:flex;gap:8px;flex-wrap:wrap}.forecast-quick button{padding:7px 11px;background:#eaf0f5;color:#344b60}.forecast-download{margin:10px 0 4px}.success-alert{background:#e6f7ef;color:var(--success);border:1px solid #bce8d2}.forecast-heading{margin-bottom:16px;align-items:end}.forecast-heading h2{font-size:28px;margin:2px 0}.forecast-heading form{min-width:150px}.forecast-table-wrap{max-height:520px}.forecast-table{min-width:1250px}.forecast-table th:first-child,.forecast-table td:first-child{position:sticky;left:0;background:#fff;z-index:1;min-width:220px}.forecast-table th:first-child{background:#f7f9fb;z-index:2}.forecast-table td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.forecast-status{padding:22px}
@media(max-width:900px){.admin-option-grid,.forecast-mode-grid{grid-template-columns:1fr}.forecast-heading{align-items:start;flex-direction:column}.forecast-heading form{width:100%}}
.year-jump{display:flex;align-items:end;gap:8px}.year-jump label{min-width:120px}.year-jump .button{height:40px}

/* Jackpot BI 3.1.6 - Proyeccion Automatica IA hasta diciembre */
.planning-mode-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(320px,1fr);gap:20px;margin-bottom:24px;align-items:start}.objective-group{max-width:none;padding:22px}.objective-group-heading{margin-bottom:18px}.objective-group-heading h2{margin:4px 0 8px}.objective-options-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.objective-option{padding:20px;border:1px solid var(--line);border-radius:12px;background:#fbfcfd}.objective-option h3{margin:4px 0 8px;font-size:20px}.projection-card{border-top:4px solid var(--brand-secondary);height:100%}.projection-rules{display:grid;gap:7px;padding:12px 14px;margin:12px 0;background:#f5f8fb;border:1px solid var(--line);border-radius:9px;color:var(--muted);font-size:13px}.projection-rules strong{color:var(--ink)}.projection-status{margin-top:24px}.projection-table{min-width:1100px}.projection-base{display:block;margin-top:4px;color:var(--muted);font-size:11px;font-weight:500}.planning-bi-note{display:flex;gap:12px;align-items:center;margin-top:18px;padding:12px 16px;border:1px solid var(--line);border-radius:10px;background:#f8fafc;color:var(--muted);font-size:13px}.planning-bi-note strong{color:var(--ink)}.planning-bi-note code{color:var(--brand-secondary);font-weight:700}
@media(max-width:1180px){.planning-mode-grid{grid-template-columns:1fr}.objective-options-grid{grid-template-columns:1fr 1fr}.projection-card{height:auto}}@media(max-width:760px){.objective-options-grid{grid-template-columns:1fr}.objective-group{padding:18px}.planning-bi-note{align-items:flex-start;flex-direction:column}}


/* Jackpot BI 3.2.2 - frontend responsive + iconos multicolor */
.alert.success{background:#e6f7ef;color:var(--success);border:1px solid #bce8d2}
.bulk-report-assignment{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.bulk-report-assignment p{margin:0;max-width:620px}
.bulk-report-assignment button:disabled{opacity:.42;cursor:not-allowed;filter:grayscale(.25)}
.platform-card-icon{width:64px!important;height:64px!important;min-width:64px;border-radius:16px!important;background:linear-gradient(145deg,#fff,#eef6fc)!important;border:1px solid #dce9f3;box-shadow:0 8px 18px #0b355512}
.platform-card-icon svg{width:46px;height:46px;overflow:visible}
.platform-card-icon .ico-blue{fill:#0b76d1}.platform-card-icon .ico-blue-soft{fill:#7fc5f3}.platform-card-icon .ico-orange{fill:#f5a623}.platform-card-icon .ico-green{fill:#67b96f}.platform-card-icon .ico-red{fill:#e84455}.platform-card-icon .ico-paper{fill:#edf3f8;stroke:#9eb7c9;stroke-width:2}.platform-card-icon .ico-line{fill:none;stroke:#294d70;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.admin-cards .report-card{align-items:center;min-height:126px}.admin-cards .report-card h3{font-size:20px}
.mobile-nav-toggle{display:none;border:1px solid #ffffff35;background:#ffffff12;color:#fff;width:42px;height:42px;padding:0;font-size:22px;border-radius:9px}

@media(max-width:1100px){
  .page{max-width:none;width:100%;padding:24px 20px}
  .cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .admin-cards{max-width:none;grid-template-columns:repeat(2,minmax(0,1fr))}
  .page-heading,.report-heading{gap:16px}
}

@media(max-width:768px){
  html,body{width:100%;max-width:100%;overflow-x:hidden}
  .topbar{height:auto;min-height:64px;padding:9px 12px;gap:10px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center}
  .brand-image{min-width:0!important;max-width:145px!important;height:44px}.brand-image img{max-width:140px!important;max-height:38px!important}
  .mobile-nav-toggle{display:inline-flex;align-items:center;justify-content:center;grid-column:2}
  .userbox{grid-column:3;gap:10px;font-size:12px;white-space:nowrap}.userbox strong{max-width:90px;overflow:hidden;text-overflow:ellipsis}
  .topbar nav{display:none!important;grid-column:1/-1;order:4;width:100%;flex-direction:column;gap:0;padding:7px 0 2px;border-top:1px solid #ffffff22}
  .topbar.nav-open nav{display:flex!important}.topbar nav a{padding:11px 8px;border-bottom:1px solid #ffffff14}
  .page{padding:16px 12px!important;max-width:100%!important}
  .page-heading,.report-heading{align-items:flex-start;flex-direction:column;margin-bottom:18px}.page-heading h1,.report-heading h1{font-size:25px;line-height:1.12;overflow-wrap:anywhere}
  .client-page-heading{position:relative}.page-client-logo{max-height:50px;max-width:160px;align-self:flex-start}
  .cards{grid-template-columns:1fr!important;gap:12px}.report-card{padding:16px;gap:13px}.report-card h3{font-size:18px}.report-card p{font-size:13px}
  .report-icon{width:50px;height:50px;min-width:50px;font-size:24px}.platform-card-icon{width:58px!important;height:58px!important;min-width:58px}.platform-card-icon svg{width:42px;height:42px}
  .company-admin-callout{grid-template-columns:1fr!important;padding:16px}.company-admin-callout .report-icon{margin-bottom:0}.company-admin-callout .button{grid-column:auto!important;width:100%}
  .admin-option-grid,.metric-grid,.forecast-mode-grid,.planning-mode-grid,.objective-options-grid{grid-template-columns:1fr!important}.admin-option-card{padding:18px}
  .client-section{padding:16px;margin-bottom:16px}.form-card,.wide-form{width:100%;max-width:none;padding:16px}.grid-form{grid-template-columns:1fr}.span2{grid-column:auto}.form-actions{flex-direction:column}.form-actions>*{width:100%}
  .permission-columns{grid-template-columns:1fr}.permission-row{grid-template-columns:1fr}.bulk-report-assignment{align-items:stretch}.bulk-report-assignment button{width:100%}
  .table-wrap{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}table{min-width:720px}th,td{padding:10px 11px;font-size:12px}
  .forecast-table,.projection-table{min-width:1050px}.forecast-table th:first-child,.forecast-table td:first-child{min-width:150px}
  .powered-footer{max-width:none;padding:0 14px;margin:14px auto 18px}.powered-footer img{max-width:92px}
  .client-inline{width:100%;align-items:flex-start}.client-inline img{max-width:120px;max-height:44px}.client-inline h1{font-size:24px}
  .login-layout{grid-template-columns:1fr!important;min-height:100dvh!important}.login-brand-panel{min-height:0!important;padding:18px!important}.login-brand-copy{display:none}.client-logo-box{width:min(230px,100%)!important;min-height:70px!important;padding:10px 14px!important;border-radius:12px!important}.client-logo-box img{max-height:52px!important}.login-form-panel{padding:18px 14px!important;place-items:start stretch!important}.login-card-flat{width:100%!important;padding:14px 2px!important}.login-card-flat h2{font-size:25px}
}

@media(max-width:420px){
  .topbar{grid-template-columns:minmax(0,1fr) auto}.mobile-nav-toggle{grid-column:2}.userbox{grid-column:1/-1;justify-self:end;margin-top:-2px}.topbar nav{grid-column:1/-1}
  .page{padding:14px 10px!important}.page-heading h1,.report-heading h1{font-size:23px}.eyebrow{font-size:10px}.page-client-logo{max-width:135px}
  .report-card{padding:14px}.platform-card-icon{width:54px!important;height:54px!important;min-width:54px}.platform-card-icon svg{width:39px;height:39px}
  input,select,textarea{font-size:16px}button,.button{min-height:42px}
}


/* Jackpot BI 3.2.3 - iconografia semantica grande */
.semantic-icon{
  width:72px!important;height:72px!important;min-width:72px!important;
  border-radius:18px!important;background:linear-gradient(145deg,#ffffff,#eef6fc)!important;
  border:1px solid #d9e7f2;box-shadow:0 8px 20px #0b355512;
  display:grid!important;place-items:center!important;overflow:hidden;
}
.semantic-icon svg{width:54px;height:54px;display:block;overflow:visible}
.semantic-icon .si-blue{fill:#0877c9}.semantic-icon .si-blue-soft{fill:#8fd2f2}.semantic-icon .si-orange{fill:#f5a623}.semantic-icon .si-green{fill:#66b96f}.semantic-icon .si-red{fill:#e33f51}.semantic-icon .si-navy{fill:#183d63}.semantic-icon .si-paper{fill:#f7fbfe;stroke:#9fb8ca;stroke-width:2}.semantic-icon .si-paper-white{fill:#fff}.semantic-icon .si-navy-line{fill:none;stroke:#23496c;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.semantic-icon .si-orange-line{fill:none;stroke:#f5a623;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.semantic-icon .si-blue-line-thick{fill:none;stroke:#0877c9;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.semantic-icon .si-orange-line-thick{fill:none;stroke:#f5a623;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.report-card>.semantic-icon,.admin-option-card>.semantic-icon{align-self:flex-start}
.report-card:has(.semantic-icon){gap:20px;min-height:150px;align-items:center}
.report-card:has(.semantic-icon) h3{font-size:20px;line-height:1.15}
.company-admin-callout .semantic-icon{width:68px!important;height:68px!important;min-width:68px!important}
.company-admin-callout .semantic-icon svg{width:50px;height:50px}
.admin-option-card .semantic-icon{width:76px!important;height:76px!important;min-width:76px!important}
.admin-option-card .semantic-icon svg{width:56px;height:56px}
.admin-cards .semantic-icon{width:76px!important;height:76px!important;min-width:76px!important}
.admin-cards .semantic-icon svg{width:56px;height:56px}
.icon-building{background:linear-gradient(145deg,#f9fcff,#e9f4fb)!important}.icon-euro{background:linear-gradient(145deg,#fffaf1,#eef7ff)!important}.icon-slot{background:linear-gradient(145deg,#f7fbff,#fff8ed)!important}.icon-bell{background:linear-gradient(145deg,#fffaf0,#f6fbff)!important}.icon-list{background:linear-gradient(145deg,#f8fcff,#f5fbf4)!important}.icon-trend{background:linear-gradient(145deg,#f7fbff,#fff9ef)!important}.icon-users{background:linear-gradient(145deg,#f7fbff,#f4fbf5)!important}
@media(max-width:768px){
  .semantic-icon{width:62px!important;height:62px!important;min-width:62px!important;border-radius:16px!important}
  .semantic-icon svg{width:46px;height:46px}
  .admin-option-card .semantic-icon,.admin-cards .semantic-icon{width:64px!important;height:64px!important;min-width:64px!important}
  .admin-option-card .semantic-icon svg,.admin-cards .semantic-icon svg{width:48px;height:48px}
  .report-card:has(.semantic-icon){min-height:0;align-items:flex-start}
}


/* Jackpot BI 3.2.4 - selector de iconos de plantilla */
.field-help{display:block;margin-top:6px;color:var(--muted);font-size:12px;font-weight:500}
.icon-picker-fieldset{padding-bottom:18px}
.icon-picker{display:grid;grid-template-columns:repeat(5,minmax(110px,1fr));gap:10px;margin-top:12px}
.icon-choice{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;min-height:116px;padding:10px 8px;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.icon-choice:hover{border-color:#9fc5df;box-shadow:0 5px 16px #0b355510;transform:translateY(-1px)}
.icon-choice input{position:absolute;opacity:0;pointer-events:none}
.icon-choice:has(input:checked){border:2px solid var(--secondary);background:#f3f9fd;box-shadow:0 0 0 3px #0b76d110}
.icon-choice-preview{display:block}.icon-choice .semantic-icon{width:58px!important;height:58px!important;min-width:58px!important;border-radius:14px!important}.icon-choice .semantic-icon svg{width:43px;height:43px}
.icon-choice-label{font-size:12px;font-weight:800;text-align:center;line-height:1.15;color:var(--text)}
.semantic-icon .si-paper-white-fill{fill:#fff}.semantic-icon .si-red-line{fill:none;stroke:#e33f51;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.icon-check{background:linear-gradient(145deg,#f6fff8,#eef7ff)!important}.icon-mobile{background:linear-gradient(145deg,#f7fbff,#f5f2ff)!important}.icon-dashboard{background:linear-gradient(145deg,#f7fbff,#fff7ef)!important}.icon-chart{background:linear-gradient(145deg,#fff8f6,#f3f9ff)!important}
@media(max-width:900px){.icon-picker{grid-template-columns:repeat(3,minmax(100px,1fr))}}
@media(max-width:520px){.icon-picker{grid-template-columns:repeat(2,minmax(0,1fr))}.icon-choice{min-height:104px}}

/* Jackpot BI 3.3.0 - Administracion ETL */
.icon-etl{background:linear-gradient(145deg,#f4fbff,#f8fff6)!important}
.etl-metrics{margin-bottom:20px}.runtime-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px}.runtime-card{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff}.runtime-card>div:first-child{display:flex;justify-content:space-between;gap:12px;align-items:center}.runtime-card p{margin:8px 0;color:var(--muted)}
.etl-job-form{max-width:none}.etl-warning{align-self:end;padding:12px 14px;border-radius:10px;background:#fff8e6;border:1px solid #f0d590;font-size:13px;line-height:1.45}.etl-confirm-field{display:none}
.etl-detail-actions{display:flex;gap:8px;flex-wrap:wrap}.etl-status-banner{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:16px}.etl-status-banner>div{background:#fff;padding:15px}.etl-status-banner small{display:block;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.08em}.etl-status-banner strong{display:block;margin-top:5px;font-size:16px}.etl-status-banner.state-correcta{border-color:#9fd0aa}.etl-status-banner.state-error{border-color:#e8a9b0}
.etl-log{display:flex;flex-direction:column;gap:8px}.etl-log-row{display:grid;grid-template-columns:170px 70px 150px 1fr;gap:10px;align-items:start;border-bottom:1px solid var(--line);padding:10px 0}.etl-log-row p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.etl-log-row details{grid-column:1/-1}.etl-log-row pre,.technical-pre,.etl-error-card pre{max-height:520px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:#0c1722;color:#e8f0f5;padding:12px;border-radius:8px;font-size:12px}.level-error strong{color:#b62334}.level-aviso strong{color:#9a6b00}.etl-error-card{border:1px solid #ecc3c8;border-radius:10px;padding:14px;margin-bottom:10px;background:#fff9fa}.etl-error-card p{white-space:pre-wrap}.error-section{border-color:#ecc3c8}
.pill.warning{background:#fff1c7;color:#765500}
@media(max-width:850px){.etl-status-banner{grid-template-columns:repeat(2,minmax(0,1fr))}.etl-log-row{grid-template-columns:1fr 70px}.etl-log-row>span:nth-child(3){grid-column:1/-1}.etl-log-row p{grid-column:1/-1}}
@media(max-width:520px){.etl-status-banner{grid-template-columns:1fr}.etl-detail-actions{width:100%}.etl-detail-actions>*{flex:1}.etl-log-row{grid-template-columns:1fr}}

/* Jackpot BI 3.3.0 - seguridad de dispositivos y sesiones */
.compact-stats{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:12px;margin:0 0 16px}.stat-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px}.stat-card span{display:block;color:var(--muted);font-size:12px;font-weight:700}.stat-card strong{display:block;margin-top:5px;font-size:22px}.small-heading{margin-top:24px;margin-bottom:12px}.small-heading h2{margin:0}.button[disabled]{opacity:.45;cursor:not-allowed}.alert.success{background:#e6f7ef;color:var(--success);border:1px solid #bce8d2}@media(max-width:900px){.compact-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.compact-stats{grid-template-columns:1fr}}

/* 3.3.0-rc6 · observabilidad ETL */
.etl-progress-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin:16px 0 22px}.etl-progress-head{display:flex;align-items:end;justify-content:space-between;gap:16px}.etl-progress-head small{display:block;color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.5px}.etl-progress-head strong{font-size:20px}.etl-progress-track{height:12px;background:#e8edf2;border-radius:99px;overflow:hidden;margin:12px 0 8px}.etl-progress-fill{height:100%;background:var(--blue);border-radius:99px;transition:width .3s ease}.etl-progress-card p{margin:8px 0 0;color:#465467;font-size:13px}.etl-log-table{display:grid;gap:0}.etl-log-head,.etl-log-row{display:grid;grid-template-columns:145px 80px minmax(180px,240px) minmax(0,1fr);gap:14px;align-items:start}.etl-log-head{padding:9px 12px;background:#f7f9fb;border:1px solid var(--line);border-radius:8px 8px 0 0;color:#526172;font-size:11px;font-weight:800;text-transform:uppercase}.etl-log-row{padding:11px 12px;border:1px solid var(--line);border-top:0;background:#fff}.etl-log-row:last-child{border-radius:0 0 8px 8px}.etl-log-row>*{min-width:0}.etl-log-row p{margin:0;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.etl-phase{font-weight:700;overflow-wrap:anywhere}.etl-message details{margin-top:6px}.etl-message pre{max-width:100%;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:900px){.etl-log-head{display:none}.etl-log-row{grid-template-columns:1fr;gap:5px}.etl-log-row .mono{color:var(--muted)}}

/* JSAnalytics 3.4.0-rc1 - periodo de prueba */
.trial-banner{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 24px;border-bottom:1px solid #d7e3ec;background:#eef6fc;color:#294d70}.trial-banner>div{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.trial-banner strong{font-family:var(--font-title,Montserrat),sans-serif}.trial-banner span{font-size:13px}.trial-banner.trial-warning{background:#fff8e6;color:#765500;border-color:#f0d590}.trial-banner.trial-urgent,.trial-banner.trial-expired{background:#fff0ee;color:var(--danger);border-color:#e8a9b0}.trial-dismiss{width:30px;height:30px;padding:0;border-radius:50%;background:transparent;color:inherit;font-size:22px;line-height:1}.trial-metrics{grid-template-columns:repeat(4,minmax(150px,1fr))}.pill.danger{background:#fff0ee;color:var(--danger)}
@media(max-width:900px){.trial-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.trial-banner{padding:12px 16px;align-items:flex-start}}
@media(max-width:520px){.trial-metrics{grid-template-columns:1fr}.trial-banner>div{display:grid;gap:4px}}


/* JSAnalytics 3.4.0-rc2 - branding, trazabilidad de plantillas y aviso IA */
.login-background-preview{position:relative;min-height:150px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--preview-login-color,#081d33);display:flex;align-items:flex-end;padding:14px;color:#fff}
.login-background-preview-image{position:absolute;inset:0;background-image:var(--preview-login-image,none);background-size:cover;background-position:center;opacity:var(--preview-login-opacity,.35);pointer-events:none}
.login-background-preview span{position:relative;z-index:1;font-size:11px;font-weight:800;text-shadow:0 1px 3px #0008}
.client-report-option{display:grid;grid-template-columns:minmax(240px,1fr) minmax(240px,1fr);gap:12px;align-items:center;padding:7px 0;border-bottom:1px solid #edf1f4}
.client-report-option:last-child{border-bottom:0}.client-visible-name{padding:8px 10px;font-size:12px}
.report-origin-tag{display:inline-block;margin-top:4px;padding:2px 7px;border-radius:99px;background:#eef3f7;color:#526172;font-size:10px;font-weight:800}
.report-admin-choice{align-items:flex-start}.report-admin-choice>span{display:grid;gap:2px}.report-admin-choice small{display:block;color:var(--muted);font-weight:500;font-size:11px}
.ai-report-disclaimer{font-size:9px;line-height:1.25;color:#8b96a3;text-align:right;padding:6px 10px 2px;opacity:.78}
@media(max-width:760px){.client-report-option{grid-template-columns:1fr}.ai-report-disclaimer{font-size:8px;padding:5px 8px 2px}}

/* JSAnalytics 3.4.0-rc3 - catalogo por cliente, selectores de color, contraste y aviso IA */
.login-brand-panel{color:var(--login-copy-color,#fff)}
.login-brand-copy,.login-brand-copy h1,.login-brand-copy p,.login-brand-copy .eyebrow.light{color:inherit}
.login-brand-copy .eyebrow.light{opacity:.8}
.color-field{display:grid;gap:7px;align-content:start;font-size:13px;font-weight:700;color:#465467}
.color-field-label{display:block}
.color-control{display:grid;grid-template-columns:48px minmax(0,1fr);gap:8px;align-items:center}
.color-control .color-swatch{width:48px;height:42px;padding:3px;border:1px solid #ccd5de;border-radius:8px;cursor:pointer;background:#fff}
.color-control .color-hex{min-width:0;font-family:Consolas,monospace}
.color-control .color-hex.invalid-color{border-color:var(--danger);background:#fff6f5}
.field-help{display:block;color:var(--muted);font-size:11px;font-weight:500;line-height:1.35;margin-top:1px}
.login-background-preview{color:var(--preview-login-text,#fff);align-items:flex-end}
.login-preview-copy{position:relative;z-index:1;display:grid;gap:3px;max-width:80%;color:var(--preview-login-text,#fff);text-shadow:0 1px 3px #0008}
.login-preview-copy small{font-size:9px;letter-spacing:1.1px;font-weight:900}
.login-preview-copy strong{font-size:22px;line-height:1.05}
.login-preview-copy span{font-size:11px;font-weight:600}
.client-report-catalog{border:1px solid var(--line);border-radius:10px;background:#fbfcfd;overflow:hidden}
.client-report-catalog-row{display:grid;grid-template-columns:minmax(280px,1.2fr) minmax(250px,1fr);gap:16px;align-items:center;padding:13px 14px;border-bottom:1px solid #e7edf2;background:#fff}
.client-report-catalog-row:last-of-type{border-bottom:0}
.client-report-catalog-row[hidden]{display:none!important}
.client-report-main{margin:0;align-items:flex-start}
.client-report-main>span{display:grid;gap:3px;min-width:0}
.client-report-main strong{font-size:13px;color:var(--ink)}
.client-report-main small{font-size:11px;color:var(--muted);font-weight:500;overflow-wrap:anywhere}
.client-report-visible{font-size:11px;color:#526172}
.client-report-visible input{padding:8px 10px;font-size:12px}
.report-origin-filter-label select{max-width:520px}
.compact-empty{padding:18px;border-radius:0;border-width:0;background:#fbfcfd}
.ai-report-disclaimer{font-size:10px;line-height:1.3;color:#8b96a3;text-align:center;padding:8px 10px 3px;opacity:.82}
@media(max-width:760px){.client-report-catalog-row{grid-template-columns:1fr;gap:10px}.color-control{grid-template-columns:46px minmax(0,1fr)}.ai-report-disclaimer{font-size:9px;padding:7px 8px 3px}}


/* JSAnalytics 3.4.1 - filtros de plantillas en permisos de usuario */
.reports-permission-fieldset{min-width:0}
.report-user-filters{display:grid;grid-template-columns:minmax(180px,1fr) minmax(160px,.72fr);gap:8px;margin:2px 0 6px}
.report-user-filters label{display:grid;gap:4px;font-size:11px;font-weight:700;color:#526172}
.report-user-filters input,.report-user-filters select{width:100%;min-width:0;padding:8px 9px;font-size:12px}
.report-user-filter-meta{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:10px;margin:0 0 7px}
.report-user-list{max-height:300px;overflow:auto;padding-right:3px}
.report-user-list .report-admin-choice[hidden]{display:none!important}
.report-user-filter-empty{padding:12px 4px}
@media(max-width:760px){.report-user-filters{grid-template-columns:1fr}.report-user-list{max-height:360px}}

/* JSAnalytics 4.0.2 - organización propia compacta y salas ordenables */
.organization-heading{align-items:flex-start}.organization-stats{margin-top:4px}.organization-section{margin-top:22px}.section-heading-inline{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.section-heading-inline h2{margin:0}.section-heading-inline p{margin-top:5px}.organization-create-zone{display:grid;grid-template-columns:minmax(180px,.65fr) minmax(260px,1.2fr) auto;gap:12px;align-items:end;margin-bottom:16px}.organization-create-zone label,.organization-responsibility-form label{display:grid;gap:6px;font-size:12px;font-weight:700;color:#465467}.organization-zone-list{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}.organization-zone-list-head,.organization-zone-row{display:grid;grid-template-columns:minmax(180px,1.05fr) minmax(220px,1.45fr) 72px 110px 126px 92px;gap:10px;align-items:center;padding:9px 12px}.organization-zone-list-head{background:#f4f7f9;color:#526172;font-size:10px;font-weight:900;letter-spacing:.04em;text-transform:uppercase}.organization-zone-row{border-top:1px solid var(--line)}.organization-zone-row:first-of-type{border-top:0}.organization-zone-row label{min-width:0}.organization-zone-row input{width:100%;min-width:0;padding:8px 9px;font-size:12px}.organization-zone-name input{font-weight:800;color:var(--ink)}.organization-zone-count{text-align:center;font-weight:800}.organization-zone-active{justify-content:flex-start;margin:0;white-space:nowrap}.organization-zone-active input{width:auto}.organization-table table{min-width:980px}.organization-table.compact table{min-width:720px}.organization-inline-form{display:flex;gap:8px;align-items:center;min-width:300px}.organization-inline-form select{min-width:180px}.organization-pending-row{background:#fffaf0}.table-sort-button{appearance:none;border:0;background:transparent;padding:0;color:inherit;font:inherit;font-weight:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:5px}.table-sort-button span{opacity:.45}.table-sort-button.active span{opacity:1}.organization-responsibility-form{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(240px,1.2fr) minmax(160px,.7fr) auto;gap:12px;align-items:end;margin-bottom:16px}.organization-incidents{display:grid;gap:10px}.organization-incident{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px}.organization-incident.pending{border-left:4px solid #d8a530}.organization-incident.closed{opacity:.8}.organization-incident-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.organization-incident-body{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;margin-top:8px}.organization-incident-body p{margin:0}.organization-incident-type{font-size:10px;font-weight:900;letter-spacing:.05em;background:#eef3f7;border-radius:99px;padding:4px 8px;color:#526172}.organization-incident-actions{display:flex;gap:8px;margin-top:12px}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(max-width:1100px){.organization-zone-list-head{display:none}.organization-zone-row{grid-template-columns:1fr 1.4fr 90px 110px 126px 92px}}
@media(max-width:980px){.organization-zone-row{grid-template-columns:1fr 1fr}.organization-zone-count{text-align:left}.organization-zone-count:before{content:attr(data-label) ": ";font-weight:600;color:var(--muted)}.organization-create-zone,.organization-responsibility-form{grid-template-columns:1fr}.organization-create-zone .button,.organization-responsibility-form .button{justify-self:start}.organization-incident-body{grid-template-columns:1fr}.organization-incident-body small{justify-self:start}}
@media(max-width:620px){.organization-zone-row{grid-template-columns:1fr}.organization-zone-row .button{justify-self:start}}


/* JSAnalytics 4.1.2 - Superset embebido: ancho completo + periodo jerarquico */
.page.report-page-wide{max-width:none;width:100%;margin:0;padding:14px 16px 5px}
.report-page-wide .report-heading-compact{margin:0 2px 10px;min-height:58px}
.report-page-wide .report-heading-compact h1{font-size:28px;line-height:1.08}
.report-page-wide .report-heading-compact .client-inline{gap:12px}
.report-page-wide .report-heading-compact .client-inline img{max-width:135px;max-height:44px}
.bi-template-shell{min-height:calc(100vh - 150px)}
.bi-template-layout{display:grid;grid-template-columns:232px minmax(0,1fr);gap:7px;align-items:stretch}
.bi-filter-sidebar{position:sticky;top:0;align-self:stretch;height:calc(100vh - 145px);max-height:calc(100vh - 145px);overflow:auto;background:#fff;border:1px solid rgba(15,35,55,.12);border-radius:8px;padding:7px 9px}
.bi-sidebar-title{font-size:11px;font-weight:900;letter-spacing:.04em;color:#1d2939;margin:0 3px 5px}
.period-tree{display:grid;gap:2px}
.period-tree details{margin:0}
.period-tree summary{list-style:none;cursor:pointer;display:flex;align-items:center;min-height:27px;border-radius:5px}
.period-tree summary::-webkit-details-marker{display:none}
.period-tree summary:before{content:'›';width:17px;display:inline-grid;place-items:center;color:#667085;font-size:17px;line-height:1;transition:transform .12s}
.period-tree details[open]>summary:before{transform:rotate(90deg)}
.period-node{display:flex!important;grid-template-columns:none!important;align-items:center;gap:6px!important;cursor:pointer;color:#202b37!important;font-weight:500!important;min-width:0;flex:1;padding:2px 1px}
.period-node input{width:16px!important;height:16px!important;margin:0!important;padding:0!important;border-radius:2px;accent-color:var(--brand-secondary)}
.period-year-node{font-size:13px!important;font-weight:700!important}.period-month-node{font-size:13px!important}.period-day-node{font-size:12px!important;color:#526172!important}
.period-months{padding-left:15px}.period-days{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 3px;padding:1px 0 4px 16px}
.period-month .period-days .period-node{padding:2px 0}
.period-selection-summary{font-size:10px;color:var(--muted);line-height:1.2;margin:5px 3px 7px;padding-top:5px;border-top:1px solid #edf1f4}
.bi-filter-sidebar-control{display:flex;flex-direction:column;gap:3px;margin:6px 1px 0}
.bi-filter-sidebar-control label{font-size:11px;font-weight:800;color:#465467}
.bi-filter-sidebar-control select{height:31px;padding:0 7px;font-size:12px;border:1px solid #ccd5de;border-radius:6px;background:#fff}
.bi-filter-state{font-size:10px;color:#667085;margin:6px 2px 0;line-height:1.2;overflow-wrap:anywhere}.bi-filter-state.ok{color:#137333}.bi-filter-state.error{color:#b42318}
.superset-embed-wrap{width:100%;min-width:0;height:calc(100vh - 145px);min-height:760px;border:0;overflow:hidden;background:#fff;border-radius:8px}
.superset-embed-wrap iframe{width:100%!important;min-height:760px!important;height:100%!important;border:0!important;display:block}
.report-page-wide .ai-report-disclaimer{padding:4px 4px 0;font-size:8px}
@media(max-width:1050px){.bi-template-layout{grid-template-columns:205px minmax(0,1fr)}.page.report-page-wide{padding:10px}}
@media(max-width:760px){.page.report-page-wide{padding:10px 8px}.report-page-wide .report-heading-compact{align-items:flex-start}.bi-template-layout{grid-template-columns:1fr}.bi-filter-sidebar{position:static;height:auto;max-height:none}.period-days{grid-template-columns:repeat(7,minmax(0,1fr))}.superset-embed-wrap{height:75vh;min-height:580px}.superset-embed-wrap iframe{height:100%!important;min-height:580px!important}}

/* 4.2.0: Superset controla sus filtros nativos; Portal solo aloja el iframe. */
.superset-native-shell{width:100%;min-height:calc(100vh - 180px);position:relative}
.superset-native-shell>.bi-filter-state{margin:8px 0}
.superset-native-embed{width:100%;min-height:calc(100vh - 190px)}
.superset-native-embed iframe{width:100%!important;min-height:calc(100vh - 190px)!important;border:0!important;display:block}

/* 4.2.7 — Logotipos con contraste automático por superficie */
.topbar.nav-light{color:#17202b}
.topbar.nav-light .brand,.topbar.nav-light .brand-image span{color:#17202b}
.topbar.nav-light nav a,.topbar.nav-light .userbox a{color:#263748}
.topbar.nav-light nav a:hover,.topbar.nav-light .userbox a:hover{color:#0a1623}
.topbar.nav-light .mobile-nav-toggle{color:#17202b}
.logo-variant-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.logo-variant-card{border:1px solid var(--line);border-radius:12px;padding:18px;display:grid;align-content:start;gap:12px;min-width:0}
.logo-variant-card h2{font-size:17px;margin:0;color:var(--ink)}
.logo-variant-card p{font-size:13px;line-height:1.45;margin:0}
.logo-variant-card label{min-width:0}
.logo-variant-preview{border:1px solid #d5dae0;border-radius:9px;min-height:130px;display:flex;align-items:center;justify-content:center;padding:20px;overflow:hidden}
.logo-variant-preview img{display:block;max-width:100%;max-height:86px;object-fit:contain}
.logo-variant-preview img[hidden],.logo-variant-preview span[hidden]{display:none}
.logo-variant-preview-light{background:#f1f4f8;color:#3b4b60}
.logo-variant-preview-dark{background:#081d33;color:#dfe8f1;border-color:#244563}
.logo-variant-preview span{font-size:13px;text-align:center}
.legacy-logo-settings{border:1px dashed #bbc8d5;border-radius:9px;padding:12px 16px}
.legacy-logo-settings summary{cursor:pointer;font-size:13px;font-weight:700;color:#43566a}
.legacy-logo-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;padding-top:14px}
@media(max-width:760px){.logo-variant-grid,.legacy-logo-fields{grid-template-columns:1fr}}

/* Portal 4.2.11: alias del nombre de sala (no se modifica el nombre de la API) */
.organization-room-name-edit { margin-top: .4rem; }
.organization-room-name-edit summary { cursor:pointer; color:#2360a5; font-size:.82rem; font-weight:600; }
.organization-room-name-form { display:flex; flex-wrap:wrap; gap:.45rem; align-items:center; margin-top:.45rem; }
.organization-room-name-form input { width: min(100%, 215px); min-width:160px; }
.organization-room-name-form .button { white-space:nowrap; }
.organization-room-name-form small { width:100%; }

/* Portal 4.2.12 · Salas: nombre y zona editables en una sola fila */
.organization-rooms-autosave { min-width: 1180px; width:100%; }
.organization-rooms-autosave th:nth-child(1) { width:19%; }
.organization-rooms-autosave th:nth-child(2) { width:20%; }
.organization-rooms-autosave th:nth-child(3) { width:23%; }
.organization-rooms-autosave th:nth-child(4) { width:13%; }
.organization-rooms-autosave th:nth-child(5) { width:8%; }
.organization-rooms-autosave th:nth-child(6) { width:17%; }
.organization-rooms-autosave td { vertical-align: middle; }
.organization-room-api strong { display:block; font-size:12px; }
.organization-room-api .mono { display:block; margin-top:4px; font-size:10px; }
.organization-autosave-form { min-width:0; }
.organization-autosave-form input,.organization-autosave-form select { width:100%; min-width:0; max-width:100%; font-size:12px; }
.organization-save-status { display:block; min-height:0; font-size:10px; color:#526172; margin-top:3px; }
.organization-save-status:empty { display:none; }
.organization-save-status.is-error { color:#b42318; }
.organization-save-status.is-success { color:#187d5d; }
.organization-autosave-form [aria-invalid="true"] { border-color:#b42318; }

/* Portal 4.2.14: columna de visibilidad, un checkbox por sala. */
.organization-rooms-autosave {min-width: 1250px;}
.organization-rooms-autosave th:nth-child(1) {width:18%;}
.organization-rooms-autosave th:nth-child(2) {width:18%;}
.organization-rooms-autosave th:nth-child(3) {width:7%;}
.organization-rooms-autosave th:nth-child(4) {width:22%;}
.organization-rooms-autosave th:nth-child(5) {width:12%;}
.organization-rooms-autosave th:nth-child(6) {width:7%;}
.organization-rooms-autosave th:nth-child(7) {width:16%;}
.organization-room-active-cell {text-align:center;}
.organization-room-active-cell input[type="checkbox"] {width:17px;height:17px;min-width:17px;max-width:17px;cursor:pointer;accent-color:#087f63;}
.organization-room-active-cell .organization-autosave-form {display:flex;align-items:center;flex-direction:column;gap:2px;}
.organization-room-active-cell .organization-save-status {font-size:9px;}

/* Portal 4.2.21 - selector visual de tipografías */
.font-picker{display:grid;gap:7px;align-content:start;min-width:0}
.font-picker-label{font-size:13px;font-weight:700;color:#465467}
.font-picker-details{position:relative;min-width:0}
.font-picker-current{list-style:none;display:flex;flex-direction:column;gap:4px;padding:10px 13px;border:1px solid #ccd5de;border-radius:8px;cursor:pointer;background:#fff}
.font-picker-current::-webkit-details-marker{display:none}
.font-picker-current:after{content:'▾';position:absolute;right:14px;top:12px;color:#526172}
.font-picker-current-name{font-size:13px;font-weight:700;padding-right:28px}
.font-picker-current-sample{font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#34475a}
.font-picker-panel{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:30;border:1px solid #bcc9d5;border-radius:10px;padding:8px;background:white;box-shadow:0 15px 35px #0002}
.font-picker-search{margin:0 0 6px;padding:9px 10px}
.font-picker-options{max-height:340px;overflow-y:auto;overscroll-behavior:contain}
.font-picker-option{display:flex;flex-direction:column;align-items:flex-start;width:100%;gap:3px;padding:9px 10px;color:#162f45;background:transparent;border-radius:6px;text-align:left;font-weight:400}
.font-picker-option:hover,.font-picker-option[aria-selected=true]{background:#edf5fd}
.font-picker-option-title{font-size:14px;font-weight:700}
.font-picker-option-sample{font-size:18px;line-height:1.45}
.font-picker-option[hidden],.font-picker-no-results[hidden]{display:none}
.font-picker-no-results{color:var(--muted);font-size:12px;padding:12px}
.font-picker-upload{position:relative;display:flex;align-items:center;gap:5px;cursor:pointer;color:#006cc5;font-size:13px;font-weight:700;border:1px dashed #b1c5d7;border-radius:8px;padding:10px 12px;max-width:100%}
.font-picker-upload:hover{background:#eff6fd}
.font-picker-upload input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.font-upload-help{font-size:11px;line-height:1.4}
@media(max-width:760px){.font-picker-panel{min-width:270px;max-width:min(90vw,400px)}}

/* 4.2.27 — Administración ETL: campos compactos, parámetros horizontales y ayudas verticales. */
.etl-job-form{display:flex;flex-direction:column;gap:16px;max-width:none;width:100%;align-items:stretch}
.etl-job-form>.etl-server-field,.etl-job-form>.etl-operation-field{display:grid;gap:7px;min-width:0}
.etl-job-form select{height:42px;min-height:42px;padding:8px 12px}
.etl-job-form .etl-params{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start;width:100%}
.etl-job-form .etl-params>label{min-width:0;align-self:start}
.etl-job-form .etl-help-stack{display:flex;flex-direction:column;gap:12px;width:100%}
.etl-job-form .etl-help-stack .etl-warning{align-self:stretch;width:100%}
.etl-job-form .form-actions{margin-top:0}
@media(max-width:760px){.etl-job-form .etl-params{grid-template-columns:1fr}}

/* Versión del ejecutor ETL visible antes de lanzar cualquier trabajo. */
.etl-worker-version-panel{border:1px solid #cbd5e1;border-radius:12px;padding:12px 16px;margin-bottom:18px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.etl-worker-version-detail{display:inline-flex;align-items:center;gap:9px;flex-wrap:wrap}
.etl-worker-version-panel>small{flex-basis:100%;color:var(--muted,#64748b)}
