/* ── Design tokens (Claudia Ginser Homepage palette) ── */
/* Modul 32 (Branding-Layer): nur --sage (und --sage-text) sind per-Instanz
 * überschreibbar. Die drei Töne (-dark/-light/-mid) werden via color-mix()
 * aus --sage abgeleitet — damit reicht ein einziger Konfigurationswert pro
 * Praxis, statt vier potenziell nicht zusammenpassender Hexes.
 * --sage-text ist die Textfarbe auf --sage-Flächen; sie wird server-seitig
 * per Luminanz-Heuristik auf #ffffff oder #2d2d2d gesetzt (highlight_text_color)
 * und ebenfalls aus dem Override-Block in base.html/login.html injiziert. */
:root {
  --sage:          #7a8c5e;
  --sage-dark:     color-mix(in srgb, var(--sage), black 26%);
  --sage-light:    color-mix(in srgb, var(--sage), white 88%);
  --sage-mid:      color-mix(in srgb, var(--sage), white 55%);
  --sage-text:     #ffffff;
  --bg:            #faf9f7;
  --card:          #ffffff;
  --text:          #2d2d2d;
  --text-muted:    #7a7672;
  --border:        #e2ddd7;
  --border-light:  #ede9e3;
  --surface-alt:   #f6f3ef;
  /* Warmer Schatten-Ton (charcoal-brown) statt kaltem Neutral-Schwarz —
   * ein Regler, alle Schatten leiten daraus ab (passt zum warmen Papier-bg). */
  --shadow-color:  58, 50, 42;
  --shadow:        0 1px 6px rgba(var(--shadow-color),.08);
  --radius:        4px;
  --radius-lg:     8px;
  --font:          "Lato", system-ui, -apple-system, sans-serif;
}

/* ── Reset ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
ul { padding-left: 1.25rem; }
html { font-size: 15px; }
body { font-family: var(--font); background: var(--bg); color: var(--text); line-height: 1.6; }
a { color: var(--sage); text-decoration: none; }
a:hover { color: var(--sage-dark); text-decoration: underline; }
img { max-width: 100%; display: block; }
button, input, select, textarea { font-family: inherit; font-size: inherit; }

/* ── Layout ── */
.container { max-width: 1100px; margin: 0 auto; padding: 0 1.5rem; }

/* ── Navigation ── */
.nav {
  background: var(--card);
  border-bottom: 1px solid var(--border);
  position: sticky; top: 0; z-index: 100;
}
.nav-inner {
  display: flex; align-items: center; gap: 2rem;
  max-width: 1100px; margin: 0 auto; padding: 0 1.5rem; height: 60px;
}
.nav-brand {
  display: flex; align-items: center; gap: 10px;
  font-weight: 700; font-size: 1rem; color: var(--text); flex-shrink: 0;
}
.nav-brand:hover { text-decoration: none; color: var(--sage); }
.nav-logo { width: 34px; height: 34px; }
.nav-links { display: flex; gap: 0; flex: 1; }
.nav-links a {
  padding: .35rem .9rem; color: var(--text-muted); font-size: .9rem;
  border-bottom: 2px solid transparent; letter-spacing: .02em;
  transition: color .15s, border-color .15s;
}
.nav-links a:hover { color: var(--sage); text-decoration: none; }
.nav-links a.active { color: var(--sage); border-bottom-color: var(--sage); font-weight: 600; }
.nav-actions { margin-left: auto; }

/* ── Main content ── */
main { padding: 2rem 0 3rem; }

/* ── Site footer (Copyright + Impressum) ── */
.site-footer {
  margin-top: 3rem;
  border-top: 1px solid var(--border-light);
  padding: 1.25rem 0 1.5rem;
  font-size: .8rem;
  color: var(--text-muted);
  background: transparent;
}
.site-footer-inner {
  max-width: 1100px; margin: 0 auto; padding: 0 1.5rem;
  display: flex; justify-content: center; align-items: center;
  gap: .65rem; flex-wrap: wrap;
}
.site-footer-inner .sep { color: var(--border); }
.site-footer-inner a            { color: var(--text-muted); }
.site-footer-inner a:hover      { color: var(--sage); text-decoration: none; }

