body{background:#f8f9fa}#loading-overlay{position:fixed;inset:0;background:#ffffffeb;display:flex;align-items:center;justify-content:center;z-index:9999;flex-direction:column;gap:12px}#welcome-screen{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 24px}.welcome-inner{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;max-width:420px;width:100%}.welcome-logo{width:180px;height:auto;margin-bottom:4px}.welcome-title{font-size:2rem;font-weight:700;margin:0;color:#212529}.welcome-sub{font-size:1rem;color:#6c757d;margin:0 0 8px}.welcome-open-btn{font-size:1rem;padding:10px 28px;margin-top:4px;display:inline-flex;align-items:center}.welcome-hint{font-size:12px;color:#868e96;margin:6px 0 0}.welcome-hint code{background:#f1f3f5;padding:1px 5px;border-radius:3px;font-size:11px}.welcome-local{font-size:11px;color:#adb5bd;margin:2px 0 0}#main-app{display:none;flex:1 0 auto;flex-direction:column}.topbar{background:#fff;border-bottom:1px solid #dee2e6;padding:8px 16px;display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:100}#sidebar-toggle{display:inline-flex;align-items:center}@keyframes pp-sidebar-pulse{0%{outline:3px solid rgba(13,110,253,0);background:transparent}20%{outline:3px solid rgba(13,110,253,.9);background:#0d6efd1f}80%{outline:3px solid rgba(13,110,253,.9);background:#0d6efd1f}to{outline:3px solid rgba(13,110,253,0);background:transparent}}.sidebar-toggle-pulse{animation:pp-sidebar-pulse 1.2s ease-in-out 4;outline-offset:2px}#sidebar-hint-label{font-size:.8rem;font-weight:700;color:#fff;white-space:nowrap;background:#0d6efd;border-radius:4px;padding:2px 8px;animation:pp-hint-fade 5.5s ease forwards}@keyframes pp-hint-fade{0%{opacity:0}10%{opacity:1}75%{opacity:1}to{opacity:0}}#sidebar{width:300px;min-width:280px;max-width:320px;position:fixed;top:57px;left:12px;z-index:150;height:auto;max-height:calc(100vh - 67px);background:#fff;border:1px solid #dee2e6;border-radius:8px;box-shadow:0 4px 18px #0000001a;display:flex;flex-direction:column;overflow:hidden}#sidebar.sidebar-hidden{display:none}#sidebar-scroll{flex:1 1 auto;overflow-y:auto;padding:16px}#sidebar-footer{flex-shrink:0;padding:12px 16px;border-top:1px solid #dee2e6;background:#fff}.sidebar-label{display:block;margin-bottom:4px;font-size:.75rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:#495057}.sidebar-field{margin-bottom:16px}.sidebar-section{border-top:1px solid #e9ecef}.sidebar-section-header{display:flex;align-items:center;gap:8px;width:100%;padding:12px 0;background:transparent;border:0;cursor:pointer;font:inherit;color:#495057}.sidebar-section-title{flex:1;text-align:left;font-size:.75rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase}.sidebar-section-header .bi{font-size:.75rem;transition:transform .15s}.sidebar-section-header[aria-expanded=true] .bi{transform:rotate(180deg)}.sidebar-section-header:hover{color:#212529}.sidebar-section-header:focus-visible{outline:2px solid #0d6efd;outline-offset:2px;border-radius:4px}.sidebar-section-body{padding-bottom:8px}.header-menu{position:relative}.header-menu-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:300;width:260px;padding:12px;background:#fff;border:1px solid #dee2e6;border-radius:8px;box-shadow:0 6px 24px #00000026}.header-menu-title{font-size:.72rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:#6c757d;margin-bottom:8px}#sidebar-backdrop{display:none;position:fixed;inset:49px 0 0;background:#0006;z-index:199}#sidebar-backdrop.sidebar-open{display:block}#main-content{flex:1;overflow-x:hidden;min-width:0}#content-inner{max-width:1200px;margin:0 auto;padding:20px}@media(max-width:967px){#sidebar{position:fixed;top:49px;left:0;z-index:200;width:280px;min-width:280px;max-width:280px;height:calc(100vh - 49px);transform:translate(-100%);transition:transform .25s ease;box-shadow:2px 0 12px #0000002e}#sidebar.sidebar-open{transform:translate(0)}#current-filename{display:none}.pp-footer-inner{flex-direction:column;gap:12px;text-align:center}.pp-footer-left{flex-direction:column;align-items:center;gap:8px}.pp-footer-logo{margin-right:0}.pp-footer-right{justify-content:center}}#project-name{display:flex;flex-direction:column;gap:2px}.project-title{font-size:20px;font-weight:600;color:#212529}.project-description{font-size:13px;color:#6c757d;white-space:pre-line}.widget-card{background:#fff;border:1px solid #dee2e6;border-radius:8px;margin-bottom:24px;box-shadow:0 1px 4px #0000000f}.widget-card-header{background:#f8f9fa;padding:12px 16px;border-bottom:1px solid #dee2e6;border-radius:8px 8px 0 0;font-weight:600;display:flex;align-items:center;justify-content:space-between}.widget-card-titlewrap{flex:1;min-width:0;display:flex;align-items:center;gap:8px}.widget-card-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.widget-scope-badge{display:inline-block;font-size:11px;font-weight:600;line-height:1.6;padding:1px 8px;border-radius:10px;margin-left:8px;white-space:nowrap;color:var(--scope-color);border:1px solid var(--scope-color);background:color-mix(in srgb,var(--scope-color) 10%,white)}.violin-controls{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:12px}.violin-controls-label{font-size:12px;font-weight:600;color:#6c757d}.dim-switch{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#495057;cursor:pointer;user-select:none}.dim-switch input{position:absolute;width:0;height:0;opacity:0}.dim-switch-track{position:relative;display:inline-block;width:28px;height:16px;background:#ced4da;border-radius:8px;flex-shrink:0;transition:background .15s}.dim-switch-track:before{content:"";position:absolute;left:2px;top:2px;width:12px;height:12px;background:#fff;border-radius:50%;transition:transform .15s}.dim-switch input:checked+.dim-switch-track{background:#0d6efd}.dim-switch input:checked+.dim-switch-track:before{transform:translate(12px)}.dim-switch input:focus-visible+.dim-switch-track{outline:2px solid #0d6efd;outline-offset:2px}.widget-info-btn{background:none;border:none;cursor:pointer;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:#6c757d;width:24px;height:24px;padding:0;border-radius:50%}.widget-info-btn:hover{color:#0d6efd;background:#eef4ff}.widget-info-icon{font-size:19px;line-height:1}.widget-info-panel{padding:12px 16px;background:#f0f7ff;border-bottom:1px solid #c8e1fb;font-size:13px;line-height:1.5}.widget-info-panel p{margin:0 0 4px}.widget-info-panel ul{margin:0 0 4px;padding-left:20px}.widget-info-panel li{margin-bottom:2px}.widget-info-panel code{background:#dceeff;padding:1px 4px;border-radius:3px;font-size:12px}.widget-card-body{padding:16px}.no-data{color:#aaa;padding:20px;text-align:center;font-size:14px}.widget-warning{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-radius:6px;font-size:13px;line-height:1.5;margin-bottom:16px}.widget-warning-icon{flex-shrink:0;font-size:15px;line-height:1.4}.widget-warning-red{background:#fdecea;border:1px solid #f5c6cb;color:#58151c}.widget-warning-yellow{background:#fff8e6;border:1px solid #ffe69c;color:#664500}.widget-warning code{background:#0000000f;padding:1px 4px;border-radius:3px}.widget-narrative{display:flex;gap:10px;align-items:center;width:100%;padding:10px 16px;border:none;border-radius:0;background:#f4eefc;border-bottom:1px solid #ddc9f7;color:#463a66;font-size:13px;line-height:1.5;text-align:left}button.widget-narrative{cursor:pointer}button.widget-narrative:hover{background:#ece0fb}.widget-narrative-icon{flex-shrink:0;font-size:16px;line-height:1.4}.widget-narrative-text{flex:1;min-width:0}.widget-narrative-text strong{color:#6f42c1}.widget-narrative-chevron{flex-shrink:0;color:#6f42c1;transition:transform .15s;font-size:12px}.widget-narrative[aria-expanded=true] .widget-narrative-chevron{transform:rotate(90deg)}.widget-narrative-warning{background:#fff8e6;border-bottom:1px solid #ffe69c;color:#664500}.widget-narrative-warning .widget-narrative-text strong{color:#9c6f00}.widget-narrative-warning.widget-narrative:hover{background:#fef0c7}.widget-narrative-warning .widget-narrative-chevron{color:#9c6f00}.gallery-summary{margin:0 0 28px}.gallery-summary>:first-child{margin-top:0}.widget-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px;margin-bottom:24px}.widget-tile{display:flex;flex-direction:column;text-align:left;height:300px;padding:0;overflow:hidden;background:#fff;border:1px solid #dee2e6;border-radius:10px;box-shadow:0 1px 4px #0000000f;cursor:pointer;font:inherit;color:inherit;transition:box-shadow .15s,transform .15s,border-color .15s}.widget-tile:hover{box-shadow:0 6px 18px #0000001f;transform:translateY(-2px);border-color:#adb5bd}.widget-tile:focus-visible{outline:2px solid #6f42c1;outline-offset:2px}.widget-tile-head{display:flex;align-items:center;gap:8px;flex-shrink:0;padding:12px 16px;background:#f8f9fa;border-bottom:1px solid #e9ecef}.widget-tile-title{font-size:18px;color:#212529;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-transform:uppercase;text-align:center}.widget-tile-plot{flex:1;min-height:0;margin:8px 8px 0;position:relative;overflow:hidden}.widget-tile-plot-empty{display:flex;align-items:center;justify-content:center;font-size:46px;opacity:.28;user-select:none}.widget-tile-plot-table:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(to bottom,transparent 75%,#fff)}.widget-tile-table-preview{position:absolute;top:0;left:0;width:100%;border-collapse:collapse;table-layout:fixed;font-size:11px;white-space:nowrap}.widget-tile-table-preview th,.widget-tile-table-preview td{border:1px solid #e9ecef;padding:4px 8px;text-align:left;overflow:hidden;text-overflow:ellipsis}.widget-tile-table-preview th{background:#f8f9fa;font-weight:600;color:#495057}.widget-tile-table-preview td{color:#212529}.widget-tile-msg{flex-shrink:0;display:flex;gap:6px;align-items:flex-start;height:52px;box-sizing:border-box;overflow:hidden;padding:8px 16px;font-size:12.5px;line-height:1.4;color:#5a5170}.widget-tile-msg span:last-child{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.widget-tile-msg strong{color:#6f42c1}.widget-tile-msg-icon{flex-shrink:0}.widget-tile-msg-warning{background:#fff8e6;color:#8a6d3b}.widget-tile-msg-warning strong{color:#8a5a00}.widget-tile-open{flex-shrink:0;height:34px;display:flex;align-items:center;padding:0 16px;border-top:1px solid #efecf5;font-size:12px;font-weight:600;color:#6f42c1;opacity:.7;transition:opacity .15s}.widget-tile:hover .widget-tile-open,.widget-tile:focus-visible .widget-tile-open{opacity:1;text-decoration:underline}.widget-cell{min-width:0}.widget-cell>.widget-tile{width:100%}.widget-cell-expanded{grid-column:1 / -1;scroll-margin-top:16px}.widget-cell-card{animation:gallery-open-in .22s ease}@keyframes gallery-open-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.widget-card-header-collapsible{cursor:pointer}.widget-card-header-collapsible:hover{background:#f4eefc}.widget-card-close{flex-shrink:0;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid transparent;border-radius:6px;font-size:20px;line-height:1;color:#6c757d;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.widget-card-close:hover{background:#f4eefc;border-color:#c3a6ee;color:#6f42c1}.kpi-row{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px}.kpi-tile{flex:1 1 140px;background:#f8f9fa;border:1px solid #dee2e6;border-radius:8px;padding:12px 16px;text-align:center;display:flex;flex-direction:column;justify-content:space-between}.kpi-value{font-size:24px;font-weight:700;color:#212529;line-height:1.2;word-break:break-word}.kpi-label{font-size:14px;color:#6c757d;margin-top:4px}.summary-meta-line{font-size:13px;color:#6c757d;word-break:break-all;margin-bottom:8px}.summary-meta-line code{color:inherit;background:#f1f3f5;padding:1px 5px;border-radius:3px;font-size:12px}.stat-table{width:100%;border-collapse:collapse;font-size:14px}.stat-table th,.stat-table td{padding:6px 10px;border:1px solid #dee2e6}.stat-table th{background:#f8f9fa;font-weight:600}.stat-table tr:hover{background:#f0f4ff}.group-color-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px;vertical-align:middle;flex-shrink:0}.legend{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.legend-item{display:flex;align-items:center;gap:4px;font-size:12px}.legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.bar-cell{position:relative;min-width:70px;padding:2px 0}.bar-cell-fill{position:absolute;inset:2px 0;opacity:.25;border-radius:3px}.bar-cell-value{position:relative;padding-left:6px}canvas{image-rendering:pixelated;max-width:100%}.topbar-left,.topbar-right{display:flex;align-items:center;gap:12px;flex:1 1 0;min-width:0}.topbar-right{justify-content:flex-end}.topbar-center{display:flex;align-items:center;gap:8px;flex:0 0 auto}#current-filename{max-width:240px}.view-toggle{display:inline-flex;border:1px solid #dee2e6;border-radius:999px;overflow:hidden;background:#f8f9fa;flex-shrink:0}.view-toggle-btn{border:none;background:transparent;padding:4px 0;width:72px;text-align:center;font-size:13px;font-weight:500;color:#6c757d;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s;line-height:1.4}.view-toggle-btn[aria-pressed=true]{background:#fff;color:#212529;box-shadow:0 1px 3px #0000001f;border-radius:999px}.view-toggle-btn:not([aria-pressed=true]):hover{color:#212529}.view-icon{display:none}.view-label{display:inline}@media(max-width:640px){.view-icon{display:inline}.view-label{display:none}.view-toggle-btn{width:36px}#topbar-brand{display:none}#row-count-badge{display:none!important}.across-dims-wrap{max-width:100%!important}}.topbar-icon{height:28px;width:auto}.topbar-brand{font-weight:600;font-size:16px;white-space:nowrap}.export-btn-list{display:flex;flex-direction:column;gap:8px}.export-opt-btn{width:100%;text-align:left;padding:6px 10px;background:#fff;border:1px solid #dee2e6;border-radius:6px;font:inherit;font-size:.85rem;font-weight:600;color:#212529;cursor:pointer;transition:background .12s,border-color .12s}.export-opt-btn:hover{background:#f4eefc;border-color:#c3a6ee}.export-opt-btn:disabled{opacity:.55;cursor:default}.export-opt-desc{font-size:.72rem;line-height:1.3;color:#6c757d;margin:4px 2px 0}.feedback-privacy-note{font-size:.72rem;line-height:1.35;color:#8a6d3b;background:#fff8e6;border:1px solid #f3e2b3;border-radius:6px;padding:6px 8px;margin-bottom:10px}.feedback-privacy-note strong{color:#6b5320}.pp-footer{background:#212529;margin-top:auto}.pp-footer-inner{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;padding:16px 20px}.pp-footer-left{display:flex;align-items:center}.pp-footer-right{display:flex;align-items:center;gap:16px}.pp-footer-logo{height:36px;width:auto;margin-right:14px;vertical-align:middle}.pp-footer-text{font-size:12px;line-height:1.4;color:#adb5bd}.pp-footer-link{color:#adb5bd;text-decoration:none;font-size:12px}.pp-footer-link:hover{color:#dee2e6}.pp-footer-link-light{color:#dee2e6;text-decoration:none}.pp-footer-link-light:hover{text-decoration:underline}#report-info{background:#f8f9fa;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6;padding:10px 20px;font-size:12px;line-height:1.5}.ri-row{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px}.ri-main{margin-bottom:4px}.ri-head{display:flex;align-items:baseline;gap:8px;flex:1;min-width:0}@media(max-width:600px){.ri-head{flex:0 0 100%}}.ri-name{font-weight:600;font-size:13px;color:#212529;white-space:nowrap}.ri-desc{flex:0 0 100%;color:#6c757d;white-space:pre-line}.ri-chips{display:flex;flex-wrap:wrap;gap:5px}.ri-chip{background:#e9ecef;color:#495057;border-radius:10px;padding:1px 9px;font-size:11px;white-space:nowrap}.ri-sub{color:#6c757d;font-size:11px;flex-wrap:wrap}.ri-paths{flex:0 0 100%;word-break:break-all}.ri-label{color:#495057;font-weight:500}.ri-sep{color:#ced4da}
