/* Oferta v10 (02.11.2026): „Co zrobiliśmy” w nowej formie. Wszystko pod .ov10, żeby nie ruszać stylów strony.
   Stara lista projektów zostaje w kodzie, bo SORA//OS klonuje ją jako źródło treści; w widoku Oferty jest ukryta. */
[data-view="oferta"] [data-soraos-tresc] > [data-soraos-app="projekty"]{display:none}

.ov10{
  --o-ink:#0e0e12; --o-krew:#e11d33; --o-hot:#ff3a52; --o-kosc:#f6f2f3;
  --o-panel:#17171d; --o-panel2:#1e1e26; --o-linia:#2c2c36; --o-mute:#b9b4b8;
  --o-sans:var(--f-sans,"Sora",system-ui,"Segoe UI",sans-serif); --o-mono:var(--mono,"Geist Mono",ui-monospace,Consolas,monospace);
  background:var(--o-ink);color:var(--o-kosc);font:400 16px/1.6 var(--o-sans);
  padding-block:56px 72px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))
}
.ov10 *{box-sizing:border-box}
.ov10 .ov-wrap{max-width:1120px;margin:0 auto;display:grid;gap:32px}
.ov10 h2,.ov10 h3,.ov10 h4,.ov10 p,.ov10 ul,.ov10 ol{margin:0}
.ov10 .ov-head{display:grid;gap:12px;max-width:760px}
.ov10 .ov-head h2{font:700 clamp(28px,5vw,44px)/1.1 var(--o-sans);text-wrap:balance;color:var(--o-kosc)}
.ov10 .ov-et{font:500 13px/1.4 var(--o-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--o-hot)}
.ov10 .ov-jak{display:flex;gap:10px;align-items:center;font:500 14px/1.5 var(--o-mono)}
.ov10 .ov-jak i{flex:none;width:26px;height:26px;border-radius:50%;border:2px solid var(--o-hot);display:grid;place-items:center;font:600 13px/1 var(--o-mono);font-style:normal}
.ov10 .ov-mute{color:var(--o-mute)}
.ov10 button{font:inherit;color:inherit}
.ov10 :focus-visible{outline:2px solid var(--o-hot);outline-offset:3px}

.ov10 .ov-duza{background:var(--o-panel);border:1px solid var(--o-linia);border-radius:20px;padding:24px;display:grid;gap:28px;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:start}
.ov10 .ov-kol,.ov10 .ov-tresc{display:grid;gap:14px;min-width:0}
.ov10 .ov-znacznik{justify-self:start;display:inline-block;font:500 13px/1 var(--o-mono);background:var(--o-panel2);border:1px solid var(--o-krew);border-radius:8px;padding:7px 10px}
.ov10 h3{font:700 24px/1.2 var(--o-sans);text-wrap:balance;color:var(--o-kosc)}
.ov10 .ov-lead{font-size:18px;line-height:1.5;font-weight:600}
.ov10 .ov-efekty{list-style:none;padding:0;display:grid;gap:10px}
.ov10 .ov-efekty li{display:grid;grid-template-columns:14px minmax(0,1fr);gap:12px;align-items:baseline}
.ov10 .ov-efekty li::before{content:"";width:10px;height:10px;background:var(--o-hot);transform:translateY(-1px)}
.ov10 .ov-cta{justify-self:start;display:inline-flex;align-items:center;gap:10px;background:var(--o-hot);color:var(--o-ink);font:600 16px/1 var(--o-sans);text-decoration:none;border-radius:12px;padding:16px 20px;min-height:52px;margin-top:4px}
.ov10 .ov-cta:hover{background:var(--o-kosc)}

