/* =====================================================================
   START SRV — podstrona „Otwarte oprogramowanie AI" (STARTSRV-OSS-02).

   TA WARSTWA JEST CELOWO MINIMALNA. Cały wygląd strony pochodzi z
   site/startsrv-wspolne.css (kopia wartości z monolitu, decyzja dokumentacji wewnętrznej):
   powłoka `.pnl-topbar`, ekran `.pnl-ekran`, nagłówki `.pnl-naglowek`,
   sekcje `.pnl-sekcja`, siatka `.grid`, kafel `.card.pnl-kafel`,
   chip `.seg-badge`, podsumowanie `.p-summary` + `.sum-row`.
   Kontener strony ma `id="pnl-shell"`, więc wchodzi w to samo przemapowanie
   tokenów Carbon (--blue #0f62fe, --border #e0e0e0, --ink #161616), co panel
   klienta — bez duplikowania ani jednej reguły.

   Reguła z dokumentacji wewnętrznej §0 („Reguła dla nowych klas"): nowe klasy wolno dopisać
   wyłącznie z tokenów już zinwentaryzowanych, bez nowego kroju, promienia
   i cienia. Prefiks tego dokumentu: `.oss-*`. Przy każdym bloku niżej podano,
   z którego istniejącego komponentu skopiowano wartości.
   ===================================================================== */

/* --- 0. WYŚRODKOWANIE KOLUMNY TREŚCI ---------------------------------
   `.pnl-ekran` w startsrv-wspolne.css ma `max-width:1584px`, ale nie ma
   marginesu automatycznego — w panelu klienta lewą stronę zajmował side-nav,
   więc kolumna i tak nie stała przy krawędzi. Ta podstrona side-navu nie ma,
   przez co na 1920 px cała treść dosuwała się do lewej. Regułę zawężamy
   do `#pnl-shell` W TYM arkuszu: plik wspólny zostaje bajt w bajt, panel
   klienta nie zmienia się ani o piksel.

   1400 px dobrane do istniejącej siatki `repeat(auto-fill,minmax(230px,1fr))`
   z odstępem 14 px: po odjęciu paddingu 2×32 px zostaje 1336 px, czyli PIĘĆ
   kolumn po ~256 px (dziś przy 1584 px jest sześć po ~242 px). Każda wartość
   z przedziału 1320–1440 px daje dokładnie te same pięć kolumn, więc 1400
   stoi pośrodku przedziału. Zero zmian typografii, kolorów i odstępów.
   ------------------------------------------------------------------- */
#pnl-shell .pnl-ekran{ max-width:1400px; margin:0 auto; }

/* --- 1. PASEK ZAKŁADEK -----------------------------------------------
   Wartości 1:1 z `.pnl-topnav-poz` + `.pnl-topbar` (startsrv-wspolne.css
   §1): wysokość 48 px = --carbon-topbar-h, padding 0 16px, 14 px, kreska
   3 px u dołu, hover --carbon-hover, focus 2 px --blue, aktywna kreska
   --blue + waga 600. Zero nowych wartości. --------------------------- */
.oss-zakladki{
  display:flex; align-items:stretch; flex-wrap:wrap;
  border-bottom:1px solid var(--border);
  margin-top:24px;
}
.oss-zakladka{
  display:flex; align-items:center;
  height:var(--carbon-topbar-h); padding:0 16px;
  border:0; border-bottom:3px solid transparent; margin-bottom:-1px;
  background:transparent; cursor:pointer;
  font-family:'Plus Jakarta Sans',sans-serif; font-size:14px; color:var(--ink);
  white-space:nowrap;
}
.oss-zakladka:hover{ background:var(--carbon-hover); }
.oss-zakladka:focus-visible{ outline:2px solid var(--blue); outline-offset:-2px; }
.oss-zakladka[aria-selected="true"]{ border-bottom-color:var(--blue); font-weight:600; }
.oss-panel{ margin-top:24px; }
.oss-panel:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }

