:root{color:#24383b;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#eef5f4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}.app-shell{width:min(1500px,100% - 32px);margin:0 auto;padding:32px 0}.app-header{margin-bottom:24px}.app-kicker{color:#476062;letter-spacing:.08em;text-transform:uppercase;margin:0 0 8px;font-size:.9rem;font-weight:700}.app-header h1{color:#172326;max-width:820px;margin:0;font-size:clamp(2.1rem,5vw,4.2rem);line-height:1.02}.workspace{grid-template-columns:minmax(250px,300px) minmax(380px,.95fr) minmax(420px,1.15fr);align-items:start;gap:16px;display:grid}.sidebar,.center-stage,.graphs-stage{gap:18px;display:grid}.sidebar{max-height:calc(100vh - 126px);padding-right:4px;position:sticky;top:14px;overflow:hidden auto}.panel{background:#fff;border:1px solid #d7e0df;border-radius:8px;box-shadow:0 12px 30px #1c2c2f14}.panel h2{color:#1d3033;margin:0;font-size:1.15rem;line-height:1.2}.panel-heading{justify-content:space-between;align-items:center;gap:12px;padding:18px 20px 0;display:flex}.panel-note{color:#5e7476;font-size:.9rem}.graph-editor-actions{align-items:center;gap:12px;display:flex}.controls-panel,.metrics-panel,.itinerary-equation,.motion-scene,.playback-controls,.graph-data-tools,.derived-graphs{padding:20px}.collapsible-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.panel-toggle{color:#1f3436;cursor:pointer;background:#f7fbfa;border:1px solid #b9c8c7;border-radius:6px;padding:7px 10px;font-size:.9rem;font-weight:700}.panel-toggle:focus{outline:3px solid #2f6f7329}.controls-content{min-height:220px;max-height:calc(100vh - 230px);margin-top:2px;padding-right:6px;overflow:hidden auto}.control-grid{gap:12px;margin-top:14px;display:grid}.control-group{gap:7px;margin-top:16px;display:grid}.control-group label{color:#30494c;font-size:.9rem;font-weight:700}.control-group input,.control-group select{color:#1f3436;background:#f9fcfc;border:1px solid #b9c8c7;border-radius:6px;width:100%;min-height:40px;padding:8px 10px}.control-group input:focus,.control-group select:focus{border-color:#2f6f73;outline:3px solid #2f6f7329}.point-type-legend{color:#4d6467;background:#f7fbfa;border:1px dashed #b9c8c7;border-radius:6px;gap:5px;padding:10px;font-size:.85rem;display:grid}.point-type-legend p{margin:0}.checkbox-control{color:#30494c;align-items:center;gap:10px;margin-top:18px;font-size:.95rem;font-weight:700;display:flex}.checkbox-control.compact{margin-top:0;font-size:.9rem;font-weight:600}.checkbox-control input{accent-color:#2f6f73;width:18px;height:18px}.checkbox-section{border:1px solid #d7e0df;border-radius:8px;gap:10px;margin:18px 0 0;padding:14px;display:grid}.checkbox-section legend{color:#1f3436;padding:0 6px;font-weight:700}.checkbox-list{gap:9px;display:grid}.visibility-panel{border-top:1px solid #d7e0df;margin-top:18px;padding-top:16px}.visibility-panel h3{color:#1d3033;margin:0;font-size:1rem}.visibility-content{gap:12px;margin-top:14px;display:grid}.analysis-interval-panel h3{color:#1d3033;margin:0;font-size:1rem}.analysis-interval-content{gap:12px;margin-top:14px;display:grid}.compact-action{justify-self:start;padding:7px 9px;font-size:.78rem}.interval-summary{color:#30494c;background:#f7fbfa;border:1px solid #d7e0df;border-radius:6px;margin:0;padding:9px 10px;font-size:.86rem;font-weight:700}.visibility-actions{flex-wrap:wrap;gap:10px;display:flex}.visibility-group{margin-top:0}.warning-message{color:#7a4310;background:#fff7eb;border:1px solid #d8914b;border-radius:6px;gap:6px;margin-top:16px;padding:10px 12px;font-size:.9rem;font-weight:700;display:grid}.warning-message p{margin:0}.placeholder-list{gap:10px;margin-top:18px;display:grid}.placeholder-list span,.metrics-list div,.derived-grid div,.derived-stack div{color:#41595c;background:#f7fbfa;border:1px dashed #b9c8c7;border-radius:6px}.placeholder-list span{padding:12px 14px}.graph-editor{overflow:hidden}.graph-comparison-layout{grid-template-columns:1fr;align-items:start;gap:0;display:grid}.graph-comparison-layout .graph-editor{min-width:0}.center-stage>.itinerary-equation{width:100%}.graph-svg,.motion-svg{width:100%;height:auto;display:block}.graph-svg{cursor:crosshair;background:linear-gradient(#f8fbfb,#fff);margin-top:8px}.motion-svg{background:#f7fbfa;border-radius:6px;margin-top:14px}.motion-heading{padding:0}.motion-time-readout{color:#30494c;margin:0;font-weight:800}.motion-background{fill:#f9fcfc;stroke:#d7e0df;stroke-width:1px}.axis-line{stroke:#223538;stroke-width:4px;stroke-linecap:round}.axis-arrow{fill:#223538}.grid-line{stroke:#bfd0cf;stroke-width:2px}.plot-hit-area{fill:#0000}.connection-path{fill:none;pointer-events:none;stroke:#2d3f42;stroke-linecap:round;stroke-linejoin:round;stroke-width:4px}.connection-curve{stroke-width:4.5px}.function-sample-point{fill:#111827;opacity:.42;pointer-events:none;stroke:#fff;stroke-width:.7px}.area-under-curve-fill{fill:#2f80ed;opacity:.18;pointer-events:none;stroke:none}.area-label-layer{pointer-events:none}.area-label-bg{fill:#eff6ff;opacity:.96;stroke:#93c5fd;stroke-width:1.4px}.area-label{fill:#1d4ed8;text-anchor:middle;font-size:13px;font-weight:900}.analysis-interval-layer{pointer-events:none}.analysis-interval-line{stroke:#475569;stroke-dasharray:5 5;stroke-linecap:round;stroke-width:2.4px;opacity:.72}.analysis-interval-label-bg{fill:#f8fafc;opacity:.96;stroke:#94a3b8;stroke-width:1.2px}.analysis-interval-label{fill:#334155;text-anchor:middle;font-size:12px;font-weight:900}.tangent-layer{pointer-events:none}.tangent-line{stroke:#d946ef;stroke-linecap:round;stroke-width:3.4px}.secant-line{stroke-dasharray:0}.tangent-marker{fill:#fff;stroke:#d946ef;stroke-width:3px}.tangent-label-bg{fill:#fdf4ff;opacity:.96;stroke:#d946ef;stroke-width:1.4px}.tangent-label{fill:#a21caf;text-anchor:middle;font-size:13px;font-weight:900}.timeline-layer{pointer-events:none}.timeline-line{stroke:#7c3aed;stroke-dasharray:9 7;stroke-linecap:round;stroke-width:4px;opacity:.78}.timeline-label-bg,.current-value-label-bg{fill:#fff;opacity:.92;stroke:#bda8f7;stroke-width:1.5px}.timeline-label,.current-value-label{fill:#4c1d95;text-anchor:middle;font-size:14px;font-weight:800}.timeline-marker{fill:#fff;stroke:#7c3aed;stroke-width:4px}.axis-label{fill:#354d50;font-size:22px;font-weight:700}.tick-label{fill:#4d6467;text-anchor:middle;font-size:16px;font-weight:700}.vertical-tick{text-anchor:end}.graph-point{cursor:grab;stroke:#1f3436;stroke-width:3px}.graph-point:active{cursor:grabbing}.graph-point:focus{stroke-width:5px;outline:none}.graph-point-green{fill:#2fa66a}.graph-point-yellow{fill:#f0c441}.graph-analysis-panel{color:#30494c;background:#f9fcfc;border:1px solid #d7e0df;border-radius:8px;gap:10px;margin-top:14px;padding:12px 14px;display:grid}.graph-analysis-item{gap:5px;display:grid}.graph-analysis-item+.graph-analysis-item{border-top:1px solid #d7e0df;padding-top:10px}.graph-analysis-panel p{margin:0}.analysis-meaning,.analysis-value{color:#9a3412;font-weight:900}.analysis-note{color:#4d6467;font-size:.9rem}.points-summary{border-top:1px solid #d7e0df;padding:16px 20px 20px}.points-summary h3{color:#1d3033;margin:0;font-size:1rem}.points-summary-content{margin-top:12px}.points-summary-content ol{gap:6px;margin:0;padding-left:22px;display:grid}.points-summary-content p{color:#65787a;margin:0}.connect-points-button{color:#fff;cursor:pointer;white-space:nowrap;background:#223538;border:1px solid #8da1a1;border-radius:6px;padding:8px 12px;font-size:.9rem;font-weight:700}.connect-points-button:disabled{cursor:not-allowed;opacity:.55}.playback-heading{padding:0}.playback-content{gap:14px;margin-top:16px;display:grid}.time-readout{color:#30494c;margin:0;font-weight:800}.playback-actions{flex-wrap:wrap;gap:10px;display:flex}.playback-button{color:#fff;cursor:pointer;background:#223538;border:1px solid #8da1a1;border-radius:6px;min-height:40px;padding:8px 12px;font-weight:800}.playback-button.secondary{color:#223538;background:#f7fbfa}.playback-button:disabled{cursor:not-allowed;opacity:.55}.time-slider-control,.playback-speed-control{color:#30494c;gap:8px;font-size:.92rem;font-weight:800;display:grid}.time-slider-control input{accent-color:#2f6f73;width:100%}.playback-speed-control select{color:#1f3436;background:#f9fcfc;border:1px solid #b9c8c7;border-radius:6px;width:min(180px,100%);min-height:40px;padding:8px 10px}.playback-message{margin:0}.point-coordinates{border-top:1px solid #d7e0df;padding:16px 20px 20px}.graph-data-tools-content{border-top:1px solid #d7e0df;gap:0;margin-top:16px;display:grid}.point-coordinates h3,.numeric-data-panel h3,.physical-data-panel h3{color:#1d3033;margin:0;font-size:1rem}.point-coordinate-content{gap:12px;margin-top:14px;display:grid}.point-coordinate-list{gap:10px;display:grid}.point-coordinate-row{background:#f7fbfa;border:1px dashed #b9c8c7;border-radius:6px;grid-template-columns:minmax(76px,.8fr) minmax(96px,1fr) minmax(92px,1fr) minmax(92px,1fr) auto;align-items:end;gap:10px;padding:10px;display:grid}.point-coordinate-row label{color:#30494c;gap:4px;font-size:.8rem;font-weight:700;display:grid}.point-coordinate-row input,.point-coordinate-row select{color:#1f3436;background:#fff;border:1px solid #b9c8c7;border-radius:6px;width:100%;min-height:36px;padding:7px 8px}.point-index{color:#1f3436;padding-bottom:8px;font-weight:700}.delete-point-button{color:#8a2c2c;cursor:pointer;background:#fff4f4;border:1px solid #c87979;border-radius:6px;min-height:36px;padding:7px 10px;font-weight:700}.coordinate-note{color:#65787a;margin:0;font-size:.9rem}.numeric-data-panel,.physical-data-panel{border-top:1px solid #d7e0df;padding:16px 20px 20px}.numeric-data-content,.physical-data-content{gap:12px;margin-top:14px;display:grid}.numeric-data-content p,.physical-data-content p{color:#4d6467;margin:0}.derivative-note{background:#f7fbfa;border-left:4px solid #8da1a1;padding:10px 12px}.numeric-table-wrap{overflow-x:auto}.numeric-data-table{border-collapse:collapse;width:100%;font-size:.9rem}.numeric-data-table th,.numeric-data-table td{text-align:left;border-bottom:1px solid #d7e0df;padding:8px 10px}.numeric-data-table th{color:#1f3436;font-weight:800}.numeric-data-table td{color:#41595c}.person circle,.person line{fill:none;stroke:#2f6f73;stroke-width:8px;stroke-linecap:round;stroke-linejoin:round}.person circle{fill:#dff1f0}.position-markers line{stroke:#789294;stroke-width:3px;stroke-linecap:round}.position-markers text{fill:#41595c;text-anchor:middle;font-size:15px;font-weight:700}.motion-axis-tick line{stroke:#789294;stroke-width:2px;stroke-linecap:round}.motion-axis-tick text{fill:#52696b;text-anchor:middle;font-size:12px;font-weight:700}.zero-marker line{stroke:#223538;stroke-dasharray:5 5;stroke-width:2px}.zero-marker text{fill:#223538;text-anchor:middle;font-size:13px;font-weight:800}.motion-position-marker{pointer-events:none}.motion-position-marker line{stroke-width:3px;stroke-linecap:round}.motion-position-marker text{paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round;text-anchor:middle;font-size:13px;font-weight:800}.current-position-guide{stroke:#6d5dfc;stroke-dasharray:4 6;stroke-linecap:round;stroke-width:2px;opacity:.58;pointer-events:none}.initial-position-marker line{stroke:#7eb6d9}.initial-position-marker text{fill:#2f6f99}.final-position-marker line{stroke:#1d4f7a;stroke-dasharray:7 5}.final-position-marker text{fill:#1d4f7a}.current-position-marker line,.current-position-marker circle{fill:#fff;stroke:#6d5dfc}.current-position-marker text{fill:#4c3edb;font-size:14px}.motion-vector-layer{pointer-events:none}.motion-vector-label,.zero-vector-label text{paint-order:stroke;stroke:#fff;stroke-linejoin:round;stroke-width:4px;text-anchor:middle;font-size:13px;font-weight:900}.position-vector,.displacement-vector,.velocity-vector,.acceleration-vector{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:3.2px}.position-vector{stroke:#2563eb}.displacement-vector{stroke:#38bdf8;stroke-dasharray:8 7}.velocity-vector{stroke:#dc2626}.acceleration-vector{stroke:#16a34a}.position-vector-arrow-fill,.position-vector-zero-dot{fill:#2563eb}.displacement-vector-arrow-fill,.displacement-vector-zero-dot{fill:#38bdf8}.velocity-vector-arrow-fill,.velocity-vector-zero-dot{fill:#dc2626}.acceleration-vector-arrow-fill,.acceleration-vector-zero-dot{fill:#16a34a}.vector-label-box{pointer-events:none}.vector-label-box rect{fill:#fff;opacity:.94;stroke-width:1.4px}.vector-label-box text{text-anchor:middle;font-size:12px;font-weight:900}.vector-symbol{font-weight:1000}.position-vector-label rect{stroke:#93c5fd}.position-vector-label text{fill:#1d4ed8}.displacement-vector-label rect{stroke:#7dd3fc}.displacement-vector-label text{fill:#0369a1}.velocity-vector-label rect{stroke:#fca5a5}.velocity-vector-label text{fill:#b91c1c}.acceleration-vector-label rect{stroke:#86efac}.acceleration-vector-label text{fill:#15803d}.zero-vector-label text{fill:#1f3436;text-anchor:start}.vector-scale-note{fill:#5e7476;text-anchor:middle;font-size:12px;font-weight:800}.motion-values{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.motion-value-card{background:#f9fcfc;border:1px solid #d7e0df;border-radius:6px;gap:4px;padding:10px 12px;display:grid}.motion-value-card span{color:#52696b;font-size:.86rem;font-weight:800}.motion-value-card strong{color:#1f3436;font-size:1rem}.initial-position-card{border-left:5px solid #7eb6d9}.current-position-card{border-left:5px solid #6d5dfc}.final-position-card{border-left:5px solid #1d4f7a}.motion-empty-message{fill:#4d6467;text-anchor:middle;font-size:15px;font-weight:800}.placeholder-person{opacity:.5}.metrics-list{gap:10px;max-height:390px;margin:18px 0 0;padding-right:6px;display:grid;overflow-y:auto}.metrics-list div{padding:12px 14px}.metrics-list dt{color:#1f3436;font-weight:700}.metrics-list dd{color:#65787a;margin:4px 0 0}.metric-symbol,.metric-vector-symbol{color:#1f3436;font-weight:900}.metric-vector-symbol{font-style:normal}.empty-message{color:#4d6467;background:#f7fbfa;border:1px dashed #b9c8c7;border-radius:6px;margin:18px 0 0;padding:12px 14px}.itinerary-card{gap:16px;margin-top:16px;display:grid}.itinerary-model{color:#1f3436;letter-spacing:.04em;text-transform:uppercase;background:#f7fbfa;border:1px solid #b9c8c7;border-radius:999px;width:fit-content;padding:6px 10px;font-size:.78rem;font-weight:900}.itinerary-formula-block,.itinerary-result,.itinerary-empty{background:#f9fcfc;border:1px solid #d7e0df;border-radius:8px;gap:10px;padding:16px;display:grid}.itinerary-formula-block span,.itinerary-result span{color:#5e7476;font-size:.82rem;font-weight:800}.math-equation{color:#1f3436;text-align:center;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:.38rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.08rem,1.3vw,1.35rem);font-weight:900;line-height:1.55;display:flex}.math-equation span{color:inherit;font:inherit}.math-equation sub,.math-equation sup{font-size:.68em;line-height:0}.math-equation--substitution{font-size:clamp(1rem,1.1vw,1.18rem)}.itinerary-delta-time{color:#314c4f;flex-wrap:wrap;justify-content:center;gap:.32rem;font-family:Georgia,Times New Roman,serif;font-size:1rem;font-weight:800;line-height:1.45;display:flex}.itinerary-delta-time span{color:inherit;font:inherit}.itinerary-result{background:#eef7f6;border-color:#9fb9b8}.math-equation--result{color:#10292d;font-size:clamp(1.2rem,1.55vw,1.55rem)}.itinerary-note,.itinerary-empty{color:#4d6467;margin:0}.itinerary-empty{text-align:center;font-weight:800}.itinerary-note{background:#f7fbfa;border-left:4px solid #8da1a1;padding:10px 12px}.derived-grid,.derived-stack{gap:12px;margin-top:18px;display:grid}.derived-stack{grid-template-columns:1fr}.derived-grid div,.derived-stack div{align-content:center;gap:8px;min-height:96px;padding:16px;display:grid}.derived-stack strong{color:#1f3436}.derived-stack span{color:#65787a}.derived-graph-card{background:#f9fcfc;border:1px solid #d7e0df;border-radius:8px;gap:8px;padding:12px;display:grid}.derived-graph-card strong{color:#1f3436}.derived-graph-card span,.derived-graph-note{color:#65787a;font-size:.86rem}.derived-graph-note{margin:0}.derived-graph-svg{width:100%;height:auto;display:block}.derived-graph-background{fill:#fff;stroke:#d7e0df;stroke-width:1px}.derived-grid-line{stroke:#d8e4e3;stroke-width:1.2px}.derived-axis-line{stroke:#223538;stroke-linecap:round;stroke-width:2.2px}.derived-graph-path{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px}.derived-timeline-line{stroke-width:2.4px}.derived-current-marker{fill:#fff;stroke-width:3px}.derived-area-fill{opacity:.16}.derived-value-label{font-size:11px}.derived-tangent-line{stroke-width:2.2px}.derived-tangent-label-bg,.derived-area-label-bg{stroke-width:1px}.derived-tangent-label,.derived-area-label{font-size:9.5px}.derived-interval-line{stroke-width:1.6px}.derived-interval-label{font-size:9px}.derived-analysis-panel{color:#30494c;background:#f9fcfc;border:1px solid #d7e0df;border-radius:6px;gap:5px;padding:8px 10px;display:grid}.derived-stack .derived-analysis-panel{align-content:stretch;min-height:auto}.derived-analysis-panel p{color:#30494c;margin:0;font-size:.8rem;line-height:1.35}.derived-analysis-panel strong{color:#1f3436}.derived-axis-label{fill:#354d50;text-anchor:middle;font-size:11px;font-weight:800}.derived-y-label{text-anchor:middle}.derived-tick-label{fill:#52696b;text-anchor:middle;font-size:10px;font-weight:800}.derived-vertical-tick{text-anchor:end}@media (width<=1120px){.workspace{grid-template-columns:minmax(240px,290px) minmax(0,1fr)}.graphs-stage{grid-column:2}.sidebar{max-height:none;position:static}}@media (width<=820px){.app-shell{width:min(100% - 20px,680px);padding:20px 0}.workspace{grid-template-columns:1fr}.graphs-stage{grid-column:auto}.controls-content{min-height:180px;max-height:min(68vh,620px)}.derived-grid,.graph-comparison-layout,.motion-values{grid-template-columns:1fr}.metrics-list{max-height:300px}.point-coordinate-row{grid-template-columns:1fr}.point-index{padding-bottom:0}}.emely-site-header{color:#082218;background:#fefbf5;border-bottom:1px solid #d39e50;width:100%;padding:18px 22px}.emely-site-header-inner{justify-content:space-between;align-items:center;gap:24px;width:100%;max-width:1180px;margin:0 auto;display:flex}.emely-site-brand{color:#082218;white-space:nowrap;align-items:center;gap:20px;text-decoration:none;display:inline-flex}.emely-site-logo{object-fit:contain;width:auto;max-width:170px;height:46px;display:block}.emely-site-name{color:#082218;letter-spacing:0;font-family:Georgia,Times New Roman,serif;font-size:32px;font-weight:400;line-height:1}.emely-site-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:16px;display:flex}.emely-site-button{border:1px solid #d39e50;border-radius:8px;justify-content:center;align-items:center;min-height:46px;padding:10px 24px;font-size:15px;font-weight:800;line-height:1;text-decoration:none;display:inline-flex}.emely-site-button-primary{color:#fefbf5;background:#082218}.emely-site-button-secondary{color:#082218;background:#fefbf5}.emely-site-footer{color:#fefbf5;text-align:center;background:#082218;justify-content:center;align-items:center;width:100%;min-height:68px;margin-top:24px;padding:16px 18px;font-size:14px;font-weight:700;line-height:1.4;display:flex}@media (width<=820px){.emely-site-header{padding:16px}.emely-site-header-inner{flex-direction:column;align-items:flex-start}.emely-site-actions{justify-content:stretch;width:100%}.emely-site-button{flex:190px}}@media (width<=520px){.emely-site-header{padding:14px 10px}.emely-site-brand{gap:16px}.emely-site-logo{max-width:145px;height:42px}.emely-site-name{font-size:30px}.emely-site-actions{grid-template-columns:1fr;gap:12px;display:grid}.emely-site-footer{min-height:64px;padding:14px 12px;font-size:13px}}
