/* Traditional Czech cottage: limestone walls, oak beams, barn-red shutters, meadow green */
:root {
  --paper: #f6f1e7;
  --paper-2: #efe7d8;
  --card: #fffdf8;
  --ink: #2b241c;
  --muted: #6e6253;
  --oak: #6b4a2f;
  --red: #9b3b2a;
  --red-ink: #fff;
  --green: #4f6b45;
  --line: #ddd2bf;
  --shadow: 0 1px 2px rgb(60 40 20 / 6%), 0 8px 24px rgb(60 40 20 / 8%);
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;
  --sans: "Segoe UI", system-ui, -apple-system, sans-serif;
  --radius: 10px;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root {
    --paper: #1d1914;
    --paper-2: #25201a;
    --card: #2a241d;
    --ink: #efe6d6;
    --muted: #b3a690;
    --oak: #d2a878;
    --red: #c4614c;
    --red-ink: #1d1914;
    --green: #9cb98f;
    --line: #3d352b;
    --shadow: 0 1px 2px rgb(0 0 0 / 30%), 0 8px 24px rgb(0 0 0 / 25%);
    color-scheme: dark;
  }
}

* { box-sizing: border-box; }
/* Fluid scale: everything in rem grows smoothly from phone (16px) to large screens (21px). */
html { font-size: clamp(15px, 12.5px + 0.45vw, 19px); }
html { scroll-behavior: smooth; scroll-padding-top: 5rem; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } * { transition: none !important; } }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font: 1.06rem/1.7 var(--sans);
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: var(--red); text-underline-offset: 3px; }
h1, h2, h3 { font-family: var(--serif); font-weight: 600; line-height: 1.15; color: var(--oak); }
h2 { font-size: clamp(1.9rem, 1.2rem + 2.2vw, 3rem); margin: 0 0 .6em; }
h3 { font-size: 1.35rem; }
:focus-visible { outline: 3px solid var(--green); outline-offset: 2px; }

.wrap { max-width: 1320px; margin: 0 auto; padding: 0 clamp(16px, 4vw, 48px); }

