/* brylka.pl — edytor: wstążka u góry, drzewo operacji z lewej, scena 3D, karta wydruku z prawej (jak etykieta szpuli). */
html,body{height:100%;overflow:hidden}
.apka{display:grid;grid-template-columns:264px minmax(0,1fr) 300px;grid-template-rows:auto minmax(0,1fr);height:100dvh}

/* ---------- pasek górny ---------- */
.pasek{grid-column:1/-1;display:flex;align-items:stretch;gap:6px;padding:6px 10px;background:var(--karta);border-bottom:1px solid var(--kreska);min-width:0;z-index:5}
.logo{display:flex;align-items:center;gap:8px;padding:0 10px 0 4px;color:var(--tusz);text-decoration:none;font:600 20px/1 var(--f-din);letter-spacing:.01em;flex:none}
.logo svg{flex:none}
.logo b{font-weight:600}
.plik{position:relative;display:flex;align-items:center;flex:none}
.wstazka{display:flex;align-items:stretch;gap:2px;overflow-x:auto;scrollbar-width:thin;min-width:0;flex:1;padding-left:6px;border-left:1px solid var(--kreska)}
.wstazka[hidden]{display:none}
.wst{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:68px;min-height:52px;padding:6px 6px 5px;border:1px solid transparent;border-radius:10px;
  background:transparent;color:var(--tusz-2);font:500 12px/1.15 var(--f-tekst);cursor:pointer;white-space:nowrap;transition:background-color 140ms ease,color 140ms ease,transform 140ms var(--ease-out)}
