/* ── OBS Corporate Design ──────────────────────────────────── */

html, body {
    font-family: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    font-size: 15px;
    color: #333333;
    background: #f2f2f2;
}

a, .btn-link           { color: #0098ff; }
a:hover                { color: #343434; }

.btn-primary           { background-color: #0098ff; border-color: #0098ff; color: #fff; font-weight: 600; }
.btn-primary:hover,
.btn-primary:focus     { background-color: #343434; border-color: #343434; color: #fff; }

.btn:focus,
.form-control:focus    { box-shadow: 0 0 0 0.15rem rgba(0,152,255,0.35); }

h1, h2, h3, h4, h5, h6 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    color: #222d62;
}

h1:focus { outline: none; }

/* ── Page Title ──────────────────────────────────────────── */
.pm-page-title {
    font-size: 1.35rem;
    font-weight: 700;
    color: #222d62;
    margin: 0 0 1rem 0;
}

/* ── Placeholder hub ───────────────────────────────────────── */
.pm-hub-placeholder {
    text-align: center;
    padding: 5rem 2rem;
    max-width: 600px;
    margin: 0 auto;
}

.pm-hub-icon  { font-size: 4rem; margin-bottom: 1rem; }
.pm-hub-title { color: #222d62; margin-bottom: 0.75rem; }
.pm-hub-sub   { color: #666; font-size: 1rem; line-height: 1.7; }

/* ── Column Filter Row ────────────────────────────────────── */
tr.col-filter-row th {
    padding: 2px 4px;
    background: #f8f9fa;
    border-bottom: 2px solid #dee2e6;
}
.col-filter-input {
    width: 100%;
    padding: 1px 4px;
    font-size: 0.75rem;
    border: 1px solid #ced4da;
    border-radius: 3px;
    background: #fff;
}
.col-filter-input:focus {
    border-color: #0098ff;
    box-shadow: 0 0 0 1px rgba(0,152,255,0.25);
}
.col-filter-input::placeholder { color: #aaa; font-style: italic; }

/* ── Sidebar Pinned Layout Shift ────────────────────────────── */
html.pm-sidebar-pinned .pm-main { margin-left: 260px; transition: margin-left 0.25s ease; }
html.pm-sidebar-pinned .pm-topbar,
html.pm-sidebar-pinned .modul-bar,
html.pm-sidebar-pinned .portal-fav-bar,
html.pm-sidebar-pinned .portal-fav-dashboard,
html.pm-sidebar-pinned .pm-favbar,
html.pm-sidebar-pinned .pm-ribbon { margin-left: 260px; transition: margin-left 0.25s ease; }

/* ── Login Page ─────────────────────────────────────────────── */
.pm-login-main {
    min-height: 100vh;
    margin: 0;
    padding: 0;
}

.login-container {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    background: linear-gradient(135deg, #222d62 0%, #0098ff 100%);
}

.login-card {
    background: white;
    border-radius: 12px;
    padding: 2.5rem;
    width: 100%;
    max-width: 400px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
}

.login-header {
    text-align: center;
    margin-bottom: 2rem;
}

.login-title {
    color: #222d62;
    margin-bottom: 0.25rem;
}

.login-subtitle {
    color: #666;
    font-size: 0.9rem;
    margin-bottom: 0;
}

.login-btn {
    margin-top: 0.5rem;
    padding: 0.6rem;
    font-size: 0.95rem;
}

/* ── Ziffern mit fester Breite in allen Tabellen ──────────────────────
   Montserrat hat proportionale Ziffern ("1" schmaler als "0"). Tabellarische Ziffern sorgen dafuer,
   dass rechtsbuendige Zahlen, Datum und Uhrzeit sauber untereinander stehen. Text ist nicht betroffen. */
table, table th, table td { font-variant-numeric: tabular-nums; font-feature-settings: "tnum" 1; }

/* ── Eingabefelder in rechtsbuendigen Tabellenzellen ──────────────────
   Feld an den rechten Rand der Zelle und Inhalt rechtsbuendig, damit Spaltenkopf (text-end),
   Eingabefeld und Werte auf einer Linie stehen – auch wenn das Feld schmaler als die Spalte ist. */
td.text-end > .form-control, td.text-end > .form-select, td.text-end > input,
th.text-end > .form-control, th.text-end > .form-select {
    margin-left: auto;
    text-align: right;
}
td.text-end > .form-control, td.text-end > input, td.text-end > .form-select { font-variant-numeric: tabular-nums; }

/* ── Angeheftetes Menue: Platz schaffen, auch wenn die Klasse am <html> verloren geht
   (z. B. nach Seitenwechsel ohne Neuladen). Haengt direkt am Zustand des Menues. ── */
body:has(.pm-sb--pinned) .pm-main { margin-left: 260px; transition: margin-left 0.25s ease; }
body:has(.pm-sb--pinned) .pm-topbar,
body:has(.pm-sb--pinned) .modul-bar,
body:has(.pm-sb--pinned) .portal-fav-bar,
body:has(.pm-sb--pinned) .portal-fav-dashboard,
body:has(.pm-sb--pinned) .pm-favbar,
body:has(.pm-sb--pinned) .pm-ribbon { margin-left: 260px; transition: margin-left 0.25s ease; }
/* ── Arbeitszeitmodell / Schichtmodell (G/F/B): einheitliches Format in allen Portalen ──
   Nur der Wert ist farbig hinterlegt, mit Umrandung und leicht abgerundet; Spaltenkopf und Zelle mittig.
   Verwendung: <td class="text-center" title="Gleitzeit"><span class="pm-modell pm-modell-g">G</span></td> */
.pm-modell {
    display: inline-block;
    min-width: 1.5rem;
    padding: 0 6px;
    border: 1px solid #adb5bd;
    border-radius: 3px;
    background: #f8f9fa;
    color: #333;
    font-size: 0.8rem;
    font-weight: 700;
    line-height: 1.5;
    text-align: center;
}
.pm-modell-g { background: #d4f5d0; border-color: #6cbf73; color: #1e6b2a; }   /* Gleitzeit */
.pm-modell-f { background: #fff3a0; border-color: #d4b800; color: #6b5d00; }   /* Festzeit */
.pm-modell-b { background: #dbeafe; border-color: #7aa7e0; color: #1565c0; }   /* Bereitschaft */
/* ── Herkunft einer Buchung als kleines Logo vor der Gerätebezeichnung (OBS-Programm / Datafox-Terminal) ── */
.pm-quelle-logo { width: 16px; height: 16px; margin-right: 5px; vertical-align: -3px; object-fit: contain; }