/* ══════════════════════════════════════════════════════════════
   tymok-app – Brand Design System
   Einheitliche Basis für Admin, Superadmin, Auth, Buchungsseiten.
   Spiegelt exakt die Palette von tymok.com (Apple-Stil).
   ══════════════════════════════════════════════════════════════ */

:root {
    --t-blue:      #0071E3;
    --t-blue-hv:   #0077ED;
    --t-blue-soft: rgba(0, 113, 227, 0.08);
    --t-black:     #1D1D1F;
    --t-gray:      #6E6E73;
    --t-gray-lt:   #AEAEB2;
    --t-surface:   #F5F5F7;
    --t-border:    #D2D2D7;
    --t-green:     #34C759;
    --t-green-soft:#F0FFF4;
    --t-red:       #FF3B30;
    --t-red-soft:  #FFF1F0;
    --t-radius:    12px;
    --t-radius-lg: 20px;
    --t-radius-pill: 980px;
}

body.t-app {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
    -webkit-font-smoothing: antialiased;
    color: var(--t-black);
    background: var(--t-surface);
}

/* ── Sidebar shell (tenant + superadmin admin areas) ── */
.t-sidebar {
    width: 240px; background: var(--t-black); color: #fff;
    display: flex; flex-direction: column; min-height: 100vh;
    position: fixed; top: 0; left: 0;
}
.t-sidebar-brand {
    padding: 22px 22px 18px; border-bottom: 1px solid rgba(255,255,255,0.08);
}
.t-sidebar-brand .logo { font-size: 20px; font-weight: 700; letter-spacing: -0.03em; }
.t-sidebar-brand .logo .ok { color: var(--t-blue); }
.t-sidebar-brand .sub { font-size: 12px; color: rgba(255,255,255,0.45); margin-top: 2px; }

