:root{--sci-900:#071b3e;--sci-800:#0a2455;--sci-700:#0d3880;--sci-600:#1249a8;--sci-500:#1a5fd4;--sci-400:#2a7fe0;--sci-100:#e8eef7;--sci-50:#f0f4fb;--gray-900:#1a1d23;--gray-700:#374151;--gray-500:#6b7280;--gray-300:#d1d5db;--gray-200:#e5e7eb;--gray-100:#f3f4f6;--gray-50:#f9fafb;--bg:#f0f2f5;--surface:#fff;--border:#dde1e9;--text:#1a1d23;--text-muted:#6b7280;--sidebar-bg:#0a1628;--sidebar-hover:#142240;--sidebar-active:#1a5fd4;--sidebar-text:hsla(0,0%,100%,.75);--sidebar-text-act:#fff;--sidebar-w:240px;--sidebar-w-col:64px;--topbar-h:52px;--shadow-sm:0 1px 3px rgba(0,0,0,.07),0 1px 2px rgba(0,0,0,.05);--shadow-md:0 4px 12px rgba(0,0,0,.08);--status-strong-bg:#e6f4ea;--status-strong-text:#15803d;--status-weak-bg:#fef3c7;--status-weak-text:#92400e;--status-none-bg:#f3f4f6;--status-none-text:#6b7280;--accent-warm:#b45309}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;width:100%;overflow:hidden;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}h1,h2,h3{margin-top:0}.page{max-width:960px;margin:0 auto;padding:24px 20px 80px;height:100%;overflow-y:auto}h3{font-size:1.1rem;margin-bottom:14px}h3,h4{font-weight:600;color:var(--text)}h4{font-size:1rem;margin:12px 0 6px}.app-shell{height:100vh;width:100vw;flex-direction:column;position:relative}.app-body,.app-shell{display:flex;overflow:hidden}.app-body{flex:1 1;min-height:0}.app-sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--sidebar-bg);display:flex;flex-direction:column;overflow:hidden;transition:width .22s ease,min-width .22s ease;flex-shrink:0;z-index:50}.app-sidebar.collapsed{width:var(--sidebar-w-col);min-width:var(--sidebar-w-col)}.main-content{flex:1 1;overflow-y:auto;overflow-x:hidden;padding:12px 20px 20px;min-width:0}.topbar{height:var(--topbar-h);min-height:var(--topbar-h);background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;padding:0 16px 0 8px;box-shadow:var(--shadow-sm);z-index:100;flex-shrink:0}.topbar,.topbar-left{display:flex;align-items:center}.topbar-left{gap:10px}.topbar-right{gap:4px}.topbar-menu-btn,.topbar-right{display:flex;align-items:center}.topbar-menu-btn{width:36px;height:36px;border:none;background:transparent;border-radius:8px;cursor:pointer;justify-content:center;color:var(--gray-700);transition:background .15s}.topbar-menu-btn:hover{background:var(--gray-100)}.topbar-logo{width:30px;height:30px;border-radius:6px;object-fit:contain;background:var(--sci-900);padding:3px}.topbar-brand{display:flex;align-items:baseline;gap:7px}.topbar-brand-name{font-size:1.05rem;font-weight:700;color:var(--sci-700);letter-spacing:-.3px}.topbar-brand-sep{color:var(--gray-300);font-weight:300}.topbar-brand-sub{font-size:.78rem;font-weight:500;color:var(--text-muted);letter-spacing:.2px;text-transform:uppercase}.sidebar-divider{height:1px;background:hsla(0,0%,100%,.06);margin:4px 12px;flex-shrink:0}.sidebar-nav{flex:1 1;padding:8px 0;overflow-y:auto;overflow-x:hidden}.sidebar-nav::-webkit-scrollbar{width:3px}.sidebar-nav::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.1);border-radius:2px}.sidebar-item{width:100%;display:flex;align-items:center;gap:11px;padding:10px 16px;background:transparent;border:none;cursor:pointer;color:var(--sidebar-text);font-size:.875rem;font-weight:400;font-family:inherit;text-align:left;transition:background .15s,color .15s;position:relative;white-space:nowrap;overflow:hidden}.app-sidebar.collapsed .sidebar-item{padding:10px 0;justify-content:center;gap:0}.sidebar-item:hover:not(.disabled){background:var(--sidebar-hover);color:#fff}.sidebar-item.active{background:var(--sidebar-active);color:var(--sidebar-text-act);font-weight:500}.sidebar-item.active:before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:3px;background:#fff;border-radius:0 2px 2px 0}.app-sidebar.collapsed .sidebar-item.active:before{display:none}.sidebar-item.disabled{opacity:.38;cursor:default}.sidebar-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:18px}.sidebar-label{flex:1 1;overflow:hidden;text-overflow:ellipsis}.sidebar-lock{flex-shrink:0;opacity:.5;display:flex;align-items:center}.sidebar-item-wrapper{position:relative}.sidebar-flyout{position:fixed;min-width:220px;background:var(--sidebar-hover);border-radius:10px;box-shadow:4px 6px 20px rgba(0,0,0,.4);padding:6px;z-index:200}.sidebar-flyout-item{border-radius:6px}.sidebar-footer{padding:8px 16px 12px;border-top:1px solid hsla(0,0%,100%,.06);flex-shrink:0}.sidebar-user{font-size:.8rem;color:var(--sidebar-text);padding:6px 0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-logout{width:100%;margin-bottom:8px;color:hsla(0,0%,100%,.45)!important;background:transparent!important;border:none}.sidebar-logout:hover{background:rgba(220,38,38,.18)!important;color:#fca5a5!important}.app-sidebar.collapsed .sidebar-footer{padding:12px 0;display:flex;flex-direction:column;align-items:center}.app-sidebar.collapsed .sidebar-user{display:none}.sidebar-footer-brand{font-size:.72rem;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:hsla(0,0%,100%,.5)}.sidebar-footer-version{font-size:.68rem;color:hsla(0,0%,100%,.28);margin-top:2px}.card,.surface{background:var(--surface);border-radius:10px;padding:10px 16px 16px;box-shadow:var(--shadow-sm);border:1px solid var(--border);margin-bottom:12px}.btn,button{display:inline-flex;align-items:center;justify-content:center;padding:8px 14px;border-radius:8px;font-weight:500;font-family:inherit;font-size:.875rem;cursor:pointer;transition:background .15s,border-color .15s,color .15s;border:1px solid var(--border);background:var(--surface);color:var(--text)}.btn:hover,button:hover{background:var(--gray-100)}.btn.primary,button:not(.secondary):not(.ghost){background:var(--sci-700);color:#fff;border-color:var(--sci-700)}.btn.primary:hover,button:not(.secondary):not(.ghost):hover{background:var(--sci-600);border-color:var(--sci-600)}button:disabled{opacity:.55;cursor:not-allowed;background:var(--gray-300);border-color:var(--gray-300);color:#fff}.btn.ghost,button.secondary{background:transparent;border:1px solid var(--sci-700);color:var(--sci-700)}.btn.ghost:hover,button.secondary:hover{background:var(--sci-700);color:#fff}label{display:block;font-size:.9rem;font-weight:600;margin-bottom:4px;margin-top:12px;color:var(--text)}input,select,textarea{border-radius:6px;border:1px solid var(--border);padding:8px 10px;font-size:.875rem;font-family:inherit;color:var(--text);background:var(--surface);width:100%;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--sci-500);outline:none;box-shadow:0 0 0 3px rgba(26,95,212,.12)}.data-table,table{width:100%;border-collapse:collapse;font-size:.875rem;border:1px solid var(--border);border-radius:8px;overflow:hidden;margin-top:10px}.data-table th,table th{background:var(--sci-700);color:#fff;padding:10px 12px;text-align:left;font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.3px}.data-table td,table td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left}.data-table tr:nth-child(2n) td,table tr:nth-child(2n) td{background:var(--gray-50)}.error{color:#b3261e;background:#fdecea;border:1px solid #f5c6c2;border-radius:6px}.error,.warning{padding:10px 12px;margin-top:12px;font-size:.9rem}.warning{color:var(--status-weak-text);background:var(--status-weak-bg);border:1px solid var(--status-weak-text);border-radius:6px}.muted{color:var(--text-muted);font-size:.9rem}.slider-row{display:flex;align-items:center;gap:12px}.slider-row input[type=range]{flex:1 1}.slider-row .slider-value{font-weight:700;color:var(--sci-800);min-width:3.5em;text-align:right}input[type=range]{width:100%;padding:0;border:none;background:transparent;height:24px;accent-color:var(--sci-600)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:12px;gap:12px;margin-top:12px}.stat-tile{background:var(--sci-50);border-radius:8px;padding:12px}.stat-tile .value{font-size:1.4rem;font-weight:700;color:var(--sci-800)}.stat-tile .label{font-size:.8rem;color:var(--text-muted)}.saved-list-item{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--gray-100)}.saved-list-item:last-child{border-bottom:none}.badge{display:inline-block;background:var(--gray-100);border-radius:999px;padding:2px 10px;font-size:.78rem;margin-left:8px}.method-chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.chip{display:inline-flex;align-items:center;padding:4px 12px;border-radius:999px;font-size:.8rem;font-weight:600;background:var(--gray-100);color:var(--text)}.chip-accent{background:var(--sci-100);color:var(--sci-700)}.label-row{display:flex;align-items:center;gap:6px;margin-top:12px}.label-row label{margin-top:0;margin-bottom:0}.info-tooltip{position:relative;display:inline-flex}
/* !important por la misma razón que .collapsible-header más abajo: la regla
   genérica "button:not(.secondary):not(.ghost)" pintaría este ícono de
   fondo azul sólido si no se fuerza -- no está pensada para un botón de
   ícono transparente como este. */.info-tooltip-btn{width:auto;padding:0;border:none!important;background:transparent!important;color:var(--sci-500)!important;font-size:1rem;line-height:1;cursor:pointer}.info-tooltip-btn:hover{color:var(--sci-700)!important}.info-tooltip-popover{position:absolute;z-index:20;top:100%;left:0;margin-top:6px;width:280px;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.15);padding:12px 14px;font-size:.82rem;font-weight:400;color:var(--text);line-height:1.45}.info-tooltip-popover p{margin:0 0 8px}.info-tooltip-link{color:var(--sci-600);font-weight:600;font-size:.8rem}.stat-tile.strong{background:var(--status-strong-bg)}.stat-tile.strong .value{color:var(--status-strong-text)}.stat-tile.weak{background:var(--status-weak-bg)}.stat-tile.weak .value{color:var(--status-weak-text)}.stat-tile.none-status{background:var(--status-none-bg)}.stat-tile.none-status .value{color:var(--status-none-text)}.status-badge{display:inline-flex;padding:2px 10px;border-radius:999px;font-size:.78rem;font-weight:600;white-space:nowrap}.status-badge.strong{background:var(--status-strong-bg);color:var(--status-strong-text)}.status-badge.weak{background:var(--status-weak-bg);color:var(--status-weak-text)}.status-badge.none-status{background:var(--status-none-bg);color:var(--status-none-text)}.analysis-block{border-left:4px solid var(--gray-300);background:var(--gray-50);border-radius:0 8px 8px 0;padding:10px 14px;margin:10px 0 16px}.analysis-block h3{margin-bottom:8px}.analysis-block.lado{border-left-color:var(--sci-400)}.analysis-block.hallazgos{border-left-color:var(--gray-500)}.analysis-block.riesgos{border-left-color:var(--accent-warm)}.analysis-block.recomendaciones{border-left-color:var(--sci-600)}.analysis-block.sintesis{border-left-color:var(--sci-400);background:var(--sci-50)}.collapsible-card{padding:0;overflow:hidden}
