/**
 * NHZ Kellerbuch – Mitarbeiter-Frontend (Shortcode [nhz_kellerbuch])
 * ============================================================
 * Nutzt dieselben Tokens wie der Admin-Bereich (nhz-kellerbuch-tokens.css).
 * Mobile-first, da Mitarbeiter über das eigene Handy buchen (kein
 * gemeinsames Kiosk-Gerät, gemischt Android/iPhone - analog zur
 * bestehenden Zeiterfassung).
 * ============================================================
 */

.nhz-kb-frontend {
    font-family: var(--nhz-kb-font-body);
    max-width: 480px;
    margin: 0 auto;
    color: #1a1a1a;
}

.nhz-kb-frontend-header {
    background: var(--nhz-kb-bg);
    color: var(--nhz-kb-on-bg);
    padding: 20px;
    margin-bottom: 20px;
    text-align: center;
}
.nhz-kb-frontend-header .nhz-kb-eyebrow {
    display: block;
    font-weight: 300;
    font-size: 12px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--nhz-kb-accent);
    margin-bottom: 4px;
}
.nhz-kb-frontend-header h2 {
    font-family: var(--nhz-kb-font-display);
    font-weight: 400;
    font-size: 26px;
    margin: 0;
    color: var(--nhz-kb-on-bg);
}
.nhz-kb-frontend-header .nhz-kb-user {
    font-size: 13px;
    color: var(--nhz-kb-grey-300);
    margin-top: 6px;
}
.nhz-kb-frontend-header .nhz-kb-user a {
    color: var(--nhz-kb-grey-300);
}

.nhz-kb-frontend-body {
    padding: 0 16px 40px;
}

.nhz-kb-card {
    background: var(--nhz-kb-on-bg);
    border: 1px solid var(--nhz-kb-grey-300);
    border-radius: 8px;
    padding: 18px;
    margin-bottom: 18px;
}
.nhz-kb-card h3 {
    font-family: var(--nhz-kb-font-display);
    font-weight: 500;
    font-size: 20px;
    margin: 0 0 12px;
}

.nhz-kb-frontend label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    margin: 12px 0 4px;
}
.nhz-kb-frontend select,
.nhz-kb-frontend input[type="text"],
.nhz-kb-frontend input[type="number"],
.nhz-kb-frontend input[type="date"],
.nhz-kb-frontend input[type="password"],
.nhz-kb-frontend textarea {
    width: 100%;
    box-sizing: border-box;
    padding: 12px;
    font-size: 16px; /* verhindert Zoom beim Fokus auf iOS */
    border: 1px solid var(--nhz-kb-grey-300);
    border-radius: 6px;
    font-family: var(--nhz-kb-font-body);
}

.nhz-kb-frontend button,
.nhz-kb-frontend .nhz-kb-btn {
    display: inline-block;
    width: 100%;
    box-sizing: border-box;
    padding: 14px;
    margin-top: 16px;
    font-family: var(--nhz-kb-font-body);
    font-size: 16px;
    font-weight: 600;
    text-align: center;
    color: var(--nhz-kb-on-accent);
    background: var(--nhz-kb-accent);
    border: none;
    border-radius: var(--nhz-kb-radius-pill);
    cursor: pointer;
    text-decoration: none;
}
.nhz-kb-frontend button:hover,
.nhz-kb-frontend button:focus,
.nhz-kb-frontend .nhz-kb-btn:hover {
    background: var(--nhz-kb-accent-dark);
}
.nhz-kb-frontend button:focus-visible {
    outline: 2px solid var(--nhz-kb-accent-dark);
    outline-offset: 2px;
}
.nhz-kb-frontend .nhz-kb-btn-secondary {
    background: var(--nhz-kb-grey-100);
    color: #1a1a1a;
}

.nhz-kb-frontend .nhz-kb-position-row {
    display: flex;
    gap: 8px;
    margin-bottom: 8px;
}
.nhz-kb-frontend .nhz-kb-position-row select {
    flex: 2;
}
.nhz-kb-frontend .nhz-kb-position-row input {
    flex: 1;
}

.nhz-kb-frontend .nhz-kb-notice {
    padding: 12px 16px;
    border-radius: 6px;
    margin-bottom: 16px;
    font-size: 14px;
}
.nhz-kb-frontend .nhz-kb-notice-success {
    background: #f0fdf4;
    border-left: 4px solid #16a34a;
}
.nhz-kb-frontend .nhz-kb-notice-error {
    background: #fef2f2;
    border-left: 4px solid var(--nhz-kb-accent);
}

.nhz-kb-frontend .nhz-kb-bestand {
    font-size: 14px;
    color: var(--nhz-kb-grey-700);
    margin-bottom: 4px;
}
.nhz-kb-frontend .nhz-kb-bestand strong {
    color: #1a1a1a;
}

/* Amtliche Tabellen (Kopfdaten, Kellerbehandlungen, Fasswein-/Flaschenwein-
   Bewegungen) - bewusst als echte, dicht gerasterte Tabelle nachgebildet,
   nicht als Karten, weil es das amtliche Kellerbuch-Formular 1:1 abbilden
   soll. Auf schmalen Bildschirmen horizontal scrollbar statt Spalten zu
   verlieren - die Spaltenstruktur bleibt vollständig erhalten. */
