.user-line[data-v-0fffdb94]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.signout[data-v-0fffdb94]{margin:0 4px 4px;font-size:12px;padding:5px 10px}:root{--bg: #14171c;--bg-panel: #1b1f26;--bg-elev: #232832;--bg-input: #11141a;--border: #2d333d;--border-strong: #3a414d;--text: #d6dbe2;--text-dim: #8b94a0;--text-faint: #5d646e;--accent: #2f6fd0;--accent-hover: #3d82e8;--ok: #1fb45a;--warn: #e0a32e;--err: #e0533a;--review: #c77dff;--processing: #4aa8ff;--font: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono: "Cascadia Code", "Consolas", "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;-webkit-font-smoothing:antialiased}a{color:var(--accent-hover);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{font-weight:600;margin:0 0 .6em}h1{font-size:20px}h2{font-size:16px}h3{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim)}button{font-family:inherit;font-size:13px;color:var(--text);background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:5px;padding:6px 12px;cursor:pointer;transition:background .12s,border-color .12s}button:hover:not(:disabled){background:#2b313c;border-color:#49515e}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}button.danger{border-color:#5a2f2a;color:#e88}button.danger:hover:not(:disabled){background:#3a201d}button.active{background:var(--accent);border-color:var(--accent);color:#fff}input,select,textarea{font-family:inherit;font-size:13px;color:var(--text);background:var(--bg-input);border:1px solid var(--border-strong);border-radius:5px;padding:6px 8px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}input.bad{border-color:var(--err)}label{color:var(--text-dim);font-size:12px}.app-shell{display:flex;height:100%}.nav{width:188px;flex:0 0 188px;background:var(--bg-panel);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:14px 10px;gap:4px}.nav .brand{font-weight:700;font-size:15px;letter-spacing:.02em;padding:6px 10px 14px;color:#fff}.nav .brand small{display:block;font-weight:400;font-size:11px;color:var(--text-faint);letter-spacing:0}.nav-link{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:6px;color:var(--text-dim);font-weight:500;cursor:pointer}.nav-link:hover{background:var(--bg-elev);color:var(--text);text-decoration:none}.nav-link.router-link-active{background:var(--accent);color:#fff}.nav-link .ico{width:18px;text-align:center;font-size:15px}.nav-spacer{flex:1}.ws-indicator{display:flex;align-items:center;gap:7px;padding:8px 11px;font-size:12px;color:var(--text-faint)}.ws-dot{width:8px;height:8px;border-radius:50%;background:var(--err)}.ws-dot.on{background:var(--ok)}.main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.view{flex:1;overflow:auto;padding:22px 26px}.view-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:16px}.view-header .actions{display:flex;gap:8px;align-items:center}.panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;padding:16px}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;border:1px solid transparent;white-space:nowrap}.badge.queued{color:var(--text-dim);background:#20242c;border-color:var(--border-strong)}.badge.processing{color:var(--processing);background:#16283c;border-color:#224869}.badge.generated{color:var(--ok);background:#15301f;border-color:#1f5234}.badge.needs_review{color:var(--review);background:#2a1d38;border-color:#4a3168}.badge.edited{color:#6fb6ff;background:#182838;border-color:#2a4a6a}.badge.approved{color:#fff;background:#1d7a45;border-color:#1fb45a}.badge.error{color:#ff8a72;background:#3a1c16;border-color:#6a2f25}.badge.done{color:var(--ok);background:#15301f;border-color:#1f5234}.badge.running{color:var(--processing);background:#16283c;border-color:#224869}.badge.two-sided{color:#17becf;background:#12282c;border-color:#1f4a52}.badge.side-main{color:var(--text-dim);background:#20242c;border-color:var(--border-strong)}.badge.side-flip{color:var(--warn);background:#33270f;border-color:#5a4620}.part-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}.part-cell{background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;cursor:pointer;transition:border-color .12s,transform .08s;position:relative}.part-cell:hover{border-color:var(--accent)}.part-cell .thumb{aspect-ratio:1;background:#0f1217;display:flex;align-items:center;justify-content:center;position:relative}.part-cell .thumb img{width:100%;height:100%;object-fit:contain;display:block}.part-cell .thumb .placeholder{color:var(--text-faint);font-size:12px}.part-cell .check{position:absolute;top:7px;right:7px;width:22px;height:22px;border-radius:50%;background:var(--ok);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;box-shadow:0 1px 4px #00000080}.part-cell .meta{padding:8px 10px;display:flex;flex-direction:column;gap:5px;border-top:1px solid var(--border)}.part-cell .meta .pn{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.part-cell .meta .sub{font-size:11px;color:var(--text-faint)}.part-cell .meta .row{display:flex;align-items:center;justify-content:space-between;gap:6px}.progress-bar{height:3px;background:var(--bg-input);position:absolute;bottom:0;left:0;right:0}.progress-bar>span{display:block;height:100%;background:var(--processing);transition:width .25s}table.data{width:100%;border-collapse:collapse}table.data th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim);padding:8px 10px;border-bottom:1px solid var(--border)}table.data td{padding:9px 10px;border-bottom:1px solid var(--border)}table.data tr.clickable{cursor:pointer}table.data tr.clickable:hover td{background:var(--bg-elev)}.form-grid{display:grid;grid-template-columns:max-content 1fr;gap:11px 14px;align-items:center}.form-grid label{justify-self:end}.field{display:flex;flex-direction:column;gap:4px}.empty{color:var(--text-faint);padding:28px;text-align:center}.error-msg{color:#ff8a72;background:#2a1410;border:1px solid #5a2820;border-radius:6px;padding:10px 12px;margin-bottom:14px;font-size:13px}.mono{font-family:var(--mono);font-size:12px}.spinner{width:16px;height:16px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.muted{color:var(--text-dim)}.row-gap{display:flex;gap:8px;align-items:center}.col-gap{display:flex;flex-direction:column;gap:10px}.editor-view{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.editor-topbar{display:flex;align-items:center;gap:14px;padding:10px 14px;background:var(--bg-panel);border-bottom:1px solid var(--border);flex-wrap:wrap}.editor-topbar .ed-group{display:flex;gap:6px;align-items:center}.ed-toast{margin:8px 16px;padding:8px 12px;background:#15301f;border:1px solid #1f5234;border-radius:6px;color:var(--ok);font-size:13px}.editor-body{flex:1;display:flex;min-height:0}.editor-side{width:240px;flex:0 0 240px;background:var(--bg-panel);border-right:1px solid var(--border);padding:14px;overflow:auto}.layer-list{display:flex;flex-direction:column;gap:2px}.layer-row{display:flex;align-items:center;gap:8px;padding:5px 7px;border-radius:5px;cursor:pointer}.layer-row:hover{background:var(--bg-elev)}.layer-row.active{background:var(--bg-elev);outline:1px solid var(--accent)}.layer-row .vis{padding:0;width:20px;height:20px;font-size:11px;line-height:1;background:transparent;border:none}.layer-row .vis:hover:not(:disabled){background:transparent;border:none}.layer-row .swatch{width:13px;height:13px;border-radius:3px;border:1px solid rgba(255,255,255,.2);flex:0 0 13px}.layer-row .lname{flex:1;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-row .lcount{font-size:11px}.editor-canvas{flex:1;min-width:0;position:relative;display:flex;flex-direction:column}.canvas-host{flex:1;min-height:0;position:relative;background:#0f1217;overflow:hidden}.canvas-host canvas{display:block;width:100%;height:100%}.ed-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;align-items:center;justify-content:center;gap:8px;background:#0f1217bf;color:var(--text-dim)}.editor-statusbar{display:flex;align-items:center;gap:14px;padding:6px 14px;background:var(--bg-panel);border-top:1px solid var(--border);font-size:12px;min-height:30px}.editor-statusbar .sb-hint{color:var(--text-dim)}.editor-statusbar .sb-snap{color:var(--warn);font-weight:600}.editor-statusbar .sb-ref{color:var(--processing)}.editor-statusbar .sb-coords{color:var(--text)}#numeric-entry{position:absolute;z-index:20;width:120px;padding:4px 6px;font-family:var(--mono);font-size:12px;background:var(--bg-input);border:1px solid var(--accent);border-radius:4px;color:var(--text)}#numeric-entry.bad{border-color:var(--err)}