.t-sidebar-nav { flex: 1; padding: 16px 12px; overflow-y: auto; }
.t-sidebar-nav a {
    display: flex; align-items: center; gap: 10px;
    padding: 9px 12px; border-radius: 8px; font-size: 14px;
    color: rgba(255,255,255,0.65); text-decoration: none;
    transition: background 0.15s, color 0.15s;
}
.t-sidebar-nav a:hover { background: rgba(255,255,255,0.06); color: #fff; }
.t-sidebar-nav a.active { background: var(--t-blue); color: #fff; font-weight: 500; }
.t-sidebar-nav .group-label {
    padding: 16px 12px 6px; font-size: 11px; font-weight: 700;
    letter-spacing: 0.08em; text-transform: uppercase; color: rgba(255,255,255,0.3);
}

.t-sidebar-footer {
    padding: 14px 22px; border-top: 1px solid rgba(255,255,255,0.08);
}
.t-sidebar-footer .user { font-size: 12px; color: rgba(255,255,255,0.5); margin-bottom: 6px; }
.t-sidebar-footer button {
    background: none; border: none; cursor: pointer; padding: 0;
    font-size: 12px; color: rgba(255,80,70,0.75); font-family: inherit;
}
.t-sidebar-footer button:hover { color: #FF6B60; }

.t-main { margin-left: 240px; flex: 1; display: flex; flex-direction: column; min-height: 100vh; }
.t-topbar {
    background: #fff; border-bottom: 1px solid var(--t-border);
    padding: 18px 32px; display: flex; align-items: center; justify-content: space-between;
}
.t-topbar h1 { font-size: 19px; font-weight: 600; letter-spacing: -0.02em; color: var(--t-black); }
.t-content { flex: 1; padding: 32px; }

/* ── Alerts ── */
.t-alert { padding: 13px 16px; border-radius: var(--t-radius); font-size: 14px; margin-bottom: 24px; }
.t-alert-success { background: var(--t-green-soft); border: 1px solid #34C75940; color: #1D7A38; }
.t-alert-error   { background: var(--t-red-soft);   border: 1px solid #FF3B3040; color: #C62F27; }
.t-alert-info    { background: var(--t-blue-soft);  border: 1px solid #0071E340; color: #0058B3; }

/* ── Buttons ── */
.t-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    font-family: inherit; font-size: 14px; font-weight: 500;
    padding: 9px 18px; border-radius: var(--t-radius-pill);
    text-decoration: none; cursor: pointer; border: none;
    transition: background 0.15s, opacity 0.15s;
}
.t-btn-primary { background: var(--t-blue); color: #fff; }
.t-btn-primary:hover { background: var(--t-blue-hv); }
.t-btn-secondary { background: var(--t-surface); color: var(--t-black); border: 1px solid var(--t-border); }
.t-btn-secondary:hover { background: #EBEBEE; }
.t-btn-danger { background: var(--t-red-soft); color: var(--t-red); }
.t-btn-danger:hover { background: #FFE2E0; }

/* ── Cards / panels ── */
.t-card {
    background: #fff; border: 1px solid var(--t-border); border-radius: var(--t-radius-lg);
    padding: 24px 28px;
}
.t-card-title { font-size: 16px; font-weight: 600; color: var(--t-black); margin-bottom: 4px; }
.t-card-sub { font-size: 13px; color: var(--t-gray); }

/* ── Forms ── */
.t-label { display: block; font-size: 13px; font-weight: 500; color: var(--t-black); margin-bottom: 6px; }
.t-input, .t-select, .t-textarea {
    width: 100%; border: 1px solid var(--t-border); border-radius: var(--t-radius);
    padding: 10px 14px; font-size: 14px; font-family: inherit; color: var(--t-black);
    background: #fff; outline: none; transition: border-color 0.15s, box-shadow 0.15s;
}
.t-input:focus, .t-select:focus, .t-textarea:focus {
    border-color: var(--t-blue); box-shadow: 0 0 0 3px var(--t-blue-soft);
}

/* ── Tables ── */
.t-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.t-table thead th {
    text-align: left; font-size: 12px; font-weight: 600; text-transform: uppercase;
    letter-spacing: 0.04em; color: var(--t-gray); background: var(--t-surface);
    padding: 10px 14px; border-bottom: 1px solid var(--t-border);
}
.t-table tbody td { padding: 12px 14px; border-bottom: 1px solid var(--t-border); color: var(--t-black); }
.t-table tbody tr:last-child td { border-bottom: none; }
.t-table tbody tr:hover { background: var(--t-surface); }

/* ── Auth pages (standalone) ── */
.t-auth-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 16px; background: var(--t-surface); }
.t-auth-card { background: #fff; border-radius: var(--t-radius-lg); border: 1px solid var(--t-border); max-width: 420px; width: 100%; padding: 40px; }
.t-auth-logo { text-align: center; margin-bottom: 28px; }
.t-auth-logo .logo { font-size: 26px; font-weight: 700; letter-spacing: -0.03em; color: var(--t-black); }
.t-auth-logo .logo .ok { color: var(--t-blue); }
.t-auth-logo .sub { font-size: 13px; color: var(--t-gray); margin-top: 4px; }

/* ── Public message pages (appointment confirm/cancel links) ── */
.t-msg-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 16px; background: var(--t-surface); }
.t-msg-card { background: #fff; border-radius: var(--t-radius-lg); border: 1px solid var(--t-border); max-width: 480px; width: 100%; padding: 44px 40px; text-align: center; }
.t-msg-icon { width: 56px; height: 56px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 20px; font-size: 26px; }
.t-msg-icon.ok   { background: var(--t-green-soft); color: var(--t-green); }
.t-msg-icon.err  { background: var(--t-red-soft);   color: var(--t-red); }
.t-msg-title { font-size: 20px; font-weight: 600; letter-spacing: -0.02em; margin-bottom: 8px; color: var(--t-black); }
.t-msg-text  { font-size: 14px; color: var(--t-gray); line-height: 1.6; }

/* ── FullCalendar brand overrides (public booking widget) ── */
.fc { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; }
.fc .fc-toolbar-title { font-size: 20px; font-weight: 700; letter-spacing: -0.02em; color: var(--t-black); }
.fc .fc-button {
    background: #fff; border: 1px solid var(--t-border); color: var(--t-black);
    border-radius: var(--t-radius-pill); padding: 7px 16px; font-weight: 500;
    box-shadow: none !important; text-transform: none; font-size: 13px;
}
.fc .fc-button:hover { background: var(--t-surface); }
.fc .fc-button:focus { box-shadow: 0 0 0 3px var(--t-blue-soft) !important; }
.fc .fc-button-primary:not(:disabled).fc-button-active,
.fc .fc-button-primary:not(:disabled):active {
    background: var(--t-blue); border-color: var(--t-blue); color: #fff;
}
.fc .fc-today-button {
    background: var(--t-black) !important; border-color: var(--t-black) !important; color: #fff !important;
    opacity: 1 !important;
}
.fc .fc-today-button:disabled { opacity: 0.4 !important; }
.fc-theme-standard td, .fc-theme-standard th { border-color: var(--t-border); }
.fc-theme-standard .fc-scrollgrid { border-color: var(--t-border); border-radius: var(--t-radius); overflow: hidden; }
.fc-col-header-cell { background: var(--t-surface); }
.fc-col-header-cell-cushion {
    color: var(--t-gray); font-weight: 600; font-size: 12px;
    text-transform: uppercase; letter-spacing: 0.03em; padding: 10px 4px;
}
.fc-timegrid-slot-label-cushion, .fc-timegrid-axis-cushion { color: var(--t-gray-lt); font-size: 12px; }
.fc-daygrid-day-number { color: var(--t-black); font-size: 13px; font-weight: 500; }
.fc-day-today { background: var(--t-blue-soft) !important; }
.fc-timegrid-now-indicator-line { border-color: var(--t-red); }

.fc-event {
    border: none !important; border-radius: 8px !important;
    box-shadow: 0 1px 2px rgba(0,0,0,0.08);
}
.fc-daygrid-event { padding: 2px 6px; font-size: 12px; }
.fc-timegrid-event .fc-event-main { padding: 4px 8px; }
.fc-event-title { font-weight: 600; font-size: 1em; }
.fc-event-time {
    font-weight: 400; font-size: 0.78em; opacity: 0.8;
    display: block; margin-bottom: 1px;
}

.fc-list-event:hover td { background: var(--t-surface); }
.fc-daygrid-more-link { color: var(--t-blue); font-weight: 500; }
