﻿:root{
  --portal-accent:#00915a;
  --portal-accent-soft:rgba(0,145,90,.12);
  --portal-bg:#f6f7f9;
  --portal-card:#ffffff;
  --portal-text:#111827;
  --portal-muted:rgba(17,24,39,.68);
  --portal-border:rgba(0,0,0,.12);
  --portal-control:#ffffff;
  --portal-control-hover:#f3f4f6;
  --portal-overlay:rgba(0,0,0,.35);
}

html[data-vrah-theme="dark"]{
  --portal-bg:#050912;
  --portal-card:#0f172a;
  --portal-text:#e5edf8;
  --portal-muted:rgba(226,232,240,.74);
  --portal-border:rgba(148,163,184,.28);
  --portal-control:#111827;
  --portal-control-hover:#172033;
  --portal-overlay:rgba(2,6,23,.72);
  color-scheme: dark;
}

html[data-vrah-theme="dark"] body{
  background:var(--portal-bg) !important;
  color:var(--portal-text) !important;
}

html[data-vrah-theme="dark"] .card,
html[data-vrah-theme="dark"] .pcDialog,
html[data-vrah-theme="dark"] .avCalCard,
html[data-vrah-theme="dark"] .avTGWrap,
html[data-vrah-theme="dark"] .avDialog,
html[data-vrah-theme="dark"] .avBulkBar,
html[data-vrah-theme="dark"] .avSlotsList,
html[data-vrah-theme="dark"] details.case,
html[data-vrah-theme="dark"] .box,
html[data-vrah-theme="dark"] .warn,
html[data-vrah-theme="dark"] .ok{
  background:var(--portal-card) !important;
  color:var(--portal-text) !important;
  border-color:var(--portal-border) !important;
  box-shadow:0 12px 32px rgba(0,0,0,.28) !important;
}

html[data-vrah-theme="dark"] .warn{ background:rgba(245,158,11,.14) !important; }
html[data-vrah-theme="dark"] .ok{ background:rgba(16,185,129,.12) !important; }
html[data-vrah-theme="dark"] .muted,
html[data-vrah-theme="dark"] .note,
html[data-vrah-theme="dark"] .small,
html[data-vrah-theme="dark"] .task .muted,
html[data-vrah-theme="dark"] .tgTime .t,
html[data-vrah-theme="dark"] .tgEv .s{
  color:var(--portal-muted) !important;
}

html[data-vrah-theme="dark"] .btn,
html[data-vrah-theme="dark"] input,
html[data-vrah-theme="dark"] textarea,
html[data-vrah-theme="dark"] select{
  background:var(--portal-control) !important;
  color:var(--portal-text) !important;
  border-color:var(--portal-border) !important;
}
html[data-vrah-theme="dark"] .btn:hover{ background:var(--portal-control-hover) !important; }
html[data-vrah-theme="dark"] .btn.primary{
  background:var(--portal-accent) !important;
  color:#ffffff !important;
  border-color:rgba(0,145,90,.42) !important;
}

html[data-vrah-theme="dark"] .task,
html[data-vrah-theme="dark"] .task .case-update,
html[data-vrah-theme="dark"] .avSlotsList .item,
html[data-vrah-theme="dark"] .tgHead,
html[data-vrah-theme="dark"] .tgH,
html[data-vrah-theme="dark"] .tgCol,
html[data-vrah-theme="dark"] .tgTime,
html[data-vrah-theme="dark"] .tgTime .t{
  border-color:rgba(148,163,184,.18) !important;
}