/* --- 1a. BANER — pływające ikony wokół kafla serwera -----------------
   SRV-LLM-BANER-001 (fala 10, 2026-08-29). Ewolucja siatki skrótów z decyzji
   właściciela 2026-08-22: Akapity nagłówka mają w arkuszu wspólnym
   `max-width:75ch` (startsrv-wspolne.css linia 396), więc przy kolumnie
   treści 1336 px (1400 − 2×32 px paddingu) po prawej zostaje ok. 700 px
   pustego pola. Tam stoi scena banera, 460×380 px.

   Zero nowych wartości: ramka --border i tło --white jak w `.card` i jak
   w samych przyciskach `.oss-znak` niżej, obrys fokusu 2 px --blue jak
   `.oss-zakladka:focus-visible` i `.oss-dok:focus-visible`.

   ≤940 px scena wraca do zwykłej statycznej siatki (sekcja 5 niżej) —
   `.oss-baner`/`.oss-baner-flot`/`.oss-baner-linie`/`.oss-baner-serwer`
   dostają tam reset na position/display/animation. Żadnej gałęzi JS: samo
   CSS przełącza layout (spec §6.5). ------------------------------------ */
.oss-naglowek{ display:flex; align-items:flex-start; gap:48px; }
.oss-naglowek-tekst{ flex:1 1 auto; min-width:0; }

.oss-baner{ position:relative; flex:0 0 auto; width:460px; height:380px; }

/* warstwa linii POD przyciskami — statyczna, aria-hidden na <svg>, klik
   przechodzi przez nią do niczego dzięki pointer-events:none */
.oss-baner-linie{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.oss-baner-linia{ stroke:var(--border); stroke-width:1; fill:none; }

/* kafel serwera — środek sceny, ramka i tło jak `.oss-znak` obok */
.oss-baner-serwer{
  position:absolute; left:50%; top:50%; transform:translate(-50%,-50%);
  display:flex; flex-direction:column; align-items:center; gap:8px;
  text-align:center;
}
.oss-baner-serwer-box{
  display:flex; align-items:center; justify-content:center;
  width:72px; height:72px;
  border:1px solid var(--border); background:var(--white);
}
/* wartości 1:1 z `.trdc-llm-pikto` (trdc-llm.js) — ten sam piktogram Carbon,
   ten sam rozmiar i krycie, żeby kafel serwera nie wprowadzał nowej skali */
.oss-baner-pikto{ width:40px; height:40px; display:block; opacity:.9; }
.oss-baner-serwer-podpis{
  font-size:11px; font-weight:600; letter-spacing:.1em; text-transform:uppercase;
  color:var(--ink);
}

/* przyciski `.oss-znak` stoją w opakowaniach pozycjonowanych przez dane
   modułu (`left`/`top` w %, patrz POZYCJE_BANERA w open-source-ai.js);
   nav wypełnia całą scenę, żeby te % liczyły się od tego samego prostokąta
   460×380 px co linie i kafel serwera */
.oss-znaki{
  position:absolute; inset:0;
}
.oss-baner-flot{
  position:absolute; transform:translate(-50%,-50%);
}
/* Pływanie: transform translateX/Y ±4-6 px, 12-18 s, ease-in-out, infinite
   alternate — czas trwania i opóźnienie per ikona ustawia inline `style`
   (dane, nie losowość runtime), trzy warianty kierunku poniżej dają różne
   fazy bez trzymania osobnych keyframes na każdą z dziesięciu ikon. */
.oss-baner-flot-a{ animation:oss-baner-plyw-a 15s ease-in-out infinite alternate; }
.oss-baner-flot-b{ animation:oss-baner-plyw-b 15s ease-in-out infinite alternate; }
.oss-baner-flot-c{ animation:oss-baner-plyw-c 15s ease-in-out infinite alternate; }
@keyframes oss-baner-plyw-a{
  from{ transform:translate(-50%,-50%) translate(0,0); }
  to{ transform:translate(-50%,-50%) translate(6px,-5px); }
}
@keyframes oss-baner-plyw-b{
  from{ transform:translate(-50%,-50%) translate(0,0); }
  to{ transform:translate(-50%,-50%) translate(-6px,4px); }
}
@keyframes oss-baner-plyw-c{
  from{ transform:translate(-50%,-50%) translate(0,0); }
  to{ transform:translate(-50%,-50%) translate(4px,6px); }
}

/* RÓWNE PROPORCJE na samym przycisku. Komórka ma podaną WPROST szerokość
   i wysokość, jednakową dla każdego znaku (100×48 px), a plik wchodzi w nią
   przez `object-fit:contain` i jest wyśrodkowany w obu osiach. Znak niższy
   albo węższy nie zmienia rozmiaru komórki, więc każda pozycja ma tę samą
   wagę wizualną — dokładnie ta sama dyscyplina, co przy `.oss-logo` na kaflu.

   Zero nowych wartości: ramka --border i tło --white jak w `.card`,
   ramka po najechaniu --blue jak `.card:hover` i `.card.pnl-kafel:hover`,
   obrys fokusu 2 px --blue z offsetem 2 px jak `.oss-zakladka:focus-visible`
   i `.oss-dok:focus-visible`. Wysokość 24 px obrazka to wariant `.oss-logo`
   (28 px) zmniejszony do skali skrótu.
   ------------------------------------------------------------------- */
.oss-znak{
  position:relative;
  display:flex; align-items:center; justify-content:center;
  width:100px; height:48px; padding:0 10px;
  border:1px solid var(--border); background:var(--white);
  font:inherit; color:inherit; cursor:pointer;
  transition:transform 120ms ease, border-color .13s;
}
/* powiększa się TYLKO najechana komórka. Ścieżki siatki mają stałą szerokość
   i wysokość, więc `transform` nie przelicza układu i sąsiedzi nie drgną;
   `z-index` pilnuje, żeby powiększony znak szedł nad sąsiadem, nie pod. */
.oss-znak:hover{ transform:scale(1.12); border-color:var(--blue); z-index:1; }
.oss-znak:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; z-index:1; }
.oss-znak-img{
  height:24px; width:auto; max-width:80px;
  object-fit:contain; object-position:center;
}
/* ten sam powód co przy `.oss-logo-box.oss-logo-rev`: znak publikowany
   wyłącznie w białym tuszu dostaje tło, pod które został narysowany */
