/* style.css — Ham Radio Control UI v3.0 (kafelkowy layout + wysuwany panel RF) */ @import url('https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Orbitron:wght@400;700;900&family=Inter:wght@300;400;500;600&display=swap'); *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { /* ── Paleta "SDR Studio Pro" (przejete z forka 2026-10-16, na zadanie uzytkownika "chce uzyskac tamten wyglad z nasza uzytecznoscia") — gleboki granat/slate, elektryczny cyjan/blekit jako glowny akcent (VFO, aktywne stany), bursztyn dla pasm/ostrzezen, rose-red dla TX/PTT. Zastepuje poprzednia "natural sage" (oliwkowo-zielona). Nazwy zmiennych BEZ ZMIAN — tylko wartosci — zeby wszystkie regulki korzystajace z var(--green) itp. automatycznie dziedziczyly nowa paleta. ── */ --bg: #070b14; --panel: #0d1424; --panel2: #131c31; --panel3: #1c2944; --border: rgba(var(--green-rgb),0.12); --border2: rgba(var(--green-rgb),0.28); --green: #38bdf8; --green2: #0284c7; --amber: #fbbf24; --red: #f43f5e; --dim: rgba(148,163,184,0.65); --text: #f1f5f9; /* Czarny tekst/obwodka dla wypelnionych (solid) elementow — przyciski aktywne, kciuki sliderow, znaczniki — zapewnia kontrast na jasnym tle akcentu (--green/--amber). */ --on-accent: #070b14; /* Rozpakowane R,G,B (bez "rgba()") dla --green/--green2/--amber/--red - pozwala inline-stylom i regulkom nizej budowac rgba(var(--green-rgb), ALPHA) zamiast wpisywac na sztywno wartosci liczbowe. Dodane 2026-10-15: masowe podmienianie literalow na te zmienne to byl wlasciwy fix na "kolory... malo widoczne" w jasnym motywie — bez tego dziesiatki tel/obwodek odznak w ogole nie reagowaly na motyw. */ --green-rgb: 56,189,248; --green2-rgb: 2,132,199; --amber-rgb: 251,191,36; --red-rgb: 244,63,94; /* Rowek miernikow (S-metr/TX-metr) — celowo ciemniejszy niz --panel w OBU motywach (wyglada jak wnetrze fizycznego wskaznika), nie po prostu var(--panel3). */ --meter-track: #020617; /* Pola tekstowe/liczbowe (RIT Hz, edycja makr CW, numery portow COM itp.) uzywaly "var(--input-bg,#0a0a0a)" wszedzie - --input-bg nigdy nie byl jawnie zdefiniowany, wiec kazde z tych pol ZAWSZE dostawalo ten sam twardy fallback #0a0a0a bez wzgledu na motyw (live report 2026-10-16: "caly blok frq jest na ciemno" - pole RIT Hz tuz przy VFO to jeden z tych inputow). */ --input-bg: #0a101d; /* --fg: uzywany w kilku inline-stylach (COM Bridge, PROFIL audio TEST, itp.) - domyslnie = --text, chyba ze konkretny motyw (np. amber-classic nizej) jawnie go nadpisuje. Bez tej linii --fg byl NIGDZIE niezdefiniowany poza amber-classic, wiec w kazdym innym motywie/trybie po prostu dziedziczyl --text przez CSS fallback - dzialalo przypadkiem, ale jawna definicja jest jasniejsza i bezpieczniejsza. */ --fg: var(--text); --mono: 'JetBrains Mono', 'Share Tech Mono', monospace; --display: 'JetBrains Mono', 'Orbitron', monospace; --ui: 'Plus Jakarta Sans', 'Inter', sans-serif; } html { /* body.width jest ustawiane przez JS (updateScale) na scale*REF_W. Wysokosc NIE jest sztywno ograniczana — strony dluzsze niz 1080px (np. USTAWIENIA z wieloma sekcjami, CZAT z dluga historia) moga przewijac sie wertykalnie (scroll na html/body), przy zachowanym skalowaniu X/Y. Tlo (--bg) wypelnia pillarbox gdy proporcje viewportu odbiegaja od 16:9. scrollbar-gutter: stable — rezerwuje miejsce na pionowy scrollbar ZAWSZE (nawet gdy strona nie przewija sie), zeby clientWidth (uzywane w updateScale) bylo stale i nie zmienialo sie przy przelaczaniu zakladek krotszych/dluzszych niz viewport — zapobiega "skakaniu" calego layoutu o szerokosc scrollbara. */ background: #070b14; scrollbar-gutter: stable; } html[data-mode="light"] { background: #f8fafc; } body { background: var(--bg); color: var(--text); font-family: var(--ui); /* width ustawiane dynamicznie przez JS (updateAppScale) na scale*REF_W — dopasowane do #app-scale po transformacji. Wysokosc auto: pozwala na scroll gdy zawartosc strony przekracza REF_H. */ } /* ── #app-scale: caly UI w referencyjnym rozmiarze 1440px szerokosci ── Wszystkie elementy wewnatrz zachowuja absolutnie identyczne proporcje i pozycje wzgledem siebie na kazdym ekranie — JS aplikuje transform:scale() (patrz