{"id":6702,"date":"2017-09-14T16:54:15","date_gmt":"2017-09-14T15:54:15","guid":{"rendered":"http:\/\/nalusurf.de\/?page_id=6702"},"modified":"2026-07-24T10:22:59","modified_gmt":"2026-07-24T09:22:59","slug":"rezervace-kurzu-surfovani","status":"publish","type":"page","link":"https:\/\/nalusurf.de\/cs\/buchung\/buchung-surfkurs\/","title":{"rendered":"Rezervace kurzu surfov\u00e1n\u00ed"},"content":{"rendered":"\n\t\t<div id=\"fws_6a8dff3e8ca0e\"  data-column-margin=\"none\" data-midnight=\"custom\" data-top-percent=\"8%\" data-bottom-percent=\"8%\"  class=\"wpb_row vc_row-fluid vc_row full-width-section has-row-bg-color\"  style=\"padding-top: calc(100vw * 0.08); padding-bottom: calc(100vw * 0.08); --row-bg-color: #D5FFF1;\"><div class=\"row-bg-wrap\" data-bg-animation=\"none\" data-bg-animation-delay=\"\" data-bg-overlay=\"true\"><div class=\"inner-wrap row-bg-layer\" ><div class=\"row-bg viewport-desktop using-bg-color\"  style=\"background-color: #D5FFF1; \"><\/div><\/div><div class=\"row-bg-overlay row-bg-layer\" style=\"background-color:transparent;  opacity: 0.3; \"><\/div><\/div><div class=\"nectar-shape-divider-wrap \" style=\" height:33%;\" data-using-percent-val=\"true\" data-height=\"33%\" data-front=\"\" data-style=\"straight_section\" data-position=\"bottom\" ><svg class=\"nectar-shape-divider\" aria-hidden=\"true\" fill=\"#ffffff\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 100 10\" preserveAspectRatio=\"none\"> <polygon points=\"104 10, 104 0, 0 0, 0 10\"><\/polygon> <\/svg><\/div><div class=\"row_col_wrap_12 col span_12 custom left\">\n\t<div  class=\"vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding el_spacing_0px inherit_tablet inherit_phone flex_gap_desktop_10px \"  data-padding-pos=\"top-bottom\" data-has-bg-color=\"false\" data-bg-color=\"\" data-bg-opacity=\"1\" data-animation=\"\" data-delay=\"0\" >\n\t\t<div class=\"vc_column-inner\" >\n\t\t\t<div class=\"wpb_wrapper\">\n\t\t\t\t<div id=\"fws_6a8dff3e8ce8a\" data-midnight=\"\" data-column-margin=\"default\" class=\"wpb_row vc_row-fluid vc_row inner_row  right_padding_6pct left_padding_6pct\"  style=\"padding-bottom: 35px; \"><div class=\"row-bg-wrap\"> <div class=\"row-bg\" ><\/div> <\/div><div class=\"row_col_wrap_12_inner col span_12  left\">\n\t<div  class=\"vc_col-sm-12 wpb_column column_container vc_column_container col child_column centered-text no-extra-padding el_spacing_0px inherit_tablet inherit_phone flex_gap_desktop_10px \"   data-padding-pos=\"all\" data-has-bg-color=\"false\" data-bg-color=\"\" data-bg-opacity=\"1\" data-animation=\"\" data-delay=\"0\" >\n\t\t<div class=\"vc_column-inner\" >\n\t\t<div class=\"wpb_wrapper\">\n\t\t\t<div class=\"nectar-split-heading  font_size_10vh \" data-align=\"default\" data-m-align=\"inherit\" data-text-effect=\"default\" data-animation-type=\"line-reveal-by-space\" data-animation-delay=\"0\" data-animation-offset=\"\" data-m-rm-animation=\"\" data-stagger=\"true\" data-custom-font-size=\"true\" style=\"font-size: 10vh; line-height: 11vh;\"><h1 >Surfkurs Buchung<\/h1><\/div>\n\t\t<\/div> \n\t<\/div>\n\t<\/div> \n<\/div><\/div><div id=\"fws_6a8dff3e8d1c7\" data-midnight=\"\" data-column-margin=\"default\" class=\"wpb_row vc_row-fluid vc_row inner_row\"  style=\"\"><div class=\"row-bg-wrap\"> <div class=\"row-bg\" ><\/div> <\/div><div class=\"row_col_wrap_12_inner col span_12  left\">\n\t<div style=\"\" class=\"vc_col-sm-12 wpb_column column_container vc_column_container col child_column has-animation padding-2-percent el_spacing_0px inherit_tablet inherit_phone \"  data-using-bg=\"true\" data-bg-cover=\"true\" data-padding-pos=\"all\" data-has-bg-color=\"false\" data-bg-color=\"\" data-bg-opacity=\"1\" data-animation=\"fade-in-from-bottom\" data-delay=\"0\" >\n\t\t<div class=\"vc_column-inner\" ><div class=\"column-image-bg-wrap column-bg-layer viewport-desktop\" data-n-parallax-bg=\"true\" data-parallax-speed=\"fast\" data-bg-pos=\"center center\" data-bg-animation=\"none\" data-bg-overlay=\"false\"><div class=\"inner-wrap\"><div class=\"column-image-bg parallax-layer\" style=\" background-image: url('https:\/\/nalusurf.de\/wp-content\/uploads\/2025\/07\/IMG_0508-Kopie.jpg'); \"><\/div><\/div><\/div>\n\t\t<div class=\"wpb_wrapper\">\n\t\t\t<div class=\"divider-wrap height_tablet_50vh height_phone_40vh \" data-alignment=\"default\"><div style=\"height: 60vh;\" class=\"divider\"><\/div><\/div>\n\t\t<\/div> \n\t<\/div>\n\t<\/div> \n<\/div><\/div>\n\t\t\t<\/div> \n\t\t<\/div>\n\t<\/div> \n<\/div><\/div>\n\t\t<div id=\"fws_6a8dff3e8d662\"  data-column-margin=\"default\" data-midnight=\"dark\"  class=\"wpb_row vc_row-fluid vc_row\"  style=\"padding-top: 0px; padding-bottom: 0px; \"><div class=\"row-bg-wrap\" data-bg-animation=\"none\" data-bg-animation-delay=\"\" data-bg-overlay=\"false\"><div class=\"inner-wrap row-bg-layer\" ><div class=\"row-bg viewport-desktop\"  style=\"\"><\/div><\/div><\/div><div class=\"row_col_wrap_12 col span_12 dark left\">\n\t<div  class=\"vc_col-sm-12 wpb_column column_container vc_column_container col boxed centered-text padding-6-percent inherit_tablet inherit_phone flex_gap_desktop_10px \"  data-padding-pos=\"left-right\" data-has-bg-color=\"false\" data-bg-color=\"\" data-bg-opacity=\"1\" data-animation=\"\" data-delay=\"0\" >\n\t\t<div class=\"vc_column-inner\" >\n\t\t\t<div class=\"wpb_wrapper\">\n\t\t\t\t<div class=\"nectar-gradient-text\" data-direction=\"horizontal\" data-color=\"extra-color-gradient-1\" style=\"\"><h1>Surfkurs buchen<\/h1><\/div>\n\t<div class=\"wpb_raw_code wpb_raw_html wpb_content_element\" >\n\t\t<div class=\"wpb_wrapper\">\n\t\t\t<!-- ===== NALUSURF BUCHUNGSFORMULAR (DE\/EN\/ES\/FR\/IT) \u2013 in \"Custom HTML\" (Gutenberg) oder \"Raw HTML\" (WPBakery) einf\u00fcgen ===== -->\n<div id=\"nalu-book\" class=\"notranslate\" translate=\"no\">\n  <div class=\"wrap\">\n    <div class=\"card\"><div id=\"nalu-app\"><div class=\"center\">L\u00e4dt\u2026<\/div><\/div><\/div>\n    <div class=\"foot\" id=\"nalu-foot\">Zahlung vor Ort in bar<\/div>\n  <\/div>\n<\/div>\n\n<style>\n#nalu-book{--ink:#0b2b34;--deep:#0e3a44;--sea:#127a86;--seaSoft:#e3f0f1;--sand:#f4f1e9;--coral:#e8743b;--line:#d9d3c4;--muted:#8a8470;background:linear-gradient(160deg,var(--ink) 0%,var(--deep) 38%,var(--sea) 100%);padding:24px 12px;border-radius:20px}\n#nalu-book *{box-sizing:border-box;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif}\n#nalu-book .wrap{max-width:640px;margin:0 auto}\n#nalu-book .card{background:var(--sand);border-radius:24px;box-shadow:0 20px 50px rgba(0,0,0,.3);overflow:hidden}\n#nalu-book .pad{padding:24px}\n#nalu-book .langbar{display:flex;justify-content:flex-end;gap:6px;margin-bottom:14px;flex-wrap:wrap}\n#nalu-book .langbtn{border:1px solid var(--line);background:#fff;color:var(--deep);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700;cursor:pointer}\n#nalu-book .langbtn.active{background:var(--deep);color:#fff;border-color:var(--deep)}\n#nalu-book .eyebrow{display:flex;align-items:center;gap:8px;margin-bottom:6px}\n#nalu-book .num{width:20px;height:20px;border-radius:50%;background:var(--deep);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}\n#nalu-book .eyebrow h3{color:var(--ink);font-size:15px;margin:0}\n#nalu-book .sub{font-size:12px;color:var(--muted);margin:0 0 12px 28px}\n#nalu-book .pkgs{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:24px}\n#nalu-book .pkg{position:relative;border:1.5px solid var(--line);background:#fff;border-radius:16px;padding:10px;text-align:left;cursor:pointer;color:var(--ink)}\n#nalu-book .pkg.active{background:var(--deep);color:#fff;border-color:var(--deep)}\n#nalu-book .pkg .d{font-weight:700;font-size:13px}\n#nalu-book .pkg .p{font-size:18px;font-weight:800;line-height:1.1}\n#nalu-book .pkg .pd{font-size:11px;color:var(--muted)}\n#nalu-book .pkg.active .pd{color:rgba(255,255,255,.7)}\n#nalu-book .disc{position:absolute;top:-8px;right:-4px;background:var(--coral);color:#fff;font-size:11px;font-weight:700;border-radius:8px;padding:2px 7px;white-space:nowrap}\n#nalu-book .rowflex{display:flex;align-items:center;gap:16px;margin-bottom:24px}\n#nalu-book .stepper{display:flex;align-items:center;background:#fff;border:1px solid var(--line);border-radius:999px}\n#nalu-book .stepper button{border:none;background:none;padding:10px;cursor:pointer;color:var(--deep);font-size:16px}\n#nalu-book .stepper .val{width:32px;text-align:center;font-weight:700;color:var(--ink)}\n#nalu-book .slots{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:24px}\n@media(max-width:520px){#nalu-book .slots{grid-template-columns:1fr}#nalu-book .pkgs{grid-template-columns:repeat(2,1fr)}}\n#nalu-book .slot{position:relative;border:1.5px solid var(--line);background:#fff;border-radius:16px;padding:14px;text-align:left;cursor:pointer}\n#nalu-book .slot.active{background:var(--seaSoft);border-color:var(--sea)}\n#nalu-book .slot.full{opacity:.5;cursor:not-allowed}\n#nalu-book .slot.dim{opacity:.4;cursor:not-allowed}\n#nalu-book .slot .ord{position:absolute;top:-9px;left:-7px;background:var(--sea);color:#fff;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}\n#nalu-book .slot .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}\n#nalu-book .slot .date{font-weight:600;font-size:13px;color:var(--ink)}\n#nalu-book .slot .time{font-weight:700;font-size:14px;color:var(--deep)}\n#nalu-book .seats{display:flex;align-items:center;gap:6px}\n#nalu-book .dots{display:flex;gap:4px}\n#nalu-book .dot{width:9px;height:9px;border-radius:50%}\n#nalu-book .seatlabel{font-size:12px;font-weight:500}\n#nalu-book .grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}\n@media(max-width:520px){#nalu-book .grid2{grid-template-columns:1fr}}\n#nalu-book label{display:block}\n#nalu-book label span{font-size:12px;font-weight:600;color:var(--deep);display:block;margin-bottom:4px}\n#nalu-book input[type=text],#nalu-book input[type=email],#nalu-book input[type=tel]{width:100%;border:1px solid var(--line);border-radius:12px;padding:10px 14px;font-size:14px;color:var(--ink);outline:none;background:#fff}\n#nalu-book .kids{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px;margin-bottom:24px}\n#nalu-book .kids .kh{display:flex;justify-content:space-between;align-items:center}\n#nalu-book .kids .kh span{font-size:14px;font-weight:600;color:var(--ink)}\n#nalu-book .toggle{width:46px;height:26px;border-radius:999px;border:none;cursor:pointer;position:relative;background:var(--line)}\n#nalu-book .toggle.on{background:var(--sea)}\n#nalu-book .toggle .knob{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left .15s}\n#nalu-book .toggle.on .knob{left:23px}\n#nalu-book .ages{margin-top:12px}\n#nalu-book .ageitem{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:10px;padding:4px 8px;margin:0 6px 6px 0}\n#nalu-book .ageitem input{width:54px;border:none;outline:none;font-size:14px;color:var(--ink)}\n#nalu-book .ageitem .rm{border:none;background:none;color:var(--coral);cursor:pointer}\n#nalu-book .addkid{border:none;background:var(--seaSoft);color:var(--deep);border-radius:10px;padding:6px 12px;font-size:14px;font-weight:500;cursor:pointer}\n#nalu-book .summary{background:var(--deep);border-radius:16px;padding:16px;display:flex;justify-content:space-between;align-items:center;gap:16px;color:#fff}\n#nalu-book .summary .meta{font-size:12px;color:rgba(255,255,255,.7)}\n#nalu-book .summary .save{color:#ffd9a8}\n#nalu-book .summary .total{font-size:24px;font-weight:800;line-height:1.1}\n#nalu-book .summary .pay{font-size:12px;color:rgba(255,255,255,.6)}\n#nalu-book .bookbtn{background:var(--coral);color:#fff;border:none;border-radius:999px;padding:12px 20px;font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap}\n#nalu-book .bookbtn:disabled{background:#9aa3a3;cursor:not-allowed}\n#nalu-book .err{background:#fde8df;color:var(--coral);border-radius:12px;padding:12px;font-size:14px;margin-bottom:12px}\n#nalu-book .hint{font-size:12px;color:var(--muted);text-align:center;margin-top:8px}\n#nalu-book .foot{text-align:center;font-size:12px;color:rgba(255,255,255,.6);margin-top:20px}\n#nalu-book .center{padding:48px;text-align:center;color:var(--deep)}\n#nalu-book .done{padding:32px;text-align:center}\n#nalu-book .check{width:64px;height:64px;border-radius:50%;background:var(--seaSoft);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:32px}\n#nalu-book .done h2{color:var(--ink);font-size:24px;margin-bottom:4px}\n#nalu-book .done p{color:var(--deep);font-size:14px;margin-bottom:20px}\n#nalu-book .recap{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;text-align:left;max-width:360px;margin:0 auto}\n#nalu-book .recap .r{display:flex;justify-content:space-between;padding:4px 0;font-size:14px}\n#nalu-book .recap .r .l{color:var(--muted)}\n#nalu-book .recap .r .v{color:var(--ink);font-weight:500;text-align:right}\n#nalu-book .recap .r .v.b{font-weight:800}\n#nalu-book .recap hr{border:none;border-top:1px solid var(--line);margin:8px 0}\n#nalu-book .newbtn{margin-top:24px;background:var(--deep);color:#fff;border:none;border-radius:999px;padding:10px 20px;font-weight:600;font-size:14px;cursor:pointer}\n#nalu-book input[type=date]{width:100%;border:1px solid var(--line);border-radius:12px;padding:10px 14px;font-size:14px;color:var(--ink);outline:none;background:#fff}\n#nalu-book .openpick{background:#fff;border:1px dashed var(--sea);border-radius:16px;padding:14px;margin:-8px 0 24px}\n#nalu-book .opl{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:8px}\n#nalu-book .oph{display:block;font-size:12px;font-weight:400;color:var(--muted);margin-top:2px}\n#nalu-book .daychips{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}\n#nalu-book .daychip{display:inline-flex;align-items:center;gap:6px;background:var(--seaSoft);border:1px solid var(--sea);border-radius:999px;padding:6px 8px 6px 6px;font-size:13px;color:var(--ink)}\n#nalu-book .daychip .ord2{background:var(--sea);color:#fff;width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}\n#nalu-book .daychip .dcf{color:var(--muted);font-size:12px}\n#nalu-book .daychip .dcx{border:none;background:none;color:var(--coral);cursor:pointer;font-size:14px;padding:0 2px}\n#nalu-book .askbox{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin:-8px 0 24px;font-size:13px;color:var(--deep);line-height:1.5}\n#nalu-book .askbtns{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:10px}\n#nalu-book .askbtn{display:inline-block;background:#25D366;color:#fff;text-decoration:none;font-weight:700;border-radius:999px;padding:8px 14px;font-size:13px}\n#nalu-book .askbtn.mail{background:var(--deep)}\n#nalu-book select{width:100%;border:1px solid var(--line);border-radius:12px;padding:11px 14px;font-size:15px;color:var(--ink);background:#fff;outline:none;-webkit-appearance:none;appearance:none}\n#nalu-book select:disabled{opacity:.5}\n#nalu-book .pickrow{display:flex;gap:8px;flex-wrap:wrap}\n#nalu-book .pickrow select{flex:1;min-width:130px}\n<\/style>\n\n<script>\n(function(){\nconst SUPABASE_URL = \"https:\/\/tgjpxhsdggovetcwmexh.supabase.co\";\nconst SUPABASE_ANON_KEY = \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InRnanB4aHNkZ2dvdmV0Y3dtZXhoIiwicm9sZSI6ImFub24iLCJpYXQiOjE3ODE2MDM3MTcsImV4cCI6MjA5NzE3OTcxN30.UMMH8ZyJmLYIJ3lcSYWrRZobjLKW4mm-lWQcYxfAMGs\";\n\nconst H = { apikey: SUPABASE_ANON_KEY, Authorization: \"Bearer \" + SUPABASE_ANON_KEY };\nconst BASE_PER_DAY = 60, MAX_SEATS = 8;\nconst LANGS = [[\"de\",\"\ud83c\udde9\ud83c\uddea\",\"DE\"],[\"en\",\"\ud83c\uddec\ud83c\udde7\",\"EN\"],[\"es\",\"\ud83c\uddea\ud83c\uddf8\",\"ES\"],[\"fr\",\"\ud83c\uddeb\ud83c\uddf7\",\"FR\"],[\"it\",\"\ud83c\uddee\ud83c\uddf9\",\"IT\"],[\"nl\",\"\ud83c\uddf3\ud83c\uddf1\",\"NL\"],[\"da\",\"\ud83c\udde9\ud83c\uddf0\",\"DA\"],[\"no\",\"\ud83c\uddf3\ud83c\uddf4\",\"NO\"],[\"sv\",\"\ud83c\uddf8\ud83c\uddea\",\"SV\"],[\"pl\",\"\ud83c\uddf5\ud83c\uddf1\",\"PL\"],[\"cs\",\"\ud83c\udde8\ud83c\uddff\",\"CS\"],[\"sk\",\"\ud83c\uddf8\ud83c\uddf0\",\"SK\"]];\n\nconst I18N = {\n  de: { loading:\"L\u00e4dt\u2026\", connErr:\"Verbindung fehlgeschlagen.\", pkgTitle:\"Paket w\u00e4hlen\", pkgSub:\"Preis pro Person \u00b7 ab 3 Tagen g\u00fcnstiger\", perDay:\"\u20ac\/Tag\", peopleTitle:\"Wie viele Personen?\", each:\"jede Person\", maxN:\"max.\", daysTitleS:\"Tag & Uhrzeit\", daysTitleM:\"Tage w\u00e4hlen\", daysSubS:\"W\u00e4hle deinen Wunschtermin\", of:\"von\", selected:\"Tagen gew\u00e4hlt\", noSlots:\"Aktuell keine Termine freigegeben.\", free:\"frei\", soldout:\"ausgebucht\", notEnough:\"nicht genug Pl\u00e4tze f\u00fcr\", dataTitle:\"Deine Daten\", name:\"Name *\", namePh:\"Vor- und Nachname\", email:\"E-Mail *\", emailPh:\"name@email.com\", emailInvalid:\"Bitte gib eine g\u00fcltige E-Mail-Adresse ein.\", phone:\"Handynummer *\", phonePh:\"+34 \u2026\", acc:\"Unterkunft\", accPh:\"Hotel \/ Apartment (optional)\", kidsQ:\"Kinder dabei?\", kidsNote:\"Bitte das Alter angeben (Kurse ab 10 Jahren).\", agePh:\"Alter\", addKid:\"+ Kind\", under13:\"\u26a0 Unter 10 \u2013 bitte vorab kurz mit uns abstimmen.\", pay:\"Zahlung vor Ort in bar\", book:\"Buchen \u2192\", pickOne:\"Bitte mindestens einen Termin ausw\u00e4hlen.\", remaining1:\"Die \u00fcbrigen\", remaining2:\"Tag(e) besprechen wir vor Ort mit dir.\", soldoutErr:\"Einer der gew\u00e4hlten Tage ist leider gerade ausgebucht.\", failErr:\"Buchung fehlgeschlagen.\", doneTitle:\"Buchung best\u00e4tigt\", doneText:\"Wir senden dir Treffpunkt und Details per E-Mail.\", rPackage:\"Paket\", rPeople:\"Personen\", rDate:\"Termin\", rDay:\"Tag\", rMore:\"Weitere Tage\", rMoreVal:\"vor Ort vereinbaren\", rKids:\"Kinder\", rTotal:\"Gesamt (vor Ort in bar)\", newBooking:\"Neue Buchung\", save:\"du sparst\", person:\"Person\", people:\"Personen\", day:\"Tag\", days:\"Tage\", timeSuffix:\" Uhr\", pickupQ:\"Abhol-Service (Pickup)? (nur Costa Calma & Esquinzo)\", pickupWhere:\"Wo sollen wir dich abholen?\", pickupPh:\"Hotel \/ Apartment \/ Adresse\", notesLabel:\"Anmerkung \/ Sonstiges (optional)\", notesPh:\"z. B. Wunsch-Tage, Surf-Erfahrung, Sonstiges \u2026\", fillReq:\"Bitte f\u00fclle noch aus:\", spamHint:\"Tipp: Falls unsere Best\u00e4tigungs-Mail nicht ankommt, schau bitte auch im Spam-Ordner nach.\", locale:\"de-DE\" },\n  en: { loading:\"Loading\u2026\", connErr:\"Connection failed.\", pkgTitle:\"Choose your package\", pkgSub:\"Price per person \u00b7 cheaper from 3 days\", perDay:\"\u20ac\/day\", peopleTitle:\"How many people?\", each:\"each person\", maxN:\"max.\", daysTitleS:\"Day & time\", daysTitleM:\"Choose your days\", daysSubS:\"Choose your preferred date\", of:\"of\", selected:\"days selected\", noSlots:\"No dates available right now.\", free:\"free\", soldout:\"sold out\", notEnough:\"not enough spots for\", dataTitle:\"Your details\", name:\"Name *\", namePh:\"First and last name\", email:\"Email *\", emailPh:\"name@email.com\", emailInvalid:\"Please enter a valid email address.\", phone:\"Mobile number *\", phonePh:\"+34 \u2026\", acc:\"Accommodation\", accPh:\"Hotel \/ apartment (optional)\", kidsQ:\"Kids joining?\", kidsNote:\"Please enter their age (lessons from age 10).\", agePh:\"Age\", addKid:\"+ Child\", under13:\"\u26a0 Under 10 \u2013 please check with us beforehand.\", pay:\"Pay on site in cash\", book:\"Book \u2192\", pickOne:\"Please select at least one date.\", remaining1:\"We'll arrange the other\", remaining2:\"day(s) with you on site.\", soldoutErr:\"One of the selected days has just sold out.\", failErr:\"Booking failed.\", doneTitle:\"Booking confirmed\", doneText:\"We'll send you the meeting point and details by email.\", rPackage:\"Package\", rPeople:\"Participants\", rDate:\"Date\", rDay:\"Day\", rMore:\"Further days\", rMoreVal:\"arranged on site\", rKids:\"Children\", rTotal:\"Total (pay on site in cash)\", newBooking:\"New booking\", save:\"you save\", person:\"person\", people:\"people\", day:\"Day\", days:\"Days\", timeSuffix:\"\", pickupQ:\"Pickup service? (only Costa Calma & Esquinzo)\", pickupWhere:\"Where should we pick you up?\", pickupPh:\"Hotel \/ apartment \/ address\", notesLabel:\"Notes \/ other (optional)\", notesPh:\"e.g. preferred days, surf experience, other requests \u2026\", fillReq:\"Please complete:\", spamHint:\"Tip: If our confirmation email doesn't arrive, please also check your spam folder.\", locale:\"en-GB\" },\n  es: { loading:\"Cargando\u2026\", connErr:\"Error de conexi\u00f3n.\", pkgTitle:\"Elige tu paquete\", pkgSub:\"Precio por persona \u00b7 m\u00e1s barato a partir de 3 d\u00edas\", perDay:\"\u20ac\/d\u00eda\", peopleTitle:\"\u00bfCu\u00e1ntas personas?\", each:\"cada persona\", maxN:\"m\u00e1x.\", daysTitleS:\"D\u00eda y hora\", daysTitleM:\"Elige tus d\u00edas\", daysSubS:\"Elige tu fecha preferida\", of:\"de\", selected:\"d\u00edas elegidos\", noSlots:\"No hay fechas disponibles por ahora.\", free:\"libres\", soldout:\"completo\", notEnough:\"no hay plazas suficientes para\", dataTitle:\"Tus datos\", name:\"Nombre *\", namePh:\"Nombre y apellidos\", email:\"Correo *\", emailPh:\"nombre@email.com\", phone:\"Tel\u00e9fono m\u00f3vil *\", phonePh:\"+34 \u2026\", acc:\"Alojamiento\", accPh:\"Hotel \/ apartamento (opcional)\", kidsQ:\"\u00bfVienen ni\u00f1os?\", kidsNote:\"Indica la edad (cursos a partir de 10 a\u00f1os).\", agePh:\"Edad\", addKid:\"+ Ni\u00f1o\", under13:\"\u26a0 Menor de 10 \u2013 cons\u00faltanos antes, por favor.\", pay:\"Pago en el lugar en efectivo\", book:\"Reservar \u2192\", pickOne:\"Elige al menos una fecha.\", remaining1:\"Los otros\", remaining2:\"d\u00eda(s) los acordamos contigo en el lugar.\", soldoutErr:\"Uno de los d\u00edas elegidos acaba de completarse.\", failErr:\"La reserva ha fallado.\", doneTitle:\"Reserva confirmada\", doneText:\"Te enviaremos el punto de encuentro y los detalles por correo.\", rPackage:\"Paquete\", rPeople:\"Participantes\", rDate:\"Fecha\", rDay:\"D\u00eda\", rMore:\"D\u00edas adicionales\", rMoreVal:\"se acuerdan en el lugar\", rKids:\"Ni\u00f1os\", rTotal:\"Total (pago en efectivo en el lugar)\", newBooking:\"Nueva reserva\", save:\"ahorras\", person:\"persona\", people:\"personas\", day:\"D\u00eda\", days:\"D\u00edas\", timeSuffix:\" h\", pickupQ:\"\u00bfServicio de recogida? (solo Costa Calma y Esquinzo)\", pickupWhere:\"\u00bfD\u00f3nde te recogemos?\", pickupPh:\"Hotel \/ apartamento \/ direcci\u00f3n\", notesLabel:\"Observaciones \/ otros (opcional)\", notesPh:\"p. ej. d\u00edas preferidos, experiencia surf, otras peticiones \u2026\", fillReq:\"Por favor, completa:\", spamHint:\"Consejo: Si no recibes nuestro correo de confirmaci\u00f3n, revisa tambi\u00e9n la carpeta de spam.\", locale:\"es-ES\" },\n  fr: { loading:\"Chargement\u2026\", connErr:\"\u00c9chec de la connexion.\", pkgTitle:\"Choisissez votre forfait\", pkgSub:\"Prix par personne \u00b7 moins cher d\u00e8s 3 jours\", perDay:\"\u20ac\/jour\", peopleTitle:\"Combien de personnes ?\", each:\"par personne\", maxN:\"max.\", daysTitleS:\"Jour et heure\", daysTitleM:\"Choisissez vos jours\", daysSubS:\"Choisissez votre date\", of:\"sur\", selected:\"jours choisis\", noSlots:\"Aucune date disponible pour le moment.\", free:\"libres\", soldout:\"complet\", notEnough:\"pas assez de places pour\", dataTitle:\"Vos coordonn\u00e9es\", name:\"Nom *\", namePh:\"Pr\u00e9nom et nom\", email:\"E-mail *\", emailPh:\"nom@email.com\", phone:\"T\u00e9l\u00e9phone portable *\", phonePh:\"+34 \u2026\", acc:\"H\u00e9bergement\", accPh:\"H\u00f4tel \/ appartement (facultatif)\", kidsQ:\"Des enfants ?\", kidsNote:\"Veuillez indiquer l'\u00e2ge (cours d\u00e8s 10 ans).\", agePh:\"\u00c2ge\", addKid:\"+ Enfant\", under13:\"\u26a0 Moins de 10 ans \u2013 merci de nous contacter avant.\", pay:\"Paiement sur place en esp\u00e8ces\", book:\"R\u00e9server \u2192\", pickOne:\"Veuillez choisir au moins une date.\", remaining1:\"Les\", remaining2:\"autre(s) jour(s) seront convenus sur place avec vous.\", soldoutErr:\"L'un des jours choisis vient d'\u00eatre complet.\", failErr:\"\u00c9chec de la r\u00e9servation.\", doneTitle:\"R\u00e9servation confirm\u00e9e\", doneText:\"Nous vous enverrons le lieu de rendez-vous et les d\u00e9tails par e-mail.\", rPackage:\"Forfait\", rPeople:\"Participants\", rDate:\"Date\", rDay:\"Jour\", rMore:\"Jours suppl\u00e9mentaires\", rMoreVal:\"\u00e0 convenir sur place\", rKids:\"Enfants\", rTotal:\"Total (paiement sur place en esp\u00e8ces)\", newBooking:\"Nouvelle r\u00e9servation\", save:\"vous \u00e9conomisez\", person:\"personne\", people:\"personnes\", day:\"Jour\", days:\"Jours\", timeSuffix:\"\", pickupQ:\"Navette (pickup) ? (uniquement Costa Calma & Esquinzo)\", pickupWhere:\"O\u00f9 devons-nous venir te chercher ?\", pickupPh:\"H\u00f4tel \/ appartement \/ adresse\", notesLabel:\"Remarques \/ autres (facultatif)\", notesPh:\"p. ex. jours souhait\u00e9s, exp\u00e9rience de surf, autres demandes \u2026\", fillReq:\"Veuillez compl\u00e9ter :\", spamHint:\"Astuce : si notre e-mail de confirmation n'arrive pas, v\u00e9rifie aussi tes spams.\", locale:\"fr-FR\" },\n  it: { loading:\"Caricamento\u2026\", connErr:\"Connessione non riuscita.\", pkgTitle:\"Scegli il tuo pacchetto\", pkgSub:\"Prezzo a persona \u00b7 pi\u00f9 conveniente da 3 giorni\", perDay:\"\u20ac\/giorno\", peopleTitle:\"Quante persone?\", each:\"a persona\", maxN:\"max.\", daysTitleS:\"Giorno e ora\", daysTitleM:\"Scegli i tuoi giorni\", daysSubS:\"Scegli la data che preferisci\", of:\"su\", selected:\"giorni scelti\", noSlots:\"Al momento non ci sono date disponibili.\", free:\"liberi\", soldout:\"esaurito\", notEnough:\"posti insufficienti per\", dataTitle:\"I tuoi dati\", name:\"Nome *\", namePh:\"Nome e cognome\", email:\"E-mail *\", emailPh:\"nome@email.com\", phone:\"Cellulare *\", phonePh:\"+34 \u2026\", acc:\"Alloggio\", accPh:\"Hotel \/ appartamento (facoltativo)\", kidsQ:\"Ci sono bambini?\", kidsNote:\"Indica l'et\u00e0 (corsi dai 10 anni).\", agePh:\"Et\u00e0\", addKid:\"+ Bambino\", under13:\"\u26a0 Sotto i 10 anni \u2013 contattaci prima, per favore.\", pay:\"Pagamento in loco in contanti\", book:\"Prenota \u2192\", pickOne:\"Scegli almeno una data.\", remaining1:\"Gli altri\", remaining2:\"giorno\/i li concordiamo in loco con te.\", soldoutErr:\"Uno dei giorni scelti \u00e8 appena andato esaurito.\", failErr:\"Prenotazione non riuscita.\", doneTitle:\"Prenotazione confermata\", doneText:\"Ti invieremo il punto d'incontro e i dettagli via e-mail.\", rPackage:\"Pacchetto\", rPeople:\"Partecipanti\", rDate:\"Data\", rDay:\"Giorno\", rMore:\"Giorni aggiuntivi\", rMoreVal:\"da concordare in loco\", rKids:\"Bambini\", rTotal:\"Totale (pagamento in loco in contanti)\", newBooking:\"Nuova prenotazione\", save:\"risparmi\", person:\"persona\", people:\"persone\", day:\"Giorno\", days:\"Giorni\", timeSuffix:\"\", pickupQ:\"Servizio navetta (pickup)? (solo Costa Calma ed Esquinzo)\", pickupWhere:\"Dove ti veniamo a prendere?\", pickupPh:\"Hotel \/ appartamento \/ indirizzo\", notesLabel:\"Note \/ altro (facoltativo)\", notesPh:\"es. giorni preferiti, esperienza di surf, altre richieste \u2026\", fillReq:\"Completa ancora:\", spamHint:\"Suggerimento: se non ricevi la nostra email di conferma, controlla anche la cartella spam.\", locale:\"it-IT\" },\n  nl: { loading:\"Laden\u2026\", connErr:\"Verbinding mislukt.\", pkgTitle:\"Kies je pakket\", pkgSub:\"Prijs per persoon \u00b7 voordeliger vanaf 3 dagen\", perDay:\"\u20ac\/dag\", peopleTitle:\"Hoeveel personen?\", each:\"per persoon\", maxN:\"max.\", daysTitleS:\"Dag & tijd\", daysTitleM:\"Kies je dagen\", daysSubS:\"Kies je gewenste datum\", of:\"van\", selected:\"dagen gekozen\", noSlots:\"Momenteel geen data beschikbaar.\", free:\"vrij\", soldout:\"vol\", notEnough:\"niet genoeg plekken voor\", dataTitle:\"Jouw gegevens\", name:\"Naam *\", namePh:\"Voor- en achternaam\", email:\"E-mail *\", emailPh:\"naam@email.com\", phone:\"Mobiel nummer *\", phonePh:\"+34 \u2026\", acc:\"Accommodatie\", accPh:\"Hotel \/ appartement (optioneel)\", kidsQ:\"Kinderen erbij?\", kidsNote:\"Geef de leeftijd op (lessen vanaf 10 jaar).\", agePh:\"Leeftijd\", addKid:\"+ Kind\", under13:\"\u26a0 Jonger dan 10 \u2013 neem eerst even contact met ons op.\", pay:\"Betaling ter plaatse, contant\", book:\"Boeken \u2192\", pickOne:\"Kies minstens \u00e9\u00e9n datum.\", remaining1:\"De overige\", remaining2:\"dag(en) spreken we ter plaatse met je af.\", soldoutErr:\"Een van de gekozen dagen is zojuist volgeboekt.\", failErr:\"Boeking mislukt.\", doneTitle:\"Boeking bevestigd\", doneText:\"We sturen je het ontmoetingspunt en de details per e-mail.\", rPackage:\"Pakket\", rPeople:\"Deelnemers\", rDate:\"Datum\", rDay:\"Dag\", rMore:\"Extra dagen\", rMoreVal:\"ter plaatse afspreken\", rKids:\"Kinderen\", rTotal:\"Totaal (betaling ter plaatse, contant)\", newBooking:\"Nieuwe boeking\", save:\"je bespaart\", person:\"persoon\", people:\"personen\", day:\"dag\", days:\"dagen\", timeSuffix:\" uur\", pickupQ:\"Ophaalservice (pickup)? (alleen Costa Calma & Esquinzo)\", pickupWhere:\"Waar mogen we je ophalen?\", pickupPh:\"Hotel \/ appartement \/ adres\", notesLabel:\"Opmerking \/ overig (optioneel)\", notesPh:\"bijv. gewenste dagen, surfervaring, overige wensen \u2026\", fillReq:\"Vul nog in:\", spamHint:\"Tip: als onze bevestigingsmail niet aankomt, controleer ook je spammap.\", locale:\"nl-NL\" },\n  da: { loading:\"Indl\u00e6ser\u2026\", connErr:\"Forbindelsen mislykkedes.\", pkgTitle:\"V\u00e6lg din pakke\", pkgSub:\"Pris pr. person \u00b7 billigere fra 3 dage\", perDay:\"\u20ac\/dag\", peopleTitle:\"Hvor mange personer?\", each:\"pr. person\", maxN:\"maks.\", daysTitleS:\"Dag og tid\", daysTitleM:\"V\u00e6lg dine dage\", daysSubS:\"V\u00e6lg din \u00f8nskede dato\", of:\"af\", selected:\"dage valgt\", noSlots:\"Ingen ledige datoer i \u00f8jeblikket.\", free:\"ledige\", soldout:\"udsolgt\", notEnough:\"ikke nok pladser til\", dataTitle:\"Dine oplysninger\", name:\"Navn *\", namePh:\"For- og efternavn\", email:\"E-mail *\", emailPh:\"navn@email.com\", phone:\"Mobilnummer *\", phonePh:\"+34 \u2026\", acc:\"Indkvartering\", accPh:\"Hotel \/ lejlighed (valgfrit)\", kidsQ:\"B\u00f8rn med?\", kidsNote:\"Angiv alderen (undervisning fra 10 \u00e5r).\", agePh:\"Alder\", addKid:\"+ Barn\", under13:\"\u26a0 Under 10 \u2013 kontakt os venligst f\u00f8rst.\", pay:\"Betaling p\u00e5 stedet, kontant\", book:\"Book \u2192\", pickOne:\"V\u00e6lg mindst \u00e9n dato.\", remaining1:\"De \u00f8vrige\", remaining2:\"dag(e) aftaler vi med dig p\u00e5 stedet.\", soldoutErr:\"En af de valgte dage er netop blevet udsolgt.\", failErr:\"Booking mislykkedes.\", doneTitle:\"Booking bekr\u00e6ftet\", doneText:\"Vi sender dig m\u00f8destedet og detaljerne p\u00e5 e-mail.\", rPackage:\"Pakke\", rPeople:\"Deltagere\", rDate:\"Dato\", rDay:\"Dag\", rMore:\"Flere dage\", rMoreVal:\"aftales p\u00e5 stedet\", rKids:\"B\u00f8rn\", rTotal:\"I alt (betaling p\u00e5 stedet, kontant)\", newBooking:\"Ny booking\", save:\"du sparer\", person:\"person\", people:\"personer\", day:\"dag\", days:\"dage\", timeSuffix:\"\", pickupQ:\"Afhentning (pickup)? (kun Costa Calma & Esquinzo)\", pickupWhere:\"Hvor skal vi hente dig?\", pickupPh:\"Hotel \/ lejlighed \/ adresse\", notesLabel:\"Bem\u00e6rkning \/ andet (valgfrit)\", notesPh:\"f.eks. \u00f8nskede dage, surferfaring, \u00f8vrige \u00f8nsker \u2026\", fillReq:\"Udfyld venligst:\", spamHint:\"Tip: Hvis vores bekr\u00e6ftelsesmail ikke n\u00e5r frem, s\u00e5 tjek ogs\u00e5 din spammappe.\", locale:\"da-DK\" },\n  no: { loading:\"Laster\u2026\", connErr:\"Tilkobling mislyktes.\", pkgTitle:\"Velg pakken din\", pkgSub:\"Pris per person \u00b7 billigere fra 3 dager\", perDay:\"\u20ac\/dag\", peopleTitle:\"Hvor mange personer?\", each:\"per person\", maxN:\"maks.\", daysTitleS:\"Dag og tid\", daysTitleM:\"Velg dagene dine\", daysSubS:\"Velg \u00f8nsket dato\", of:\"av\", selected:\"dager valgt\", noSlots:\"Ingen ledige datoer for \u00f8yeblikket.\", free:\"ledige\", soldout:\"utsolgt\", notEnough:\"ikke nok plasser til\", dataTitle:\"Dine opplysninger\", name:\"Navn *\", namePh:\"For- og etternavn\", email:\"E-post *\", emailPh:\"navn@email.com\", phone:\"Mobilnummer *\", phonePh:\"+34 \u2026\", acc:\"Overnatting\", accPh:\"Hotell \/ leilighet (valgfritt)\", kidsQ:\"Barn med?\", kidsNote:\"Oppgi alderen (kurs fra 10 \u00e5r).\", agePh:\"Alder\", addKid:\"+ Barn\", under13:\"\u26a0 Under 10 \u2013 ta kontakt med oss f\u00f8rst.\", pay:\"Betaling p\u00e5 stedet, kontant\", book:\"Bestill \u2192\", pickOne:\"Velg minst \u00e9n dato.\", remaining1:\"De \u00f8vrige\", remaining2:\"dagen(e) avtaler vi med deg p\u00e5 stedet.\", soldoutErr:\"En av de valgte dagene er nettopp blitt utsolgt.\", failErr:\"Bestillingen mislyktes.\", doneTitle:\"Bestilling bekreftet\", doneText:\"Vi sender deg m\u00f8testedet og detaljene p\u00e5 e-post.\", rPackage:\"Pakke\", rPeople:\"Deltakere\", rDate:\"Dato\", rDay:\"Dag\", rMore:\"Flere dager\", rMoreVal:\"avtales p\u00e5 stedet\", rKids:\"Barn\", rTotal:\"Totalt (betaling p\u00e5 stedet, kontant)\", newBooking:\"Ny bestilling\", save:\"du sparer\", person:\"person\", people:\"personer\", day:\"dag\", days:\"dager\", timeSuffix:\"\", pickupQ:\"Henting (pickup)? (kun Costa Calma & Esquinzo)\", pickupWhere:\"Hvor skal vi hente deg?\", pickupPh:\"Hotell \/ leilighet \/ adresse\", notesLabel:\"Merknad \/ annet (valgfritt)\", notesPh:\"f.eks. \u00f8nskede dager, surfeerfaring, \u00f8vrige \u00f8nsker \u2026\", fillReq:\"Fyll inn:\", spamHint:\"Tips: Hvis bekreftelsesmailen ikke kommer frem, sjekk ogs\u00e5 s\u00f8ppelpostmappen.\", locale:\"nb-NO\" },\n  sv: { loading:\"Laddar\u2026\", connErr:\"Anslutningen misslyckades.\", pkgTitle:\"V\u00e4lj ditt paket\", pkgSub:\"Pris per person \u00b7 billigare fr\u00e5n 3 dagar\", perDay:\"\u20ac\/dag\", peopleTitle:\"Hur m\u00e5nga personer?\", each:\"per person\", maxN:\"max.\", daysTitleS:\"Dag och tid\", daysTitleM:\"V\u00e4lj dina dagar\", daysSubS:\"V\u00e4lj \u00f6nskat datum\", of:\"av\", selected:\"dagar valda\", noSlots:\"Inga lediga datum just nu.\", free:\"lediga\", soldout:\"sluts\u00e5lt\", notEnough:\"inte tillr\u00e4ckligt med platser f\u00f6r\", dataTitle:\"Dina uppgifter\", name:\"Namn *\", namePh:\"F\u00f6r- och efternamn\", email:\"E-post *\", emailPh:\"namn@email.com\", phone:\"Mobilnummer *\", phonePh:\"+34 \u2026\", acc:\"Boende\", accPh:\"Hotell \/ l\u00e4genhet (valfritt)\", kidsQ:\"Barn med?\", kidsNote:\"Ange \u00e5ldern (kurser fr\u00e5n 10 \u00e5r).\", agePh:\"\u00c5lder\", addKid:\"+ Barn\", under13:\"\u26a0 Under 10 \u2013 kontakta oss f\u00f6rst, tack.\", pay:\"Betalning p\u00e5 plats, kontant\", book:\"Boka \u2192\", pickOne:\"V\u00e4lj minst ett datum.\", remaining1:\"De \u00f6vriga\", remaining2:\"dagen(arna) kommer vi \u00f6verens om p\u00e5 plats.\", soldoutErr:\"En av de valda dagarna \u00e4r just sluts\u00e5ld.\", failErr:\"Bokningen misslyckades.\", doneTitle:\"Bokning bekr\u00e4ftad\", doneText:\"Vi skickar m\u00f6tesplatsen och detaljerna via e-post.\", rPackage:\"Paket\", rPeople:\"Deltagare\", rDate:\"Datum\", rDay:\"Dag\", rMore:\"Fler dagar\", rMoreVal:\"kommer vi \u00f6verens om p\u00e5 plats\", rKids:\"Barn\", rTotal:\"Totalt (betalning p\u00e5 plats, kontant)\", newBooking:\"Ny bokning\", save:\"du sparar\", person:\"person\", people:\"personer\", day:\"dag\", days:\"dagar\", timeSuffix:\"\", pickupQ:\"Upph\u00e4mtning (pickup)? (endast Costa Calma & Esquinzo)\", pickupWhere:\"Var ska vi h\u00e4mta dig?\", pickupPh:\"Hotell \/ l\u00e4genhet \/ adress\", notesLabel:\"Anm\u00e4rkning \/ \u00f6vrigt (valfritt)\", notesPh:\"t.ex. \u00f6nskade dagar, surferfarenhet, \u00f6vriga \u00f6nskem\u00e5l \u2026\", fillReq:\"Fyll i:\", spamHint:\"Tips: Om v\u00e5rt bekr\u00e4ftelsemejl inte kommer fram, kolla \u00e4ven skr\u00e4pposten.\", locale:\"sv-SE\" },\n  pl: { loading:\"\u0141adowanie\u2026\", connErr:\"Po\u0142\u0105czenie nie powiod\u0142o si\u0119.\", pkgTitle:\"Wybierz pakiet\", pkgSub:\"Cena za osob\u0119 \u00b7 taniej od 3 dni\", perDay:\"\u20ac\/dzie\u0144\", peopleTitle:\"Ile os\u00f3b?\", each:\"ka\u017cda osoba\", maxN:\"maks.\", daysTitleS:\"Dzie\u0144 i godzina\", daysTitleM:\"Wybierz dni\", daysSubS:\"Wybierz preferowan\u0105 dat\u0119\", of:\"z\", selected:\"dni wybrane\", noSlots:\"Obecnie brak dost\u0119pnych termin\u00f3w.\", free:\"wolne\", soldout:\"wyprzedane\", notEnough:\"za ma\u0142o miejsc dla\", dataTitle:\"Twoje dane\", name:\"Imi\u0119 i nazwisko *\", namePh:\"Imi\u0119 i nazwisko\", email:\"E-mail *\", emailPh:\"nazwa@email.com\", phone:\"Numer telefonu *\", phonePh:\"+34 \u2026\", acc:\"Zakwaterowanie\", accPh:\"Hotel \/ apartament (opcjonalnie)\", kidsQ:\"Dzieci z wami?\", kidsNote:\"Podaj wiek (kursy od 10 lat).\", agePh:\"Wiek\", addKid:\"+ Dziecko\", under13:\"\u26a0 Poni\u017cej 10 lat \u2013 prosimy o wcze\u015bniejszy kontakt.\", pay:\"P\u0142atno\u015b\u0107 na miejscu, got\u00f3wk\u0105\", book:\"Rezerwuj \u2192\", pickOne:\"Wybierz co najmniej jeden termin.\", remaining1:\"Pozosta\u0142e\", remaining2:\"dni ustalimy z Tob\u0105 na miejscu.\", soldoutErr:\"Jeden z wybranych dni zosta\u0142 w\u0142a\u015bnie wyprzedany.\", failErr:\"Rezerwacja nie powiod\u0142a si\u0119.\", doneTitle:\"Rezerwacja potwierdzona\", doneText:\"Wy\u015blemy Ci miejsce spotkania i szczeg\u00f3\u0142y e-mailem.\", rPackage:\"Pakiet\", rPeople:\"Uczestnicy\", rDate:\"Termin\", rDay:\"Dzie\u0144\", rMore:\"Dodatkowe dni\", rMoreVal:\"do ustalenia na miejscu\", rKids:\"Dzieci\", rTotal:\"Razem (p\u0142atno\u015b\u0107 na miejscu, got\u00f3wk\u0105)\", newBooking:\"Nowa rezerwacja\", save:\"oszcz\u0119dzasz\", person:\"osoba\", people:\"os.\", day:\"dzie\u0144\", days:\"dni\", timeSuffix:\"\", pickupQ:\"Transfer (pickup)? (tylko Costa Calma i Esquinzo)\", pickupWhere:\"Gdzie mamy Ci\u0119 odebra\u0107?\", pickupPh:\"Hotel \/ apartament \/ adres\", notesLabel:\"Uwagi \/ inne (opcjonalnie)\", notesPh:\"np. preferowane dni, do\u015bwiadczenie w surfingu, inne \u017cyczenia \u2026\", fillReq:\"Uzupe\u0142nij jeszcze:\", spamHint:\"Wskaz\u00f3wka: Je\u015bli nasz e-mail z potwierdzeniem nie dotrze, sprawd\u017a te\u017c folder spam.\", locale:\"pl-PL\" },\n  cs: { loading:\"Na\u010d\u00edt\u00e1n\u00ed\u2026\", connErr:\"P\u0159ipojen\u00ed selhalo.\", pkgTitle:\"Vyberte bal\u00ed\u010dek\", pkgSub:\"Cena za osobu \u00b7 levn\u011bj\u0161\u00ed od 3 dn\u016f\", perDay:\"\u20ac\/den\", peopleTitle:\"Kolik osob?\", each:\"ka\u017ed\u00e1 osoba\", maxN:\"max.\", daysTitleS:\"Den a \u010das\", daysTitleM:\"Vyberte dny\", daysSubS:\"Vyberte preferovan\u00fd term\u00edn\", of:\"z\", selected:\"dn\u016f vybr\u00e1no\", noSlots:\"Moment\u00e1ln\u011b nejsou voln\u00e9 term\u00edny.\", free:\"voln\u00e9\", soldout:\"vyprod\u00e1no\", notEnough:\"nedostatek m\u00edst pro\", dataTitle:\"Va\u0161e \u00fadaje\", name:\"Jm\u00e9no *\", namePh:\"Jm\u00e9no a p\u0159\u00edjmen\u00ed\", email:\"E-mail *\", emailPh:\"jmeno@email.com\", phone:\"Mobiln\u00ed \u010d\u00edslo *\", phonePh:\"+34 \u2026\", acc:\"Ubytov\u00e1n\u00ed\", accPh:\"Hotel \/ apartm\u00e1n (nepovinn\u00e9)\", kidsQ:\"D\u011bti s sebou?\", kidsNote:\"Uve\u010fte v\u011bk (kurzy od 10 let).\", agePh:\"V\u011bk\", addKid:\"+ D\u00edt\u011b\", under13:\"\u26a0 M\u00e9n\u011b ne\u017e 10 let \u2013 kontaktujte n\u00e1s pros\u00edm p\u0159edem.\", pay:\"Platba na m\u00edst\u011b v hotovosti\", book:\"Rezervovat \u2192\", pickOne:\"Vyberte alespo\u0148 jeden term\u00edn.\", remaining1:\"Zb\u00fdvaj\u00edc\u00ed\", remaining2:\"dny domluv\u00edme na m\u00edst\u011b.\", soldoutErr:\"Jeden z vybran\u00fdch dn\u016f byl pr\u00e1v\u011b vyprod\u00e1n.\", failErr:\"Rezervace se nezda\u0159ila.\", doneTitle:\"Rezervace potvrzena\", doneText:\"M\u00edsto srazu a podrobnosti v\u00e1m po\u0161leme e-mailem.\", rPackage:\"Bal\u00ed\u010dek\", rPeople:\"\u00da\u010dastn\u00edci\", rDate:\"Term\u00edn\", rDay:\"Den\", rMore:\"Dal\u0161\u00ed dny\", rMoreVal:\"domluv\u00edme na m\u00edst\u011b\", rKids:\"D\u011bti\", rTotal:\"Celkem (platba na m\u00edst\u011b v hotovosti)\", newBooking:\"Nov\u00e1 rezervace\", save:\"u\u0161et\u0159\u00edte\", person:\"osoba\", people:\"os.\", day:\"den\", days:\"dny\", timeSuffix:\"\", pickupQ:\"Svoz (pickup)? (pouze Costa Calma a Esquinzo)\", pickupWhere:\"Kde v\u00e1s m\u00e1me vyzvednout?\", pickupPh:\"Hotel \/ apartm\u00e1n \/ adresa\", notesLabel:\"Pozn\u00e1mka \/ jin\u00e9 (nepovinn\u00e9)\", notesPh:\"nap\u0159. preferovan\u00e9 dny, zku\u0161enosti se surfov\u00e1n\u00edm, dal\u0161\u00ed p\u0159\u00e1n\u00ed \u2026\", fillReq:\"Dopl\u0148te pros\u00edm:\", spamHint:\"Tip: Pokud v\u00e1m n\u00e1\u0161 potvrzovac\u00ed e-mail nedoraz\u00ed, zkontrolujte i slo\u017eku spam.\", locale:\"cs-CZ\" },\n  sk: { loading:\"Na\u010d\u00edtava sa\u2026\", connErr:\"Pripojenie zlyhalo.\", pkgTitle:\"Vyberte bal\u00edk\", pkgSub:\"Cena za osobu \u00b7 lacnej\u0161ie od 3 dn\u00ed\", perDay:\"\u20ac\/de\u0148\", peopleTitle:\"Ko\u013eko os\u00f4b?\", each:\"ka\u017ed\u00e1 osoba\", maxN:\"max.\", daysTitleS:\"De\u0148 a \u010das\", daysTitleM:\"Vyberte dni\", daysSubS:\"Vyberte preferovan\u00fd term\u00edn\", of:\"z\", selected:\"dn\u00ed vybran\u00fdch\", noSlots:\"Moment\u00e1lne nie s\u00fa vo\u013en\u00e9 term\u00edny.\", free:\"vo\u013en\u00e9\", soldout:\"vypredan\u00e9\", notEnough:\"nedostatok miest pre\", dataTitle:\"Va\u0161e \u00fadaje\", name:\"Meno *\", namePh:\"Meno a priezvisko\", email:\"E-mail *\", emailPh:\"meno@email.com\", phone:\"Mobiln\u00e9 \u010d\u00edslo *\", phonePh:\"+34 \u2026\", acc:\"Ubytovanie\", accPh:\"Hotel \/ apartm\u00e1n (nepovinn\u00e9)\", kidsQ:\"Deti so sebou?\", kidsNote:\"Uve\u010fte vek (kurzy od 10 rokov).\", agePh:\"Vek\", addKid:\"+ Die\u0165a\", under13:\"\u26a0 Menej ako 10 rokov \u2013 kontaktujte n\u00e1s pros\u00edm vopred.\", pay:\"Platba na mieste v hotovosti\", book:\"Rezervova\u0165 \u2192\", pickOne:\"Vyberte aspo\u0148 jeden term\u00edn.\", remaining1:\"Zvy\u0161n\u00e9\", remaining2:\"dni dohodneme na mieste.\", soldoutErr:\"Jeden z vybran\u00fdch dn\u00ed bol pr\u00e1ve vypredan\u00fd.\", failErr:\"Rezerv\u00e1cia zlyhala.\", doneTitle:\"Rezerv\u00e1cia potvrden\u00e1\", doneText:\"Miesto stretnutia a podrobnosti v\u00e1m po\u0161leme e-mailom.\", rPackage:\"Bal\u00edk\", rPeople:\"\u00da\u010dastn\u00edci\", rDate:\"Term\u00edn\", rDay:\"De\u0148\", rMore:\"\u010eal\u0161ie dni\", rMoreVal:\"dohodneme na mieste\", rKids:\"Deti\", rTotal:\"Spolu (platba na mieste v hotovosti)\", newBooking:\"Nov\u00e1 rezerv\u00e1cia\", save:\"u\u0161etr\u00edte\", person:\"osoba\", people:\"os.\", day:\"de\u0148\", days:\"dni\", timeSuffix:\"\", pickupQ:\"Zvoz (pickup)? (len Costa Calma a Esquinzo)\", pickupWhere:\"Kde v\u00e1s m\u00e1me vyzdvihn\u00fa\u0165?\", pickupPh:\"Hotel \/ apartm\u00e1n \/ adresa\", notesLabel:\"Pozn\u00e1mka \/ in\u00e9 (nepovinn\u00e9)\", notesPh:\"napr. preferovan\u00e9 dni, sk\u00fasenosti so surfovan\u00edm, \u010fal\u0161ie \u017eelania \u2026\", fillReq:\"Dopl\u0148te pros\u00edm:\", spamHint:\"Tip: Ak v\u00e1m n\u00e1\u0161 potvrdzovac\u00ed e-mail nepr\u00edde, skontrolujte aj prie\u010dinok spam.\", locale:\"sk-SK\" }\n};\n\n\/\/ --- Etappe B: Texte fuer offene Tage (Date-Picker) ---\nconst OPEN_I18N = {\n  de:{openLabel:\"Anderer (Start)-Tag (ohne feste Uhrzeit)\",openHint:\"Uhrzeit folgt per E-Mail. Bei Mehrtages-Kursen gen\u00fcgt der Starttag \u2013 die Folgetage werden automatisch reserviert (au\u00dfer sonntags).\",openInvalid:\"An diesem Tag ist kein Termin frei.\",openFollows:\"Uhrzeit folgt\"},\n  en:{openLabel:\"Add another day (no fixed time yet)\",openHint:\"Time follows by email. For multi-day courses just pick the start day \u2013 the following days are reserved automatically (Sundays excluded).\",openInvalid:\"No spot available on this day.\",openFollows:\"time follows\"},\n  es:{openLabel:\"A\u00f1adir otro d\u00eda (sin hora fija)\",openHint:\"La hora se enviar\u00e1 por correo. En cursos de varios d\u00edas basta con el d\u00eda de inicio: los d\u00edas siguientes se reservan autom\u00e1ticamente (domingos excluidos).\",openInvalid:\"No hay plaza disponible ese d\u00eda.\",openFollows:\"hora por confirmar\"},\n  fr:{openLabel:\"Ajouter un autre jour (sans horaire fixe)\",openHint:\"L'horaire suivra par e-mail. Pour les cours de plusieurs jours, indiquez le jour de d\u00e9but \u2013 les jours suivants sont r\u00e9serv\u00e9s automatiquement (dimanches exclus).\",openInvalid:\"Aucune place disponible ce jour-l\u00e0.\",openFollows:\"horaire \u00e0 suivre\"},\n  it:{openLabel:\"Aggiungi un altro giorno (senza orario fisso)\",openHint:\"L'orario seguir\u00e0 via e-mail. Per i corsi di pi\u00f9 giorni basta il giorno d'inizio: i giorni successivi vengono riservati automaticamente (domeniche escluse).\",openInvalid:\"Nessun posto disponibile in questo giorno.\",openFollows:\"orario da confermare\"},\n  nl:{openLabel:\"Nog een dag toevoegen (zonder vaste tijd)\",openHint:\"Tijd volgt per e-mail. Bij meerdaagse cursussen volstaat de startdag \u2013 de volgende dagen worden automatisch gereserveerd (zondagen uitgezonderd).\",openInvalid:\"Geen plek beschikbaar op deze dag.\",openFollows:\"tijd volgt\"},\n  da:{openLabel:\"Tilf\u00f8j endnu en dag (uden fast tid)\",openHint:\"Tid f\u00f8lger via e-mail. Ved flerdagskurser er startdagen nok \u2013 de f\u00f8lgende dage reserveres automatisk (s\u00f8ndage undtaget).\",openInvalid:\"Ingen ledig plads p\u00e5 denne dag.\",openFollows:\"tid f\u00f8lger\"},\n  no:{openLabel:\"Legg til en dag til (uten fast tid)\",openHint:\"Tid kommer p\u00e5 e-post. Ved flerdagskurs holder det med startdagen \u2013 de p\u00e5f\u00f8lgende dagene reserveres automatisk (s\u00f8ndager unntatt).\",openInvalid:\"Ingen ledig plass denne dagen.\",openFollows:\"tid kommer\"},\n  sv:{openLabel:\"L\u00e4gg till en dag till (utan fast tid)\",openHint:\"Tid kommer via e-post. F\u00f6r flerdagskurser r\u00e4cker startdagen \u2013 de f\u00f6ljande dagarna reserveras automatiskt (s\u00f6ndagar undantagna).\",openInvalid:\"Ingen ledig plats den h\u00e4r dagen.\",openFollows:\"tid kommer\"},\n  pl:{openLabel:\"Dodaj kolejny dzie\u0144 (bez sta\u0142ej godziny)\",openHint:\"Godzina zostanie podana e-mailem. Przy kursach kilkudniowych wystarczy dzie\u0144 startu \u2013 kolejne dni rezerwujemy automatycznie (z wyj\u0105tkiem niedziel).\",openInvalid:\"Brak wolnych miejsc tego dnia.\",openFollows:\"godzina wkr\u00f3tce\"},\n  cs:{openLabel:\"P\u0159idat dal\u0161\u00ed den (bez pevn\u00e9ho \u010dasu)\",openHint:\"\u010cas za\u0161leme e-mailem. U v\u00edcedenn\u00edch kurz\u016f sta\u010d\u00ed po\u010d\u00e1te\u010dn\u00ed den \u2013 n\u00e1sleduj\u00edc\u00ed dny rezervujeme automaticky (krom\u011b ned\u011bl\u00ed).\",openInvalid:\"V tento den nen\u00ed voln\u00e9 m\u00edsto.\",openFollows:\"\u010das bude up\u0159esn\u011bn\"},\n  sk:{openLabel:\"Prida\u0165 \u010fal\u0161\u00ed de\u0148 (bez pevn\u00e9ho \u010dasu)\",openHint:\"\u010cas po\u0161leme e-mailom. Pri viacd\u0148ov\u00fdch kurzoch sta\u010d\u00ed za\u010diato\u010dn\u00fd de\u0148 \u2013 nasleduj\u00face dni rezervujeme automaticky (okrem nedel\u00ed).\",openInvalid:\"V tento de\u0148 nie je vo\u013en\u00e9 miesto.\",openFollows:\"\u010das bude upresnen\u00fd\"}\n};\nObject.keys(OPEN_I18N).forEach(k=>{ if(I18N[k]) Object.assign(I18N[k], OPEN_I18N[k]); });\nconst MULTI_I18N = {\"de\": \"An einem der Folgetage ist leider kein Platz frei. Bitte einen anderen Starttag w\u00e4hlen oder uns kurz kontaktieren.\", \"en\": \"One of the following days is fully booked. Please choose another start day or contact us.\", \"es\": \"Uno de los d\u00edas siguientes est\u00e1 completo. Elige otro d\u00eda de inicio o cont\u00e1ctanos.\", \"fr\": \"L'un des jours suivants est complet. Choisissez un autre jour de d\u00e9but ou contactez-nous.\", \"it\": \"Uno dei giorni successivi \u00e8 al completo. Scegli un altro giorno d'inizio o contattaci.\", \"nl\": \"Een van de volgende dagen is volgeboekt. Kies een andere startdag of neem contact met ons op.\", \"da\": \"En af de efterf\u00f8lgende dage er fuldt booket. V\u00e6lg en anden startdag, eller kontakt os.\", \"no\": \"En av de p\u00e5f\u00f8lgende dagene er fullbooket. Velg en annen startdag eller kontakt oss.\", \"sv\": \"En av de f\u00f6ljande dagarna \u00e4r fullbokad. V\u00e4lj en annan startdag eller kontakta oss.\", \"pl\": \"Jeden z kolejnych dni jest ju\u017c zaj\u0119ty. Wybierz inny dzie\u0144 startu lub skontaktuj si\u0119 z nami.\", \"cs\": \"Jeden z n\u00e1sleduj\u00edc\u00edch dn\u00ed je ji\u017e obsazen. Vyberte jin\u00fd po\u010d\u00e1te\u010dn\u00ed den nebo n\u00e1s kontaktujte.\", \"sk\": \"Jeden z nasleduj\u00facich dn\u00ed je u\u017e obsaden\u00fd. Vyberte in\u00fd za\u010diato\u010dn\u00fd de\u0148 alebo n\u00e1s kontaktujte.\"};\nObject.keys(MULTI_I18N).forEach(k=>{ if(I18N[k]) I18N[k].multiFull = MULTI_I18N[k]; });\n\nconst ASK_I18N = { soldoutDay:{\"de\": \"Dieser Tag ist leider ausgebucht.\", \"en\": \"This day is fully booked.\", \"es\": \"Este d\u00eda est\u00e1 completo.\", \"fr\": \"Ce jour est complet.\", \"it\": \"Questo giorno \u00e8 al completo.\", \"nl\": \"Deze dag is volgeboekt.\", \"da\": \"Denne dag er fuldt booket.\", \"no\": \"Denne dagen er fullbooket.\", \"sv\": \"Den h\u00e4r dagen \u00e4r fullbokad.\", \"pl\": \"Ten dzie\u0144 jest ju\u017c zaj\u0119ty.\", \"cs\": \"Tento den je ji\u017e obsazen.\", \"sk\": \"Tento de\u0148 je u\u017e obsaden\u00fd.\"}, askNote:{\"de\": \"Wunschtag ausgebucht? Schreib uns \u2013 wir richten an dem Tag oft einen zweiten Kurs ein:\", \"en\": \"Preferred day fully booked? Message us \u2013 we can often add a second course that day:\", \"es\": \"\u00bfTu d\u00eda preferido est\u00e1 completo? Escr\u00edbenos: a menudo organizamos un segundo curso ese d\u00eda:\", \"fr\": \"Jour souhait\u00e9 complet ? \u00c9cris-nous \u2013 nous ajoutons souvent un second cours ce jour-l\u00e0 :\", \"it\": \"Giorno preferito al completo? Scrivici: spesso organizziamo un secondo corso quel giorno:\", \"nl\": \"Gewenste dag volgeboekt? Stuur ons een bericht \u2013 we plannen vaak een tweede cursus die dag:\", \"da\": \"\u00d8nskedag fuldt booket? Skriv til os \u2013 vi opretter ofte et ekstra hold den dag:\", \"no\": \"\u00d8nsket dag fullbooket? Send oss en melding \u2013 vi setter ofte opp et ekstra kurs den dagen:\", \"sv\": \"\u00d6nskad dag fullbokad? Skriv till oss \u2013 vi ordnar ofta en andra kurs den dagen:\", \"pl\": \"Wybrany dzie\u0144 zaj\u0119ty? Napisz do nas \u2013 cz\u0119sto organizujemy drugi kurs tego dnia:\", \"cs\": \"Vybran\u00fd den obsazen? Napi\u0161te n\u00e1m \u2013 \u010dasto v ten den otev\u0159eme druh\u00fd kurz:\", \"sk\": \"Vybran\u00fd de\u0148 obsaden\u00fd? Nap\u00ed\u0161te n\u00e1m \u2013 \u010dasto v ten de\u0148 otvor\u00edme druh\u00fd kurz:\"}, askBtn:{\"de\": \"Anfrage per WhatsApp\", \"en\": \"Ask via WhatsApp\", \"es\": \"Consultar por WhatsApp\", \"fr\": \"Demander via WhatsApp\", \"it\": \"Richiedi via WhatsApp\", \"nl\": \"Vraag via WhatsApp\", \"da\": \"Sp\u00f8rg via WhatsApp\", \"no\": \"Sp\u00f8r via WhatsApp\", \"sv\": \"Fr\u00e5ga via WhatsApp\", \"pl\": \"Zapytaj przez WhatsApp\", \"cs\": \"Zeptat se p\u0159es WhatsApp\", \"sk\": \"Op\u00fdta\u0165 sa cez WhatsApp\"}, waMsg:{\"de\": \"Hallo Nalusurf, mein Wunschtermin ist ausgebucht. Geht ein zweiter Kurs an dem Tag?\", \"en\": \"Hi Nalusurf, my preferred day is fully booked. Could you add a second course that day?\", \"es\": \"Hola Nalusurf, mi d\u00eda preferido est\u00e1 completo. \u00bfPodr\u00edais organizar un segundo curso ese d\u00eda?\", \"fr\": \"Bonjour Nalusurf, mon jour souhait\u00e9 est complet. Pourriez-vous ajouter un second cours ce jour-l\u00e0 ?\", \"it\": \"Ciao Nalusurf, il mio giorno preferito \u00e8 al completo. Potete organizzare un secondo corso quel giorno?\", \"nl\": \"Hoi Nalusurf, mijn gewenste dag is volgeboekt. Kunnen jullie die dag een tweede cursus plannen?\", \"da\": \"Hej Nalusurf, min \u00f8nskedag er fuldt booket. Kan I oprette et ekstra hold den dag?\", \"no\": \"Hei Nalusurf, \u00f8nsket dag er fullbooket. Kan dere sette opp et ekstra kurs den dagen?\", \"sv\": \"Hej Nalusurf, min \u00f6nskade dag \u00e4r fullbokad. Kan ni ordna en andra kurs den dagen?\", \"pl\": \"Cze\u015b\u0107 Nalusurf, m\u00f3j wybrany dzie\u0144 jest zaj\u0119ty. Czy mogliby\u015bcie zorganizowa\u0107 drugi kurs tego dnia?\", \"cs\": \"Ahoj Nalusurf, m\u016fj vybran\u00fd den je obsazen. Mohli byste ten den otev\u0159\u00edt druh\u00fd kurz?\", \"sk\": \"Ahoj Nalusurf, m\u00f4j vybran\u00fd de\u0148 je obsaden\u00fd. Mohli by ste ten de\u0148 otvori\u0165 druh\u00fd kurz?\"} };\nObject.keys(I18N).forEach(k=>{ if(ASK_I18N.soldoutDay[k]){ I18N[k].soldoutDay=ASK_I18N.soldoutDay[k]; I18N[k].askNote=ASK_I18N.askNote[k]; I18N[k].askBtn=ASK_I18N.askBtn[k]; I18N[k].waMsg=ASK_I18N.waMsg[k]; } });\nconst MAIL_I18N={\"de\": \"Anfrage per E-Mail\", \"en\": \"Ask via email\", \"es\": \"Consultar por email\", \"fr\": \"Demander par e-mail\", \"it\": \"Richiedi via email\", \"nl\": \"Vraag via e-mail\", \"da\": \"Sp\u00f8rg via e-mail\", \"no\": \"Sp\u00f8r via e-post\", \"sv\": \"Fr\u00e5ga via e-post\", \"pl\": \"Zapytaj e-mailem\", \"cs\": \"Zeptat se e-mailem\", \"sk\": \"Op\u00fdta\u0165 sa e-mailom\"};\nconst FILLFIRST_I18N={\n  de:{fillFirstMsg1:\"Wir f\u00fcllen Termine nacheinander auf \u2013 dieser Termin wird erst w\u00e4hlbar, wenn der fr\u00fchere voll ist. Wenn dir die Uhrzeit\", fillFirstMsg2:\"lieber ist, schreib es uns einfach ins Anmerkungsfeld \u2013 falls der Kurs zustande kommt, richten wir dich danach aus.\"},\n  en:{fillFirstMsg1:\"We fill sessions one after another \u2013 this time only becomes selectable once the earlier one is full. If you'd prefer the\", fillFirstMsg2:\"session, just add a note in the comment field \u2013 if that course happens, we'll take it into account.\"},\n  es:{fillFirstMsg1:\"Completamos los horarios uno tras otro \u2013 este horario solo estar\u00e1 disponible cuando el anterior est\u00e9 completo. Si prefieres el horario de las\", fillFirstMsg2:\"escr\u00edbenoslo en el campo de observaciones \u2013 si ese curso se llega a dar, lo tendremos en cuenta.\"},\n  fr:{fillFirstMsg1:\"Nous remplissons les cr\u00e9neaux les uns apr\u00e8s les autres \u2013 ce cr\u00e9neau ne sera s\u00e9lectionnable que lorsque le pr\u00e9c\u00e9dent sera complet. Si tu pr\u00e9f\u00e8res l'horaire de\", fillFirstMsg2:\"indique-le simplement dans le champ de remarques \u2013 si ce cours a lieu, nous en tiendrons compte.\"},\n  it:{fillFirstMsg1:\"Riempiamo gli orari uno dopo l'altro \u2013 questo orario sar\u00e0 selezionabile solo quando il precedente sar\u00e0 al completo. Se preferisci l'orario delle\", fillFirstMsg2:\"scrivicelo semplicemente nel campo note \u2013 se quel corso si terr\u00e0, ne terremo conto.\"},\n  nl:{fillFirstMsg1:\"We vullen tijdstippen na elkaar \u2013 dit tijdstip wordt pas kiesbaar zodra het eerdere tijdstip vol is. Als je liever het tijdstip van\", fillFirstMsg2:\"hebt, zet dit dan in het opmerkingenveld \u2013 als die cursus doorgaat, houden we er rekening mee.\"},\n  da:{fillFirstMsg1:\"Vi fylder tidspunkterne op efter hinanden \u2013 dette tidspunkt kan f\u00f8rst v\u00e6lges, n\u00e5r det tidligere er fuldt booket. Hvis du hellere vil have tidspunktet\", fillFirstMsg2:\"s\u00e5 skriv det bare i bem\u00e6rkningsfeltet \u2013 hvis det hold bliver til noget, tager vi hensyn til det.\"},\n  no:{fillFirstMsg1:\"Vi fyller opp tidspunktene etter hverandre \u2013 dette tidspunktet kan f\u00f8rst velges n\u00e5r det tidligere er fullt. Hvis du heller vil ha tidspunktet\", fillFirstMsg2:\"skriv det bare i merknadsfeltet \u2013 hvis det kurset blir noe av, tar vi hensyn til det.\"},\n  sv:{fillFirstMsg1:\"Vi fyller tiderna en efter en \u2013 den h\u00e4r tiden g\u00e5r att v\u00e4lja f\u00f6rst n\u00e4r den tidigare \u00e4r full. Om du hellre vill ha tiden\", fillFirstMsg2:\"skriv det bara i anm\u00e4rkningsf\u00e4ltet \u2013 om den kursen blir av tar vi h\u00e4nsyn till det.\"},\n  pl:{fillFirstMsg1:\"Terminy wype\u0142niamy po kolei \u2013 ten termin b\u0119dzie mo\u017cna wybra\u0107 dopiero, gdy wcze\u015bniejszy si\u0119 zape\u0142ni. Je\u015bli wolisz godzin\u0119\", fillFirstMsg2:\"napisz to po prostu w polu z uwagami \u2013 je\u015bli ten kurs dojdzie do skutku, we\u017amiemy to pod uwag\u0119.\"},\n  cs:{fillFirstMsg1:\"Term\u00edny pln\u00edme postupn\u011b \u2013 tento term\u00edn p\u016fjde vybrat a\u017e po napln\u011bn\u00ed toho d\u0159\u00edv\u011bj\u0161\u00edho. Pokud preferuje\u0161 \u010das\", fillFirstMsg2:\"napi\u0161 n\u00e1m to pros\u00edm do pozn\u00e1mky \u2013 pokud se tento kurz uskute\u010dn\u00ed, budeme to m\u00edt na pam\u011bti.\"},\n  sk:{fillFirstMsg1:\"Term\u00edny pln\u00edme postupne \u2013 tento term\u00edn p\u00f4jde vybra\u0165 a\u017e po naplnen\u00ed toho skor\u0161ieho. Ak preferuje\u0161 \u010das\", fillFirstMsg2:\"nap\u00ed\u0161 n\u00e1m to pros\u00edm do pozn\u00e1mky \u2013 ak sa tento kurz uskuto\u010dn\u00ed, zoh\u013eadn\u00edme to.\"}\n};\nObject.keys(I18N).forEach(k=>{ if(FILLFIRST_I18N[k]) Object.assign(I18N[k], FILLFIRST_I18N[k]); });\nObject.keys(MAIL_I18N).forEach(k=>{ if(I18N[k]) I18N[k].askMail=MAIL_I18N[k]; });\nconst PICK_I18N={pickMonth:{\"de\": \"Monat w\u00e4hlen\", \"en\": \"Choose month\", \"es\": \"Elegir mes\", \"fr\": \"Choisir le mois\", \"it\": \"Scegli il mese\", \"nl\": \"Maand kiezen\", \"da\": \"V\u00e6lg m\u00e5ned\", \"no\": \"Velg m\u00e5ned\", \"sv\": \"V\u00e4lj m\u00e5nad\", \"pl\": \"Wybierz miesi\u0105c\", \"cs\": \"Vyberte m\u011bs\u00edc\", \"sk\": \"Vyberte mesiac\"},pickDay:{\"de\": \"Tag w\u00e4hlen\", \"en\": \"Choose day\", \"es\": \"Elegir d\u00eda\", \"fr\": \"Choisir le jour\", \"it\": \"Scegli il giorno\", \"nl\": \"Dag kiezen\", \"da\": \"V\u00e6lg dag\", \"no\": \"Velg dag\", \"sv\": \"V\u00e4lj dag\", \"pl\": \"Wybierz dzie\u0144\", \"cs\": \"Vyberte den\", \"sk\": \"Vyberte de\u0148\"}};\nObject.keys(PICK_I18N.pickMonth).forEach(k=>{ if(I18N[k]){ I18N[k].pickMonth=PICK_I18N.pickMonth[k]; I18N[k].pickDay=PICK_I18N.pickDay[k]; } });\n\n\nlet packages=[], slots=[];\nlet openMsg=\"\";\nlet pickMonth=\"\";\nlet slotHint=\"\";\nfunction detectLang(){ try{ var seg=(location.pathname||\"\").split(\"\/\").filter(Boolean)[0]||\"\"; if(I18N[seg]) return seg; }catch(e){} return \"de\"; }\nconst DIALS=[[\"\ud83c\udde9\ud83c\uddea\",\"+49\"],[\"\ud83c\udde6\ud83c\uddf9\",\"+43\"],[\"\ud83c\udde8\ud83c\udded\",\"+41\"],[\"\ud83c\uddea\ud83c\uddf8\",\"+34\"],[\"\ud83c\uddeb\ud83c\uddf7\",\"+33\"],[\"\ud83c\uddee\ud83c\uddf9\",\"+39\"],[\"\ud83c\uddf3\ud83c\uddf1\",\"+31\"],[\"\ud83c\udde7\ud83c\uddea\",\"+32\"],[\"\ud83c\uddec\ud83c\udde7\",\"+44\"],[\"\ud83c\uddee\ud83c\uddea\",\"+353\"],[\"\ud83c\uddf5\ud83c\uddf9\",\"+351\"],[\"\ud83c\udde9\ud83c\uddf0\",\"+45\"],[\"\ud83c\uddf3\ud83c\uddf4\",\"+47\"],[\"\ud83c\uddf8\ud83c\uddea\",\"+46\"],[\"\ud83c\uddeb\ud83c\uddee\",\"+358\"],[\"\ud83c\uddf5\ud83c\uddf1\",\"+48\"],[\"\ud83c\udde8\ud83c\uddff\",\"+420\"],[\"\ud83c\uddf8\ud83c\uddf0\",\"+421\"],[\"\ud83c\uddfa\ud83c\uddf8\",\"+1\"]];\nconst LANG_DIAL={de:\"+49\",en:\"+44\",es:\"+34\",fr:\"+33\",it:\"+39\",nl:\"+31\",da:\"+45\",no:\"+47\",sv:\"+46\",pl:\"+48\",cs:\"+420\",sk:\"+421\"};\nconst defaultDial=(lng)=>LANG_DIAL[lng]||\"+49\";\nlet st = { lang:detectLang(), pkgDays:1, parts:1, sel:[], name:\"\", email:\"\", phone:\"\", dial:defaultDial(detectLang()), acc:\"\", notes:\"\", pickup:false, hasKids:false, ages:[\"\"], submitting:false, error:null, done:null };\nconst app = document.getElementById(\"nalu-app\");\nconst L = () => I18N[st.lang] || I18N.de;\nconst dayW = n => n===1 ? L().day : L().days;\nconst persW = n => n===1 ? L().person : L().people;\nconst pad = n => String(n).padStart(2,\"0\");\nconst dkey = d => d.getFullYear()+\"-\"+pad(d.getMonth()+1)+\"-\"+pad(d.getDate());\nconst today = () => dkey(new Date());\nconst fmtDate = k => { const [y,m,dd]=k.split(\"-\").map(Number); return new Date(y,m-1,dd).toLocaleDateString(L().locale,{weekday:\"short\",day:\"2-digit\",month:\"short\"}); };\nconst monthName = mk => { const [y,m]=mk.split(\"-\").map(Number); return new Date(y,m-1,1).toLocaleDateString(L().locale,{month:\"long\",year:\"numeric\"}); };\nconst fmtTime = t => (t||\"\").slice(0,5);\n\nconst BOOK_HORIZON_DAYS=14;   \/\/ Kurse MIT Uhrzeit nur X Tage im Voraus zeigen; offene Tage (ohne Uhrzeit) immer\nfunction horizonDate(){ const d=new Date(); d.setDate(d.getDate()+BOOK_HORIZON_DAYS); const y=d.getFullYear(),m=String(d.getMonth()+1).padStart(2,\"0\"),da=String(d.getDate()).padStart(2,\"0\"); return y+\"-\"+m+\"-\"+da; }\n\nasync function load(){\n  try{\n    const [p,s] = await Promise.all([\n      fetch(SUPABASE_URL+\"\/rest\/v1\/packages?select=*&active=eq.true&order=sort_order\",{headers:H}),\n      fetch(SUPABASE_URL+\"\/rest\/v1\/slots?select=*&order=slot_date,slot_time\",{headers:H})\n    ]);\n    if(!p.ok||!s.ok) throw new Error(L().connErr);\n    packages = await p.json(); slots = (await s.json()).filter(x=> x.slot_time ? (String(x.slot_date).slice(0,10) <= horizonDate()) : true);\n    render();\n  }catch(e){ app.innerHTML='<div class=\"center\">\u26a0\ufe0f '+e.message+'<\/div>'; }\n}\nconst LEAD_MIN=60;                                   \/\/ Vorlaufzeit in Minuten\nfunction isPastSlot(s){\n  const d=String(s.slot_date).slice(0,10);\n  if(d < today()) return true;                       \/\/ vergangener Tag\n  if(d===today() && s.slot_time){                    \/\/ heute: mind. 1 Std. vor Start buchbar\n    const n=new Date(), nowMin=n.getHours()*60+n.getMinutes();\n    const [h,mi]=fmtTime(s.slot_time).split(\":\").map(Number);\n    if(h*60+mi <= nowMin + LEAD_MIN) return true;\n  }\n  return false;\n}\nfunction openSlots(){ return slots.filter(s=>!isPastSlot(s)).sort((a,b)=>(a.slot_date+(a.slot_time||\"\")).localeCompare(b.slot_date+(b.slot_time||\"\"))); }\nfunction timedSlots(){ return openSlots().filter(s=>s.slot_time); }\nfunction openDays(){ return slots.filter(s=>!isPastSlot(s) && !s.slot_time).sort((a,b)=>a.slot_date.localeCompare(b.slot_date)); }\nfunction addOpenDay(dateStr){\n  openMsg=\"\"; slotHint=\"\"; const t=L();\n  if(!dateStr){ render(); return; }\n  const onDate = slots.filter(s=> String(s.slot_date).slice(0,10)===dateStr);\n  if(onDate.length===0){ openMsg=t.openInvalid; render(); return; }          \/\/ gar kein Termin (Sonntag\/nicht angelegt)\n  const slot = onDate.slice().sort((a,b)=>(a.slot_time||\"\").localeCompare(b.slot_time||\"\")).find(s=>(s.capacity-s.booked_count)>=st.parts);\n  if(!slot){ openMsg=t.soldoutDay; render(); return; }                       \/\/ alle Termine an dem Tag voll\n  if(st.pkgDays===1){ st.sel=[slot.id]; render(); return; }\n  const r=autoReserve(slot);\n  if(!r.ok){ openMsg=t.multiFull; st.sel=[]; render(); return; }\n  st.sel=r.ids; render();\n}\nfunction pkg(){ return packages.find(p=>p.days===st.pkgDays) || {days:1,price:60}; }\nfunction selSlots(){ return st.sel.map(id=>slots.find(s=>s.id===id)).filter(Boolean); }\n\nfunction autoReserve(startSlot){\n  const ids=[startSlot.id];\n  const d=new Date(startSlot.slot_date+\"T00:00:00\");\n  let guard=0;\n  while(ids.length<st.pkgDays && guard<400){\n    guard++;\n    d.setDate(d.getDate()+1);\n    if(d.getDay()===0) continue;            \/\/ Sonntag ueberspringen\n    const k=dkey(d);\n    const s=slots.find(x=>String(x.slot_date).slice(0,10)===k && !isPastSlot(x) && (x.capacity-x.booked_count)>=st.parts);\n    if(!s) continue;                        \/\/ kein Termin \/ ausgebucht -> Tag ueberspringen\n    ids.push(s.id);\n  }\n  if(ids.length<st.pkgDays) return {ok:false};\n  return {ok:true, ids};\n}\nfunction slotFunnelBlocked(s){\n  \/\/ true = spaeterer Termin, der erst nach dem frueheren waehlbar sein soll\n  const list = timedSlots();\n  const idx = list.findIndex(x=>x.id===s.id);\n  if(idx<0) return false;\n  const earlierHasRoom = list.slice(0, idx).some(o => o.slot_date===s.slot_date && (o.capacity-o.booked_count) >= st.parts);\n  if(!earlierHasRoom) return false;                                  \/\/ kein frueherer Termin mit Platz -> frei waehlbar\n  \/\/ Ausnahme: sobald am Tag mehr Personen gebucht sind als der ERSTE Kurs fasst\n  \/\/ (beruecksichtigt eine Admin-Kapazitaetserhoehung automatisch) UND dieser Kurs schon laeuft -> freie Wahl\n  const daySlots = list.filter(o=>o.slot_date===s.slot_date);\n  const dayTotal = daySlots.reduce((sum,o)=>sum+(o.booked_count||0), 0);\n  const firstCap = daySlots.length ? (daySlots[0].capacity||8) : 8;  \/\/ Kapazitaet des ersten Kurses des Tages\n  if(dayTotal > firstCap && (s.booked_count||0) > 0) return false;   \/\/ beide Kurse laufen -> frei zwischen ihnen waehlen\n  return true;                                                       \/\/ sonst: erst den frueheren fuellen\n}\nfunction toggleSlot(id){\n  openMsg=\"\"; slotHint=\"\";\n  if(st.sel.includes(id)){ st.sel=[]; render(); return; }   \/\/ erneut tippen = Auswahl loeschen\n  const s=slots.find(x=>x.id===id); if(!s){ return; }\n  if(slotFunnelBlocked(s)){\n    \/\/ Frueherer Termin am selben Tag hat noch Platz -> nicht direkt waehlbar, Hinweis anzeigen\n    const t=L();\n    slotHint = t.fillFirstMsg1+' '+fmtTime(s.slot_time)+t.timeSuffix+' '+t.fillFirstMsg2;\n    render(); return;\n  }\n  if(st.pkgDays===1){ st.sel=[id]; render(); return; }\n  const r=autoReserve(s);\n  if(!r.ok){ openMsg=L().multiFull; st.sel=[]; render(); return; }\n  st.sel=r.ids; render();\n}\n\nfunction render(){\n  const t=L();\n  const f=document.getElementById(\"nalu-foot\"); if(f) f.textContent=t.pay;\n  if(st.done){ renderDone(); return; }\n  const P = pkg();\n  const timed = timedSlots(), odays = openDays(), future = openSlots(), hasAny = future.length>0;\n  const availDates=[...new Set(future.filter(s=>(s.capacity-s.booked_count)>=st.parts).map(s=>String(s.slot_date).slice(0,10)))].sort();\n  const pmonths=[...new Set(availDates.map(d=>d.slice(0,7)))];\n  if(pickMonth && !pmonths.includes(pickMonth)) pickMonth=\"\";\n  const pdays=availDates.filter(d=>d.slice(0,7)===pickMonth);\n  const selOpen = st.sel.map(id=>slots.find(s=>s.id===id)).filter(s=>s&&!s.slot_time);\n  const need = P.days;\n  const total = P.price*st.parts;\n  const save = P.days*BASE_PER_DAY*st.parts - total;\n  app.innerHTML = `\n  <div class=\"pad\">\n    <div class=\"eyebrow\"><span class=\"num\">1<\/span><h3>${t.pkgTitle}<\/h3><\/div>\n    <p class=\"sub\">${t.pkgSub}<\/p>\n    <div class=\"pkgs\">${packages.map(p=>{\n      const active=p.days===st.pkgDays, disc=p.days*BASE_PER_DAY-p.price>0;\n      return `<button class=\"pkg ${active?'active':''}\" data-pkg=\"${p.days}\"><div class=\"d\">${p.days} ${dayW(p.days)}<\/div><div class=\"p\">${Number(p.price)} \u20ac<\/div><div class=\"pd\">${Math.round(p.price\/p.days)} ${t.perDay}<\/div>${disc?'<span class=\"disc\">\u2212'+(p.days*BASE_PER_DAY-p.price)+' \u20ac<\/span>':''}<\/button>`;\n    }).join(\"\")}<\/div>\n    <div class=\"eyebrow\"><span class=\"num\">2<\/span><h3>${t.peopleTitle}<\/h3><\/div>\n    <p class=\"sub\">${t.maxN} ${MAX_SEATS} \u00b7 ${t.each} ${Number(P.price)} \u20ac<\/p>\n    <div class=\"rowflex\"><div class=\"stepper\"><button data-step=\"-1\">\u2212<\/button><span class=\"val\">${st.parts}<\/span><button data-step=\"1\">+<\/button><\/div><span style=\"font-size:14px;color:var(--deep)\"><b>${st.parts}<\/b> ${persW(st.parts)}<\/span><\/div>\n    <div class=\"eyebrow\"><span class=\"num\">3<\/span><h3>${need>1?t.daysTitleM:t.daysTitleS}<\/h3><\/div>\n    <p class=\"sub\">${need>1?(st.sel.length+' '+t.of+' '+need+' '+t.selected+(st.sel.length===need?' \u2713':'')):t.daysSubS}<\/p>\n    ${!hasAny ? '<div class=\"slot\" style=\"text-align:center;color:var(--muted)\">'+t.noSlots+'<\/div>' : ''}\n    ${timed.length ? `<div class=\"slots\">${timed.map((s,idx)=>{\n      const free=s.capacity-s.booked_count, enough=free>=st.parts;\n      const selected=st.sel.includes(s.id), ord=selected?st.sel.indexOf(s.id)+1:0;\n      const reachedMax=need>1 && st.sel.length>=need && !selected;\n      \/\/ Frueherer Termin am selben Tag hat noch Platz -> optisch gedimmt, aber weiter klickbar (zeigt Hinweis statt Auswahl)\n      const blockedByEarlier = !selected && slotFunnelBlocked(s);\n      const disabled=!enough || reachedMax;\n      const dots = Array.from({length:s.capacity}).map((_,i)=>`<span class=\"dot\" style=\"background:${i<s.booked_count?'var(--line)':'var(--sea)'};${i<s.booked_count?'':'box-shadow:0 0 0 1px var(--sea)'}\"><\/span>`).join(\"\");\n      return `<button class=\"slot ${selected?'active':''} ${!enough?'full':''} ${(reachedMax||blockedByEarlier)?'dim':''}\" data-slot=\"${s.id}\" ${disabled?'disabled':''}>${selected?'<span class=\"ord\">'+ord+'<\/span>':''}<div class=\"top\"><span class=\"date\">\ud83d\udcc5 ${fmtDate(s.slot_date)}<\/span><span class=\"time\">\ud83d\udd50 ${fmtTime(s.slot_time)}<\/span><\/div><div class=\"seats\"><div class=\"dots\">${dots}<\/div><span class=\"seatlabel\" style=\"color:${free===0?'var(--coral)':'var(--deep)'}\">${free===0?t.soldout:free+' '+t.free}<\/span><\/div>${!enough?'<div style=\"font-size:12px;color:var(--coral);margin-top:4px\">'+t.notEnough+' '+st.parts+'<\/div>':''}<\/button>`;\n    }).join(\"\")}<\/div>${slotHint?'<div class=\"askbox\" style=\"margin-top:12px\">\u2139\ufe0f '+slotHint+'<\/div>':''}` : ''}\n    ${future.length ? `<div class=\"openpick\">\n      <div class=\"opl\">\ud83d\udcc5 ${t.openLabel}<span class=\"oph\">${t.openHint}<\/span><\/div>\n      <div class=\"pickrow\">\n        <select id=\"nb-pmonth\"><option value=\"\">${t.pickMonth}<\/option>${pmonths.map(m=>`<option value=\"${m}\" ${pickMonth===m?'selected':''}>${monthName(m)}<\/option>`).join(\"\")}<\/select>\n        <select id=\"nb-pday\" ${pickMonth?'':'disabled'}><option value=\"\">${t.pickDay}<\/option>${pdays.map(d=>`<option value=\"${d}\">${fmtDate(d)}<\/option>`).join(\"\")}<\/select>\n      <\/div>\n      ${openMsg?'<div style=\"font-size:12px;color:var(--coral);margin-top:6px\">'+openMsg+'<\/div>':''}\n      ${selOpen.length?'<div class=\"daychips\">'+selOpen.map(s=>{const ord=st.sel.indexOf(s.id)+1;return '<span class=\"daychip\"><span class=\"ord2\">'+ord+'<\/span>'+fmtDate(s.slot_date)+' <span class=\"dcf\">('+t.openFollows+')<\/span><button class=\"dcx\" data-rmopen=\"'+s.id+'\">\u2715<\/button><\/span>';}).join(\"\")+'<\/div>':''}\n    <\/div>` : ''}\n    <div class=\"askbox\">${t.askNote}<div class=\"askbtns\"><a class=\"askbtn\" href=\"https:\/\/wa.me\/4915678730151?text=${encodeURIComponent(t.waMsg)}\" target=\"_blank\" rel=\"noopener\">\ud83d\udcac ${t.askBtn}<\/a><a class=\"askbtn mail\" href=\"mailto:info@nalusurf.com\">\u2709\ufe0f ${t.askMail}<\/a><\/div><\/div>\n    <div class=\"eyebrow\"><span class=\"num\">4<\/span><h3>${t.dataTitle}<\/h3><\/div>\n    <div class=\"grid2\">\n      <label><span>${t.name}<\/span><input type=\"text\" id=\"nb-name\" value=\"${esc(st.name)}\" placeholder=\"${t.namePh}\"><\/label>\n      <label><span>${t.email}<\/span><input type=\"email\" id=\"nb-email\" value=\"${esc(st.email)}\" placeholder=\"${t.emailPh}\"><\/label>\n      <label><span>${t.phone}<\/span><div style=\"display:flex;gap:8px\"><select id=\"nb-dial\" style=\"flex:0 0 auto;width:auto;border:1px solid var(--line);border-radius:12px;padding:10px 8px;font-size:14px;color:var(--ink);background:#fff\">${DIALS.map(c=>`<option value=\"${c[1]}\" ${st.dial===c[1]?'selected':''}>${c[0]} ${c[1]}<\/option>`).join(\"\")}<option value=\"\" ${st.dial===''?'selected':''}>\ud83c\udf0d andere \u00b7 other<\/option><\/select><input type=\"tel\" id=\"nb-phone\" value=\"${esc(st.phone)}\" placeholder=\"171 2345678\" style=\"flex:1 1 auto\"><\/div><\/label>\n    <\/div>\n    <div class=\"kids\">\n      <div class=\"kh\"><span>\ud83d\ude90 ${t.pickupQ}<\/span><button class=\"toggle ${st.pickup?'on':''}\" id=\"nb-pickuptoggle\"><span class=\"knob\"><\/span><\/button><\/div>\n      ${st.pickup?`<label class=\"ages\" style=\"display:block\"><span style=\"font-size:12px;font-weight:600;color:var(--deep);display:block;margin-bottom:4px\">${t.pickupWhere}<\/span><input type=\"text\" id=\"nb-acc\" value=\"${esc(st.acc)}\" placeholder=\"${t.pickupPh}\"><\/label>`:''}\n    <\/div>\n    <div class=\"kids\">\n      <div class=\"kh\"><span>\ud83d\udc76 ${t.kidsQ}<\/span><button class=\"toggle ${st.hasKids?'on':''}\" id=\"nb-kidtoggle\"><span class=\"knob\"><\/span><\/button><\/div>\n      ${st.hasKids?`<div class=\"ages\"><p class=\"sub\" style=\"margin-left:0\">${t.kidsNote}<\/p>${st.ages.map((a,i)=>`<span class=\"ageitem\"><input type=\"number\" min=\"1\" max=\"99\" value=\"${a}\" placeholder=\"${t.agePh}\" data-age=\"${i}\">${st.ages.length>1?`<button class=\"rm\" data-rmage=\"${i}\">\u2715<\/button>`:''}<\/span>`).join(\"\")}<button class=\"addkid\" id=\"nb-addkid\">${t.addKid}<\/button>${st.ages.some(a=>a!==\"\"&&Number(a)<10)?'<p style=\"font-size:12px;color:var(--coral);margin-top:8px\">'+t.under13+'<\/p>':''}<\/div>`:''}\n    <\/div>\n    <label style=\"display:block;margin-bottom:24px\"><span>${t.notesLabel}<\/span><textarea id=\"nb-notes\" rows=\"2\" placeholder=\"${esc(t.notesPh)}\" style=\"width:100%;border:1px solid var(--line);border-radius:12px;padding:10px 14px;font-size:14px;color:var(--ink);outline:none;background:#fff;font-family:inherit;resize:vertical\">${esc(st.notes)}<\/textarea><\/label>\n    ${st.error?'<div class=\"err\" id=\"nb-err\">\u26a0 '+st.error+'<\/div>':''}\n    <div class=\"summary\">\n      <div><div class=\"meta\">${P.days} ${dayW(P.days)} \u00b7 ${st.parts} ${persW(st.parts)}${save>0?' \u00b7 <span class=\"save\">'+t.save+' '+save+' \u20ac<\/span>':''}<\/div><div class=\"total\">${total} \u20ac<\/div><div class=\"pay\">${t.pay}<\/div><\/div>\n      <button class=\"bookbtn\" id=\"nb-bookbtn\" ${st.submitting?'disabled':''}>${st.submitting?'\u2026':t.book}<\/button>\n    <\/div>\n    ${st.sel.length===0?'<p class=\"hint\">'+t.pickOne+'<\/p>':(need>1&&st.sel.length<need?'<p class=\"hint\">\u2139\ufe0f '+t.remaining1+' '+(need-st.sel.length)+' '+t.remaining2+'<\/p>':'')}\n  <\/div>`;\n  app.querySelectorAll(\"[data-pkg]\").forEach(b=>b.onclick=()=>{st.pkgDays=+b.dataset.pkg;st.sel=[];openMsg=\"\";slotHint=\"\";render();});\n  app.querySelectorAll(\"[data-step]\").forEach(b=>b.onclick=()=>{st.parts=Math.min(MAX_SEATS,Math.max(1,st.parts+ +b.dataset.step));st.sel=[];openMsg=\"\";slotHint=\"\";render();});\n  app.querySelectorAll(\"[data-slot]\").forEach(b=>b.onclick=()=>toggleSlot(+b.dataset.slot));\n  const pm=document.getElementById(\"nb-pmonth\"); if(pm) pm.onchange=()=>{ pickMonth=pm.value; openMsg=\"\"; slotHint=\"\"; render(); };\n  const pd=document.getElementById(\"nb-pday\"); if(pd) pd.onchange=()=>{ if(pd.value) addOpenDay(pd.value); };\n  app.querySelectorAll(\"[data-rmopen]\").forEach(b=>b.onclick=()=>{ openMsg=\"\"; slotHint=\"\"; if(st.pkgDays>1){ st.sel=[]; } else { const id=+b.dataset.rmopen; const i=st.sel.indexOf(id); if(i>=0) st.sel.splice(i,1); } render(); });\n  bind(\"nb-name\",\"name\");bind(\"nb-email\",\"email\");bind(\"nb-phone\",\"phone\");bind(\"nb-acc\",\"acc\");bind(\"nb-notes\",\"notes\");\n  const dialSel=document.getElementById(\"nb-dial\"); if(dialSel) dialSel.onchange=(e)=>{ st.dial=e.target.value; const ph=document.getElementById(\"nb-phone\"); if(ph) ph.placeholder = e.target.value===\"\" ? \"+55 11 912345678\" : \"171 2345678\"; };\n  const pt=document.getElementById(\"nb-pickuptoggle\"); if(pt) pt.onclick=()=>{st.pickup=!st.pickup;if(!st.pickup)st.acc=\"\";render();};\n  const kt=document.getElementById(\"nb-kidtoggle\"); if(kt) kt.onclick=()=>{st.hasKids=!st.hasKids;if(st.hasKids&&st.ages.length===0)st.ages=[\"\"];render();};\n  const ak=document.getElementById(\"nb-addkid\"); if(ak) ak.onclick=()=>{st.ages.push(\"\");render();};\n  app.querySelectorAll(\"[data-age]\").forEach(inp=>inp.oninput=()=>{st.ages[+inp.dataset.age]=inp.value;updateButton();});\n  app.querySelectorAll(\"[data-rmage]\").forEach(b=>b.onclick=()=>{st.ages.splice(+b.dataset.rmage,1);render();});\n  const bb=document.getElementById(\"nb-bookbtn\"); if(bb) bb.onclick=handleBook;\n}\nfunction bind(id,key){ const el=document.getElementById(id); if(el) el.oninput=()=>{st[key]=el.value;updateButton();}; }\nfunction computeCanSubmit(){\n  const validEmail=\/^[^\\s@]+@[^\\s@]+\\.[A-Za-z]{2,}$\/.test(st.email.trim());\n  const pickupOk=!st.pickup || st.acc.trim()!==\"\";\n  const kidsOk=!st.hasKids || st.ages.some(a=>a!==\"\");\n  const allCap=st.sel.every(id=>{const s=slots.find(x=>x.id===id); return s && (s.capacity-s.booked_count)>=st.parts;});\n  return st.sel.length>=1 && st.sel.length<=st.pkgDays && allCap && st.name.trim() && validEmail && st.phone.trim() && pickupOk && kidsOk && !st.submitting;\n}\nfunction updateButton(){ const bb=document.getElementById(\"nb-bookbtn\"); if(bb) bb.disabled=!!st.submitting; }\nfunction validateForm(){\n  const t=L(); const miss=[];\n  if(st.sel.length<1) miss.push(t.rDate);\n  if(!st.name.trim()) miss.push(t.name.replace(\/\\s*\\*\/,\"\"));\n  if(!\/^[^\\s@]+@[^\\s@]+\\.[A-Za-z]{2,}$\/.test(st.email.trim())) miss.push(t.email.replace(\/\\s*\\*\/,\"\"));\n  if(!st.phone.trim()) miss.push(t.phone.replace(\/\\s*\\*\/,\"\"));\n  if(st.pickup && !st.acc.trim()) miss.push(t.pickupWhere);\n  if(st.hasKids && !st.ages.some(a=>a!==\"\")) miss.push(t.agePh);\n  return miss;\n}\nfunction handleBook(){\n  const t=L();\n  const em=st.email.trim();\n  if(em && !\/^[^\\s@]+@[^\\s@]+\\.[A-Za-z]{2,}$\/.test(em)){\n    st.error=(t.emailInvalid||\"Please enter a valid email address.\");\n    render();\n    const e=document.getElementById(\"nb-err\"); if(e&&e.scrollIntoView) e.scrollIntoView({behavior:\"smooth\",block:\"center\"});\n    return;\n  }\n  const miss=validateForm();\n  if(miss.length){\n    st.error=L().fillReq+\" \"+miss.join(\", \");\n    render();\n    const e=document.getElementById(\"nb-err\"); if(e&&e.scrollIntoView) e.scrollIntoView({behavior:\"smooth\",block:\"center\"});\n    return;\n  }\n  submit();\n}\nfunction esc(s){ return (s||\"\").replace(\/\"\/g,\"&quot;\"); }\n\nasync function submit(){\n  const P=pkg(); const chosen=selSlots(); const t=L();\n  st.submitting=true; st.error=null; render();\n  const body={ slot_id:st.sel[0], slot_ids:st.sel, package_days:P.days, participants:st.parts, total_price:P.price*st.parts,\n    customer_name:st.name.trim(), customer_email:st.email.trim(), customer_phone:((st.dial?st.dial+\" \":\"\")+st.phone.trim()).trim(),\n    accommodation:st.pickup ? (st.acc.trim()||null) : null,\n    pickup: st.pickup ? \"Ja\" : \"Nein\",\n    has_children:st.hasKids, children_ages: st.hasKids ? st.ages.filter(a=>a!==\"\").map(Number) : [], note: st.notes.trim()||null, lang: st.lang, source:\"online\" };\n  try{\n    const res=await fetch(SUPABASE_URL+\"\/rest\/v1\/bookings\",{method:\"POST\",headers:{...H,\"Content-Type\":\"application\/json\",Prefer:\"return=minimal\"},body:JSON.stringify(body)});\n    if(!res.ok){ let m=t.failErr; try{const j=await res.json(); if(j.message&&j.message.includes(\"freie Plaetze\")) m=t.soldoutErr; else if(j.message) m=j.message;}catch(e){} throw new Error(m); }\n    st.done={ package_days:P.days, participants:st.parts, total_price:P.price*st.parts, pickup:st.pickup, pickupWhere:st.acc.trim(), has_children:st.hasKids, children_ages: st.hasKids ? st.ages.filter(a=>a!==\"\").map(Number) : [], days: chosen.map(s=>({date:s.slot_date,time:s.slot_time})) };\n    await load();\n  }catch(e){ st.error=e.message; }\n  st.submitting=false; render();\n}\nfunction renderDone(){\n  const d=st.done, t=L();\n  const dayRows = d.days.map((x,i)=>`<div class=\"r\"><span class=\"l\">${d.days.length>1?t.rDay+' '+(i+1):t.rDate}<\/span><span class=\"v\">${fmtDate(x.date)}${x.time?' \u00b7 '+fmtTime(x.time)+t.timeSuffix:' \u00b7 '+t.openFollows}<\/span><\/div>`).join(\"\");\n  app.innerHTML=`<div class=\"done\"><div class=\"check\">\u2705<\/div><h2>${t.doneTitle}<\/h2><p>${t.doneText}<\/p>\n    <p style=\"font-size:13px;color:#8a8470;margin:-4px 0 4px\">\ud83d\udce9 ${t.spamHint}<\/p>\n    <div class=\"recap\">\n      <div class=\"r\"><span class=\"l\">${t.rPackage}<\/span><span class=\"v\">${d.package_days} ${dayW(d.package_days)}<\/span><\/div>\n      <div class=\"r\"><span class=\"l\">${t.rPeople}<\/span><span class=\"v\">${d.participants}<\/span><\/div>\n      ${dayRows}\n      ${d.package_days>d.days.length?'<div class=\"r\"><span class=\"l\">'+t.rMore+'<\/span><span class=\"v\">'+(d.package_days-d.days.length)+' \u00b7 '+t.rMoreVal+'<\/span><\/div>':''}\n      ${d.pickup?'<div class=\"r\"><span class=\"l\">'+t.pickupQ+'<\/span><span class=\"v\">'+(d.pickupWhere||'Ja')+'<\/span><\/div>':''}\n      ${d.has_children&&d.children_ages.length?'<div class=\"r\"><span class=\"l\">'+t.rKids+'<\/span><span class=\"v\">'+d.children_ages.join(\", \")+' J.<\/span><\/div>':''}\n      <hr><div class=\"r\"><span class=\"l\">${t.rTotal}<\/span><span class=\"v b\">${d.total_price} \u20ac<\/span><\/div>\n    <\/div>\n    <button class=\"newbtn\" id=\"nb-newbtn\">${t.newBooking}<\/button><\/div>`;\n  document.getElementById(\"nb-newbtn\").onclick=()=>{ const lang=st.lang; st={lang:lang,pkgDays:1,parts:1,sel:[],name:\"\",email:\"\",phone:\"\",dial:defaultDial(lang),acc:\"\",notes:\"\",pickup:false,hasKids:false,ages:[\"\"],submitting:false,error:null,done:null}; render(); };\n  if(app&&app.scrollIntoView) app.scrollIntoView({behavior:\"smooth\",block:\"start\"});\n}\nload();\n})();\n<\/script>\n\t\t<\/div>\n\t<\/div>\n<div class=\"divider-wrap\" data-alignment=\"default\"><div style=\"height: 20px;\" class=\"divider\"><\/div><\/div><div class=\"divider-wrap\" data-alignment=\"default\"><div style=\"height: 25px;\" class=\"divider\"><\/div><\/div>\n\t\t\t<\/div> \n\t\t<\/div>\n\t<\/div> \n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"Surfkurs Buchung Surfkurs buchen L\u00e4dt\u2026 Zahlung vor Ort in bar","protected":false},"author":2,"featured_media":0,"parent":6717,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6702","page","type-page","status-publish"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.0 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Nalusurf Surfschool Fuerteventura - Surfkurs buchen<\/title>\n<meta name=\"description\" content=\"Buche deinen Surfkurs einfach und schnell. W\u00e4hle deinen Wunschtermin f\u00fcr die besten Bedingungen zum Surfen aus.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nalusurf.de\/cs\/rezervace\/rezervace-kurzu-surfovani\/\" \/>\n<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Buchung Surfkurs\" \/>\n<meta property=\"og:description\" content=\"Buche deinen Surfkurs einfach und schnell. W\u00e4hle deinen Wunschtermin f\u00fcr die besten Bedingungen zum Surfen aus.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nalusurf.de\/cs\/rezervace\/rezervace-kurzu-surfovani\/\" \/>\n<meta property=\"og:site_name\" content=\"Nalusurf Surfschool &amp; Surfcamp Fuerteventura\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/nalusurfsurfcamp\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-24T09:22:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nalusurf.de\/wp-content\/uploads\/2025\/07\/IMG_0508-Kopie.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1814\" \/>\n\t<meta property=\"og:image:height\" content=\"1361\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Odhadovan\u00e1 doba \u010dten\u00ed\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuta\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/nalusurf.de\\\/buchung\\\/buchung-surfkurs\\\/\",\"url\":\"https:\\\/\\\/nalusurf.de\\\/buchung\\\/buchung-surfkurs\\\/\",\"name\":\"Nalusurf Surfschool Fuerteventura - Surfkurs buchen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nalusurf.de\\\/#website\"},\"datePublished\":\"2017-09-14T15:54:15+00:00\",\"dateModified\":\"2026-07-24T09:22:59+00:00\",\"description\":\"Buche deinen Surfkurs einfach und schnell. W\u00e4hle deinen Wunschtermin f\u00fcr die besten Bedingungen zum Surfen aus.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nalusurf.de\\\/buchung\\\/buchung-surfkurs\\\/#breadcrumb\"},\"inLanguage\":\"cs\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nalusurf.de\\\/buchung\\\/buchung-surfkurs\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nalusurf.de\\\/buchung\\\/buchung-surfkurs\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/nalusurf.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Buchung\",\"item\":\"https:\\\/\\\/nalusurf.de\\\/buchung\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Buchung Surfkurs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/nalusurf.de\\\/#website\",\"url\":\"https:\\\/\\\/nalusurf.de\\\/\",\"name\":\"Nalusurf Surfschool & Surfcamp Fuerteventura\",\"description\":\"Surfen auf Fuerteventura\",\"publisher\":{\"@id\":\"https:\\\/\\\/nalusurf.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/nalusurf.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"cs\"},{\"@type\":[\"Organization\",\"Place\"],\"@id\":\"https:\\\/\\\/nalusurf.de\\\/#organization\",\"name\":\"Nalusurf Surfschool & Surfcamp Fuerteventura\",\"url\":\"https:\\\/\\\/nalusurf.de\\\/\",\"logo\":{\"@id\":\"https:\\\/\\\/nalusurf.de\\\/buchung\\\/buchung-surfkurs\\\/#local-main-organization-logo\"},\"image\":{\"@id\":\"https:\\\/\\\/nalusurf.de\\\/buchung\\\/buchung-surfkurs\\\/#local-main-organization-logo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/nalusurfsurfcamp\\\/\",\"https:\\\/\\\/www.instagram.com\\\/nalusurf_fuerteventura\\\/\"],\"address\":{\"@id\":\"https:\\\/\\\/nalusurf.de\\\/buchung\\\/buchung-surfkurs\\\/#local-main-place-address\"},\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":\"28.2127716\",\"longitude\":\"-14.2204954\"},\"telephone\":[\"+4915678730151\"],\"contactPoint\":{\"@type\":\"ContactPoint\",\"telephone\":\"+4915678730151\",\"email\":\"info@nalusurf.com\"},\"openingHoursSpecification\":[{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],\"opens\":\"09:00\",\"closes\":\"20:00\"},{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Sunday\"],\"opens\":\"00:00\",\"closes\":\"00:00\"}],\"email\":\"info@nalusurf.com\",\"areaServed\":\"Fuerteventura\",\"taxID\":\"X3729459G\"},{\"@type\":\"PostalAddress\",\"@id\":\"https:\\\/\\\/nalusurf.de\\\/buchung\\\/buchung-surfkurs\\\/#local-main-place-address\",\"streetAddress\":\"Avenida del Istmo 33\",\"addressLocality\":\"La Pared\",\"postalCode\":\"35627\",\"addressRegion\":\"Las Palmas\",\"addressCountry\":\"ES\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"cs\",\"@id\":\"https:\\\/\\\/nalusurf.de\\\/buchung\\\/buchung-surfkurs\\\/#local-main-organization-logo\",\"url\":\"https:\\\/\\\/nalusurf.de\\\/wp-content\\\/uploads\\\/2017\\\/08\\\/logo_neu.png\",\"contentUrl\":\"https:\\\/\\\/nalusurf.de\\\/wp-content\\\/uploads\\\/2017\\\/08\\\/logo_neu.png\",\"width\":736,\"height\":266,\"caption\":\"Nalusurf Surfschool & Surfcamp Fuerteventura\"}]}<\/script>\n<meta name=\"geo.placename\" content=\"La Pared\" \/>\n<meta name=\"geo.position\" content=\"28.2127716;-14.2204954\" \/>\n<meta name=\"geo.region\" content=\"\u0160pan\u011blsko\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Nalusurf Surfschool Fuerteventura \u2013 Rezervace kurzu surfov\u00e1n\u00ed","description":"Zarezervuj si kurz surfov\u00e1n\u00ed snadno a rychle. Vyber si term\u00edn, kter\u00fd ti vyhovuje, abys m\u011bl ty nejlep\u0161\u00ed podm\u00ednky pro surfov\u00e1n\u00ed.","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:\/\/nalusurf.de\/cs\/rezervace\/rezervace-kurzu-surfovani\/","og_locale":"cs_CZ","og_type":"article","og_title":"Buchung Surfkurs","og_description":"Buche deinen Surfkurs einfach und schnell. W\u00e4hle deinen Wunschtermin f\u00fcr die besten Bedingungen zum Surfen aus.","og_url":"https:\/\/nalusurf.de\/cs\/rezervace\/rezervace-kurzu-surfovani\/","og_site_name":"Nalusurf Surfschool &amp; Surfcamp Fuerteventura","article_publisher":"https:\/\/www.facebook.com\/nalusurfsurfcamp\/","article_modified_time":"2026-07-24T09:22:59+00:00","og_image":[{"width":1814,"height":1361,"url":"https:\/\/nalusurf.de\/wp-content\/uploads\/2025\/07\/IMG_0508-Kopie.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Odhadovan\u00e1 doba \u010dten\u00ed":"1 minuta"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/nalusurf.de\/buchung\/buchung-surfkurs\/","url":"https:\/\/nalusurf.de\/buchung\/buchung-surfkurs\/","name":"Nalusurf Surfschool Fuerteventura \u2013 Rezervace kurzu surfov\u00e1n\u00ed","isPartOf":{"@id":"https:\/\/nalusurf.de\/#website"},"datePublished":"2017-09-14T15:54:15+00:00","dateModified":"2026-07-24T09:22:59+00:00","description":"Zarezervuj si kurz surfov\u00e1n\u00ed snadno a rychle. Vyber si term\u00edn, kter\u00fd ti vyhovuje, abys m\u011bl ty nejlep\u0161\u00ed podm\u00ednky pro surfov\u00e1n\u00ed.","breadcrumb":{"@id":"https:\/\/nalusurf.de\/buchung\/buchung-surfkurs\/#breadcrumb"},"inLanguage":"cs","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nalusurf.de\/buchung\/buchung-surfkurs\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/nalusurf.de\/buchung\/buchung-surfkurs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/nalusurf.de\/"},{"@type":"ListItem","position":2,"name":"Buchung","item":"https:\/\/nalusurf.de\/buchung\/"},{"@type":"ListItem","position":3,"name":"Buchung Surfkurs"}]},{"@type":"WebSite","@id":"https:\/\/nalusurf.de\/#website","url":"https:\/\/nalusurf.de\/","name":"Nalusurf \u2013 \u0161kola surfov\u00e1n\u00ed a surfov\u00fd t\u00e1bor na Fuerteventu\u0159e","description":"Surfov\u00e1n\u00ed na Fuerteventu\u0159e","publisher":{"@id":"https:\/\/nalusurf.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nalusurf.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"cs"},{"@type":["Organization","Place"],"@id":"https:\/\/nalusurf.de\/#organization","name":"Nalusurf \u2013 \u0161kola surfov\u00e1n\u00ed a surfov\u00fd t\u00e1bor na Fuerteventu\u0159e","url":"https:\/\/nalusurf.de\/","logo":{"@id":"https:\/\/nalusurf.de\/buchung\/buchung-surfkurs\/#local-main-organization-logo"},"image":{"@id":"https:\/\/nalusurf.de\/buchung\/buchung-surfkurs\/#local-main-organization-logo"},"sameAs":["https:\/\/www.facebook.com\/nalusurfsurfcamp\/","https:\/\/www.instagram.com\/nalusurf_fuerteventura\/"],"address":{"@id":"https:\/\/nalusurf.de\/buchung\/buchung-surfkurs\/#local-main-place-address"},"geo":{"@type":"GeoCoordinates","latitude":"28.2127716","longitude":"-14.2204954"},"telephone":["+4915678730151"],"contactPoint":{"@type":"ContactPoint","telephone":"+4915678730151","email":"info@nalusurf.com"},"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"opens":"09:00","closes":"20:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":["Sunday"],"opens":"00:00","closes":"00:00"}],"email":"info@nalusurf.com","areaServed":"Fuerteventura","taxID":"X3729459G"},{"@type":"PostalAddress","@id":"https:\/\/nalusurf.de\/buchung\/buchung-surfkurs\/#local-main-place-address","streetAddress":"Avenida del Istmo 33","addressLocality":"La Pared","postalCode":"35627","addressRegion":"Las Palmas","addressCountry":"ES"},{"@type":"ImageObject","inLanguage":"cs","@id":"https:\/\/nalusurf.de\/buchung\/buchung-surfkurs\/#local-main-organization-logo","url":"https:\/\/nalusurf.de\/wp-content\/uploads\/2017\/08\/logo_neu.png","contentUrl":"https:\/\/nalusurf.de\/wp-content\/uploads\/2017\/08\/logo_neu.png","width":736,"height":266,"caption":"Nalusurf Surfschool & Surfcamp Fuerteventura"}]},"geo.placename":"La Pared","geo.position":{"lat":"28.2127716","long":"-14.2204954"},"geo.region":"\u0160pan\u011blsko"},"_links":{"self":[{"href":"https:\/\/nalusurf.de\/cs\/wp-json\/wp\/v2\/pages\/6702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nalusurf.de\/cs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nalusurf.de\/cs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nalusurf.de\/cs\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nalusurf.de\/cs\/wp-json\/wp\/v2\/comments?post=6702"}],"version-history":[{"count":53,"href":"https:\/\/nalusurf.de\/cs\/wp-json\/wp\/v2\/pages\/6702\/revisions"}],"predecessor-version":[{"id":13932,"href":"https:\/\/nalusurf.de\/cs\/wp-json\/wp\/v2\/pages\/6702\/revisions\/13932"}],"up":[{"embeddable":true,"href":"https:\/\/nalusurf.de\/cs\/wp-json\/wp\/v2\/pages\/6717"}],"wp:attachment":[{"href":"https:\/\/nalusurf.de\/cs\/wp-json\/wp\/v2\/media?parent=6702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}