.fs-tool{margin:18px 0 26px}.fs-controls{display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(220px,1.3fr) minmax(170px,.9fr) auto auto;gap:12px;align-items:end;border:1px solid #e9ecef;border-radius:8px;background:#f8f9fa;padding:14px;margin-bottom:14px}.fs-control label{display:flex;justify-content:space-between;gap:10px;color:#495057;font-size:.82rem;font-weight:600;margin-bottom:5px}.fs-control-value{color:#6c757d;font-weight:500;white-space:nowrap}.fs-control select,.fs-control input[type=number]{width:100%;border:1px solid #ced4da;border-radius:6px;padding:7px 9px;background:#fff}.fs-range-row{display:grid;grid-template-columns:1fr 68px;gap:8px;align-items:center}.fs-point-presets{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}.fs-point-presets button{border:1px solid #dee2e6;border-radius:999px;background:#fff;color:#495057;padding:2px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.75rem;line-height:1.45;cursor:pointer}.fs-point-presets button:hover{border-color:#0d6efd;color:#0d6efd}.fs-control input[type=range]{width:100%;accent-color:#0d6efd}.fs-action{min-height:39px;white-space:nowrap}.fs-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.9fr);gap:14px}.fs-panel{border:1px solid #e9ecef;border-radius:8px;background:#fff;overflow:hidden}.fs-panel-head{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:40px;border-bottom:1px solid #f1f3f5;padding:9px 12px}.fs-panel-head h2{color:#343a40;font-size:.92rem;font-weight:700;margin:0}.fs-panel-note{color:#6c757d;font-size:.78rem;text-align:right}.fs-canvas-wrap{height:330px;position:relative}.fs-canvas-wrap.tall{height:390px}.fs-canvas-wrap canvas{display:block;width:100%;height:100%}.fs-side{display:grid;gap:14px}.fs-info{padding:13px 14px}.fs-formula{display:block;color:#0b7285;background:#f1fbfd;border:1px solid #d0f0f5;border-radius:6px;padding:10px 12px;overflow-x:auto;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.88rem;line-height:1.45}.fs-formula+.fs-formula{margin-top:8px}.fs-formula-label{display:block;color:#6c757d;font-size:.76rem;font-weight:700;margin:10px 0 4px}.fs-summary{color:#495057;font-size:.9rem;line-height:1.55;margin:11px 0 0}.fs-metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.fs-metric{background:#f8f9fa;border:1px solid #edf0f2;border-radius:6px;padding:8px 10px}.fs-metric span{display:block;color:#6c757d;font-size:.75rem;margin-bottom:2px}.fs-metric strong{color:#212529;font-size:.95rem;font-weight:700}.fs-table-wrap{max-height:245px;overflow:auto;border-top:1px solid #f1f3f5}.fs-table{width:100%;border-collapse:collapse;font-size:.82rem}.fs-table th,.fs-table td{border-bottom:1px solid #f1f3f5;padding:7px 10px;text-align:left;white-space:nowrap}.fs-table th{position:sticky;top:0;z-index:1;color:#495057;background:#f8f9fa;font-weight:700}.fs-table td:nth-child(2){font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.fs-guide{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:28px 0 0}.fs-guide h2{color:#343a40;font-size:1.18rem;font-weight:700;margin:0 0 10px}.fs-guide ul{margin:0;padding-left:19px}.fs-guide li{color:#495057;line-height:1.58;margin-bottom:8px}.fs-reference{border-left:3px solid #d0ebff;margin-top:22px;padding:3px 0 3px 14px}.fs-reference h2{color:#0d6efd;font-size:1rem;font-weight:700;margin:0 0 6px}.fs-reference p{color:#495057;line-height:1.58;margin:0}@media (max-width: 1080px){.fs-controls{grid-template-columns:1fr 1fr}.fs-grid,.fs-guide{grid-template-columns:1fr}}@media (max-width: 620px){.fs-controls{grid-template-columns:1fr;gap:10px}.fs-range-row{grid-template-columns:1fr 74px}.fs-canvas-wrap{height:280px}.fs-canvas-wrap.tall{height:340px}.fs-panel-head{align-items:flex-start;flex-direction:column}.fs-panel-note{text-align:left}}.fs-controls{grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);align-items:start}.fs-builder{display:grid;gap:12px}.fs-builder-row{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:8px;align-items:center}.fs-builder-row select,.fs-builder-row input,.fs-piece input{width:100%;border:1px solid #ced4da;border-radius:6px;padding:6px 8px;font:inherit;background:#fff}.fs-piece{display:grid;grid-template-columns:auto minmax(120px,1.6fr) auto minmax(70px,.7fr) auto minmax(70px,.7fr) auto;gap:6px;align-items:center}.fs-piece .fs-piece-label{font-size:.85rem;color:#495057;white-space:nowrap}.fs-piece input.is-invalid{border-color:#e03131;background:#fff5f5}.fs-piece-remove{border:1px solid #dee2e6;background:#fff;border-radius:6px;padding:4px 8px;color:#868e96;cursor:pointer}.fs-piece-remove:hover{color:#e03131;border-color:#e03131}.fs-piece-error,.fs-builder-error{font-size:.82rem;color:#c92a2a;grid-column:1 / -1}.fs-builder-hint{font-size:.8rem;color:#868e96}.fs-problem-hint{font-size:.9rem;color:#495057;margin:6px 0 0}.fs-badge{display:inline-block;border-radius:999px;padding:2px 10px;font-size:.78rem;font-weight:600;background:#e7f5ff;color:#1864ab}.fs-badge.numeric{background:#fff4e6;color:#d9480f}.fs-note{font-size:.85rem;color:#868e96;margin:6px 0 0}.fs-note.hidden,.fs-global-error.hidden,[data-fourier] .hidden{display:none}.fs-global-error{border:1px solid #ffc9c9;background:#fff5f5;color:#c92a2a;border-radius:8px;padding:10px 12px;margin-bottom:14px}.fs-katex{display:block;overflow-x:auto;padding:4px 0;font-size:1.05rem}.fs-katex.hidden{display:none}.fs-point-presets button.active{background:#0d6efd;color:#fff;border-color:#0d6efd}.fs-table td.exact{font-size:.95rem}@media (max-width: 1080px){.fs-controls{grid-template-columns:1fr}}@media (max-width: 620px){.fs-piece{grid-template-columns:1fr 1fr}.fs-piece .fs-piece-label{display:none}.fs-piece input[data-part=expr]{grid-column:1 / -1}.fs-builder-row{grid-template-columns:1fr 1fr}}.fs-form-switch{display:inline-flex;border:1px solid #dee2e6;border-radius:8px;overflow:hidden}.fs-form-switch button{border:0;background:#fff;padding:4px 10px;font-size:.85rem;color:#495057;cursor:pointer}.fs-form-switch button+button{border-left:1px solid #dee2e6}.fs-form-switch button:hover{background:#f1f3f5}.fs-form-switch button.active{background:#0d6efd;color:#fff}.fs-derivation{border:1px solid #e9ecef;border-radius:8px;background:#fff;padding:10px 14px;margin-top:14px}.fs-derivation>summary{cursor:pointer;font-weight:600;color:#1864ab}.fs-step{border-left:3px solid #dee2e6;padding:6px 0 6px 12px;margin:10px 0}.fs-step-title{font-size:.85rem;color:#868e96;margin-bottom:4px}.fs-step-line{display:block;overflow-x:auto;padding:3px 0}.fs-chips-bulk{display:flex;gap:6px;margin-bottom:8px}.fs-chips-bulk button{border:1px solid #dee2e6;background:#fff;border-radius:6px;padding:2px 10px;font-size:.8rem;color:#495057;cursor:pointer}.fs-chips-bulk button:hover{background:#f1f3f5}.fs-chips-row{display:flex;flex-wrap:wrap;gap:5px}.fs-chip{min-width:30px;border:1px solid #b7d4ff;background:#e7f5ff;color:#1864ab;border-radius:6px;padding:2px 6px;font-size:.82rem;cursor:pointer}.fs-chip:hover{border-color:#0d6efd}.fs-chip.off{background:#f8f9fa;border-color:#dee2e6;color:#adb5bd;text-decoration:line-through}.fs-periods{display:inline-flex;border:1px solid #dee2e6;border-radius:8px;overflow:hidden}.fs-periods button{border:0;background:#fff;padding:4px 12px;font-size:.85rem;color:#495057;cursor:pointer}.fs-periods button+button{border-left:1px solid #dee2e6}.fs-periods button:hover{background:#f1f3f5}.fs-periods button.active{background:#0d6efd;color:#fff}.fs-audio{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.fs-audio input[type=range]{flex:1 1 120px;min-width:100px}.fs-audio-tone{font-size:.8rem;color:#868e96;margin:0}.fs-export{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.fs-export-status{font-size:.82rem;color:#2b8a3e;min-height:1em}.fs-problem-links{margin:22px 0}.fs-problem-links ul{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px 18px;padding-left:18px}.fs-problem-links li{margin:0}#fsMainCanvas{cursor:crosshair;touch-action:pan-y}
