/* E2.2 až E2.5 (K9-ORCH-14, DOPLNOK-E): rýchle nacenenie v kroku 1. Iba CSS nad háčikmi z web/calculator-quick-view.js a web/upload-eta.js;
   žiadny inline štýl (CSP T58). Pohyb je iba v bloku prefers-reduced-motion:no-preference na konci, pri zníženom pohybe sa nič nehýbe. */

/* Kusy: mínus, pole a plus. Pole ostáva label.field s name="qty"; jeho popis ide nad celý riadok. */
[data-calculator-root] .calculator-quantity-price:has(>.calculator-qty-stepper){grid-template-columns:auto minmax(0,1fr);row-gap:var(--space-2)}
/* Z1b (V6.2 .qline, .mprice, .pbreak): kusy vľavo, cena za kus vpravo hore, pod nimi pás rozpisu na celú šírku a riadok rozsahu ceny.
   Obal ceny leží cez celý riadok (subgrid) a celý nesie náhľad ceny (popup-previews.js, aj medzery medzi riadkami); kusy sú nad ním (z-index). */
[data-calculator-root] .calculator-quantity-price:has(>.calculator-qty-stepper)>[data-calculator-price]{grid-column:1/-1;grid-row:1/-1}
[data-calculator-root] .calculator-quantity-price:has(>.calculator-qty-stepper) [data-calculator-price-row="unit-net"]{grid-column:2;grid-row:1;display:flex;flex-direction:column-reverse;
 align-items:flex-end;justify-content:flex-end;gap:2px;text-align:right}
[data-calculator-root] .calculator-quantity-price:has(>.ui-info-price) [data-calculator-price-row="unit-net"]{padding-right:28px}
[data-calculator-root] .calculator-quantity-price:has(>.calculator-qty-stepper) [data-calculator-price-row] :is(dt,dd){align-self:auto}
[data-calculator-root] .calculator-quantity-price:has(>.calculator-qty-stepper) [data-calculator-price-row="line-net"]{grid-column:1/-1;grid-row:2;display:flex;flex-wrap:wrap;
 align-items:baseline;gap:4px 10px;padding:8px 10px;border:1px solid var(--line-soft);border-radius:8px;background:var(--surface-2);font-size:13px}
