.hidden       { display: none !important; }
.d-block      { display: block !important; }
.d-flex       { display: flex !important; }
.d-inline     { display: inline !important; }
.d-inline-flex{ display: inline-flex !important; }
.d-grid       { display: grid !important; }

.flex-col     { flex-direction: column; }
.flex-row     { flex-direction: row; }
.flex-wrap    { flex-wrap: wrap; }
.align-center { align-items: center; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.flex-1       { flex: 1; }

.text-center  { text-align: center; }
.text-left    { text-align: left; }
.text-right   { text-align: right; }
.fw-bold      { font-weight: bold; }
.fw-900       { font-weight: 900; }
.text-muted   { color: var(--text-muted); }
.text-strong  { color: var(--text-strong); }
.text-red     { color: var(--c-red); }
.text-blue    { color: var(--c-blue); }
.text-indigo  { color: var(--c-indigo); }
.text-green   { color: var(--c-green); }
.text-nowrap  { white-space: nowrap; }

.mt-0  { margin-top: 0; }
.mb-0  { margin-bottom: 0; }
.mt-5  { margin-top: 5px; }
.mb-5  { margin-bottom: 5px; }
.mt-10 { margin-top: 10px; }
.mb-10 { margin-bottom: 10px; }
.mt-15 { margin-top: 15px; }
.mb-15 { margin-bottom: 15px; }
.mt-20 { margin-top: 20px; }
.mb-20 { margin-bottom: 20px; }
.mt-25 { margin-top: 25px; }
.mb-25 { margin-bottom: 25px; }
.mt-30 { margin-top: 30px; }
.mb-30 { margin-bottom: 30px; }
.p-0   { padding: 0; }
.p-10  { padding: 10px; }
.p-15  { padding: 15px; }
.p-20  { padding: 20px; }

.w-100 { width: 100%; }
.h-100 { height: 100%; }
.mw-100 { max-width: 100%; }

.pos-relative { position: relative; }
.pos-absolute { position: absolute; }

.rounded      { border-radius: 8px; }
.rounded-full { border-radius: 50%; }

.error-msg {
    color: var(--c-red);
    font-weight: bold;
    margin-top: 10px;
    font-size: 0.9em;
}
.success-msg {
    color: var(--c-green);
    font-weight: bold;
    margin-top: 10px;
    font-size: 0.9em;
}
.login-error {
    color: var(--c-red);
    font-weight: bold;
    margin-top: 15px;
    font-size: 0.95em;
}

.divider {
    border: none;
    border-top: 1px solid var(--border-main);
    margin: 10px 0;
}

.bar-bg-u { background: var(--c-red); }
.bar-bg-d { background: var(--c-blue); }
.bar-bg-m { background: var(--c-green); }
.bar-bg-c { background: var(--c-purple); }
.bar-bg-e { background: var(--c-orange); }
.bar-bg-s { background: var(--c-indigo); }
.bar-bg-f { background: var(--c-yellow); }
.bar-bg-v { background: var(--c-teal); }

.footer-copyright-mt { margin-top: 25px; }
.footer-sep { margin: 0 10px; color: var(--border-main); }
.footer-about-link { color: var(--text-muted); text-decoration: none; font-weight: 800; font-size: 0.95em; }

.mb-12 { margin-bottom: 12px; }
.mb-16 { margin-bottom: 16px; }
.mt-14 { margin-top: 14px; }
