.spring-tabs{border-bottom:1px solid var(--border);scrollbar-width:none;gap:.25rem;margin-bottom:.75rem;display:flex;overflow-x:auto}.spring-tabs::-webkit-scrollbar{display:none}.spring-tab-btn{color:var(--text-dim);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.5rem 1rem;font-size:.85rem;font-weight:600;transition:all .15s}.spring-tab-btn:hover{color:var(--text)}.spring-tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.systems-selector-row{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.system-btn{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-surface);color:var(--text-dim);cursor:pointer;padding:.35rem .75rem;font-size:.85rem;font-weight:500;transition:all .15s}.system-btn:hover{color:var(--text);background:var(--bg-hover)}.system-btn.active{color:#fff;background:var(--accent);border-color:var(--accent)}.spring-inputs-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:16px;display:grid}.spring-inputs-grid .field{flex-direction:column;gap:6px;display:flex}.spring-inputs-grid .field label{color:var(--text-dim);justify-content:space-between;font-size:.85rem;font-weight:500;display:flex}.spring-inputs-grid .field label span.val-display{font-family:var(--font-mono);color:var(--text);font-weight:600}.spring-inputs-grid .field input[type=range]{width:100%}.hidden{display:none!important}.spring-chart-shell{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-surface);width:100%;min-width:0;max-width:100%;margin-bottom:16px;position:relative;overflow:hidden}.spring-chart-actions{z-index:2;gap:.5rem;display:flex;position:absolute;top:.5rem;right:.5rem}.spring-fs-btn,.spring-play-btn{background:color-mix(in srgb, var(--bg-surface) 82%, transparent);width:1.7rem;height:1.7rem;color:var(--text);cursor:pointer;border:0;border-radius:.4rem;justify-content:center;align-items:center;font-size:.95rem;line-height:1;display:inline-flex}.spring-fs-btn:hover,.spring-play-btn:hover{color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, transparent)}.spring-canvas-wrap{width:100%;height:auto;display:block;position:relative}#spring-canvas{width:100%;height:auto;display:block}.spring-chart-shell:fullscreen{background:var(--bg);justify-content:center;align-items:center;width:100vw;height:100vh;padding:1.5rem;display:flex}.spring-chart-shell:fullscreen .spring-canvas-wrap{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.spring-chart-shell:fullscreen #spring-canvas{object-fit:contain;max-width:100%;max-height:100%}#result-area{margin-top:12px}#result-area .bd-row{align-items:flex-start}#result-area .bd-row>span{min-width:12rem;padding-top:.4rem}#result-area .bd-row>strong{text-align:left;white-space:normal;-webkit-overflow-scrolling:touch;min-width:0;max-width:100%;display:block;overflow:auto hidden}#result-area .bd-row>strong .katex-display{max-width:100%;margin:.05rem 0;overflow:auto hidden}.info-note{margin:.5rem 0 1rem}.playback-row{align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.playback-row .btn{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-surface);color:var(--text);cursor:pointer;align-items:center;gap:.4rem;padding:.4rem .85rem;font-size:.85rem;font-weight:600;display:inline-flex}.playback-row .btn .btn-icon{font-size:.75rem;line-height:1}.playback-row .btn:hover{background:var(--bg-hover)}.playback-row .btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.playback-row .btn-primary:hover{background:var(--accent-dim);border-color:var(--accent-dim)}@media (width<=600px){.spring-tabs{border-bottom:none;grid-template-columns:repeat(2,1fr);gap:.5rem;margin-bottom:1rem;display:grid}.spring-tab-btn{border:1px solid var(--border);border-radius:var(--radius);text-align:center;background:var(--bg-surface);margin-bottom:0;padding:.6rem .5rem}.spring-tab-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.spring-inputs-grid{grid-template-columns:1fr}.playback-row{flex-wrap:wrap}}