.ov10 .ov-zakladki{display:flex;gap:6px;flex-wrap:wrap}
.ov10 .ov-zak,.ov10 .ov-btn{font:500 13px/1 var(--o-mono);background:var(--o-panel2);border:1px solid var(--o-linia);border-radius:10px;padding:12px 14px;min-height:44px;min-width:44px;cursor:pointer;color:var(--o-kosc)}
.ov10 .ov-btn:hover{border-color:var(--o-mute)}
.ov10 .ov-zak[aria-selected="true"]{background:var(--o-kosc);color:var(--o-ink);border-color:var(--o-kosc)}
.ov10 .ov-scena{border:1px solid var(--o-linia);border-radius:12px;overflow:hidden;background:var(--o-ink)}
.ov10 .ov-pasek{display:flex;align-items:center;gap:10px;padding:8px 14px;font:500 13px/1.4 var(--o-mono);letter-spacing:.06em;color:var(--o-mute);border-bottom:1px solid var(--o-linia);background:var(--o-panel)}
.ov10 .ov-pasek i{width:8px;height:8px;border-radius:50%;background:var(--o-hot)}
.ov10 .ov-pasek em{margin-left:auto;font-style:normal;color:var(--o-kosc)}
.ov10 .ov-plansza{position:relative;line-height:0}
.ov10 .ov-plansza img{display:block;width:100%;height:auto}
.ov10 .ov-pin{position:absolute;width:44px;height:44px;margin:-22px 0 0 -22px;display:grid;place-items:center;background:none;border:0;padding:0;cursor:pointer}
.ov10 .ov-pin span{position:relative;width:26px;height:26px;border-radius:50%;background:var(--o-ink);color:var(--o-kosc);border:2px solid var(--o-hot);display:grid;place-items:center;font:600 13px/1 var(--o-mono);transition:transform .15s ease,background .15s ease}
.ov10 .ov-pin:hover span{transform:scale(1.12);background:var(--o-hot);color:var(--o-ink)}
.ov10 .ov-wabi .ov-pin span::after{content:"";position:absolute;inset:-2px;border-radius:50%;border:2px solid var(--o-hot);animation:ov-puls 1.8s ease-out infinite;pointer-events:none}
@keyframes ov-puls{from{transform:scale(1);opacity:.9}to{transform:scale(2.1);opacity:0}}

