{"id":5450,"date":"2026-05-11T13:12:39","date_gmt":"2026-05-11T10:12:39","guid":{"rendered":"https:\/\/lofit.ru\/?page_id=5450"},"modified":"2026-06-22T12:24:27","modified_gmt":"2026-06-22T09:24:27","slug":"test-r","status":"publish","type":"page","link":"https:\/\/lofit.ru\/?page_id=5450","title":{"rendered":"Test-R"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5450\" class=\"elementor elementor-5450\" data-elementor-settings=\"[]\">\n\t\t\t\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-97b32db elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"97b32db\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3a376d0\" data-id=\"3a376d0\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-783ba92 elementor-widget elementor-widget-html\" data-id=\"783ba92\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div id=\"lofit-schedule-one\">\r\n  <div class=\"lf6-head\">\r\n    <a class=\"lf6-logo-link\" href=\"https:\/\/lofit.ru\/\" aria-label=\"\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0443\u044e LOFIT\">\r\n      <img decoding=\"async\" class=\"lf6-logo-img\" src=\"https:\/\/lofit.ru\/schedule\/assets\/img\/logo.png\" alt=\"LOFIT \u0424\u0438\u0442\u043d\u0435\u0441-\u043a\u043b\u0443\u0431\">\r\n    <\/a>\r\n  <\/div>\r\n  <div class=\"lf6-wrap\">\r\n    <div class=\"lf6-preloader\" aria-hidden=\"true\">\r\n      <div class=\"lf6-clock\">\r\n        <span class=\"lf6-clock-mark\"><\/span>\r\n        <span class=\"lf6-clock-mark\"><\/span>\r\n        <span class=\"lf6-clock-mark\"><\/span>\r\n        <span class=\"lf6-clock-mark\"><\/span>\r\n        <span class=\"lf6-clock-hand lf6-clock-hour\"><\/span>\r\n        <span class=\"lf6-clock-hand lf6-clock-minute\"><\/span>\r\n      <\/div>\r\n      <div class=\"lf6-preloader-title\">\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/div>\r\n      <div class=\"lf6-preloader-subtitle\">\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441 1\u0421<\/div>\r\n    <\/div>\r\n    <div class=\"lf6-content\">\r\n      <div class=\"lf6-controls\">\r\n        <div class=\"lf6-control lf6-rooms-control\">\r\n          <div class=\"lf6-label\">\u0412\u042b\u0411\u041e\u0420 \u0417\u0410\u041b\u0410<\/div>\r\n          <div class=\"lf6-buttons\">\r\n            <button type=\"button\" class=\"is-active\" data-room=\"big\">\u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u0437\u0430\u043b<\/button>\r\n            <button type=\"button\" data-room=\"small\">\u041c\u0430\u043b\u044b\u0439 \u0437\u0430\u043b<\/button>\r\n            <button type=\"button\" data-room=\"fight\">\u0417\u0430\u043b \u0435\u0434\u0438\u043d\u043e\u0431\u043e\u0440\u0441\u0442\u0432<\/button>\r\n            <button type=\"button\" data-room=\"crossfit\">\u0417\u043e\u043d\u0430 \u043a\u0440\u043e\u0441\u0441\u0444\u0438\u0442\u0430<\/button>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"lf6-control lf6-filter-control\">\r\n          <div class=\"lf6-label\">\u0424\u0418\u041b\u042c\u0422\u0420<\/div>\r\n          <div class=\"lf6-filters\">\r\n            <select id=\"lf6-filter-trainer\"><option value=\"\">\u041f\u043e \u0442\u0440\u0435\u043d\u0435\u0440\u0443<\/option><\/select>\r\n            <select id=\"lf6-filter-training\"><option value=\"\">\u041f\u043e \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0435<\/option><\/select>\r\n            <select id=\"lf6-filter-class\">\r\n              <option value=\"\">\u041f\u043e \u043a\u043b\u0430\u0441\u0441\u0430\u043c<\/option>\r\n              <option value=\"power\">\u0421\u0438\u043b\u043e\u0432\u044b\u0435<\/option>\r\n              <option value=\"commercial\">\u041a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435<\/option>\r\n              <option value=\"special\">\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435<\/option>\r\n              <option value=\"mixed\">\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435<\/option>\r\n              <option value=\"dance\">\u0422\u0430\u043d\u0446\u0435\u0432\u0430\u043b\u044c\u043d\u044b\u0435<\/option>\r\n            <\/select>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"lf6-status\" id=\"lf6-status\">\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0437 1\u0421\u2026<\/div>\r\n      <div class=\"lf6-table-wrap\">\r\n        <table class=\"lf6-table\" id=\"lf6-table\"><\/table>\r\n      <\/div>\r\n      <div class=\"lf6-mobile-list\" id=\"lf6-mobile-list\"><\/div>\r\n      <div class=\"lf6-legend\">\r\n        <div><span style=\"background:#4CC1FC\"><\/span>\u0421\u0438\u043b\u043e\u0432\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b<\/div>\r\n        <div><span style=\"background:#ff4b00\"><\/span>\u041a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u044b<\/div>\r\n        <div><span style=\"background:#eaff00\"><\/span>\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b<\/div>\r\n        <div><span style=\"background:#D02090\"><\/span>\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b<\/div>\r\n        <div><span style=\"background:#ffffff\"><\/span>\u0422\u0430\u043d\u0446\u0435\u0432\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b<\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n  <div id=\"lf6-hidden-widget\" aria-hidden=\"true\"><\/div>\r\n<\/div>\r\n\r\n<style>\r\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@400;500;600;700;800&display=swap');\r\n#lofit-schedule-one{--bg:#000;--white:#fff;--orange:#ff4b00;--time:#ff9700;--blue:#101e29;--muted:rgba(255,255,255,.45);--max:1120px;width:100%;background:#000;color:#fff;font-family:Montserrat,Arial,Helvetica,sans-serif;overflow:hidden}\r\n#lofit-schedule-one,#lofit-schedule-one *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}\r\n#lofit-schedule-one .lf6-head{background:#000;text-align:center;padding:18px 20px 20px;border-bottom:3px solid var(--orange)}\r\n#lofit-schedule-one .lf6-logo-link{display:inline-block;line-height:0;text-decoration:none;outline:none}\r\n#lofit-schedule-one .lf6-logo-img{display:block;width:154px;max-width:60vw;height:auto;margin:0 auto;user-select:none;-webkit-user-drag:none;pointer-events:none;transition:opacity .25s ease,transform .25s ease}\r\n#lofit-schedule-one .lf6-logo-link:hover .lf6-logo-img{opacity:.86;transform:scale(.985)}\r\n#lofit-schedule-one .lf6-wrap{width:min(var(--max),calc(100% - 56px));margin:0 auto;padding:34px 0 42px;background:#000}\r\n#lofit-schedule-one .lf6-content{opacity:0;transform:translateY(14px);pointer-events:none;transition:opacity .7s ease,transform .7s ease}\r\n#lofit-schedule-one.is-ready .lf6-content,#lofit-schedule-one.is-error .lf6-content{opacity:1;transform:translateY(0);pointer-events:auto}\r\n#lofit-schedule-one .lf6-preloader{min-height:360px;padding:70px 20px 80px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;background:#000;transition:opacity .55s ease,transform .55s ease,visibility .55s ease,height .55s ease,min-height .55s ease,padding .55s ease}\r\n#lofit-schedule-one.is-ready .lf6-preloader,#lofit-schedule-one.is-error .lf6-preloader{opacity:0;visibility:hidden;transform:translateY(-12px);pointer-events:none;height:0;min-height:0;padding-top:0;padding-bottom:0;overflow:hidden}\r\n#lofit-schedule-one .lf6-clock{position:relative;width:92px;height:92px;border:4px solid #fff;border-radius:50%;box-shadow:0 0 34px rgba(255,75,0,.16)}\r\n#lofit-schedule-one .lf6-clock::before{content:\"\";position:absolute;left:50%;top:50%;width:9px;height:9px;border-radius:50%;background:var(--orange);transform:translate(-50%,-50%);z-index:4}\r\n#lofit-schedule-one .lf6-clock-mark{position:absolute;left:50%;top:8px;width:4px;height:11px;margin-left:-2px;border-radius:999px;background:#fff;transform-origin:2px 38px}\r\n#lofit-schedule-one .lf6-clock-mark:nth-child(1){transform:rotate(0deg)}\r\n#lofit-schedule-one .lf6-clock-mark:nth-child(2){transform:rotate(90deg)}\r\n#lofit-schedule-one .lf6-clock-mark:nth-child(3){transform:rotate(180deg)}\r\n#lofit-schedule-one .lf6-clock-mark:nth-child(4){transform:rotate(270deg)}\r\n#lofit-schedule-one .lf6-clock-hand{position:absolute;left:50%;bottom:50%;border-radius:999px;transform-origin:50% 100%;background:#fff}\r\n#lofit-schedule-one .lf6-clock-hour{width:5px;height:25px;margin-left:-2.5px;animation:lf6-clock-spin 8s linear infinite}\r\n#lofit-schedule-one .lf6-clock-minute{width:3px;height:35px;margin-left:-1.5px;background:var(--orange);animation:lf6-clock-spin 1.4s linear infinite}\r\n#lofit-schedule-one .lf6-preloader-title{margin-top:24px;color:#fff;font-size:15px;line-height:1.3;font-weight:600;letter-spacing:.03em;text-align:center}\r\n#lofit-schedule-one .lf6-preloader-subtitle{margin-top:8px;color:rgba(255,255,255,.45);font-size:12px;line-height:1.3;font-weight:500;text-align:center}\r\n@keyframes lf6-clock-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}\r\n#lofit-schedule-one .lf6-controls{display:grid;grid-template-columns:minmax(0,560px) minmax(0,470px);justify-content:space-between;align-items:start;gap:24px;margin-bottom:22px}\r\n#lofit-schedule-one .lf6-filter-control{justify-self:end;width:470px;max-width:470px}\r\n#lofit-schedule-one .lf6-label{margin:0 0 12px;color:var(--muted);font-size:17px;line-height:1;font-weight:700;letter-spacing:.02em;text-transform:uppercase}\r\n#lofit-schedule-one .lf6-buttons,#lofit-schedule-one .lf6-filters{display:flex;align-items:center;gap:7px;flex-wrap:nowrap}\r\n#lofit-schedule-one button,#lofit-schedule-one select{height:34px;border:1px solid rgba(255,255,255,.10);border-radius:999px;background:var(--blue);color:#fff;font-family:Montserrat,Arial,Helvetica,sans-serif;font-size:12px;line-height:34px;font-weight:600;outline:none;box-shadow:none;transform:none;transition:background .16s ease,border-color .16s ease,opacity .16s ease}\r\n#lofit-schedule-one button{padding:0 15px;cursor:pointer;white-space:nowrap}\r\n#lofit-schedule-one button:hover,#lofit-schedule-one select:hover{border-color:rgba(255,255,255,.22)}\r\n#lofit-schedule-one button.is-active{background:var(--orange);border-color:var(--orange)}\r\n#lofit-schedule-one select{width:142px;min-width:142px;max-width:142px;padding:0 28px 0 12px;appearance:none;-webkit-appearance:none;cursor:pointer;background-color:var(--blue);background-image:linear-gradient(45deg,transparent 50%,#fff 50%),linear-gradient(135deg,#fff 50%,transparent 50%);background-position:calc(100% - 16px) 14px,calc(100% - 11px) 14px;background-size:5px 5px,5px 5px;background-repeat:no-repeat}\r\n#lofit-schedule-one .lf6-status{display:none;margin:20px 0;padding:14px 18px;border:3px solid #fff;background:#000;color:#fff;font-size:14px;line-height:1.35;font-weight:600}\r\n#lofit-schedule-one.is-error .lf6-status{display:block}\r\n#lofit-schedule-one .lf6-table-wrap{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}\r\n#lofit-schedule-one .lf6-table{width:100%;min-width:980px;border-collapse:separate;border-spacing:0;table-layout:fixed;background:#000;color:#fff}\r\n#lofit-schedule-one .lf6-table th,#lofit-schedule-one .lf6-table td{background:#000;color:#fff;border-right:4px solid #fff;border-bottom:4px solid #fff;vertical-align:top}\r\n#lofit-schedule-one .lf6-table thead th{height:96px;padding:15px 8px 10px;text-align:center;border-top:4px solid #fff}\r\n#lofit-schedule-one .lf6-table thead th:first-child{width:138px;border:0;background:transparent}\r\n#lofit-schedule-one .lf6-table thead th:nth-child(2){border-top-left-radius:20px;border-left:4px solid #fff}\r\n#lofit-schedule-one .lf6-table thead th:last-child{border-top-right-radius:20px}\r\n#lofit-schedule-one .lf6-date{color:#fff;font-size:46px;line-height:.95;font-weight:800;letter-spacing:-.04em}\r\n#lofit-schedule-one .lf6-day{margin-top:8px;color:#fff;font-size:15px;line-height:1;font-weight:600}\r\n#lofit-schedule-one .lf6-table tbody td:first-child{border-left:4px solid #fff;border-right:4px solid #fff}\r\n#lofit-schedule-one .lf6-table tbody tr:first-child td:first-child{border-top:4px solid #fff}\r\n#lofit-schedule-one .lf6-time-cell{width:138px;height:106px;padding:0 20px;color:var(--time);font-size:32px;line-height:1;font-weight:700;text-align:left;white-space:nowrap;vertical-align:middle!important}\r\n#lofit-schedule-one .lf6-event-cell{height:106px;min-height:106px;padding:8px 9px;overflow:hidden;vertical-align:middle!important}\r\n#lofit-schedule-one .lf6-cell-inner{min-height:86px;height:100%;display:flex;flex-direction:column;justify-content:center;gap:7px;overflow:hidden}\r\n#lofit-schedule-one .lf6-event{position:relative;display:flex;flex-direction:column;justify-content:center;width:100%;max-width:100%;min-height:70px;padding:0 0 0 10px;color:#fff;background:transparent;cursor:pointer;text-decoration:none;overflow:hidden}\r\n#lofit-schedule-one .lf6-event:hover{opacity:.82}\r\n#lofit-schedule-one .lf6-event::before{content:\"\";position:absolute;left:0;top:1px;bottom:1px;width:4px;border-radius:4px;background:var(--event-color,#4CC1FC)}\r\n#lofit-schedule-one .lf6-event-icon{width:26px;height:26px;flex:0 0 26px;display:inline-flex;align-items:center;justify-content:center;margin-bottom:4px}\r\n#lofit-schedule-one .lf6-event-icon img{width:26px;height:26px;object-fit:contain;display:block;pointer-events:none;user-select:none;-webkit-user-drag:none}\r\n#lofit-schedule-one .lf6-event-title,#lofit-schedule-one .lf6-event-trainer,#lofit-schedule-one .lf6-event-time{display:block;max-width:100%;color:#fff;font-family:Montserrat,Arial,Helvetica,sans-serif;line-height:1.08;white-space:nowrap;overflow:hidden}\r\n#lofit-schedule-one .lf6-event-title{width:100%;min-width:0;font-size:12.2px;font-weight:700;text-overflow:clip;margin-bottom:5px}\r\n#lofit-schedule-one .lf6-event-trainer{margin:0 0 5px;font-size:11.2px;font-weight:500;text-overflow:ellipsis}\r\n#lofit-schedule-one .lf6-event-time{font-size:11.2px;font-weight:600;text-overflow:ellipsis}\r\n#lofit-schedule-one .lf6-empty{padding:24px;color:#fff;font-size:15px;font-weight:600;text-align:center}\r\n#lofit-schedule-one .lf6-legend{width:100%;min-width:980px;display:grid;grid-template-columns:repeat(5,1fr);border-left:4px solid #fff;border-bottom:4px solid #fff;background:#000}\r\n#lofit-schedule-one .lf6-legend div{padding:14px 12px;border-right:4px solid #fff;color:#fff;background:#000;font-size:13px;line-height:1;font-weight:600;white-space:nowrap}\r\n#lofit-schedule-one .lf6-legend span{display:inline-block;width:4px;height:20px;margin-right:8px;border-radius:4px;vertical-align:middle}\r\n#lofit-schedule-one .lf6-mobile-list{display:none}\r\n#lofit-schedule-one #lf6-hidden-widget{position:fixed!important;left:-20000px!important;top:0!important;width:1366px!important;min-width:1366px!important;height:1400px!important;min-height:1400px!important;opacity:0!important;pointer-events:none!important;overflow:hidden!important;z-index:-2147483647!important;background:#000!important}\r\n\r\n\/* \u041c\u043e\u0434\u0430\u043b\u043a\u0430 \u2014 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 *\/\r\n#lf6-modal{position:fixed;inset:0;z-index:999999;display:none;align-items:center;justify-content:center;padding:20px;background:rgba(0,0,0,.82);font-family:Montserrat,Arial,Helvetica,sans-serif}\r\n#lf6-modal.is-open{display:flex}\r\n#lf6-modal .lf6-modal-box{width:min(620px,100%);max-height:88vh;overflow-y:auto;background:#050505;color:#fff;border:4px solid #fff;border-radius:24px;padding:30px 26px 26px;text-align:center}\r\n#lf6-modal .lf6-modal-icon{width:94px;height:94px;margin:0 auto 18px;display:flex;align-items:center;justify-content:center}\r\n#lf6-modal .lf6-modal-icon img{width:94px;height:94px;object-fit:contain;display:block;pointer-events:none;user-select:none;-webkit-user-drag:none}\r\n#lf6-modal .lf6-modal-title{width:100%;margin:0 0 24px;padding-bottom:20px;border-bottom:2px solid rgba(255,255,255,.18);color:#fff;font-size:32px;line-height:1.12;font-weight:700;text-align:center;white-space:normal;word-break:normal;overflow-wrap:anywhere}\r\n#lf6-modal .lf6-modal-meta{margin:0 0 13px;color:#ff9700;font-size:15px;line-height:1.4;font-weight:600;text-align:left}\r\n#lf6-modal .lf6-modal-room{margin-bottom:22px}\r\n#lf6-modal .lf6-modal-text{margin-top:22px;padding-top:20px;border-top:2px solid rgba(255,255,255,.18);color:#fff;font-size:15px;line-height:1.6;font-weight:500;text-align:left}\r\n#lf6-modal .lf6-modal-close{margin-top:24px;height:42px;padding:0 24px;border:0;border-radius:999px;background:#ff4b00;color:#fff;font-family:Montserrat,Arial,Helvetica,sans-serif;font-size:13px;line-height:42px;font-weight:600;cursor:pointer}\r\n\r\n@media (max-width:760px){\r\n#lofit-schedule-one{width:100%;max-width:100%;background:#000;touch-action:pan-y;overflow-x:hidden}\r\n#lofit-schedule-one,#lofit-schedule-one *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}\r\n#lofit-schedule-one img{-webkit-user-drag:none;user-drag:none;pointer-events:none}\r\n#lofit-schedule-one .lf6-head{padding:16px 14px 16px}\r\n#lofit-schedule-one .lf6-logo-img{width:138px}\r\n#lofit-schedule-one .lf6-wrap{width:100%;max-width:100%;padding:14px 0 32px;background:#000;overflow-x:hidden}\r\n#lofit-schedule-one .lf6-preloader{min-height:330px;padding:58px 18px 70px}\r\n#lofit-schedule-one .lf6-clock{width:82px;height:82px}\r\n#lofit-schedule-one .lf6-clock-mark{top:7px;transform-origin:2px 34px}\r\n#lofit-schedule-one .lf6-clock-hour{height:22px}\r\n#lofit-schedule-one .lf6-clock-minute{height:31px}\r\n#lofit-schedule-one .lf6-controls{display:block;width:100%;max-width:100%;padding:0;margin:0 0 14px;background:#000}\r\n#lofit-schedule-one .lf6-control,#lofit-schedule-one .lf6-filter-control{width:100%;max-width:none;min-width:0;justify-self:stretch;padding:0;margin:0;background:#000}\r\n#lofit-schedule-one .lf6-filter-control{margin-top:18px}\r\n#lofit-schedule-one .lf6-label{width:100%;padding:0 16px;margin:0 0 12px;text-align:center;font-size:17px;font-weight:500;line-height:1;color:rgba(255,255,255,.42)}\r\n#lofit-schedule-one .lf6-buttons{width:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px;padding:0 12px;background:#000}\r\n#lofit-schedule-one .lf6-buttons button{width:100%;min-width:0;height:42px;line-height:42px;padding:0 6px;border-radius:14px;font-size:12.4px;font-weight:500;white-space:nowrap;text-align:center}\r\n#lofit-schedule-one .lf6-filters{width:100%;max-width:100%;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px;padding:0 12px;margin:0;background:#000}\r\n#lofit-schedule-one .lf6-filters select{width:100%;min-width:0;max-width:none;height:42px;line-height:42px;border-radius:15px;padding:0 28px 0 12px;font-size:11.8px;font-weight:500;white-space:nowrap;background-position:calc(100% - 16px) 18px,calc(100% - 11px) 18px}\r\n#lofit-schedule-one #lf6-filter-class{grid-column:1\/3}\r\n#lofit-schedule-one .lf6-table-wrap,#lofit-schedule-one .lf6-table,#lofit-schedule-one .lf6-legend{display:none}\r\n#lofit-schedule-one .lf6-mobile-list{display:block;width:100%;margin-top:14px;background:#000}\r\n#lofit-schedule-one .lf6-mobile-day{margin:0;border:3px solid #fff;border-radius:0;overflow:hidden;background:#000}\r\n#lofit-schedule-one .lf6-mobile-list>.lf6-mobile-day:first-child{border-top-left-radius:22px;border-top-right-radius:22px}\r\n#lofit-schedule-one .lf6-mobile-list>.lf6-mobile-day:last-child{border-bottom-left-radius:22px;border-bottom-right-radius:22px}\r\n#lofit-schedule-one .lf6-mobile-list>.lf6-mobile-day:first-child:last-child{border-radius:22px}\r\n#lofit-schedule-one .lf6-mobile-day+.lf6-mobile-day{border-top:0}\r\n#lofit-schedule-one .lf6-mobile-day-head{display:grid;grid-template-columns:32% 68%;align-items:center;min-height:82px;border-bottom:2px solid #fff;background:#000}\r\n#lofit-schedule-one .lf6-mobile-date{display:flex;align-items:center;justify-content:center;color:#fff;font-size:42px;line-height:1;font-weight:400}\r\n#lofit-schedule-one .lf6-mobile-name{display:flex;align-items:center;color:#fff;font-size:27px;line-height:1;font-weight:400}\r\n#lofit-schedule-one .lf6-mobile-events{padding:0}\r\n#lofit-schedule-one .lf6-mobile-row{display:grid;grid-template-columns:32% 68%;min-height:102px;border-bottom:1px solid rgba(255,255,255,.85);background:#000}\r\n#lofit-schedule-one .lf6-mobile-row:last-child{border-bottom:0}\r\n#lofit-schedule-one .lf6-mobile-time{display:flex;align-items:center;padding-left:26px;color:var(--time);font-size:34px;line-height:1;font-weight:400;border-right:3px solid #fff}\r\n#lofit-schedule-one .lf6-mobile-card{position:relative;display:flex;flex-direction:column;justify-content:center;min-width:0;padding:12px 12px 12px 26px;background:#000;cursor:pointer}\r\n#lofit-schedule-one .lf6-mobile-card::before{content:\"\";position:absolute;left:10px;top:14px;bottom:14px;width:5px;border-radius:5px;background:var(--event-color,#4CC1FC)}\r\n#lofit-schedule-one .lf6-mobile-title-line{display:flex;align-items:center;gap:12px;min-width:0;margin-bottom:6px}\r\n#lofit-schedule-one .lf6-mobile-icon{flex:0 0 34px;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center}\r\n#lofit-schedule-one .lf6-mobile-icon img{width:34px;height:34px;object-fit:contain;display:block;pointer-events:none;user-select:none;-webkit-user-drag:none}\r\n#lofit-schedule-one .lf6-mobile-title{min-width:0;color:#fff;font-size:16px;line-height:1.15;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\r\n#lofit-schedule-one .lf6-mobile-meta{display:block;color:#fff;font-size:14px;line-height:1.22;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\r\n#lf6-modal{align-items:flex-end;padding:12px}\r\n#lf6-modal .lf6-modal-box{width:100%;max-height:88vh;border-radius:22px 22px 16px 16px;padding:22px}\r\n#lf6-modal .lf6-modal-icon{width:82px;height:82px;margin-bottom:16px}\r\n#lf6-modal .lf6-modal-icon img{width:82px;height:82px}\r\n#lf6-modal .lf6-modal-title{font-size:24px}\r\n}\r\n@media (max-width:420px){\r\n#lofit-schedule-one .lf6-mobile-time{padding-left:22px;font-size:31px}\r\n#lofit-schedule-one .lf6-mobile-title{font-size:15px}\r\n#lofit-schedule-one .lf6-mobile-meta{font-size:13px}\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(function () {\r\n  'use strict';\r\n  if (window.__lofitOneRunning) return;\r\n  window.__lofitOneRunning = true;\r\n\r\n  function initLofitSchedule() {\r\n    var root = document.getElementById('lofit-schedule-one');\r\n    if (!root) { window.__lofitOneRunning = false; return; }\r\n    if (root.getAttribute('data-lf6-init') === '1') return;\r\n    root.setAttribute('data-lf6-init', '1');\r\n\r\n    var WIDGET_SCRIPT = 'https:\/\/reservi.ru\/widget-fit1c.v4\/public\/init.js';\r\n    var API_KEY = '8e1c9382-39fb-4763-af84-5ce9dd5ce79a';\r\n    var CLUB_ID = '617d7d10-17b1-11f1-8c7f-00505683cb0f';\r\n    var ICON_BASE = '\/wp-content\/uploads\/lofit-icons\/';\r\n    var MIN_PRELOADER_TIME = 2500;\r\n    var startedAt = Date.now();\r\n\r\n    var hiddenWidget = root.querySelector('#lf6-hidden-widget');\r\n    var table = root.querySelector('#lf6-table');\r\n    var mobileList = root.querySelector('#lf6-mobile-list');\r\n    var status = root.querySelector('#lf6-status');\r\n    var roomButtons = Array.from(root.querySelectorAll('[data-room]'));\r\n    var trainerFilter = root.querySelector('#lf6-filter-trainer');\r\n    var trainingFilter = root.querySelector('#lf6-filter-training');\r\n    var classFilter = root.querySelector('#lf6-filter-class');\r\n\r\n    var rooms = {\r\n      big:      { titles: ['\u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u043e\u0439 \u0437\u0430\u043b'], sortOrders: [20] },\r\n      small:    { titles: ['\u041c\u0430\u043b\u044b\u0439 \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u043e\u0439 \u0437\u0430\u043b'],   sortOrders: [30] },\r\n      fight:    { titles: ['\u0417\u0430\u043b \u0435\u0434\u0438\u043d\u043e\u0431\u043e\u0440\u0441\u0442\u0432'],       sortOrders: [50] },\r\n      crossfit: { titles: ['\u0417\u043e\u043d\u0430 \u043a\u0440\u043e\u0441\u0441\u0444\u0438\u0442\u0430'],        sortOrders: [70] }\r\n    };\r\n\r\n    var iconFiles = {\r\n      strength:'dumbbell.png', abs:'abs.png', cardio:'heart.png', crossfit:'kettlebell.png',\r\n      weight:'scale.png', stretch:'body.png', yoga:'body.png', pilates:'body.png',\r\n      dance:'shoe.png', run:'treadmill.png', step:'shoe.png', rehab:'heart.png',\r\n      mfr:'stopwatch.png', boxing:'biceps.png', functional:'stopwatch.png', default:'clipboard.png'\r\n    };\r\n\r\n    var currentRoom = 'big';\r\n    var allEvents = [];\r\n    var weekDays = [];\r\n    var rendered = false;\r\n\r\n    preventMobileZoom();\r\n    clearWidgetCache();\r\n\r\n    function preventMobileZoom() {\r\n      if (!window.matchMedia || !window.matchMedia('(max-width: 760px)').matches) return;\r\n      var meta = document.querySelector('meta[name=\"viewport\"]');\r\n      if (!meta) {\r\n        meta = document.createElement('meta');\r\n        meta.name = 'viewport';\r\n        document.head.appendChild(meta);\r\n      }\r\n      meta.setAttribute('content', 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no');\r\n      document.addEventListener('gesturestart', function (e) { e.preventDefault(); }, { passive: false });\r\n      root.addEventListener('touchstart', function (e) {\r\n        if (e.touches && e.touches.length > 1) e.preventDefault();\r\n      }, { passive: false });\r\n    }\r\n\r\n    \/\/ \u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043a\u044d\u0448\u0430 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 reservi.ru\r\n    function clearWidgetCache() {\r\n      try {\r\n        \/\/ \u0427\u0438\u0441\u0442\u0438\u043c localStorage \u043e\u0442 \u043a\u043b\u044e\u0447\u0435\u0439 reservi\r\n        var keysToRemove = [];\r\n        for (var i = 0; i < localStorage.length; i++) {\r\n          var key = localStorage.key(i);\r\n          if (key && (key.indexOf('reservi') > -1 || key.indexOf('fit1c') > -1 || key.indexOf('widget') > -1)) {\r\n            keysToRemove.push(key);\r\n          }\r\n        }\r\n        keysToRemove.forEach(function(k) { localStorage.removeItem(k); });\r\n        \r\n        \/\/ \u0427\u0438\u0441\u0442\u0438\u043c sessionStorage\r\n        keysToRemove = [];\r\n        for (var j = 0; j < sessionStorage.length; j++) {\r\n          var skey = sessionStorage.key(j);\r\n          if (skey && (skey.indexOf('reservi') > -1 || skey.indexOf('fit1c') > -1 || skey.indexOf('widget') > -1)) {\r\n            keysToRemove.push(skey);\r\n          }\r\n        }\r\n        keysToRemove.forEach(function(k) { sessionStorage.removeItem(k); });\r\n      } catch (e) {}\r\n    }\r\n\r\n    function showStatus(text) { status.textContent = text; }\r\n\r\n    function markReady() {\r\n      var elapsed = Date.now() - startedAt;\r\n      var delay = Math.max(0, MIN_PRELOADER_TIME - elapsed);\r\n      setTimeout(function () {\r\n        root.classList.add('is-ready');\r\n        root.classList.remove('is-error');\r\n      }, delay);\r\n    }\r\n\r\n    function markError(text) {\r\n      showStatus(text);\r\n      root.classList.add('is-error');\r\n      root.classList.remove('is-ready');\r\n    }\r\n\r\n    function escapeHtml(value) {\r\n      return String(value || '')\r\n        .replace(\/&\/g, '&amp;').replace(\/<\/g, '&lt;').replace(\/>\/g, '&gt;')\r\n        .replace(\/\"\/g, '&quot;').replace(\/'\/g, '&#039;');\r\n    }\r\n\r\n    function stripHtml(value) {\r\n      var div = document.createElement('div');\r\n      div.innerHTML = String(value || '').replace(\/<br\\s*\\\/?>\/gi, '\\n');\r\n      return div.textContent || div.innerText || '';\r\n    }\r\n\r\n    function safeDescription(value) {\r\n      return escapeHtml(stripHtml(value)).replace(\/\\n\/g, '<br>');\r\n    }\r\n\r\n    function pad(num) { return String(num).padStart(2, '0'); }\r\n\r\n    function parseDateTime(value) {\r\n      var match = String(value || '').match(\/^(\\d{4})-(\\d{2})-(\\d{2})\\s+(\\d{2}):(\\d{2})\/);\r\n      if (!match) return null;\r\n      return { dateKey: match[1] + '-' + match[2] + '-' + match[3], time: match[4] + ':' + match[5] };\r\n    }\r\n\r\n    function minutesFromTime(value) {\r\n      var match = String(value || '').match(\/(\\d{1,2}):(\\d{2})\/);\r\n      if (!match) return 0;\r\n      return Number(match[1]) * 60 + Number(match[2]);\r\n    }\r\n\r\n    function formatDateKey(date) {\r\n      return date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' + pad(date.getDate());\r\n    }\r\n\r\n    function dayName(index) {\r\n      return ['\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a','\u0412\u0442\u043e\u0440\u043d\u0438\u043a','\u0421\u0440\u0435\u0434\u0430','\u0427\u0435\u0442\u0432\u0435\u0440\u0433','\u041f\u044f\u0442\u043d\u0438\u0446\u0430','\u0421\u0443\u0431\u0431\u043e\u0442\u0430','\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435'][index];\r\n    }\r\n\r\n    function getMonday(date) {\r\n      var d = new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n      var day = d.getDay() || 7;\r\n      d.setDate(d.getDate() - day + 1);\r\n      return d;\r\n    }\r\n\r\n    function getStartDateString() {\r\n      var today = new Date();\r\n      var monday = getMonday(today);\r\n      return formatDateKey(monday);\r\n    }\r\n\r\n    function makeWeekDays(startDateString) {\r\n      var start = null;\r\n      if (startDateString) {\r\n        var m = String(startDateString).match(\/^(\\d{4})-(\\d{2})-(\\d{2})\/);\r\n        if (m) start = new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]));\r\n      }\r\n      if (!start && allEvents[0]) {\r\n        var m2 = String(allEvents[0].startDate || '').match(\/^(\\d{4})-(\\d{2})-(\\d{2})\/);\r\n        if (m2) start = getMonday(new Date(Number(m2[1]), Number(m2[2]) - 1, Number(m2[3])));\r\n      }\r\n      if (!start) start = getMonday(new Date());\r\n      return Array.from({ length: 7 }).map(function (_, i) {\r\n        var d = new Date(start.getFullYear(), start.getMonth(), start.getDate() + i);\r\n        return { index: i, dateKey: formatDateKey(d), dateNumber: String(d.getDate()), title: dayName(i) };\r\n      });\r\n    }\r\n\r\n    function shortTrainerName(name) {\r\n      var parts = String(name || '').trim().split(\/\\s+\/).filter(Boolean);\r\n      if (!parts.length) return '';\r\n      if (parts.length === 1) return parts[0];\r\n      return parts[0] + ' ' + parts[1].charAt(0).toUpperCase() + '.';\r\n    }\r\n\r\n    function iconKeyByTitle(title) {\r\n      var t = String(title || '').toLowerCase();\r\n      if (\/\u0431\u043e\u043a\u0441|\u0435\u0434\u0438\u043d\u043e\u0431\u043e\u0440|\u043a\u0430\u0440\u0430\u0442\u0435|\u0441\u0430\u043c\u0431\u043e|\u043c\u043c\u0430|\u0443\u0434\u0430\u0440|fight\/.test(t)) return 'boxing';\r\n      if (\/\u043f\u0440\u0435\u0441\u0441|\u0436\u0438\u0432\u043e\u0442|abs|\u043a\u043e\u0440\/.test(t)) return 'abs';\r\n      if (\/\u043a\u0440\u043e\u0441\u0441\u0444\u0438\u0442|crossfit|\u0433\u0438\u0440\u044f\/.test(t)) return 'crossfit';\r\n      if (\/\u0440\u0430\u0441\u0442\u044f\u0436|\u0441\u0442\u0440\u0435\u0442\u0447|stretch\/.test(t)) return 'stretch';\r\n      if (\/\u0439\u043e\u0433\u0430|yoga\/.test(t)) return 'yoga';\r\n      if (\/\u043f\u0438\u043b\u0430\u0442\u0435\u0441|pilates\/.test(t)) return 'pilates';\r\n      if (\/\u043c\u0444\u0440|\u043b\u0444\u043a|\u0437\u0434\u043e\u0440\u043e\u0432|\u0441\u0443\u0441\u0442\u0430\u0432|\u0440\u0435\u0430\u0431\u0438\u043b|\u0441\u043f\u0438\u043d\u0430\/.test(t)) return 'rehab';\r\n      if (\/\u0442\u0430\u043d\u0446|\u043b\u0430\u0442\u0438\u043d\u0430|\u0437\u0443\u043c\u0431\u0430|\u0441\u0442\u0440\u0438\u043f|dance\/.test(t)) return 'dance';\r\n      if (\/\u0431\u0435\u0433|\u0434\u043e\u0440\u043e\u0436\u043a|run\/.test(t)) return 'run';\r\n      if (\/\u0441\u0442\u0435\u043f|step\/.test(t)) return 'step';\r\n      if (\/\u0442\u0430\u0431\u0430\u0442\u0430|\u043a\u0430\u0440\u0434\u0438\u043e|\u043f\u0443\u043b\u044c\u0441|\u0430\u044d\u0440\u043e\u0431\/.test(t)) return 'cardio';\r\n      if (\/\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\/.test(t)) return 'functional';\r\n      if (\/\u043f\u043e\u0445\u0443\u0434|\u0432\u0435\u0441|weight\/.test(t)) return 'weight';\r\n      if (\/\u0441\u0438\u043b\u0430|\u0441\u0438\u043b\u043e\u0432|\u0442\u0435\u043b\u043e|\u044f\u0433\u043e\u0434|\u043d\u043e\u0433|\u0441\u043a\u0443\u043b\u044c\u043f|\u043b\u043e\u0432\u043a\u043e\u0441\u0442\u044c|body|pump|power\/.test(t)) return 'strength';\r\n      return 'default';\r\n    }\r\n\r\n    function classTypeByTitle(title) {\r\n      var t = String(title || '').toLowerCase();\r\n      if (\/\u0431\u043e\u043a\u0441|\u0435\u0434\u0438\u043d\u043e\u0431\u043e\u0440|\u043a\u0430\u0440\u0430\u0442\u0435|\u0441\u0430\u043c\u0431\u043e|\u043c\u043c\u0430|\u0443\u0434\u0430\u0440|fight|\u20bd|\u0440\u0443\u0431|\u043a\u043e\u043c\u043c\u0435\u0440|\u043f\u043e\u0434\u0432\u0435\u0441\/.test(t)) return 'commercial';\r\n      if (\/\u0440\u0430\u0441\u0442\u044f\u0436|\u0441\u0442\u0440\u0435\u0442\u0447|\u0439\u043e\u0433\u0430|\u043f\u0438\u043b\u0430\u0442\u0435\u0441|\u043c\u0444\u0440|\u043b\u0444\u043a|\u0437\u0434\u043e\u0440\u043e\u0432|\u0441\u0443\u0441\u0442\u0430\u0432|\u0440\u0435\u0430\u0431\u0438\u043b|\u0441\u043f\u0438\u043d\u0430\/.test(t)) return 'special';\r\n      if (\/\u0442\u0430\u043d\u0446|\u043b\u0430\u0442\u0438\u043d\u0430|\u0437\u0443\u043c\u0431\u0430|\u0441\u0442\u0440\u0438\u043f|dance\/.test(t)) return 'dance';\r\n      if (\/\u0442\u0430\u0431\u0430\u0442\u0430|\u043a\u0430\u0440\u0434\u0438\u043e|\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d|\u043a\u0440\u043e\u0441\u0441\u0444\u0438\u0442|\u0441\u0438\u043b\u0430|\u0441\u0438\u043b\u043e\u0432|\u0442\u0435\u043b\u043e|\u044f\u0433\u043e\u0434|\u043d\u043e\u0433|\u0441\u043a\u0443\u043b\u044c\u043f|\u043b\u043e\u0432\u043a\u043e\u0441\u0442\u044c|\u043f\u0440\u0435\u0441\u0441|\u0436\u0438\u0432\u043e\u0442\/.test(t)) return 'power';\r\n      return 'mixed';\r\n    }\r\n\r\n    function colorByClassType(type) {\r\n      if (type === 'commercial') return '#ff4b00';\r\n      if (type === 'special')    return '#eaff00';\r\n      if (type === 'dance')      return '#ffffff';\r\n      if (type === 'power')      return '#4CC1FC';\r\n      return '#D02090';\r\n    }\r\n\r\n    function iconUrlByTitle(title) {\r\n      var key = iconKeyByTitle(title);\r\n      return ICON_BASE + (iconFiles[key] || iconFiles.default);\r\n    }\r\n\r\n    function normalizeEvent(item) {\r\n      var start = parseDateTime(item.start_date);\r\n      var end = parseDateTime(item.end_date);\r\n      if (!start || !end) return null;\r\n      var service = item.service || {};\r\n      var employee = item.employee || {};\r\n      var room = item.room || {};\r\n      var type = classTypeByTitle(service.title || '');\r\n      return {\r\n        id: item.appointment_id || [service.id, employee.id, room.id, item.start_date].join('|'),\r\n        title: service.title || '\u0417\u0430\u043d\u044f\u0442\u0438\u0435',\r\n        description: service.description || '',\r\n        classType: type,\r\n        color: service.color || colorByClassType(type),\r\n        iconUrl: iconUrlByTitle(service.title || ''),\r\n        trainer: shortTrainerName(employee.name || ''),\r\n        trainerFull: employee.name || '',\r\n        roomTitle: room.title || '',\r\n        roomSort: Number(room.sort_order || 0),\r\n        startDate: item.start_date,\r\n        endDate: item.end_date,\r\n        dateKey: start.dateKey,\r\n        startTime: start.time,\r\n        endTime: end.time,\r\n        startMinutes: minutesFromTime(start.time),\r\n        endMinutes: minutesFromTime(end.time),\r\n        duration: item.duration || Math.max(0, minutesFromTime(end.time) - minutesFromTime(start.time))\r\n      };\r\n    }\r\n\r\n    function flattenEvents(data) {\r\n      var result = [];\r\n      var seen = new Set();\r\n      function isEvent(obj) {\r\n        return obj && typeof obj === 'object' && obj.service && obj.employee && obj.room && obj.start_date && obj.end_date;\r\n      }\r\n      function walk(value) {\r\n        if (!value) return;\r\n        if (Array.isArray(value)) { value.forEach(walk); return; }\r\n        if (typeof value !== 'object') return;\r\n        if (isEvent(value)) {\r\n          var ev = normalizeEvent(value);\r\n          if (ev && !seen.has(ev.id)) { seen.add(ev.id); result.push(ev); }\r\n        }\r\n        Object.keys(value).forEach(function (k) { walk(value[k]); });\r\n      }\r\n      walk(data);\r\n      return result.sort(function (a, b) {\r\n        return a.startMinutes - b.startMinutes || a.title.localeCompare(b.title);\r\n      });\r\n    }\r\n\r\n    function roomMatches(event, roomKey) {\r\n      var room = rooms[roomKey];\r\n      if (!room) return true;\r\n      var title = String(event.roomTitle || '').toLowerCase();\r\n      var titleMatch = room.titles.some(function (rt) {\r\n        return title === rt.toLowerCase() || title.includes(rt.toLowerCase());\r\n      });\r\n      var sortMatch = room.sortOrders.includes(Number(event.roomSort));\r\n      return titleMatch || sortMatch;\r\n    }\r\n\r\n    function eventsForCurrentRoom() {\r\n      return allEvents.filter(function (e) { return roomMatches(e, currentRoom); });\r\n    }\r\n\r\n    function filteredEvents() {\r\n      var trainer = trainerFilter.value;\r\n      var training = trainingFilter.value;\r\n      var classType = classFilter.value;\r\n      return eventsForCurrentRoom().filter(function (e) {\r\n        if (trainer && e.trainerFull !== trainer) return false;\r\n        if (training && e.title !== training) return false;\r\n        if (classType && e.classType !== classType) return false;\r\n        return true;\r\n      });\r\n    }\r\n\r\n    function fillSelect(select, values, label) {\r\n      var current = select.value;\r\n      select.innerHTML = '';\r\n      var base = document.createElement('option');\r\n      base.value = ''; base.textContent = label;\r\n      select.appendChild(base);\r\n      values.forEach(function (v) {\r\n        var o = document.createElement('option');\r\n        o.value = v; o.textContent = v;\r\n        select.appendChild(o);\r\n      });\r\n      if (values.includes(current)) select.value = current;\r\n    }\r\n\r\n    function updateFilters() {\r\n      var src = eventsForCurrentRoom();\r\n      var trainers = Array.from(new Set(src.map(function (e) { return e.trainerFull; }).filter(Boolean))).sort();\r\n      var trainings = Array.from(new Set(src.map(function (e) { return e.title; }).filter(Boolean))).sort();\r\n      fillSelect(trainerFilter, trainers, '\u041f\u043e \u0442\u0440\u0435\u043d\u0435\u0440\u0443');\r\n      fillSelect(trainingFilter, trainings, '\u041f\u043e \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0435');\r\n    }\r\n\r\n    function getVisibleHours(events) {\r\n      var hours = Array.from(new Set(events.map(function (e) { return Math.floor(e.startMinutes \/ 60); })))\r\n        .sort(function (a, b) { return a - b; });\r\n      return hours.length ? hours : [9, 10, 11, 19, 20, 21];\r\n    }\r\n\r\n    function iconImgHtml(event, cls) {\r\n      return '<span class=\"' + cls + '\"><img src=\"' + escapeHtml(event.iconUrl) + '\" alt=\"\" draggable=\"false\" loading=\"lazy\" decoding=\"async\"><\/span>';\r\n    }\r\n\r\n    function renderDesktopTable(events) {\r\n      var hours = getVisibleHours(events);\r\n      var html = '<thead><tr><th><\/th>';\r\n      weekDays.forEach(function (d) {\r\n        html += '<th><div class=\"lf6-date\">' + escapeHtml(d.dateNumber) + '<\/div><div class=\"lf6-day\">' + escapeHtml(d.title) + '<\/div><\/th>';\r\n      });\r\n      html += '<\/tr><\/thead><tbody>';\r\n      if (!events.length) {\r\n        html += '<tr><td class=\"lf6-time-cell\"><\/td><td class=\"lf6-empty\" colspan=\"7\">\u0412 \u044d\u0442\u043e\u043c \u0437\u0430\u043b\u0435 \u0437\u0430\u043d\u044f\u0442\u0438\u0439 \u043d\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043d\u0435\u0434\u0435\u043b\u0435 \u043d\u0435\u0442<\/td><\/tr><\/tbody>';\r\n        table.innerHTML = html;\r\n        return;\r\n      }\r\n      hours.forEach(function (hour) {\r\n        html += '<tr><td class=\"lf6-time-cell\">' + hour + ':00<\/td>';\r\n        weekDays.forEach(function (day) {\r\n          var cellEvents = events.filter(function (e) {\r\n            return e.dateKey === day.dateKey && Math.floor(e.startMinutes \/ 60) === hour;\r\n          }).sort(function (a, b) { return a.startMinutes - b.startMinutes; });\r\n          html += '<td class=\"lf6-event-cell\"><div class=\"lf6-cell-inner\">';\r\n          cellEvents.forEach(function (e) {\r\n            html += '<div class=\"lf6-event\" style=\"--event-color:' + escapeHtml(e.color) + '\" data-id=\"' + escapeHtml(e.id) + '\">';\r\n            html += iconImgHtml(e, 'lf6-event-icon');\r\n            html += '<span class=\"lf6-event-title\" title=\"' + escapeHtml(e.title) + '\">' + escapeHtml(e.title) + '<\/span>';\r\n            html += '<span class=\"lf6-event-trainer\" title=\"' + escapeHtml(e.trainer) + '\">' + escapeHtml(e.trainer) + '<\/span>';\r\n            html += '<span class=\"lf6-event-time\">' + escapeHtml(e.startTime + '-' + e.endTime) + '<\/span>';\r\n            html += '<\/div>';\r\n          });\r\n          html += '<\/div><\/td>';\r\n        });\r\n        html += '<\/tr>';\r\n      });\r\n      html += '<\/tbody>';\r\n      table.innerHTML = html;\r\n      fitDesktopTitles();\r\n    }\r\n\r\n    function renderMobileList(events) {\r\n      if (!events.length) {\r\n        mobileList.innerHTML = '<div class=\"lf6-mobile-day\"><div class=\"lf6-mobile-events\">\u0412 \u044d\u0442\u043e\u043c \u0437\u0430\u043b\u0435 \u0437\u0430\u043d\u044f\u0442\u0438\u0439 \u043d\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043d\u0435\u0434\u0435\u043b\u0435 \u043d\u0435\u0442<\/div><\/div>';\r\n        return;\r\n      }\r\n      var html = '';\r\n      weekDays.forEach(function (day) {\r\n        var dayEvents = events.filter(function (e) { return e.dateKey === day.dateKey; })\r\n          .sort(function (a, b) { return a.startMinutes - b.startMinutes; });\r\n        if (!dayEvents.length) return;\r\n        html += '<section class=\"lf6-mobile-day\">';\r\n        html += '<div class=\"lf6-mobile-day-head\"><span class=\"lf6-mobile-date\">' + escapeHtml(day.dateNumber) + '<\/span><span class=\"lf6-mobile-name\">' + escapeHtml(day.title) + '<\/span><\/div>';\r\n        html += '<div class=\"lf6-mobile-events\">';\r\n        dayEvents.forEach(function (e) {\r\n          html += '<div class=\"lf6-mobile-row\">';\r\n          html += '<div class=\"lf6-mobile-time\">' + escapeHtml(e.startTime) + '<\/div>';\r\n          html += '<div class=\"lf6-mobile-card\" style=\"--event-color:' + escapeHtml(e.color) + '\" data-id=\"' + escapeHtml(e.id) + '\">';\r\n          html += '<span class=\"lf6-mobile-title-line\">' + iconImgHtml(e, 'lf6-mobile-icon') + '<span class=\"lf6-mobile-title\">' + escapeHtml(e.title) + '<\/span><\/span>';\r\n          html += '<span class=\"lf6-mobile-meta\">' + escapeHtml(e.trainer) + '<\/span>';\r\n          html += '<span class=\"lf6-mobile-meta\">' + escapeHtml(e.startTime + '-' + e.endTime) + '<\/span>';\r\n          html += '<\/div><\/div>';\r\n        });\r\n        html += '<\/div><\/section>';\r\n      });\r\n      mobileList.innerHTML = html;\r\n    }\r\n\r\n    function renderSchedule() {\r\n      var events = filteredEvents();\r\n      renderDesktopTable(events);\r\n      renderMobileList(events);\r\n    }\r\n\r\n    function fitDesktopTitles() {\r\n      if (window.innerWidth <= 760) return;\r\n      var titles = root.querySelectorAll('.lf6-event-title');\r\n      titles.forEach(function (t) {\r\n        t.style.fontSize = '12.2px';\r\n        var size = 12.2, min = 7.8;\r\n        requestAnimationFrame(function () {\r\n          while (size > min && t.scrollWidth > t.clientWidth + 1) {\r\n            size -= 0.4;\r\n            t.style.fontSize = size + 'px';\r\n          }\r\n        });\r\n      });\r\n    }\r\n\r\n    function ensureModal() {\r\n      var modal = document.getElementById('lf6-modal');\r\n      if (modal) return modal;\r\n      modal = document.createElement('div');\r\n      modal.id = 'lf6-modal';\r\n      modal.innerHTML =\r\n        '<div class=\"lf6-modal-box\">' +\r\n          '<div class=\"lf6-modal-icon\"><\/div>' +\r\n          '<div class=\"lf6-modal-title\"><\/div>' +\r\n          '<div class=\"lf6-modal-meta lf6-modal-time\"><\/div>' +\r\n          '<div class=\"lf6-modal-meta lf6-modal-trainer\"><\/div>' +\r\n          '<div class=\"lf6-modal-meta lf6-modal-room\"><\/div>' +\r\n          '<div class=\"lf6-modal-text\"><\/div>' +\r\n          '<button type=\"button\" class=\"lf6-modal-close\">\u0417\u0430\u043a\u0440\u044b\u0442\u044c<\/button>' +\r\n        '<\/div>';\r\n      document.body.appendChild(modal);\r\n      modal.addEventListener('click', function (ev) {\r\n        if (ev.target === modal || ev.target.classList.contains('lf6-modal-close')) {\r\n          modal.classList.remove('is-open');\r\n        }\r\n      });\r\n      document.addEventListener('keydown', function (ev) {\r\n        if (ev.key === 'Escape') modal.classList.remove('is-open');\r\n      });\r\n      return modal;\r\n    }\r\n\r\n    function fitModalTitle(el) {\r\n      el.style.fontSize = '';\r\n      var size = window.innerWidth <= 760 ? 24 : 32;\r\n      var min = 17;\r\n      el.style.fontSize = size + 'px';\r\n      requestAnimationFrame(function () {\r\n        while (size > min && (el.scrollHeight > 94 || el.scrollWidth > el.clientWidth + 2)) {\r\n          size -= 1;\r\n          el.style.fontSize = size + 'px';\r\n        }\r\n      });\r\n    }\r\n\r\n    function openEventModal(eventId) {\r\n      var event = allEvents.find(function (i) { return i.id === eventId; });\r\n      if (!event) return;\r\n      var modal = ensureModal();\r\n      modal.querySelector('.lf6-modal-icon').innerHTML =\r\n        '<img src=\"' + escapeHtml(event.iconUrl) + '\" alt=\"\" draggable=\"false\" loading=\"lazy\" decoding=\"async\">';\r\n      modal.querySelector('.lf6-modal-title').textContent = event.title;\r\n      modal.querySelector('.lf6-modal-time').textContent = '\u0412\u0440\u0435\u043c\u044f: ' + event.startTime + '-' + event.endTime + ' \/ ' + event.duration + ' \u043c\u0438\u043d';\r\n      modal.querySelector('.lf6-modal-trainer').textContent = event.trainerFull ? '\u0422\u0440\u0435\u043d\u0435\u0440: ' + event.trainerFull : '';\r\n      modal.querySelector('.lf6-modal-room').textContent = event.roomTitle ? '\u0417\u0430\u043b: ' + event.roomTitle : '';\r\n      modal.querySelector('.lf6-modal-text').innerHTML = event.description\r\n        ? safeDescription(event.description)\r\n        : '\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0437\u0430\u043d\u044f\u0442\u0438\u044f \u043f\u043e\u043a\u0430 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0432 1\u0421.';\r\n      modal.classList.add('is-open');\r\n      fitModalTitle(modal.querySelector('.lf6-modal-title'));\r\n    }\r\n\r\n    function processJson(data) {\r\n      if (rendered) return;\r\n      var events = flattenEvents(data);\r\n      if (!events.length) return;\r\n      rendered = true;\r\n      allEvents = events;\r\n      var startFromResponse =\r\n        data && data.page_data && data.page_data.params &&\r\n        data.page_data.params.send_filter && data.page_data.params.send_filter.start_date;\r\n      weekDays = makeWeekDays(startFromResponse);\r\n      updateFilters();\r\n      renderSchedule();\r\n      markReady();\r\n    }\r\n\r\n    function tryCaptureJson(url, text) {\r\n      if (!text || text.length < 50) return;\r\n      if (!\/reservi|widget-fit1c|\\\/v4\\\/\/i.test(String(url || ''))) return;\r\n      try { processJson(JSON.parse(text)); } catch (e) {}\r\n    }\r\n\r\n    function installCapture() {\r\n      if (window.__lofitOneCaptureInstalled) return;\r\n      window.__lofitOneCaptureInstalled = true;\r\n\r\n      var originalFetch = window.fetch;\r\n      if (originalFetch) {\r\n        window.fetch = function () {\r\n          return originalFetch.apply(this, arguments).then(function (response) {\r\n            try {\r\n              var responseUrl = response.url || '';\r\n              response.clone().text().then(function (text) {\r\n                tryCaptureJson(responseUrl, text);\r\n              }).catch(function () {});\r\n            } catch (e) {}\r\n            return response;\r\n          });\r\n        };\r\n      }\r\n\r\n      var originalOpen = XMLHttpRequest.prototype.open;\r\n      var originalSend = XMLHttpRequest.prototype.send;\r\n      XMLHttpRequest.prototype.open = function (method, url) {\r\n        this.__lofitOneUrl = url;\r\n        return originalOpen.apply(this, arguments);\r\n      };\r\n      XMLHttpRequest.prototype.send = function () {\r\n        this.addEventListener('load', function () {\r\n          try { tryCaptureJson(this.__lofitOneUrl || '', this.responseText || ''); } catch (e) {}\r\n        });\r\n        return originalSend.apply(this, arguments);\r\n      };\r\n    }\r\n\r\n    function loadHiddenWidget() {\r\n      installCapture();\r\n      hiddenWidget.innerHTML = '';\r\n      \r\n      var startDate = getStartDateString();\r\n      var cacheBuster = '_cb=' + Date.now();\r\n      \r\n      var script = document.createElement('script');\r\n      script.src = WIDGET_SCRIPT + '?' + cacheBuster;\r\n      script.setAttribute('data-fit-apikey', API_KEY);\r\n      script.setAttribute('data-type', 'schedule');\r\n      script.setAttribute('data-theme', 'dark');\r\n      script.setAttribute('data-settings', JSON.stringify({\r\n        schedule: { \r\n          blocks_show: { navigation: false },\r\n          start_date: startDate\r\n        },\r\n        router: { off: true },\r\n        url_data: { \r\n          page: 'schedule', \r\n          type: 'group', \r\n          club_id: CLUB_ID,\r\n          start_date: startDate\r\n        }\r\n      }));\r\n      hiddenWidget.appendChild(script);\r\n      \r\n      setTimeout(function () {\r\n        if (!rendered) {\r\n          markError('\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0437 1\u0421. \u041f\u0440\u043e\u0432\u0435\u0440\u044c, \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 v4\/ \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Network \u2192 Fetch\/XHR.');\r\n        }\r\n      }, 12000);\r\n    }\r\n\r\n    table.addEventListener('click', function (ev) {\r\n      var card = ev.target.closest('.lf6-event');\r\n      if (!card) return;\r\n      openEventModal(card.dataset.id);\r\n    });\r\n    mobileList.addEventListener('click', function (ev) {\r\n      var card = ev.target.closest('.lf6-mobile-card');\r\n      if (!card) return;\r\n      openEventModal(card.dataset.id);\r\n    });\r\n\r\n    roomButtons.forEach(function (button) {\r\n      button.addEventListener('click', function () {\r\n        roomButtons.forEach(function (i) { i.classList.remove('is-active'); });\r\n        button.classList.add('is-active');\r\n        currentRoom = button.dataset.room;\r\n        trainerFilter.value = '';\r\n        trainingFilter.value = '';\r\n        classFilter.value = '';\r\n        updateFilters();\r\n        renderSchedule();\r\n      });\r\n    });\r\n\r\n    trainerFilter.addEventListener('change', renderSchedule);\r\n    trainingFilter.addEventListener('change', renderSchedule);\r\n    classFilter.addEventListener('change', renderSchedule);\r\n\r\n    window.addEventListener('resize', function () { setTimeout(fitDesktopTitles, 150); });\r\n\r\n    loadHiddenWidget();\r\n  }\r\n\r\n  if (document.readyState === 'loading') {\r\n    document.addEventListener('DOMContentLoaded', initLofitSchedule);\r\n  } else {\r\n    initLofitSchedule();\r\n  }\r\n})();\r\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441 1\u0421 \u0412\u042b\u0411\u041e\u0420 \u0417\u0410\u041b\u0410 \u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u0437\u0430\u043b \u041c\u0430\u043b\u044b\u0439 \u0437\u0430\u043b \u0417\u0430\u043b \u0435\u0434\u0438\u043d\u043e\u0431\u043e\u0440\u0441\u0442\u0432 \u0417\u043e\u043d\u0430 \u043a\u0440\u043e\u0441\u0441\u0444\u0438\u0442\u0430 \u0424\u0418\u041b\u042c\u0422\u0420 \u041f\u043e \u0442\u0440\u0435\u043d\u0435\u0440\u0443 \u041f\u043e \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0435 \u041f\u043e \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0421\u0438\u043b\u043e\u0432\u044b\u0435\u041a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435\u0422\u0430\u043d\u0446\u0435\u0432\u0430\u043b\u044c\u043d\u044b\u0435 \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0437 1\u0421\u2026 \u0421\u0438\u043b\u043e\u0432\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u041a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0421\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0422\u0430\u043d\u0446\u0435\u0432\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-5450","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/lofit.ru\/index.php?rest_route=\/wp\/v2\/pages\/5450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lofit.ru\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lofit.ru\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lofit.ru\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lofit.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5450"}],"version-history":[{"count":112,"href":"https:\/\/lofit.ru\/index.php?rest_route=\/wp\/v2\/pages\/5450\/revisions"}],"predecessor-version":[{"id":5649,"href":"https:\/\/lofit.ru\/index.php?rest_route=\/wp\/v2\/pages\/5450\/revisions\/5649"}],"wp:attachment":[{"href":"https:\/\/lofit.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}