/* Verbindliche Referenz: app/flutter_plakido/lib/theme/tokens.dart.
 * Gemeinsamer Abschluss der Seiten-Styles; keine Änderung der Inhaltsreihenfolge.
 */
@font-face { font-family: Nunito; font-style: normal; font-weight: 400 800; font-display: swap; src: url('/assets/fonts/ee40bb094c99a29a-s.p.woff2') format('woff2'); }
@font-face { font-family: DynaPuff; font-style: normal; font-weight: 600; font-display: swap; src: url('/assets/fonts/dfa8b79dd9cddf0f-s.p.woff2') format('woff2'); }
:root {
  --app-bg-top: #FEF8EF;
  --app-bg-mid: #FDF7EE;
  --app-bg-bottom: #FDF5EA;
  --app-cream: #FEFAF3;
  --app-border: #F0E7D8;
  --app-control-border: #C9C4BA;
  --app-blue: #2D6EA1;
  --app-blue-dark: #23577E;
  --app-blue-soft: #E9F3FA;
  --app-selection: #C9DDE9;
  --app-navy: #203B4E;
  --app-text: #242323;
  --app-secondary: #4E5E6D;
  --app-green-soft: #EAF5EA;
  --app-green-text: #2F6B45;
  --app-shadow: 0 5px 20px rgb(43 36 28 / 8%);
  --app-card-radius: 15px;
  --app-control-radius: 16px;
}
html { min-height: 100%; scroll-padding-top: 90px; }
body, body.registration-page, body.places-page {
  font-family: Nunito, system-ui, sans-serif;
  background: linear-gradient(180deg, var(--app-bg-top), var(--app-bg-mid) 38%, var(--app-bg-bottom));
  color: var(--app-text);
  min-height: 100vh;
}
button, input, select, textarea { font-family: inherit; }
:where(a, button, summary, input, select, textarea):focus-visible {
  outline: 3px solid var(--app-blue);
  outline-offset: 3px;
}
:where(button, .btn, summary) { touch-action: manipulation; }
:where(button, .btn):disabled { cursor: not-allowed; opacity: .55; }
.registration-wordmark, .site-header .brand, .wordmark-sm, .topbar .brand {
  font-family: DynaPuff, Nunito, sans-serif;
  color: var(--app-navy) !important;
  font-weight: 600;
  letter-spacing: -.02em;
}
.registration-header, .site-header { background: var(--app-cream); border-color: var(--app-border); }
.registration-header a:not(.registration-wordmark), .site-header nav a {
  display: inline-flex; align-items: center; min-height: 44px;
}
[data-public-header] a:focus-visible { border-radius: 14px; }
.php-mobile-menu nav { background: var(--app-cream); border-color: var(--app-border); box-shadow: var(--app-shadow); }
.php-mobile-menu nav a:hover { background: var(--app-blue-soft); color: var(--app-blue-dark); }
.php-status-card { border-radius: 22px; border-color: var(--app-border); }

