:root{--blue:#254f86;--ink:#192c43;--muted:#667589;--line:#e1e7ef;--bg:#f4f7fb;--green:#19826b;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue",sans-serif;color:var(--ink);background:var(--bg);font-size:12px}*{box-sizing:border-box}body{margin:0;height:100dvh;display:flex;flex-direction:column;overflow:hidden}button,input,select,textarea{font:inherit}button{border:1px solid transparent;background:transparent;color:var(--ink);border-radius:5px;padding:8px 10px;cursor:pointer;white-space:nowrap;transition:background .12s}button:hover{background:#e8eef7}button:disabled{opacity:.35;cursor:not-allowed}button.primary{background:var(--blue);color:white;border-color:var(--blue)}button.primary:hover{background:#1c406e}button.active{background:#dfeaf8;color:var(--blue)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,svg:focus-visible{outline:2px solid #6298d4;outline-offset:2px}input,select,textarea{border:1px solid #d6dfe9;background:white;border-radius:5px;padding:8px;color:var(--ink);min-width:0;width:100%}input[type=checkbox]{width:auto;accent-color:var(--blue)}input[type=number]{font-family:SFMono-Regular,Consolas,monospace}h2,h3,p{margin:0}h2{font-size:13px;font-weight:650}h3{font-size:12px;font-weight:600;margin-bottom:12px}small,.muted{color:var(--muted)}.push{margin-left:auto}.topbar{height:68px;display:flex;align-items:center;background:white;border-bottom:1px solid var(--line);padding:0 22px;gap:40px;flex-shrink:0}.brand{display:flex;align-items:center;gap:10px;font-family:"Avenir Next","PingFang SC",sans-serif;font-size:22px;font-weight:600;letter-spacing:2px}.brand small{display:block;font-size:8px;letter-spacing:1.5px;margin-top:1px}.brandmark{display:grid;place-items:center;width:35px;height:35px;border:1.5px solid var(--blue);color:var(--blue);font-size:24px;font-weight:500;transform:rotate(-5deg);border-radius:2px}.project{display:flex;flex-direction:column;gap:4px}.project input{font-size:13px;font-weight:550;border:0;padding:0;min-width:220px;outline-offset:3px}.project span{font-size:10px;color:var(--muted)}.top-actions{display:flex;gap:8px;margin-left:auto}.mainbar{display:flex;align-items:center;background:#fff;padding:9px 15px;gap:13px;border-bottom:1px solid var(--line);height:53px;flex-shrink:0}.toolgroup{display:flex;align-items:center;gap:3px}.mainbar .toolgroup+.toolgroup{border-left:1px solid var(--line);padding-left:13px}.workspace{display:grid;grid-template-columns:239px minmax(320px,1fr) 247px;min-height:0;flex:1}.inventory,.properties{background:#fff;min-height:0;overflow:auto;display:flex;flex-direction:column}.inventory{border-right:1px solid var(--line)}.properties{border-left:1px solid var(--line)}.panel-title{display:flex;align-items:center;justify-content:space-between;padding:20px 17px 16px}.panel-title>span{color:var(--muted);font-size:10px}.filters{padding:0 14px 12px;display:grid;gap:9px}.filters input{background:var(--bg);border-color:transparent;font-size:11px}.filters select{font-size:11px}.size-filter{display:flex;gap:5px}.size-filter button{font-size:10px;border:1px solid var(--line);padding:4px 10px;min-width:32px}.inventory-caption{display:flex;justify-content:space-between;color:var(--muted);font-size:10px;padding:12px 16px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.piece-list{overflow-y:auto;flex:1}.piece-card{display:grid;grid-template-columns:53px 1fr auto;align-items:center;gap:9px;padding:14px;border-bottom:1px solid #eef1f5;cursor:pointer}.piece-card:hover,.piece-card.selected{background:#f0f5fc}.piece-card.selected{box-shadow:inset 3px 0 var(--blue)}.piece-card svg{width:52px;height:57px}.piece-card strong{display:block;font-size:11px;font-weight:550;margin-bottom:5px}.piece-card small{font-size:10px}.piece-card .count{font:10px SFMono-Regular,Consolas,monospace;color:var(--muted)}.add-piece{margin:12px 14px;border:1px dashed #b8c8dd;color:var(--blue)}.inventory-foot{padding:5px 17px 15px;font-size:10px;color:var(--muted)}.dot{display:inline-block;width:5px;height:5px;background:var(--green);border-radius:50%;margin-right:6px}.center{display:flex;flex-direction:column;min-width:0;min-height:0}.bedbar{height:44px;display:flex;align-items:center;padding:0 18px;border-bottom:1px solid var(--line);gap:7px;flex-shrink:0}.bed-tabs{display:flex;height:100%;gap:15px;overflow:auto}.bed-tabs button{font-size:11px;padding:0 2px;border-radius:0}.bed-tabs button.active{background:transparent;border-bottom:2px solid var(--blue);font-weight:600}.bedbar>span{color:var(--muted);font-size:10px}.subtle{font-size:10px;color:var(--muted)}.metrics{display:flex;background:#fff;border-bottom:1px solid var(--line);padding:19px 25px;gap:40px;flex-shrink:0}.metrics small{font-size:10px;display:block;margin-bottom:6px}.metrics strong{font:500 26px "Avenir Next",SFMono-Regular,sans-serif;letter-spacing:-.7px}.metrics strong em{font-style:normal;font-size:11px;font-weight:400;color:var(--muted);letter-spacing:0;margin-left:4px}.metrics>div:nth-child(2) strong{color:var(--green)}.metric-note{margin-left:auto;display:flex;align-items:center;font-size:10px;color:var(--muted);max-width:120px;line-height:1.6}.canvas-tools{display:flex;align-items:center;padding:9px 15px;height:46px;gap:12px;border-bottom:1px solid var(--line)}.canvas-tools .toolgroup:first-child button{font-size:16px;line-height:1;padding:6px 10px}.canvas-tools>span{font-size:10px;color:var(--muted)}#zoom-label{font:10px SFMono-Regular,monospace;min-width:35px;text-align:center}.canvas-wrap{position:relative;flex:1;min-height:200px;overflow:hidden;background:#eaf0f6;background-image:radial-gradient(#b2c2d333 .8px,transparent .8px);background-size:8px 8px}.canvas-wrap svg{width:100%;height:100%;touch-action:none;user-select:none;display:block}.canvas-wrap svg .pattern-piece{cursor:grab;transition:fill-opacity .1s}.canvas-wrap svg .pattern-piece:hover{fill-opacity:.45}.canvas-wrap svg .pattern-piece.is-selected{stroke:#173d70;stroke-width:.65;fill-opacity:.5}.canvas-wrap svg .pattern-piece.is-invalid{stroke:#c55541;stroke-dasharray:1 1}.canvas-wrap svg text{pointer-events:none;font-family:-apple-system,"PingFang SC",sans-serif}.canvas-footer{display:flex;padding:9px 16px;background:#f7f9fc;border-top:1px solid var(--line);font:10px SFMono-Regular,monospace;gap:25px;color:var(--muted);flex-shrink:0}.property-section{border-top:1px solid var(--line);padding:17px 17px 18px;display:grid;gap:12px}label{display:grid;gap:6px;font-size:11px;color:var(--muted)}.unit-input{position:relative}.unit-input input{padding-right:28px}.unit-input span{position:absolute;right:10px;top:9px;font-size:10px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:8px}.two-col button,.wide{border:1px solid var(--line);font-size:10px;padding:8px}.wide{width:100%}.check{display:flex;align-items:center;gap:6px}.check input{margin:0}.pill{border:1px solid var(--line);border-radius:3px;padding:3px 5px}.selection-panel h3{display:flex;justify-content:space-between;margin-bottom:0}.selection-panel h3 span{color:var(--muted)}#selection-details{font-size:10px;line-height:1.7;min-height:33px}.stat-row{display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.stat-row b{font:500 10px SFMono-Regular,monospace;color:var(--ink)}.local-note{padding:17px;font-size:10px;line-height:1.8;color:var(--muted);margin-top:auto}.statusbar{height:27px;display:flex;align-items:center;padding:0 15px;gap:4px;background:#fff;border-top:1px solid var(--line);font-size:10px;color:var(--muted);flex-shrink:0}dialog{border:1px solid var(--line);border-radius:10px;box-shadow:0 22px 90px #12253c40;width:min(720px,94vw);max-height:88dvh;padding:0;color:var(--ink)}dialog::backdrop{background:#172b4655;backdrop-filter:blur(2px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line)}.dialog-head h2{font-size:16px}.dialog-head button{font-size:20px;padding:0 5px}#dialog-body{padding:22px;overflow:auto;max-height:calc(88dvh - 125px);line-height:1.8}#dialog-body p{margin-bottom:12px;color:var(--muted)}#dialog-body label{margin-bottom:12px}#dialog-body .form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 16px}#dialog-body textarea{font-family:SFMono-Regular,monospace;min-height:110px;font-size:11px}#dialog-actions{border-top:1px solid var(--line);padding:14px 22px;display:flex;justify-content:flex-end;gap:9px}#dialog-actions:empty{display:none}.scope-table{border-collapse:collapse;width:100%;font-size:11px}.scope-table th,.scope-table td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}.scope-table th{color:var(--muted);font-weight:500}.badge{padding:3px 5px;border-radius:3px;font-size:10px;white-space:nowrap;background:#e6f2ee;color:var(--green)}.badge.partial{background:#fff1d8;color:#946319}.badge.pending{background:#edf0f5;color:var(--muted)}.dialog-help{font-size:11px;background:var(--bg);padding:12px 15px;border-radius:5px;margin-bottom:15px}.export-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.export-options button{border:1px solid var(--line);text-align:left;padding:16px;white-space:normal}.export-options b{display:block;font-size:13px;margin-bottom:5px}.export-options small{font-size:10px}.scope-warning{background:#fff6e7;border-left:3px solid #c17b1d;padding:10px 14px;font-size:11px;margin-bottom:15px}#editor-svg{height:260px;width:100%;border:1px solid var(--line);background:var(--bg);touch-action:none}#editor-svg circle.handle{cursor:move;fill:white;stroke:var(--blue);stroke-width:.4}#toast{position:fixed;bottom:43px;left:50%;transform:translate(-50%,10px);max-width:min(650px,90vw);background:#19304b;color:#fff;font-size:12px;line-height:1.6;padding:11px 20px;border-radius:6px;box-shadow:0 6px 25px #19304b33;opacity:0;pointer-events:none;transition:all .15s;z-index:100}#toast.visible{opacity:1;transform:translate(-50%,0)}#empty-state{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;width:320px}#empty-state strong{font-size:18px}#empty-state p{color:var(--muted);margin:12px 0;line-height:1.8}#empty-state button{border:1px solid #adc0d8;color:var(--blue)}[hidden]{display:none!important}.error-list{color:#b14636;font-size:11px}.editor-tools{display:flex;gap:7px;margin:10px 0}.editor-tools button{border:1px solid var(--line);font-size:11px}.scope-row{display:flex;gap:10px;margin:10px 0;align-items:center}.scope-row kbd{font-family:SFMono-Regular,monospace;border:1px solid var(--line);padding:2px 7px;border-radius:3px;min-width:90px}@media(max-width:1250px){.workspace{grid-template-columns:205px minmax(300px,1fr) 220px}.topbar{gap:22px;padding:0 16px}.mainbar{gap:6px;padding:8px}.mainbar .toolgroup+.toolgroup{padding-left:6px}.mainbar button{padding:8px 7px;font-size:11px}.metrics{gap:25px;padding:17px 18px}.metric-note{display:none}.canvas-tools>span{display:none}.top-actions button{padding:8px}.properties .property-section{padding:15px 13px}}@media(max-width:1000px){.workspace{grid-template-columns:190px minmax(300px,1fr)}.properties{display:none}.topbar .top-actions button[data-action=scope],.topbar .top-actions button[data-action=restore]{display:none}.mainbar .push{display:none}.mainbar{overflow:auto}.project{flex:1}.project input{min-width:100px;max-width:240px}}@media(max-width:650px){.brand small,.project span{display:none}.brand{font-size:17px;gap:7px}.brandmark{height:28px;width:28px;font-size:20px}.topbar{height:58px;gap:14px;padding:0 10px}.top-actions{gap:0}.top-actions button[data-action=save]{display:none}.project input{font-size:11px;width:110px}.workspace{grid-template-columns:1fr}.inventory{display:none}.metrics{gap:26px;padding:14px 16px}.metrics strong{font-size:23px}.canvas-tools{padding:8px 9px;gap:6px}.canvas-tools button{padding:7px}.bedbar{padding:0 10px}.bedbar .push{display:none}.statusbar{font-size:9px}.canvas-footer{font-size:9px;gap:14px}.form-grid{grid-template-columns:1fr!important}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}@media print{body{height:auto;overflow:visible;background:white}.topbar,.mainbar,.inventory,.properties,.bedbar,.metrics,.canvas-tools,.canvas-footer,.statusbar,dialog,#toast{display:none!important}.workspace{display:block}.center{display:block}.canvas-wrap{height:90vh;background:white}.canvas-wrap svg{height:90vh}}
.workflow-nav{display:flex;align-items:center;gap:4px;flex-shrink:0;min-height:37px;background:#eef4fa;padding:0 19px;border-bottom:1px solid var(--line)}.workflow-nav a{display:block;padding:10px 21px 9px;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;font-weight:550}.workflow-nav a:hover{color:var(--blue);background:#e3edf8}.workflow-nav a.active{color:var(--blue);border-bottom-color:var(--blue);background:#fff}.workflow-nav a:focus-visible{outline:2px solid #6298d4;outline-offset:-2px}.workflow-nav>span{margin-left:12px;font-size:10px;color:var(--muted)}.workflow-nav>button{margin-left:auto;font-size:10px;padding:6px 9px;color:var(--blue)}@media(max-width:650px){.workflow-nav{padding:0 7px}.workflow-nav a{padding:10px 16px 9px}.workflow-nav>span{display:none}}@media print{.workflow-nav{display:none!important}}

.piece-card.relay-target{outline:2px solid var(--blue);outline-offset:-2px}.style-update-scroll{overflow:auto;max-height:40dvh}.style-update-scroll table{min-width:430px}.style-update-scroll tr[data-status=removed]{color:#a53929}.style-update-scroll tr[data-status=added]{color:#19734d}.style-update-scroll tr[data-status=updated]{color:#254f86}.style-update-scroll tr[data-status=renamed]{color:#936019}.editor-tools{flex-wrap:wrap}