.nhz-kb-table-scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    margin-bottom: 10px;
}
table.nhz-kb-official {
    border-collapse: collapse;
    width: 100%;
    min-width: 520px;
    font-size: 13px;
}
table.nhz-kb-official th,
table.nhz-kb-official td {
    border: 1px solid var(--nhz-kb-grey-300);
    padding: 6px 8px;
    text-align: left;
    white-space: nowrap;
}
table.nhz-kb-official thead th {
    background: var(--nhz-kb-bg);
    color: var(--nhz-kb-on-bg);
    font-weight: 600;
}
table.nhz-kb-official tbody th {
    background: var(--nhz-kb-grey-100);
    font-weight: 600;
    white-space: normal;
}

.nhz-kb-frontend .nhz-kb-inline-form {
    border-top: 1px dashed var(--nhz-kb-grey-300);
    margin-top: 4px;
    padding-top: 10px;
}
.nhz-kb-frontend .nhz-kb-inline-form em {
    font-size: 13px;
    color: var(--nhz-kb-grey-700);
}

/* ============================================================
   GERÄTEANPASSUNG
   ============================================================
   data-view auf dem äußeren Wrapper steuert die Darstellung:
   - "auto" (Server-Standard): Handy = mobile Ansicht (Basis-CSS
     oben), ab 1024px automatisch die breite Original-Tabellenansicht.
   - "mobile" / "desktop": von der Person über den Umschalter
     erzwungen (siehe .nhz-kb-view-toggle), persistiert per
     localStorage - das ist die "wahlfreie" Wahl auf Tablet-Breite.
   Die Basis-Regeln oben bleiben die mobile Ansicht; hier folgen nur
   die Abweichungen für die breite/"Original"-Ansicht.
   ============================================================ */

.nhz-kb-view-toggle {
    display: none;
    gap: 8px;
    margin-bottom: 16px;
}
@media (min-width: 641px) and (max-width: 1023px) {
    .nhz-kb-view-toggle {
        display: flex;
    }
}
.nhz-kb-view-toggle button {
    width: auto;
    margin-top: 0;
    padding: 8px 16px;
    font-size: 13px;
    background: var(--nhz-kb-grey-100);
    color: #1a1a1a;
}
.nhz-kb-view-toggle button.nhz-kb-active {
    background: var(--nhz-kb-accent);
    color: var(--nhz-kb-on-accent);
}

@media (min-width: 1024px) {
    .nhz-kb-frontend[data-view="auto"] {
        max-width: 1000px;
    }
    .nhz-kb-frontend[data-view="auto"] .nhz-kb-table-scroll {
        overflow-x: visible;
    }
    .nhz-kb-frontend[data-view="auto"] table.nhz-kb-official {
        min-width: 0;
        font-size: 14px;
    }
    .nhz-kb-frontend[data-view="auto"] .nhz-kb-card form,
    .nhz-kb-frontend[data-view="auto"] .nhz-kb-inline-form {
        display: flex;
        flex-wrap: wrap;
        align-items: flex-end;
        gap: 4px 14px;
    }
    .nhz-kb-frontend[data-view="auto"] .nhz-kb-card form label,
    .nhz-kb-frontend[data-view="auto"] .nhz-kb-inline-form label {
        margin: 0 0 4px;
        flex: 0 0 auto;
        align-self: flex-end;
    }
    .nhz-kb-frontend[data-view="auto"] .nhz-kb-card form select,
    .nhz-kb-frontend[data-view="auto"] .nhz-kb-card form input,
    .nhz-kb-frontend[data-view="auto"] .nhz-kb-inline-form select,
    .nhz-kb-frontend[data-view="auto"] .nhz-kb-inline-form input {
        width: 160px;
    }
    .nhz-kb-frontend[data-view="auto"] .nhz-kb-card form button,
    .nhz-kb-frontend[data-view="auto"] .nhz-kb-inline-form button {
        width: auto;
        margin-top: 0;
        padding: 10px 22px;
    }
}

/* Erzwungene Auswahl (Tablet-Umschalter) gilt unabhängig von der
   Bildschirmbreite - dieselben Regeln wie oben, aber ohne @media,
   damit z. B. "Desktop" auch auf Tablet-Breite erzwungen werden kann. */
.nhz-kb-frontend[data-view="desktop"] {
    max-width: 1000px;
}
.nhz-kb-frontend[data-view="desktop"] .nhz-kb-table-scroll {
    overflow-x: visible;
}
.nhz-kb-frontend[data-view="desktop"] table.nhz-kb-official {
    min-width: 0;
    font-size: 14px;
}
.nhz-kb-frontend[data-view="desktop"] .nhz-kb-card form,
.nhz-kb-frontend[data-view="desktop"] .nhz-kb-inline-form {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 4px 14px;
}
.nhz-kb-frontend[data-view="desktop"] .nhz-kb-card form label,
.nhz-kb-frontend[data-view="desktop"] .nhz-kb-inline-form label {
    margin: 0 0 4px;
    flex: 0 0 auto;
    align-self: flex-end;
}
.nhz-kb-frontend[data-view="desktop"] .nhz-kb-card form select,
.nhz-kb-frontend[data-view="desktop"] .nhz-kb-card form input,
.nhz-kb-frontend[data-view="desktop"] .nhz-kb-inline-form select,
.nhz-kb-frontend[data-view="desktop"] .nhz-kb-inline-form input {
    width: 160px;
}
.nhz-kb-frontend[data-view="desktop"] .nhz-kb-card form button,
.nhz-kb-frontend[data-view="desktop"] .nhz-kb-inline-form button {
    width: auto;
    margin-top: 0;
    padding: 10px 22px;
}

/* data-view="mobile" braucht keine eigenen Regeln: die Basis-CSS oben
   IST bereits die mobile Ansicht, "mobile" bedeutet lediglich, dass
   keine der [data-view="auto"]/[data-view="desktop"]-Regeln zutrifft. */