.wst:active{transform:scale(.96)}
@media (hover:hover) and (pointer:fine){.wst:hover{background:var(--plyta);color:var(--tusz)}}
.wst[aria-pressed=true]{background:var(--malina-tlo);color:var(--malina-d);border-color:#EBC3D3}
.wst[disabled]{opacity:.38;cursor:not-allowed}
.wst.glowny{color:var(--tusz)}
.wst-sep{width:1px;background:var(--kreska);margin:6px 4px;flex:none}
.cofnij{display:flex;align-items:center;gap:2px;flex:none;padding-left:6px;border-left:1px solid var(--kreska)}
.ikona-btn{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:10px;background:transparent;color:var(--tusz-2);cursor:pointer;transition:background-color 140ms ease,transform 140ms var(--ease-out)}
.ikona-btn:active{transform:scale(.94)}
@media (hover:hover) and (pointer:fine){.ikona-btn:hover{background:var(--plyta);color:var(--tusz)}}
.ikona-btn[disabled]{opacity:.35;cursor:not-allowed}
.przelacz-panel{display:none}

/* wstążka szkicu: pasek narzędzi szkicownika przeniesiony z jego komponentu */
.wstazka-szkic{display:flex;align-items:stretch;gap:6px;min-width:0;flex:1;padding-left:6px;border-left:1px solid var(--kreska)}
.wstazka-szkic[hidden]{display:none}
.wstazka-szkic .sz-bar{background:transparent;border:0;padding:0;flex:1;min-width:0}
.wyjdz-szkic{align-self:center;flex:none}

/* menu Plik */
.menu{position:absolute;top:calc(100% + 6px);left:0;min-width:230px;background:var(--karta);border:1px solid var(--kreska);border-radius:var(--r);box-shadow:var(--cien-2);padding:6px;z-index:30;
  transform-origin:top left;transition:opacity 150ms var(--ease-out),transform 150ms var(--ease-out)}
.menu[hidden]{display:block;opacity:0;transform:scale(.97) translateY(-4px);pointer-events:none;visibility:hidden}
.menu button{display:flex;align-items:center;gap:10px;width:100%;min-height:42px;padding:8px 10px;border:0;border-radius:8px;background:transparent;text-align:left;cursor:pointer;font:500 14px var(--f-tekst)}
.menu button:hover,.menu button:focus-visible{background:var(--plyta)}
.menu hr{border:0;border-top:1px solid var(--kreska);margin:5px 4px}
.menu kbd{margin-left:auto;font:12px var(--f-mono);color:var(--tusz-3)}

/* ---------- drzewo operacji ---------- */
.lewy{background:var(--karta-2);border-right:1px solid var(--kreska);display:flex;flex-direction:column;min-height:0;overflow:hidden}
.drzewo{flex:1;min-height:0;overflow:auto;padding:10px 8px 16px;overscroll-behavior:contain}
.drzewo[hidden]{display:none}
.nazwa-czesci{display:flex;align-items:center;gap:8px;margin:0 2px 8px;padding:6px 8px;border-radius:8px;font:600 15px var(--f-din)}
.nazwa-czesci input{flex:1;min-width:0;border:1px solid transparent;border-radius:6px;background:transparent;font:inherit;color:inherit;padding:3px 5px}
.nazwa-czesci input:hover{border-color:var(--kreska)}
.nazwa-czesci input:focus{border-color:var(--malina);outline:none;background:var(--karta)}
.lista-cech{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px}
.lista-cech ol{list-style:none;margin:0;padding:0 0 0 22px}
.cecha{display:flex;align-items:center;gap:8px;min-height:36px;padding:4px 8px;border-radius:8px;cursor:pointer;user-select:none;font-size:14px;color:var(--tusz)}
.cecha:hover{background:var(--plyta)}
.cecha[aria-selected=true]{background:var(--malina-tlo);color:var(--malina-d)}
.cecha .ik{flex:none;display:grid;place-items:center;width:22px;height:22px;color:var(--tusz-2)}
.cecha[aria-selected=true] .ik{color:var(--malina)}
.cecha .nz{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cecha .nd{font:600 12px var(--f-mono);color:var(--sw-nd)}
.cecha.wylaczona{color:var(--tusz-3)}
.cecha.wylaczona .nz{text-decoration:line-through;text-decoration-color:var(--kreska-2)}
.cecha.blad .nz{color:var(--zle)}
.znak-stanu{flex:none;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font:700 11px var(--f-mono);color:#fff}
.znak-stanu.blad{background:var(--zle)} .znak-stanu.ostrz{background:var(--slonce);color:var(--tusz)}
.cecha .wiecej{opacity:0;width:28px;height:28px;border:0;border-radius:6px;background:transparent;cursor:pointer;color:var(--tusz-2)}
.cecha:hover .wiecej,.cecha:focus-within .wiecej,.cecha[aria-selected=true] .wiecej{opacity:1}
.cecha.baza{color:var(--tusz-2)}
.wycofanie{height:12px;margin:3px 6px;border-radius:3px;cursor:ns-resize;touch-action:none;
  background:repeating-linear-gradient(135deg,var(--slonce) 0 6px,#2a2724 6px 12px);opacity:.85}
.wycofanie:hover,.wycofanie:focus-visible{opacity:1;outline:2px solid var(--slonce);outline-offset:2px}
.wycofanie.ciagniete{opacity:1;box-shadow:0 2px 10px rgba(0,0,0,.25)}

/* wymiary wybranej operacji (zmiana liczb bez wchodzenia w szkic) */
.wymiary{border-top:1px solid var(--kreska);padding:10px 12px 14px;background:var(--karta);max-height:46%;overflow:auto}
.wymiary[hidden]{display:none}
.wymiary h3{margin:0 0 8px;font:600 13px var(--f-din);color:var(--tusz-2);letter-spacing:.02em}
.wym-wiersz{display:grid;grid-template-columns:minmax(0,1fr) 108px;align-items:center;gap:8px;margin:4px 0}
.wym-wiersz span{font-size:13.5px;color:var(--tusz-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pole-mm{display:flex;align-items:center;border:1px solid var(--kreska-2);border-radius:8px;background:var(--karta);min-height:38px}
.pole-mm:focus-within{border-color:var(--malina);box-shadow:0 0 0 3px var(--malina-tlo)}
.pole-mm input{flex:1;min-width:0;border:0;background:transparent;padding:6px 8px;font:500 15px var(--f-din);font-variant-numeric:tabular-nums;color:var(--tusz);outline:none;text-align:right}
.pole-mm em{font:normal 12px var(--f-tekst);color:var(--tusz-3);padding-right:8px}

/* ---------- PropertyManager (edycja operacji) ---------- */
.pm{flex:1;min-height:0;overflow:auto;padding:12px 12px 18px;display:flex;flex-direction:column;gap:14px;overscroll-behavior:contain}
.pm[hidden]{display:none}
.pm-glowa{display:flex;align-items:center;gap:8px}
.pm-glowa h2{flex:1;margin:0;font:600 17px var(--f-din)}
.pm-tak,.pm-nie{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:12px;cursor:pointer;transition:transform 140ms var(--ease-out),background-color 140ms ease}
.pm-tak{background:var(--mieta);color:#fff} .pm-nie{background:var(--plyta-2);color:var(--tusz-2)}
.pm-tak:active,.pm-nie:active{transform:scale(.94)}
@media (hover:hover) and (pointer:fine){.pm-tak:hover{background:#257A60}.pm-nie:hover{background:var(--kreska)}}
.pm-sekcja{display:flex;flex-direction:column;gap:8px}
.pm-sekcja > label,.pm-et{font:600 12.5px var(--f-tekst);color:var(--tusz-2)}
.seg{display:flex;border:1px solid var(--kreska-2);border-radius:10px;overflow:hidden;background:var(--karta)}
.seg button{flex:1;min-height:42px;border:0;background:transparent;padding:6px 4px;font:500 13px var(--f-tekst);cursor:pointer;color:var(--tusz-2);transition:background-color 140ms ease,color 140ms ease}
.seg button + button{border-left:1px solid var(--kreska)}
.seg button[aria-pressed=true]{background:var(--tusz);color:#fff}
.seg button:disabled{color:var(--tusz-3);background:var(--plyta-2);cursor:not-allowed;text-decoration:line-through;text-decoration-color:var(--kreska-2)}
.chk{display:flex;align-items:center;gap:10px;min-height:40px;font-size:14px;cursor:pointer}
.chk input{width:20px;height:20px;accent-color:var(--malina)}
.wybor-lista{display:flex;flex-direction:column;gap:4px;min-height:44px;padding:6px;border:1px dashed var(--kreska-2);border-radius:10px;background:var(--karta)}
.wybor-lista.aktywna{border-color:var(--malina);background:var(--malina-tlo)}
.wybor-lista .el{display:flex;align-items:center;gap:6px;font-size:13px;padding:4px 6px;border-radius:6px;background:var(--plyta)}
.wybor-lista .el button{margin-left:auto;border:0;background:transparent;cursor:pointer;color:var(--tusz-3);width:28px;height:28px;border-radius:6px}
.wybor-lista .pusto{font-size:13px;color:var(--tusz-3);padding:6px}
.pm-blad{padding:10px 12px;border-radius:10px;background:var(--zle-tlo);color:var(--zle);font-size:13.5px}
.pm-podp{font-size:13px;color:var(--tusz-3);margin:0}
.plaszczyzny{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.plaszczyzny button{display:flex;flex-direction:column;align-items:center;gap:4px;min-height:74px;padding:8px 4px;border:1px solid var(--kreska-2);border-radius:10px;background:var(--karta);cursor:pointer;font:500 12.5px var(--f-tekst);color:var(--tusz-2)}
.plaszczyzny button:hover{border-color:var(--malina);color:var(--tusz)}

/* ---------- scena ---------- */
.scena{position:relative;min-width:0;min-height:0;overflow:hidden;
  background:radial-gradient(120% 90% at 50% 0%,#FBF9F4 0%,var(--plyta) 60%,#E7E1D4 100%)}
.w3{position:absolute;inset:0}
.w3-plotno{display:block;cursor:grab;touch-action:none}
.widoki{position:absolute;top:10px;left:50%;transform:translateX(-50%);display:flex;gap:2px;padding:4px;background:var(--karta);border:1px solid var(--kreska);border-radius:12px;box-shadow:var(--cien);z-index:3}
.widoki .ikona-btn{width:40px;height:40px}
.widoki .sep{width:1px;background:var(--kreska);margin:6px 2px}
.szkic-host{position:absolute;inset:0;z-index:4}
.szkic-host[hidden]{display:none}
.podpowiedz{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);max-width:min(560px,calc(100% - 28px));padding:9px 14px;border-radius:12px;background:rgba(31,29,26,.88);color:#fff;font-size:14px;line-height:1.35;
  box-shadow:var(--cien);z-index:6;text-align:center;transition:opacity 180ms var(--ease-out),transform 180ms var(--ease-out)}
.podpowiedz[hidden]{display:block;opacity:0;transform:translate(-50%,6px);pointer-events:none}
.ladowanie{position:absolute;inset:0;display:grid;place-items:center;z-index:7;background:rgba(244,241,234,.6);transition:opacity 220ms ease}
.ladowanie[hidden]{display:grid;opacity:0;pointer-events:none}
.ladowanie .karta-l{display:flex;flex-direction:column;align-items:center;gap:12px;font:500 14px var(--f-din);color:var(--tusz-2)}
/* animacja ładowania = warstwy narastające jak na drukarce */
.warstwy-l{display:flex;flex-direction:column-reverse;gap:3px;width:56px}
.warstwy-l i{display:block;height:5px;border-radius:3px;background:var(--malina);transform-origin:left;animation:warstwa 1.6s var(--ease-out) infinite}
.warstwy-l i:nth-child(2){animation-delay:.12s;width:92%}.warstwy-l i:nth-child(3){animation-delay:.24s;width:84%}.warstwy-l i:nth-child(4){animation-delay:.36s;width:76%}.warstwy-l i:nth-child(5){animation-delay:.48s;width:68%}
@keyframes warstwa{0%{transform:scaleX(0);opacity:.3}40%,80%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:.25}}

/* start (pusty stół): jedno zdanie i gotowe bryły */
.start{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(620px,calc(100% - 28px));max-height:calc(100% - 28px);overflow:auto;z-index:5;
  background:var(--karta);border:1px solid var(--kreska);border-radius:18px;box-shadow:var(--cien-2);padding:22px 22px 20px;
  transition:opacity 200ms var(--ease-out),transform 200ms var(--ease-out)}
.start[hidden]{display:block;opacity:0;transform:translate(-50%,calc(-50% + 8px)) scale(.98);pointer-events:none;visibility:hidden}
.start h1{margin:0 0 4px;font:600 22px/1.25 var(--f-din)}
.start p{margin:0 0 16px;color:var(--tusz-2)}
.galeria{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.galeria button{display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:6px 6px 9px;border:1px solid var(--kreska);border-radius:12px;background:var(--karta-2);cursor:pointer;text-align:left;
  transition:border-color 140ms ease,transform 160ms var(--ease-out),box-shadow 160ms ease}
.galeria button:active{transform:scale(.97)}
@media (hover:hover) and (pointer:fine){.galeria button:hover{border-color:var(--malina);box-shadow:var(--cien)}}
.galeria .min{aspect-ratio:24/17;border-radius:8px;background:var(--plyta) center/contain no-repeat;display:grid;place-items:center}
.galeria b{font:600 14px var(--f-din);padding:4px 4px 0}
.galeria small{font-size:12px;color:var(--tusz-3);padding:0 4px}
.galeria .zero{justify-content:center;align-items:center;text-align:center;border-style:dashed;background:transparent}
.galeria .zero .min{background:transparent}

/* ---------- karta wydruku (etykieta szpuli) ---------- */
.prawy{background:var(--karta-2);border-left:1px solid var(--kreska);overflow:auto;padding:12px;overscroll-behavior:contain}
.szpula{background:var(--karta);border:1px solid var(--kreska);border-radius:16px;box-shadow:var(--cien);overflow:hidden}
.szpula-glowa{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px dashed var(--kreska-2)}
.szpula-glowa .kolo{flex:none;width:34px;height:34px;border-radius:50%;background:var(--kolor,#7CCFB4);box-shadow:inset 0 0 0 7px rgba(255,255,255,.55),inset 0 0 0 8px rgba(0,0,0,.08)}
.szpula-glowa b{display:block;font:600 16px/1.2 var(--f-din)}
.szpula-glowa small{color:var(--tusz-3);font-size:12.5px}
.szpula-tresc{padding:12px 14px;display:flex;flex-direction:column;gap:12px}
.kolory{display:flex;flex-wrap:wrap;gap:8px}
.kolory button{width:34px;height:34px;border-radius:50%;border:0;background:var(--k);cursor:pointer;box-shadow:inset 0 0 0 1px rgba(0,0,0,.12);transition:transform 140ms var(--ease-out)}
.kolory button:active{transform:scale(.92)}
.kolory button[aria-pressed=true]{box-shadow:inset 0 0 0 1px rgba(0,0,0,.12),0 0 0 2px var(--karta),0 0 0 4px var(--tusz)}
.ilosc{display:flex;align-items:center;gap:6px}
.ilosc input{width:64px;text-align:center;min-height:40px;border:1px solid var(--kreska-2);border-radius:8px;font:600 16px var(--f-din);background:var(--karta)}
.ilosc button{width:40px;height:40px;border:1px solid var(--kreska-2);border-radius:8px;background:var(--karta);cursor:pointer;font:600 18px var(--f-din)}
.parametry{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:13.5px}
.parametry dt{color:var(--tusz-3)} .parametry dd{margin:0;text-align:right;font-family:var(--f-din);font-variant-numeric:tabular-nums}
.cena{padding:12px 14px 14px;border-top:1px dashed var(--kreska-2);background:var(--karta-2);display:flex;flex-direction:column;gap:8px}
.cena-wiersz{display:flex;justify-content:space-between;font-size:13.5px;color:var(--tusz-2)}
.cena-razem{display:flex;justify-content:space-between;align-items:baseline}
.cena-razem b{font:600 30px/1 var(--f-din);font-variant-numeric:tabular-nums;color:var(--tusz)}
.cena-razem span{font-size:13px;color:var(--tusz-3)}
.ostrzezenie{padding:9px 11px;border-radius:10px;background:var(--slonce-tlo);color:#7A5300;font-size:13px}
.ostrzezenie[hidden]{display:none}
.podglad-warstw{display:flex;flex-direction:column;gap:6px;margin-top:12px;padding:12px 14px;background:var(--karta);border:1px solid var(--kreska);border-radius:14px}
.podglad-warstw label{display:flex;justify-content:space-between;font-size:13px;color:var(--tusz-2)}
.podglad-warstw input[type=range]{width:100%;accent-color:var(--malina);min-height:32px}
.stopka{margin:14px 4px 0;font-size:12.5px;color:var(--tusz-3);display:flex;gap:12px;flex-wrap:wrap}
.stopka a{color:inherit}

/* ---------- okna dialogowe ---------- */
dialog{border:0;padding:0;border-radius:18px;box-shadow:var(--cien-2);background:var(--karta);color:var(--tusz);max-width:min(680px,calc(100% - 24px));width:100%;
  opacity:1;transform:scale(1);transition:opacity 200ms var(--ease-out),transform 200ms var(--ease-out),overlay 200ms allow-discrete,display 200ms allow-discrete}
dialog:not([open]){opacity:0;transform:scale(.97)}
@starting-style{dialog[open]{opacity:0;transform:scale(.97)}}
dialog::backdrop{background:rgba(31,29,26,.38)}
.dlg{padding:20px 22px 22px;display:flex;flex-direction:column;gap:14px;max-height:calc(100dvh - 40px);overflow:auto}
.dlg-glowa{display:flex;align-items:center;gap:10px}
.dlg-glowa h2{flex:1;margin:0;font:600 20px var(--f-din)}
/* zakup pliku STEP */
.dlg-step{max-width:min(460px,calc(100% - 24px))}
.step-opis{margin:0;color:var(--tusz-2);font-size:14.5px;line-height:1.5}
.step-cena{display:flex;align-items:baseline;justify-content:space-between;margin:0;padding:12px 14px;border-radius:12px;background:var(--plyta)}
.step-cena dt{color:var(--tusz-2)} .step-cena dd{margin:0;font:700 22px var(--f-din)}
.step-akcje{display:grid;gap:8px}
.step-zgoda{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;color:var(--tusz-2);line-height:1.45;cursor:pointer}
.step-zgoda input{width:20px;height:20px;flex:none;margin-top:1px;accent-color:var(--malina)}
.step-akcje .przycisk{min-height:48px;justify-content:center}
.step-blad{margin:0;padding:10px 12px;border-radius:10px;background:var(--zle-tlo);color:var(--zle);font-size:14px}
.formularz{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}
.formularz .cale{grid-column:1/-1}
.pole{display:flex;flex-direction:column;gap:5px}
.pole label{font:600 13px var(--f-tekst);color:var(--tusz-2)}
.pole input{min-height:44px;border:1px solid var(--kreska-2);border-radius:10px;padding:8px 12px;font:16px var(--f-tekst);background:var(--karta);color:var(--tusz)}
.pole input:focus{border-color:var(--malina);outline:none;box-shadow:0 0 0 3px var(--malina-tlo)}
.pole input[aria-invalid=true]{border-color:var(--zle)}
.pole .blad{font-size:12.5px;color:var(--zle)}
.pole .info{font-size:13px;color:var(--mieta-t)}
.etykieta-paczki{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;padding:12px 14px;border:1.5px solid var(--tusz);border-radius:10px;font-size:14px}
.etykieta-paczki dt{font:600 11.5px var(--f-din);text-transform:uppercase;letter-spacing:.06em;color:var(--tusz-3);align-self:center}
.etykieta-paczki dd{margin:0;font-family:var(--f-din);font-variant-numeric:tabular-nums}
.akcje{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.zgoda{display:flex;gap:10px;align-items:flex-start;font-size:14px}
.zgoda input{width:20px;height:20px;margin-top:1px;accent-color:var(--malina)}
.potwierdzenie{display:flex;flex-direction:column;gap:12px}
.potwierdzenie .numer{font:600 26px var(--f-din)}

.toast{position:fixed;left:50%;bottom:72px;transform:translateX(-50%);z-index:50;padding:10px 16px;border-radius:12px;background:var(--tusz);color:#fff;font-size:14px;box-shadow:var(--cien-2);max-width:min(520px,calc(100% - 24px));
  transition:opacity 180ms var(--ease-out),transform 180ms var(--ease-out)}
.toast[hidden]{display:block;opacity:0;transform:translate(-50%,6px);pointer-events:none}

/* ---------- szkicownik nad sceną 3D ---------- */
.szkic-host{--sz-tlo:transparent;--sz-pole:#fff;--sz-pasek:transparent;--sz-panel:var(--karta-2);--sz-widok:#F4F1EA;--sz-blacha:rgba(124,207,180,.18);
  --sz-krawedz:var(--kreska);--sz-krawedz2:var(--kreska-2);--sz-tekst:var(--tusz);--sz-tekst2:var(--tusz-2);--sz-tekst3:var(--tusz-3);--sz-nd:var(--sw-nd);--sz-wym:#2a2724;--sz-pom:#8B8478;
  --sz-karta:rgba(255,255,255,.95);--sz-zaslona:rgba(244,241,234,.88);--sz-akcent-tlo:var(--malina-tlo);--sz-przycisk:var(--malina);--sz-przycisk-h:var(--malina-d);--sz-etykieta:var(--tusz);
  --sz-siatka1:rgba(120,108,88,.10);--sz-siatka5:rgba(120,108,88,.20);--sz-gwint:#2a2724;
  --laser:var(--malina);--laser-d:var(--malina-d);--f-body:var(--f-tekst);--f-mono:var(--f-mono);--r:0;--sh:var(--cien);--bad:var(--zle);--bad-bg:var(--zle-tlo);--line:var(--kreska);--line-2:var(--kreska-2);--ink:var(--tusz);--ink-2:var(--tusz-2);--ink-3:var(--tusz-3)}
.szkic-host .sz{height:100%;border:0;border-radius:0;background:transparent}
.szkic-host .sz-main{height:100%}
.szkic-host .sz-view{background:transparent}
.wstazka-szkic .sz-btn{--sz-tekst2:var(--tusz-2);--sz-tekst:var(--tusz);--sz-pole:var(--plyta);--sz-krawedz2:var(--kreska-2);--laser-d:var(--malina-d);font-family:var(--f-tekst)}
.wstazka-szkic .sz-btn[aria-pressed=true]{background:var(--malina-tlo);border-color:#EBC3D3;color:var(--malina-d);box-shadow:none}
.wstazka-szkic .sz-grp{border-right:1px solid var(--kreska)}

/* ---------- telefon i wąskie okna ---------- */
@media (max-width:1100px){.apka{grid-template-columns:236px minmax(0,1fr) 272px}}
@media (max-width:900px){
  .apka{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}
  .lewy,.prawy{position:fixed;top:var(--pasek-h,66px);bottom:0;width:min(330px,88vw);z-index:20;box-shadow:var(--cien-2);transition:transform 240ms var(--ease-out)}
  .lewy{left:0;transform:translateX(-102%)} .prawy{right:0;transform:translateX(102%)}
  .apka[data-panel=lewy] .lewy,.apka[data-panel=prawy] .prawy{transform:none}
  .przelacz-panel{display:grid}
  .logo b{display:none}
  .wst{min-width:60px}
  .galeria{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .start{top:12px;transform:translateX(-50%);max-height:calc(100% - 90px);overflow:auto;padding:16px 14px}
  .start[hidden]{transform:translate(-50%,8px) scale(.98)}
  .start h1{font-size:19px}
  .galeria .min{aspect-ratio:4/3}
  .formularz{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){.warstwy-l i{animation:none;transform:none;opacity:1}}
/* szkicownik (z wypalka.pl) chowa warstwy atrybutem hidden, a jego CSS nadaje im display — hidden ma wygrać */
.sz [hidden],.widoki[hidden]{display:none!important}

/* telefon: pasek górny mieści się w 360 px, cena zawsze pod kciukiem */
.pasek{overflow:hidden}
.cena-mob{display:none}
@media (max-width:900px){
  .pasek{gap:2px;padding:4px 6px}
  .plik .wst span{display:none}
  .plik .wst{min-width:44px}
  .wst{min-width:58px;font-size:11px;padding:6px 3px 5px}
  .cofnij{padding-left:2px}
  .cofnij [data-c=ponow]{display:none}
  .widoki{top:auto;bottom:74px;left:12px;transform:none}
  .cena-mob{display:flex;position:absolute;right:12px;bottom:14px;z-index:6;align-items:center;gap:10px;min-height:48px;padding:6px 8px 6px 16px;border:0;border-radius:999px;
    background:var(--tusz);color:#fff;font:600 16px var(--f-din);box-shadow:var(--cien-2);cursor:pointer;transition:transform 160ms var(--ease-out)}
  .cena-mob:active{transform:scale(.97)}
  .cena-mob span{padding:8px 12px;border-radius:999px;background:var(--malina);font:600 14px var(--f-tekst)}
  .cena-mob[hidden]{display:none}
  .podpowiedz{bottom:74px}
}

/* telefon: wstążka w drugim rzędzie paska (cała szerokość), przyciski dotykowe ≥ 44 px */
@media (max-width:900px){
  .pasek{flex-wrap:wrap;overflow:visible}
  .wstazka,.wstazka-szkic{order:9;flex:1 0 100%;border-left:0;border-top:1px solid var(--kreska);padding:4px 0 0}
  .logo{margin-right:auto}
}
@media (pointer:coarse){
  .widoki .ikona-btn{width:44px;height:44px}
  .cecha{min-height:44px} .cecha .wiecej{opacity:1;width:44px;height:44px}
  .kolory button{width:44px;height:44px} .kolory{gap:10px}
  .ilosc button,.ilosc input{min-height:44px} .ilosc button{width:44px}
  .pole-mm{min-height:44px} .seg button{min-height:44px} .menu button{min-height:44px}
}
.edytuj-btn{margin-left:auto;min-height:36px;padding:4px 12px;border:1px solid var(--kreska-2);border-radius:8px;background:var(--karta);font:600 13px var(--f-tekst);cursor:pointer;color:var(--tusz)}
.edytuj-btn:hover{border-color:var(--malina)}
.wymiary h3{display:flex;align-items:center;gap:8px}
.ladowanie.blad .warstwy-l i{animation:none;opacity:.35}
.ladowanie .karta-l{max-width:320px;text-align:center}
.cena-pusta{font-size:13.5px;color:var(--tusz-3)}

/* okno „Modyfikuj” jako wyraźny dymek przy wymiarze: wartość zaznaczona, ✓ = tak (zielony), ✕ = nie */
.szkic-host{--ok:var(--mieta);--sz-na-ok:#fff;--sh-lg:var(--cien-2)}
/* ten sam wygląd co dymek wymiaru na bryle (.wym3d-mod): cienka ramka, rząd pole + ✓ + ✕ tej samej wysokości */
.szkic-host .sz-mod{--wys:42px;width:244px;box-sizing:border-box;padding:10px;border:1px solid var(--kreska-2);background:var(--karta);transform-origin:var(--strzalka,50%) 0;
  transition:opacity 140ms var(--ease-out),transform 140ms var(--ease-out)}
@starting-style{.szkic-host .sz-mod{opacity:0;transform:translateY(-4px) scale(.97)}}
.szkic-host .sz-mod::before{content:"";position:absolute;top:-7px;left:var(--strzalka,50%);width:12px;height:12px;background:var(--karta);border-left:1px solid var(--kreska-2);border-top:1px solid var(--kreska-2);border-top-left-radius:3px;transform:translateX(-50%) rotate(45deg)}
.szkic-host .sz-mod .t{align-self:stretch;background:transparent;color:var(--tusz);padding:0 2px;font:600 13px/1.3 var(--f-tekst);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.szkic-host .sz-mod .w{display:grid;grid-template-columns:minmax(0,1fr) var(--wys) var(--wys);gap:6px}
.szkic-host .sz-mod .inp{min-width:0;min-height:var(--wys);box-sizing:border-box;border-radius:8px;background:var(--karta)}
.szkic-host .sz-mod .inp:focus-within{border-color:var(--malina);box-shadow:0 0 0 3px var(--malina-tlo)}
.szkic-host .sz-mod .inp input{width:100%;padding:0 4px 0 10px;font:600 20px var(--f-din);font-variant-numeric:tabular-nums}
.szkic-host .sz-mod .inp em{font:normal 12px var(--f-tekst);color:var(--tusz-3)}
.szkic-host .sz-mod .w button{display:grid;place-items:center;width:var(--wys);height:var(--wys);min-height:0;padding:0;box-sizing:border-box;color:var(--tusz-2);background:var(--karta);
  transition:transform 120ms var(--ease-out),background-color 120ms ease,border-color 120ms ease,color 120ms ease}
.szkic-host .sz-mod .w button:active{transform:scale(.95)}
.szkic-host .sz-mod .w button:focus-visible{outline:2px solid var(--malina);outline-offset:2px}
.szkic-host .sz-mod .w .ok{background:var(--mieta);border-color:var(--mieta);color:#fff}
@media (hover:hover) and (pointer:fine){.szkic-host .sz-mod .w .ok:hover{background:var(--mieta-t);border-color:var(--mieta-t)}.szkic-host .sz-mod .w .nie:hover{background:var(--zle-tlo);border-color:var(--zle);color:var(--zle)}}
@media (pointer:coarse){.szkic-host .sz-mod{--wys:44px;width:256px}}
@media (prefers-reduced-motion:reduce){.szkic-host .sz-mod{transition:opacity 140ms ease}@starting-style{.szkic-host .sz-mod{transform:none}}.szkic-host .sz-mod .w button:active{transform:none}}
/* krawędzie bryły w szkicu: pomarańczowe, ciągłe, nieruchome */
.szkic-host .sz-svg .el.odn{stroke:#B86A00;stroke-dasharray:none;stroke-width:1.6;opacity:.9}
.szkic-host .sz-svg .el.odn.sel{stroke:var(--malina);stroke-width:3}

/* dwuklik na bryle: panel wymiarów mrugnie, żeby było widać, gdzie zmieniać */
@keyframes mignij{0%{box-shadow:inset 0 0 0 2px var(--malina)}100%{box-shadow:inset 0 0 0 2px transparent}}
.wymiary.mignij{animation:mignij 900ms var(--ease-out)}

/* karta „Na stole”: tak położymy bryłę na drukarce, suwak = warstwy */
.na-stole-glowa{display:flex;justify-content:space-between;align-items:baseline}
.stol-podglad{height:170px;border-radius:10px;background:var(--plyta);overflow:hidden}
.ulozenie button{font-size:12.5px}

/* wymiary na bryle: liczby jak na rysunku, klik = dymek ✓/✕ */
.w3-wymiary{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:hidden}
.w3-wym{position:absolute;left:0;top:0;pointer-events:auto;min-height:30px;min-width:30px;padding:3px 8px;border:1px solid var(--tusz);border-radius:7px;background:var(--karta);
  color:var(--tusz);font:600 14px/1.2 var(--f-din);font-variant-numeric:tabular-nums;cursor:pointer;white-space:nowrap;box-shadow:0 1px 3px rgba(31,29,26,.18);
  transition:background-color 120ms ease,color 120ms ease,border-color 120ms ease}
@media (hover:hover) and (pointer:fine){.w3-wym:hover{background:var(--malina-tlo);border-color:var(--malina);color:var(--malina-d)}}
.w3-wym.ref{cursor:default;border-style:dashed;color:var(--tusz-2)}
.w3-wym.aktywny{background:var(--malina);border-color:var(--malina);color:#fff}
@media (pointer:coarse){.w3-wym{min-height:40px;min-width:40px;font-size:15px}}
/* dymek wymiaru: jedna karta, pole i oba przyciski w jednym rzędzie tej samej wysokości (siatka, pole może się zwęzić) */
.wym3d-mod{--wys:42px;position:absolute;z-index:8;width:244px;box-sizing:border-box;padding:10px;background:var(--karta);border:1px solid var(--kreska-2);border-radius:12px;box-shadow:var(--cien-2);
  display:flex;flex-direction:column;gap:8px;transform-origin:var(--strzalka,50%) 0;transition:opacity 140ms var(--ease-out),transform 140ms var(--ease-out)}
@starting-style{.wym3d-mod{opacity:0;transform:translateY(-4px) scale(.97)}}
.wym3d-mod[hidden]{display:none}
.wym3d-mod::before{content:"";position:absolute;top:-7px;left:var(--strzalka,50%);width:12px;height:12px;background:var(--karta);border-left:1px solid var(--kreska-2);border-top:1px solid var(--kreska-2);border-top-left-radius:3px;transform:translateX(-50%) rotate(45deg)}
.wym3d-mod .t{display:flex;align-items:baseline;gap:6px;min-width:0;padding:0 2px;font:600 13px/1.3 var(--f-tekst);color:var(--tusz)}
.wym3d-mod .t small{flex:none;font:500 11.5px var(--f-tekst);color:var(--tusz-3)}
.wym3d-mod .t b{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wym3d-mod .w{display:grid;grid-template-columns:minmax(0,1fr) var(--wys) var(--wys);gap:6px;align-items:stretch}
.wym3d-mod .pole-mm{min-width:0;min-height:var(--wys);box-sizing:border-box}
.wym3d-mod .pole-mm input{width:100%;padding:0 4px 0 10px;font:600 20px var(--f-din);font-variant-numeric:tabular-nums;text-align:left}
.wym3d-mod .w button{display:grid;place-items:center;width:var(--wys);height:var(--wys);padding:0;box-sizing:border-box;border-radius:9px;border:1px solid var(--kreska-2);background:var(--karta);color:var(--tusz-2);cursor:pointer;
  transition:transform 120ms var(--ease-out),background-color 120ms ease,border-color 120ms ease,color 120ms ease}
.wym3d-mod .w button:active{transform:scale(.95)}
.wym3d-mod .w button:focus-visible{outline:2px solid var(--malina);outline-offset:2px}
.wym3d-mod .w .ok{background:var(--mieta);border-color:var(--mieta);color:#fff}
@media (hover:hover) and (pointer:fine){.wym3d-mod .w .ok:hover{background:var(--mieta-t);border-color:var(--mieta-t)}.wym3d-mod .w .nie:hover{background:var(--zle-tlo);border-color:var(--zle);color:var(--zle)}}
@media (pointer:coarse){.wym3d-mod{--wys:44px;width:256px}}
@media (prefers-reduced-motion:reduce){.wym3d-mod{transition:opacity 140ms ease}@starting-style{.wym3d-mod{transform:none}}.wym3d-mod .w button:active{transform:none}}
/* przeciąganie liczby na bryle: chwyt bez zaznaczania tekstu, palcem też (touch-action), podniesiona w trakcie */
.w3-wym.ruchomy{touch-action:none;user-select:none;-webkit-user-select:none}
.w3-wym.ciagnie{cursor:grabbing;background:var(--malina-tlo);border-color:var(--malina);color:var(--malina-d);box-shadow:0 6px 16px rgba(31,29,26,.22)}
.w3-wymiary.ciagnie .w3-wym:not(.ciagnie){pointer-events:none}
/* cienkie ścianki: bursztyn = kruche, czerwień = za cienkie; „Pokaż” barwi te miejsca na bryle */
.scianki{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:10px;background:var(--slonce-tlo);color:#7A5300;font-size:13px;line-height:1.35;border-left:3px solid #E08A00}
.scianki[hidden]{display:none}
.scianki.za{background:#FCEBEA;color:#8E1B1B;border-left-color:#C62828}
.scianki .t{flex:1}
.scianki .pokaz{flex:none;min-height:36px;min-width:64px;padding:0 12px;border-radius:8px;border:1px solid currentColor;background:transparent;color:inherit;font:600 13px var(--f-tekst);cursor:pointer;transition:background-color 120ms ease,transform 120ms var(--ease-out)}
.scianki .pokaz[aria-pressed="true"]{color:#fff;background:#7A5300}
.scianki.za .pokaz[aria-pressed="true"]{background:#8E1B1B}
.scianki .pokaz:active{transform:scale(.97)}
@media (hover:hover) and (pointer:fine){.scianki .pokaz:hover{background:rgba(255,255,255,.6)}}
@media (pointer:coarse){.scianki .pokaz{min-height:44px}}

/* ---------- projekt: części i złożenie (nad drzewem). Kropka części = szpula filamentu w jej kolorze w złożeniu ---------- */
.projekt{flex:none;padding:10px 8px 8px;border-bottom:1px solid var(--kreska);background:var(--karta-2);max-height:38%;overflow:auto;overscroll-behavior:contain}
.pr-glowa{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 4px 6px}
.pr-nowa{display:inline-flex;align-items:center;gap:5px;min-height:32px;padding:4px 10px;border:1px solid var(--kreska-2);border-radius:999px;background:var(--karta);font:500 12.5px var(--f-tekst);color:var(--tusz-2);cursor:pointer;transition:border-color 140ms ease,color 140ms ease,transform 140ms var(--ease-out)}
.pr-nowa:active{transform:scale(.97)}
.pr-lista{display:flex;flex-direction:column;gap:2px}
.pr-wiersz{display:flex;align-items:center;gap:2px}
.pr-dok{flex:1;min-width:0;display:flex;align-items:center;gap:8px;min-height:36px;padding:4px 8px;border:0;border-radius:8px;background:transparent;text-align:left;cursor:pointer;font-size:14px;color:var(--tusz);transition:background-color 140ms ease,transform 140ms var(--ease-out)}
.pr-dok:active{transform:scale(.985)}
.pr-dok .nz{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pr-dok small{font:500 12px var(--f-din);color:var(--tusz-3);font-variant-numeric:tabular-nums}
.pr-dok svg{flex:none;color:var(--tusz-2)}
.pr-dok[aria-selected=true]{background:var(--malina-tlo);color:var(--malina-d)}
.pr-dok[aria-selected=true] svg,.pr-dok[aria-selected=true] small{color:var(--malina)}
.pr-dok:disabled,.pr-nowa:disabled{opacity:.5;cursor:default}
.pr-wiersz .wiecej{flex:none;width:30px;height:30px;border:0;border-radius:6px;background:transparent;color:var(--tusz-2);cursor:pointer;opacity:0;transition:opacity 140ms ease}
.pr-wiersz:hover .wiecej,.pr-wiersz:focus-within .wiecej{opacity:1}
@media (hover:hover) and (pointer:fine){
  .pr-nowa:hover{border-color:var(--malina);color:var(--tusz)}
  .pr-dok:hover:not([aria-selected=true]):not(:disabled){background:var(--plyta)}
  .pr-wiersz .wiecej:hover{background:var(--plyta)}
}
@media (pointer:coarse){.pr-dok{min-height:44px}.pr-wiersz .wiecej{opacity:1;width:40px;height:40px}.pr-nowa{min-height:40px}}
.kropka{display:inline-block;flex:none;width:14px;height:14px;border-radius:50%;background:var(--k);box-shadow:inset 0 0 0 3.5px rgba(255,255,255,.6),0 0 0 1px rgba(31,29,26,.2)}
.menu button .kropka{margin:0 3px}
.zl-podp{margin:12px 6px 0}

/* ---------- kreator otworów: kafle z przekrojem otworu w materiale ---------- */
.typy-otw{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.typy-otw button{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:70px;padding:6px 2px 5px;border:1px solid var(--kreska-2);border-radius:10px;background:var(--karta);cursor:pointer;font:500 11.5px/1.15 var(--f-tekst);color:var(--tusz-2);text-align:center;transition:border-color 140ms ease,background-color 140ms ease,color 140ms ease,transform 140ms var(--ease-out)}
.typy-otw button:active{transform:scale(.97)}
.typy-otw svg .mat{fill:var(--plyta-2);stroke:var(--tusz-3);stroke-width:1}
.typy-otw svg .otw{fill:var(--karta);stroke:var(--tusz);stroke-width:1.3;stroke-linejoin:round}
.typy-otw svg .wym{fill:none;stroke:var(--malina);stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}
.typy-otw button[aria-checked=true]{border-color:var(--tusz);background:var(--tusz);color:#fff}
.typy-otw button[aria-checked=true] svg .mat{fill:#4A453E;stroke:#8A8377}
.typy-otw button[aria-checked=true] svg .otw{fill:var(--tusz);stroke:#fff}
.typy-otw button[aria-checked=true] svg .wym{stroke:#F2A7C3}
@media (hover:hover) and (pointer:fine){.typy-otw button:hover:not([aria-checked=true]){border-color:var(--malina);color:var(--tusz)}}
.otw-opis{margin:-2px 0 0;padding:7px 10px;border-radius:8px;background:var(--plyta);font-size:13.5px;color:var(--tusz)}
.projekt[hidden]{display:none}
/* upuszczanie pliku na scenę: ramka jak obrys stołu */
.scena.upusc::after{content:'Upuść plik STEP, STL, OBJ albo 3MF';position:absolute;inset:12px;display:grid;place-items:center;border:2px dashed var(--malina);border-radius:16px;background:rgba(251,233,240,.72);font:600 16px var(--f-din);color:var(--malina-d);pointer-events:none;z-index:20}
.nz-pliku{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
/* rozmiary śrub i gwintów: po 4 w rzędzie (8 rozmiarów nie mieści się w jednym w wąskim panelu) */
.rozmiary .seg{display:grid;grid-template-columns:repeat(4,1fr)}
.rozmiary .seg button + button{border-left:0}
.rozmiary .seg button:not(:nth-child(4n+1)){border-left:1px solid var(--kreska)}
.rozmiary .seg button:nth-child(n+5){border-top:1px solid var(--kreska)}
.seg.obroty button{display:inline-flex;align-items:center;justify-content:center;gap:4px}
@media (prefers-reduced-motion:reduce){.typy-otw button,.pr-dok,.pr-nowa{transition:none}}
