{"id":14980,"date":"2026-08-15T21:51:18","date_gmt":"2026-08-15T19:51:18","guid":{"rendered":"https:\/\/caramba.lu\/?page_id=14980"},"modified":"2026-08-15T21:52:17","modified_gmt":"2026-08-15T19:52:17","slug":"formulaire-scolaires","status":"publish","type":"page","link":"https:\/\/caramba.lu\/index.php\/formulaire-scolaires\/","title":{"rendered":"Formulaire scolaires"},"content":{"rendered":"\t\t<style>\n\t\t\t.caramba-school-form-wrap, .caramba-school-form-wrap * { box-sizing: border-box; }\n\t\t\t.caramba-school-form-wrap { max-width: 780px; margin: 0 auto; font-family: inherit; }\n\t\t\t.caramba-school-form-wrap h3 {\n\t\t\t\tmargin: 2.2rem 0 1rem; padding-bottom: .5rem;\n\t\t\t\tborder-bottom: 2px solid #c9a227; font-size: 1.15rem; letter-spacing: .02em;\n\t\t\t\tcolor: #1b1f27;\n\t\t\t}\n\t\t\t.caramba-school-form-wrap h3:first-of-type { margin-top: 0; }\n\t\t\t.caramba-form-notice {\n\t\t\t\tpadding: .8rem 1rem; border-radius: 8px; margin: .6rem 0 1.2rem;\n\t\t\t\tfont-size: .92rem; line-height: 1.5;\n\t\t\t}\n\t\t\t.caramba-form-notice { background: #eef3fb; border: 1px solid #c9d8ef; color: #1c3f66; }\n\t\t\t.caramba-form-success { background: #e9f7ef; border-color: #b9e3c9; color: #1e6b3e; }\n\t\t\t.caramba-form-error { background: #fdecec; border-color: #f3bcbc; color: #8a1f1f; }\n\n\t\t\t.caramba-field { display: flex; align-items: center; gap: .7rem; margin-bottom: 1rem; }\n\t\t\t.caramba-field > label {\n\t\t\t\tflex: 0 0 auto; min-width: 150px; max-width: 220px; text-align: right;\n\t\t\t\tfont-weight: 600; font-size: .88rem; color: #2c2f36;\n\t\t\t}\n\t\t\t.caramba-field > input, .caramba-field > select {\n\t\t\t\tflex: 1 1 auto; min-width: 0; width: 100%; max-width: 100%; padding: .55rem .75rem;\n\t\t\t\tborder: 1px solid #d6d6d6; border-radius: 8px;\n\t\t\t\tfont-size: 16px; \/* stays >= 16px on purpose -- below that, iOS Safari\n\t\t\t\t\tzooms the whole page in on focus, which is what \"champs \u00e9normes\n\t\t\t\t\tsur mobile\" actually was *\/\n\t\t\t\ttransition: border-color .15s, box-shadow .15s;\n\t\t\t}\n\t\t\t\/* Forces field height explicitly, high specificity + !important --\n\t\t\t   the reported \"5cm tall on Chrome mobile\" almost certainly means\n\t\t\t   this site's theme has its own global input\/select sizing rule\n\t\t\t   that was winning over the block above on some input types (date\/\n\t\t\t   time in particular render very differently across mobile\n\t\t\t   browsers, so a theme rule matching input[type=...] more broadly\n\t\t\t   than our own class selector could out-specificity it). This\n\t\t\t   targets every field type explicitly, scoped to this form only. *\/\n\t\t\t.caramba-school-form-wrap input[type=\"text\"],\n\t\t\t.caramba-school-form-wrap input[type=\"email\"],\n\t\t\t.caramba-school-form-wrap input[type=\"tel\"],\n\t\t\t.caramba-school-form-wrap input[type=\"number\"],\n\t\t\t.caramba-school-form-wrap input[type=\"date\"],\n\t\t\t.caramba-school-form-wrap input[type=\"time\"],\n\t\t\t.caramba-school-form-wrap select {\n\t\t\t\theight: 44px !important;\n\t\t\t\tmin-height: 44px !important;\n\t\t\t\tmax-height: 44px !important;\n\t\t\t\tline-height: 1.2 !important;\n\t\t\t\tpadding: 0 .75rem !important;\n\t\t\t\tbox-sizing: border-box !important;\n\t\t\t\tfont-size: 16px !important;\n\t\t\t}\n\t\t\t\/* input[type=date]\/[type=time] specifically: plain height alone\n\t\t\t   doesn't reliably constrain these on Chrome -- their internal\n\t\t\t   segments (hour\/minute, spinner arrows, clear button) are native\n\t\t\t   sub-elements that can ignore the outer box's height unless the\n\t\t\t   native appearance itself is reset first. Confirmed via\n\t\t\t   DevTools computed box model: padding was already correctly\n\t\t\t   0\/12px (our rule), but content height was still 171px --\n\t\t\t   appearance was the missing piece, not a specificity fight. *\/\n\t\t\t.caramba-school-form-wrap input[type=\"date\"],\n\t\t\t.caramba-school-form-wrap input[type=\"time\"] {\n\t\t\t\t-webkit-appearance: none !important;\n\t\t\t\tappearance: none !important;\n\t\t\t}\n\t\t\t.caramba-school-form-wrap input[type=\"date\"]::-webkit-datetime-edit,\n\t\t\t.caramba-school-form-wrap input[type=\"time\"]::-webkit-datetime-edit {\n\t\t\t\tpadding: 0 !important; line-height: 44px !important;\n\t\t\t}\n\t\t\t.caramba-school-form-wrap input[type=\"date\"]::-webkit-inner-spin-button,\n\t\t\t.caramba-school-form-wrap input[type=\"time\"]::-webkit-inner-spin-button {\n\t\t\t\theight: 24px !important;\n\t\t\t}\n\t\t\t.caramba-field > input:focus, .caramba-field > select:focus {\n\t\t\t\toutline: none; border-color: #c9a227; box-shadow: 0 0 0 3px rgba(201,162,39,.18);\n\t\t\t}\n\t\t\t.caramba-row { display: flex; gap: 1rem; flex-wrap: wrap; align-items: flex-start; }\n\t\t\t.caramba-row .caramba-field {\n\t\t\t\tflex: 1 1 200px; min-width: 0; \/* min-width:0 overrides the flex default of\n\t\t\t\t\tmin-width:auto, which otherwise blocks a field from shrinking below its\n\t\t\t\t\tlabel's natural width -- without this, 3 fields' combined minimum content\n\t\t\t\t\twidth exceeds the row's available space and they silently wrap instead of\n\t\t\t\t\tactually staying on one line. *\/\n\t\t\t}\n\t\t\t.caramba-row .caramba-field > label { min-width: 90px; max-width: 160px; font-size: .82rem; }\n\t\t\t.caramba-row .caramba-field.caramba-field-narrow { flex: 0 1 200px; } \/* widened again -- 170px still cramped for a full phone number *\/\n\t\t\t.caramba-row .caramba-field.caramba-field-wide { flex: 2 1 260px; } \/* grows twice as eagerly as a plain row field, e.g. a name field next to Email\/T\u00e9l\u00e9phone *\/\n\n\t\t\t@media (max-width: 680px) {\n\t\t\t\t.caramba-field { flex-direction: column; align-items: stretch; gap: .3rem; margin-bottom: .7rem; }\n\t\t\t\t.caramba-field > label, .caramba-row .caramba-field > label { text-align: left; min-width: 0; max-width: none; font-size: .88rem; }\n\t\t\t\t.caramba-row {\n\t\t\t\t\tflex-direction: column; gap: 0;\n\t\t\t\t\talign-items: stretch; \/* overrides the desktop-only align-items:flex-start\n\t\t\t\t\t\tabove -- on mobile .caramba-row switches to flex-direction:column,\n\t\t\t\t\t\twhere align-items controls WIDTH not height, so leaving flex-start\n\t\t\t\t\t\there (meant only for the desktop row-height fix) was shrinking every\n\t\t\t\t\t\tfield down to its own content width instead of filling the container. *\/\n\t\t\t\t}\n\t\t\t\t.caramba-row .caramba-field {\n\t\t\t\t\tflex-basis: auto; \/* the same bug, but on the GENERAL rule (flex:1 1 200px\n\t\t\t\t\t\tabove) that applies to EVERY field inside a .caramba-row, not just the\n\t\t\t\t\t\tnarrow ones below -- since nearly every field in this form lives inside\n\t\t\t\t\t\ta .caramba-row, this was the actual widespread cause of \"most fields\"\n\t\t\t\t\t\thaving excessive vertical space on mobile, not just Code postal\/\n\t\t\t\t\t\tT\u00e9l\u00e9phone\/Version specifically. *\/\n\t\t\t\t}\n\t\t\t\t.caramba-row .caramba-field.caramba-field-narrow {\n\t\t\t\t\tflex-basis: auto; \/* same category of bug as align-items above: this field's\n\t\t\t\t\t\tflex:0 1 140px is meant to narrow its WIDTH on desktop (row direction) --\n\t\t\t\t\t\tflex-basis always applies to the flex container's MAIN axis, which\n\t\t\t\t\t\tbecomes vertical in mobile's column direction, so that same 140px was\n\t\t\t\t\t\tbeing read as a target HEIGHT instead, leaving a large mostly-empty box\n\t\t\t\t\t\taround Code postal\/T\u00e9l\u00e9phone\/Version on mobile. *\/\n\t\t\t\t}\n\t\t\t\t.caramba-row .caramba-field.caramba-field-wide {\n\t\t\t\t\tflex-basis: auto; \/* same reasoning -- caramba-field-wide's own flex:2 1 260px\n\t\t\t\t\t\thas higher specificity than the general .caramba-row .caramba-field\n\t\t\t\t\t\treset above, so it would otherwise still win on mobile too. *\/\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.caramba-checkbox-field { margin-bottom: 1.2rem; font-size: .92rem; }\n\n\t\t\ttable.caramba-pricing-table {\n\t\t\t\twidth: 100%; border-collapse: collapse; margin: .6rem 0 1rem; font-size: .93rem;\n\t\t\t}\n\t\t\ttable.caramba-pricing-table th, table.caramba-pricing-table td {\n\t\t\t\tpadding: .55rem .6rem; border-bottom: 1px solid #eee;\n\t\t\t}\n\t\t\ttable.caramba-pricing-table th { text-align: right; color: #555; font-weight: 600; font-size: .82rem; text-transform: uppercase; letter-spacing: .03em; }\n\t\t\ttable.caramba-pricing-table th:first-child, table.caramba-pricing-table td:first-child { text-align: left; }\n\t\t\ttable.caramba-pricing-table td:not(:first-child) { text-align: right; font-variant-numeric: tabular-nums; }\n\t\t\ttable.caramba-pricing-table input.caramba-qty {\n\t\t\t\twidth: 5em; padding: .35rem .5rem; border: 1px solid #d6d6d6; border-radius: 6px;\n\t\t\t\ttext-align: right; font-variant-numeric: tabular-nums; font-size: 16px;\n\t\t\t}\n\t\t\t.caramba-school-form-wrap table.caramba-pricing-table input.caramba-qty {\n\t\t\t\theight: 40px !important; min-height: 40px !important; max-height: 40px !important;\n\t\t\t\tbox-sizing: border-box !important; font-size: 16px !important;\n\t\t\t}\n\t\t\t.caramba-subtotal-line { text-align: right; font-size: 1rem; margin: .4rem 0 1.6rem; }\n\t\t\t.caramba-subtotal-line strong { font-variant-numeric: tabular-nums; }\n\n\t\t\t.caramba-totals-box {\n\t\t\t\tbackground: #faf8f2; border: 1px solid #ecdfb3; border-radius: 10px;\n\t\t\t\tpadding: 1.1rem 1.3rem; margin-top: 1.2rem;\n\t\t\t}\n\t\t\t.caramba-totals-box p { display: flex; justify-content: space-between; margin: .35rem 0; font-size: .95rem; }\n\t\t\t.caramba-totals-box .caramba-amount-due {\n\t\t\t\tborder-top: 1px solid #ecdfb3; margin-top: .6rem; padding-top: .7rem;\n\t\t\t\tfont-size: 1.25rem; font-weight: 700; color: #1b1f27;\n\t\t\t}\n\t\t\t.caramba-totals-box span { font-variant-numeric: tabular-nums; }\n\n\t\t\t.caramba-submit-row { text-align: right; margin-top: 2rem; }\n\t\t\t.caramba-school-form-wrap button[type=\"submit\"] {\n\t\t\t\tbackground: #1b1f27; color: #fff; border: none; border-radius: 30px;\n\t\t\t\tpadding: .85rem 2.2rem; font-size: 1rem; font-weight: 600; cursor: pointer;\n\t\t\t\ttransition: background .15s, transform .1s;\n\t\t\t}\n\t\t\t.caramba-school-form-wrap button[type=\"submit\"]:hover { background: #c9a227; }\n\t\t\t.caramba-school-form-wrap button[type=\"submit\"]:active { transform: scale(.98); }\n\t\t<\/style>\n\n\t\t<div class=\"caramba-school-form-wrap\">\n\t\t\t\t\n\t\t<form method=\"post\" action=\"https:\/\/caramba.lu\/wp-admin\/admin-post.php\" id=\"caramba-school-form\" lang=\"fr\">\n\t\t\t<input type=\"hidden\" name=\"action\" value=\"caramba_school_submit\">\n\t\t\t<input type=\"hidden\" id=\"caramba_school_nonce\" name=\"caramba_school_nonce\" value=\"50f3b76ec0\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/index.php\/wp-json\/wp\/v2\/pages\/14980\" \/>\t\t\t<input type=\"hidden\" name=\"_redirect\" value=\"https:\/\/caramba.lu\/index.php\/formulaire-scolaires\/\">\n\n\t\t\t<h3>Contact du demandeur<\/h3>\n\t\t\t<div class=\"caramba-field\"><label>\u00c9cole \/ Organisation *<\/label><input type=\"text\" name=\"school_org\" required><\/div>\n\t\t\t<div class=\"caramba-row\">\n\t\t\t\t<div class=\"caramba-field\"><label>Adresse *<\/label><input type=\"text\" name=\"school_address\" required><\/div>\n\t\t\t\t<div class=\"caramba-field caramba-field-narrow\"><label>Code postal *<\/label><input type=\"text\" name=\"school_postal\" required><\/div>\n\t\t\t\t<div class=\"caramba-field\"><label>Localit\u00e9 *<\/label><input type=\"text\" name=\"school_city\" required><\/div>\n\t\t\t<\/div>\n\t\t\t<div class=\"caramba-row\">\n\t\t\t\t<div class=\"caramba-field caramba-field-wide\"><label>Nom *<\/label><input type=\"text\" name=\"contact_name\" required><\/div>\n\t\t\t\t<div class=\"caramba-field\"><label>Email *<\/label><input type=\"email\" name=\"contact_email\" required><\/div>\n\t\t\t\t<div class=\"caramba-field caramba-field-narrow\"><label>T\u00e9l\u00e9phone *<\/label><input type=\"tel\" name=\"contact_phone\" required><\/div>\n\t\t\t<\/div>\n\t\t\t<div class=\"caramba-row\">\n\t\t\t\t<div class=\"caramba-field\"><label>Contact alternatif -- email<\/label><input type=\"email\" name=\"alt_email\"><\/div>\n\t\t\t\t<div class=\"caramba-field caramba-field-narrow\"><label>T\u00e9l\u00e9phone<\/label><input type=\"tel\" name=\"alt_phone\"><\/div>\n\t\t\t<\/div>\n\n\t\t\t<h3>Adresse de facturation<\/h3>\n\t\t\t<p class=\"caramba-checkbox-field\"><label><input type=\"checkbox\" id=\"caramba-same-as-school\"> Identique aux coordonn\u00e9es ci-dessus<\/label><\/p>\n\t\t\t<div class=\"caramba-field\"><label>Organisation *<\/label><input type=\"text\" name=\"billing_org\" required><\/div>\n\t\t\t<div class=\"caramba-row\">\n\t\t\t\t<div class=\"caramba-field\"><label>Adresse *<\/label><input type=\"text\" name=\"billing_address\" required><\/div>\n\t\t\t\t<div class=\"caramba-field caramba-field-narrow\"><label>Code postal *<\/label><input type=\"text\" name=\"billing_postal\" required><\/div>\n\t\t\t\t<div class=\"caramba-field\"><label>Localit\u00e9 *<\/label><input type=\"text\" name=\"billing_city\" required><\/div>\n\t\t\t<\/div>\n\n\t\t\t<h3>S\u00e9ance<\/h3>\n\t\t\t<div class=\"caramba-field\">\n\t\t\t\t<label>Cin\u00e9ma *<\/label>\n\t\t\t\t<select name=\"cinema_id\" id=\"caramba-cinema\" required>\n\t\t\t\t\t<option value=\"\">-- choisir --<\/option>\n\t\t\t\t\t\t\t\t\t\t\t<option value=\"141\">CineKursaal<\/option>\n\t\t\t\t\t\t\t\t\t\t\t<option value=\"14895\">CineSura<\/option>\n\t\t\t\t\t\t\t\t\t\t\t<option value=\"142\">CineWaasserhaus<\/option>\n\t\t\t\t\t\t\t\t\t<\/select>\n\t\t\t<\/div>\n\n\t\t\t<p>\n\t\t\t\t<label><input type=\"radio\" name=\"session_type\" value=\"private\" checked class=\"caramba-session-type\"> S\u00e9ance privatis\u00e9e<\/label>\n\t\t\t\t&nbsp;&nbsp;\n\t\t\t\t<label><input type=\"radio\" name=\"session_type\" value=\"public\" class=\"caramba-session-type\"> S\u00e9ance publique<\/label>\n\t\t\t<\/p>\n\t\t\t<div id=\"caramba-msg-private\" class=\"caramba-form-notice\">Une s\u00e9ance privatis\u00e9e est soumise \u00e0 un montant minimum (voir tarif ci-dessous), ind\u00e9pendamment du nombre de spectateurs.<\/div>\n\t\t\t<div id=\"caramba-msg-public\" class=\"caramba-form-notice\" style=\"display:none;\">Une s\u00e9ance publique n'est possible que les apr\u00e8s-midis de semaine libres d'\u00e9cole (mardi ou jeudi apr\u00e8s-midi en p\u00e9riode scolaire, ou lundi-vendredi pendant les vacances scolaires), et uniquement pour un film \u00e0 l'affiche au moment de la projection. Cette disponibilit\u00e9 sera confirm\u00e9e par nos \u00e9quipes.<\/div>\n\n\t\t\t<div class=\"caramba-row\">\n\t\t\t\t<div class=\"caramba-field\"><label>Date de la s\u00e9ance *<\/label><input type=\"date\" name=\"session_date\" required><\/div>\n\t\t\t\t<div class=\"caramba-field\"><label>Heure d'arriv\u00e9e *<\/label><input type=\"time\" name=\"arrival_time\" required><\/div>\n\t\t\t\t<div class=\"caramba-field\"><label>Heure de la s\u00e9ance *<\/label><input type=\"time\" name=\"session_time\" required><\/div>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"caramba-row\">\n\t\t\t\t<div class=\"caramba-field\"><label>Titre du film *<\/label><input type=\"text\" name=\"film_title\" required><\/div>\n\t\t\t\t<div class=\"caramba-field caramba-field-narrow\">\n\t\t\t\t\t<label>Version *<\/label>\n\t\t\t\t\t<input type=\"text\" name=\"film_version\" list=\"caramba-version-options\" placeholder=\"VF, VO...\" required>\n\t\t\t\t\t<datalist id=\"caramba-version-options\">\n\t\t\t\t\t\t<option value=\"VF\">\n\t\t\t\t\t\t<option value=\"VO\">\n\t\t\t\t\t\t<option value=\"VOST\">\n\t\t\t\t\t\t<option value=\"VA\">\n\t\t\t\t\t<\/datalist>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t<h3>Billets<\/h3>\n\t\t\t<table class=\"caramba-pricing-table\">\n\t\t\t\t<tr><th><\/th><th>Nombre<\/th><th>Prix unitaire<\/th><th>Sous-total<\/th><\/tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Enfants<\/td>\n\t\t\t\t\t<td><input type=\"number\" min=\"0\" name=\"n_children\" value=\"0\" class=\"caramba-qty\"><\/td>\n\t\t\t\t\t<td>6.50 \u20ac<\/td>\n\t\t\t\t\t<td class=\"caramba-line-total\" data-rate=\"6.50\">0.00 \u20ac<\/td>\n\t\t\t\t<\/tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Adultes<\/td>\n\t\t\t\t\t<td><input type=\"number\" min=\"0\" name=\"n_adults\" value=\"0\" class=\"caramba-qty\"><\/td>\n\t\t\t\t\t<td>6.50 \u20ac<\/td>\n\t\t\t\t\t<td class=\"caramba-line-total\" data-rate=\"6.50\">0.00 \u20ac<\/td>\n\t\t\t\t<\/tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Accompagnateurs<br><small>(0 gratuit(s) \/ 0 enfants)<\/small><\/td>\n\t\t\t\t\t<td><input type=\"number\" min=\"0\" name=\"n_accompanists\" value=\"0\" class=\"caramba-qty\" id=\"caramba-n-accompanists\"><\/td>\n\t\t\t\t\t<td>6.50 \u20ac<\/td>\n\t\t\t\t\t<td class=\"caramba-line-total\" data-rate=\"6.50\">0.00 \u20ac<\/td>\n\t\t\t\t<\/tr>\n\t\t\t<\/table>\n\t\t\t<p class=\"caramba-subtotal-line\">Sous-total billets : <strong><span id=\"caramba-ticket-subtotal\">0.00 \u20ac<\/span><\/strong><\/p>\n\n\t\t\t<h3>Confiserie<\/h3>\n\t\t\t<table class=\"caramba-pricing-table\">\n\t\t\t\t<tr><th><\/th><th>Nombre<\/th><th>Prix unitaire<\/th><th>Sous-total<\/th><\/tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Popcorn<\/td>\n\t\t\t\t\t<td><input type=\"number\" min=\"0\" name=\"n_popcorn\" value=\"0\" class=\"caramba-qty\"><\/td>\n\t\t\t\t\t<td>3.50 \u20ac<\/td>\n\t\t\t\t\t<td class=\"caramba-line-total\" data-rate=\"3.50\">0.00 \u20ac<\/td>\n\t\t\t\t<\/tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Boissons<\/td>\n\t\t\t\t\t<td><input type=\"number\" min=\"0\" name=\"n_soft\" value=\"0\" class=\"caramba-qty\"><\/td>\n\t\t\t\t\t<td>3.30 \u20ac<\/td>\n\t\t\t\t\t<td class=\"caramba-line-total\" data-rate=\"3.30\">0.00 \u20ac<\/td>\n\t\t\t\t<\/tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Packages<\/td>\n\t\t\t\t\t<td><input type=\"number\" min=\"0\" name=\"n_package\" value=\"0\" class=\"caramba-qty\"><\/td>\n\t\t\t\t\t<td>6.00 \u20ac<\/td>\n\t\t\t\t\t<td class=\"caramba-line-total\" data-rate=\"6.00\">0.00 \u20ac<\/td>\n\t\t\t\t<\/tr>\n\t\t\t<\/table>\n\t\t\t<p class=\"caramba-subtotal-line\">Sous-total confiserie : <strong><span id=\"caramba-concession-subtotal\">0.00 \u20ac<\/span><\/strong><\/p>\n\n\t\t\t<div class=\"caramba-totals-box\">\n\t\t\t\t<p>Total g\u00e9n\u00e9ral <span id=\"caramba-grand-total\">0.00 \u20ac<\/span><\/p>\n\t\t\t\t<p>Minimum applicable (s\u00e9ance privatis\u00e9e) <span id=\"caramba-minimum\">170.00 \u20ac<\/span><\/p>\n\t\t\t\t<p class=\"caramba-amount-due\">\u00c0 payer <span id=\"caramba-amount-due\">0.00 \u20ac<\/span><\/p>\n\t\t\t<\/div>\n\n\t\t\t<p class=\"caramba-submit-row\"><button type=\"submit\">Envoyer la demande<\/button><\/p>\n\t\t<\/form>\n\t\t<\/div>\n\n\t\t<script>\n\t\t(function() {\n\t\t\tvar form = document.getElementById('caramba-school-form');\n\t\t\tvar minimum = 170;\n\t\t\tvar accompanistRatio = 0;\n\t\t\tvar accompanistRate = 6.5;\n\n\t\t\t\/\/ Native browser validation popups (\"Please fill out this\n\t\t\t\/\/ field\", \"Please include an '@'...\") follow the BROWSER's own\n\t\t\t\/\/ language setting, not this page's French content -- a\n\t\t\t\/\/ visitor with an English browser sees English messages\n\t\t\t\/\/ regardless. Overriding with setCustomValidity() forces\n\t\t\t\/\/ French messages for everyone, independent of browser locale.\n\t\t\tfunction frenchValidationMessage(input) {\n\t\t\t\tvar v = input.validity;\n\t\t\t\tif (v.valueMissing) {\n\t\t\t\t\treturn 'Ce champ est obligatoire.';\n\t\t\t\t}\n\t\t\t\tif (v.typeMismatch) {\n\t\t\t\t\tif (input.type === 'email') { return \"Merci d'indiquer une adresse e-mail valide.\"; }\n\t\t\t\t\treturn 'Format invalide.';\n\t\t\t\t}\n\t\t\t\tif (v.patternMismatch) { return 'Format invalide.'; }\n\t\t\t\tif (v.rangeUnderflow) { return 'Valeur trop basse.'; }\n\t\t\t\tif (v.rangeOverflow) { return 'Valeur trop \u00e9lev\u00e9e.'; }\n\t\t\t\treturn 'Merci de corriger ce champ.';\n\t\t\t}\n\t\t\tform.querySelectorAll('input, select').forEach(function(field) {\n\t\t\t\tfield.addEventListener('invalid', function() {\n\t\t\t\t\tfield.setCustomValidity(frenchValidationMessage(field));\n\t\t\t\t});\n\t\t\t\tfield.addEventListener('input', function() { field.setCustomValidity(''); });\n\t\t\t\tfield.addEventListener('change', function() { field.setCustomValidity(''); });\n\t\t\t});\n\n\t\t\tfunction fmt(n) { return n.toLocaleString('fr-LU', {minimumFractionDigits:2, maximumFractionDigits:2}) + ' \u20ac'; }\n\n\t\t\tfunction recalc() {\n\t\t\t\tvar ticketTotal = 0, concessionTotal = 0;\n\t\t\t\tform.querySelectorAll('.caramba-qty').forEach(function(input) {\n\t\t\t\t\tvar row = input.closest('tr');\n\t\t\t\t\tvar cell = row.querySelector('.caramba-line-total');\n\t\t\t\t\tvar rate = parseFloat(cell.getAttribute('data-rate')) || 0;\n\t\t\t\t\tvar qty = parseInt(input.value, 10) || 0;\n\t\t\t\t\tvar lineTotal;\n\t\t\t\t\tif (input.name === 'n_accompanists') {\n\t\t\t\t\t\tvar children = parseInt(form.querySelector('[name=n_children]').value, 10) || 0;\n\t\t\t\t\t\tvar free = accompanistRatio > 0 ? Math.floor(children \/ accompanistRatio) : 0;\n\t\t\t\t\t\tfree = Math.min(free, qty);\n\t\t\t\t\t\tvar billable = Math.max(0, qty - free);\n\t\t\t\t\t\tlineTotal = billable * rate;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlineTotal = qty * rate;\n\t\t\t\t\t}\n\t\t\t\t\tcell.textContent = fmt(lineTotal);\n\t\t\t\t\tif (['n_children','n_adults','n_accompanists'].indexOf(input.name) !== -1) {\n\t\t\t\t\t\tticketTotal += lineTotal;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconcessionTotal += lineTotal;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdocument.getElementById('caramba-ticket-subtotal').textContent = fmt(ticketTotal);\n\t\t\t\tdocument.getElementById('caramba-concession-subtotal').textContent = fmt(concessionTotal);\n\t\t\t\tvar grandTotal = ticketTotal + concessionTotal;\n\t\t\t\tdocument.getElementById('caramba-grand-total').textContent = fmt(grandTotal);\n\t\t\t\tvar isPrivate = form.querySelector('[name=session_type]:checked').value === 'private';\n\t\t\t\tvar minimumApplied = isPrivate ? minimum : 0;\n\t\t\t\tdocument.getElementById('caramba-amount-due').textContent = fmt(Math.max(grandTotal, minimumApplied));\n\t\t\t}\n\n\t\t\tform.addEventListener('input', recalc);\n\t\t\tform.addEventListener('change', recalc);\n\n\t\t\tform.querySelectorAll('.caramba-session-type').forEach(function(radio) {\n\t\t\t\tradio.addEventListener('change', function() {\n\t\t\t\t\tvar isPrivate = form.querySelector('[name=session_type]:checked').value === 'private';\n\t\t\t\t\tdocument.getElementById('caramba-msg-private').style.display = isPrivate ? '' : 'none';\n\t\t\t\t\tdocument.getElementById('caramba-msg-public').style.display = isPrivate ? 'none' : '';\n\t\t\t\t\trecalc();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tvar sameCheckbox = document.getElementById('caramba-same-as-school');\n\t\t\tsameCheckbox.addEventListener('change', function() {\n\t\t\t\tif (this.checked) {\n\t\t\t\t\tform.querySelector('[name=billing_org]').value = form.querySelector('[name=school_org]').value;\n\t\t\t\t\tform.querySelector('[name=billing_address]').value = form.querySelector('[name=school_address]').value;\n\t\t\t\t\tform.querySelector('[name=billing_postal]').value = form.querySelector('[name=school_postal]').value;\n\t\t\t\t\tform.querySelector('[name=billing_city]').value = form.querySelector('[name=school_city]').value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trecalc();\n\t\t})();\n\t\t<\/script>\n\t\t\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-14980","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/caramba.lu\/index.php\/wp-json\/wp\/v2\/pages\/14980","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/caramba.lu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/caramba.lu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/caramba.lu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/caramba.lu\/index.php\/wp-json\/wp\/v2\/comments?post=14980"}],"version-history":[{"count":2,"href":"https:\/\/caramba.lu\/index.php\/wp-json\/wp\/v2\/pages\/14980\/revisions"}],"predecessor-version":[{"id":14982,"href":"https:\/\/caramba.lu\/index.php\/wp-json\/wp\/v2\/pages\/14980\/revisions\/14982"}],"wp:attachment":[{"href":"https:\/\/caramba.lu\/index.php\/wp-json\/wp\/v2\/media?parent=14980"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}