/* Agnieszka Hock — klasyczny Modern, dostępność v11.
   Jeden arkusz, bez importów, zewnętrznych fontów i zależności.
   Wielkość tekstu jest względna wobec ustawień przeglądarki użytkownika. */
:root {
  color-scheme:light;
  --bg:#f5f7fa;
  --ink:#142643;
  --muted:#43536b;
  --accent:#006b5a;
  --soft:#e8eef3;
  --line:#64748b;
  --panel:#fff;
  --mint:#b6f1dd;
  --error:#a51b16;
  --decorative-line:#cbd6e0;
  --button-bg:#006b5a;
  --button-hover:#005345;
  --button-ink:#fff;
  --contact-bg:#142643;
  --contact-ink:#fff;
}
* { box-sizing:border-box; }
html { scroll-padding-top:1.5rem; }
body {
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font:1.25rem/1.7 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
/* Nie blokujemy powiększania, kierunku ekranu ani przewijania. */
img,svg { max-width:100%; }
img { height:auto; }
a { color:var(--accent); text-underline-offset:.2em; text-decoration-thickness:.08em; }
a:hover { text-decoration-thickness:.15em; }
button,input,select,textarea { font:inherit; }
button,a,input,select,textarea,summary { touch-action:manipulation; }
:focus {
  outline:3px solid #142643;
  outline-offset:4px;
  box-shadow:0 0 0 4px #fff;
}
/* Dwie kontrastowe obwódki działają także na ciemnym tle. */
:focus:not(:focus-visible) { outline:none; box-shadow:none; }
:focus-visible {
  outline:3px solid #142643;
  outline-offset:4px;
  box-shadow:0 0 0 4px #fff;
}
[tabindex="-1"]:focus { outline:3px solid #142643; box-shadow:0 0 0 4px #fff; }
/* Auch die nativen Unterelemente von Datums-/Zeitfeldern sichtbar einfassen. */
.form-panel input:focus-within,
.form-panel select:focus-within,
.form-panel textarea:focus-within {
  outline:3px solid #142643;
  outline-offset:4px;
  box-shadow:0 0 0 4px #fff;
}
[hidden] { display:none!important; }
.wrap { width:min(74rem,calc(100% - 3rem)); margin-inline:auto; }
.wrap>* { min-width:0; }
h1,h2,h3,p,figure { margin:0; }
p { margin-block-end:1.1em; }
h1,h2,h3 { overflow-wrap:anywhere; }
h1 { font-size:clamp(2.5rem,1.5rem + 3.5vw,4.8125rem); line-height:1.12; letter-spacing:-.035em; font-weight:730; }
h2 { font-size:clamp(1.875rem,1.25rem + 2vw,2.8125rem); line-height:1.2; letter-spacing:-.025em; font-weight:730; }
h3 { font-size:1.375rem; line-height:1.35; }
/* Teksty pomocnicze również mają co najmniej 1,125 rem (domyślnie 18 px).
   WCAG nie określa minimalnej czcionki; to nasz dodatkowy wybór czytelności. */
.small,.field-note,figcaption,.eyebrow,.tour-top,.tour-group,.tour-terms,
.admission,.profile-links,.contact-standard,.ticket-note,.footer,.legal-nav {
  font-size:1.125rem;
  line-height:1.65;
}
.small,.field-note,.tour-terms { color:var(--muted); }
.eyebrow { font-weight:650; letter-spacing:.04em; margin-block-end:1.25rem; }
.skip { position:absolute; inset-block-start:.5rem; inset-inline-start:.5rem; transform:translateY(-200%); z-index:10; background:var(--panel); padding:1rem; }
.skip:focus { transform:none; }
.top { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1rem 1.5rem; padding-block:1.5rem; border-block-end:1px solid var(--decorative-line); }
.identity { display:inline-flex; align-items:center; color:var(--ink); text-decoration:none; padding-block:.5rem; max-width:100%; }
.identity>span { font-family:Georgia,"Times New Roman",serif; font-size:1.5rem; line-height:1.3; }
.identity small { display:block; font:1.125rem/1.6 system-ui,sans-serif; margin-block-start:.25rem; }
.top nav { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem 1.25rem; font-size:1.25rem; }
.top nav a { display:inline-flex; align-items:center; justify-content:center; min-height:2.75rem; padding:.5rem .25rem; color:var(--ink); text-decoration:none; }
.top nav a:hover { text-decoration:underline; }
.navbutton { border-block-end:2px solid var(--accent); }
.languages a { gap:.5rem; border:2px solid transparent; border-radius:.25rem; }
.languages a[aria-current="page"] { border-color:var(--ink); font-weight:700; }
.language-flag { width:1.5rem; height:1rem; flex-shrink:0; border:1px solid #64748b; }
.hero { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr); align-items:center; gap:4%; padding-block:4.5rem; }
.hero h1>span { color:var(--accent); }
.lead { font-size:1.25rem; line-height:1.65; margin-block:1.75rem; max-width:30rem; color:var(--muted); }
.hero-buttons { display:flex; flex-wrap:wrap; align-items:center; gap:1rem 1.5rem; }
.button,.secondary { display:inline-flex; align-items:center; justify-content:center; gap:.5rem; min-height:2.75rem; max-width:100%; padding:.85rem 1.2rem; border:2px solid var(--button-bg); border-radius:.375rem; background:var(--button-bg); color:var(--button-ink); text-decoration:none; font-size:1.125rem; font-weight:650; line-height:1.5; text-align:center; cursor:pointer; white-space:normal; overflow-wrap:anywhere; }
.button:hover { background:var(--button-hover); border-color:var(--button-hover); text-decoration:underline; }
.secondary { background:transparent; color:var(--ink); border-color:var(--ink); }
.secondary:hover { background:var(--soft); }
.text-link { display:inline-flex; align-items:center; min-height:2.75rem; padding-block:.5rem; }
.hero-photo { overflow:hidden; border-radius:1rem; background:var(--mint); }
.hero-photo>img { display:block; width:100%; aspect-ratio:1/1; object-fit:cover; object-position:50% 20%; }
.hero-photo>figcaption { padding:1.25rem 1.5rem; display:flex; flex-direction:column; gap:.25rem; }
.guide-name { font:1.6875rem/1.3 Georgia,"Times New Roman",serif; }
.guide-role { font-size:1.125rem; }
.facts { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1rem; padding-block:0 2rem; }
.facts>div { display:flex; flex-wrap:wrap; align-items:center; gap:.75rem; background:var(--panel); border:1px solid var(--decorative-line); padding:1.25rem; border-radius:.6rem; }
.facts strong { font-size:1.75rem; line-height:1.25; }
.facts>div:last-child strong { font-size:1.25rem; }
.facts span { font-size:1.125rem; color:var(--muted); line-height:1.6; }
.section { padding-block:4.5rem; }
.section-title { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); align-items:end; gap:3rem; margin-block-end:2.5rem; }
.section-title>p { margin:0; color:var(--muted); }
.partner { background:var(--soft); }
.benefits { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:2.25rem; }
.benefits article { border-block-start:3px solid var(--accent); padding-block-start:1.5rem; }
.benefits article>span { font-size:1.125rem; color:var(--accent); font-weight:650; }
.benefits h3 { margin-block:1rem .75rem; }
.benefits p { color:var(--muted); margin:0; }
.play-icon { width:1.5rem; height:1.5rem; flex:0 0 1.5rem; color:var(--accent); vertical-align:middle; }
.benefits article>span,.tour-top>span:first-child { display:inline-flex; align-items:center; gap:.5rem; }
.city-prose { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:2rem; }
.city-prose p { margin:0; }
.tour-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.5rem; }
.tour-card { display:flex; flex-direction:column; min-width:0; padding:2rem; background:var(--panel); border:1px solid var(--decorative-line); border-radius:.75rem; }
.tour-top { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:start; gap:.75rem; color:var(--muted); }
.tour-top span:last-child { color:var(--accent); font-weight:650; }
.tour-card h3 { font-size:1.8125rem; line-height:1.25; margin-block:1.5rem 1.25rem; }
.tour-card h3 small { display:inline; font-size:1.125rem; font-weight:500; color:var(--muted); }
.tour-card>p { color:var(--muted); margin-block-end:1rem; }
.tour-group { margin-block-start:auto; padding-block-start:1.25rem; color:var(--muted); }
.tour-card .admission { color:var(--ink); margin-block:1rem 0; }
.tour-card>a { display:flex; align-items:center; min-height:2.75rem; margin-block-start:1.5rem; padding-block:1rem .5rem; border-block-start:1px solid var(--decorative-line); font-weight:650; }
.ticket-link { white-space:normal; }
.custom-tour { background:var(--mint); border-color:var(--decorative-line); }
.tour-price { display:flex; flex-direction:column; gap:.5rem; margin-block-start:auto; padding-block-start:1.25rem; }
.tour-price strong { font-size:1.75rem; line-height:1.3; }
.tour-price span { font-size:1.125rem; color:var(--muted); }
.tour-terms { margin-block:1.5rem 0; max-width:60rem; }
.about { display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1fr); gap:8%; align-items:center; }
.about h2 { font-family:Georgia,"Times New Roman",serif; font-weight:400; margin-block-end:1.5rem; }
.about>div>p:not(.eyebrow) { color:var(--muted); }
.photo-portrait { margin:0; border-radius:1rem; overflow:hidden; }
.photo-portrait>img { display:block; width:100%; aspect-ratio:4/5; object-fit:cover; object-position:45% 40%; }
.photo-portrait figcaption { position:static; background:var(--contact-bg); color:var(--contact-ink); padding:1rem 1.25rem; }
.profile-links { display:flex; flex-direction:column; align-items:start; gap:.75rem; margin-block-start:1.5rem; }
.profile-links a { display:inline-flex; align-items:center; min-height:2.75rem; }
.contact-section { background:var(--contact-bg); color:var(--contact-ink); }
.contact-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.1fr); gap:6%; align-items:start; }
.contact-copy>p { margin-block-start:1.5rem; }
.contact-copy a { color:var(--contact-ink); }
.contact-copy .small { color:var(--contact-ink); }
.email,.phone { display:block; overflow-wrap:anywhere; min-height:2.75rem; padding-block:.5rem; font-size:1.125rem; }
.email { margin-block-start:1rem; }
.contact-standard { margin-block-start:2rem; padding-block-start:1.25rem; border-block-start:1px solid #9aa9bb; display:flex; flex-direction:column; gap:.5rem; }
.form-panel { min-width:0; background:var(--bg); color:var(--ink); padding:1.75rem; border-radius:.75rem; }
.form-panel label { display:block; font-size:1.125rem; font-weight:650; margin-block:1.25rem .5rem; }
.form-panel input,.form-panel select,.form-panel textarea { display:block; width:100%; min-width:0; min-height:2.75rem; padding:.75rem; border:2px solid var(--line); border-radius:.25rem; background:var(--panel); color:var(--ink); font-size:1.125rem; line-height:1.5; }
.form-panel textarea { resize:vertical; }
.form-panel select { text-overflow:ellipsis; }
.form-panel ::placeholder { color:var(--muted); opacity:1; }
.field-row { display:grid; grid-template-columns:1fr; gap:0; }
.field-note { margin-block:.5rem .75rem; }
.form-panel .button { margin-block:1.5rem 1rem; width:100%; }
.error,.field-error { color:var(--error); font-size:1.125rem; font-weight:650; }
.error-summary { border:3px solid var(--error); padding:1.25rem; margin-block:1.5rem; }
.error-summary h3 { font-size:1.25rem; }
.error-summary ul { margin-block:.75rem 0; padding-inline-start:1.5rem; }
.error-summary a { color:var(--error); }
.field-error { margin-block:.5rem 0; }
[aria-invalid="true"] { border-color:var(--error)!important; }
.preview { margin-block-start:1.5rem; padding-block-start:1.5rem; border-block-start:2px solid var(--line); }
.preview h3 { margin-block-end:1rem; }
.preview-actions { display:flex; flex-wrap:wrap; gap:1rem; align-items:center; margin-block:1rem; }
.preview-actions .button { width:auto; margin:0; }
.faq { max-width:54rem; }
.faq h2 { margin-block-end:2rem; }
details { padding-block:1.25rem; border-block-end:1px solid var(--line); }
summary { min-height:2.75rem; padding-block:.5rem; cursor:pointer; font-weight:650; }
details p { color:var(--muted); margin-block:1rem 0; }
.ticket-section { padding-block-end:4rem; }
.ticket-note { background:var(--soft); border-radius:.75rem; padding:1.5rem; }
.ticket-note h2 { font-size:1.375rem; letter-spacing:normal; margin-block-end:1rem; }
.ticket-note p { max-width:60rem; }
.ticket-note a { display:inline-flex; min-height:2.75rem; align-items:center; }
.footer { display:flex; flex-wrap:wrap; justify-content:space-between; gap:1.5rem; padding-block:2rem; border-block-start:1px solid var(--decorative-line); }
.footer>div { display:flex; flex-direction:column; gap:.5rem; }
.footer span { color:var(--muted); }
.footer nav { display:flex; flex-wrap:wrap; gap:1rem 1.5rem; }
.footer nav a { display:inline-flex; min-height:2.75rem; align-items:center; }
.legal { max-width:54rem; padding-block:2.5rem; }
.legal h1 { margin-block:2rem; }
.legal h2 { font-size:1.5625rem; margin-block:2rem 1rem; }
.legal p,.legal li { overflow-wrap:anywhere; }
.legal-nav { display:flex; flex-wrap:wrap; justify-content:space-between; gap:1rem; }
.legal-nav a { display:inline-flex; min-height:2.75rem; align-items:center; }
.notice { border:2px solid #8a3d13; background:#fff1d9; color:#67391e; padding:1.25rem; margin-block-end:2rem; }
/* Zmiana układu zależy od dostępnej szerokości, również przy dużym zoomie. */
@media(max-width:68rem) {
  .top nav:not(.languages) { width:100%; }
  .facts { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .benefits { grid-template-columns:1fr; }
  .contact-grid { grid-template-columns:1fr; gap:2.5rem; }
  .contact-copy { max-width:44rem; }
}
@media(max-width:52rem) {
  .hero,.section-title,.about,.city-prose,.tour-grid { grid-template-columns:1fr; gap:2rem; }
  .hero { padding-block:2.5rem; }
  .section { padding-block:3rem; }
  .hero-photo>img { aspect-ratio:4/3; object-position:center; }
  .about .photo-portrait { max-width:30rem; }
}
@media(max-width:30rem) {
  .wrap { width:calc(100% - 2rem); }
  .top { align-items:start; }
  .top nav { gap:.5rem .75rem; }
  .languages { width:100%; }
  .facts { grid-template-columns:1fr; }
  .facts>div { align-items:start; }
  .tour-card,.form-panel,.ticket-note { padding:1.25rem; }
    .button,.secondary { padding-inline:.75rem; }
}
@media(prefers-reduced-motion:reduce) {
  *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
}
@media(forced-colors:active) {
  .button,.secondary,input,select,textarea,.languages a[aria-current="page"] { border:2px solid ButtonText; }
  :focus,:focus-visible,[tabindex="-1"]:focus { outline:3px solid Highlight; box-shadow:none; }
  .form-panel input:focus-within,.form-panel select:focus-within,.form-panel textarea:focus-within { outline:3px solid Highlight; box-shadow:none; }
  [aria-invalid="true"] { border:3px dashed CanvasText!important; }
}
@media print {
  body { color:#000; background:var(--panel); }
  .top nav,.skip,.preview-actions { display:none; }
  .wrap { width:100%; }
  .section { padding-block:1.5rem; }
  .contact-section { background:var(--panel); color:#000; }
  .contact-copy a,.contact-copy .small { color:#000; }
  .form-panel { border:1px solid #000; }
}

/* Dostępne warianty kolorów. Automatyczny respektuje ustawienie urządzenia. */
.appearance { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem; font-size:1.125rem; }
.appearance label { font-weight:650; }
.appearance select { max-width:100%; min-height:2.75rem; padding:.5rem; border:2px solid var(--line); border-radius:.25rem; background:var(--panel); color:var(--ink); font-size:1.125rem; }
.legal .appearance { margin-block:1rem; }
:root[data-theme="dark"] {
  color-scheme:dark;
  --bg:#101a2a; --ink:#f2f5fa; --muted:#c2cfdf;
  --accent:#82dbc4; --soft:#1a2b3e; --panel:#18263a;
  --line:#a6b7c9; --mint:#153f39; --error:#ffb5ad;
  --decorative-line:#6e8298;
  --button-bg:#82dbc4; --button-hover:#a3e9d7; --button-ink:#10251f;
  --contact-bg:#0a1220; --contact-ink:#f2f5fa;
}
@media(prefers-color-scheme:dark) {
  :root:not([data-theme]) {
    color-scheme:dark;
    --bg:#101a2a; --ink:#f2f5fa; --muted:#c2cfdf;
    --accent:#82dbc4; --soft:#1a2b3e; --panel:#18263a;
    --line:#a6b7c9; --mint:#153f39; --error:#ffb5ad;
    --decorative-line:#6e8298;
    --button-bg:#82dbc4; --button-hover:#a3e9d7; --button-ink:#10251f;
    --contact-bg:#0a1220; --contact-ink:#f2f5fa;
  }
}
:root[data-theme="contrast"] {
  color-scheme:dark;
  --bg:#000; --ink:#fff; --muted:#fff; --accent:#ffea00;
  --soft:#000; --panel:#000; --line:#fff; --mint:#000;
  --error:#ffb5ad; --decorative-line:#fff;
  --button-bg:#ffea00; --button-hover:#fff; --button-ink:#000;
  --contact-bg:#000; --contact-ink:#fff;
}
@media(prefers-contrast:more) {
  a { text-decoration-thickness:.12em; }
  .tour-card,.facts>div,.form-panel,.hero-photo { border:2px solid var(--line); }
}
@media print {
  .appearance { display:none; }
  :root,:root[data-theme],:root:not([data-theme]) { color-scheme:light; --bg:#fff; --panel:#fff; --ink:#000; --muted:#000; --accent:#000; --soft:#fff; --mint:#fff; --contact-bg:#fff; --contact-ink:#000; }
}

/* Dodatkowa, natywna mapa strony bez skryptu – drugi sposób nawigacji. */
.site-map { flex-basis:100%; padding-block:1rem; }
.site-map nav { display:block; }
.site-map ul { margin-block:.75rem 0; padding-inline-start:1.25rem; }
.site-map li { padding-block:.25rem; }
.site-map a[aria-current="page"] { font-weight:700; }

/* Dwie duże panoramy: identyczne proporcje i szerokości kafelków.
   Pliki źródłowe nie są retuszowane; kadrowanie odbywa się tylko w CSS. */
.city-gallery {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1.5rem;
  margin-block:0 2.5rem;
}
.city-gallery figure {
  min-width:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  border:1px solid var(--decorative-line);
  border-radius:.75rem;
  background:var(--panel);
}
.city-gallery img {
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:3/2;
  object-fit:cover;
}
.city-gallery .panorama-crop { object-position:50% 68%; }
.city-gallery .altstadt-crop { object-position:50% 58%; }
.city-gallery figcaption {
  flex:1;
  margin:0;
  padding:1rem;
  font-size:1.125rem;
  line-height:1.6;
  color:var(--muted);
}
@media(max-width:44rem) {
  .city-gallery { grid-template-columns:1fr; }
}

/* Falkenhaus pozostaje osobnym, dużym zdjęciem w części o mieście. */
.falkenhaus-photo { margin-block-start:2rem; }
.falkenhaus-photo img { display:block; width:100%; height:auto; border-radius:.75rem; }
.falkenhaus-photo figcaption { color:var(--muted); margin-block-start:.75rem; }