/* Header */
.site-header {
  position: sticky; top: 0; z-index: 10;
  background: color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line);
}
.site-header .wrap { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 4rem; }
.brand { white-space: nowrap; font-family: var(--serif); font-size: clamp(1.25rem, 1rem + 0.8vw, 1.7rem); color: var(--oak); text-decoration: none; font-weight: 600; }
.site-nav { display: flex; gap: 4px clamp(16px, 2vw, 32px); align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.site-nav a { color: var(--ink); text-decoration: none; font-size: clamp(.85rem, .72rem + .25vw, .95rem); font-weight: 500; letter-spacing: .01em; padding: 4px 0; border-bottom: 2px solid transparent; transition: border-color .2s; }
.site-nav a:hover { border-color: var(--red); }
.site-nav a.btn { margin-left: clamp(8px, 1.5vw, 24px); border-bottom: 0; }
@media (max-width: 640px) { .site-nav a:not(.btn) { display: none; } }

/* Hero */
.hero { position: relative; min-height: min(86vh, 900px); display: grid; place-items: end start; overflow: hidden; color: #fff; background: var(--oak); }
.hero img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgb(30 20 10 / 75%), rgb(30 20 10 / 10%) 60%); }
.hero-text { position: relative; z-index: 1; padding: clamp(40px, 7vw, 96px) clamp(16px, 4vw, 48px); max-width: 1320px; width: 100%; margin: 0 auto; }
.hero h1 { color: #fff; font-size: clamp(2rem, 1rem + 3vw, 3.6rem); text-wrap: balance; margin: 0 0 .2em; text-shadow: 0 2px 12px rgb(0 0 0 / 30%); }
.hero p { font-size: clamp(1.15rem, 1rem + 0.6vw, 1.6rem); margin: 0 0 1.4em; max-width: 36em; opacity: .95; }
.hero.plain { min-height: 52vh; background: linear-gradient(160deg, var(--green), var(--oak)); }

/* Buttons */
.btn, button {
  display: inline-block; font: 600 1rem var(--sans); padding: .8em 1.6em; border: 0; border-radius: 999px;
  background: var(--red); color: var(--red-ink); text-decoration: none; cursor: pointer;
  transition: transform .15s, box-shadow .2s, filter .2s;
}
.btn:hover, button:hover { transform: translateY(-1px); box-shadow: var(--shadow); filter: brightness(1.05); }
.btn.small, button.small { padding: .45em 1.1em; font-size: .9rem; }
.btn.ghost, button.ghost { background: transparent; color: var(--ink); border: 1px solid var(--line); }
button.danger { background: transparent; color: var(--red); border: 1px solid currentColor; padding: 4px 12px; font-size: .85rem; }

/* Sections */
.section { padding: clamp(56px, 9vw, 128px) 0; }
.section + .section { border-top: 1px solid color-mix(in srgb, var(--line) 60%, transparent); }  /* one background; sections divided by a hairline + ornament */
.ornament {
  /* two long lines with the diamond in the middle; the lines stretch, the diamond never distorts */
  height: 18px; margin: 0 auto clamp(24px, 3vw, 36px); width: min(560px, 70%); opacity: .85;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 18'%3E%3Cg fill='none' stroke='%239b3b2a' stroke-width='1.5'%3E%3Cpath d='M30 1l8 8-8 8-8-8z'/%3E%3Ccircle cx='8' cy='9' r='2.5'/%3E%3Ccircle cx='52' cy='9' r='2.5'/%3E%3C/g%3E%3C/svg%3E") center / 60px 18px no-repeat,
    linear-gradient(to left, var(--red), transparent) left center / calc(50% - 34px) 1.5px no-repeat,
    linear-gradient(to right, var(--red), transparent) right center / calc(50% - 34px) 1.5px no-repeat;
}
.center { text-align: center; }
.prose { max-width: 46em; font-size: 1.08rem; }
.prose.center { margin: 0 auto; max-width: 42em; text-align: left; }
.prose p:first-child { margin-top: 0; }
.prose ul { padding-left: 1.2em; }
.prose li::marker { color: var(--red); }

.cards { display: grid; gap: clamp(16px, 2.5vw, 32px); grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); }
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: clamp(20px, 2.5vw, 36px); box-shadow: var(--shadow); }
.card h2 { font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); }

/* Gallery */
.gallery { display: grid; gap: clamp(10px, 1.5vw, 20px); grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr)); }
.gallery figure { margin: 0; overflow: hidden; border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); }
.gallery img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform .5s ease; }
.gallery figure:hover img { transform: scale(1.04); }
.gallery figcaption { padding: .6em .9em; font-size: .95rem; color: var(--muted); }