.ov10 .ov-punkty{list-style:none;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.ov10 .ov-punkty button{width:100%;display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:10px;align-items:center;text-align:left;background:var(--o-panel2);border:1px solid var(--o-linia);border-radius:10px;padding:10px 12px;min-height:48px;cursor:pointer;font:500 14px/1.35 var(--o-sans);color:var(--o-kosc)}
.ov10 .ov-punkty button:hover{border-color:var(--o-hot)}
.ov10 .ov-punkty b{width:26px;height:26px;border-radius:50%;border:2px solid var(--o-hot);display:grid;place-items:center;font:600 13px/1 var(--o-mono)}
.ov10 .ov-punkty small{font:500 13px/1 var(--o-mono);color:var(--o-mute)}
.ov10 .ov-punkty button[aria-pressed="true"]{border-color:var(--o-hot);background:color-mix(in srgb,var(--o-hot) 12%,var(--o-panel2))}
.ov10 .ov-punkty button[aria-pressed="true"] b{background:var(--o-hot);color:var(--o-ink)}

.ov10 details{border-top:1px solid var(--o-linia);padding-top:6px}
.ov10 summary{cursor:pointer;font:500 14px/1.4 var(--o-mono);list-style:none;min-height:44px;display:flex;align-items:center;gap:10px;color:var(--o-mute)}
.ov10 summary::-webkit-details-marker{display:none}
.ov10 summary::before{content:"+";display:inline-grid;place-items:center;width:24px;height:24px;border:1px solid var(--o-linia);border-radius:8px;color:var(--o-hot)}
.ov10 details[open]>summary::before{content:"−"}
.ov10 .ov-hist{display:grid;gap:12px;padding-top:6px}
.ov10 .ov-hist p{display:grid;gap:2px;font-size:15px}
.ov10 .ov-hist b{font:500 13px/1.4 var(--o-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--o-hot)}
.ov10 .ov-hist span{color:var(--o-mute)}

/* SOMI: kula żyje w widoku SOMI; tu jej plakat i przejście */
.ov10 .ov-kula{background:var(--o-panel2);border:1px solid var(--o-linia);border-radius:16px;padding:20px;display:grid;gap:14px;justify-items:center;text-align:center}
.ov10 .ov-kula img{width:min(260px,70%);height:auto;aspect-ratio:1;object-fit:contain}
.ov10 .ov-kula .ov-btn{text-decoration:none}
/* 04.11: Meshuga zamiast kuli = kot z logo cybersory (assety/kot-320.webp, sam jest okrągły). */
.ov10 .ov-meshuga img.ov-meshuga__logo{width:min(260px,70%);border-radius:50%}

/* 04.11: mapa modułów Meshugi (zamiast kwadracików .ov-modul). Typografia i cienkie kreski, bez ramek wokół działów. */
.ov10 .ov-mapa{display:grid;gap:28px}
.ov10 .ov-mapa__liczby{margin:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0}
.ov10 .ov-mapa__liczby div{display:flex;flex-direction:column-reverse;justify-content:flex-end;gap:6px;padding:4px 18px 4px 0}
.ov10 .ov-mapa__liczby div + div{padding-left:18px;border-left:1px solid var(--o-linia)}
.ov10 .ov-mapa__liczby dd{margin:0;font:600 clamp(28px,4vw,40px)/1 var(--o-mono);color:var(--o-kosc);letter-spacing:-.02em}
.ov10 .ov-mapa__liczby dt{font:500 13px/1.35 var(--o-mono);color:var(--o-mute)}
.ov10 .ov-mapa__dzialy{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 40px}
.ov10 .ov-dzial h4{display:flex;align-items:center;gap:10px;margin:0;padding-top:14px;border-top:2px solid var(--o-krew);font:700 18px/1.3 var(--o-sans);color:var(--o-kosc)}
.ov10 .ov-dzial h4 svg{width:22px;height:22px;flex:none;fill:none;stroke:var(--o-hot);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ov10 .ov-dzial ul{list-style:none;margin:6px 0 0;padding:0}
.ov10 .ov-dzial li{display:grid;grid-template-columns:76px minmax(0,1fr);column-gap:14px;padding:12px 0;border-bottom:1px solid var(--o-linia)}
.ov10 .ov-dzial li:last-child{border-bottom:0}
.ov10 .ov-dzial .kd{grid-row:span 3;font:500 12px/1.6 var(--o-mono);color:var(--o-hot);letter-spacing:.04em}
.ov10 .ov-dzial b{font:600 15px/1.4 var(--o-sans);color:var(--o-kosc)}
.ov10 .ov-dzial p{margin:2px 0 0;font-size:14px;line-height:1.55;color:var(--o-mute)}
.ov10 .ov-dzial em{justify-self:start;margin-top:6px;font:500 12px/1 var(--o-mono);font-style:normal;color:var(--o-kosc);border:1px solid var(--o-linia);border-radius:999px;padding:5px 9px}
@media (max-width:900px){.ov10 .ov-mapa__dzialy{grid-template-columns:minmax(0,1fr)}}
@media (max-width:640px){
  .ov10 .ov-mapa__liczby{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:18px}
  .ov10 .ov-mapa__liczby div:nth-child(3){padding-left:0;border-left:0}
  .ov10 .ov-mapa__liczby dd{font-size:24px;white-space:nowrap}
  .ov10 .ov-dzial li{grid-template-columns:minmax(0,1fr)}
  .ov10 .ov-dzial .kd{grid-row:auto}
}

/* 04.11: galeria SalonDesk (zamiast numerków na zrzucie): slajd = cały ekran albo przybliżony fragment + opis */
.ov10 .ov-gal{display:grid;gap:12px}
.ov10 .ov-gal-okno{position:relative;aspect-ratio:16/9;background-repeat:no-repeat;background-color:var(--o-ink);touch-action:pan-y;cursor:grab;
  transition:background-size .45s cubic-bezier(.32,.72,0,1),background-position .45s cubic-bezier(.32,.72,0,1)}
.ov10 .ov-gal-okno:active{cursor:grabbing}
.ov10 .ov-gal-ramka{position:absolute;border:2px solid var(--o-hot);border-radius:8px;pointer-events:none;transition:all .45s cubic-bezier(.32,.72,0,1)}
.ov10 .ov-gal-ramka[hidden]{display:none}
.ov10 .ov-gal-opis{background:var(--o-panel2);border:1px solid var(--o-linia);border-radius:12px;padding:16px;display:grid;gap:6px;min-height:150px;align-content:start}
.ov10 .ov-gal-poz{font:500 13px/1.4 var(--o-mono);color:var(--o-hot);letter-spacing:.04em}
.ov10 .ov-gal-opis b{font:600 18px/1.3 var(--o-sans);color:var(--o-kosc)}
.ov10 .ov-gal-opis p{margin:0;font-size:15px;line-height:1.55;color:var(--o-mute)}
.ov10 .ov-gal-opis p.ov-gal-po{color:var(--o-kosc)}
.ov10 .ov-gal-ster{display:flex;align-items:center;gap:10px}
.ov10 .ov-gal-ster .ov-btn{font-size:18px;padding:0;width:44px}
.ov10 .ov-gal-kropki{flex:1;display:flex;justify-content:center;flex-wrap:wrap;gap:2px}
.ov10 .ov-gal-kropki button{width:28px;height:44px;padding:0;border:0;background:none;cursor:pointer;display:grid;place-items:center}
.ov10 .ov-gal-kropki button::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--o-linia);transition:width .25s ease,background .25s ease}
.ov10 .ov-gal-kropki button.ov-gal-sep{margin-left:8px}
.ov10 .ov-gal-kropki button[aria-current="true"]::before{width:20px;border-radius:4px;background:var(--o-hot)}

