narty-2027/viz.html
oskar 2491ae59f3 Pobieralna paczka źródeł dla AI: pages/ski-2027-kb.zip
Przy każdej regeneracji gen_pages.py buduje archiwum do wrzucenia w okno
czatu: wszystkie pliki .md bundle'a z zachowaniem struktury katalogów
(28 plików: koncepty, indexy podkatalogów, log.md) plus wygenerowany
AI-README.md. Nie wchodzą pages/, zdjęcia, generatory ani __pycache__ —
paczka niesie samą wiedzę, nie rusztowanie.

Deterministycznie: stały czas modyfikacji wpisów (1980-01-01), stała
kolejność i stały poziom kompresji, więc archiwum jest bajt w bajt takie
samo, dopóki nie zmieni się treść — git nie widzi diffów z niczego
(zweryfikowane: dwa uruchomienia, ten sam md5).

Z tego samego powodu AI-README.md podaje jako datę nie odczyt zegara,
tylko najnowsze `ostatnia_aktualizacja` w bundle'u ("data treści") —
data z zegara robiłaby nową wersję pliku każdego dnia, także wtedy, gdy
nic nie doszło.

AI-README.md (PL + EN, generowany z bundle'a): czym jest baza, format
OKF (markdown + YAML frontmatter, jeden plik = jeden koncept), polecenie
odpowiadania wyłącznie z tych plików i objaśnienie dwóch pól niosących
pewność danych — `status_ceny` i `dostepnosc_6_13_02_2027`, z ostrzeżeniem,
żeby nie zgadywać dostępności przy 🔍 i nie podawać szacunków jako cen
potwierdzonych.

Link "Pobierz bazę (.zip) — wrzuć do ChatGPT/Claude'a i pytaj" jako piąty
kafel na start.html i pozycja w sekcji "Wejście" na linki.html.

Plus wpis do log.md podsumowujący całą zmianę terminu.

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

569 lines
80 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>OKF Bundle Viewer</title>
<script src="https://cdn.jsdelivr.net/npm/cytoscape@3.28.1/dist/cytoscape.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/marked@12.0.0/marked.min.js"></script>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
font-size: 14px;
color: #0f172a;
background: #f8fafc;
display: flex;
flex-direction: column;
height: 100vh;
}
header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 16px;
background: #fff;
border-bottom: 1px solid #e2e8f0;
flex-shrink: 0;
}
.title strong { font-size: 16px; margin-right: 8px; }
.muted { color: #64748b; font-size: 12px; }
.controls { display: flex; gap: 8px; }
.controls input, .controls select, .controls button {
font-size: 13px;
padding: 5px 8px;
border: 1px solid #cbd5e1;
border-radius: 4px;
background: #fff;
}
.controls input { width: 220px; }
.controls button { cursor: pointer; background: #f1f5f9; }
.controls button:hover { background: #e2e8f0; }
main {
display: flex;
flex: 1;
min-height: 0;
}
#graph {
flex: 1 1 60%;
background: #fff;
border-right: 1px solid #e2e8f0;
min-width: 0;
position: relative;
}
#detail {
flex: 0 0 40%;
overflow-y: auto;
padding: 18px 22px;
background: #fff;
}
#detail-empty {
text-align: center;
margin-top: 40px;
}
.detail-header { margin-bottom: 12px; }
.detail-header h1 {
font-size: 18px;
margin: 4px 0 2px;
font-weight: 600;
}
.type-chip {
display: inline-block;
padding: 2px 8px;
border-radius: 10px;
font-size: 11px;
font-weight: 600;
color: #fff;
background: #94a3b8;
text-transform: uppercase;
letter-spacing: 0.5px;
}
dl.frontmatter {
display: grid;
grid-template-columns: 90px 1fr;
row-gap: 4px;
column-gap: 12px;
margin: 8px 0 12px;
font-size: 13px;
}
dl.frontmatter dt {
color: #64748b;
font-weight: 500;
}
dl.frontmatter dd { margin: 0; }
dl.frontmatter a { color: #2563eb; word-break: break-all; }
.tag {
display: inline-block;
padding: 1px 6px;
margin: 0 4px 2px 0;
border-radius: 4px;
background: #f1f5f9;
color: #475569;
font-size: 11px;
}
.badges {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin: 8px 0 4px;
}
.badge {
display: inline-block;
padding: 2px 8px;
border-radius: 10px;
font-size: 11px;
font-weight: 600;
border: 1px solid transparent;
}
.badge.status-stable { background: #ecfdf5; color: #047857; border-color: #a7f3d0; }
.badge.status-draft { background: #fefce8; color: #a16207; border-color: #fde68a; }
.badge.status-deprecated { background: #f1f5f9; color: #64748b; border-color: #cbd5e1; text-decoration: line-through; }
.badge.trust-unverified { background: #f1f5f9; color: #64748b; border-color: #cbd5e1; }
.badge.trust-machine-confirmed { background: #eff6ff; color: #1d4ed8; border-color: #bfdbfe; }
.badge.trust-human-reviewed { background: #f5f3ff; color: #6d28d9; border-color: #ddd6fe; }
.badge.stale { background: #fef2f2; color: #b91c1c; border-color: #fecaca; }
.badge.fresh { background: #ecfdf5; color: #047857; border-color: #a7f3d0; }
.sources-list { padding-left: 18px; margin: 0; }
.sources-list li { margin: 1px 0; }
hr { border: none; border-top: 1px solid #e2e8f0; margin: 14px 0; }
#detail-body { font-size: 13px; line-height: 1.55; }
#detail-body h1 {
font-size: 16px; margin: 18px 0 6px;
padding-bottom: 4px; border-bottom: 1px solid #e2e8f0;
}
#detail-body h2 { font-size: 14px; margin: 14px 0 4px; }
#detail-body h3 { font-size: 13px; margin: 12px 0 4px; }
#detail-body p { margin: 6px 0; }
#detail-body code {
background: #f1f5f9;
padding: 1px 4px;
border-radius: 3px;
font-size: 12px;
font-family: ui-monospace, "SF Mono", Consolas, monospace;
}
#detail-body pre {
background: #0f172a;
color: #e2e8f0;
padding: 10px 12px;
border-radius: 6px;
overflow-x: auto;
font-size: 12px;
}
#detail-body pre code { background: transparent; color: inherit; padding: 0; }
#detail-body ul, #detail-body ol { padding-left: 22px; margin: 6px 0; }
#detail-body li { margin: 2px 0; }
#detail-body table { border-collapse: collapse; margin: 8px 0; }
#detail-body th, #detail-body td {
border: 1px solid #e2e8f0; padding: 4px 8px; font-size: 12px;
}
#detail-body a.internal { color: #2563eb; cursor: pointer; }
#detail-body a.external { color: #2563eb; }
#detail-backlinks { margin-top: 18px; }
#detail-backlinks h2 { font-size: 13px; color: #64748b; margin-bottom: 6px; }
#detail-backlinks ul { padding-left: 18px; }
#detail-backlinks a { color: #2563eb; cursor: pointer; }
</style>
</head>
<body>
<header>
<div class="title">
<strong id="bundle-name"></strong>
<span class="muted">OKF bundle</span>
<span class="muted">· powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener" style="color:inherit">gethumanai.pl</a></span>
</div>
<div class="controls">
<input id="search" type="search" placeholder="Search title / id / tag">
<select id="filter-type">
<option value="">All types</option>
</select>
<select id="layout">
<option value="cose">cose (force)</option>
<option value="concentric">concentric</option>
<option value="breadthfirst">breadth-first</option>
<option value="circle">circle</option>
<option value="grid">grid</option>
</select>
<button id="reset">Reset view</button>
</div>
</header>
<main>
<section id="graph"></section>
<section id="detail">
<div id="detail-empty" class="muted">Click a node to see its details.</div>
<article id="detail-content" hidden>
<header class="detail-header">
<span class="type-chip" id="detail-type"></span>
<h1 id="detail-title"></h1>
<div class="muted" id="detail-id"></div>
</header>
<div class="badges" id="detail-badges"></div>
<dl class="frontmatter">
<dt>Description</dt><dd id="detail-description"></dd>
<dt>Resource</dt><dd id="detail-resource"></dd>
<dt>Tags</dt><dd id="detail-tags"></dd>
<dt>Generated</dt><dd id="detail-generated"></dd>
<dt>Verified</dt><dd id="detail-verified"></dd>
<dt>Sources</dt><dd id="detail-sources"></dd>
</dl>
<hr>
<div id="detail-body"></div>
<section id="detail-backlinks" hidden>
<h2>Cited by</h2>
<ul id="backlinks-list"></ul>
</section>
</article>
</section>
</main>
<script>
window.BUNDLE_NAME = "Ski 2027 \u2014 wyjazd 6\u201313.02.2027";
window.BUNDLE = {"nodes": [{"data": {"id": "ischgl/oferty/apartment-brandau-kappl", "label": "Apartment Brandau (Kappl)", "type": "oferta", "description": "Rodzinny dom z sze\u015bcioma apartamentami w Kappl \u2014 bierzemy cztery, ceny doliny zamiast cen Ischgl, PLAN A wariantu Ischgl; dost\u0119pno\u015b\u0107 na 6\u201313.02 tylko mailem.", "resource": "pages/ischgl/oferty/apartment-brandau-kappl.html", "tags": ["nocleg", "ischgl", "kappl", "plan-a"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 33}}, {"data": {"id": "ischgl/oferty/apartments-kappl", "label": "Apartments Kappl", "type": "oferta", "description": "Tyrolski dom apartamentowy 100 m od przystanku skibusa bez przesiadki do Ischgl \u2014 liczba wolnych jednostek na 6\u201313.02 do potwierdzenia mailem, PLAN B wariantu Ischgl.", "resource": "pages/ischgl/oferty/apartments-kappl.html", "tags": ["nocleg", "ischgl", "kappl", "plan-b"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 31}}, {"data": {"id": "ischgl/region", "label": "Ischgl / Silvretta Arena + dolina Paznaun", "type": "region", "description": "Wariant alternatywny: 239 km Silvretta Areny z jazd\u0105 do bezc\u0142owego Samnaun, nocleg w ta\u0144szym Kappl \u2014 skipass zweryfikowany na 26/27 i bez dop\u0142aty sezonowej, ale bez zni\u017cki dla 17-latk\u00f3w.", "resource": "pages/ischgl/region.html", "tags": ["region", "ischgl", "wariant", "skipass", "logistyka"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 40}}, {"data": {"id": "kronplatz/oferty/haeuslerhof-valdaora", "label": "H\u00e4uslerhof (Valdaora)", "type": "oferta", "description": "Gospodarstwo z dok\u0142adnie czterema apartamentami \u2014 grupa zajmuje ca\u0142y obiekt, a zweryfikowana anulacja do 2 miesi\u0119cy przed (~6.12.2026) jest naj\u0142agodniejsza w bazie.", "resource": "pages/kronplatz/oferty/haeuslerhof-valdaora.html", "tags": ["nocleg", "kronplatz", "valdaora", "plan-a"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 33}}, {"data": {"id": "kronplatz/oferty/residence-corones-valdaora", "label": "Residence Corones (Valdaora)", "type": "oferta", "description": "Rezydencja w centrum Valdaory ze skibusem przed domem i Digital Guestpassem w cenie \u2014 PLAN B wariantu Kronplatz, dost\u0119pno\u015b\u0107 na 6\u201313.02 do potwierdzenia mailem.", "resource": "pages/kronplatz/oferty/residence-corones-valdaora.html", "tags": ["nocleg", "kronplatz", "valdaora", "plan-b"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 32}}, {"data": {"id": "kronplatz/region", "label": "Kronplatz / Plan de Corones (Po\u0142udniowy Tyrol)", "type": "region", "description": "Wariant alternatywny i najlepiej znosz\u0105cy tydzie\u0144 Fasching: 121 km na jednej g\u00f3rze plus ca\u0142y Dolomiti Superski, mniejszy nacisk karnawa\u0142owy ni\u017c w Austrii, junior do 18 lat.", "resource": "pages/kronplatz/region.html", "tags": ["region", "kronplatz", "wariant", "skipass", "logistyka"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 40}}, {"data": {"id": "saalbach/oferty/alpenparks-rehrenberg", "label": "AlpenParks Apartments Rehrenberg", "type": "oferta", "description": "ARCHIWALNA: rezerwowy obiekt w Viehhofen z riserczu styczniowego \u2014 ceny i dost\u0119pno\u015b\u0107 nie by\u0142y weryfikowane na termin 6\u201313.02.2027.", "resource": "pages/saalbach/oferty/alpenparks-rehrenberg.html", "tags": ["nocleg", "viehhofen", "archiwum"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 38}}, {"data": {"id": "saalbach/oferty/alpenparks-sonnleiten", "label": "AlpenParks Hotel & Apartment Sonnleiten", "type": "oferta", "description": "Du\u017cy aparthotel 2 min od stoku w Saalbach z basenem i saun\u0105 \u2014 jedyny obiekt w regionie z silnikiem online, wi\u0119c dost\u0119pno\u015b\u0107 na 6\u201313.02 sprawdzicie w dwie minuty.", "resource": "pages/saalbach/oferty/alpenparks-sonnleiten.html", "tags": ["nocleg", "saalbach", "plan-a"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 32}}, {"data": {"id": "saalbach/oferty/dom-dla-grupy", "label": "Du\u017cy dom wakacyjny 12\u201314 os. (do wyszukania)", "type": "oferta-koncept", "description": "ARCHIWALNA: koncept jednego domu dla ca\u0142ej grupy z riserczu styczniowego \u2014 nie by\u0142 weryfikowany na termin 6\u201313.02.2027, ceny i dost\u0119pno\u015b\u0107 dotycz\u0105 stycznia.", "resource": "pages/saalbach/oferty/dom-dla-grupy.html", "tags": ["nocleg", "dom-wakacyjny", "koncept", "archiwum"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 41}}, {"data": {"id": "saalbach/oferty/glemm-lodge", "label": "Glemm Lodge Apartments \u2b50\u2b50\u2b50\u2b50", "type": "oferta", "description": "Jedyny obiekt w bazie ze zweryfikowanym cennikiem i kalendarzem \u2014 na 6\u201313.02 wszystkie trzy apartamenty zaj\u0119te (Fasching), wolne dopiero od 13.02.", "resource": "pages/saalbach/oferty/glemm-lodge.html", "tags": ["nocleg", "saalbach", "referencja", "niedostepny"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 36}}, {"data": {"id": "saalbach/oferty/kristall-schattbergxpress", "label": "Appartementhaus Kristall at SchattbergXpress", "type": "oferta", "description": "Apartamenty 50 m od gondoli Schattberg X-press w centrum Saalbach \u2014 PLAN A wariantu bazowego, dost\u0119pno\u015b\u0107 na 6\u201313.02 do sprawdzenia mailem i na Bookingu.", "resource": "pages/saalbach/oferty/kristall-schattbergxpress.html", "tags": ["nocleg", "saalbach", "plan-a"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 34}}, {"data": {"id": "saalbach/oferty/sportchalet-viehhofen", "label": "Sportchalet Viehhofen", "type": "oferta", "description": "Kameralny obiekt holenderskich gospodarzy w Viehhofen z ocen\u0105 5.0 \u2014 najlepszy stosunek ceny do jako\u015bci i realna negocjacja nawet w szczycie, PLAN B.", "resource": "pages/saalbach/oferty/sportchalet-viehhofen.html", "tags": ["nocleg", "viehhofen", "plan-b"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 32}}, {"data": {"id": "saalbach/region", "label": "Skicircus Saalbach-Hinterglemm-Leogang-Fieberbrunn", "type": "region", "description": "Wariant bazowy: 270 km tras i najkr\u00f3tszy dojazd z Warszawy, ale w tygodniu Fasching (6\u201313.02.2027) nocleg dro\u017ceje do 6 500\u20139 000 \u20ac za cztery apartamenty.", "resource": "pages/saalbach/region.html", "tags": ["region", "saalbach", "skipass", "logistyka", "fasching"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 41}}, {"data": {"id": "sfl/oferty/apart-ideal-serfaus", "label": "Apart Ideal (Serfaus)", "type": "oferta", "description": "Sze\u015b\u0107 apartament\u00f3w z ocen\u0105 4.8/5, 50 m od podziemnego metra w Serfaus \u2014 pe\u0142ne do\u015bwiadczenie regionu za dop\u0142at\u0105, PLAN B wariantu SFL.", "resource": "pages/sfl/oferty/apart-ideal-serfaus.html", "tags": ["nocleg", "sfl", "serfaus", "plan-b"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 32}}, {"data": {"id": "sfl/oferty/haus-central-ladis", "label": "Haus Central (Apart Central), Ladis", "type": "oferta", "description": "Dok\u0142adnie cztery apartamenty z balkonami przy kolejce Sonnenbahn w najta\u0144szej wsi p\u0142askowy\u017cu \u2014 ca\u0142y dom dla grupy, PLAN A wariantu SFL.", "resource": "pages/sfl/oferty/haus-central-ladis.html", "tags": ["nocleg", "sfl", "ladis", "plan-a"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 33}}, {"data": {"id": "sfl/region", "label": "Serfaus-Fiss-Ladis (SFL)", "type": "region", "description": "Wariant alternatywny: 214 km na s\u0142onecznym p\u0142askowy\u017cu i najlepsza infrastruktura rodzinna, ale w lutym bez styczniowej przewagi cenowej \u2014 u nich to pe\u0142ny wysoki sezon.", "resource": "pages/sfl/region.html", "tags": ["region", "sfl", "wariant", "skipass", "logistyka"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 41}}, {"data": {"id": "szablon-maila", "label": "Szablon zapytania grupowego (EN)", "type": "narzedzie", "description": "Gotowy angielski mail o 4 apartamenty dla 14 os\u00f3b w terminie 6\u201313.02.2027, z pytaniem o najbli\u017cszy wolny tydzie\u0144 i notatkami negocjacyjnymi na rynek Fasching.", "resource": "pages/szablon-maila.html", "tags": ["szablon", "komunikacja", "rezerwacja"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 39}}, {"data": {"id": "wyjazd", "label": "Ski 2027 \u2014 cztery warianty na termin 6\u201313.02.2027", "type": "Trip", "description": "Wyjazd narciarski 4 rodzin (14 os\u00f3b) z Warszawy w tygodniu Fasching: por\u00f3wnanie czterech region\u00f3w, statusy dost\u0119pno\u015bci nocleg\u00f3w i wnioski przekrojowe.", "resource": "pages/wyjazd.html", "tags": ["wyjazd", "2027", "planowanie", "fasching", "dostepnosc"], "status": "stable", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#94a3b8", "size": 68}}, {"data": {"id": "ext:www.kappl-apartment-brandau.at", "label": "www.kappl-apartment-brandau.at", "type": "external", "description": "http://www.kappl-apartment-brandau.at", "resource": "http://www.kappl-apartment-brandau.at", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:allchalets.com", "label": "allchalets.com", "type": "external", "description": "https://allchalets.com", "resource": "https://allchalets.com", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:alpenparks.at", "label": "alpenparks.at", "type": "external", "description": "https://alpenparks.at", "resource": "https://alpenparks.at", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:alpincard.at", "label": "alpincard.at", "type": "external", "description": "https://alpincard.at", "resource": "https://alpincard.at", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:apartments.kappl.at", "label": "apartments.kappl.at", "type": "external", "description": "https://apartments.kappl.at", "resource": "https://apartments.kappl.at", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:belvilla.com", "label": "belvilla.com", "type": "external", "description": "https://belvilla.com", "resource": "https://belvilla.com", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:casamundo.pl", "label": "casamundo.pl", "type": "external", "description": "https://casamundo.pl", "resource": "https://casamundo.pl", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:corones.it", "label": "corones.it", "type": "external", "description": "https://corones.it", "resource": "https://corones.it", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:e-domizil.de", "label": "e-domizil.de", "type": "external", "description": "https://e-domizil.de", "resource": "https://e-domizil.de", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:glemmlodge-apartments.com", "label": "glemmlodge-apartments.com", "type": "external", "description": "https://glemmlodge-apartments.com", "resource": "https://glemmlodge-apartments.com", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:interhome.pl", "label": "interhome.pl", "type": "external", "description": "https://interhome.pl", "resource": "https://interhome.pl", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:serfaus-fiss-ladis.at", "label": "serfaus-fiss-ladis.at", "type": "external", "description": "https://serfaus-fiss-ladis.at", "resource": "https://serfaus-fiss-ladis.at", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:serfaus-fiss-ladis.at/en/serfaus/apartment/apart-ideal_dr91356", "label": "serfaus-fiss-ladis.at/\u2026/apart-ideal_dr91356", "type": "external", "description": "https://serfaus-fiss-ladis.at/en/serfaus/apartment/apart-ideal_dr91356", "resource": "https://serfaus-fiss-ladis.at/en/serfaus/apartment/apart-ideal_dr91356", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:sportchaletviehhofen.com", "label": "sportchaletviehhofen.com", "type": "external", "description": "https://sportchaletviehhofen.com", "resource": "https://sportchaletviehhofen.com", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:vrbo.com", "label": "vrbo.com", "type": "external", "description": "https://vrbo.com", "resource": "https://vrbo.com", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:www.alpenparks.at", "label": "www.alpenparks.at", "type": "external", "description": "https://www.alpenparks.at", "resource": "https://www.alpenparks.at", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:www.apartments.kappl.at", "label": "www.apartments.kappl.at", "type": "external", "description": "https://www.apartments.kappl.at", "resource": "https://www.apartments.kappl.at", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:www.booking.com/hotel/at/appartementhaus-kristall.html", "label": "www.booking.com/\u2026/appartementhaus-kristal\u2026", "type": "external", "description": "https://www.booking.com/hotel/at/appartementhaus-kristall.html", "resource": "https://www.booking.com/hotel/at/appartementhaus-kristall.html", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:www.haeuslerhof.it", "label": "www.haeuslerhof.it", "type": "external", "description": "https://www.haeuslerhof.it", "resource": "https://www.haeuslerhof.it", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:www.ischgl.com/en/winter/operating-times-prices/skipass-prices-vip", "label": "www.ischgl.com/\u2026/skipass-prices-vip", "type": "external", "description": "https://www.ischgl.com/en/winter/operating-times-prices/skipass-prices-vip", "resource": "https://www.ischgl.com/en/winter/operating-times-prices/skipass-prices-vip", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:www.kronplatz.com/kronplatz/skirama/allgemein/skipasspreise/Prezzi_Preise_Prices_Kronplatz_2025_2026.pdf", "label": "www.kronplatz.com/\u2026/Prezzi_Preise_Prices_Kr\u2026", "type": "external", "description": "https://www.kronplatz.com/kronplatz/skirama/allgemein/skipasspreise/Prezzi_Preise_Prices_Kronplatz_2025_2026.pdf", "resource": "https://www.kronplatz.com/kronplatz/skirama/allgemein/skipasspreise/Prezzi_Preise_Prices_Kronplatz_2025_2026.pdf", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:www.saalbach.com/en/winter/skitickets/peak-season", "label": "www.saalbach.com/\u2026/peak-season", "type": "external", "description": "https://www.saalbach.com/en/winter/skitickets/peak-season", "resource": "https://www.saalbach.com/en/winter/skitickets/peak-season", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:www.serfaus-fiss-ladis.at/en/Accommodation-list/Haus-Central-holiday-apartment-Ladis_ad-40835", "label": "www.serfaus-fiss-ladis.at/\u2026/Haus-Central-holiday-ap\u2026", "type": "external", "description": "https://www.serfaus-fiss-ladis.at/en/Accommodation-list/Haus-Central-holiday-apartment-Ladis_ad-40835", "resource": "https://www.serfaus-fiss-ladis.at/en/Accommodation-list/Haus-Central-holiday-apartment-Ladis_ad-40835", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}, {"data": {"id": "ext:www.skiinfo.pl/tyrol/serfaus-fiss-ladis/osrodek-narciarski", "label": "www.skiinfo.pl/\u2026/osrodek-narciarski", "type": "external", "description": "https://www.skiinfo.pl/tyrol/serfaus-fiss-ladis/osrodek-narciarski", "resource": "https://www.skiinfo.pl/tyrol/serfaus-fiss-ladis/osrodek-narciarski", "tags": [], "status": "external", "generated": {}, "verified": [], "stale_after": "", "sources": [], "trust_tier": "unverified", "stale": false, "color": "#0d9488", "size": 22}}], "edges": [{"data": {"id": "ischgl/oferty/apartment-brandau-kappl__szablon-maila", "source": "ischgl/oferty/apartment-brandau-kappl", "target": "szablon-maila"}}, {"data": {"id": "ischgl/oferty/apartment-brandau-kappl__ischgl/oferty/apartments-kappl", "source": "ischgl/oferty/apartment-brandau-kappl", "target": "ischgl/oferty/apartments-kappl"}}, {"data": {"id": "kronplatz/oferty/haeuslerhof-valdaora__szablon-maila", "source": "kronplatz/oferty/haeuslerhof-valdaora", "target": "szablon-maila"}}, {"data": {"id": "saalbach/oferty/alpenparks-rehrenberg__saalbach/oferty/alpenparks-sonnleiten", "source": "saalbach/oferty/alpenparks-rehrenberg", "target": "saalbach/oferty/alpenparks-sonnleiten"}}, {"data": {"id": "saalbach/oferty/alpenparks-rehrenberg__wyjazd", "source": "saalbach/oferty/alpenparks-rehrenberg", "target": "wyjazd"}}, {"data": {"id": "saalbach/oferty/dom-dla-grupy__wyjazd", "source": "saalbach/oferty/dom-dla-grupy", "target": "wyjazd"}}, {"data": {"id": "saalbach/oferty/glemm-lodge__wyjazd", "source": "saalbach/oferty/glemm-lodge", "target": "wyjazd"}}, {"data": {"id": "saalbach/oferty/glemm-lodge__saalbach/region", "source": "saalbach/oferty/glemm-lodge", "target": "saalbach/region"}}, {"data": {"id": "saalbach/oferty/kristall-schattbergxpress__szablon-maila", "source": "saalbach/oferty/kristall-schattbergxpress", "target": "szablon-maila"}}, {"data": {"id": "saalbach/oferty/sportchalet-viehhofen__szablon-maila", "source": "saalbach/oferty/sportchalet-viehhofen", "target": "szablon-maila"}}, {"data": {"id": "saalbach/region__saalbach/oferty/glemm-lodge", "source": "saalbach/region", "target": "saalbach/oferty/glemm-lodge"}}, {"data": {"id": "sfl/oferty/haus-central-ladis__szablon-maila", "source": "sfl/oferty/haus-central-ladis", "target": "szablon-maila"}}, {"data": {"id": "szablon-maila__kronplatz/oferty/haeuslerhof-valdaora", "source": "szablon-maila", "target": "kronplatz/oferty/haeuslerhof-valdaora"}}, {"data": {"id": "szablon-maila__sfl/oferty/haus-central-ladis", "source": "szablon-maila", "target": "sfl/oferty/haus-central-ladis"}}, {"data": {"id": "szablon-maila__ischgl/oferty/apartment-brandau-kappl", "source": "szablon-maila", "target": "ischgl/oferty/apartment-brandau-kappl"}}, {"data": {"id": "szablon-maila__saalbach/oferty/glemm-lodge", "source": "szablon-maila", "target": "saalbach/oferty/glemm-lodge"}}, {"data": {"id": "wyjazd__saalbach/oferty/glemm-lodge", "source": "wyjazd", "target": "saalbach/oferty/glemm-lodge"}}, {"data": {"id": "wyjazd__saalbach/region", "source": "wyjazd", "target": "saalbach/region"}}, {"data": {"id": "wyjazd__ischgl/region", "source": "wyjazd", "target": "ischgl/region"}}, {"data": {"id": "wyjazd__kronplatz/region", "source": "wyjazd", "target": "kronplatz/region"}}, {"data": {"id": "wyjazd__sfl/region", "source": "wyjazd", "target": "sfl/region"}}, {"data": {"id": "wyjazd__saalbach/oferty/kristall-schattbergxpress", "source": "wyjazd", "target": "saalbach/oferty/kristall-schattbergxpress"}}, {"data": {"id": "wyjazd__saalbach/oferty/alpenparks-sonnleiten", "source": "wyjazd", "target": "saalbach/oferty/alpenparks-sonnleiten"}}, {"data": {"id": "wyjazd__saalbach/oferty/sportchalet-viehhofen", "source": "wyjazd", "target": "saalbach/oferty/sportchalet-viehhofen"}}, {"data": {"id": "wyjazd__ischgl/oferty/apartment-brandau-kappl", "source": "wyjazd", "target": "ischgl/oferty/apartment-brandau-kappl"}}, {"data": {"id": "wyjazd__ischgl/oferty/apartments-kappl", "source": "wyjazd", "target": "ischgl/oferty/apartments-kappl"}}, {"data": {"id": "wyjazd__kronplatz/oferty/haeuslerhof-valdaora", "source": "wyjazd", "target": "kronplatz/oferty/haeuslerhof-valdaora"}}, {"data": {"id": "wyjazd__kronplatz/oferty/residence-corones-valdaora", "source": "wyjazd", "target": "kronplatz/oferty/residence-corones-valdaora"}}, {"data": {"id": "wyjazd__sfl/oferty/haus-central-ladis", "source": "wyjazd", "target": "sfl/oferty/haus-central-ladis"}}, {"data": {"id": "wyjazd__sfl/oferty/apart-ideal-serfaus", "source": "wyjazd", "target": "sfl/oferty/apart-ideal-serfaus"}}, {"data": {"id": "wyjazd__szablon-maila", "source": "wyjazd", "target": "szablon-maila"}}, {"data": {"id": "ischgl/oferty/apartment-brandau-kappl__ext:www.kappl-apartment-brandau.at", "source": "ischgl/oferty/apartment-brandau-kappl", "target": "ext:www.kappl-apartment-brandau.at"}}, {"data": {"id": "saalbach/oferty/dom-dla-grupy__ext:allchalets.com", "source": "saalbach/oferty/dom-dla-grupy", "target": "ext:allchalets.com"}}, {"data": {"id": "saalbach/oferty/alpenparks-rehrenberg__ext:alpenparks.at", "source": "saalbach/oferty/alpenparks-rehrenberg", "target": "ext:alpenparks.at"}}, {"data": {"id": "saalbach/region__ext:alpincard.at", "source": "saalbach/region", "target": "ext:alpincard.at"}}, {"data": {"id": "ischgl/oferty/apartment-brandau-kappl__ext:apartments.kappl.at", "source": "ischgl/oferty/apartment-brandau-kappl", "target": "ext:apartments.kappl.at"}}, {"data": {"id": "saalbach/oferty/dom-dla-grupy__ext:belvilla.com", "source": "saalbach/oferty/dom-dla-grupy", "target": "ext:belvilla.com"}}, {"data": {"id": "saalbach/oferty/dom-dla-grupy__ext:casamundo.pl", "source": "saalbach/oferty/dom-dla-grupy", "target": "ext:casamundo.pl"}}, {"data": {"id": "kronplatz/oferty/residence-corones-valdaora__ext:corones.it", "source": "kronplatz/oferty/residence-corones-valdaora", "target": "ext:corones.it"}}, {"data": {"id": "saalbach/oferty/dom-dla-grupy__ext:e-domizil.de", "source": "saalbach/oferty/dom-dla-grupy", "target": "ext:e-domizil.de"}}, {"data": {"id": "saalbach/oferty/glemm-lodge__ext:glemmlodge-apartments.com", "source": "saalbach/oferty/glemm-lodge", "target": "ext:glemmlodge-apartments.com"}}, {"data": {"id": "saalbach/oferty/dom-dla-grupy__ext:interhome.pl", "source": "saalbach/oferty/dom-dla-grupy", "target": "ext:interhome.pl"}}, {"data": {"id": "sfl/region__ext:serfaus-fiss-ladis.at", "source": "sfl/region", "target": "ext:serfaus-fiss-ladis.at"}}, {"data": {"id": "sfl/oferty/apart-ideal-serfaus__ext:serfaus-fiss-ladis.at/en/serfaus/apartment/apart-ideal_dr91356", "source": "sfl/oferty/apart-ideal-serfaus", "target": "ext:serfaus-fiss-ladis.at/en/serfaus/apartment/apart-ideal_dr91356"}}, {"data": {"id": "saalbach/oferty/sportchalet-viehhofen__ext:sportchaletviehhofen.com", "source": "saalbach/oferty/sportchalet-viehhofen", "target": "ext:sportchaletviehhofen.com"}}, {"data": {"id": "saalbach/oferty/dom-dla-grupy__ext:vrbo.com", "source": "saalbach/oferty/dom-dla-grupy", "target": "ext:vrbo.com"}}, {"data": {"id": "saalbach/oferty/alpenparks-rehrenberg__ext:www.alpenparks.at", "source": "saalbach/oferty/alpenparks-rehrenberg", "target": "ext:www.alpenparks.at"}}, {"data": {"id": "saalbach/oferty/alpenparks-sonnleiten__ext:www.alpenparks.at", "source": "saalbach/oferty/alpenparks-sonnleiten", "target": "ext:www.alpenparks.at"}}, {"data": {"id": "ischgl/oferty/apartments-kappl__ext:www.apartments.kappl.at", "source": "ischgl/oferty/apartments-kappl", "target": "ext:www.apartments.kappl.at"}}, {"data": {"id": "saalbach/oferty/kristall-schattbergxpress__ext:www.booking.com/hotel/at/appartementhaus-kristall.html", "source": "saalbach/oferty/kristall-schattbergxpress", "target": "ext:www.booking.com/hotel/at/appartementhaus-kristall.html"}}, {"data": {"id": "kronplatz/oferty/haeuslerhof-valdaora__ext:www.haeuslerhof.it", "source": "kronplatz/oferty/haeuslerhof-valdaora", "target": "ext:www.haeuslerhof.it"}}, {"data": {"id": "ischgl/region__ext:www.ischgl.com/en/winter/operating-times-prices/skipass-prices-vip", "source": "ischgl/region", "target": "ext:www.ischgl.com/en/winter/operating-times-prices/skipass-prices-vip"}}, {"data": {"id": "kronplatz/region__ext:www.kronplatz.com/kronplatz/skirama/allgemein/skipasspreise/Prezzi_Preise_Prices_Kronplatz_2025_2026.pdf", "source": "kronplatz/region", "target": "ext:www.kronplatz.com/kronplatz/skirama/allgemein/skipasspreise/Prezzi_Preise_Prices_Kronplatz_2025_2026.pdf"}}, {"data": {"id": "saalbach/region__ext:www.saalbach.com/en/winter/skitickets/peak-season", "source": "saalbach/region", "target": "ext:www.saalbach.com/en/winter/skitickets/peak-season"}}, {"data": {"id": "sfl/oferty/haus-central-ladis__ext:www.serfaus-fiss-ladis.at/en/Accommodation-list/Haus-Central-holiday-apartment-Ladis_ad-40835", "source": "sfl/oferty/haus-central-ladis", "target": "ext:www.serfaus-fiss-ladis.at/en/Accommodation-list/Haus-Central-holiday-apartment-Ladis_ad-40835"}}, {"data": {"id": "sfl/region__ext:www.skiinfo.pl/tyrol/serfaus-fiss-ladis/osrodek-narciarski", "source": "sfl/region", "target": "ext:www.skiinfo.pl/tyrol/serfaus-fiss-ladis/osrodek-narciarski"}}], "bodies": {"ischgl/oferty/apartment-brandau-kappl": "# Apartment Brandau (Kappl) \u2014 PLAN A\n\n## Dost\u0119pno\u015b\u0107 6\u201313.02.2027: \ud83d\udd0d BRAK DANYCH (mail)\n\nRodzinny dom z **6 apartamentami** \u2014 4 jednostki dla nas = dom prawie\nna wy\u0142\u0105czno\u015b\u0107. Pe\u0142ne aneksy kuchenne (piekarnik, zmywarka poza typami\n1 i 6), SAT-TV, WLAN, sejf; wyposa\u017cenie dla dzieci. Wycena i dost\u0119pno\u015b\u0107\nprzez [mail grupowy](/szablon-maila.md).\n\n**+** uk\u0142ad idealny pod 4 rodziny; ceny Kappl zamiast Ischgl;\ntor saneczkowy na wieczory.\n**\u2212** codzienny skibus/auto do Silvretta Areny; wieczorne \u017cycie\ntylko w Ischgl.\n\nAlternatywy w Kappl (je\u015bli brak miejsc):\n[Apartments Kappl](/ischgl/oferty/apartments-kappl.md)\n(apartments.kappl.at, skibus 100 m), Ferienwohnen Mattle (centrum),\nApart Avenzio (3 min od gondoli Kappl).", "ischgl/oferty/apartments-kappl": "# Apartments Kappl \u2014 PLAN B\n\n## Dost\u0119pno\u015b\u0107 6\u201313.02.2027: \ud83d\udd0d BRAK DANYCH (mail)\n\nSkibus **100 m od domu**, bez przesiadki do Ischgl, Galt\u00fcr i See;\nbezp\u0142atna narciarnia z suszark\u0105; \u0142\u00f3\u017ceczko/krzese\u0142ko gratis.\n\n**+** najlepsza logistyka skibusowa w Kappl; uczciwe ceny; kontakt EN.\n**\u2212** liczba jednostek pod 4 rodziny do potwierdzenia (ew. podzia\u0142\ngrupy na 2 s\u0105siednie domy).", "ischgl/region": "# Ischgl / Paznaun \u2014 informacje o regionie\n\nWariant \"Ischgl, ale w bud\u017cecie\": je\u017adzimy w Silvretta Arenie, mieszkamy\nw **Kappl** (10 min od Ischgl, darmowy skibus po dolinie).\nOferty \u2192 [`ischgl/oferty/`](/ischgl/oferty/index.md).\n\n## \u26a0\ufe0f Charakter terminu 6\u201313.02.2027\n\nFasching + ferie = pe\u0142ne ob\u0142o\u017cenie doliny; Ischgl w karnawale to\ndodatkowo szczyt sezonu imprezowego (t\u0142ok w gastronomii i na trasach\nprzy gondolach). Kappl jako baza \u0142agodzi t\u0142ok noclegowo, ale kolejki\nprzy Silvrettabahn rano b\u0119d\u0105.\n\n## Teren\n\n- **Silvretta Arena Ischgl\u2013Samnaun: 239 km tras**, 1 400\u20132 872 m,\n gwarancja \u015bniegu; zjazd do bezc\u0142owego Samnaun (Szwajcaria).\n- **Kappl: 40 km** rodzinnych tras + o\u015bwietlony 6-km tor saneczkowy.\n- Skipass VIP obejmuje ca\u0142y Paznaun (Ischgl, Kappl, See, Galt\u00fcr).\n\n## Skipass \u2014 VIP Skipass (cennik OFICJALNY 26/27 \u2014 ZWERYFIKOWANY)\n\n| Taryfa 6 dni | Cena 26/27 | Status |\n|---|---|---|\n| Doros\u0142y | **451 \u20ac** | ZWERYFIKOWANE |\n| Dziecko/m\u0142odzie\u017c 8 \u2013 <17 lat | **257 \u20ac** | ZWERYFIKOWANE |\n| \u26a0\ufe0f 17-latek | 451 \u20ac (jak doros\u0142y) | ZWERYFIKOWANE |\n\nCena sta\u0142a przez ca\u0142y sezon (bez dop\u0142aty za luty) \u2014\n[cennik ischgl.com](https://www.ischgl.com/en/winter/operating-times-prices/skipass-prices-vip).\n\n| Rodzina | Skipassy 6 dni |\n|---|---|\n| 2+2 (oboje <17) | **1 416 \u20ac** |\n| 2+1 | **1 159 \u20ac** |\n| **Grupa 14 os.** | **~5 150 \u20ac** |\n\n> \u26a0\ufe0f RYZYKO: nastolatek, kt\u00f3ry sko\u0144czy 17 lat przed wyjazdem \u2192 +194 \u20ac.\n> Sprawdzi\u0107 roczniki przed decyzj\u0105 o regionie!\n\n## Dojazd z Warszawy\n\n~1 150 km (Wiede\u0144\u2013Innsbruck\u2013Landeck\u2013Pians), 11\u201312 h. Winiety CZ+AT.\n~350 \u20ac/auto w obie strony. Sobota karnawa\u0142owa: korki na wje\u017adzie\ndo doliny Paznaun po po\u0142udniu.\n\n## Koszty \u017cycia\n\nNajdro\u017csza gastronomia z por\u00f3wnywanych region\u00f3w (obiad na stoku\n18\u201325 \u20ac). Ratunek: gotowanie w Kappl + dzie\u0144 zakupowy w bezc\u0142owym\nSamnaun (nartami). Taksa ~3 \u20ac/os./noc.\n\n## Bud\u017cet grupy (14 os., tydzie\u0144, SZCZYT)\n\n| Pozycja | Kwota |\n|---|---|\n| Noclegi (Kappl, 4 apartamenty) | 4 500\u20136 500 \u20ac |\n| Skipassy | ~5 150 \u20ac (ZWERYFIKOWANE) |\n| Dojazd (4 auta) | ~1 400 \u20ac |\n| Jedzenie + taksy | 3 200\u20134 000 \u20ac |\n| **RAZEM** | **~14 200\u201317 000 \u20ac** |", "kronplatz/oferty/haeuslerhof-valdaora": "# H\u00e4uslerhof (Valdaora) \u2014 PLAN A\n\n## Dost\u0119pno\u015b\u0107 6\u201313.02.2027: \ud83d\udd0d BRAK DANYCH (mail)\n\nGospodarstwo z **dok\u0142adnie 4 apartamentami** \u2014 grupa zajmuje ca\u0142y\nobiekt. Tyrolski styl, osobne kuchnie, w\u0142asne produkty na \u015bniadanie\n(jajka, mleko, chleb), carport, grill, \u0142\u00f3\u017ceczka na \u017cyczenie.\nZapytanie \u2192 [szablon maila](/szablon-maila.md) (z pytaniem o ca\u0142y dom).\n\n**Anulacja (zweryfikowana ze strony)**: bezp\u0142atnie do 2 miesi\u0119cy przed\nprzyjazdem \u2014 dla 6.02 deadline ~6.12.2026; potem 50%, w ostatnich\n4 tygodniach 80%. Naj\u0142agodniejsze warunki w ca\u0142ej bazie.\n\n**+** ca\u0142y obiekt; klimat agro (hit u m\u0142odszych dzieci); przewidywalna\nanulacja; ceny gospodarstwa.\n**\u2212** skibus/auto na stok; wieczorem cicho (Brunico 10 min autem).", "kronplatz/oferty/residence-corones-valdaora": "# Residence Corones (Valdaora) \u2014 PLAN B\n\n## Dost\u0119pno\u015b\u0107 6\u201313.02.2027: \ud83d\udd0d BRAK DANYCH (mail)\n\nCentrum Valdaory, **skibus przed domem (5 min do gondoli)**; w cenie\nDigital Guestpass = bezp\u0142atny transport publiczny po ca\u0142ym Po\u0142udniowym\nTyrolu \u2014 wycieczki bez odpalania aut.\n\n**+** logistyka; guestpass; rodzinnie prowadzone.\n**\u2212** liczba/wielko\u015b\u0107 jednostek pod 4 rodziny do potwierdzenia.\n\nAlternatywy w Olang: Residence Maximilian (prywatna sauna\nw apartamencie), Aparthotel Familiaris (baseny, family resort \u2014 wy\u017csza\np\u00f3\u0142ka), Residence Sonnwies (kolacje w hotelu Markushof obok).", "kronplatz/region": "# Kronplatz \u2014 informacje o regionie\n\nWariant \"Dolomity bez powt\u00f3rki Sella Rondy\". Baza: **Olang/Valdaora**\nu podn\u00f3\u017ca g\u00f3ry. Oferty \u2192 [`kronplatz/oferty/`](/kronplatz/oferty/index.md).\n\n## Charakter terminu 6\u201313.02.2027\n\nWysoki sezon Dolomiti Superski (pe\u0142na taryfa), ale wa\u017cna r\u00f3\u017cnica vs\nAustria: niemiecki/austriacki ruch karnawa\u0142owy koncentruje si\u0119 w Tyrolu\nP\u0142n. i Salzburgu \u2014 w Pusterii t\u0142ok jest zauwa\u017calnie mniejszy ni\u017c\nw Saalbach/Ischgl w tym samym tygodniu. W\u0142oskie ferie (settimana bianca)\nrozk\u0142adaj\u0105 si\u0119 na ca\u0142y luty.\n\n## Teren\n\n- **Kronplatz: 121 km tras** na jednej g\u00f3rze; s\u0142ynne czarne (Sylvester,\n Herrnegg, Piculin); snowpark; kolejki z 3 stron (Brunico, Olang,\n San Vigilio); MMM Corones na szczycie.\n- **Karnet = Dolomiti Superski (1 200 km)**: kolejk\u0105 Piculin do Alta\n Badii bez auta; autem 40\u201350 min Cortina lub 3 Zinnen.\n\n## Skipass \u2014 Dolomiti Superski (wysoki sezon)\n\n| Taryfa 6 dni | Szacunek 26/27 | Status |\n|---|---|---|\n| Doros\u0142y | ~445\u2013465 \u20ac | SZACUNEK |\n| Junior do 18 lat (rocznik) \u221230% | ~310\u2013325 \u20ac | SZACUNEK |\n| Online \u22652 dni wcze\u015bniej | \u22125% | regu\u0142a potwierdzona 25/26 |\n\nPunkt odniesienia: [oficjalny cennik Kronplatz 25/26 (PDF)](https://www.kronplatz.com/kronplatz/skirama/allgemein/skipasspreise/Prezzi_Preise_Prices_Kronplatz_2025_2026.pdf)\n\u2014 404/283 \u20ac za 6 dni; sezon 26/27 wci\u0105\u017c do potwierdzenia.\n\n| Rodzina | Skipassy 6 dni |\n|---|---|\n| 2+2 (junior obejmuje 17-latka!) | ~1 490\u20131 560 \u20ac |\n| 2+1 | ~1 190\u20131 250 \u20ac |\n| **Grupa 14 os.** | **~5 200\u20135 500 \u20ac** (online \u22125%) |\n\n## Dojazd z Warszawy\n\n~1 050 km \u2014 najkr\u00f3tszy w\u0142oski wariant (Salzburg\u2192Felbertauern lub\nInnsbruck\u2192Brenner). Winiety CZ+AT + tunel/A13 ~25 \u20ac RT. ~370 \u20ac/auto.\n\n## Koszty \u017cycia\n\nObiad na stoku 14\u201320 \u20ac, pizza 9\u201313 \u20ac, zakupy w Brunico (Eurospar/Lidl).\nTaksa ~2\u20132,50 \u20ac/os./noc.\n\n## Bud\u017cet grupy (14 os., tydzie\u0144, wysoki sezon)\n\n| Pozycja | Kwota |\n|---|---|\n| Noclegi (Olang, 4 apartamenty) | 4 800\u20137 000 \u20ac |\n| Skipassy | ~5 200\u20135 500 \u20ac |\n| Dojazd (4 auta) | ~1 480 \u20ac |\n| Jedzenie + taksy | 3 000\u20133 700 \u20ac |\n| **RAZEM** | **~14 500\u201317 700 \u20ac** |", "saalbach/oferty/alpenparks-rehrenberg": "# AlpenParks Rehrenberg Viehhofen \u2014 ARCHIWALNA\n\n> \u26a0\ufe0f **Karta archiwalna \u2014 poza paczk\u0105 riserczow\u0105 08.2026.** Powsta\u0142a przy\n> poprzednim terminie **16\u201323.01.2027** i nie by\u0142a sprawdzana na\n> **6\u201313.02.2027**; ceny ni\u017cej to stawki styczniowe, w Fasching b\u0119d\u0105\n> wy\u017csze. Karta nie wchodzi do tabeli por\u00f3wnawczej ani do status\u00f3w\n> dost\u0119pno\u015bci. Obiekt zostaje na radarze, bo ma silnik online \u2014 je\u015bli\n> [Sonnleiten](/saalbach/oferty/alpenparks-sonnleiten.md) oka\u017ce si\u0119\n> pe\u0142ny, tu sprawdzicie datami r\u00f3wnie szybko.\n> Aktualny stan \u2192 [wyjazd](/wyjazd.md).\n\n## W skr\u00f3cie\n\nNajta\u0144szy \"nowy\" obiekt na li\u015bcie: przestronne, nowoczesne apartamenty\nz prywatnymi saunami w Viehhofen. Traktowany jako rezerwa \u2014 cena kusi,\nale opinie s\u0105 mieszane i logistyka na stok s\u0142absza ni\u017c u konkurencji.\n\n## Fakty\n\n- Nowe budownictwo, du\u017ce apartamenty, cz\u0119\u015b\u0107 z w\u0142asn\u0105 saun\u0105.\n- 5\u201310 min pieszo do gondoli zellamseeXpress (strona Zell am See);\n do Skicircusu skibusem.\n- Rezerwacja online przez alpenparks.at.\n\n## Uk\u0142ad dla naszej grupy (14 os.)\n\n| Rodzina | Szacunkowy koszt/tydzie\u0144 |\n|---|---|\n| 2\u00d7 rodzina 2+2 | ~1 100\u20131 500 \u20ac |\n| 2\u00d7 rodzina 2+1 | ~950\u20131 250 \u20ac |\n\n## Plusy / minusy\n\n**+** najni\u017csza cena za nowy standard; prywatne sauny; du\u017ca dost\u0119pno\u015b\u0107\n(spory obiekt); pe\u0142na rezerwacja online.\n\n**\u2212** powtarzaj\u0105ce si\u0119 w recenzjach zastrze\u017cenia do skibusa (ma\u0142y,\nzat\u0142oczony rano) i obs\u0142ugi/organizacji \u2014 **przed rezerwacj\u0105 przeczyta\u0107\n\u015bwie\u017ce opinie z zimy 25/26**; Viehhofen bez wieczornego \u017cycia; sumarycznie\ngorszy pakiet ni\u017c Sportchalet za podobne pieni\u0105dze.\n\n## Do zrobienia\n\n- [ ] Tylko je\u015bli plany A i B nie wypal\u0105: sprawdzi\u0107 ceny datami 16\u201323.01.2027.\n- [ ] Zweryfikowa\u0107 najnowsze opinie (Booking/Google, filtr: zima 2026).", "saalbach/oferty/alpenparks-sonnleiten": "# AlpenParks Sonnleiten \u2014 PLAN A-bis\n\n## Dost\u0119pno\u015b\u0107 6\u201313.02.2027: \ud83d\udd0d BRAK DANYCH (weryfikacja online w 2 min)\n\nDu\u017cy obiekt + silnik rezerwacyjny = jedyne miejsce w Saalbach na li\u015bcie,\ngdzie dost\u0119pno\u015b\u0107 i cen\u0119 na szczyt lutowy sprawdzicie natychmiast bez\nmaili. Skala obiektu = najwi\u0119ksza szansa na 4 wolne jednostki nawet\nw Fasching.\n\n## W skr\u00f3cie\n\nAparthotel ~2 min od stoku; basen + sauna w cenie (z\u0142oto przy 6\ndzieciach); restauracja; apartamenty 2\u20138 os.\n\n**+** basen; dost\u0119pno\u015b\u0107; rezerwacja/anulacja na warunkach online.\n**\u2212** ceny sieci\u00f3wki sztywne w negocjacji; mniej kameralnie.", "saalbach/oferty/dom-dla-grupy": "# Dom dla ca\u0142ej grupy (12\u201314 os.) \u2014 koncept (ARCHIWALNA)\n\n> \u26a0\ufe0f **Karta archiwalna \u2014 poza paczk\u0105 riserczow\u0105 08.2026.** Powsta\u0142a przy\n> poprzednim terminie **16\u201323.01.2027**; riscercz na nowy termin\n> **6\u201313.02.2027** jej nie obj\u0105\u0142. Wszystkie ceny, dost\u0119pno\u015bci i wnioski\n> ni\u017cej dotycz\u0105 stycznia i s\u0105 dzi\u015b nieaktualne \u2014 w tygodniu Fasching\n> nale\u017cy si\u0119 spodziewa\u0107 stawek wyra\u017anie wy\u017cszych. Karta nie wchodzi do\n> tabeli por\u00f3wnawczej ani do status\u00f3w dost\u0119pno\u015bci; zostaje jako trop do\n> odgrzania, gdyby grupa wr\u00f3ci\u0142a do wariantu \"jeden dom dla wszystkich\".\n> Aktualny stan \u2192 [wyjazd](/wyjazd.md).\n\n## W skr\u00f3cie\n\nAlternatywa dla \"4 osobnych apartament\u00f3w\": jeden du\u017cy dom wakacyjny dla\nca\u0142ej czternastki. Klimat chaletowy jak w Glemm Lodge (wsp\u00f3lne kolacje,\nwieczory, dzieciaki razem), ale w bud\u017cecie ~po\u0142owy jego ceny \u2014 pod\nwarunkiem odpuszczenia adresu w samym Saalbach.\n\n## Gdzie geograficznie\n\n- **Viehhofen / Maishofen** \u2014 3\u20138 km od Saalbach, skibus lub 10 min autem.\n- **Strona Fieberbrunn / St. Jakob in Haus / Hochfilzen** \u2014 wej\u015bcie do\n Skicircusu od ty\u0142u przez gondol\u0119 Fieberbrunn; okolica ta\u0144sza, spokojna.\n\n## Parametry do filtrowania przy szukaniu\n\n- \u2265 5 sypialni (4 rodzicielskie + konfiguracje dla 6 dzieci), \u2265 3 \u0142azienki.\n- Du\u017cy salon + jadalnia na 14 os. (wsp\u00f3lne kolacje to sens tego wariantu).\n- Parking na 4 auta, narciarnia/suszarnia.\n- Cena docelowa: \u2264 6 500 \u20ac/tydzie\u0144 w terminie 16\u201323.01.2027.\n- Sauna = mi\u0142y bonus, cz\u0119sty w tym segmencie.\n\n## Rozliczenie (podzia\u0142 od osoby, 14 os.)\n\n| Rodzina | Udzia\u0142 | Przy 5 500 \u20ac/tydzie\u0144 |\n|---|---|---|\n| 2+2 | 4/14 | ~1 570 \u20ac |\n| 2+1 | 3/14 | ~1 180 \u20ac |\n\n## Plusy / minusy\n\n**+** najlepszy klimat grupowy; wsp\u00f3lne gotowanie tnie koszty jedzenia;\nzwykle najlepszy metra\u017c za euro; jedna rezerwacja.\n\n**\u2212** logistyka poranna (14 os. na skibus/auta); jedna kuchnia i salon =\npotrzebna zgodno\u015b\u0107 grupy; pojedyncza rezerwacja = pojedyncze ryzyko\n(anulacja jednej rodziny obci\u0105\u017ca reszt\u0119 \u2014 spisa\u0107 zasady z g\u00f3ry!);\nkonkretny dom trzeba dopiero znale\u017a\u0107.\n\n## Do zrobienia\n\n- [ ] Przeszuka\u0107 portale (lista w nag\u0142\u00f3wku) filtrem: 14 os., 16\u201323.01.2027,\n Viehhofen/Maishofen/Fieberbrunn.\n- [ ] Shortlista 3 dom\u00f3w \u2192 weryfikacja opinii \u2192 zapytania.\n- [ ] Umowa wewn\u0119trzna grupy: zaliczki, zasady rezygnacji, podzia\u0142 od osoby.", "saalbach/oferty/glemm-lodge": "# Glemm Lodge \u2014 \u274c NIEDOST\u0118PNY 6\u201313.02 (zweryfikowane)\n\n## Dost\u0119pno\u015b\u0107 (kalendarz obiektu, stan 01.08.2026)\n\n| Tydzie\u0144 | Top 1 | Top 2 | Top 3 | 2 apartamenty naraz? |\n|---|---|---|---|---|\n| **06\u201313.02.2027** | ZAJ\u0118TY | ZAJ\u0118TY | ZAJ\u0118TY | \u274c |\n| 13\u201320.02.2027 | **WOLNY** | zaj\u0119ty | **WOLNY** | \u2705 |\n| 20\u201327.02.2027 | ZAJ\u0118TY | ZAJ\u0118TY | ZAJ\u0118TY | \u274c |\n| 27.02\u201306.03.2027 | **WOLNY** | **WOLNY** | **WOLNY** | \u2705 |\n\nKalendarz obiektu oznacza 04\u201308.02 jako Fasching \u2014 tydzie\u0144 wyprzedany.\n\n## Cennik (oficjalny, zima 26/27)\n\nCa\u0142y okres 02.01\u201305.03.2027 = high season: **1 000 \u20ac/noc, 7 000 \u20ac/tydz.**\nza apartament 10\u201312 os. (117\u2013128 m\u00b2, 3 \u0142azienki). Plus: sprz\u0105tanie 500 \u20ac,\ntaksa 3 \u20ac/os./noc, kaucja 900 \u20ac. Kosztorys 2 apartament\u00f3w (14 os.):\n2\u00d7 7 647 \u20ac \u2192 rodzina 2+2 ~4 370 \u20ac, rodzina 2+1 ~3 277 \u20ac.\n\n## Warunki\n\nZaliczka 30%; reszta + kaucja 90 dni przed. Bezp\u0142atna anulacja do 91 dni\nprzed przyjazdem (dla 13.02 \u2192 deadline ~14.11.2026), potem 100%.\n\n## Wniosek\n\nDla 6\u201313.02 odpada fizycznie. Przy przesuni\u0119ciu grupy na **13\u201320.02**\nwraca opcja 2 apartament\u00f3w (nadal ~2\u00d7 powy\u017cej celu ~2 000 \u20ac/rodzin\u0119,\nchyba \u017ce negocjacja za 7 os. zejdzie do ~5 000 \u20ac/apartament).\nTen wpis jest zarazem twardym dowodem presji na tydzie\u0144 Fasching \u2014\npatrz [wyjazd](/wyjazd.md) i [region](/saalbach/region.md).", "saalbach/oferty/kristall-schattbergxpress": "# Appartementhaus Kristall at SchattbergXpress \u2014 PLAN A\n\n## Dost\u0119pno\u015b\u0107 6\u201313.02.2027: \ud83d\udd0d BRAK DANYCH\n\nObiekt nie publikuje kalendarza. Weryfikacja: wpisa\u0107 daty na Bookingu /\nstronie All in One Apartments + r\u00f3wnolegle\n[mail grupowy](/szablon-maila.md) o 4 jednostki. W tygodniu Fasching\ndu\u017ce ryzyko braku 4 apartament\u00f3w naraz \u2014 dzia\u0142a\u0107 natychmiast.\n\n## W skr\u00f3cie\n\n50 m od gondoli Schattberg X-press, \u015bcis\u0142e centrum Saalbach. Apartamenty\n2\u20136 os. (jednostki 4-os. z dwiema \u0142azienkami), 1 parking/apartament,\nwsp\u00f3lna strefa spa, narciarnia z suszark\u0105, restauracja 20 m, sklep 50 m.\n\n## Uk\u0142ad i koszty (szacunek, szczyt)\n\n| Rodzina | Apartament | Koszt/tydzie\u0144 |\n|---|---|---|\n| 2\u00d7 (2+2) | 4-os., 2 \u0142azienki | ~1 800\u20132 400 \u20ac |\n| 2\u00d7 (2+1) | 3\u20134-os. | ~1 500\u20132 000 \u20ac |\n\n**+** lokalizacja bezkonkurencyjna; prywatno\u015b\u0107; spa; parking; centrum.\n**\u2212** brak wsp\u00f3lnego salonu; centrum g\u0142o\u015bne w tygodniu karnawa\u0142u.", "saalbach/oferty/sportchalet-viehhofen": "# Sportchalet Viehhofen \u2014 PLAN B\n\n## Dost\u0119pno\u015b\u0107 6\u201313.02.2027: \ud83d\udd0d BRAK DANYCH (mail)\n\nKameralny obiekt 5.0\u2605; opinie wprost opisuj\u0105 scenariusz \"kilka rodzin,\nkilka apartament\u00f3w\". Gondola zellamseeXpress za rogiem (na ALPIN CARD),\nskibus do Skicircusu pod domem. Wycena i dost\u0119pno\u015b\u0107 wy\u0142\u0105cznie przez\n[mail grupowy](/szablon-maila.md).\n\n**+** najlepszy stosunek ceny do jako\u015bci; klimat \"ca\u0142y dom dla nas\";\nnegocjacja z prywatnym gospodarzem realna nawet w szczycie.\n**\u2212** nie ski-in (5\u201310 min skibus); Viehhofen cichy wieczorami.", "saalbach/region": "# Skicircus Saalbach \u2014 informacje o regionie\n\nBazowy wariant wyjazdu. Dokument zbiera wszystko poza noclegiem;\noferty \u2192 [`saalbach/oferty/`](/saalbach/oferty/index.md).\n\n## \u26a0\ufe0f Charakter terminu 6\u201313.02.2027\n\nNajbardziej oblegany tydzie\u0144 zimy w austriackich Alpach: **Fasching**\n(kulminacja karnawa\u0142u, Rosenmontag 8.02, Popielec 10.02) + ferie\nbawarskie + cz\u0119\u015b\u0107 ferii polskich. Konsekwencje: najwy\u017csze ceny nocleg\u00f3w\nw sezonie, t\u0142ok na trasach, rezerwacje grupowe wymagane NATYCHMIAST \u2014\nobiekty zape\u0142niaj\u0105 ten tydzie\u0144 pierwszymi rezerwacjami w roku\n(dow\u00f3d: [Glemm Lodge](/saalbach/oferty/glemm-lodge.md) ju\u017c wyprzedany).\n\n## Teren\n\n- 270 km po\u0142\u0105czonych tras \u2014 klimat najbli\u017cszy Sella Rondzie; p\u0119tla\n \"Skicircus challenge\" na ca\u0142y dzie\u0144; snowparki (Nightpark Hinterglemm,\n Learn-to-Ride Leogang).\n- Najkr\u00f3tszy dojazd z Warszawy z rozwa\u017canych region\u00f3w (~950 km).\n\n## Skipass \u2014 ALPIN CARD (Skicircus + Zell am See + Kitzsteinhorn)\n\n| Taryfa 6 dni | Szacunek 26/27 | Status |\n|---|---|---|\n| Doros\u0142y | ~445\u2013470 \u20ac | SZACUNEK (+3\u20135% do 25/26) |\n| M\u0142odzie\u017c do 18 lat | ~335\u2013355 \u20ac | SZACUNEK |\n| Dziecko do ~15 lat | ~225\u2013240 \u20ac | SZACUNEK |\n\n| Rodzina | Skipassy 6 dni |\n|---|---|\n| 2+2 | ~1 570\u20131 650 \u20ac |\n| 2+1 | ~1 120\u20131 180 \u20ac |\n| **Grupa 14 os.** | **~5 400 \u20ac** |\n\nCennik 26/27 do potwierdzenia na alpincard.at (jesie\u0144 2026). Stawki\n[peak season z saalbach.com](https://www.saalbach.com/en/winter/skitickets/peak-season)\n(440/330/220 \u20ac, info od grupy z 08.2026) mieszcz\u0105 si\u0119 w tym przedziale \u2014\na w Fasching obowi\u0105zuje w\u0142a\u015bnie taryfa peak.\n\n## Dojazd z Warszawy\n\n~950 km (Katowice\u2013Ostrawa\u2013Brno\u2013Wiede\u0144\u2013Salzburg\u2013Zell am See), 10\u201312 h.\nWiniety CZ+AT; trasa przez Lofer (B311) omija odcinki specjalne.\n~330 \u20ac/auto w obie strony. Sobota 6.02 = szczyt wymiany turnus\u00f3w:\nkorki na B311 i w Glemmtal \u2014 rozwa\u017cy\u0107 wyjazd w pi\u0105tek z noclegiem\ntranzytowym.\n\n## Koszty \u017cycia\n\nObiad na stoku 15\u201322 \u20ac; taksa ~2\u20133 \u20ac/os./noc; skibus bezp\u0142atny.\nW tygodniu karnawa\u0142u stoliki na wiecz\u00f3r rezerwowa\u0107 z wyprzedzeniem.\n\n## Bud\u017cet grupy (14 os., tydzie\u0144, SZCZYT)\n\n| Pozycja | Kwota |\n|---|---|\n| Noclegi (4 apartamenty) | 6 500\u20139 000 \u20ac |\n| Skipassy | ~5 400 \u20ac |\n| Dojazd (4 auta) | ~1 320 \u20ac |\n| Jedzenie + taksy | 3 000\u20133 800 \u20ac |\n| **RAZEM** | **~16 200\u201319 500 \u20ac** (\u2248 1 160\u20131 390 \u20ac/os.) |", "sfl/oferty/apart-ideal-serfaus": "# Apart Ideal (Serfaus) \u2014 PLAN B\n\n## Dost\u0119pno\u015b\u0107 6\u201313.02.2027: \ud83d\udd0d BRAK DANYCH (enquiry)\n\nDom z **6 apartamentami** (ocena 4.8/5) na spokojnych obrze\u017cach Serfaus;\nstacja podziemnego metra 50 m od domu \u2192 kolejka w <10 min bez auta.\nSerwis pieczywa rano, parking, trawnik.\n\n**+** 4 z 6 jednostek = prawie ca\u0142y dom; metro zamiast skibusa; pe\u0142na\ninfrastruktura Serfaus (restauracje, szk\u00f3\u0142ki, atrakcje wieczorne).\n**\u2212** najdro\u017csza wie\u015b regionu (+20\u201330% vs Ladis); w Fasching t\u0142oczno.", "sfl/oferty/haus-central-ladis": "# Haus Central / Apart Central (Ladis) \u2014 PLAN A\n\n## Dost\u0119pno\u015b\u0107 6\u201313.02.2027: \ud83d\udd0d BRAK DANYCH (enquiry)\n\nDom z **dok\u0142adnie 4 apartamentami** (ka\u017cdy z balkonem) w Ladis \u2014\nnajta\u0144szej wsi p\u0142askowy\u017cu. Oficjalne tagi \"group accommodation\"\ni \"family friendly\"; przy kolejce Sonnenbahn Ladis-Fiss, trasie\ni skibusie; narciarnia z suszark\u0105; parking. Zapytanie \u2192\n[szablon maila](/szablon-maila.md) (z pytaniem o ca\u0142y dom).\n\n**+** konfiguracja 1:1 pod 4 rodziny; ca\u0142y dom; Ladis = najni\u017csze ceny\nna p\u0142askowy\u017cu; przy wyci\u0105gu.\n**\u2212** najmniejsza wioska (sklep podstawowy, 2\u20133 restauracje); wieczorem\nbardzo cicho.\n\nAlternatywa w Ladis: Laudegghof (4\u2605, jacuzzi/spa, 8.0 na Expedia,\nsprz\u0105tanie 100\u2013120 \u20ac/apartament).", "sfl/region": "# Serfaus-Fiss-Ladis \u2014 informacje o regionie\n\nNajbardziej rodzinny kurort Alp: s\u0142oneczny p\u0142askowy\u017c 1 200\u20131 400 m,\n**214 km tras, 68 wyci\u0105g\u00f3w**, jazda do 2 820 m. Dwa snowparki\n(Freestyle Circus Serfaus, Fun Area Fiss-Ladis), funslope'y, podziemne\nmetro w Serfaus (wioska bez aut).\nOferty \u2192 [`sfl/oferty/`](/sfl/oferty/index.md).\n\n## \u26a0\ufe0f Charakter terminu 6\u201313.02.2027\n\nW SFL to **pe\u0142ny wysoki sezon** (wg ich podzia\u0142u z 25/26 high season\ntrwa od ~25.01 do pocz\u0105tku marca) + tydzie\u0144 Fasching. Poprzednia\nprzewaga cenowa SFL dotyczy\u0142a stycznia (niski sezon 10\u201323.01) \u2014\n**w lutym znika**: p\u0142acicie pe\u0142ne taryfy i konkurujecie o noclegi\nz niemieckimi rodzinami (SFL to ich kultowy kierunek ferii).\n\n## Skipass\n\nDwucenowy system: **G\u00e4stekarta** (automatycznie przy noclegu w regionie)\nobni\u017ca taryfy dla ca\u0142ej rodziny. Kategorie wiekowe ROCZNIKOWE.\n\n| Taryfa 6 dni, wysoki sezon, z g\u00e4stekart\u0105 | Szacunek 26/27 | Status |\n|---|---|---|\n| Doros\u0142y | ~400\u2013430 \u20ac | SZACUNEK |\n| M\u0142odzie\u017c (rocznikowo ~15\u201317) | ~320\u2013350 \u20ac | SZACUNEK |\n| Dziecko (rocznikowo ~11\u201315) | ~200\u2013220 \u20ac | SZACUNEK |\n| Dzieci ur. 2020+ | gratis | regu\u0142a potwierdzona 25/26 |\n\n| Rodzina | Skipassy 6 dni |\n|---|---|\n| 2+2 | ~1 440\u20131 560 \u20ac |\n| 2+1 | ~1 000\u20131 080 \u20ac |\n| **Grupa 14 os.** | **~4 900\u20135 300 \u20ac** |\n\n> Progi rocznikowe 26/27 sprawdzi\u0107 przed zakupem na\n> serfaus-fiss-ladis.at. KeyCard: depozyt 2 \u20ac/szt.\n> Przegl\u0105d kontrolny (portal agreguj\u0105cy, nie cennik oficjalny):\n> [skiinfo.pl \u2014 Serfaus-Fiss-Ladis](https://www.skiinfo.pl/tyrol/serfaus-fiss-ladis/osrodek-narciarski).\n\n## Dojazd z Warszawy\n\n~1 120 km (jak do Ischgl do Landeck, potem serpentyny na p\u0142askowy\u017c\nRied\u2192Fiss/Serfaus, ~10 km podjazdu). Winiety CZ+AT. ~350 \u20ac/auto.\nSobota 6.02: kolejka aut na serpentynach w godzinach przyjazdowych.\n\n## Koszty \u017cycia\n\nTaniej ni\u017c Ischgl, podobnie do Saalbach: obiad na stoku 15\u201320 \u20ac.\nMPREIS/Spar w ka\u017cdej wsi. Taksa ~2,50\u20133 \u20ac/os./noc. Bezp\u0142atny skibus\nSerfaus\u2013Fiss\u2013Ladis.\n\n## Bud\u017cet grupy (14 os., tydzie\u0144, WYSOKI SEZON)\n\n| Pozycja | Kwota |\n|---|---|\n| Noclegi (Fiss/Ladis, 4 apartamenty) | 5 200\u20137 500 \u20ac |\n| Skipassy | ~4 900\u20135 300 \u20ac |\n| Dojazd (4 auta) | ~1 400 \u20ac |\n| Jedzenie + taksy | 3 000\u20133 700 \u20ac |\n| **RAZEM** | **~14 500\u201317 900 \u20ac** |", "szablon-maila": "# Szablon maila \u2014 zapytanie grupowe (EN)\n\nTen sam mail r\u00f3wnolegle do plan\u00f3w A wszystkich region\u00f3w; podmienia\u0107\n[pola]. Przy obiektach \"ca\u0142y dom\"\n([H\u00e4uslerhof](/kronplatz/oferty/haeuslerhof-valdaora.md),\n[Haus Central](/sfl/oferty/haus-central-ladis.md),\n[Brandau](/ischgl/oferty/apartment-brandau-kappl.md))\nzostawi\u0107 pytanie o zaj\u0119cie ca\u0142ego obiektu.\n\n---\n\n**Subject:** Group inquiry \u2014 4 apartments, week 6\u201313 Feb 2027 (14 persons)\n\nDear [Sir or Madam / imi\u0119 gospodarza],\n\nWe are a group of four families from Poland (14 persons in total:\n8 adults, 4 teenagers and 2 children) planning a ski week in\n[miejscowo\u015b\u0107] in February 2027.\n\nWe would like to ask about availability and a group offer for:\n\n- **4 apartments** (2\u00d7 for 4 persons: 2 adults + 2 teenagers;\n 2\u00d7 for 3 persons: 2 adults + 1 child)\n- **Arrival Sat 6 February \u2013 departure Sat 13 February 2027** (7 nights)\n- If this week is not available, please let us know your closest\n available week in February/early March 2027.\n\nCould you please send us:\n\n1. Availability for these dates and apartment types,\n2. Your best total price for the group (incl. final cleaning and taxes),\n3. Deposit and cancellation terms.\n\nSince we would book four apartments (possibly your entire house) for\na full week directly with you, we would appreciate a group rate.\n\nBest regards,\n[Imi\u0119 i nazwisko]\n[Telefon / e-mail]\n\n---\n\n## Notatki taktyczne\n\n- Fasching = rynek gospodarza: nie zwleka\u0107, wys\u0142a\u0107 do wszystkich plan\u00f3w\n A i B jednocze\u015bnie i por\u00f3wna\u0107.\n- Pytanie o \"closest available week\" celowo w mailu \u2014 je\u015bli 6\u201313.02\n wsz\u0119dzie pe\u0142ne, dostaniecie od razu alternatywy (np.\n [Glemm Lodge](/saalbach/oferty/glemm-lodge.md) ma zweryfikowane wolne\n 13\u201320.02).\n- Nie podawa\u0107 bud\u017cetu w pierwszym mailu; oferta pisemnie, nie\n telefonicznie; negocjowa\u0107 drug\u0105 rund\u0105 (\"we received a comparable\n offer at X \u20ac\").\n- Wysy\u0142a\u0107 z jednego \"kontaktowego\" adresu \u2014 jedna osoba negocjuje\n za ca\u0142\u0105 grup\u0119.", "wyjazd": "# Ski 2027 \u2014 baza wiedzy wyjazdu (termin 6\u201313.02.2027)\n\nWyjazd narciarski 4 rodzin: 2\u00d7(2+2 nastolatki) + 2\u00d7(2+1 dziecko) =\n**14 os\u00f3b**, samochodami z Warszawy.\n\n- **Termin:** 6\u201313.02.2027 (sobota\u2013sobota, 7 nocy).\n- **Charakter terminu:** szczyt sezonu \u2014 tydzie\u0144 karnawa\u0142u (Fasching).\n- **Cel bud\u017cetowy noclegu:** ~2 000 \u20ac/rodzin\u0119 za tydzie\u0144; w tym terminie\n osi\u0105galny tylko w ta\u0144szych bazach (Kappl, Olang, Ladis).\n\nJedna paczka, cztery regiony w tym samym schemacie: `<region>/region.md`\n(teren, skipass, dojazd, bud\u017cet) + `<region>/oferty/*.md` (karty nocleg\u00f3w).\n\n## \u26a0\ufe0f Najwa\u017cniejsze ustalenie riserczu\n\n**6\u201313.02.2027 to tydzie\u0144 karnawa\u0142u (Fasching)** \u2014 szczyt szczytu\nw austriackich Alpach. Twardy dow\u00f3d z jedynego obiektu z publicznym\nkalendarzem: [Glemm Lodge](/saalbach/oferty/glemm-lodge.md) ma na ten\ntydzie\u0144 zaj\u0119te wszystkie 3 apartamenty ju\u017c dzi\u015b (przy wolnych tygodniach\nprzed i po). Wniosek dla ca\u0142ej grupy: decyzja i zapytania mailowe\nNATYCHMIAST, bo pula apartament\u00f3w grupowych na ten tydzie\u0144 topnieje\nnajszybciej w sezonie.\n\n## Por\u00f3wnanie region\u00f3w (14 os., tydzie\u0144, 6 dni jazdy)\n\n| | [Saalbach](/saalbach/region.md) | [Ischgl/Paznaun](/ischgl/region.md) | [Kronplatz](/kronplatz/region.md) | [SFL](/sfl/region.md) |\n|---|---|---|---|---|\n| Trasy | 270 km | 239 km (+40 Kappl) | 121 km + Superski 1200 km | 214 km |\n| Dojazd z W-wy | **~950 km** | ~1 150 km | ~1 050 km | ~1 120 km |\n| Skipassy grupy | ~5 400 \u20ac (szac.) | **~5 150 \u20ac (ZWERYF.)** | ~5 200\u20135 500 \u20ac (szac.) | ~4 900\u20135 300 \u20ac (szac.) |\n| Zni\u017cka 17-latka | \u2705 do 18 | \u274c od 17 = doros\u0142y | \u2705 do 18 | \u2705 (rocznikowo) |\n| Noclegi 4 apart. | 6 500\u20139 000 \u20ac | 4 500\u20136 500 \u20ac (Kappl) | 4 800\u20137 000 \u20ac (Olang) | 5 200\u20137 500 \u20ac (Ladis/Fiss) |\n| T\u0142ok 6\u201313.02 | \ud83d\udd34 maksymalny (Fasching) | \ud83d\udd34 maksymalny + imprezy | \ud83d\udfe1 umiarkowany | \ud83d\udd34 wysoki (ferie DE) |\n| **Bud\u017cet grupy razem** | ~16 200\u201319 500 \u20ac | ~14 200\u201317 000 \u20ac | **~14 500\u201317 700 \u20ac** | ~14 500\u201317 900 \u20ac |\n| Charakter | wielka karuzela | wysokog\u00f3rski + Samnaun | Dolomity bez powt\u00f3rki | rodzinny kombajn |\n\n## Karty ofert \u2014 status dost\u0119pno\u015bci na 6\u201313.02.2027\n\nLegenda: \u2705 DOST\u0118PNE (zweryfikowane) \u00b7 \u274c BRAK (zweryfikowane) \u00b7\n\ud83d\udd0d BRAK DANYCH (do weryfikacji).\n\n| Region | Oferta | Dost\u0119pno\u015b\u0107 | Cena |\n|---|---|---|---|\n| Saalbach | [Kristall @ SchattbergXpress](/saalbach/oferty/kristall-schattbergxpress.md) | \ud83d\udd0d BRAK DANYCH | szacunek |\n| Saalbach | [AlpenParks Sonnleiten](/saalbach/oferty/alpenparks-sonnleiten.md) | \ud83d\udd0d BRAK DANYCH (silnik online \u2014 sprawdzisz w 2 min) | szacunek |\n| Saalbach | [Sportchalet Viehhofen](/saalbach/oferty/sportchalet-viehhofen.md) | \ud83d\udd0d BRAK DANYCH | szacunek |\n| Saalbach | [Glemm Lodge](/saalbach/oferty/glemm-lodge.md) | \u274c **BRAK (ZWERYFIKOWANE)** \u2014 wolne od 13.02 | ZWERYFIKOWANA |\n| Ischgl | [Apartment Brandau](/ischgl/oferty/apartment-brandau-kappl.md) | \ud83d\udd0d BRAK DANYCH | szacunek |\n| Ischgl | [Apartments Kappl](/ischgl/oferty/apartments-kappl.md) | \ud83d\udd0d BRAK DANYCH | szacunek |\n| Kronplatz | [H\u00e4uslerhof](/kronplatz/oferty/haeuslerhof-valdaora.md) | \ud83d\udd0d BRAK DANYCH | szacunek (anulacja ZWERYF.) |\n| Kronplatz | [Residence Corones](/kronplatz/oferty/residence-corones-valdaora.md) | \ud83d\udd0d BRAK DANYCH | szacunek |\n| SFL | [Haus Central Ladis](/sfl/oferty/haus-central-ladis.md) | \ud83d\udd0d BRAK DANYCH | szacunek |\n| SFL | [Apart Ideal Serfaus](/sfl/oferty/apart-ideal-serfaus.md) | \ud83d\udd0d BRAK DANYCH | szacunek |\n\n**Bilans: 1 status zweryfikowany (i to negatywny), 9 do weryfikacji.**\n\nUwaga metodologiczna: \ud83d\udd0d BRAK DANYCH oznacza, \u017ce obiekt nie publikuje\nkalendarza (ma\u0142e domy = wycena i dost\u0119pno\u015b\u0107 tylko przez mail/enquiry).\nJedyny obiekt z publicznym kalendarzem (Glemm Lodge) zosta\u0142 zweryfikowany\n01.08.2026. Najszybsza droga do pierwszego \u2705 prowadzi przez\n[AlpenParks Sonnleiten](/saalbach/oferty/alpenparks-sonnleiten.md) \u2014\nsilnik rezerwacyjny online, odpowied\u017a od r\u0119ki.\n\n### Wnioski przekrojowe\n\n1. **Kronplatz najlepiej znosi ten termin**: mniejszy nacisk karnawa\u0142owy\n ni\u017c Austria, bud\u017cet w \u015brodku stawki, junior do 18 lat.\n2. **Saalbach traci przewag\u0119 cenow\u0105 nocleg\u00f3w** w Fasching \u2014 wchodzi\n w bud\u017cet 16\u201319,5 tys. \u20ac; zostaje mu dojazd i wielko\u015b\u0107 terenu.\n3. **Ischgl paradoksalnie konkurencyjny cenowo** (mieszkaj\u0105c w Kappl):\n skipass bez dop\u0142aty sezonowej \u2014 ale pilnowa\u0107 rocznika 17-latk\u00f3w\n (\u274c zni\u017cka tylko do <17, +194 \u20ac za ka\u017cdego 17-latka) i liczy\u0107 si\u0119\n z maksymalnym t\u0142okiem.\n4. **SFL w lutym bez styczniowej przewagi cenowej** \u2014 nadal najlepszy\n funkcjonalnie dla dzieci, ale ju\u017c nie najta\u0144szy (u nich luty to pe\u0142ny\n wysoki sezon).\n5. Glemm Lodge pokazuje skal\u0119 presji na ten tydzie\u0144: wyprzedany\n z p\u00f3\u0142rocznym wyprzedzeniem. Mail grupowy do plan-A-obiekt\u00f3w\n wszystkich 4 region\u00f3w najlepiej wys\u0142a\u0107 w tym tygodniu i decydowa\u0107\n po pierwszych odpowiedziach.\n\n## Noclegi w wariantach\n\n| Wariant | PLAN A | PLAN B | \u20ac/rodzin\u0119 2+2 |\n|---|---|---|---|\n| [Saalbach](/saalbach/index.md) | [Kristall](/saalbach/oferty/kristall-schattbergxpress.md), Saalbach centrum | [Sportchalet](/saalbach/oferty/sportchalet-viehhofen.md), Viehhofen | ~1 500\u20132 400 |\n| [Ischgl](/ischgl/index.md) | [Apartment Brandau](/ischgl/oferty/apartment-brandau-kappl.md), Kappl | [Apartments Kappl](/ischgl/oferty/apartments-kappl.md) | ~1 100\u20131 700 |\n| [Kronplatz](/kronplatz/index.md) | [H\u00e4uslerhof](/kronplatz/oferty/haeuslerhof-valdaora.md), Valdaora | [Residence Corones](/kronplatz/oferty/residence-corones-valdaora.md) | ~1 000\u20131 600 |\n| [SFL](/sfl/index.md) | [Haus Central](/sfl/oferty/haus-central-ladis.md), Ladis | [Apart Ideal](/sfl/oferty/apart-ideal-serfaus.md), Serfaus | ~1 300\u20132 200 |\n\nDwa obiekty maj\u0105 konfiguracj\u0119 **dok\u0142adnie 4 apartament\u00f3w**\n([H\u00e4uslerhof](/kronplatz/oferty/haeuslerhof-valdaora.md),\n[Haus Central](/sfl/oferty/haus-central-ladis.md)) \u2014 grupa zajmuje ca\u0142y\ndom, co daje klimat wsp\u00f3lnego chaletu bez chaletowej ceny. Trzeci obiekt\n\"prawie ca\u0142y dom\" to [Brandau](/ischgl/oferty/apartment-brandau-kappl.md)\n(4 z 6 jednostek).\n\n## Plan B na wypadek pe\u0142nego tygodnia\n\nJe\u015bli 6\u201313.02 oka\u017ce si\u0119 wyprzedany w planach A i B wszystkich region\u00f3w,\ngotowe alternatywy s\u0105 dwie:\n\n- **przesuni\u0119cie o tydzie\u0144 na 13\u201320.02** \u2014 wtedy wraca\n [Glemm Lodge](/saalbach/oferty/glemm-lodge.md) (Top 1 + Top 3 wolne,\n zweryfikowane), a ceny zostaj\u0105 w tej samej taryfie high season;\n- **27.02\u201306.03** \u2014 w Glemm Lodge wolne wszystkie trzy apartamenty, po\n Popielcu presja karnawa\u0142owa opada.\n\nDlatego w [szablonie maila](/szablon-maila.md) jest pytanie o \"closest\navailable week\" \u2014 odpowiedzi same przynios\u0105 list\u0119 alternatyw.\n\n## Kalendarz decyzji\n\n1. **Sierpie\u0144 2026** \u2014 maile do plan\u00f3w A (Kristall, Brandau, H\u00e4uslerhof,\n Haus Central) + odczyt cen online (AlpenParks). Wyb\u00f3r regionu.\n2. **Wrzesie\u0144 2026** \u2014 rezerwacje + zaliczki (30%).\n3. **~6.11\u20136.12.2026** \u2014 okna bezp\u0142atnej anulacji (H\u00e4uslerhof: do\n ~6.12; typowe 90-dniowe: do ~8.11) \u2014 ostatni moment na zmiany.\n4. **Jesie\u0144 2026** \u2014 potwierdzenie cennik\u00f3w skipass\u00f3w 26/27, zakup\n online (Superski \u22125%).\n5. **Stycze\u0144 2027** \u2014 dop\u0142aty, auta, sprz\u0119t, ubezpieczenia (koszty\n rezygnacji + NNW/OC narciarskie).\n\n## Konwencja danych\n\nKa\u017cda karta oferty ma frontmatter YAML z polami OKF (`type`, `title`,\n`description`, `timestamp`, `tags`) oraz z polami rozszerze\u0144: `id`,\n`nazwa`, `miejscowosc`, `gps`, `odleglosc_od_wyciagu`, `ocena`,\n`cena_za_apartament_tydzien`, `koszt_rodzina_2p2`, `koszt_rodzina_2p1`,\n`status_ceny` (SZACUNEK / ZWERYFIKOWANE),\n**`dostepnosc_6_13_02_2027`** (\u2705 / \u274c / \ud83d\udd0d wg legendy wy\u017cej),\n`priorytet`, `www`, `ostatnia_aktualizacja` \u2014 stron\u0119 mo\u017cna generowa\u0107\nstatycznie prosto z tych p\u00f3l.\n\nKarty oznaczone `priorytet: ARCHIWALNA` pochodz\u0105 z riserczu na poprzedni\ntermin (16\u201323.01.2027) i nie by\u0142y weryfikowane na 6\u201313.02 \u2014 nie wchodz\u0105\ndo tabeli por\u00f3wnawczej ani do status\u00f3w dost\u0119pno\u015bci, siedz\u0105 w sekcji\n\"Archiwum\" na dole\n[por\u00f3wnania ofert](/saalbach/oferty/index.md)."}, "types": ["Trip", "external", "narzedzie", "oferta", "oferta-koncept", "region"], "palette": {"BigQuery Dataset": "#8b5cf6", "BigQuery Table": "#3b82f6", "Reference": "#10b981", "external": "#0d9488"}};
</script>
<script>
(function () {
const bundle = window.BUNDLE;
const bundleName = window.BUNDLE_NAME;
document.title = `${bundleName} — OKF Viewer`;
document.getElementById("bundle-name").textContent = bundleName;
// Populate type filter
const typeSelect = document.getElementById("filter-type");
for (const t of bundle.types) {
const opt = document.createElement("option");
opt.value = t;
opt.textContent = t;
typeSelect.appendChild(opt);
}
// Build reverse-link index for backlinks
const backlinks = {};
for (const edge of bundle.edges) {
const { source, target } = edge.data;
(backlinks[target] ||= []).push(source);
}
// Look up node label/type by id
const nodeIndex = {};
for (const n of bundle.nodes) nodeIndex[n.data.id] = n.data;
const cy = cytoscape({
container: document.getElementById("graph"),
elements: [...bundle.nodes, ...bundle.edges],
style: [
{
selector: "node",
style: {
"background-color": "data(color)",
"label": "data(label)",
"color": "#0f172a",
"font-size": 11,
"text-valign": "bottom",
"text-margin-y": 4,
"text-wrap": "wrap",
"text-max-width": 120,
"width": "data(size)",
"height": "data(size)",
"border-width": 1,
"border-color": "#0f172a",
},
},
{
// DODANE (gen_viz.py): węzły linków zewnętrznych. Inny kształt niż
// koncepty, żeby jedno i drugie dało się rozróżnić bez czytania
// etykiet i niezależnie od koloru.
selector: 'node[type = "external"]',
style: {
"shape": "round-diamond",
"border-style": "dotted",
"font-size": 10,
"color": "#0f766e",
},
},
{
selector: "node[?stale]",
style: {
"border-width": 2,
"border-color": "#b91c1c",
"border-style": "dashed",
},
},
{
selector: 'node[status = "deprecated"]',
style: {
"opacity": 0.55,
},
},
{
selector: "node:selected",
style: {
"border-width": 3,
"border-color": "#f59e0b",
},
},
{
selector: "edge",
style: {
"width": 1.5,
"line-color": "#cbd5e1",
"target-arrow-color": "#cbd5e1",
"target-arrow-shape": "triangle",
"curve-style": "bezier",
"arrow-scale": 0.9,
},
},
{
selector: "edge:selected",
style: {
"line-color": "#f59e0b",
"target-arrow-color": "#f59e0b",
"width": 2.5,
},
},
{
selector: ".dim",
style: { "opacity": 0.15 },
},
],
layout: { name: "cose", animate: false, padding: 30 },
wheelSensitivity: 0.2,
});
cy.on("tap", "node", (evt) => showDetail(evt.target.id()));
cy.on("tap", (evt) => {
if (evt.target === cy) clearSelection();
});
document.getElementById("layout").addEventListener("change", (e) => {
cy.layout({ name: e.target.value, animate: false, padding: 30 }).run();
});
document.getElementById("reset").addEventListener("click", () => {
cy.fit(null, 30);
clearSelection();
});
document.getElementById("search").addEventListener("input", (e) => {
const q = e.target.value.trim().toLowerCase();
if (!q) {
cy.elements().removeClass("dim");
return;
}
cy.nodes().forEach((n) => {
const d = n.data();
const hay =
(d.label || "").toLowerCase() + " " +
d.id.toLowerCase() + " " +
(d.tags || []).join(" ").toLowerCase();
n.toggleClass("dim", !hay.includes(q));
});
cy.edges().forEach((edge) => {
const src = edge.source();
const tgt = edge.target();
edge.toggleClass("dim", src.hasClass("dim") || tgt.hasClass("dim"));
});
});
document.getElementById("filter-type").addEventListener("change", (e) => {
const t = e.target.value;
if (!t) {
cy.elements().removeClass("dim");
return;
}
cy.nodes().forEach((n) => {
n.toggleClass("dim", n.data("type") !== t);
});
cy.edges().forEach((edge) => {
edge.toggleClass("dim", edge.source().hasClass("dim") || edge.target().hasClass("dim"));
});
});
function clearSelection() {
cy.elements().unselect();
document.getElementById("detail-empty").hidden = false;
document.getElementById("detail-content").hidden = true;
}
function showDetail(conceptId) {
const data = nodeIndex[conceptId];
if (!data) return;
cy.elements().unselect();
const node = cy.getElementById(conceptId);
if (node) node.select();
document.getElementById("detail-empty").hidden = true;
const content = document.getElementById("detail-content");
content.hidden = false;
const chip = document.getElementById("detail-type");
chip.textContent = data.type;
chip.style.background = data.color;
document.getElementById("detail-title").textContent = data.label;
document.getElementById("detail-id").textContent = conceptId;
document.getElementById("detail-description").textContent = data.description || "—";
const resourceEl = document.getElementById("detail-resource");
resourceEl.innerHTML = "";
if (data.resource) {
const a = document.createElement("a");
a.href = data.resource;
a.textContent = data.resource;
a.target = "_blank";
a.rel = "noopener";
a.className = "external";
resourceEl.appendChild(a);
} else {
resourceEl.textContent = "—";
}
const tagsEl = document.getElementById("detail-tags");
tagsEl.innerHTML = "";
if (data.tags && data.tags.length) {
for (const t of data.tags) {
const span = document.createElement("span");
span.className = "tag";
span.textContent = t;
tagsEl.appendChild(span);
}
} else {
tagsEl.textContent = "—";
}
// v0.2 signal badges: status, trust tier, staleness.
const badgesEl = document.getElementById("detail-badges");
badgesEl.innerHTML = "";
const status = data.status || "stable";
badgesEl.appendChild(makeBadge(status, "status-" + status));
const tier = data.trust_tier || "unverified";
badgesEl.appendChild(makeBadge(tier.replace(/-/g, " "), "trust-" + tier));
if (data.stale) {
const label = data.stale_after ? `stale (since ${data.stale_after})` : "stale";
badgesEl.appendChild(makeBadge(label, "stale"));
} else if (data.stale_after) {
badgesEl.appendChild(makeBadge(`stale after ${data.stale_after}`, "fresh"));
}
document.getElementById("detail-generated").textContent = formatActorEvent(data.generated);
const verifiedEl = document.getElementById("detail-verified");
const verified = data.verified || [];
if (verified.length) {
verifiedEl.textContent = verified.map(formatActorEvent).join("; ");
} else {
verifiedEl.textContent = "—";
}
const sourcesEl = document.getElementById("detail-sources");
sourcesEl.innerHTML = "";
const sources = data.sources || [];
if (sources.length) {
const ul = document.createElement("ul");
ul.className = "sources-list";
for (const s of sources) {
const li = document.createElement("li");
const label = s.title || s.resource || s.id || "source";
if (s.resource && /^https?:\/\//.test(s.resource)) {
const a = document.createElement("a");
a.href = s.resource;
a.textContent = label;
a.target = "_blank";
a.rel = "noopener";
a.className = "external";
li.appendChild(a);
} else {
li.textContent = s.resource ? `${label} (${s.resource})` : label;
}
ul.appendChild(li);
}
sourcesEl.appendChild(ul);
} else {
sourcesEl.textContent = "—";
}
const body = bundle.bodies[conceptId] || "";
const html = marked.parse(body, { breaks: false, gfm: true });
const bodyEl = document.getElementById("detail-body");
bodyEl.innerHTML = html;
rewriteInternalLinks(bodyEl);
const bl = backlinks[conceptId] || [];
const blSection = document.getElementById("detail-backlinks");
const blList = document.getElementById("backlinks-list");
blList.innerHTML = "";
if (bl.length) {
blSection.hidden = false;
for (const src of bl) {
const li = document.createElement("li");
const a = document.createElement("a");
a.textContent = nodeIndex[src]?.label || src;
a.dataset.target = src;
a.addEventListener("click", () => showDetail(src));
li.appendChild(a);
const muted = document.createElement("span");
muted.className = "muted";
muted.textContent = ` (${src})`;
li.appendChild(muted);
blList.appendChild(li);
}
} else {
blSection.hidden = true;
}
cy.animate({ center: { eles: node }, zoom: Math.max(cy.zoom(), 1.0) }, { duration: 200 });
}
function makeBadge(text, cls) {
const span = document.createElement("span");
span.className = "badge " + cls;
span.textContent = text;
return span;
}
function formatActorEvent(event) {
if (!event || !event.by) return "—";
return event.at ? `${event.by} · ${event.at}` : String(event.by);
}
function rewriteInternalLinks(root) {
root.querySelectorAll("a[href]").forEach((a) => {
const href = a.getAttribute("href");
if (!href) return;
if (href.startsWith("/") && href.endsWith(".md")) {
const target = href.slice(1, -3);
if (nodeIndex[target]) {
a.className = "internal";
a.setAttribute("href", "javascript:void(0)");
a.addEventListener("click", (e) => {
e.preventDefault();
showDetail(target);
});
return;
}
}
a.className = "external";
a.setAttribute("target", "_blank");
a.setAttribute("rel", "noopener");
});
}
// Auto-show the first node (a dataset if available, else first concept)
const initial =
bundle.nodes.find((n) => n.data.type === "BigQuery Dataset") ||
bundle.nodes[0];
if (initial) showDetail(initial.data.id);
})();
</script>
</body>
</html>