/* CTA + footer */
.cta { background: var(--green); color: #fff; text-align: center; }
.cta h2 { color: #fff; }
.cta p { max-width: 34em; margin: 0 auto 1.4em; opacity: .95; }
.cta .btn { background: #fff; color: var(--green); }
@media (prefers-color-scheme: dark) { .cta { background: #34452f; } .cta .btn { color: #34452f; } }
.site-footer { padding: 2.5rem 0; color: var(--muted); font-size: .95rem; border-top: 1px solid var(--line); }
.site-footer .wrap { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px; }
.site-footer a { color: var(--muted); }

/* Forms */
.stack { display: grid; gap: 16px; }
label { display: grid; gap: 6px; font-weight: 600; font-size: 1rem; }
input, textarea, select {
  font: 400 1.05rem/1.5 var(--sans); padding: .65em .8em; width: 100%;
  border: 1px solid var(--line); border-radius: 8px; background: var(--card); color: var(--ink);
  transition: border-color .2s, box-shadow .2s;
}
input:focus, textarea:focus, select:focus { outline: none; border-color: var(--green); box-shadow: 0 0 0 3px color-mix(in srgb, var(--green) 25%, transparent); }
textarea { resize: vertical; min-height: 120px; }
input[type="file"] { padding: 8px; }
.stack button { justify-self: start; }

/* Auth pages */
.auth { min-height: 100vh; display: grid; place-items: center; padding: 24px 16px; }
.auth .card { width: 100%; max-width: 400px; }
.auth h1 { margin-top: 0; text-align: center; }
.auth button { width: 100%; justify-self: stretch; }
.auth .hint { text-align: center; }

/* Admin */
.admin-main { padding: 32px 0 80px; display: grid; gap: 28px; }
.admin-main .card h2 { margin-bottom: .3em; }
.admin-gallery { margin-top: 20px; }
.admin-gallery figure { display: grid; }
.admin-gallery figcaption { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.inline { display: inline; margin: 0; }
.md-editor { display: grid; gap: 12px; grid-template-columns: 1fr 1fr; align-items: stretch; }
.md-editor textarea { height: 100%; min-height: 12rem; }
.md-preview { border: 1px dashed var(--line, rgba(127,127,127,.35)); border-radius: 8px; padding: 10px 14px; overflow: auto; max-height: 24rem; font-weight: normal; }
.md-preview:empty::before { content: "Náhled se zobrazí zde"; color: var(--muted); font-style: italic; }
@media (max-width: 760px) { .md-editor { grid-template-columns: 1fr; } }
.caption-form { display: flex; gap: 6px; flex: 1; margin: 0; }
.caption-form input { flex: 1; min-width: 0; }
.upload-previews:empty { display: none; }
.upload-previews figure { position: relative; }
.upload-previews figcaption input { width: 100%; }
.upload-previews .remove { position: absolute; top: 6px; right: 6px; }
.photo-upload.js .single-caption { display: none; }

.error { color: var(--red); background: color-mix(in srgb, var(--red) 10%, transparent); padding: 10px 14px; border-radius: 8px; margin: 0 0 16px; }
.notice { color: var(--green); background: color-mix(in srgb, var(--green) 12%, transparent); padding: 10px 14px; border-radius: 8px; margin: 0; }
.hint { color: var(--muted); font-size: .95rem; margin-top: 0; }
.empty { color: var(--muted); font-style: italic; }

/* Booking: calendar + inquiry form */
.booking { display: grid; gap: clamp(24px, 3vw, 44px); }
.booking .inquiry-form { width: 100%; max-width: 54rem; margin: 0 auto; }
.cal-nav { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; }
.legend { display: flex; gap: 16px; list-style: none; margin: 0; padding: 0; font-size: .95rem; color: var(--muted); }
.legend li { display: flex; align-items: center; gap: 6px; }
.legend .day { display: inline-block; width: 1em; height: 1em; border-radius: 4px; }
.months { display: grid; gap: clamp(12px, 2vw, 28px); grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); }
.month { width: 100%; border-collapse: separate; border-spacing: 4px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: clamp(8px, 1vw, 16px); box-shadow: var(--shadow); font-size: 1rem; }
.month caption { font-family: var(--serif); font-size: 1.3rem; color: var(--oak); padding-bottom: 6px; text-transform: capitalize; }
.month th { color: var(--muted); font-weight: 500; font-size: .85rem; padding-bottom: .3em; }
.month td { text-align: center; padding: .45em 0; border-radius: 6px; }
.day.free { background: color-mix(in srgb, var(--green) 14%, transparent); }
.day.busy { background: var(--red); color: var(--red-ink); text-decoration: line-through; }
.day.past { color: var(--muted); opacity: .45; }
/* half days: another stay leaves in the morning (upper triangle) / arrives in the afternoon (lower) */
.day.free.end { background: linear-gradient(to bottom right, var(--red) 50%, color-mix(in srgb, var(--green) 14%, transparent) 50%); }
.day.busy.start { background: linear-gradient(to bottom right, color-mix(in srgb, var(--green) 14%, transparent) 50%, var(--red) 50%); color: inherit; text-decoration: none; }
.month td button {
  all: unset; box-sizing: border-box; display: block; width: 100%; padding: .45em 0;
  border-radius: 5px; cursor: pointer; text-align: center;
}
.month td button:hover { background: color-mix(in srgb, var(--green) 35%, transparent); }
.month td button:focus-visible { outline: 2px solid var(--green); outline-offset: 1px; }
.month td:has(button) { padding: 0; }
.day.sel { background: color-mix(in srgb, var(--green) 45%, transparent); }
.day.sel-edge { background: var(--green); color: #fff; font-weight: 700; }
.day.busy.sel { outline: 2px solid var(--red); }
.warn { margin: 0; padding: 10px 14px; border-radius: 8px; font-size: .95rem;
  color: var(--oak); background: color-mix(in srgb, var(--oak) 12%, transparent); }
.pick-hint { margin: 0; }
.row { display: grid; gap: clamp(12px, 1.5vw, 20px); grid-template-columns: 1fr 1fr; }
@media (max-width: 420px) { .row { grid-template-columns: 1fr; } }
.check { display: flex; gap: 10px; align-items: flex-start; font-weight: 400; font-size: .98rem; }
.check input { width: auto; margin-top: 4px; accent-color: var(--green); }
.hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.error ul { margin: 0; padding-left: 1.2em; }
.inquiry-form { position: relative; }
.done { max-width: 520px; }
.price { width: 100%; border-collapse: collapse; margin: 16px 0; }
.price th { text-align: left; font-weight: 400; }
.price td { text-align: right; white-space: nowrap; }
.price th, .price td { padding: 6px 0; border-bottom: 1px solid var(--line); }
.price .sum th, .price .sum td { font-weight: 700; border-bottom: 0; }

/* Admin tables */
.table-wrap { overflow-x: auto; }
.data { width: 100%; border-collapse: collapse; font-size: .95rem; }
.data th, .data td { text-align: left; padding: 10px 8px; border-bottom: 1px solid var(--line); vertical-align: top; }
.data th { color: var(--muted); font-weight: 600; font-size: .85rem; }
.data tr:hover td { background: color-mix(in srgb, var(--oak) 5%, transparent); }
.badge { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: .8rem; font-weight: 600; background: var(--paper-2); }
.badge.new { background: color-mix(in srgb, var(--oak) 18%, transparent); color: var(--oak); }
.badge.confirmed, .badge.paid { background: color-mix(in srgb, var(--green) 20%, transparent); color: var(--green); }
.badge.declined, .badge.cancelled { color: var(--muted); }
.tabs { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.tabs a { text-decoration: none; }
.tabs a[aria-current="page"] { background: var(--oak); color: var(--paper); border-color: var(--oak); }
.actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.grid-form { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); align-items: end; }
dl.facts { display: grid; grid-template-columns: max-content 1fr; gap: 6px 16px; margin: 0; }
dl.facts dt { color: var(--muted); }
dl.facts dd { margin: 0; }
.msg { white-space: pre-wrap; background: var(--paper-2); padding: 12px; border-radius: 8px; }

/* Conversation thread */
.thread { list-style: none; margin: 0 0 20px; padding: 0; display: grid; gap: 12px; }
.msg-item { max-width: 85%; }
.msg-item.out { justify-self: end; }
.msg-item.out .msg { background: color-mix(in srgb, var(--green) 14%, transparent); }
.msg-item.failed .msg { outline: 2px solid var(--red); }
.msg-meta { font-size: .8rem; color: var(--muted); margin-bottom: 4px; }
.msg-item.out .msg-meta { text-align: right; }
.bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; }
.bar h2 { margin: 0; }

/* Icons (Tabler, inline SVG) */
.icon { width: 1.5em; height: 1.5em; flex: none; }

/* Admin: amenity switches */
.feature-group { border: 0; padding: 0; margin: 0 0 8px; }
.feature-group legend { font-family: var(--serif); color: var(--oak); font-size: 1.25rem; margin-bottom: 8px; }
.feature-toggles { display: grid; gap: 8px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); }
.feature-toggle { display: block; position: relative; font-weight: 500; cursor: pointer; }
.feature-toggle input { position: absolute; inset: 0; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.feature-chip .icon { width: 1.2em; height: 1.2em; }
.feature-chip { display: flex; align-items: center; gap: 10px; padding: .6em .9em; border: 1px solid var(--line); border-radius: 12px; color: var(--muted); transition: background .2s, border-color .2s, color .2s; }
.feature-chip .icon { opacity: .55; }
.feature-toggle input:checked + .feature-chip { color: var(--ink); border-color: var(--green); background: color-mix(in srgb, var(--green) 14%, transparent); }
.feature-toggle input:checked + .feature-chip .icon { opacity: 1; color: var(--green); }
.feature-toggle input:focus-visible + .feature-chip { outline: 3px solid var(--green); outline-offset: 2px; }

/* Public: amenities */
.amenities { display: grid; gap: clamp(24px, 3vw, 40px); }
.amenity-group h3 { margin: 0 0 .6em; font-size: 1.25rem; }
.amenity-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px 20px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); }
.amenity-list li { display: flex; align-items: center; gap: 12px; font-size: 1.02rem; }
.amenity-list .icon { width: 2rem; height: 2rem; padding: .4rem; border-radius: 50%; color: var(--green); background: color-mix(in srgb, var(--green) 13%, transparent); }

/* Public: location */
.location { display: grid; gap: clamp(20px, 3vw, 40px); grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); align-items: stretch; }
@media (max-width: 860px) { .location { grid-template-columns: minmax(0, 1fr); } }
.location-info .address { display: flex; gap: 12px; align-items: flex-start; font-size: 1.15rem; font-weight: 600; margin: 0 0 .2em; }
.location-info .address .icon { color: var(--red); margin-top: .1em; }
.location-info .region { color: var(--muted); margin: 0 0 1.2em 2.3em; }
.location-info .actions { margin-top: 1.4em; }
.location-info .btn .icon { width: 1.2em; height: 1.2em; vertical-align: -0.2em; margin-right: .4em; }
.map { min-height: clamp(320px, 45vw, 520px); border-radius: var(--radius); overflow: hidden; border: 1px solid var(--line); box-shadow: var(--shadow); background: var(--paper-2); position: relative; }
.map .leaflet-container { font: inherit; }
.map-pin { color: var(--red); filter: drop-shadow(0 3px 4px rgb(0 0 0 / 35%)); }
.map-pin svg { width: 44px; height: 44px; }
.map-logo { margin: 8px; background: rgb(255 255 255 / 85%); border-radius: 6px; padding: 4px 6px; line-height: 0; }
.map-logo img { height: 30px; width: auto; }
.map-fallback { display: grid; place-items: center; height: 100%; min-height: inherit; padding: 24px; text-align: center; color: var(--muted); }

/* Photo lightbox */
.gallery a.zoom { display: block; cursor: zoom-in; }
.lightbox { padding: 0; border: 0; background: transparent; max-width: 100vw; max-height: 100vh; width: 100vw; height: 100vh; }
.lightbox::backdrop { background: rgb(15 10 5 / 92%); }
.lightbox[open] { display: grid; place-items: center; }
.lightbox figure { margin: 0; display: grid; gap: 10px; justify-items: center; pointer-events: none; }
.lightbox img { max-width: min(94vw, 1600px); max-height: 84vh; object-fit: contain; border-radius: 6px; box-shadow: 0 10px 40px rgb(0 0 0 / 50%); pointer-events: auto; }
.lightbox figcaption { display: flex; gap: 16px; color: #f3ead9; font-size: 1.05rem; }
.lightbox .lb-count { opacity: .65; }
.lightbox button { position: fixed; background: rgb(255 255 255 / 12%); color: #fff; border: 0; border-radius: 50%; width: 3rem; height: 3rem; padding: 0; font-size: 2rem; line-height: 1; display: grid; place-items: center; }
.lightbox button:hover { background: rgb(255 255 255 / 25%); }
.lightbox .lb-close { top: 16px; right: 16px; }
.lightbox .lb-prev { left: clamp(8px, 2vw, 32px); top: 50%; transform: translateY(-50%); }
.lightbox .lb-next { right: clamp(8px, 2vw, 32px); top: 50%; transform: translateY(-50%); }
.lightbox.single .lb-prev, .lightbox.single .lb-next { display: none; }
@media (max-width: 640px) { .lightbox .lb-prev, .lightbox .lb-next { top: auto; bottom: 16px; transform: none; } }
.sortable figure { position: relative; }
.photo-tools { position: absolute; top: 8px; left: 8px; right: 8px; z-index: 1; display: flex; gap: 6px; align-items: center; }
.photo-tools .move-form { margin-left: auto; display: flex; gap: 4px; }
.photo-tools button { background: color-mix(in srgb, var(--card) 88%, transparent); }
.drag-handle { cursor: grab; font-size: 1.1rem; line-height: 1; }
.badge.cover { display: none; background: var(--green); color: #fff; }
.sortable figure:first-child .badge.cover { display: inline-block; }
.sortable figure.dragging { opacity: .45; outline: 2px dashed var(--green); }
.sortable figure.drop-target { outline: 2px solid var(--green); outline-offset: 2px; }
dl.gps { display: grid; grid-template-columns: max-content 1fr; gap: 4px 14px; margin: 1em 0 0; font-size: .95rem; }
dl.gps dt { color: var(--muted); }
dl.gps dd { margin: 0; font-variant-numeric: tabular-nums; user-select: all; }
.section-split { margin-top: 1.2em; padding-top: 1em; border-top: 1px solid var(--line); }
.sortable figcaption { flex-wrap: wrap; padding: 10px 12px; }
.sortable .caption-form { flex: 1 1 100%; }
.sortable figcaption > form.inline { margin-left: auto; }

/* Než přijedete: Ceník / Domovní řád / Okolí side by side */
.info-cards { align-items: start; grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr)); }
.info-card { max-width: none; font-size: 1rem; }
.info-card h2 { display: flex; align-items: center; gap: .5em; margin-bottom: .8em; padding-bottom: .5em; border-bottom: 1px solid var(--line); }
.info-card h2 .icon { width: 1.1em; height: 1.1em; color: var(--green); }
.info-card p:has(> strong:only-child) { margin: 1.3em 0 .3em; font-family: var(--serif); color: var(--oak); font-size: 1.12rem; }
.info-card p:has(> strong:only-child) strong { font-weight: 600; }
.info-card h2 + p:has(> strong:only-child) { margin-top: 0; }
.info-card ul { margin: 0; padding-left: 1.1em; display: grid; gap: .25em; }
.info-card li { line-height: 1.5; }

/* Headings inside admin-written text: a clear step below the section title, centred */
.prose h2 { font-size: clamp(1.4rem, 1.15rem + 0.8vw, 1.8rem); margin: 1.8em 0 .5em; }
.prose h3 { font-size: clamp(1.15rem, 1.05rem + 0.3vw, 1.3rem); margin: 1.4em 0 .3em; }
.prose h4 { font-size: 1.05rem; margin: 1.2em 0 .2em; }
.prose.center h2, .prose.center h3, .prose.center h4 { text-align: center; }
.prose.center h2::after { content: ""; display: block; width: min(16rem, 60%); height: 1.5px; margin: .5em auto 0; background: linear-gradient(to right, transparent, var(--red), transparent); opacity: .8; }
.prose > :is(h2, h3):first-child { margin-top: 0; }
.card.info-card h2 { font-size: clamp(1.4rem, 1.15rem + 0.8vw, 1.8rem); margin: 0 0 .8em; text-align: left; }
.card.info-card h2::after { content: none; }


/* Admin: everything at 70 % of the public site's size */
html:has(.admin-main), html:has(.auth) { font-size: calc(clamp(16px, 13.5px + 0.5vw, 21px) * .7); }
.grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); gap: 12px; }
.mail-preview { white-space: pre-wrap; font: inherit; font-size: .9rem; margin: 0; padding: 10px 14px; border: 1px dashed var(--line, rgba(127,127,127,.35)); border-radius: 8px; overflow: auto; }
.day.end.sel, .day.start.sel { outline: 2px solid var(--green); outline-offset: -2px; }