/* Gemeinsame Felder in Login, Partnerregistrierung, Admin und Partnerportal. */
.field input, .field textarea, .field select,
.admin-form input:not([type=hidden]):not([type=checkbox]):not([type=radio]),
.admin-form textarea, .admin-form select,
.admin-place-filter input[type=search], .admin-place-filter select,
.registration-grid input, .registration-grid select,
.registration-wide-label input, .registration-wide-label textarea,
.registration-hours input {
  border: 1px solid var(--app-control-border);
  border-radius: var(--app-control-radius);
  background: #fff;
  color: var(--app-text);
  min-height: 48px;
  font-size: 16px;
  line-height: 1.45;
  padding: 11px 14px;
  max-width: 100%;
}
.field label, .admin-form label, .registration-grid label { color: var(--app-secondary); line-height: 1.45; }
.btn, .registration-card button {
  min-height: 54px; height: auto; padding: 12px 22px;
  border-radius: 27px; font-family: inherit; font-size: 16px; line-height: 1.3; font-weight: 800;
  text-align: center; text-decoration: none;
}
.btn:hover { text-decoration: none; }
.btn-blue, .registration-card button { background: var(--app-blue); color: #fff; }
.btn-blue:hover, .registration-card button:hover { background: var(--app-blue-dark); }
.btn-sm { min-height: 44px; padding: 10px 16px; font-size: 14px; }
.btn-soft, .registration-actions [data-prev-step] { background: var(--app-blue-soft); color: var(--app-blue-dark); }
.registration-actions [data-prev-step]:hover { background: var(--app-selection); }
.registration-ticket button { background: #FFEEEB; color: #B3362E; }
.registration-ticket button:hover { background: #ffe0db; }
.login-form-wrap { width: 100%; max-width: 560px; justify-self: center; padding: 56px clamp(24px, 4vw, 64px); }
.login-form-wrap h2 { font-size: 28px; line-height: 1.2; }
.login-role-options { border-radius: 22px; background: var(--app-blue-soft); border-color: var(--app-selection); padding: 6px; gap: 6px; }
.login-role-option span { min-height: 48px; border-radius: 16px; font-size: 15px; }
.login-role-option input:checked + span { background: var(--app-blue); color: #fff; border-color: var(--app-blue); box-shadow: none; }
.login-form .btn { min-height: 54px; }
.registration-card { border-color: var(--app-border); border-radius: 24px; box-shadow: var(--app-shadow); }
.registration-conditions, .registration-success { background: var(--app-green-soft); border-radius: 22px; }
.registration-conditions p { color: var(--app-green-text); }
.registration-stepper span { border-radius: 16px; background: #F7F1E8; color: var(--app-secondary); }
.registration-stepper .active { background: var(--app-blue-soft); color: var(--app-blue-dark); box-shadow: inset 0 0 0 1px var(--app-selection); }
.registration-mode label, .registration-facilities label, .admin-form .admin-options label { border-radius: 16px; min-height: 44px; }
.registration-mode label:has(input:checked), .registration-facilities label:has(input:checked) { background: var(--app-blue-soft); box-shadow: inset 0 0 0 1px var(--app-selection); color: var(--app-blue-dark); }
.registration-mode label:focus-within, .registration-facilities label:focus-within { outline: 2px solid var(--app-blue); outline-offset: 2px; }
.registration-check input, .registration-mode input, .registration-facilities input { accent-color: var(--app-blue); }

/* Karten und Navigation bleiben kompakt genug für echte Verwaltungsarbeit. */
.card, .stat-card, .admin-panel, .admin-place-card, .admin-faq-card, .admin-place-image {
  border-radius: var(--app-card-radius); border-color: var(--app-border);
}
.admin-panel { box-shadow: var(--app-shadow); }
.sidebar { background: var(--app-cream); }
.nav-row { border-radius: 14px; }
.nav-row.on { background: var(--app-blue-soft); color: var(--app-blue-dark); }
.shell-heading h1 { font-size: 28px; }
.shell-heading p, .stat-card .label, .admin-row small { color: var(--app-secondary); }
.admin-tabs a { display: inline-flex; align-items: center; min-height: 44px; }
.admin-tabs a[aria-current=page] { background: var(--app-blue-soft); border-color: var(--app-selection); color: var(--app-blue-dark); }
.pill, .sidebar-toggle-label { min-height: 44px; }
.backend-footer, .login-page-footer, .registration-footer, .places-footer { color: var(--app-secondary); font-size: 13px; text-align: left; }
.place-card, .info-card { border-radius: var(--app-card-radius); border-color: var(--app-border); box-shadow: var(--app-shadow); }
.facts > div { background: var(--app-green-soft); border-radius: 16px; }
@media (max-width: 767px) {
  .login-form-wrap { padding: 32px 24px; }
  .shell-content { width: 100%; min-height: calc(100vh - 145px); padding: 24px 16px; }
  .login-page-footer { padding: 22px 24px; }
  .registration-card { padding: 22px 18px; }
  .registration-actions { flex-wrap: wrap; }
  .registration-actions button { flex: 1 1 130px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