.oss-znak.oss-znak-rev{ background:var(--ink); }

/* --- 2. KAFEL POZYCJI ------------------------------------------------
   Sam kafel to `.card.pnl-kafel` bez zmian. Tu tylko dwie rzeczy, których
   wzorzec panelu nie przewidywał: kafel NIE jest klikalny w całości (jedynym
   elementem interaktywnym jest odnośnik do dokumentacji), a ramka ma reagować
   także na fokus klawiatury — tym samym kolorem co hover w `.card.pnl-kafel`.
   ------------------------------------------------------------------- */
/* `scroll-margin-top` — belka `.pnl-topbar` jest przyklejona i ma 48 px
   (--carbon-topbar-h), więc kafel dojechany `block:"start"` chowałby się
   pod nią. 64 px = te 48 px plus 16 px światła. */
.oss-kafel{ cursor:default; scroll-margin-top:64px; }
.oss-kafel:focus-within{ border-color:var(--blue); }
/* chwilowe podświetlenie kafla po kliknięciu znaku w nagłówku — ten sam
   obrys, którym strona pokazuje fokus klawiatury (`.oss-zakladka`,
   `.oss-dok`, `.oss-panel`). Znika po 1,5 s, zdejmuje go JavaScript. */
.oss-kafel-wskazany{ outline:2px solid var(--blue); outline-offset:2px; }

/* etykieta licencji — chip `.seg-badge` (monolit linia 144) w wariancie
   neutralnym; wartości identyczne jak `.seg-badge.stan-stopped`
   (startsrv-wspolne.css §5): #eaecef = --g10, #3f444d = --g70 */
/* `.card` jest kolumna flex, wiec inline-block dziecko rozciagneloby sie
   na cala szerokosc kafla — chip ma obejmowac tekst, nie kafel */