/* Pycodemath: scena w 3 krokach */
.ov10 .ov-term{margin:0;background:var(--o-ink);padding:18px;font:400 13.5px/1.7 var(--o-mono);white-space:pre-wrap;overflow-wrap:anywhere;color:var(--o-kosc);min-height:250px}
.ov10 .ov-term .c{color:var(--o-mute)}
.ov10 .ov-term .zle{background:color-mix(in srgb,var(--o-hot) 22%,transparent);outline:1px solid var(--o-hot);border-radius:3px}
.ov10 .ov-term .dobre{outline:1px solid var(--o-kosc);border-radius:3px}
.ov10 .ov-term .w-zly{color:var(--o-hot);font-weight:500}
.ov10 .ov-term .w-ok{color:var(--o-ink);background:var(--o-kosc);font-weight:500;padding:0 4px;border-radius:3px}
.ov10 .ov-krok{background:var(--o-panel2);border:1px solid var(--o-linia);border-radius:12px;padding:14px 16px;display:grid;gap:4px}
.ov10 .ov-krok .nr{font:500 13px/1.4 var(--o-mono);color:var(--o-hot);letter-spacing:.06em;text-transform:uppercase}
.ov10 .ov-graj{justify-self:start}

/* dokumentacja projektu */
.ov10 .ov-dok{grid-column:1 / -1;border-top:1px solid var(--o-linia);padding-top:24px;display:grid;gap:20px;min-width:0}
.ov10 .ov-dok h4{font:600 17px/1.3 var(--o-sans);color:var(--o-kosc)}
.ov10 .ov-dok .ov-zw{border-top:0;padding-top:0}
.ov10 .ov-dok .ov-zw>summary{color:var(--o-hot);letter-spacing:.06em;text-transform:uppercase;font-size:13px}
.ov10 .ov-dok-in{display:grid;gap:20px;padding-top:12px}
.ov10 .ov-moduly{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.ov10 .ov-modul{background:var(--o-panel2);border:1px solid var(--o-linia);border-radius:12px;padding:16px;display:grid;gap:8px;align-content:start}
.ov10 .ov-modul .kd{font:500 13px/1 var(--o-mono);letter-spacing:.08em;color:var(--o-hot)}
.ov10 .ov-modul p{font-size:15px;line-height:1.55;color:var(--o-mute)}
.ov10 .ov-bilans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.ov10 .ov-bil{border:1px solid var(--o-linia);border-radius:12px;padding:16px;display:grid;gap:12px;align-content:start}
.ov10 .ov-bil ul{list-style:none;padding:0;display:grid;gap:10px}
.ov10 .ov-bil li{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:10px;align-items:baseline;font-size:15px;line-height:1.5}
/* 04.11 maisa: znaczniki „terminal” zamiast kwadracików; w „Nad czym pracujemy” znak sam mówi o statusie */
.ov10 .ov-bil li::before{font:600 14px/1 var(--o-mono);letter-spacing:-.06em;white-space:pre;justify-self:start;color:var(--o-mute)}
.ov10 .ov-bil.plus li::before{content:"+";color:var(--o-kosc)}
.ov10 .ov-bil.minus li::before{content:"//"}
.ov10 .ov-bil.minus li:has(em)::before{content:"[ ]"}
.ov10 .ov-bil.minus li:has(em.toku)::before{content:">_";color:var(--o-hot)}
.ov10 .ov-bil li em{font:500 13px/1 var(--o-mono);font-style:normal;letter-spacing:.04em;text-transform:uppercase;color:var(--o-mute);border:1px solid var(--o-linia);border-radius:6px;padding:5px 7px;white-space:nowrap}
.ov10 .ov-bil li em.toku{color:var(--o-hot);border-color:var(--o-krew)}

/* pozostałe projekty */
.ov10 .ov-kafle{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}
.ov10 .ov-kafel{background:var(--o-panel);border:1px solid var(--o-linia);border-radius:16px;padding:18px;display:grid;gap:10px;align-content:start}
.ov10 .ov-kafel h3{font-size:18px}
.ov10 .ov-kafel .ov-znacznik{border-color:var(--o-linia)}
.ov10 .ov-mini{border:1px solid var(--o-linia);border-radius:10px;overflow:hidden;aspect-ratio:16/10;max-width:100%;background:var(--o-ink)}
.ov10 .ov-mini img,.ov10 .ov-mini svg{width:100%;height:100%;object-fit:cover;object-position:top left;display:block}
.ov10 .ov-kafel a{color:var(--o-kosc);font:500 14px/1.4 var(--o-mono);text-decoration:none;border-bottom:1px solid var(--o-krew);justify-self:start;padding-block:6px}

/* ekran punktu (dialog) */
.ov10 dialog{padding:0;border:1px solid var(--o-linia);border-radius:20px;background:var(--o-panel);color:var(--o-kosc);width:min(960px,calc(100vw - 24px));max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);overflow:auto}
.ov10 dialog::backdrop{background:rgba(8,8,11,.82)}
.ov10 .ov-ekran{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}
.ov10 .ov-podglad{padding:20px;display:grid;gap:10px;align-content:start;border-right:1px solid var(--o-linia);min-width:0}
.ov10 .ov-podglad .etyk{font:500 13px/1.4 var(--o-mono);letter-spacing:.06em;color:var(--o-mute);text-transform:uppercase;display:flex;justify-content:space-between;gap:8px;padding-right:120px}
.ov10 .ov-wykroj{position:relative;border:1px solid var(--o-linia);border-radius:10px;background-repeat:no-repeat;background-color:var(--o-ink);width:100%;max-width:100%}
.ov10 .ov-opisek{padding:24px 24px 20px;display:grid;gap:12px;align-content:start;min-width:0}
.ov10 .ov-opisek .kod{font:500 13px/1.4 var(--o-mono);letter-spacing:.06em;color:var(--o-hot);text-transform:uppercase}
.ov10 .ov-opisek h3{font-size:22px;line-height:1.3;font-weight:600}
.ov10 .ov-opisek .tekst{font-size:16px;line-height:1.65}
.ov10 .ov-po{display:grid;gap:6px;background:var(--o-panel2);border-radius:12px;padding:12px 14px}
.ov10 .ov-po b{font:500 13px/1.4 var(--o-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--o-hot)}
.ov10 .ov-po[hidden]{display:none}
.ov10 .ov-dol{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:4px}
.ov10 .ov-seg{display:flex;gap:4px;margin-right:auto;flex-wrap:wrap}
.ov10 .ov-seg i{width:18px;height:4px;border-radius:2px;background:var(--o-linia)}
.ov10 .ov-seg i.on{background:var(--o-hot)}
.ov10 .ov-btn.zam{position:absolute;right:12px;top:12px;z-index:3;background:var(--o-ink)}
.ov10 .ov-btn.dalej{background:var(--o-hot);color:var(--o-ink);border-color:var(--o-hot)}
.ov10 .ov-anim .ov-wykroj,.ov10 .ov-anim .ov-opisek>*{animation:ov-wchodzi .35s ease both}
@keyframes ov-wchodzi{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.ov10 .ov-szeroki .ov-ekran{grid-template-columns:minmax(0,1fr)}
.ov10 .ov-szeroki .ov-podglad{border-right:0;border-bottom:1px solid var(--o-linia);padding-top:60px}
.ov10 .ov-szeroki .ov-opisek{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:24px;align-items:start}
.ov10 .ov-szeroki .ov-opisek .kod,.ov10 .ov-szeroki .ov-opisek h3,.ov10 .ov-szeroki .ov-opisek .tekst{grid-column:1}
.ov10 .ov-szeroki .ov-opisek .ov-po{grid-column:2;grid-row:1 / span 3}
.ov10 .ov-szeroki .ov-opisek .ov-dol{grid-column:1 / -1}

@media (max-width:900px){.ov10 .ov-duza{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){
  .ov10 .ov-duza{padding:16px}
  .ov10 .ov-punkty{grid-template-columns:minmax(0,1fr)}
  .ov10 .ov-bilans{grid-template-columns:minmax(0,1fr)}
  .ov10 .ov-bil li{grid-template-columns:26px minmax(0,1fr)}
  .ov10 .ov-bil li em{grid-column:2;justify-self:start}
  .ov10 .ov-ekran{grid-template-columns:minmax(0,1fr)}
  .ov10 .ov-podglad{border-right:0;border-bottom:1px solid var(--o-linia);padding:16px;padding-top:60px}
  .ov10 .ov-podglad .etyk{padding-right:0}
  .ov10 .ov-podglad .etyk span+span{display:none}
  .ov10 .ov-opisek{padding:18px 16px 16px}
  .ov10 .ov-szeroki .ov-opisek{grid-template-columns:minmax(0,1fr)}
  .ov10 .ov-szeroki .ov-opisek .ov-po{grid-column:1;grid-row:auto}
  .ov10 .ov-szeroki .ov-podglad{overflow-x:auto}
  .ov10 .ov-szeroki .ov-wykroj{width:190%;max-width:none}
}
@media (prefers-reduced-motion:reduce){.ov10 *{transition:none!important;animation:none!important}}
