Files
MSPPPPaM/css/auth-styl.css
T
2026-03-18 22:01:40 +01:00

575 lines
14 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ============================================================
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; }
}