:root{--ink:#17363f;--muted:#6b7f87;--line:#dbe5e8;--brand:#087f76;--paper:#f4f7f7;--nav:calc(64px + env(safe-area-inset-bottom))}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--paper);font:14px/1.35 system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink)}button,input,select,a{font:inherit}button,a.button{min-height:44px;border:1px solid var(--line);border-radius:11px;padding:10px 14px;color:var(--ink);background:#fff;cursor:pointer;font-weight:650;touch-action:manipulation}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible{outline:3px solid #f9b654;outline-offset:2px}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}.icon-sprite{position:absolute;width:0;height:0;overflow:hidden}.hidden{display:none!important}.workshop{height:100dvh;display:flex;flex-direction:column;padding-bottom:var(--nav);max-width:900px;margin:auto;background:white}.topbar{display:flex;align-items:center;gap:9px;padding:9px 12px;border-bottom:1px solid var(--line);flex:none;background:#fff;z-index:5}.brand{font-size:18px;font-weight:900;letter-spacing:.02em;white-space:nowrap;color:var(--ink);text-decoration:none}.brand span{color:var(--brand);margin-left:4px}.project-picker{flex:1;min-width:0;display:grid;gap:2px}.project-picker>span{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-height:15px}.project-picker select{width:100%;max-width:100%;font-weight:750;font-size:15px;border:0;padding:2px 18px 2px 0;color:var(--ink);background:transparent;outline:none}.icon-button{width:44px;min-width:44px;padding:10px;display:inline-flex;align-items:center;justify-content:center}.connection{padding:6px 13px;background:#e9f6f2;color:#176f61;font-size:12px;flex:none;min-height:27px}.connection.error{background:#fff0ed;color:#a83d37}.connection:empty{display:none}.primary,a.primary{background:var(--brand);color:#fff;border-color:var(--brand)}.camera-pane{position:relative;height:clamp(140px,24dvh,210px);flex:none;overflow:hidden;background:#0c222a;border-bottom:3px solid #8bd5c0}.camera-pane video{display:block;width:100%;height:100%;object-fit:cover}.camera-target{position:absolute;inset:15% 26%;border:2px solid #b0eddb;border-radius:14px;box-shadow:0 0 0 180px #071e2433;pointer-events:none}.camera-start{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:9px;white-space:nowrap;background:#e4fff3;color:#164c3e;border:0}.camera-stop{position:absolute;left:9px;top:9px;min-height:36px;padding:7px 12px;background:#092b35bd;color:#fff;border-color:#84b6b6}.sound-toggle{position:absolute;right:8px;top:7px;background:#092b35bd;color:#fff;border-color:#84b6b6}.sound-toggle[aria-pressed=false]{opacity:.55}.camera-hint{position:absolute;left:0;right:0;bottom:9px;text-align:center;color:#fff;font-size:11px;pointer-events:none}.drawing-pane{position:relative;flex:1;min-height:0;overflow:hidden;background:#edf2f7}.model-viewer{position:absolute;inset:0}.model-placeholder{position:absolute;inset:0;display:grid;place-content:center;color:var(--muted)}.model-tools{position:absolute;top:9px;left:9px;right:9px;display:flex;gap:6px;z-index:4;pointer-events:none}.model-tools>button{pointer-events:auto;box-shadow:0 3px 12px #17363f12;background:#fffffff2;border-color:#d0dde2}.tool-button{display:flex;align-items:center;justify-content:center;gap:5px;padding:8px 10px;font-size:12px}.tool-button svg{width:19px;height:19px}.tool-button[aria-pressed=true]{background:#153b47;color:#fff;border-color:#153b47}.tool-button b{font-size:10px;border-radius:8px;background:#daebe7;padding:1px 4px;color:#165246}.part-card{position:absolute;bottom:58px;left:10px;right:10px;z-index:4;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:9px 10px;background:#ffffffed;border:1px solid #d3dfe4;border-radius:12px;box-shadow:0 3px 18px #17363f0d}.part-card strong{font-size:21px;color:#b35c06}.part-card span{font-size:12px;font-weight:650;overflow:hidden;text-overflow:ellipsis;max-height:35px}.part-card button{min-height:36px;font-size:11px;padding:7px 9px}.opacity-control{position:absolute;bottom:10px;left:10px;right:10px;padding:8px 10px;background:#ffffffed;border:1px solid #d3dfe4;border-radius:10px;z-index:4;display:flex;align-items:center;gap:10px}.opacity-control label{display:flex;gap:5px;white-space:nowrap;font-size:10px}.opacity-control input{width:100%;accent-color:var(--brand);margin:0}.bottom-nav{position:fixed;bottom:0;left:0;right:0;max-width:900px;margin:auto;z-index:20;display:flex;align-items:stretch;height:var(--nav);padding:5px 10px calc(5px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--line);box-shadow:0 -2px 15px #17363f08}.bottom-nav button{flex:1;border:0;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:5px;background:none;color:#71828b;font-size:11px}.bottom-nav button.active{background:#e5f4ef;color:#086c60}.bottom-nav svg{width:23px;height:23px}.count-pane{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:#f7f9fa}.count-summary{display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:12px;background:white}.count-summary>div{border:1px solid var(--line);background:#f6faf9;padding:10px 13px;border-radius:12px;display:flex;align-items:center;justify-content:space-between;gap:5px}.count-summary>div span{font-size:12px;color:var(--muted)}.count-summary strong{font-size:25px;line-height:1;color:#087f76}.count-summary>div:nth-child(2) strong{color:#b06b13}.count-summary>button{grid-column:1/-1;display:flex;gap:8px;align-items:center;justify-content:center;min-height:47px}.count-summary>button.stopping,.count-summary>button.active{background:#a63942;border-color:#a63942}.queue-state{display:flex;gap:8px;align-items:center;justify-content:space-between;background:#fff3da;padding:7px 13px;font-size:12px;flex:none}.queue-state button{min-height:32px;padding:5px 9px}.list-tools{padding:9px 12px 4px;background:#fff}.list-tools>input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#f5f8f8;color:var(--ink);font-size:14px}.filters{display:flex;gap:5px;margin-top:8px}.filters button{min-height:35px;padding:6px 11px;font-size:12px;border:0;color:var(--muted);background:#f3f6f6}.filters button.active{color:#0c7163;background:#e4f3ed}.selection-tools{display:flex;align-items:center;gap:7px;justify-content:space-between;padding:9px 12px;background:#fff;border-bottom:1px solid var(--line)}input[type=checkbox]{accent-color:var(--brand);width:21px;height:21px;margin:0;flex:none}.selection-tools label{display:flex;align-items:center;gap:8px;font-size:12px}.selection-tools span{font-size:11px;padding:2px 5px;border-radius:7px;background:#e4efed}.selection-tools button{min-height:38px;padding:7px 10px;font-size:12px}.part-list{overflow:auto;overscroll-behavior:contain;flex:1;padding:0 12px 14px}.part-row{display:flex;align-items:center;gap:10px;margin:7px 0;padding:11px 10px;background:#fff;border:1px solid #e0e8eb;border-radius:11px}.part-row.selected{border-color:#9bcfc0;background:#f0f9f5}.part-row .part-copy{flex:1;min-width:0}.part-copy strong{font-size:14px}.part-copy p{margin:3px 0 0;font-size:12px;line-height:1.35;overflow-wrap:anywhere}.part-row .state-dot{width:7px;height:7px;border-radius:50%;background:#d5a247;flex:none}.part-row.received .state-dot{background:#209f74}.part-row button{min-height:34px;padding:6px 8px;font-size:11px}.empty{padding:40px 15px;text-align:center;color:var(--muted);font-size:13px}.toast{position:fixed;bottom:calc(var(--nav) + 8px);left:50%;transform:translateX(-50%);max-width:calc(100% - 28px);padding:11px 16px;border-radius:12px;background:#163943;color:white;font-size:12px;z-index:40;box-shadow:0 5px 24px #17363f26}.entry-overlay{position:fixed;inset:0;display:grid;place-items:center;background:#edf4f3;z-index:100;padding:22px}.entry-overlay>div{width:min(390px,100%);padding:28px;border-radius:18px;background:white;border:1px solid var(--line)}.entry-overlay h1{font-size:24px;margin:25px 0 10px}.entry-overlay p{font-size:14px;color:var(--muted);line-height:1.6}.entry-overlay a{display:inline-flex;align-items:center;text-decoration:none;margin-right:6px}.cnc-v-stage .cnc-v-tools,.cnc-v-stage .cnc-v-note{display:none!important}
@media(min-width:700px){.camera-pane{height:210px}.model-tools{max-width:450px}.topbar{padding:10px 18px}.project-picker select{font-size:17px}.part-list{padding:0 18px 18px}.part-card,.opacity-control{max-width:600px;left:50%;right:auto;width:calc(100% - 24px);transform:translateX(-50%)}.count-summary{grid-template-columns:1fr 1fr 2fr;align-items:stretch}.count-summary>button{grid-column:auto}.part-row{padding:13px}.list-tools,.selection-tools{padding-left:18px;padding-right:18px}}
@media(prefers-reduced-motion:no-preference){button,a{transition:background .12s,border-color .12s}}
.manual-tag{display:inline-block;font-size:10px;margin-top:5px;padding:2px 6px;border-radius:6px;background:#fff1da;color:#8b5d18}.part-menu{position:fixed;inset:0;background:#15313f66;z-index:70;display:flex;align-items:flex-end;justify-content:center;padding:12px 12px max(12px,env(safe-area-inset-bottom))}.part-menu>div{background:white;border-radius:18px;width:min(480px,100%);padding:16px;box-shadow:0 10px 50px #15313f33}.menu-heading{display:flex;gap:10px;align-items:center;margin-bottom:14px}.menu-heading strong{flex:1;font-size:14px}.menu-heading button{font-size:24px;padding:0;min-width:42px}.part-menu #partMenuActions{display:grid;gap:9px}.part-menu #partMenuActions button{min-height:48px;text-align:left}.bottom-nav button.counting span:after{content:'';display:inline-block;width:6px;height:6px;margin-left:4px;border-radius:50%;background:#da4b54}
.part-card{row-gap:5px}.part-card #partName{overflow-wrap:anywhere}.part-dimensions{grid-column:1/-1;display:grid;gap:3px;margin:2px 0 0;font-size:12px;line-height:1.35}.part-dimensions>div{display:grid;grid-template-columns:76px minmax(0,1fr);gap:5px}.part-dimensions dt{color:var(--muted);font-weight:500}.part-dimensions dd{margin:0;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-weight:650}.part-dimension-note{grid-column:1/-1;margin:0;color:var(--muted);font-size:10px;line-height:1.35}
.camera-torch{position:absolute;left:76px;top:9px;min-height:36px;padding:7px 11px;background:#092b35bd;color:#fff;border-color:#84b6b6}.camera-torch[aria-pressed=true]{background:#e6f8b6;color:#244021;border-color:#b8d984}
