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>
74 lines
6.3 KiB
HTML
74 lines
6.3 KiB
HTML
<!doctype html>
|
||
<html lang="pl">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>Karty — 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); }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<nav><a href="index.html">← Wszystkie karty</a> · <a href="../viz.html">Graf</a></nav>
|
||
<h1>Ski 2027 — Skicircus Saalbach</h1>
|
||
<p class="lead">Karty konceptów bundle'a — pełna treść każdego dokumentu (ceny, dostępność, plusy/minusy). Struktura powiązań: <a href="../viz.html">graf</a>.</p>
|
||
<h2>Wyjazd i wiedza ogólna</h2>
|
||
<ul class="cards"><li><a href="region.html">Skicircus Saalbach-Hinterglemm-Leogang-Fieberbrunn</a> <span class="chip">region</span><p>Wszystko poza noclegiem: teren narciarski, skipassy ALPIN CARD, dojazd z Warszawy, analiza terminów, koszty życia i budżet całkowity grupy.</p></li><li><a href="szablon-maila.html">Szablon zapytania grupowego (EN)</a> <span class="chip">narzedzie</span><p>Gotowy angielski mail z zapytaniem o 4 apartamenty dla 14 osób w terminie 16–23.01.2027 wraz z notatkami negocjacyjnymi.</p></li><li><a href="wyjazd.html">Ski 2027 — Skicircus Saalbach</a> <span class="chip">Trip</span><p>Wyjazd narciarski 4 rodzin (14 osób) z Warszawy do Skicircus Saalbach w styczniu 2027, z celem budżetowym ~2 000 € za nocleg na rodzinę.</p></li></ul>
|
||
<h2>Oferty noclegowe</h2>
|
||
<ul class="cards"><li><a href="oferty/alpenparks-rehrenberg.html">AlpenParks Apartments Rehrenberg</a> <span class="chip">SZACUNEK</span> <span class="chip">oferta</span><p>Najtańszy nowy obiekt na liście — przestronne apartamenty z prywatnymi saunami w Viehhofen, wariant rezerwowy o mieszanych opiniach, PLAN C.</p></li><li><a href="oferty/alpenparks-sonnleiten.html">AlpenParks Hotel & Apartment Sonnleiten</a> <span class="chip">SZACUNEK</span> <span class="chip">oferta</span><p>Duży aparthotel ~2 min pieszo od stoku w Saalbach, z basenem i sauną w cenie — największa szansa na 4 wolne apartamenty w jednym tygodniu.</p></li><li><a href="oferty/dom-dla-grupy.html">Duży dom wakacyjny 12–14 os. (do wyszukania)</a> <span class="chip">SZACUNEK</span> <span class="chip">oferta-koncept</span><p>Koncept wynajęcia jednego domu wakacyjnego dla całej grupy zamiast czterech osobnych apartamentów — klimat chaletowy w połowie ceny Glemm Lodge.</p></li><li><a href="oferty/glemm-lodge.html">Glemm Lodge Apartments ⭐⭐⭐⭐</a> <span class="chip">ZWERYFIKOWANE (cennik + kalendarz obiektu, stan 31.07.2026)</span> <span class="chip">oferta</span><p>Jedyna oferta z w pełni zweryfikowanym cennikiem (~4 370 €/rodzinę) — odrzucona budżetowo, służy jako punkt odniesienia cenowego.</p></li><li><a href="oferty/kristall-schattbergxpress.html">Appartementhaus Kristall at SchattbergXpress</a> <span class="chip">SZACUNEK</span> <span class="chip">oferta</span><p>Apartamenty 50 m od gondoli Schattberg X-press w centrum Saalbach — najlepsza lokalizacja w rozważanym budżecie, PLAN A.</p></li><li><a href="oferty/sportchalet-viehhofen.html">Sportchalet Viehhofen</a> <span class="chip">SZACUNEK</span> <span class="chip">oferta</span><p>Kameralny obiekt holenderskich gospodarzy w Viehhofen z oceną 5.0 — najlepszy stosunek ceny do jakości, PLAN B.</p></li></ul>
|
||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||
</body>
|
||
</html>
|