/* ============================================================ AUTH SYSTÉM – STYL ============================================================ Umístění: libovolné (např. /css/auth-styl.css) Aktivace: v auth/config.php nastavit define('AUTH_CSS', '/css/auth-styl.css'); Funguje bez jakýchkoliv změn v PHP souborech. Styluje čistě pomocí HTML elementů – žádné třídy nejsou potřeba. ============================================================ */ /* ------------------------------------------------------------ PROMĚNNÉ – barvy a rozměry ------------------------------------------------------------ */ :root { /* Pozadí */ --bg-hlavni: #1a1a1a; /* hlavní pozadí stránky */ --bg-obsah: #222222; /* pozadí obsahového pruhu */ --bg-prvek: #2c2c2c; /* pozadí inputů, tabulek, textarea */ --bg-prvek-focus: #333333; /* inputy při focusu */ /* Písmo */ --text-hlavni: #d4d4d4; /* hlavní text */ --text-jemny: #888888; /* pomocný text (span, popisky síly hesla) */ --text-nadpis: #f0f0f0; /* nadpisy */ /* Akcent – tmavě červená */ --akcent: #8b1a1a; /* primární akcent */ --akcent-svetly: #c0392b; /* hover, aktivní stav */ --akcent-okraj: #6b1414; /* okraj akcentových prvků */ /* Doplňková barva – ocelová šedá */ --ocel: #4a5568; /* okraje, oddělovače */ --ocel-svetly: #718096; /* jemnější prvky */ /* Stavy */ --chyba-text: #fc8181; /* text chybové hlášky */ --uspech-text: #68d391; /* text úspěšné hlášky */ /* Rozměry */ --pruh-max: 640px; /* maximální šířka obsahového pruhu */ --mezera: 1.5rem; /* základní mezera */ --polomer: 3px; /* zaoblení rohů */ } /* ------------------------------------------------------------ ZÁKLAD – reset a tělo stránky ------------------------------------------------------------ */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { font-size: 16px; scroll-behavior: smooth; } body { background-color: var(--bg-hlavni); color: var(--text-hlavni); font-family: 'Georgia', 'Times New Roman', serif; font-size: 1rem; line-height: 1.7; min-height: 100vh; padding: var(--mezera); } /* ------------------------------------------------------------ OBSAHOVÝ PRUH – centrovaný, užší ------------------------------------------------------------ */ body > * { max-width: var(--pruh-max); margin-left: auto; margin-right: auto; } /* Hlavní obal obsahu – vizuální karta */ body { display: flex; flex-direction: column; align-items: center; } body > h1, body > h2, body > h3, body > p, body > form, body > table, body > section, body > hr, body > ol, body > ul, body > textarea, body > pre, body > code { width: 100%; max-width: var(--pruh-max); } /* ------------------------------------------------------------ TYPOGRAFIE ------------------------------------------------------------ */ h1 { color: var(--akcent-svetly); font-size: 1.8rem; font-weight: normal; letter-spacing: 0.03em; margin-top: calc(var(--mezera) * 1.5); margin-bottom: 0.3rem; border-bottom: 1px solid var(--akcent-okraj); padding-bottom: 0.4rem; } h2 { color: var(--text-nadpis); font-size: 1.2rem; font-weight: normal; letter-spacing: 0.05em; text-transform: uppercase; margin-top: var(--mezera); margin-bottom: 0.8rem; color: var(--ocel-svetly); } h3 { color: var(--akcent-svetly); font-size: 1.05rem; font-weight: bold; margin-top: calc(var(--mezera) * 1.2); margin-bottom: 0.6rem; } p { margin-top: 0.7rem; margin-bottom: 0.3rem; max-width: var(--pruh-max); width: 100%; } strong { color: var(--text-nadpis); font-weight: bold; } /* Chybové hlášky – "Chyba: ..." */ p > strong:first-child { color: var(--chyba-text); } /* Úspěšné hlášky – "OK: ..." nebo "Registrace proběhla..." */ p > strong:first-child:not([style]) { /* Heuristika: pokud strong začíná "OK" nebo "Registrace" nebo "Instalace", probarvíme zeleně. Protože CSS neumí inspektovat obsah, použijeme specifické selektory kde je to možné */ } /* Explicitní zelená pro úspěch v install.php a ostatních */ p strong { color: var(--text-nadpis); } /* ------------------------------------------------------------ ODKAZY ------------------------------------------------------------ */ a { color: var(--akcent-svetly); text-decoration: none; border-bottom: 1px solid var(--akcent-okraj); transition: color 0.15s, border-color 0.15s; } a:hover, a:focus { color: #e74c3c; border-bottom-color: #e74c3c; outline: none; } /* ------------------------------------------------------------ ODDĚLOVAČE ------------------------------------------------------------ */ hr { border: none; border-top: 1px solid var(--ocel); margin: calc(var(--mezera) * 1.2) auto; width: 100%; max-width: var(--pruh-max); } /* ------------------------------------------------------------ FORMULÁŘE – obecně ------------------------------------------------------------ */ form { width: 100%; max-width: var(--pruh-max); margin-top: 0.5rem; } form p { margin-bottom: 0.8rem; } label { display: block; font-size: 0.88rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ocel-svetly); margin-bottom: 0.3rem; } /* Inline label pro checkbox – nepřepisujeme display */ label:has(input[type="checkbox"]) { display: inline-flex; align-items: center; gap: 0.5rem; text-transform: none; letter-spacing: normal; font-size: 0.95rem; color: var(--text-hlavni); cursor: pointer; } /* ------------------------------------------------------------ INPUTY ------------------------------------------------------------ */ input[type="text"], input[type="email"], input[type="password"] { display: block; width: 100%; background-color: var(--bg-prvek); color: var(--text-hlavni); border: 1px solid var(--ocel); border-radius: var(--polomer); padding: 0.55rem 0.75rem; font-size: 1rem; font-family: inherit; transition: border-color 0.15s, background-color 0.15s; outline: none; margin-top: 0.2rem; } input[type="text"]:focus, input[type="email"]:focus, input[type="password"]:focus { background-color: var(--bg-prvek-focus); border-color: var(--akcent-svetly); } input[type="text"]::placeholder, input[type="email"]::placeholder, input[type="password"]::placeholder { color: var(--ocel-svetly); opacity: 0.7; } /* Inline inputy pro heslo v tabulce admin.php */ table input[type="password"] { width: auto; display: inline-block; padding: 0.3rem 0.5rem; font-size: 0.9rem; } input[type="checkbox"] { width: 1rem; height: 1rem; accent-color: var(--akcent-svetly); cursor: pointer; flex-shrink: 0; } /* ------------------------------------------------------------ TEXTAREA (install.php – SQL výpis) ------------------------------------------------------------ */ textarea { display: block; width: 100%; max-width: var(--pruh-max); background-color: var(--bg-prvek); color: #a8d8a8; /* zelenkavá pro SQL kód */ border: 1px solid var(--ocel); border-radius: var(--polomer); padding: 0.75rem; font-family: 'Courier New', Courier, monospace; font-size: 0.82rem; line-height: 1.5; resize: vertical; outline: none; margin-top: 0.5rem; } textarea:focus { border-color: var(--akcent-svetly); } /* ------------------------------------------------------------ TLAČÍTKA ------------------------------------------------------------ */ button[type="submit"], button[type="button"] { background-color: var(--akcent); color: #f0f0f0; border: 1px solid var(--akcent-okraj); border-radius: var(--polomer); padding: 0.5rem 1.2rem; font-size: 0.95rem; font-family: inherit; letter-spacing: 0.04em; cursor: pointer; transition: background-color 0.15s, border-color 0.15s; margin-top: 0.3rem; } button[type="submit"]:hover, button[type="button"]:hover { background-color: var(--akcent-svetly); border-color: var(--akcent-svetly); } button[type="submit"]:focus, button[type="button"]:focus { outline: 2px solid var(--akcent-svetly); outline-offset: 2px; } /* Zakázané tlačítko (čeká na dostatečné heslo) */ button:disabled { background-color: var(--bg-prvek); color: var(--ocel-svetly); border-color: var(--ocel); cursor: not-allowed; } button:disabled:hover { background-color: var(--bg-prvek); border-color: var(--ocel); } /* Inline formulář (odhlášení v $auth_logout_html a tabulce admina) */ form[style*="display:inline"], form[style*="display: inline"] { display: inline; width: auto; margin: 0; } form[style*="display:inline"] button, form[style*="display: inline"] button { margin-top: 0; padding: 0.25rem 0.7rem; font-size: 0.88rem; } /* ------------------------------------------------------------ INDIKÁTOR SÍLY HESLA (span#heslo-sila) ------------------------------------------------------------ */ #heslo-sila { display: inline-block; font-size: 0.82rem; color: var(--text-jemny); margin-top: 0.3rem; } /* Vysvětlení proč je tlačítko zakázané (span#tlacitko-duvod) */ #tlacitko-duvod, #novy-tlacitko-duvod { font-size: 0.82rem; color: var(--text-jemny); margin-left: 0.4rem; } /* ------------------------------------------------------------ TABULKY (admin.php – seznam uživatelů, konfigurace) ------------------------------------------------------------ */ table { width: 100%; max-width: var(--pruh-max); border-collapse: collapse; margin-top: 0.8rem; font-size: 0.92rem; } table th { background-color: var(--akcent); color: #f0f0f0; text-align: left; padding: 0.5rem 0.7rem; font-size: 0.82rem; letter-spacing: 0.05em; text-transform: uppercase; border: 1px solid var(--akcent-okraj); } table td { background-color: var(--bg-prvek); color: var(--text-hlavni); padding: 0.45rem 0.7rem; border: 1px solid var(--ocel); vertical-align: middle; } table tr:nth-child(even) td { background-color: #2a2a2a; } table tr:hover td { background-color: #303030; } /* Hodnota "ANO" v tabulce admina */ table td:has(> *:only-child) { /* nelze cílit na obsah v CSS, necháme obecný styl */ } /* Kurzívní poznámka v tabulce – "(první uživatel systému – nelze smazat)" */ table td em { color: var(--text-jemny); font-style: italic; font-size: 0.85rem; } /* ------------------------------------------------------------ KÓDOVÉ ELEMENTY (code v admin.php) ------------------------------------------------------------ */ code { background-color: var(--bg-prvek); color: #a8d8a8; font-family: 'Courier New', Courier, monospace; font-size: 0.88em; padding: 0.1em 0.35em; border-radius: var(--polomer); border: 1px solid var(--ocel); } /* ------------------------------------------------------------ SEZNAMY (ol, ul v install.php) ------------------------------------------------------------ */ ol, ul { width: 100%; max-width: var(--pruh-max); padding-left: 1.5rem; margin-top: 0.5rem; margin-bottom: 0.5rem; } ol li, ul li { margin-bottom: 0.3rem; line-height: 1.6; } /* ------------------------------------------------------------ $auth_logout_html – badge s emailem a odhlášením (vkládán jako inline HTML, bez wrapperu) Cílíme na přímé potomky body nebo na libovolné umístění ------------------------------------------------------------ */ /* Odkaz "Administrace" v logout_html */ a[href$="admin.php"] { color: var(--akcent-svetly); font-size: 0.9rem; letter-spacing: 0.03em; } /* ------------------------------------------------------------ RESPONSIVNÍ DESIGN ------------------------------------------------------------ */ @media (max-width: 680px) { :root { --pruh-max: 100%; } body { padding: 0.75rem; } h1 { font-size: 1.4rem; } table { font-size: 0.82rem; } table th, table td { padding: 0.35rem 0.4rem; } /* Na mobilu se inline formuláře v tabulce přesunou pod sebe */ table td form[style*="display:inline"], table td form[style*="display: inline"] { display: block; margin-bottom: 0.3rem; } table td form[style*="display:inline"] button, table td form[style*="display: inline"] button { width: 100%; } input[type="text"], input[type="email"], input[type="password"] { font-size: 1rem; /* zabrání zoomu na iOS */ } /* Inline inputy pro heslo v tabulce – na mobilu plná šířka */ table input[type="password"] { display: block; width: 100%; margin-bottom: 0.3rem; } } @media (max-width: 400px) { h1 { font-size: 1.2rem; } button[type="submit"], button[type="button"] { width: 100%; } } /* ------------------------------------------------------------ DROBNÉ DETAILY A DOLADĚNÍ ------------------------------------------------------------ */ /* Vizuální oddělení stránky od kraje – jemný svislý ohraničující efekt na širších obrazovkách */ @media (min-width: 700px) { body { background-image: linear-gradient(to right, transparent calc(50% - 340px), #252525 calc(50% - 340px), #252525 calc(50% + 340px), transparent calc(50% + 340px) ); } } /* Přechod pro plynulejší načtení */ body { animation: fadein 0.2s ease-in; } @keyframes fadein { from { opacity: 0; } to { opacity: 1; } }