/* !important acá porque la regla genérica "button:not(.secondary):not(.ghost)"
   en globals.css (más arriba) tiene más especificidad que una sola clase y
   pintaría este botón de azul sólido si no se fuerza -- no está pensada
   para un botón de encabezado transparente como este. */.collapsible-header{width:100%;display:flex;align-items:center;justify-content:space-between;background:transparent!important;border:none!important;padding:14px 16px;cursor:pointer;font-family:inherit;text-align:left;color:var(--text)!important}.collapsible-header:hover{background:var(--gray-50)!important}.collapsible-title{font-size:1.1rem;font-weight:600;color:var(--text)}.collapsible-chevron{color:var(--text-muted);transition:transform .15s ease;font-size:.9rem}.collapsible-chevron.open{transform:rotate(180deg)}.collapsible-body{padding:0 16px 16px}.login-page{position:fixed;inset:0;display:flex;font-family:inherit}.login-left{flex:1 1;display:flex;flex-direction:column;justify-content:space-between;padding:48px;box-sizing:border-box;color:#fff;background:linear-gradient(160deg,var(--sci-900) 0,var(--sci-700) 60%,var(--sci-600) 100%)}.login-appname{font-size:2rem;font-weight:800;letter-spacing:-.5px;margin-top:48px;line-height:1.1}.login-tagline{font-size:1rem;color:hsla(0,0%,100%,.65);margin-top:6px}.login-features{display:flex;flex-direction:column;gap:24px;margin-top:48px}.login-feature{display:flex;gap:14px;align-items:center}.login-feature-icon{width:40px;height:40px;border-radius:50%;background:hsla(0,0%,100%,.12);display:flex;align-items:center;justify-content:center;flex-shrink:0}.login-feature-title{font-size:.875rem;font-weight:700}.login-feature-sub{font-size:.78rem;color:hsla(0,0%,100%,.6);margin-top:2px}.login-badge{border:1px solid hsla(0,0%,100%,.2);border-radius:12px;padding:12px 16px}.login-badge-sub,.login-badge-title{font-size:.78rem;color:hsla(0,0%,100%,.5)}.login-badge-sub{margin-top:2px}.login-right{flex:1 1;background:var(--surface);display:flex;align-items:center;justify-content:center;padding:48px;box-sizing:border-box}.login-form-container{max-width:380px;width:100%}.login-brand-name{text-align:center;font-size:1.6rem;color:var(--sci-700);margin-bottom:28px}.login-brand-name,.login-title{font-weight:700;letter-spacing:-.3px}.login-title{font-size:1.75rem;color:var(--text);margin:0}.login-subtitle{font-size:.875rem;color:var(--text-muted);margin-top:8px}.login-form{margin-top:28px}.login-form label{margin-top:16px}.login-form label:first-child{margin-top:0}.login-sci-logo{display:flex;flex-direction:column;align-items:center;margin-top:32px;opacity:.7}.login-sci-logo img{width:60px;object-fit:contain}.login-sci-logo span{font-size:.7rem;color:var(--text-muted);margin-top:6px}@media (max-width:768px){.login-left{display:none}.login-right{background:var(--sidebar-bg)}.login-brand-name,.login-title{color:#fff}.login-subtitle{color:hsla(0,0%,100%,.6)}.login-form label{color:hsla(0,0%,100%,.75)}.login-form input{background:var(--sidebar-hover);border-color:hsla(0,0%,100%,.15);color:#fff}.login-sci-logo span{color:hsla(0,0%,100%,.6)}}