:root{--app-bg: #f4f7fb;--app-text: #172033;--app-text-strong: #111827;--app-text-soft: #607089;--app-text-muted: #374151;--panel-bg: rgba(255, 255, 255, .94);--panel-border: #d8e0eb;--panel-shadow: 0 12px 32px rgba(25, 38, 63, .08);--panel-header-border: #e8edf4;--field-bg: #ffffff;--field-border: #cbd5e1;--field-focus: #1d7fd7;--field-focus-ring: rgba(29, 127, 215, .16);--metric-bg: #eef6ff;--metric-border: #cfdae8;--metric-text: #20304a;--button-primary-bg: #1669b2;--button-primary-text: #ffffff;--button-secondary-bg: #ffffff;--button-secondary-border: #c6d2e1;--button-secondary-text: #172033;--button-hover-bg: #eef6ff;--danger-text: #b42318;--danger-border: #fecaca;--danger-bg: #fff7f7;--worker-error: #b42318;--preview-board-fill: #f1f5f9;--preview-board-stroke: #334155;--preview-hole-fill: #0ea5e9;--preview-tie-rod-fill: #8b5cf6;--preview-spacer-fill: #f97316;--preview-hidden-fill: rgba(15, 23, 42, .15);--preview-hidden-stroke: #94a3b8;--preview-partition-stroke: #ef4444;--preview-selected-stroke: #facc15;--preview-otl-stroke: #10b981;--zoom-surface: rgba(255, 255, 255, .9);--zoom-border: rgba(148, 163, 184, .55);--menu-subtle-bg: #f8fafc;--menu-subtle-border: #e2e8f0;--input-accent: #1669b2;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--app-text);background:var(--app-bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-theme=dark]{--app-bg: #0d1520;--app-text: #d7e3f3;--app-text-strong: #f5f9ff;--app-text-soft: #8ea1ba;--app-text-muted: #b8c5d6;--panel-bg: rgba(15, 23, 35, .92);--panel-border: #243245;--panel-shadow: 0 18px 42px rgba(2, 6, 23, .42);--panel-header-border: #223146;--field-bg: #0f1a28;--field-border: #314358;--field-focus: #56a6ff;--field-focus-ring: rgba(86, 166, 255, .2);--metric-bg: #122133;--metric-border: #26384d;--metric-text: #dce8f7;--button-primary-bg: #2e7ed1;--button-primary-text: #f7fbff;--button-secondary-bg: #132131;--button-secondary-border: #33465b;--button-secondary-text: #dce8f7;--button-hover-bg: #1b2c40;--danger-text: #ff9f96;--danger-border: #6d2e33;--danger-bg: rgba(100, 28, 31, .24);--worker-error: #ff9f96;--preview-board-fill: #101c2b;--preview-board-stroke: #7e92a8;--preview-hole-fill: #36b7ff;--preview-tie-rod-fill: #a78bfa;--preview-spacer-fill: #ff9f43;--preview-hidden-fill: rgba(201, 215, 230, .12);--preview-hidden-stroke: #8da2b8;--preview-partition-stroke: #ff6f7d;--preview-selected-stroke: #ffd447;--preview-otl-stroke: #34d399;--zoom-surface: rgba(10, 17, 26, .9);--zoom-border: rgba(71, 90, 114, .74);--menu-subtle-bg: #0f1a27;--menu-subtle-border: #243549;--input-accent: #56a6ff}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;color:var(--app-text);background:radial-gradient(circle at top right,rgba(45,127,214,.12),transparent 28%),radial-gradient(circle at bottom left,rgba(14,165,233,.08),transparent 26%),var(--app-bg)}button,input,select{font:inherit}.app-shell{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr) minmax(260px,320px);gap:18px;width:100%;min-height:100vh;padding:18px}.controls-panel,.preview-panel,.properties-panel{min-width:0}.controls-panel,.preview-panel,.properties-panel{align-self:start;position:sticky;top:18px;height:calc(100vh - 36px);max-height:calc(100vh - 36px)}.controls-panel{direction:rtl;overflow-x:hidden;overflow-y:auto;padding-left:8px;scrollbar-gutter:stable}.controls-panel>*{direction:ltr}.properties-panel{overflow:auto}.panel{width:100%;border:1px solid var(--panel-border);border-radius:8px;background:var(--panel-bg);box-shadow:var(--panel-shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.panel-header{padding:16px 18px 10px;border-bottom:1px solid var(--panel-header-border)}.panel-header h2,.section-title{margin:0;color:var(--app-text-strong);font-size:1rem;line-height:1.25}.panel-body{padding:16px 18px 18px}.form-section+.form-section{margin-top:18px}.field{display:grid;gap:6px;margin-top:10px}.field label{color:var(--app-text-muted);font-size:.88rem;font-weight:650}.field input,.field select{width:100%;min-height:38px;border:1px solid var(--field-border);border-radius:6px;padding:8px 10px;color:var(--app-text-strong);background:var(--field-bg)}.field input:focus,.field select:focus{border-color:var(--field-focus);outline:3px solid var(--field-focus-ring)}.export-panel{display:grid;gap:10px;margin-top:14px;padding:16px 18px}.metric-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--metric-border);border-radius:6px;background:var(--metric-bg);color:var(--metric-text)}.worker-status{color:var(--app-text-soft);font-size:.82rem}.worker-status[data-status=error]{color:var(--worker-error)}.button{width:100%;min-height:40px;border:1px solid transparent;border-radius:6px;padding:9px 12px;cursor:pointer;font-weight:700}.button.secondary{border-color:var(--button-secondary-border);color:var(--button-secondary-text);background:var(--button-secondary-bg)}.button.primary{color:var(--button-primary-text);background:var(--button-primary-bg)}.button:hover:not(:disabled){filter:brightness(.97)}.button:disabled{cursor:progress;opacity:.68}.status-text,.error-text,.preview-note{margin:0;font-size:.86rem;line-height:1.45}.status-text,.preview-note{color:var(--app-text-soft);text-align:center}.error-text{color:var(--danger-text)}.warning-text{margin:0;border:1px solid #facc15;border-radius:6px;padding:9px 10px;color:#854d0e;background:#facc1524;font-size:.84rem;line-height:1.4}:root[data-theme=dark] .warning-text{color:#fde68a;background:#facc151a}.preview-panel{display:grid;grid-template-rows:minmax(0,1fr) auto;gap:10px}.preview-frame{position:relative;display:flex;align-items:center;justify-content:center;min-height:0;border:1px solid var(--panel-border);border-radius:8px;background:var(--panel-bg);box-shadow:var(--panel-shadow);overflow:hidden}.preview-canvas{width:100%;height:100%;min-height:0;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.preview-zoom-controls{position:absolute;right:10px;bottom:10px;z-index:10;display:grid;grid-template-columns:28px minmax(78px,120px) 28px 38px;align-items:center;gap:5px;max-width:calc(100% - 20px);border:1px solid var(--zoom-border);border-radius:6px;padding:6px;background:var(--zoom-surface);box-shadow:0 8px 22px #0f172a1f;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.preview-zoom-button,.preview-fit-button{min-height:28px;border:1px solid var(--button-secondary-border);border-radius:5px;color:var(--button-secondary-text);background:var(--button-secondary-bg);cursor:pointer;font-weight:800}.preview-zoom-button{width:28px;padding:0;font-size:1rem;line-height:1}.preview-fit-button{padding:0 8px;font-size:.78rem}.preview-zoom-button:hover,.preview-fit-button:hover{background:var(--button-hover-bg)}.preview-zoom-slider{width:100%;min-width:78px;accent-color:var(--input-accent)}.preview-zoom-readout{display:flex;grid-column:1 / -1;justify-content:space-between;gap:8px;color:var(--app-text-soft);font-size:.68rem;line-height:1}.preview-zoom-readout strong{color:var(--app-text-strong)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.properties-body{display:grid;gap:12px}.property-summary{display:grid;gap:3px;border:1px solid var(--metric-border);border-radius:6px;padding:10px 12px;color:var(--metric-text);background:var(--metric-bg)}.property-summary span,.empty-properties{color:var(--app-text-soft);font-size:.84rem;line-height:1.4}.empty-properties{margin:0}.segmented-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;border:1px solid var(--menu-subtle-border);border-radius:8px;padding:6px;background:var(--menu-subtle-bg)}.segmented-controls button,.property-box button{min-height:34px}.segmented-controls button{border:1px solid transparent;border-radius:6px;color:var(--button-secondary-text);background:transparent;cursor:pointer;font-weight:750}.segmented-controls button.is-active{border-color:var(--button-secondary-border);background:var(--button-secondary-bg);box-shadow:0 1px 4px #0f172a14}.property-box{display:grid;gap:8px;border:1px solid var(--menu-subtle-border);border-radius:8px;padding:10px;background:var(--menu-subtle-bg)}.property-box__title{color:var(--app-text-muted);font-size:.78rem;font-weight:750}.check-row{display:flex;align-items:center;gap:8px;color:var(--app-text);font-size:.88rem;font-weight:700}.check-row input{width:16px;height:16px;margin:0;accent-color:var(--input-accent)}.button.danger{color:var(--danger-text);border-color:var(--danger-border);background:var(--danger-bg)}@media(max-width:860px){.app-shell{grid-template-columns:1fr;padding:12px}.controls-panel,.preview-panel,.properties-panel{position:static;height:auto;max-height:none}.controls-panel{direction:ltr;overflow:visible;padding-left:0}.preview-panel{grid-template-rows:minmax(420px,62vh) auto}.preview-frame{min-height:420px}.preview-canvas{min-height:400px}.preview-zoom-controls{right:10px;bottom:10px;grid-template-columns:28px minmax(78px,1fr) 28px}.preview-fit-button{grid-column:1 / -1}}
