@font-face{font-family:PT Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/pt-mono-cyrillic-ext-400-normal-C8TlNz0g.woff2)format("woff2"),url(/assets/pt-mono-cyrillic-ext-400-normal-Ca_Kjean.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:PT Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/pt-mono-cyrillic-400-normal-CteInIPE.woff2)format("woff2"),url(/assets/pt-mono-cyrillic-400-normal-CL2xZ6Bq.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:PT Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/pt-mono-latin-ext-400-normal-59kyaNn9.woff2)format("woff2"),url(/assets/pt-mono-latin-ext-400-normal-CEnqigeC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:PT Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/pt-mono-latin-400-normal-3-3stVoC.woff2)format("woff2"),url(/assets/pt-mono-latin-400-normal-CW_sYFHq.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo Narrow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-narrow-vietnamese-400-normal-uH49xrTy.woff2)format("woff2"),url(/assets/archivo-narrow-vietnamese-400-normal-C2Bhhhro.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Narrow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-narrow-latin-ext-400-normal-BzcuidUP.woff2)format("woff2"),url(/assets/archivo-narrow-latin-ext-400-normal-DO6227My.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Narrow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-narrow-latin-400-normal-BON_owyT.woff2)format("woff2"),url(/assets/archivo-narrow-latin-400-normal-nNe3qgr1.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo Narrow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-narrow-vietnamese-600-normal-B3iMS2rD.woff2)format("woff2"),url(/assets/archivo-narrow-vietnamese-600-normal-BOVNaV0C.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Narrow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-narrow-latin-ext-600-normal-DNmONYTo.woff2)format("woff2"),url(/assets/archivo-narrow-latin-ext-600-normal-CFDqFZjW.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Narrow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-narrow-latin-600-normal-l2jiltzb.woff2)format("woff2"),url(/assets/archivo-narrow-latin-600-normal-DZkbuzR9.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo Narrow;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/archivo-narrow-vietnamese-700-normal-VsvP8OcS.woff2)format("woff2"),url(/assets/archivo-narrow-vietnamese-700-normal-CB0yIOvF.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Narrow;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/archivo-narrow-latin-ext-700-normal-DCLoHMFv.woff2)format("woff2"),url(/assets/archivo-narrow-latin-ext-700-normal-C4q0W15T.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Narrow;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/archivo-narrow-latin-700-normal-DtADLsoy.woff2)format("woff2"),url(/assets/archivo-narrow-latin-700-normal-DxmyBkwC.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#d9dee3;--panel:#fff;--panel-2:#eef1f4;--border:#c2cad2;--border-strong:#97a2ad;--input-bg:#fff;--canvas-bg:#fdfdfc;--hud-bg:#fdfdfcf0;--text:#12171c;--text-muted:#5d6873;--accent:#0b5cad;--accent-soft:#d3e3f5;--on-accent:#fff;--danger:#a52019;--danger-border:#d8b3b0;--danger-bg:#f9f0ef;--danger-bg-hover:#f3e2e0;--ok:#1c7a4f;--ok-bg:#eaf4ef;--info-bg:#e9f0f8;--bad-bg:#f9efee;--warn-bg:#f8f2e0;--warn-text:#6f5410;--structure:#0e1519;--node:#0e1519;--node-fill:#fff;--node-pending-fill:#ffd88a;--support:#333f4a;--hinge-fill:#fff;--grid-line:#dfe6ec;--grid-axis:#a9b7c4;--fiber:#8c98a4;--undeformed:#b0bac4;--label-halo:#fdfdfc;--load:#c1272d;--load-force:#c1272d;--load-line:#c1272d;--load-moment:#b06000;--load-line-fill:#c1272d14;--load-selected-fill:#0b5cad2e;--diagram-M:#0b5cad;--diagram-M-fill:#0b5cad24;--diagram-Q:#0f6f8c;--diagram-Q-fill:#0f6f8c24;--diagram-N:#6a3d9a;--diagram-N-fill:#6a3d9a24;--reaction:#1c7a4f;--deformed:#b0308f;--w-element:3.2;--w-element-selected:4.6;--w-diagram:1.6;--w-grid:1;--w-axis:1.2;--radius:2px;--radius-sm:2px;--font-ui:"Helvetica Neue", Helvetica, Arial, sans-serif;--font-head:"Archivo Narrow", "Helvetica Neue", Arial, sans-serif;--font-num:"PT Mono", Menlo, ui-monospace, monospace;--font-code:"PT Mono", Menlo, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--font-ui);color:var(--text);font-size:14px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);-webkit-font-smoothing:antialiased}button,input,select{font:inherit;color:inherit}.app{flex-direction:column;height:100%;display:flex}.workspace{flex:1;grid-template-columns:minmax(0,1fr) 340px;min-height:0;display:grid}.canvas-column{grid-template-rows:minmax(0,1fr) minmax(0,auto);min-width:0;min-height:0;display:grid}.sidebar{border-left:1px solid var(--border);background:var(--panel);min-height:0;overflow-y:auto}@media (width<=900px){.workspace{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:1fr}.sidebar{border-left:none;border-top:1px solid var(--border);max-height:46vh}}.toolbar{background:var(--panel);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:20px;padding:8px 14px;display:flex}.brand{flex-direction:column;margin-right:4px;line-height:1.15;display:flex}.brand strong{letter-spacing:-.01em;font-size:15px;font-family:var(--font-head)}.brand span{color:var(--text-muted);font-size:11px}.toolbar .group{align-items:center;gap:10px;display:flex}.toolbar .group.right{gap:6px;margin-left:auto}.group-label{font-family:var(--font-head);text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);font-size:10px}.segmented{border:1px solid var(--border-strong);border-radius:var(--radius);display:inline-flex;overflow:hidden}.segmented button{background:var(--panel);cursor:pointer;border:none;border-right:1px solid var(--border);padding:6px 12px}.segmented button:last-child{border-right:none}.segmented button:hover{background:var(--panel-2)}.segmented button.active{background:var(--accent);color:var(--on-accent)}.segmented.small button{padding:4px 10px;font-size:12px}.toolbar button,.toolbar select{background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--radius);cursor:pointer;padding:6px 11px}.toolbar .segmented button{border-width:0 1px 0 0;border-radius:0}.toolbar button:hover:not(:disabled):not(.active){background:var(--panel-2)}.toolbar button:disabled{opacity:.4;cursor:default}.toolbar button.danger{color:var(--danger);border-color:var(--danger-border)}.canvas-host{background:var(--canvas-bg);min-height:0;position:relative;overflow:hidden}.canvas{touch-action:none;display:block}.canvas.tool-node,.canvas.tool-element{cursor:crosshair}.canvas.panning{cursor:grabbing}.grid .grid-line{stroke:var(--grid-line);stroke-width:var(--w-grid)}.grid .axis{stroke:var(--grid-axis);stroke-width:var(--w-axis)}.grid,.line-loads,.point-loads,.element-point-loads,.results,.scale-bar,.support,.preview-line,.element-label,.node-label,.hinge,.hinge-slide,.fibers{pointer-events:none}.element-line{stroke:var(--structure);stroke-width:var(--w-element);stroke-linecap:round;pointer-events:none}.element-hit{stroke:#0000;stroke-width:16px;cursor:pointer;pointer-events:stroke}.hit-shape{cursor:pointer}.hit-load{fill:#0000;stroke:#0000}line.hit-load{stroke-width:16px;pointer-events:stroke}polygon.hit-load{pointer-events:fill}.hit-ring{fill:none;stroke-width:11px;pointer-events:stroke}.element.selected .element-line{stroke:var(--accent);stroke-width:var(--w-element-selected)}.label-layer{pointer-events:none}.element-label,.node-label,.load-label,.reaction-label,.diagram-label,.deformed-note{paint-order:stroke;stroke:var(--label-halo);stroke-width:3.5px;stroke-linejoin:round}.element-label{fill:var(--text-muted);font-size:11px;font-family:var(--font-num)}.hinge{fill:var(--hinge-fill);stroke:var(--structure);stroke-width:2px}.hinge-slide line{stroke:var(--structure);stroke-width:2px;stroke-linecap:round}.hinge-slide .hinge-cut{stroke:var(--canvas-bg);stroke-width:7px;stroke-linecap:butt}.fiber-line{stroke:var(--fiber);stroke-width:1.2px;stroke-dasharray:7 4}.node{fill:var(--node-fill);stroke:var(--node);stroke-width:2.4px;cursor:pointer}.node:hover{fill:var(--accent-soft)}.node.selected{fill:var(--accent);stroke:var(--accent)}.node.pending{fill:var(--node-pending-fill);stroke:var(--load)}.node-label{fill:var(--text-muted);font-size:11px;font-weight:600;font-family:var(--font-num)}.support .support-fill{fill:var(--support);stroke:var(--support);stroke-width:1px}.support .support-moment{fill:none;stroke:var(--support);stroke-width:2px}.support .hatch line{stroke:var(--support);stroke-width:1.3px}.preview-line{stroke:var(--accent);stroke-width:2px;stroke-dasharray:6 5}.load line,.load polygon,.load path{stroke:var(--load);fill:none;stroke-width:2px}.load polygon{fill:var(--load)}.load line{stroke:var(--load-force)}.load line+polygon{fill:var(--load-force);stroke:var(--load-force)}.load path{stroke:var(--load-moment)}.load path+polygon{fill:var(--load-moment);stroke:var(--load-moment)}.load-label{fill:var(--load);font-size:11px;font-weight:600;font-family:var(--font-num)}.load-anchor{fill:var(--load);stroke:none}.line-load-fill{fill:var(--load-line-fill);stroke:none}.line-load-top{stroke:var(--load-line);stroke-width:1.8px;fill:none}.line-load-arrow line{stroke:var(--load-line);stroke-width:1.2px}.line-load-arrow polygon{fill:var(--load-line);stroke:none}.deformed-line{fill:none;stroke:var(--deformed);stroke-width:2.2px;stroke-linejoin:round}.undeformed line{stroke:var(--undeformed);stroke-width:1px;stroke-dasharray:4 4}.deformed-note{fill:var(--deformed);font-size:11px;font-family:var(--font-num)}.diagram-fill{stroke:none}.diagram-line{fill:none;stroke-width:var(--w-diagram)}.diagram-label{font-size:11px;font-weight:600;font-family:var(--font-num);fill:var(--text)}.diagram-label-M{fill:var(--diagram-M)}.diagram-label-Q{fill:var(--diagram-Q)}.diagram-label-N{fill:var(--diagram-N)}.diagram-M .diagram-fill{fill:var(--diagram-M-fill)}.diagram-M .diagram-line{stroke:var(--diagram-M);fill:none}.diagram-Q .diagram-fill{fill:var(--diagram-Q-fill)}.diagram-Q .diagram-line{stroke:var(--diagram-Q);fill:none}.diagram-N .diagram-fill{fill:var(--diagram-N-fill)}.diagram-N .diagram-line{stroke:var(--diagram-N);fill:none}.reaction line,.reaction path{stroke:var(--reaction);stroke-width:2.2px;fill:none}.reaction polygon{fill:var(--reaction);stroke:none}.reaction-label{fill:var(--reaction);font-family:var(--font-num)}.scale-bar line{stroke:var(--text-muted);stroke-width:1.3px}.scale-bar text{fill:var(--text-muted);font-size:11px;font-family:var(--font-num)}.canvas-hud{background:var(--hud-bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:11.5px;font-family:var(--font-num);pointer-events:none;gap:14px;padding:5px 11px;display:flex;position:absolute;top:10px;right:12px}.canvas-hud .hint{color:var(--accent);font-weight:600}.results-panel{border-top:1px solid var(--border);background:var(--panel);flex-direction:column;min-height:0;max-height:40vh;display:flex}.results-head{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:7px 12px;display:flex}.equilibrium{margin-left:auto;font-size:12px;font-weight:600}.equilibrium.ok{color:var(--ok)}.equilibrium.bad{color:var(--danger)}.table-scroll{min-height:0;overflow:auto}.results-panel table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-family:var(--font-num)}.results-panel th,.results-panel td{text-align:right;border-bottom:1px solid var(--border);white-space:nowrap;padding:5px 12px;font-size:12.5px}.results-panel thead th{font-family:var(--font-head);background:var(--panel-2);color:var(--text-muted);font-size:11.5px;font-weight:600;position:sticky;top:0}.results-panel tbody th{text-align:left;font-weight:600}.results-panel td.muted{color:var(--text-muted)}.status{padding:16px 18px}.status strong{margin-bottom:5px;display:block}.status p{color:var(--text-muted);max-width:62ch;margin:0}.status.error{color:var(--danger)}.status.error pre{white-space:pre-wrap;font-family:var(--font-code);color:var(--text);margin:6px 0 0;font-size:12px}.warnings{border-top:1px solid var(--border);background:var(--warn-bg);color:var(--warn-text);margin:0;padding:8px 18px 10px 32px;font-size:12px}.inspector{padding:14px 16px 26px}.inspector h2{font-size:15px;font-family:var(--font-head);margin:0 0 3px}.inspector h3{font-family:var(--font-head);text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);margin:0 0 8px;font-size:10.5px}.inspector section{margin-top:18px}.inspector .muted{color:var(--text-muted)}.inspector .small{font-size:12px}.inspector p.muted{margin:4px 0 12px}.hint-text{color:var(--text-muted);margin:8px 0 0;font-size:11.5px;line-height:1.45}.grid-2{grid-template-columns:1fr 1fr;gap:8px;display:grid}.grid-2.spaced{margin-top:8px}.grid-3{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.boxed{background:var(--panel-2);border-radius:var(--radius);margin-top:8px;padding:10px}.field{display:block}.field-label{color:var(--text-muted);margin-bottom:3px;font-size:11px;display:block}.field-input{display:block;position:relative}.field input,.field select{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--input-bg);font-variant-numeric:tabular-nums;width:100%;font-family:var(--font-num);padding:6px 8px}.field input:focus,.field select:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.field-unit{color:var(--text-muted);pointer-events:none;font-size:10.5px;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.field input{text-overflow:ellipsis;padding-right:42px}.check-row{flex-wrap:wrap;gap:6px 16px;display:flex}.check{cursor:pointer;align-items:center;gap:6px;font-size:12.5px;display:inline-flex}.check input{margin:0}.preset-row{flex-wrap:wrap;gap:5px;margin-bottom:10px;display:flex}.preset-row button{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--panel);cursor:pointer;flex:1;min-width:68px;padding:5px 6px;font-size:12px}.preset-row button:hover{background:var(--panel-2)}.preset-row button.active{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}button.link{color:var(--accent);cursor:pointer;background:0 0;border:none;margin-top:8px;padding:0;font-size:12px;text-decoration:underline}button.danger{border:1px solid var(--danger-border);border-radius:var(--radius);background:var(--danger-bg);width:100%;color:var(--danger);cursor:pointer;margin-top:22px;padding:7px}button.danger:hover{background:var(--danger-bg-hover)}.summary{gap:3px;margin:0;display:grid}.summary>div{justify-content:space-between;gap:12px;font-size:12.5px;display:flex}.summary dt{color:var(--text-muted)}.summary dd{font-variant-numeric:tabular-nums;font-family:var(--font-num);margin:0}.summary.highlight{background:var(--panel-2);border-radius:var(--radius);margin-top:8px;padding:9px 10px}.results-inline .summary+.summary{margin-top:8px}.inspector.empty .summary{margin-top:14px}.determinacy{border-bottom:1px solid var(--border);gap:3px;padding:11px 16px;display:grid}.determinacy strong{font-size:13.5px;font-family:var(--font-head)}.determinacy span{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:11.5px;font-family:var(--font-num)}.determinacy p{color:var(--text-muted);margin:4px 0 0;font-size:11px;line-height:1.4}.determinacy.ok{background:var(--ok-bg)}.determinacy.ok strong{color:var(--ok)}.determinacy.info{background:var(--info-bg)}.determinacy.info strong{color:var(--accent)}.determinacy.bad{background:var(--bad-bg)}.determinacy.bad strong{color:var(--danger)}.determinacy.neutral strong{color:var(--text-muted)}.load-row{gap:8px;margin-top:8px;display:grid}.load-row+.load-row{margin-top:10px}.add-load{margin-top:12px}.add-load .preset-row{margin:6px 0 0}.hint-text.no-margin{margin-top:0}.readout{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--panel);color:var(--text-muted);font-variant-numeric:tabular-nums;font-family:var(--font-num);padding:6px 8px;display:block}button.link.danger-link{color:var(--danger);justify-self:start}.release-table{border-collapse:collapse;width:100%;font-size:12.5px}.release-table th,.release-table td{text-align:center;padding:4px 6px}.release-table thead th{color:var(--text-muted);font-size:11px;font-weight:600}.release-table tbody th{text-align:left;font-weight:400}.release-table input{cursor:pointer;margin:0}.position-mode{width:100%}.position-mode button{flex:1}.position-readout{margin-top:2px;font-size:11.5px}.position-readout dt{color:var(--text-muted)}.span-preview{pointer-events:none}.span-bar{stroke:var(--load-line);stroke-width:4px;stroke-linecap:round;opacity:.75}.span-tick{stroke:var(--load-line);stroke-width:2px}.row-actions{flex-wrap:wrap;gap:14px;display:flex}.row-actions button.link{margin-top:0}.point-loads .selected line,.point-loads .selected polygon,.point-loads .selected path,.element-point-loads .selected line,.element-point-loads .selected polygon,.element-point-loads .selected path{stroke:var(--accent);stroke-width:3px}.point-loads .selected polygon,.element-point-loads .selected polygon,.element-point-loads .selected .load-anchor{fill:var(--accent)}.line-load.selected .line-load-fill{fill:var(--load-selected-fill)}.line-load.selected .line-load-top{stroke:var(--accent);stroke-width:3px}.line-load.selected .line-load-arrow line{stroke:var(--accent);stroke-width:1.8px}.line-load.selected .line-load-arrow polygon{fill:var(--accent)}.load-row.selected{outline:2px solid var(--accent);outline-offset:1px;background:var(--accent-soft)}