[data-calculator-root] [data-calculator-price-row="line-net"]:has(>dd[data-formula]:not([data-formula=""]))>dt{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
[data-calculator-root] .calculator-quantity-price:has(>.calculator-qty-stepper) .calculator-model-price[data-price-state="auto"] [data-calculator-price-row="line-net"] dd strong{font-size:var(--text-md);color:var(--ink)}
/* Rozpis ide z atribútu: text dd ostáva suma; druhý zápis content má prázdny alternatívny text, čítačka číta dt a sumu. */
[data-calculator-root] [data-calculator-price-row="line-net"]>dd[data-formula]:not([data-formula=""])::before{content:attr(data-formula);content:attr(data-formula) / "";margin-right:6px;
 color:var(--ink-2);font-weight:400;font-variant-numeric:tabular-nums}
[data-calculator-root] .calculator-quantity-price:has(>.calculator-qty-stepper) .calculator-price-scope{grid-row:3}
[data-calculator-root] .calculator-qty-stepper{position:relative;z-index:1;grid-column:1;grid-row:1;display:grid;grid-template-columns:44px minmax(52px,72px) 44px;
 grid-template-rows:auto 44px;align-content:end;column-gap:4px;row-gap:4px;min-width:0}
[data-calculator-root] .calculator-qty-stepper>.field{display:contents}
[data-calculator-root] .calculator-qty-stepper>.field>span{grid-column:1/-1;grid-row:1;align-self:end;font-size:var(--text-xs);font-weight:600;line-height:1.35;color:#4a5f76}
[data-calculator-root] .calculator-qty-stepper>.field>.input{grid-column:2;grid-row:2;width:100%;min-width:0;height:44px;padding:0 4px;text-align:center;
 font-size:var(--text-lg);font-weight:650;font-variant-numeric:tabular-nums;-moz-appearance:textfield}
[data-calculator-root] .calculator-qty-stepper>.field>.input::-webkit-outer-spin-button,
[data-calculator-root] .calculator-qty-stepper>.field>.input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}
[data-calculator-root] .calculator-qty-step{grid-row:2;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid var(--line);
 border-radius:var(--radius-control);background:var(--surface);color:var(--accent);font-size:22px;font-weight:600;line-height:1;cursor:pointer;touch-action:manipulation}
[data-calculator-root] .calculator-qty-step[data-step="-1"]{grid-column:1}
[data-calculator-root] .calculator-qty-step[data-step="1"]{grid-column:3}
[data-calculator-root] .calculator-qty-step:hover{border-color:#9fbde6;background:#f3f8fe}
[data-calculator-root] .calculator-qty-step:active{background:#e4effc}
[data-calculator-root] .calculator-qty-step:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* Karty povrchu (K9-ORCH-354): zbalený riadok má tie isté obrázkové karty ako panel Povrchy a poznámka (finish-previews.css), bez Kombi.
   Fieldset kariet ide celou šírkou nad text Povrch; dlaždice a ich pravidlá sú preč. */
[data-calculator-root] .calculator-finish-summary.has-quick-finishes{flex-wrap:wrap;row-gap:var(--space-2)}
[data-calculator-root] .calculator-quick-finishes{grid-column:1/-1;grid-row:1;min-width:0}
[data-calculator-root] .has-quick-finishes>.calculator-finish-change{grid-row:2/span 2}
[data-calculator-root] .has-quick-finishes>p{font-size:var(--text-xs);color:var(--muted)}

/* Skontrolovať cenu iba pri chybe (E2.3): skryté, kým karta má cenu, dopyt alebo cenu práve počíta; pri chybe a pri stave bez ceny
   (napríklad po zrušení prepočtu) ostáva tlačidlo ako dnes. */
[data-calculator-root] .customer-part:has(.calculator-model-price:is([data-price-state="auto"],[data-price-state="rfq"],[data-price-state="pending"],
 [data-price-state="uploaded"],[data-price-state="analyzing"])) .calculator-part-footer:not(:has(.calculator-price-error:not([hidden]))) [data-calculator-reprice]{display:none}

/* Fázy nacenenia pod stavom nahrávania (E2.5). */
[data-calculator-root] .upload-stages-wrap{min-width:0;margin-top:6px}
[data-calculator-root] .upload-stages{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:0;padding:0;list-style:none}
[data-calculator-root] .upload-stages li{display:flex;flex-direction:column;gap:5px;min-width:0;font-size:var(--text-xs);line-height:1.3;color:var(--muted)}
[data-calculator-root] .upload-eta-stage{display:none;font-weight:650;color:var(--ink)}
/* Pri analýze nie sú percentá: prázdnu lištu priebehu nahradia pásy fáz; pri nahrávaní ostáva lišta s percentami. */
[data-calculator-root] .calculator-upload-status:has(.upload-stages-wrap:not([data-upload-stage="0"])) .calculator-upload-progress{display:none}
/* Úzka dlaždica: štyri pásy bez popisov (čítačka ich číta), názov aktívnej fázy je v riadku s časom. */
@container calc-upload (max-width:480px){
 [data-calculator-root] .upload-stages li>span:last-child{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
 [data-calculator-root] .upload-eta-stage{display:inline}
}
[data-calculator-root] .upload-stage-dot{display:block;height:4px;border-radius:999px;background:var(--line)}
[data-calculator-root] .upload-stages li[data-stage-state="done"]{color:#347455}
[data-calculator-root] .upload-stages li[data-stage-state="done"] .upload-stage-dot{background:#4f9a74}
[data-calculator-root] .upload-stages li[data-stage-state="active"]{color:var(--ink);font-weight:600}
[data-calculator-root] .upload-stages li[data-stage-state="active"] .upload-stage-dot{background:var(--accent)}
[data-calculator-root] .upload-stages li[data-stage-state="waiting"]{color:var(--ink-2);font-weight:600}
[data-calculator-root] .upload-stages li[data-stage-state="waiting"] .upload-stage-dot{background:#9fbde6}
[data-calculator-root] .calculator-upload-status p.upload-eta{margin:6px 0 0;color:var(--ink-2)}
[data-calculator-root] .upload-eta strong{font-weight:650;font-variant-numeric:tabular-nums}
/* Hotové nacenenie: fázy ostanú ako potvrdenie, bez textu o čase. */
[data-calculator-root] .upload-stages-wrap[data-upload-stage="4"] .upload-stages li{color:#347455;font-weight:400}

/* Lišta telefónu (E2.4): súčet a Objednať. Obal je sticky namiesto tlačidla súčtu (calculator.css:215). */
[data-calculator-root] .calculator-mobile-bar{display:none}
@container calc-root (max-width:720px){
 [data-calculator-root] .calculator-mobile-bar{position:sticky;bottom:calc(var(--space-2) + env(safe-area-inset-bottom,0px));z-index:6;display:flex;align-items:stretch;
  gap:var(--space-2);margin-top:var(--space-3)}
 [data-calculator-root] .calculator-mobile-bar>.calculator-total-bar{position:static;flex:1 1 auto;min-width:0;margin-top:0}
 [data-calculator-root] .calculator-mobile-bar>.calculator-bar-order{flex:0 0 auto;min-height:56px;padding:0 var(--space-4);gap:6px;border-radius:var(--radius);
  box-shadow:0 6px 24px rgba(16,42,84,.18);font-size:var(--text-md);white-space:nowrap}
 [data-calculator-root] .calculator-mobile-bar>.calculator-bar-order:disabled{opacity:.55;cursor:not-allowed}
 [data-calculator-root] .calculator-mobile-bar .calculator-total-bar-go{display:none}
}
/* Nízka obrazovka (telefón naležato, 400 % priblíženie): lišta ostáva v toku ako dnes calculator.css:228. */
@media (max-height:480px){[data-calculator-root] .calculator-mobile-bar{position:static}}

/* Telefón s modelom (E2.2): dlaždica nahrávania bez opakovaných odkazov (Moje modely a dopyt bez modelu sú v menu a pod zoznamom)
   a hotové nahratie iba ako riadok s názvom a stavom, aby karta s cenou bola na prvej obrazovke. */
@container calc-root (max-width:720px){
 [data-calculator-root].calculator-has-models .calculator-upload-zone :is(.calculator-upload-repeat,.calculator-upload-nomodel,.upload-format-hint,.customer-upload-icon){display:none}
 [data-calculator-root].calculator-has-models .calculator-upload-invitation:not(:has([data-model-capacity])){grid-template-columns:minmax(0,1fr) auto}
 [data-calculator-root].calculator-has-models .calculator-upload-invitation:not(:has([data-model-capacity]))>.btn{grid-column:auto;width:auto;margin-top:0;padding:8px var(--space-3)}
 /* Veta alebo oznam kapacity (E1.6) ostáva na celú šírku, tlačidlo pod ním ako pri prázdnej kalkulačke. */
 [data-calculator-root].calculator-has-models .calculator-upload-invitation:has([data-model-capacity]){grid-template-columns:minmax(0,1fr)}
 [data-calculator-root].calculator-has-models .calculator-upload-receipt:has(.upload-stages-wrap[data-upload-stage="4"])
  :is(.calculator-upload-status>p,.calculator-upload-progress,.upload-stages-wrap){display:none}
}

/* Telefón s modelom: podnadpis stránky (návod na prázdnu kalkulačku) sa skryje, karta s cenou je tak vyššie. Hlavička stránky je mimo kalkulačky,
   preto media query; :has ju viaže iba na kalkulačku s modelom. */
@media (max-width:720px){.workspace:has([data-calculator-root].calculator-has-models)>.page-heading p{display:none}}

/* Úzka karta: cena za kus a spolu idú celou šírkou hore, kusy pod ne; informácie o materiáli idú pod ovládanie (E2.2, cena nad 812 px pri 375 px). */
@container calc-parts (max-width:440px){
 [data-calculator-root] .customer-part-drawing{padding-block:6px}
 /* Odstrániť zo zoznamu iba ikonou (aria-label nesie názov), aby sa názov a stav modelu zmestili vedľa neho. */
 [data-calculator-root] .customer-part-heading>.btn.calculator-remove-line{min-width:44px;padding:7px 10px}
 [data-calculator-root] .customer-part-heading>.btn.calculator-remove-line>span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
 [data-calculator-root] .customer-part-drawing .product-thumbnail{width:44px}
 [data-calculator-root] .customer-part-main{display:flex;flex-direction:column}
 [data-calculator-root] .customer-part-main>.material-info{order:1}
 [data-calculator-root] .customer-part-main>.calculator-card-actions{order:2}
 [data-calculator-root] .calculator-quantity-price:has(>.calculator-qty-stepper){grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
 [data-calculator-root] .calculator-quantity-price:has(>.calculator-qty-stepper)>[data-calculator-price]{grid-column:1/-1;grid-row:1/span 3}
 [data-calculator-root] .calculator-quantity-price>.calculator-qty-stepper{grid-column:1/-1;grid-row:4;justify-self:start;margin-top:var(--space-2)}
 [data-calculator-root] .calculator-quantity-price:has(>.calculator-qty-stepper) [data-calculator-price-row="unit-net"]{grid-column:1/-1;align-items:flex-start;text-align:left;padding-right:0}
 /* Riadok rozsahu ceny pod sumami drží výšku dvoch riadkov aj počas prepočtu (calculator.css:144 ho skryje), aby plus a mínus pod ním
    neposkočili medzi dvoma ťuknutiami; nájdené v e2e quick-price na lane l71. */
 [data-calculator-root] .calculator-quantity-price:has(>.calculator-qty-stepper) .calculator-price-scope{min-height:2.8em}
 [data-calculator-root] .calculator-quantity-price:has(>.calculator-qty-stepper) .calculator-price-scope.is-empty{display:block;visibility:hidden}
}

@media (prefers-reduced-motion:no-preference){
 [data-calculator-root] .upload-stages li[data-stage-state="active"] .upload-stage-dot{
  background:linear-gradient(90deg,var(--accent) 0%,var(--accent) 35%,#8fbaf0 50%,var(--accent) 65%,var(--accent) 100%) 0 0/250% 100% no-repeat;
  animation:upload-stage-flow 1.6s linear infinite}
 [data-calculator-root] .upload-stage-dot{transition:background-color .35s ease}
 [data-calculator-root] .calculator-qty-step{transition:background-color .15s ease,border-color .15s ease,color .15s ease}
}
@keyframes upload-stage-flow{from{background-position:100% 0}to{background-position:-150% 0}}
