*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-dark: #0f1117;--bg-surface: #1a1d27;--bg-glass: rgba(26, 29, 39, .7);--bg-canvas: #f5f6f8;--text-primary: #e8eaed;--text-secondary: #9aa0a8;--text-dark: #1f2937;--accent: #6366f1;--accent-hover: #818cf8;--accent-glow: rgba(99, 102, 241, .25);--border: rgba(255, 255, 255, .08);--border-light: rgba(0, 0, 0, .08);--radius: 12px;--radius-sm: 8px;--shadow-lg: 0 20px 60px rgba(0, 0, 0, .3);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .1);--transition: .2s cubic-bezier(.4, 0, .2, 1)}body{font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg-dark);color:var(--text-primary);min-height:100vh;-webkit-font-smoothing:antialiased}#app-header{background:linear-gradient(135deg,var(--bg-surface),#1e2132);border-bottom:1px solid var(--border);padding:1rem 2rem;position:sticky;top:0;z-index:100;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.header-inner{max-width:1600px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:.75rem}.brand-icon{font-size:2rem;line-height:1}.brand h1{font-size:1.25rem;font-weight:700;letter-spacing:-.02em;background:linear-gradient(135deg,#e8eaed,#9aa0a8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.brand-sub{font-size:.75rem;color:var(--text-secondary);font-weight:400}.nav-links{display:flex;gap:1rem}.nav-link{color:var(--text-secondary);text-decoration:none;font-size:.85rem;font-weight:500;padding:.4rem .8rem;border-radius:var(--radius-sm);transition:var(--transition);border:1px solid var(--border)}.nav-link:hover{color:var(--text-primary);background:var(--border);border-color:var(--text-secondary)}.back-link{color:var(--text-secondary);text-decoration:none;font-size:.85rem;font-weight:500;padding:.4rem .8rem;border-radius:var(--radius-sm);transition:var(--transition)}.back-link:hover{color:var(--text-primary);background:var(--border)}main{max-width:1600px;margin:0 auto;padding:1.5rem 2rem 3rem;display:flex;flex-direction:column;gap:1.5rem}.glass-panel{background:var(--bg-glass);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem}.control-row{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:1rem}.control-row:last-child{margin-bottom:0}.control-group{display:flex;flex-direction:column;gap:.35rem}.control-group label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary)}.title-group{flex:1;min-width:200px}.metric-select-group{flex:1;min-width:250px}select,input[type=text]{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);padding:.55rem .75rem;font-size:.875rem;font-family:inherit;transition:var(--transition);outline:none;width:100%}select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 5l3 3 3-3' fill='none' stroke='%239aa0a8' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2rem}select:focus,input[type=text]:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}select optgroup{font-weight:600;color:#666;background:#fff}select option{color:#333;background:#fff;padding:4px}input[type=text]::placeholder{color:var(--text-secondary);opacity:.6}.actions-row{gap:.75rem}button{display:inline-flex;align-items:center;gap:.5rem;padding:.6rem 1.25rem;border:none;border-radius:var(--radius-sm);font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:var(--transition);white-space:nowrap}.btn-primary{background:linear-gradient(135deg,var(--accent),#4f46e5);color:#fff;box-shadow:0 2px 12px var(--accent-glow)}.btn-primary:hover{background:linear-gradient(135deg,var(--accent-hover),#6366f1);box-shadow:0 4px 20px var(--accent-glow);transform:translateY(-1px)}.btn-secondary{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:#ffffff0d;border-color:var(--accent)}button:disabled{opacity:.4;cursor:not-allowed;transform:none!important}.btn-icon{font-size:1rem}#canvas-section{background:var(--bg-canvas);border-radius:var(--radius);min-height:400px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;box-shadow:var(--shadow-sm)}#plot-canvas{width:100%;overflow-x:auto;display:flex;justify-content:center;padding:1rem}#plot-canvas svg{max-width:100%;height:auto;border-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}#empty-state{text-align:center;padding:3rem;color:var(--text-dark)}#empty-state.hidden{display:none}.empty-icon{font-size:4rem;margin-bottom:1rem;opacity:.5}#empty-state h2{font-size:1.25rem;font-weight:600;color:#4b5563;margin-bottom:.5rem}#empty-state p{font-size:.9rem;color:#6b7280}#loading-indicator{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;background:#f5f6f8e6;z-index:10;color:var(--text-dark);font-size:.9rem;font-weight:500}#loading-indicator.hidden{display:none}.spinner{width:36px;height:36px;border:3px solid #e5e7eb;border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#metric-info{transition:var(--transition)}#metric-info.hidden{display:none}#metric-info h3{font-size:1rem;font-weight:700;margin-bottom:.35rem}#metric-info p{font-size:.85rem;color:var(--text-secondary);margin-bottom:.75rem;line-height:1.5}.stats-row{display:flex;gap:1.5rem;flex-wrap:wrap}.stat-item{display:flex;flex-direction:column;gap:.15rem}.stat-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary)}.stat-value{font-size:.95rem;font-weight:700;color:var(--text-primary)}.hidden{display:none!important}@media(max-width:768px){#app-header{padding:.75rem 1rem}.brand h1{font-size:1rem}main{padding:1rem}.control-row{flex-direction:column;gap:.75rem}.actions-row{flex-direction:row;flex-wrap:wrap}button{flex:1;min-width:120px;justify-content:center}}.playback-row{background:#ffffff05;border:1px solid var(--border);border-radius:var(--radius-sm);padding:.75rem 1.25rem;align-items:center;justify-content:space-between;gap:1.5rem;margin-bottom:1.25rem!important}.btn-play{background:var(--accent);color:#fff;border:none;font-family:inherit;font-size:.9rem;font-weight:600;padding:.6rem 1.2rem;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:var(--transition);box-shadow:0 4px 12px #6366f133;min-width:100px;justify-content:center;outline:none}.btn-play:hover{background:var(--accent-hover);box-shadow:0 6px 16px #6366f159}.btn-play.playing{background:#ef4444;box-shadow:0 4px 12px #ef444433}.btn-play.playing:hover{background:#f87171}.slider-container{flex-grow:1;display:flex;flex-direction:column;gap:.4rem}#timeline-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:#ffffff1a;outline:none;transition:opacity .2s;cursor:pointer}#timeline-slider:disabled{opacity:.5;cursor:not-allowed}#timeline-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:var(--accent);cursor:pointer;transition:var(--transition);border:2px solid var(--bg-surface);box-shadow:0 0 6px #0000004d}#timeline-slider::-webkit-slider-thumb:hover{transform:scale(1.15);background:var(--accent-hover)}#timeline-slider:active::-webkit-slider-thumb{transform:scale(1.2);background:#fff}.ticks{display:flex;justify-content:space-between;padding:0 4px}.tick{font-size:.7rem;color:var(--text-secondary);position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;transition:var(--transition)}.tick:hover{color:var(--text-primary)}.tick.active{color:var(--accent-hover);font-weight:700}.year-display{display:flex;align-items:center}.year-badge{font-size:1.5rem;font-weight:800;font-family:monospace;color:var(--text-primary);background:#0003;padding:.25rem .75rem;border-radius:var(--radius-sm);border:1px solid var(--border);letter-spacing:.05em;min-width:80px;text-align:center}.speed-group select,.interpolation-group select{background:var(--bg-surface);border:1px solid var(--border);color:var(--text-primary);padding:.5rem .75rem;border-radius:var(--radius-sm);outline:none;cursor:pointer;font-family:inherit;font-size:.8rem;transition:var(--transition)}.speed-group select:hover,.interpolation-group select:hover{border-color:var(--text-secondary)}
