{"id":14548,"date":"2026-02-28T15:01:42","date_gmt":"2026-02-28T15:01:42","guid":{"rendered":"https:\/\/addicted-to.com\/?p=14548"},"modified":"2026-10-16T07:52:05","modified_gmt":"2026-10-16T07:52:05","slug":"zollhaus-open-2027","status":"publish","type":"post","link":"https:\/\/addicted-to.com\/de\/zollhaus-open-2027\/","title":{"rendered":"Zollhaus Open 2027"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"14548\" class=\"elementor elementor-14548\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6d5bd7e elementor-section-stretched elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"6d5bd7e\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-\" data-id=\"\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0193cbc elementor-widget elementor-widget-html\" data-id=\"0193cbc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Big+Shoulders+Display:wght@600;800;900&family=Figtree:wght@400;500;600;700&family=IBM+Plex+Mono:wght@500;600&display=swap\">\n<style>\n#zo{\n  --night:#07170F;      \n  --forest:#0A2B20;     \n  --pine:#123A2C;\n  --moss:#0B8C09;       \n  --lichen:#D5F0C1;     \n  --ice:#E4F2F4;        \n  --glacier:#7CC8DD;    \n  --deep:#0C3442;\n  --ember:#FF6B35;      \n  --text:#E9F2EC;\n  --muted:#97B0A5;\n  --line:rgba(213,240,193,.14);\n  --ink:#0A2B20;        \n  --ink-muted:#4C6A63;\n  --f-display:\"Big Shoulders Display\",\"Arial Narrow\",\"Roboto Condensed\",Impact,sans-serif;\n  --f-body:\"Figtree\",\"Segoe UI\",system-ui,-apple-system,sans-serif;\n  --f-mono:\"IBM Plex Mono\",ui-monospace,\"SFMono-Regular\",Menlo,monospace;\n  color-scheme:dark;\n}\n#zo h1,#zo h2,#zo h3,#zo h4,#zo p,#zo li,#zo dd,#zo dt,#zo label,#zo figcaption,#zo small,#zo b{color:inherit;font-family:inherit;text-transform:none;letter-spacing:normal}\n#zo,#zo *{box-sizing:border-box}\nhtml{scroll-behavior:smooth}\n#zo{background:var(--night);color:var(--text);font-family:var(--f-body);font-size:17px;line-height:1.6;overflow-x:hidden}\n#zo a{color:inherit}\n#zo h1,#zo h2,#zo h3{font-family:var(--f-display);text-transform:uppercase;line-height:.9;margin:0;text-wrap:balance;letter-spacing:.005em}\n#zo h2{font-size:clamp(2.6rem,7vw,5.2rem);font-weight:900}\n#zo h3{font-size:1.8rem;font-weight:800}\n#zo p{margin:0}\n#zo .wrap{max-width:1220px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}\n#zo .band{padding-block:clamp(64px,10vw,120px)}\n#zo .eyebrow{font-family:var(--f-mono);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--glacier)}\n#zo .lead{font-size:1.15rem;color:var(--muted);max-width:62ch}\n#zo .btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--f-display);font-weight:800;text-transform:uppercase;font-size:1.25rem;letter-spacing:.04em;padding:14px 26px;border-radius:999px;border:0;cursor:pointer;text-decoration:none;transition:transform .2s,background .2s,box-shadow .2s}\n#zo .btn-go{background:var(--moss);color:#fff}\n#zo .btn-go:hover{transform:translateY(-2px);box-shadow:0 10px 30px rgba(11,140,9,.45)}\n#zo .btn-ghost{background:transparent;color:var(--text);box-shadow:inset 0 0 0 2px var(--line)}\n#zo .btn-ghost:hover{box-shadow:inset 0 0 0 2px var(--glacier)}\n#zo .btn-hot{background:var(--ember);color:#1a0b04}\n#zo button:focus-visible,#zo a:focus-visible,#zo input:focus-visible{outline:3px solid var(--glacier);outline-offset:3px}\n#zo .chip{font-family:var(--f-mono);font-size:.82rem;font-weight:600;padding:8px 14px;border-radius:999px;border:1.5px solid var(--line);background:transparent;color:var(--text);cursor:pointer;transition:.15s}\n#zo .chip:hover{border-color:var(--glacier)}\n#zo .chip[aria-pressed=\"true\"]{background:var(--glacier);border-color:var(--glacier);color:var(--deep)}\n#zo .chip:disabled{opacity:.3;cursor:not-allowed}\n#zo .nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:50;background:rgba(7,23,15,.78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}\n#zo .nav .wrap{display:flex;align-items:center;gap:20px;height:62px}\n#zo .logo{font-family:var(--f-display);font-weight:900;font-size:1.25rem;letter-spacing:.06em;text-decoration:none;white-space:nowrap}\n#zo .logo span{color:var(--moss)}\n#zo .nav nav{display:flex;gap:22px;margin-left:auto}\n#zo .nav nav a{text-decoration:none;font-size:.88rem;font-weight:600;color:var(--muted)}\n#zo .nav nav a:hover{color:var(--text)}\n#zo .nav .btn{font-size:1rem;padding:9px 18px}\n#zo .snd{background:none;border:1.5px solid var(--line);color:var(--muted);border-radius:999px;font-family:var(--f-mono);font-size:.72rem;padding:6px 10px;cursor:pointer}\n@media (max-width:900px){#zo .nav nav{display:none}\n#zo .nav .snd{margin-left:auto}\n}\n@media (max-width:520px){#zo .nav .wrap{gap:10px}\n#zo .logo{font-size:1rem;letter-spacing:.03em}\n#zo .nav .btn{font-size:.9rem;padding:8px 14px}\n#zo .snd{display:none}\n}\n#zo .hero{position:relative;overflow:hidden;min-height:clamp(620px,88vh,860px);display:flex;align-items:flex-end;isolation:isolate}\n#zo .hero canvas{position:absolute;inset:0;width:100%;height:100%;display:block}\n#zo #heroScene{z-index:-3}\n#zo #heroFrost{z-index:-2}\n#zo #heroSnow{z-index:-1;pointer-events:none}\n#zo .hero .wrap{width:100%;padding-block:120px 56px;position:relative}\n#zo .hero h1{font-size:clamp(4rem,17vw,15rem);overflow-wrap:anywhere;font-weight:900;line-height:.8;letter-spacing:-.005em;text-shadow:0 4px 40px rgba(0,0,0,.35)}\n#zo .hero h1 .y{color:var(--glacier);display:block}\n#zo .hero-meta{display:flex;flex-wrap:wrap;gap:10px 28px;margin-top:28px;font-family:var(--f-mono);font-size:.9rem}\n#zo .hero-meta b{color:var(--lichen);font-weight:600}\n#zo .hero-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:28px;margin-top:36px}\n#zo .count{display:flex;gap:6px}\n#zo .count div{background:rgba(7,23,15,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-width:74px;text-align:center}\n#zo .count b{display:block;font-family:var(--f-display);font-size:2.5rem;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}\n#zo .count small{font-family:var(--f-mono);font-size:.65rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}\n#zo .hint{position:absolute;right:max(16px,env(safe-area-inset-right,0px));top:28px;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ice);opacity:.75;display:flex;gap:8px;align-items:center}\n#zo .hint i{width:22px;height:22px;border-radius:50%;border:1.5px solid currentColor;display:inline-block;animation:pulse 2s infinite}\n@keyframes pulse{50%{transform:scale(1.35);opacity:.4}}\n#zo .marquee{background:var(--glacier);color:var(--deep);overflow:hidden;white-space:nowrap;border-block:1px solid rgba(0,0,0,.2)}\n#zo .marquee div{display:inline-block;padding-block:14px;font-family:var(--f-display);font-weight:800;font-size:1.6rem;text-transform:uppercase;letter-spacing:.04em;animation:mq 38s linear infinite}\n#zo .marquee span{margin:0 22px}\n#zo .marquee span.d{display:inline-block;width:9px;height:9px;border-radius:50%;background:currentColor;opacity:.35;vertical-align:middle;margin:0 6px}\n@keyframes mq{to{transform:translateX(-50%)}}\n#zo .intro-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(32px,6vw,90px);align-items:start}\n#zo .intro-grid > *{min-width:0}\n#zo .intro-grid p+p{margin-top:16px}\n#zo .meters{display:grid;gap:22px;margin-top:8px}\n#zo .meter header{display:flex;justify-content:space-between;font-family:var(--f-display);font-weight:800;font-size:1.5rem;text-transform:uppercase}\n#zo .meter header span{font-family:var(--f-mono);font-size:.95rem;color:var(--glacier);font-weight:600}\n#zo .meter .bar{height:12px;background:rgba(255,255,255,.06);border-radius:6px;overflow:hidden;margin-top:6px}\n#zo .meter .bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--moss),var(--lichen));animation:grow 1.6s cubic-bezier(.2,.8,.2,1) both}\n#zo .meter.relax .bar i{background:linear-gradient(90deg,var(--ember),#FFB38A)}\n#zo .meter small{display:block;color:var(--muted);font-size:.85rem;margin-top:4px}\n@keyframes grow{from{transform:scaleX(.02);transform-origin:left}to{transform:scaleX(1);transform-origin:left}}\n#zo .facts{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-top:56px}\n#zo .facts div{background:var(--night);padding:22px}\n#zo .facts b{display:block;font-family:var(--f-display);font-size:2.6rem;font-weight:900;line-height:1;color:var(--lichen)}\n#zo .facts span{font-size:.88rem;color:var(--muted)}\n@media (max-width:860px){#zo .intro-grid{grid-template-columns:1fr}\n#zo .facts{grid-template-columns:repeat(2,1fr)}\n}\n#zo .lake-sec{background:radial-gradient(1200px 600px at 50% 0%,#0F3328,var(--night))}\n#zo .lake-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:28px}\n#zo .lake-head > div{min-width:0}\n#zo .controls{display:grid;gap:12px;margin-bottom:18px}\n#zo .ctl-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n#zo .ctl-row label{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);width:92px}\n#zo .lake-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}\n#zo .lake-stage{position:relative;border-radius:18px;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.45);border:1px solid var(--line);background:#E9F1F1;touch-action:manipulation}\n#zo #lakeCv{display:block;width:100%;cursor:pointer}\n#zo .start-bar{display:flex;flex-wrap:wrap;gap:12px;margin-top:16px;align-items:center}\n#zo .start-btn{position:relative}\n#zo .start-btn::before{content:\"\";width:12px;height:12px;border-radius:50%;background:#ff3b30;box-shadow:0 0 0 4px rgba(255,59,48,.25)}\n#zo .stroke-btn{display:none}\n#zo .stroke-btn.on{display:inline-flex}\n#zo .board{background:rgba(7,23,15,.7);border:1px solid var(--line);border-radius:18px;padding:18px;min-width:0}\n#zo .board h3{font-size:1.5rem;display:flex;justify-content:space-between;align-items:baseline}\n#zo .board h3 small{font-family:var(--f-mono);font-size:.72rem;color:var(--muted);letter-spacing:.08em;font-weight:500;text-transform:none}\n#zo .board ol{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:6px}\n#zo .board li{display:grid;grid-template-columns:26px 14px 1fr auto;gap:10px;align-items:center;padding:9px 10px;border-radius:10px;background:rgba(255,255,255,.03);font-size:.92rem;transition:background .3s}\n#zo .board li.gold{background:rgba(255,210,63,.14)}\n#zo .board li.silver{background:rgba(220,230,235,.10)}\n#zo .board li.bronze{background:rgba(205,127,50,.14)}\n#zo .board li.me{box-shadow:inset 0 0 0 1.5px var(--moss)}\n#zo .board .rk{font-family:var(--f-display);font-weight:900;font-size:1.3rem;text-align:center}\n#zo .board .cap{width:14px;height:14px;border-radius:50%}\n#zo .board .nm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n#zo .board .nm small{color:var(--muted);font-family:var(--f-mono);font-size:.7rem;margin-left:6px}\n#zo .board .tm{font-family:var(--f-mono);font-variant-numeric:tabular-nums;font-size:.85rem;color:var(--lichen)}\n#zo .board .note{margin-top:14px;font-size:.82rem;color:var(--muted);line-height:1.5}\n@media (max-width:960px){#zo .lake-grid{grid-template-columns:1fr}\n}\n#zo .dist{background:var(--forest)}\n#zo .dist-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,80px);align-items:center}\n#zo .dist-grid > *{min-width:0}\n#zo .dist-big{font-family:var(--f-display);font-weight:900;font-size:clamp(6rem,18vw,13rem);line-height:.8;color:var(--lichen);font-variant-numeric:tabular-nums}\n#zo .dist-big small{font-size:.35em;color:var(--glacier);margin-left:6px}\n#zo input[type=range]{width:100%;accent-color:var(--glacier);height:28px}\n#zo .ticks{display:flex;justify-content:space-between;font-family:var(--f-mono);font-size:.75rem;color:var(--muted)}\n#zo .dist-card{background:rgba(0,0,0,.2);border:1px solid var(--line);border-radius:16px;padding:24px;display:grid;gap:16px}\n#zo .dist-card dl{display:grid;grid-template-columns:auto 1fr;gap:8px 18px;margin:0;font-size:.95rem}\n#zo .dist-card dt{font-family:var(--f-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);padding-top:3px}\n#zo .dist-card dd{margin:0}\n#zo .laps{display:flex;flex-wrap:wrap;gap:4px}\n#zo .laps i{width:18px;height:6px;border-radius:3px;background:var(--glacier)}\n@media (max-width:860px){#zo .dist-grid{grid-template-columns:1fr}\n}\n#zo .rec{background:linear-gradient(180deg,var(--night),#160D08 140%)}\n#zo .gauge{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:16px;padding:18px 22px;margin:32px 0 22px}\n#zo .gauge .lbl{font-family:var(--f-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}\n#zo .gauge .state{font-family:var(--f-display);font-weight:900;font-size:1.9rem;text-transform:uppercase;line-height:1}\n#zo .gtrack{height:18px;border-radius:9px;background:linear-gradient(90deg,#7CC8DD,#B9E3D0 40%,#FFB38A 75%,#FF6B35);position:relative;min-width:0}\n#zo .gtrack::after{content:\"\";position:absolute;inset:0;border-radius:9px;background:rgba(7,23,15,.78);left:var(--w,8%);transition:left .5s}\n#zo .gtrack i{position:absolute;top:-6px;width:4px;height:30px;border-radius:2px;background:#fff;left:var(--w,8%);transform:translateX(-2px);transition:left .5s;z-index:1;box-shadow:0 0 12px #fff}\n#zo .gauge .num{font-family:var(--f-mono);font-size:1.1rem;font-variant-numeric:tabular-nums;color:var(--lichen);text-align:right;white-space:nowrap}\n#zo .stations{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}\n#zo .station{background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:18px;overflow:hidden;display:flex;flex-direction:column;min-width:0}\n#zo .station canvas{display:block;width:100%;aspect-ratio:4\/3;cursor:pointer;touch-action:none}\n#zo .station .body{padding:18px 20px 20px;display:grid;gap:10px;flex:1;align-content:start}\n#zo .station .body .row{display:flex;justify-content:space-between;align-items:baseline;gap:10px}\n#zo .station .tmp{font-family:var(--f-mono);color:var(--ember);font-weight:600}\n#zo .station p{color:var(--muted);font-size:.93rem}\n#zo .station .btn{font-size:1rem;padding:10px 18px;justify-self:start}\n#zo .ready{margin-top:20px;display:flex;flex-wrap:wrap;gap:14px;align-items:center;min-height:50px}\n#zo .ready p{font-family:var(--f-display);font-weight:800;font-size:1.6rem;text-transform:uppercase;color:var(--lichen)}\n@media (max-width:900px){#zo .stations{grid-template-columns:1fr}\n#zo .gauge{grid-template-columns:1fr}\n#zo .gauge .num{text-align:left}\n}\n#zo .prog{background:var(--ice);color:var(--ink)}\n#zo .prog .eyebrow{color:#167A93}\n#zo .prog .lead{color:var(--ink-muted)}\n#zo .prog .chip{color:var(--ink);border-color:rgba(10,43,32,.2)}\n#zo .prog .chip[aria-pressed=\"true\"]{background:var(--ink);border-color:var(--ink);color:var(--ice)}\n#zo .tabs{display:flex;gap:6px;margin:28px 0 14px;flex-wrap:wrap}\n#zo .tab{font-family:var(--f-display);font-weight:800;font-size:1.5rem;text-transform:uppercase;background:transparent;border:0;border-bottom:4px solid transparent;color:var(--ink-muted);padding:6px 10px;cursor:pointer}\n#zo .tab[aria-selected=\"true\"]{color:var(--ink);border-color:var(--moss)}\n#zo .races{list-style:none;padding:0;margin:20px 0 0;display:grid;gap:0;border-top:2px solid var(--ink)}\n#zo .races li{display:grid;grid-template-columns:110px 150px 1fr auto;gap:16px;align-items:center;padding:16px 4px;border-bottom:1px solid rgba(10,43,32,.15);transition:background .2s}\n#zo .races li:hover{background:rgba(124,200,221,.25)}\n#zo .races li > *{min-width:0}\n#zo .races .no{font-family:var(--f-mono);font-size:.78rem;color:var(--ink-muted);letter-spacing:.06em}\n#zo .races .d{font-family:var(--f-display);font-weight:900;font-size:2.4rem;line-height:1}\n#zo .races .s{font-weight:700;font-size:1.05rem}\n#zo .races .s small{display:block;font-weight:500;color:var(--ink-muted);font-size:.85rem}\n#zo .races .sim{font-family:var(--f-mono);font-size:.75rem;font-weight:600;background:var(--ink);color:var(--ice);border:0;border-radius:999px;padding:8px 14px;cursor:pointer;white-space:nowrap}\n#zo .races .sim:hover{background:var(--moss)}\n#zo .races .start{font-family:var(--f-mono);font-size:.8rem;color:var(--ink-muted);padding:14px 4px;border-bottom:1px solid rgba(10,43,32,.15);display:block}\n@media (max-width:700px){#zo .races li{grid-template-columns:1fr auto;grid-template-areas:\"d sim\" \"s s\" \"no no\";gap:4px 12px}\n#zo .races .d{grid-area:d}\n#zo .races .s{grid-area:s}\n#zo .races .no{grid-area:no}\n#zo .races .sim{grid-area:sim}\n}\n#zo .req-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(32px,6vw,80px)}\n#zo .req-grid > *{min-width:0}\n#zo .checks{display:grid;gap:10px;margin-top:26px}\n#zo .check{display:flex;gap:16px;align-items:center;padding:18px 20px;border:1.5px solid var(--line);border-radius:14px;cursor:pointer;transition:.2s;font-weight:600;font-size:1.05rem}\n#zo .check input{appearance:none;-webkit-appearance:none;width:28px;height:28px;border-radius:8px;border:2px solid var(--glacier);display:grid;place-content:center;flex:none;margin:0;cursor:pointer}\n#zo .check input::after{content:\"\";width:12px;height:7px;border-left:3px solid var(--deep);border-bottom:3px solid var(--deep);transform:rotate(-45deg) scale(0);transition:.15s;margin-top:-3px}\n#zo .check input:checked{background:var(--glacier)}\n#zo .check input:checked::after{transform:rotate(-45deg) scale(1)}\n#zo .check:has(input:checked){border-color:var(--glacier);background:rgba(124,200,221,.08)}\n#zo .check small{display:block;font-weight:400;color:var(--muted);font-size:.85rem}\n#zo .req-msg{margin-top:18px;font-weight:600;color:var(--muted)}\n#zo .req-msg.ok{color:var(--lichen)}\n#zo .deadline{border:1.5px solid var(--ember);border-radius:18px;padding:26px;display:grid;gap:16px}\n#zo .deadline .big{font-family:var(--f-display);font-weight:900;font-size:clamp(3.4rem,9vw,5.6rem);line-height:.85;color:var(--ember);font-variant-numeric:tabular-nums}\n#zo .hours{width:100%;border-collapse:collapse;font-size:.95rem}\n#zo .hours td{padding:10px 0;border-bottom:1px solid var(--line)}\n#zo .hours td:last-child{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums;color:var(--lichen)}\n@media (max-width:860px){#zo .req-grid{grid-template-columns:1fr}\n}\n#zo .gal{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:12px;margin-top:56px;scrollbar-width:thin}\n#zo .gal figure{flex:0 0 min(80%,420px);scroll-snap-align:start;margin:0;position:relative;aspect-ratio:4\/3;border-radius:18px;overflow:hidden;background:var(--fb,linear-gradient(160deg,#1B4A5A,#0A2B20))}\n#zo .gal img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;max-width:100%}\n#zo .gal figure::before{content:attr(data-k);position:absolute;top:18px;left:20px;font-family:var(--f-display);font-weight:900;font-size:4.6rem;line-height:.85;color:rgba(255,255,255,.12);text-transform:uppercase;max-width:80%}\n#zo .gal figcaption{position:absolute;inset:auto 0 0 0;padding:60px 20px 20px;background:linear-gradient(transparent,rgba(5,15,10,.9));z-index:1}\n#zo .gal figcaption b{display:block;font-family:var(--f-display);font-weight:800;font-size:1.6rem;text-transform:uppercase;line-height:1}\n#zo .gal figcaption span{font-size:.88rem;color:var(--muted)}\n#zo .hotel{background:var(--pine)}\n#zo .hotel-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,80px);align-items:center}\n#zo .hotel-grid > *{min-width:0}\n#zo .feat{list-style:none;padding:0;margin:26px 0 30px;display:grid;grid-template-columns:1fr 1fr;gap:12px}\n#zo .feat li{border-top:1.5px solid var(--line);padding-top:10px;font-size:.95rem}\n#zo .feat b{display:block;font-family:var(--f-display);font-size:1.35rem;font-weight:800;text-transform:uppercase}\n#zo .postcard{position:relative;aspect-ratio:4\/5;border-radius:20px;overflow:hidden;max-width:100%;background:linear-gradient(180deg,#14303A 0%,#3D6470 48%,#DCEBEE 49%,#C9DDE1 100%)}\n#zo .postcard img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}\n#zo .postcard canvas{position:absolute;inset:0;width:100%;height:100%}\n#zo .stamp{position:absolute;right:18px;top:18px;z-index:2;background:var(--ice);color:var(--ink);font-family:var(--f-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;padding:10px 12px;border-radius:6px;transform:rotate(4deg);text-align:center;line-height:1.4}\n#zo .stamp b{display:block;font-family:var(--f-display);font-size:1.6rem;letter-spacing:0;line-height:1}\n@media (max-width:860px){#zo .hotel-grid{grid-template-columns:1fr}\n}\n#zo .partners{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-top:24px}\n#zo .plogo{margin:0;background:#fff;border-radius:16px;aspect-ratio:3\/2;display:grid;place-items:center;padding:16px;min-width:0}\n#zo .plogo img{max-width:100%;max-height:100%;object-fit:contain}\n#zo .plogo img + figcaption{display:none}\n#zo .plogo figcaption{font-family:var(--f-display);font-weight:800;font-size:1.2rem;text-transform:uppercase;color:var(--ink);text-align:center;line-height:1}\n@media (max-width:900px){#zo .partners{grid-template-columns:repeat(3,1fr)}\n}\n@media (max-width:480px){#zo .partners{grid-template-columns:repeat(2,1fr)}\n}\n#zo .partners-old span{font-family:var(--f-display);font-weight:800;font-size:1.3rem;text-transform:uppercase;padding:14px 22px;border:1.5px solid var(--line);border-radius:12px;color:var(--muted)}\n#zo .final{text-align:left;position:relative;overflow:hidden}\n#zo .final h2{font-size:clamp(3.6rem,13vw,10rem)}\n#zo .final h2 em{font-style:normal;color:var(--glacier)}\n#zo .final .row{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px}\n#zo footer{border-top:1px solid var(--line);padding-block:40px;font-size:.88rem;color:var(--muted)}\n#zo footer .wrap{display:flex;flex-wrap:wrap;gap:24px;justify-content:space-between}\n#zo footer b{color:var(--text)}\n@media (prefers-reduced-motion:reduce){#zo .marquee div,#zo .hint i,#zo .meter .bar i{animation:none}\nhtml{scroll-behavior:auto}\n\n}\n\n\n#zo{position:relative;width:100%;overflow-x:hidden}\n#zo .snd{font-family:var(--f-mono)}\n\n#zo .live-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;margin-top:30px;align-items:center}\n#zo .live-grid>*{min-width:0}\n#zo .live-photo{position:relative;border-radius:18px;overflow:hidden;aspect-ratio:4\/3;background:linear-gradient(160deg,#1B4A5A,#0A2B20);margin:0;max-width:100%}\n#zo .live-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;max-width:100%}\n#zo .live-photo figcaption{position:absolute;left:0;right:0;bottom:0;padding:50px 20px 18px;background:linear-gradient(transparent,rgba(5,15,10,.88));font-size:.92rem;color:var(--muted)}\n#zo .live-photo figcaption b{display:block;color:var(--text);font-family:var(--f-display);font-size:1.6rem;text-transform:uppercase;line-height:1;margin-bottom:4px}\n#zo .yt{position:relative;border-radius:18px;overflow:hidden;aspect-ratio:16\/9;background:#000;width:100%;max-width:100%}\n#zo .yt button{position:absolute;inset:0;width:100%;height:100%;border:0;padding:0;margin:0;cursor:pointer;background:#000;border-radius:0}\n#zo .yt button img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.72;transition:opacity .2s;max-width:100%}\n#zo .yt button:hover img{opacity:.92}\n#zo .yt .play{position:absolute;left:50%;top:50%;width:84px;height:84px;margin:-42px 0 0 -42px;border-radius:50%;background:var(--ember);display:grid;place-items:center;box-shadow:0 10px 40px rgba(0,0,0,.5);transition:transform .2s}\n#zo .yt button:hover .play{transform:scale(1.08)}\n#zo .yt .play::after{content:\"\";border-left:26px solid #1a0b04;border-top:16px solid transparent;border-bottom:16px solid transparent;margin-left:7px}\n#zo .yt .ylbl{position:absolute;left:16px;bottom:14px;font-family:var(--f-mono);font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:#fff}\n#zo .yt iframe{position:absolute;inset:0;width:100%;height:100%;border:0}\n#zo .yt-cap{margin-top:14px;display:grid;gap:4px}\n#zo .yt-cap b{font-family:var(--f-display);font-size:1.6rem;text-transform:uppercase;line-height:1}\n#zo .yt-cap span{font-size:.82rem;color:var(--muted)}\n@media (max-width:860px){#zo .live-grid{grid-template-columns:1fr}}\n#zo figcaption{font-style:normal}\nbody.postid-14548 .elementor-element-3945c14{display:none!important}\nbody.postid-14548 .elementor-element-3e911a6{background-image:none!important;background-color:#07170F!important;min-height:0!important}\nbody.postid-14548 .elementor-element-3e911a6>.elementor-container{min-height:0!important}\nbody.postid-14548 .elementor-element-3e911a6>.elementor-background-overlay{display:none!important}\n<\/style>\n<div id=\"zo\">\n\n<section class=\"hero\" id=\"zo-top\" aria-label=\"Zollhaus Open 2027\">\n  <canvas id=\"heroScene\" aria-hidden=\"true\"><\/canvas>\n  <canvas id=\"heroFrost\" aria-hidden=\"true\"><\/canvas>\n  <canvas id=\"heroSnow\" aria-hidden=\"true\"><\/canvas>\n  <div class=\"hint\" aria-hidden=\"true\" data-no-translation><i><\/i><span id=\"zoHint\">Passa sul ghiaccio per scioglierlo<\/span><\/div>\n  <div class=\"wrap\">\n    <p class=\"eyebrow\" style=\"margin-bottom:22px\">Campionati tedeschi di nuoto nel ghiaccio &#183; Regolamento IISA<\/p>\n    <h1 data-no-translation>Zollhaus<br>Open <span class=\"y\">2027<\/span><\/h1>\n    <div class=\"hero-meta\">\n      <span><b>19-20.02.2027<\/b><\/span>\n      <span>Landhotel Altes Zollhaus, Neuhermsdorf<\/span>\n      <span>800 m s.l.m.<\/span>\n      <span>Acqua <b>2 &#176;C<\/b><\/span>\n    <\/div>\n    <div class=\"hero-row\">\n      <div>\n        <p class=\"eyebrow\" style=\"margin-bottom:8px\" id=\"zoCdLbl\" data-no-translation>Allo start dei campionati tedeschi<\/p>\n        <div class=\"count\" id=\"count\" aria-live=\"off\">\n          <div><b id=\"cd-d\">--<\/b><small>giorni<\/small><\/div>\n          <div><b id=\"cd-h\">--<\/b><small>ore<\/small><\/div>\n          <div><b id=\"cd-m\">--<\/b><small>min<\/small><\/div>\n          <div><b id=\"cd-s\">--<\/b><small>sec<\/small><\/div>\n        <\/div>\n      <\/div>\n      <div style=\"display:flex;flex-wrap:wrap;gap:12px\">\n        <a class=\"btn btn-go\" href=\"https:\/\/internationaliceswimming.com\/view-iisa-event\/?event=253\" target=\"_blank\" rel=\"noopener\">Registrati qui<\/a>\n        <a class=\"btn btn-ghost\" href=\"#gara\">Guarda la gara<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<div class=\"marquee\" aria-hidden=\"true\" data-no-translation><div id=\"mq\"><\/div><\/div>\n\n<section class=\"band\" id=\"evento\">\n  <div class=\"wrap intro-grid\">\n    <div>\n      <p class=\"eyebrow\">by Addicted to Nature<\/p>\n      <h2 style=\"margin:14px 0 28px\">Nuoto nel ghiaccio, in mezzo al bosco<\/h2>\n      <p class=\"lead\">I Campionati tedeschi di nuoto nel ghiaccio si svolgono in mezzo alla natura, presso il Landhotel Altes Zollhaus a Neuhermsdorf. Dai 50 ai 1000 metri, in acque ghiacciate a circa 2 &#176;C.<\/p>\n      <p class=\"lead\">L&#8217;hotel si trova a 800 metri sul livello del mare: a fine febbraio il freddo &#232; quello giusto. Nell&#8217;hotel ci sono 4 saune, tra l&#8217;hotel e il lago una vasca calda e direttamente al lago di gara una grande tenda sauna.<\/p>\n    <\/div>\n    <div class=\"meters\" aria-label=\"Il profilo dell'evento\">\n      <div class=\"meter\"><header>Natura <span>100%<\/span><\/header><div class=\"bar\"><i style=\"width:100%\"><\/i><\/div><\/div>\n      <div class=\"meter\"><header>Adrenalina <span>100%<\/span><\/header><div class=\"bar\"><i style=\"width:100%;animation-delay:.15s\"><\/i><\/div><\/div>\n      <div class=\"meter\"><header>Sport <span>100%<\/span><\/header><div class=\"bar\"><i style=\"width:100%;animation-delay:.3s\"><\/i><\/div><\/div>\n      <div class=\"meter relax\"><header>Relax <span>20%<\/span><\/header><div class=\"bar\"><i style=\"width:20%;animation-delay:.45s\"><\/i><\/div><small>Il resto lo recuperi in sauna, dopo la gara.<\/small><\/div>\n    <\/div>\n  <\/div>\n  <div class=\"wrap\">\n    <div class=\"facts\">\n      <div><b>22<\/b><span>gare in due giorni<\/span><\/div>\n      <div><b>2 &#176;C<\/b><span>temperatura dell&#8217;acqua<\/span><\/div>\n      <div><b>5 corsie<\/b><span>vasca da 25 m tagliata nel ghiaccio<\/span><\/div>\n      <div><b>4 + 1 + 1<\/b><span>saune in hotel, vasca calda, tenda sauna al lago<\/span><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"band lake-sec\" id=\"gara\">\n  <div class=\"wrap\">\n    <div class=\"lake-head\">\n      <div>\n        <p class=\"eyebrow\">Il lago di gara visto dall&#8217;alto<\/p>\n        <h2 style=\"margin-top:12px\">Pronti? Via!<\/h2>\n      <\/div>\n      <p class=\"lead\" style=\"max-width:46ch\">Scegli distanza e stile come nel programma ufficiale, poi premi il segnale di partenza. Con &#8220;Nuota tu&#8221; prendi la corsia 3: tocca il lago o premi la barra spaziatrice per ogni bracciata.<\/p>\n    <\/div>\n    <div class=\"controls\">\n      <div class=\"ctl-row\" role=\"group\" aria-label=\"Distanza\"><label>Distanza<\/label><span id=\"distChips\" style=\"display:contents\" data-no-translation><\/span><\/div>\n      <div class=\"ctl-row\" role=\"group\" aria-label=\"Stile\"><label id=\"zoStileLbl\" data-no-translation>Stile<\/label><span id=\"strokeChips\" style=\"display:contents\" data-no-translation><\/span><\/div>\n    <\/div>\n    <div class=\"lake-grid\">\n      <div>\n        <div class=\"lake-stage\"><canvas id=\"lakeCv\" aria-label=\"Vista dall'alto del lago di gara con cinque corsie, l'hotel, la tenda sauna e la vasca calda\" role=\"img\"><\/canvas><\/div>\n        <div class=\"start-bar\">\n          <button class=\"btn btn-go start-btn\" id=\"startBtn\" type=\"button\" data-no-translation>Segnale di partenza<\/button>\n          <button class=\"btn btn-ghost\" id=\"userBtn\" type=\"button\" aria-pressed=\"false\" data-no-translation>Nuota tu<\/button>\n          <button class=\"snd\" id=\"sndBtn\" type=\"button\" aria-pressed=\"true\" data-no-translation>Suono: on<\/button>\n          <button class=\"btn btn-hot stroke-btn\" id=\"strokeBtn\" type=\"button\" data-no-translation>Bracciata!<\/button>\n        <\/div>\n      <\/div>\n      <aside class=\"board\" aria-live=\"polite\">\n        <h3>Classifica <small id=\"boardInfo\" data-no-translation>50 m stile libero<\/small><\/h3>\n        <ol id=\"boardList\" data-no-translation><\/ol>\n        <p class=\"note\" id=\"boardNote\" data-no-translation>Atleti di esempio con tempi simulati. Le gare lunghe scorrono accelerate.<\/p>\n      <\/aside>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"band live\" id=\"dal-vivo\" style=\"padding-top:0\">\n  <div class=\"wrap\">\n    <p class=\"eyebrow\">Il lago di gara dal vivo<\/p>\n    <h2 style=\"margin-top:12px\">Cos&#236; &#232; davvero<\/h2>\n    <div class=\"live-grid\">\n      <figure class=\"live-photo\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2026\/02\/ice-swimming-events.jpg\" alt=\"Il lago di gara delle Zollhaus Open con le corsie tagliate nel ghiaccio e il pubblico a bordo vasca\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption><b>Il lago di gara<\/b>Corsie tagliate nel ghiaccio, pubblico a bordo vasca e bosco tutto intorno.<\/figcaption><\/figure>\n      <div>\n        <div class=\"yt\" id=\"zoYt\"><button type=\"button\" id=\"zoYtBtn\" aria-label=\"Riproduci il video delle Zollhaus Open\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2025\/02\/zollhaus-open-ice-swimming.jpg\" alt=\"Corsie con galleggianti colorati nel lago ghiacciato dello Zollhaus Open, circondato dal bosco\" loading=\"lazy\" onerror=\"this.remove()\"><span class=\"play\"><\/span><span class=\"ylbl\" data-no-translation>YouTube &#183; Addicted To Nature<\/span><\/button><\/div>\n        <div class=\"yt-cap\"><b>Preparati alle Zollhaus Open<\/b><span>Il video si carica da YouTube solo quando premi play.<\/span><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"band dist\" id=\"distanze\">\n  <div class=\"wrap dist-grid\">\n    <div>\n      <p class=\"eyebrow\">Il ghiaccio &#232; per tutti<\/p>\n      <h2 style=\"margin:12px 0 22px\">Dal primo tuffo ai 1000 metri<\/h2>\n      <p class=\"lead\">Le Zollhaus Open non sono riservate ai professionisti. Serve buona salute, il rispetto dei requisiti medici e la voglia di uscire dalla propria zona di comfort. Trova la tua distanza.<\/p>\n      <div style=\"margin-top:34px\">\n        <label for=\"distRange\" class=\"eyebrow\">Trascina per scegliere<\/label>\n        <input type=\"range\" id=\"distRange\" min=\"0\" max=\"5\" step=\"1\" value=\"0\">\n        <div class=\"ticks\"><span>50<\/span><span>100<\/span><span>200<\/span><span>250<\/span><span>500<\/span><span>1000<\/span><\/div>\n      <\/div>\n    <\/div>\n    <div>\n      <div class=\"dist-big\" id=\"distBig\" data-no-translation>50<small>m<\/small><\/div>\n      <div class=\"dist-card\" style=\"margin-top:22px\">\n        <h3 id=\"distTitle\" data-no-translation>Il primo tuffo<\/h3>\n        <p id=\"distText\" data-no-translation style=\"color:var(--muted)\"><\/p>\n        <dl>\n          <dt id=\"zoDt1\" data-no-translation>Vasche<\/dt><dd data-no-translation><div class=\"laps\" id=\"distLaps\"><\/div><span id=\"distLapsTxt\" style=\"font-size:.85rem;color:var(--muted)\"><\/span><\/dd>\n          <dt id=\"zoDt2\" data-no-translation>Stili<\/dt><dd id=\"distStyles\" data-no-translation><\/dd>\n          <dt id=\"zoDt3\" data-no-translation>Nota<\/dt><dd id=\"distNote\" data-no-translation><\/dd>\n        <\/dl>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"band rec\" id=\"recovery\">\n  <div class=\"wrap\">\n    <p class=\"eyebrow\" style=\"color:var(--ember)\">Dopo il freddo<\/p>\n    <h2 style=\"margin:12px 0 18px\">Scongelati<\/h2>\n    <p class=\"lead\">Sei appena uscito dall&#8217;acqua a 2 &#176;C. Tra l&#8217;hotel e il lago c&#8217;&#232; la vasca calda, direttamente al lago una grande tenda sauna e nell&#8217;hotel altre 4 saune. Usale per riportare il calore al massimo.<\/p>\n    <div class=\"gauge\" data-no-translation>\n      <div><div class=\"lbl\" id=\"gLbl\">Brividometro<\/div><div class=\"state\" id=\"gState\">Brividi<\/div><\/div>\n      <div class=\"gtrack\" id=\"gTrack\"><i><\/i><\/div>\n      <div class=\"num\" id=\"gNum\">Pelle ~16 &#176;C<\/div>\n    <\/div>\n    <div class=\"stations\">\n      <article class=\"station\">\n        <canvas id=\"tubCv\" aria-label=\"Vasca calda vista dall'alto: muovi il dito nell'acqua\"><\/canvas>\n        <div class=\"body\">\n          <div class=\"row\"><h3>Vasca calda<\/h3><span class=\"tmp\">38 &#176;C<\/span><\/div>\n          <p>Tra l&#8217;hotel e il lago. Muovi il mouse o il dito nell&#8217;acqua: ogni onda ti scalda un po&#8217;.<\/p>\n        <\/div>\n      <\/article>\n      <article class=\"station\">\n        <canvas id=\"saunaCv\" aria-label=\"Sauna con stufa e pietre: tocca per versare acqua\"><\/canvas>\n        <div class=\"body\">\n          <div class=\"row\"><h3>Tenda sauna<\/h3><span class=\"tmp\" id=\"saunaT\">85 &#176;C<\/span><\/div>\n          <p>Grande tenda sauna direttamente al lago. Versa un mestolo d&#8217;acqua sulle pietre e senti arrivare il vapore.<\/p>\n          <button class=\"btn btn-hot\" id=\"aufgussBtn\" type=\"button\">Versa acqua<\/button>\n        <\/div>\n      <\/article>\n      <article class=\"station\">\n        <canvas id=\"teaCv\" aria-label=\"Tazza di t&#232; caldo: tocca per bere un sorso\"><\/canvas>\n        <div class=\"body\">\n          <div class=\"row\"><h3>Stazione del t&#232;<\/h3><span class=\"tmp\">70 &#176;C<\/span><\/div>\n          <p>T&#232; caldo da Bioteaque, sempre pronto a bordo lago.<\/p>\n          <button class=\"btn btn-hot\" id=\"teaBtn\" type=\"button\" data-no-translation>Bevi un sorso<\/button>\n        <\/div>\n      <\/article>\n    <\/div>\n    <div class=\"ready\" id=\"ready\" data-no-translation><\/div>\n  <\/div>\n<\/section>\n\n<section class=\"band prog\" id=\"programma\">\n  <div class=\"wrap\">\n    <p class=\"eyebrow\">Programma gare &#183; inizio ore 10:00<\/p>\n    <h2 style=\"margin-top:12px\">22 gare, due giorni<\/h2>\n    <div class=\"tabs\" role=\"tablist\" aria-label=\"Giorno\">\n      <button class=\"tab\" role=\"tab\" id=\"tab1\" aria-selected=\"true\" data-day=\"0\" type=\"button\">Ven 19.02<\/button>\n      <button class=\"tab\" role=\"tab\" id=\"tab2\" aria-selected=\"false\" data-day=\"1\" type=\"button\">Sab 20.02<\/button>\n    <\/div>\n    <div class=\"ctl-row\" id=\"progFilter\" data-no-translation role=\"group\" aria-label=\"Filtra per stile\"><\/div>\n    <ul class=\"races\" id=\"races\" data-no-translation><\/ul>\n  <\/div>\n<\/section>\n\n<section class=\"band\" id=\"requisiti\">\n  <div class=\"wrap req-grid\">\n    <div>\n      <p class=\"eyebrow\">Attenzione &#183; Requisiti obbligatori<\/p>\n      <h2 style=\"margin-top:12px\">Sei pronto?<\/h2>\n      <p class=\"lead\" style=\"margin-top:18px\">Ogni nuotatore deve avere questi tre documenti. Spuntali uno per uno.<\/p>\n      <div class=\"checks\">\n        <label class=\"check\"><input type=\"checkbox\" id=\"rq1\"><span>IISA Medical Assessment Form<small>Il modulo medico ufficiale IISA<\/small><\/span><\/label>\n        <label class=\"check\"><input type=\"checkbox\" id=\"rq2\"><span>ECG<small>Elettrocardiogramma<\/small><\/span><\/label>\n        <label class=\"check\"><input type=\"checkbox\" id=\"rq3\"><span>IISA Account<small>Il tuo profilo su internationaliceswimming.com<\/small><\/span><\/label>\n      <\/div>\n      <p class=\"req-msg\" id=\"reqMsg\" data-no-translation>Mancano 3 requisiti.<\/p>\n      <div style=\"margin-top:20px\"><a class=\"btn btn-go\" href=\"https:\/\/internationaliceswimming.com\/view-iisa-event\/?event=253\" target=\"_blank\" rel=\"noopener\">Registrati qui<\/a><\/div>\n    <\/div>\n    <div class=\"deadline\">\n      <p class=\"eyebrow\" style=\"color:var(--ember)\">Deadline registrazione<\/p>\n      <div class=\"big\" id=\"dlBig\" data-no-translation>-- giorni<\/div>\n      <p>Iscrizioni aperte fino al <b>10.02.2027, ore 20:00<\/b>. Se si raggiunge il numero massimo di partecipanti per disciplina, l&#8217;iscrizione chiude subito. Si nuota secondo il regolamento IISA.<\/p>\n      <table class=\"hours\">\n        <tbody>\n          <tr><td>Medical check (1000 m)<\/td><td>18.02 &#183; 12:00&#8211;19:00<\/td><\/tr>\n          <tr><td>Race office<\/td><td>18.02 &#183; 10:00&#8211;19:00<\/td><\/tr>\n          <tr><td>Race office<\/td><td>19.02 &#183; 08:00&#8211;16:00<\/td><\/tr>\n          <tr><td>Race office<\/td><td>20.02 &#183; 08:00&#8211;16:00<\/td><\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"band hotel\" id=\"alloggio\">\n  <div class=\"wrap hotel-grid\">\n    <div class=\"postcard\" id=\"postcard\">\n      <canvas id=\"pcCv\" aria-hidden=\"true\"><\/canvas>\n      <img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2022\/12\/Winterhotel_Erzgebirge.jpg\" alt=\"Landhotel Altes Zollhaus in inverno\" loading=\"lazy\" onerror=\"this.remove()\">\n      <div class=\"stamp\"><b>XVI<\/b>secolo<br>Neuhermsdorf<\/div>\n    <\/div>\n    <div>\n      <p class=\"eyebrow\">Dove alloggiare<\/p>\n      <h2 style=\"margin:12px 0 20px\">Dormi a due passi dal lago di gara<\/h2>\n      <p class=\"lead\">Il Landhotel Altes Zollhaus &#232; un antico maniero la cui storia risale al XVI secolo, a circa 300 metri dal lago naturale della gara. Atmosfera affascinante, comfort moderni: l&#8217;alloggio ideale dopo una giornata nell&#8217;acqua ghiacciata.<\/p>\n      <ul class=\"feat\">\n        <li><b>~300 m<\/b>dal lago di gara<\/li>\n        <li><b>Ristorante<\/b>Piatti regionali e cucina italiana con pizzeria<\/li>\n        <li><b>Bar<\/b>Per un drink dopo la gara<\/li>\n        <li><b>Sauna<\/b>Anche dentro l&#8217;hotel<\/li>\n      <\/ul>\n      <a class=\"btn btn-go\" href=\"https:\/\/landhotel-altes-zollhaus.com\/\" target=\"_blank\" rel=\"noopener\">Prenota il tuo soggiorno<\/a>\n    <\/div>\n  <\/div>\n  <div class=\"wrap\">\n    <div class=\"gal\" aria-label=\"Foto dell'hotel e delle camere\">\n      <figure class=\"hph\" data-k=\"Landhotel\" style=\"--fb:linear-gradient(160deg,#2C4A5E,#0C1820)\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2022\/12\/landhotel-altes-zollhaus-1024x768-1.jpg\" alt=\"Landhotel Altes Zollhaus\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption><b>Landhotel Altes Zollhaus<\/b><span>Il maniero del XVI secolo<\/span><\/figcaption><\/figure>\n      <figure class=\"hph\" data-k=\"Camera\" style=\"--fb:linear-gradient(160deg,#5A3A22,#1A0F08)\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2022\/12\/zollhaus-superior-zimmer-1024x673-1.jpg\" alt=\"Camera superior\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption><b>Camera superior<\/b><span>Spazio e comfort<\/span><\/figcaption><\/figure>\n      <figure class=\"hph\" data-k=\"Camera\" style=\"--fb:linear-gradient(160deg,#3A4E3A,#0E1A10)\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2022\/12\/Doppelzimmer-erzgebirge-1024x634-1.jpg\" alt=\"Camera doppia\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption><b>Camera doppia<\/b><span>Con vista sul bosco<\/span><\/figcaption><\/figure>\n      <figure class=\"hph\" data-k=\"Camera\" style=\"--fb:linear-gradient(160deg,#6B4A28,#1E1206)\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2022\/12\/Zollhaus-Holzzimmer-1024x683-1.jpg\" alt=\"Camera in legno\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption><b>Camera in legno<\/b><span>Atmosfera da baita<\/span><\/figcaption><\/figure>\n      <figure class=\"hph\" data-k=\"Camera\" style=\"--fb:linear-gradient(160deg,#2C4A5E,#0C1820)\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2022\/12\/superior-zimmer-zollhaus-1024x652-1.jpg\" alt=\"Camera superior\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption><b>Camera superior<\/b><span>Luce e legno<\/span><\/figcaption><\/figure>\n      <figure class=\"hph\" data-k=\"Dormire\" style=\"--fb:linear-gradient(160deg,#3A3050,#100C1A)\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2022\/12\/gut-schlafen-im-erzgebirge-1024x682-1.jpg\" alt=\"Dormire bene\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption><b>Dormire bene<\/b><span>Dopo la gara<\/span><\/figcaption><\/figure>\n      <figure class=\"hph\" data-k=\"Sera\" style=\"--fb:linear-gradient(160deg,#6B3A20,#1A0B04)\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2022\/12\/zollhaus-abend-1024x637-1.jpg\" alt=\"Sera allo Zollhaus\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption><b>Sera allo Zollhaus<\/b><span>Ristorante e bar<\/span><\/figcaption><\/figure>\n      <figure class=\"hph\" data-k=\"Sauna\" style=\"--fb:linear-gradient(160deg,#7A3A1E,#200C05)\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2022\/12\/Dampfsauna_zum_relaxen54809ca7853d4-1024x683-1.jpg\" alt=\"Sauna in hotel\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption><b>Sauna in hotel<\/b><span>4 saune per il recupero<\/span><\/figcaption><\/figure>\n      <figure class=\"hph\" data-k=\"Sentiero\" style=\"--fb:linear-gradient(160deg,#1E5A5A,#0A2020)\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2022\/12\/seeweg-erzgebirge-1024x683-1.jpg\" alt=\"Sentiero del lago\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption><b>Sentiero del lago<\/b><span>Dall&#8217;hotel al lago di gara<\/span><\/figcaption><\/figure>\n    <\/div>\n    <p class=\"eyebrow\" style=\"color:var(--muted);margin-top:6px\">Scorri per vedere altre foto<\/p>\n  <\/div>\n<\/section>\n\n<section class=\"band\" id=\"partner\">\n  <div class=\"wrap\">\n    <p class=\"eyebrow\">Cooperazioni dell&#8217;evento<\/p>\n    <div class=\"partners\">\n      <figure class=\"plogo\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2019\/07\/iisa-zollhaus-open.png\" alt=\"IISA\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption>IISA<\/figcaption><\/figure>\n      <figure class=\"plogo\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2019\/07\/KeepFrozen-Logo-1024x1024.png\" alt=\"Keep Frozen\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption>Keep Frozen<\/figcaption><\/figure>\n      <figure class=\"plogo\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2019\/07\/Das-Yogahotel-Altes-Zollhaus-logo.png\" alt=\"Yogahotel Altes Zollhaus\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption>Yogahotel Altes Zollhaus<\/figcaption><\/figure>\n      <figure class=\"plogo\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2021\/05\/addicted-to-nature-logo.jpg\" alt=\"Addicted To Nature\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption>Addicted To Nature<\/figcaption><\/figure>\n      <figure class=\"plogo\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/08\/Kalura_marchio_v_positivo-1024x1024.png\" alt=\"Hotel Kalura\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption>Hotel Kalura<\/figcaption><\/figure>\n      <figure class=\"plogo\"><img decoding=\"async\" src=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/08\/Almaris_marchio_positivo-1024x630.png\" alt=\"Almaris\" loading=\"lazy\" onerror=\"this.remove()\"><figcaption>Almaris<\/figcaption><\/figure>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"band final\">\n  <div class=\"wrap\">\n    <p class=\"eyebrow\">19&#8211;20.02.2027 &#183; Neuhermsdorf<\/p>\n    <h2 style=\"margin-top:14px\" id=\"zoFinalH\" data-no-translation>Il tuo primo passo<br>nel <em>ghiaccio<\/em><\/h2>\n    <p class=\"lead\" style=\"margin-top:22px\">Che sia il tuo primo 50 metri o che tu sia gi&#224; abituato all&#8217;acqua gelida, alle Zollhaus Open 2027 c&#8217;&#232; una sfida adatta a te.<\/p>\n    <div class=\"row\">\n      <a class=\"btn btn-go\" href=\"https:\/\/internationaliceswimming.com\/view-iisa-event\/?event=253\" target=\"_blank\" rel=\"noopener\">Registrati qui<\/a>\n      <a class=\"btn btn-ghost\" href=\"#programma\">Vedi il programma<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<\/div>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"SportsEvent\",\"name\":\"Zollhaus Open 2027\",\"alternateName\":\"Campionati tedeschi di nuoto nel ghiaccio 2027\",\"description\":\"German Ice Swimming Championships 2027 at Landhotel Altes Zollhaus in Neuhermsdorf: races from 50 to 1000 m in 2 &#176;C water, IISA rules.\",\"sport\":\"Ice swimming\",\"startDate\":\"2027-02-19T10:00:00+01:00\",\"endDate\":\"2027-02-20\",\"eventStatus\":\"https:\/\/schema.org\/EventScheduled\",\"eventAttendanceMode\":\"https:\/\/schema.org\/OfflineEventAttendanceMode\",\"location\":{\"@type\":\"Place\",\"name\":\"Landhotel Altes Zollhaus\",\"address\":{\"@type\":\"PostalAddress\",\"addressLocality\":\"Neuhermsdorf\",\"addressRegion\":\"Sachsen\",\"addressCountry\":\"DE\"}},\"image\":[\"https:\/\/addicted-to.com\/wp-content\/uploads\/2025\/02\/zollhaus-open-ice-swimming.jpg\",\"https:\/\/addicted-to.com\/wp-content\/uploads\/2026\/02\/ice-swimming-events.jpg\"],\"organizer\":{\"@type\":\"Organization\",\"name\":\"Addicted To Nature\",\"url\":\"https:\/\/addicted-to.com\/\"},\"offers\":{\"@type\":\"Offer\",\"url\":\"https:\/\/internationaliceswimming.com\/view-iisa-event\/?event=253\",\"availability\":\"https:\/\/schema.org\/InStock\",\"validThrough\":\"2027-02-10T20:00:00+01:00\"}}<\/script>\n<script>\n(()=>{\nconst RM = matchMedia('(prefers-reduced-motion: reduce)').matches;\nconst $ = s=>document.querySelector(s);\nconst LANG=(((document.documentElement.lang||'it')+'').slice(0,2).toLowerCase());\nconst pick=o=>(o&&(o[LANG]!==undefined?o[LANG]:o.it));\nconst TX={\n mq:{it:['19-20.02.2027','Landhotel Altes Zollhaus','Neuhermsdorf','800 m s.l.m.','Acqua 2 \\u00b0C','5 corsie','Vasca da 25 m','Dai 50 ai 1000 m','22 gare','Regolamento IISA'],\n     de:['19.-20.02.2027','Landhotel Altes Zollhaus','Neuhermsdorf','800 m \\u00fc. NN','Wasser 2 \\u00b0C','5 Bahnen','25-m-Becken','50 bis 1000 m','22 Rennen','IISA-Regeln'],\n     en:['19-20.02.2027','Landhotel Altes Zollhaus','Neuhermsdorf','800 m a.s.l.','Water 2 \\u00b0C','5 lanes','25 m pool','50 to 1000 m','22 races','IISA rules']},\n sn:{it:{free:'Stile libero',breast:'Rana',fly:'Delfino'},de:{free:'Freistil',breast:'Brust',fly:'Schmetterling'},en:{free:'Freestyle',breast:'Breaststroke',fly:'Butterfly'}},\n snl:{it:{free:'Stile libero',breast:'Rana',fly:'Delfino',relay:'Staffetta stile libero mista'},de:{free:'Freistil',breast:'Brust',fly:'Schmetterling',relay:'Mixed-Staffel Freistil'},en:{free:'Freestyle',breast:'Breaststroke',fly:'Butterfly',relay:'Mixed freestyle relay'}},\n tent:{it:'Tenda sauna',de:'Saunazelt',en:'Sauna tent'},\n tub:{it:'Vasca calda',de:'Hot Tub',en:'Hot tub'},\n chg:{it:'Spogliatoio',de:'Umkleide',en:'Changing room'},\n hotel:{it:'Landhotel \\u00b7 4 saune',de:'Landhotel \\u00b7 4 Saunen',en:'Landhotel \\u00b7 4 saunas'},\n startEnd:{it:'Partenza \\u00b7 Arrivo',de:'Start \\u00b7 Ziel',en:'Start \\u00b7 Finish'},\n turn:{it:'Virata \\u00b7 25 m',de:'Wende \\u00b7 25 m',en:'Turn \\u00b7 25 m'},\n marks:{it:'Prendete posizione\\u2026',de:'Auf die Pl\\u00e4tze\\u2026',en:'Take your marks\\u2026'},\n go:{it:'VIA!',de:'LOS!',en:'GO!'},\n pressTap:{it:'Premi il segnale \\u00b7 poi tocca per nuotare',de:'Startsignal dr\\u00fccken \\u00b7 dann tippen zum Schwimmen',en:'Press the start \\u00b7 then tap to swim'},\n press:{it:'Premi il segnale di partenza',de:'Dr\\u00fcck auf das Startsignal',en:'Press the start signal'},\n yourTime:{it:(t,p)=>`Il tuo tempo: ${t} \\u00b7 ${p}\\u00b0 posto`,de:(t,p)=>`Deine Zeit: ${t} \\u00b7 Platz ${p}`,en:(t,p)=>`Your time: ${t} \\u00b7 place ${p}`},\n dnf:{it:'Ritirato: troppo lento!',de:'Aufgegeben: zu langsam!',en:'Retired: too slow!'},\n gold:{it:(n,t)=>`Oro: ${n} \\u00b7 ${t}`,de:(n,t)=>`Gold: ${n} \\u00b7 ${t}`,en:(n,t)=>`Gold: ${n} \\u00b7 ${t}`},\n acc:{it:n=>`\\u00d7${n} accelerato`,de:n=>`\\u00d7${n} beschleunigt`,en:n=>`\\u00d7${n} sped up`},\n lane:{it:'Corsia',de:'Bahn',en:'Lane'},\n btnStart:{it:'Segnale di partenza',de:'Startsignal',en:'Start signal'},\n btnNew:{it:'Nuova gara',de:'Neues Rennen',en:'New race'},\n user:{it:'Nuota tu',de:'Schwimm selbst',en:'Swim yourself'},\n userOn:{it:'Nuota tu: attivo',de:'Schwimm selbst: an',en:'Swim yourself: on'},\n stroke:{it:'Bracciata!',de:'Zug!',en:'Stroke!'},\n note1:{it:'Atleti di esempio con tempi simulati. Le gare lunghe scorrono accelerate.',de:'Beispiel-Athleten mit simulierten Zeiten. Lange Rennen laufen beschleunigt.',en:'Sample athletes with simulated times. Long races run sped up.'},\n note2:{it:'\\u201cNuota tu\\u201d \\u00e8 disponibile su 50 e 100 m. Atleti di esempio con tempi simulati.',de:'\\u201eSchwimm selbst\\u201c gibt es \\u00fcber 50 und 100 m. Beispiel-Athleten mit simulierten Zeiten.',en:'\\u201cSwim yourself\\u201d is available over 50 and 100 m. Sample athletes with simulated times.'},\n you:{it:'TU',de:'DU',en:'YOU'},\n laps:{it:n=>`${n} vasche da 25 m`,de:n=>`${n} Bahnen \\u00e0 25 m`,en:n=>`${n} lengths of 25 m`},\n dd:{\n  it:[['Il primo tuffo','Il punto di partenza ideale per chi vuole vivere il nuoto nel ghiaccio per la prima volta. Non serve essere atleti: serve la voglia di provare.','Stile libero, rana, delfino','Aperto a tutti, in buona salute e con i requisiti IISA.'],\n   ['Il passo successivo','Quattro vasche nell\\u2019acqua a 2 \\u00b0C. Il freddo si sente davvero, la testa fa la differenza.','Stile libero, rana, delfino','Ottimo dopo una stagione di allenamento in acqua fredda.'],\n   ['Rana di resistenza','Otto vasche a rana: ritmo regolare, respiro controllato, sguardo sulla parete.','Rana','Per chi ha gi\\u00e0 esperienza in acque gelide.'],\n   ['Il mezzo chilometro\\u2026 quasi','Dieci vasche a stile libero. Qui ti confronti con nuotatori esperti di diversi Paesi.','Stile libero','Per chi ha gi\\u00e0 esperienza in acque gelide.'],\n   ['Sfida seria','Venti vasche. Il corpo lavora per restare caldo, la mente per restare calma.','Stile libero','Distanza impegnativa: preparati con allenamenti regolari.'],\n   ['Il chilometro di ghiaccio','Quaranta vasche nell\\u2019acqua gelida. La distanza regina delle Zollhaus Open.','Stile libero','Medical check obbligatorio il 18.02 dalle 12:00 alle 19:00.']],\n  de:[['Der erste Sprung','Der ideale Einstieg f\\u00fcr alle, die Eisschwimmen zum ersten Mal erleben wollen. Du musst kein Profi sein, nur Lust haben, es zu probieren.','Freistil, Brust, Schmetterling','Offen f\\u00fcr alle, die gesund sind und die IISA-Voraussetzungen erf\\u00fcllen.'],\n   ['Der n\\u00e4chste Schritt','Vier Bahnen im 2 \\u00b0C kalten Wasser. Die K\\u00e4lte sp\\u00fcrst du wirklich, der Kopf macht den Unterschied.','Freistil, Brust, Schmetterling','Ideal nach einer Saison Training im kalten Wasser.'],\n   ['Brust mit Ausdauer','Acht Bahnen Brust: gleichm\\u00e4\\u00dfiger Rhythmus, ruhiger Atem, Blick zur Wand.','Brust','F\\u00fcr alle mit Erfahrung im Eiswasser.'],\n   ['Fast ein halber Kilometer','Zehn Bahnen Freistil. Hier misst du dich mit erfahrenen Schwimmern aus verschiedenen L\\u00e4ndern.','Freistil','F\\u00fcr alle mit Erfahrung im Eiswasser.'],\n   ['Echte Herausforderung','Zwanzig Bahnen. Der K\\u00f6rper arbeitet, um warm zu bleiben, der Kopf, um ruhig zu bleiben.','Freistil','Anspruchsvolle Distanz: Bereite dich mit regelm\\u00e4\\u00dfigem Training vor.'],\n   ['Der Eiskilometer','Vierzig Bahnen im eiskalten Wasser. Die K\\u00f6nigsdistanz der Zollhaus Open.','Freistil','Medical Check Pflicht am 18.02. von 12:00 bis 19:00 Uhr.']],\n  en:[['The first plunge','The ideal starting point for anyone who wants to try ice swimming for the first time. You do not need to be an athlete, just willing to give it a go.','Freestyle, breaststroke, butterfly','Open to everyone in good health who meets the IISA requirements.'],\n   ['The next step','Four lengths in 2 \\u00b0C water. You really feel the cold, and your head makes the difference.','Freestyle, breaststroke, butterfly','Great after a season of cold-water training.'],\n   ['Breaststroke endurance','Eight lengths of breaststroke: steady rhythm, calm breathing, eyes on the wall.','Breaststroke','For swimmers with ice-water experience.'],\n   ['Almost half a kilometre','Ten lengths of freestyle. Here you race experienced swimmers from several countries.','Freestyle','For swimmers with ice-water experience.'],\n   ['A serious challenge','Twenty lengths. Your body works to stay warm, your mind to stay calm.','Freestyle','A demanding distance: prepare with regular training.'],\n   ['The ice kilometre','Forty lengths in icy water. The signature distance of the Zollhaus Open.','Freestyle','Mandatory medical check on 18.02 from 12:00 to 19:00.']]},\n gs:{it:['Brividi','Ti stai scongelando','Piacevole','Pronto'],de:['Z\\u00e4hneklappern','Du taust auf','Angenehm','Bereit'],en:['Shivering','Thawing out','Cosy','Ready']},\n skin:{it:'Pelle',de:'Haut',en:'Skin'},\n ready:{it:'Pronto per la prossima gara',de:'Bereit f\\u00fcr das n\\u00e4chste Rennen',en:'Ready for the next race'},\n back:{it:'Torna nel lago',de:'Zur\\u00fcck in den See',en:'Back into the lake'},\n sip:{it:'Bevi un sorso',de:'Einen Schluck trinken',en:'Take a sip'},\n refill:{it:'Riempi la tazza',de:'Tasse nachf\\u00fcllen',en:'Refill the cup'},\n filters:{it:['Tutte','Stile libero','Rana','Delfino','Staffette'],de:['Alle','Freistil','Brust','Schmetterling','Staffeln'],en:['All','Freestyle','Breaststroke','Butterfly','Relays']},\n days:{it:['Venerd\\u00ec 19.02.2027 \\u00b7 inizio ore 10:00','Sabato 20.02.2027 \\u00b7 inizio ore 10:00'],de:['Freitag, 19.02.2027 \\u00b7 Start 10:00 Uhr','Samstag, 20.02.2027 \\u00b7 Start 10:00 Uhr'],en:['Friday 19.02.2027 \\u00b7 start 10:00','Saturday 20.02.2027 \\u00b7 start 10:00']},\n races:{it:'Gare',de:'Rennen',en:'Races'},race:{it:'Gara',de:'Rennen',en:'Race'},\n cat:{it:'Donne \\u00b7 Uomini',de:'Frauen \\u00b7 M\\u00e4nner',en:'Women \\u00b7 Men'},\n rcat:{it:'2 uomini \\u00b7 2 donne',de:'2 M\\u00e4nner \\u00b7 2 Frauen',en:'2 men \\u00b7 2 women'},\n sim:{it:'Simula sul lago',de:'Auf dem See simulieren',en:'Simulate on the lake'},\n none:{it:'Nessuna gara di questo stile in questo giorno.',de:'An diesem Tag gibt es kein Rennen in dieser Lage.',en:'No race in this stroke on this day.'},\n allOk:{it:'Tutto pronto. Iscriviti entro il 10.02.2027 alle 20:00.',de:'Alles bereit. Melde dich bis zum 10.02.2027 um 20:00 Uhr an.',en:'All set. Register by 10.02.2027 at 20:00.'},\n missing:{it:n=>`Manca${n===1?'':'no'} ${n} requisit${n===1?'o':'i'}.`,de:n=>`Es fehl${n===1?'t':'en'} noch ${n} Voraussetzung${n===1?'':'en'}.`,en:n=>`${n} requirement${n===1?'':'s'} missing.`},\n dleft:{it:n=>`${n} giorni`,de:n=>`${n} Tage`,en:n=>`${n} days`},\n closed:{it:'Chiusa',de:'Geschlossen',en:'Closed'},\n snd:{it:'Suono',de:'Ton',en:'Sound'}\n};\nconst tr=k=>pick(TX[k]);\n\nconst rand=(a,b)=>a+Math.random()*(b-a);\nfunction rng(seed){return function(){seed|=0;seed=seed+0x6D2B79F5|0;let t=Math.imul(seed^seed>>>15,1|seed);t=t+Math.imul(t^t>>>7,61|t)^t;return((t^t>>>14)>>>0)\/4294967296}}\nconst vis = new Map();\nconst io = new IntersectionObserver(es=>es.forEach(e=>vis.set(e.target,e.isIntersecting)),{rootMargin:'100px'});\nfunction watch(el){vis.set(el,true);io.observe(el)}\nfunction isVis(el){return vis.get(el)!==false}\n\n\/* ---------- AUDIO ---------- *\/\nlet AC=null, soundOn=true;\nfunction ac(){ if(!soundOn) return null; try{ if(!AC) AC=new (window.AudioContext||window.webkitAudioContext)(); if(AC.state==='suspended') AC.resume(); }catch(e){return null} return AC }\nfunction beep(f=880,d=.5,v=.25,type='square'){const a=ac();if(!a)return;const o=a.createOscillator(),g=a.createGain();o.type=type;o.frequency.value=f;g.gain.setValueAtTime(v,a.currentTime);g.gain.exponentialRampToValueAtTime(.001,a.currentTime+d);o.connect(g).connect(a.destination);o.start();o.stop(a.currentTime+d)}\nfunction noise(d=1,v=.3,ftype='highpass',freq=2500){const a=ac();if(!a)return;const b=a.createBuffer(1,a.sampleRate*d,a.sampleRate),ch=b.getChannelData(0);for(let i=0;i<ch.length;i++)ch[i]=Math.random()*2-1;const s=a.createBufferSource();s.buffer=b;const f=a.createBiquadFilter();f.type=ftype;f.frequency.value=freq;const g=a.createGain();g.gain.setValueAtTime(.001,a.currentTime);g.gain.exponentialRampToValueAtTime(v,a.currentTime+.05);g.gain.exponentialRampToValueAtTime(.001,a.currentTime+d);s.connect(f).connect(g).connect(a.destination);s.start()}\nfunction bubble(){const a=ac();if(!a)return;const o=a.createOscillator(),g=a.createGain();o.type='sine';const t=a.currentTime;o.frequency.setValueAtTime(rand(300,600),t);o.frequency.exponentialRampToValueAtTime(rand(900,1500),t+.08);g.gain.setValueAtTime(.06,t);g.gain.exponentialRampToValueAtTime(.001,t+.1);o.connect(g).connect(a.destination);o.start();o.stop(t+.12)}\n$('#sndBtn').textContent=tr('snd')+': on';\n$('#sndBtn').addEventListener('click',e=>{soundOn=!soundOn;e.currentTarget.textContent=tr('snd')+': '+(soundOn?'on':'off');e.currentTarget.setAttribute('aria-pressed',soundOn)});\n\n\/* ---------- MARQUEE ---------- *\/\nconst mqItems=tr('mq');\nconst mqHtml=mqItems.map(t=>`<span>${t}<\/span><span class=\"d\"><\/span>`).join('');\n$('#mq').innerHTML=mqHtml+mqHtml;\n\n\/* ---------- COUNTDOWNS ---------- *\/\nconst RACE=new Date('2027-02-19T10:00:00+01:00').getTime();\nconst DEAD=new Date('2027-02-10T20:00:00+01:00').getTime();\nconst pad=n=>String(n).padStart(2,'0');\nfunction tick(){\n  let ms=Math.max(0,RACE-Date.now());\n  const d=Math.floor(ms\/864e5),h=Math.floor(ms\/36e5)%24,m=Math.floor(ms\/6e4)%60,s=Math.floor(ms\/1e3)%60;\n  $('#cd-d').textContent=d;$('#cd-h').textContent=pad(h);$('#cd-m').textContent=pad(m);$('#cd-s').textContent=pad(s);\n  const dl=DEAD-Date.now();\n  $('#dlBig').textContent= dl>0 ? tr('dleft')(Math.ceil(dl\/864e5)) : tr('closed');\n}\ntick();setInterval(tick,1000);\n\n\/* ---------- HERO ---------- *\/\nconst hero=$('.hero'); watch(hero);\nconst hS=$('#heroScene'),hF=$('#heroFrost'),hN=$('#heroSnow');\nlet HW=0,HH=0,DPR=1,frostTex=null,mask=null,flakes=[];\nfunction drawScene(){\n  const c=hS.getContext('2d');c.setTransform(DPR,0,0,DPR,0,0);\n  const g=c.createLinearGradient(0,0,0,HH);\n  g.addColorStop(0,'#04110C');g.addColorStop(.45,'#0E2E33');g.addColorStop(.62,'#2F5F66');g.addColorStop(.63,'#9DC3CB');g.addColorStop(1,'#5E8C96');\n  c.fillStyle=g;c.fillRect(0,0,HW,HH);\n  \/\/ moon glow\n  const mg=c.createRadialGradient(HW*.78,HH*.2,0,HW*.78,HH*.2,HW*.35);mg.addColorStop(0,'rgba(220,240,245,.22)');mg.addColorStop(1,'rgba(220,240,245,0)');c.fillStyle=mg;c.fillRect(0,0,HW,HH);\n  c.fillStyle='#EAF6F8';c.beginPath();c.arc(HW*.78,HH*.2,Math.max(18,HW*.022),0,7);c.fill();\n  const r=rng(7);\n  const hor=HH*.63;\n  \/\/ tree rows (back to front)\n  [[ '#16393A',.55,.9],['#0F2A28',.75,1.15],['#081B16',1,1.5]].forEach(([col,yk,sz],row)=>{\n    c.fillStyle=col;\n    for(let x=-20;x<HW+20;x+=rand(10,22)*sz){\n      const h=(rand(40,90))*sz*(HW<600?.7:1); const w=h*.36; const base=hor-(1-yk)*30+ (row===2?6:0);\n      c.beginPath();c.moveTo(x,base-h);\n      for(let k=1;k<=4;k++){const yy=base-h+h*k\/4; c.lineTo(x+w*k\/4,yy); c.lineTo(x+w*k\/8,yy);}\n      c.lineTo(x,base);\n      for(let k=4;k>=1;k--){const yy=base-h+h*k\/4; c.lineTo(x-w*k\/8,yy); c.lineTo(x-w*k\/4,yy);}\n      c.closePath();c.fill();\n    }\n  });\n  \/\/ frozen lake + perspective lanes\n  c.fillStyle='#B9D6DD';c.fillRect(0,hor+4,HW,HH);\n  const cx=HW*.5;\n  c.fillStyle='#0D3A48';\n  c.beginPath();c.moveTo(cx-HW*.14,hor+16);c.lineTo(cx+HW*.14,hor+16);c.lineTo(cx+HW*.62,HH);c.lineTo(cx-HW*.62,HH);c.closePath();c.fill();\n  c.strokeStyle='rgba(255,255,255,.7)';c.lineWidth=2;c.stroke();\n  for(let i=1;i<6;i++){const t=i\/6;\n    c.strokeStyle='rgba(232,71,59,.55)';c.setLineDash([6,6]);c.lineWidth=1.6;\n    c.beginPath();c.moveTo(cx-HW*.14+HW*.28*t,hor+16);c.lineTo(cx-HW*.62+HW*1.24*t,HH);c.stroke();}\n  c.setLineDash([]);\n  \/\/ snow on ice\n  for(let i=0;i<400;i++){c.fillStyle=`rgba(255,255,255,${r()*.4})`;const y=hor+6+r()*(HH-hor);c.fillRect(r()*HW,y,2,1)}\n  \/\/ dark veil at the bottom so the text stays readable\n  const v=c.createLinearGradient(0,HH*.45,0,HH);v.addColorStop(0,'rgba(7,23,15,0)');v.addColorStop(.55,'rgba(7,23,15,.62)');v.addColorStop(1,'rgba(7,23,15,.92)');c.fillStyle=v;c.fillRect(0,0,HW,HH);\n}\nfunction makeFrost(){\n  frostTex=document.createElement('canvas');frostTex.width=HW*DPR;frostTex.height=HH*DPR;\n  const c=frostTex.getContext('2d');c.scale(DPR,DPR);\n  const gr=c.createRadialGradient(HW\/2,HH\/2,HW*.15,HW\/2,HH\/2,HW*.75);\n  gr.addColorStop(0,'rgba(225,242,246,.18)');gr.addColorStop(1,'rgba(225,242,246,.5)');\n  c.fillStyle=gr;c.fillRect(0,0,HW,HH);\n  const r=rng(42);\n  function branch(x,y,a,len,dep){\n    if(dep<=0||len<2)return;\n    const x2=x+Math.cos(a)*len,y2=y+Math.sin(a)*len;\n    c.lineWidth=dep*.4;c.strokeStyle=`rgba(240,250,252,${.08+dep*.05})`;\n    c.beginPath();c.moveTo(x,y);c.lineTo(x2,y2);c.stroke();\n    branch(x2,y2,a+(r()-.5)*.5,len*.82,dep-1);\n    if(r()<.7)branch(x+(x2-x)*.5,y+(y2-y)*.5,a+.9+(r()-.5)*.3,len*.5,dep-2);\n    if(r()<.7)branch(x+(x2-x)*.5,y+(y2-y)*.5,a-.9+(r()-.5)*.3,len*.5,dep-2);\n  }\n  const n=Math.round(HW*HH\/16000);\n  for(let i=0;i<n;i++){\n    \/\/ more crystals near edges\n    let x=r()*HW,y=r()*HH; if(r()<.6){ if(r()<.5) x = r()<.5? r()*HW*.18 : HW-r()*HW*.18; else y = r()<.5? r()*HH*.18 : HH-r()*HH*.18; }\n    const arms=5+Math.floor(r()*3);\n    for(let k=0;k<arms;k++) branch(x,y,k\/arms*Math.PI*2+r(),rand(10,26),5);\n  }\n  for(let i=0;i<HW*HH\/60;i++){c.fillStyle=`rgba(255,255,255,${r()*.25})`;c.fillRect(r()*HW,r()*HH,1.2,1.2)}\n  mask=document.createElement('canvas');mask.width=HW*DPR;mask.height=HH*DPR;\n}\nfunction sizeHero(){\n  const b=hero.getBoundingClientRect();HW=b.width;HH=b.height;DPR=Math.min(2,devicePixelRatio||1);\n  [hS,hF,hN].forEach(cv=>{cv.width=HW*DPR;cv.height=HH*DPR});\n  drawScene();makeFrost();\n  flakes=Array.from({length:Math.round(HW\/9)},()=>({x:rand(0,HW),y:rand(0,HH),r:rand(.6,2.4),v:rand(14,46),w:rand(0,6)}));\n}\nfunction melt(x,y){\n  const m=mask.getContext('2d');m.setTransform(DPR,0,0,DPR,0,0);\n  const R=Math.max(60,HW*.06);\n  const g=m.createRadialGradient(x,y,0,x,y,R);g.addColorStop(0,'rgba(0,0,0,.95)');g.addColorStop(1,'rgba(0,0,0,0)');\n  m.fillStyle=g;m.beginPath();m.arc(x,y,R,0,7);m.fill();\n}\nhero.addEventListener('pointermove',e=>{const b=hero.getBoundingClientRect();melt(e.clientX-b.left,e.clientY-b.top)});\nhero.addEventListener('pointerdown',e=>{const b=hero.getBoundingClientRect();melt(e.clientX-b.left,e.clientY-b.top)});\nfunction heroFrame(dt){\n  if(!frostTex)return;\n  const m=mask.getContext('2d');m.setTransform(1,0,0,1,0,0);\n  m.globalCompositeOperation='destination-out';m.fillStyle=`rgba(0,0,0,${Math.min(1,dt*.35)})`;m.fillRect(0,0,mask.width,mask.height);m.globalCompositeOperation='source-over';\n  const f=hF.getContext('2d');f.setTransform(1,0,0,1,0,0);f.clearRect(0,0,hF.width,hF.height);\n  f.globalCompositeOperation='source-over';f.drawImage(frostTex,0,0);\n  f.globalCompositeOperation='destination-out';f.drawImage(mask,0,0);f.globalCompositeOperation='source-over';\n  const s=hN.getContext('2d');s.setTransform(DPR,0,0,DPR,0,0);s.clearRect(0,0,HW,HH);s.fillStyle='rgba(255,255,255,.85)';\n  for(const p of flakes){p.y+=p.v*dt;p.w+=dt;p.x+=Math.sin(p.w)*.3; if(p.y>HH){p.y=-4;p.x=rand(0,HW)} s.beginPath();s.arc(p.x,p.y,p.r,0,7);s.fill()}\n}\n\n\/* ---------- LAKE SIMULATOR ---------- *\/\nconst cv=$('#lakeCv'),ctx=cv.getContext('2d'),stage=cv.parentElement; watch(stage);\nconst W=1000,H=620,PX0=250,PX1=750,PY0=200,PY1=440,LH=(PY1-PY0)\/5,PPM=(PX1-PX0)\/25;\nconst VC={x0:150,x1:900,y0:20,y1:600};\nlet vertical=false,S=1,cdpr=1,CW=0,CH=0,bgCv=null;\nconst AV={50:['free','breast','fly'],100:['free','breast','fly'],200:['breast'],250:['free'],500:['free'],1000:['free']};\nconst SN=tr('sn');\nlet dist=50,stroke='free',userMode=false;\nconst ATH=[['L. Becker','GER'],['M. Nowak','POL'],['S. Rinaldi','ITA'],['J. Dvo\\u0159\\u00e1k','CZE'],['A. Hoffmann','GER'],['E. de Vries','NED'],['K. Larsen','DEN'],['T. Huber','AUT'],['P. Kowalski','POL'],['F. Wagner','GER']];\nconst CAPS=['#FF6B35','#FFD23F','#3DDC97','#E84393','#4D9DE0','#F4F4F4'];\nlet race=null,parts=[],chunks=[],steam=[];\n\nfunction buildBg(){\n  bgCv=document.createElement('canvas');const K=2;bgCv.width=W*K;bgCv.height=H*K;\n  const c=bgCv.getContext('2d');c.scale(K,K);const r=rng(11);\n  c.fillStyle='#E8F0F0';c.fillRect(0,0,W,H);\n  for(let i=0;i<5000;i++){c.fillStyle=`rgba(110,145,155,${r()*.07})`;c.fillRect(r()*W,r()*H,2,2)}\n  \/\/ paths in snow\n  c.strokeStyle='rgba(160,185,190,.55)';c.lineWidth=12;c.lineCap='round';\n  c.beginPath();c.moveTo(225,105);c.bezierCurveTo(200,160,210,180,238,196);c.stroke();\n  c.beginPath();c.moveTo(762,446);c.bezierCurveTo(790,500,815,515,840,505);c.stroke();\n  c.beginPath();c.moveTo(190,90);c.quadraticCurveTo(160,120,165,148);c.stroke();\n  c.beginPath();c.moveTo(238,446);c.quadraticCurveTo(220,480,205,488);c.stroke();\n  \/\/ lake blob\n  const pts=[];for(let i=0;i<72;i++){const a=i\/72*Math.PI*2;const k=1+.06*Math.sin(3*a+1)+.04*Math.sin(5*a+2)+(r()-.5)*.03;pts.push([500+Math.cos(a)*370*k,322+Math.sin(a)*228*k])}\n  c.beginPath();pts.forEach((p,i)=>i?c.lineTo(...p):c.moveTo(...p));c.closePath();\n  c.fillStyle='#8FB2BD';c.fill();\n  c.save();c.clip();\n  const lg=c.createRadialGradient(500,322,40,500,322,380);lg.addColorStop(0,'#C9E0E5');lg.addColorStop(.85,'#B4D1D8');lg.addColorStop(1,'#93B6C0');\n  c.fillStyle=lg;c.fillRect(0,0,W,H);\n  for(let i=0;i<60;i++){c.fillStyle=`rgba(255,255,255,${r()*.35})`;c.beginPath();c.ellipse(r()*W,r()*H,rand(10,60),rand(4,16),r()*3,0,7);c.fill()}\n  for(let i=0;i<40;i++){let x=r()*W,y=r()*H;c.strokeStyle=r()<.5?'rgba(255,255,255,.55)':'rgba(70,110,125,.22)';c.lineWidth=.8;c.beginPath();c.moveTo(x,y);for(let k=0;k<5;k++){x+=rand(-30,30);y+=rand(-20,20);c.lineTo(x,y)}c.stroke()}\n  c.restore();\n  c.strokeStyle='rgba(255,255,255,.6)';c.lineWidth=3;c.beginPath();pts.forEach((p,i)=>i?c.lineTo(...p):c.moveTo(...p));c.closePath();c.stroke();\n  \/\/ pool: cut edge\n  c.fillStyle='rgba(255,255,255,.9)';c.fillRect(PX0-6,PY0-8,PX1-PX0+12,PY1-PY0+16);\n  const pg=c.createLinearGradient(0,PY0,0,PY1);pg.addColorStop(0,'#0E4254');pg.addColorStop(.5,'#0B3646');pg.addColorStop(1,'#0E4254');\n  c.fillStyle=pg;c.fillRect(PX0,PY0,PX1-PX0,PY1-PY0);\n  c.fillStyle='rgba(0,0,0,.25)';c.fillRect(PX0,PY0,PX1-PX0,5);\n  \/\/ 5m flags lines\n  [PX0+5*PPM,PX1-5*PPM].forEach(x=>{c.strokeStyle='rgba(255,255,255,.25)';c.lineWidth=1;c.setLineDash([3,5]);c.beginPath();c.moveTo(x,PY0-14);c.lineTo(x,PY1+14);c.stroke();c.setLineDash([])});\n  \/\/ lane ropes\n  for(let i=0;i<=5;i++){const y=PY0+i*LH; if(i===0||i===5) continue; for(let x=PX0+3,k=0;x<PX1;x+=7,k++){const near=x<PX0+5*PPM||x>PX1-5*PPM;c.fillStyle= near?(k%2?'#E8473B':'#F7F7F7'):(Math.floor(k\/3)%2?'#2E86DE':'#F7F7F7');c.beginPath();c.arc(x,y,2.6,0,7);c.fill()}}\n  \/\/ decks\n  function deck(x,w){c.fillStyle='#8A6646';c.fillRect(x,PY0-16,w,PY1-PY0+32);c.strokeStyle='rgba(50,30,15,.35)';c.lineWidth=1;for(let y=PY0-16;y<PY1+16;y+=5){c.beginPath();c.moveTo(x,y);c.lineTo(x+w,y);c.stroke()}c.fillStyle='rgba(255,255,255,.35)';for(let i=0;i<30;i++)c.fillRect(x+r()*w,PY0-16+r()*(PY1-PY0+32),3,2)}\n  deck(PX0-26,20);deck(PX1+6,20);\n  \/\/ spectators along pool\n  for(let x=PX0+10;x<PX1;x+=rand(9,16)){[PY0-26,PY1+26].forEach(y=>{if(r()<.75){c.fillStyle=['#C0392B','#2C3E50','#F39C12','#16A085','#8E44AD','#ECF0F1','#0B8C09'][Math.floor(r()*7)];c.beginPath();c.arc(x,y+rand(-5,5),3.6,0,7);c.fill();c.fillStyle='rgba(0,0,0,.12)';c.beginPath();c.arc(x+1.5,y+3,3,0,7);c.fill()}})}\n  \/\/ hotel (top view gable)\n  c.save();c.translate(225,62);c.rotate(-.06);\n  c.fillStyle='rgba(0,0,0,.18)';c.fillRect(-82,-28,170,64);\n  c.fillStyle='#6A3A2C';c.fillRect(-85,-32,170,32);c.fillStyle='#7D4838';c.fillRect(-85,0,170,32);\n  c.fillStyle='rgba(255,255,255,.72)';for(let i=0;i<120;i++)c.fillRect(-85+r()*170,-32+r()*64,rand(3,10),rand(2,4));\n  c.fillStyle='#5A2E22';c.fillRect(-85,-1,170,2);\n  c.fillStyle='#6A3A2C';c.fillRect(40,-32,40,-30);c.fillStyle='rgba(255,255,255,.7)';c.fillRect(42,-60,36,24);\n  c.fillStyle='#444';c.fillRect(-40,-20,8,8);c.fillRect(20,8,8,8);\n  c.restore();\n  \/\/ changing tent\n  c.fillStyle='rgba(0,0,0,.12)';c.fillRect(168,478,64,40);c.fillStyle='#F4F6F6';c.fillRect(165,474,64,40);c.strokeStyle='#C8D2D4';c.lineWidth=1;c.beginPath();c.moveTo(165,494);c.lineTo(229,494);c.stroke();\n  \/\/ saunas (tipi tents)\n  [[878,505,40]].forEach(([x,y,rr])=>{c.fillStyle='rgba(0,0,0,.15)';c.beginPath();c.arc(x+3,y+4,rr,0,7);c.fill();c.fillStyle='#CDB48C';c.beginPath();c.arc(x,y,rr,0,7);c.fill();c.strokeStyle='rgba(90,60,30,.4)';for(let k=0;k<10;k++){const a=k\/10*Math.PI*2;c.beginPath();c.moveTo(x,y);c.lineTo(x+Math.cos(a)*rr,y+Math.sin(a)*rr);c.stroke()}c.fillStyle='#3B2A1A';c.beginPath();c.arc(x,y,4,0,7);c.fill()});\n  \/\/ barrel sauna\n  \/\/ hot tub\n  c.fillStyle='rgba(0,0,0,.15)';c.beginPath();c.arc(168,170,20,0,7);c.fill();c.fillStyle='#6E4A2C';c.beginPath();c.arc(165,166,20,0,7);c.fill();c.fillStyle='#45B8C6';c.beginPath();c.arc(165,166,15,0,7);c.fill();\n  \/\/ trees\n  const trees=[];\n  for(let i=0;i<900&&trees.length<330;i++){\n    const x=r()*W*1.04-20,y=r()*H*1.04-15;\n    const ex=((x-500)\/400)**2+((y-322)\/255)**2; if(ex<1) continue;\n    if(x>120&&x<330&&y<130) continue; if(x>120&&x<215&&y>=130&&y<215) continue; if(x>150&&x<240&&y>460&&y<530)continue; if(x>800&&y>430&&y<580)continue;\n    trees.push([x,y,rand(9,19)]);\n  }\n  trees.sort((a,b)=>a[1]-b[1]).forEach(([x,y,rr])=>{\n    c.fillStyle='rgba(20,40,40,.18)';c.beginPath();c.arc(x+4,y+5,rr,0,7);c.fill();\n    const cols=['#0E3324','#14452F','#1C5638','#24653F'];\n    cols.forEach((col,k)=>{const R=rr*(1-k*.22);c.fillStyle=col;c.beginPath();const n=9;for(let j=0;j<n*2;j++){const a=j\/(n*2)*Math.PI*2+k*.3;const rad=j%2?R*.68:R;c.lineTo(x+Math.cos(a)*rad,y+Math.sin(a)*rad)}c.closePath();c.fill()});\n    c.fillStyle='rgba(255,255,255,.8)';for(let j=0;j<6;j++){const a=r()*7,d=r()*rr*.8;c.fillRect(x+Math.cos(a)*d,y+Math.sin(a)*d,2.4,1.6)}\n  });\n}\nfunction sizeLake(){\n  const w=stage.clientWidth; vertical=w<620; cdpr=Math.min(2,devicePixelRatio||1);\n  if(!vertical){S=w\/W;CW=w;CH=H*S}else{S=w\/(VC.y1-VC.y0);CW=w;CH=(VC.x1-VC.x0)*S}\n  cv.width=CW*cdpr;cv.height=CH*cdpr;cv.style.height=CH+'px';\n}\nfunction worldT(){ if(!vertical) ctx.setTransform(S*cdpr,0,0,S*cdpr,0,0); else ctx.setTransform(0,S*cdpr,S*cdpr,0,-VC.y0*S*cdpr,-VC.x0*S*cdpr) }\nfunction toScr(x,y){ return vertical?[(y-VC.y0)*S,(x-VC.x0)*S]:[x*S,y*S] }\nfunction label(x,y,t,col='#0A2B20',bg='rgba(255,255,255,.85)'){\n  const [sx,sy]=toScr(x,y);ctx.setTransform(cdpr,0,0,cdpr,0,0);\n  const fs=Math.max(10,Math.min(13,CW\/70));ctx.font=`600 ${fs}px \"IBM Plex Mono\",monospace`;\n  const w=ctx.measureText(t).width+10;ctx.fillStyle=bg;ctx.beginPath();ctx.roundRect?ctx.roundRect(sx-w\/2,sy-fs*.8,w,fs*1.6,4):ctx.rect(sx-w\/2,sy-fs*.8,w,fs*1.6);ctx.fill();\n  ctx.fillStyle=col;ctx.textAlign='center';ctx.textBaseline='middle';ctx.fillText(t,sx,sy+.5);\n}\nfunction laneY(i){return PY0+(i+.5)*LH}\nfunction newRace(){\n  const pool=[['C. Wandratsch','GER'],['G. Curcio','ITA'],...[...ATH].sort(()=>Math.random()-.5).slice(0,3)].sort(()=>Math.random()-.5);\n  let base=[30.5,32.2,34,36.5,40].map(t=>t+rand(-1.2,1.2)).sort((a,b)=>a-b);\n  const order=[2,1,3,0,4];\n  const sw=[];\n  const sf={free:1,fly:.93,breast:.82}[stroke];\n  const df=Math.pow(50\/dist,.085);\n  order.forEach((lane,k)=>{\n    const t50=base[k];\n    sw.push({name:pool[k][0],cc:pool[k][1],lane,cap:CAPS[lane],v:50\/t50*sf*df,s:0,done:false,time:null,ph:rand(0,6),turn:0,react:rand(.55,.9),kick:Math.random()<.4,fat:rand(.02,.1),seed:rand(0,9),user:false,place:0,splash:0});\n  });\n  if(userMode && dist<=100){const me=sw.find(x=>x.lane===2);Object.assign(me,{name:tr('you'),cc:'',cap:'#0B8C09',user:true,uv:0,react:0});}\n  const vmax=Math.max(...sw.filter(x=>!x.user).map(x=>x.v));\n  const T=dist\/vmax;\n  race={sw,t:0,state:'ready',msgT:0,scale:Math.max(1,T\/15),finished:0,T};\n  updateBoard(true);\n}\nfunction startRace(){\n  if(!race||race.state==='done') newRace();\n  if(race.state!=='ready') return;\n  race.state='marks';race.msgT=0;$('#startBtn').textContent=tr('btnStart');\n  beep(440,.12,.08,'sine');\n  $('#startBtn').disabled=true;\n}\nfunction lapInfo(s){const L=dist\/25;let lap=Math.floor(s\/25);if(s>=dist)lap=L-1;const d=s-lap*25;const dir=lap%2===0?1:-1;const x=dir>0?PX0+d*PPM:PX1-d*PPM;return{lap,dir,x}}\nfunction upd(dt){\n  if(!race) return;\n  if(race.state==='marks'){race.msgT+=dt;if(race.msgT>1.4){race.state='go';race.msgT=0;beep(1046,.6,.2,'square');for(const s of race.sw)for(let i=0;i<10;i++)parts.push({x:PX0+2,y:laneY(s.lane)+rand(-8,8),vx:rand(5,40),vy:rand(-25,25),l:rand(.4,.9),a:1})}}\n  if(race.state==='go'||race.state==='done'&&race.sw.some(s=>!s.done)){\n    if(race.state==='go'){race.msgT+=dt}\n    const sd=dt*race.scale; race.t+=sd;\n    for(const s of race.sw){\n      if(s.done){s.ph+=dt*1.5;continue}\n      let v;\n      if(s.user){ s.uv*=Math.exp(-1.25*dt); v=s.uv; }\n      else{\n        if(race.t<s.react){continue}\n        const p=s.s\/dist;\n        v=s.v*(1+.035*Math.sin(race.t*.6+s.seed))*(1-s.fat*p*p)*(s.s<5?1.12:1)*(s.kick&&p>.85?1.05:1);\n      }\n      if(s.turn>0){s.turn-=sd;v*=.3}\n      const before=Math.floor(s.s\/25); s.s+=v*sd;\n      if(Math.floor(s.s\/25)>before && s.s<dist){s.turn=.55;for(let i=0;i<8;i++){const li=lapInfo(s.s);parts.push({x:li.x,y:laneY(s.lane)+rand(-6,6),vx:rand(-30,30),vy:rand(-30,30),l:rand(.3,.7),a:1})}}\n      s.ph+=dt*(s.user?0:1)*(stroke==='breast'?4.6:5.4)*Math.min(1.4,v\/1.4);\n      if(s.s>=dist){s.time=race.t-(s.s-dist)\/Math.max(v,.01);s.s=dist;s.done=true;s.place=++race.finished;\n        if(s.place<=3) beep([0,1318,1175,1046][s.place],.25,.07,'triangle');\n        for(let i=0;i<14;i++)parts.push({x:lapInfo(dist).x,y:laneY(s.lane)+rand(-8,8),vx:rand(-50,50),vy:rand(-50,50),l:rand(.4,1),a:1});}\n      else if(Math.random()<dt*30){const li=lapInfo(s.s);parts.push({x:li.x-li.dir*30,y:laneY(s.lane)+rand(-4,4),vx:-li.dir*rand(5,20),vy:rand(-10,10),l:rand(.3,.8),a:.8})}\n    }\n    if(race.sw.every(s=>s.done) && race.state!=='done'){race.state='done';$('#startBtn').disabled=false;$('#startBtn').textContent=tr('btnNew');}\n    if(race.state==='go' && race.sw.filter(s=>!s.user).every(s=>s.done) && race.sw.some(s=>s.user&&!s.done) && race.t>race.T*2.2){\n      const me=race.sw.find(s=>s.user); me.done=true; me.time=null; me.place=7; race.state='done';$('#startBtn').disabled=false;$('#startBtn').textContent=tr('btnNew');\n    }\n  }\n  for(const p of parts){p.x+=p.vx*dt;p.y+=p.vy*dt;p.vx*=.94;p.vy*=.94;p.l-=dt}\n  parts=parts.filter(p=>p.l>0);\n  for(const c of chunks){c.x+=c.vx*dt;c.r+=c.vr*dt;if(c.x>PX1-6||c.x<PX0+6)c.vx*=-1}\n  if(Math.random()<dt*8) steam.push({x:165+rand(-8,8),y:166+rand(-8,8),r:rand(3,6),l:2,vx:rand(-4,4),vy:rand(-14,-6)});\n  if(Math.random()<dt*5) [[878,505]].forEach(([x,y])=>steam.push({x,y,r:rand(3,5),l:2.4,vx:rand(-10,-2),vy:rand(-12,-4),smoke:1}));\n  for(const p of steam){p.x+=p.vx*dt;p.y+=p.vy*dt;p.r+=dt*6;p.l-=dt}\n  steam=steam.filter(p=>p.l>0);\n}\nfunction drawSwimmer(s){\n  const li=lapInfo(s.s),y=laneY(s.lane);\n  let dir=li.dir,hx=li.x;\n  if(race.state==='ready'||race.state==='marks'){hx=PX0+10;dir=1}\n  ctx.save();ctx.translate(hx,y);ctx.scale(dir,1);\n  const active=!s.done && race.state==='go' && race.t>=s.react;\n  const bob=s.done?Math.sin(s.ph*2)*1:0;\n  \/\/ wake\n  if(active){ctx.fillStyle='rgba(255,255,255,.18)';ctx.beginPath();ctx.moveTo(-6,0);ctx.lineTo(-48,-9);ctx.lineTo(-48,9);ctx.closePath();ctx.fill()}\n  const skin='#EBC3A5';const P=s.ph;\n  ctx.lineCap='round';\n  if(!s.done){\n    \/\/ legs\n    let k1=0,k2=0; if(active){ if(stroke==='free'){k1=Math.sin(P*3)*2;k2=-k1} else if(stroke==='fly'){k1=k2=Math.sin(P*2)*1.5} else {const o=Math.max(0,Math.sin(P+Math.PI));k1=o*5;k2=o*5} }\n    ctx.strokeStyle=skin;ctx.lineWidth=3;\n    ctx.beginPath();ctx.moveTo(-10,-2);ctx.lineTo(-22,-2.5-(stroke==='breast'?k1:0)+(stroke!=='breast'?k1:0));ctx.stroke();\n    ctx.beginPath();ctx.moveTo(-10,2);ctx.lineTo(-22,2.5+(stroke==='breast'?k2:0)+(stroke!=='breast'?k2:0));ctx.stroke();\n    \/\/ body\n    ctx.fillStyle=skin;ctx.beginPath();ctx.ellipse(-2,0,11,4.6,0,0,7);ctx.fill();\n    ctx.fillStyle='#14222B';ctx.fillRect(-11,-3.6,7,7.2);\n    \/\/ arms\n    ctx.strokeStyle=skin;ctx.lineWidth=2.6;\n    let a1,a2;\n    if(!active){a1=[3,-9];a2=[3,9]}\n    else if(stroke==='free'){const p1=Math.cos(P),p2=Math.cos(P+Math.PI);a1=[6+13*p1,-(4+4*(1-Math.abs(p1)))];a2=[6+13*p2,4+4*(1-Math.abs(p2))]}\n    else if(stroke==='fly'){const p=Math.cos(P);a1=[6+13*p,-(4+8*(1-Math.abs(p)))];a2=[a1[0],-a1[1]]}\n    else {const p=.5+.5*Math.cos(P);const sp=Math.max(0,Math.sin(P));a1=[6+12*p,-(3+9*sp)];a2=[a1[0],-a1[1]]}\n    ctx.beginPath();ctx.moveTo(6,-3.5);ctx.lineTo(a1[0],a1[1]);ctx.stroke();\n    ctx.beginPath();ctx.moveTo(6,3.5);ctx.lineTo(a2[0],a2[1]);ctx.stroke();\n  }else{\n    ctx.fillStyle='rgba(255,255,255,.35)';ctx.beginPath();ctx.arc(4,0,11+bob,0,7);ctx.fill();\n  }\n  \/\/ head\n  ctx.fillStyle=s.cap;ctx.beginPath();ctx.arc(8,bob,5,0,7);ctx.fill();\n  ctx.strokeStyle='rgba(0,0,0,.25)';ctx.lineWidth=1;ctx.stroke();\n  if(s.user){ctx.strokeStyle='#fff';ctx.lineWidth=1.5;ctx.beginPath();ctx.arc(8,bob,8.5,0,7);ctx.stroke()}\n  ctx.restore();\n  \/\/ breath puffs in cold air\n  if(active && Math.random()<.04) steam.push({x:hx,y:y-6,r:2,l:.9,vx:rand(-6,6),vy:-8,breath:1});\n}\nfunction fmt(t){if(t==null)return'\\u2014';const m=Math.floor(t\/60),s=t-m*60;return pad(m)+':'+(s<10?'0':'')+s.toFixed(2)}\nfunction draw(){\n  ctx.setTransform(1,0,0,1,0,0);ctx.clearRect(0,0,cv.width,cv.height);\n  worldT();ctx.drawImage(bgCv,0,0,W,H);\n  \/\/ water shimmer\n  ctx.save();ctx.beginPath();ctx.rect(PX0,PY0,PX1-PX0,PY1-PY0);ctx.clip();\n  const tt=performance.now()\/1000;\n  ctx.strokeStyle='rgba(124,200,221,.12)';ctx.lineWidth=2;\n  for(let i=0;i<14;i++){const x=PX0+((i*61+tt*14)%(PX1-PX0));ctx.beginPath();ctx.moveTo(x,PY0);ctx.bezierCurveTo(x+10,PY0+80,x-10,PY0+160,x+5,PY1);ctx.stroke()}\n  for(const c of chunks){ctx.save();ctx.translate(c.x,c.y);ctx.rotate(c.r);ctx.fillStyle='rgba(225,242,246,.85)';ctx.beginPath();c.p.forEach((p,i)=>i?ctx.lineTo(p[0],p[1]):ctx.moveTo(p[0],p[1]));ctx.closePath();ctx.fill();ctx.restore()}\n  if(race) race.sw.forEach(drawSwimmer);\n  for(const p of parts){ctx.fillStyle=`rgba(255,255,255,${Math.max(0,p.l)*p.a})`;ctx.beginPath();ctx.arc(p.x,p.y,1.8,0,7);ctx.fill()}\n  ctx.restore();\n  for(const p of steam){ctx.fillStyle=p.smoke?`rgba(120,120,120,${p.l*.12})`:`rgba(255,255,255,${p.l*(p.breath?.4:.25)})`;ctx.beginPath();ctx.arc(p.x,p.y,p.r,0,7);ctx.fill()}\n  \/\/ labels\n  label(878,448,tr('tent'));label(165,200,tr('tub'));label(197,527,tr('chg'));\n  if(!vertical){label(240,118,tr('hotel'));label(PX0-16,PY1+48,tr('startEnd'));label(PX1+16,PY1+48,tr('turn'));}\n  else{label(PX1+16,PY1+60,tr('turn'));}\n  for(let i=0;i<5;i++){const[sx,sy]=toScr(PX0-16,laneY(i));ctx.setTransform(cdpr,0,0,cdpr,0,0);ctx.fillStyle='#fff';ctx.font=`700 ${Math.max(10,CW\/80)}px \"IBM Plex Mono\",monospace`;ctx.textAlign='center';ctx.textBaseline='middle';ctx.fillText(i+1,sx,sy)}\n  \/\/ HUD\n  ctx.setTransform(cdpr,0,0,cdpr,0,0);\n  const fs=Math.max(18,Math.min(34,CW\/26));\n  ctx.fillStyle='rgba(7,23,15,.82)';const hw=fs*5.4;ctx.beginPath();ctx.roundRect?ctx.roundRect(12,12,hw,fs*1.5,8):ctx.rect(12,12,hw,fs*1.5);ctx.fill();\n  ctx.fillStyle='#D5F0C1';ctx.font=`600 ${fs}px \"IBM Plex Mono\",monospace`;ctx.textAlign='left';ctx.textBaseline='middle';ctx.fillText(fmt(race?race.t:0),20,12+fs*.78);\n  if(race&&race.scale>1.05){const t=tr('acc')(Math.round(race.scale));ctx.font=`600 ${fs*.42}px \"IBM Plex Mono\",monospace`;const w=ctx.measureText(t).width+16;ctx.fillStyle='rgba(124,200,221,.92)';ctx.beginPath();ctx.roundRect?ctx.roundRect(CW-w-12,14,w,fs*.9,6):ctx.rect(CW-w-12,14,w,fs*.9);ctx.fill();ctx.fillStyle='#0C3442';ctx.textAlign='center';ctx.fillText(t,CW-w\/2-12,14+fs*.46)}\n  let msg=null;\n  if(race&&race.state==='marks')msg=tr('marks');\n  if(race&&race.state==='go'&&race.msgT<.9)msg=tr('go');\n  if(race&&race.state==='ready')msg=userMode&&dist<=100?tr('pressTap'):tr('press');\n  if(race&&race.state==='done'){const w=race.sw.find(s=>s.place===1);const me=race.sw.find(s=>s.user);msg=me?(me.time?tr('yourTime')(fmt(me.time),me.place):tr('dnf')):tr('gold')(w.name,fmt(w.time))}\n  if(msg){const f2=Math.max(16,Math.min(40,CW\/22));ctx.font=`900 ${f2}px \"Big Shoulders Display\",Impact,sans-serif`;const w=ctx.measureText(msg.toUpperCase()).width+36;ctx.fillStyle='rgba(7,23,15,.82)';const y=CH\/2;ctx.beginPath();ctx.roundRect?ctx.roundRect(CW\/2-w\/2,y-f2*.85,w,f2*1.7,10):ctx.rect(CW\/2-w\/2,y-f2*.85,w,f2*1.7);ctx.fill();ctx.fillStyle=msg===tr('go')?'#FF6B35':'#fff';ctx.textAlign='center';ctx.fillText(msg.toUpperCase(),CW\/2,y+2)}\n}\nlet lastBoard=0;\nfunction updateBoard(force){\n  if(!race)return; const now=performance.now(); if(!force&&now-lastBoard<150)return; lastBoard=now;\n  const arr=[...race.sw].sort((a,b)=>{if(a.done&&b.done)return a.place-b.place;if(a.done)return -1;if(b.done)return 1;return b.s-a.s});\n  const L=dist\/25;\n  $('#boardList').innerHTML=arr.map((s,i)=>{\n    const cls=s.done&&s.place<=3?['','gold','silver','bronze'][s.place]:'';\n    const right=s.done?(s.time?fmt(s.time):'DNF'):(race.state==='go'?`${Math.min(L,Math.floor(s.s\/25)+1)}\/${L} \\u00b7 ${Math.round(s.s)} m`:`${tr('lane')} ${s.lane+1}`);\n    return `<li class=\"${cls} ${s.user?'me':''}\"><span class=\"rk\">${race.state==='ready'?'\\u2013':i+1}<\/span><span class=\"cap\" style=\"background:${s.cap}\"><\/span><span class=\"nm\">${s.name}<small>${s.cc}<\/small><\/span><span class=\"tm\">${right}<\/span><\/li>`}).join('');\n  $('#boardInfo').textContent=`${dist} m ${SN[stroke].toLowerCase()}`;\n}\nfunction tap(){ if(!race||!userMode)return; const me=race.sw.find(s=>s.user); if(!me||me.done||race.state!=='go')return; me.uv=Math.min(2.25,me.uv+.42); me.ph+=1.1; if(Math.random()<.5)noise(.12,.05,'lowpass',900) }\ncv.addEventListener('pointerdown',e=>{ if(race&&race.state==='go'&&userMode) tap(); else if(!race||race.state==='ready'||race.state==='done') startRace() });\n$('#strokeBtn').addEventListener('pointerdown',e=>{e.preventDefault();tap()});\naddEventListener('keydown',e=>{ if(e.code==='Space' && userMode && race && race.state==='go' && isVis(stage)){e.preventDefault();tap()} });\n$('#startBtn').addEventListener('click',()=>{ if(race&&race.state==='done'){newRace();} startRace(); });\nfunction setUser(on){\n  userMode=on; const b=$('#userBtn'); b.setAttribute('aria-pressed',on); b.textContent=on?tr('userOn'):tr('user');\n  b.disabled=dist>100; $('#strokeBtn').classList.toggle('on',on&&dist<=100);\n  $('#boardNote').textContent= dist>100?tr('note2'):tr('note1');\n  if(race&&race.state!=='go'&&race.state!=='marks'){newRace();$('#startBtn').textContent=tr('btnStart')}\n}\n$('#userBtn').addEventListener('click',()=>setUser(!userMode));\nfunction chipsRender(){\n  $('#distChips').innerHTML=[50,100,200,250,500,1000].map(d=>`<button class=\"chip\" type=\"button\" data-d=\"${d}\" aria-pressed=\"${d===dist}\">${d} m<\/button>`).join('');\n  $('#strokeChips').innerHTML=['free','breast','fly'].map(k=>`<button class=\"chip\" type=\"button\" data-s=\"${k}\" aria-pressed=\"${k===stroke}\" ${AV[dist].includes(k)?'':'disabled'}>${SN[k]}<\/button>`).join('');\n}\nfunction setRace(d,s){\n  if(race&&(race.state==='go'||race.state==='marks'))return;\n  dist=d; stroke=AV[d].includes(s)?s:AV[d][0]; chipsRender(); if(dist>100&&userMode) userMode=false; setUser(userMode);\n  newRace(); $('#startBtn').disabled=false; $('#startBtn').textContent=tr('btnStart');\n}\ndocument.addEventListener('click',e=>{const d=e.target.closest('[data-d]');const s=e.target.closest('[data-s]');if(d)setRace(+d.dataset.d,stroke);if(s)setRace(dist,s.dataset.s)});\nchunks=Array.from({length:7},()=>{const r=rand(3,7);return{x:rand(PX0+20,PX1-20),y:PY0+Math.floor(rand(0,5))*LH+rand(4,LH-4)*0+ (Math.random()<.5?3:LH-3),vx:rand(-3,3),vr:rand(-.2,.2),r:rand(0,6),p:Array.from({length:6},(_,k)=>{const a=k\/6*Math.PI*2;return[Math.cos(a)*r*rand(.6,1.2),Math.sin(a)*r*rand(.6,1.2)]})}});\nwindow.__setRace=(d,s)=>{setRace(d,s);document.getElementById('gara').scrollIntoView({behavior:RM?'auto':'smooth'})};\n\ndocument.getElementById('zoYtBtn').addEventListener('click',()=>{document.getElementById('zoYt').innerHTML='<iframe src=\"https:\/\/www.youtube-nocookie.com\/embed\/rYxQ7Ao5MM0?autoplay=1&rel=0\" title=\"Zollhaus Open \\u2013 video\" allow=\"autoplay; encrypted-media; picture-in-picture; fullscreen\" allowfullscreen><\/iframe>'});\ndocument.getElementById('zoStileLbl').textContent=pick({it:'Stile',de:'Lage',en:'Stroke'});document.getElementById('zoFinalH').innerHTML=pick({it:'Il tuo primo passo<br>nel <em>ghiaccio<\/em>',de:'Dein erster Schritt<br>ins <em>Eis<\/em>',en:'Your first step<br>into the <em>ice<\/em>'});\n\/* ---------- DISTANCE SLIDER ---------- *\/\nconst DD=[50,100,200,250,500,1000].map((d,i)=>{const a=tr('dd')[i];return{d,t:a[0],x:a[1],s:a[2],n:a[3]}});\nfunction setDist(i){const o=DD[i];$('#distBig').innerHTML=`${o.d}<small>m<\/small>`;$('#distTitle').textContent=o.t;$('#distText').textContent=o.x;$('#distStyles').textContent=o.s;$('#distNote').textContent=o.n;const L=o.d\/25;$('#distLaps').innerHTML=Array.from({length:L},()=>'<i><\/i>').join('');$('#distLapsTxt').textContent=tr('laps')(L)}\n$('#distRange').addEventListener('input',e=>setDist(+e.target.value));setDist(0);\n\n\/* ---------- RECOVERY ---------- *\/\nlet warm=8;\nconst gTrack=$('#gTrack');\nfunction setWarm(v){\n  warm=Math.max(0,Math.min(100,v));gTrack.style.setProperty('--w',warm+'%');\n  $('#gNum').textContent=`${tr('skin')} ~${Math.round(16+warm*.18)} \\u00b0C \\u00b7 ${Math.round(warm)}%`;\n  $('#gState').textContent=tr('gs')[warm<25?0:warm<55?1:warm<90?2:3];\n  $('#gState').style.color=warm<25?'#7CC8DD':warm<55?'#B9E3D0':warm<90?'#FFB38A':'#FF6B35';\n  const r=$('#ready');\n  if(warm>=100&&!r.dataset.on){r.dataset.on=1;r.innerHTML=`<p>${tr('ready')}<\/p><button class=\"btn btn-ghost\" id=\"backLake\" type=\"button\">${tr('back')}<\/button>`;beep(784,.15,.06,'triangle');setTimeout(()=>beep(1046,.3,.06,'triangle'),140)}\n  if(warm<100&&r.dataset.on){delete r.dataset.on;r.innerHTML=''}\n}\ndocument.addEventListener('click',e=>{if(e.target.id==='backLake'){noise(.6,.25,'lowpass',700);setWarm(5)}});\nsetWarm(8);\nfunction cvSize(c){const w=c.clientWidth,h=c.clientHeight,d=Math.min(2,devicePixelRatio||1);c.width=w*d;c.height=h*d;const x=c.getContext('2d');x.setTransform(d,0,0,d,0,0);return{w,h,x}}\n\/\/ TUB\nconst tub=$('#tubCv');watch(tub);let T=cvSize(tub),ripples=[],bubs=[],lastMove=0;\nfunction tubPt(e){const b=tub.getBoundingClientRect();return[e.clientX-b.left,e.clientY-b.top]}\ntub.addEventListener('pointermove',e=>{const[x,y]=tubPt(e);const R=Math.min(T.w,T.h)*.36;if(Math.hypot(x-T.w\/2,y-T.h\/2)>R)return;const n=performance.now();if(n-lastMove<70)return;lastMove=n;ripples.push({x,y,r:2,a:.8});for(let i=0;i<3;i++)bubs.push({x:x+rand(-8,8),y:y+rand(-8,8),r:rand(1.5,4),l:rand(.4,1)});if(Math.random()<.4)bubble();setWarm(warm+.8)});\ntub.addEventListener('pointerdown',e=>{const[x,y]=tubPt(e);ripples.push({x,y,r:2,a:1});setWarm(warm+1.5);bubble()});\nfunction tubFrame(dt,t){\n  const{w,h,x}=T;x.clearRect(0,0,w,h);\n  x.fillStyle='#E9F1F1';x.fillRect(0,0,w,h);\n  for(let i=0;i<40;i++){x.fillStyle='rgba(120,150,160,.06)';x.fillRect((i*97)%w,(i*53)%h,3,3)}\n  const cx=w\/2,cy=h\/2,R=Math.min(w,h)*.42;\n  x.fillStyle='rgba(0,0,0,.15)';x.beginPath();x.arc(cx+5,cy+7,R,0,7);x.fill();\n  x.fillStyle='#6E4A2C';x.beginPath();x.arc(cx,cy,R,0,7);x.fill();\n  x.strokeStyle='rgba(40,20,5,.35)';x.lineWidth=1;for(let k=0;k<48;k++){const a=k\/48*Math.PI*2;x.beginPath();x.moveTo(cx+Math.cos(a)*R*.86,cy+Math.sin(a)*R*.86);x.lineTo(cx+Math.cos(a)*R,cy+Math.sin(a)*R);x.stroke()}\n  const Ri=R*.86;const wg=x.createRadialGradient(cx,cy,0,cx,cy,Ri);wg.addColorStop(0,'#5CD0DC');wg.addColorStop(1,'#1E8C9C');\n  x.fillStyle=wg;x.beginPath();x.arc(cx,cy,Ri,0,7);x.fill();\n  x.save();x.beginPath();x.arc(cx,cy,Ri,0,7);x.clip();\n  for(let k=0;k<5;k++){x.strokeStyle='rgba(255,255,255,.12)';x.lineWidth=2;x.beginPath();x.arc(cx+Math.sin(t*.7+k)*10,cy+Math.cos(t*.5+k)*8,Ri*(.2+k*.17),0,7);x.stroke()}\n  if(Math.random()<dt*14){const a=rand(0,7);bubs.push({x:cx+Math.cos(a)*Ri*.9,y:cy+Math.sin(a)*Ri*.9,r:rand(1.5,3.5),l:rand(.5,1.2),vx:-Math.cos(a)*25,vy:-Math.sin(a)*25})}\n  for(const r of ripples){r.r+=dt*60;r.a-=dt*.9;x.strokeStyle=`rgba(255,255,255,${Math.max(0,r.a)})`;x.lineWidth=2;x.beginPath();x.arc(r.x,r.y,r.r,0,7);x.stroke()}\n  ripples=ripples.filter(r=>r.a>0);\n  for(const b of bubs){b.l-=dt;b.x+=(b.vx||0)*dt;b.y+=(b.vy||0)*dt;x.strokeStyle=`rgba(255,255,255,${Math.max(0,b.l)})`;x.lineWidth=1.2;x.beginPath();x.arc(b.x,b.y,b.r,0,7);x.stroke()}\n  bubs=bubs.filter(b=>b.l>0);\n  x.restore();\n  for(let k=0;k<6;k++){const yy=((t*18+k*40)%160);x.fillStyle=`rgba(255,255,255,${.18*(1-yy\/160)})`;x.beginPath();x.arc(cx+Math.sin(t+k*2)*Ri*.5,cy-yy*.6,10+yy*.15,0,7);x.fill()}\n}\n\/\/ SAUNA\nconst sau=$('#saunaCv');watch(sau);let SA=cvSize(sau),sTemp=85,drops=[],svap=[],stones=[];\nfunction mkStones(){stones=[];const{w,h}=SA;const cx=w\/2,top=h*.55;const r=rng(3);for(let i=0;i<34;i++){stones.push([cx+(r()-.5)*w*.34,top-r()*h*.08,rand(6,11)])}}\nmkStones();\nfunction aufguss(){for(let i=0;i<10;i++)drops.push({x:SA.w\/2+rand(-30,30),y:SA.h*.08+rand(0,10),vy:rand(60,120)});setTimeout(()=>{noise(1.6,.22,'highpass',3000);for(let i=0;i<70;i++)svap.push({x:SA.w\/2+rand(-SA.w*.17,SA.w*.17),y:SA.h*.5,vx:rand(-30,30),vy:rand(-90,-30),r:rand(6,14),l:rand(1.2,2.4)});sTemp=Math.min(98,sTemp+5);setWarm(warm+11)},380)}\nsau.addEventListener('pointerdown',aufguss);$('#aufgussBtn').addEventListener('click',aufguss);\nfunction saunaFrame(dt,t){\n  const{w,h,x}=SA;x.clearRect(0,0,w,h);\n  for(let y=0;y<h;y+=h\/9){x.fillStyle=Math.round(y\/(h\/9))%2?'#8A6440':'#7C5636';x.fillRect(0,y,w,h\/9+1);x.fillStyle='rgba(0,0,0,.18)';x.fillRect(0,y,w,1.5)}\n  const glow=x.createRadialGradient(w\/2,h*.62,0,w\/2,h*.62,w*.5);glow.addColorStop(0,`rgba(255,107,53,${.25+.1*Math.sin(t*3)})`);glow.addColorStop(1,'rgba(255,107,53,0)');x.fillStyle=glow;x.fillRect(0,0,w,h);\n  x.fillStyle='#2A2A2C';x.fillRect(w\/2-w*.2,h*.55,w*.4,h*.4);\n  x.fillStyle='#FF6B35';x.fillRect(w\/2-w*.08,h*.78,w*.16,h*.06);x.fillStyle=`rgba(255,200,80,${.5+.4*Math.sin(t*9)})`;x.fillRect(w\/2-w*.06,h*.79,w*.12,h*.03);\n  for(const[sx,sy,r] of stones){x.fillStyle='#5B5F63';x.beginPath();x.arc(sx,sy,r,0,7);x.fill();x.fillStyle='rgba(255,255,255,.15)';x.beginPath();x.arc(sx-r*.3,sy-r*.3,r*.4,0,7);x.fill()}\n  \/\/ thermometer\n  x.fillStyle='#F2E8D8';x.fillRect(w*.84,h*.12,w*.08,h*.5);x.fillStyle='#FF6B35';const ht=(sTemp-60)\/40*h*.46;x.fillRect(w*.865,h*.6-ht,w*.03,ht);\n  x.fillStyle='#F2E8D8';x.font=`600 ${Math.max(11,w\/26)}px \"IBM Plex Mono\",monospace`;x.textAlign='center';x.fillText(Math.round(sTemp)+'\\u00b0',w*.88,h*.7);\n  \/\/ ladle\n  x.strokeStyle='#C8A070';x.lineWidth=4;x.beginPath();x.moveTo(w*.25,h*.04);x.lineTo(w\/2-10,h*.09);x.stroke();x.fillStyle='#C8A070';x.beginPath();x.ellipse(w\/2,h*.1,16,7,0,0,7);x.fill();\n  for(const d of drops){d.vy+=500*dt;d.y+=d.vy*dt;x.fillStyle='#7CC8DD';x.beginPath();x.arc(d.x,d.y,2.5,0,7);x.fill()}\n  drops=drops.filter(d=>d.y<h*.52);\n  for(const p of svap){p.x+=p.vx*dt;p.y+=p.vy*dt;p.r+=dt*22;p.l-=dt;x.fillStyle=`rgba(255,255,255,${Math.max(0,p.l)*.18})`;x.beginPath();x.arc(p.x,p.y,p.r,0,7);x.fill()}\n  svap=svap.filter(p=>p.l>0);\n  sTemp+= (85-sTemp)*dt*.15; $('#saunaT').textContent=Math.round(sTemp)+' \\u00b0C';\n}\n\/\/ TEA\nconst tea=$('#teaCv');watch(tea);let TE=cvSize(tea),level=1,tpuff=[];\nfunction sip(){ if(level<=0.05){level=1;$('#teaBtn').textContent=tr('sip');return} level=Math.max(0,level-.2);setWarm(warm+7);for(let i=0;i<14;i++)tpuff.push({x:TE.w\/2+rand(-20,20),y:TE.h*.32,vx:rand(-15,15),vy:rand(-50,-20),r:rand(5,10),l:rand(.8,1.4)});noise(.25,.05,'bandpass',1200);if(level<=0.05)$('#teaBtn').textContent=tr('refill')}\ntea.addEventListener('pointerdown',sip);$('#teaBtn').addEventListener('click',sip);\nfunction teaFrame(dt,t){\n  const{w,h,x}=TE;x.clearRect(0,0,w,h);\n  const bg=x.createLinearGradient(0,0,0,h);bg.addColorStop(0,'#2A1B10');bg.addColorStop(1,'#120A05');x.fillStyle=bg;x.fillRect(0,0,w,h);\n  x.fillStyle='#3A2616';x.fillRect(0,h*.82,w,h*.18);\n  const cw=Math.min(w*.36,140),ch=cw*1.05,cx=w\/2-cw\/2,cy=h*.82-ch;\n  x.strokeStyle='#F2E8D8';x.lineWidth=cw*.09;x.beginPath();x.arc(cx+cw+cw*.06,cy+ch*.45,cw*.2,-1.3,1.3);x.stroke();\n  x.fillStyle='#F2E8D8';x.beginPath();x.moveTo(cx,cy);x.lineTo(cx+cw,cy);x.lineTo(cx+cw*.92,cy+ch);x.lineTo(cx+cw*.08,cy+ch);x.closePath();x.fill();\n  x.fillStyle='#0B8C09';x.fillRect(cx+cw*.04,cy+ch*.55,cw*.92,ch*.1);\n  x.fillStyle='#E4D6BE';x.beginPath();x.ellipse(cx+cw\/2,cy,cw\/2,cw*.12,0,0,7);x.fill();\n  if(level>0.02){x.fillStyle='#9A5A1C';x.beginPath();x.ellipse(cx+cw\/2,cy+ (1-level)*ch*.25,cw\/2*.88,cw*.1*.88,0,0,7);x.fill()}\n  if(level>0.02)for(let k=0;k<3;k++){x.strokeStyle=`rgba(255,255,255,${.25*level})`;x.lineWidth=3;x.beginPath();for(let i=0;i<30;i++){const yy=cy-10-i*3;const xx=cx+cw*(.3+k*.2)+Math.sin(i*.25+t*2+k)*6;i?x.lineTo(xx,yy):x.moveTo(xx,yy)}x.stroke()}\n  for(const p of tpuff){p.x+=p.vx*dt;p.y+=p.vy*dt;p.r+=dt*12;p.l-=dt;x.fillStyle=`rgba(255,255,255,${Math.max(0,p.l)*.2})`;x.beginPath();x.arc(p.x,p.y,p.r,0,7);x.fill()}\n  tpuff=tpuff.filter(p=>p.l>0);\n}\n\n\/* ---------- PROGRAMMA ---------- *\/\nconst DAYS=[\n [[1,2,50,'breast'],[3,4,50,'fly'],[5,6,1000,'free'],[7,8,200,'breast'],[9,10,100,'fly'],[11,null,'4\\u00d7100','relay']],\n [[12,13,50,'free'],[14,15,500,'free'],[16,17,100,'breast'],[18,19,100,'free'],[20,21,250,'free'],[22,null,'4\\u00d750','relay']]\n];\nconst SNL=tr('snl');\nlet day=0,filt='all';\nfunction renderProg(){\n  $('#progFilter').innerHTML=['all','free','breast','fly','relay'].map((k,i)=>[k,tr('filters')[i]]).map(([k,l])=>`<button class=\"chip\" type=\"button\" data-f=\"${k}\" aria-pressed=\"${k===filt}\">${l}<\/button>`).join('');\n  const rows=DAYS[day].filter(r=>filt==='all'||r[3]===filt);\n  $('#races').innerHTML=`<li style=\"display:block;padding:0;border:0\"><span class=\"start\">${tr('days')[day]}<\/span><\/li>`+\n   (rows.length?rows.map(r=>`<li><span class=\"no\">${r[1]?`${tr('races')} ${r[0]}\\u2013${r[1]}`:`${tr('race')} ${r[0]}`}<\/span><span class=\"d\">${r[2]} m<\/span><span class=\"s\">${SNL[r[3]]}<small>${r[1]?tr('cat'):tr('rcat')}<\/small><\/span>${r[3]!=='relay'?`<button class=\"sim\" type=\"button\" data-sim=\"${r[2]}|${r[3]}\">${tr('sim')}<\/button>`:'<span><\/span>'}<\/li>`).join(''):`<li><span class=\"s\" style=\"grid-column:1\/-1\">${tr('none')}<\/span><\/li>`);\n}\ndocument.addEventListener('click',e=>{\n  const t=e.target.closest('.tab');if(t){day=+t.dataset.day;document.querySelectorAll('.tab').forEach(b=>b.setAttribute('aria-selected',b===t));renderProg()}\n  const f=e.target.closest('[data-f]');if(f){filt=f.dataset.f;renderProg()}\n  const s=e.target.closest('[data-sim]');if(s){const[d,st]=s.dataset.sim.split('|');window.__setRace(+d,st)}\n});\nrenderProg();\n\n\/* ---------- REQUISITI ---------- *\/\nfunction reqUpd(){const n=['#rq1','#rq2','#rq3'].filter(s=>$(s).checked).length;const m=$('#reqMsg');m.classList.toggle('ok',n===3);m.textContent=n===3?tr('allOk'):tr('missing')(3-n)}\n['#rq1','#rq2','#rq3'].forEach(s=>$(s).addEventListener('change',reqUpd));reqUpd();\n\n\/* ---------- POSTCARD (illustrazione di riserva) ---------- *\/\nfunction drawPostcard(){\n  const c=$('#pcCv');if(!c)return;const{w,h,x}=cvSize(c);\n  const g=x.createLinearGradient(0,0,0,h);g.addColorStop(0,'#0E2A30');g.addColorStop(.55,'#4E7A84');g.addColorStop(.56,'#DCEBEE');g.addColorStop(1,'#B9D3D9');x.fillStyle=g;x.fillRect(0,0,w,h);\n  const hz=h*.56;\n  x.fillStyle='#0B241C';for(let i=-10;i<w+10;i+=14){const th=rand(40,90);x.beginPath();x.moveTo(i,hz);x.lineTo(i+9,hz-th);x.lineTo(i+18,hz);x.fill()}\n  \/\/ manor house\n  const bx=w*.2,bw=w*.6,bh=h*.16,by=hz-bh;\n  x.fillStyle='#E9E1D2';x.fillRect(bx,by,bw,bh);\n  x.fillStyle='#5A2E22';x.beginPath();x.moveTo(bx-10,by);x.lineTo(bx+bw\/2,by-h*.12);x.lineTo(bx+bw+10,by);x.closePath();x.fill();\n  x.fillStyle='rgba(255,255,255,.8)';x.beginPath();x.moveTo(bx-10,by);x.lineTo(bx+bw\/2,by-h*.12);x.lineTo(bx+bw+10,by);x.lineTo(bx+bw,by-6);x.lineTo(bx+bw\/2,by-h*.12+8);x.lineTo(bx,by-6);x.closePath();x.fill();\n  for(let r=0;r<2;r++)for(let k=0;k<7;k++){x.fillStyle='#FFC86B';x.fillRect(bx+bw*(.07+k*.13),by+bh*(.18+r*.42),bw*.06,bh*.24)}\n  x.fillStyle='rgba(255,200,107,.25)';for(let k=0;k<7;k++)x.fillRect(bx+bw*(.07+k*.13),hz+4,bw*.06,h*.05);\n  x.fillStyle='rgba(255,255,255,.9)';for(let i=0;i<80;i++)x.fillRect(rand(0,w),rand(0,h),2,2);\n}\ndrawPostcard();\n\n\/* ---------- LOOP ---------- *\/\nfunction resizeAll(){sizeHero();sizeLake();T=cvSize(tub);SA=cvSize(sau);mkStones();TE=cvSize(tea);drawPostcard()}\nbuildBg();sizeHero();sizeLake();chipsRender();newRace();\n$('#zoHint').textContent=pick({it:'Passa sul ghiaccio per scioglierlo',de:'Fahr \\u00fcbers Eis, um es zu schmelzen',en:'Move across the ice to melt it'});$('#zoCdLbl').textContent=pick({it:'Allo start dei campionati tedeschi',de:'Bis zum Start der Deutschen Meisterschaften',en:'Countdown to the German Championships'});[['#zoDt1',{it:'Vasche',de:'Bahnen',en:'Lengths'}],['#zoDt2',{it:'Stili',de:'Lagen',en:'Strokes'}],['#zoDt3',{it:'Nota',de:'Hinweis',en:'Note'}]].forEach(([k,o])=>$(k).textContent=pick(o));$('#gLbl').textContent=pick({it:'Brividometro',de:'Bibbermeter',en:'Shiver meter'});$('#startBtn').textContent=tr('btnStart');$('#strokeBtn').textContent=tr('stroke');$('#teaBtn').textContent=tr('sip');setUser(false);\nlet rt;addEventListener('resize',()=>{clearTimeout(rt);rt=setTimeout(resizeAll,150)});\nlet last=performance.now();\nfunction loop(now){\n  const dt=Math.min(.05,(now-last)\/1000);last=now;const t=now\/1000;\n  if(isVis(hero)) heroFrame(RM?0:dt);\n  if(isVis(stage)){upd(dt);draw();updateBoard()}\n  if(isVis(tub)) tubFrame(dt,t);\n  if(isVis(sau)) saunaFrame(dt,t);\n  if(isVis(tea)) teaFrame(dt,t);\n  requestAnimationFrame(loop);\n}\nrequestAnimationFrame(loop);\nif(document.fonts) document.fonts.ready.then(()=>{});\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Passa sul ghiaccio per scioglierlo Campionati tedeschi di nuoto nel ghiaccio &#183; Regolamento IISA ZollhausOpen 2027 19-20.02.2027 Landhotel Altes Zollhaus, Neuhermsdorf 800 m s.l.m. Acqua 2 &#176;C Allo start dei campionati tedeschi &#8212;giorni &#8212;ore &#8212;min &#8212;sec Registrati qui Guarda la gara by Addicted to Nature Nuoto nel ghiaccio, in mezzo al bosco I Campionati tedeschi [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":14549,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-14548","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-eventi-futuri"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Zollhaus Open 2027 \u2013 Campionati tedeschi di nuoto nel ghiaccio<\/title>\n<meta name=\"description\" content=\"Zollhaus Open 2027, campionati tedeschi di nuoto nel ghiaccio: 19-20.02.2027 al Landhotel Altes Zollhaus. Gare dai 50 ai 1000 m in acqua a 2 \u00b0C. Iscriviti!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/addicted-to.com\/de\/zollhaus-open-2027\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zollhaus Open 2027 \u2013 Campionati tedeschi di nuoto nel ghiaccio\" \/>\n<meta property=\"og:description\" content=\"Zollhaus Open 2027, campionati tedeschi di nuoto nel ghiaccio: 19-20.02.2027 al Landhotel Altes Zollhaus. Gare dai 50 ai 1000 m in acqua a 2 \u00b0C. Iscriviti!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/addicted-to.com\/de\/zollhaus-open-2027\/\" \/>\n<meta property=\"og:site_name\" content=\"Addicted To Nature\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/addictedtoofficial\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-28T15:01:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-16T07:52:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/addicted-to.com\/wp-content\/uploads\/2026\/02\/ice-swimming-events.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"curcio\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@addicted2bamboo\" \/>\n<meta name=\"twitter:site\" content=\"@addicted2bamboo\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"curcio\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/zollhaus-open-2027\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/zollhaus-open-2027\\\/\"},\"author\":{\"name\":\"curcio\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#\\\/schema\\\/person\\\/a3d48647d4f664ac75ebf58e62a0eacb\"},\"headline\":\"Zollhaus Open 2027\",\"datePublished\":\"2026-02-28T15:01:42+00:00\",\"dateModified\":\"2026-10-16T07:52:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/zollhaus-open-2027\\\/\"},\"wordCount\":678,\"publisher\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/zollhaus-open-2027\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/addicted-to.com\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/ice-swimming-events.jpg\",\"articleSection\":[\"Eventi futuri\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/zollhaus-open-2027\\\/\",\"url\":\"https:\\\/\\\/addicted-to.com\\\/zollhaus-open-2027\\\/\",\"name\":\"Zollhaus Open 2027 \u2013 Campionati tedeschi di nuoto nel ghiaccio\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/zollhaus-open-2027\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/zollhaus-open-2027\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/addicted-to.com\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/ice-swimming-events.jpg\",\"datePublished\":\"2026-02-28T15:01:42+00:00\",\"dateModified\":\"2026-10-16T07:52:05+00:00\",\"description\":\"Zollhaus Open 2027, campionati tedeschi di nuoto nel ghiaccio: 19-20.02.2027 al Landhotel Altes Zollhaus. Gare dai 50 ai 1000 m in acqua a 2 \u00b0C. Iscriviti!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/zollhaus-open-2027\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/addicted-to.com\\\/zollhaus-open-2027\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/zollhaus-open-2027\\\/#primaryimage\",\"url\":\"https:\\\/\\\/addicted-to.com\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/ice-swimming-events.jpg\",\"contentUrl\":\"https:\\\/\\\/addicted-to.com\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/ice-swimming-events.jpg\",\"width\":1500,\"height\":1000,\"caption\":\"Evento di nuoto in acqua gelida Addicted To Nature\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/zollhaus-open-2027\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/addicted-to.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Zollhaus Open 2027\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#website\",\"url\":\"https:\\\/\\\/addicted-to.com\\\/\",\"name\":\"Addicted To Nature\",\"description\":\"La community di chi vive, rispetta e custodisce la Natura\",\"publisher\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/addicted-to.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#organization\",\"name\":\"Addicted To Nature\",\"url\":\"https:\\\/\\\/addicted-to.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/addicted-to.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/ATN_marchio_positivo.svg\",\"contentUrl\":\"https:\\\/\\\/addicted-to.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/ATN_marchio_positivo.svg\",\"width\":1000,\"height\":290,\"caption\":\"Addicted To Nature\"},\"image\":{\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/addictedtoofficial\",\"https:\\\/\\\/x.com\\\/addicted2bamboo\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/addicted-to.com\\\/#\\\/schema\\\/person\\\/a3d48647d4f664ac75ebf58e62a0eacb\",\"name\":\"curcio\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Zollhaus Open 2027 \u2013 Deutsche Meisterschaften im Eisschwimmen","description":"Zollhaus Open 2027, Deutsche Meisterschaften im Eisschwimmen: 19.\u201320.02.2027 im Landhotel Altes Zollhaus. Wettk\u00e4mpfe \u00fcber 50 bis 1000 m in 2 \u00b0C kaltem Wasser. Melde dich an!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/addicted-to.com\/de\/zollhaus-open-2027\/","og_locale":"de_DE","og_type":"article","og_title":"Zollhaus Open 2027 \u2013 Campionati tedeschi di nuoto nel ghiaccio","og_description":"Zollhaus Open 2027, campionati tedeschi di nuoto nel ghiaccio: 19-20.02.2027 al Landhotel Altes Zollhaus. Gare dai 50 ai 1000 m in acqua a 2 \u00b0C. Iscriviti!","og_url":"https:\/\/addicted-to.com\/de\/zollhaus-open-2027\/","og_site_name":"Addicted To Nature","article_publisher":"https:\/\/www.facebook.com\/addictedtoofficial","article_published_time":"2026-02-28T15:01:42+00:00","article_modified_time":"2026-10-16T07:52:05+00:00","og_image":[{"width":1500,"height":1000,"url":"https:\/\/addicted-to.com\/wp-content\/uploads\/2026\/02\/ice-swimming-events.jpg","type":"image\/jpeg"}],"author":"curcio","twitter_card":"summary_large_image","twitter_creator":"@addicted2bamboo","twitter_site":"@addicted2bamboo","twitter_misc":{"Verfasst von":"curcio","Gesch\u00e4tzte Lesezeit":"8\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/addicted-to.com\/zollhaus-open-2027\/#article","isPartOf":{"@id":"https:\/\/addicted-to.com\/zollhaus-open-2027\/"},"author":{"name":"curcio","@id":"https:\/\/addicted-to.com\/#\/schema\/person\/a3d48647d4f664ac75ebf58e62a0eacb"},"headline":"Zollhaus Open 2027","datePublished":"2026-02-28T15:01:42+00:00","dateModified":"2026-10-16T07:52:05+00:00","mainEntityOfPage":{"@id":"https:\/\/addicted-to.com\/zollhaus-open-2027\/"},"wordCount":678,"publisher":{"@id":"https:\/\/addicted-to.com\/#organization"},"image":{"@id":"https:\/\/addicted-to.com\/zollhaus-open-2027\/#primaryimage"},"thumbnailUrl":"https:\/\/addicted-to.com\/wp-content\/uploads\/2026\/02\/ice-swimming-events.jpg","articleSection":["Eventi futuri"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/addicted-to.com\/zollhaus-open-2027\/","url":"https:\/\/addicted-to.com\/zollhaus-open-2027\/","name":"Zollhaus Open 2027 \u2013 Deutsche Meisterschaften im Eisschwimmen","isPartOf":{"@id":"https:\/\/addicted-to.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/addicted-to.com\/zollhaus-open-2027\/#primaryimage"},"image":{"@id":"https:\/\/addicted-to.com\/zollhaus-open-2027\/#primaryimage"},"thumbnailUrl":"https:\/\/addicted-to.com\/wp-content\/uploads\/2026\/02\/ice-swimming-events.jpg","datePublished":"2026-02-28T15:01:42+00:00","dateModified":"2026-10-16T07:52:05+00:00","description":"Zollhaus Open 2027, Deutsche Meisterschaften im Eisschwimmen: 19.\u201320.02.2027 im Landhotel Altes Zollhaus. Wettk\u00e4mpfe \u00fcber 50 bis 1000 m in 2 \u00b0C kaltem Wasser. Melde dich an!","breadcrumb":{"@id":"https:\/\/addicted-to.com\/zollhaus-open-2027\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/addicted-to.com\/zollhaus-open-2027\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/addicted-to.com\/zollhaus-open-2027\/#primaryimage","url":"https:\/\/addicted-to.com\/wp-content\/uploads\/2026\/02\/ice-swimming-events.jpg","contentUrl":"https:\/\/addicted-to.com\/wp-content\/uploads\/2026\/02\/ice-swimming-events.jpg","width":1500,"height":1000,"caption":"Evento di nuoto in acqua gelida Addicted To Nature"},{"@type":"BreadcrumbList","@id":"https:\/\/addicted-to.com\/zollhaus-open-2027\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/addicted-to.com\/"},{"@type":"ListItem","position":2,"name":"Zollhaus Open 2027"}]},{"@type":"WebSite","@id":"https:\/\/addicted-to.com\/#website","url":"https:\/\/addicted-to.com\/","name":"Addicted To Nature","description":"Die Community f\u00fcr alle, die die Natur leben, respektieren und sch\u00fctzen","publisher":{"@id":"https:\/\/addicted-to.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/addicted-to.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/addicted-to.com\/#organization","name":"Addicted To Nature","url":"https:\/\/addicted-to.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/addicted-to.com\/#\/schema\/logo\/image\/","url":"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/ATN_marchio_positivo.svg","contentUrl":"https:\/\/addicted-to.com\/wp-content\/uploads\/2024\/03\/ATN_marchio_positivo.svg","width":1000,"height":290,"caption":"Addicted To Nature"},"image":{"@id":"https:\/\/addicted-to.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/addictedtoofficial","https:\/\/x.com\/addicted2bamboo"]},{"@type":"Person","@id":"https:\/\/addicted-to.com\/#\/schema\/person\/a3d48647d4f664ac75ebf58e62a0eacb","name":"curcio"}]}},"_links":{"self":[{"href":"https:\/\/addicted-to.com\/de\/wp-json\/wp\/v2\/posts\/14548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/addicted-to.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/addicted-to.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/addicted-to.com\/de\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/addicted-to.com\/de\/wp-json\/wp\/v2\/comments?post=14548"}],"version-history":[{"count":86,"href":"https:\/\/addicted-to.com\/de\/wp-json\/wp\/v2\/posts\/14548\/revisions"}],"predecessor-version":[{"id":15102,"href":"https:\/\/addicted-to.com\/de\/wp-json\/wp\/v2\/posts\/14548\/revisions\/15102"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/addicted-to.com\/de\/wp-json\/wp\/v2\/media\/14549"}],"wp:attachment":[{"href":"https:\/\/addicted-to.com\/de\/wp-json\/wp\/v2\/media?parent=14548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/addicted-to.com\/de\/wp-json\/wp\/v2\/categories?post=14548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/addicted-to.com\/de\/wp-json\/wp\/v2\/tags?post=14548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}