.oss-licencja{ align-self:flex-start; background:#eaecef; color:#3f444d; }
/* copyleft niesie realny skutek prawny, więc chip jest cięższy — wartości
   jak `.seg-badge.stan-maintenance`. Znaczenie i tak niesie TEKST na kaflu. */
.oss-licencja.oss-copyleft{ background:#3f444d; color:#fff; }

/* --- 2a. LOGOTYP PROJEKTU NA KAFLU -----------------------------------
   Znak stoi w JEDNYM miejscu na każdym kaflu: własny wiersz pod chipem
   licencji, bezpośrednio nad nazwą. Pudełko ma stałą wysokość, więc kafle
   zachowują równą budowę niezależnie od tego, czy znak jest kwadratową ikoną
   (vLLM, Argo), czy szerokim wordmarkiem (Hugging Face, DuckDB).

   PLIK JEST NIETKNIĘTY. Rozmiar ustawia wyłącznie ten arkusz: `max-height`
   ogranicza znaki wysokie, `max-width` — długie wordmarki, a `object-fit:
   contain` pilnuje proporcji. Zero przeskalowania samego pliku, zero
   przebarwienia, zero docinania (dyscyplina 02a).

   `align-self:flex-start` z tego samego powodu co przy `.oss-licencja`:
   `.card` jest kolumną flex, więc bez tego pudełko rozciągnęłoby się na całą
   szerokość kafla. Pozycje BEZ znaku nie dostają pustego pudełka — element
   w ogóle się nie renderuje, więc ich kafel wygląda dokładnie jak dziś.
   ------------------------------------------------------------------- */
.oss-logo-box{
  align-self:flex-start;
  display:flex; align-items:center;
  height:28px; margin-bottom:12px;
}
/* WYSOKOSC MUSI BYC PODANA WPROST, nie przez `max-height` przy `height:auto`.
   Pięć pobranych plików nie ma w ogóle atrybutów `width`/`height` na <svg>
   (axolotl, duckdb, milvus, vllm) albo ma je w procentach (langchain
   100%/100%). Taki plik nie niesie rozmiaru własnego, więc jako element
   zastępowany w kolumnie flex zwijał się do 0×0 i znak w ogóle się nie
   pokazywał — sprawdzone w przeglądarce, wszystkie pięć znikało.
   Przy `height:28px` przeglądarka odczytuje proporcje z `viewBox` i wylicza
   szerokość sama; pliki z normalnymi atrybutami zachowują się tak samo.
   To NIE jest ingerencja w plik — plik zostaje bajt w bajt, rozmiar nadaje
   arkusz. `object-fit:contain` broni proporcji, gdy wordmark dobije do
   `max-width`, a `object-position` trzyma znak przy lewej krawędzi. */
.oss-logo{
  height:28px; width:auto; max-width:150px;
  object-fit:contain; object-position:left center;
}

/* Plakietka pod znaki, które wydawca publikuje WYŁĄCZNIE w wariancie
   odwróconym (biały tusz pod ciemne tło) — na białym kaflu taki wordmark jest
   niewidoczny. Przemalowanie pliku jest zakazane, więc znak dostaje to tło,
   pod które został narysowany — `--ink`, ten sam czarny co stopka strony.
   To decyzja PREZENTACYJNA (tło pod plikiem), nie ingerencja w plik.

   Klasę dostaje dziś JEDNA pozycja: LanceDB. Trzy pozostałe (Apache Spark,
   Delta Lake, llama.cpp) mają już w mapie LOGO wariant jasny pobrany z tego
   samego oficjalnego źródła, więc plakietki nie potrzebują. Reguła zostaje,
   bo LanceDB nigdzie nie publikuje swojego wordmarku na jasnym tle. */
.oss-logo-box.oss-logo-rev{
  height:34px; padding:0 8px; background:var(--ink);
}
.oss-logo-rev .oss-logo{ height:26px; }

/* odnośnik „Dokumentacja →" w stopce kafla — kolor i podkreślenie z
   `.pnl-link` (startsrv-wspolne.css §3), rozmiar jak `.card.pnl-kafel .c-foot` */
.oss-dok{
  font-size:12px; font-weight:600; color:var(--blue);
  text-decoration:underline; text-underline-offset:2px;
}
.oss-dok:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }

/* tekst wyłącznie dla czytnika ekranu — technika 1:1 z `.filter-check input`
   (monolit linie 532–539) */
.oss-tylko-dla-czytnika{
  position:absolute; inline-size:1px; block-size:1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap;
}

/* --- 3. SEKCJA „MODELE O OTWARTYCH WAGACH" ---------------------------
   Ma być widocznie inną kategorią prawną, nie przypisem. Odróżnienie robimy
   tłem --g06 (monolit linia 13) i lewą krawędzią kafla 2–3 px w --ink —
   ta sama geometria co `inset 3px 0 0` w `.ws-config-option.sel`
   (monolit linia 121) i ten sam ciężar linii co `.supply-seg` (2 px).
   ------------------------------------------------------------------- */
.oss-wagi{
  margin-top:48px; padding:32px;
  background:var(--g06); border-top:1px solid var(--border);
}
/* specyficznosc musi bic `.card.pnl-kafel{box-shadow:none}` i jego :hover
   z startsrv-wspolne.css — inaczej krawedz w ogole sie nie rysuje */
.card.pnl-kafel.oss-kafel-wagi,
.card.pnl-kafel.oss-kafel-wagi:hover{ box-shadow:inset 3px 0 0 var(--ink); }

/* --- 4. STOPKA -------------------------------------------------------
   Stopka strony głównej żyje w site/trdc-home.js (funkcja `stopka()`) i jest
   wstrzykiwana razem ze stylami tamtej warstwy — podstrona samodzielna nie ma
   do niej dostępu. Wartości poniżej przepisane z tamtych reguł
   (`.trdc-home-stopka*`, trdc-home.js linie 1031–1037), żeby stopka wyglądała
   identycznie: tło --ink, tekst biały 13 px/1,75 przy 72% krycia, etykieta
   11 px UPPERCASE letter-spacing .1em przy 60% krycia.
   ------------------------------------------------------------------- */
.oss-stopka{ background:var(--ink); color:var(--white); padding:56px 32px 62px; margin-top:0; }
/* pas tła stopki zostaje pełnej szerokości (jak dziś), ale jego siatka staje
   w tej samej pionowej linii co treść nad nią: 1336 px = 1400 − 2×32 px
   paddingu `.pnl-ekran`, więc lewa krawędź tekstu stopki pokrywa się co do
   piksela z lewą krawędzią nagłówka i kafli */
.oss-stopka-grid{ display:grid; grid-template-columns:1fr 1.1fr; gap:56px; max-width:1336px; margin:0 auto; }
.oss-stopka-marka{ font-size:14px; font-weight:600; letter-spacing:.12em; color:var(--white); }
.oss-stopka-t{ font-size:13px; line-height:1.75; color:var(--white); opacity:.72; margin:16px 0 0; max-width:44ch; }
.oss-stopka-l{ font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--white); opacity:.6; margin-bottom:8px; }
.oss-stopka-lista{ list-style:none; margin:0; padding:0; }
.oss-stopka-lista li{ font-size:13px; line-height:1.75; color:var(--white); opacity:.78; margin-bottom:6px; }
.oss-stopka a{ color:var(--white); text-decoration:underline; text-underline-offset:3px; }
.oss-stopka a:hover{ opacity:1; }
.oss-stopka a:focus-visible{ outline:2px solid var(--white); outline-offset:2px; }

