*,*:before,*:after{box-sizing:border-box}:root{--bg-color: #0f172a;--sidebar-bg: #1e293b;--panel-bg: #334155;--panel-bg-hover: #475569;--border-color: #334155;--border-light: #475569;--text-primary: #f8fafc;--text-secondary: #94a3b8;--text-muted: #64748b;--accent-color: #3b82f6;--accent-hover: #60a5fa;--accent-glow: rgba(59, 130, 246, .5);--danger-color: #ef4444;--success-color: #10b981;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--font-family: "Inter", system-ui, -apple-system, sans-serif;font-family:var(--font-family);line-height:1.5;font-weight:400;color-scheme:dark;color:var(--text-primary);background-color:var(--bg-color);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:var(--accent-color);text-decoration:none;transition:color .2s}a:hover{color:var(--accent-hover)}html,body{height:100%}body{margin:0;min-width:320px;background-color:var(--bg-color)}h1{font-size:3.2em;line-height:1.1}button{border-radius:var(--radius-md);border:1px solid transparent;padding:.6em 1.2em;font-size:.95em;font-weight:500;font-family:inherit;background-color:var(--panel-bg);color:var(--text-primary);cursor:pointer;transition:all .2s ease}button:hover{background-color:var(--panel-bg-hover);border-color:var(--border-light)}button:focus,button:focus-visible{outline:none;box-shadow:0 0 0 3px #3b82f666}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--panel-bg);border-radius:var(--radius-lg);border:2px solid var(--bg-color)}::-webkit-scrollbar-thumb:hover{background-color:var(--text-muted)}.spline-editor{display:flex;flex-direction:column;height:100%;gap:0}.se-toolbar{display:flex;align-items:center;gap:16px;padding:8px 12px;background:var(--panel-bg, #1e1e2e);border-bottom:1px solid rgba(255,255,255,.08);flex-wrap:wrap}.se-glyph-picker,.se-curve-picker,.se-options{display:flex;align-items:center;gap:6px}.se-glyph-picker label,.se-curve-picker label,.se-iter{font-size:.85em;color:var(--text-secondary, #aaa)}.se-glyph-picker select{background:var(--sidebar-bg, #252535);color:var(--text-primary, #eee);border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-sm, 4px);padding:3px 8px;font-size:1em}.se-curve-btn{background:var(--sidebar-bg, #252535);color:var(--text-secondary, #aaa);border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-sm, 4px);padding:2px 8px;cursor:pointer;font-size:.85em}.se-curve-btn.active{background:var(--accent-color, #3b82f6);color:#fff;border-color:var(--accent-color, #3b82f6)}.se-toggle{display:flex;align-items:center;gap:4px;font-size:.85em;color:var(--text-secondary, #aaa);cursor:pointer}.se-toggle input[type=checkbox]{accent-color:var(--accent-color, #3b82f6)}.se-iter input{width:60px;background:var(--sidebar-bg, #252535);color:var(--text-primary, #eee);border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-sm, 4px);padding:2px 6px;margin-left:4px;font-size:.85em}.se-main{display:flex;flex:1;min-height:0;overflow:hidden}.se-canvas-area{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.se-canvas{flex:1;min-width:0;min-height:0;background:var(--bg-color, #0f0f1a);cursor:crosshair}.se-table-panel{width:480px;min-width:340px;background:var(--panel-bg, #1e1e2e);border-left:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;overflow:hidden}.se-table-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;font-size:.9em;font-weight:600;color:var(--text-primary, #eee);border-bottom:1px solid rgba(255,255,255,.08)}.se-btn-sm{background:var(--accent-color, #3b82f6);color:#fff;border:none;border-radius:var(--radius-sm, 4px);padding:3px 10px;font-size:.8em;cursor:pointer}.se-btn-sm:hover{background:var(--accent-hover, #2563eb)}.se-table-scroll{overflow-y:auto;overflow-x:auto;flex:1;min-height:0}.se-table{width:100%;border-collapse:collapse;font-size:.8em}.se-table th{position:sticky;top:0;background:var(--panel-bg, #1e1e2e);color:var(--text-muted, #888);font-weight:500;text-align:left;padding:4px 6px;border-bottom:1px solid rgba(255,255,255,.1);z-index:1}.se-table td{padding:2px 4px;border-bottom:1px solid rgba(255,255,255,.04);color:var(--text-primary, #eee)}.se-table tr:hover{background:#ffffff08}.se-table tr.selected{background:#3b82f626}.se-table input[type=number]{width:55px;background:transparent;border:1px solid transparent;border-radius:3px;color:var(--text-primary, #eee);padding:1px 4px;font-family:inherit;font-size:inherit}.se-table input[type=number]:focus{background:var(--sidebar-bg, #252535);border-color:var(--accent-color, #3b82f6);outline:none}.se-table select{background:transparent;color:var(--text-primary, #eee);border:1px solid transparent;border-radius:3px;font-size:inherit;padding:1px 2px}.se-table select:focus{background:var(--sidebar-bg, #252535);border-color:var(--accent-color, #3b82f6);outline:none}.se-idx{color:var(--text-muted, #888);font-size:.9em;width:20px}.se-btn-del{background:none;border:none;color:var(--text-muted, #888);cursor:pointer;font-size:1.1em;padding:0 4px;line-height:1}.se-btn-del:hover{color:var(--danger-color, #ef4444)}.se-bezier-output{border-top:1px solid rgba(255,255,255,.08);padding:0}.se-bezier-output summary{padding:8px 12px;font-size:.85em;color:var(--text-secondary, #aaa);cursor:pointer}.se-bezier-output .se-table-scroll{max-height:200px}.se-table-readonly td{color:var(--text-muted, #888);font-variant-numeric:tabular-nums}.se-canvas path{vector-effect:non-scaling-stroke}.se-drag-handle-th{width:14px;padding:0 2px}.se-drag-handle{cursor:grab;color:var(--text-muted, #666);font-size:1em;padding:0 4px;text-align:center;-webkit-user-select:none;user-select:none;touch-action:none}.se-drag-handle:hover{color:var(--text-primary, #eee)}.se-drag-over{background:#3b82f640!important;outline:1px solid var(--accent-color, #3b82f6)}.se-auto-cell-td{padding:1px 2px;white-space:nowrap}.se-auto-cell{display:flex;align-items:center;gap:2px}.se-auto-cell input[type=number]{width:58px;flex:1;min-width:50px}.se-auto-btn{background:#ffffff0f;border:1px solid rgba(255,255,255,.28);border-radius:3px;color:var(--text-secondary, #aaa);cursor:pointer;font-size:.75em;padding:0 4px;line-height:1.4;flex-shrink:0}.se-auto-btn:hover:not(:disabled){color:var(--accent-color, #3b82f6);border-color:var(--accent-color, #3b82f6);background:#3b82f61f}.se-auto-btn:disabled{opacity:.25;cursor:default}.se-preset-select{background:var(--sidebar-bg, #252535);color:var(--text-primary, #eee);border:1px solid rgba(255,255,255,.28);border-radius:3px;font-size:.8em;padding:0 2px;width:34px;flex-shrink:0;cursor:pointer}.se-auto-active{background:#3b82f633;border:1px solid rgba(99,160,255,.7);border-radius:3px;color:#7eb8ff;cursor:pointer;font-size:.75em;font-weight:600;padding:1px 5px;width:100%;text-align:center}.se-auto-active:hover{background:#3b82f659;border-color:var(--accent-color, #3b82f6);color:#fff}.se-label-input{width:42px;background:transparent;border:1px solid transparent;border-radius:3px;color:var(--text-secondary, #aaa);padding:1px 3px;font-family:inherit;font-size:inherit}.se-label-input:focus{background:var(--sidebar-bg, #252535);border-color:var(--accent-color, #3b82f6);outline:none;color:var(--text-primary, #eee)}.se-label-input::placeholder{color:var(--text-muted, #555)}.se-undo-btns{display:flex;gap:3px}.se-undo-btns .se-btn-sm{padding:3px 7px}.se-undo-btns .se-btn-sm:disabled{opacity:.35;cursor:default;background:var(--sidebar-bg, #252535);color:var(--text-muted, #888);border:1px solid rgba(255,255,255,.1)}.se-curvature-graph{width:100%;height:80px;background:var(--panel-bg, #1e1e2e);border-top:1px solid rgba(255,255,255,.08);flex-shrink:0;display:block}#root{width:100%;height:100%;margin:0;padding:0;text-align:center;overflow:hidden}.container{display:flex;flex-direction:row;height:100%;width:100%;gap:0;background-color:var(--bg-color);position:relative}.sidebar{flex:0 0 auto;width:auto;min-width:280px;max-width:400px;border-right:1px solid var(--border-color);padding:24px;overflow-y:auto;text-align:left;height:100%;background:var(--sidebar-bg);color:var(--text-primary)}.sidebar-title{width:100%;margin-bottom:-10px;filter:invert(1);opacity:.9}.sidebar h2{margin-top:0;margin-bottom:24px;font-weight:600;font-size:1.25rem;color:var(--text-primary)}.controls-list{display:flex;flex-direction:column;gap:16px}.category-group{background:#ffffff08;border-radius:var(--radius-md);padding:12px;border:1px solid var(--border-color)}.category-header{cursor:pointer;font-weight:600;margin-bottom:12px;display:flex;align-items:center;color:var(--text-primary);transition:color .2s;-webkit-user-select:none;user-select:none}.category-header:hover{color:var(--accent-hover)}.category-content{display:flex;flex-direction:column;gap:16px}.control-group{display:flex;flex-direction:column;font-size:.85rem;align-items:flex-start}.control-group label{font-weight:500;margin-bottom:6px;width:100%;text-align:left;color:var(--text-secondary)}.control-input{display:flex;align-items:center;gap:12px;width:100%;justify-content:space-between}.value-display{font-size:.85em;color:var(--text-muted);width:36px;text-align:right;flex-shrink:0;font-variant-numeric:tabular-nums}.slider-container{width:100%;display:flex;align-items:center;flex-shrink:1}.range-wrapper{position:relative;width:100%;height:24px;display:flex;align-items:center}.modern-slider{-webkit-appearance:none;appearance:none;width:100%;background:transparent;z-index:2;position:relative;cursor:pointer;margin:0}.modern-slider:focus{outline:none}.modern-slider::-webkit-slider-runnable-track{width:100%;height:6px;background:var(--panel-bg-hover);border-radius:3px;border:none}.modern-slider::-webkit-slider-thumb{-webkit-appearance:none;height:16px;width:16px;border-radius:50%;background:#fff;margin-top:-5px;box-shadow:0 1px 3px #0000004d;border:2px solid var(--accent-color);transition:transform .1s}.modern-slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.slider-track-fill{position:absolute;left:0;top:50%;transform:translateY(-50%);height:6px;background:var(--accent-color);border-radius:3px;z-index:1;pointer-events:none}.toggle-switch{display:inline-block;cursor:pointer}.toggle-switch input{appearance:none;width:36px;height:20px;background:var(--panel-bg-hover);border-radius:20px;position:relative;cursor:pointer;transition:background .3s;outline:none;margin:0}.toggle-switch input:checked{background:var(--success-color)}.toggle-switch input:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .2s cubic-bezier(.4,0,.2,1);box-shadow:0 1px 2px #0003}.toggle-switch input:checked:after{transform:translate(16px)}.main{flex:1;display:flex;flex-direction:column;gap:20px;padding:24px;height:100%;overflow-y:auto;scrollbar-gutter:stable}.input-area{position:relative;display:flex;gap:16px;align-items:stretch}.input-wrapper{position:relative;flex:1}.input-area.with-defs .input-wrapper{width:50%;flex:0 0 50%}.input-area textarea{width:100%;height:100%;box-sizing:border-box;font-size:2em;padding:16px;border-radius:var(--radius-md);border:1px solid var(--border-color);background:var(--panel-bg);color:var(--text-primary);resize:vertical;transition:border-color .2s,box-shadow .2s}.input-area textarea:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px var(--accent-glow)}.glyph-defs-panel{width:50%;background:var(--panel-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:16px;color:var(--text-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.9em;overflow-y:auto;box-sizing:border-box;white-space:pre-wrap;height:auto;max-height:200px}.glyph-defs-panel h3{margin-top:0;margin-bottom:.75em;font-size:1em;color:var(--text-primary);border-bottom:1px solid var(--border-light);padding-bottom:8px;display:flex;justify-content:space-between}.text-reset-button{position:absolute;top:8px;right:8px;background:#0006;border:none;border-radius:var(--radius-sm);color:#fff;padding:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.text-reset-button:hover{background:#0009}.preview{flex:1;border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;background:#fff;position:relative;display:flex;flex-direction:column;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.preview-content{flex:1;overflow:auto;padding:10px;position:relative}.zoom-controls{position:absolute;top:16px;right:16px;display:flex;gap:4px;background:#1e293bbf;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:6px;border-radius:var(--radius-lg);z-index:10;border:1px solid rgba(255,255,255,.1);box-shadow:0 4px 6px #0000001a}.zoom-controls button{background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-primary);padding:6px;cursor:pointer;display:flex;align-items:center;justify-content:center}.zoom-controls button:hover{background:#ffffff1a}.svg-container{width:100%;min-height:100%;display:flex;justify-content:center}.svg-container svg{width:100%;height:auto;display:block}.top-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:0}.tabs{display:flex;background:var(--sidebar-bg);border-radius:var(--radius-lg);padding:4px;border:1px solid var(--border-color)}.tab-button{padding:8px 16px;background:transparent;border:none;cursor:pointer;font-size:.95rem;border-radius:var(--radius-md);color:var(--text-secondary);transition:all .2s;font-weight:500}.tab-button:hover{color:var(--text-primary)}.tab-button.active{background:var(--panel-bg);color:var(--text-primary);box-shadow:0 1px 3px #0000001a}.toolbar{display:flex;gap:8px}.icon-button{background:var(--sidebar-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:all .2s}.icon-button:hover{background-color:var(--panel-bg);color:var(--text-primary);border-color:var(--border-light)}.material-symbols-outlined{font-size:20px}.tweens-grid{display:flex;flex-direction:column;gap:24px;padding:16px;overflow-x:auto;width:100%}.tween-row h4{color:#000;position:sticky;left:0;font-weight:600;font-size:1.1em}.tween-variations{display:flex;gap:16px;width:max-content}.tweens-grid::-webkit-scrollbar{height:10px}.tweens-grid::-webkit-scrollbar-track{background:var(--bg-color)}.tweens-grid::-webkit-scrollbar-thumb{background-color:var(--border-color);border-radius:5px}.tween-item{border:1px solid #e2e8f0;padding:12px;border-radius:var(--radius-md);text-align:center;background:#fff;min-width:160px;color:#000;box-shadow:0 1px 2px #0000000d}.tween-item svg{width:100%;height:auto}.glyph-legend{position:fixed;bottom:24px;right:24px;background:#1e293bd9;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);padding:16px;border-radius:var(--radius-md);display:flex;flex-direction:column;gap:10px;z-index:2000;text-align:left;color:var(--text-primary);font-size:.9em;border:1px solid rgba(255,255,255,.1);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;touch-action:none}.legend-item{display:flex;align-items:center;gap:10px}.legend-item input[type=checkbox]{appearance:none;width:16px;height:16px;border-radius:4px;border:2px solid var(--border-light);background:var(--sidebar-bg);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;margin:0}.legend-item input[type=checkbox]:checked{background:var(--accent-color);border-color:var(--accent-color)}.legend-item input[type=checkbox]:checked:after{content:"✓";color:#fff;font-size:10px;font-weight:700}.swatch{width:14px;height:14px;border-radius:3px;display:inline-block}.swatch.blue{background-color:#3b82f6}.swatch.green{background-color:#10b981}.swatch.orange{background-color:#f59e0b}.swatch.grey{background-color:#94a3b8}.swatch.lightBlue{background-color:#7dd3fc}.swatch.lightGreen{background-color:#6ee7b7}.swatch.circle{border-radius:50%}.hide-spiro .spiro-layer,.hide-spline2 .spline2-layer,.hide-dspline .dspline-layer,.hide-guides .guides-layer,.hide-knots .knots-layer,.hide-comb .comb-layer,.hide-tangents .tangent-layer,.hide-labels .labels-layer{display:none}.progress-bar-container{position:absolute;top:0;left:0;width:100%;height:3px;background-color:transparent;z-index:1000;overflow:hidden}.progress-bar-indeterminate{width:100%;height:100%;background-color:var(--accent-color);animation:indeterminate 1.5s infinite ease-in-out;transform-origin:0% 50%;opacity:.8}.progress-bar-determinate{height:100%;background-color:var(--accent-color);transition:width .1s linear}@keyframes indeterminate{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(0) scaleX(.5)}to{transform:translate(100%) scaleX(.2)}}@media(max-width:768px){.sidebar{position:absolute;left:0;top:0;bottom:0;width:64px;min-width:64px;z-index:1000;padding:24px 12px;transition:width .3s cubic-bezier(.4,0,.2,1),box-shadow .3s ease;overflow-x:hidden;border-right:1px solid var(--border-color);background:var(--sidebar-bg)}.sidebar:hover,.sidebar:focus-within{width:300px;box-shadow:10px 0 30px #00000080}.sidebar h2,.sidebar .sidebar-title,.sidebar .category-header .category-title,.sidebar .control-group label,.sidebar .value-display,.sidebar .category-header span:not(.material-symbols-outlined){opacity:0;white-space:nowrap;transition:opacity .2s ease;pointer-events:none}.sidebar:hover h2,.sidebar:hover .sidebar-title,.sidebar:hover .category-header .category-title,.sidebar:hover .control-group label,.sidebar:hover .value-display,.sidebar:hover .category-header span{opacity:1;pointer-events:auto}.sidebar .category-header{justify-content:center;padding:0}.sidebar:hover .category-header{justify-content:flex-start;padding-left:0}.sidebar .material-symbols-outlined{font-size:24px}.main{margin-left:64px;padding:16px}.input-area{flex-direction:column}.input-area.with-defs .input-wrapper,.glyph-defs-panel{width:100%;flex:1 1 auto}.glyph-defs-panel{max-height:300px}.top-bar{flex-direction:column;align-items:flex-start;gap:12px}.tabs{width:100%;overflow-x:auto;padding-bottom:4px}.tab-button{white-space:nowrap;padding:8px 12px}.glyph-legend{bottom:16px;right:16px;padding:10px;font-size:.8em}.preview-content{padding:5px}.zoom-controls{top:8px;right:8px}}.preview-content.spline-mode{padding:0;display:flex;flex-direction:column}
