/* Nowy Start „Skolim OS” (assets/os.js) – jedna tonacja: czerń + róż akcentu, mocne tło ma tylko koncert. Włącznik: html[data-os] */
html[data-os] #hTiles, html[data-os] #hNews, html[data-os] #hGig, html[data-os] #hFuel, html[data-os] #hKarta { display: none !important; }
html[data-os]:not([data-osold]) #pgHome .pg-body > :not(#hOsHi):not(#hRel):not(#hOs) { display: none !important; }
#hOsHi:empty, #hOs:empty { display: none; }
/* tło Start: u samej góry jednolity ciemny róż (--os-top = kolor paska telefonu: theme-color na Androidzie, pod zegarem na iPhonie), niżej przechodzi w czerń */
/* poświaty różu stoją w miejscu jak ta u góry (tło ekranu, nie przewija się z treścią); siła os.glw */
html[data-os] #pgHome { background-image: radial-gradient(34% 30% at 0% 52%, color-mix(in srgb, var(--accent, #f4036e) calc(var(--os-glw, 40) * 1.2%), transparent), transparent 78%), radial-gradient(42% 22% at 100% 64%, color-mix(in srgb, var(--accent, #f4036e) calc(var(--os-glw, 40) * .6%), transparent), transparent 72%), radial-gradient(80% 420px at 90% 0, color-mix(in srgb, var(--accent, #f4036e) 22%, transparent), transparent 75%), linear-gradient(180deg, var(--os-top, #360118) 0, var(--os-top, #360118) env(safe-area-inset-top, 0px), transparent calc(env(safe-area-inset-top, 0px) + 300px)); background-repeat: no-repeat; }
.os { isolation: isolate; --os-ac: var(--accent, #f4036e); --os-gl: rgba(24, 8, 16, .62); --os-ln: rgba(255, 143, 191, .2); display: flex; flex-direction: column; gap: 12px; font-family: Rubik, system-ui, sans-serif; color: #f2f2f2; }
.os-gls, .os-nw, .os-fu, .os-sq, .os-cd2 { background: var(--os-gl); border: 1px solid var(--os-ln); -webkit-backdrop-filter: blur(16px) saturate(1.3); backdrop-filter: blur(16px) saturate(1.3); }

/* powitanie */
/* powitanie wyżej i bliżej relacji (os.hiy / os.hig → --os-hiy / --os-hig; 18 px = odstęp między blokami Start) */
#hOsHi { margin-top: calc(-1 * var(--os-hiy, 8px)); margin-bottom: calc(var(--os-hig, 4px) - 18px); }
.os-hi { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-family: Rubik, system-ui, sans-serif; }
.os-hit { display: flex; flex-direction: column; min-width: 0; }
.os-hit small { font-size: 11.5px; font-weight: 600; color: #ff8fbf; }
.os-hit b { font-weight: 700; font-size: var(--os-hsz, 15px); line-height: 1.2; color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.os-av { flex: none; width: 40px; height: 40px; border-radius: 50%; padding: 0; border: 1.5px solid var(--accent, #f4036e); background: #1a1a1a; overflow: hidden; display: grid; place-items: center; cursor: pointer; }
.os-av img { width: 100%; height: 100%; object-fit: cover; }
.os-av svg { width: 22px; height: 22px; fill: none; stroke: #ff8fbf; stroke-width: 1.8; stroke-linecap: round; }

/* koncert */
.os-gig { display: flex; gap: 12px; min-height: 142px; padding: 14px 14px 14px 16px; border-radius: 24px; box-sizing: border-box; cursor: pointer; text-align: left; color: #fff;
  background: var(--os-gbg, linear-gradient(90deg, var(--os-ac) 0%, color-mix(in srgb, var(--os-ac) 45%, transparent) 55%, transparent 100%)); box-shadow: none; border: 0; font: inherit; }
/* tło i licznik z panelu (1 XI 2026, plansza 13 makiety): os.gbg/gmid/gang/grt → --os-gbg, poświata gsh, szkło gbg=3 */
html[data-osgsh] .os-gig { box-shadow: 0 10px 30px color-mix(in srgb, var(--os-ac) 35%, transparent); }
html[data-osgglass] .os-gig { -webkit-backdrop-filter: blur(18px) saturate(1.4); backdrop-filter: blur(18px) saturate(1.4); }
.os-gig.none { min-height: 0; align-items: center; }
.os-gt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.os-gt small { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: #ffd1e4; }
/* miasto – ta sama czcionka co w dawnym bloku „Najbliższy koncert” (.h-gig h2: czcionka apki, pogrubiona, 30 px) – prośba właściciela 1 XI 2026 */
.os-gt b { margin: 4px 0 2px; font-family: inherit; font-weight: 700; letter-spacing: normal; font-size: 30px; line-height: 1.05; overflow-wrap: anywhere; color: var(--gg-city, #fff); }
.os-gt span { font-size: 13.5px; color: #ffe6f0; }
.os-gt .os-gd, .os-gt .os-gp { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.2; }
/* data/godzina i miejsce jako jedna grupa – mniejsza interlinia (os.gli px odstępu) */
.os-gt .os-gd + .os-gp { margin-top: calc(var(--os-gli, 0px) + 1px); } /* od 2 XI 2026 wieczór o 4 px więcej (prośba właściciela); suwak gli dalej dodaje/odejmuje */
.os-gt .os-gp + .os-tix { margin-top: auto; }
/* miasto + data + miejsce na środku w pionie między „Najbliższy koncert” a „Kup bilet” (2 XI 2026) */
.os-gt .os-gm { flex: 1; display: flex; flex-direction: column; justify-content: center; min-width: 0; font-size: inherit; padding: 4px 0; }
.os-gt .os-gm > b { margin: 0 0 2px; }
.os-tix { margin-top: auto; align-self: flex-start; display: inline-flex; align-items: center; gap: 5px; padding: 8px 14px; border-radius: var(--gg-br, 13px); border: 1px solid #fff; color: #fff; text-decoration: none; font-weight: 600; font-size: 13.5px; }
.os-tix svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.os-cd { flex: none; min-width: 92px; padding: 0 8px; box-sizing: border-box; border-radius: 18px; background: rgba(0, 0, 0, .5); display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1; }
.os-cd small { font-size: 11px; color: #ffd1e4; letter-spacing: .06em; text-transform: uppercase; }
/* cyfra licznika: domyślnie czcionka apki pogrubiona 40 px, kolor os.gnc (#ea036a), bez poświaty; gnf=1 → „Cyfry w datach” z Wygląd bloków; ggl=1 → poświata */
.os-cd b { font-family: inherit; font-weight: 700; letter-spacing: normal; font-size: var(--os-gnz, 60px); margin: 4px 0; color: var(--os-gnc, #ea036a); text-shadow: none; font-variant-numeric: tabular-nums; }
.os-cd b.w { font-size: 20px; margin: 0; }
html[data-osgnf] .os-cd b { font-family: var(--f-dig, var(--f-display)); font-weight: var(--fdg-w, 400); letter-spacing: var(--fdg-ls, var(--fd-ls, 0em)); font-size: calc(var(--os-gnz, 60px) * var(--fdg-sc, var(--fd-sc, 1))); }
html[data-osgnf] .os-cd b.w { font-size: calc(20px * var(--fdg-sc, var(--fd-sc, 1))); }
/* czcionka licznika Tilt Neon (os.gnt 2, wybór właściciela z planszy 15 – 1 XI 2026) */
html[data-osneon] .os-cd b { font-family: "Tilt Neon", Rubik, sans-serif; font-weight: 400; font-size: calc(var(--os-gnz, 60px) * 1.05); }
html[data-osneon] .os-cd b.w { font-size: 22px; }
/* dzień koncertu: odliczanie godzin */
.os-cd .os-hms { display: flex; flex-direction: column; gap: 1px; }
.os-cd .os-hms i { display: flex; align-items: baseline; gap: 4px; font-style: normal; }
.os-cd .os-hms b { font-size: 27px; margin: 0; line-height: .98; }
.os-cd .os-hms small { width: 26px; font-size: 10px; letter-spacing: .04em; }
.os-cd.ln { width: 120px; gap: 4px; }
.os-cd b.hm { font-size: 36px; margin: 0; }
html[data-osneon] .os-cd .os-hms b { font-size: 29px; }
html[data-osneon] .os-cd b.hm { font-size: 38px; }
html[data-osggl] .os-cd b { text-shadow: 0 0 12px color-mix(in srgb, var(--os-gnc, #ea036a) 75%, transparent); }

/* pasek newsów */
.os-nw { display: flex; align-items: center; gap: 10px; height: 52px; padding: 0 12px 0 8px; }
.os-nw.nol { padding-left: 12px; }
.os-nw { border-radius: 18px; overflow: hidden; }
.os-nwl { flex: none; background: #f5c542; color: #000; border-radius: 10px; padding: 5px 8px; font-size: 11px; font-weight: 700; }
.os-nwv { flex: 1; min-width: 0; overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); }
.os-nwm { display: flex; width: max-content; white-space: nowrap; animation: osMq var(--d, 20s) linear infinite; font-size: 14px; font-weight: 600; }
.os-nwm > span { display: flex; align-items: center; }
.os-nwv:active .os-nwm { animation-play-state: paused; } /* bez :hover – na iPhonie „zostaje” po dotknięciu i zatrzymywał tekst */
.os-nwi { cursor: pointer; padding: 6px 0; }
.os-nwd { width: 5px; height: 5px; border-radius: 50%; background: var(--os-ac); margin: 0 14px; flex: none; }
/* pasek newsów biały z czarnymi literami i różowym obrysem u dołu (os.nws 1 – prośba właściciela 1 XI 2026) */
html[data-osnww] .os-nw { background: #fff; color: #000; border: 0; border-bottom: var(--os-nbw, 3px) solid var(--os-ac); -webkit-backdrop-filter: none; backdrop-filter: none; }
html[data-osnww] .os-nwm { color: #000; }
/* pasek newsów ciemnoróżowy, bez obrysu (os.nwl 2 – domyślnie od 1 XI 2026 wieczór; kolor jak środek kafelka koncertu, panel: os.nbg) */
html[data-osnwp] .os-nw { background: var(--os-nbg, color-mix(in srgb, var(--os-ac) 42%, #0d0006)); color: #fff; border: 0; -webkit-backdrop-filter: none; backdrop-filter: none; }
html[data-osnwp] .os-nwd { background: #fff; opacity: .7; }
.os-nwp { flex: none; width: 40px; height: 40px; border-radius: 12px; overflow: hidden; background: #2a1420; cursor: pointer; }
.os-nwp img { width: 100%; height: 100%; object-fit: cover; animation: osFade .5s ease; }
@keyframes osMq { to { transform: translateX(-50%); } }
@keyframes osFade { from { opacity: 0; } }

/* pasek stacji */
.os-fu { display: flex; align-items: center; gap: 10px; min-height: 58px; padding: 6px 8px 6px 10px; border-radius: 18px; cursor: pointer; box-sizing: border-box; overflow: hidden; touch-action: pan-y; }
.os-fh { flex: none; width: 92px; display: flex; flex-direction: column; gap: 3px; min-width: 0; transition: opacity .35s, filter .35s; }
.os-fn { align-self: flex-start; width: var(--os-fnw, auto); text-align: center; max-width: 100%; box-sizing: border-box; background: var(--os-ac); color: #fff; border-radius: 9px; padding: 4px 8px; font-size: 11px; font-weight: 700; text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.os-fh small { font-size: 10.5px; color: #c9c9c9; white-space: nowrap; overflow: hidden; }
/* nazwa miasta w pasku stacji: domyślnie sam różowy napis bez tła i obrysu (od 2 XI 2026 wieczór); os.fnb 1 = dawne różowe tło */
html:not([data-osfnb]) .os-fn { background: none; color: var(--os-ac); border: 0; box-shadow: none; padding-left: 0; padding-right: 0; }
.os-fd { width: var(--os-fnw, auto); max-width: 100%; text-align: center; display: block; }
.os-fd > span { display: inline-block; }
.os-fd.mq { text-align: left; -webkit-mask-image: linear-gradient(90deg, transparent, #000 6px, #000 calc(100% - 6px), transparent); mask-image: linear-gradient(90deg, transparent, #000 6px, #000 calc(100% - 6px), transparent); }
.os-fd.mq > span { padding-left: 3px; animation: osFdMq var(--mqd, 6s) ease-in-out 1.2s infinite alternate; }
@keyframes osFdMq { 0%, 15% { transform: none; } 85%, 100% { transform: translateX(var(--mq, 0)); } }
@media (prefers-reduced-motion: reduce) { .os-fd.mq > span { animation: none; } }
.os-fp { flex: 1; min-width: 0; display: grid; grid-template-columns: repeat(var(--n, 4), minmax(0, 1fr)); text-align: center; }
.os-fc { display: flex; flex-direction: column; gap: 1px; overflow: hidden; }
.os-fc small { font-size: 10px; color: #b5b5b5; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.os-fc b { font-size: 16px; font-weight: 700; font-variant-numeric: tabular-nums; color: #fff; }
.os-fgo svg, .os-go svg { width: 18px; height: 18px; fill: none; stroke: #ff8fbf; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; display: block; }
.os-fu.out .os-fc b { animation: osOut .38s ease-in forwards; animation-delay: calc(var(--k) * 45ms); }
.os-fu.out .os-fh { opacity: 0; filter: blur(4px); }
.os-fu.in .os-fc b { animation: osIn .5s cubic-bezier(.2, .9, .3, 1.2) both; animation-delay: calc(var(--k) * 70ms); }
.os-fu.in .os-fh { animation: osFade .4s ease; }
/* ceny jak wyświetlacz LED (makieta „Pasek cen paliw”, wariant C – białe cyfry), os.fled */
html[data-osled] .os-fc b { font-family: "Share Tech Mono", ui-monospace, monospace; font-weight: 400; font-size: 17px; letter-spacing: -.03em; text-shadow: 0 0 6px rgba(255, 255, 255, .35); }
html[data-osled] .os-fp[style*="--n:5"] .os-fc b { font-size: 15px; }
.os-fp[style*="--n:5"] .os-fc b { font-size: 14.5px; }
@keyframes osOut { to { transform: translateY(70%); opacity: 0; } }
@keyframes osIn { from { transform: translateY(-70%); opacity: 0; } }

/* belka JBB (os.jst): gradient jak na jbb.pl #00A2DC → #DE1191, logo Skolim × JBB, separator, najbliższy sklep + przycisk */
.os-jbar { position: relative; overflow: hidden; display: flex; align-items: center; gap: 14px; min-height: 92px; padding: 12px 14px 12px 16px; box-sizing: border-box; border-radius: 22px; background: linear-gradient(90deg, color-mix(in srgb, #00a2dc calc(var(--os-jop, 65) * 1%), transparent), color-mix(in srgb, #de1191 calc(var(--os-jop, 65) * 1%), transparent)); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); /* krycie os.jop % */ color: #fff; cursor: pointer; }
.os-jpalm { position: absolute; right: 18%; top: -38%; width: 58%; height: 180%; fill: #000; opacity: .14; pointer-events: none; }
/* pół na pół: lewa połowa – logo na środku, prawa – napisy i przycisk na środku */
/* logo o stałej szerokości, kreska dokładnie w połowie między logo a początkiem tekstu (ten sam odstęp z obu stron – gap) */
.os-jlw { position: relative; flex: none; width: 29%; max-width: 108px; display: flex; align-items: center; }
.os-jlogo { width: 100%; height: auto; display: block; }
.os-jsep { position: relative; flex: none; width: 1px; align-self: stretch; margin: 6px 0; background: rgba(255, 255, 255, .7); }
.os-jtx { position: relative; flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; text-align: left; gap: 1px; }
.os-jtx b { font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0; line-height: 1.2; }
.os-jtx small { font-size: 12px; font-weight: 600; line-height: 1.2; max-width: 100%; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* przycisk: bez wypełnienia, biały obrys i napis, ikonka lokalizacji */
.os-jbtn { margin-top: 7px; display: inline-flex; align-items: center; gap: 5px; background: transparent; border: 1.5px solid #fff; color: #fff; font-weight: 700; font-size: 12.5px; padding: 6px 12px 6px 9px; border-radius: 10px; white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; box-sizing: border-box; }
.os-jbtn svg { flex: none; width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linejoin: round; }
.os-jbar:active { filter: brightness(1.06); }

/* 4 kwadratowe kafelki pod JBB (os.ql): 2 × 2 (os.qs 2) albo 4 w rzędzie z napisem pod spodem (os.qs 4) */
.os-q4 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.os-qk { position: relative; aspect-ratio: 1; border-radius: 24px; overflow: hidden; color: #fff; text-decoration: none; cursor: pointer; box-sizing: border-box;
  background: radial-gradient(120% 90% at 0% 0%, color-mix(in srgb, var(--os-ac) 34%, transparent), transparent 60%), var(--os-gl); border: 1px solid var(--os-ln);
  -webkit-backdrop-filter: blur(16px) saturate(1.3); backdrop-filter: blur(16px) saturate(1.3); -webkit-tap-highlight-color: transparent; }
.os-qk:active { transform: scale(.97); }
.os-qim { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.os-qk.ph::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0, 0, 0, 0) 35%, rgba(0, 0, 0, .88)); }
.os-qi { position: absolute; left: 14px; top: 14px; width: 46px; height: 46px; border-radius: 15px; display: grid; place-items: center; background: var(--os-ac); box-shadow: 0 6px 18px color-mix(in srgb, var(--os-ac) 45%, transparent); }
.os-qi svg { width: 26px; height: 26px; fill: none; stroke: #fff; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.os-qi b { font: 700 22px/1 Rubik, system-ui, sans-serif; }
.os-qi.sp { background: #1db954; box-shadow: 0 6px 18px rgba(29, 185, 84, .4); }
.os-qn { position: absolute; left: 14px; right: 12px; bottom: 13px; z-index: 1; display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.os-qn b { font-size: 16px; font-weight: 700; line-height: 1.15; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.os-qn small { font-size: 12px; color: #e0e0e0; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* kafelek z grafiką (logo) zamiast ikonki i napisów – os.ql[i].lg */
.os-qlg { position: absolute; inset: 9%; width: 82%; height: 82%; object-fit: contain; z-index: 1; }
.os-qk.lg.tx .os-qlg { top: 7%; bottom: auto; height: 46%; } /* grafika + napisy: grafika u góry, napisy na dole */
.os-q4.r4 .os-qk:not(.tx):not(.txi) { margin-bottom: 0; }
.os-qk.txi .os-qn { text-shadow: 0 1px 6px rgba(0, 0, 0, .55); } /* napisy na obrazku bez przyciemnienia – lekki cień, żeby dało się czytać */
/* obrys gradientem (os.ql[i].bt 2): warstwa w środku kafelka wycięta maską – działa z każdym wypełnieniem, też przezroczystym */
.os-qk.gb, .os-gig.gb, .os-fu.gb, .os-cd2.gb { border: 0; }
.os-qk.gb::before, .os-hl.gb::before { content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none; border-radius: inherit; padding: var(--qbw, 1px); background: var(--qb);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0); }
/* grafika na całym kafelku (os.ql[i].lgm 1) – jak tło, od krawędzi do krawędzi */
.os-qk.lgf .os-qlg, .os-qk.lgf.tx .os-qlg, .os-q4.r4 .os-qk.lgf .os-qlg { inset: 0; top: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
.os-q4.r4 .os-qk.lgf .os-qlg { border-radius: 19px; }
.os-q4.r4 .os-qk.lg.tx .os-qlg { top: 9%; height: 82%; }
.os-qk .os-new { position: absolute; top: 12px; right: 12px; z-index: 1; }
/* 4 w rzędzie: same ikonki/zdjęcia, nazwa pod kafelkiem */
.os-q4.r4 { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.os-q4.r4 .os-qk { overflow: visible; border-radius: 20px; margin-bottom: 30px; }
.os-q4.r4 .os-qim { border-radius: 19px; }
.os-q4.r4 .os-qk.ph::after { display: none; }
.os-q4.r4 .os-qi { left: 50%; top: 50%; transform: translate(-50%, -50%); width: 44px; height: 44px; border-radius: 14px; }
.os-q4.r4 .os-qn { left: -4px; right: -4px; bottom: -28px; align-items: center; text-align: center; }
.os-q4.r4 .os-qn b { font-size: 11.5px; font-weight: 600; -webkit-line-clamp: 2; }
.os-q4.r4 .os-qn small { display: none; }
/* lista rezydencji (gdy jest więcej niż jedna) */
.os-rz { position: fixed; inset: 0; z-index: 1400; --os-ac: var(--accent, #f4036e); }
.os-rzb { position: absolute; inset: 0; background: rgba(0, 0, 0, .6); opacity: 0; transition: opacity .25s; }
.os-rzp { position: absolute; left: 0; right: 0; bottom: 0; max-height: 80vh; overflow-y: auto; background: #12060c; border-top: 1px solid var(--os-ln, rgba(255, 143, 191, .2)); border-radius: 24px 24px 0 0;
  padding: 16px 16px calc(20px + env(safe-area-inset-bottom)); box-sizing: border-box; transform: translateY(100%); transition: transform .3s cubic-bezier(.2, .8, .2, 1); color: #fff; font-family: Rubik, system-ui, sans-serif; }
.os-rz.on .os-rzb { opacity: 1; } .os-rz.on .os-rzp { transform: none; }
.os-rzh { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.os-rzh b { font-size: 18px; }
.os-rzx { width: 36px; height: 36px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .1); display: grid; place-items: center; cursor: pointer; }
.os-rzx svg { width: 18px; height: 18px; stroke: #fff; stroke-width: 2.2; fill: none; stroke-linecap: round; }
.os-rzl { display: flex; flex-direction: column; gap: 10px; }
.os-rzi { display: flex; align-items: center; gap: 12px; padding: 10px; border-radius: 18px; background: rgba(255, 255, 255, .06); color: #fff; text-decoration: none; }
.os-rzi > img, .os-rzi > .os-qi { position: static; flex: none; width: 56px; height: 56px; border-radius: 14px; object-fit: cover; }
.os-rzi > span:not(.os-qi) { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.os-rzi b { font-size: 15px; } .os-rzi small { font-size: 12.5px; color: #cfcfcf; }
.os-rzi i svg { width: 20px; height: 20px; stroke: var(--os-ac, #f4036e); stroke-width: 2.2; fill: none; }

/* kwadraty JBB / Spotify */
/* poświata różu za kafelkami JBB / płyta (siatka dwóch plam) – żeby było widać szkło pasków wyżej; siła os.glw % (0 = bez) */
.os-sqs { position: relative; }

.os-sqs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.os-sqs.one { grid-template-columns: minmax(0, 1fr); }
.os-sq { position: relative; height: 128px; border-radius: 24px; padding: 13px; box-sizing: border-box; overflow: hidden; display: flex; flex-direction: column; justify-content: space-between; color: #fff; text-decoration: none; cursor: pointer; }
.os-sqi { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
.os-sq.ph::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0, 0, 0, .25), rgba(0, 0, 0, .85)); z-index: 0; }
.os-sq > :not(img) { position: relative; z-index: 1; }
.os-sqt { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.os-sqt b { font-size: 14.5px; font-weight: 700; line-height: 1.2; }
.os-jl { flex: none; width: 38px; background: #fff; border-radius: 7px; padding: 3px 4px; box-sizing: border-box; }
.os-jl svg { width: 100% !important; height: auto !important; display: block; margin: 0 !important; }
.os-sq small { font-size: 12px; color: #e0e0e0; line-height: 1.3; }
.os-spb { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 600; }
.os-spb i { width: 30px; height: 30px; border-radius: 50%; background: var(--os-ac); display: grid; place-items: center; }
.os-sp.spg .os-spb i { background: #1db954; }
.os-spb svg { width: 15px; height: 15px; fill: #fff; margin-left: 2px; }

/* Więcej Skolima */
.os-more { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.os-mh { margin: 2px 0 0; font-size: 13.5px; font-weight: 700; color: #d6d6d6; font-family: Rubik, system-ui, sans-serif; }
.os-row { display: flex; gap: 10px; overflow-x: auto; scroll-snap-type: x mandatory; margin: 0 -16px; padding: 2px 16px 6px; scrollbar-width: none; }
.os-row::-webkit-scrollbar { display: none; }
.os-cd2 { position: relative; flex: none; width: 128px; height: 170px; border-radius: 20px; overflow: hidden; scroll-snap-align: start; cursor: pointer; color: #fff;
  background: linear-gradient(160deg, color-mix(in srgb, var(--os-ac) 40%, #1a0a12), #0d0408 75%); }
.os-cd2 > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.os-cd2::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, .9)); }
.os-cdf { position: absolute; top: 8px; left: 12px; font-weight: 800; font-size: 58px; line-height: 1; color: rgba(255, 255, 255, .14); }
.os-cdt { position: absolute; left: 11px; right: 10px; bottom: 10px; z-index: 1; display: flex; flex-direction: column; gap: 2px; }
.os-cdt b { font-size: 14.5px; font-weight: 700; line-height: 1.15; }
.os-cdt small { font-size: 11.5px; color: #ff8fbf; font-weight: 600; }
.os-new { position: absolute; top: 9px; right: 9px; z-index: 1; width: 10px; height: 10px; border-radius: 50%; background: var(--os-ac); box-shadow: 0 0 8px var(--os-ac); }
.os-cf { position: relative; height: 196px; perspective: 760px; margin: 0 -16px; overflow: hidden; touch-action: pan-y; }
.os-cf .os-cd2 { position: absolute; top: 10px; left: 50%; margin-left: -66px; width: 132px; height: 176px; transition: transform .45s cubic-bezier(.2, .8, .2, 1), opacity .35s, filter .35s; }
.os-cf .os-cd2.on { box-shadow: 0 0 0 1.5px var(--os-ac), 0 0 20px color-mix(in srgb, var(--os-ac) 50%, transparent); }
@media (prefers-reduced-motion: reduce) { .os-nwm { animation: none; } .os-nwv { overflow-x: auto; -webkit-mask-image: none; mask-image: none; } .os-cf .os-cd2 { transition: none; } }

/* relacje na nowym Start: profilowa nie jest przyklejona (przyklejona miała czarne tło – odcinało się od różowego tła) */
html[data-os] .rl-c.rl-pin { position: relative; background: transparent; box-shadow: none; }

/* dolne menu jak w Żabce / Orlenie: pełny pasek przy samej krawędzi, tło także pod kreską iPhone'a (os.bar, html[data-osbar]) */
@media (max-width: 860px) {
  html[data-osbar] .mbar { left: 0; right: 0; bottom: 0; border-radius: 0; border: 0; padding: 4px max(var(--os-bx, 22px), env(safe-area-inset-right)) calc(4px + min(env(safe-area-inset-bottom), var(--os-bb, 18px)) + var(--os-bup, 10px)) max(var(--os-bx, 22px), env(safe-area-inset-left));
    background: rgba(8, 8, 8, .94); -webkit-backdrop-filter: blur(18px) saturate(1.2); backdrop-filter: blur(18px) saturate(1.2); box-shadow: 0 -1px 0 rgba(255, 255, 255, .09); }
  html[data-osbar] .tabbar::before { display: none; }
  /* mapa: pasek NEWS, kategorie i przyciski tuż nad pełnym paskiem (pasek stoi przy samej krawędzi, jego wysokość obejmuje już strefę pod kreską) – odstęp os.tko px */
  html[data-osbar] { --mbar-off: calc(var(--mbar-h, 62px) + var(--os-tko, 2px) - 8px); }
  /* niższy pasek (1 XI 2026): cieńsze przyciski, odstęp pod napisami z panelu (os.bh → --os-bb) */
  html[data-osbar] .mbar button { padding: 2px 2px 1px; gap: 1px; font-size: 11px; }
  html[data-osbar] .mbar button svg { width: 19px; height: 19px; }
  html[data-osbar] .mb-glass { top: 3px; bottom: 2px; }
  /* plamka nowego menu: góra przyciemniona w czerń, różowe światło od dołu mocniej widać (os.gtd %) */
  html[data-os] .mb-glass { background: radial-gradient(80% 100% at 50% 110%, color-mix(in srgb, var(--accent) 48%, transparent), transparent 72%),
    linear-gradient(180deg, rgba(0, 0, 0, calc(var(--os-gtd, 55) / 100)), rgba(0, 0, 0, calc(var(--os-gtd, 55) / 300)) 60%, rgba(255, 255, 255, .04)); }
  /* chowanie dolnego menu przy przewijaniu w dół (os.hide → html[data-oshide], app.js ustawia data-mbhid) */
  html[data-oshide] .mbar { transition: transform .28s cubic-bezier(.3, .8, .3, 1); will-change: transform; }
  html[data-oshide][data-mbhid] .mbar { transform: translateY(calc(100% + 30px)); }
  /* odstęp na dole stron (2 XI 2026): pełny pasek ma już w swojej wysokości strefę pod kreską iPhone'a – wcześniej doliczana drugi raz + 30 px, więc na końcu było ok. 100–180 px pustego miejsca */
  html[data-osbar] .page { padding-bottom: var(--mbar-h, 66px); }
  html[data-osbar] .pg-body { padding-bottom: 18px; }
  /* nowy Start: treść tuż pod zegarem (bez górnego paska z logo) */
  html[data-os][data-notop] #pgHome .pg-body { padding-top: 4px; }
}

/* dolne menu: mała pływająca wyspa jak w Instagramie (os.bar = 2, html[data-osisle]) */
@media (max-width: 860px) {
  html[data-osisle] .mbar { left: max(22px, env(safe-area-inset-left)); right: max(22px, env(safe-area-inset-right)); bottom: calc(6px + env(safe-area-inset-bottom)); padding: 4px; gap: 2px; border-radius: 30px;
    background: rgba(18, 18, 20, .78); -webkit-backdrop-filter: blur(22px) saturate(1.6); backdrop-filter: blur(22px) saturate(1.6); box-shadow: 0 10px 30px rgba(0, 0, 0, .55), inset 0 0 0 1px rgba(255, 255, 255, .08); }
  html[data-osisle] .mbar button { padding: 5px 2px; font-size: 10.5px; border-radius: 24px; }
  html[data-osisle] .tabbar button svg { width: 20px; height: 20px; }
  html[data-osisle] .tabbar::before { display: none; }
}

/* warstwy bloków (os.gl koncert, os.fl stacja, karty „Więcej Skolima”): zdjęcie → przyciemnienie → grafika pod treścią bloku */
.os-hl { position: relative; isolation: isolate; }
.os-lay { position: absolute; inset: 0; z-index: -1; border-radius: inherit; overflow: hidden; pointer-events: none; }
.os-lay > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.os-lay > .os-llg { inset: 10%; width: 80%; height: 80%; object-fit: contain; }
.os-lay > .os-llg.f { inset: 0; width: 100%; height: 100%; object-fit: cover; }
.os-lsh { position: absolute; inset: 0; background: rgba(0, 0, 0, .45); }
.os-gig .os-lsh { background: linear-gradient(90deg, rgba(0, 0, 0, .72), rgba(0, 0, 0, .25)); }
.os-cd2 .os-lsh { background: none; } /* karty mają własne przyciemnienie od dołu (::after) */
.os-cd2.ign::after { display: none; }
.os-cd2.ign .os-cdt { text-shadow: 0 1px 6px rgba(0, 0, 0, .55); }
.os-fin { display: contents; }

/* licznik dni: czcionka z listy (os.gnt 19–42 / 101–118 – propozycje z makiety, plansze 14 i 15) */
html[data-osgfx] .os-cd b { font-family: var(--os-gnff); font-weight: var(--os-gnfw, 400); font-size: calc(var(--os-gnz, 60px) * var(--os-gnfs, 1)); letter-spacing: normal; }
html[data-osgfx] .os-cd b.w { font-size: calc(20px * var(--os-gnfs, 1)); }
html[data-osgfx] .os-cd .os-hms b { font-size: calc(27px * var(--os-gnfs, 1)); }
html[data-osgfx] .os-cd b.hm { font-size: calc(36px * var(--os-gnfs, 1)); }

/* licznik dni: cyfra dokładnie na środku między „ZA” i „DNI” – linia przycięta do wysokości cyfr (każda czcionka ma inne odstępy nad i pod) */
.os-cd > small, .os-cd > b:not(.w):not(.hm) { text-box: trim-both cap alphabetic; }
.os-cd > b:not(.w):not(.hm) { line-height: 1; margin: 9px 0; }
/* 4 kafelki: rzędy do wyboru (os.qr): „2” = dwa kwadraty, „1+2” = duży + dwa połówki, „2+1” = dwie połówki + duży */
.os-q4.rows { grid-template-columns: minmax(0, 1fr); }
.os-qr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; min-width: 0; }
.os-qh { display: grid; grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 12px; min-width: 0; }
/* rzędy samych małych kafelków (od 2 XI 2026): s2 – dwa obok siebie (wysokość połówki); „4” w os.js = dwa takie rzędy */
.os-q4.rows { container-type: inline-size; }
.os-qr.s2 > .os-qh { grid-template-rows: minmax(0, 1fr); height: calc(((100cqw - 12px) / 2 - 12px) / 2); }
.os-qh > .os-qk { aspect-ratio: auto; min-height: 0; border-radius: 20px; }
.os-qh .os-qi { width: 36px; height: 36px; border-radius: 12px; left: 12px; top: 50%; transform: translateY(-50%); }
.os-qh .os-qi svg { width: 19px; height: 19px; }
.os-qh .os-qn { left: 12px; bottom: 9px; gap: 1px; }
.os-qh .os-qn b { font-size: 14px; -webkit-line-clamp: 1; }
.os-qh .os-qn small { font-size: 11px; }
.os-qh .os-qk.lg.tx .os-qlg { top: 6%; height: 40%; }
.os-qh .os-qk .os-qi ~ .os-qn { left: 58px; bottom: auto; top: 50%; transform: translateY(-50%); } /* połówka: ikonka z lewej, napisy obok */
/* kafelek „Stacje paliw” – neon (od 2 XI 2026, os.ql[i].a = "st", ustawienia os.ql[i].nx): tło + plama światła, obrys z poświatą do środka,
   napis Tilt Neon z poświatą, logo SKOLIM (maska w kolorze --st-lc + drop-shadow), miasta stacji na dole; w połówce i w rzędzie po 4 – mniejsze (--k) */
.os-qk.os-st{--k:1;container-type:size;background:radial-gradient(80% 60% at 50% 42%,color-mix(in srgb,var(--st-bgc) var(--st-bgo),transparent),transparent 70%),var(--st-b1);
  border:var(--st-ow) solid color-mix(in srgb,var(--st-oc) var(--st-oo),transparent);box-shadow:inset 0 0 var(--st-ig) color-mix(in srgb,var(--st-oc) 30%,transparent);-webkit-backdrop-filter:none;backdrop-filter:none}
.os-stbg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:var(--st-io);z-index:0}
.os-stpu{position:absolute;z-index:0;top:50%;right:6%;height:var(--st-dsz);width:auto;translate:0 -50%;opacity:var(--st-dop);fill:none;stroke:var(--st-dc);stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.os-stpu.cu{display:block}.os-stpu.cu img{display:block;height:100%;width:auto;max-width:none;visibility:hidden}.os-stpu.cu>span{position:absolute;inset:0;background:var(--st-dc);-webkit-mask:var(--st-du) center/contain no-repeat;mask:var(--st-du) center/contain no-repeat}
.os-stpu .dr{fill:var(--st-dc);stroke:none}.os-st.dp1 .os-stpu{right:auto;left:6%}.os-st.dp2 .os-stpu{right:50%;translate:50% -50%}
.os-stc{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--st-gap) * var(--k));padding-bottom:calc(var(--st-dy) * 2 * var(--k))}
.os-stt{font-family:"Tilt Neon",Rubik,sans-serif;font-size:calc(var(--st-tsz) * var(--k));letter-spacing:var(--st-tls);padding-left:var(--st-tls);color:var(--st-tc);white-space:nowrap;line-height:1.1;
  text-shadow:0 0 calc(var(--st-tgs) * .4) var(--st-tg),0 0 var(--st-tgs) var(--st-tg),0 0 calc(var(--st-tgs) * 2) var(--st-tg)}
.os-st.tf1 .os-stt{font-family:var(--f-head,Rubik),Rubik,sans-serif;font-weight:700}
.os-stl{display:block;width:var(--st-lw);filter:drop-shadow(0 0 1.5px #fff) drop-shadow(0 0 calc(var(--st-lgs) * .45) var(--st-lgc)) drop-shadow(0 0 var(--st-lgs) var(--st-lgc))}
.os-stl>span{display:block;background:var(--st-lc);-webkit-mask:var(--st-lgu) center/100% 100% no-repeat;mask:var(--st-lgu) center/100% 100% no-repeat}
.os-stl img{display:block;width:100%;height:auto;visibility:hidden}
.os-stw{position:absolute;left:8px;right:8px;bottom:13px;z-index:1;display:flex;justify-content:center;align-items:center;gap:5px;font-size:var(--st-wsz);color:var(--st-wc);white-space:nowrap;min-width:0}
.os-stw span{overflow:hidden;text-overflow:ellipsis}
.os-stw svg{flex:none;width:calc(var(--st-wsz) + 1px);height:calc(var(--st-wsz) + 1px);fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round}
.os-qh .os-qk.os-st{--k:.72}
.os-qh .os-st .os-stw{display:none}
.os-qh .os-st .os-stc{padding-bottom:0}
.os-q4.r4 .os-qk.os-st{--k:.42;overflow:hidden}
.os-q4.r4 .os-st .os-stw{display:none}
.os-q4.r4 .os-st .os-stc{padding-bottom:0}

/* kafelek „Sonda” (od 2 XI 2026): różowe poświaty jak reszta apki, ikonka dwóch dymków „?” i „…” – mała (ip 0) albo duża w tle (ip 1, przezroczystość io);
   animacja tylko transform/opacity: dymek z pytaniem → dymek z kropkami → kropki „piszą” (raz po pokazaniu, potem co px.ev s) */
.os-qk.os-pq{container-type:size;background:radial-gradient(80% 70% at 0% 0%,var(--pq-g1),transparent 70%),radial-gradient(70% 60% at 100% 100%,var(--pq-g2),transparent 70%),var(--pq-b1);
  border:var(--pq-ow) solid var(--pq-oc);box-shadow:0 0 var(--pq-gs) color-mix(in srgb,var(--pq-oc) 60%,transparent),inset 0 0 calc(var(--pq-gs) * .8) color-mix(in srgb,var(--pq-oc) 30%,transparent);-webkit-backdrop-filter:none;backdrop-filter:none}
.os-pqi{position:absolute;right:14px;top:14px;height:28%;width:auto;aspect-ratio:104/96;overflow:visible;fill:none;stroke:var(--pq-ic);stroke-width:6.5;stroke-linejoin:round;stroke-linecap:round;pointer-events:none}
.os-pq.bg .os-pqi{right:9%;top:46%;height:62%;opacity:var(--pq-io);translate:0 -50%}
.os-pqi .b{transform-box:fill-box;transform-origin:50% 100%}
.os-pqi .b.w{fill:color-mix(in srgb,var(--pq-ic) 30%,transparent)}
.os-pqi .ln{stroke-width:4.5}
.os-pqn{position:absolute;left:14px;right:14px;bottom:13px;display:flex;flex-direction:column;gap:3px;min-width:0;z-index:1}
.os-pqn b{font-size:17px;font-weight:700;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.os-pqn small{font-size:12px;line-height:1.25;color:var(--pq-sc);overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical}
.os-pq.go .b{animation:osPb .85s cubic-bezier(.2,.8,.25,1) both}
.os-pq.go .b2{animation-delay:.32s}.os-pq.go .b3{animation-delay:.64s}.os-pq.go .b4{animation-delay:.96s}
@keyframes osPb{0%{transform:scaleY(0)}78%{transform:scaleY(1.04)}100%{transform:scaleY(1)}}
@media (prefers-reduced-motion:reduce){.os-pq.go .b{animation:none}}
.os-pq:not(.bg) .os-pqn{right:14px}
.os-qh .os-qk.os-pq .os-pqn{left:12px;right:12px;bottom:auto;top:50%;transform:translateY(-50%);gap:2px}
.os-qh .os-pq:not(.bg) .os-pqi{right:9px;top:50%;height:42%;translate:0 -50%}
.os-qh .os-pq:not(.bg) .os-pqn{right:calc(9px + 42cqh * 1.083 + 8px)}
.os-qh .os-pq.bg .os-pqi{right:7%;top:52%;height:64%}
.os-qh .os-pqn b{font-size:14px}.os-qh .os-pqn small{font-size:10.5px;line-height:1.22;-webkit-line-clamp:4}
.os-q4.r4 .os-pq .os-pqn{left:-4px;right:-4px;bottom:-28px;top:auto;transform:none;align-items:center;text-align:center}.os-q4.r4 .os-pqn b{font-size:11.5px;font-weight:600}.os-q4.r4 .os-pqn small{display:none}
.os-q4.r4 .os-pq .os-pqi,.os-q4.r4 .os-pq.bg .os-pqi{right:auto;left:50%;top:50%;height:60%;opacity:1;translate:-50% -50%}

/* kafelek Spotify – wariant A (od 3 XI 2026): okładka na całą wysokość z lewej, obok „Nowa płyta”, tytuł i „Spotify” */
.os-qk.os-spa{display:flex;align-items:stretch;padding:0;text-decoration:none;color:#fff;container-type:size} /* size: zdjęcie okładki nie rozpycha rzędu */
.os-spa .os-spc{flex:none;height:100%;width:100cqh;object-fit:cover;position:static;border-radius:0}
.os-spa span.os-spc{display:grid;place-items:center;background:color-mix(in srgb,var(--accent,#f4036e) 30%,#000)}
.os-spt{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:3px;padding:0 7px 0 9px}
.os-spk{font-size:9px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#ff8fbf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.os-spt b{font-size:13px;letter-spacing:-.01em;font-weight:700;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.os-sps{display:flex;align-items:center;gap:5px;font-size:11.5px;color:#cfcfcf;white-space:nowrap;overflow:hidden}
.os-sps svg{flex:none;width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.os-qr>.os-qk.os-spa{flex-direction:column}.os-qr>.os-qk.os-spa .os-spc{height:auto;width:100%;flex:1;min-height:0}.os-qr>.os-qk.os-spa .os-spt{flex:none;padding:10px 12px 12px}
.os-q4.r4 .os-qk.os-spa .os-spt{display:none}.os-q4.r4 .os-qk.os-spa .os-spc{width:100%;height:100%;border-radius:19px}
/* kafelek Spotify – zielony jak Spotify (od 3 XI 2026, `spg`; „Kolory kafelka” z panelu mają pierwszeństwo) */
.os-qk.os-spa.gr{background:linear-gradient(115deg,#0d3d20 0%,#0b1f13 55%,#0a0f0c 100%);border-color:rgba(30,215,96,.55);box-shadow:inset 0 0 16px rgba(30,215,96,.14)}
.os-spa.gr .os-sps{color:#1ed760;font-weight:600}
.os-spa.gr .os-spk{color:#7ff0a8}
.os-spa.gr span.os-spc{background:#0d3d20;color:#1ed760}
/* SOLD OUT na kafelku najbliższego koncertu (od 3 XI 2026) – pieczątka .hg-sold ze style.css, przyciemnienie jak w starym bloku */
.os-gig.sold { position: relative; overflow: hidden; }
.os-gig.sold::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, calc(var(--gg-sodim, 30) / 100)); pointer-events: none; z-index: 2; border-radius: inherit; }
.os-gig.sold .hg-sold { z-index: 3; }

/* lewa część paska stacji wypełniona kolorem jak „NEWS” na mapie (os.fnf, domyślnie 1; kolor os.fnc, puste = akcent) – od 3 XI 2026 */
html[data-osfnf] #osFu .os-fh { align-self: stretch; justify-content: center; gap: 0; margin: -6px 0 -6px -10px; padding: 6px 8px; width: 106px; align-items: center; text-align: center; background: var(--os-fnc, var(--os-ac)); }
html[data-osfnf] #osFu .os-fn { align-self: center; width: auto; max-width: 100%; text-align: center; color: #fff; background: none; border: 0; box-shadow: none; padding: 0; line-height: 1.15; font-size: 12px; }
html[data-osfnf] #osFu .os-fd { color: #fff; font-weight: 600; font-size: 10px; line-height: 1.15; opacity: .95; width: auto; max-width: 100%; text-align: center; }
html[data-osfnf] .os-fu.out .os-fh { opacity: 1; filter: none; }
html[data-osfnf] .os-fu.out .os-fh > * { opacity: 0; filter: blur(4px); transition: opacity .35s, filter .35s; }
html[data-osfnf] .os-fu.in .os-fh { animation: none; }
html[data-osfnf] .os-fu.in .os-fh > * { animation: osFade .4s ease; }
