:root { color: #1f2933; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background: #eef2f6; } * { box-sizing: border-box; } html, body, #root { width: 100%; height: 100%; margin: 0; } button, input, textarea { font: inherit; } .app-shell { display: grid; grid-template-rows: 72px minmax(0, 1fr); width: 100%; height: 100%; } .topbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 0 14px; border-bottom: 1px solid #cfd8e3; background: #ffffff; } .product-name { font-size: 15px; font-weight: 700; } .product-meta { margin-top: 2px; color: #64748b; font-size: 12px; } .topbar-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 8px; } .primary-button, .secondary-button { height: 32px; padding: 0 12px; border-radius: 6px; cursor: pointer; } .primary-button:disabled, .secondary-button:disabled { cursor: not-allowed; opacity: 0.58; } .primary-button { border: 1px solid #1d6fb8; color: #ffffff; background: #1d6fb8; } .secondary-button { border: 1px solid #c2ccda; color: #263442; background: #ffffff; } .project-name-field { display: flex; align-items: center; gap: 6px; color: #475569; font-size: 12px; font-weight: 650; } .project-name-field input { width: 150px; height: 32px; padding: 0 9px; border: 1px solid #c2ccda; border-radius: 6px; color: #1f2933; } .workbench { display: grid; grid-template-columns: 230px minmax(0, 1fr) 330px; min-height: 0; } .palette, .properties { min-width: 0; min-height: 0; overflow: auto; border-color: #cfd8e3; background: #ffffff; } .palette { border-right: 1px solid #cfd8e3; } .properties { border-left: 1px solid #cfd8e3; } .status-strip { padding: 10px 14px; border-bottom: 1px solid #e3e8ef; color: #155e75; background: #ecfeff; font-size: 12px; font-weight: 650; } .panel-title { padding: 14px; border-bottom: 1px solid #e3e8ef; font-size: 13px; font-weight: 700; } .palette-list, .parameter-form { display: grid; gap: 10px; padding: 12px; } .compact-form { grid-template-columns: repeat(2, minmax(0, 1fr)); } .compact-form .field:last-child { grid-column: 1 / -1; } .palette-item { display: grid; grid-template-columns: 36px minmax(0, 1fr); align-items: center; gap: 10px; min-height: 52px; padding: 8px; border: 1px solid #d6dee9; border-radius: 6px; color: #22303f; text-align: left; background: #ffffff; cursor: grab; } .palette-item small { display: block; margin-top: 2px; overflow: hidden; color: #64748b; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; } .palette-icon { display: block; width: 32px; height: 32px; border: 2px solid #4b5563; background: #f8fafc; } .icon-cylinder { border-radius: 13px; background: #dbeafe; } .icon-tank { border-radius: 50%; background: #dcfce7; } .icon-pipe { height: 14px; border-radius: 8px; background: #f8fafc; } .icon-orifice { transform: rotate(45deg); background: #ffedd5; } .icon-tee { position: relative; border: 0; } .icon-tee::before, .icon-tee::after { position: absolute; content: ""; border-radius: 6px; background: #e5e7eb; border: 2px solid #4b5563; } .icon-tee::before { top: 12px; left: 0; width: 32px; height: 10px; } .icon-tee::after { top: 0; left: 11px; width: 10px; height: 32px; } .flow-canvas { min-width: 0; min-height: 0; background: #f8fafc; } .flow-canvas .react-flow__pane, .flow-canvas .react-flow__pane.selection, .flow-canvas .react-flow__node.selectable, .flow-canvas .react-flow__node.draggable { cursor: default; } .flow-canvas .react-flow__pane.dragging { cursor: grabbing; } .flow-canvas .react-flow__node.draggable.dragging { cursor: move; } .sim-node { position: relative; display: grid; place-items: center; min-width: 96px; min-height: 58px; padding: 8px 16px; border: 2px solid #4b5563; border-radius: 6px; background: #ffffff; box-shadow: 0 4px 10px rgba(15, 23, 42, 0.08); } .sim-node.selected { border-color: #1d6fb8; box-shadow: 0 0 0 3px rgba(29, 111, 184, 0.15); } .node-symbol { height: 28px; } .node-label { max-width: 120px; overflow: hidden; font-size: 12px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; } .symbol-cylinder, .symbol-tank, .symbol-pipe, .symbol-orifice, .symbol-tee { width: 42px; height: 22px; border: 2px solid #4b5563; background: #f8fafc; } .symbol-cylinder { height: 28px; border-radius: 12px; background: #dbeafe; } .symbol-tank { height: 28px; border-radius: 50%; background: #dcfce7; } .symbol-pipe { height: 12px; margin-top: 8px; border-radius: 8px; } .symbol-orifice { width: 26px; height: 26px; transform: rotate(45deg); background: #ffedd5; } .symbol-tee { position: relative; border: 0; } .symbol-tee::before, .symbol-tee::after { position: absolute; content: ""; border: 2px solid #4b5563; border-radius: 6px; background: #f8fafc; } .symbol-tee::before { top: 8px; left: 0; width: 42px; height: 12px; } .symbol-tee::after { top: 0; left: 14px; width: 12px; height: 28px; } .port-handle { width: 10px; height: 10px; border: 2px solid #374151; background: #ffffff; } .field { display: grid; gap: 6px; color: #334155; font-size: 12px; font-weight: 650; } .field em { margin-left: 6px; color: #64748b; font-style: normal; font-weight: 400; } .field input { width: 100%; height: 34px; padding: 0 9px; border: 1px solid #c2ccda; border-radius: 6px; color: #1f2933; } .node-id { padding-bottom: 8px; border-bottom: 1px solid #e3e8ef; color: #64748b; font-size: 12px; } .empty-state { padding: 16px; color: #64748b; font-size: 13px; } .xml-output { width: calc(100% - 24px); min-height: 220px; margin: 12px; padding: 10px; border: 1px solid #c2ccda; border-radius: 6px; color: #1f2933; font-family: Consolas, "Courier New", monospace; font-size: 12px; resize: vertical; } .result-section { display: grid; gap: 12px; padding: 12px; } .result-grid { display: grid; grid-template-columns: minmax(80px, 1fr) minmax(0, 1.4fr); gap: 8px 10px; align-items: baseline; font-size: 12px; } .result-grid span { color: #64748b; } .result-grid strong { overflow-wrap: anywhere; color: #1f2933; font-size: 12px; } .run-message { padding: 8px; border: 1px solid #d6dee9; border-radius: 6px; color: #334155; background: #f8fafc; font-size: 12px; } .artifact-list { display: grid; gap: 8px; } .artifact-list div { display: grid; gap: 4px; color: #64748b; font-size: 11px; } .artifact-list code { overflow-wrap: anywhere; color: #1f2933; font-family: Consolas, "Courier New", monospace; font-size: 11px; } @media (max-width: 1100px) { .workbench { grid-template-columns: 180px minmax(0, 1fr) 280px; } .topbar { align-items: flex-start; padding-top: 8px; } .project-name-field input { width: 120px; } }