.login-footer {
  padding: 1rem;
  font-size: .8rem;
  color: var(--text-muted);
  display: flex; justify-content: center; align-items: center; gap: .5rem; flex-wrap: wrap;
}
.login-footer a { color: var(--text-muted); }
.login-footer a:hover { color: var(--sage); text-decoration: none; }

/* ── Honorarnote: Bestätigungsseite ── */
.hn-summary {
  display: grid; grid-template-columns: max-content 1fr; gap: .35rem 1rem;
  margin-bottom: 1.25rem; padding: .85rem 1rem;
  background: var(--sage-light); border-radius: var(--radius);
}
.hn-summary dt { color: var(--text-muted); font-size: .85rem; }
.hn-summary dd { font-weight: 500; }
.hn-positions {
  width: 100%; border-collapse: collapse; margin: .75rem 0 1.25rem;
}
.hn-positions th, .hn-positions td {
  padding: .55rem .5rem; border-bottom: 1px solid var(--border-light);
  font-size: .9rem;
}
.hn-positions thead th {
  text-align: left; color: var(--text-muted); font-weight: 600;
  border-bottom: 1px solid var(--border);
}
.hn-positions tbody tr:hover td { background: transparent; }
.hn-positions tfoot td { border-top: 1px solid var(--border); border-bottom: none; }
.hn-positions .termin-meta { color: var(--text-muted); font-size: .82rem; margin-left: .4rem; }
.hn-betrag-input {
  width: 100px; text-align: right;
  padding: .35rem .5rem; border: 1px solid var(--border); border-radius: var(--radius);
  font-variant-numeric: tabular-nums;
}
.hn-betrag-input:focus { border-color: var(--sage); outline: none; }
.hn-datum-input {
  padding: .35rem .5rem; border: 1px solid var(--border); border-radius: var(--radius);
  font-variant-numeric: tabular-nums;
}
.hn-datum-input:focus { border-color: var(--sage); outline: none; }

