:root{--surface:#0b1326;--surface-dim:#0b1326;--surface-bright:#31394d;--surface-container-lowest:#060e20;--surface-container-low:#131b2e;--surface-container:#171f33;--surface-container-high:#222a3d;--surface-container-highest:#2d3449;--on-surface:#dae2fd;--on-surface-variant:#bdc8d1;--inverse-surface:#dae2fd;--inverse-on-surface:#283044;--outline:#87929a;--outline-variant:#3e484f;--primary:#8ed5ff;--on-primary:#00354a;--primary-container:#38bdf8;--on-primary-container:#004965;--inverse-primary:#00668a;--surface-tint:#7bd0ff;--secondary:#45dfa4;--on-secondary:#003825;--secondary-container:#00bd85;--on-secondary-container:#00452e;--tertiary:#e1bfff;--on-tertiary:#490080;--tertiary-container:#ce9bff;--on-tertiary-container:#6400ac;--error:#ffb4ab;--on-error:#690005;--error-container:#93000a;--on-error-container:#ffdad6;--unit:4px;--stack-sm:8px;--stack-md:16px;--stack-lg:32px;--gutter:16px;--container-padding:24px;--rounded-sm:2px;--rounded:4px;--rounded-md:6px;--rounded-lg:8px;--rounded-xl:12px;--rounded-full:9999px;--chart-1:#8ed5ff;--chart-2:#ce9bff;--chart-3:#45dfa4;--chart-4:#ffb4ab;--chart-5:#7bd0ff;--chart-6:#e1bfff;--chart-7:#68fcbf}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{color:var(--on-surface);background-color:var(--surface);min-height:100vh;font-family:Inter,system-ui,-apple-system,sans-serif;font-size:16px;font-weight:400;line-height:24px;overflow:hidden}#root{flex-direction:column;height:100vh;display:flex;overflow:hidden}.typo-headline-xl{letter-spacing:-.02em;font-family:Inter,sans-serif;font-size:36px;font-weight:700;line-height:44px}.typo-headline-lg{letter-spacing:-.01em;font-family:Inter,sans-serif;font-size:28px;font-weight:600;line-height:36px}.typo-headline-md{font-family:Inter,sans-serif;font-size:20px;font-weight:600;line-height:28px}.typo-body-lg{font-family:Inter,sans-serif;font-size:18px;font-weight:400;line-height:28px}.typo-body-md{font-family:Inter,sans-serif;font-size:16px;font-weight:400;line-height:24px}.typo-body-sm{font-family:Inter,sans-serif;font-size:14px;font-weight:400;line-height:20px}.typo-data{letter-spacing:.02em;font-family:JetBrains Mono,monospace;font-size:14px;font-weight:500;line-height:20px}.typo-label-caps{letter-spacing:.05em;text-transform:uppercase;font-family:Inter,sans-serif;font-size:12px;font-weight:700;line-height:16px}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.custom-scroll{scrollbar-width:thin;scrollbar-color:var(--outline) var(--surface-container-lowest);overscroll-behavior-y:contain}.custom-scroll::-webkit-scrollbar{width:8px;height:8px}.custom-scroll::-webkit-scrollbar-track{background:var(--surface-container-lowest);border-radius:var(--rounded-full)}.custom-scroll::-webkit-scrollbar-thumb{background:var(--outline-variant);border-radius:var(--rounded-full);border:2px solid var(--surface-container-lowest)}.custom-scroll::-webkit-scrollbar-thumb:hover{background:var(--outline)}.app-layout{flex-direction:column;height:100vh;display:flex;overflow:hidden}input[type=range]{appearance:none;background:var(--surface-container-highest);border-radius:var(--rounded-full);cursor:pointer;outline:none;width:100%;height:4px}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--primary);cursor:pointer;border:2px solid var(--surface);border-radius:50%;width:16px;height:16px;transition:box-shadow .2s;box-shadow:0 0 8px #8ed5ff80}input[type=range]::-webkit-slider-thumb:hover{box-shadow:0 0 12px #8ed5ffcc}input[type=range]::-moz-range-thumb{background:var(--primary);cursor:pointer;border:2px solid var(--surface);border-radius:50%;width:16px;height:16px;box-shadow:0 0 8px #8ed5ff80}input[type=checkbox]{appearance:none;border:1px solid var(--outline);border-radius:var(--rounded-sm);background:var(--surface-container);cursor:pointer;flex-shrink:0;width:16px;height:16px;position:relative}input[type=checkbox]:checked{background:var(--primary);border-color:var(--primary)}input[type=checkbox]:checked:after{content:"✓";color:var(--on-primary);font-size:11px;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.btn{cursor:pointer;white-space:nowrap;border:none;justify-content:center;align-items:center;gap:8px;font-family:Inter,sans-serif;transition:all .2s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:var(--on-primary);border-radius:var(--rounded-xl);padding:12px 16px;font-size:20px;font-weight:600;line-height:28px;box-shadow:0 0 15px #38bdf833}.btn-primary:hover:not(:disabled){background:var(--primary-container);box-shadow:0 0 20px #38bdf859}.btn-secondary{background:var(--surface-container);color:var(--secondary);border:1px solid var(--secondary);border-radius:var(--rounded-lg);padding:8px 16px;font-size:16px;font-weight:400;line-height:24px}.btn-secondary:hover:not(:disabled){background:var(--secondary-container);color:var(--on-secondary-container)}.btn-ghost{background:var(--surface-container);color:var(--on-surface);border:1px solid var(--outline-variant);border-radius:var(--rounded);padding:6px 12px;font-size:14px;font-weight:400;line-height:20px}.btn-ghost:hover:not(:disabled){background:var(--surface-container-high)}.card{background:var(--surface-container);border:1px solid var(--outline-variant);border-radius:var(--rounded-lg);overflow:hidden}.card-header{border-bottom:1px solid var(--outline-variant);background:var(--surface-container-high);justify-content:space-between;align-items:center;padding:12px;display:flex}.card-body{padding:16px}.chart-dot-grid{background-image:radial-gradient(circle at 1px 1px, var(--outline-variant) 1px, transparent 0);background-size:24px 24px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinner{border:2px solid #ffffff4d;border-top-color:currentColor;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}.color-dot{border-radius:50%;flex-shrink:0;width:12px;height:12px}.color-dot-sm{border-radius:50%;flex-shrink:0;width:10px;height:10px}.material-symbols-outlined{font-variation-settings:"FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24}.modal-overlay{z-index:100;padding:var(--container-padding);background:#0009;justify-content:center;align-items:center;animation:.15s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--surface-container);border:1px solid var(--outline-variant);border-radius:var(--rounded-xl);width:100%;max-width:540px;max-height:80vh;overflow-y:auto;box-shadow:0 10px 30px #00000080}.modal-header{border-bottom:1px solid var(--outline-variant);justify-content:space-between;align-items:center;padding:20px 24px 16px;display:flex}.modal-body{flex-direction:column;gap:20px;padding:24px;display:flex}.modal-footer{border-top:1px solid var(--outline-variant);justify-content:flex-end;gap:12px;padding:16px 24px;display:flex}.field-group{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--on-surface-variant);font-size:14px;font-weight:400}.field-input{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--rounded);color:var(--on-surface);outline:none;width:100%;padding:8px 12px;font-family:JetBrains Mono,monospace;font-size:14px;transition:border-color .2s}.field-input:focus{border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.add-method-option{background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:var(--rounded-lg);cursor:pointer;width:100%;color:var(--on-surface);justify-content:space-between;align-items:center;padding:12px 16px;transition:all .15s;display:flex}.add-method-option:hover{background:var(--surface-container-high);border-color:var(--primary)}.add-method-option-left{align-items:center;gap:16px;display:flex}.add-method-option-id{color:var(--primary);min-width:56px}.add-method-option-name{color:var(--on-surface-variant);font-size:14px}@media (width<=768px){:root{--container-padding:16px}.app-main{flex-direction:column!important}.control-panel{border-bottom:1px solid var(--outline-variant);max-height:45vh;border-right:none!important;width:100%!important}.viz-area{flex:1;min-height:40vh}.btn-primary{padding:10px 16px;font-size:16px}}.topnav{background:var(--surface-container-low);border-bottom:1px solid var(--outline-variant);padding:var(--stack-sm) var(--container-padding);z-index:10;flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.topnav-left{align-items:center;gap:16px;display:flex}.topnav-brand{background:linear-gradient(135deg, var(--primary), var(--secondary));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-family:Inter,sans-serif;font-size:20px;font-weight:700}.topnav-subtitle{color:var(--on-surface-variant);font-size:16px}.topnav-right{align-items:center;gap:16px;display:flex}.topnav-settings-btn{border-radius:var(--rounded-lg);align-items:center;gap:8px;padding:8px 12px;display:flex}.topnav-settings-label{font-size:14px}.topnav-lang-btn{border-radius:var(--rounded-lg);color:var(--on-surface-variant);align-items:center;gap:6px;padding:8px 12px;font-size:14px;font-weight:500;transition:all .2s;display:flex}.topnav-lang-btn:hover{color:var(--primary);background:var(--surface-container)}.topnav-lang-label{font-size:14px}.topnav-share-btn{border-radius:var(--rounded-lg);color:var(--on-surface-variant);align-items:center;gap:6px;padding:8px 12px;font-size:14px;transition:all .2s;display:flex}.topnav-share-btn:hover{color:var(--primary);background:var(--surface-container)}.topnav-share-btn.copied{color:var(--tertiary,#34d399);background:#34d3991f}.topnav-share-label{font-size:14px}.preset-dropdown-container{display:inline-block;position:relative}.topnav-preset-btn{border-radius:var(--rounded-lg)!important;background:var(--surface-container)!important;color:var(--primary)!important;border:1px solid var(--primary)!important;padding:8px 12px!important;font-size:14px!important;font-weight:500!important}.topnav-preset-btn:hover{background:var(--primary-container)!important;color:var(--on-primary-container)!important}.preset-dropdown-menu{background:var(--surface-container-high);border:1px solid var(--outline-variant);border-radius:var(--rounded-lg);z-index:100;flex-direction:column;gap:4px;width:320px;padding:8px;display:flex;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 8px 24px #00000080}.preset-dropdown-item{text-align:left;width:100%;color:var(--on-surface);cursor:pointer;border-radius:var(--rounded-md);background:0 0;border:none;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 12px;transition:background .15s;display:flex}.preset-dropdown-item:hover{background:var(--surface-container-highest)}.preset-item-title{color:var(--primary);font-size:14px;font-weight:600}.preset-item-theme{color:var(--on-surface-variant);font-size:12px;line-height:1.4}@media (width<=768px){.topnav-subtitle,.topnav-settings-label,.topnav-preset-label,.topnav-lang-label,.topnav-share-label{display:none}}.obs-tabs-container{background:var(--surface-container-low);border-bottom:1px solid var(--outline-variant);padding:8px var(--container-padding) 6px;flex-shrink:0}.obs-tabs-main-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.obs-tabs-left{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.obs-tabs-row{gap:16px;display:flex}.obs-tab{letter-spacing:.05em;text-transform:uppercase;color:var(--on-surface-variant);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding-bottom:4px;font-family:Inter,sans-serif;font-size:12px;font-weight:700;line-height:16px;transition:color .2s,border-color .2s}.obs-tab:hover{color:var(--on-surface)}.obs-tab--active{color:var(--primary);border-bottom-color:var(--primary)}.obs-tabs-desc{color:var(--outline);padding-bottom:0;font-size:13px}.obs-tabs-right{align-items:center;gap:10px;display:flex}.obs-count-badge{color:var(--on-surface-variant);background:var(--surface-container-lowest);border-radius:var(--rounded-md);border:1px solid var(--outline-variant);padding:3px 10px;font-size:12px}.obs-count-badge strong{color:var(--primary)}.obs-grid-toggle-btn{border:1px solid var(--outline-variant);color:var(--on-surface-variant);border-radius:var(--rounded-md);cursor:pointer;background:0 0;align-items:center;gap:4px;padding:3px 8px;font-size:11px;font-weight:500;transition:all .2s;display:inline-flex}.obs-grid-toggle-btn:hover{background:var(--surface-container-high);color:var(--on-surface);border-color:var(--outline)}.obs-grid-strip{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--rounded-md);margin-top:6px;margin-bottom:2px;padding:6px 10px 4px}.obs-grid-points{scrollbar-width:thin;gap:6px;padding-bottom:2px;display:flex;overflow-x:auto}.obs-grid-point-col{font:inherit;color:inherit;background:0 0;border:none;flex-direction:column;flex-shrink:0;align-items:center;gap:2px;min-width:18px;margin:0;padding:0;display:flex}.obs-grid-point-dot{border-radius:50%;width:9px;height:9px;transition:background-color .2s,border-color .2s,box-shadow .2s,transform .2s}.obs-grid-point-dot--observed{background-color:var(--primary);box-shadow:0 0 6px #8ed5ffcc}.obs-grid-point-dot--unobserved{background-color:var(--outline-variant);border:1px solid var(--outline)}.obs-grid-point-label{color:var(--outline);font-size:9px;line-height:1}.obs-custom-actions{align-items:center;gap:8px;display:flex}.obs-custom-btn{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);color:var(--on-surface-variant);border-radius:var(--rounded-md);cursor:pointer;padding:3px 8px;font-family:Inter,sans-serif;font-size:11px;font-weight:500;transition:all .2s}.obs-custom-btn:hover{background:var(--surface-container-high);color:var(--on-surface);border-color:var(--outline)}.obs-grid-point-col--clickable{cursor:pointer}.obs-grid-point-col--clickable:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}.obs-grid-point-col--clickable:hover .obs-grid-point-dot{transform:scale(1.3)}.obs-grid-point-col--clickable:hover .obs-grid-point-dot--observed{background-color:var(--primary-container);box-shadow:0 0 10px #8ed5ff}.obs-grid-point-col--clickable:hover .obs-grid-point-dot--unobserved{border-color:var(--primary);background-color:var(--surface-container-highest)}.obs-grid-point-col--clickable:hover .obs-grid-point-label{color:var(--on-surface)}.edu-tooltip-container{vertical-align:middle;margin-left:6px;line-height:1;display:inline-flex;position:relative}.edu-tooltip-trigger{color:var(--outline);cursor:pointer;border-radius:var(--rounded-full);background:0 0;border:none;outline:none;justify-content:center;align-items:center;padding:2px;transition:all .2s;display:flex}.edu-tooltip-trigger:hover,.edu-tooltip-trigger.active{color:var(--primary);background:#8ed5ff1a}.edu-tooltip-trigger .material-symbols-outlined{font-variation-settings:"FILL" 0, "wght" 500, "GRAD" 0, "opsz" 20;font-size:16px!important}.edu-tooltip-box{background:var(--surface-container-highest);border:1px solid var(--primary);border-radius:var(--rounded-lg);z-index:1000;cursor:default;text-align:left;flex-direction:column;width:280px;max-height:320px;font-family:Inter,sans-serif;display:flex;position:absolute;overflow-y:auto;box-shadow:0 8px 32px #000000b3}.edu-tooltip-box.edu-tooltip-align-center{left:50%;transform:translate(-50%)}.edu-tooltip-box.edu-tooltip-align-left{left:0;transform:none}.edu-tooltip-box.edu-tooltip-align-right{left:auto;right:0;transform:none}.edu-tooltip-box.edu-tooltip-pos-bottom{top:calc(100% + 6px);bottom:auto}.edu-tooltip-box.edu-tooltip-pos-top{top:auto;bottom:calc(100% + 6px)}@media (width<=480px){.edu-tooltip-box{width:250px}}.edu-tooltip-container.mode-inline{display:inline-flex;position:static}.slider-group{flex-direction:column;display:flex;position:relative}.edu-help-inline{background:var(--surface-container-highest);border:1px solid var(--primary);border-radius:var(--rounded-lg);box-sizing:border-box;width:100%;margin-top:10px;animation:.22s cubic-bezier(.16,1,.3,1) slideDown;display:block;overflow:hidden;box-shadow:inset 0 2px 6px #0006}@keyframes slideDown{0%{opacity:0;max-height:0;transform:translateY(-8px)}to{opacity:1;max-height:500px;transform:translateY(0)}}.edu-tooltip-header,.edu-help-inline-header{background:var(--surface-container-high);border-bottom:1px solid var(--outline-variant);z-index:2;justify-content:space-between;align-items:center;padding:8px 12px;display:flex;position:sticky;top:0}.edu-tooltip-title,.edu-help-inline-title{color:var(--primary);font-size:12px;font-weight:600;line-height:1.3}.edu-tooltip-close,.edu-help-inline-close{color:var(--outline);cursor:pointer;border-radius:var(--rounded);background:0 0;border:none;justify-content:center;align-items:center;padding:2px;transition:color .15s;display:flex}.edu-tooltip-close:hover,.edu-help-inline-close:hover{color:var(--on-surface)}.edu-tooltip-close .material-symbols-outlined,.edu-help-inline-close .material-symbols-outlined{font-size:14px!important}.edu-tooltip-body,.edu-help-inline-body{flex-direction:column;gap:12px;padding:12px;display:flex}.edu-tooltip-section,.edu-help-inline-section{flex-direction:column;gap:4px;display:flex}.edu-tooltip-sec-title,.edu-help-inline-sec-title{color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:700}.edu-tooltip-sec-text,.edu-help-inline-text{color:var(--on-surface);font-size:12px;line-height:1.5}.edu-tooltip-sec-formula,.edu-help-inline-formula{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--rounded);color:var(--secondary);white-space:pre-wrap;word-break:break-all;padding:8px;font-family:JetBrains Mono,monospace;font-size:11px;line-height:1.4}.divergence-badge-container{vertical-align:middle;display:inline-flex}.divergence-badge{color:var(--error);border:1px solid var(--error);border-radius:var(--rounded);cursor:pointer;white-space:nowrap;background-color:#ffb4ab26;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:700;line-height:1.2;transition:all .15s;display:inline-flex}.divergence-badge:hover,.divergence-badge.active{background-color:#ffb4ab40;box-shadow:0 0 8px #ffb4ab4d}.method-card{flex-shrink:0;transition:border-color .2s,opacity .2s}.method-card.is-hidden{opacity:.5}.method-card:hover{border-color:var(--outline)}.method-card-header{padding:12px}.method-card-title{align-items:center;gap:8px;display:flex}.method-card-name{color:var(--on-surface)}.method-card-actions{position:relative}.method-card-menu-btn{color:var(--outline);cursor:pointer;border-radius:var(--rounded);background:0 0;border:none;padding:4px;transition:color .2s}.method-card-menu-btn:hover{color:var(--on-surface)}.method-card-dropdown{background:var(--surface-container-high);border:1px solid var(--outline-variant);border-radius:var(--rounded-lg);z-index:20;min-width:120px;padding:4px;position:absolute;top:100%;right:0;box-shadow:0 4px 12px #0006}.method-card-dropdown button{width:100%;color:var(--error);cursor:pointer;border-radius:var(--rounded);background:0 0;border:none;align-items:center;gap:8px;padding:8px 12px;font-size:14px;transition:background .15s;display:flex}.method-card-dropdown button:hover{background:var(--surface-container-highest)}.method-card-body{flex-direction:column;gap:16px;display:flex}.slider-group{flex-direction:column;gap:4px;display:flex}.slider-group input[type=range]{touch-action:pan-y}.slider-header{justify-content:space-between;align-items:center;display:flex}.slider-label-wrapper{align-items:center;display:inline-flex}.slider-label{color:var(--on-surface-variant);font-size:14px}.slider-value{font-weight:500}.method-card-stats-wrapper{flex-direction:column;gap:10px;width:100%;display:flex}.method-card-stats{border-top:1px solid #3e484f80;justify-content:space-between;align-items:center;padding-top:8px;display:flex}.stat-item{align-items:center;gap:4px;display:flex}.stat-label-wrapper{align-items:center;display:inline-flex}.stat-label{color:var(--outline)}.stat-value{color:var(--on-surface)}.control-panel{background:var(--surface-container-lowest);border-right:1px solid var(--outline-variant);flex-direction:column;flex-shrink:0;width:360px;height:100%;max-height:100vh;transition:width .25s cubic-bezier(.4,0,.2,1);display:flex;position:relative;overflow:hidden}.control-panel.is-collapsed{width:64px}.cp-header{border-bottom:1px solid var(--outline-variant);flex-shrink:0;justify-content:space-between;align-items:center;min-height:56px;padding:14px 16px;display:flex}.cp-add-btn{padding:4px 8px;font-size:13px}.cp-collapse-btn,.cp-expand-btn{border-radius:var(--rounded);color:var(--outline);cursor:pointer;justify-content:center;align-items:center;padding:4px;transition:color .15s,background-color .15s;display:flex}.cp-collapse-btn:hover,.cp-expand-btn:hover{color:var(--primary);background-color:#8ed5ff1a}.cp-collapsed-header{justify-content:center;align-items:center;width:100%;display:flex}.cp-cards{min-height:0;padding:var(--gutter);gap:var(--gutter);flex-direction:column;flex:auto;display:flex;overflow-y:scroll}.cp-collapsed-body{flex-direction:column;flex:auto;align-items:center;gap:16px;min-height:0;padding:12px 8px;display:flex;overflow-y:auto}.cp-collapsed-add-btn{border-radius:var(--rounded-full);border:1px dashed var(--outline-variant);width:40px;height:40px;color:var(--outline);cursor:pointer;justify-content:center;align-items:center;transition:all .2s;display:flex}.cp-collapsed-add-btn:hover{border-color:var(--primary);color:var(--primary);background:#8ed5ff1a}.cp-collapsed-methods{flex-direction:column;align-items:center;gap:12px;width:100%;display:flex}.cp-collapsed-method-item{background:var(--surface-container);border:1px solid var(--outline-variant);border-radius:var(--rounded-md);cursor:pointer;flex-direction:column;align-items:center;gap:4px;width:44px;padding:8px 4px;transition:all .2s;display:flex}.cp-collapsed-method-item:hover{border-color:var(--primary);background:var(--surface-container-high)}.cp-collapsed-method-item.is-hidden{opacity:.5;border-style:dashed}.cp-collapsed-label{font-size:10px;font-weight:700;line-height:1}.cp-empty{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:48px 16px;display:flex}.cp-footer{padding:var(--gutter);border-top:1px solid var(--outline-variant);background:var(--surface);flex-direction:column;flex-shrink:0;gap:12px;display:flex}.control-panel.is-collapsed .cp-footer{padding:12px 8px}.cp-collapsed-footer{flex-direction:column;align-items:center;gap:8px;width:100%;display:flex}.cp-collapsed-action-btn{border-radius:var(--rounded);justify-content:center;align-items:center;width:40px;height:40px;padding:0;display:flex;position:relative}.cp-run-btn{width:100%}@keyframes cp-btn-pulse{0%{box-shadow:0 0 #8ed5ffb3}70%{box-shadow:0 0 0 10px #8ed5ff00}to{box-shadow:0 0 #8ed5ff00}}.cp-run-btn--pulse{animation:2s infinite cp-btn-pulse}@keyframes cp-badge-pulse{0%{transform:scale(.95);box-shadow:0 0 #ffb4abb3}70%{transform:scale(1);box-shadow:0 0 0 6px #ffb4ab00}to{transform:scale(.95);box-shadow:0 0 #ffb4ab00}}.cp-run-badge{background-color:var(--error);border:1px solid var(--surface-container);border-radius:50%;width:10px;height:10px;animation:1.5s infinite cp-badge-pulse;position:absolute;top:4px;right:4px}.cp-csv-btn{width:100%}.cp-progress-bar{background:var(--surface-container-highest);border-radius:var(--rounded-full);width:100%;height:4px;overflow:hidden}.cp-progress-fill{background:var(--primary);border-radius:var(--rounded-full);height:100%;transition:width .3s}.viz-area{background:var(--surface);flex-direction:column;flex:1;display:flex;overflow:hidden}.viz-summary-bar{padding:10px var(--gutter);border-bottom:1px solid var(--outline-variant);scroll-behavior:smooth;-webkit-overflow-scrolling:touch;flex-shrink:0;gap:12px;display:flex;overflow:auto hidden}.viz-summary-bar::-webkit-scrollbar{height:6px}.viz-summary-bar::-webkit-scrollbar-track{background:var(--surface-container-lowest);border-radius:var(--rounded-full)}.viz-summary-bar::-webkit-scrollbar-thumb{background:var(--outline-variant);border-radius:var(--rounded-full)}.viz-summary-bar::-webkit-scrollbar-thumb:hover{background:var(--outline)}.viz-summary-card{flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;min-width:270px;padding:8px 14px;display:flex}.viz-summary-left{flex-shrink:0;align-items:center;gap:8px;display:flex}.viz-summary-name{color:var(--on-surface);white-space:nowrap;font-size:13.5px;font-weight:600}.viz-summary-metrics{gap:16px;display:flex}.viz-summary-metric{flex-direction:column;align-items:flex-end;display:flex}.viz-chart-wrapper{padding:var(--gutter);flex-direction:column;flex:1;display:flex;position:relative;overflow:hidden}.viz-chart-header{flex-shrink:0;justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.viz-chart-canvas-wrapper{background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:var(--rounded-xl);flex:1;min-height:0;padding:8px;position:relative;overflow:hidden}.viz-chart-canvas-wrapper canvas{width:100%!important;height:100%!important}.viz-chart-placeholder{z-index:1;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.viz-legend{padding:var(--gutter);border-top:1px solid var(--outline-variant);background:var(--surface);flex-shrink:0;justify-content:center;gap:24px;display:flex}.viz-legend-item{cursor:pointer;color:var(--on-surface-variant);align-items:center;gap:8px;font-size:14px;transition:color .2s;display:flex}.viz-legend-item:hover{color:var(--on-surface)}.viz-legend-line{flex-shrink:0;width:12px;height:0}.viz-legend-solid{border-top:3px solid var(--primary);border-radius:var(--rounded-full)}.viz-legend-dashed{border-top:2px dashed var(--outline);border-radius:var(--rounded-full)}.viz-tab-row{background:var(--surface-container-low);border-radius:var(--rounded-lg);border:1px solid var(--outline-variant);gap:8px;padding:4px;display:flex}.viz-tab-btn{color:var(--on-surface-variant);border-radius:var(--rounded-md);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:6px 16px;font-family:Inter,sans-serif;font-size:14px;font-weight:600;transition:all .2s}.viz-tab-btn:hover{color:var(--on-surface);background:var(--surface-container-high)}.viz-tab-btn--active{background:var(--primary);color:var(--on-primary)}.viz-tab-btn--active:hover{background:var(--primary-container);color:var(--on-primary-container)}.hov-method-selector-container{align-items:center;gap:8px;display:flex}.hov-method-select{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--rounded-md);color:var(--on-surface);cursor:pointer;outline:none;padding:6px 12px;font-family:Inter,sans-serif;font-size:14px;font-weight:500;transition:border-color .2s}.hov-method-select:focus{border-color:var(--primary)}.viz-slider-container{background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:var(--rounded-xl);flex-direction:column;flex-shrink:0;gap:8px;margin-top:16px;padding:12px 16px;display:flex}.viz-slider-header{justify-content:space-between;align-items:center;display:flex}.viz-slider-title{color:var(--on-surface-variant);font-size:14px;font-weight:600}.viz-slider-value{color:var(--primary);font-family:JetBrains Mono,monospace;font-size:14px;font-weight:700}.viz-slider{appearance:none;background:var(--surface-container-highest);border-radius:var(--rounded-full);cursor:pointer;width:100%;height:6px}.viz-slider::-webkit-slider-thumb{appearance:none;border-radius:var(--rounded-full);background:var(--primary);cursor:pointer;width:16px;height:16px;transition:transform .15s,background-color .15s}.viz-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.viz-slider::-moz-range-thumb{border-radius:var(--rounded-full);background:var(--primary);cursor:pointer;border:none;width:16px;height:16px;transition:transform .15s,background-color .15s}.viz-slider::-moz-range-thumb:hover{transform:scale(1.15)}.viz-slider:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.viz-playback-controls{border-top:1px dashed var(--outline-variant);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:8px;padding-top:8px;display:flex}.viz-playback-buttons{align-items:center;gap:8px;display:flex}.viz-playback-btn{background:var(--surface-container-high);border:1px solid var(--outline-variant);color:var(--on-surface);border-radius:var(--rounded-md);cursor:pointer;justify-content:center;align-items:center;width:36px;height:36px;transition:all .2s;display:inline-flex}.viz-playback-btn:hover{background:var(--surface-container-highest);border-color:var(--primary);color:var(--primary)}.viz-playback-btn:active{transform:scale(.95)}.viz-playback-btn .material-symbols-outlined{font-size:20px}.viz-play-pause-btn{background:var(--primary-container);color:var(--on-primary-container);border-color:var(--primary);width:44px;height:36px}.viz-play-pause-btn:hover{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.viz-speed-group{background:var(--surface-container-highest);border-radius:var(--rounded-md);border:1px solid var(--outline-variant);padding:2px;display:flex}.viz-speed-btn{color:var(--on-surface-variant);border-radius:var(--rounded-sm);cursor:pointer;background:0 0;border:none;padding:4px 10px;font-family:JetBrains Mono,monospace;font-size:13px;font-weight:600;transition:all .15s}.viz-speed-btn:hover{color:var(--on-surface)}.viz-speed-btn--active{background:var(--primary);color:var(--on-primary)}.hovmoller-view-container{flex-direction:column;min-height:0;display:flex;position:absolute;inset:8px}.hovmoller-canvas-wrapper{flex:1;min-height:0;position:relative}.hovmoller-canvas-wrapper canvas{display:block;width:100%!important;height:100%!important}.hovmoller-legend-container{border-top:1px solid var(--outline-variant);flex-shrink:0;justify-content:center;align-items:center;gap:12px;padding-top:12px;display:flex}.hovmoller-legend-text{color:var(--outline);font-size:12px;font-weight:600}.hovmoller-gradient-bar{border-radius:var(--rounded-sm);border:1px solid var(--outline-variant);background:linear-gradient(90deg,#0b1326 0%,#00668a 25%,#45dfa4 50%,#ffb4ab 75%,#fff 100%);width:200px;height:12px}@media (width<=768px){.viz-chart-header{flex-direction:column;align-items:flex-start;gap:12px}.hov-method-selector-container{justify-content:space-between;width:100%}.hov-method-select{width:70%}.viz-tab-row{white-space:nowrap;width:100%;overflow-x:auto}.viz-tab-btn{padding:6px 12px;font-size:13px}}.add-method-option-left{text-align:left;flex-direction:column;flex:1;align-items:flex-start;gap:4px;display:flex}.add-method-option-header{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.category-badge{border-radius:var(--rounded-full);align-items:center;padding:2px 8px;font-size:11px;font-weight:600;line-height:1.2;display:inline-flex}.category-kalman{color:var(--primary);background-color:#8ed5ff26;border:1px solid #8ed5ff4d}.category-ensemble{color:var(--secondary);background-color:#45dfa426;border:1px solid #45dfa44d}.category-variational{color:var(--tertiary);background-color:#e1bfff26;border:1px solid #e1bfff4d}.category-particle{color:var(--error);background-color:#ffb4ab26;border:1px solid #ffb4ab4d}.add-method-option-summary{color:var(--on-surface-variant);font-size:12px;line-height:1.4}
