.editor-toggle,.close-editor{display:none}
@media(max-width:880px){.editor-toggle{display:block;appearance:none;margin-left:auto;border:1px solid var(--line);border-radius:3px;background:#171c19;padding:8px 11px;font-size:.75rem;cursor:pointer}.editor-toggle:after{content:'G-code'}.editor-panel{display:flex;position:fixed;z-index:40;top:68px;right:0;bottom:88px;width:min(420px,100vw);transform:translateX(105%);transition:transform .22s;box-shadow:-20px 0 45px #0008}.app-shell:has(#editorOpen:checked) .editor-panel{transform:translateX(0)}.close-editor{display:block;margin-left:auto!important;cursor:pointer}.editor-panel .panel-title .ghost:last-child{margin-left:6px}.loading{z-index:35}}
@media(max-width:650px){.editor-panel{top:60px;bottom:0}.top-stats{display:none}}
.spool-meter{grid-column:1/-1;height:4px;margin:2px 0 4px;background:#343b37;border-radius:4px;overflow:hidden}.spool-meter i{display:block;width:100%;height:100%;background:var(--acid);transition:width .25s}.asset-ready .scene-hint:after{content:' · Blender asset';color:var(--acid)}
.editor-actions{gap:6px}.editor-actions h2{margin-right:auto}.editor-actions .ghost{margin-left:0!important;padding:6px 7px!important;font-size:.66rem}.editor-actions .primary{border-color:var(--acid)!important;color:var(--acid)!important}
.slicer-launch{display:flex;width:100%;justify-content:space-between;align-items:center;margin-top:16px;padding:12px;border:1px solid var(--acid);border-radius:4px;background:#1a2116;color:var(--text);cursor:pointer;text-align:left}.slicer-launch strong{font-size:.76rem;text-transform:uppercase;letter-spacing:.06em}.slicer-launch span{color:var(--acid);font-size:.68rem}.slicer-modal{position:fixed;inset:0;z-index:80;display:grid;place-items:center;background:#050706bd;padding:20px}.slicer-modal[hidden]{display:none}.slicer-dialog{width:min(520px,100%);padding:22px;background:#151917;border:1px solid #4c5751;box-shadow:0 28px 90px #000b}.slicer-head{display:flex;align-items:center;gap:10px;margin-bottom:18px}.slicer-head>span{color:var(--acid);font:700 .72rem ui-monospace}.slicer-head h2{margin:0;font-size:.95rem;text-transform:uppercase;letter-spacing:.1em}.slicer-head button{margin-left:auto;border:0;background:transparent;color:var(--muted);font-size:1.4rem;cursor:pointer}.dropzone{display:grid;place-items:center;min-height:120px;border:1px dashed #65716a;background:#0d110f;cursor:pointer;text-align:center;text-transform:none;letter-spacing:0}.dropzone strong{color:var(--text);font-size:.9rem}.dropzone span{font-size:.72rem}.slicer-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:15px 0}.slicer-grid output{float:right;color:var(--acid)}.slicer-grid input{width:100%;accent-color:var(--acid)}.slicer-status{min-height:44px;padding:11px;background:#0d110f;color:var(--muted);font-size:.75rem;line-height:1.45}.slice-run{width:100%;margin-top:14px;padding:12px;border:0;background:var(--acid);color:#111;font-weight:800;cursor:pointer}.slice-run:disabled{opacity:.35;cursor:not-allowed}
.technology-select{display:grid;gap:7px;margin-bottom:9px;color:var(--muted);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.technology-select select{width:100%;color:var(--text);background:#171c1a;border:1px solid var(--line);border-radius:4px;padding:10px}.technology-note{display:grid;gap:3px;padding:10px 11px;margin-bottom:12px;border-left:2px solid var(--acid);background:rgba(223,255,53,.055);font-size:11px}.technology-note b{color:var(--acid);text-transform:uppercase;letter-spacing:.06em}.technology-note span{color:var(--muted);line-height:1.35}.technology-note.planned{border-color:#58b8ff;background:rgba(88,184,255,.06)}.technology-note.planned b{color:#7ac6ff}.printer-config{margin:-4px 0 22px;border:1px solid var(--line);background:#101412}.printer-config summary{display:flex;align-items:center;gap:9px;padding:11px;cursor:pointer;list-style:none}.printer-config summary::-webkit-details-marker{display:none}.printer-config summary span{color:var(--acid);font:700 .7rem ui-monospace}.printer-config summary strong{font-size:.76rem;text-transform:uppercase;letter-spacing:.06em}.printer-config summary i{margin-left:auto;color:var(--muted);font-size:.65rem;font-style:normal}.machine-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:0 11px 12px}.machine-grid label{font-size:.62rem}.machine-grid input,.machine-grid select{width:100%;padding:7px 8px;border:1px solid var(--line);border-radius:3px;background:#0b0f0d;color:var(--text);font:inherit}.machine-grid label:last-child{grid-column:1/-1}
.top-stats i{font-style:normal}.process-mode .printer-config,.process-mode #material,.process-mode .swatches,.process-mode .spec-grid,.process-mode .material-note,.process-mode .examples-title,.process-mode .example,.process-mode .slicer-launch{opacity:.28;pointer-events:none}.process-mode .editor-panel{opacity:.42;pointer-events:none}.process-mode .scene-hint{color:#7ac6ff}
.slicer-grid input[type=number]{padding:9px 10px;border:1px solid var(--line);border-radius:4px;background:#0f1311;color:var(--text);font:inherit}.slicer-grid .slicer-check{grid-column:1/-1;display:flex;align-items:center;gap:9px;cursor:pointer}.slicer-grid .slicer-check input{width:auto;margin:0}@media (max-width:420px){.slicer-grid{grid-template-columns:1fr}}

.diagnostics.warn{border-color:#ff9a3c;color:#ffc27a}.diagnostics.warn .dot{background:#ff9a3c;box-shadow:0 0 10px #ff9a3c}
.phase-caption{position:absolute;left:50%;bottom:18px;transform:translate(-50%,8px);max-width:min(640px,calc(100% - 32px));padding:9px 14px;border-left:3px solid var(--acid);background:rgba(10,14,12,.82);color:var(--text);font-size:.78rem;line-height:1.35;opacity:0;transition:opacity .2s,transform .2s;pointer-events:none;z-index:4}.phase-caption.show{opacity:1;transform:translate(-50%,0)}

/* ---- compact left panel ---- */
.side{padding:14px 14px 18px;display:flex;flex-direction:column;gap:12px}
.side-block{display:grid;gap:9px}
.side-head{display:flex;align-items:center;gap:8px}
.side-head h2{margin:0;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.tech-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.tech-btn{display:grid;gap:2px;padding:7px 2px 6px;border:1px solid var(--line);border-top:2px solid var(--fam);border-radius:4px;background:#101412;color:var(--text);cursor:pointer;text-align:center;transition:border-color .15s,background .15s}
.tech-btn b{font:700 .74rem/1.1 ui-monospace,Consolas,monospace;letter-spacing:.02em}
.tech-btn small{font-size:.56rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tech-btn:hover{border-color:#59625d;border-top-color:var(--fam)}
.tech-btn.active{background:color-mix(in srgb,var(--fam) 16%,#101412);border-color:var(--fam)}
.tech-btn.active small{color:var(--text)}
.fam-ext{--fam:#dfff35}.fam-vat{--fam:#a77bff}.fam-pow{--fam:#ff9a3c}.fam-met{--fam:#7ac6ff}
.technology-note{display:block;margin:0;padding:7px 9px;border-left:2px solid var(--acid);background:rgba(223,255,53,.05);font-size:.68rem;line-height:1.35;color:var(--muted)}
.technology-note b{color:var(--text);margin-right:6px;text-transform:none;letter-spacing:0}
.technology-note span{display:inline}
.technology-note.planned{border-color:#a77bff;background:rgba(167,123,255,.06)}
.model-card{padding:10px;border:1px solid var(--line);border-radius:4px;background:#101412}
.model-badge{margin-left:auto;padding:2px 7px;border-radius:9px;background:#1d2420;color:var(--muted);font-size:.6rem;text-transform:uppercase;letter-spacing:.06em}
.model-badge.stl{background:rgba(223,255,53,.14);color:var(--acid)}
.model-info{margin:0;font-size:.7rem;line-height:1.35;color:var(--text);word-break:break-word}
.model-actions{display:flex;gap:6px}
.model-actions button{flex:1;padding:8px 6px;border:1px solid var(--line);border-radius:3px;background:#0b0f0d;color:var(--text);font-size:.66rem;letter-spacing:.04em;text-transform:uppercase;cursor:pointer}
.model-actions button:hover{border-color:#6b766f}
.model-actions .btn-primary{flex:1.6;border-color:var(--acid);color:#111;background:var(--acid);font-weight:700}
.model-actions .btn-primary:hover{filter:brightness(1.08)}
.side-sec{border:1px solid var(--line);border-radius:4px;background:#101412}
.side-sec>summary{display:flex;align-items:center;gap:8px;padding:9px 10px;cursor:pointer;list-style:none;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase}
.side-sec>summary::-webkit-details-marker{display:none}
.side-sec>summary::before{content:'▸';color:var(--muted);transition:transform .15s}
.side-sec[open]>summary::before{transform:rotate(90deg)}
.side-sec>summary i{margin-left:auto;font-style:normal;text-transform:none;letter-spacing:0;color:var(--muted);font-size:.66rem}
.sec-body{display:grid;gap:9px;padding:0 10px 10px}
.material-row{display:flex;align-items:center;gap:8px}
.material-row select{flex:1;min-width:0;padding:7px 8px;border:1px solid var(--line);border-radius:3px;background:#0b0f0d;color:var(--text);font:inherit;font-size:.72rem}
.side .swatches{margin:0;gap:6px}
.side .swatch{width:18px;height:18px}
.side .spec-grid{grid-template-columns:repeat(4,1fr)}
.side .spec-grid div{padding:6px 5px;border-bottom:0;border-right:1px solid var(--line)}
.side .spec-grid div:last-child{border-right:0}
.side .spec-grid span{font-size:.55rem}
.side .spec-grid b{margin-top:2px;font-size:.7rem}
.side .material-note{margin:0;font-size:.66rem;line-height:1.35;color:var(--muted)}
.side .machine-grid{padding:0}
.example-list{gap:4px}
.side .example{display:flex;align-items:baseline;gap:8px;padding:7px 9px;margin:0}
.side .example span{font-size:.72rem;white-space:nowrap}
.side .example small{margin:0 0 0 auto;font-size:.6rem;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side .process-config{margin:0;border-radius:4px}
body.process-mode .fdm-only{display:none!important}
body:not(.process-mode) .process-only{display:none!important}
/* never let the widest row (transport / top bar) push the page wider than the viewport */
.app-shell{grid-template-columns:minmax(0,1fr)}.app-shell>*,.workspace>*{min-width:0}
@media(max-width:650px){.transport{grid-template-columns:44px 34px minmax(0,1fr)}.timeline,.timeline-meta{min-width:0}.timeline-meta{gap:8px;flex-wrap:wrap}.topbar{min-width:0}.brand{min-width:0}}
.side .process-config{background:#101412;border:1px solid var(--line);border-top:2px solid var(--fam,#58b8ff)}
.side .process-config-head{padding:9px 10px}.side .process-config-head strong{font-size:.66rem;letter-spacing:.08em;white-space:nowrap}
.side .process-config .machine-grid{padding:0 10px 10px;gap:7px}.side .process-actions{padding:0 10px 9px}.side .process-summary{padding:0 10px 10px;font-size:.64rem}
.process-details{margin:0 10px 10px;border-top:1px solid var(--line)}.process-details>summary{display:flex;gap:6px;align-items:center;padding:8px 0 6px;cursor:pointer;list-style:none;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.process-details>summary::-webkit-details-marker{display:none}.process-details>summary::before{content:'▸';transition:transform .15s}.process-details[open]>summary::before{transform:rotate(90deg)}.process-details>summary b{margin-left:auto;color:#ffb36b;font-weight:600;letter-spacing:0}.side .process-details .process-summary{padding:0 0 4px}
.process-actions:has(> button:only-child){grid-template-columns:1fr}
/* examples: two-line cards that always fit the panel width */
.side{overflow-x:hidden}
.side .example{display:grid;gap:2px;width:100%;min-width:0;box-sizing:border-box;padding:7px 9px}
.side .example span{white-space:normal;font-size:.72rem;line-height:1.25}
.side .example small{margin:0;text-align:left;white-space:normal;font-size:.6rem;line-height:1.3;overflow:visible}
.side .sec-body,.side .side-sec,.side .machine-grid label{min-width:0}
.side .machine-grid input,.side .machine-grid select{width:100%;min-width:0;box-sizing:border-box}

/* slicer result viewer */
.layer-panel{position:absolute;right:14px;bottom:14px;z-index:6;width:min(270px,calc(100% - 28px));display:grid;gap:7px;padding:11px 12px;border:1px solid var(--line);border-top:2px solid var(--acid);border-radius:4px;background:rgba(12,16,14,.92);font-size:.7rem;color:var(--muted)}
.layer-panel[hidden]{display:none}
.lp-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.lp-row b{color:var(--text);font-size:.74rem}
.layer-panel input[type=range]{width:100%;accent-color:var(--acid)}
.layer-panel label.lp-row{display:grid;grid-template-columns:auto 1fr;gap:8px}
.lp-check{display:flex;align-items:center;gap:6px;cursor:pointer}
.lp-check[hidden]{display:none}
.lp-legend{display:grid;gap:3px}
.lp-legend span{display:flex;align-items:center;gap:6px}
.lp-legend i{width:14px;height:3px;border-radius:2px}
.lp-legend b{margin-left:auto;color:var(--text);font-weight:500}
.lp-hint{font-size:.6rem;opacity:.7}
#layersView.active{background:var(--acid);color:#111}
