@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&family=JetBrains+Mono:wght@400;600&display=swap";:root{--vt-c-white:#fff;--vt-c-white-soft:#f8f8f8;--vt-c-white-mute:#f2f2f2;--vt-c-black:#181818;--vt-c-black-soft:#222;--vt-c-black-mute:#282828;--vt-c-indigo:#2c3e50;--vt-c-divider-light-1:#3c3c3c4a;--vt-c-divider-light-2:#3c3c3c1f;--vt-c-divider-dark-1:#545454a6;--vt-c-divider-dark-2:#5454547a;--vt-c-text-light-1:var(--vt-c-indigo);--vt-c-text-light-2:#3c3c3ca8;--vt-c-text-dark-1:var(--vt-c-white);--vt-c-text-dark-2:#ebebeba3;--color-background:var(--vt-c-white);--color-background-soft:var(--vt-c-white-soft);--color-background-mute:var(--vt-c-white-mute);--color-border:var(--vt-c-divider-light-2);--color-border-hover:var(--vt-c-divider-light-1);--color-heading:var(--vt-c-text-light-1);--color-text:var(--vt-c-text-light-1);--section-gap:160px}@media (prefers-color-scheme:dark){:root{--color-background:var(--vt-c-black);--color-background-soft:var(--vt-c-black-soft);--color-background-mute:var(--vt-c-black-mute);--color-border:var(--vt-c-divider-dark-2);--color-border-hover:var(--vt-c-divider-dark-1);--color-heading:var(--vt-c-text-dark-1);--color-text:var(--vt-c-text-dark-2)}}*,:before,:after{box-sizing:border-box;margin:0;font-weight:400}body{min-height:100vh;color:var(--color-text);background:var(--color-background);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:15px;line-height:1.6;transition:color .5s,background-color .5s}:root{--app-ink:#102840;--app-muted:#4d677e;--app-border:#cad8e4;--app-accent:#1d6ea4}body{min-height:100vh;color:var(--app-ink);background:radial-gradient(circle at 12% 8%,#ddf1ff 0%,#0000 35%),radial-gradient(circle at 88% 16%,#daf6e8 0%,#0000 28%),linear-gradient(160deg,#f3fbff,#edf3f9);margin:0;font-family:Space Grotesk,Segoe UI,sans-serif}#app{width:100%;max-width:100%;margin:0 auto;padding:1rem}a{color:inherit;text-decoration:none}@media (width>=900px){#app{padding:1.2rem}}.app-shell[data-v-ce1b0605]{gap:1rem;display:grid}.app-header[data-v-ce1b0605]{background:linear-gradient(145deg,#fff,#f4f8fb);border:1px solid #c8d6e2;border-radius:18px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.1rem;display:flex;box-shadow:0 16px 28px -30px #113a5f}.brand-block[data-v-ce1b0605]{align-items:center;gap:.8rem;display:flex}.brand-logo[data-v-ce1b0605]{object-fit:contain;width:clamp(72px,9vw,108px);height:auto}.app-kicker[data-v-ce1b0605]{letter-spacing:.08em;text-transform:uppercase;color:#4e687d;font-size:.76rem}.app-header h1[data-v-ce1b0605]{color:#12334e;margin-top:.15rem;font-size:clamp(1.2rem,2.8vw,1.7rem)}nav[data-v-ce1b0605]{align-items:center;gap:.55rem;display:inline-flex}nav a[data-v-ce1b0605]{color:#1a4e73;border:1px solid #b8cedf;border-radius:999px;padding:.36rem .7rem;font-size:.85rem}nav a.router-link-exact-active[data-v-ce1b0605]{color:#fff;background:#1d6ea4;border-color:#1d6ea4}@media (width<=700px){.app-header[data-v-ce1b0605]{align-items:flex-start}.brand-block[data-v-ce1b0605]{align-items:flex-start;width:100%}.brand-logo[data-v-ce1b0605]{width:clamp(66px,18vw,96px)}nav[data-v-ce1b0605]{flex-wrap:wrap;justify-content:flex-start;width:100%}}.panel-card[data-v-f52b1591]{background:linear-gradient(145deg,#fff,#f6f8fa);border:1px solid #c7d4e0;border-radius:16px;overflow:hidden;box-shadow:0 14px 30px -28px #1c3f5d}.panel-card__header[data-v-f52b1591]{padding:1rem 1rem 0}.panel-card__title[data-v-f52b1591]{color:#0f2a40;font-size:1rem;font-weight:700}.panel-card__subtitle[data-v-f52b1591]{color:#4b6277;margin-top:.25rem;font-size:.86rem}.panel-card__body[data-v-f52b1591]{padding:1rem}.upload-zone[data-v-21d969a8]{margin-bottom:.75rem}.file-input-hidden[data-v-21d969a8]{display:none}.drop-area[data-v-21d969a8]{text-align:center;cursor:pointer;background:#f4f8fb;border:2px dashed #a8c0d2;border-radius:12px;outline:none;padding:1.4rem 1rem;transition:border-color .15s,background .15s}.drop-area[data-v-21d969a8]:hover,.drop-area[data-v-21d969a8]:focus{background:#eaf4fb;border-color:#3a8ec7}.drop-icon[data-v-21d969a8]{margin-bottom:.4rem;font-size:1.8rem;display:block}.drop-label[data-v-21d969a8]{color:#4b6277;font-size:.88rem}.file-selected[data-v-21d969a8]{background:#f0f8ff;border:1px solid #b5cedd;border-radius:10px;align-items:center;gap:.65rem;padding:.65rem .8rem;display:flex}.file-icon[data-v-21d969a8]{flex-shrink:0;font-size:1.5rem}.file-info[data-v-21d969a8]{flex:1;min-width:0}.file-name[data-v-21d969a8]{color:#0f2a40;white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;overflow:hidden}.file-size[data-v-21d969a8]{color:#5a7a90;margin-top:.1rem;font-size:.78rem}.btn-clear[data-v-21d969a8]{cursor:pointer;color:#7a9ab0;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:.2rem .35rem;font-size:1rem;line-height:1}.btn-clear[data-v-21d969a8]:hover{color:#0f2a40;background:#ddeef7}.print-error[data-v-21d969a8]{color:#8a260f;background:#fff0ee;border:1px solid #f0b5ab;border-radius:8px;margin-bottom:.6rem;padding:.55rem .75rem;font-size:.84rem}.btn-print[data-v-21d969a8]{color:#fff;cursor:pointer;background:#1a6faf;border:none;border-radius:10px;justify-content:center;align-items:center;gap:.5rem;width:100%;margin-bottom:1rem;padding:.7rem 1rem;font-size:.95rem;font-weight:600;transition:background .15s;display:flex}.btn-print[data-v-21d969a8]:hover:not(:disabled){background:#155d96}.btn-print[data-v-21d969a8]:disabled{cursor:not-allowed;background:#9bb8cc}.spinner[data-v-21d969a8]{border:2px solid #fff6;border-top-color:#fff;border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.7s linear infinite spin-21d969a8;display:inline-block}@keyframes spin-21d969a8{to{transform:rotate(360deg)}}.jobs-section[data-v-21d969a8]{border-top:1px solid #dde8ef;padding-top:.85rem}.jobs-section__label[data-v-21d969a8]{text-transform:uppercase;letter-spacing:.05em;color:#547087;margin-bottom:.6rem;font-size:.76rem}.active-job[data-v-21d969a8]{background:#f0f8ff;border:1px solid #b2d4eb;border-radius:10px;margin-bottom:.75rem;padding:.75rem}.active-job__header[data-v-21d969a8]{align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.active-job__name[data-v-21d969a8]{color:#0f2a40;white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;overflow:hidden}.active-job__meta[data-v-21d969a8]{color:#4f697d;margin-top:.25rem;font-size:.8rem}.progress-bar-wrap[data-v-21d969a8]{background:#cfe4f0;border-radius:4px;height:7px;margin:.45rem 0 .2rem;overflow:hidden}.progress-bar-fill[data-v-21d969a8]{background:#1a6faf;border-radius:4px;min-width:2px;height:100%;transition:width .4s}.job-list[data-v-21d969a8]{gap:.4rem;list-style:none;display:grid}.job-item[data-v-21d969a8]{background:#fff;border:1px solid #d8e2ea;border-radius:9px;padding:.5rem .65rem}.job-item__row[data-v-21d969a8]{justify-content:space-between;align-items:center;gap:.4rem;display:flex}.job-item__name[data-v-21d969a8]{color:#12334e;white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:.88rem;font-weight:600;overflow:hidden}.job-item__meta[data-v-21d969a8]{color:#5a7a90;margin-top:.15rem;font-size:.78rem}.status-badge[data-v-21d969a8]{white-space:nowrap;border-radius:20px;flex-shrink:0;padding:.18rem .5rem;font-size:.72rem;font-weight:700}.status--progress[data-v-21d969a8]{color:#1058a0;background:#deeefb}.status--success[data-v-21d969a8]{color:#156935;background:#d9f2e2}.status--failed[data-v-21d969a8]{color:#8a260f;background:#ffe8e4}.status--cancelled[data-v-21d969a8]{color:#6a6248;background:#f0efe8}.empty-state[data-v-21d969a8]{color:#5f788d;font-size:.88rem}.command-panel[data-v-a2ddcc5c]{background:#fdfefe;border:1px solid #cdd7e2;border-radius:18px;align-content:start;gap:.75rem;width:100%;padding:1rem;display:grid;box-shadow:0 16px 28px -32px #264a68}.command-panel h3[data-v-a2ddcc5c]{color:#0f2f48;font-size:1.05rem;font-weight:700}.control-group[data-v-a2ddcc5c]{gap:.6rem;display:grid}.control-group__label[data-v-a2ddcc5c]{color:#1d3d5c;margin:0;font-size:.9rem;font-weight:700}.xy-pad[data-v-a2ddcc5c]{grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;display:grid}.xy-pad button[data-v-a2ddcc5c]{color:#fff;cursor:pointer;background:#15324a;border:none;border-radius:10px;justify-content:center;align-items:center;gap:.45rem;width:100%;min-width:0;min-height:46px;padding:.55rem .65rem;font-weight:600;transition:background-color .22s;display:inline-flex}.xy-pad button[data-v-a2ddcc5c]:hover{background:#214d6f}.arrow[data-v-a2ddcc5c]{border:.2rem solid;border-width:0 .2rem .2rem 0;width:.9rem;height:.9rem;display:inline-block}.arrow-up[data-v-a2ddcc5c]{transform:rotate(-45deg)}.arrow-right[data-v-a2ddcc5c]{transform:rotate(45deg)}.arrow-down[data-v-a2ddcc5c]{transform:rotate(135deg)}.arrow-left[data-v-a2ddcc5c]{transform:rotate(-135deg)}.xy-up[data-v-a2ddcc5c]{grid-column:2/3}.xy-left[data-v-a2ddcc5c]{grid-column:1/2}.xy-right[data-v-a2ddcc5c]{grid-column:3/4}.xy-down[data-v-a2ddcc5c]{grid-column:2/3}.z-buttons[data-v-a2ddcc5c]{grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem;display:grid}.z-buttons button[data-v-a2ddcc5c],.fan-toggle[data-v-a2ddcc5c]{color:#143651;cursor:pointer;background:#f1f6fa;border:1px solid #b9c9d7;border-radius:10px;width:100%;min-width:0;min-height:44px;font-weight:700}.fan-toggle[data-v-a2ddcc5c]{padding:.65rem .85rem;transition:background-color .22s,color .22s}.fan-toggle[data-v-a2ddcc5c]:hover{background:#eef4f9}.fan-status[data-v-a2ddcc5c]{color:#4f6a80;margin:0;font-size:.88rem}.position-box[data-v-a2ddcc5c]{color:#12334e;background:#f6fafc;border:1px solid #d2dce6;border-radius:12px;gap:.2rem;padding:.6rem .75rem;font-family:JetBrains Mono,monospace;display:grid}.last-command[data-v-a2ddcc5c]{color:#4f6a80;font-size:.82rem}@media (width<=980px){.z-buttons[data-v-a2ddcc5c]{grid-template-columns:1fr}.fan-toggle[data-v-a2ddcc5c]{width:100%}}.viewport-panel[data-v-af9d61f3]{background:#fdfefe;border:1px solid #cdd7e2;border-radius:18px;width:100%;padding:1rem;box-shadow:0 16px 28px -32px #264a68}.viewport-title[data-v-af9d61f3]{flex-direction:column;gap:.2rem;display:flex}.viewport-title-row[data-v-af9d61f3]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.kicker[data-v-af9d61f3]{letter-spacing:.08em;text-transform:uppercase;color:#4f6a80;font-size:.76rem}.viewport-title h2[data-v-af9d61f3]{color:#0f2f48;font-size:clamp(1.15rem,2vw,1.45rem)}.prediction-info[data-v-af9d61f3]{position:relative}.prediction-info-trigger[data-v-af9d61f3]{color:#1a4a71;cursor:pointer;background:linear-gradient(160deg,#fff,#edf3f8);border:1px solid #b9c9d8;border-radius:999px;width:1.65rem;height:1.65rem;font-size:.9rem;font-weight:800;line-height:1;transition:transform .15s,box-shadow .15s}.prediction-info-trigger[data-v-af9d61f3]:hover{transform:translateY(-1px);box-shadow:0 10px 18px -14px #1a4a71}.prediction-info-menu[data-v-af9d61f3]{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:4;background:#fffffff5;border:1px solid #d3dee9;border-radius:12px;width:min(19.5rem,75vw);padding:.65rem .75rem;position:absolute;top:calc(100% + .45rem);right:0;box-shadow:0 16px 24px -18px #0f2f48}.prediction-info-title[data-v-af9d61f3]{color:#0f2f48;font-size:.82rem;font-weight:800}.prediction-info-line[data-v-af9d61f3]{color:#35556e;margin-top:.32rem;font-size:.78rem}.viewport-canvas[data-v-af9d61f3]{background:radial-gradient(circle at 18% 20%,#edf5fb 0%,#0000 40%),radial-gradient(circle at 84% 12%,#f6efe8 0%,#0000 34%),linear-gradient(170deg,#f8fafc,#e9eef3);border:1px solid #d4dde6;border-radius:14px;width:100%;max-width:100%;min-height:clamp(320px,55vh,560px);margin-top:.75rem;position:relative;overflow:hidden}.viewport-axes-legend[data-v-af9d61f3]{z-index:3;flex-direction:column;gap:.42rem;display:flex;position:absolute;top:.85rem;left:.85rem}.viewport-axis-button[data-v-af9d61f3]{border:1px solid var(--axis-accent-border,#cbd5e1);background:linear-gradient(145deg, var(--axis-accent-soft,#94a3b829), #ffffffeb);color:#0f2f48;text-align:left;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:11px;align-items:center;gap:.5rem;min-width:14rem;padding:.42rem .58rem;font-size:.78rem;font-weight:700;transition:transform .16s,box-shadow .16s,filter .16s;display:inline-flex;box-shadow:0 10px 18px -16px #0f2f48}.viewport-axis-button[data-v-af9d61f3]:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 14px 22px -16px #0f2f48}.viewport-axis-button[data-v-af9d61f3]:disabled{opacity:.54;cursor:not-allowed;filter:saturate(.28)}.viewport-axis-dot[data-v-af9d61f3]{background:var(--axis-accent,#94a3b8);width:.52rem;height:.52rem;box-shadow:0 0 0 .17rem var(--axis-accent-soft,#94a3b829);border-radius:999px;flex:none}.viewport-axis-title[data-v-af9d61f3]{flex:1}.viewport-axis-temp[data-v-af9d61f3]{color:#35556e;font-size:.72rem}.viewport-canvas[data-v-af9d61f3] canvas{max-width:100%;display:block;width:100%!important}.viewport-caption[data-v-af9d61f3]{color:#5f778c;margin-top:.5rem;font-size:.82rem}.printer-badge[data-v-af9d61f3]{letter-spacing:.02em;border-radius:999px;align-items:center;margin-left:.7rem;padding:.28rem .65rem;font-size:.85rem;font-weight:700;display:inline-flex}.printer-badge.status-idle[data-v-af9d61f3]{color:#1d4d7a;background:#e8f2ff}.printer-badge.status-printing[data-v-af9d61f3]{color:#1b6a3a;background:#eafaf1}.printer-badge.status-error[data-v-af9d61f3]{color:#911f2b;background:#fde8ea}.printer-badge.status-paused[data-v-af9d61f3]{color:#7a5a13;background:#fff4db}.printer-badge.status-unknown[data-v-af9d61f3]{color:#334155;background:#f4f5f7}@media (width<=680px){.viewport-axes-legend[data-v-af9d61f3]{gap:.3rem;top:.65rem;left:.65rem}.viewport-axis-button[data-v-af9d61f3]{min-width:12.2rem;padding:.36rem .48rem;font-size:.74rem}.prediction-info-menu[data-v-af9d61f3]{width:min(19.5rem,100vw - 2rem);position:fixed;top:5rem;left:50%;right:auto;transform:translate(-50%)}}.pilot-layout[data-v-fb63b2ed]{flex-direction:column;gap:1rem;width:100%;max-width:100%;display:flex}.top-row[data-v-fb63b2ed]{grid-template-columns:minmax(0,1.65fr) minmax(280px,.85fr);gap:1rem;min-width:0;display:grid}.top-row[data-v-fb63b2ed]>*{min-width:0}@media (width<=980px){.top-row[data-v-fb63b2ed]{grid-template-columns:1fr}}
