.symbol-library{padding:14px 12px 18px;background:#f5f8f6;border-right-color:#c8d6d2;color:#18343a}.symbol-library .library-header{margin:0 2px 12px}.symbol-library .library-kicker{margin:0 0 5px;color:#6b7c7a;font-size:10px;font-weight:800;letter-spacing:.12em}.symbol-library .library-title-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.symbol-library h2{margin:0;color:#16353a;font-size:17px;letter-spacing:-.03em}.symbol-library .library-count{display:inline-flex;align-items:center;min-height:22px;padding:0 7px;border:1px solid #c2d3ce;border-radius:var(--ux-radius-pill, 999px);background:#eaf1ee;color:#59706c;font-size:10px;font-weight:800}.symbol-library .library-intro{margin:7px 0 0;color:#5d706d;font-size:11px;line-height:1.55}.symbol-library .library-warning{margin:0 0 10px;padding:8px 9px;border:1px solid #e2c58b;border-radius:8px;background:#fff8e8;color:#795e27;line-height:1.45}.symbol-library .library-target{margin:-2px 2px 9px;color:#6b7c7a;font-size:10px}.symbol-library .library-target strong{color:#2b4f53}.symbol-library .placement-controls{padding:9px 0 11px;border-top:1px solid #d6e1de;border-bottom:1px solid #d6e1de}.symbol-library .placement-mode-toggle{display:grid;grid-template-columns:auto 1fr;gap:2px 7px;margin:0;padding:8px 9px;border:1px solid #b7cfca;border-radius:9px;background:#e9f2ef;color:#1f5559}.symbol-library .placement-mode-toggle input{grid-row:span 2;margin:2px 0 0;accent-color:#d2673d}.symbol-library .placement-mode-toggle span:nth-of-type(1){font-size:12px;font-weight:800}.symbol-library .placement-mode-caption{color:#67817c;font-size:10px}.symbol-library .placement-hint{margin:7px 2px 0;color:#74837f;font-size:10px;line-height:1.45}.symbol-library .placement-status{margin:8px 0 0;padding:6px 8px;border-radius:7px;background:#fff0e7;color:#a34e31;font-size:10px;font-weight:800;line-height:1.4}.symbol-library .library-search{position:relative;display:flex;align-items:center;gap:6px;margin:12px 0 9px;padding:0 8px;border:1px solid #cbdad6;border-radius:var(--ux-radius-control, 6px);background:#fff;box-shadow:0 1px #fff}.symbol-library .library-search:focus-within{border-color:#bb6445;box-shadow:0 0 0 3px #bb644521}.symbol-library .library-search-icon{color:#66817d;font-size:20px;line-height:1;transform:rotate(-20deg)}.symbol-library .library-search input{min-width:0;width:100%;padding:9px 0;border:0;outline:0;background:transparent;color:#17383d;font-size:12px}.symbol-library .library-search input::placeholder{color:#9aa9a6}.symbol-library .library-search-clear{min-width:22px;min-height:22px;padding:0;border:0;border-radius:50%;background:#e9f0ed;color:#58706d;line-height:1}.symbol-library .library-category-tabs{display:flex;gap:5px;overflow-x:auto;padding:1px 0 5px;scrollbar-width:thin}.symbol-library .library-category-tabs button{flex:0 0 auto;min-height:28px;padding:4px 8px;border:1px solid #cbdad6;border-radius:var(--ux-radius-pill, 999px);background:#eef4f1;color:#607773;font-size:10px;font-weight:800;letter-spacing:.03em}.symbol-library .library-category-tabs button:hover{border-color:#9bb9b2;background:#e4efeb}.symbol-library .library-category-tabs button.active{border-color:#245a5c;background:#245a5c;color:#fff}.symbol-library .library-results-meta{display:flex;justify-content:space-between;gap:8px;margin:10px 2px 7px;color:#7a8c88;font-size:10px}.symbol-library .library-empty{margin:18px 4px;color:#70827e;font-size:11px;line-height:1.6;text-align:center}.symbol-library .library-group{margin:0 0 15px}.symbol-library .library-group-heading{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:7px;align-items:center;margin:0 2px 7px}.symbol-library .library-group-mark{display:grid;place-items:center;width:max-content;min-height:24px;padding:2px 5px;border:1px solid #c7d8d3;border-radius:var(--ux-radius-control, 6px);background:transparent;color:#53736f;font-size:8px;font-weight:900;letter-spacing:.05em}.symbol-library .library-group-heading h3{overflow:hidden;margin:0;color:#294c4f;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.symbol-library .library-group-heading p{margin:1px 0 0;color:#889894;font-size:10px}.symbol-library .library-group-count{color:#9aaba7;font-size:10px;font-weight:800}.symbol-library .library-preset-list{display:grid;gap:7px;margin:0;padding:0}.symbol-library .library-preset-list li{min-width:0}.symbol-library .library-pinned-section{margin:0 0 12px;padding:8px 0;border-top:1px solid #d8dfda;border-bottom:1px solid #d8dfda;background:transparent}.symbol-library .library-collapsible-section>summary{position:relative;cursor:pointer;list-style:none;padding-left:18px}.symbol-library .library-collapsible-section>summary::-webkit-details-marker{display:none}.symbol-library .library-collapsible-section>summary:before{position:absolute;left:0;content:"▾";color:#5d7b75;font-size:13px}.symbol-library .library-collapsible-section:not([open])>summary:before{content:"▸"}.symbol-library .library-group-copy{display:flex;min-width:0;flex-direction:column}.symbol-library .library-group-copy strong{overflow:hidden;color:#294c4f;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.symbol-library .library-group-copy small{margin-top:1px;color:#74837f;font-size:10px}.symbol-library .library-preset-row{display:grid;grid-template-columns:minmax(0,1fr) 28px;gap:4px;align-items:stretch}.symbol-library .library-preset-row .library-preset-card{min-width:0}.symbol-library .library-favorite-toggle{display:grid;place-items:center;width:28px;min-height:28px;padding:0;border:1px solid #d8c69d;border-radius:var(--ux-radius-control, 6px);background:#fff;color:#9a6b2f;font-size:18px;cursor:pointer}.symbol-library .library-favorite-toggle.active{border-color:#c48a42;background:#fff4d9;color:#a96c13}.symbol-library .library-preset-card{position:relative;display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:8px;align-items:center;width:100%;min-height:64px;margin:0;padding:7px 7px 7px 8px;border:1px solid #d3dfdc;border-radius:var(--ux-radius-control, 6px);background:#ffffffdb;box-shadow:0 2px 7px #1a3e3e0d;color:#24484c;text-align:left;transition:border-color .12s ease,background .12s ease,box-shadow .12s ease}.symbol-library .library-favorite-shortcut-badge{position:absolute;top:4px;right:30px;min-width:16px;height:16px;padding:0 3px;border:1px solid #c48a42;border-radius:5px;background:#fff4d9;color:#8c5c1d;font-size:10px;font-weight:800;line-height:14px;text-align:center;pointer-events:none}.symbol-library .library-preset-card:hover:not(:disabled){border-color:#91b2aa;background:#fff;box-shadow:0 4px 12px #1a3e3e1c}.symbol-library .library-preset-card.active{border-color:#c45f3d;background:#fff5ee;box-shadow:0 0 0 2px #c45f3d24}.symbol-library .library-preset-card:disabled{opacity:.58}.symbol-library .symbol-preview{display:grid;place-items:center;width:46px;height:46px;overflow:hidden;border:1px solid #d5e2de;border-radius:var(--ux-radius-control, 6px);background:#edf4f1}.symbol-library .library-symbol-svg{display:block;width:100%;height:100%;color:#1b4d51}.symbol-library .library-symbol-svg .stage-asset-preview path,.symbol-library .library-symbol-svg .stage-asset-preview rect,.symbol-library .library-symbol-svg .stage-asset-preview ellipse,.symbol-library .library-symbol-svg .stage-asset-preview circle,.symbol-library .library-symbol-svg .stage-asset-preview line,.symbol-library .library-symbol-svg .stage-asset-preview polyline,.symbol-library .library-symbol-svg .stage-asset-preview polygon{vector-effect:non-scaling-stroke;stroke:currentColor!important;stroke-width:.8!important}.symbol-library .library-symbol-svg .stage-asset-preview [style*="#ffffff"],.symbol-library .library-symbol-svg .stage-asset-preview [fill="#ffffff"]{fill:#dceae7!important}.symbol-library .generic-symbol-shape{fill:#245a5c14;stroke:#1b4d51;stroke-width:18}.symbol-library .library-card-copy{display:grid;min-width:0;gap:3px}.symbol-library .library-card-copy strong{overflow:hidden;color:#24484c;font-size:11px;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.symbol-library .library-card-copy span{color:#81918d;font-size:11px;font-variant-numeric:tabular-nums}.symbol-library .library-card-action{display:grid;place-items:center;width:22px;height:22px;border:1px solid #c6d8d3;border-radius:50%;color:#65817c;font-size:15px;font-weight:400;line-height:1}.symbol-library .library-preset-card.active .library-card-action{border-color:#c45f3d;background:#c45f3d;color:#fff}.scene-object.symbol-object{pointer-events:bounding-box}.scene-object.symbol-object .symbol-use{pointer-events:none}.symbol-library .user-template-file-actions{display:flex;gap:6px;margin:8px 2px 10px}.symbol-library .user-template-file-actions button,.symbol-library .user-template-actions button{min-height:30px;padding:4px 8px;border:1px solid #c7d8d3;border-radius:7px;background:#edf4f1;color:#496c68;font-size:10px;font-weight:800}.symbol-library .user-template-file-actions button:hover,.symbol-library .user-template-actions button:hover{border-color:#9ab9b1;background:#fff}.symbol-library .user-template-card{display:grid;gap:5px}.symbol-library .user-template-placement-card{grid-template-columns:48px minmax(0,1fr) auto;min-height:60px}.symbol-library .user-template-glyph{display:grid;place-items:center;width:46px;height:46px;border:1px solid #c7d9d3;border-radius:var(--ux-radius-control, 6px);background:#e6f0ec;color:#2b6664;font-size:23px;line-height:1}.symbol-library .user-template-actions{display:flex;flex-wrap:wrap;gap:4px;padding-left:55px}.symbol-library .user-template-actions button{min-height:26px;padding:3px 7px;font-size:9px}.symbol-library .user-template-actions button.danger{border-color:#e2bbb0;background:#fff4f0;color:#a34e31}.template-save-action{margin:0 0 10px}.template-save-action button{width:100%}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:900px){.symbol-library{padding:12px 10px 14px}.symbol-library .library-preset-list{grid-template-columns:repeat(2,minmax(0,1fr))}.symbol-library .library-preset-card{grid-template-columns:42px minmax(0,1fr);min-height:58px;padding:6px}.symbol-library .library-favorite-shortcut-badge{right:4px}.symbol-library .symbol-preview{width:40px;height:40px}.symbol-library .library-card-action{display:none}}@media(max-width:480px){.symbol-library .library-preset-list{grid-template-columns:1fr}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Hiragino Sans,Yu Gothic UI,Meiryo,sans-serif;font-size:13px;color:#222;background:#f0f1f3}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.app-layout{display:flex;flex-direction:column;height:100%}.toolbar{display:flex;align-items:center;gap:6px;padding:6px 10px;background:#2b3440;color:#fff;flex-wrap:wrap}.toolbar button{padding:5px 10px;border:1px solid #4a5568;border-radius:4px;background:#3a4552;color:#fff}.toolbar button:hover:not(:disabled){background:#4a5768}.toolbar button.active{background:#2f7fd1;border-color:#2f7fd1}.toolbar .project-name{width:180px;padding:5px 8px;border:1px solid #4a5568;border-radius:4px;background:#1f2730;color:#fff}.toolbar .separator{width:1px;height:22px;background:#4a5568;margin:0 4px}.banner{padding:6px 12px;font-weight:600}.banner.warning{background:#fff3cd;color:#7a5c00;border-bottom:1px solid #e6c65c}.banner.info{background:#d8ecff;color:#114d80}.banner.notice{background:#e6f4e6;color:#1e5c1e}.main-area{display:grid;grid-template-columns:230px 1fr 280px;flex:1;min-height:0}.library-panel{overflow-y:auto;background:#fff;border-right:1px solid #d5d8dc;padding:10px}.library-panel h2,.property-panel h2{font-size:14px;margin:0 0 8px}.library-panel h3,.background-panel h3{font-size:12px;color:#666;margin:12px 0 4px}.library-panel ul{list-style:none;margin:0;padding:0}.library-panel li button{display:flex;justify-content:space-between;width:100%;padding:6px 8px;margin-bottom:3px;border:1px solid #d5d8dc;border-radius:4px;background:#fafbfc}.library-panel li button:hover:not(:disabled){background:#eef4fb}.library-panel li button.active{background:#2f7fd1;border-color:#2f7fd1;color:#fff}.library-panel .dims{color:#888;font-size:11px}.library-panel li button.active .dims{color:#d8e8f8}.hint{color:#888;font-size:12px}.canvas-stage{width:100%;height:100%;background:#e8eaed;touch-action:none;cursor:crosshair;-webkit-user-select:none;user-select:none}.canvas-stage image{pointer-events:none}.canvas-stage image .stage-template-surface{fill:#fff}.canvas-stage image .stage-template-grid{fill:none;stroke:#9aa6b2;opacity:.7}.canvas-stage image .stage-template-outline{fill:none;stroke:#52606d;stroke-width:14}.scene-object{color:#2f7fd1}.scene-object.symbol-object{color:#bd3d3d}.scene-object.selected{color:#1f5b60}.scene-object .symbol-use{color:inherit}.scene-object rect,.scene-object ellipse{fill:#2f7fd126;stroke:#2f7fd1;stroke-width:20}.scene-object.selected rect,.scene-object.selected ellipse{fill:#1f5b6014;stroke:#1f5b60;stroke-width:20}.scene-object.locked rect,.scene-object.locked ellipse{stroke-dasharray:60 60}.scene-object.background-fixed rect,.scene-object.background-fixed ellipse{stroke-dasharray:18 30}.scene-object .facing{stroke:#2f7fd1;stroke-width:20}.scene-object text{font-size:280px;fill:#333;-webkit-user-select:none;user-select:none}.object-label{pointer-events:none;font-weight:600;paint-order:stroke;stroke:#ffffffb8;stroke-width:10px;stroke-linejoin:round}.multiline-label{min-height:84px;resize:vertical;line-height:1.4}.object-style-editor{margin:10px 0;padding:8px;border:1px solid #d5d8dc;border-radius:6px;background:#f8fafc}.object-style-editor summary{cursor:pointer;font-weight:700;color:#374151}.style-palette-button{min-height:30px;padding:4px 6px;border:2px solid;border-radius:4px;font-size:11px;font-weight:700;text-shadow:0 1px 1px rgba(0,0,0,.25)}.style-color-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.style-color-grid label{font-size:11px}.style-color-grid input[type=color]{display:block;width:100%;height:30px;padding:0}.style-value{float:right;color:#6b7280;font-size:11px}.calib-point{fill:#d12f2f}.calib-line,.measure-line{stroke:#d12f2f;stroke-width:25;stroke-dasharray:100 100}.measure-point{fill:#7b2fd1}.measure-line{stroke:#7b2fd1}.measure-text{font-size:400px;fill:#7b2fd1;font-weight:700}.property-panel{overflow-y:auto;background:#fff;border-left:1px solid #d5d8dc;padding:10px}.background-panel,.object-properties{padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid #e1e4e8}.background-panel label,.object-properties label{display:block;margin-bottom:8px;color:#555}.background-panel label.row,.object-properties label.row{display:flex;align-items:center;gap:6px}.background-panel input:not([type=checkbox]),.object-properties input:not([type=checkbox]){display:block;width:100%;padding:5px 8px;margin-top:2px;border:1px solid #ccc;border-radius:4px}.background-panel input[type=range]{width:calc(100% - 42px);display:inline-block;vertical-align:middle}.range-value{display:inline-block;width:38px;text-align:right;font-size:11px}.source-label{margin:0 0 8px;color:#555;font-size:11px}.background-actions,.dialog-buttons{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:8px}.background-actions button,.dialog-buttons button{flex:1;padding:6px;border:1px solid #ccc;border-radius:4px;background:#fafbfc}.background-actions strong{min-width:38px;text-align:center}.crop-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 6px}.object-properties .object-name{font-weight:700;margin:0 0 8px}.object-properties .actions{display:flex;gap:6px;margin-top:12px}.object-properties .actions button{flex:1;padding:6px;border:1px solid #ccc;border-radius:4px;background:#fafbfc}.object-properties .actions button.danger{color:#b02020;border-color:#d9a0a0}.status-bar{display:flex;gap:18px;padding:5px 12px;background:#2b3440;color:#cfd6dd;font-size:12px;flex-wrap:wrap}.status-bar .warning{color:#ffd24d;font-weight:700}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.dialog{background:#fff;border-radius:8px;padding:18px;width:340px;max-height:90vh;overflow:auto;box-shadow:0 8px 30px #0000004d}.dialog h2{margin:0 0 12px;font-size:15px}.new-project-dialog{width:min(460px,95vw)}.dialog-intro{margin:0 0 14px;color:#52606d}.new-project-dialog fieldset{margin:0 0 14px;padding:12px;border:1px solid #d7dde3;border-radius:6px}.new-project-dialog legend{padding:0 5px;font-weight:700}.new-project-kind{display:flex;align-items:flex-start;gap:8px;padding:8px 0}.new-project-kind span{display:flex;flex-direction:column;gap:2px}.new-project-kind small{color:#66727d}.stage-template-fields>label{display:flex;align-items:center;justify-content:space-between;gap:8px}.stage-template-fields select,.dimension-inputs input{min-height:32px;padding:4px 6px;border:1px solid #b9c2cc;border-radius:4px}.dimension-inputs{display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:8px;margin-top:12px}.dimension-inputs label{display:flex;flex-direction:column;gap:4px}.stage-template-preview{margin:10px 0 0;padding:8px;background:#eef4fb;color:#114d80;font-weight:700}.dialog .preset-buttons{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.dialog .preset-buttons button{padding:8px 12px;border:1px solid #2f7fd1;border-radius:4px;background:#eef4fb;color:#114d80;font-weight:700}.dialog .custom-input{display:flex;gap:6px}.dialog .custom-input input{flex:1;padding:6px 8px;border:1px solid #ccc;border-radius:4px}.dialog .error,.error-message,.error-value{color:#b02020}.dialog .cancel{margin-top:14px;width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;background:#fafbfc}.pdf-page-dialog{width:min(760px,95vw)}.pdf-page-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.pdf-page{display:flex;flex-direction:column;gap:5px;padding:6px;border:1px solid #ccd3db;border-radius:5px;background:#fafbfc}.pdf-page:hover{border-color:#2f7fd1;background:#eef4fb}.pdf-page img{display:block;width:100%;height:130px;object-fit:contain;background:#e8eaed}.calibration-result{margin:0}.calibration-result>div{display:flex;justify-content:space-between;border-bottom:1px solid #e1e4e8;padding:6px 0}.calibration-result dt,.calibration-result dd{margin:0}.calibration-result .ok,.success-message{color:#1e6a32}@media(max-width:900px){.main-area{grid-template-columns:190px 1fr 230px}.toolbar .project-name{width:140px}}@media(max-width:700px){.main-area{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto}.library-panel{display:none}.property-panel{max-height:38vh;border-left:0;border-top:1px solid #d5d8dc}.toolbar{padding:5px}.toolbar .project-name{flex:1 1 120px}}.rotate-handle line{stroke:#1f5b60;stroke-width:2.5px;stroke-dasharray:none;pointer-events:none;vector-effect:non-scaling-stroke}.rotate-handle circle{fill:#fffdf8;stroke:#1f5b60;stroke-width:2.5px;cursor:grab;vector-effect:non-scaling-stroke}.rotate-handle circle:active{cursor:grabbing}.selection-marquee{fill:transparent;stroke:#171717;stroke-width:2.5px;stroke-dasharray:10px 8px;stroke-linecap:round;pointer-events:none;vector-effect:non-scaling-stroke}.property-button-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-bottom:8px}.property-button-grid button{min-height:30px;padding:5px;border:1px solid #c8d0d8;border-radius:4px;background:#fafbfc}.property-button-grid button:hover{background:#eef4fb}.property-button-grid button.danger{color:#b02020;border-color:#d9a0a0}.multi-properties h3{margin:10px 0 4px}.wall-trace polyline,.wall-trace line{fill:none;stroke:#6b7280;stroke-width:45;stroke-linejoin:round}.wall-trace circle{fill:#475569;stroke:#fff;stroke-width:18}.wall-trace.draft polyline{stroke:#d97706;stroke-dasharray:120 80}.wall-trace.draft circle{fill:#f59e0b}.wall-trace-toolbar{display:inline-flex;align-items:center;gap:6px;padding:3px 6px;border:1px solid #f1c27d;border-radius:5px;background:#fff7ed;color:#7c3f00;white-space:nowrap}.wall-trace-toolbar label{display:inline-flex;align-items:center;gap:3px}.wall-trace-toolbar input{width:86px;padding:3px 5px;border:1px solid #d6b27a;border-radius:3px}.wall-trace-toolbar button{min-height:28px;padding:3px 7px;border-color:#c77b20;background:#fffaf2;color:#7c3f00}.wall-panel{padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid #e1e4e8}.wall-editor{margin:6px 0;padding:6px;border:1px solid #d6dce3;border-radius:5px;background:#fafbfc}.wall-editor summary{cursor:pointer;color:#334155;font-weight:700}.wall-points{display:grid;gap:4px;margin:6px 0}.wall-point-row{display:grid;grid-template-columns:20px minmax(0,1fr) minmax(0,1fr) 28px;gap:4px;align-items:center}.wall-point-row input{min-width:0}.wall-point-row button{min-height:28px;border:1px solid #d4a4a4;border-radius:4px;background:#fff5f5;color:#a02020}.viewer3d-loading{display:grid;flex:1;gap:14px;place-items:center;align-content:center;padding:24px;color:#dbeafe;background:#151b22;font-size:15px}.viewer3d-loading p{margin:0}.viewer3d-error-screen{display:grid;flex:1;min-height:0;place-items:center;padding:24px;background:#151b22;color:#e5e7eb}.viewer3d-error{width:min(100%,520px);padding:24px;border:1px solid #7f1d1d;border-radius:8px;background:#2a1d22;box-shadow:0 10px 30px #0006}.viewer3d-error h2{margin:0 0 12px;color:#fecaca;font-size:18px}.viewer3d-error p{margin:0 0 10px;color:#f1f5f9;line-height:1.55}.viewer3d-error button{min-height:44px;padding:8px 14px;border:1px solid #fca5a5;border-radius:5px;background:#7f1d1d;color:#fff;cursor:pointer}.viewer3d-screen{display:flex;flex:1;min-height:0;flex-direction:column;background:#151b22;color:#e5e7eb}.viewer3d-toolbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:7px 10px;border-bottom:1px solid #384454;background:#202936}.viewer3d-toolbar button,.viewer3d-toolbar select,.viewer3d-toolbar input{min-height:34px;padding:5px 8px;border:1px solid #566477;border-radius:4px;background:#2e3b4b;color:#f8fafc}.viewer3d-toolbar button.active{border-color:#65a9e8;background:#2f7fd1}.viewer3d-toolbar button:disabled{opacity:.5}.viewer3d-toolbar label{display:inline-flex;align-items:center;gap:4px;color:#cbd5e1}.viewer3d-toolbar .viewer3d-eye-input{width:84px}.viewer3d-check input{margin:0}.viewer3d-minimap{margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid #384454}.viewer3d-minimap h3{margin:0 0 6px;color:#f8fafc;font-size:13px}.viewer3d-minimap-canvas{display:block;width:100%;height:138px;border:1px solid #64748b;border-radius:4px;background:#111827;touch-action:manipulation;cursor:crosshair}.viewer3d-minimap p{margin:5px 0 0;color:#aebdce;font-size:11px}.viewer3d-count{margin-left:auto;color:#aebdce;font-size:12px}.viewer3d-layout{display:grid;flex:1;min-height:0;grid-template-columns:minmax(0,1fr) 230px}.viewer3d-viewport{min-width:0;min-height:0;outline:none;touch-action:none;-webkit-user-select:none;user-select:none}.viewer3d-viewport canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}.viewer3d-viewport:focus-visible{box-shadow:inset 0 0 0 2px #65a9e8}.viewer3d-help{overflow-y:auto;padding:12px;border-left:1px solid #384454;background:#202936;color:#cbd5e1;line-height:1.55}.viewer3d-help h2{margin:0 0 8px;color:#f8fafc;font-size:14px}.viewer3d-help p{margin:0 0 12px}@media(max-width:700px){.viewer3d-layout{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto}.viewer3d-help{max-height:22vh;border-top:1px solid #384454;border-left:0}.viewer3d-count{width:100%;margin-left:0}}@media(max-width:900px){.wall-trace-toolbar{width:100%;overflow-x:auto}.wall-point-row button,.wall-editor .actions button{min-height:44px}}.export-dialog{width:min(560px,95vw)}.export-dialog label{display:block;margin:0 0 8px;color:#555}.export-dialog input:not([type=checkbox]),.export-dialog select,.export-dialog textarea{display:block;width:100%;margin-top:2px;padding:5px 8px;border:1px solid #ccc;border-radius:4px}.export-dialog textarea{resize:vertical}.export-dialog h3{margin:14px 0 6px;font-size:13px}.export-grid-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.export-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 12px}.export-checks .row{display:flex;align-items:center;gap:6px;margin:0}.export-dialog .primary{border-color:#2f7fd1;background:#2f7fd1;color:#fff}.export-dialog .hint{margin-bottom:0}.toolbar-mode-status{display:flex;align-items:center;flex:1 1 260px;gap:6px;min-width:220px;padding:4px 8px;border:1px solid #4a5568;border-radius:4px;background:#1f2730;color:#dce5ee;line-height:1.35}.toolbar-mode-status strong{color:#fff}.toolbar-mode-status span:last-child{color:#b9c7d5;font-size:11px}.continuous-badge{padding:2px 5px;border-radius:3px;background:#d98b00;color:#fff!important;font-weight:700}.export-scale-hint{margin-top:12px;padding:8px 10px;border:1px solid #d5d8dc;border-radius:5px;background:#f7f9fb}.export-scale-hint p{margin:0 0 5px}.export-scale-hint ul{margin:0 0 6px 18px;padding:0}.canvas-stage:focus-visible{outline:3px solid #2f7fd1;outline-offset:-3px}@media(max-width:900px){.main-area{grid-template-columns:1fr;grid-template-rows:auto minmax(320px,1fr) auto}.library-panel{display:block;max-height:24vh;border-right:0;border-bottom:1px solid #d5d8dc}.library-panel li button,.property-button-grid button,.object-properties .actions button,.layer-row button,.arrangement-tools>button{min-height:44px}.property-panel{max-height:30vh;border-left:0;border-top:1px solid #d5d8dc}.snap-panel input,.object-properties input:not([type=checkbox]),.object-properties select{min-height:44px}.toolbar button{min-height:44px}.toolbar-mode-status{flex-basis:100%;min-width:0}}@media(max-width:480px){.export-grid-fields{grid-template-columns:1fr}}.placement-controls{padding:8px 0 4px;margin-bottom:12px;border-bottom:1px solid #e1e4e8}.placement-mode-toggle{display:flex;align-items:center;gap:6px;margin:0 0 6px;padding:6px 8px;border:1px solid #b9d5ed;border-radius:5px;background:#f1f8ff;color:#214b70;font-weight:700}.placement-mode-toggle input{margin:0}.placement-hint{margin:0 0 6px}.placement-status{margin:0;color:#114d80;font-size:12px;font-weight:700}.layer-panel,.snap-panel,.arrangement-tools{padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid #e1e4e8}.layer-list{display:grid;gap:4px}.layer-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:3px;align-items:center;padding:3px;border-radius:4px}.layer-row.active{background:#eef4fb}.layer-row button{min-height:28px;border:1px solid #c8d0d8;border-radius:4px;background:#fafbfc}.layer-row .layer-name{overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.layer-row.active .layer-name{border-color:#2f7fd1;color:#114d80;font-weight:700}.layer-icon-button{min-width:38px;padding:3px 5px;font-size:11px}.snap-panel label.row{display:flex;align-items:center;gap:6px;margin-bottom:6px}.snap-number-grid,.dialog-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.snap-number-grid label,.dialog-form-grid label{color:#555}.snap-number-grid input,.dialog-form-grid input,.object-properties select,.object-properties input:not([type=checkbox]),.layer-panel select{display:block;width:100%;padding:5px 7px;margin-top:2px;border:1px solid #ccc;border-radius:4px}.guide-panel{padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid #e1e4e8}.guide-panel h2{margin:0 0 6px;font-size:14px}.guide-add-buttons{display:grid;grid-template-columns:1fr 1fr;gap:5px}.guide-add-buttons button,.guide-advanced-add>button,.guide-item>button{min-height:28px;padding:4px 6px;border:1px solid #b9d5ed;border-radius:4px;background:#f1f8ff;color:#214b70;font-size:11px}.guide-add-buttons label,.guide-fields label{color:#555;font-size:11px}.guide-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;margin:6px 0}.guide-fields input,.guide-fields select,.guide-add-buttons input{display:block;width:100%;padding:4px 5px;margin-top:2px;border:1px solid #ccc;border-radius:4px}.guide-list{display:grid;gap:7px;margin-top:9px}.guide-item{padding:7px;border:1px solid #d5dde4;border-radius:6px;background:#fafbfc}.guide-item header{display:flex;align-items:center;justify-content:space-between;gap:4px;font-size:11px}.guide-item header label{font-size:10px;font-weight:400}.guide-item.locked{background:#f1f2f4}.guide-item>button.danger{border-color:#dfb5b5;background:#fff4f4;color:#9b2226}.arrangement-tools>button{width:100%;padding:7px;border:1px solid #2f7fd1;border-radius:4px;background:#eef4fb;color:#114d80;font-weight:700}.arrangement-tools>button:hover:not(:disabled){background:#dcecfb}.editing-guide-line{fill:none;stroke:#2b8b88;stroke-width:22;stroke-dasharray:100 48;pointer-events:none}.editing-guide-hit{fill:none;stroke:transparent;pointer-events:stroke;cursor:move}.editing-guide-anchor{fill:#fff;stroke:#2b8b88;stroke-width:18;pointer-events:none}.editing-guide.locked .editing-guide-line{stroke:#7f8c8b;stroke-dasharray:38 34}.editing-guide.locked .editing-guide-hit{cursor:not-allowed}.snap-grid{pointer-events:none}.snap-grid line{stroke:#1f5b602e;vector-effect:non-scaling-stroke}.smart-alignment-guides{pointer-events:none}.smart-alignment-guide-line{fill:none;stroke:#c2415b;stroke-width:1.5;stroke-dasharray:8 4;vector-effect:non-scaling-stroke;pointer-events:none}.smart-alignment-guide-label{fill:#8b1e3f;font-weight:700;paint-order:stroke fill;stroke:#fff;stroke-width:6px;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none}.annotation-object .annotation-line,.annotation-preview{fill:none;stroke:#d12f2f;stroke-width:24}.annotation-object .annotation-line.arrow{marker-end:url(#canvas-arrow)}.annotation-object .annotation-shape{fill:#d12f2f14;stroke:#d12f2f;stroke-width:24;stroke-dasharray:80 40}.annotation-object .annotation-text,.annotation-text{font-size:360px;fill:#9b2226;text-anchor:start}.annotation-dimension-label{font-size:260px;fill:#9b2226;pointer-events:none}.annotation-object.selected .annotation-line,.annotation-object.selected .annotation-shape{stroke:#1f5b60;stroke-width:20}.annotation-object.locked .annotation-line,.annotation-object.locked .annotation-shape{stroke-dasharray:60 60}.annotation-preview{pointer-events:none;opacity:.75;stroke-dasharray:80 45}.arrangement-dialog,.pult-dialog{width:min(520px,95vw)}.dialog-form-grid input{display:block;width:100%}.property-panel select:disabled,.property-panel input:disabled{background:#f1f2f4}@media(max-width:900px){.layer-row button,.snap-panel input,.arrangement-tools>button{min-height:44px}.dialog-form-grid{grid-template-columns:1fr}}.calibration-dialog{width:min(520px,95vw)}.calibration-lead{margin:0 0 10px;line-height:1.6;font-weight:700}.calibration-guide{margin:0 0 12px;padding:10px 12px;border:1px solid #b9d5ed;border-radius:6px;background:#f1f8ff;color:#214b70;line-height:1.5}.calibration-guide strong{color:#114d80}.calibration-guide ol{margin:5px 0 7px 20px;padding:0}.calibration-guide p{margin:0}.calibration-dialog h3{margin:12px 0 6px;font-size:13px}.chair-arc-panel,.string-template-panel{position:fixed;right:16px;bottom:16px;z-index:90;width:320px;max-width:calc(100vw - 32px);max-height:calc(100vh - 140px);overflow:auto;padding:14px 16px;border:1px solid #d9d5c8;border-radius:12px;background:#fffdf8;box-shadow:0 20px 55px #1b2b2c47;font-size:12px}.chair-arc-panel-head,.string-template-panel .chair-arc-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.chair-arc-panel h2,.string-template-panel h2{margin:0;font-size:14px}.chair-arc-panel .hint,.string-template-panel .hint{margin:6px 0 10px;color:#55605f;line-height:1.5}.chair-arc-close{min-width:32px;min-height:32px;border:1px solid #ccc;border-radius:6px;background:#fafbfc;font-size:15px;line-height:1}.chair-arc-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px}.chair-arc-grid label{display:flex;flex-direction:column;gap:3px}.chair-arc-stand-option{display:flex;align-items:center;gap:6px;margin-top:10px;white-space:nowrap}.chair-arc-stand-option input{min-height:auto}.chair-arc-grid input{min-height:34px;padding:4px 6px;border:1px solid #ccc;border-radius:6px}.chair-arc-preset{min-height:34px;padding:4px 10px;border:1px solid #ccc;border-radius:6px;background:#fafbfc;white-space:nowrap}.chair-arc-preset.active{border-color:#e07b00;background:#fff2dd;font-weight:700}.chair-arc-rows-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;font-weight:700}.chair-arc-rows-head button{min-height:32px;padding:2px 10px;border:1px solid #ccc;border-radius:6px;background:#fafbfc}.chair-arc-rows ul{margin:0;padding:0;list-style:none;max-height:168px;overflow:auto}.chair-arc-rows li{display:flex;align-items:center;gap:6px;padding:3px 0}.chair-arc-row-name{min-width:48px}.chair-arc-rows li input{width:68px;min-height:32px;padding:3px 5px;border:1px solid #ccc;border-radius:6px}.chair-arc-row-unit{color:#55605f}.chair-arc-rows li button{margin-left:auto;min-height:32px;padding:2px 8px;border:1px solid #ccc;border-radius:6px;background:#fafbfc}.chair-arc-errors,.chair-arc-warnings{margin:10px 0 0;padding:8px 10px 8px 26px;border-radius:8px;line-height:1.5}.chair-arc-errors{border:1px solid #d9a0a0;background:#fdf1f1;color:#a52020}.chair-arc-warnings{border:1px solid #dcbb7a;background:#fdf7e8;color:#8a5c05}.chair-arc-panel .dialog-buttons button,.string-template-panel .dialog-buttons button{min-height:40px}.chair-arc-preview .chair-arc-center{fill:#e07b00;stroke:none}.chair-arc-preview .chair-arc-direction-line{fill:none;stroke:#e07b00;stroke-width:40;stroke-dasharray:260 160}.chair-arc-preview .chair-arc-guide{fill:none;stroke:#2f7f86;stroke-width:30;stroke-dasharray:200 140}.chair-arc-preview .chair-arc-chair{color:#2f7f86;opacity:.72}.chair-arc-preview .chair-arc-stand{color:#7b6a9e;opacity:.86}.chair-arc-preview .chair-arc-chair.overlapping{color:#c0392b;opacity:.9}.chair-arc-preview .chair-arc-chair-warning{fill:none;stroke:#c0392b;stroke-width:46;stroke-dasharray:150 110}.chair-arc-preview .chair-arc-distance-grip{fill:#fffdf8;stroke:#2f7f86;stroke-width:40}.chair-arc-handles .chair-arc-guide-hit{fill:none;stroke:transparent;stroke-linecap:round;cursor:ns-resize;touch-action:none}.chair-arc-handles .chair-arc-hit{fill:transparent;stroke:none;cursor:grab;touch-action:none}.chair-arc-handles .chair-arc-handle{fill:#fffdf8;stroke:#e07b00;stroke-width:48}.string-template-panel{width:360px}.string-template-group{margin:10px 0 0;padding:8px 10px 10px;border:1px solid #e2ded1;border-radius:8px}.string-template-group legend{padding:0 4px;font-weight:700}.string-template-group .hint{margin:6px 0 0}.string-template-radio-row{display:flex;flex-wrap:wrap;gap:4px 14px}.string-template-radio-row label{display:flex;align-items:center;gap:6px;min-height:44px}.string-template-radio-row input{width:20px;height:20px}.string-template-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.string-template-grid label{display:flex;flex-direction:column;gap:3px}.string-template-grid input,.string-template-select select{min-height:44px;padding:4px 6px;border:1px solid #ccc;border-radius:6px;background:#fff}.string-template-select{display:block}.string-template-select select{width:100%}.string-template-preset-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.string-template-preset-row .chair-arc-preset{min-height:44px;min-width:56px}.string-template-preset-state{min-width:56px;color:#8a5c05;font-weight:700}.string-template-counts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 10px;margin:8px 0 0;padding:0;list-style:none}.string-template-counts label{display:flex;align-items:center;gap:6px;min-height:44px}.string-template-part{min-width:52px;font-weight:700}.string-template-counts input{width:68px;min-height:40px;padding:3px 5px;border:1px solid #ccc;border-radius:6px}.string-template-unit{color:#55605f}.string-template-order{margin:8px 0 0;padding:0;list-style:none}.string-template-order li{display:flex;align-items:center;gap:6px;padding:3px 0}.string-template-order-index{min-width:20px;color:#55605f}.string-template-order-name{min-width:62px;font-weight:700}.string-template-order button{min-height:44px;min-width:72px;padding:2px 8px;border:1px solid #ccc;border-radius:6px;background:#fafbfc}.string-template-order button:disabled{opacity:.45}.string-template-summary{font-weight:700}.template-preview{pointer-events:none}.template-preview .template-preview-object{color:#2f7f86;opacity:.6}.template-preview .template-preview-object .symbol-use{stroke-dasharray:120 90}.template-preview .template-preview-object rect{fill:none;stroke:#2f7f86;stroke-width:40;stroke-dasharray:120 90}.string-row-guides .string-row-guide{fill:none;stroke:#7a5cc4;stroke-width:30;stroke-dasharray:220 160;opacity:.75}.string-row-guides .string-row-center{fill:#7a5cc4;opacity:.75}.string-row-guides .string-row-guide-hit{stroke-linecap:round;fill:none;stroke:transparent;cursor:ns-resize;touch-action:none}.selection-bounds-overlay{pointer-events:none}.selection-bounds{fill:transparent;stroke:#1f5b60;stroke-width:2.5px;stroke-dasharray:10px 8px;stroke-linecap:round;vector-effect:non-scaling-stroke}.riser-group-preview{pointer-events:none;opacity:.56}.riser-group-preview .riser-group-preview-object{color:#168a80}.riser-group-preview .riser-group-preview-object rect{fill:#168a8014;stroke:#168a80;stroke-width:36;stroke-dasharray:110 90}.riser-group-preview .riser-group-preview-object .symbol-use{stroke-dasharray:110 90}.chair-line-preview{pointer-events:none;opacity:.62}.chair-line-preview .chair-line-preview-object{color:#2f7f86}.chair-line-preview .chair-line-preview-object .symbol-use{stroke-dasharray:120 90}.chair-line-preview .chair-line-preview-object rect{fill:none;stroke:#2f7f86;stroke-width:40;stroke-dasharray:120 90}.chair-line-stand-option{display:flex;align-items:center;gap:6px;margin-top:10px;white-space:nowrap}.chair-line-stand-option input{min-height:auto}.chair-line-panel{position:fixed;right:16px;bottom:16px;z-index:90;width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 140px);overflow:auto}.chair-line-dialog{width:min(560px,calc(100vw - 32px));box-sizing:border-box}.chair-line-anchor-actions{margin-top:8px}.chair-line-anchor-actions button{width:100%;min-height:40px}.chair-line-summary{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:10px;font-weight:700}.line-arrangement-guide{pointer-events:none}.line-arrangement-axis{stroke:#e07b00;stroke-width:26;stroke-dasharray:150 100;vector-effect:non-scaling-stroke}.line-arrangement-hit{fill:transparent;stroke:transparent;pointer-events:all;cursor:ew-resize;touch-action:none}.line-arrangement-guide:has([cx]) .line-arrangement-hit{cursor:ew-resize}.line-arrangement-guide.vertical .line-arrangement-hit{cursor:ns-resize}.line-arrangement-handle{fill:#fff;stroke:#e07b00;stroke-width:26;vector-effect:non-scaling-stroke}.line-arrangement-guide [data-line-arrangement-handle]:focus-visible .line-arrangement-handle{stroke:#1769aa;stroke-width:38}.riser-group-panel,.line-arrangement-panel{position:fixed;right:16px;bottom:16px;z-index:90;width:min(720px,calc(100vw - 32px));max-height:calc(100vh - 140px);overflow:auto}.riser-group-dialog,.line-arrangement-dialog{max-width:720px}.riser-group-dialog{width:min(720px,calc(100vw - 32px));box-sizing:border-box}.riser-parallel-row-editor{padding:10px;border:1px solid #cfd8d5;border-radius:10px;background:#fbfcfb}.riser-parallel-row-editor+.riser-parallel-row-editor{margin-top:8px}.riser-parallel-row-editor .section-heading{margin-bottom:8px}.riser-segment-editor{display:grid;gap:8px}.riser-segment-editor .section-heading{display:flex;justify-content:space-between;align-items:center}.riser-segment-row{display:grid;grid-template-columns:28px minmax(0,1.15fr) minmax(90px,.6fr) minmax(120px,.9fr) auto;gap:8px;align-items:end;padding:8px;border:1px solid #d8dddc;border-radius:8px;background:#f8faf9}.riser-segment-row>label{min-width:0}.riser-segment-row select,.riser-segment-row input{display:block;width:100%;min-width:0;box-sizing:border-box}.riser-segment-index{align-self:center;color:#55605f;font-weight:700;text-align:center}.riser-segment-actions{display:flex;gap:4px}.riser-segment-actions button{min-width:44px;min-height:40px}.riser-global-fields{margin-top:12px}.riser-anchor-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:12px}.riser-anchor-actions button.active{background:#e07b00;color:#fff}.riser-summary,.line-arrangement-summary{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;padding:10px;border-radius:8px;background:#eef3f1;font-weight:700}.riser-background-controls{margin-top:12px}@media(max-width:640px){.riser-segment-row{grid-template-columns:26px minmax(0,1fr) minmax(78px,.6fr) minmax(110px,.8fr)}.riser-segment-actions{grid-column:2 / -1;justify-content:flex-end}}.string-row-guides .string-center-hit{fill:transparent;cursor:move;touch-action:none}.string-row-guides .string-center-cross{stroke:#7a5cc4;stroke-width:45;opacity:.75}:root{--ux-ink: #17262d;--ux-muted: #68777a;--ux-paper: #f1efe9;--ux-panel: #fffdf8;--ux-line: #d8d6ce;--ux-line-strong: #c5c6bd;--ux-teal: #1f5b60;--ux-teal-dark: #163f45;--ux-coral: #c65d45;--ux-gold: #c8943d;--ux-primary: #c99348;--ux-primary-hover: #e2b66a;--ux-primary-ink: #21383a;--ux-danger: #a03f39;--ux-radius-control: 6px;--ux-radius-panel: 8px;--ux-radius-dialog: 10px;--ux-radius-pill: 999px;--ux-shadow: 0 8px 22px rgba(30, 43, 43, .08);--ux-shadow-drawer: 0 10px 30px rgba(18, 34, 36, .2);--ux-shadow-dialog: 0 14px 34px rgba(27, 43, 44, .22)}html,body,#root{min-width:0;overflow:hidden}body{color:var(--ux-ink);background:var(--ux-paper);font-size:13px}button,input,select,textarea{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,svg:focus-visible{outline:3px solid rgba(198,93,69,.35);outline-offset:2px}.app-layout{background:var(--ux-paper)}.toolbar.app-toolbar{display:block;flex:0 0 auto;padding:10px 14px 0;border-bottom:1px solid #172e34;background:linear-gradient(135deg,#18353b,#214c51 55%,#1a3e45);color:#f7faf5;box-shadow:0 4px 14px #152c3029}.toolbar-topline,.tool-ribbon,.toolbar-group,.brand-lockup,.project-heading,.toolbar-mode-status,.wall-trace-toolbar{display:flex;align-items:center}.toolbar-topline{gap:10px;min-width:0;flex-wrap:wrap}.brand-lockup{flex:1 1 210px;min-width:170px;gap:9px}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border:1px solid rgba(239,218,162,.72);border-radius:9px;background:#c9903d;color:#fffaf0;font-size:11px;font-weight:900;letter-spacing:.08em;box-shadow:0 3px 8px #0a1b1f2e}.project-heading{min-width:0;flex:1;gap:7px}.toolbar.app-toolbar .project-name{width:min(240px,100%);min-width:90px;padding:2px 0;border:0;border-bottom:1px solid rgba(235,240,232,.5);border-radius:0;background:transparent;color:#fffdf5;font-size:15px;font-weight:800}.toolbar.app-toolbar .project-name:focus{border-bottom-color:#e2b66a;outline:0}.save-chip,.continuous-badge{display:inline-flex;align-items:center;min-height:20px;padding:1px 7px;border-radius:var(--ux-radius-pill);font-size:11px;font-weight:800;white-space:nowrap}.save-chip.saved{background:#d0e5cd29;color:#cfe5c9}.save-chip.dirty{background:#eebe682e;color:#f6d28f}.toolbar-group{gap:4px;flex:0 0 auto}.toolbar.app-toolbar button{min-height:29px;padding:5px 9px;border:1px solid rgba(198,220,213,.26);border-radius:var(--ux-radius-control);background:#ffffff14;color:#f7faf5;font-size:11px;font-weight:700;transition:background .12s ease,border-color .12s ease}.toolbar.app-toolbar button:hover:not(:disabled){border-color:#efdaa2cc;background:#ffffff29}.toolbar.app-toolbar button.primary-action{border-color:var(--ux-primary);background:var(--ux-primary);color:var(--ux-primary-ink)}.toolbar.app-toolbar button.tool-button.active,.toolbar.app-toolbar button.panel-toggle[aria-pressed=true]{border-color:var(--ux-primary-hover);background:var(--ux-primary-hover);color:var(--ux-primary-ink)}.edit-menu{position:relative;flex:0 0 auto}.toolbar.app-toolbar .edit-menu-trigger{display:inline-flex;align-items:center;gap:7px;min-width:58px;justify-content:center}.edit-menu-trigger span{color:#f4d79d;font-size:12px}.edit-menu-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:40;min-width:248px;padding:6px;border:1px solid #c9c2b4;border-radius:var(--ux-radius-panel);background:#fffdf8;box-shadow:0 12px 28px #1a2b2b38;color:#203438}.object-context-menu{position:fixed;top:auto;left:auto;z-index:100}.edit-menu-segment{display:block}.edit-menu-separator{height:1px;margin:5px 2px;background:#ded8cc}.edit-command-item,.toolbar.app-toolbar .edit-command-item{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:31px;padding:6px 9px;border:0;border-radius:5px;background:transparent;color:#203438;font-size:12px;font-weight:700;text-align:left;transform:none}.edit-command-item:hover:not(:disabled),.toolbar.app-toolbar .edit-command-item:hover:not(:disabled){border-color:transparent;background:#e8f0eb;color:#162f33;transform:none}.edit-command-item.danger{color:#a13e36}.edit-command-item:disabled{color:#83908b}.edit-command-item kbd{margin-left:18px;color:#71817b;font-size:10px;font-weight:600;white-space:nowrap}.history-actions button{width:30px;padding-inline:0!important;font-size:18px!important;line-height:1}.viewport-actions{padding:3px 4px;border:1px solid rgba(198,220,213,.2);border-radius:var(--ux-radius-panel);background:#0a1c1f33}.viewport-actions button{min-width:28px}.viewport-actions button:first-child{border:0!important;background:transparent!important;color:#dce9df!important}.zoom-readout{min-width:42px;color:#f4d79d;font-size:11px;font-variant-numeric:tabular-nums;text-align:center}.tool-ribbon{gap:12px;min-width:0;padding:9px 0 8px;overflow-x:auto;scrollbar-width:thin}.tool-cluster{display:flex;align-items:center;flex:0 0 auto;gap:4px;padding-left:10px;border-left:1px solid rgba(198,220,213,.25)}.tool-cluster-label{margin-right:2px;color:#b9d5cf;font-size:10px;font-weight:900;letter-spacing:.12em}.toolbar-mode-status{min-width:150px;flex:1 1 190px;justify-content:flex-end;gap:6px;margin-left:auto;color:#d6e8df;font-size:11px;white-space:nowrap}.toolbar-mode-status small{overflow:hidden;max-width:210px;color:#f3d59b;text-overflow:ellipsis}.mode-dot{width:7px;height:7px;border-radius:50%;background:#e0ad59;box-shadow:0 0 0 3px #e0ad5926}.continuous-badge{background:#c65d4538;color:#ffd0be}.wall-trace-toolbar{gap:8px;margin:0 -14px;padding:7px 14px;border-top:1px solid rgba(198,220,213,.18);background:#09191d3d;color:#f4d79d;font-size:11px}.wall-trace-toolbar span{font-weight:800}.wall-trace-toolbar label{display:flex;align-items:center;gap:4px;margin-left:auto}.wall-trace-toolbar input{width:82px;padding:4px 6px;border:1px solid rgba(198,220,213,.28);border-radius:var(--ux-radius-control);background:#ffffff1a;color:#fff}.banner{flex:0 0 auto;padding:6px 14px;border-bottom:1px solid rgba(105,117,107,.2);font-size:11px;line-height:1.4}.banner.warning{background:#fff1cf;color:#765b25}.banner.info{background:#e2efec;color:#24555a}.banner.notice{background:#e4f1df;color:#2b6037}.main-area{position:relative;display:grid;grid-template-columns:minmax(238px,260px) minmax(420px,1fr) minmax(300px,340px);flex:1 1 auto;min-height:0;overflow:hidden;isolation:isolate;background:var(--ux-paper)}.library-panel,.property-panel{z-index:2;min-width:0;min-height:0;overflow-y:auto;overscroll-behavior:contain;background:var(--ux-panel);box-shadow:var(--ux-shadow)}.library-panel{border-right:1px solid var(--ux-line)}.property-panel{border-left:1px solid var(--ux-line)}.panel-scrim{display:none}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin:0 0 12px;padding-bottom:10px;border-bottom:1px solid var(--ux-line)}.panel-heading h2{margin:2px 0 0;color:var(--ux-ink);font-size:18px;letter-spacing:-.04em}.eyebrow{color:var(--ux-muted);font-size:10px;font-weight:900;letter-spacing:.1em}.panel-close{display:none;width:30px;min-height:30px;padding:0;border:1px solid var(--ux-line);border-radius:50%;background:#f5f3ed;color:var(--ux-muted);font-size:20px;line-height:1}.panel-close-label{display:none}.property-panel>section,.property-panel>.background-panel,.property-panel>.layer-panel,.property-panel>.snap-panel{margin:0 14px 14px;padding:0 0 14px;border-bottom:1px solid var(--ux-line)}.property-panel>.requirements-panel{margin:0 14px 14px;padding:0 0 14px;border-bottom:1px solid var(--ux-line)}.property-panel>.inspector-section{margin:0 14px 14px;padding:0 0 14px;border-bottom:1px solid var(--ux-line)}.property-panel>.inspector-section>summary{padding:2px 0;color:var(--ux-ink);font-size:14px;font-weight:900;cursor:pointer}.property-panel>.inspector-section>summary:focus-visible{border-radius:4px;outline:3px solid rgba(31,91,96,.22);outline-offset:3px}.property-panel>.inspector-section>section{margin:10px 0 0;padding:0;border-bottom:0}.multi-orientation-editor .orientation-advanced>summary{padding:4px 0;color:var(--ux-muted);font-size:12px;font-weight:700;cursor:pointer}.requirements-panel summary{padding:2px 0;color:var(--ux-ink);font-size:14px;font-weight:900;cursor:pointer}.requirements-panel summary:focus-visible{border-radius:4px;outline:3px solid rgba(31,91,96,.22);outline-offset:3px}.requirements-panel-body{margin-top:10px}.requirements-scope{display:flex;flex-wrap:wrap;gap:6px 12px;margin:0 0 10px;padding:0;border:0}.requirements-scope legend{width:100%;margin:0 0 4px;color:#5e6b6d;font-size:11px;font-weight:700}.property-panel .requirements-scope label{display:inline-flex;align-items:center;gap:5px;margin:0;color:var(--ux-ink);min-width:max-content;font-size:11px;font-weight:700;white-space:nowrap}.property-panel .requirements-scope input[type=radio]{width:15px;height:15px;margin:0;accent-color:var(--ux-teal)}.requirements-table-wrap{overflow-x:auto}.requirements-table{width:100%;min-width:260px;border-collapse:collapse;font-size:11px}.requirements-table th,.requirements-table td{padding:6px 4px;border-bottom:1px solid rgba(207,215,209,.72);text-align:left;vertical-align:top}.requirements-table thead th{color:var(--ux-muted);font-size:10px;font-weight:800}.requirements-table tbody th{color:var(--ux-ink);font-weight:800}.requirements-table td{color:#5e6b6d}.requirements-table .requirements-count{width:52px;color:var(--ux-ink);font-variant-numeric:tabular-nums;font-weight:900;text-align:right;white-space:nowrap}.requirements-total{margin:9px 0 0;color:var(--ux-teal-dark);font-size:11px;font-weight:900;font-variant-numeric:tabular-nums}.requirements-empty{margin:8px 0 0;color:var(--ux-muted);font-size:11px}.property-panel h2{margin:0 0 9px;color:var(--ux-ink);font-size:14px;letter-spacing:.01em}.property-panel h3{margin:12px 0 6px;color:#526367;font-size:12px}.property-panel label{display:block;margin:0 0 9px;color:#5e6b6d;font-size:12px;font-weight:700}.property-panel label.row,.property-panel .row{display:flex;align-items:center;gap:7px}.property-panel input:not([type=checkbox]):not([type=range]):not([type=color]),.property-panel select,.property-panel textarea{display:block;width:100%;min-height:30px;margin-top:4px;padding:6px 8px;border:1px solid var(--ux-line-strong);border-radius:var(--ux-radius-control);background:#fffefa;color:var(--ux-ink);font-size:12px;font-variant-numeric:tabular-nums}.property-panel input:not([type=checkbox]):not([type=range]):not([type=color]):focus,.property-panel select:focus,.property-panel textarea:focus{border-color:var(--ux-teal);box-shadow:0 0 0 3px #1f5b601f;outline:0}.property-panel input[type=range]{width:calc(100% - 44px);accent-color:var(--ux-coral);vertical-align:middle}.property-panel input[type=color]{display:block;width:100%;height:29px;margin-top:4px;padding:2px;border:1px solid var(--ux-line-strong);border-radius:var(--ux-radius-control);background:#fff}.input-error{display:block;margin-top:3px;color:#ad4138;font-size:10px;font-weight:700}.property-panel input.input-invalid{border-color:#bf594e;background:#fff1ef}.property-panel .hint{margin:5px 0;color:#7b8889;font-size:12px;line-height:1.5}.property-panel .object-name{margin:0 0 11px;color:var(--ux-teal-dark);font-size:14px;font-weight:900}.property-panel .dialog-form-grid,.property-panel .crop-grid,.property-panel .style-color-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 8px}.property-panel .style-color-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.property-panel .style-color-grid label{font-size:10px}.property-panel .object-style-editor,.property-panel .multi-style-editor{margin:10px 0;padding:10px;border:1px solid #ddd8ca;border-radius:var(--ux-radius-panel);background:#faf7ef}.property-panel .object-style-editor summary{cursor:pointer;color:var(--ux-teal-dark);font-weight:900}.style-palette{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;margin:8px 0}.style-palette-button{min-height:30px;padding:4px 5px;border:2px solid;border-radius:var(--ux-radius-control);font-size:10px;font-weight:800;text-shadow:0 1px 1px rgba(0,0,0,.22)}.compact-style-palette{margin:0}.property-panel .actions,.property-button-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:9px}.property-panel button:not(.panel-close),.property-button-grid button,.property-panel .actions button{min-height:30px;padding:5px 7px;border:1px solid var(--ux-line-strong);border-radius:var(--ux-radius-control);background:#f8f7f1;color:#3f5558;font-size:11px;font-weight:800}.property-panel button:hover:not(:disabled),.property-button-grid button:hover:not(:disabled),.property-panel .actions button:hover:not(:disabled){border-color:#8caaa3;background:#eef4f0}.property-panel button.danger,.property-panel .actions button.danger{border-color:#d9a8a0;background:#fff4f1;color:#a03f39}.property-panel .wall-editor{margin:7px 0;padding:7px;border:1px solid var(--ux-line);border-radius:7px;background:#fafaf6}.property-panel .wall-editor summary{cursor:pointer;color:#3d595d;font-weight:800}.property-panel .wall-point-row{display:grid;grid-template-columns:20px minmax(0,1fr) minmax(0,1fr) 28px;align-items:center;gap:4px;margin:4px 0}.property-panel .wall-point-row input{min-width:0}.property-panel .wall-point-row button{min-height:28px;padding:0}.canvas-stage{position:relative;z-index:1;min-width:0;min-height:0;background-color:#dedcd4;background-image:linear-gradient(rgba(255,255,255,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.18) 1px,transparent 1px);background-size:24px 24px;cursor:crosshair}.canvas-stage:active{cursor:grabbing}svg.canvas-stage .scene-object.symbol-object .symbol-footprint{fill:transparent!important;stroke:transparent!important;pointer-events:all}svg.canvas-stage .scene-object.symbol-object .symbol-use{pointer-events:none}svg.canvas-stage .scene-object .symbol-label{pointer-events:none;-webkit-user-select:none;user-select:none;font-weight:700;letter-spacing:.02em;paint-order:stroke;stroke:#ffffffdb;stroke-width:18;stroke-linejoin:round}svg.canvas-stage .scene-object .symbol-label-light{stroke:#12151aad}.selection-marquee{fill:transparent;stroke:#171717;stroke-width:2.5px;stroke-dasharray:10px 8px;stroke-linecap:round;vector-effect:non-scaling-stroke}.rotate-handle line{stroke:#1f5b60;stroke-width:2.5px;stroke-dasharray:none;vector-effect:non-scaling-stroke}.rotate-handle circle{fill:#fffdf8;stroke:#1f5b60;stroke-width:2.5px;vector-effect:non-scaling-stroke}.status-bar{z-index:3;flex:0 0 auto;min-height:29px;align-items:center;padding:5px 14px;overflow-x:auto;scrollbar-width:thin;border-top:1px solid #273e42;background:#203c42;color:#d7e6df;font-size:11px}.status-bar .warning{color:#f2ce87}.status-bar .autosave-status{display:inline-flex;align-items:center;gap:6px}.status-bar .status-retry{min-height:24px}.dialog-backdrop{background:#13252775;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.dialog{border:1px solid #d9d5c8;border-radius:var(--ux-radius-dialog);background:#fffdf8;box-shadow:var(--ux-shadow-dialog)}.dialog-buttons{gap:8px}.dialog-buttons button{min-height:34px;border-radius:var(--ux-radius-control);border-color:var(--ux-line-strong);background:#f8f7f1;color:var(--ux-ink);font-weight:700}.dialog-buttons button:hover:not(:disabled){border-color:#9baaa4;background:#eeece4}.dialog-buttons button.primary{border-color:var(--ux-primary);background:var(--ux-primary);color:var(--ux-primary-ink)}.dialog-buttons button.primary:hover:not(:disabled){border-color:var(--ux-primary-hover);background:var(--ux-primary-hover)}@media(max-width:1120px){.toolbar.app-toolbar{padding-inline:10px}.toolbar-topline{gap:6px}.brand-lockup{flex-basis:170px}.main-area{display:block}.canvas-stage{display:block;width:100%;height:100%}.library-panel,.property-panel{position:absolute;top:0;bottom:0;width:min(88vw,380px);transition:transform .18s ease,box-shadow .18s ease;z-index:5}.panel-scrim{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;display:block;width:100%;min-height:100%;padding:0;border:0;background:#12222438;cursor:default}.library-panel{left:0;transform:translate(-104%)}.property-panel{right:0;transform:translate(104%)}.main-area.library-is-open .library-panel,.main-area.inspector-is-open .property-panel{transform:translate(0);box-shadow:var(--ux-shadow-drawer)}.main-area:not(.library-is-open) .library-panel,.main-area:not(.inspector-is-open) .property-panel{pointer-events:none}.panel-close{display:inline-grid;place-items:center;width:44px;min-height:44px}.library-panel .panel-close{display:inline-flex;align-items:center;justify-content:center;width:auto;min-width:44px;padding-inline:10px;border-radius:8px;gap:4px}.library-panel .panel-close-label{display:inline;font-size:12px;white-space:nowrap}.toolbar.app-toolbar button,.toolbar.app-toolbar .display-settings-control>summary{min-width:44px;min-height:44px}.toolbar.app-toolbar .project-name,.display-settings-popover label,.symbol-library .library-search,.symbol-library .library-category-tabs button{min-height:44px}.symbol-library .library-category-tabs button{min-width:44px}.symbol-library .user-template-file-actions button,.symbol-library .user-template-actions button{min-width:44px;min-height:44px}.toolbar.app-toolbar .display-settings-control>summary{display:inline-flex;align-items:center}.toolbar.app-toolbar .history-actions button{min-width:44px;padding-inline:10px}.property-panel button:not(.panel-close),.library-panel button{min-width:44px;min-height:44px}.toolbar-mode-status{min-height:44px;position:sticky;right:0;z-index:2;padding-inline:10px;background:#203c42}.status-bar .status-retry{min-height:44px}}@media(max-width:700px){.toolbar-topline{flex-wrap:wrap;overflow:visible;padding-bottom:7px;row-gap:6px}.brand-lockup{flex:1 1 100%;min-width:0;padding-inline:6px}.brand-mark{width:30px;height:30px;font-size:9px}.toolbar.app-toolbar .project-name{font-size:13px}.file-actions,.history-actions,.viewport-actions,.panel-actions{flex:0 0 auto;max-width:100%;overflow-x:auto;scrollbar-width:thin}.tool-ribbon{margin-inline:-10px;padding-inline:10px}.toolbar-mode-status{min-width:115px;flex-basis:115px}.toolbar-mode-status small,.annotation-tools{display:none}.wall-trace-toolbar{margin-inline:-10px;padding-inline:10px}.property-panel .style-color-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:420px){.library-panel,.property-panel{width:94vw}.toolbar.app-toolbar button{padding-inline:7px}.file-actions button:first-child,.file-actions button:nth-child(2){display:inline-flex}}@media(min-width:1121px){.main-area .library-panel,.main-area .property-panel{position:relative;transform:none}}.rotate-handle .rotate-hit-area{fill:transparent!important;stroke:transparent!important;pointer-events:all}.display-settings-control{position:relative;flex:0 0 auto}.toolbar.app-toolbar .display-settings-control>summary{display:inline-flex;align-items:center;min-height:29px;padding:5px 9px;border:1px solid rgba(198,220,213,.26);border-radius:6px;background:#ffffff14;color:#f7faf5;cursor:pointer;font-size:11px;font-weight:700;list-style:none}.toolbar.app-toolbar .display-settings-control>summary::-webkit-details-marker{display:none}.toolbar.app-toolbar .display-settings-control[open]>summary,.toolbar.app-toolbar .display-settings-control>summary:hover{border-color:#efdaa2cc;background:#ffffff29}.display-settings-popover{position:absolute;top:calc(100% + 6px);right:0;z-index:50;min-width:220px;padding:11px;border:1px solid #c9c2b4;border-radius:8px;background:#fffdf8;box-shadow:0 12px 28px #1a2b2b38;color:#203438}.display-settings-popover fieldset{margin:0 0 9px;padding:0;border:0}.display-settings-popover legend{margin-bottom:5px;color:#3d595d;font-size:11px;font-weight:800}.display-settings-popover label{display:flex;align-items:center;gap:7px;min-height:27px;white-space:nowrap}.display-settings-popover input[type=radio],.display-settings-popover input[type=checkbox]{accent-color:var(--ux-coral)}.display-setting-check{padding-top:8px;border-top:1px solid #e3dfd4;font-weight:700}.symbol-variant-editor{margin:10px 0 12px;padding:10px;border:1px solid #ded8ca;border-radius:8px;background:#fbfaf5}.symbol-variant-editor h3{margin:0 0 8px;color:#3d595d;font-size:12px}.symbol-variant-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.property-panel .symbol-variant-option{display:flex;min-width:0;min-height:92px;flex-direction:column;align-items:stretch;gap:4px;padding:6px;border:1px solid #d0ccc0;border-radius:7px;background:#fffdf8;color:#203438;text-align:left}.property-panel .symbol-variant-option.selected{border-color:var(--ux-coral);box-shadow:0 0 0 2px #c65d452e}.symbol-variant-preview{display:grid;min-height:52px;place-items:center;color:var(--ux-teal-dark)}.symbol-variant-preview svg{display:block;width:100%;height:52px}.symbol-variant-label{display:flex;align-items:baseline;justify-content:space-between;gap:5px;font-size:11px}.symbol-variant-label small{overflow:hidden;color:var(--ux-muted);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.symbol-variant-editor .hint{margin:7px 0 0}.multi-orientation-editor{margin:10px 0 12px;padding:10px;border:1px solid #ded8ca;border-radius:8px;background:#fbfaf5}.multi-orientation-editor h3{margin:0 0 8px;color:#3d595d;font-size:12px}.multi-orientation-editor .hint{margin:7px 0 0}.multi-orientation-editor .wide{grid-column:1 / -1}.aim-point-preview{pointer-events:none}.aim-point-preview circle,.aim-point-preview line{fill:none;stroke:#c65d45;stroke-width:22;vector-effect:non-scaling-stroke}.aim-point-preview text{fill:#c65d45;font-weight:800;paint-order:stroke;stroke:#fffdf8;stroke-width:18}
