:root {
  --ink: #1f2933;
  --muted: #5b6875;
  --line: #d9e0e6;
  --bg: #ffffff;
  --soft: #f3f6f8;
  --brand: #0b5e6b;
  --brand-dark: #084752;
  --error: #a4262c;
  --open-bg: #d8f0dd; --open-ink: #145c2b;
  --cond-bg: #dcebf9; --cond-ink: #174a7c;
  --wait-bg: #fdf0c8; --wait-ink: #6b4e00;
  --closed-bg: #f8dfd8; --closed-ink: #8a2c14;
  --unknown-bg: #e8ebee; --unknown-ink: #414c57;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font: 17px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  overflow-wrap: anywhere;
}
a { color: var(--brand); }
h1 { font-size: 1.75rem; line-height: 1.2; margin: 0 0 .5rem; }
h2 { font-size: 1.3rem; line-height: 1.25; margin: 0 0 .5rem; }
h3 { font-size: 1.05rem; line-height: 1.3; margin: 0; }
p { margin: 0 0 .75rem; }
[hidden] { display: none !important; }

.wrap { max-width: 720px; margin: 0 auto; padding: 0 16px; }
.skip { position: absolute; left: -999px; }
.skip:focus { left: 8px; top: 8px; background: #fff; padding: 8px; z-index: 2000; }

.site-header { border-bottom: 1px solid var(--line); }
.header-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; min-height: 56px; flex-wrap: wrap; }
.brand { font-weight: 700; font-size: 1.1rem; color: var(--brand); text-decoration: none; }
.site-nav { display: flex; gap: 16px; font-size: .95rem; }

main.wrap { padding-top: 24px; padding-bottom: 32px; }
.site-footer { background: var(--soft); border-top: 1px solid var(--line); padding: 20px 0; font-size: .9rem; color: var(--muted); }
.site-footer strong { color: var(--ink); }

label { display: block; font-weight: 600; margin: 12px 0 4px; }
input[type="text"], input[type="email"], input[type="password"], select, textarea {
  width: 100%;
  min-height: 46px;
  padding: 10px 12px;
  border: 1px solid #8895a1;
  border-radius: 8px;
  font: inherit;
  color: inherit;
  background: #fff;
}
:focus-visible { outline: 3px solid #e0a100; outline-offset: 2px; }
.check { display: flex; gap: 8px; align-items: flex-start; font-weight: 400; margin: 8px 0; }
.check input { width: 20px; height: 20px; margin: 3px 0 0; flex: none; }
fieldset { border: 0; padding: 0; margin: 0 0 8px; }
legend { font-weight: 600; padding: 0; }

button, .button {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  min-height: 46px;
  padding: 10px 16px;
  border-radius: 8px;
  border: 1px solid var(--brand);
  font: inherit;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
}
.primary { background: var(--brand); color: #fff; }
.primary:hover { background: var(--brand-dark); }
.secondary { background: #fff; color: var(--brand); }
.secondary:hover { background: var(--soft); }
button:disabled { opacity: .6; cursor: default; }
.full { width: 100%; }

.search label { margin-top: 16px; }
.search-row { display: flex; gap: 8px; }
.search-row input { flex: 1; min-width: 0; }
.muted { color: var(--muted); }
.small { font-size: .88rem; }
.summary { font-weight: 600; font-size: 1.1rem; margin-top: 24px; scroll-margin-top: 16px; }
.notice { background: var(--wait-bg); color: var(--wait-ink); padding: 10px 12px; border-radius: 8px; }
.warning { color: var(--wait-ink); font-weight: 600; }

.message { margin-top: 12px; padding: 10px 12px; border-radius: 8px; background: var(--soft); }
.message.error { background: var(--closed-bg); color: var(--closed-ink); }
.message.error a { color: inherit; }

.trap { position: absolute; left: -9999px; height: 1px; overflow: hidden; }

.map { height: 300px; margin: 16px 0; border: 1px solid var(--line); border-radius: 8px; z-index: 0; }
.pin, .number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  font-size: 13px;
  font-weight: 700;
  border: 2px solid currentColor;
}
.number { flex: none; }
.pin-you { background: var(--brand); border: 3px solid #fff; border-radius: 2px; transform: rotate(45deg); box-shadow: 0 0 0 2px var(--brand); }

.status-open { background: var(--open-bg); color: var(--open-ink); }
.status-conditional { background: var(--cond-bg); color: var(--cond-ink); }
.status-waiting-list { background: var(--wait-bg); color: var(--wait-ink); }
.status-closed { background: var(--closed-bg); color: var(--closed-ink); }
.status-unknown { background: var(--unknown-bg); color: var(--unknown-ink); }

.practice-list { list-style: none; margin: 0 0 16px; padding: 0; }
.card { border: 1px solid var(--line); border-radius: 10px; padding: 14px; margin-bottom: 12px; }
.card-head { display: flex; gap: 10px; align-items: flex-start; margin-bottom: 8px; }
.card-head p { margin: 2px 0 0; font-size: .92rem; }
.badge { display: inline-block; padding: 3px 10px; border-radius: 999px; font-weight: 600; font-size: .92rem; }
.card-links { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.card-links .button { flex: 1 1 220px; white-space: nowrap; }
.report summary { cursor: pointer; color: var(--brand); font-weight: 600; padding: 8px 0; }
.report form { padding: 4px 0 8px; }
.report button { margin-top: 4px; }

.panel { border: 1px solid var(--line); border-radius: 10px; padding: 16px; margin-top: 24px; }
.panel.soft { background: var(--soft); border-color: var(--soft); }
.panel button { margin-top: 4px; }
.narrow { max-width: 520px; }

.prose h2 { margin-top: 1.5rem; }
.prose ul { padding-left: 1.2rem; margin: 0 0 .75rem; }
.prose li { margin-bottom: .4rem; }
.prose blockquote { margin: 0 0 .75rem; padding: 10px 14px; background: var(--soft); border-left: 4px solid var(--brand); border-radius: 4px; }

/* Admin */
.admin-section { margin-top: 24px; }
.stats-table { width: 100%; border-collapse: collapse; font-size: .92rem; margin-bottom: 8px; }
.stats-table th, .stats-table td { padding: 6px 4px; border-bottom: 1px solid var(--line); text-align: right; overflow-wrap: normal; }
.stats-table th:first-child, .stats-table td:first-child { text-align: left; overflow-wrap: anywhere; padding-left: 0; }
.stats-table th:not(:first-child) { white-space: nowrap; }
.stats-table td:not(:first-child) { font-variant-numeric: tabular-nums; }
.admin-list { margin-top: 12px; }
.admin-login-button { margin-top: 12px; }
.admin-bar { display: flex; flex-wrap: wrap; gap: 8px 16px; color: var(--muted); margin-bottom: 12px; }
.admin-card { border: 1px solid var(--line); border-radius: 10px; padding: 14px; margin-bottom: 12px; }
.admin-card h3 { margin-bottom: 2px; }
.admin-row { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.admin-row button { flex: 1 1 120px; }
.admin-card textarea { min-height: 72px; }
.admin-card details summary { cursor: pointer; color: var(--brand); font-weight: 600; margin-top: 10px; }
.saved { color: var(--open-ink); font-weight: 600; }
.reject { border-color: var(--error); color: var(--error); background: #fff; }

@media (min-width: 640px) {
  h1 { font-size: 2.1rem; }
  .map { height: 380px; }
}
