html,body,#root{height:100%;margin:0;padding:0}*{box-sizing:border-box}.app{color:#dde3ee;background:#12151c;flex-direction:column;height:100vh;font:13px/1.45 -apple-system,Segoe UI,sans-serif;display:flex}.panel{background:#191d27;border-right:1px solid #262c3a;flex-direction:column;width:300px;min-width:300px;padding:14px 16px 0;display:flex;overflow-y:auto}.panel>*{flex-shrink:0}.cutbar{z-index:3;background:#191d27;border-top:1px solid #262c3a;margin:auto -16px 0;padding:10px 16px 12px;position:sticky;bottom:0;box-shadow:0 -8px 16px -8px #0009}.cutbar button{margin-top:0}.cutbar-meta{color:#8b96ab;text-align:center;margin-top:6px;font-size:11px}details.sec.sub{border-top:1px dashed #2b3240;margin-top:8px}details.sec.sub summary{letter-spacing:.8px;color:#6f7a93;padding:8px 0 6px;font-size:11px}.panel h1{letter-spacing:.5px;color:#fff;margin:0 0 4px;font-size:20px}.statusbar{color:#8b96ab;min-height:15px;margin-bottom:12px;font-size:11px}.statusbar .pending{color:#f0b95e;background:#3a2c14;border-radius:999px;margin-bottom:4px;padding:1px 7px;font-weight:600;display:inline-block}details.sec{border-top:1px solid #262c3a;padding:0 0 4px}details.sec summary{cursor:pointer;text-transform:uppercase;letter-spacing:1px;color:#7f8aa3;-webkit-user-select:none;user-select:none;padding:10px 0 8px;font-size:12px;font-weight:600;list-style:none}details.sec summary:before{content:"▸";color:#4a5468;margin-right:7px;transition:transform .15s;display:inline-block}details.sec[open] summary:before{transform:rotate(90deg)}details.sec summary:hover{color:#aab3c6}details.sec .sec-body{padding-bottom:10px}label{color:#aab3c6;margin-bottom:8px;font-size:12px;display:block}label.row{align-items:center;gap:6px;display:flex}input[type=text],input[type=number],select,input:not([type]){color:#e8edf7;background:#10131a;border:1px solid #313949;border-radius:6px;width:100%;margin-top:3px;padding:6px 8px;font-size:13px}input[type=range]{width:100%;margin-top:4px}button{color:#dde3ee;cursor:pointer;background:#262d3d;border:1px solid #38415a;border-radius:7px;width:100%;margin-top:4px;padding:8px 10px;font-size:13px}button:hover:not(:disabled){background:#303950}button:disabled{opacity:.4;cursor:default}button.active{color:#fff;background:#3b5bd9;border-color:#3b5bd9}button.primary{color:#fff;background:#2fa46b;border-color:#2fa46b;padding:11px;font-weight:600}button.primary:hover:not(:disabled){background:#37b878}button.urgent{color:#fff;background:#c8892f;border-color:#e0a244;animation:1.8s ease-in-out infinite urgentpulse}button.urgent:hover:not(:disabled){background:#dda047;animation:none}@keyframes urgentpulse{0%,to{box-shadow:0 0 #e0a24400}50%{box-shadow:0 0 0 4px #e0a24438}}@media (prefers-reduced-motion:reduce){button.urgent{animation:none}}.toolrow{gap:6px;display:flex}.toolrow button{margin-top:4px}.grid3{gap:6px;display:flex}.grid2{gap:8px;display:flex}.grid2>label{flex:1;min-width:0}.fontpicker{margin-bottom:8px;position:relative}.fontpicker>label{margin-bottom:3px}.fontbtn{text-align:left;background:#10131a;border:1px solid #313949;justify-content:space-between;align-items:center;margin-top:0;padding:7px 10px;display:flex}.fontbtn .caret{color:#6c7690;font-size:11px}.fontpanel{z-index:20;background:#1c2130;border:1px solid #38415a;border-radius:9px;padding:8px;position:absolute;top:calc(100% + 4px);left:0;right:0;box-shadow:0 10px 30px #0009}.fontpanel .fontlist{margin-bottom:6px}.searchrow{position:relative}.searchrow .clearbtn{color:#aab3c6;background:#2a3245;border:none;border-radius:50%;width:22px;height:22px;margin:1px 0 0;padding:0;font-size:14px;line-height:1;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.searchrow .clearbtn:hover{background:#3b4661}.sizeinfo{color:#aab3c6;background:#10131a;border:1px solid #262c3a;border-radius:7px;margin:2px 0 6px;padding:7px 10px;font-size:12px}.sizeinfo b{color:#e8edf7;font-weight:600}.sizeinfo span{color:#6c7690;font-size:11px}.fontlist .empty{color:#6c7690;text-align:center;padding:14px 10px;font-size:12px}.filebtn{text-align:center;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:#10131a;border:1px dashed #3b445a;border-radius:7px;padding:8px 10px;display:block;overflow:hidden}.filebtn input[type=file]{display:none}.hint{color:#6c7690;margin:6px 0 0;font-size:11px}.chiprow{flex-wrap:wrap;gap:4px;margin-bottom:6px;display:flex}.chiprow .chip{background:#10131a;border-radius:999px;width:auto;margin:0;padding:3px 9px;font-size:11px}.chiprow .chip.active{color:#fff;background:#3b5bd9;border-color:#3b5bd9}.fontlist{background:#10131a;border:1px solid #262c3a;border-radius:7px;max-height:260px;margin-bottom:8px;overflow-y:auto}.fontlist button{text-align:left;background:0 0;border:none;border-bottom:1px solid #1c212d;border-radius:0;justify-content:space-between;align-items:center;width:100%;margin:0;padding:6px 10px;font-size:12.5px;display:flex}.fontlist button span{color:#6c7690;font-size:10px}.fontlist button .fname{color:inherit;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin-right:8px;font-size:17px;line-height:1.25;overflow:hidden}.fontlist button .delx{color:#6c7690;border-radius:4px;margin-left:6px;padding:2px 6px;font-size:11px}.fontlist button .delx:hover{color:#ff8484;background:#46283064}.fontlist button:hover{background:#1c2230}.fontlist button.active{color:#fff;background:#2b3a63}.fontlist button.hi{color:#fff;background:#33406b;box-shadow:inset 0 0 0 1px #5b7bd9}.canvas-wrap{background:#12151c;flex:1;position:relative;overflow:auto}.canvas-wrap svg{cursor:crosshair;-webkit-user-select:none;user-select:none;background:#171b24;display:block}.zoombar{z-index:2;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#8b96ab;white-space:nowrap;scrollbar-width:none;background:#12151ccc;flex-wrap:nowrap;align-items:center;gap:8px;padding:8px 14px;font-size:11px;display:flex;position:sticky;top:0;left:0;overflow-x:auto}.zoombar::-webkit-scrollbar{display:none}.zoombar>*{flex-shrink:0}.zoombar input[type=range]{flex-shrink:1;width:140px;min-width:50px;margin:0}.zoombar select{width:auto;margin:0;padding:3px 6px;font-size:11px}.zoombar .zbtn{white-space:nowrap;border-radius:5px;width:auto;margin:0;padding:4px 9px;font-size:11px;line-height:1.2}.zoombar .zpct{text-align:right;color:#c3cbdb;font-variant-numeric:tabular-nums;min-width:38px}.sizeinfo.warn{color:#e8d5a0;background:#241d10;border-color:#8a6d2f}.sizeinfo.warn .toolrow{margin-top:6px}.app-body{flex:1;min-height:0;display:flex}.menubar{-webkit-user-select:none;user-select:none;z-index:20;background:#1d2230;border-bottom:1px solid #2b3240;flex-shrink:0;justify-content:flex-start;align-items:center;gap:4px;padding:8px 12px;font-size:13px;display:flex;position:relative}.menubar .brand{color:#fff;letter-spacing:.4px;margin-right:18px;font-size:14px;font-weight:700}.menu{position:relative}.menu-title{color:#dde3ee;cursor:default;width:auto;font:inherit;background:0 0;border:0;border-radius:5px;margin:0;padding:5px 12px}.menu-title:hover,.menu.open .menu-title{color:#fff;background:#2d3447}.menu-list{z-index:50;background:#232838;border:1px solid #343c50;border-radius:8px;min-width:240px;padding:5px;position:absolute;top:100%;left:0;right:auto;box-shadow:0 12px 30px #000a}.menu-item{text-align:left;color:#dde3ee;width:100%;font:inherit;cursor:default;white-space:nowrap;background:0 0;border:0;border-radius:5px;align-items:center;gap:6px;margin:0;padding:5px 8px;display:flex}.menu-item:hover:not(:disabled){color:#fff;background:#3b5bdb}.menu-item:disabled{color:#49536b;opacity:1;cursor:default}.menu-check{width:12px;font-size:11px}.menu-label{flex:1}.menu-key{color:#8b96ab;margin-left:18px;font-size:11px}.menu-item:hover:not(:disabled) .menu-key{color:#dfe6ff}.menu-sep{background:#343c50;height:1px;margin:5px 4px}.shortcuts{z-index:60;background:#232838;border:1px solid #343c50;border-radius:10px;width:320px;padding:12px 14px;font-size:12px;position:fixed;top:44px;right:16px;box-shadow:0 12px 30px #000a}.shortcuts h3{color:#fff;margin:0 0 8px;font-size:13px}.shortcuts table{border-collapse:collapse;width:100%}.shortcuts td{vertical-align:top;padding:3px 0}.shortcuts td:first-child{color:#f0b95e;white-space:nowrap;width:1%;padding-right:12px}.shortcuts button{margin-top:10px}.modal-backdrop{z-index:70;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0a0c12aa;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#191d27;border:1px solid #343c50;border-radius:12px;width:min(420px,100vw - 32px);padding:18px 20px 16px;box-shadow:0 24px 60px #000c}.modal h3{color:#fff;margin:0 0 12px;font-size:16px}.modal-facts{border-collapse:collapse;width:100%;margin-bottom:10px;font-size:13px}.modal-facts td{vertical-align:top;padding:4px 0}.modal-facts td:first-child{color:#8b96ab;white-space:nowrap;width:1%;padding-right:14px}.modal-warn{color:#f0b95e;background:#3a2c14;border-radius:6px;margin:6px 0;padding:6px 10px;font-size:12px}.modal-actions{gap:10px;margin-top:12px;display:flex}.modal-actions button{flex:1;margin-top:0}.veclist{background:#1d2230;border:1px solid #2b3240;border-radius:8px;margin-top:8px;padding:8px 10px}.veclist.sel{border-color:#f0b95e}.vecname{margin-bottom:4px;font-weight:600}.vecname .dim{color:#8b96ab;font-weight:400}.iconrow{gap:6px;margin-top:8px;display:flex}.iconbtn{color:#dde3ee;flex:1;justify-content:center;align-items:center;min-width:0;height:36px;margin-top:0;padding:6px 0;display:flex}.iconbtn:disabled{color:#596179}.iconlabels{color:#8b96ab;gap:6px;margin-top:2px;font-size:10px;display:flex}.iconlabels span{text-align:center;white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.bom{border-collapse:collapse;width:100%;margin:4px 0 6px;font-size:12px}.bom th,.bom td{text-align:left;font-variant-numeric:tabular-nums;border:1px solid #333a4a;padding:3px 7px}.bom thead th{color:#8b97b5;background:#1a1f2b;font-weight:600}.canvas-wrap.dragover{outline-offset:-3px;outline:2px dashed #5b7bd9}textarea{color:#e8edf7;resize:vertical;background:#10131a;border:1px solid #313949;border-radius:6px;width:100%;margin-top:3px;padding:6px 8px;font:13px/1.5 ui-monospace,Menlo,monospace}.panel-resizer{cursor:col-resize;touch-action:none;background:#262c3a;flex-shrink:0;width:5px}.panel-resizer:hover{background:#3b5bd9}