/* --- 4a. LISTA METODY (structured list) ------------------------------
   `.p-summary.specs` przyszlo do startsrv-wspolne.css z monolitu (linie
   604–609), ale BEZ towarzyszacego mu punktu lamania z linii 610–613.
   Przepisujemy go tu dokladnie, bo bez niego przy 390 px etykieta i wartosc
   wchodza na siebie. Zero nowych wartosci — to kopia tamtych trzech linii. */
@media(max-width:640px){
  #pnl-shell .p-summary.specs .sum-row{ grid-template-columns:1fr; gap:3px; padding:11px 15px; }
  #pnl-shell .p-summary.specs .sum-row .l{ font-size:11px; letter-spacing:.05em; text-transform:uppercase; }
}

/* --- 5. RESPONSYWNOŚĆ ------------------------------------------------
   Punkt łamania 940 px — ten sam co w monolicie i w panelu.
   `.pnl-topnav` w panelu znika poniżej 940 px, bo tam nawigację przejmuje
   side-nav. Ta podstrona side-navu nie ma, więc nawigacja ZOSTAJE, tylko
   zwęża padding. Zakładki zawijają się do kolejnych wierszy zamiast
   przewijać w poziomie — przy 390 px strona nie ma poziomego paska.
   ------------------------------------------------------------------- */
