:root{--fs-xs: .75rem;--fs-sm: .85rem;--fs-md: .95rem;--fs-base: 1rem;--fs-lg: 1.15rem;--fs-xl: 1.45rem;--fs-2xl: 2.2rem;--bg: #f4f6f8;--bg-elev: #ffffff;--bg-card: #ffffff;--line: #d7dde3;--text: #1b1f24;--muted: #5f6b76;--accent: #00ae42;--accent-ink: #04210f;--demo: #f5c518;--demo-ink: #2a2000;--warn: #d97706;--error: #dc2626;--ok: #00ae42;--radius: 16px;--tap: 46px;--tabbar-h: 60px;--shadow: 0 8px 24px rgba(15, 23, 32, .08);--accent-soft: #e8f7ee;--accent-strong: #047a30;--warn-soft: #fff7ed;--warn-ink: #92400e;--error-soft: #fef2f2;--error-line: rgba(220, 38, 38, .3);--error-ink: #9f1239;--accent-softer: #f7faf8;--chip-bg: #eef2f5;--surface-2: #e8edf1;--demo-text: #7a5300;--thumb-bg: #f4f6f8;--dot-ring: rgba(15, 23, 32, .25);color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #0b0f14;--bg-elev: #12181f;--bg-card: #151c24;--line: #2a3542;--text: #eef2f6;--muted: #9aa8b6;--accent: #00c853;--accent-ink: #04140a;--warn: #f59e0b;--error: #f04444;--ok: #00c853;--shadow: 0 8px 24px rgba(0, 0, 0, .35);--accent-soft: rgba(0, 200, 83, .16);--accent-softer: rgba(0, 200, 83, .07);--accent-strong: #5fe39a;--warn-soft: rgba(245, 158, 11, .14);--warn-ink: #fcd34d;--error-soft: rgba(240, 68, 68, .14);--error-line: rgba(240, 68, 68, .45);--error-ink: #fca5a5;--chip-bg: #1f2833;--surface-2: #0f141a;--demo-text: #fde68a;--thumb-bg: #cfd6dd;--dot-ring: rgba(238, 242, 246, .5);color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.4;-webkit-font-smoothing:antialiased}h1{font-size:var(--fs-lg);margin:0}h2{font-size:var(--fs-base);margin:0 0 .5rem}.app{display:flex;flex-direction:column;min-height:100%}.app-header{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:calc(env(safe-area-inset-top) + .7rem) 1rem .7rem;background:var(--bg-elev);border-bottom:1px solid var(--line)}.app-title{display:flex;align-items:center;gap:.6rem}.logo{width:30px;height:30px;border-radius:8px;flex:none}.app-main{flex:1;padding:.9rem;padding-bottom:calc(var(--tap) + env(safe-area-inset-bottom) + 2rem);max-width:780px;width:100%;margin:0 auto}.view{display:flex;flex-direction:column;gap:.9rem}.card{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem;box-shadow:var(--shadow)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.card-head h2{margin:0}.muted{color:var(--muted)}.note{color:var(--muted);font-size:var(--fs-sm);margin:.5rem 0 0}.badge{display:inline-flex;align-items:center;padding:.2rem .55rem;border-radius:999px;font-size:var(--fs-xs);font-weight:700;white-space:nowrap}.badge-demo{background:var(--demo);color:var(--demo-ink)}.badge-info{background:var(--accent);color:var(--accent-ink)}.badge-muted{background:var(--chip-bg);color:var(--muted)}.badge-warn{background:var(--warn);color:#fff}.badge-error{background:var(--error);color:#fff}.btn{min-height:var(--tap);padding:0 .9rem;border-radius:12px;border:1px solid var(--line);background:var(--bg-elev);color:var(--text);font-size:var(--fs-md);font-weight:600;cursor:pointer}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45}.btn-primary{background:var(--accent);color:var(--accent-ink);border-color:transparent}.btn.danger{color:var(--error)}.btn-sm{min-height:40px;padding:0 .7rem}.btn-block{width:100%;margin-top:.4rem}.toolbar{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.7rem}.field{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.7rem}.field>span{font-size:var(--fs-sm);color:var(--muted)}select,input[type=number],input[type=text]{min-height:var(--tap);background:var(--bg);border:1px solid var(--line);border-radius:10px;color:var(--text);padding:0 .7rem;font-size:var(--fs-base);width:100%}.transform-panel input:disabled{opacity:.45}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.6rem}.inline{display:flex;align-items:center;gap:.5rem}.inline input{flex:1}.plate-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin-bottom:.6rem}.plate-actions .btn{min-height:48px}.edit-empty{margin:.7rem 0 0;padding:.7rem .8rem;border:1px dashed var(--line);border-radius:12px;color:var(--muted)}.edit-panel{margin-top:.7rem;padding-top:.7rem;border-top:1px solid var(--line)}.edit-picker{margin-bottom:.5rem}.edit-status{margin:0 0 .5rem}.edit-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:.45rem}.edit-actions .btn{min-height:48px;padding:0 .4rem;font-size:var(--fs-md)}.edit-panel .transform-panel{margin-top:.7rem}.rotate-row{display:grid;grid-template-columns:auto auto minmax(4.5rem,1fr) auto auto;gap:.35rem;align-items:center}.rotate-step{min-width:48px;min-height:var(--tap);padding:0 .35rem}.size-actions{display:grid;grid-template-columns:1fr auto;gap:.5rem}.lock-toggle{display:inline-flex;align-items:center;justify-content:center;gap:.4rem}.lock-toggle-on{border-color:var(--accent);background:var(--accent-soft)}.chain-icon{flex:none}details>summary{cursor:pointer}details>summary h2{display:inline}.status-line{display:flex;align-items:center;gap:.5rem;margin-bottom:.6rem}.dot{width:12px;height:12px;border-radius:50%;background:var(--muted)}.dot-printing{background:var(--accent)}.dot-idle{background:var(--ok)}.dot-offline,.dot-not_implemented{background:var(--muted)}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:.7rem}.metric{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:.5rem;text-align:center}.metric-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:0;min-height:58px;color:var(--text);font:inherit;cursor:pointer;transition:border-color .14s ease,background-color .14s ease,box-shadow .14s ease}.metric-button:hover,.metric-button[aria-expanded=true]{border-color:var(--accent);background:var(--accent-soft)}.metric-button:focus-visible,.speed-option:focus-visible{outline:3px solid rgba(0,174,66,.28);outline-offset:2px}.metric-button:disabled{cursor:default;opacity:.62}.metric-label{display:block;color:var(--muted);font-size:var(--fs-xs)}.metric-value{font-size:var(--fs-base);font-weight:700}.metric-value small{color:var(--muted);font-weight:400}.target-editor{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.45rem .6rem;align-items:end;margin:0 0 .75rem;padding:.7rem;border:1px solid rgba(0,174,66,.45);border-radius:12px;background:var(--accent-softer)}.target-field{display:flex;flex-direction:column;gap:.25rem}.target-field>span,.target-range{color:var(--muted);font-size:var(--fs-xs)}.target-range{padding-bottom:.8rem;white-space:nowrap}.target-actions{grid-column:1 / -1;display:flex;gap:.5rem}.target-error{grid-column:1 / -1;margin:0}.control-reason{margin-top:-.25rem}.speed-control{margin:1rem 0 .75rem}.speed-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.3rem}.speed-head .metric-label{font-size:var(--fs-sm);font-weight:650}.speed-hint{color:var(--muted);font-size:var(--fs-xs)}.speed-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.speed-option{min-width:0;min-height:44px;padding:0 .35rem;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--text);font:inherit;font-size:var(--fs-sm);font-weight:650;cursor:pointer}.speed-option-current{border-color:var(--accent);background:var(--accent);color:var(--accent-ink);box-shadow:0 3px 10px #00ae4238}.speed-option:disabled{cursor:default;opacity:.48}.speed-option-current:disabled{opacity:.75}.speed-error{margin:.45rem 0 0}.progress{height:12px;background:var(--bg);border-radius:999px;overflow:hidden;border:1px solid var(--line)}.progress-bar{height:100%;background:var(--accent)}.progress-text{margin:.4rem 0 0;font-size:var(--fs-sm);color:var(--muted)}.camera-head-actions{display:flex;align-items:center;gap:.45rem}.camera-refresh{width:var(--tap);height:var(--tap);display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:12px;background:var(--bg-elev);color:var(--text);font-size:var(--fs-xl);line-height:1;cursor:pointer}.camera-refresh:active{transform:rotate(-18deg)}.camera-refresh:disabled{opacity:.45}.camera-refresh:focus-visible,.light-toggle:focus-visible{outline:3px solid rgba(0,174,66,.35);outline-offset:2px}.camera-frame{position:relative;aspect-ratio:16 / 9;background:#000;border-radius:10px;overflow:hidden;display:flex;align-items:center;justify-content:center}.camera-media{width:100%;height:100%;object-fit:contain}.camera-frame:fullscreen{aspect-ratio:auto;width:100%;height:100%;border-radius:0}.camera-frame:fullscreen,.camera-frame-pseudo-fullscreen{touch-action:none}.camera-frame:fullscreen .camera-media,.camera-frame-pseudo-fullscreen .camera-media{transform-origin:center;will-change:transform}.camera-frame-pseudo-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;aspect-ratio:auto;border-radius:0}@media (orientation: portrait){.camera-frame-pseudo-fullscreen{inset:auto;top:0;left:100vw;width:100vh;width:100dvh;height:100vw;transform:rotate(90deg);transform-origin:top left}}body.camera-fullscreen-open{overflow:hidden}.camera-frame:not(:fullscreen):not(.camera-frame-pseudo-fullscreen):has(.camera-media){cursor:zoom-in}.camera-exit-fullscreen{position:absolute;top:max(.8rem,env(safe-area-inset-top));right:max(.8rem,env(safe-area-inset-right));width:var(--tap);height:var(--tap);display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.35);border-radius:50%;background:#0000008c;color:#fff;font-size:var(--fs-xl);line-height:1;cursor:pointer}.camera-media-frozen{filter:grayscale(.7) brightness(.55)}.camera-media-hidden{visibility:hidden}.camera-caption{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:1rem;color:#fff;font-size:var(--fs-lg);font-weight:700;text-align:center;text-shadow:0 1px 3px rgba(0,0,0,.7)}.camera-caption-unavailable,.camera-caption-unreachable{background:#3a1212}.camera-caption-starting{background:#1f2937}.camera-status{margin-top:.6rem;padding:.7rem .8rem;border-radius:12px;border:1px solid var(--line);display:flex;flex-direction:column;gap:.55rem}.camera-status p{margin:0;font-weight:600}.camera-status-frozen{border-color:var(--warn);background:var(--warn-soft);color:var(--warn-ink)}.camera-status-unavailable,.camera-status-unreachable{border-color:var(--error);background:var(--error-soft);color:var(--error-ink)}.camera-status-starting{background:var(--surface-2);color:var(--text)}.camera-status-action{align-self:flex-start;min-height:var(--tap)}.camera-placeholder{text-align:center;color:var(--muted)}.camera-icon{font-size:2rem;display:block;opacity:.6}.plate-canvas{position:relative;width:100%;height:340px;border-radius:10px;overflow:hidden;background:var(--surface-2);border:1px solid var(--line);touch-action:none}.plate-canvas canvas{display:block}.canvas-fallback{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:1rem;color:var(--muted)}.model-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.model-row{display:flex;align-items:stretch;gap:.4rem;background:var(--bg);border:1px solid var(--line);border-radius:10px;overflow:hidden}.model-row-active{border-color:var(--accent)}.model-main{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;background:transparent;border:0;color:var(--text);padding:.6rem;text-align:left;cursor:pointer;min-height:var(--tap)}.model-name{font-weight:600;word-break:break-all}.model-size{color:var(--muted);font-size:var(--fs-xs)}.model-actions{display:flex}.icon-btn{width:46px;border:0;border-left:1px solid var(--line);background:var(--bg-elev);color:var(--text);font-size:var(--fs-lg);cursor:pointer}.icon-btn.danger{color:var(--error)}.status-chip{align-self:flex-start;padding:.1rem .5rem;border-radius:999px;font-size:var(--fs-xs);font-weight:700}.status-ok{background:#46d17a2e;color:var(--ok)}.status-collision{background:#ff5a5a2e;color:var(--error)}.status-out_of_bounds{background:#ffb0202e;color:var(--warn)}.banner{margin:0;padding:.7rem .9rem;border-radius:10px;font-size:var(--fs-md);border:1px solid var(--line)}.banner-info{background:#36c5ff1f;border-color:#36c5ff66}.banner-error{background:#dc262614;border-color:#dc262647;color:var(--error-ink)}.banner-warn{background:#d977061a;border-color:#d9770647}.banner-demo{background:#f5c51829;border-color:#f5c51873;color:var(--demo-text)}.job{margin-top:.7rem;padding:.7rem;border-radius:10px;background:var(--bg);border:1px solid var(--line)}.job-head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.job-chip-succeeded{background:#46d17a2e;color:var(--ok)}.job-chip-failed{background:#ff5a5a2e;color:var(--error)}.job-chip-running,.job-chip-queued{background:#36c5ff2e;color:var(--accent)}.log{margin:.5rem 0 0;padding:.5rem;background:#111827;border-radius:8px;color:#e5e7eb;font-size:var(--fs-xs);max-height:140px;overflow:auto;white-space:pre-wrap;word-break:break-all}.kv{display:grid;grid-template-columns:auto 1fr;gap:.3rem .9rem;margin:0}.kv dt{color:var(--muted)}.kv dd{margin:0;text-align:right}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:5;display:flex;background:var(--bg-elev);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.tab{flex:1;min-height:var(--tabbar-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.1rem;background:transparent;border:0;color:var(--muted);font-size:var(--fs-xs);font-weight:600;cursor:pointer}.tab-active{color:var(--accent)}.tab-icon{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tuning-card{background:var(--accent-softer);border:1px solid var(--line);border-radius:12px;padding:.75rem}.tuning-card .note+.tuning-grid,.tuning-grid+*{margin-top:.6rem}.tuning-title{margin:0 0 .2rem;font-weight:700;font-size:var(--fs-md)}.tuning-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:.5rem;row-gap:.3rem;margin-top:.6rem}.tuning-field{display:contents}.tuning-field>span{grid-row:1;align-self:end;color:var(--muted);font-size:var(--fs-xs);line-height:1.2;overflow-wrap:anywhere}.tuning-field>input{grid-row:2;min-width:0;padding:0 .5rem}.light-card-head{margin-bottom:0}.light-toggle{width:54px;height:54px;flex:none;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid var(--line);cursor:pointer;transition:background-color .14s ease,border-color .14s ease,box-shadow .14s ease,color .14s ease}.light-toggle svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.light-toggle-off{background:var(--bg);color:var(--muted)}.light-toggle-on{background:#fff4b8;border-color:#e4ad20;color:#9a6200;box-shadow:0 0 0 4px #f5c51833,0 0 22px #f5c518bf}.light-toggle:disabled{cursor:default;opacity:.48}@media (prefers-reduced-motion: reduce){.light-toggle{transition:none}}.artifact{margin-top:.6rem;padding-top:.6rem;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:.35rem;align-items:flex-start}.artifact .btn{text-decoration:none;display:inline-block}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-xs);word-break:break-all}.transfer-panel{align-self:stretch;margin-top:.4rem;padding-top:.6rem;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:.5rem;align-items:flex-start}.transfer-title{margin:0;font-size:var(--fs-md)}.btn-transfer{min-height:52px;padding:0 1.6rem;font-size:var(--fs-base)}.transfer-confirm{align-self:stretch;display:flex;flex-direction:column;gap:.5rem;padding:.75rem;background:var(--accent-softer);border:1px solid var(--line);border-radius:12px}.transfer-confirm .toolbar{margin-top:.2rem}.transfer-confirm-title{margin:0;font-weight:700;font-size:var(--fs-md)}.transfer-check{display:flex;align-items:flex-start;gap:.6rem;min-height:var(--tap);font-size:var(--fs-md);cursor:pointer}.transfer-check input{flex:none;width:22px;height:22px;margin:.1rem 0 0;accent-color:var(--accent)}.transfer-attempt{align-self:stretch;padding:.6rem .7rem;background:var(--bg);border:1px solid var(--line);border-radius:10px}.transfer-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;margin:.5rem 0 0;padding:0;list-style:none}.transfer-step{display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.35rem .2rem;background:var(--bg-elev);border:1px solid var(--line);border-radius:8px;font-size:var(--fs-sm);text-align:center}.transfer-step-name{font-weight:700}.transfer-step-state{color:var(--muted)}.transfer-step-ok{border-color:#00ae4280}.transfer-step-ok .transfer-step-state{color:var(--accent-strong)}.transfer-step-running{border-color:#d9770680}.transfer-step-blocked,.transfer-step-failed{border-color:#dc262673}.transfer-step-blocked .transfer-step-state,.transfer-step-failed .transfer-step-state{color:var(--error-ink)}.transfer-chip-ready{background:#00ae4229;color:var(--accent-strong)}.transfer-chip-running{background:#d9770624;color:var(--warn-ink)}.transfer-chip-blocked,.transfer-chip-failed{background:#dc26261f;color:var(--error-ink)}.transfer-unavailable{margin:0}.plate-tabs{display:grid;grid-template-columns:1fr 1fr;gap:.3rem;padding:.25rem;margin-bottom:.6rem;background:var(--bg);border:1px solid var(--line);border-radius:12px}.plate-tab{min-height:40px;border:0;border-radius:9px;background:transparent;color:var(--muted);font-size:var(--fs-md);font-weight:600;cursor:pointer}.plate-tab-active{background:var(--bg-elev);color:var(--text);box-shadow:0 1px 3px #0f17201f}.plate-tab:disabled{opacity:.45;cursor:default}.preview-slider{margin:.7rem 0 0}.preview-slider input[type=range]{width:100%;min-height:var(--tap);accent-color:var(--accent)}.preview-readout{margin:0;font-size:var(--fs-md);font-weight:600}.preview-legend{display:flex;flex-wrap:wrap;gap:.3rem .8rem;margin:.5rem 0 0;padding:0;list-style:none;color:var(--muted);font-size:var(--fs-sm)}.preview-legend li{display:inline-flex;align-items:center;gap:.35rem}.preview-swatch{flex:none;width:12px;height:12px;border-radius:3px}.folder-select{position:relative}.folder-select-toggle{min-height:var(--tap);width:100%;text-align:left;background:var(--bg);border:1px solid var(--line);border-radius:10px;color:var(--text);padding:0 .7rem;font-size:var(--fs-base)}.folder-select-menu{position:absolute;z-index:8;left:0;right:0;top:calc(100% + 4px);max-height:min(60vh,26rem);overflow:auto;overscroll-behavior:contain;background:var(--bg-elev);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px #0f17202e;padding:.25rem}.folder-heading,.folder-option{display:block;width:100%;text-align:left;border:0;background:transparent;color:var(--text);min-height:44px;padding:.55rem .7rem;line-height:1.3;border-radius:8px;font-size:var(--fs-md)}.folder-heading{font-weight:700;color:var(--muted)}.folder-heading[aria-expanded=false]:after{content:" ▸"}.folder-heading[aria-expanded=true]:after{content:" ▾"}.folder-option[aria-selected=true]{background:#36c5ff1f}.preview-filters{display:flex;flex-wrap:wrap;gap:.45rem;margin:.6rem 0 .2rem}.preview-filter{display:inline-flex;align-items:center;gap:.45rem;min-height:var(--tap);padding:0 .85rem;border:2px solid var(--line);border-radius:999px;background:var(--bg-elev);color:var(--text);font-size:var(--fs-md);font-weight:700;cursor:pointer}.preview-filter[aria-pressed=true]{border-color:var(--accent)}.preview-filter[aria-pressed=false]{color:var(--muted);text-decoration:line-through}.segmented{border:0;margin:0 0 .4rem;padding:0;min-width:0}.segmented legend{padding:0;margin-bottom:.3rem;font-size:var(--fs-sm);color:var(--muted)}.segmented-options{display:grid;grid-template-columns:repeat(3,1fr);gap:.3rem;padding:.25rem;background:var(--bg);border:1px solid var(--line);border-radius:12px}.segment{position:relative;display:flex;align-items:center;justify-content:center;min-height:var(--tap);border-radius:9px;font-weight:700;cursor:pointer}.segment input{position:absolute;opacity:0;top:0;right:0;bottom:0;left:0;margin:0;cursor:pointer}.segment-on{background:var(--accent);color:var(--accent-ink)}.segment:has(input:focus-visible){outline:3px solid rgba(0,174,66,.35);outline-offset:2px}.support-pair{margin:.5rem 0;padding-left:1.1rem;font-weight:600}.note+.field,.note+label.field{margin-top:.8rem}.folder-search{position:sticky;top:0;z-index:1;width:100%;min-height:var(--tap);margin-bottom:.25rem;padding:0 .7rem;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--text);font-size:var(--fs-base)}.folder-empty{margin:0;padding:.8rem .7rem;color:var(--muted)}.folder-select-toggle{padding:.55rem 2rem .55rem .7rem;line-height:1.3;position:relative}.folder-select-toggle:after{content:"▾";position:absolute;right:.8rem;top:50%;transform:translateY(-50%);color:var(--muted)}.ps-row{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.45rem 0;border-top:1px solid var(--line)}.ps-row-wide{flex-direction:column;align-items:stretch}.ps-head{display:flex;align-items:center;justify-content:space-between}.ps-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.35rem}.chip{min-height:40px;min-width:3.2rem;padding:0 .6rem;border:1px solid var(--line);border-radius:999px;background:var(--bg);color:var(--text);font-size:var(--fs-md);font-weight:600}.chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.chip:disabled{opacity:.5}.ps-number{width:4.6rem;min-height:40px!important;text-align:center}.ps-select{max-width:11rem}.ps-stepper{display:flex;align-items:center;gap:.3rem}.ps-step{min-width:44px;padding:0;font-size:var(--fs-lg)}.ps-value{min-width:2.2rem;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}.ps-value-profile{color:var(--muted);font-weight:500}.ps-reset,.ps-reset-slot{width:36px;min-width:36px;min-height:36px;padding:0}.ps-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;border-top:1px solid var(--line);padding-top:.5rem}.ps-hint{border-top:1px solid var(--line);padding-top:.5rem}.metric-sub{display:block;margin-top:.15rem;color:var(--muted);font-size:var(--fs-xs)}.btn-wide{flex:1 1 100%}.job-result{margin:.5rem 0 0;font-weight:700;font-variant-numeric:tabular-nums}.job-details{margin-top:.6rem}.job-details>summary{color:var(--muted);font-size:var(--fs-sm);min-height:36px;display:flex;align-items:center}.app-main{padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 1.5rem)}.app-tab-prepare .app-main{padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 6.5rem)}.stepper{position:sticky;top:calc(env(safe-area-inset-top) + 3.6rem);z-index:4;display:grid;grid-template-columns:repeat(4,1fr);gap:.25rem;padding:.3rem;background:var(--bg-elev);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.step{display:flex;flex-direction:column;align-items:center;gap:.15rem;min-height:52px;padding:.3rem .1rem;border:0;border-radius:10px;background:transparent;color:var(--muted);font-size:var(--fs-xs);font-weight:700;cursor:pointer}.step:disabled{opacity:.4;cursor:default}.step-dot{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;border:2px solid currentColor;font-size:var(--fs-xs)}.step-done{color:var(--accent)}.step-active{background:var(--accent);color:var(--accent-ink)}.step-active .step-dot{border-color:var(--accent-ink)}.action-bar{position:fixed;left:0;right:0;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom));z-index:6;padding:.55rem .9rem;background:var(--bg-elev);border-top:1px solid var(--line);box-shadow:0 -6px 18px #0f172014}.action-bar .banner{margin:0 auto .45rem;max-width:780px}.action-bar-row{display:flex;align-items:center;gap:.75rem;max-width:780px;margin:0 auto}.action-summary{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}.action-summary span{color:var(--muted);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.action-main{min-height:50px;padding:0 1.2rem;font-size:var(--fs-base);white-space:nowrap}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#0f172073}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:41;display:flex;flex-direction:column;max-height:86vh;max-width:780px;margin:0 auto;padding:.4rem .8rem calc(env(safe-area-inset-bottom) + .6rem);background:var(--bg-elev);border-radius:18px 18px 0 0;box-shadow:0 -10px 30px #0f172040}.sheet-head{position:relative;display:flex;align-items:center;justify-content:center;min-height:48px}.sheet-head h3{margin:.4rem 0 0;font-size:var(--fs-base)}.sheet-grip{position:absolute;top:.2rem;width:42px;height:5px;border-radius:3px;background:var(--line)}.sheet-close{position:absolute;right:0;top:.4rem;width:44px;height:44px;border:0;border-radius:50%;background:var(--bg);color:var(--text);font-size:var(--fs-lg)}.sheet-chips{display:flex;gap:.35rem;overflow-x:auto;padding:.35rem 0 .5rem;scrollbar-width:none}.sheet-chips .chip{flex:0 0 auto}.sheet>*{flex-shrink:0}.sheet>.folder-select-menu{flex:1 1 auto;flex-shrink:1}.sheet .folder-select-menu{position:static;max-height:none;flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;border:0;box-shadow:none;padding:0}.sheet .folder-search{position:static;margin-top:.3rem}.folder-option{display:flex;align-items:center;justify-content:space-between;gap:.6rem;border-bottom:1px solid var(--line);border-radius:0}.folder-option[aria-selected=true]{background:#00ae421a;border-radius:8px}.opt-name{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.35rem;min-width:0}.opt-mark{color:var(--warn);font-size:var(--fs-sm)}.opt-mark-studio{color:var(--accent);font-size:var(--fs-xs)}.opt-material{flex:0 0 auto;padding:.1rem .45rem;border-radius:999px;background:var(--bg);border:1px solid var(--line);color:var(--muted);font-size:var(--fs-xs);font-weight:700}.folder-caption{margin:.6rem 0 .1rem;padding:0 .7rem;color:var(--muted);font-size:var(--fs-sm);font-weight:700;text-transform:uppercase;letter-spacing:.03em}.folder-heading{margin-top:.4rem;text-transform:uppercase;font-size:var(--fs-sm);letter-spacing:.03em}.folder-select-toggle .opt-material{margin-left:.2rem}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:.4rem}.tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:64px;padding:.4rem;border:2px solid var(--line);border-radius:12px;background:var(--bg);text-align:center;cursor:pointer}.tile input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;margin:0;cursor:pointer}.tile-main{font-weight:800;font-size:var(--fs-base);font-variant-numeric:tabular-nums}.tile-sub{color:var(--muted);font-size:var(--fs-xs);line-height:1.2}.tile-on{border-color:var(--accent);background:#00ae421a}.tile:has(input:focus-visible){outline:3px solid rgba(0,174,66,.35);outline-offset:2px}.light-inline{position:relative;display:inline-flex}.light-inline .light-toggle{width:44px;height:44px}.light-inline-error{position:absolute;right:0;top:110%;z-index:3;width:14rem;padding:.4rem .6rem;border-radius:8px;background:var(--error);color:#fff;font-size:var(--fs-sm)}.status-hero{margin:.4rem 0 .7rem}.status-hero-row{display:flex;align-items:baseline;gap:.6rem;min-width:0}.hero-percent{font-size:var(--fs-2xl);font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}.hero-file{min-width:0;color:var(--muted);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-lg{height:12px}.progress-indeterminate .progress-bar{width:35%;animation:progress-slide 1.2s ease-in-out infinite}@keyframes progress-slide{0%{transform:translate(-100%)}to{transform:translate(300%)}}.history-list{list-style:none;margin:.4rem 0 0;padding:0}.history-item{border-top:1px solid var(--line)}.history-head{display:flex;align-items:center;gap:.6rem;width:100%;min-height:60px;padding:.5rem 0;border:0;background:transparent;color:var(--text);text-align:left}.history-main{flex:1;min-width:0;display:flex;flex-direction:column}.history-main strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-sub{color:var(--muted);font-size:var(--fs-sm)}.history-body{display:flex;flex-direction:column;gap:.5rem;padding:0 0 .8rem}.job-inner .job-head h2{margin:0}.job-inner .artifact .btn{width:100%;min-height:48px;display:inline-flex;align-items:center;justify-content:center}.job-result{font-size:var(--fs-lg)}.tile-grid-2{grid-template-columns:repeat(2,1fr)}.tile-main-text{font-size:var(--fs-md)}.spool-list{list-style:none;margin:.3rem 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.spool{min-width:0;display:flex;flex-direction:column;gap:.6rem;padding:.6rem;border:1px solid var(--line);border-radius:12px;background:var(--bg)}.spool-head{display:flex;align-items:center;gap:.6rem;min-width:0}.spool-actions{display:grid;gap:.4rem}.spool-actions .btn,.spool-confirm .btn{font-family:Roboto Mono,ui-monospace,monospace;font-weight:700;letter-spacing:.04em;padding:0 .3rem}.spool-confirm{margin-top:.7rem;padding:.7rem;border:2px solid var(--accent);border-radius:12px}.spool-confirm-title{margin:0 0 .3rem;font-weight:700;text-align:center}.spool-text{display:flex;flex-direction:column;min-width:0;line-height:1.25}.spool-side,.spool-name{color:var(--muted);font-size:var(--fs-sm)}.spool-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spool-dot{flex:0 0 auto;width:26px;height:26px;border-radius:50%;border:2px solid var(--dot-ring)}.spool-dot-unknown{background:repeating-linear-gradient(45deg,var(--line) 0 4px,transparent 4px 8px)}.spool-chips{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin:.2rem 0 .8rem}.spool-chips-caption{flex:1 1 100%;color:var(--muted);font-size:var(--fs-sm)}.spool-chip{display:inline-flex;align-items:center;gap:.45rem}.spool-chip .spool-dot{width:18px;height:18px}.speed-readonly{display:flex;justify-content:space-between;align-items:center;margin:.6rem 0 0}.hero-percent{flex:none;white-space:nowrap}.metric-value{white-space:nowrap}.metric-value small{font-size:.72em}.handy-control{margin-top:.7rem}.handy-button{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;text-decoration:none;font-weight:700}.handy-control .control-reason{margin-top:.6rem}.print-actions{margin-top:.8rem}.print-actions-row{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.print-actions-row .btn{min-height:52px;font-family:Roboto Mono,ui-monospace,monospace;font-weight:700;letter-spacing:.04em}.print-action-stop{color:var(--error);border-color:var(--error-line)}.print-action-stop-confirm{background:var(--error);color:#fff;border-color:transparent}.print-actions .banner,.print-actions .note{margin-top:.5rem}.print-action-skip{grid-column:1 / -1}.skip-objects{margin-top:.7rem;padding:.8rem;border:1px solid var(--line, #ddd);border-radius:14px}.skip-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.6rem}.skip-close{min-height:40px;font-family:Roboto Mono,ui-monospace,monospace;font-weight:700}.skip-map{display:block;width:100%;max-width:320px;margin:0 auto .6rem}.skip-bed{fill:#2b2b2b;stroke:#555;stroke-width:1}.skip-box{fill:#00ae4259;stroke:#00ae42;stroke-width:1.5;cursor:pointer}.skip-box.chosen{fill:#dc26268c;stroke:#dc2626}.skip-box.skipped{fill:#78787880;stroke:#888;stroke-dasharray:4 3;cursor:default}.skip-label{fill:#fff;font:700 14px Roboto Mono,ui-monospace,monospace;pointer-events:none}.skip-list{list-style:none;margin:0 0 .6rem;padding:0;display:grid;gap:.35rem}.skip-item{display:flex;align-items:center;gap:.55rem;min-height:44px;padding:0 .5rem;border-radius:10px;background:var(--surface-2, rgba(127, 127, 127, .08))}.skip-item.skipped{opacity:.6}.skip-item input{width:22px;height:22px}.skip-nr{font:700 .9rem Roboto Mono,ui-monospace,monospace;min-width:1.6rem}.skip-name{flex:1;overflow-wrap:anywhere}.skip-tag{font:700 .7rem Roboto Mono,ui-monospace,monospace}.skip-go,.skip-objects .print-actions-row .btn{width:100%;min-height:52px;font-family:Roboto Mono,ui-monospace,monospace;font-weight:700}.file-print,.file-print-confirm{margin-top:.45rem}.file-print{font-family:Roboto Mono,ui-monospace,monospace;font-weight:700;min-height:var(--tap)}.file-print-confirm{display:flex;flex-wrap:wrap;gap:.4rem}.file-print-confirm .btn{flex:1;min-height:var(--tap);font-family:Roboto Mono,ui-monospace,monospace;font-weight:700}.files-refresh{width:var(--tap);height:var(--tap);display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:12px;background:var(--bg-elev);color:var(--text);cursor:pointer}.files-refresh svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.files-refresh svg.spin{animation:files-spin .9s linear infinite}@keyframes files-spin{to{transform:rotate(360deg)}}.files-folders{grid-template-columns:repeat(2,1fr);margin-bottom:.6rem}.files-folders .segment{border:0;background:transparent;color:var(--text);font:inherit;font-weight:700}.files-folders .segment.segment-on{background:var(--accent);color:var(--accent-ink)}.file-list{list-style:none;margin:0;padding:0}.file-item{display:flex;flex-direction:column;padding:.45rem 0;border-top:1px solid var(--line)}.file-row{display:flex;align-items:center;gap:.75rem;width:100%;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left}button.file-row{cursor:pointer}.file-chevron{flex:none;color:var(--muted);font-size:var(--fs-xl);line-height:1;transition:transform .15s ease}.file-item-open .file-chevron{transform:rotate(90deg)}.file-item-open{background:var(--surface-2);margin:0 -.6rem;padding:.45rem .6rem .6rem;border-radius:12px}.file-thumb{flex:none;width:56px;height:56px;border-radius:12px;background:var(--bg);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;overflow:hidden}.file-thumb:has(img){background:var(--thumb-bg)}.file-thumb img{width:100%;height:100%;object-fit:contain}.file-thumb svg{width:32px;height:32px;fill:none;stroke:var(--muted);stroke-width:1.6}.file-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}.file-main strong{overflow-wrap:anywhere;line-height:1.25}.file-sub{color:var(--muted);font-size:var(--fs-sm)}.file-colors{display:flex;flex-wrap:wrap;gap:.6rem;font-size:var(--fs-xs);color:var(--muted)}.file-color{display:inline-flex;align-items:center;gap:.25rem}.file-dot{width:12px;height:12px;border-radius:50%;border:1px solid var(--dot-ring)}.status-line .status-chips{display:inline-flex;flex-wrap:wrap;gap:.35rem;margin-left:auto}.info-pill{display:inline-flex;align-items:center;min-height:26px;padding:0 .6rem;border-radius:999px;background:var(--accent-soft);color:var(--accent-strong);font-size:var(--fs-sm);font-weight:700;white-space:nowrap}.info-pill-muted{background:var(--bg);color:var(--muted);border:1px solid var(--line)}.dot-paused{background:var(--warn)}.dot-failed{background:var(--error)}.dot-off{background:var(--muted);opacity:.6}.alert-list{list-style:none;margin:0 0 .75rem;padding:0;display:flex;flex-direction:column;gap:.4rem}.alert-item{display:flex;align-items:center;gap:.6rem;padding:.6rem .7rem;border-radius:12px;background:var(--error-soft);border:1px solid var(--error-line);color:var(--error-ink)}.alert-icon{flex:none;width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--error);color:#fff;font-weight:800}.alert-text{display:flex;flex-direction:column;min-width:0;flex:1}.alert-text small{opacity:.8;font-family:ui-monospace,Roboto Mono,monospace;font-size:var(--fs-xs)}.alert-help{flex:none;color:inherit;font-weight:700;font-size:var(--fs-sm)}.alert-dismiss{flex:none;width:36px;height:36px;margin:-.3rem -.3rem -.3rem 0;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:transparent;color:inherit;font-size:var(--fs-base);line-height:1;cursor:pointer}.alert-dismiss:active{background:#00000014}.alert-hidden-note{display:block;margin:0 0 .75rem;padding:.2rem 0;border:0;background:none;color:var(--muted);font:inherit;font-size:var(--fs-sm);letter-spacing:.02em;cursor:pointer}.power-block{display:flex;flex-direction:column;gap:.6rem;margin:.3rem 0 .2rem}.power-text{margin:0;color:var(--muted)}.power-button{min-height:52px;font-size:var(--fs-base)}.job-hero{display:flex;align-items:center;gap:.8rem;margin:.2rem 0 .7rem}.job-cover{flex:none;width:76px;height:76px;border-radius:12px;object-fit:cover;background:var(--thumb-bg);border:1px solid var(--line)}.job-hero-text{display:flex;flex-direction:column;gap:.15rem;min-width:0;flex:1}.job-name{font-weight:700;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.job-numbers{display:flex;align-items:center;gap:.7rem}.job-eta{display:flex;flex-direction:column;line-height:1.2;font-size:var(--fs-sm);color:var(--muted)}.job-eta strong{color:var(--text);font-size:var(--fs-md)}.job-facts{margin:.45rem 0 .75rem;color:var(--muted);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}.temp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin-bottom:.7rem}.temp-tile{display:flex;flex-direction:column;align-items:center;padding:.55rem .4rem;border-radius:12px;background:var(--bg);border:1px solid var(--line);text-align:center}.temp-tile-warn{border-color:var(--warn);background:var(--warn-soft)}.temp-label{color:var(--muted);font-size:var(--fs-xs);font-weight:600}.temp-value{font-size:var(--fs-xl);font-weight:800;font-variant-numeric:tabular-nums;line-height:1.15}.temp-value small{font-size:var(--fs-sm);font-weight:600;color:var(--muted)}.temp-sub{color:var(--muted);font-size:var(--fs-xs)}.temp-tile-warn .temp-sub{color:var(--warn-ink);font-weight:700}.fan-line,.nozzle-line{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem;margin:0 0 .6rem;font-size:var(--fs-sm);color:var(--muted)}.fan-title{font-weight:700;margin-right:.1rem}.fan-chip{padding:.15rem .55rem;border-radius:999px;background:var(--bg);border:1px solid var(--line)}.fan-chip strong{color:var(--text)}.nozzle-line span+span:before{content:"·";margin-right:.5rem}.header-status{display:inline-flex;align-items:center;gap:.45rem;min-height:36px;max-width:60%;padding:.3rem .75rem;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--text);font:inherit;font-size:var(--fs-sm);font-weight:700;white-space:normal;text-align:left;line-height:1.2;cursor:pointer}.header-status-alert{background:var(--error-soft);border-color:var(--error-line);color:var(--error-ink)}.header-status-alert .dot{background:var(--error)}.dot-finished{background:var(--ok)}.status-last{margin:0 0 .6rem}.job-done-facts{color:var(--muted);font-size:var(--fs-sm)}.history-parts{grid-template-columns:repeat(4,1fr);background:var(--bg-card)}.history-parts .segment{border:0;background:transparent;color:var(--text);font:inherit;font-weight:700}.history-parts .segment.segment-on{background:var(--accent);color:var(--accent-ink)}.card-head+.print-section{margin-top:.2rem}.print-week{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem;margin-bottom:.4rem}.print-week>div{display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.6rem .3rem;border-radius:12px;background:var(--accent-softer);border:1px solid var(--line);text-align:center}.print-week strong{font-size:var(--fs-base);white-space:nowrap;font-variant-numeric:tabular-nums}.print-week span{font-size:var(--fs-xs);color:var(--muted)}.print-section{margin:.9rem 0 .4rem;font-size:var(--fs-sm);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.print-item{border-top:1px solid var(--line)}.print-head{display:flex;align-items:center;gap:.8rem;width:100%;padding:.6rem 0;border:0;background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer}.print-thumb{width:60px;height:60px}.print-chip{flex:none;align-self:center;padding:.2rem .55rem;font-size:var(--fs-xs)}.print-chip-finished{background:var(--accent-soft);color:var(--accent-strong)}.print-chip-running{background:var(--accent);color:var(--accent-ink)}.print-chip-cancelled,.print-chip-unknown{background:var(--chip-bg);color:var(--muted)}.print-chip-failed{background:var(--error-soft);color:var(--error-ink)}.print-body{display:flex;flex-direction:column;gap:.6rem;padding:0 0 .9rem}.print-picture{margin:0;border-radius:12px;overflow:hidden;background:var(--surface-2);border:1px solid var(--line)}.print-picture img{display:block;width:100%;max-height:320px;object-fit:contain}.print-picture figcaption{padding:.35rem .6rem;font-size:var(--fs-xs);color:var(--muted)}.print-details{display:grid;grid-template-columns:1fr;gap:.3rem;margin:0}.print-details>div{display:flex;justify-content:space-between;gap:.8rem;font-size:var(--fs-sm)}.print-details dt{color:var(--muted)}.print-details dd{margin:0;text-align:right;overflow-wrap:anywhere}.print-body a.btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.access-gate .card{display:flex;flex-direction:column;gap:.6rem;text-align:center}.access-gate h2{margin:0}.access-message{min-height:1.5em;margin:0;font-size:var(--fs-md);color:var(--muted)}.search-form{display:grid;grid-template-columns:1fr auto;gap:.5rem}.search-form .btn{min-width:7.5rem}.search-sources{display:flex;flex-wrap:wrap;gap:.4rem 1rem;margin:.6rem 0 0;font-size:var(--fs-sm);color:var(--muted)}.search-source-failed{color:var(--error-ink)}.source-badge{display:inline-flex;align-items:center;min-height:22px;padding:0 .5rem;border-radius:999px;font-size:var(--fs-xs);font-weight:700;letter-spacing:.02em;color:#fff;white-space:nowrap}.source-makerworld{background:#00ae42}.source-printables{background:#fa6831}.search-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}@media (min-width: 720px){.search-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.search-tile{width:100%;height:100%;display:flex;flex-direction:column;padding:0;text-align:left;font:inherit;color:var(--text);background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;cursor:pointer}.search-tile:active{transform:scale(.98)}.search-tile-img{position:relative;aspect-ratio:4 / 3;background:var(--thumb-bg)}.search-tile-img img{width:100%;height:100%;object-fit:cover;display:block}.search-tile-img .source-badge{position:absolute;left:.45rem;bottom:.45rem}.tile-badges{position:absolute;left:.45rem;top:.45rem;display:flex;flex-direction:column;align-items:flex-start;gap:.3rem}.saved-badge{display:inline-flex;align-items:center;min-height:22px;padding:0 .5rem;border-radius:999px;font-size:var(--fs-xs);font-weight:700;letter-spacing:.02em;color:#3a2a00;background:#ffc83d;white-space:nowrap}.printed-badge{display:inline-flex;align-items:center;min-height:22px;padding:0 .5rem;border-radius:999px;font-size:var(--fs-xs);font-weight:700;letter-spacing:.02em;color:#fff;background:#1f6feb;white-space:nowrap}.printed-note{margin:.5rem 0 0;font-weight:700;color:#1f6feb}.search-tile-text{display:flex;flex-direction:column;gap:.15rem;padding:.55rem .65rem .7rem}.search-tile-text strong{font-size:var(--fs-md);line-height:1.25;overflow-wrap:anywhere}.model-hero{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:12px;background:var(--thumb-bg);margin-bottom:.6rem}.model-title{margin:0 0 .2rem;overflow-wrap:anywhere}.model-summary{white-space:pre-line;font-size:var(--fs-md);line-height:1.4;margin:.7rem 0 0}.model-link{margin-top:.8rem;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.variant{border-top:1px solid var(--line);padding:.7rem 0 .2rem}.variant:first-of-type{border-top:0;padding-top:0}.variant-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem}.variant-chips{display:inline-flex;flex-wrap:wrap;gap:.35rem}.variant .file-list{margin-top:.4rem}.model-meta{display:flex;flex-direction:column;gap:.15rem}.plate-picks{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.4rem}.file-item>.btn{flex:none}.plate-empty{display:flex;flex-direction:column;gap:.8rem;padding:1rem;border:1px dashed var(--line);border-radius:12px;color:var(--muted)}.plate-empty p{margin:0}.plate-empty-actions{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.plate-empty-actions .btn{min-height:var(--tap);font-family:Roboto Mono,ui-monospace,monospace;font-weight:700}.project-plates{display:flex;flex-direction:column;gap:.7rem;margin-bottom:.8rem}.project-plates-title{margin:0}.project-plates-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:.5rem}.project-plate{display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.4rem;border:1px solid var(--line);border-radius:12px;background:var(--bg-elev);color:var(--text);font-family:Roboto Mono,ui-monospace,monospace;font-size:var(--fs-xs);font-weight:700;cursor:pointer}.project-plate:disabled{opacity:.5}.project-plate img,.project-plate-blank{width:100%;aspect-ratio:1;object-fit:contain;border-radius:8px;background:var(--thumb-bg, var(--bg))}.project-plates>.btn{align-self:flex-start;font-family:Roboto Mono,ui-monospace,monospace;font-weight:700}.project-card{display:flex;flex-direction:column;gap:.6rem}.project-card-head{display:grid;grid-template-columns:96px 1fr;gap:.8rem;align-items:center}.project-card-head img,.project-card-head .project-plate-blank{width:96px;aspect-ratio:1;object-fit:contain;border-radius:10px;background:var(--thumb-bg, var(--bg))}.project-card-head>div{display:flex;flex-direction:column;gap:.2rem}.project-sub{margin:.3rem 0 0;font-size:var(--fs-sm);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.project-colours{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem}.project-colour{display:grid;grid-template-columns:auto 1fr auto;gap:.6rem;align-items:center}.project-colour-text{display:flex;flex-direction:column}.project-colour-text .note{margin:0}.project-dot{display:inline-block;width:1.4rem;height:1.4rem;flex:none;border-radius:50%;border:2px solid var(--muted);vertical-align:middle}.project-sides,.project-layers{grid-template-columns:repeat(2,1fr)}.project-sides{min-width:11rem}.project-sides .segment,.project-layers .segment{border:0;background:transparent;color:var(--text);font-family:Roboto Mono,ui-monospace,monospace;font-weight:700;font-size:var(--fs-sm)}.project-sides .segment-on,.project-layers .segment-on{background:var(--accent);color:var(--accent-ink)}.project-swaps{padding:.6rem .8rem;border:1px solid var(--line);border-radius:12px;background:var(--bg)}.project-swaps ul{list-style:none;margin:.4rem 0 0;padding:0;display:flex;flex-direction:column;gap:.35rem}.project-swaps li{display:flex;align-items:center;gap:.5rem}.project-swaps .project-dot{width:1rem;height:1rem}.filament-prompt{margin:0 0 .75rem;padding:.7rem;border-radius:12px;border:2px solid var(--error, #d64545)}.filament-prompt-title{margin:0 0 .6rem;font-weight:700;text-align:center}.alert-item-notice{background:var(--chip-bg);border-color:var(--line);color:var(--text)}.alert-item-notice .alert-icon{background:var(--muted);font-family:Georgia,serif;font-style:italic}.alert-item-notice strong{font-weight:600}.temp-tile-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:var(--text);font:inherit;cursor:pointer}.temp-tile-button:hover,.temp-tile-button[aria-expanded=true]{border-color:var(--accent);background:var(--accent-soft)}.temp-tile-button:focus-visible{outline:3px solid rgba(0,174,66,.28);outline-offset:2px}.temp-edit{color:var(--accent-strong);font-weight:700;letter-spacing:.02em}.camera-card-quiet .card-head{margin-bottom:0}.camera-card-quiet .note{margin:.35rem 0 0}.camera-title{display:inline-flex;align-items:center;gap:.35rem;min-height:var(--tap);padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer}.camera-title-mark{color:var(--muted);font-size:var(--fs-sm)}.alert-item-notice .alert-text strong{font-size:var(--fs-md);line-height:1.3}.sort-row{display:flex;gap:.4rem;margin:.2rem 0 .6rem}.sort-row .chip{flex:1 1 0;min-width:0;padding:0 .3rem}.section-title{margin:.2rem .2rem 0;font-size:var(--fs-base);font-weight:700}.best-variant{border-color:var(--accent)}.best-variant>.file-sub{display:block;margin:.2rem 0 .6rem}.best-variant .btn-block{min-height:52px;font-size:var(--fs-base)}.best-variant .file-list{margin-top:.6rem}.variant-more>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;min-height:44px}.variant-more>summary::-webkit-details-marker{display:none}.variant-more>summary:after{content:"▾";color:var(--muted)}.variant-more[open]>summary:after{content:"▴"}.variant-more[open]>summary{margin-bottom:.5rem}.camera-mode{display:flex;align-items:center;gap:.4rem;margin-top:.6rem}.camera-mode .chip{min-height:36px;font-size:var(--fs-sm)}.camera-mode-hint{flex:1;min-width:0;color:var(--muted);font-size:var(--fs-sm);line-height:1.25}.stock-list{list-style:none;margin:.3rem 0 .6rem;padding:0;display:grid;gap:.5rem}.stock-spool{border:1px solid var(--line);border-radius:12px;background:var(--bg)}.stock-spool-empty{opacity:.6}.stock-head{all:unset;box-sizing:border-box;width:100%;display:flex;align-items:center;gap:.7rem;padding:.65rem .7rem;cursor:pointer}.stock-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:.3rem}.stock-title{display:flex;align-items:baseline;gap:.45rem;min-width:0}.stock-bar{display:block;height:8px;border-radius:4px;background:var(--line);overflow:hidden}.stock-fill{display:block;height:100%;border-radius:4px;background:var(--accent)}.stock-fill-low{background:var(--warn)}.stock-sub{font-size:var(--fs-sm);color:var(--muted);font-variant-numeric:tabular-nums}.stock-side{flex:0 0 auto}.stock-edit{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;padding:0 .7rem .7rem}.stock-prices{grid-template-columns:1fr 1fr;padding:0}.stock-edit label{display:flex;flex-direction:column;gap:.2rem;min-width:0;font-size:var(--fs-xs);color:var(--muted)}.stock-edit input{width:100%;box-sizing:border-box;font-variant-numeric:tabular-nums}.stock-edit-actions{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:.5rem}.queue-plate{display:grid;gap:.5rem;padding:.7rem;margin-bottom:.6rem;border:1px solid var(--warn);border-radius:12px;background:color-mix(in srgb,var(--warn) 10%,transparent)}.queue-plate p{margin:0}.queue-plate-btn{min-height:var(--tap);font-family:Roboto Mono,ui-monospace,monospace;font-weight:700}.queue-ready{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin:0 0 .6rem;font-size:var(--fs-md)}.queue-link{all:unset;margin-left:auto;color:var(--muted);text-decoration:underline;cursor:pointer;font-size:var(--fs-sm)}.queue-list{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.queue-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"thumb main chip" "thumb actions actions";align-items:center;column-gap:.6rem;row-gap:.35rem;padding:.55rem;border:1px solid var(--line);border-radius:12px;background:var(--bg)}.queue-item-failed{border-color:var(--error)}.queue-thumb{grid-area:thumb}.queue-main{grid-area:main;min-width:0;display:flex;flex-direction:column;gap:.15rem}.queue-message{font-size:var(--fs-sm);color:var(--warn)}.queue-side{display:contents}.queue-chip{grid-area:chip;align-self:start}.queue-actions{grid-area:actions;display:flex;justify-content:flex-end;gap:.3rem}.queue-icon{width:40px;height:40px;border:1px solid var(--line);border-radius:10px;background:var(--bg-card);color:var(--text);font-size:var(--fs-md);cursor:pointer}.queue-icon:disabled{opacity:.35}.queue-chip-starting{background:var(--accent-softer)}.queue-planner{display:grid;gap:.5rem;margin-top:.45rem}.queue-when{grid-template-columns:repeat(3,1fr);background:var(--bg-card)}.queue-when .segment{border:0;background:transparent;color:var(--text);font:inherit;font-weight:700}.queue-when .segment.segment-on{background:var(--accent);color:var(--accent-ink)}.queue-when .segment:disabled{opacity:.4}.queue-time{display:flex;align-items:center;justify-content:space-between;gap:.6rem}.queue-time input{min-height:var(--tap);max-width:9rem;font-size:var(--fs-lg);font-variant-numeric:tabular-nums;background:var(--bg);border:1px solid var(--line);border-radius:10px;color:var(--text);padding:0 .7rem}.device-list{list-style:none;margin:.3rem 0 .6rem;padding:0;display:grid;gap:.5rem}.device-item{display:flex;align-items:center;gap:.6rem;padding:.6rem .7rem;border:1px solid var(--line);border-radius:12px;background:var(--bg)}.device-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:.15rem}.device-item .btn{flex:0 0 auto;font-family:Roboto Mono,ui-monospace,monospace;font-weight:700}.btn-danger{background:var(--error);border-color:var(--error);color:#fff}
