diff --git a/auth/config.php b/auth/config.php index 704573e..30e1d26 100644 --- a/auth/config.php +++ b/auth/config.php @@ -144,4 +144,4 @@ define('MAIL_TEST_ADRESA', 'admin@svach.eu'); // Cesta k vlastnímu CSS souboru pro stránky auth systému. // Pokud nechceš vlastní styl, nastav na prázdný řetězec: '' // Příklad: '/css/auth-styl.css' -define('AUTH_CSS', ''); \ No newline at end of file +define('AUTH_CSS', '/css/auth-styl.css'); \ No newline at end of file diff --git a/auth/css/auth-styl.css b/auth/css/auth-styl.css new file mode 100644 index 0000000..e942fdd --- /dev/null +++ b/auth/css/auth-styl.css @@ -0,0 +1,575 @@ +/* ============================================================ + 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; } +} \ No newline at end of file