:root{font-family:Segoe UI,system-ui,-apple-system,Helvetica Neue,Arial,sans-serif;--mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;color:#1d2b6e;background:#f4f6f9;font-synthesis:none;text-rendering:optimizeLegibility;--navy: #1d2b6e;--ink-2: #3a4560;--muted: #5b6477;--line: #d9dee6;--line-strong: #c4cbd6;--surface: #ffffff;--ground: #f4f6f9;--stage: #e9edf2;--accent: #08809b;--accent-dark: #06637a;--selected: #eef1fa;--ok: #0d6b3f;--ok-soft: #eef7f2;--danger: #a3231b;--danger-soft: #fdf0ef}*{box-sizing:border-box}html,body,#root{height:100%;min-height:100%;margin:0}button,input,select{font:inherit;color:inherit}button,a{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app-shell{height:100vh;min-height:100vh;display:flex;flex-direction:column;overflow:hidden;background:var(--ground)}.topbar{flex:none;min-height:60px;padding:10px 28px;display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px;background:var(--surface);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;color:var(--navy);text-decoration:none;font-weight:600;font-size:16px}.brand strong{color:var(--accent);font-weight:600}.brand-mark{width:32px;height:32px;display:grid;place-items:center;border-radius:8px;color:#fff;background:var(--navy)}.topbar-lede{margin:0;color:var(--muted);font-size:14px}.phase-badge{margin-left:auto;color:var(--muted);font-size:12px}.workspace{flex:1;min-height:0;display:grid;grid-template-columns:minmax(330px,400px) minmax(0,1fr) minmax(340px,440px);gap:20px;padding:20px 28px}.control-panel,.sheet-panel{min-height:0;overflow-y:auto;overscroll-behavior:contain}.control-panel{display:flex;flex-direction:column;gap:10px;padding-right:4px}.field{display:grid;gap:5px;color:var(--muted);font-size:12px}.field input,.field select{width:100%;height:40px;padding:0 10px;border:1px solid var(--line-strong);border-radius:6px;color:var(--navy);background:#fff;font-family:var(--mono);font-size:14px;font-weight:500}.field select{font-family:inherit}.field input:focus,.field select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #08809b26}.input-with-unit{position:relative}.input-with-unit input{padding-right:40px}.input-with-unit>span{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:12px;pointer-events:none}.field-grid{display:grid;gap:10px}.field-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.field-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.check-row{display:flex;align-items:center;gap:10px;min-height:40px;color:var(--navy);font-size:14px;cursor:pointer}.check-row input{width:18px;height:18px;margin:0;accent-color:var(--navy)}.check-row.compact{min-height:36px;font-size:13px}.hint{margin:0;display:flex;gap:6px;align-items:flex-start;color:var(--muted);font-size:12px;line-height:1.45}.hint svg{flex:none;margin-top:1px}.hint.warn{color:var(--danger)}.group-label{color:var(--muted);font-size:13px}.cell-card{display:grid;gap:12px;padding:16px 14px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.cell-card-heading{display:grid;gap:2px}.cell-card-heading h2{margin:0;color:var(--muted);font-size:13px;font-weight:500}.derived-model{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}.derived-model strong{font-family:var(--mono);font-size:20px;font-weight:600;letter-spacing:.01em}.derived-model span{font-family:var(--mono);font-size:15px;color:var(--ink-2)}.cell-size{margin:0;color:var(--muted);font-family:var(--mono);font-size:13px}.quick-fill{padding-top:12px;border-top:1px solid #eef1f5}.quick-fill .field input{font-size:14px}.model-entry-hint{margin:6px 0 0;color:var(--muted);font-size:12px}.model-entry-hint.is-valid{color:var(--ok)}.accordion{border:1px solid var(--line);border-radius:10px;background:var(--surface)}.accordion h2{margin:0}.accordion h2 button{width:100%;display:flex;align-items:center;gap:10px;padding:14px;border:0;border-radius:10px;background:transparent;color:var(--navy);text-align:left;cursor:pointer}.accordion h2 button:hover{background:#f8f9fb}.accordion h2 svg{flex:none;color:var(--muted);transition:transform .15s}.accordion.is-open h2 svg{transform:rotate(180deg)}.accordion-text{flex:1;min-width:0;display:grid;gap:2px}.accordion-text strong{font-size:15px;font-weight:600}.accordion-text span{color:var(--muted);font-family:var(--mono);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.accordion-body{display:grid;gap:12px;padding:0 14px 14px}.segmented{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:4px;border-radius:8px;background:#eef1f5}.segmented button{height:36px;border:0;border-radius:6px;color:var(--muted);background:transparent;font-size:14px;font-weight:500;cursor:pointer}.segmented button.active{color:var(--navy);background:#fff;font-weight:600;box-shadow:0 1px 2px #1d2b6e1f}.lead-colors{display:flex;flex-wrap:wrap;align-items:end;gap:10px;font-size:13px}.lead-colors>span{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:6px;background:var(--ground)}.lead-colors i{width:12px;height:12px;border-radius:50%;border:1px solid rgba(0,0,0,.15)}.lead-colors .field{flex:1 1 140px}.connector-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.option-card{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:var(--navy);text-align:left;cursor:pointer}.option-card:hover{border-color:#8e99c7}.option-card.is-selected{border:2px solid var(--navy);padding:9px;background:var(--selected)}.option-card strong{font-size:14px;font-weight:600}.option-card>span{color:var(--ink-2);font-family:var(--mono);font-size:12px}.pin-cards{display:grid;gap:8px}.pin-card{flex-direction:row;align-items:center;gap:12px;padding:10px 12px}.pin-card.is-selected{padding:9px 11px}.pin-card-text{display:grid;gap:2px}.pin-card-text span{color:var(--ink-2);font-size:13px}.pin-diagram{flex:none}.pin-diagram text{font-family:var(--mono)}.preview-panel{min-width:0;min-height:0;display:flex;flex-direction:column;gap:10px}.preview-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;color:var(--muted);font-size:12px}.preview-toolbar>span{display:inline-flex;align-items:center;gap:6px}.tool-button{height:36px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:var(--navy);font-size:13px;font-weight:500;cursor:pointer}.tool-button.is-active{color:#fff;border-color:var(--navy);background:var(--navy)}.tool-button:disabled{opacity:.5;cursor:not-allowed}.canvas-wrap{position:relative;flex:1;min-height:360px;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--stage)}.canvas-wrap canvas{touch-action:none}.scene-loading{height:100%;min-height:360px;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:13px}.dimension-line-label{display:inline-block;padding:4px 7px;border:1px solid var(--line);border-radius:4px;color:var(--navy);background:#ffffffeb;font:600 12px/1 var(--mono);white-space:nowrap}.connector-identity{position:absolute;z-index:2;left:14px;bottom:14px;max-width:min(360px,calc(100% - 28px));padding:10px 12px;display:grid;gap:2px;border:1px solid var(--line);border-radius:8px;background:#fff;pointer-events:none}.connector-identity small{color:var(--accent-dark);font-size:11px;font-weight:600}.connector-identity strong{font-size:13px}.connector-identity span{color:var(--muted);font-size:12px}.preview-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.dimension-chips{display:flex;gap:16px;padding:8px 14px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--muted);font-size:12px}.dimension-chips strong{color:var(--navy);font-family:var(--mono);font-size:14px;font-weight:500}.sheet-panel{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.sheet-heading{flex:none;display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid #e3e7ee}.sheet-heading h2{flex:1;margin:0;font-size:16px;font-weight:600}.live-badge{padding:4px 8px;border-radius:999px;background:var(--ok-soft);color:var(--ok);font-size:12px}.sheet-table{margin:0;padding:4px 18px}.sheet-table>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:12px;padding:9px 0;border-bottom:1px solid #eef1f5;font-size:14px}.sheet-table>div:last-child{border-bottom:0}.sheet-table dt{color:var(--muted)}.sheet-table dd{margin:0;font-family:var(--mono);font-size:13px;overflow-wrap:anywhere}.sheet-table .is-warn dd{color:var(--danger);font-weight:600}.sheet-actions{margin-top:auto;display:grid;gap:10px;padding:16px 18px;border-top:1px solid #e3e7ee}.action-row{display:flex;flex-wrap:wrap;gap:8px}.action-button{flex:1 1 90px;height:44px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:var(--navy);font-size:14px;font-weight:500;text-decoration:none;cursor:pointer}.action-button:hover{border-color:#8e99c7}.action-button.primary{flex:2 1 160px;border:0;background:var(--accent);color:#fff;font-weight:600}.action-button.primary:hover{background:var(--accent-dark)}.action-button.ready{border-color:var(--ok);color:var(--ok)}.action-button.primary.ready{background:var(--ok);color:#fff}.action-button:disabled{opacity:.55;cursor:not-allowed}.notice{margin:0;display:flex;gap:6px;align-items:flex-start;padding:10px 12px;border-radius:8px;font-size:13px;line-height:1.45}.notice svg{flex:none;margin-top:2px}.notice.success{background:var(--ok-soft);color:var(--ok)}.notice.error{background:var(--danger-soft);color:var(--danger)}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1240px){.workspace{grid-template-columns:minmax(320px,380px) minmax(0,1fr);grid-template-rows:auto auto;align-items:start;overflow-y:auto}.control-panel{grid-row:span 2;align-self:stretch}.preview-panel{height:520px}.sheet-panel{overflow:visible}}@media(max-width:860px){.app-shell{height:auto;overflow:visible}.workspace{display:flex;flex-direction:column;padding:16px;overflow:visible}.control-panel,.sheet-panel{overflow:visible}.preview-panel{min-height:0}.canvas-wrap{flex:none;height:420px}.topbar{padding:10px 16px}.topbar-lede{display:none}}@media(max-width:480px){.field-grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}.field-grid.three .field:last-child{grid-column:span 2}.connector-cards{grid-template-columns:minmax(0,1fr)}.canvas-wrap{height:360px}}