/* Poniżej 1400 px kolumna treści przestaje mieć zapas po prawej (akapit ma
   75ch, czyli ok. 630 px), więc scena banera schodzi POD akapity i staje się
   blokiem pełnej szerokości kolumny — nadal scena 460×380 px, tylko już nie
   obok tekstu. Sama zamiana na statyczną siatkę czeka do ≤940 px (spec §6.5,
   F4) — poniżej tego progu jest już właściwy reset na `.oss-baner`. */
@media(max-width:1399px){
  .oss-naglowek{ display:block; }
}
@media(max-width:940px){
  #pnl-shell .pnl-topnav{ display:flex; overflow:hidden; }
  #pnl-shell .pnl-topnav-poz{ padding:0 10px; font-size:13px; }
  .oss-zakladka{ padding:0 12px; font-size:13px; }
  .oss-wagi{ margin-top:32px; padding:24px 16px; }
  .oss-stopka{ padding:40px 16px 46px; }
  .oss-stopka-grid{ grid-template-columns:1fr; gap:30px; }

  /* --- BANER → STATYCZNA SIATKA (spec §6.5 / F4) ---------------------
     Scena zwija się do OBECNEJ statycznej siatki: linie i kafel serwera
     znikają, `.oss-znaki` wraca do `display:grid` (wartości identyczne
     jak dawna `siatkaZnakow()` — zero nowego layoutu), a opakowania
     `.oss-baner-flot` wracają do normalnego przepływu siatki bez
     pozycjonowania i bez animacji. */
  .oss-baner{ position:static; width:auto; height:auto; }
  .oss-baner-linie{ display:none; }
  .oss-baner-serwer{ display:none; }
  .oss-znaki{
    position:static; inset:auto;
    display:grid; grid-template-columns:repeat(auto-fill,100px); gap:12px;
    justify-content:start; align-content:start; margin-top:24px;
  }
  .oss-baner-flot{
    position:static; left:auto; top:auto;
    animation:none; transform:none;
  }
}
/* 390 px: kolumna treści ma 358 px (390 − 2×16 px paddingu `.pnl-ekran`
   poniżej 940 px). Ścieżka 64 px z odstępem 8 px daje PIĘĆ komórek
   w rzędzie: 5×64 + 4×8 = 352 px, czyli o 6 px mniej niż kolumna —
   dziesięć znaków mieści się w dwóch równych rzędach bez przewijania
   w poziomie. Wysokość 44 px zostaje w tym samym przedziale co 48 px. */
@media(max-width:640px){
  .oss-znaki{ grid-template-columns:repeat(auto-fill,64px); gap:8px; margin-top:20px; }
  .oss-znak{ width:64px; height:44px; padding:0 6px; }
  .oss-znak-img{ height:20px; max-width:50px; }
}
@media(max-width:560px){
  #pnl-shell .pnl-marka{ font-size:12px; letter-spacing:.08em; padding:0 10px; }
  #pnl-shell .pnl-topnav-poz{ padding:0 8px; font-size:12px; }
  /* Ponizej 560 px trzy pozycje + logotyp nie mieszcza sie w belce 48 px i
     ostatnia byla ucinana. Chowamy pozycje BIEZACEJ strony (jedyna, ktora nie
     jest celem nawigacji) — informacja „gdzie jestem" i tak stoi w <h1> tuz
     pod belka. Odnosniki wychodzace zostaja oba, w calosci. */
  #pnl-shell .pnl-topnav-poz.aktywna{ display:none; }
}

/* --- 6. PREFERS-REDUCED-MOTION (spec §6.4, F3) ------------------------
   Wzorzec z trdc-home.js (linia ~1126): `animation:none` dla wszystkiego,
   co się rusza. `!important` tu jest celowy i jedyny w tym pliku — reguła
   musi wygrywać niezależnie od tego, które warianty `.oss-baner-flot-a/b/c`
   dopisały własną wartość `animation` wcześniej w kaskadzie. `transform`
   wraca do samego wyśrodkowania (bez pływania), więc ikony stoją dokładnie
   na współrzędnych z POZYCJE_BANERA — statyczne, nie ukryte. --------- */
@media(prefers-reduced-motion:reduce){
  .oss-baner-flot{ animation:none !important; transform:translate(-50%,-50%) !important; }
}