/* ── Legal page (Impressum) ── */
.legal { max-width: 720px; }
.legal h1 { font-size: 1.6rem; font-weight: 300; color: var(--sage); margin-bottom: .25rem; }
.legal-lead { color: var(--text-muted); font-size: .9rem; margin-bottom: 1.75rem; }
.legal section { margin-bottom: 1.5rem; }
.legal h2 { font-size: .95rem; font-weight: 600; color: var(--text); margin-bottom: .35rem; letter-spacing: .02em; }
.legal h3 { font-size: .875rem; font-weight: 600; color: var(--text-muted); margin: 1rem 0 .4rem; }
.legal p { color: var(--text); }
.license-note { color: var(--text-muted); font-size: .875rem; margin: .5rem 0; }
.license-table { width: 100%; border-collapse: collapse; font-size: .875rem; margin-bottom: .75rem; }
.license-table th { text-align: left; font-weight: 600; color: var(--text-muted); padding: .3rem .6rem; border-bottom: 1px solid var(--border); }
.license-table td { padding: .3rem .6rem; border-bottom: 1px solid var(--border); color: var(--text); }
.license-table tr:nth-child(even) td { background: var(--surface-alt, #f6f3ef); }
@media (max-width: 540px) { .license-table { display: block; overflow-x: auto; } }

/* ── Page header ── */
.page-header {
  display: flex; justify-content: space-between; align-items: baseline;
  margin-bottom: 1.75rem; gap: 1rem; flex-wrap: wrap;
}
.page-header-actions { display: flex; gap: .5rem; align-items: center; }

/* ── Buttons ── */
.btn {
  display: inline-flex; align-items: center; gap: .4rem;
  padding: .5rem 1.1rem; border-radius: var(--radius); font-size: .875rem;
  font-weight: 600; cursor: pointer; transition: all .15s;
  border: 1.5px solid transparent; white-space: nowrap; text-decoration: none;
  line-height: 1;
}
.btn:hover { text-decoration: none; }
.btn-primary   { background: var(--sage); color: var(--sage-text); border-color: var(--sage); }
.btn-primary:hover { background: var(--sage-dark); border-color: var(--sage-dark); color: var(--sage-text); }
.btn-outline   { background: transparent; color: var(--sage); border-color: var(--sage); }
.btn-outline:hover { background: var(--sage-light); color: var(--sage-dark); }
.btn-ghost     { background: transparent; color: var(--text-muted); border-color: var(--border); }
.btn-ghost:hover { background: var(--border-light); color: var(--text); }
.btn-danger    { background: transparent; color: #b94040; border-color: #daa; }
.btn-danger:hover { background: #fdf0f0; }
.btn-sm { padding: .35rem .75rem; font-size: .8rem; }
.btn-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border-radius: var(--radius);
  border: 1.5px solid transparent; color: var(--sage);
  cursor: pointer; transition: all .15s; background: transparent;
  padding: 0; text-decoration: none;
}
.btn-icon:hover { background: var(--sage-light); border-color: var(--sage-mid); color: var(--sage-dark); }

/* ── Flash messages ── */
.flash {
  padding: .8rem 1.1rem; border-radius: var(--radius); border-left: 3px solid;
  margin-bottom: 1.5rem; font-size: .9rem;
}
.flash-success { background: #eef3e8; border-color: var(--sage); color: #3a4d28; }
.flash-error   { background: #fdf0f0; border-color: #c05555; color: #7a2020; }

/* ── Cards ── */
.card {
  background: var(--card); border: 1px solid var(--border);
  border-radius: var(--radius-lg); padding: 1.5rem; box-shadow: var(--shadow);
}

/* ── Stat grid (dashboard) ── */
.stat-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 1rem; margin-bottom: 2rem;
}
.stat-card {
  background: var(--card); border: 1px solid var(--border-light);
  border-radius: var(--radius-lg); padding: 1.5rem; text-align: center;
  box-shadow: var(--shadow);
}
.stat-card.highlight { border-color: var(--sage-mid); background: var(--sage-light); }
.stat-card-link { display: block; text-decoration: none; cursor: pointer; transition: box-shadow .15s, border-color .15s, transform .1s; }
.stat-card-link:hover { box-shadow: 0 4px 14px rgba(var(--shadow-color),.12); border-color: var(--sage-mid); transform: translateY(-1px); text-decoration: none; }
.stat-card-link:hover .stat-label { color: var(--sage); }
.stat-number { font-size: 2.8rem; font-weight: 700; color: var(--sage); line-height: 1; letter-spacing: -.01em; margin-bottom: .3rem; }
.stat-label  { font-size: .825rem; color: var(--text-muted); letter-spacing: .03em; }

/* ── Quick actions ── */
.quick-actions {
  display: flex; gap: .75rem; flex-wrap: wrap; margin-bottom: 2.5rem;
}

/* ── Section heading ── */
.section-title {
  font-size: 1rem; font-weight: 600; color: var(--sage); letter-spacing: .04em;
  text-transform: uppercase; margin-bottom: 1rem;
  padding-bottom: .4rem; border-bottom: 1px solid var(--border-light);
}

/* ── Table ── */
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: .9rem; }
thead th {
  text-align: left; font-size: .78rem; font-weight: 600; letter-spacing: .06em;
  text-transform: uppercase; color: var(--text-muted);
  padding: .6rem .9rem; border-bottom: 2px solid var(--border);
}
tbody td {
  padding: .8rem .9rem; border-bottom: 1px solid var(--border-light);
  vertical-align: middle;
}
tbody tr:hover td { background: var(--sage-light); }
tbody tr:last-child td { border-bottom: none; }
.td-actions { white-space: nowrap; display: flex; gap: .35rem; align-items: center; }
.td-right { text-align: right; }

/* ── Status badges ── */
.badge {
  display: inline-block; padding: .2rem .6rem; border-radius: 20px;
  font-size: .75rem; font-weight: 600; letter-spacing: .04em;
}
.badge-erstellt  { background: var(--sage-light); color: var(--sage-dark); border: 1px solid var(--sage-mid); }
.badge-versendet { background: #fef8e7; color: #7a5c00; border: 1px solid #f0d080; }
.badge-bezahlt   { background: var(--sage); color: var(--sage-text); }
.badge-storniert { background: #fdf0f0; color: #8a2020; border: 1px solid #daa; }
.badge-offen     { background: var(--border-light); color: var(--text-muted); border: 1px solid var(--border); }
.badge-abgerechnet { background: var(--sage-light); color: var(--sage-dark); border: 1px solid var(--sage-mid); }

/* ── Filter bar ── */
.filter-bar {
  display: flex; gap: 1rem; align-items: flex-end; flex-wrap: wrap;
  background: var(--card); border: 1px solid var(--border);
  border-radius: var(--radius-lg); padding: 1rem 1.25rem;
  margin-bottom: 1.5rem;
}
.filter-bar .field { display: flex; flex-direction: column; gap: .25rem; }
.filter-bar label { font-size: .78rem; font-weight: 600; color: var(--text-muted); letter-spacing: .04em; text-transform: uppercase; }
.filter-bar input, .filter-bar select {
  padding: .4rem .7rem; border: 1px solid var(--border); border-radius: var(--radius);
  background: var(--bg); color: var(--text); font-size: .875rem;
  height: 2.25rem;
  transition: border-color .15s;
}
.filter-bar input:focus, .filter-bar select:focus {
  outline: none; border-color: var(--sage);
}

/* ── Status tab filter ── */
.tab-filter { display: flex; gap: .5rem; margin-bottom: 1.25rem; }
.tab-filter a {
  padding: .3rem .9rem; border-radius: 20px; font-size: .85rem;
  border: 1.5px solid var(--border); color: var(--text-muted);
  transition: all .15s;
}
.tab-filter a:hover { border-color: var(--sage-mid); color: var(--sage); text-decoration: none; }
.tab-filter a.active { background: var(--sage); border-color: var(--sage); color: var(--sage-text); }

/* ── Forms ── */
.form-card { max-width: 620px; }
.form-group { margin-bottom: 1.25rem; }
.form-group label {
  display: block; font-size: .8rem; font-weight: 600; letter-spacing: .05em;
  text-transform: uppercase; color: var(--text-muted); margin-bottom: .4rem;
}
.form-group input[type=text],
.form-group input[type=email],
.form-group input[type=tel],
.form-group input[type=number],
.form-group input[type=date],
.form-group input[type=time],
.form-group input[type=password],
.form-group input[type=url],
.form-group select,
.form-group textarea {
  width: 100%; padding: .6rem .85rem;
  border: 1px solid var(--border); border-radius: var(--radius);
  background: var(--card); color: var(--text); font-size: .9rem;
  transition: border-color .15s, box-shadow .15s;
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus {
  outline: none; border-color: var(--sage); box-shadow: 0 0 0 3px rgba(122,140,94,.16);
}
.form-group textarea { min-height: 90px; resize: vertical; }
.form-hint { font-size: .78rem; color: var(--text-muted); margin-top: .25rem; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.form-row-3 { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 1rem; }
.form-actions { display: flex; gap: .5rem; margin-top: 1.75rem; padding-top: 1.25rem; border-top: 1px solid var(--border-light); }
.field-required::after { content: " *"; color: var(--sage); }
.form-error { background: #fdf0f0; color: #7a2020; border: 1px solid #daa; border-radius: var(--radius); padding: .7rem 1rem; margin-bottom: 1rem; font-size: .875rem; }

/* ── Date / time input specifics ── */
/* Note: date format (DD.MM.YYYY vs MM/DD/YYYY) is browser-locale-controlled;
   Safari ignores the lang attribute for date display — known limitation, not
   enforceable in pure HTML/CSS. */
.form-group input[type="date"] {
  text-align: left;
  max-width: 200px;
}
.form-group input[type="time"] {
  min-width: 110px;
  min-height: 44px; /* iOS tappable target */
}

/* ── Login page ── */
.login-wrap {
  min-height: calc(100vh - 60px); display: flex;
  align-items: center; justify-content: center; padding: 2rem;
}
.login-card { width: 100%; max-width: 380px; }
.login-logo { width: 70px; height: 70px; margin: 0 auto 1.25rem; }
.login-title { text-align: center; font-size: 1.2rem; font-weight: 300; color: var(--sage); letter-spacing: .06em; margin-bottom: .25rem; }
.login-sub { text-align: center; font-size: .825rem; color: var(--text-muted); margin-bottom: 2rem; }

/* ── Checkbox list (Termine für Honorarnote) ── */
.check-list { list-style: none; display: flex; flex-direction: column; gap: .4rem; }
.check-list li label {
  display: flex; align-items: center; gap: .65rem;
  padding: .55rem .85rem; border: 1px solid var(--border);
  border-radius: var(--radius); cursor: pointer; font-size: .9rem;
  transition: background .1s, border-color .1s;
}
.check-list li label:hover { background: var(--sage-light); border-color: var(--sage-mid); }
.check-list input[type=checkbox] { accent-color: var(--sage); width: 15px; height: 15px; flex-shrink: 0; }
.check-list .termin-meta { color: var(--text-muted); font-size: .82rem; margin-left: auto; }

/* ── Radio group ── */
.radio-group { display: flex; gap: .75rem; }
.radio-group label {
  flex: 1; display: flex; align-items: center; gap: .6rem;
  padding: .6rem .9rem; border: 1.5px solid var(--border);
  border-radius: var(--radius); cursor: pointer; font-size: .9rem;
  transition: all .15s;
}
.radio-group label:has(input:checked) { border-color: var(--sage); background: var(--sage-light); }
.radio-group input[type=radio] { accent-color: var(--sage); }

/* ── Empty state ── */
.empty-state { text-align: center; padding: 3rem 1rem; color: var(--text-muted); }
.empty-state p { font-size: 1rem; }

/* ── HTMX loading indicator ── */
.htmx-indicator { opacity: 0; transition: opacity .2s; }
.htmx-request .htmx-indicator { opacity: 1; }
.spinner { display: inline-block; width: 16px; height: 16px; border: 2px solid var(--border); border-top-color: var(--sage); border-radius: 50%; animation: spin .6s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ── Section sub-navigation ── */
.subnav {
  display: flex; gap: .5rem; margin-bottom: 1.75rem; flex-wrap: wrap;
}
.subnav a {
  padding: .35rem 1rem; border-radius: 20px; font-size: .875rem;
  border: 1.5px solid var(--border); color: var(--text-muted);
  text-decoration: none; transition: all .15s; white-space: nowrap;
}
.subnav a:hover { border-color: var(--sage-mid); color: var(--sage); text-decoration: none; }
.subnav a.active { background: var(--sage); border-color: var(--sage); color: var(--sage-text); font-weight: 600; }

/* ── Buchhaltung filter groups ── */
.filter-group {
  display: flex; flex-direction: column; gap: .25rem;
}
.filter-group label {
  font-size: .78rem; font-weight: 600; color: var(--text-muted);
  letter-spacing: .04em; text-transform: uppercase;
}
.filter-group select,
.filter-group input[type="month"] {
  padding: .4rem .7rem; border: 1px solid var(--border); border-radius: var(--radius);
  background: var(--bg); color: var(--text); font-size: .875rem;
  height: 2.25rem; transition: border-color .15s;
}
.filter-group select:focus,
.filter-group input[type="month"]:focus { outline: none; border-color: var(--sage); }
#custom-range { flex-direction: row; align-items: flex-end; gap: .5rem; }
#custom-range span { line-height: 2.25rem; color: var(--text-muted); font-size: .875rem; }

/* ── Drag & Drop Zone ── */
.drop-zone {
  position: relative; border: 2px dashed var(--border);
  border-radius: var(--radius-lg); padding: 1.5rem;
  text-align: center; cursor: pointer; transition: border-color .15s, background .15s;
}
.drop-zone:hover, .drop-zone.drag-over {
  border-color: var(--sage); background: var(--sage-light);
}
.drop-zone input[type=file] {
  position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%;
}
.drop-zone-label { display: flex; flex-direction: column; gap: .3rem; pointer-events: none; }
.drop-icon { font-size: 1.5rem; }
.drop-zone-label span { font-size: .9rem; color: var(--text-muted); }
.drop-hint { font-size: .8rem !important; }
.drop-zone-selected {
  display: flex; align-items: center; justify-content: center;
  gap: .75rem; font-size: .9rem; color: var(--sage);
}
.drop-zone-selected button { position: relative; z-index: 1; }

/* ── Buchhaltung chart + table ── */
.chart-container { margin: 1.5rem 0; max-height: 320px; }
.umsatz-table { width: 100%; margin-top: 1.5rem; }
.umsatz-table thead th { text-align: left; }
.umsatz-table thead th.num,
.umsatz-table tbody td.num,
.umsatz-table tfoot td.num { text-align: right; }
.total-row { border-top: 2px solid var(--border); font-weight: 600; }
.total-row td { padding: .75rem .9rem; }
th.num { text-align: right; }

/* ── User-Menu (Avatar-Dropdown oben rechts, Modul 31.1) ── */
.user-menu { position: relative; }
.user-menu > summary {
  list-style: none;
  cursor: pointer;
  width: 36px; height: 36px;
  border-radius: 50%;
  background: var(--sage);
  color: var(--sage-text);
  display: flex; align-items: center; justify-content: center;
  font-weight: 600; font-size: .95rem;
  border: 2px solid transparent;
  transition: border-color .15s, box-shadow .15s;
  overflow: hidden;
}
.user-menu > summary > img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.user-menu-role {
  display: inline-block;
  font-size: .7rem;
  color: var(--sage-dark);
  background: var(--sage-light);
  padding: 1px 6px;
  border-radius: 4px;
  margin-left: .35rem;
  vertical-align: middle;
}
.profil-avatar-preview {
  width: 72px; height: 72px;
  border-radius: 50%;
  object-fit: cover;
  display: flex; align-items: center; justify-content: center;
  background: var(--sage);
  color: var(--sage-text);
  font-weight: 600; font-size: 2rem;
  flex-shrink: 0;
}
.profil-avatar-placeholder { background: var(--sage); }
.badge {
  display: inline-block;
  font-size: .7rem;
  background: var(--sage-light);
  color: var(--sage-dark);
  padding: 1px 6px;
  border-radius: 4px;
  margin-left: .25rem;
}
.btn-sm { padding: .2rem .55rem; font-size: .82rem; }
.user-menu > summary::-webkit-details-marker { display: none; }
.user-menu > summary::marker { content: none; }
.user-menu > summary:hover,
.user-menu[open] > summary {
  border-color: var(--sage-dark);
  box-shadow: 0 0 0 3px var(--sage-light);
}
.user-menu-dropdown {
  position: absolute; right: 0; top: calc(100% + .35rem);
  min-width: 180px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 6px 20px rgba(var(--shadow-color),.10);
  padding: .35rem 0;
  z-index: 50;
}
.user-menu-header {
  padding: .5rem .85rem .35rem;
  border-bottom: 1px solid var(--border);
  margin-bottom: .25rem;
}
.user-menu-name { font-weight: 600; font-size: .9rem; color: var(--text); }
.user-menu-dropdown a {
  display: block;
  padding: .45rem .85rem;
  color: var(--text);
  text-decoration: none;
  font-size: .9rem;
}
.user-menu-dropdown a:hover {
  background: var(--sage-light);
  color: var(--sage-dark);
}

/* ── Profilseite (Modul 31.1) ── */
.profil-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
  max-width: 920px;
}
.profil-card { padding: 1.25rem 1.5rem; }
.profil-row {
  display: flex; align-items: baseline; gap: 1rem;
  padding: .35rem 0;
}
.profil-label {
  font-size: .85rem; color: var(--text-muted, #777);
  min-width: 110px;
}
.profil-value { font-weight: 500; }

/* ── Dialog / Modal (globale Basis) ────────────────────────────────────────
   Basis-Styling für ALLE <dialog>-Modals im Admin-Bereich. Verhindert den
   hässlichen Browser-Default bei Dialogen ohne eigenes Styling. Spezifische
   Dialoge (per id) oder Inline-Styles überschreiben einzelne Properties. */
dialog {
  /* margin:auto zentriert den Modal-Dialog — nötig, weil der globale
     `* { margin: 0 }`-Reset (Zeile ~28) das UA-Default `dialog:modal { margin:auto }`
     überschreibt und der Dialog sonst oben-links klebt. */
  margin: auto;
  border: 1px solid var(--border, #e0e0da);
  border-radius: var(--radius-lg, 10px);
  padding: 1.5rem;
  max-width: 480px;
  width: 90%;
  background: var(--card-bg, #fff);
  color: var(--text, #2a2a2a);
  box-shadow: 0 10px 40px rgba(var(--shadow-color), .18);
}
dialog::backdrop {
  background: rgba(40, 44, 38, .42);
}
dialog h2,
dialog h3 { margin-top: 0; }
.dialog-actions {
  display: flex;
  gap: .75rem;
  justify-content: flex-end;
  margin-top: 1.25rem;
}

/* ── Responsive ── */
@media (max-width: 640px) {
  .form-row, .form-row-3 { grid-template-columns: 1fr; }
  .nav-links a { padding: .35rem .5rem; font-size: .82rem; }
  .page-header { flex-direction: column; align-items: flex-start; }
  .profil-grid { grid-template-columns: 1fr; }
}
