:root{--bg:#f6f7f9;--panel:#fff;--border:#dde1e6;--text:#1c2430;--muted:#5d6877;--accent:#1f5fa8;--accent-soft:#e4eefa;--danger:#b3261e;--bar:#1f2a37;--bar-text:#f2f5f8;--canvas:#fbfcfd;--grid-minor:#eceff3;--grid-major:#d5dbe2;--piece-fill:#e4eefa;--allowance-fill:#f3ede1;--cut:#3a2f1e;--angle:#8a5a00;--overlay:#ffffffd9;--shadow:#0000001f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}:root[data-theme=dark]{--bg:#12161c;--panel:#1a2029;--border:#2e3744;--text:#e3e8ee;--muted:#98a4b3;--accent:#6ea8ec;--accent-soft:#1e3350;--danger:#f2837a;--bar:#0c0f14;--bar-text:#e3e8ee;--canvas:#151a21;--grid-minor:#1f2630;--grid-major:#2d3643;--piece-fill:#1f3552;--allowance-fill:#2a2a22;--cut:#e8dcc2;--angle:#e3b45f;--overlay:#151a21d9;--shadow:#00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);margin:0}button,input,select{font:inherit;color:inherit}button{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:6px;padding:5px 10px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button.danger{color:var(--danger)}input,select{border:1px solid var(--border);background:var(--panel);border-radius:6px;min-width:0;padding:5px 8px}input[aria-invalid=true]{border-color:var(--danger)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{grid-template-rows:auto auto 1fr;height:100vh;display:grid}.workspace{grid-template-columns:var(--sidebar-width,220px) 6px 1fr 300px;min-height:0;display:grid}.app-bar{background:var(--bar);color:var(--bar-text);align-items:center;gap:16px;padding:8px 16px;display:flex}.app-bar .brand{letter-spacing:.02em;font-weight:700}.app-bar button{color:var(--bar-text);background:0 0;border-color:#0000}.app-bar button:hover:not(:disabled){border-color:#6b7a8c}.app-bar .project-name{color:var(--bar-text);opacity:.8}.file-status{color:var(--bar-text);opacity:.6;font-size:12px}.file-status .unsaved{color:#f0c36b;opacity:1}.menu-label{flex:1}kbd.shortcut{font:inherit;color:var(--muted);margin-left:16px;font-size:11px}.recovery-banner{z-index:60;background:var(--panel);max-width:calc(100vw - 32px);color:var(--text);border:1px solid var(--accent);box-shadow:0 8px 28px var(--shadow);border-radius:8px;align-items:center;gap:10px;padding:10px 14px;font-size:13px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.dialog-message{margin:0 0 14px;line-height:1.4}.app-bar-right{align-items:center;gap:12px;margin-left:auto;display:flex}.account-slot{min-width:32px;min-height:28px}.app-bar .theme-toggle{border-color:#3a4757;border-radius:999px;padding:3px 12px}.workspace-bar{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:6px 12px;display:flex}.workspace-bar .divider{background:var(--border);width:1px;height:22px}.menu{position:relative}.menu-list{z-index:20;background:var(--panel);min-width:190px;max-height:calc(100vh - 110px);color:var(--text);border:1px solid var(--border);box-shadow:0 6px 20px var(--shadow);border-radius:8px;flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:0;overflow-y:auto}.menu-list button,.app-bar .menu-list button{color:var(--text);text-align:left;border:none;padding:7px 10px}.menu-list button:hover:not(:disabled){background:var(--accent-soft)}.menu-list button{align-items:center;gap:8px;display:flex}.menu-group{border-left:2px solid var(--border);flex-direction:column;margin:2px 0 2px 14px;padding-left:12px;display:flex}.menu-chevron{text-align:center;width:22px;color:var(--muted)}.shape-icon{fill:var(--piece-fill);stroke:var(--accent);stroke-width:1.5px;vertical-align:middle;flex:none}button.active{background:var(--accent-soft);border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:var(--panel)}.dialog-backdrop{z-index:50;background:#00000059;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{background:var(--panel);width:min(360px,100vw - 32px);max-height:calc(100vh - 32px);color:var(--text);border:1px solid var(--border);box-shadow:0 12px 40px var(--shadow);border-radius:10px;padding:16px;overflow-y:auto}.dialog h2{text-transform:none;letter-spacing:0;color:var(--text);align-items:center;gap:8px;margin-bottom:12px;font-size:15px;display:flex}.sidebar,.properties{background:var(--panel);padding:12px;overflow-y:auto}.properties{border-left:1px solid var(--border)}.sidebar section,.properties section{margin-bottom:20px}h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px;font-size:12px}.hint{color:var(--muted)}.section-header{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.section-header h2{margin:0}button.small{padding:2px 8px;font-size:12px}.drop-root{border-radius:6px;min-height:28px;margin-bottom:8px}.tree{margin:0;padding:0;list-style:none}.tree .tree{border-left:1px solid var(--border);margin-left:9px;padding-left:14px}.tree li{margin-bottom:3px}.folder-row{border-radius:6px;align-items:center;gap:4px;padding:1px 2px;display:flex}.drag-over{outline:2px dashed var(--accent);outline-offset:1px;background:var(--accent-soft)}.chevron{width:18px;color:var(--muted);background:0 0;border:none;padding:0 2px}.folder-name{cursor:default;-webkit-user-select:none;user-select:none;text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.folder-rename{flex:1;padding:2px 6px}.folder-delete{visibility:hidden}.folder-row:hover .folder-delete,.folder-delete:focus{visibility:visible}button.piece-item{text-align:left;width:100%}button.piece-item.active{background:var(--accent-soft);border-color:var(--accent)}.material-row{align-items:center;gap:4px;display:flex}.material-row .field{flex:1;margin:0}.material-row input{width:100%}button.icon{padding:2px 8px}.field{flex-direction:column;gap:3px;margin-bottom:10px;display:flex}.field label{color:var(--muted);font-size:12px}.field-input{align-items:center;gap:6px;display:flex}.field-input input{flex:1}.unit{color:var(--muted);font-size:12px}.field-error{color:var(--danger);margin:0;font-size:12px}.button-row{gap:8px;margin-bottom:10px;display:flex}.hint.small{margin:-4px 0 10px;font-size:12px}button.link{color:var(--accent);background:0 0;border:none;margin:-4px 0 10px;padding:0;font-size:12px;text-decoration:underline}button.link.back{margin:0 0 10px;font-size:13px;text-decoration:none;display:block}.app-bar .project-name-button{color:var(--bar-text);opacity:.85}.app-bar .project-name-button:hover{opacity:1}.references{border-top:1px solid var(--border);padding-top:12px}.reference-card{border:1px solid var(--border);border-radius:8px;margin-bottom:10px;padding:8px}.reference-card header{justify-content:space-between;align-items:center;display:flex}.reference-card header button.link{margin:0;font-size:13px;font-weight:600}.reference-outline{fill:var(--piece-fill);stroke:var(--accent);stroke-width:1.25px;stroke-dasharray:5 3}.reference-number{fill:var(--text);paint-order:stroke;stroke:var(--panel);stroke-width:3px;font-size:11px;font-weight:700}.reference-lengths{margin:4px 0 0;padding:0;font-size:12px;list-style:none}.reference-lengths li{border-top:1px solid var(--border);font-variant-numeric:tabular-nums;justify-content:space-between;padding:2px 0;display:flex}.reference-lengths li.total{font-weight:600}.help-overlay{z-index:40;background:#0000004d;justify-content:center;align-items:flex-start;padding:16px;display:flex;position:absolute;inset:0;overflow:hidden auto}.help-content{background:var(--panel);width:min(860px,100%);color:var(--text);border:1px solid var(--border);box-shadow:0 12px 40px var(--shadow);border-radius:10px;padding:16px 18px;font-size:13px}.help-content header{justify-content:space-between;align-items:center;display:flex}.help-content h2{text-transform:none;letter-spacing:0;color:var(--text);margin:0;font-size:16px}.help-columns{grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:8px 20px;display:grid}.help-content h3{margin:12px 0 4px;font-size:13px}.help-content ul{margin:0;padding-left:18px}.help-content li{margin-bottom:4px}.help-content td{vertical-align:top;padding:2px 8px 2px 0}.help-content td:first-child{white-space:nowrap;font-weight:600}label.checkbox{align-items:center;gap:6px;margin-bottom:10px;display:flex}input[type=range]{accent-color:var(--accent);border:none;padding:0}details.advanced{border-top:1px solid var(--border);margin-top:4px;padding-top:8px}details.advanced summary{cursor:pointer;color:var(--muted);margin-bottom:8px;font-size:12px}.edit-error{border:1px solid var(--danger);color:var(--danger);border-radius:6px;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:12px;padding:8px 10px;font-size:13px;display:flex}fieldset.cuts{border:1px solid var(--border);border-radius:6px;margin:0 0 12px}fieldset.cuts legend{color:var(--muted);font-size:12px}.cuts table{border-collapse:collapse;width:100%}.cuts th{color:var(--muted);text-align:left;font-size:11px;font-weight:500}.cuts td{padding:3px 2px}.cuts input[type=number]{width:56px}.canvas-area{background:var(--canvas);justify-content:center;align-items:center;min-width:0;min-height:0;display:flex;position:relative}.canvas-svg{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;position:absolute;inset:0}.canvas-svg:active{cursor:grabbing}.grid-minor{stroke:var(--grid-minor);stroke-width:1px;fill:none}.grid-major{stroke:var(--grid-major);stroke-width:1px;fill:none}.piece-fill{fill:var(--piece-fill);fill-opacity:.55;stroke:none}.allowance-band{fill:var(--allowance-fill);fill-opacity:.5;stroke:none}.cut-line{fill:none;stroke:var(--cut);stroke-opacity:.45;stroke-width:1.25px;stroke-linejoin:miter;pointer-events:none}.fold-line{fill:none;stroke:var(--accent);stroke-width:2px;stroke-dasharray:10 3 2 3;pointer-events:none}.fold-label{letter-spacing:.15em;fill:var(--accent);pointer-events:none;font-size:11px;font-weight:700}.seam-line{fill:none;stroke:var(--accent);stroke-width:1.75px;stroke-dasharray:7 4;stroke-linejoin:round}.vertex{fill:var(--panel);stroke:var(--accent);stroke-width:1.5px;cursor:pointer}.vertex:hover{stroke-width:3px}.vertex.selected{fill:var(--accent)}.vertex.blocked{fill:var(--danger);stroke:var(--danger)}.edge-hit{fill:none;stroke:#0000;stroke-width:14px;stroke-linecap:round;pointer-events:stroke;cursor:pointer}.edge-hit:hover{stroke:var(--accent);stroke-opacity:.15}.edge-selected,.edge-blocked{fill:none;stroke-width:4px;stroke-linecap:round;pointer-events:none}.edge-selected{stroke:var(--accent)}.edge-blocked{stroke:var(--danger)}.edge-label.selected,.angle-label.selected{fill:var(--accent);font-weight:700}.angle-label.blocked{fill:var(--danger);font-weight:700}.edge-label,.angle-label{paint-order:stroke;stroke:var(--canvas);stroke-width:4px;stroke-linejoin:round;cursor:pointer;font-size:12px}.edge-label{fill:var(--text)}.angle-label{fill:var(--angle);font-size:11px}.piece-label,.piece-cuts,.edge-name{fill:var(--text);pointer-events:none;font-family:Helvetica,Arial,sans-serif}.piece-label,.piece-cuts{fill-opacity:.75}.edge-name{fill-opacity:.85}.draw-line{stroke:var(--accent);stroke-width:2px}.draw-preview{stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:5 4;opacity:.8}.draw-point,.draw-cursor{fill:var(--accent)}.draw-first{fill:var(--panel);stroke:var(--accent);stroke-width:2px}.draw-first.closing{fill:var(--accent);stroke-width:4px}.draw-banner{background:var(--overlay);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:8px 10px;font-size:12px;position:absolute;top:10px;left:10px;right:80px}.draw-banner .field-error{margin-top:4px}.canvas-menu{z-index:30;position:relative}.canvas-menu>button{padding:6px 10px;font-size:16px;line-height:1}.menu-list.menu-right{min-width:230px;left:auto;right:0}.menu-separator{background:var(--border);height:1px;margin:4px 0}.menu-inline{align-items:center;gap:6px;padding:4px 10px;display:flex}.menu-inline label{white-space:nowrap;font-size:13px}.menu-inline input{width:56px}.menu-note{margin:0 10px 4px;font-size:11px}.check{width:16px;color:var(--accent);display:inline-block}.canvas-tools{gap:6px;display:flex;position:absolute;top:10px;right:10px}.scale-bar{background:var(--overlay);color:var(--muted);pointer-events:none;border-radius:4px;flex-direction:column;align-items:flex-end;gap:2px;padding:4px 6px;font-size:11px;display:flex;position:absolute;bottom:12px;right:14px}.scale-bar-line{border:2px solid var(--text);border-top:none;height:6px}.print-pieces label{padding:2px 0;display:block}.print-root{display:none}@page{size:letter portrait;margin:0}@media print{html,body{background:#fff!important;height:auto!important;margin:0!important;padding:0!important;overflow:visible!important}body>:not(.print-root){display:none!important}.print-root{display:block}.print-sheet{break-after:page;display:block}.print-sheet:last-child{break-after:auto}}.measurement-item,.material-item{text-align:left;justify-content:space-between;gap:8px;width:100%;display:flex}.measurement-item.active,.material-item.active{border-color:var(--accent)}.measurement-value{color:var(--muted);white-space:nowrap}.formula-input{flex:1;display:flex;position:relative}.formula-input input{flex:1;min-width:0}.formula-suggestions{z-index:20;background:var(--panel);border:1px solid var(--border);border-radius:6px;margin:2px 0 0;padding:4px 0;list-style:none;position:absolute;top:100%;left:0;right:0;box-shadow:0 4px 12px #00000026}.formula-suggestions li{cursor:pointer;padding:4px 10px}.formula-suggestions li[aria-selected=true]{background:var(--accent);color:var(--accent-text,white)}.field.tied input{border-color:var(--accent)}.tie-value{margin-top:2px}.tie-menu .menu-list{min-width:200px}.menu-detail{color:var(--muted)}.uses{margin:4px 0 12px;padding-left:18px}.subheading{margin:14px 0 4px;font-size:.85rem}.sidebar{padding:0}.sidebar .folder-section{border-bottom:1px solid var(--border);margin:0}.sidebar .section-header{background:var(--bg);border-bottom:1px solid var(--border);z-index:1;margin:0;padding:6px 10px 6px 4px;position:sticky;top:0}.sidebar .folder-section.collapsed .section-header{border-bottom:none}.sidebar .section-header h2{flex:1;margin:0}.section-toggle{width:100%;font:inherit;color:var(--text);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:4px 6px;display:flex}.section-toggle:hover{color:var(--accent)}.section-toggle .chevron{width:12px;color:var(--muted)}.sidebar .section-body{padding:10px 12px 14px}.sidebar .section-header button.small{white-space:nowrap;flex-shrink:0}.sidebar .section-header h2{min-width:0}.measurement-item.active,.material-item.active{background:var(--accent-soft)}.add-piece-menu{display:block}button.add-item{text-align:center;width:100%;color:var(--accent);border:1px dashed var(--accent);background:0 0;margin-bottom:10px;font-weight:600;display:block}button.add-item:hover{background:var(--accent-soft)}.sidebar-resizer{cursor:col-resize;background:var(--border);border-left:2px solid var(--panel);border-right:2px solid var(--canvas);touch-action:none}.sidebar-resizer:hover,.sidebar-resizer:focus-visible{background:var(--accent);outline:none}.sidebar{border-right:none}button.danger-icon:not(:disabled):hover{color:var(--danger);border-color:var(--danger)}.material-item{justify-content:flex-start}.material-has-notes{color:var(--muted)}textarea{box-sizing:border-box;width:100%;font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);resize:vertical;border-radius:6px;padding:6px 8px}.cutout-hole{fill:#0000;stroke:none;cursor:move}.hole-line{fill:none;stroke:var(--cut);stroke-width:1.75px;pointer-events:none}.hole-line.cutout-selected{stroke-width:3px}.anchor-row{border-left:2px solid var(--border);margin-bottom:6px;padding-left:8px}.anchor-line{stroke:var(--accent);stroke-width:1.25px;stroke-dasharray:3 3;pointer-events:none}.anchor-label{fill:var(--accent);paint-order:stroke;stroke:var(--canvas);stroke-width:3px;pointer-events:none;font-size:11px}.edge-number circle{fill:var(--accent);stroke:var(--canvas);stroke-width:2px}.edge-number text{fill:var(--canvas);pointer-events:none;font-size:12px;font-weight:700}.edge-number{pointer-events:none}.cutout-name{fill:var(--text);paint-order:stroke;stroke:var(--canvas);stroke-width:3px;pointer-events:none;font-size:11px}.cutout.mark .cutout-hole{fill:#0000}.mark-line{fill:none;stroke:var(--accent);stroke-width:1.25px;pointer-events:none}.mark-line.cutout-selected{stroke-width:2.5px}.notch{stroke:var(--cut);stroke-width:2px;cursor:pointer}.grainline-line{fill:none;stroke:var(--text);stroke-width:1.5px;pointer-events:none}.grainline.selected .grainline-line{stroke:var(--accent);stroke-width:2.5px}.grainline.preview .grainline-line{stroke-dasharray:4 3}.grainline-hit{stroke:#0000;stroke-width:12px;cursor:move}.grainline-end{fill:var(--canvas);stroke:var(--accent);stroke-width:2px;cursor:crosshair}.dialog.wide{width:min(720px,100vw - 32px)}.print-preview{gap:10px;margin-bottom:8px;padding:4px 2px 8px;display:flex;overflow-x:auto}.preview-page{border:1px solid var(--border);cursor:zoom-in;color:var(--text);background:0 0;border-radius:4px;flex-direction:column;flex:none;align-items:center;gap:4px;padding:4px;font-size:11px;display:flex}.preview-page .preview-sheet{width:auto;height:140px;box-shadow:0 1px 3px #00000040}.preview-large{flex-direction:column;align-items:center;gap:6px;margin-bottom:8px;display:flex}.preview-large>div{justify-content:center;width:100%;display:flex}.preview-large .preview-sheet{cursor:zoom-out;width:auto;max-width:100%;height:min(60vh,560px);box-shadow:0 1px 4px #0000004d}.properties .panel-section{border-bottom:1px solid var(--border);margin:0 -12px}.properties .panel-section:first-of-type{border-top:1px solid var(--border)}.properties .panel-section+:not(.panel-section){margin-top:16px}.properties .panel-section .section-header{background:var(--bg);border-bottom:1px solid var(--border);margin:0;padding:6px 10px 6px 4px}.properties .panel-section.collapsed .section-header{border-bottom:none}.properties .panel-section .section-header h3{flex:1;min-width:0;margin:0;font-size:12px}.properties .panel-section .section-body{padding:10px 12px 14px}.properties .panel-section .section-body>:last-child{margin-bottom:0}.item-row{align-items:stretch;gap:4px;display:flex}.item-row .piece-item{flex:1;min-width:0}.sign-in-google{width:100%;padding:8px;font-weight:600;display:block}.or-divider{text-align:center;color:var(--muted);margin:10px 0;font-size:12px}.my-projects{max-height:55vh;margin:0 0 12px;padding:0;list-style:none;overflow-y:auto}.my-projects li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:8px 4px;display:flex}.my-projects li.open{background:var(--accent-soft)}.my-projects .my-project-name{flex-direction:column;min-width:0;display:flex}.my-projects .button-row{flex-shrink:0;margin:0}