html[data-vrah-theme="dark"] .tgHead,
html[data-vrah-theme="dark"] .tgTime,
html[data-vrah-theme="dark"] .tgCol{
  background:#0f172a !important;
}
html[data-vrah-theme="dark"] .tgCol{
  background-image:linear-gradient(to bottom, rgba(148,163,184,.08) 1px, transparent 1px) !important;
}
html[data-vrah-theme="dark"] .tgEv{ color:var(--portal-text) !important; }
html[data-vrah-theme="dark"] .tgEv.avail{ background:rgba(59,130,246,.14) !important; }
html[data-vrah-theme="dark"] .tgEv.booking.requested{ background:rgba(234,179,8,.18) !important; }
html[data-vrah-theme="dark"] .tgEv.booking.confirmed{ background:rgba(220,38,38,.18) !important; }
html[data-vrah-theme="dark"] details.case.case-blue{ background:rgba(59,130,246,.12) !important; }
html[data-vrah-theme="dark"] a{ color:#93c5fd !important; }

.portal-menu-btn{
  position:fixed;
  top:max(12px, env(safe-area-inset-top));
  right:max(12px, env(safe-area-inset-right));
  z-index:20010;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-width:44px;
  height:44px;
  padding:0 14px;
  border-radius:14px;
  border:1px solid rgba(0,145,90,.28);
  background:var(--portal-control);
  color:var(--portal-text);
  box-shadow:0 10px 28px rgba(0,0,0,.14);
  font:600 14px/1 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  cursor:pointer;
}
.portal-menu-btn .label{ margin:0; font-size:14px; font-weight:700; color:inherit; }
.portal-menu-overlay{
  position:fixed;
  inset:0;
  z-index:20005;
  background:var(--portal-overlay);
  opacity:0;
  pointer-events:none;
  transition:opacity .16s ease;
}
.portal-menu-overlay.open{ opacity:1; pointer-events:auto; }
.portal-menu-panel{
  position:fixed;
  top:calc(max(12px, env(safe-area-inset-top)) + 56px);
  right:max(12px, env(safe-area-inset-right));
  z-index:20011;
  width:min(290px, calc(100vw - 24px));
  border-radius:18px;
  border:1px solid var(--portal-border);
  background:var(--portal-card);
  color:var(--portal-text);
  box-shadow:0 18px 44px rgba(0,0,0,.22);
  padding:14px;
  display:none;
}
.portal-menu-panel.open{ display:block; }
.portal-menu-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.portal-menu-title{ font-weight:800; font-size:16px; }
.portal-menu-close{
  width:36px; height:36px; border-radius:12px; border:1px solid var(--portal-border);
  background:var(--portal-control); color:var(--portal-text); cursor:pointer;
}
.portal-menu-row{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:12px; }
.portal-menu-copy{ font-size:13px; color:var(--portal-muted); line-height:1.45; }
.portal-theme-toggle{
  display:inline-flex; align-items:center; gap:8px; justify-content:center;
  width:100%; padding:11px 12px; border-radius:12px; border:1px solid var(--portal-border);
  background:var(--portal-control); color:var(--portal-text); font:600 14px/1 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif; cursor:pointer;
}
.portal-theme-toggle:hover{ background:var(--portal-control-hover); }
html[data-vrah-theme="dark"] .portal-menu-btn,
html[data-vrah-theme="dark"] .portal-menu-close,
html[data-vrah-theme="dark"] .portal-theme-toggle{
  background:var(--portal-control);
  color:var(--portal-text);
  border-color:var(--portal-border);
}
html[data-vrah-theme="dark"] .portal-menu-btn{ box-shadow:0 12px 34px rgba(0,0,0,.32); }

@media (max-width: 640px){
  .portal-menu-btn .label{ display:none; }
  .portal-menu-panel{ width:min(280px, calc(100vw - 20px)); }
}

/* =============================================================================
   3.499: Nodely-Brand-Redesign-Overlay (Mieter-Portal)
   - Brand-Tokens: GrÃ¼n â†’ Nodely-Blau (#2563eb)
   - Mobile-First (44px-Touch-Targets, scrollbare Tab-Nav)
   - Inter-Font + tighter letter-spacing
   - Pill-Buttons, weichere Shadows, grÃ¶ÃŸere Border-Radius
   - !important nÃ¶tig weil inline-<style> in index.php spÃ¤ter kommt
   ============================================================================= */

:root {
  --portal-accent: #2563eb;
  --portal-accent-soft: rgba(37,99,235,.12);
  --portal-accent-strong: #1e40af;
  --portal-accent-glow: rgba(37,99,235,.32);
  --portal-warn-bg: #fef3c7;
  --portal-warn-fg: #92400e;
  --portal-danger: #dc2626;
}
html[data-vrah-theme="dark"] {
  --portal-warn-bg: rgba(245,158,11,.14);
  --portal-warn-fg: #fbbf24;
}

/* Base Typography */
body {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
  -webkit-font-smoothing: antialiased;
  letter-spacing: -0.005em;
}
h1, h2, h3 { letter-spacing: -0.02em !important; font-weight: 800 !important; }

/* Wrap: etwas breiter, Padding etwas weicher */
.wrap { max-width: 760px !important; padding: 14px 16px !important; }

/* Cards: weicherer Shadow, grÃ¶ÃŸeres Radius */
.card {
  border-radius: 16px !important;
  border: 1px solid var(--portal-border) !important;
  box-shadow: 0 1px 3px rgba(10,14,26,.06), 0 1px 2px rgba(10,14,26,.04) !important;
  padding: 16px 18px !important;
}
html[data-vrah-theme="dark"] .card {
  box-shadow: 0 8px 24px rgba(0,0,0,.32) !important;
}

/* Buttons: Pill, grÃ¶ÃŸer fÃ¼r Mobile */
.btn {
  border-radius: 9999px !important;
  font-weight: 700 !important;
  padding: 10px 18px !important;
  transition: background .15s, transform .12s, box-shadow .15s !important;
  cursor: pointer;
}
.btn.primary {
  background: var(--portal-accent) !important;
  border: 0 !important;
  color: white !important;
  box-shadow: 0 4px 12px var(--portal-accent-glow) !important;
}
.btn.primary:hover {
  background: var(--portal-accent-strong) !important;
  transform: translateY(-1px);
  box-shadow: 0 6px 16px var(--portal-accent-glow) !important;
}
.btn:not(.primary) {
  background: var(--portal-control) !important;
  color: var(--portal-text) !important;
  border: 1px solid var(--portal-border) !important;
}
.btn:not(.primary):hover {
  border-color: var(--portal-accent) !important;
  color: var(--portal-accent) !important;
}

/* Pills */
.pill {
  border-radius: 9999px !important;
  padding: 3px 11px !important;
  font-weight: 700 !important;
  font-size: 11.5px !important;
}

/* Detail-Cases (Tickets) */
details.case {
  border-radius: 12px !important;
  border: 1px solid var(--portal-border) !important;
  padding: 12px 14px !important;
  margin-top: 8px !important;
}
details.case[open] {
  box-shadow: 0 4px 12px rgba(10,14,26,.06);
}
details.case.case-blue {
  background: var(--portal-accent-soft) !important;
  border-color: rgba(37,99,235,.22) !important;
}

/* Info-Banner ("Bekannte Störung im Haus") — Brand-Blau-Info statt knalliges Gelb.
   Konzeptuell ist das KEINE Warnung an den Mieter, sondern eine Info ("schon bekannt").
   Inline-Farben in der PHP werden hier überschrieben. */
.warn {
  background: var(--portal-accent-soft) !important;
  color: var(--portal-accent-strong) !important;
  border: 1px solid rgba(37,99,235,.22) !important;
  border-radius: 14px !important;
  padding: 14px 18px !important;
  box-shadow: 0 4px 14px rgba(37,99,235,.08) !important;
}
.warn b, .warn strong { color: var(--portal-accent-strong) !important; }
.warn [style*="color:#92400e"],
.warn [style*="color: #92400e"] { color: var(--portal-accent-strong) !important; }
.warn > div[style*="background"] {
  background: var(--portal-card) !important;
  border: 1px solid var(--portal-border) !important;
  border-radius: 10px !important;
  color: var(--portal-text) !important;
}
html[data-vrah-theme="dark"] .warn {
  background: rgba(37,99,235,.12) !important;
  color: #93c5fd !important;
  border-color: rgba(37,99,235,.32) !important;
}
html[data-vrah-theme="dark"] .warn > div[style*="background"] {
  background: var(--portal-card) !important;
  color: var(--portal-text) !important;
}

/* OK-Banner */
.ok {
  background: rgba(16,185,129,.12) !important;
  border: 1px solid rgba(16,185,129,.32) !important;
  border-radius: 12px !important;
  padding: 12px 14px !important;
  color: #047857 !important;
}
html[data-vrah-theme="dark"] .ok { color: #34d399 !important; }

/* Theme-Toggle Button (oben rechts) */
.portal-menu-btn {
  border-color: rgba(37,99,235,.28) !important;
  border-radius: 9999px !important;
}
.portal-menu-panel { border-radius: 18px !important; }

/* Form-Inputs */
input[type="text"], input[type="email"], input[type="number"],
input[type="date"], input[type="time"], textarea, select {
  border-radius: 10px !important;
  border: 1px solid var(--portal-border) !important;
  padding: 11px 14px !important;
  font: inherit !important;
  font-size: 15px !important;
}
input:focus, textarea:focus, select:focus {
  outline: none !important;
  border-color: var(--portal-accent) !important;
  box-shadow: 0 0 0 3px var(--portal-accent-soft) !important;
}

/* Kalender: Brand-Blau fÃ¼r VerfÃ¼gbarkeit, Coral fÃ¼r Buchung */
.tgEv.avail {
  background: var(--portal-accent-soft) !important;
  border: 1px solid rgba(37,99,235,.32) !important;
  color: var(--portal-accent-strong) !important;
}
html[data-vrah-theme="dark"] .tgEv.avail {
  background: rgba(37,99,235,.18) !important;
  color: #93c5fd !important;
}
.tgEv.booking.requested {
  background: rgba(245,158,11,.18) !important;
  border: 1px solid rgba(245,158,11,.4) !important;
}
.tgEv.booking.confirmed {
  background: rgba(220,38,38,.14) !important;
  border: 1px solid rgba(220,38,38,.4) !important;
}

/* Links: Brand-Blau */
a { color: var(--portal-accent); text-underline-offset: 2px; }
a:hover { color: var(--portal-accent-strong); }
html[data-vrah-theme="dark"] a { color: #60a5fa !important; }
html[data-vrah-theme="dark"] a:hover { color: #93c5fd !important; }

/* Quartals-Confirm-Modal */
.pcModal { backdrop-filter: blur(6px); }
.pcDialog {
  border-radius: 20px !important;
  box-shadow: 0 24px 60px rgba(10,14,26,.32) !important;
  padding: 22px 24px !important;
}

/* Push-Promo-Karte */
#pushPromptCard { border-radius: 16px !important; }

/* Tab-Nav: fÃ¼r viele Tabs scrollbar */
.wrap > nav { overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
.wrap > nav::-webkit-scrollbar { height: 4px; }
.wrap > nav::-webkit-scrollbar-thumb { background: rgba(0,0,0,.15); border-radius: 2px; }

/* Mobile (Smartphones) */
@media (max-width: 600px) {
  body { font-size: 15px; line-height: 1.55; }
  .wrap { padding: 12px 14px !important; }
  .card { padding: 14px 14px !important; border-radius: 14px !important; }
  .btn { padding: 12px 18px !important; font-size: 14px !important; min-height: 44px; }
  .btn.primary { font-size: 15px !important; }
  h1 { font-size: 22px !important; }
  h2 { font-size: 18px !important; }
  .pill { font-size: 11px !important; padding: 2px 9px !important; }
  .row { gap: 8px !important; }
  input, textarea, select { font-size: 16px !important; /* prevents iOS zoom */ }
}

/* Tablet */
@media (min-width: 601px) and (max-width: 1024px) {
  .wrap { max-width: 720px !important; }
}

/* Safe-Area-Insets fÃ¼r Notch-Phones */
@supports (padding: max(0px)) {
  body {
    padding-left: max(0px, env(safe-area-inset-left));
    padding-right: max(0px, env(safe-area-inset-right));
    padding-bottom: max(0px, env(safe-area-inset-bottom));
  }
}
