641 lines
16 KiB
CSS
641 lines
16 KiB
CSS
/* ============================================================
|
||
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.
|
||
============================================================ */
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
GOOGLE FONTS
|
||
Montserrat 300/500 – tři velikosti (viz níže)
|
||
IBM Plex Serif 200 – jedna velikost pro veškerý text
|
||
------------------------------------------------------------ */
|
||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;500&family=IBM+Plex+Serif:ital,wght@0,200;1,200&display=swap');
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
TYPOGRAFICKÁ STUPNICE MONTSERRAT
|
||
============================================================
|
||
Velikost A – 2.6rem ... hlavní nadpis stránky (h1), jednou, weight 300
|
||
Velikost B – 1.05rem ... nadpisy sekcí (h2, h3), weight 300
|
||
Velikost C – 0.78rem ... nejmenší (th weight 500, button/label weight 300)
|
||
= shodná s IBM Plex Serif optickou velikostí
|
||
IBM Plex Serif 200 ... 0.875rem pro veškerý ostatní text
|
||
------------------------------------------------------------ */
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
PROMĚNNÉ
|
||
------------------------------------------------------------ */
|
||
:root {
|
||
/* Pozadí */
|
||
--bg-hlavni: #141414; /* tělo stránky = barva mezer mezi bloky */
|
||
--bg-obsah: #222222; /* světlejší bloky obsahu */
|
||
--bg-prvek: #2a2a2a; /* inputy, tabulky, textarea */
|
||
--bg-prvek-focus: #313131; /* input při focusu */
|
||
|
||
/* Písmo */
|
||
--text-hlavni: #d0d0d0;
|
||
--text-jemny: #7a7a7a;
|
||
--text-nadpis: #eeeeee;
|
||
|
||
/* Akcent – tmavě červená */
|
||
--akcent: #5c1010; /* pozadí tlačítek, th */
|
||
--akcent-hover: #7a1515; /* hover tlačítek */
|
||
--akcent-svetly: #c0392b; /* text, h1, h3, odkazy */
|
||
--akcent-okraj: #4a0d0d; /* okraje akcentových prvků */
|
||
|
||
/* Ocelová šedá */
|
||
--ocel: #3a4455; /* okraje inputů, tabulek */
|
||
--ocel-svetly: #6a7a90; /* labely, h2, pomocný text */
|
||
|
||
/* Stavy */
|
||
--chyba-text: #f08080;
|
||
--uspech-text: #68d391;
|
||
|
||
/* Rozměry */
|
||
--pruh-max: 620px;
|
||
--sekce-mezera: 1.6rem; /* výška tmavé mezery mezi bloky */
|
||
--sekce-padding: 1.4rem; /* vnitřní odsazení bloků */
|
||
--polomer-blok: 6px; /* zaoblení rohů bloků */
|
||
--polomer-prvek: 4px; /* zaoblení inputů, tlačítek */
|
||
|
||
/* Stíny */
|
||
--stin-blok: 0 2px 12px rgba(0, 0, 0, 0.45);
|
||
--stin-input: inset 0 1px 3px rgba(0, 0, 0, 0.3);
|
||
--stin-input-focus: 0 0 0 2px rgba(192, 57, 43, 0.25);
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
ZÁKLAD
|
||
------------------------------------------------------------ */
|
||
*, *::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: 'IBM Plex Serif', Georgia, serif;
|
||
font-size: 0.875rem; /* IBM Plex Serif – trochu větší než dřív */
|
||
font-weight: 200;
|
||
line-height: 1.75;
|
||
min-height: 100vh;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
padding: 0;
|
||
animation: fadein 0.2s ease-in;
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
OBSAHOVÝ PRUH
|
||
------------------------------------------------------------ */
|
||
body > * {
|
||
width: 100%;
|
||
max-width: var(--pruh-max);
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
BLOKY OBSAHU – světlejší pozadí, zaoblení, stín
|
||
------------------------------------------------------------ */
|
||
body > h1,
|
||
body > h2,
|
||
body > h3,
|
||
body > p,
|
||
body > form,
|
||
body > table,
|
||
body > section,
|
||
body > ol,
|
||
body > ul,
|
||
body > textarea {
|
||
background-color: var(--bg-obsah);
|
||
padding-left: var(--sekce-padding);
|
||
padding-right: var(--sekce-padding);
|
||
padding-top: var(--sekce-padding);
|
||
padding-bottom: var(--sekce-padding);
|
||
border-radius: var(--polomer-blok);
|
||
box-shadow: var(--stin-blok);
|
||
}
|
||
|
||
/* Tabulka – padding jen nahoře/dole, šířku řídí buňky */
|
||
body > table {
|
||
padding-left: 0;
|
||
padding-right: 0;
|
||
overflow: hidden; /* zaoblení se projeví i na th/td */
|
||
}
|
||
|
||
/* Mezery – každý blok dostane mezeru nahoře */
|
||
body > h1,
|
||
body > h2,
|
||
body > h3,
|
||
body > p,
|
||
body > form,
|
||
body > table,
|
||
body > section,
|
||
body > ol,
|
||
body > ul,
|
||
body > textarea {
|
||
margin-top: var(--sekce-mezera);
|
||
}
|
||
|
||
/* hr = čistá tmavá mezera, žádná čára */
|
||
body > hr {
|
||
border: none;
|
||
background: transparent;
|
||
height: 0;
|
||
padding: 0;
|
||
margin: 0;
|
||
box-shadow: none;
|
||
}
|
||
|
||
/* h2 těsně za h1 – stejný blok, bez mezery nahoře */
|
||
body > h1 + h2 {
|
||
margin-top: 0;
|
||
border-top-left-radius: 0;
|
||
border-top-right-radius: 0;
|
||
padding-top: 0;
|
||
}
|
||
|
||
/* h1 když za ním následuje h2 – zaoblení jen nahoře, bez čáry dole */
|
||
body > h1:has(+ h2) {
|
||
border-bottom-left-radius: 0;
|
||
border-bottom-right-radius: 0;
|
||
padding-bottom: 0.3rem;
|
||
box-shadow: var(--stin-blok); /* stejný stín jako ostatní bloky, bez čáry */
|
||
}
|
||
|
||
/* h3 blok má o trochu světlejší pozadí než ostatní bloky */
|
||
body > h3 {
|
||
background-color: #292929;
|
||
}
|
||
body > *:last-child {
|
||
margin-bottom: var(--sekce-mezera);
|
||
}
|
||
|
||
/* Elementy uvnitř formuláře a sekcí – bez extra pozadí a stínu */
|
||
form > *,
|
||
section > * {
|
||
background-color: transparent;
|
||
box-shadow: none;
|
||
border-radius: 0;
|
||
margin-top: 0;
|
||
padding-left: 0;
|
||
padding-right: 0;
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
TYPOGRAFIE – MONTSERRAT
|
||
------------------------------------------------------------ */
|
||
|
||
/* === VELIKOST A: hlavní nadpis stránky, jednou === */
|
||
h1 {
|
||
font-family: 'Montserrat', sans-serif;
|
||
font-weight: 300;
|
||
font-size: 2.6rem;
|
||
letter-spacing: 0.14em;
|
||
text-transform: uppercase;
|
||
color: var(--akcent-svetly);
|
||
line-height: 1.15;
|
||
}
|
||
|
||
/* === VELIKOST B: nadpisy sekcí === */
|
||
h2,
|
||
h3 {
|
||
font-family: 'Montserrat', sans-serif;
|
||
font-weight: 300;
|
||
font-size: 1.05rem;
|
||
letter-spacing: 0.14em;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
h2 {
|
||
color: #9ab0c8; /* světlejší modrošedá – čitelná na tmavém i světlém */
|
||
}
|
||
|
||
h3 {
|
||
color: var(--akcent-svetly);
|
||
}
|
||
|
||
/* === VELIKOST C: th, button, label, indikátory ===
|
||
(shodná s IBM Plex Serif = 0.78rem, aby text vypadal stejně velký) */
|
||
|
||
p {
|
||
font-size: 0.875rem; /* IBM Plex Serif velikost */
|
||
}
|
||
|
||
strong {
|
||
color: var(--text-nadpis);
|
||
font-weight: 300;
|
||
}
|
||
|
||
p > strong:first-child {
|
||
color: var(--chyba-text);
|
||
}
|
||
|
||
em {
|
||
color: var(--text-jemny);
|
||
font-style: italic;
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
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;
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
FORMULÁŘE
|
||
------------------------------------------------------------ */
|
||
form {
|
||
width: 100%;
|
||
max-width: var(--pruh-max);
|
||
}
|
||
|
||
form p {
|
||
padding: 0;
|
||
margin-bottom: 0.9rem;
|
||
box-shadow: none;
|
||
border-radius: 0;
|
||
margin-top: 0;
|
||
}
|
||
|
||
/* === VELIKOST C: label === */
|
||
label {
|
||
display: block;
|
||
font-family: 'Montserrat', sans-serif;
|
||
font-weight: 300;
|
||
font-size: 0.78rem;
|
||
letter-spacing: 0.1em;
|
||
text-transform: uppercase;
|
||
color: var(--ocel-svetly);
|
||
margin-bottom: 0;
|
||
padding-bottom: 0;
|
||
line-height: 1; /* pevná výška řádku – zabrání dědění 1.75 z body */
|
||
}
|
||
|
||
/* Inline label pro checkbox – jiný styl */
|
||
label:has(input[type="checkbox"]) {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 0.5rem;
|
||
font-family: 'IBM Plex Serif', Georgia, serif;
|
||
font-weight: 200;
|
||
font-size: 0.875rem;
|
||
text-transform: none;
|
||
letter-spacing: normal;
|
||
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-prvek);
|
||
padding: 0.45rem 0.7rem;
|
||
font-size: 0.875rem;
|
||
font-family: 'IBM Plex Serif', Georgia, serif;
|
||
font-weight: 200;
|
||
box-shadow: var(--stin-input);
|
||
transition: border-color 0.15s, background-color 0.15s, box-shadow 0.15s;
|
||
outline: none;
|
||
margin-top: 0.15rem; /* minimální optický odstup od labelu */
|
||
margin-bottom: 0;
|
||
line-height: 1.4;
|
||
}
|
||
|
||
input[type="text"]:focus,
|
||
input[type="email"]:focus,
|
||
input[type="password"]:focus {
|
||
background-color: var(--bg-prvek-focus);
|
||
border-color: var(--akcent-svetly);
|
||
box-shadow: var(--stin-input), var(--stin-input-focus);
|
||
}
|
||
|
||
input[type="text"]::placeholder,
|
||
input[type="email"]::placeholder,
|
||
input[type="password"]::placeholder {
|
||
color: var(--ocel-svetly);
|
||
opacity: 0.6;
|
||
}
|
||
|
||
/* Inline inputy v tabulce admin.php */
|
||
table input[type="password"] {
|
||
width: auto;
|
||
display: inline-block;
|
||
padding: 0.2rem 0.4rem;
|
||
font-size: 0.78rem;
|
||
margin-top: 0;
|
||
}
|
||
|
||
input[type="checkbox"] {
|
||
width: 0.85rem;
|
||
height: 0.85rem;
|
||
accent-color: var(--akcent-svetly);
|
||
cursor: pointer;
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
TEXTAREA
|
||
------------------------------------------------------------ */
|
||
textarea {
|
||
display: block;
|
||
width: 100%;
|
||
background-color: var(--bg-prvek);
|
||
color: #98c898; /* terminálová zelená pro SQL */
|
||
border: 1px solid var(--ocel);
|
||
border-radius: var(--polomer-prvek);
|
||
padding: 0.75rem;
|
||
font-family: 'Courier New', Courier, monospace;
|
||
font-size: 0.75rem;
|
||
line-height: 1.55;
|
||
resize: vertical;
|
||
outline: none;
|
||
box-shadow: var(--stin-input);
|
||
}
|
||
|
||
textarea:focus {
|
||
border-color: var(--akcent-svetly);
|
||
box-shadow: var(--stin-input), var(--stin-input-focus);
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
TLAČÍTKA – VELIKOST C (0.78rem Montserrat)
|
||
------------------------------------------------------------ */
|
||
button[type="submit"],
|
||
button[type="button"] {
|
||
background-color: var(--akcent);
|
||
color: #e8e8e8;
|
||
border: 1px solid var(--akcent-okraj);
|
||
border-radius: var(--polomer-prvek);
|
||
padding: 0.48rem 1.1rem;
|
||
font-family: 'Montserrat', sans-serif;
|
||
font-weight: 300;
|
||
font-size: 0.78rem;
|
||
letter-spacing: 0.1em;
|
||
cursor: pointer;
|
||
transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
|
||
margin-top: 0.3rem;
|
||
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
|
||
}
|
||
|
||
button[type="submit"]:hover,
|
||
button[type="button"]:hover {
|
||
background-color: var(--akcent-hover);
|
||
border-color: var(--akcent-hover);
|
||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
|
||
}
|
||
|
||
button[type="submit"]:focus,
|
||
button[type="button"]:focus {
|
||
outline: none;
|
||
box-shadow: 0 0 0 2px rgba(192, 57, 43, 0.4);
|
||
}
|
||
|
||
button:disabled {
|
||
background-color: #1c1c1c;
|
||
color: var(--text-jemny);
|
||
border-color: #2a2a2a;
|
||
cursor: not-allowed;
|
||
box-shadow: none;
|
||
}
|
||
|
||
button:disabled:hover {
|
||
background-color: #1c1c1c;
|
||
border-color: #2a2a2a;
|
||
box-shadow: none;
|
||
}
|
||
|
||
/* Inline formuláře – odhlášení, smazání v tabulce */
|
||
form[style*="display:inline"],
|
||
form[style*="display: inline"] {
|
||
display: inline;
|
||
width: auto;
|
||
margin: 0;
|
||
padding: 0;
|
||
background-color: transparent;
|
||
box-shadow: none;
|
||
border-radius: 0;
|
||
}
|
||
|
||
form[style*="display:inline"] button,
|
||
form[style*="display: inline"] button {
|
||
margin-top: 0;
|
||
padding: 0.2rem 0;
|
||
font-size: 0.78rem;
|
||
min-width: 7rem; /* stejná šířka pro Smazat i Změnit heslo */
|
||
text-align: center;
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
INDIKÁTOR SÍLY HESLA – VELIKOST C
|
||
------------------------------------------------------------ */
|
||
#heslo-sila,
|
||
#novy-heslo-sila {
|
||
display: inline-block;
|
||
font-family: 'Montserrat', sans-serif;
|
||
font-weight: 300;
|
||
font-size: 0.78rem;
|
||
letter-spacing: 0.06em;
|
||
color: var(--text-jemny);
|
||
margin-top: 0.2rem;
|
||
}
|
||
|
||
#tlacitko-duvod,
|
||
#novy-tlacitko-duvod {
|
||
font-family: 'Montserrat', sans-serif;
|
||
font-weight: 300;
|
||
font-size: 0.78rem;
|
||
letter-spacing: 0.04em;
|
||
color: var(--text-jemny);
|
||
margin-left: 0.4rem;
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
TABULKY
|
||
------------------------------------------------------------ */
|
||
table {
|
||
width: 100%;
|
||
border-collapse: collapse;
|
||
font-size: 0.78rem;
|
||
}
|
||
|
||
/* === VELIKOST C: záhlaví tabulky – weight 500 pro lepší čitelnost === */
|
||
table th {
|
||
font-family: 'Montserrat', sans-serif;
|
||
font-weight: 500;
|
||
font-size: 0.78rem;
|
||
letter-spacing: 0.1em;
|
||
text-transform: uppercase;
|
||
background-color: var(--akcent);
|
||
color: #e8e8e8;
|
||
text-align: left;
|
||
padding: 0.5rem 0.75rem;
|
||
border: 1px solid var(--akcent-okraj);
|
||
}
|
||
|
||
table td {
|
||
background-color: var(--bg-prvek);
|
||
color: var(--text-hlavni);
|
||
padding: 0.4rem 0.75rem;
|
||
border: 1px solid var(--ocel);
|
||
vertical-align: middle;
|
||
font-family: 'IBM Plex Serif', Georgia, serif;
|
||
font-weight: 200;
|
||
font-size: 0.875rem;
|
||
}
|
||
|
||
table tr:nth-child(even) td {
|
||
background-color: #262626;
|
||
}
|
||
|
||
table tr:hover td {
|
||
background-color: #2d2d2d;
|
||
transition: background-color 0.1s;
|
||
}
|
||
|
||
table td em {
|
||
color: var(--text-jemny);
|
||
font-style: italic;
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
KÓDOVÉ ELEMENTY
|
||
------------------------------------------------------------ */
|
||
code {
|
||
background-color: var(--bg-prvek);
|
||
color: #98c898;
|
||
font-family: 'Courier New', Courier, monospace;
|
||
font-size: 0.85em;
|
||
padding: 0.1em 0.35em;
|
||
border-radius: var(--polomer-prvek);
|
||
border: 1px solid var(--ocel);
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
SEZNAMY
|
||
------------------------------------------------------------ */
|
||
ol, ul {
|
||
padding-left: 1.4rem;
|
||
font-family: 'IBM Plex Serif', Georgia, serif;
|
||
font-weight: 200;
|
||
font-size: 0.875rem;
|
||
}
|
||
|
||
ol li, ul li {
|
||
margin-bottom: 0.25rem;
|
||
line-height: 1.65;
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
RESPONSIVNÍ DESIGN
|
||
------------------------------------------------------------ */
|
||
@media (max-width: 680px) {
|
||
:root {
|
||
--pruh-max: 100%;
|
||
--sekce-padding: 1rem;
|
||
--sekce-mezera: 1rem;
|
||
--polomer-blok: 0px; /* na mobilu bez zaoblení – bloky jdou od kraje */
|
||
}
|
||
|
||
h1 {
|
||
font-size: 1.6rem;
|
||
}
|
||
|
||
h2, h3 {
|
||
font-size: 0.95rem;
|
||
}
|
||
|
||
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%;
|
||
}
|
||
|
||
/* iOS: font-size ≥ 16px zabrání zoomu při focusu */
|
||
input[type="text"],
|
||
input[type="email"],
|
||
input[type="password"] {
|
||
font-size: 1rem;
|
||
}
|
||
|
||
table input[type="password"] {
|
||
display: block;
|
||
width: 100%;
|
||
margin-bottom: 0.3rem;
|
||
font-size: 1rem;
|
||
}
|
||
}
|
||
|
||
@media (max-width: 400px) {
|
||
h1 {
|
||
font-size: 1.3rem;
|
||
letter-spacing: 0.08em;
|
||
}
|
||
|
||
button[type="submit"],
|
||
button[type="button"] {
|
||
width: 100%;
|
||
}
|
||
}
|
||
|
||
|
||
/* ------------------------------------------------------------
|
||
PŘECHOD PŘI NAČTENÍ
|
||
------------------------------------------------------------ */
|
||
@keyframes fadein {
|
||
from { opacity: 0; transform: translateY(4px); }
|
||
to { opacity: 1; transform: translateY(0); }
|
||
} |