/* Стили страниц панели. Перенесены из встроенных <style> блоков Blade (в Livewire-ответах они повторно уходили клиенту). Разделы идут в прежнем порядке подключения. */

/* ===== Главная тренера: виджет «Обзор» ===== */
            .tow{--surface:#FFFFFF;--surface-2:#EFF2EA;--line:#E2E5DD;--ink:#14170F;--muted:#767D6E;--accent:#1F7A4D;--accent-strong:#145C3A;--accent-soft:#E3F1E7;}
            .tow .tow-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px;}
            .tow .tow-tile{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:20px;}
            .tow .tow-tile .label{font-size:13px;color:var(--muted);margin-bottom:8px;}
            .tow .tow-tile .value{font-family:'JetBrains Mono',monospace;font-size:30px;font-weight:700;color:var(--ink);}
            .tow .tow-tile .delta{font-size:12px;color:var(--accent);font-weight:600;margin-top:6px;}
            .tow .tow-tile .delta.down{color:#B3261E;}

            .tow .tow-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:20px;}
            .tow .tow-h2{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:16px;margin-bottom:14px;}
            .tow .tow-empty{font-size:13px;color:var(--muted);}

            .tow .tow-pr-card{margin-bottom:16px;}
            .tow .tow-pr-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--surface-2);}
            .tow .tow-pr-row:last-child{border-bottom:none;}
            .tow .tow-pr-icon{width:26px;height:26px;border-radius:7px;background:var(--accent-soft);color:var(--accent-strong);display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0;}
            .tow .tow-pr-text{flex:1;min-width:0;font-size:13px;overflow-wrap:anywhere;}
            .tow .tow-pr-text b{font-weight:600;}
            .tow .tow-pr-delta{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--accent);font-weight:700;white-space:nowrap;}

            .tow .tow-grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start;}

            .tow .rank-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--surface-2);}
            .tow .rank-row:last-child{border-bottom:none;}
            .tow .rank-num{width:22px;height:22px;border-radius:6px;background:var(--accent-soft);color:var(--accent-strong);font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
            .tow .rank-num.gold{background:#F5C518;color:#5C4400;}
            .tow .rank-num.silver{background:#D6D9DC;color:#4A4E52;}
            .tow .rank-num.bronze{background:#D79A6A;color:#5C3A1E;}
            .tow .rank-name{flex:1;min-width:0;font-size:13px;font-weight:600;color:var(--ink);overflow-wrap:anywhere;}
            .tow .rank-count{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--muted);}

            .tow .alert-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--surface-2);}
            .tow .alert-row:last-child{border-bottom:none;}
            .tow .alert-name{font-size:13px;font-weight:600;color:var(--ink);min-width:0;overflow-wrap:anywhere;}
            .tow .alert-days{font-family:'JetBrains Mono',monospace;font-size:12px;color:#B3621E;background:#FBEEE4;padding:3px 9px;border-radius:999px;font-weight:700;white-space:nowrap;}

            @media (max-width:768px){
                .tow .tow-grid2{grid-template-columns:1fr;}
            }
            @media (max-width:480px){
                .tow .tow-tiles{grid-template-columns:1fr;gap:8px;}
                .tow .tow-tile{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;padding:14px 16px;}
                .tow .tow-tile .label{margin-bottom:0;}
                .tow .tow-tile .value{font-size:22px;}
                .tow .tow-tile .delta{flex-basis:100%;text-align:right;margin-top:2px;}
            }

/* ===== Главная клиента: виджет прогресса ===== */
            .cpw{--surface:#FFFFFF;--surface-2:#EFF2EA;--line:#E2E5DD;--ink:#14170F;--muted:#767D6E;--accent:#1F7A4D;--accent-strong:#145C3A;--accent-soft:#E3F1E7;}
            .cpw .cpw-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:24px;}

            .cpw .cpw-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:12px;flex-wrap:wrap;}
            .cpw .cpw-label{font-size:13px;color:var(--muted);}
            .cpw .cpw-streak{display:flex;align-items:center;gap:6px;background:var(--accent-soft);color:var(--accent-strong);border-radius:999px;padding:6px 12px;font-size:12px;font-weight:600;white-space:nowrap;}
            .cpw .cpw-streak svg{width:13px;height:13px;}

            .cpw .cpw-value-row{display:flex;align-items:baseline;gap:10px;margin-bottom:20px;}
            .cpw .cpw-count{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:38px;line-height:1;}
            .cpw .cpw-count-label{font-size:13px;color:var(--muted);}

            .cpw .cpw-month-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px;}
            .cpw .cpw-month-name{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:14px;}
            .cpw .cpw-weekday-row{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px;}
            .cpw .cpw-weekday-row span{text-align:center;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-family:'JetBrains Mono',monospace;}

            .cpw .cpw-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:14px;}
            .cpw .cpw-cell{aspect-ratio:1;border-radius:8px;display:flex;align-items:center;justify-content:center;font-family:'JetBrains Mono',monospace;font-size:11.5px;}
            .cpw .cpw-cell.out{color:#d3d6c9;}
            .cpw .cpw-cell.empty{background:var(--surface-2);color:var(--muted);}
            .cpw .cpw-cell.done{background:var(--accent);color:#fff;font-weight:700;}
            .cpw .cpw-cell.today{background:var(--surface);border:1.5px dashed var(--accent);color:var(--accent-strong);font-weight:700;}

            .cpw .cpw-legend{display:flex;gap:16px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--line);}
            .cpw .cpw-legend-item{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted);}
            .cpw .cpw-legend-swatch{width:10px;height:10px;border-radius:3px;flex-shrink:0;}
            .cpw .cpw-legend-swatch.done{background:var(--accent);}
            .cpw .cpw-legend-swatch.today{background:var(--surface);border:1.5px dashed var(--accent);}
            .cpw .cpw-legend-swatch.empty{background:var(--surface-2);}

            .cpw .cpw-empty-note{text-align:center;color:var(--accent-strong);font-weight:600;font-size:13px;margin-top:4px;}

            .cpw .cpw-connect-title{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:18px;margin-bottom:8px;}
            .cpw .cpw-connect-text{font-size:13px;color:var(--muted);margin-bottom:16px;}
            .cpw .cpw-connect-row{display:flex;gap:10px;}
            .cpw .cpw-connect-row input{flex:1;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-family:'JetBrains Mono',monospace;font-size:14px;color:var(--ink);}
            .cpw .cpw-connect-row input:focus{outline:none;border-color:var(--accent);background:#fff;}
            .cpw .cpw-connect-btn{padding:10px 18px;font-size:13px;font-weight:600;border-radius:8px;cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:#fff;white-space:nowrap;}
            .cpw .cpw-connect-btn:hover{background:var(--accent-strong);border-color:var(--accent-strong);}

            @media (max-width:480px){
                .cpw .cpw-connect-row{flex-direction:column;}
                .cpw .cpw-connect-row input{font-size:16px;}
            }

/* ===== Клиенты ===== */
            .clients-page{--bg:#F7F8F4;--surface:#FFFFFF;--surface-2:#EFF2EA;--line:#E2E5DD;--ink:#14170F;--muted:#767D6E;--accent:#1F7A4D;--accent-strong:#145C3A;--accent-soft:#E3F1E7;--danger:#B3261E;--danger-soft:#FBEAE9;--warn:#B3621E;--warn-soft:#FBEEE4;}
            .clients-page .cp-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:24px;margin-bottom:16px;}
            .clients-page .cp-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:4px;}
            .clients-page .cp-nickname{font-size:20px;font-weight:700;min-width:0;overflow-wrap:anywhere;}
            .clients-page .cp-code-row{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap;}
            .clients-page .cp-code{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--muted);letter-spacing:0.03em;cursor:pointer;border-bottom:1px dashed var(--muted);}
            .clients-page .cp-code:hover{color:var(--accent);border-color:var(--accent);}
            .clients-page .cp-copied{color:var(--accent);font-size:12px;font-weight:700;}
            .clients-page .cp-created{font-size:12px;color:var(--muted);}
            [x-cloak]{display:none;}
            .clients-page .cp-status{font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap;}
            .clients-page .cp-status-pending{background:var(--danger-soft);color:var(--danger);}
            .clients-page .cp-status-active{background:var(--accent-soft);color:var(--accent-strong);}
            .clients-page .cp-status-blocked{background:var(--warn-soft);color:var(--warn);}
            .clients-page .cp-status-disabled{background:var(--danger-soft);color:var(--danger);}
            .clients-page .cp-card.is-limited{border-color:#EBD3BE;}
            .clients-page .cp-card.is-off{background:var(--surface-2);border-style:dashed;}
            .clients-page .cp-card.is-off .cp-nickname,.clients-page .cp-card.is-off .cp-realname{color:var(--muted);}
            .clients-page .cp-block-note{font-size:13px;line-height:1.5;color:var(--muted);margin-top:10px;}
            .clients-page .cp-reason{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.5;overflow-wrap:anywhere;}
            .clients-page .cp-reason small{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px;}
            .clients-page .cp-realname{font-size:14px;color:var(--muted);margin-bottom:16px;overflow-wrap:anywhere;}
            .clients-page .cp-divider{border:none;border-top:1px solid var(--line);margin-bottom:16px;}
            .clients-page .cp-stats{display:flex;gap:32px;margin-bottom:16px;}
            .clients-page .cp-stats strong{display:block;font-size:20px;font-weight:700;}
            .clients-page .cp-stats span{font-size:12px;color:var(--muted);}
            .clients-page .cp-footer{display:flex;justify-content:space-between;align-items:center;font-family:'JetBrains Mono',monospace;font-size:13px;gap:12px;}
            .clients-page .cp-footer > span:first-child{min-width:0;overflow-wrap:anywhere;}
            .clients-page .cp-footer a{color:var(--accent);font-weight:700;text-decoration:none;}
            .clients-page .cp-footer .cp-reset-password,
            .clients-page .cp-footer .cp-suspend-client,
            .clients-page .cp-footer .cp-unlock,
            .clients-page .cp-footer .cp-disable-client{background:none;border:none;padding:0;font-family:inherit;font-size:13px;color:var(--muted);cursor:pointer;text-decoration:underline;text-underline-offset:2px;}
            .clients-page .cp-footer .cp-reset-password:hover,
            .clients-page .cp-footer .cp-suspend-client:hover,
            .clients-page .cp-footer .cp-disable-client:hover{color:var(--danger);}
            /* «разблокировать» - главное действие карточки ограниченного клиента, поэтому акцентом, а не серой ссылкой */
            .clients-page .cp-footer .cp-unlock{color:var(--accent-strong);font-weight:700;}
            .clients-page .cp-footer .cp-unlock:hover{color:var(--accent);}
            .clients-page .cp-footer-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap;justify-content:flex-end;}
            .clients-page .cp-search{position:relative;margin-bottom:16px;}
            .clients-page .cp-search svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--muted);pointer-events:none;}
            .clients-page .cp-search input{width:100%;height:46px;padding:0 14px 0 42px;background:var(--surface);border:1px solid var(--line);border-radius:12px;font-family:inherit;font-size:15px;line-height:normal;color:var(--ink);box-shadow:none;}
            .clients-page .cp-search input::placeholder{color:var(--muted);}
            .clients-page .cp-search input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}
            .clients-page .cp-empty{text-align:center;color:var(--muted);padding:40px;background:var(--surface);border:1px dashed var(--line);border-radius:16px;margin-bottom:16px;}
            .clients-page .cp-empty strong{display:block;color:var(--ink);font-size:15px;font-weight:600;margin-bottom:4px;}

            .clients-page .cp-code-row-mobile,
            .clients-page .cp-created-mobile,
            .clients-page .cp-last-mobile,
            .clients-page .cp-footer-mobile{display:none;}

            @media (max-width:480px){
                .clients-page .cp-search{margin-bottom:12px;}
                .clients-page .cp-search input{height:44px;font-size:16px;}
                .clients-page .cp-stats{flex-wrap:wrap;row-gap:10px;}
                .clients-page .cp-footer{flex-wrap:wrap;align-items:flex-start;row-gap:10px;}

                .clients-page .cp-card{position:relative;padding:16px;}
                .clients-page .cp-nickname{font-size:17px;}

                .clients-page .cp-code-row-desktop,
                .clients-page .cp-footer-desktop{display:none;}

                .clients-page .cp-code-row-mobile{
                    display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;
                    padding:10px 12px;background:var(--surface-2);border-radius:10px;
                }
                .clients-page .cp-code-left{display:flex;flex-direction:column;gap:2px;}
                .clients-page .cp-code-left .lbl{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;}
                .clients-page .cp-code-mvalue{font-family:'JetBrains Mono',monospace;font-size:15px;font-weight:700;color:var(--ink);}
                .clients-page .cp-copy-btn{border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:8px 12px;font-size:11.5px;font-weight:600;color:var(--accent-strong);flex-shrink:0;}
                .clients-page .cp-created-mobile{display:block;font-size:11px;color:var(--muted);margin:-8px 0 14px;}
                .clients-page .cp-created-mobile.cp-created-block{margin:0 0 14px;}
                .clients-page .cp-last-mobile{display:block;font-size:12px;color:var(--muted);margin-bottom:12px;overflow-wrap:anywhere;}

                .clients-page .cp-footer-mobile{display:flex;gap:10px;}
                .clients-page .cp-profile-btn{flex:1;text-align:center;padding:11px;font-size:13px;font-weight:700;border-radius:10px;border:1px solid var(--accent);background:var(--accent);color:#fff;text-decoration:none;}
                .clients-page .cp-unlock-btn{flex:1;text-align:center;padding:11px;font-size:13px;font-weight:700;border-radius:10px;border:1px solid var(--accent);background:var(--accent);color:#fff;}
                .clients-page .cp-more-btn{width:42px;height:42px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--muted);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:18px;letter-spacing:1px;}

                /* над кнопкой ⋮ (низ карточки): с тремя пунктами меню сверху закрывало бы содержимое карточки */
                .clients-page .cp-menu{position:absolute;right:16px;bottom:68px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(20,23,15,.18);overflow:hidden;z-index:10;width:220px;}
                .clients-page .cp-menu button,
                .clients-page .cp-menu a{display:block;width:100%;text-align:left;padding:13px 16px;background:none;border:none;font-size:13px;color:var(--ink);font-family:inherit;text-decoration:none;}
                .clients-page .cp-menu button:hover,
                .clients-page .cp-menu a:hover{background:var(--surface-2);}
                .clients-page .cp-menu button.red{color:var(--danger);}
                .clients-page .cp-menu button.red:hover{background:var(--danger-soft);}
                .clients-page .cp-menu .hint{padding:10px 16px;font-size:11px;color:var(--muted);border-top:1px solid var(--line);}
            }

            /* header "+ Подключить клиента" action lives outside .clients-page (page header slot) */
            @media (max-width:480px){
                button[wire\:click="mountAction('connectClient')"]{
                    width:38px;height:38px;padding:0;border-radius:11px;
                    font-size:0;display:flex;align-items:center;justify-content:center;
                }
                button[wire\:click="mountAction('connectClient')"]::before{
                    content:"+";font-size:20px;line-height:1;
                }
            }

/* ===== Профиль клиента ===== */
            .cprofile-page{--bg:#F7F8F4;--surface:#FFFFFF;--surface-2:#EFF2EA;--line:#E2E5DD;--ink:#14170F;--muted:#767D6E;--accent:#1F7A4D;--accent-strong:#145C3A;--accent-soft:#E3F1E7;}

            .cprofile-page .crumb{font-size:13px;color:var(--muted);margin-bottom:14px;overflow-wrap:anywhere;}
            .cprofile-page .crumb a{color:inherit;text-decoration:none;}
            .cprofile-page .crumb a:hover{color:var(--accent-strong);}

            .cprofile-page .cph-head{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:24px 28px;margin-bottom:24px;display:flex;gap:20px;align-items:flex-start;}
            .cprofile-page .cph-avatar{width:64px;height:64px;border-radius:50%;background:var(--surface-2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:'JetBrains Mono',monospace;font-size:20px;flex-shrink:0;color:var(--accent-strong);font-weight:700;}
            .cprofile-page .cph-info{flex:1;min-width:0;}
            .cprofile-page .cph-nick-row{display:flex;align-items:baseline;gap:8px;margin-bottom:6px;flex-wrap:wrap;}
            .cprofile-page .cph-nick-row input{background:transparent;border:none;border-bottom:1px dashed var(--line);color:var(--ink);font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:24px;letter-spacing:-0.01em;padding:0 0 2px;flex:1;min-width:120px;}
            .cprofile-page .cph-nick-row input:hover{border-color:var(--accent);}
            .cprofile-page .cph-nick-row input:focus{outline:none;border-color:var(--accent);}
            .cprofile-page .cph-real{font-size:13px;color:var(--muted);margin-bottom:8px;overflow-wrap:anywhere;}
            .cprofile-page .cph-real b{color:var(--ink);font-weight:600;}
            .cprofile-page .cph-connected{font-size:12px;color:var(--muted);font-family:'JetBrains Mono',monospace;}

            .cprofile-page .section{margin-bottom:28px;}
            .cprofile-page .section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;flex-wrap:wrap;gap:8px;}
            .cprofile-page .section-title{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:16px;letter-spacing:-0.01em;}
            .cprofile-page .cph-btn{padding:9px 14px;font-size:12.5px;font-weight:600;border-radius:9px;cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:#fff;display:inline-block;}
            .cprofile-page .cph-btn:hover{background:var(--accent-strong);border-color:var(--accent-strong);}

            .cprofile-page .pr-strip{display:flex;border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:28px;}
            .cprofile-page .pr{flex:1;padding:16px 20px;border-right:1px solid var(--line);text-align:center;background:var(--surface);}
            .cprofile-page .pr:last-child{border-right:none;}
            .cprofile-page .pr .v{font-family:'JetBrains Mono',monospace;font-size:21px;font-weight:700;color:var(--accent-strong);}
            .cprofile-page .pr .l{font-size:11px;color:var(--muted);margin-top:4px;text-transform:uppercase;letter-spacing:.04em;}

            .cprofile-page .prog-list{display:flex;flex-direction:column;gap:10px;}
            .cprofile-page .prog-row{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 20px;display:grid;grid-template-columns:1fr 110px 90px 72px;align-items:center;gap:12px;}
            .cprofile-page .prog-row > div:first-child{min-width:0;}
            .cprofile-page .prog-row .name{font-weight:600;font-size:14px;overflow-wrap:anywhere;}
            .cprofile-page .prog-row .meta{font-size:12px;color:var(--muted);margin-top:2px;overflow-wrap:anywhere;}
            .cprofile-page .badge-sent{font-size:10px;text-transform:uppercase;letter-spacing:.06em;font-family:'JetBrains Mono',monospace;color:var(--accent-strong);background:var(--accent-soft);border-radius:999px;padding:4px 10px;width:fit-content;}
            .cprofile-page .badge-done{font-size:10px;text-transform:uppercase;letter-spacing:.06em;font-family:'JetBrains Mono',monospace;color:var(--muted);background:var(--surface-2);border-radius:999px;padding:4px 10px;width:fit-content;}
            .cprofile-page .prog-progress{font-size:12px;color:var(--muted);text-align:right;font-family:'JetBrains Mono',monospace;}
            .cprofile-page .prog-progress b{color:var(--ink);}
            .cprofile-page .prog-edit-btn{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--muted);display:flex;align-items:center;justify-content:center;cursor:pointer;justify-self:end;}
            .cprofile-page .prog-edit-btn:hover{border-color:var(--accent);color:var(--accent-strong);background:var(--accent-soft);}
            .cprofile-page .prog-edit-btn svg{width:14px;height:14px;}
            .cprofile-page .prog-btns{display:flex;gap:6px;justify-self:end;}
            /* корзина - та же геометрия, что у карандаша; наведение красным, как опасное действие в окне подтверждения */
            .cprofile-page .prog-edit-btn.del:hover{border-color:#B3261E;color:#B3261E;background:#FBEAE9;}
            .cprofile-page .banner{display:flex;gap:12px;align-items:flex-start;border-radius:14px;padding:14px 16px;margin-bottom:24px;font-size:14px;line-height:1.5;}
            .cprofile-page .banner svg{flex:none;width:20px;height:20px;margin-top:1px;}
            .cprofile-page .banner b{font-weight:700;}
            .cprofile-page .banner > div{flex:1 1 0;min-width:0;}
            .cprofile-page .banner .why{display:block;margin-top:4px;overflow-wrap:anywhere;}
            .cprofile-page .banner .btn-unlock{margin-left:auto;flex:none;padding:8px 12px;font-size:12.5px;font-weight:600;line-height:1.3;border-radius:9px;cursor:pointer;border:1px solid #E0BFA3;background:#fff;color:#8F4E18;white-space:nowrap;}
            .cprofile-page .banner .btn-unlock:hover{background:#FBEEE4;}
            .cprofile-page .banner-warn{background:#FBEEE4;color:#8F4E18;border:1px solid #EBD3BE;}
            .cprofile-page .banner-danger{background:#FBEAE9;color:#8C1D17;border:1px solid #F0CFCC;}
            .cprofile-page .section-empty{text-align:center;color:var(--muted);padding:32px;background:var(--surface);border:1px dashed var(--line);border-radius:16px;}

            .cprofile-page .cph-tabs{display:flex;justify-content:center;margin:0 auto 24px;width:fit-content;background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:4px;gap:2px;}
            .cprofile-page .cph-tabs button{border:none;background:transparent;padding:9px 18px;font-size:13.5px;font-weight:600;color:var(--muted);border-radius:8px;cursor:pointer;font-family:'Inter',sans-serif;}
            .cprofile-page .cph-tabs button.active{background:var(--accent-soft);color:var(--accent-strong);}

            .cprofile-page .hist-toolbar{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-bottom:16px;}
            .cprofile-page .field{display:flex;flex-direction:column;gap:4px;}
            .cprofile-page .field label{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-family:'JetBrains Mono',monospace;}
            .cprofile-page .field input{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:9px 12px;font-size:13px;color:var(--ink);font-family:'Inter',sans-serif;min-width:150px;}
            .cprofile-page .field input:focus{outline:none;border-color:var(--accent);}
            .cprofile-page .field input[type="date"]{font-family:'JetBrains Mono',monospace;min-width:130px;}
            .cprofile-page .field.grow{flex:1;min-width:160px;}
            .cprofile-page .date-row{display:flex;gap:10px;}

            .cprofile-page .cph-btn-ghost{border:1px solid var(--line);background:var(--surface);color:var(--ink);}
            .cprofile-page .cph-btn-ghost:hover{color:#fff;}

            /* один непрерывный "фид": группы-недели как разделители внутри одной карточки */
            .cprofile-page .wt-feed{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface);}
            .cprofile-page .week-head{padding:12px 16px 8px;background:var(--surface);}
            .cprofile-page .week-head .t{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:13px;}
            .cprofile-page .week-head .m{font-size:11.5px;color:var(--muted);margin-top:1px;}
            .cprofile-page .week-group + .week-group .week-head{border-top:1px solid var(--line);margin-top:2px;}

            .cprofile-page .wt-row-wrap{border-top:1px solid var(--line);}
            .cprofile-page .week-head + .wt-row-wrap{border-top:none;}
            .cprofile-page .wt-row{display:grid;grid-template-columns:88px 1fr 118px 92px;gap:10px;align-items:center;padding:13px 16px;cursor:pointer;}
            .cprofile-page .wt-row.static{cursor:default;}
            .cprofile-page .wt-row .date{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--muted);}
            .cprofile-page .wt-row > div{min-width:0;}
            .cprofile-page .wt-row .name{font-weight:600;font-size:13.5px;overflow-wrap:anywhere;}
            .cprofile-page .wt-row .meta{font-size:11.5px;color:var(--muted);margin-top:2px;overflow-wrap:anywhere;}

            .cprofile-page .wt-badge{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-strong);background:var(--accent-soft);border-radius:999px;padding:4px 10px;width:fit-content;font-family:'JetBrains Mono',monospace;}
            .cprofile-page .wt-badge.planned{color:var(--muted);background:var(--bg);border:1px solid var(--line);}
            /* Тренировку закрыл тренер, а не клиент (ТЗ п. 2.1) — жёлтый, как в истории клиента. */
            .cprofile-page .wt-badge.by-trainer{color:#8A5A00;background:#FDF3D7;}

            .cprofile-page .wt-toggle{justify-self:end;display:flex;align-items:center;gap:5px;background:none;border:none;color:var(--accent-strong);font-size:12px;font-weight:600;cursor:pointer;font-family:'Inter',sans-serif;padding:6px 8px;border-radius:8px;}
            .cprofile-page .wt-toggle:hover{background:var(--surface-2);}
            .cprofile-page .wt-toggle svg{width:12px;height:12px;transition:transform .25s ease;}
            .cprofile-page .wt-row-wrap.open .wt-toggle svg{transform:rotate(180deg);}

            .cprofile-page .wt-expand{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease;background:var(--surface-2);}
            .cprofile-page .wt-row-wrap.open .wt-expand{grid-template-rows:1fr;}
            .cprofile-page .wt-expand-inner{overflow:hidden;padding:14px 16px 16px;}
            .cprofile-page .wt-ex-group{border-top:1px solid var(--line);padding-top:10px;margin-top:10px;}
            .cprofile-page .wt-ex-group:first-child{border-top:none;padding-top:0;margin-top:0;}
            .cprofile-page .wt-ex-name{font-weight:600;font-size:13px;margin-bottom:6px;overflow-wrap:anywhere;}
            .cprofile-page .wt-set-row{display:flex;align-items:baseline;gap:10px;padding:3px 0;font-size:12.5px;}
            .cprofile-page .wt-set-row .val{font-family:'JetBrains Mono',monospace;font-weight:600;overflow-wrap:anywhere;}
            /* НОВОЕ: серый кружок номера подхода (не зелёный — это история, не идущая тренировка). */
            .cprofile-page .set-num{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#D2D7CA;color:#3A4034;font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;flex-shrink:0;}
            .cprofile-page .set-num.extra{background:transparent;box-shadow:inset 0 0 0 1.5px #A9B09F;color:#3A4034;}
            /* НОВОЕ: комментарий клиента к подходу — курсивом, обычным весом, в скобках после цифр. */
            .cprofile-page .wt-set-row .val .cmt{font-family:'Inter',sans-serif;font-weight:400;color:var(--muted);font-style:italic;}
            .cprofile-page .wt-empty-inline{font-size:12.5px;color:var(--muted);}

            .cprofile-page .wt-expand-foot{display:flex;justify-content:flex-end;gap:10px;padding-top:14px;margin-top:4px;border-top:1px solid var(--line);}

            .cprofile-page .wt-empty{text-align:center;color:var(--muted);padding:36px;background:var(--surface);border:1px dashed var(--line);border-radius:16px;}

            /* Отчёт по дню — модальное окно с затемнением фона, не инлайн-разворот */
            .cprofile-page .report-overlay{position:fixed;inset:0;background:rgba(20,23,15,.45);display:flex;align-items:center;justify-content:center;padding:24px;z-index:100;opacity:0;pointer-events:none;transition:opacity .18s ease;}
            .cprofile-page .report-overlay.open{opacity:1;pointer-events:auto;}
            .cprofile-page .report-modal{background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 64px rgba(20,23,15,.28);width:100%;max-width:640px;max-height:85vh;display:flex;flex-direction:column;overflow:hidden;transform:translateY(10px) scale(.98);transition:transform .18s ease;}
            .cprofile-page .report-overlay.open .report-modal{transform:none;}
            .cprofile-page .modal-close{border:none;background:var(--surface-2);color:var(--muted);width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;}
            .cprofile-page .modal-close:hover{background:var(--line);color:var(--ink);}
            .cprofile-page .modal-close svg{width:12px;height:12px;}
            .cprofile-page .day-report-inner{display:flex;flex-direction:column;min-height:0;}
            .cprofile-page .day-report-head{display:flex;justify-content:space-between;align-items:flex-start;padding:16px 18px;border-bottom:1px solid var(--line);gap:12px;flex-wrap:wrap;flex-shrink:0;}
            .cprofile-page .day-report-head-actions{display:flex;align-items:center;gap:8px;}
            .cprofile-page .day-report-title{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:14px;}
            .cprofile-page .day-report-sub{font-size:11.5px;color:var(--muted);margin-top:2px;}
            .cprofile-page .day-report-scroll{overflow:auto;}
            .cprofile-page .day-report-table{width:100%;border-collapse:collapse;min-width:480px;}
            .cprofile-page .day-report-table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-family:'JetBrains Mono',monospace;padding:9px 14px;background:var(--surface-2);border-bottom:1px solid var(--line);white-space:nowrap;}
            .cprofile-page .day-report-table td{padding:8px 14px;font-size:12px;border-bottom:1px solid var(--surface-2);white-space:nowrap;}
            .cprofile-page .day-report-table td:first-child{font-family:'JetBrains Mono',monospace;color:var(--muted);}
            .cprofile-page .day-report-table tr.ex-row td{padding-top:12px;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:12.5px;color:var(--ink);border-bottom:1px solid var(--line);background:var(--surface);}
            .cprofile-page .day-report-table td.val{font-family:'JetBrains Mono',monospace;}
            .cprofile-page .day-report-table td.val.empty{color:#c7cbbc;}
            /* НОВОЕ: ячейка с комментарием переносится по словам в пределах 120–220px,
               иначе длинный комментарий растягивает таблицу до нечитаемой ширины. */
            .cprofile-page .day-report-table td.val .cell{display:block;min-width:120px;max-width:220px;white-space:normal;overflow-wrap:anywhere;}
            .cprofile-page .day-report-table td:first-child,
            .cprofile-page .day-report-table th:first-child{position:sticky;left:0;background:var(--surface);z-index:2;box-shadow:1px 0 0 var(--line);}
            .cprofile-page .day-report-table th:first-child{background:var(--surface-2);}
            .cprofile-page .scroll-hint{display:none;font-size:11px;color:var(--muted);text-align:center;padding:8px;background:var(--surface-2);border-top:1px solid var(--line);flex-shrink:0;}

            @media (max-width:640px){
                .cprofile-page .wt-row{grid-template-columns:70px 1fr 74px;grid-template-areas:"date name toggle" ". status .";row-gap:6px;}
                .cprofile-page .wt-row .date{grid-area:date;}
                .cprofile-page .wt-row > div{grid-area:name;}
                .cprofile-page .wt-row .wt-badge{grid-area:status;justify-self:start;}
                .cprofile-page .wt-toggle{grid-area:toggle;}
            }

            @media (max-width:768px){
                .cprofile-page .prog-row{
                    grid-template-columns:1fr auto;
                    grid-template-areas:"name edit" "status progress";
                    row-gap:8px;
                }
                .cprofile-page .prog-row > div:first-child{grid-area:name;}
                .cprofile-page .prog-row > div:nth-child(2){grid-area:status;}
                .cprofile-page .prog-row .prog-progress{grid-area:progress;justify-self:start;text-align:left;}
                .cprofile-page .prog-row > div:last-child{grid-area:edit;justify-self:end;}
                .cprofile-page .banner{padding:12px 14px;flex-wrap:wrap;}
                .cprofile-page .banner .btn-unlock{margin-left:32px;}
                .cprofile-page .banner > div{flex-basis:calc(100% - 32px);}
                .cprofile-page .cph-head{flex-wrap:wrap;}
                .cprofile-page .pr-strip{flex-wrap:wrap;}
                .cprofile-page .pr{flex-basis:33%;}
            }

            @media (max-width:480px){
                .cprofile-page .cph-head{flex-direction:column;align-items:flex-start;}
                .cprofile-page .cph-nick-row{flex-direction:column;align-items:flex-start;}
                .cprofile-page .cph-nick-row input{font-size:20px;width:100%;}

                .cprofile-page .cph-tabs{width:100%;margin:0 0 20px;}
                .cprofile-page .cph-tabs button{flex:1;padding:9px 6px;font-size:13px;}

                .cprofile-page .hist-toolbar{flex-direction:column;align-items:stretch;}
                .cprofile-page .field.grow{min-width:0;}
                .cprofile-page .field input{font-size:16px;min-width:0;}
                .cprofile-page .date-row .field{flex:1;}

                .cprofile-page .section-head{flex-direction:column;align-items:stretch;}
                .cprofile-page .section-head .cph-btn{width:100%;text-align:center;}
                .cprofile-page .prog-edit-btn{width:38px;height:38px;}

                .cprofile-page .report-overlay{padding:0;align-items:stretch;}
                .cprofile-page .report-modal{max-width:100%;max-height:100%;height:100%;border-radius:0;}

                .cprofile-page .day-report-inner{height:100%;}
                .cprofile-page .day-report-scroll{flex:1;}
                .cprofile-page .scroll-hint{display:block;}
            }

/* ===== На тренировке (тренер) ===== */
            .lw-page{--surface:#FFFFFF;--surface-2:#F7F8F4;--line:#E2E5DD;--ink:#14170F;--muted:#767D6E;--accent:#1F7A4D;--accent-strong:#145C3A;--accent-soft:#E3F1E7;}
            .lw-page .lw-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden;}

            .lw-page .lw-toolbar{display:flex;justify-content:flex-end;padding:16px 20px;border-bottom:1px solid var(--line);}
            .lw-page .lw-search{position:relative;width:280px;max-width:100%;}
            .lw-page .lw-search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--muted);pointer-events:none;}
            .lw-page .lw-search input{width:100%;height:40px;padding:0 12px 0 38px;background:var(--surface);border:1px solid var(--line);border-radius:10px;font-family:inherit;font-size:14px;line-height:normal;color:var(--ink);box-shadow:none;}
            .lw-page .lw-search input::placeholder{color:var(--muted);}
            .lw-page .lw-search input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}

            .lw-page table{width:100%;border-collapse:collapse;min-width:720px;}
            .lw-page .lw-scroll{overflow-x:auto;}
            .lw-page thead th{background:var(--surface-2);text-align:left;padding:13px 20px;font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap;border-bottom:1px solid var(--line);}
            .lw-page tbody td{padding:16px 20px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:middle;}
            .lw-page tbody tr:last-child td{border-bottom:none;}
            .lw-page tbody tr:hover{background:var(--surface-2);}

            .lw-page .lw-nickname{font-weight:700;overflow-wrap:anywhere;}
            .lw-page .lw-realname{font-size:12.5px;color:var(--muted);margin-top:2px;overflow-wrap:anywhere;}
            .lw-page .lw-label{overflow-wrap:anywhere;}
            .lw-page .lw-elapsed{display:inline-block;font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:700;color:var(--accent-strong);background:var(--accent-soft);border-radius:999px;padding:4px 10px;white-space:nowrap;}
            .lw-page .lw-progress{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--muted);white-space:nowrap;}
            .lw-page .lw-progress strong{color:var(--ink);}
            .lw-page .lw-actions{text-align:right;white-space:nowrap;}
            .lw-page .lw-open{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-weight:700;font-size:13.5px;text-decoration:none;}
            .lw-page .lw-open:hover{color:var(--accent-strong);}
            .lw-page .lw-open svg{width:16px;height:16px;}

            .lw-page .lw-empty{text-align:center;color:var(--muted);padding:40px 20px;}
            .lw-page .lw-empty strong{display:block;color:var(--ink);font-size:15px;font-weight:600;margin-bottom:4px;}

            /* Карточки — только для телефона; на десктопе показывается таблица. */
            .lw-page .lw-cards{display:none;}
            .lw-page .lw-mcard{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:12px;}
            .lw-page .lw-mcard:last-child{margin-bottom:0;}
            .lw-page .lw-mtop{display:flex;align-items:flex-start;gap:10px;}
            .lw-page .lw-mavatar{width:36px;height:36px;border-radius:50%;background:var(--surface-2);color:var(--muted);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;flex-shrink:0;}
            .lw-page .lw-mnames{flex:1;min-width:0;}
            .lw-page .lw-mnick{font-weight:700;font-size:15px;overflow-wrap:anywhere;}
            .lw-page .lw-mreal{font-size:12.5px;color:var(--muted);margin-top:1px;overflow-wrap:anywhere;}
            .lw-page .lw-mstrip{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--surface-2);border-radius:10px;padding:8px 12px;margin-top:12px;font-size:13px;}
            .lw-page .lw-mstrip .lbl{min-width:0;overflow-wrap:anywhere;}
            .lw-page .lw-mstrip .cnt{font-family:'JetBrains Mono',monospace;color:var(--muted);white-space:nowrap;}
            .lw-page .lw-mstrip .cnt strong{color:var(--ink);}
            .lw-page .lw-mbar{height:6px;border-radius:999px;background:var(--surface-2);margin-top:10px;overflow:hidden;}
            .lw-page .lw-mbar span{display:block;height:100%;border-radius:999px;background:var(--accent);}
            .lw-page .lw-mfoot{display:flex;justify-content:flex-end;margin-top:10px;}

            @media (max-width:640px){
                .lw-page .lw-card{background:transparent;border:none;border-radius:0;overflow:visible;}
                .lw-page .lw-toolbar{padding:0 0 12px;border-bottom:none;}
                .lw-page .lw-search{width:100%;}
                .lw-page .lw-search input{height:44px;font-size:16px;}
                .lw-page .lw-scroll{display:none;}
                .lw-page .lw-cards{display:block;}
                .lw-page .lw-empty{background:var(--surface);border:1px dashed var(--line);border-radius:14px;padding:32px 14px;}
            }

/* ===== Тренировка клиента (тренер) ===== */
            .cw-page .cw-back{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:13.5px;text-decoration:none;margin-bottom:14px;}
            .cw-page .cw-back:hover{color:var(--accent);}
            .cw-page .cw-back svg{width:15px;height:15px;}
            .cw-page .wk-head .name{overflow-wrap:anywhere;}
            .cw-page .wk-head .client{font-size:12.5px;color:var(--muted);margin-top:2px;overflow-wrap:anywhere;}
            .cw-page .wk-progress{padding:12px 20px;border-bottom:1px solid var(--line);font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--muted);}
            .cw-page .wk-progress strong{color:var(--ink);}
            @media (max-width:640px){
                .cw-page .wk-progress{padding:12px 14px;}
            }

/* ===== Заявки на регистрацию ===== */
            .trainer-approvals-page{--bg:#F7F8F4;--surface:#FFFFFF;--surface-2:#EFF2EA;--line:#E2E5DD;--ink:#14170F;--muted:#767D6E;--accent:#1F7A4D;--accent-strong:#145C3A;--accent-soft:#E3F1E7;--danger:#B3261E;--danger-soft:#FBEAE9;}
            .trainer-approvals-page .ta-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:24px;margin-bottom:16px;}
            .trainer-approvals-page .ta-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:4px;}
            .trainer-approvals-page .ta-name{font-size:20px;font-weight:700;color:var(--ink);min-width:0;overflow-wrap:anywhere;}
            .trainer-approvals-page .ta-email{font-size:14px;color:var(--muted);margin-bottom:8px;overflow-wrap:anywhere;}
            .trainer-approvals-page .ta-created{font-size:12px;color:var(--muted);font-family:'JetBrains Mono',monospace;margin-bottom:16px;}
            .trainer-approvals-page .ta-status{font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap;background:var(--danger-soft);color:var(--danger);}
            .trainer-approvals-page .ta-divider{border:none;border-top:1px solid var(--line);margin-bottom:16px;}
            .trainer-approvals-page .ta-actions{display:flex;gap:12px;}
            .trainer-approvals-page .ta-approve{background:var(--accent);color:#fff;border:none;border-radius:10px;padding:10px 20px;font-weight:700;font-size:14px;cursor:pointer;}
            .trainer-approvals-page .ta-approve:hover{background:var(--accent-strong);}
            .trainer-approvals-page .ta-reject{background:none;border:1px solid var(--line);color:var(--danger);border-radius:10px;padding:10px 20px;font-weight:700;font-size:14px;cursor:pointer;}
            .trainer-approvals-page .ta-reject:hover{background:var(--danger-soft);}
            .trainer-approvals-page .ta-empty{text-align:center;color:var(--muted);padding:40px;background:var(--surface);border:1px dashed var(--line);border-radius:16px;margin-bottom:16px;}

            @media (max-width:480px){
                .trainer-approvals-page .ta-actions{flex-wrap:wrap;}
                .trainer-approvals-page .ta-approve,.trainer-approvals-page .ta-reject{flex:1;}
            }

/* ===== Мои программы (клиент) ===== */
            .my-programs-page{--bg:#F7F8F4;--surface:#FFFFFF;--surface-2:#EFF2EA;--line:#E2E5DD;--ink:#14170F;--muted:#767D6E;--accent:#1F7A4D;--accent-strong:#145C3A;--accent-soft:#E3F1E7;}
            .my-programs-page .mp-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:22px;margin-bottom:16px;}
            .my-programs-page .mp-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:4px;}
            .my-programs-page .mp-name{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:19px;letter-spacing:-0.01em;}
            .my-programs-page .mp-status{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-strong);background:var(--accent-soft);border-radius:999px;padding:4px 10px;white-space:nowrap;font-family:'JetBrains Mono',monospace;flex-shrink:0;}
            .my-programs-page .mp-status.done{color:var(--muted);background:var(--surface-2);}
            .my-programs-page .mp-description{font-size:13px;color:var(--muted);margin:8px 0 16px;line-height:1.5;white-space:pre-line;overflow-wrap:anywhere;}

            .my-programs-page .mp-progress-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px;}
            .my-programs-page .mp-progress-row .lbl{font-size:12px;color:var(--muted);}
            .my-programs-page .mp-progress-row .val{font-family:'JetBrains Mono',monospace;font-size:13px;}
            .my-programs-page .mp-progress-row .val b{color:var(--accent-strong);font-size:16px;}
            .my-programs-page .mp-progress-track{height:7px;border-radius:999px;background:var(--surface-2);overflow:hidden;margin-bottom:18px;}
            .my-programs-page .mp-progress-fill{height:100%;border-radius:999px;background:var(--accent);}

            .my-programs-page .mp-tabs{display:flex;align-items:center;gap:6px;overflow-x:auto;padding-bottom:2px;margin-bottom:16px;}
            .my-programs-page .mp-tab{display:flex;align-items:center;gap:7px;padding:10px 15px;border-radius:10px;font-size:13px;font-weight:600;color:var(--muted);background:var(--surface);border:1px solid var(--line);cursor:pointer;white-space:nowrap;flex-shrink:0;}
            .my-programs-page .mp-tab .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0;}
            .my-programs-page .mp-tab.completed .dot{background:#c7cbbc;}
            .my-programs-page .mp-tab.active-tab{background:var(--accent);border-color:var(--accent);color:#fff;}
            .my-programs-page .mp-tab.active-tab .dot{background:#fff;}

            .my-programs-page .mp-days-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-family:'JetBrains Mono',monospace;margin-bottom:10px;}

            .my-programs-page .mp-days{display:flex;flex-direction:column;gap:10px;margin-bottom:16px;}
            .my-programs-page .mp-day{border:1px solid var(--line);border-radius:12px;overflow:hidden;}
            .my-programs-page .mp-day-head{display:flex;align-items:center;gap:12px;padding:13px 16px;cursor:pointer;background:var(--surface);}
            .my-programs-page .mp-day-head:hover{background:var(--surface-2);}
            .my-programs-page .mp-day.open .mp-day-head{background:var(--surface-2);border-bottom:1px solid var(--line);}
            .my-programs-page .mp-day-title{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:14.5px;flex:1;}
            .my-programs-page .mp-day-count{font-size:11.5px;color:var(--muted);font-family:'JetBrains Mono',monospace;white-space:nowrap;}
            .my-programs-page .mp-day-chevron{width:13px;height:13px;color:var(--muted);transition:transform .2s ease;flex-shrink:0;}
            .my-programs-page .mp-day.open .mp-day-chevron{transform:rotate(180deg);}

            .my-programs-page .mp-day-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease;}
            .my-programs-page .mp-day.open .mp-day-body{grid-template-rows:1fr;}
            .my-programs-page .mp-day-body-inner{overflow:hidden;}
            .my-programs-page .mp-ex-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:11px 16px;border-top:1px solid var(--surface-2);}
            .my-programs-page .mp-ex-row:first-child{border-top:none;}
            .my-programs-page .mp-ex-name-wrap{flex:1 1 0%;min-width:0;}
            .my-programs-page .mp-ex-name{font-size:13.5px;font-weight:600;overflow-wrap:anywhere;}
            .my-programs-page .mp-ex-note{font-size:11.5px;color:var(--muted);margin-top:2px;overflow-wrap:anywhere;white-space:pre-line;}
            .my-programs-page .mp-ex-target{font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--muted);flex:0 0 auto;max-width:40%;text-align:right;overflow-wrap:anywhere;}
            .my-programs-page .mp-ex-target b{color:var(--ink);font-weight:600;}

            .my-programs-page .mp-day-foot{display:flex;align-items:center;justify-content:flex-end;padding:12px 16px;border-top:1px solid var(--surface-2);}
            .my-programs-page .mp-btn{padding:9px 15px;font-size:12.5px;font-weight:600;border-radius:9px;cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:#fff;}
            .my-programs-page .mp-btn:hover{background:var(--accent-strong);border-color:var(--accent-strong);}
            .my-programs-page .mp-btn-ghost{border:1px solid var(--line);background:var(--surface);color:var(--ink);}
            .my-programs-page .mp-plan-note{font-size:12px;color:var(--muted);}
            .my-programs-page .mp-plan-note a{color:var(--accent-strong);font-weight:600;text-decoration:none;}
            .my-programs-page .mp-empty{text-align:center;color:var(--muted);padding:40px;background:var(--surface);border:1px dashed var(--line);border-radius:16px;}
            .my-programs-page .mp-connect-title{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:18px;margin-bottom:8px;}
            .my-programs-page .mp-connect-text{font-size:13px;color:var(--muted);margin-bottom:16px;}
            .my-programs-page .mp-connect-row{display:flex;gap:10px;max-width:360px;margin:0 auto;}
            .my-programs-page .mp-connect-row input{flex:1;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-family:'JetBrains Mono',monospace;font-size:14px;color:var(--ink);}
            .my-programs-page .mp-connect-row input:focus{outline:none;border-color:var(--accent);background:#fff;}
            .my-programs-page .mp-connect-btn{padding:10px 18px;font-size:13px;font-weight:600;border-radius:8px;cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:#fff;white-space:nowrap;}
            .my-programs-page .mp-connect-btn:hover{background:var(--accent-strong);border-color:var(--accent-strong);}

            .my-programs-page .mp-additions{margin-bottom:16px;}
            .my-programs-page .mp-additions-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-family:'JetBrains Mono',monospace;margin-bottom:8px;}
            .my-programs-page .mp-add-item{border:1px solid var(--line);border-radius:10px;margin-bottom:8px;overflow:hidden;}
            .my-programs-page .mp-add-item:last-child{margin-bottom:0;}
            .my-programs-page .mp-add-head{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;cursor:pointer;font-size:13px;font-weight:600;background:var(--surface);gap:10px;}
            .my-programs-page .mp-add-head:hover{background:var(--surface-2);}
            .my-programs-page .mp-add-head span:first-child{min-width:0;overflow-wrap:anywhere;}
            .my-programs-page .mp-add-head .plus{color:var(--muted);font-size:15px;transition:transform .2s ease;display:inline-block;flex-shrink:0;}
            .my-programs-page .mp-add-item.open .mp-add-head .plus{transform:rotate(45deg);}
            .my-programs-page .mp-add-body{padding:0 14px;font-size:13px;color:var(--muted);}
            /* Rendered from stored HTML (trainer's RichEditor, see
                 EditsProgramContent::editRowCommentAction()) — same nested-tag rules as
                 the trainer's own rich preview (programs.blade.php's .pp-rich-content),
                 duplicated here rather than sharing the file since that one pulls in a
                 lot of trainer-editor-only CSS this client page has no use for. */
            .my-programs-page .mp-add-note{overflow-wrap:anywhere;color:var(--ink);}
            .my-programs-page .mp-add-note :is(h2,h3){font-family:'Space Grotesk',sans-serif;font-weight:700;margin:8px 0 4px;}
            .my-programs-page .mp-add-note h2{font-size:14.5px;}
            .my-programs-page .mp-add-note h3{font-size:13.5px;}
            .my-programs-page .mp-add-note :first-child{margin-top:0;}
            .my-programs-page .mp-add-note :last-child{margin-bottom:0;}
            .my-programs-page .mp-add-note p{margin:0 0 6px;}
            .my-programs-page .mp-add-note :is(ul,ol){margin:0 0 6px;padding-left:18px;}
            .my-programs-page .mp-add-note li{margin-bottom:2px;}
            .my-programs-page .mp-add-note blockquote{margin:0 0 6px;padding-left:10px;border-left:2px solid var(--line);color:var(--muted);}
            .my-programs-page .mp-add-note strong{font-weight:700;color:var(--ink);}
            .my-programs-page .mp-add-body a{color:var(--accent-strong);font-weight:600;display:inline-block;margin-top:6px;}
            .my-programs-page .mp-add-note a{color:var(--accent-strong);font-weight:600;display:inline;margin-top:0;}
            /* Единая кнопка видео — тот же вид, что .wk-video-btn на тренировке и .pp-vid-btn.has-video у тренера. */
            .my-programs-page .mp-vid-btn{width:34px;height:34px;border-radius:9px;border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent-strong);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;flex-shrink:0;padding:0;transition:background .15s,color .15s;}
            .my-programs-page .mp-vid-btn:hover{background:var(--accent);color:#fff;}
            .my-programs-page .mp-ex-row .mp-vid-btn{align-self:center;}
            .my-programs-page .mp-add-body .mp-vid-btn{margin:8px 0 10px;}

            .my-programs-page .mp-history-toggle{display:flex;align-items:center;justify-content:space-between;cursor:pointer;padding:16px 2px 10px;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:14px;border-top:1px solid var(--line);margin-top:4px;}
            .my-programs-page .mp-history-toggle svg{width:13px;height:13px;transition:transform .25s ease;color:var(--muted);}
            .my-programs-page .mp-history-toggle.open svg{transform:rotate(180deg);}

            @media (max-width:480px){
                .my-programs-page .mp-empty{padding:28px 20px;}
                .my-programs-page .mp-connect-row{max-width:100%;flex-wrap:wrap;}
                .my-programs-page .mp-connect-row input{flex:1 1 100%;font-size:16px;}
                .my-programs-page .mp-connect-btn{flex:1 1 100%;}
            }

            @media (max-width:640px){
                .my-programs-page .mp-day-head{padding:16px;}
                .my-programs-page .mp-day-foot{justify-content:stretch;}
                .my-programs-page .mp-day-foot .mp-btn{width:100%;padding:13px 15px;}
                .my-programs-page .mp-vid-btn{width:44px;height:44px;font-size:14px;}
                /* Телефон: название и мета в одной колонке (мета под названием, под заметкой), кнопка видео — справа на две строки.
                     Мета слева и без потолка ширины: длинный план переносится, название не схлопывается (макет program-exercise-row-mobile-v1). */
                .my-programs-page .mp-ex-row{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:12px;row-gap:3px;align-items:center;}
                .my-programs-page .mp-ex-name-wrap{grid-column:1;}
                .my-programs-page .mp-ex-target{grid-column:1;max-width:none;text-align:left;overflow-wrap:anywhere;}
                .my-programs-page .mp-ex-row .mp-vid-btn{grid-column:2;grid-row:1 / span 2;}
            }

/* ===== Мои программы: таблица истории (правила префиксованы .my-programs-page) ===== */
    .my-programs-page .wt-table{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface);}
    .my-programs-page .wt-head-row{display:grid;grid-template-columns:100px 1fr 110px 150px;gap:12px;padding:10px 16px;background:var(--surface-2);font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-family:'JetBrains Mono',monospace;}
    .my-programs-page .wt-row-wrap{border-top:1px solid var(--line);}
    .my-programs-page .wt-row-wrap:first-child{border-top:none;}
    .my-programs-page .wt-row{display:grid;grid-template-columns:100px 1fr 110px 150px;gap:12px;align-items:center;padding:12px 16px;cursor:pointer;}
    .my-programs-page .wt-row .date{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--muted);}
    .my-programs-page .wt-row .name{font-weight:600;font-size:13px;}
    .my-programs-page .wt-badge{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-strong);background:var(--accent-soft);border-radius:999px;padding:4px 10px;width:fit-content;font-family:'JetBrains Mono',monospace;}
    .my-programs-page .wt-badge.planned{color:var(--muted);background:var(--bg,var(--surface-2));}
    .my-programs-page .wt-toggle{justify-self:end;display:flex;align-items:center;gap:6px;background:none;border:none;color:var(--accent-strong);font-size:12px;font-weight:600;cursor:pointer;font-family:'Inter',sans-serif;padding:6px 10px;border-radius:8px;}
    .my-programs-page .wt-toggle:hover{background:var(--surface-2);}
    .my-programs-page .wt-toggle svg{width:12px;height:12px;transition:transform .25s ease;}
    .my-programs-page .wt-row-wrap.open .wt-toggle svg{transform:rotate(180deg);}
    .my-programs-page .wt-expand-inner{padding:6px 16px 16px 16px;background:var(--surface-2);}
    .my-programs-page .wt-ex-detail-group{padding:8px 0;border-bottom:1px solid var(--line);}
    .my-programs-page .wt-ex-detail-group:last-child{border-bottom:none;}
    .my-programs-page .wt-ex-name{font-weight:600;overflow-wrap:anywhere;}
    .my-programs-page .wt-ex-target{font-size:11px;color:var(--muted);margin-bottom:4px;overflow-wrap:anywhere;}
    .my-programs-page .wt-set-row{display:flex;align-items:baseline;gap:10px;padding:4px 0;font-size:12.5px;}
    .my-programs-page .wt-val{font-family:'JetBrains Mono',monospace;color:var(--muted);overflow-wrap:anywhere;}
    .my-programs-page .wt-val b{color:var(--ink);font-weight:600;}
    /* НОВОЕ: серый кружок номера подхода в истории — тот же приём, что в my-workouts.blade.php,
       но серый (не зелёный, как на идущей тренировке), т.к. история не должна с ней спорить. */
    .my-programs-page .set-num{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#D2D7CA;color:#3A4034;font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;flex-shrink:0;}
    .my-programs-page .set-num.extra{background:transparent;box-shadow:inset 0 0 0 1.5px #A9B09F;color:#3A4034;}
    /* НОВОЕ: комментарий клиента к подходу — курсивом, в скобках, после цифр (по ТЗ п. 2.3). */
    .my-programs-page .cmt{font-style:italic;}
    .my-programs-page .wt-empty-inline{font-size:12.5px;color:var(--muted);}
    .my-programs-page .wt-report-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:10px;margin-top:6px;border-top:1px solid var(--line);}
    .my-programs-page .wt-btn{padding:9px 14px;font-size:12px;font-weight:600;border-radius:8px;cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:#fff;}
    .my-programs-page .wt-btn:hover{background:var(--accent-strong);border-color:var(--accent-strong);}
    .my-programs-page .wt-btn-ghost{border:1px solid var(--line);background:var(--surface);color:var(--ink);}
    .my-programs-page .wt-btn-ghost:hover{color:#fff;}
    .my-programs-page .wt-empty{text-align:center;color:var(--muted);padding:32px;background:var(--surface);border:1px dashed var(--line);border-radius:16px;}

    @media (max-width:768px){
        .my-programs-page .wt-head-row{display:none;}
        .my-programs-page .wt-row{
            grid-template-columns:1fr auto;
            grid-template-areas:"name toggle" "date status";
            row-gap:8px;
        }
        .my-programs-page .wt-row .date{grid-area:date;align-self:center;}
        .my-programs-page .wt-row .name{grid-area:name;}
        .my-programs-page .wt-row .wt-badge{grid-area:status;justify-self:start;align-self:center;}
        .my-programs-page .wt-row .wt-toggle{grid-area:toggle;justify-self:end;}
    }

/* ===== Отчёты клиента ===== */
            .my-reports-page{--bg:#F7F8F4;--surface:#FFFFFF;--surface-2:#EFF2EA;--line:#E2E5DD;--ink:#14170F;--muted:#767D6E;--accent:#1F7A4D;--accent-strong:#145C3A;--accent-soft:#E3F1E7;}
            .my-reports-page .mr-sub{font-size:13px;color:var(--muted);margin-bottom:18px;}
            .my-reports-page .mr-reminders{margin-bottom:18px;}
            .my-reports-page .mr-tabs{display:flex;gap:2px;background:var(--surface-2);border:1px solid var(--line);border-radius:11px;padding:4px;width:fit-content;max-width:100%;margin-bottom:14px;overflow-x:auto;}
            .my-reports-page .mr-tabs button{border:none;background:transparent;padding:9px 16px;font-size:13.5px;font-weight:600;color:var(--muted);border-radius:8px;cursor:pointer;font-family:'Inter',sans-serif;white-space:nowrap;}
            .my-reports-page .mr-tabs button.active{background:var(--surface);color:var(--accent-strong);box-shadow:0 1px 2px rgba(20,23,15,.06);}
            .my-reports-page .mr-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:18px 20px;margin-bottom:16px;}
            .my-reports-page .mr-field{display:flex;flex-direction:column;gap:4px;}
            .my-reports-page .mr-field label{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-family:'JetBrains Mono',monospace;}
            .my-reports-page .mr-field input{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:10px 12px;font-size:15px;color:var(--ink);font-family:'JetBrains Mono',monospace;width:100%;}
            .my-reports-page .mr-field input:focus{outline:none;border-color:var(--accent);}
            .my-reports-page .mr-field input:disabled{background:var(--surface-2);color:var(--muted);}
            .my-reports-page .mr-top{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;}
            .my-reports-page .mr-top .mr-field{width:170px;}
            .my-reports-page .mr-top .mr-field.narrow{width:150px;}
            .my-reports-page .mr-hint{font-size:12px;color:var(--muted);margin-top:8px;}
            .my-reports-page .mr-btn{padding:10px 16px;font-size:13px;font-weight:600;border-radius:9px;cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:#fff;font-family:'Inter',sans-serif;}
            .my-reports-page .mr-btn:hover{background:var(--accent-strong);border-color:var(--accent-strong);}
            .my-reports-page .mr-btn:disabled{opacity:.6;cursor:wait;}
            .my-reports-page .mr-btn-ghost{border:1px solid var(--line);background:var(--surface);color:var(--ink);}
            .my-reports-page .mr-btn-ghost:hover{background:var(--surface-2);border-color:var(--line);}
            .my-reports-page .mr-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}

            .my-reports-page .mr-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:14px 0;}
            .my-reports-page .mr-row{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:11px;padding:8px 10px;background:var(--surface);}
            .my-reports-page .mr-row.checked{border-color:var(--accent);background:#FBFDFB;}
            .my-reports-page input[type=checkbox]{-webkit-appearance:none;appearance:none;width:20px;height:20px;flex-shrink:0;margin:0;cursor:pointer;border:1.5px solid var(--line);border-radius:6px;background-color:var(--surface);background-position:center;background-repeat:no-repeat;background-size:14px;color:var(--accent);}
            .my-reports-page input[type=checkbox]:hover{border-color:var(--accent);}
            .my-reports-page input[type=checkbox]:checked{background-color:var(--accent);border-color:var(--accent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E");}
            .my-reports-page input[type=checkbox]:focus-visible{outline:2px solid var(--accent-soft);outline-offset:2px;box-shadow:none;}
            .my-reports-page .mr-row .nm{font-size:13.5px;font-weight:500;flex:1;min-width:64px;cursor:pointer;}
            .my-reports-page .mr-row .val{width:88px;}
            .my-reports-page .mr-row .val input{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:7px 9px;font-size:14px;text-align:right;color:var(--ink);font-family:'JetBrains Mono',monospace;width:100%;}
            .my-reports-page .mr-row .val input:focus{outline:none;border-color:var(--accent);}
            .my-reports-page .mr-row .unit{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--muted);width:20px;}
            .my-reports-page .mr-edit-banner{background:var(--accent-soft);color:var(--accent-strong);border-radius:9px;padding:8px 12px;font-size:12.5px;font-weight:600;margin-bottom:12px;}
            .my-reports-page .mr-history{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:17px;margin:22px 0 12px;}

            @media (max-width:640px){
                .my-reports-page .mr-grid{grid-template-columns:1fr;}
                .my-reports-page .mr-top .mr-field,
                .my-reports-page .mr-top .mr-field.narrow{width:100%;}
                .my-reports-page .mr-field input,
                .my-reports-page .mr-row .val input{font-size:16px;}
                .my-reports-page .mr-tabs{width:100%;}
                .my-reports-page .mr-tabs button{flex:1;padding:9px 8px;}
            }

/* ===== Отчёты: напоминания ===== */
            .crr{--surface:#FFFFFF;--line:#E2E5DD;--ink:#14170F;--muted:#767D6E;--accent:#1F7A4D;--accent-strong:#145C3A;--accent-soft:#E3F1E7;}
            .crr .crr-box{border:1px solid var(--line);background:var(--surface);border-radius:14px;padding:16px 18px;margin-bottom:14px;}
            .crr .crr-box:last-child{margin-bottom:0;}
            .crr .crr-box.setup{background:var(--accent-soft);border-color:#CFE5D6;}
            .crr .crr-box.setup .crr-title{color:var(--accent-strong);}
            .crr .crr-box.due{background:#FDF3D7;border-color:#EBD9AE;}
            .crr .crr-box.due .crr-title{color:#8A5A00;}
            .crr .crr-title{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:15px;margin-bottom:2px;}
            .crr .crr-sub{font-size:12.5px;color:var(--muted);margin-bottom:10px;}
            .crr .crr-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid rgba(20,23,15,.08);}
            .crr .crr-row:first-of-type{border-top:none;}
            .crr .crr-txt{flex:1;min-width:0;font-size:14px;font-weight:500;overflow-wrap:anywhere;}
            .crr .crr-txt small{display:block;font-weight:400;color:var(--muted);font-size:12px;margin-top:1px;}
            .crr .crr-go{font-size:12.5px;font-weight:600;color:var(--accent-strong);white-space:nowrap;background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px 12px;cursor:pointer;text-decoration:none;font-family:'Inter',sans-serif;}
            .crr .crr-go:hover{background:var(--accent-soft);}
            @media (max-width:480px){
                .crr .crr-row{flex-wrap:wrap;}
            }

/* ===== Отчёты: таблица ===== */
        .crt{--surface:#FFFFFF;--surface-2:#EFF2EA;--line:#E2E5DD;--ink:#14170F;--muted:#767D6E;--accent:#1F7A4D;--accent-strong:#145C3A;--accent-soft:#E3F1E7;}
        .crt .crt-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface);}
        .crt table{border-collapse:collapse;width:100%;min-width:820px;font-size:13px;}
        .crt th{font-family:'JetBrains Mono',monospace;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);text-align:right;padding:10px;background:var(--surface-2);border-bottom:1px solid var(--line);font-weight:500;white-space:nowrap;}
        .crt td{padding:11px 10px;border-bottom:1px solid var(--line);text-align:right;font-family:'JetBrains Mono',monospace;white-space:nowrap;background:var(--surface);}
        .crt th:first-child,.crt td:first-child{text-align:left;position:sticky;left:0;}
        .crt tr:last-child td{border-bottom:none;}
        .crt td.empty{color:#C3C8BB;}
        .crt td.photo{color:var(--accent);font-weight:700;}
        .crt td.date{font-weight:700;}
        .crt tr.editing td{background:var(--accent-soft);}
        .crt .crt-act{display:flex;gap:6px;justify-content:flex-end;}
        .crt .crt-act button{border:1px solid var(--line);background:var(--surface);border-radius:7px;font-size:12px;padding:5px 9px;cursor:pointer;font-family:'Inter',sans-serif;font-weight:600;color:var(--ink);}
        .crt .crt-act button.del{color:#A33A2B;}
        .crt .crt-empty{text-align:center;padding:30px 16px;color:var(--muted);font-size:13.5px;border:1px dashed var(--line);border-radius:12px;background:var(--surface);}

        .crt .crt-cards{display:none;flex-direction:column;gap:10px;}
        .crt .crt-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;}
        .crt .crt-card.editing{background:var(--accent-soft);}
        .crt .crt-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
        .crt .crt-card-date{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:14px;}
        .crt .crt-card-vals{display:grid;grid-template-columns:repeat(2,1fr);gap:4px 14px;font-size:12.5px;}
        .crt .crt-card-vals span{display:flex;justify-content:space-between;border-bottom:1px dashed var(--line);padding:3px 0;}
        .crt .crt-card-vals i{font-style:normal;color:var(--muted);}
        .crt .crt-card-vals b{font-family:'JetBrains Mono',monospace;font-weight:500;}
        .crt .crt-card .crt-act{margin-top:10px;justify-content:flex-start;}

        @media (max-width:640px){
            .crt .crt-wrap{display:none;}
            .crt .crt-cards{display:flex;}
        }

/* ===== Тренировка (клиент и тренер): карточки =====
   Общие для страницы клиента (MyWorkouts) и тренера (ClientWorkout): функция одна, вид должен быть одинаковым,
   правки здесь меняют обе сразу. Скоуп - класс mw-page на обёртке обеих страниц. */
            .mw-page{--bg:#F7F8F4;--surface:#FFFFFF;--surface-2:#EFF2EA;--line:#E2E5DD;--ink:#14170F;--muted:#767D6E;--accent:#1F7A4D;--accent-strong:#145C3A;--accent-soft:#E3F1E7;--danger:#B3261E;--danger-soft:#FBEAE9;}
            .mw-page .mw-section-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-family:'JetBrains Mono',monospace;margin:22px 0 10px;}
            .mw-page [x-cloak]{display:none !important;}

            .mw-page .wk-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;margin-bottom:14px;overflow:hidden;}
            .mw-page .wk-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line);gap:12px;}
            .mw-page .wk-head .name{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:16px;overflow-wrap:anywhere;}
            .mw-page .wk-head .date{font-size:12px;color:var(--muted);margin-top:2px;font-family:'JetBrains Mono',monospace;}
            .mw-page .wk-badge{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--surface-2);border-radius:999px;padding:4px 10px;font-family:'JetBrains Mono',monospace;white-space:nowrap;}
            .mw-page .wk-note{padding:12px 20px;border-bottom:1px solid var(--line);font-size:12.5px;line-height:1.5;color:var(--accent-strong);background:var(--accent-soft);white-space:pre-line;overflow-wrap:anywhere;}

            .mw-page .wk-ex-group{border-top:1px solid var(--surface-2);}
            .mw-page .wk-ex-group:first-child{border-top:none;}
            .mw-page .wk-ex-head{padding:13px 20px 8px;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;}
            .mw-page .wk-ex-info{flex:1 1 auto;min-width:0;}
            .mw-page .wk-ex-name{font-size:13.5px;font-weight:600;overflow-wrap:anywhere;}
            .mw-page .wk-ex-target{font-size:11.5px;color:var(--muted);margin-top:2px;overflow-wrap:anywhere;}
            .mw-page .wk-ex-note{font-size:11.5px;color:var(--muted);margin-top:2px;overflow-wrap:anywhere;white-space:pre-line;}
            /* Подпись «Комментарий от тренера:» — отличает заметку тренера (program_exercises.notes)
                 от комментария клиента к подходу (курсивом, ниже, без подписи-источника). */
            .mw-page .wk-ex-note .lbl{color:var(--ink);font-weight:600;}
            .mw-page .wk-video-btn{width:26px;height:26px;border-radius:8px;border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent-strong);display:flex;align-items:center;justify-content:center;font-size:10px;cursor:pointer;flex-shrink:0;}
            .mw-page .wk-video-btn:hover{background:var(--accent);color:#fff;}
            /* No background transition: when Livewire's morph adds the "done" class to an
               existing row, Chromium leaves a transitioned background stuck at the start
               value (transparent) and the row never actually turns green. Snapping the
               colour also makes the fill feedback feel more immediate. */
            .mw-page .wk-set-row{padding:8px 20px;}
            .mw-page .wk-set-row:last-child{padding-bottom:14px;}
            /* Обёртка .wk-set-main нужна, чтобы зона комментария ниже (своя подложка) не
               наследовала flex-раскладку строки подхода. */
            .mw-page .wk-set-main{display:flex;align-items:center;gap:10px;}
            /* "done" (green) row: the client entered BOTH a weight and a reps value for
               this set. Rendered server-side from the field values on every blur
               re-render (see below) — not from a stored flag, so it always matches
               what's actually in the inputs. ("0" counts as a value — the app tells the
               client to enter 0 for a set they skipped.) */
            .mw-page .wk-set-row.done{background:var(--accent-soft);}
            .mw-page .wk-set-row.done .wk-set-prev .lbl{color:var(--accent-strong);}
            /* Номер подхода — зелёный кружок с цифрой вместо текста «Подход N». */
            .mw-page .wk-set-idx{width:26px;height:26px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-family:'JetBrains Mono',monospace;font-size:12.5px;font-weight:700;flex-shrink:0;}
            .mw-page .wk-set-prev{display:flex;align-items:center;flex-wrap:wrap;row-gap:2px;column-gap:6px;flex:1;min-width:0;font-size:12.5px;}
            .mw-page .wk-set-prev .lbl{font-family:'JetBrains Mono',monospace;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);white-space:nowrap;}
            .mw-page .wk-set-prev .chip{display:inline-flex;align-items:center;gap:3px;white-space:nowrap;padding:2px 8px 2px 6px;border-radius:999px;background:var(--accent-soft);color:var(--accent-strong);font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:700;}
            .mw-page .wk-set-prev .chip svg{width:9px;height:9px;flex-shrink:0;}
            /* Нечего превзойти (первая тренировка с этим подходом) — плашка без стрелки и без зелёного. */
            .mw-page .wk-set-prev .chip.empty{background:var(--surface-2);color:var(--muted);padding-left:8px;}
            .mw-page .wk-today-block{display:contents;}
            .mw-page .wk-today-lbl{display:none;}
            .mw-page .wk-today{display:flex;align-items:center;gap:4px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:5px 6px;flex-shrink:0;}
            .mw-page .wk-today input{width:48px;text-align:center;background:transparent;border:none;font-family:'JetBrains Mono',monospace;font-size:13px;font-weight:700;color:var(--accent-strong);padding:3px 0;}
            .mw-page .wk-today input:focus{outline:none;}
            .mw-page .wk-today .x{color:var(--muted);font-size:11px;}
            .mw-page .wk-done{width:32px;height:32px;border-radius:10px;border:1.5px solid var(--line);display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--surface);color:#fff;}
            .mw-page .wk-done .wk-done-check{width:15px;height:15px;display:none;}
            /* Незавершённый подход — точка-индикатор (как раньше было "○" глифом), не пустой квадрат: */
            .mw-page .wk-done .wk-done-dot{width:6px;height:6px;border-radius:50%;background:var(--line);display:block;}
            .mw-page .wk-set-row.done .wk-done{background:var(--accent);border-color:var(--accent);}
            .mw-page .wk-set-row.done .wk-done .wk-done-check{display:block;}
            .mw-page .wk-set-row.done .wk-done .wk-done-dot{display:none;}

            /* Кнопка «Коммент» */
            .mw-page .wk-cmt-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--muted);cursor:pointer;flex-shrink:0;}
            .mw-page .wk-cmt-btn svg{width:15px;height:15px;}
            .mw-page .wk-cmt-btn:hover{border-color:var(--accent);color:var(--accent-strong);}

            /* Комментарий под подходом: карточка подхода делится на две зоны — сверху
               данные подхода, снизу зона комментария под линией-разделителем, со своей
               подложкой до краёв карточки (отрицательные поля = поля строки). */
            .mw-page .wk-set-row.has-comment,
            .mw-page .wk-set-row.has-comment:last-child{padding-bottom:0;}
            .mw-page .wk-set-comment{display:flex;align-items:center;gap:10px;margin:8px -20px 0;padding:9px 20px 10px;border-top:1px solid var(--line);background:var(--surface-2);}
            .mw-page .wk-set-row.has-comment:last-child .wk-set-comment{padding-bottom:14px;}
            /* Иконка стоит ровно под кружком номера (28px), текст — ровно под «прошлый раз». */
            .mw-page .wk-set-comment .ic{width:28px;height:16px;flex-shrink:0;color:var(--muted);}
            /* Выполненный подход: зелёная карточка, зона комментария — светлее, зелёный разделитель. */
            .mw-page .wk-set-row.done .wk-set-comment{background:rgba(255,255,255,.6);border-top-color:#C5DECD;}
            .mw-page .wk-set-row.done .wk-set-comment .ic{color:var(--accent);}
            .mw-page .wk-set-comment .txt-wrap{flex:1;min-width:0;}
            .mw-page .wk-set-comment .txt{font-style:italic;font-size:12.5px;line-height:1.45;color:var(--ink);white-space:pre-line;overflow-wrap:anywhere;}
            /* Длинный комментарий обрезается многоточием на 2 строках; «Показать полностью»
               раскрывает целиком. Кнопка показывается только когда текст реально не
               помещается в 2 строки (см. x-init ниже) — короткий комментарий её не получает. */
            .mw-page .wk-set-comment .txt.clamped{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
            .mw-page .wk-cmt-more{display:block;margin-top:3px;padding:0;border:none;background:none;font-family:inherit;font-size:11px;font-weight:600;color:var(--muted);cursor:pointer;text-decoration:underline;text-underline-offset:2px;}
            .mw-page .wk-cmt-more:hover{color:var(--ink);}
            .mw-page .wk-set-row.done .wk-set-comment .txt{color:var(--accent-strong);}
            .mw-page .wk-set-row.done .wk-cmt-more{color:var(--accent-strong);opacity:.8;}
            .mw-page .wk-set-row.done .wk-cmt-more:hover{opacity:1;}
            .mw-page .wk-set-comment .acts{display:flex;gap:2px;flex-shrink:0;}
            .mw-page .wk-cmt-act{height:28px;width:28px;justify-content:center;display:flex;align-items:center;gap:5px;padding:0;border:none;border-radius:7px;background:transparent;color:var(--muted);font-size:11.5px;font-weight:600;cursor:pointer;}
            .mw-page .wk-cmt-act .lbl{display:none;}
            .mw-page .wk-cmt-act svg{width:13px;height:13px;}
            .mw-page .wk-cmt-act:hover{background:var(--surface);color:var(--ink);}
            .mw-page .wk-set-row.done .wk-cmt-act:hover{background:var(--surface);}
            .mw-page .wk-cmt-act.del:hover{color:var(--danger);}

            .mw-page .wk-prev-hist-btn{display:inline-flex;align-items:center;gap:3px;padding:4px 0;margin:-4px 0;border:none;background:none;font-family:'Inter',sans-serif;font-size:12px;font-weight:600;color:var(--accent-strong);text-decoration:underline;text-underline-offset:2px;cursor:pointer;white-space:nowrap;}
            .mw-page .wk-prev-hist-btn svg{width:9px;height:9px;flex-shrink:0;transition:transform .15s ease;}
            .mw-page .wk-prev-hist-btn.open svg{transform:rotate(180deg);}

            .mw-page .wk-set-history{margin-top:10px;padding-top:10px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:2px;}
            .mw-page .wk-set-row.done .wk-set-history{border-top-color:#C5DECD;}
            .mw-page .wk-sh-lbl{font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;}
            .mw-page .wk-sh-row{display:grid;grid-template-columns:36px auto;column-gap:10px;row-gap:2px;padding:5px 0;}
            .mw-page .wk-sh-date{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--muted);align-self:start;padding-top:1px;}
            .mw-page .wk-sh-val{display:flex;align-items:baseline;gap:5px;white-space:nowrap;}
            .mw-page .wk-sh-val .w{font-family:'JetBrains Mono',monospace;font-size:13px;font-weight:700;color:var(--ink);}
            .mw-page .wk-sh-val .u{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--muted);}
            .mw-page .wk-sh-val .x{font-size:12px;color:var(--muted);}
            .mw-page .wk-sh-row.empty .wk-sh-val .w{color:var(--muted);font-weight:400;}
            .mw-page .wk-sh-tag{grid-column:2;justify-self:start;max-width:100%;background:var(--surface-2);color:var(--muted);font-size:11px;line-height:1.3;padding:3px 8px;border-radius:7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
            .mw-page .wk-set-row.done .wk-sh-tag{background:rgba(255,255,255,.6);}

            .mw-page .wk-btn:disabled{opacity:.45;cursor:default;background:var(--accent);border-color:var(--accent);}
            .mw-page .wk-btn:disabled:hover{background:var(--accent);border-color:var(--accent);}

            .mw-page .wk-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--line);background:var(--surface-2);}
            .mw-page .wk-btn{padding:9px 16px;font-size:12.5px;font-weight:600;border-radius:9px;cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:#fff;}
            .mw-page .wk-btn:hover{background:var(--accent-strong);border-color:var(--accent-strong);}
            .mw-page .wk-btn-ghost{border:1px solid var(--line);background:var(--surface);color:var(--ink);}
            .mw-page .wk-btn-ghost:hover{background:var(--surface-2);border-color:var(--line);color:var(--ink);}
            .mw-page .wk-btn-danger{border:1px solid var(--danger);background:var(--surface);color:var(--danger);}
            .mw-page .wk-btn-danger:hover{background:var(--danger-soft);border-color:var(--danger);}

            .mw-page .wk-empty{text-align:center;color:var(--muted);padding:32px 20px;background:var(--surface);border:1px dashed var(--line);border-radius:16px;font-size:13px;line-height:1.6;}
            .mw-page .wk-empty a{color:var(--accent-strong);font-weight:600;}

            .mw-page .wk-history-toggle{display:flex;align-items:center;justify-content:space-between;cursor:pointer;padding:12px 2px;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:14px;border-top:1px solid var(--line);margin-top:6px;}
            .mw-page .wk-history-toggle svg{width:13px;height:13px;color:var(--muted);transition:transform .25s ease;}
            .mw-page .wk-history-toggle.open svg{transform:rotate(180deg);}

            .mw-page .wh-item{border:1px solid var(--line);border-radius:12px;margin-top:10px;overflow:hidden;}
            .mw-page .wh-row{display:flex;align-items:center;gap:12px;padding:13px 16px;cursor:pointer;}
            .mw-page .wh-row:hover{background:var(--surface-2);}
            .mw-page .wh-row .date{font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--muted);width:70px;flex-shrink:0;}
            .mw-page .wh-row .name{flex:1;min-width:0;font-size:13px;font-weight:600;overflow-wrap:anywhere;}
            .mw-page .wh-row .badge{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-strong);background:var(--accent-soft);border-radius:999px;padding:4px 9px;font-family:'JetBrains Mono',monospace;white-space:nowrap;}
            /* Тренировку закрыл тренер, а не клиент — жёлтый, чтобы отличался от обычной «выполнена». */
            .mw-page .wh-row .badge.by-trainer{color:#8A5A00;background:#FDF3D7;}
            .mw-page .wh-row .chev{width:12px;height:12px;color:var(--muted);transition:transform .2s ease;flex-shrink:0;}
            .mw-page .wh-item.open .chev{transform:rotate(180deg);}
            /* Подпись «развернуть/свернуть» нужна только на телефоне (см. @media ниже). */
            .mw-page .wh-row .hint{display:none;}
            .mw-page .wh-body{background:var(--surface-2);}
            .mw-page .wh-ex-row{display:flex;flex-direction:column;gap:4px;padding:9px 16px;font-size:12.5px;border-top:1px solid var(--line);}
            .mw-page .wh-ex-row .lbl-row{display:flex;align-items:center;justify-content:space-between;gap:10px;}
            .mw-page .wh-ex-row .lbl{color:var(--muted);min-width:0;overflow-wrap:anywhere;}
            .mw-page .wh-ex-row .set-line{display:flex;align-items:baseline;gap:8px;padding-left:8px;color:var(--muted);overflow-wrap:anywhere;}
            .mw-page .wh-ex-row .set-line > span:last-child{min-width:0;}
            .mw-page .wh-ex-row b{color:var(--ink);font-weight:600;}
            .mw-page .wh-foot{display:flex;justify-content:flex-end;padding:10px 16px;}
            /* Комментарий в истории — в скобках (по ТЗ) и тем же курсивом, что на тренировке. */
            .mw-page .cmt{font-style:italic;}
            /* Номер подхода в истории — тот же кружок, но серый (история не должна спорить
               с идущей тренировкой); тёмная цифра на светло-сером — контраст ~7:1. */
            .mw-page .set-num{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#D2D7CA;color:#3A4034;font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;flex-shrink:0;}

            /* Подход сверх плана (ТЗ п. 2.4): кружок-контур, корзина, «Добавить подход» — как в макете workout-extra-set-v1.html. */
            .mw-page .wk-set-row.extra .wk-set-idx{background:var(--surface);color:var(--accent-strong);box-shadow:inset 0 0 0 1.5px var(--accent);}
            .mw-page .wk-ex-target .extra-cnt{color:var(--accent-strong);font-weight:600;}
            .mw-page .wk-del-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--muted);cursor:pointer;flex-shrink:0;padding:0;}
            .mw-page .wk-del-btn svg{width:15px;height:15px;}
            .mw-page .wk-del-btn:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-soft);}
            .mw-page .wk-add-set{display:flex;align-items:center;justify-content:center;gap:6px;width:calc(100% - 40px);margin:4px 20px 14px;height:36px;border:1px dashed #C5CBBB;border-radius:10px;background:transparent;color:var(--muted);font-size:12.5px;font-weight:600;cursor:pointer;}
            .mw-page .wk-add-set svg{width:14px;height:14px;}
            .mw-page .wk-add-set:hover{border-color:var(--accent);color:var(--accent-strong);background:var(--accent-soft);}
            /* кнопка «Добавить подход» теперь последняя в группе — нижний отступ даёт она */
            .mw-page .wk-set-row:last-of-type{padding-bottom:8px;}
            .mw-page .set-num.extra{background:transparent;box-shadow:inset 0 0 0 1.5px #A9B09F;color:#3A4034;}

            @media (max-width:768px){
                /* «Коммент» встаёт в верхнюю строку перед кружком «выполнено»; «прошлый раз»
                   стоит в одной строке с кружком номера (не под ним) — подпись занимает
                   всю ширину блока сама, плашка-результат переносится на следующую строку. */
                .mw-page .wk-set-main{
                    display:grid;
                    grid-template-columns:auto 1fr auto auto;
                    grid-template-areas:"idx prev cbtn done" "today today today today";
                    row-gap:8px;
                    column-gap:10px;
                }
                .mw-page .wk-set-idx{grid-area:idx;align-self:center;justify-self:start;}
                .mw-page .wk-set-prev{grid-area:prev;align-self:center;}
                .mw-page .wk-cmt-btn{grid-area:cbtn;align-self:center;}
                .mw-page .wk-done{grid-area:done;align-self:center;justify-self:end;}
                .mw-page .wk-set-prev .lbl{flex-basis:100%;}
                /* «Прошлый раз» без зелёной плашки и стрелки на телефоне — просто жирный текст. */
                .mw-page .wk-set-prev .chip{background:none;padding:0;font-size:15px;}
                .mw-page .wk-set-prev .chip.empty{background:none;padding-left:0;}
                .mw-page .wk-set-prev .chip svg{display:none;}
                /* Поле «сегодня» на всю ширину карточки, подпись «СЕГОДНЯ» внутри слева. */
                .mw-page .wk-today-block{grid-area:today;display:flex;align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:8px 14px;}
                .mw-page .wk-today-lbl{display:block;flex-shrink:0;font-family:'JetBrains Mono',monospace;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
                .mw-page .wk-today{flex:1;justify-content:center;gap:14px;background:none;border:none;padding:0;}
                /* Подписи, результат и цифры в поле — Inter, не моноширинный. */
                .mw-page .wk-set-prev .lbl,
                .mw-page .wk-today-lbl{font-family:'Inter',sans-serif;font-weight:600;letter-spacing:.04em;}
                .mw-page .wk-set-prev .chip{font-family:'Inter',sans-serif;font-size:14px;}
                .mw-page .wk-today input{font-family:'Inter',sans-serif;}
                /* Комментарий на всю ширину карточки, кнопки под ним. */
                .mw-page .wk-set-comment{flex-wrap:nowrap;align-items:flex-start;margin-top:10px;row-gap:4px;column-gap:8px;}
                .mw-page .wk-set-comment .ic{width:18px;height:18px;margin-top:1px;}
                .mw-page .wk-set-comment .txt-wrap{flex:1 1 0;}
                .mw-page .wk-set-comment .acts{flex-basis:auto;padding-left:0;gap:4px;}

                /* Корзина в верхней строке — 5 колонок только у подхода сверх плана: у подхода плана пустая колонка оставила бы лишний отступ. */
                .mw-page .wk-set-row.extra .wk-set-main{grid-template-columns:auto 1fr auto auto auto;grid-template-areas:"idx prev cbtn del done" "today today today today today";}
                .mw-page .wk-del-btn{grid-area:del;align-self:center;}
            }

            @media (max-width:640px){
                .mw-page .wk-video-btn{width:38px;height:38px;font-size:12px;}
                .mw-page .wk-set-prev .chip{font-size:15px;padding:0;}
                .mw-page .wk-set-prev .lbl{font-size:10.5px;}
                .mw-page .wk-today-lbl{font-size:11px;}
                .mw-page .wk-today-block{padding:10px 16px;}
                .mw-page .wk-today{padding:0;gap:22px;}
                .mw-page .wk-today input{width:44px;font-size:16px;padding:4px 0;}
                /* «Изменить»/«Удалить» — только иконки 44×44 (минимальный комфортный тач-таргет). */
                .mw-page .wk-cmt-act{width:44px;height:44px;padding:0;justify-content:center;border-radius:11px;}
                .mw-page .wk-cmt-act svg{width:19px;height:19px;}
                /* Без подписей кнопки встают справа от текста в той же строке; отрицательные
                   поля — чтобы кнопки 44px не раздували зону комментария. */
                .mw-page .wk-set-comment{flex-wrap:nowrap;gap:12px;}
                .mw-page .wk-set-comment .acts{flex-basis:auto;padding-left:0;gap:4px;margin:-12px -13px -12px 0;}
                .mw-page .wk-set-comment .txt{font-size:14px;}
                .mw-page .wk-cmt-more{font-size:12.5px;margin-top:4px;}

                .mw-page .wk-set-row{padding:12px 20px;margin:0 8px 8px;border-radius:14px;border:1px solid transparent;}
                .mw-page .wk-set-row:last-child{margin-bottom:14px;padding-bottom:12px;}
                .mw-page .wk-set-row.next{position:relative;background:var(--surface-2);border-color:var(--line);}
                .mw-page .wk-set-row.next::before{
                    content:"далее";position:absolute;top:-8px;left:14px;
                    font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;
                    background:var(--accent);color:#fff;border-radius:999px;padding:2px 8px;
                }
                .mw-page .wk-set-row.has-comment,
                .mw-page .wk-set-row.has-comment:last-child{padding-bottom:0;}
                /* Зона комментария чуть выше — легче попасть пальцем по «Изменить»/«Удалить». */
                .mw-page .wk-set-comment,
                .mw-page .wk-set-row.has-comment:last-child .wk-set-comment{margin-top:12px;padding:13px 20px 15px;border-radius:0 0 13px 13px;}
                .mw-page .wk-set-row.next .wk-set-comment{background:var(--surface);}

                /* Подход сверх плана на телефоне: тач-цели 44px. */
                .mw-page .wk-del-btn svg{width:19px;height:19px;}
                .mw-page .wk-add-set{width:calc(100% - 16px);margin:0 8px 14px;height:44px;font-size:13.5px;border-radius:14px;}
                .mw-page .wk-set-row:last-of-type{margin-bottom:8px;padding-bottom:12px;}
                .mw-page .wk-set-row.has-comment:last-of-type{padding-bottom:0;}

                .mw-page .wk-foot{flex-direction:column;gap:8px;padding:12px 20px calc(14px + env(safe-area-inset-bottom));}
                .mw-page .wk-foot .wk-btn{width:100%;padding:15px;font-size:14.5px;border-radius:14px;}
                .mw-page .wk-foot .wk-btn-danger{
                    order:2;width:auto;padding:2px;border:none;background:none;
                    font-size:12.5px;font-weight:600;
                }
            }

            @media (max-width:640px){
                /* Строка истории: название на всю ширину сверху (иначе рвётся по буквам между
                   датой, плашкой и стрелкой), ниже — дата, плашка и «развернуть» со стрелкой справа. */
                .mw-page .wh-row{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;grid-template-areas:"name name name name" "date badge hint chev";column-gap:12px;row-gap:8px;align-items:center;}
                .mw-page .wh-row .name{grid-area:name;flex:none;overflow-wrap:anywhere;}
                .mw-page .wh-row .date{grid-area:date;width:auto;}
                .mw-page .wh-row .badge{grid-area:badge;justify-self:start;}
                .mw-page .wh-row .hint{display:block;grid-area:hint;justify-self:end;margin-right:-6px;font-size:11.5px;color:var(--muted);}
                .mw-page .wh-row .chev{grid-area:chev;align-self:center;}
            }
            /* Ниже 375px дата + плашка + подпись + стрелка в одну строку не помещаются: зазор уже,
               а плашка «завершил тренер» сокращается до «тренер». Подпись остаётся видимой. */
            @media (max-width:374px){
                .mw-page .wh-row{column-gap:8px;}
                .mw-page .wh-row .badge .b-full{display:none;}
            }

            /* Стрелка «раскрыть» рядом с комментарием — скрыта по умолчанию (на компьютере
               кнопка текстовая). Объявлено ДО медиазапросов ниже: при равной специфичности
               иначе перебило бы телефонное правило, показывающее стрелку. */
            .mw-page .wk-cmt-more .chev{display:none;width:16px;height:16px;transition:transform .2s ease;}
            @media (max-width:768px){
                /* Поля «вес × повт»: было два поля фиксированной ширины по центру пустого
                   места слева от «Сегодня» — «102.5»/«535» обрезались. Растягиваем на всё
                   место после подписи, 3:2 в пользу веса (он длиннее повторов). */
                .mw-page .wk-today{flex:1;min-width:0;justify-content:flex-start;gap:6px;margin-left:12px;}
                .mw-page .wk-today input{flex:3 1 0;min-width:0;width:auto;}
                .mw-page .wk-today input:last-child{flex-grow:2;}
                .mw-page .wk-today .x{flex-shrink:0;}
                /* Комментарий на телефоне — одна строка с многоточием вместо двух, иначе на
                   узком экране без сворачивания занимает 4 строки. */
                .mw-page .wk-set-comment .txt.clamped{-webkit-line-clamp:1;}
                /* Текстовая кнопка «Показать полностью» на 320px переносилась в две строки —
                   заменяем стрелкой в конце строки; тап по стрелке или по тексту раскрывает. */
                .mw-page .wk-set-comment .txt-wrap{display:flex;align-items:flex-start;gap:4px;}
                .mw-page .wk-set-comment .txt{flex:1;min-width:0;cursor:pointer;}
                .mw-page .wk-cmt-more{display:flex;width:28px;height:28px;margin:-3px -4px -3px 0;flex-shrink:0;align-items:center;justify-content:center;text-decoration:none;}
                .mw-page .wk-cmt-more .more-lbl{display:none;}
                .mw-page .wk-cmt-more .chev{display:block;}
                .mw-page .wk-cmt-more.open .chev{transform:rotate(180deg);}
            }
            /* Узкие экраны (<=400px: iPhone mini/SE, «Увеличенный» вид, узкие Android). В
               верхней строке подхода не хватало места под «прошлый раз» рядом с кружком и
               кнопками — текст уходил под них, особенно у подхода сверх плана (ТЗ п. 2.4). */
            @media (max-width:400px){
                .mw-page .wk-set-row{padding:12px 14px;}
                .mw-page .wk-set-main{column-gap:8px;}
                .mw-page .wk-set-idx{width:30px;height:30px;font-size:14px;}
                .mw-page .wk-cmt-btn,.mw-page .wk-done{width:40px;height:40px;}
                .mw-page .wk-set-prev .lbl{font-size:10px;letter-spacing:.03em;}
                .mw-page .wk-set-prev .chip{font-size:14px;}
                .mw-page .wk-today-block{padding:8px 12px;}
                /* Подход сверх плана: корзина уходит во вторую строку под кружком
                   «выполнено» — верхняя строка становится такой же, как у обычного подхода. */
                .mw-page .wk-set-row.extra .wk-set-main{grid-template-columns:auto 1fr auto auto;grid-template-areas:"idx prev cbtn done" "today today today del";}
                .mw-page .wk-set-row.extra .wk-del-btn{width:40px;height:auto;align-self:stretch;border-radius:12px;}
                .mw-page .wk-set-comment,
                .mw-page .wk-set-row.has-comment:last-child .wk-set-comment{margin-left:-14px;margin-right:-14px;padding-left:14px;padding-right:14px;}
            }

/* ===== НОВОЕ: баннер «данные изменились» ===== */
.mw-page .wk-stale{position:sticky;top:calc(4rem + 12px);z-index:19;display:flex;align-items:center;gap:14px;background:#14170F;color:#fff;border-radius:14px;padding:12px 12px 12px 16px;margin-bottom:14px;box-shadow:0 8px 24px rgba(20,23,15,.18);}
.mw-page .wk-stale .ic{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#9FD8B5;}
.mw-page .wk-stale .ic svg{width:18px;height:18px;}
.mw-page .wk-stale .body{flex:1;min-width:0;}
.mw-page .wk-stale .ttl{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:14px;line-height:1.3;}
.mw-page .wk-stale .txt{font-size:12.5px;line-height:1.45;color:#C9CEC2;margin-top:2px;}
.mw-page .wk-stale .hint{display:none;font-size:12.5px;line-height:1.45;color:#FFD38A;margin-top:6px;}
.mw-page .wk-stale.nudge{box-shadow:0 0 0 3px #FFD38A,0 8px 24px rgba(20,23,15,.18);}
.mw-page .wk-stale.nudge .hint{display:block;}
.mw-page .wk-stale.offline{background:#5A2A1E;}
.mw-page .wk-stale.offline .ic{color:#FFB4A6;}
.mw-page .wk-stale.offline .txt{color:#F1D4CD;}
.mw-page .wk-stale-btn{flex-shrink:0;padding:10px 16px;font-size:13px;font-weight:600;border-radius:10px;border:0;background:var(--accent);color:#fff;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-family:'Inter',sans-serif;}
.mw-page .wk-stale-btn:hover{background:#2A9461;}
.mw-page .wk-stale-btn svg{width:15px;height:15px;}
@media (max-width:640px){
  .mw-page .wk-stale{flex-wrap:wrap;top:calc(4rem + 8px);padding:12px;gap:10px 12px;}
  .mw-page .wk-stale .body{flex-basis:calc(100% - 46px);}
  .mw-page .wk-stale-btn{width:100%;justify-content:center;padding:13px;font-size:14.5px;border-radius:12px;}
}

/* ===== НОВОЕ: тренировка закрыта другой стороной (тренер) ===== */
.mw-page .wk-closed{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:36px 24px 30px;text-align:center;}
.mw-page .wk-closed .badge-ic{width:56px;height:56px;border-radius:50%;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);}
.mw-page .wk-closed.muted .badge-ic{background:var(--surface-2);color:var(--muted);}
.mw-page .wk-closed .badge-ic svg{width:26px;height:26px;}
.mw-page .wk-closed .ttl{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:19px;}
.mw-page .wk-closed .who{font-size:13px;color:var(--muted);margin-top:6px;overflow-wrap:anywhere;}
.mw-page .wk-closed .who .mono{font-family:'JetBrains Mono',monospace;}
.mw-page .wk-closed .txt{font-size:13.5px;line-height:1.55;color:var(--ink);max-width:420px;margin:14px auto 22px;}
.mw-page .wk-closed .wk-btn{display:inline-block;text-decoration:none;padding:12px 20px;font-size:13.5px;border-radius:11px;}
@media (max-width:640px){
  .mw-page .wk-closed{padding:30px 18px 20px;}
  .mw-page .wk-closed .wk-btn{display:block;width:100%;padding:15px;font-size:14.5px;border-radius:14px;}
}

/* ===== НОВОЕ: плашка клиента вместо карточки ===== */
.mw-page .wk-gone{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:16px;padding:16px 16px 16px 18px;margin-bottom:14px;}
.mw-page .wk-gone.muted{border-left-color:#B9BFB0;}
.mw-page .wk-gone .ic{width:36px;height:36px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);}
.mw-page .wk-gone.muted .ic{background:var(--surface-2);color:var(--muted);}
.mw-page .wk-gone .ic svg{width:18px;height:18px;}
.mw-page .wk-gone .body{flex:1;min-width:0;}
.mw-page .wk-gone .ttl{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:15px;}
.mw-page .wk-gone .txt{font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.45;overflow-wrap:anywhere;}
.mw-page .wk-gone .wk-btn{flex-shrink:0;}
@media (max-width:640px){
  .mw-page .wk-gone{flex-wrap:wrap;}
  .mw-page .wk-gone .body{flex-basis:calc(100% - 50px);}
  .mw-page .wk-gone .wk-btn{width:100%;padding:13px;font-size:14px;border-radius:12px;}
}

/* Обёртка guard-partial не создаёт свой блок: иначе липкий .wk-stale ограничен её высотой и не «прилипает» к верху экрана. */
.mw-page .wk-guard{display:contents;}
/* «К моим программам» — ссылка, а не кнопка, как в макете: без подчёркивания, по центру. */
.mw-page .wk-gone a.wk-btn{display:inline-block;text-decoration:none;text-align:center;}

/* ===== Окно подтверждения (общее для всей панели, public/js/confirm-dialog.js) =====
   Макет more/makets_html/confirm-dialog-v1.html. Окно висит прямо в <body>, вне .xxx-page,
   поэтому токены объявлены на самом окне. Видимость - классом .is-open, не атрибутом hidden:
   display:flex перебил бы [hidden] из preflight. Тон: .gc-danger (удаление) / .gc-warn (важное). */
.gc-overlay{--surface:#FFFFFF;--surface-2:#EFF2EA;--line:#E2E5DD;--ink:#14170F;--muted:#767D6E;--accent:#1F7A4D;--danger:#B3261E;--danger-strong:#8C1D17;--danger-soft:#FBEAE9;--warn:#B3621E;--warn-strong:#8F4E18;--warn-soft:#FBEEE4;position:fixed;inset:0;z-index:400;display:none;align-items:center;justify-content:center;padding:16px;background:rgba(20,23,15,.45);}
.gc-overlay.is-open{display:flex;}
.gc-card{width:100%;max-width:400px;max-height:calc(100vh - 32px);overflow:auto;text-align:center;background:var(--surface);color:var(--ink);border-radius:16px;padding:22px 22px 18px;box-shadow:0 20px 50px rgba(20,23,15,.25);font-family:'Inter',sans-serif;}
.gc-ico{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 14px;}
.gc-danger .gc-ico{background:var(--danger-soft);color:var(--danger);}
.gc-warn .gc-ico{background:var(--warn-soft);color:var(--warn);}
.gc-title{font-family:'Space Grotesk',sans-serif;font-size:19px;font-weight:700;line-height:1.3;letter-spacing:-0.01em;margin:0 0 6px;overflow-wrap:anywhere;}
.gc-mono{font-family:'JetBrains Mono',monospace;}
.gc-body{font-size:13.5px;color:var(--muted);line-height:1.5;margin:0 0 12px;overflow-wrap:anywhere;}
.gc-irrev{font-size:12px;font-weight:600;color:var(--danger);margin-bottom:16px;}
.gc-btns{display:flex;gap:8px;margin-top:16px;}
.gc-danger .gc-btns{margin-top:0;}
.gc-btn{flex:1;padding:10px 14px;font-family:'Inter',sans-serif;font-size:13px;font-weight:600;line-height:1.3;border-radius:9px;cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--ink);white-space:nowrap;}
.gc-btn:hover{background:var(--surface-2);}
.gc-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.gc-danger .gc-btn-go{background:var(--danger);border-color:var(--danger);color:#fff;}
.gc-danger .gc-btn-go:hover{background:var(--danger-strong);border-color:var(--danger-strong);}
.gc-warn .gc-btn-go{background:var(--warn);border-color:var(--warn);color:#fff;}
.gc-warn .gc-btn-go:hover{background:var(--warn-strong);border-color:var(--warn-strong);}
/* телефон: окно выезжает снизу, кнопки крупные */
@media (max-width:480px){
  .gc-overlay{align-items:flex-end;padding:0;}
  .gc-card{max-width:none;max-height:90vh;border-radius:16px 16px 0 0;padding:22px 16px calc(20px + env(safe-area-inset-bottom));}
  .gc-btn{padding:13px 8px;font-size:14px;}
}

/* ===== Вход: сообщения о блокировке клиента (resources/views/filament/pages/auth/login.blade.php) =====
   Макет more/makets_html/client-disable-v1.html, вкладка «Вход клиента». Страница входа вне .xxx-page, токены на самих блоках. */
.login-notice{--warn-soft:#FBEEE4;--warn-strong:#8F4E18;display:flex;gap:10px;border-radius:12px;padding:12px 14px;font-size:13.5px;line-height:1.5;}
.login-notice svg{flex:none;width:18px;height:18px;margin-top:1px;}
.login-notice-warn{background:var(--warn-soft);color:var(--warn-strong);}
.login-final{--danger:#B3261E;--danger-soft:#FBEAE9;--surface-2:#EFF2EA;--muted:#767D6E;--accent:#1F7A4D;text-align:center;}
.login-final-ico{width:52px;height:52px;border-radius:50%;background:var(--danger-soft);color:var(--danger);display:flex;align-items:center;justify-content:center;margin:0 auto 14px;}
.login-final p{font-size:14px;line-height:1.55;color:var(--muted);margin-bottom:14px;}
.login-final-why{text-align:left;background:var(--surface-2);border-radius:12px;padding:12px 14px;margin-bottom:18px;font-size:14px;line-height:1.5;overflow-wrap:anywhere;}
.login-final-why small{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px;}
.login-final-btn{width:100%;height:46px;background:var(--accent);color:#fff;border:0;border-radius:10px;font:600 14px 'Inter',sans-serif;cursor:pointer;}

/* ===== Окно «Отключить клиента» (Filament-модалка Clients::disableClientAction, класс .dc-modal) =====
   Макет more/makets_html/client-disable-v1.html: значок «!» сверху по центру, заголовок по центру, красный блок
   со счётчиками, поле причины со счётчиком, галочка, кнопки в ряд («Назад» слева, «Отключить» справа).
   Модалка рисуется вне .clients-page, поэтому селекторы по её классу, токены - прямо здесь. */
.dc-modal{--dc-danger:#B3261E;--dc-danger-soft:#FBEAE9;--dc-line:#E2E5DD;--dc-muted:#767D6E;--dc-ink:#14170F;max-width:460px;border-radius:16px;box-shadow:0 20px 50px rgba(20,23,15,.25);font-family:'Inter',sans-serif;}
.dc-modal .fi-modal-header{padding:22px 22px 0;}
.dc-modal .fi-modal-header > div:first-child{margin-bottom:14px;}
.dc-modal .fi-modal-header > div:first-child > div{width:44px;height:44px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--dc-danger-soft);color:var(--dc-danger);}
.dc-modal .fi-modal-header > div:first-child svg{display:none;}
.dc-modal .fi-modal-header > div:first-child > div::before{content:"";width:22px;height:22px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M10 4.5v7'/%3E%3Cpath d='M10 15.2v.3'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M10 4.5v7'/%3E%3Cpath d='M10 15.2v.3'/%3E%3C/svg%3E") center/contain no-repeat;}
.dc-modal .fi-modal-heading{font-family:'Space Grotesk',sans-serif;font-size:19px;font-weight:700;line-height:1.3;letter-spacing:-0.01em;color:var(--dc-ink);overflow-wrap:anywhere;margin-bottom:6px;}
.dc-modal .fi-modal-description{font-size:13.5px;line-height:1.5;color:var(--dc-muted);margin-top:0;}
.dc-lead{display:block;margin-bottom:12px;}
.dc-list{display:block;background:var(--dc-danger-soft);border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.55;color:var(--dc-ink);text-align:left;}
.dc-list b{font-family:'JetBrains Mono',monospace;font-weight:700;}
.dc-list span{display:block;color:var(--dc-muted);font-size:12px;margin-top:4px;}
.dc-modal .fi-modal-content{padding:14px 22px 0;gap:0;}
.dc-modal .fi-fo-component-ctn{gap:12px;}
.dc-modal .fi-fo-field-wrp-label span{font-size:12px;font-weight:600;}
.dc-modal textarea{font-size:14px;line-height:1.45;}
.dc-modal .dc-count{display:block;text-align:right;font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--dc-muted);}
.dc-modal .fi-fo-checkbox{accent-color:var(--dc-danger);}
.dc-modal .fi-modal-footer{padding:16px 22px 18px;}
.dc-modal .fi-modal-footer-actions{flex-wrap:nowrap;flex-direction:row-reverse;gap:8px;}
.dc-modal .fi-modal-footer-actions > *{flex:1;}
.dc-modal .fi-modal-footer-actions .fi-btn{width:100%;justify-content:center;border-radius:9px;font-size:13px;font-weight:600;padding:10px 14px;}
.dc-modal .fi-modal-footer-actions button[type="submit"]:disabled{opacity:.45;cursor:not-allowed;}
/* телефон: окно выезжает снизу, как общее окно подтверждения */
@media (max-width:480px){
  .grid:has(> .dc-modal){grid-template-rows:1fr auto;padding:0;}
  .dc-modal{max-width:none;border-radius:16px 16px 0 0;max-height:90vh;overflow:auto;}
  .dc-modal .fi-modal-footer{padding-bottom:calc(20px + env(safe-area-inset-bottom));}
  .dc-modal .fi-modal-footer-actions .fi-btn{padding:13px 8px;font-size:14px;}
  .dc-modal textarea{font-size:16px;}
}
