:root{font-family:'Segoe UI',Arial,sans-serif;font-size:12px;color:var(--text);--app-bg:#fff;--panel:#f5f5f5;--surface:#fff;--surface-alt:#ebebeb;--surface-elevated:#fff;--border:#c8c8c8;--border-soft:#dedede;--shadow:#d0d0d0;--text:#111827;--muted:#6b7280;--accent:#2563eb;--accent-soft:#e5efff;--accent-active:#cbdcff;--sidebar:#f5f5f5;--status-bg:#ebebeb;--status-border:#c8c8c8;--viewport:#fff}*{box-sizing:border-box}body{margin:0;height:100dvh;display:flex;flex-direction:column;background:var(--app-bg);overflow:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer;background:var(--surface);border:1px solid var(--border);padding:5px 12px}button:hover:enabled{background:var(--accent-soft)}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input,select{background:var(--surface);border:1px solid var(--border);padding:5px}input[type=checkbox],input[type=range]{accent-color:var(--accent)}#titlebar{height:29px;display:flex;align-items:center;gap:8px;padding:0 9px;background:var(--panel);flex-shrink:0;color:var(--muted)}.app-icon{font-weight:bold;font-size:12px;color:var(--accent);border:1px solid var(--border);padding:1px 4px}#titlebar .build-state{margin-left:auto;font-size:10px}#coverage{font-size:10px;padding:2px 7px}#menubar{height:22px;display:flex;align-items:center;background:var(--surface);flex-shrink:0}#menubar>button{border:0;font-size:11px;padding:3px 9px}#menu-strip{height:29px;display:flex;align-items:center;background:var(--panel);padding:2px 9px;flex-shrink:0}#toggle-menu{border:0;background:transparent;font-size:16px;padding:0}#local-label{margin-left:auto;color:var(--muted);font-size:10px}#tabs{margin:0 12px;background:var(--surface-elevated);border:1px solid var(--border-soft);height:30px;display:flex;align-items:center;gap:6px;padding:3px 6px;overflow-x:auto;flex-shrink:0;scrollbar-width:thin}#tabs button{font-size:12px;padding:1px 16px;white-space:nowrap;background:var(--surface-alt);border-color:var(--border-soft);color:var(--muted)}#tabs button[aria-selected=true]{background:var(--surface);color:var(--accent);border-color:var(--accent-active);font-weight:600}#ribbon{height:112px;flex-shrink:0;display:flex;align-items:stretch;padding:9px 14px;gap:18px;background:var(--panel);border-bottom:2px solid var(--accent);overflow-x:auto;scrollbar-width:thin}.ribbon-group{display:flex;flex-direction:column;border:1px solid var(--border);background:var(--surface-elevated);box-shadow:1px 1px var(--shadow);flex-shrink:0}.ribbon-buttons{display:flex;padding:4px 7px;flex:1;gap:4px}.ribbon-buttons>button{position:relative;border:0;background:var(--surface);padding:3px 7px;min-width:65px;font-size:12px;display:flex;flex-direction:column;gap:5px;justify-content:center;align-items:center;white-space:nowrap}.ribbon-buttons>button .icon{font-size:15px;line-height:20px}.ribbon-buttons>button.pending{opacity:.38}.ribbon-buttons>button.pending:after{content:'·';position:absolute;right:4px;top:0;font-size:15px;color:var(--muted)}.ribbon-caption{height:21px;font-size:10px;font-weight:600;display:grid;place-items:center;color:var(--muted);background:var(--surface-alt);white-space:nowrap;padding:2px 10px}.ribbon-buttons>select{max-width:170px;margin:10px 4px}.ribbon-buttons .timeline-note{align-self:center;font-size:11px;padding:0 10px;color:var(--muted)}#workspace{display:flex;flex:1;min-height:0}#sidebar{width:280px;flex-shrink:0;background:var(--sidebar);display:flex;flex-direction:column;min-width:160px;max-width:50vw}.structure{flex:2;min-height:80px;display:flex;flex-direction:column}.properties{flex:1;min-height:90px;overflow:auto;border-top:4px solid var(--border)}#sidebar section>header{background:var(--surface-alt);font-weight:600;padding:5px 10px;display:flex;align-items:center;height:32px;flex-shrink:0}#tree-search{width:92px;margin-left:auto;padding:2px 5px;font-size:11px;min-width:30px}.pane-tabs{display:flex;padding:3px 5px 0}.pane-tabs button{padding:3px 8px;font-size:11px;border-bottom:0;background:var(--surface-alt)}.pane-tabs .active{background:var(--surface)}#tree{flex:1;margin:0 4px 3px;background:var(--surface);border:1px solid var(--border);overflow:auto;padding:8px 0}.tree-row{display:flex;align-items:center;gap:5px;white-space:nowrap;min-height:25px;padding:2px 6px}.tree-row.selected{background:var(--accent-soft);outline:1px solid var(--accent-active);outline-offset:-1px}.tree-row:hover{background:var(--accent-soft)}.tree-row button{border:0;background:transparent;padding:0 2px;font-size:12px}.tree-row .part-name{flex:1;overflow:hidden;text-overflow:ellipsis;font-size:11px;cursor:pointer}.tree-row input{margin:0;width:12px;height:12px}#selection-info{font-size:10px;color:var(--muted);padding:3px 8px}#properties{margin:0 5px 5px;background:var(--surface);border:1px solid var(--border);padding:4px;font-size:10px}#properties>div{display:grid;grid-template-columns:78px 1fr;padding:3px;gap:6px;overflow-wrap:anywhere}#properties>div span:first-child{color:var(--muted)}#sidebar-divider{width:4px;background:var(--border);cursor:col-resize;flex-shrink:0}#viewport{position:relative;flex:1;min-width:0;overflow:hidden;background:var(--viewport)}#viewer{width:100%;height:100%;display:block;touch-action:none}#annotation{position:absolute;left:12px;top:10px;white-space:pre-line;font-size:11px;color:var(--muted);pointer-events:none;line-height:1.5}#welcome{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--viewport);text-align:center;padding:25px}#welcome h1{font-size:30px;font-weight:500;color:var(--muted);margin:0}#welcome small{font-size:15px}#welcome>button{padding:8px 35px;margin:15px 0}#welcome>div{display:flex;gap:8px}.subtle{font-size:11px;color:var(--muted);max-width:480px;line-height:1.6}#axis-widget{position:absolute;bottom:35px;left:55px;width:60px;height:50px}#axis-widget button{position:absolute;border:0;background:none;font-size:12px;font-weight:700;padding:2px}.x{color:#d33;left:43px;top:32px}.y{color:#298348;left:28px;top:17px}.z{color:#263ad2;left:0;top:0}#tool-hint{position:absolute;bottom:15px;left:50%;transform:translateX(-50%);padding:7px 14px;background:var(--surface);box-shadow:0 1px 5px #0003;white-space:nowrap;font-size:11px;border:1px solid var(--border)}#statusbar{display:flex;align-items:center;gap:10px;height:24px;flex-shrink:0;padding:0 12px;background:var(--status-bg);border-top:1px solid var(--status-border);font-size:10px;white-space:nowrap;overflow:hidden}#status{max-width:40vw;overflow:hidden;text-overflow:ellipsis}#statusbar>span+span{border-left:1px solid var(--border);padding-left:9px}#mode-status{margin-left:auto}#bottom-bar{height:22px;display:flex;justify-content:flex-end;align-items:center;font-size:10px;background:var(--surface-alt);gap:7px;flex-shrink:0}#bottom-bar input{vertical-align:middle;width:11px;height:11px;margin:0 2px}#bottom-bar button{padding:2px 6px;border:0;background:transparent;font-size:10px}dialog{border:1px solid var(--border);border-radius:4px;padding:0;background:var(--surface);color:var(--text);max-width:min(840px,95vw);width:560px;max-height:88dvh;box-shadow:0 10px 60px #0004}dialog::backdrop{background:#0003}dialog form{display:flex;flex-direction:column;max-height:85dvh}dialog header{display:flex;align-items:center;background:var(--surface-alt);padding:9px 14px;border-bottom:1px solid var(--border)}dialog h2{font-size:14px;font-weight:600;margin:0}dialog header button{margin-left:auto;border:0;background:transparent;font-size:20px;padding:0 5px}#dialog-content{padding:18px;overflow:auto;min-height:60px;font-size:12px;line-height:1.6}dialog footer{display:flex;justify-content:flex-end;align-items:center;gap:9px;padding:11px 15px;border-top:1px solid var(--border);background:var(--panel)}#dialog-apply{border-color:var(--accent);background:var(--accent);color:#fff}#dialog-error{color:#b91c1c;margin-right:auto;font-size:11px}.field{display:grid;grid-template-columns:1fr 180px;gap:12px;align-items:center;margin-bottom:12px}.field small{font-size:10px;color:var(--muted)}.field input,.field select{width:100%}.field input[type=checkbox]{width:auto;justify-self:start}.field textarea{width:100%;min-height:80px}.notice{border-left:3px solid var(--accent);background:var(--accent-soft);padding:10px 12px;font-size:11px}.coverage-table{width:100%;border-collapse:collapse;font-size:11px}.coverage-table td,.coverage-table th{border-bottom:1px solid var(--border);padding:6px;text-align:left}.coverage-table .missing{color:#a65c1a}#progress-dialog{padding:24px;width:400px}#progress-dialog progress{width:100%;margin:20px 0 5px}#progress-dialog p{font-size:12px}.popup{position:fixed;z-index:50;background:var(--surface);border:1px solid var(--border);box-shadow:2px 4px 10px #0003;padding:4px;max-height:75vh;overflow:auto;min-width:200px}.popup button{display:block;width:100%;border:0;padding:7px 16px;text-align:left;background:var(--surface);font-size:12px}.popup hr{border:0;border-top:1px solid var(--border)}#radial{position:fixed;width:280px;height:280px;border-radius:50%;background:color-mix(in srgb,var(--surface) 94%,transparent);border:1px solid var(--border);box-shadow:0 5px 25px #0004;z-index:40}#radial button{position:absolute;width:85px;min-height:43px;border-radius:25px;font-size:11px}#radial .center{left:96px;top:112px;background:var(--accent-soft)}#selection-box{position:absolute;border:1px solid #00a9df;background:#00a9df20;pointer-events:none}.measurement-label{position:absolute;background:#124b64dd;color:white;border:1px solid #27c9ec;padding:2px 5px;white-space:nowrap;font-size:12px;pointer-events:none}#measure-labels{position:absolute;inset:0;pointer-events:none}#compare-slider{position:absolute;bottom:10px;left:15%;width:70%}#compare-label{position:absolute;left:20px;bottom:40px;background:#fff9;padding:5px 9px;color:#222}#animation-bar{display:flex;gap:10px;align-items:center;height:42px;padding:5px 15px;background:var(--panel);border-top:1px solid var(--border)}#animation-time{flex:1}.material-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:6px}.material-grid button{padding:7px;font-size:10px;display:flex;flex-direction:column;align-items:center;gap:5px}.swatch{width:34px;height:34px;border-radius:50%;border:1px solid #888;box-shadow:inset -7px -7px 12px #0004}pre{white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.6 Consolas,monospace}#drop-indicator{position:fixed;inset:0;background:#2563eb33;z-index:90;pointer-events:none}[hidden]{display:none!important}@media(max-width:700px){#sidebar{width:200px}.build-state,#local-label,#view-status,#size-status{display:none}#tabs{margin:0 4px}#tabs button{padding:2px 10px}#ribbon{gap:9px;padding:7px;height:108px}.ribbon-buttons>button{min-width:54px;font-size:10px}#annotation{max-width:180px}#welcome h1{font-size:22px}#welcome>div{flex-direction:column}.field{grid-template-columns:1fr 130px}#statusbar{gap:5px;padding:0 5px}}

body[data-theme="dark"] .ribbon-buttons > button { color: var(--text) !important; }
#presence-counter { margin-left:auto; flex-shrink:0; font-size:10px; font-variant-numeric:tabular-nums; white-space:pre; }
#titlebar .build-state { margin-left:0; flex-shrink:0; }
#document-title { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
body[data-theme="blue"] .ribbon-buttons > button { color: var(--accent) !important; }

#axis-widget { left:12px; bottom:12px; width:clamp(90px,20%,160px); height:auto; aspect-ratio:1; pointer-events:none; }
#axis-widget canvas { display:block; width:100%; height:100%; }
#axis-widget button { transform:translate(-50%,-50%); padding:2px; line-height:18px; font-size:14px; text-shadow:0 0 2px white,0 0 3px white; pointer-events:auto; }
#axis-widget button.x { color:#d52121; }
#axis-widget button.y { color:#18852f; }
#axis-widget button.z { color:#244de0; }

/* PolySTEP 1.6 radial menu uses its own dark palette in all workspace themes. */
#radial { border:0; border-radius:0; background:transparent; box-shadow:none; user-select:none; touch-action:none; outline:none; }
#radial svg { display:block; overflow:visible; }
#radial .radial-wedge { cursor:pointer; outline:none; }
#radial .radial-wedge > path, #radial .radial-wedge > circle { fill:#252535; stroke:#3a3a58; stroke-width:1; }
#radial .radial-sub > path { fill:#1b3a6b; }
#radial .radial-locked > path { fill:#173360; }
#radial .radial-wedge:hover > path, #radial .radial-wedge:focus > path, #radial .radial-wedge:hover > circle, #radial .radial-wedge:focus > circle { fill:#1565c0; stroke:#6ea8fe; }
#radial .radial-part > path { fill:#15803d; }
#radial .radial-recent > path { fill:#0d6efd; }
#radial .radial-part:hover > path, #radial .radial-part:focus > path { fill:#16a34a; }
#radial .radial-recent:hover > path, #radial .radial-recent:focus > path { fill:#1d4ed8; }
#radial text { fill:#dde8ff; text-anchor:middle; pointer-events:none; font-family:"Segoe UI",sans-serif; }
#radial .radial-icon { font-family:"Segoe UI Emoji","Segoe UI Symbol",sans-serif; font-size:19px; }
#radial .radial-label { font-size:10px; font-weight:600; }
#radial .radial-sub-label { font-size:12px; font-weight:400; }
.work-folders { border-bottom: 1px solid var(--border, #888); padding-bottom: 12px; margin-bottom: 12px; }
.work-folders h3 { margin: 4px 0 8px; }
.work-folder-list { max-height: 220px; overflow: auto; margin-bottom: 8px; }
.work-folder-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 8px 0; }
.work-folder-row strong { flex: 1 1 150px; overflow-wrap: anywhere; }
.work-folder-row span { font-size: 12px; }
.work-folder-message { white-space: pre-wrap; overflow-wrap: anywhere; }
.work-folder-issues { max-height: 180px; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; }
.work-folders-startup { border-bottom: 0; margin-bottom: 0; }
.work-folders-startup button[data-folder-action] { background: var(--accent); color: #fff; border-color: var(--accent); font-weight: 600; }
.field-range { display: flex; align-items: center; gap: 8px; }
.field-range input[type=range] { min-width: 60px; flex: 1; padding: 0; }
.field-range input[type=number] { width: 80px; }
.field-hint { grid-column: 1 / -1; }
#dialog-content fieldset { border: 1px solid var(--border); margin: 0 0 12px; padding: 10px; min-width: 0; }
#dialog-content legend { font-weight: 600; padding: 0 5px; }
#dialog-content fieldset .field:last-child { margin-bottom: 0; }
#dialog.modeless-tool { position: fixed; inset: 70px 12px auto auto; margin: 0; width: min(520px, 55vw); }
#welcome .welcome-logo { width: 124px; height: 137px; margin-bottom: 18px; filter: drop-shadow(0 14px 14px #153d701a); }
#welcome h1 { font-size: 44px; line-height: 1.1; letter-spacing: -2px; font-weight: 350; color: var(--text); }
#welcome h1 span, .about-brand h3 span { font-weight: 750; }
#welcome .welcome-edition { display: block; margin-top: 10px; color: var(--muted); font-size: 11px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; }
#welcome>button { border-radius: 5px; background: var(--accent); color: white; border-color: var(--accent); padding: 10px 36px; }
#welcome>button:hover { filter: brightness(1.1); background: var(--accent); }
#welcome>div button { border-radius: 4px; }
.about-brand { display: flex; gap: 16px; align-items: center; padding-bottom: 12px; border-bottom: 1px solid var(--border-soft); }
.about-brand h3 { margin: 0; font-size: 30px; font-weight: 350; letter-spacing: -1px; line-height: 1.2; }
.about-brand h3 small { font-size: 14px; color: var(--muted); font-weight: 400; letter-spacing: 0; }
.about-brand p { margin: 4px 0 0; color: var(--muted); }
.about-webcad h4 { margin: 18px 0 7px; font-size: 12px; }
.about-webcad ul { padding-left: 18px; }
.about-webcad li { margin: 4px 0; }
.about-edition { padding: 10px 12px; background: var(--accent-soft); border-left: 3px solid var(--accent); }
.about-build { display: grid; grid-template-columns: 75px 1fr; gap: 4px 12px; }
.about-build dt { color: var(--muted); }
.about-build dd { margin: 0; }
.about-components { width: 100%; border-collapse: collapse; font-size: 11px; }
.about-components th,.about-components td { text-align: left; padding: 5px 7px; border-bottom: 1px solid var(--border-soft); }
.about-components th { background: var(--panel); }
.license-button { display: inline-flex; align-items: center; gap: 18px; padding: 8px 13px; color: var(--text); background: var(--surface-alt); border: 1px solid var(--border); border-radius: 4px; text-decoration: none; }
.license-button:hover { background: var(--accent-soft); }
.measurement-label { pointer-events: auto; cursor: move; touch-action: none; user-select: none; }
.measurement-label:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.measurement-preview-marker { position: absolute; width: 14px; height: 14px; transform: translate(-50%, -50%); border: 2px dashed #ffdf00; background: #ffdf0020; box-shadow: 0 0 0 1px #443800b3; pointer-events: none; }
.measurement-preview-shape { position: absolute; inset: 0; width: 100%; height: 100%; overflow: hidden; pointer-events: none; }
.measurement-preview-shape path { stroke: #ffdf00; stroke-width: 2; stroke-dasharray: 6 3; filter: drop-shadow(0 0 1px #443800); }
.measurement-preview-value { position: absolute; padding: 3px 6px; border: 1px dashed #ffdf00; background: #292814ee; color: #fff3a3; font-size: 12px; white-space: nowrap; pointer-events: none; }
.step-export-dialog { width: 760px; }
.step-settings-dialog { width: 820px; }
.step-settings-body { padding: 12px; overflow: auto; font-size: 12px; }
.step-settings-body h3,.step-export-overview h3 { margin: 0 0 6px; }
.step-export-overview h3 { text-align: center; }
.step-export-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.step-export-overview fieldset,.step-settings-body fieldset { min-width: 0; padding: 10px; border: 1px solid var(--border); margin: 10px 0; }
.step-export-overview legend,.step-settings-body legend { font-weight: 600; }
.step-info-row { display: grid; grid-template-columns: auto 1fr; gap: 14px; margin: 5px 0; }
.step-optimization { display: flex; gap: 12px; align-items: center; justify-content: space-between; }
.step-optimization button { flex-shrink: 0; }
.step-export-notice { color: #a96300; }
.step-export-overview { min-height: min(480px, 60vh); }
.step-parameter-columns { display: grid; grid-template-columns: 1fr 190px; gap: 18px; min-height: 280px; }
.step-slider { display: grid; grid-template-columns: 185px minmax(80px,1fr) 60px; align-items: center; gap: 10px; margin: 6px 0; }
.step-slider input { min-width: 0; width: 100%; padding: 0; }
.step-check { display: flex; gap: 6px; align-items: center; margin: 6px 0; }
.step-check:has(input:disabled) { color: var(--muted); }
.step-preset { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 16px; }
.step-preset span { color: var(--muted); }
.step-settings-dialog .step-reset { margin-right: auto; }
.step-error { color: #b91c1c; }
@media(max-width:750px) { .step-export-columns,.step-parameter-columns { grid-template-columns: 1fr; } .step-slider { grid-template-columns: 165px minmax(65px,1fr) 55px; gap: 5px; } }
#session-status { flex-shrink: 0; }
#session-status[data-state="error"] { color: var(--text); background: #ffdf00; padding: 0 4px; font-weight: 600; }
.license-button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
dialog footer .license-button { margin-right: auto; white-space: nowrap; }
@media(max-height:620px) { #welcome .welcome-logo { width: 64px; height: 70px; margin-bottom: 8px; } #welcome h1 { font-size: 30px; } #welcome { overflow: auto; justify-content: safe center; } }
.measurement-node-marker { position: absolute; width: 10px; height: 10px; transform: translate(-50%, -50%); border: 2px solid #ffdf00; border-radius: 0; background: #ffdf0020; box-shadow: 0 0 0 1px #443800b3; pointer-events: none; }
.settings-dialog { width: min(660px,calc(100vw - 24px)); }
.settings-dialog #dialog-content { padding: 14px; max-height: min(680px,calc(100dvh - 145px)); }
.settings-tabs { display: flex; flex-wrap: wrap; gap: 0; border-bottom: 1px solid var(--border); }
.settings-tabs button { padding: 10px 12px; border-radius: 0; font-size: 12px; }
.settings-tabs button[aria-selected="true"] { background: var(--surface); border-bottom-color: var(--surface); color: var(--accent); }
.settings [role="tabpanel"] { min-height: 350px; padding: 12px; border: 1px solid var(--border); border-top: 0; background: var(--panel); }
.settings fieldset { margin: 0 0 12px; padding: 9px; border: 1px solid var(--border); }
.settings legend { font-size: 12px; font-weight: 600; }
.settings-radios { display: flex; flex-wrap: wrap; gap: 8px 16px; }
.settings-radios label,.settings-check { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; }
.settings-check { display: flex; margin: 5px 0; }
.settings input[type="radio"],.settings input[type="checkbox"] { width: auto; margin: 0; }
.settings-note { font-size: 11px; line-height: 1.5; color: var(--muted); margin: 7px 0; }
.settings .field { margin: 5px 0; }
.settings-image-actions { display: flex; gap: 6px; }
.settings .work-folders { border: 1px solid var(--border); padding: 10px; margin: 0; }
.settings .work-folders h3 { font-size: 12px; margin: 0 0 6px; }
.settings .work-folders p { font-size: 11px; line-height: 1.5; }
.settings-dialog #dialog-apply { order: 0; }
.settings-dialog #dialog-cancel { order: 1; }
#settings-panel-units { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; align-content: start; }
#settings-panel-units>.settings-note { grid-column: 1 / -1; }
#settings-panel-units fieldset { min-width: 0; }
#settings-panel-units .field { grid-template-columns: 1fr 70px; }
.help-dialog { max-height: calc(100dvh - 24px); }
.help-dialog form { max-height: none; }
.help-dialog #dialog-content { padding: 0; overflow: hidden; }
.help-view { display: flex; flex-direction: column; height: min(700px,calc(100dvh - 160px)); }
.help-search { flex-shrink: 0; display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 12px 16px; background: var(--panel); border-bottom: 1px solid var(--border); font-size: 12px; }
.help-search input { flex: 1; min-width: 100px; width: 120px; }
.help-search-result { min-width: 75px; color: var(--text); }
.help-text { flex: 1; min-height: 0; overflow: auto; margin: 0; padding: 16px 18px; }
.help-text mark { color: var(--text); background: var(--accent-soft); outline: 1px solid var(--accent); }
@media(max-width:540px) { .settings-tabs button { flex: 1 0 45%; } .settings [role="tabpanel"] { padding: 8px; } }
