Karty HTML konceptów: gen_pages.py + katalog pages/
Graf pokazywał strukturę, ale treść (ceny, dostępność, plusy/minusy)
siedziała tylko w panelu szczegółów viewera. gen_pages.py renderuje każdy
koncept do pages/<id>.html: metadane frontmattera jako tabelka (wszystkie
pola, też polskie rozszerzenia), body poniżej, plus pages/index.html
z listą kart.
Renderer: python-markdown, jeśli jest w systemie; tutaj go nie ma, więc
działa fallback na samej bibliotece standardowej (nagłówki, akapity,
tabele GFM, listy z - [ ], cytaty, kod, hr, inline bold/kursywa/kod/linki).
Linki miedzy konceptami przepisane na względne <id>.html, linki
zewnętrzne bez zmian. Pliki zarezerwowane (index.md, log.md) nie są
konceptami (§3.1) i nie mają kart — linki do nich prowadzą do listy kart.
Pliki .md nietknięte.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 18:46:08 +02:00
<!doctype html>
< html lang = "pl" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
< title > Skicircus Saalbach-Hinterglemm-Leogang-Fieberbrunn — Ski 2027 — Skicircus Saalbach< / title >
< style >
:root { color-scheme: light dark; --fg:#0f172a; --muted:#64748b; --bg:#ffffff;
--line:#e2e8f0; --accent:#0d9488; --chip:#f1f5f9; --quote:#f8fafc; }
@media (prefers-color-scheme: dark) {
:root { --fg:#e2e8f0; --muted:#94a3b8; --bg:#0f172a; --line:#334155;
--accent:#2dd4bf; --chip:#1e293b; --quote:#1e293b; }
}
* { box-sizing: border-box; }
body { margin: 0 auto; padding: 1.25rem 1rem 4rem; max-width: 46rem;
font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
font-size: 17px; line-height: 1.55; color: var(--fg); background: var(--bg);
-webkit-text-size-adjust: 100%; }
nav { font-size: .85rem; margin-bottom: 1.25rem; }
nav a { color: var(--muted); }
h1 { font-size: 1.55rem; line-height: 1.25; margin: 0 0 .35rem; }
h2 { font-size: 1.2rem; margin: 2rem 0 .5rem; padding-top: .5rem;
border-top: 1px solid var(--line); }
h3 { font-size: 1.02rem; margin: 1.4rem 0 .4rem; }
p, ul, ol { margin: .6rem 0; }
ul, ol { padding-left: 1.3rem; }
li { margin: .25rem 0; }
li.task { list-style: none; margin-left: -1.3rem; }
li.task input { margin-right: .45rem; }
a { color: var(--accent); }
a.ext::after { content: " ↗"; font-size: .8em; color: var(--muted); }
code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .88em;
background: var(--chip); padding: .1em .35em; border-radius: 4px; }
pre { background: var(--chip); padding: .75rem; border-radius: 6px; overflow-x: auto; }
pre code { background: none; padding: 0; }
blockquote { margin: .9rem 0; padding: .6rem .9rem; background: var(--quote);
border-left: 3px solid var(--accent); border-radius: 0 6px 6px 0; }
blockquote p { margin: .2rem 0; }
hr { border: 0; border-top: 1px solid var(--line); margin: 1.5rem 0; }
.table-wrap { overflow-x: auto; margin: .8rem 0; -webkit-overflow-scrolling: touch; }
table { border-collapse: collapse; width: 100%; font-size: .92rem; }
th, td { border: 1px solid var(--line); padding: .4rem .55rem; vertical-align: top; }
th { background: var(--chip); font-weight: 600; }
.chip { display: inline-block; background: var(--chip); color: var(--muted);
font-size: .72rem; text-transform: uppercase; letter-spacing: .04em;
padding: .15rem .5rem; border-radius: 999px; }
.lead { color: var(--muted); margin: .35rem 0 1.25rem; }
.meta { margin: 0 0 1.5rem; }
.meta summary { cursor: pointer; font-size: .85rem; color: var(--muted);
padding: .3rem 0; }
.meta table { font-size: .85rem; }
.meta th { width: 38%; text-align: left; font-weight: 500; word-break: break-word; }
.cards { list-style: none; padding: 0; margin: 0; }
.cards li { border: 1px solid var(--line); border-radius: 8px; padding: .8rem .9rem;
margin: .6rem 0; }
.cards a { font-weight: 600; text-decoration: none; }
.cards p { margin: .3rem 0 0; font-size: .9rem; color: var(--muted); }
footer { margin-top: 3rem; padding-top: 1rem; border-top: 1px solid var(--line);
font-size: .78rem; color: var(--muted); }
Przeprojektowanie pod decyzję: start.html, porownanie.html, galerie
Wejściem jest teraz landing pages/start.html (trzy kafle: porównanie ofert,
analiza wariantów, graf + kafle czterech regionów ze zdjęciem najlepszej
oferty w tle), a graf schodzi do roli załącznika. start.html linkuje
root-absolutnie, bo ten sam plik jest serwowany jako /index.html i jako
/pages/start.html.
pages/porownanie.html: jedna tabela wszystkich 12 ofert prosto z
frontmatterów (miniatura, priorytet, region, ceny, status, odległość, www),
sortowanie klikiem w nagłówek (czysty JS, bez zależności), wiersze barwione
statusem ceny. Nad tabelą podsumowanie per region — budżet całkowity i jeden
wniosek parsowane z tabeli i „Wniosków przekrojowych” w wyjazd.md, bez
zaszywania nazw regionów w kodzie.
Karty ofert dostały galerię (duże zdjęcie + miniatury, lazy loading),
a nawigacja na każdej stronie prowadzi do startu i porównania.
Komenda deployu (kopiuje start.html jako /content/index.html) jest
wypisywana przez gen_pages.py. Pliki .md bez zmian, check_okf zielony.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 17:24:25 +02:00
/* landing: kafle i lista regionów */
body.wide { max-width: 72rem; }
.tiles, .regions { list-style: none; padding: 0; }
.tiles { margin: 1.25rem 0 2rem; display: grid; gap: .75rem; }
.regions { margin: .6rem 0 0; display: grid; gap: .5rem; }
@media (min-width: 34rem) {
2026-08-03 17:41:16 +02:00
.tiles { grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); }
Przeprojektowanie pod decyzję: start.html, porownanie.html, galerie
Wejściem jest teraz landing pages/start.html (trzy kafle: porównanie ofert,
analiza wariantów, graf + kafle czterech regionów ze zdjęciem najlepszej
oferty w tle), a graf schodzi do roli załącznika. start.html linkuje
root-absolutnie, bo ten sam plik jest serwowany jako /index.html i jako
/pages/start.html.
pages/porownanie.html: jedna tabela wszystkich 12 ofert prosto z
frontmatterów (miniatura, priorytet, region, ceny, status, odległość, www),
sortowanie klikiem w nagłówek (czysty JS, bez zależności), wiersze barwione
statusem ceny. Nad tabelą podsumowanie per region — budżet całkowity i jeden
wniosek parsowane z tabeli i „Wniosków przekrojowych” w wyjazd.md, bez
zaszywania nazw regionów w kodzie.
Karty ofert dostały galerię (duże zdjęcie + miniatury, lazy loading),
a nawigacja na każdej stronie prowadzi do startu i porównania.
Komenda deployu (kopiuje start.html jako /content/index.html) jest
wypisywana przez gen_pages.py. Pliki .md bez zmian, check_okf zielony.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 17:24:25 +02:00
.regions { grid-template-columns: repeat(2, 1fr); }
}
.tiles a, .regions a { display: block; border: 1px solid var(--line); border-radius: 10px;
padding: .9rem 1rem; text-decoration: none; color: var(--fg); }
.tiles a { font-size: 1.05rem; font-weight: 600; }
.tiles a:hover, .tiles a:focus, .regions a:hover, .regions a:focus {
border-color: var(--accent); }
.tiles small, .regions small { display: block; margin-top: .3rem; font-weight: 400;
font-size: .85rem; color: var(--muted); }
.regions a { font-weight: 600; }
/* podsumowanie per region na karcie porównania */
.summary { list-style: none; padding: 0; margin: .8rem 0 2rem; display: grid; gap: .6rem; }
@media (min-width: 48rem) { .summary { grid-template-columns: repeat(2, 1fr); } }
.summary li { border: 1px solid var(--line); border-left: 3px solid var(--accent);
border-radius: 8px; padding: .65rem .85rem; }
.summary .budget { font-size: .95rem; }
.summary p { margin: .35rem 0 0; font-size: .88rem; color: var(--muted); }
/* tabela porównawcza: sortowanie klikiem + kolor statusu ceny */
table.sortable th { cursor: pointer; user-select: none; white-space: nowrap; }
table.sortable th::after { content: " ↕"; font-size: .8em; opacity: .35; }
table.sortable th[data-dir="asc"]::after { content: " ↑"; opacity: 1; }
table.sortable th[data-dir="desc"]::after { content: " ↓"; opacity: 1; }
table.sortable td { font-size: .88rem; padding: .35rem .5rem; }
table.sortable td[data-num] { white-space: nowrap; }
table.sortable .name { font-weight: 600; }
tr.verified td { background: rgba(13, 148, 136, .14); }
tr.estimate td { background: rgba(100, 116, 139, .10); color: var(--muted); }
tr.estimate td.name a, tr.verified td.name a { color: var(--accent); }
.legend { font-size: .82rem; color: var(--muted); margin: .5rem 0 0; }
.legend .box { display: inline-block; width: .8em; height: .8em; border-radius: 3px;
border: 1px solid var(--line); vertical-align: -.05em; margin-right: .25em; }
.legend .box.v { background: rgba(13, 148, 136, .35); }
.legend .box.e { background: rgba(100, 116, 139, .25); }
/* miniatury w tabeli */
td.thumb { padding: .25rem; width: 128px; }
td.thumb img { width: 120px; height: 80px; object-fit: cover; border-radius: 6px;
display: block; }
td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius: 6px;
align-items: center; justify-content: center; background: var(--chip);
color: var(--muted); font-weight: 700; letter-spacing: .05em;
text-decoration: none; }
/* galeria na karcie oferty */
.gallery { margin: 0 0 1.25rem; }
.gallery-main img { width: 100%; max-height: 24rem; object-fit: cover;
border-radius: 10px; display: block; background: var(--chip); }
.gallery-thumbs { display: flex; gap: .4rem; margin-top: .4rem; overflow-x: auto;
-webkit-overflow-scrolling: touch; padding-bottom: .2rem; }
.gallery-thumbs button { flex: 0 0 auto; padding: 0; border: 2px solid transparent;
border-radius: 6px; background: none; cursor: pointer; }
.gallery-thumbs button[aria-current] { border-color: var(--accent); }
.gallery-thumbs img { width: 5.5rem; height: 3.6rem; object-fit: cover;
border-radius: 4px; display: block; }
2026-08-03 17:37:14 +02:00
/* spis linków do kopiowania */
.copybar { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center;
margin: 1rem 0 1.5rem; }
.copybar button { font: inherit; font-size: .9rem; padding: .45rem .9rem;
border: 1px solid var(--accent); border-radius: 8px;
background: var(--accent); color: #f8fafc; cursor: pointer; }
.copybar button + button { background: none; color: var(--accent); }
.copybar button:hover { filter: brightness(1.08); }
.copy-status { font-size: .85rem; color: var(--muted); }
.links { list-style: none; padding: 0; margin: .5rem 0 0; }
.links li { padding: .55rem 0; border-bottom: 1px solid var(--line); }
.links li:last-child { border-bottom: 0; }
.links a { font-weight: 600; text-decoration: none; }
.links code.url { display: block; margin: .2rem 0; font-size: .82rem;
background: none; padding: 0; color: var(--muted);
word-break: break-all; user-select: all; }
.links p { margin: 0; font-size: .85rem; color: var(--muted); }
Przeprojektowanie pod decyzję: start.html, porownanie.html, galerie
Wejściem jest teraz landing pages/start.html (trzy kafle: porównanie ofert,
analiza wariantów, graf + kafle czterech regionów ze zdjęciem najlepszej
oferty w tle), a graf schodzi do roli załącznika. start.html linkuje
root-absolutnie, bo ten sam plik jest serwowany jako /index.html i jako
/pages/start.html.
pages/porownanie.html: jedna tabela wszystkich 12 ofert prosto z
frontmatterów (miniatura, priorytet, region, ceny, status, odległość, www),
sortowanie klikiem w nagłówek (czysty JS, bez zależności), wiersze barwione
statusem ceny. Nad tabelą podsumowanie per region — budżet całkowity i jeden
wniosek parsowane z tabeli i „Wniosków przekrojowych” w wyjazd.md, bez
zaszywania nazw regionów w kodzie.
Karty ofert dostały galerię (duże zdjęcie + miniatury, lazy loading),
a nawigacja na każdej stronie prowadzi do startu i porównania.
Komenda deployu (kopiuje start.html jako /content/index.html) jest
wypisywana przez gen_pages.py. Pliki .md bez zmian, check_okf zielony.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 17:24:25 +02:00
/* kafel regionu ze zdjęciem w tle */
.regions a.hero { background-size: cover; background-position: center;
border-color: transparent; color: #f8fafc; min-height: 6.5rem;
display: flex; flex-direction: column; justify-content: flex-end; }
.regions a.hero small { color: #e2e8f0; }
Karty HTML konceptów: gen_pages.py + katalog pages/
Graf pokazywał strukturę, ale treść (ceny, dostępność, plusy/minusy)
siedziała tylko w panelu szczegółów viewera. gen_pages.py renderuje każdy
koncept do pages/<id>.html: metadane frontmattera jako tabelka (wszystkie
pola, też polskie rozszerzenia), body poniżej, plus pages/index.html
z listą kart.
Renderer: python-markdown, jeśli jest w systemie; tutaj go nie ma, więc
działa fallback na samej bibliotece standardowej (nagłówki, akapity,
tabele GFM, listy z - [ ], cytaty, kod, hr, inline bold/kursywa/kod/linki).
Linki miedzy konceptami przepisane na względne <id>.html, linki
zewnętrzne bez zmian. Pliki zarezerwowane (index.md, log.md) nie są
konceptami (§3.1) i nie mają kart — linki do nich prowadzą do listy kart.
Pliki .md nietknięte.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 18:46:08 +02:00
< / style >
< / head >
< body >
2026-08-04 09:47:58 +02:00
< nav > < a href = "../start.html" > ← Start< / a > · < a href = "../index.html" > Wszystkie karty< / a > · < a href = "../porownanie.html" > Porównanie ofert< / a > · < a href = "../linki.html" > Linki< / a > · < a href = "../../viz.html" > Graf< / a > < / nav >
Karty HTML konceptów: gen_pages.py + katalog pages/
Graf pokazywał strukturę, ale treść (ceny, dostępność, plusy/minusy)
siedziała tylko w panelu szczegółów viewera. gen_pages.py renderuje każdy
koncept do pages/<id>.html: metadane frontmattera jako tabelka (wszystkie
pola, też polskie rozszerzenia), body poniżej, plus pages/index.html
z listą kart.
Renderer: python-markdown, jeśli jest w systemie; tutaj go nie ma, więc
działa fallback na samej bibliotece standardowej (nagłówki, akapity,
tabele GFM, listy z - [ ], cytaty, kod, hr, inline bold/kursywa/kod/linki).
Linki miedzy konceptami przepisane na względne <id>.html, linki
zewnętrzne bez zmian. Pliki zarezerwowane (index.md, log.md) nie są
konceptami (§3.1) i nie mają kart — linki do nich prowadzą do listy kart.
Pliki .md nietknięte.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 18:46:08 +02:00
< span class = "chip" > region< / span >
< h1 > Skicircus Saalbach — informacje o regionie< / h1 >
< p class = "lead" > Wszystko poza noclegiem: teren narciarski, skipassy ALPIN CARD, dojazd z Warszawy, analiza terminów, koszty życia i budżet całkowity grupy.< / p >
Przeprojektowanie pod decyzję: start.html, porownanie.html, galerie
Wejściem jest teraz landing pages/start.html (trzy kafle: porównanie ofert,
analiza wariantów, graf + kafle czterech regionów ze zdjęciem najlepszej
oferty w tle), a graf schodzi do roli załącznika. start.html linkuje
root-absolutnie, bo ten sam plik jest serwowany jako /index.html i jako
/pages/start.html.
pages/porownanie.html: jedna tabela wszystkich 12 ofert prosto z
frontmatterów (miniatura, priorytet, region, ceny, status, odległość, www),
sortowanie klikiem w nagłówek (czysty JS, bez zależności), wiersze barwione
statusem ceny. Nad tabelą podsumowanie per region — budżet całkowity i jeden
wniosek parsowane z tabeli i „Wniosków przekrojowych” w wyjazd.md, bez
zaszywania nazw regionów w kodzie.
Karty ofert dostały galerię (duże zdjęcie + miniatury, lazy loading),
a nawigacja na każdej stronie prowadzi do startu i porównania.
Komenda deployu (kopiuje start.html jako /content/index.html) jest
wypisywana przez gen_pages.py. Pliki .md bez zmian, check_okf zielony.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 17:24:25 +02:00
Karty HTML konceptów: gen_pages.py + katalog pages/
Graf pokazywał strukturę, ale treść (ceny, dostępność, plusy/minusy)
siedziała tylko w panelu szczegółów viewera. gen_pages.py renderuje każdy
koncept do pages/<id>.html: metadane frontmattera jako tabelka (wszystkie
pola, też polskie rozszerzenia), body poniżej, plus pages/index.html
z listą kart.
Renderer: python-markdown, jeśli jest w systemie; tutaj go nie ma, więc
działa fallback na samej bibliotece standardowej (nagłówki, akapity,
tabele GFM, listy z - [ ], cytaty, kod, hr, inline bold/kursywa/kod/linki).
Linki miedzy konceptami przepisane na względne <id>.html, linki
zewnętrzne bez zmian. Pliki zarezerwowane (index.md, log.md) nie są
konceptami (§3.1) i nie mają kart — linki do nich prowadzą do listy kart.
Pliki .md nietknięte.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 18:46:08 +02:00
< details class = "meta" open > < summary > Metadane (frontmatter)< / summary > < div class = "table-wrap" > < table > < tbody > < tr > < th > type< / th > < td > region< / td > < / tr > < tr > < th > title< / th > < td > Skicircus Saalbach-Hinterglemm-Leogang-Fieberbrunn< / td > < / tr > < tr > < th > description< / th > < td > Wszystko poza noclegiem: teren narciarski, skipassy ALPIN CARD, dojazd z Warszawy, analiza terminów, koszty życia i budżet całkowity grupy.< / td > < / tr > < tr > < th > timestamp< / th > < td > 2026-07-31T00:00:00Z< / td > < / tr > < tr > < th > tags< / th > < td > region, saalbach, skipass, logistyka< / td > < / tr > < tr > < th > id< / th > < td > skicircus-saalbach< / td > < / tr > < tr > < th > nazwa< / th > < td > Skicircus Saalbach-Hinterglemm-Leogang-Fieberbrunn< / td > < / tr > < tr > < th > kraj< / th > < td > Austria< / td > < / tr > < tr > < th > region< / th > < td > Salzburg (Pinzgau)< / td > < / tr > < tr > < th > sezon< / th > < td > 2026/2027< / td > < / tr > < tr > < th > grupa< / th > < td > 4 rodziny: 2× (2+2 nastolatki) + 2× (2+1 dziecko) = 14 osób< / td > < / tr > < tr > < th > wyjazd_z< / th > < td > Warszawa< / td > < / tr > < tr > < th > rekomendowany_termin< / th > < td > 16– 23.01.2027 (alternatywa: 9– 16.01.2027)< / td > < / tr > < tr > < th > ostatnia_aktualizacja< / th > < td > 2026-07-31< / td > < / tr > < / tbody > < / table > < / div > < / details >
2026-08-04 09:47:58 +02:00
< p > Baza wiedzy wyjazdu narciarskiego zimą 2026/27. Ten dokument zbiera wszystko, co < strong > nie dotyczy konkretnego noclegu< / strong > : teren narciarski, skipassy, dojazd, terminy, koszty życia i logistykę grupy. Oferty noclegowe → katalog < a href = "../index.html" > < code > saalbach/oferty/< / code > < / a > .< / p >
Karty HTML konceptów: gen_pages.py + katalog pages/
Graf pokazywał strukturę, ale treść (ceny, dostępność, plusy/minusy)
siedziała tylko w panelu szczegółów viewera. gen_pages.py renderuje każdy
koncept do pages/<id>.html: metadane frontmattera jako tabelka (wszystkie
pola, też polskie rozszerzenia), body poniżej, plus pages/index.html
z listą kart.
Renderer: python-markdown, jeśli jest w systemie; tutaj go nie ma, więc
działa fallback na samej bibliotece standardowej (nagłówki, akapity,
tabele GFM, listy z - [ ], cytaty, kod, hr, inline bold/kursywa/kod/linki).
Linki miedzy konceptami przepisane na względne <id>.html, linki
zewnętrzne bez zmian. Pliki zarezerwowane (index.md, log.md) nie są
konceptami (§3.1) i nie mają kart — linki do nich prowadzą do listy kart.
Pliki .md nietknięte.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 18:46:08 +02:00
< h2 > Dlaczego ten region< / h2 >
< ul > < li > < strong > 270 km połączonych tras< / strong > — największy w pełni połączony teren w Salzburgu, klimat "wielkiej karuzeli" najbliższy Sella Rondzie (którą grupa zna i lubi, ale była tam już 2× ).< / li > < li > Objazdowa pętla < strong > "Skicircus challenge"< / strong > — całodzienna runda po całym terenie, atrakcyjna dla nastolatków (odpowiednik pętli Sella Ronda).< / li > < li > Snowparki (Nightpark Hinterglemm, Learn-to-Ride Leogang), junior race'y.< / li > < li > < strong > Najkrótszy dojazd z Warszawy< / strong > spośród rozważanych dużych ośrodków (~950 km; dla porównania: Sella Ronda ~1 100 km, Livigno ~1 250 km).< / li > < / ul >
< h2 > Skipass — ALPIN CARD< / h2 >
< p > Karnet < strong > Ski ALPIN CARD< / strong > obejmuje: Skicircus Saalbach-Hinterglemm-Leogang- Fieberbrunn + Schmittenhöhe (Zell am See) + lodowiec Kitzsteinhorn (Kaprun). Istotne: gondola zellamseeXpress w Viehhofen też jest na tym karnecie.< / p >
< div class = "table-wrap" > < table > < thead > < tr > < th style = "text-align:left" > Taryfa 6 dni< / th > < th style = "text-align:left" > Cena 2025/26 (orient.)< / th > < th style = "text-align:left" > Prognoza 2026/27 (+3– 5%)< / th > < / tr > < / thead > < tbody > < tr > < td style = "text-align:left" > Dorosły< / td > < td style = "text-align:left" > ~430– 450 €< / td > < td style = "text-align:left" > ~445– 470 €< / td > < / tr > < tr > < td style = "text-align:left" > Młodzież (do 18 lat)< / td > < td style = "text-align:left" > ~ -25% od ceny dorosłego< / td > < td style = "text-align:left" > ~335– 355 €< / td > < / tr > < tr > < td style = "text-align:left" > Dziecko (do ~15 lat)< / td > < td style = "text-align:left" > ~ -50%< / td > < td style = "text-align:left" > ~225– 235 €< / td > < / tr > < / tbody > < / table > < / div >
< p > < strong > Szacunkowy koszt skipassów dla grupy 14 os.< / strong > (8 dorosłych + 4 nastolatków< / p >
< ul > < li > 2 dzieci, 6 dni): < strong > ~4 900– 5 400 €< / strong > łącznie, czyli:< / li > < / ul >
< div class = "table-wrap" > < table > < thead > < tr > < th style = "text-align:left" > Rodzina< / th > < th style = "text-align:left" > Skład< / th > < th style = "text-align:left" > Skipassy 6 dni< / th > < / tr > < / thead > < tbody > < tr > < td style = "text-align:left" > 2+2 (nastolatki)< / td > < td style = "text-align:left" > 2 dorosłych + 2 młodzież< / td > < td style = "text-align:left" > ~1 570– 1 650 €< / td > < / tr > < tr > < td style = "text-align:left" > 2+1 (dziecko)< / td > < td style = "text-align:left" > 2 dorosłych + 1 dziecko< / td > < td style = "text-align:left" > ~1 120– 1 175 €< / td > < / tr > < / tbody > < / table > < / div >
< blockquote > < p > ⚠️ Ceny 26/27 do potwierdzenia jesienią 2026 na alpincard.at. Dzieci/młodzież: decyduje rocznik, nie wiek w dniu wyjazdu — sprawdzić dokładne progi rocznikowe przy zakupie.< / p > < / blockquote >
2026-08-03 16:48:58 +02:00
< h3 > Cennik peak season (info od grupy, 08.2026)< / h3 >
< p > Stawki ALPIN CARD w taryfie < strong > peak season< / strong > ze strony < a href = "https://www.saalbach.com/en/winter/skitickets/peak-season" target = "_blank" rel = "noopener" class = "ext" > saalbach.com — peak season< / a > ; karnet obejmuje Skicircus + Zell am See (Schmittenhöhe) + Kitzsteinhorn, czyli ten sam zakres co opisany wyżej.< / p >
< div class = "table-wrap" > < table > < thead > < tr > < th style = "text-align:left" > Taryfa 6 dni< / th > < th style = "text-align:left" > Peak season wg saalbach.com (08.2026)< / th > < th style = "text-align:left" > Prognoza z tabeli wyżej (31.07.2026)< / th > < / tr > < / thead > < tbody > < tr > < td style = "text-align:left" > Dorosły< / td > < td style = "text-align:left" > < strong > 440 €< / strong > < / td > < td style = "text-align:left" > ~445– 470 €< / td > < / tr > < tr > < td style = "text-align:left" > Młodzież< / td > < td style = "text-align:left" > < strong > 330 €< / strong > < / td > < td style = "text-align:left" > ~335– 355 €< / td > < / tr > < tr > < td style = "text-align:left" > Dziecko< / td > < td style = "text-align:left" > < strong > 220 €< / strong > < / td > < td style = "text-align:left" > ~225– 235 €< / td > < / tr > < / tbody > < / table > < / div >
< ul > < li > Obie kolumny się zgadzają — twarde stawki siedzą tuż pod dolną granicą prognozy, więc dotychczasowa tabela zostaje bez zmian.< / li > < li > To taryfa < strong > peak season< / strong > , a nasz termin 16– 23.01 jest poza szczytem (patrz "Terminy") → realna cena powinna być < strong > nie wyższa< / strong > niż powyższe; peak traktujemy jako górną granicę, nie jako cenę docelową.< / li > < li > Grupa 14 os. po tych stawkach: 8× 440 + 4× 330 + 2× 220 = < strong > 5 280 €< / strong > , czyli górny koniec dotychczasowego przedziału ~4 900– 5 400 €.< / li > < / ul >
Karty HTML konceptów: gen_pages.py + katalog pages/
Graf pokazywał strukturę, ale treść (ceny, dostępność, plusy/minusy)
siedziała tylko w panelu szczegółów viewera. gen_pages.py renderuje każdy
koncept do pages/<id>.html: metadane frontmattera jako tabelka (wszystkie
pola, też polskie rozszerzenia), body poniżej, plus pages/index.html
z listą kart.
Renderer: python-markdown, jeśli jest w systemie; tutaj go nie ma, więc
działa fallback na samej bibliotece standardowej (nagłówki, akapity,
tabele GFM, listy z - [ ], cytaty, kod, hr, inline bold/kursywa/kod/linki).
Linki miedzy konceptami przepisane na względne <id>.html, linki
zewnętrzne bez zmian. Pliki zarezerwowane (index.md, log.md) nie są
konceptami (§3.1) i nie mają kart — linki do nich prowadzą do listy kart.
Pliki .md nietknięte.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 18:46:08 +02:00
< h2 > Dojazd z Warszawy< / h2 >
< ul > < li > < strong > Trasa:< / strong > Warszawa → Katowice → Ostrawa → Brno → Wiedeń → Salzburg → Zell am See → dolina Glemmtal. < strong > ~950 km, 9– 10 h jazdy< / strong > (realnie 11– 12 h z przerwami). Da się w jeden dzień.< / li > < li > < strong > Opłaty:< / strong > winiety Czechy (~14 €/10 dni) + Austria (~13 €/10 dni, 2026); odcinek specjalny A10 (tunele Tauern) ~14 € w jedną stronę jeśli trasa przez Salzburg– Villach (uwaga: do Zell am See zwykle zjazd wcześniej — bez opłaty specjalnej).< / li > < li > < strong > Paliwo:< / strong > ~1 900 km w obie strony → ~150– 170 l → < strong > ~950– 1 100 zł/auto< / strong > (diesel, spalanie 8 l/100 km).< / li > < li > < strong > Łączny koszt dojazdu:< / strong > ~300– 350 €/auto w obie strony. Grupa jedzie 4 autami (po 1 na rodzinę) lub 3 (oszczędność ~300 €, ale mniej elastycznie).< / li > < li > Łańcuchy/opony zimowe obowiązkowe; ostatnie 15 km doliną Glemmtal — droga lokalna, zimą odśnieżana na bieżąco.< / li > < / ul >
< h2 > Terminy — analiza okna 1– 23.01.2027< / h2 >
< div class = "table-wrap" > < table > < thead > < tr > < th style = "text-align:left" > Tydzień< / th > < th style = "text-align:left" > Ocena< / th > < th style = "text-align:left" > Uzasadnienie< / th > < / tr > < / thead > < tbody > < tr > < td style = "text-align:left" > 2– 9.01< / td > < td style = "text-align:left" > ⚠️ średnio< / td > < td style = "text-align:left" > ogon szczytu noworocznego: tłumy do ~6.01, najwyższe ceny noclegów< / td > < / tr > < tr > < td style = "text-align:left" > 9– 16.01< / td > < td style = "text-align:left" > ✅ dobry< / td > < td style = "text-align:left" > pierwszy "pusty" tydzień zimy, niższe ceny, świetny śnieg< / td > < / tr > < tr > < td style = "text-align:left" > < strong > 16– 23.01< / strong > < / td > < td style = "text-align:left" > ✅✅ < strong > rekomendowany< / strong > < / td > < td style = "text-align:left" > najluźniejsze stoki, pełna dostępność noclegów (m.in. jedyne okno na 2× Glemm Lodge), te same ceny co 9– 16.01< / td > < / tr > < / tbody > < / table > < / div >
< h2 > Koszty życia na miejscu< / h2 >
< ul > < li > Obiad na stoku: 15– 22 €/os. (spaghetti/schnitzel + napój).< / li > < li > Zakupy spożywcze: MPREIS/Billa w Saalbach i Hinterglemm; ceny ~20– 30% wyższe niż w PL. Patent grupowy: duże zakupy w Zell am See (Lidl, Spar) po drodze.< / li > < li > Wieczorne wyjście na pizzę/burgery: 18– 25 €/os.< / li > < li > < strong > Taksa klimatyczna:< / strong > ~2– 3 €/os./noc (dorośli; wg gminy), płatna na miejscu.< / li > < li > Skibus w dolinie: < strong > bezpłatny ze skipassem< / strong > , kursuje Saalbach ↔ Hinterglemm ↔ Viehhofen co 10– 20 min.< / li > < / ul >
< h2 > Budżet całkowity grupy (orientacyjnie, tydzień, 6 dni jazdy)< / h2 >
< div class = "table-wrap" > < table > < thead > < tr > < th style = "text-align:left" > Pozycja< / th > < th style = "text-align:left" > 14 osób łącznie< / th > < / tr > < / thead > < tbody > < tr > < td style = "text-align:left" > Noclegi (cel: ~1 200– 2 000 €/apartament)< / td > < td style = "text-align:left" > 5 500– 7 500 €< / td > < / tr > < tr > < td style = "text-align:left" > Skipassy< / td > < td style = "text-align:left" > 4 900– 5 400 €< / td > < / tr > < tr > < td style = "text-align:left" > Dojazd (4 auta)< / td > < td style = "text-align:left" > 1 200– 1 400 €< / td > < / tr > < tr > < td style = "text-align:left" > Jedzenie + taksy< / td > < td style = "text-align:left" > 2 500– 3 500 €< / td > < / tr > < tr > < td style = "text-align:left" > < strong > RAZEM< / strong > < / td > < td style = "text-align:left" > < strong > ~14 000– 18 000 €< / strong > (≈ 1 000– 1 300 €/os.)< / td > < / tr > < / tbody > < / table > < / div >
< h2 > Kalendarz decyzji< / h2 >
2026-08-04 09:47:58 +02:00
< ol > < li > < strong > Sierpień 2026< / strong > — wysłanie zapytań grupowych do obiektów (< a href = "../szablon-maila.html" > szablon maila< / a > ), zebranie ofert, wybór.< / li > < li > < strong > Wrzesień 2026< / strong > — rezerwacja + zaliczki (typowo 30%).< / li > < li > < strong > ~16.10.2026< / strong > — ostateczny deadline darmowej anulacji dla Glemm Lodge (91 dni przed 16.01); inne obiekty: sprawdzić indywidualnie.< / li > < li > < strong > Jesień 2026< / strong > — potwierdzenie cen skipassów 26/27, decyzja o zakupie online (ewentualne przedsprzedaże).< / li > < li > < strong > Grudzień 2026< / strong > — dopłaty (typowo 90 dni przed), organizacja aut, sprzętu, ubezpieczeń (rekomendowane: koszty rezygnacji + NNW/OC narciarskie).< / li > < / ol >
Karty HTML konceptów: gen_pages.py + katalog pages/
Graf pokazywał strukturę, ale treść (ceny, dostępność, plusy/minusy)
siedziała tylko w panelu szczegółów viewera. gen_pages.py renderuje każdy
koncept do pages/<id>.html: metadane frontmattera jako tabelka (wszystkie
pola, też polskie rozszerzenia), body poniżej, plus pages/index.html
z listą kart.
Renderer: python-markdown, jeśli jest w systemie; tutaj go nie ma, więc
działa fallback na samej bibliotece standardowej (nagłówki, akapity,
tabele GFM, listy z - [ ], cytaty, kod, hr, inline bold/kursywa/kod/linki).
Linki miedzy konceptami przepisane na względne <id>.html, linki
zewnętrzne bez zmian. Pliki zarezerwowane (index.md, log.md) nie są
konceptami (§3.1) i nie mają kart — linki do nich prowadzą do listy kart.
Pliki .md nietknięte.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 18:46:08 +02:00
< footer > Wygenerowane z bundle'a OKF przez < code > gen_pages.py< / code > — nie edytuj
2026-08-03 17:52:23 +02:00
tych plików, edytuj < code > .md< / code > i przegeneruj.< br >
powered by < a href = "https://gethumanai.pl" target = "_blank" rel = "noopener" > gethumanai.pl< / a > < / footer >
Karty HTML konceptów: gen_pages.py + katalog pages/
Graf pokazywał strukturę, ale treść (ceny, dostępność, plusy/minusy)
siedziała tylko w panelu szczegółów viewera. gen_pages.py renderuje każdy
koncept do pages/<id>.html: metadane frontmattera jako tabelka (wszystkie
pola, też polskie rozszerzenia), body poniżej, plus pages/index.html
z listą kart.
Renderer: python-markdown, jeśli jest w systemie; tutaj go nie ma, więc
działa fallback na samej bibliotece standardowej (nagłówki, akapity,
tabele GFM, listy z - [ ], cytaty, kod, hr, inline bold/kursywa/kod/linki).
Linki miedzy konceptami przepisane na względne <id>.html, linki
zewnętrzne bez zmian. Pliki zarezerwowane (index.md, log.md) nie są
konceptami (§3.1) i nie mają kart — linki do nich prowadzą do listy kart.
Pliki .md nietknięte.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 18:46:08 +02:00
< / body >
< / html >