narty-2027/pages/saalbach/oferty/alpenparks-sonnleiten.html
oskar de10b94bd9 Archiwum ofert spoza paczki + wyjazd.md na termin 6–13.02.2027
dom-dla-grupy i alpenparks-rehrenberg zostają w bazie jako karty
ARCHIWALNE: riscercz 08.2026 objął tylko obiekty z paczki, więc ich ceny
i dostępność opisują poprzedni termin (16–23.01) i dziś wprowadzałyby
w błąd. Oznaczone `priorytet: ARCHIWALNA (poza paczką 08.2026)` +
`archiwalna_od`, z ostrzeżeniem na górze body. Wypadają z tabeli
porównawczej i ze statusów dostępności (osobna sekcja Archiwum).

wyjazd.md przepisany od zera na nowy termin:
- tabela porównawcza czterech regionów z nowymi budżetami
- tabela dostępności 10 ofert z legendą //🔍 i bilansem
  (1 zweryfikowany status, i to negatywny — 9 do weryfikacji)
- nowe wnioski przekrojowe (Kronplatz najlepiej znosi termin,
  Saalbach traci przewagę cenową, Ischgl konkurencyjny z Kappl,
  SFL bez styczniowej przewagi)
- nowa sekcja "Plan B na wypadek pełnego tygodnia" (13–20.02
  i 27.02–06.03 na podstawie zweryfikowanego kalendarza Glemm Lodge)

Usunięte jako nieaktualne: wniosek o przewadze cenowej SFL (styczeń
= ich niski sezon), ranking ofert wyceniony po stawkach styczniowych,
rekomendacja terminu 16–23.01 i alternatywy 9–16.01.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 09:57:09 +02:00

183 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="pl">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>AlpenParks Hotel &amp; Apartment Sonnleiten — 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); }
/* 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) {
.tiles { grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); }
.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; }
/* 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); }
/* 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; }
</style>
</head>
<body>
<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>
<span class="chip">oferta</span>
<h1>AlpenParks Sonnleiten — PLAN A-bis</h1>
<p class="lead">Duży aparthotel 2 min od stoku w Saalbach z basenem i sauną — jedyny obiekt w regionie z silnikiem online, więc dostępność na 613.02 sprawdzicie w dwie minuty.</p>
<figure class="gallery"><div class="gallery-main"><img src="../../img/alpenparks-sonnleiten/01.jpg" alt="AlpenParks Hotel &amp; Apartment Sonnleiten" loading="lazy"></div><div class="gallery-thumbs"><button type="button" aria-current="true"><img src="../../img/alpenparks-sonnleiten/01.jpg" alt="AlpenParks Hotel &amp; Apartment Sonnleiten — zdjęcie 1" loading="lazy"></button><button type="button"><img src="../../img/alpenparks-sonnleiten/02.jpg" alt="AlpenParks Hotel &amp; Apartment Sonnleiten — zdjęcie 2" loading="lazy"></button><button type="button"><img src="../../img/alpenparks-sonnleiten/03.jpg" alt="AlpenParks Hotel &amp; Apartment Sonnleiten — zdjęcie 3" loading="lazy"></button><button type="button"><img src="../../img/alpenparks-sonnleiten/04.jpg" alt="AlpenParks Hotel &amp; Apartment Sonnleiten — zdjęcie 4" loading="lazy"></button><button type="button"><img src="../../img/alpenparks-sonnleiten/05.jpg" alt="AlpenParks Hotel &amp; Apartment Sonnleiten — zdjęcie 5" loading="lazy"></button></div></figure>
<details class="meta" open><summary>Metadane (frontmatter)</summary><div class="table-wrap"><table><tbody><tr><th>type</th><td>oferta</td></tr><tr><th>title</th><td>AlpenParks Hotel &amp; Apartment Sonnleiten</td></tr><tr><th>description</th><td>Duży aparthotel 2 min od stoku w Saalbach z basenem i sauną — jedyny obiekt w regionie z silnikiem online, więc dostępność na 613.02 sprawdzicie w dwie minuty.</td></tr><tr><th>timestamp</th><td>2026-08-01T00:00:00Z</td></tr><tr><th>tags</th><td>nocleg, saalbach, plan-a</td></tr><tr><th>id</th><td>alpenparks-sonnleiten</td></tr><tr><th>nazwa</th><td>AlpenParks Hotel &amp; Apartment Sonnleiten</td></tr><tr><th>operator</th><td>AlpenParks</td></tr><tr><th>miejscowosc</th><td>Saalbach</td></tr><tr><th>gps</th><td>47.3953, 12.6378</td></tr><tr><th>odleglosc_od_wyciagu</th><td>~2 min pieszo do stoku</td></tr><tr><th>ocena</th><td>4.6/5 (Google)</td></tr><tr><th>uklad_dla_grupy</th><td>4 osobne apartamenty</td></tr><tr><th>cena_za_apartament_tydzien</th><td>~1 7002 300 € (szacunek, szczyt lutowy)</td></tr><tr><th>koszt_rodzina_2p2</th><td>~1 7002 300 €</td></tr><tr><th>koszt_rodzina_2p1</th><td>~1 4001 800 €</td></tr><tr><th>status_ceny</th><td>SZACUNEK — ceny rzeczywiste od ręki w silniku alpenparks.at</td></tr><tr><th>dostepnosc_6_13_02_2027</th><td>🔍 BRAK DANYCH — silnik online pokaże od ręki (najszybsza weryfikacja na liście)</td></tr><tr><th>priorytet</th><td>PLAN A-bis</td></tr><tr><th>www</th><td><a href="https://www.alpenparks.at" target="_blank" rel="noopener" class="ext">https://www.alpenparks.at</a></td></tr><tr><th>ostatnia_aktualizacja</th><td>2026-08-01</td></tr></tbody></table></div></details>
<h2>Dostępność 613.02.2027: 🔍 BRAK DANYCH (weryfikacja online w 2 min)</h2>
<p>Duży obiekt + silnik rezerwacyjny = jedyne miejsce w Saalbach na liście, gdzie dostępność i cenę na szczyt lutowy sprawdzicie natychmiast bez maili. Skala obiektu = największa szansa na 4 wolne jednostki nawet w Fasching.</p>
<h2>W skrócie</h2>
<p>Aparthotel ~2 min od stoku; basen + sauna w cenie (złoto przy 6 dzieciach); restauracja; apartamenty 28 os.</p>
<p><strong>+</strong> basen; dostępność; rezerwacja/anulacja na warunkach online. <strong></strong> ceny sieciówki sztywne w negocjacji; mniej kameralnie.</p>
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
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>
<script>
document.querySelectorAll('.gallery').forEach(function (gallery) {
var big = gallery.querySelector('.gallery-main img');
gallery.querySelectorAll('.gallery-thumbs button').forEach(function (button) {
button.addEventListener('click', function () {
var img = button.querySelector('img');
big.src = img.dataset.full || img.src;
gallery.querySelectorAll('.gallery-thumbs button').forEach(function (b) {
b.removeAttribute('aria-current');
});
button.setAttribute('aria-current', 'true');
});
});
});
</script>
</body>
</html>