.header.with-path{height:auto;min-height:var(--header-h);align-items:center;gap:24px;padding:6px 16px}.pathbar{flex-direction:column;flex:1;gap:0;min-width:0;display:flex;overflow-x:auto}.path-row{align-items:center;height:28px;margin:0;padding:0;list-style:none;display:flex}.path-row li{align-items:center;display:flex}.path-node{color:var(--muted);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:8px;padding:3px 10px 3px 5px;font-size:13px;line-height:1;display:inline-flex}.path-node:hover:not(:disabled){color:var(--text);border-color:var(--border)}.path-dot{box-sizing:border-box;border:2px solid var(--border);background:var(--panel);border-radius:50%;flex:none;width:12px;height:12px}.path-node.done{color:var(--text)}.path-node.done .path-dot{border-color:var(--accent);background:var(--accent)}.path-node.active{color:var(--text);background:var(--panel-2);border-color:var(--border);font-weight:600}.path-node.active .path-dot{border:3px solid var(--accent);background:var(--panel)}.path-node.blocked{opacity:.45;cursor:default}.path-node.end{cursor:default}.path-node.end .path-dot{border-style:dashed}.path-link{background:var(--border);flex:none;width:24px;height:2px;margin:0 -1px}.path-link.done{background:var(--accent)}.path-branch{padding-left:10px}.path-elbow{border-left:2px solid var(--border);border-bottom:2px solid var(--border);border-bottom-left-radius:9px;flex:none;width:14px;height:20px;margin:-18px 1px 0 0}.path-elbow.done{border-color:var(--accent)}.path-end{color:var(--muted);white-space:nowrap;margin-left:10px;font-size:12px}@media (width<=980px){.path-end{display:none}}.signin{--paper:#f5f7f3;--mint:#e4efe6;--forest:#2f5d45;--forest-deep:#244a37;--green:#4a7c59;--moss:#6b8e4e;--copper:#c2673a;--ink:#16241c;--ink-soft:#4f5d55;--line:#d6e0d9;--field:#f7f9f6;--shadow:0 18px 44px #2f5d451f, 0 2px 6px #16241c0f;min-height:100vh;color:var(--ink);background:radial-gradient(ellipse 70% 60% at 18% 30%, var(--mint) 0%, #e4efe600 70%), radial-gradient(ellipse 50% 50% at 90% 90%, #eaf2ec 0%, #eaf2ec00 70%), var(--paper);grid-template-columns:minmax(0,5fr) minmax(0,4fr);align-items:center;gap:56px;padding:40px clamp(20px,7vw,112px);display:grid}.signin-intro{flex-direction:column;gap:18px;max-width:46ch;display:flex}.signin-wordmark{letter-spacing:.01em;color:var(--ink);font-size:15px;font-weight:600}.signin-wordmark b{color:var(--green);font-weight:600}.signin-wordmark small{color:var(--ink-soft);letter-spacing:.02em;margin-top:2px;font-size:12px;font-weight:500;display:block}.signin-figure{aspect-ratio:1;place-items:center;width:min(100%,300px);margin:6px 0;display:grid;position:relative}.signin-figure:before{content:"";background:radial-gradient(circle at 40% 35%,#cfe6d6 0%,#e6f1e9 55%,#e6f1e959 100%);border-radius:50%;position:absolute;inset:0;box-shadow:0 24px 60px #2f5d4524}.signin-drawing{width:62%;height:auto;color:var(--forest);position:relative}.signin-mesh{stroke:#b7cfbf}.signin-plates{color:var(--moss)}.signin-base{color:var(--copper)}.signin-lead{text-wrap:balance;margin:0;font-family:IBM Plex Sans Condensed,IBM Plex Sans,system-ui,sans-serif;font-size:30px;font-weight:600;line-height:1.12}.signin-description{color:var(--ink-soft);margin:0;font-size:15px;line-height:1.55}.signin-card{width:100%;max-width:420px;box-shadow:var(--shadow);background:#fff;border:1px solid #d6e0d9e6;border-radius:18px;flex-direction:column;justify-self:start;gap:12px;padding:34px 34px 30px;display:flex}.signin-card h1{margin:0;font-size:22px;font-weight:600}.signin-subtitle{color:var(--ink-soft);margin:0 0 8px;line-height:1.5}.signin-card form{flex-direction:column;gap:14px;display:flex}.signin-card label{color:var(--ink);flex-direction:column;gap:6px;font-size:12.5px;font-weight:600;display:flex}.signin-card input{border:1px solid var(--line);background:var(--field);font:inherit;color:var(--ink);border-radius:10px;padding:11px 13px;font-weight:400;transition:border-color .12s,box-shadow .12s,background-color .12s}.signin-card input:hover{border-color:#bfd0c5}.signin-card input:focus{border-color:var(--green);background:#fff;outline:none;box-shadow:0 0 0 4px #4a7c5929}.signin-optional{color:var(--ink-soft);font-weight:400}.signin-forgot{text-align:right;margin:-6px 0 0}.signin-primary{background:var(--forest);color:#fff;font:inherit;cursor:pointer;border:none;border-radius:999px;margin-top:4px;padding:12px 14px;font-size:15px;font-weight:600;transition:background-color .12s,transform .12s}.signin-primary:hover:not(:disabled){background:var(--forest-deep)}.signin-primary:active:not(:disabled){transform:translateY(1px)}.signin-primary:disabled{opacity:.45;cursor:default}.signin-primary:focus-visible,.signin-link:focus-visible{outline-offset:2px;outline:3px solid #4a7c5966}.signin-link{color:var(--green);font:inherit;cursor:pointer;text-underline-offset:3px;background:0 0;border:none;padding:0;font-weight:500;-webkit-text-decoration:underline #4a7c5973;text-decoration:underline #4a7c5973}.signin-link:hover:not(:disabled){color:var(--forest);text-decoration-color:currentColor}.signin-link:disabled{color:#9aa79f;cursor:default;text-decoration:none}.signin-alt{color:var(--ink-soft);margin:4px 0 0;font-size:14px;line-height:1.5}.signin-divider{background:var(--line);height:1px;margin:6px 0 2px}.signin-error{color:#8a2a24;white-space:pre-wrap;background:#fbeceb;border-radius:10px;margin:0;padding:10px 12px;line-height:1.45}.signin-notice{color:#1e5c3a;background:#e6f4ec;border-radius:10px;margin:0;padding:10px 12px;line-height:1.45}@media (prefers-reduced-motion:reduce){.signin-card input,.signin-primary{transition:none}}@media (width<=800px){.signin{grid-template-columns:minmax(0,1fr);align-content:start;gap:28px;padding:28px 20px 40px}.signin-figure{width:150px;margin:0}.signin-lead{font-size:24px}.signin-card{max-width:none;padding:26px 22px}}.workspace{flex:1;grid-template-rows:auto minmax(0,1fr) auto;min-height:0;display:grid}.workspace :focus-visible{outline:2px solid var(--accent);outline-offset:1px}.small{font-size:12px}.model-bar{background:var(--panel);border-bottom:1px solid var(--border);padding:8px 16px 0}.model-bar-top{align-items:center;gap:12px;min-width:0;display:flex}.back-link{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:none;padding:4px 0}.back-link:before{content:"‹ "}.back-link:hover{color:var(--text)}.model-name{background:0 0;border:1px solid #0000;border-radius:6px;min-width:12ch;max-width:40ch;padding:2px 6px;font-family:IBM Plex Sans Condensed,IBM Plex Sans,sans-serif;font-size:18px;font-weight:600}.model-name:hover,.model-name:focus{border-color:var(--border);background:var(--panel)}.draft-state{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.draft-state.unsaved{color:#9a5a12}.draft-state.refused{color:var(--danger);font-weight:600}.model-bar-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.save-revision{position:relative}.popover{z-index:20;background:var(--panel);border:1px solid var(--border);border-radius:8px;gap:8px;width:320px;padding:12px;display:grid;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 6px 24px #1b243024}.popover label{color:var(--muted);gap:4px;font-size:12px;display:grid}.popover p{margin:0}.popover-actions{justify-content:flex-end;gap:6px;display:flex}.step-bar{margin:8px 0 0;padding:0;list-style:none;display:flex;overflow-x:auto}.step-bar li{align-items:center;display:flex}.step-bar li+li:before{content:"";background:var(--border);width:14px;height:1px}.step{color:var(--muted);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;padding:6px 10px 8px;display:flex}.step:hover{color:var(--text)}.step.chosen{color:var(--text);border-bottom-color:var(--accent)}.step-mark{border:1px solid var(--border);background:var(--panel-2);width:18px;height:18px;color:var(--muted);border-radius:50%;place-items:center;font-size:11px;font-weight:600;display:inline-grid}.step.done .step-mark{background:var(--ok);border-color:var(--ok);color:#fff}.step.attention .step-mark{background:var(--accent-2);border-color:var(--accent-2);color:#fff}.step.attention{color:var(--text)}.workspace-body{grid-template-columns:280px minmax(0,1fr) 380px;min-height:0;display:grid}.outline,.properties{background:var(--panel);min-height:0;overflow:auto}.outline{border-right:1px solid var(--border);padding:6px 0}.properties{border-left:1px solid var(--border);padding:12px 16px 24px}.outline-group{padding-bottom:2px}.outline-group-head{align-items:center;padding:0 8px;display:flex}.outline-toggle{font:inherit;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:6px;padding:6px 4px;font-weight:600;display:flex}.caret{border-left:5px solid var(--muted);border-top:4px solid #0000;border-bottom:4px solid #0000;width:0;height:0;transition:transform .12s}.caret.open{transform:rotate(90deg)}.count{color:var(--muted);font-size:12px;font-weight:400}.issue-dot{background:var(--danger);border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.icon-button.add{border-radius:4px;width:24px;height:24px;padding:0;font-size:17px;line-height:1}.icon-button.add:hover{background:var(--panel-2);color:var(--accent)}.outline ul{margin:0;padding:0 0 6px;list-style:none}.outline-item{width:100%;font:inherit;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;align-items:baseline;gap:8px;padding:4px 12px 4px 26px;display:flex}.outline-item:hover{background:var(--panel-2)}.outline-item.selected{background:var(--selected);box-shadow:inset 3px 0 0 var(--accent)}.outline-label{text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:55%;overflow:hidden}.outline-detail{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.outline-empty,.empty-note{color:var(--muted);margin:0;padding:2px 12px 8px 26px;font-size:12px}.properties .empty-note{padding:24px 0}.model-viewport{background:var(--canvas);min-height:0;position:relative}.model-viewport .viewport{width:100%;height:100%}.viewport-top{pointer-events:none;flex-direction:column;align-items:flex-start;gap:6px;display:flex;position:absolute;top:10px;left:12px;right:12px}.viewport-top>*{pointer-events:auto}.viewport-notice{border:1px solid var(--accent-2);color:#7a4a12;background:#fff7eb;border-radius:6px;margin:0;padding:6px 12px;font-size:12px}.viewport-hint{color:var(--muted);margin:0;font-size:11px;position:absolute;bottom:8px;left:12px}.viewport-loading{border:1px solid var(--border);background:var(--panel);white-space:nowrap;border-radius:6px;margin:0;padding:8px 12px}.properties-head{gap:2px;margin-bottom:14px;display:grid}.properties-head h2{margin:0;font-size:17px}.properties-head p{margin:0}.properties-head .button{justify-self:start;margin-top:6px}.object-fields{gap:10px;display:grid}.field{grid-template-columns:minmax(110px,42%) minmax(0,1fr);align-items:center;column-gap:10px;display:grid}.field.wide{grid-template-columns:minmax(0,1fr);row-gap:4px}.field.wide>.field-label{color:var(--text);font-weight:600}.field-label{color:var(--muted);font-size:12px}.field-control{min-width:0}.field-control input:not([type=checkbox]),.field-control select{width:100%}.field-help{color:var(--muted);grid-column:1/-1;margin:3px 0 0;font-size:11px;display:none}.field:focus-within>.field-help{display:block}.field-issue{color:var(--danger);grid-column:1/-1;margin:3px 0 0;font-size:12px}.field.has-issue>.field-control>input,.field.has-issue>.field-control>select,.field.has-issue>.field-control>.number-input,select.invalid{border-color:var(--danger)}.number-input{border:1px solid var(--border);background:var(--bg);border-radius:6px;align-items:center;min-width:0;display:flex}.number-input input{text-align:right;font-variant-numeric:tabular-nums;background:0 0;border:none;flex:1;min-width:0}.number-input.invalid{border-color:var(--danger)}.number-unit{color:var(--muted);border-left:1px solid var(--border);white-space:nowrap;padding:0 8px;font-size:12px}.segmented{flex-wrap:wrap;gap:4px;display:inline-flex}.segmented button{border:1px solid var(--border);background:var(--panel);color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;border-radius:6px;padding:4px 10px}.segmented button:hover{border-color:var(--muted)}.segmented button.on{background:var(--accent);border-color:var(--accent);color:#fff}.chips{flex-wrap:wrap;gap:4px;display:flex}.chip{border:1px solid var(--border);background:var(--panel);color:var(--text);font:inherit;cursor:pointer;border-radius:999px;padding:2px 10px;font-size:12px}.chip.on{background:var(--selected);border-color:var(--accent);color:var(--accent)}.chip.invalid{border-color:var(--danger);color:var(--danger)}.const-value{color:var(--muted)}.switch{width:16px;height:16px;accent-color:var(--accent)}.field-group{border-left:2px solid var(--border);gap:8px;padding-left:10px;display:grid}.nullable{align-items:flex-start;gap:8px;display:flex}.nullable>:first-child{flex:1;min-width:0}.tuple{gap:6px;display:flex}.tuple-slot{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.tuple-axis{color:var(--muted);font-size:11px}.list-control{gap:6px;display:grid}.list-control>.button{justify-self:start}.list-entry{align-items:flex-start;gap:6px;display:flex}.list-entry>:not(.icon-button):not(.list-index){flex:1;min-width:0}.list-control.block .list-entry{border:1px solid var(--border);background:var(--panel-2);border-radius:6px;padding:8px}.list-index{color:var(--muted);min-width:14px;padding-top:4px;font-size:11px}.read-only-value{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;max-height:12rem;margin:0;padding:6px;font-size:11px;overflow:auto}.checks-bar{background:var(--panel);border-top:1px solid var(--border)}.checks-bar.has-issues{background:#fdf3f3}.checks-summary{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:6px 16px;display:flex}.checks-summary:disabled{cursor:default}.status-light{border-radius:50%;flex:none;width:10px;height:10px}.status-light.good{background:var(--ok)}.status-light.bad{background:var(--danger)}.checks-list{max-height:30vh;margin:0;padding:0 16px 8px;list-style:none;overflow:auto}.checks-list button{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;gap:12px;padding:4px 0;display:flex}.checks-list button:hover{color:var(--accent)}.check-where{min-width:140px;font-weight:600}.models-screen h1{margin:0}.models-list .summary{color:var(--muted);max-width:56ch}.models-list td.actions{gap:6px;display:flex}.link{color:var(--accent);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;padding:0;font-weight:600}.badge{border:1px solid var(--accent-2);color:#9a5a12;border-radius:999px;margin-left:8px;padding:0 6px;font-size:11px}.new-model{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));align-items:end;gap:12px;display:grid}.new-model label{color:var(--muted);gap:4px;font-size:12px;display:grid}@media (width<=1200px){.workspace-body{grid-template-columns:230px minmax(0,1fr) 320px}}@media (width<=860px){.workspace-body{grid-template-rows:40vh minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr)}.outline{border-right:none;border-bottom:1px solid var(--border);max-height:30vh}.properties{border-left:none;border-top:1px solid var(--border)}}@media (prefers-reduced-motion:reduce){.caret{transition:none}}.model-viewport.picking canvas{cursor:crosshair}.pick-bar{border:1px solid var(--accent);background:var(--panel);border-radius:6px;align-items:center;gap:10px;padding:6px 10px;font-size:12px;display:flex;box-shadow:0 2px 10px #1b24301a}.pick-bar .segmented button{padding:2px 8px;font-size:12px}.model-viewport .viewport-notice{max-width:70%}.marker-label{white-space:nowrap;border:1px solid var(--accent);color:var(--accent);background:#ffffffeb;border-radius:4px;padding:2px 6px;font-size:11px;display:inline-block;transform:translateY(-2px)}.marker-label.load{border-color:var(--accent-2);color:#8a4e12}.marker-label.load.selected{font-weight:600}.marker-label.hover{border-color:var(--ok);color:#1f6e47}.preview-note{border:1px solid var(--accent-2);color:#7a4a12;background:#fff7eb;border-radius:6px;margin:0 0 10px;padding:6px 10px;font-size:12px}.issue-dot.warn,.status-light.warn{background:var(--accent-2)}.checks-bar.has-warnings{background:#fff9f0}.field-issue.warning,.checks-list li.warning .check-where{color:#9a5a12}.cases-tables{background:var(--bg);align-content:start;gap:24px;min-height:0;padding:16px;display:grid;overflow:auto}.grid-block{background:var(--panel);border:1px solid var(--border);border-radius:8px;gap:10px;min-width:0;padding:12px 14px;display:grid}.grid-head{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.grid-head h2{margin:0;font-size:16px}.grid-head p{flex:1;min-width:20ch;margin:0}.grid-scroll{max-width:100%;overflow:auto}.grid-table{border-collapse:separate;border-spacing:0;font-size:13px}.grid-table th,.grid-table td{border-bottom:1px solid var(--border);text-align:center;white-space:nowrap;padding:4px 8px}.grid-table thead th{background:var(--panel-2);color:var(--muted);z-index:1;font-weight:500;position:sticky;top:0}.grid-table th.block{color:var(--text);border-left:1px solid var(--border);font-weight:600}.grid-table th.column{font-size:12px}.grid-table .sticky{background:var(--panel);z-index:2;text-align:left;position:sticky;left:0}.grid-table thead .sticky{background:var(--panel-2);z-index:3}.grid-table .row-head{align-items:center;gap:8px;display:flex}.grid-table .row-head input{width:16ch}.grid-table tbody tr:hover td,.grid-table tbody tr:hover th{background:var(--selected)}.grid-table input[type=checkbox],.grid-table input[type=radio]{width:16px;height:16px;accent-color:var(--accent)}.grid-table input.factor{text-align:right;font-variant-numeric:tabular-nums;width:7ch;padding:3px 6px}.grid-table input.factor.invalid{border-color:var(--danger)}.status-chip{white-space:nowrap;border:1px solid var(--border);color:var(--muted);background:var(--panel-2);border-radius:999px;justify-self:start;align-items:center;gap:6px;margin:0;padding:2px 10px;font-size:12px;font-weight:600;display:inline-flex}.status-chip:before{content:"";background:currentColor;border-radius:50%;width:8px;height:8px}.status-chip.draft{color:#9a5a12;border-color:var(--accent-2);background:#fff7eb}.status-chip.saved{color:var(--accent);border-color:var(--accent);background:var(--selected)}.status-chip.checked{color:#1f6e47;border-color:var(--ok);background:#eaf6ef}.status-chip.check_failed,.status-chip.not_built{color:#8e2a2a;border-color:var(--danger);background:#fdf3f3}.status-chip.delivered{color:#fff;border-color:var(--ok);background:var(--ok)}.recent-models{gap:4px;margin:0 0 10px;padding:0;list-style:none;display:grid}.geometry-check{border-top:1px solid var(--border)}.geometry-check-row{align-items:center;gap:12px;padding:4px 16px;display:flex}.geometry-check-row .checks-summary{padding:2px 0}.geometry-check-run{flex:none}.geometry-check-stages{font-variant-numeric:tabular-nums;flex:none;margin-left:auto}.checks-list li.selected button{color:var(--accent);font-weight:600}:root{--bg:#f1f3f6;--panel:#fff;--panel-2:#f7f8fa;--border:#d3d9e1;--text:#1b2430;--muted:#66707e;--accent:#1a5490;--accent-2:#c9772b;--danger:#d64545;--ok:#2fa36b;--selected:#dce8f7;--canvas:#f7f8fa;--header-h:48px;color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:IBM Plex Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}h1,h2,h3,h4{text-wrap:balance;font-family:IBM Plex Sans Condensed,IBM Plex Sans,system-ui,sans-serif;font-weight:600}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}.app{flex-direction:column;height:100vh;display:flex}.header{height:var(--header-h);background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:24px;padding:0 16px;display:flex}.brand{letter-spacing:.02em;font-weight:600}.nav{gap:4px;display:flex}.nav-button{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;padding:6px 12px}.nav-button:hover:not(:disabled){color:var(--text);border-color:var(--border)}.nav-button.active{color:var(--text);background:var(--panel-2);border-color:var(--border)}.nav-button:disabled{opacity:.4;cursor:default}.error-banner{border-bottom:1px solid var(--danger);background:#fbe9e9;align-items:flex-start;gap:12px;padding:8px 16px;display:flex}.error-text{white-space:pre-wrap;color:#7a1f1f;flex:1;margin:0;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12px}.screen{flex-direction:column;flex:1;gap:16px;padding:16px;display:flex;overflow:auto}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:16px}.panel h2{margin:0 0 8px;font-size:16px}.panel h3{color:var(--muted);margin:16px 0 6px;font-size:14px}.muted{color:var(--muted)}.mono{font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12px}.button{background:var(--panel-2);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:6px 12px}.button:hover:not(:disabled){border-color:var(--muted)}.button:disabled{opacity:.4;cursor:default}.button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.button.danger{border-color:var(--danger);color:var(--danger)}.button.small{padding:3px 8px;font-size:12px}.button.wide{width:100%;margin:8px 0}.icon-button{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:12px}.icon-button:hover{color:var(--text)}table.list{border-collapse:collapse;width:100%}table.list th,table.list td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:6px 8px}table.list th{color:var(--muted);font-weight:500}table.list .name-input{width:100%;min-width:12rem}.topside-parameters{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;margin:16px 0;display:grid}table.list.compact td,table.list.compact th{padding:2px 8px}td.actions{gap:6px;display:flex}table.kv{border-collapse:collapse;width:100%;margin:4px 0 8px}table.kv th{text-align:left;color:var(--muted);word-break:break-word;width:40%;padding:2px 8px 2px 0;font-weight:500}table.kv td{word-break:break-word;padding:2px 0}.viewer-layout{flex:1;grid-template-columns:320px 1fr 360px;min-height:0;display:grid}.transfer-layout{flex:1;grid-template-columns:560px 1fr;min-height:0;display:grid}.viewport{min-height:0}.sidebar{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;gap:8px;min-height:0;padding:12px;display:flex;overflow:auto}.sidebar.right{border-right:none;border-left:1px solid var(--border)}.sidebar-title{white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:14px;overflow:hidden}.search,input,select{background:var(--bg);color:var(--text);border:1px solid var(--border);font:inherit;border-radius:6px;padding:6px 8px}.role-filters{flex-wrap:wrap;gap:6px 12px;font-size:12px;display:flex}.tree-scroll{flex:1;min-height:0;overflow:auto}.tree-root,.tree-children{margin:0;padding:0;list-style:none}.tree-children{border-left:1px solid var(--border);margin-left:6px;padding-left:14px}.tree-header{align-items:center;gap:4px;padding:2px 0;display:flex}.tree-name{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.tree-kind{color:var(--muted);font-size:11px}.part-row{border-radius:4px;align-items:center;display:flex}.part-row.selected{background:var(--selected)}.part-row.hidden-part .part-name{opacity:.45}.part-name{color:var(--text);text-align:left;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;font:inherit;background:0 0;border:none;flex:1;align-items:center;gap:6px;padding:3px 4px;display:flex;overflow:hidden}.role-badge{text-transform:uppercase;letter-spacing:.04em;background:var(--panel-2);color:var(--muted);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:10px}.role-beam{color:#9a5200}.role-column{color:#1a5490}.role-wall{color:#6b3fa0}.role-slab{color:#1f7a4d}.role-member{color:#7a6a00}.kind-badge{color:var(--muted);margin-left:auto;font-size:11px}.selection-bar{align-items:center;gap:6px;display:flex}.selection-bar span{flex:1}.details h3{margin:8px 0 4px;font-size:14px}details summary{cursor:pointer;color:var(--muted);margin:6px 0 2px}.transfer-form{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;gap:8px;min-height:0;padding:12px;display:flex}.transfer-toolbar{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.transfer-toolbar label{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.transfer-toolbar h2{margin:0}.rows-scroll{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex;overflow:auto}.row-card{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:10px}.row-card.excluded{opacity:.55}.row-card.invalid{border-color:var(--accent-2)}.row-header{align-items:center;gap:8px;margin-bottom:8px;display:flex}.row-title{font-weight:600}.include{color:var(--muted);align-items:center;gap:4px;font-size:12px;display:flex}.field-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.field-grid label{color:var(--muted);flex-direction:column;gap:3px;font-size:12px;display:flex}.warnings,.problems{margin:6px 0 0;padding-left:18px;font-size:12px}.warnings li{color:var(--accent-2)}.problems li{color:var(--danger)}.problems-summary{color:var(--danger);margin:0}.calc-viewport{background:var(--canvas);border:1px solid var(--border);border-radius:6px;height:62vh;min-height:420px;margin-top:12px;position:relative;overflow:hidden}.calc-viewport .viewport{width:100%;height:100%}.calc-viewport-toolbar{flex-wrap:wrap;gap:6px;display:flex;position:absolute;top:10px;left:10px}.calc-viewport-toolbar .button{border-radius:4px;padding:4px 9px;font-size:12px}.calc-viewport-toolbar label{background:var(--panel);border:1px solid var(--border);border-radius:4px;align-items:center;gap:6px;padding:4px 9px;font-size:12px;display:inline-flex}.calc-viewport-toolbar input[type=range]{width:110px}.calc-viewport-legend{background:var(--panel);border:1px solid var(--border);border-radius:4px;gap:4px;padding:6px 10px;font-size:12px;display:grid;position:absolute;top:10px;right:10px}.calc-viewport-legend span{align-items:center;gap:7px;display:inline-flex}.calc-viewport-legend i{border-radius:2px;width:12px;height:12px;display:inline-block}.calc-viewport-readout{background:var(--panel);border:1px solid var(--border);color:var(--muted);border-radius:4px;max-width:calc(100% - 20px);margin:0;padding:6px 10px;position:absolute;bottom:10px;left:10px}.meridian{grid-template-rows:auto auto 1fr;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:8px 20px;margin:8px 0;display:grid}.meridian svg{max-width:100%;height:auto;color:var(--text);grid-area:1/1/span 3;font-family:IBM Plex Mono,ui-monospace,monospace;display:block}.meridian figcaption{grid-column:2;font-size:12px}.meridian-controls{flex-wrap:wrap;grid-column:2;gap:6px 16px;font-size:12px;display:flex}.meridian-controls label{align-items:center;gap:6px;display:inline-flex}.meridian-legend{grid-column:2;align-items:center;gap:8px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12px;display:inline-flex}@media (width<=640px){.meridian{grid-template-columns:minmax(0,1fr)}.meridian svg,.meridian figcaption,.meridian-controls,.meridian-legend{grid-area:auto/1}}.meridian-legend i{border:1px solid var(--border);border-radius:2px;width:160px;height:10px;display:inline-block}.facts{color:var(--muted);border-bottom:1px solid var(--border);flex-wrap:wrap;gap:6px 18px;padding:6px 0 12px;font-size:12px;display:flex}.facts b{color:var(--text);font-weight:500}.rev-stage{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:16px;margin-top:14px;display:grid}.rev-stage .calc-viewport{margin-top:0}.rev-side{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-content:start;gap:14px;margin-top:14px;display:grid}.card{background:var(--panel);border:1px solid var(--border);border-radius:6px;gap:8px;margin-top:14px;padding:12px 14px;display:grid}.rev-side .card{margin-top:0}.card.warn{border-left:3px solid var(--accent-2)}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0;font-size:12px;font-weight:500}.note{color:var(--muted);margin:0;font-size:12.5px}@media (width<=1100px){.rev-stage{grid-template-columns:1fr}}.status-badge{text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--border);border-radius:4px;padding:1px 6px;font-size:10px}.status-draft{color:var(--muted)}.status-final{color:#1f7a4d;border-color:#1f7a4d}label.notes{color:var(--muted);flex-direction:column;gap:4px;margin:8px 0;font-size:12px;display:flex}label.notes textarea{font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--border);resize:vertical;border-radius:6px;padding:6px 8px}.row-card h3{margin:8px 0 4px}.login-gate{background:var(--bg);grid-template-columns:minmax(0,5fr) minmax(0,4fr);align-items:center;gap:48px;min-height:100vh;padding:32px clamp(16px,6vw,96px);display:grid}.gate-intro{max-width:46ch;color:var(--text);flex-direction:column;gap:16px;display:flex}.gate-intro .brand{color:var(--muted);font-size:13px}.gate-drawing{width:min(100%,240px);height:auto;color:var(--text);margin:8px 0}.gate-mesh{stroke:var(--border)}.gate-plates{color:var(--accent)}.gate-base{color:var(--accent-2)}.gate-lead{text-wrap:balance;margin:0;font-family:IBM Plex Sans Condensed,IBM Plex Sans,system-ui,sans-serif;font-size:28px;font-weight:600;line-height:1.15}.gate-description{color:var(--muted);margin:0;line-height:1.5}.gate-card{background:var(--panel);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:8px;flex-direction:column;justify-self:start;gap:10px;width:100%;max-width:400px;padding:28px;display:flex}.gate-card h1{margin:0;font-size:20px}.gate-subtitle{color:var(--muted);margin:0 0 6px;line-height:1.45}.gate-card form{flex-direction:column;gap:12px;display:flex}.gate-card label{flex-direction:column;gap:4px;font-size:12px;font-weight:600;display:flex}.gate-card input{border:1px solid var(--border);background:var(--panel);font:inherit;color:var(--text);border-radius:6px;padding:9px 10px;font-weight:400}.gate-card input:focus-visible,.gate-primary:focus-visible,.gate-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.gate-optional{color:var(--muted);font-weight:400}.gate-forgot{text-align:right;margin:-6px 0 0}.gate-primary{background:var(--accent);color:#fff;font:inherit;cursor:pointer;border:none;border-radius:6px;padding:10px 12px;font-weight:600}.gate-primary:hover:not(:disabled){background:#164777}.gate-primary:disabled{opacity:.5;cursor:default}.gate-link{color:var(--accent);font:inherit;cursor:pointer;text-underline-offset:2px;background:0 0;border:none;padding:0;text-decoration:underline}.gate-link:disabled{color:var(--muted);cursor:default;text-decoration:none}.gate-alt{color:var(--muted);margin:2px 0 0;line-height:1.45}.gate-error{color:#7a1f1f;white-space:pre-wrap;background:#fbe9e9;border-radius:6px;margin:0;padding:8px 10px}.gate-notice{color:#1e5c3a;background:#e6f4ec;border-radius:6px;margin:0;padding:8px 10px}.session-corner{margin-left:auto}@media (width<=760px){.login-gate{grid-template-columns:minmax(0,1fr);align-content:start;gap:24px;padding-block:24px}.gate-drawing{width:120px}.gate-lead{font-size:22px}.gate-card{max-width:none}}.assembly-report{border-top:1px solid var(--border);margin-top:12px;padding-top:10px;font-size:12px;line-height:1.5}.assembly-report h3,.assembly-report h4{margin:10px 0 6px}.assembly-report details{margin-block:8px}.assembly-report summary{cursor:pointer;overflow-wrap:anywhere}.assembly-report dl>div{justify-content:space-between;gap:12px;display:flex}.assembly-report dd{margin:0}.section-cut-controls{border:1px solid var(--border);border-radius:6px;margin:12px 0;padding:8px;font-size:12px}.section-cut-controls label{flex-wrap:wrap;align-items:center;gap:8px;margin-block:4px;display:flex}.section-cut-controls input[type=range],.section-cut-controls input[type=number]{width:100%}
