{"id":624,"date":"2026-07-08T13:04:33","date_gmt":"2026-07-08T13:04:33","guid":{"rendered":"https:\/\/frenchwithjade.com\/?page_id=624"},"modified":"2026-09-09T08:45:50","modified_gmt":"2026-09-09T08:45:50","slug":"group-class-schedule","status":"publish","type":"page","link":"https:\/\/frenchwithjade.com\/fr\/group-class-schedule\/","title":{"rendered":"Group Class Schedule"},"content":{"rendered":"<div class=\"et_pb_section_0 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_0 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_0 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_code_0 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><!-- ============================================\n  Section \"Group classes\" \u2014 English version.\n  New schedule (Aug 2026):\n  A1 + A2 Wednesday (15:30-17:00 \/ 17:30-19:00)\n  B1 + B2 Friday    (15:30-17:00 \/ 17:30-19:00)\n  Product IDs: 517 \/ 640 \/ 643 \/ 645\n  Buttons now go straight to checkout (\/commander\/).\n\n  Auto seat counter: each WooCommerce product must\n  have \"Low stock threshold\" = 6 (Inventory tab),\n  otherwise the API does not return the number left.\n============================================= -->\n\n<style>\n  .fcg-section {\n    --fcg-primary: #016D88;\n    --fcg-primary-dark: #014D60;\n    --fcg-primary-light: #E6F3F6;\n    --fcg-secondary: #D48C8C;\n    --fcg-secondary-dark: #7E4341;\n    --fcg-secondary-light: #F9EDED;\n    --fcg-text: #1f2a2e;\n    --fcg-muted: #5c6b70;\n    --fcg-border: #dde6e9;\n    --fcg-full: #b0433a;\n    font-family: inherit;\n    color: var(--fcg-text);\n    max-width: 1080px;\n    margin: 0 auto;\n    padding: 48px 20px;\n  }\n  .fcg-section * { box-sizing: border-box; }\n  .fcg-header { text-align: center; max-width: 640px; margin: 0 auto 40px; }\n  .fcg-header h2 { font-size: 38px; margin: 0 0 12px; color: var(--fcg-primary-dark); }\n  .fcg-header p { font-size: 19px; color: var(--fcg-muted); margin: 0; line-height: 1.6; }\n  .fcg-grid {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 24px;\n    margin-bottom: 48px;\n  }\n  @media (max-width: 700px) {\n    .fcg-grid { grid-template-columns: 1fr; }\n  }\n  .fcg-card {\n    background: #fff;\n    border: 1px solid var(--fcg-border);\n    border-radius: 14px;\n    padding: 22px;\n    display: flex;\n    flex-direction: column;\n    transition: box-shadow .2s ease, transform .2s ease;\n  }\n  .fcg-card:hover { box-shadow: 0 6px 20px rgba(1,109,136,.12); transform: translateY(-2px); }\n  .fcg-card-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; }\n  .fcg-level {\n    background: var(--fcg-secondary-light);\n    color: var(--fcg-secondary-dark);\n    font-size: 15px; font-weight: 600;\n    padding: 5px 14px; border-radius: 20px;\n  }\n  .fcg-seats { font-size: 15px; color: var(--fcg-primary); font-weight: 500; }\n  .fcg-seats.fcg-complet { color: var(--fcg-full); }\n  .fcg-card h3 { font-size: 22px; margin: 0 0 6px; }\n  .fcg-meta { font-size: 16px; color: var(--fcg-muted); margin: 0 0 18px; line-height: 1.5; }\n  .fcg-card-bottom {\n    margin-top: auto;\n    border-top: 1px solid var(--fcg-border);\n    padding-top: 14px;\n    display: flex; justify-content: space-between; align-items: center;\n  }\n  .fcg-price { font-size: 26px; font-weight: 700; color: var(--fcg-primary-dark); }\n  .fcg-price small { font-size: 14px; font-weight: 400; color: var(--fcg-muted); display: block; }\n  .fcg-btn {\n    display: inline-block;\n    background: var(--fcg-primary);\n    color: #fff !important;\n    text-decoration: none !important;\n    font-size: 16px; font-weight: 600;\n    padding: 12px 24px;\n    border-radius: 8px;\n    transition: background .2s ease;\n  }\n  .fcg-btn:hover { background: var(--fcg-primary-dark); }\n  .fcg-btn.fcg-btn-outline {\n    background: transparent;\n    color: var(--fcg-primary) !important;\n    border: 1.5px solid var(--fcg-primary);\n  }\n  .fcg-btn.fcg-btn-outline:hover { background: var(--fcg-primary-light); }\n  .fcg-steps {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n    gap: 20px;\n  }\n  .fcg-step { text-align: center; padding: 0 10px; }\n  .fcg-step-num {\n    width: 42px; height: 42px; line-height: 42px;\n    border-radius: 50%;\n    background: var(--fcg-secondary);\n    color: #fff; font-weight: 600; font-size: 17px;\n    margin: 0 auto 10px;\n  }\n  .fcg-step h4 { font-size: 19px; margin: 0 0 6px; }\n  .fcg-step p { font-size: 16px; color: var(--fcg-muted); margin: 0; line-height: 1.5; }\n  .fcg-note { text-align: center; font-size: 15px; color: var(--fcg-muted); margin-top: 32px; }\n  .fcg-note a { color: var(--fcg-primary); }\n<\/style>\n\n<section class=\"fcg-section\" id=\"classes\">\n\n  <div class=\"fcg-header\">\n    <h2>French group classes<\/h2>\n    <p>Maximum 6 students &middot; pack of 10 sessions of 90 minutes &middot; online, live with your teacher.<br>All times are Paris time (CET).<\/p>\n  <\/div>\n\n  <div class=\"fcg-grid\">\n\n    <div class=\"fcg-card\" data-product=\"517\">\n      <div class=\"fcg-card-top\">\n        <span class=\"fcg-level\">Level A1<\/span>\n        <span class=\"fcg-seats\">6 seats left<\/span>\n      <\/div>\n      <h3>Wednesday &middot; 15:30 \u2013 17:00<\/h3>\n      <p class=\"fcg-meta\">90 min per session<br>Pack of 10 sessions &middot; Complete beginner<\/p>\n      <div class=\"fcg-card-bottom\">\n        <span class=\"fcg-price\">375&nbsp;\u20ac<small>for the 10-session pack<\/small><\/span>\n        <a class=\"fcg-btn\" href=\"\/commander\/?add-to-cart=517\">Book my seat<\/a>\n      <\/div>\n    <\/div>\n\n    <div class=\"fcg-card\" data-product=\"640\">\n      <div class=\"fcg-card-top\">\n        <span class=\"fcg-level\">Level A2<\/span>\n        <span class=\"fcg-seats\">6 seats left<\/span>\n      <\/div>\n      <h3>Wednesday &middot; 17:30 \u2013 19:00<\/h3>\n      <p class=\"fcg-meta\">90 min per session<br>Pack of 10 sessions &middot; Elementary<\/p>\n      <div class=\"fcg-card-bottom\">\n        <span class=\"fcg-price\">375&nbsp;\u20ac<small>for the 10-session pack<\/small><\/span>\n        <a class=\"fcg-btn\" href=\"\/commander\/?add-to-cart=640\">Book my seat<\/a>\n      <\/div>\n    <\/div>\n\n    <div class=\"fcg-card\" data-product=\"643\">\n      <div class=\"fcg-card-top\">\n        <span class=\"fcg-level\">Level B1<\/span>\n        <span class=\"fcg-seats\">6 seats left<\/span>\n      <\/div>\n      <h3>Friday &middot; 15:30 \u2013 17:00<\/h3>\n      <p class=\"fcg-meta\">90 min per session<br>Pack of 10 sessions &middot; Intermediate<\/p>\n      <div class=\"fcg-card-bottom\">\n        <span class=\"fcg-price\">375&nbsp;\u20ac<small>for the 10-session pack<\/small><\/span>\n        <a class=\"fcg-btn\" href=\"\/commander\/?add-to-cart=643\">Book my seat<\/a>\n      <\/div>\n    <\/div>\n\n    <div class=\"fcg-card\" data-product=\"645\">\n      <div class=\"fcg-card-top\">\n        <span class=\"fcg-level\">Level B2<\/span>\n        <span class=\"fcg-seats\">6 seats left<\/span>\n      <\/div>\n      <h3>Friday &middot; 17:30 \u2013 19:00<\/h3>\n      <p class=\"fcg-meta\">90 min per session<br>Pack of 10 sessions &middot; Upper intermediate<\/p>\n      <div class=\"fcg-card-bottom\">\n        <span class=\"fcg-price\">375&nbsp;\u20ac<small>for the 10-session pack<\/small><\/span>\n        <a class=\"fcg-btn\" href=\"\/commander\/?add-to-cart=645\">Book my seat<\/a>\n      <\/div>\n    <\/div>\n\n  <\/div>\n\n  <div class=\"fcg-steps\">\n    <div class=\"fcg-step\">\n      <div class=\"fcg-step-num\">1<\/div>\n      <h4>Choose your level<\/h4>\n      <p>Not sure? Take the free level test or get in touch with me.<\/p>\n    <\/div>\n    <div class=\"fcg-step\">\n      <div class=\"fcg-step-num\">2<\/div>\n      <h4>Book your seat<\/h4>\n      <p>Secure online payment. Groups are limited to 6 students.<\/p>\n    <\/div>\n    <div class=\"fcg-step\">\n      <div class=\"fcg-step-num\">3<\/div>\n      <h4>Receive your link<\/h4>\n      <p>You will receive the connection link and all practical details by e-mail.<\/p>\n    <\/div>\n  <\/div>\n\n  <p class=\"fcg-note\">A question about absences or refunds? Check the <a href=\"\/faq\/\">FAQ<\/a>.<\/p>\n\n<\/section>\n\n<script>\n(function () {\n  var FR = location.pathname.indexOf('\/fr\/') === 0;\n  var T = FR\n    ? { full: 'Complet', wait: \"Liste d'attente\", many: ' places restantes', one: ' place restante', initial: '6 places restantes', contact: '\/fr\/contact\/' }\n    : { full: 'Full', wait: 'Join the waitlist', many: ' seats left', one: ' seat left', initial: '6 seats left', contact: '\/contact\/' };\n  document.querySelectorAll('.fcg-card[data-product]').forEach(function (card) {\n    var id = card.getAttribute('data-product');\n    var seats = card.querySelector('.fcg-seats');\n    var btn = card.querySelector('.fcg-btn');\n    if (seats) seats.textContent = T.initial;\n    fetch('\/wp-json\/wc\/store\/v1\/products\/' + id)\n      .then(function (r) { return r.ok ? r.json() : null; })\n      .then(function (p) {\n        if (!p) return;\n        if (p.is_in_stock === false) {\n          if (seats) { seats.textContent = T.full; seats.classList.add('fcg-complet'); }\n          if (btn) {\n            btn.textContent = T.wait;\n            btn.classList.add('fcg-btn-outline');\n            btn.setAttribute('href', T.contact);\n          }\n        } else if (p.low_stock_remaining != null && seats) {\n          seats.textContent = p.low_stock_remaining + (p.low_stock_remaining > 1 ? T.many : T.one);\n        }\n      })\n      .catch(function () {});\n  });\n})();\n<\/script>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-624","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/frenchwithjade.com\/fr\/wp-json\/wp\/v2\/pages\/624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/frenchwithjade.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/frenchwithjade.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/frenchwithjade.com\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/frenchwithjade.com\/fr\/wp-json\/wp\/v2\/comments?post=624"}],"version-history":[{"count":14,"href":"https:\/\/frenchwithjade.com\/fr\/wp-json\/wp\/v2\/pages\/624\/revisions"}],"predecessor-version":[{"id":912,"href":"https:\/\/frenchwithjade.com\/fr\/wp-json\/wp\/v2\/pages\/624\/revisions\/912"}],"wp:attachment":[{"href":"https:\/\/frenchwithjade.com\/fr\/wp-json\/wp\/v2\/media?parent=624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}