:root{--bg:#f6f5fb;--card:#ffffff;--card-2:#faf9fe;--ink:#1b1830;--muted:#5d587a;--border:#e3e0f0;--border-strong:#cfcae6;--accent:#3d4fd6;--accent-ink:#ffffff;--accent-soft:#e8eafc;--series-b:#9aa6f0;--ok:#1f8a4c;--ok-soft:#e3f4ea;--warn:#a8660b;--warn-soft:#fbf0dc;--down:#c23b3b;--down-soft:#fbe6e6;--premium:#8a5a00;--premium-soft:#fff1cc;--sidebar:#1c1a36;--sidebar-ink:#d9d6f2;--sidebar-muted:#8e89b5;--sidebar-active:#2c2950;--shadow:0 1px 2px rgba(20,16,60,0.05),0 4px 16px rgba(20,16,60,0.04);--radius:12px;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--bg:#141228;--card:#1d1a37;--card-2:#221f40;--ink:#f3f1ff;--muted:#a9a4c8;--border:#2e2a52;--border-strong:#3d3868;--accent:#7d8cff;--accent-ink:#0f0d24;--accent-soft:#2a2d5c;--series-b:#4b5498;--ok:#4cc27f;--ok-soft:#173b29;--warn:#e8b04f;--warn-soft:#3b2e14;--down:#ef6b6b;--down-soft:#3e1d26;--premium:#f2c85b;--premium-soft:#3a3016;--sidebar:#100e22;--sidebar-ink:#d9d6f2;--sidebar-muted:#7f7aa6;--sidebar-active:#25224a;--shadow:none}}*{box-sizing:border-box}body,html{margin:0}body{background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.45}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:22px;font-weight:650}h1,h2{margin:0}h2{font-size:15px;font-weight:620}h3{margin:0 0 10px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.muted,h3{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12.5px}.clamp,.nowrap{white-space:nowrap}.clamp{max-width:360px;overflow:hidden;text-overflow:ellipsis}input,select,textarea{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--border-strong);border-radius:8px;padding:7px 10px;min-height:36px;width:100%}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:transparent}input:disabled,select:disabled{opacity:.6}input[type=checkbox]{width:16px;height:16px;min-height:0;accent-color:var(--accent);margin:0}.invalid{border-color:var(--down)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:0 14px;border:1px solid var(--border-strong);border-radius:8px;background:var(--card);color:var(--ink);font:inherit;font-weight:550;cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){background:var(--card-2);text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.08)}.btn.ghost{background:transparent;border-color:transparent}.btn.ghost:hover:not(:disabled){background:var(--accent-soft)}.btn.small{min-height:30px;padding:0 10px;font-size:13px}.btn.block{width:100%}.icon-btn{display:inline-grid;place-items:center;width:30px;height:30px;border:1px solid var(--border);border-radius:7px;background:var(--card);color:var(--ink);font-size:16px;cursor:pointer}.icon-btn:hover:not(:disabled){background:var(--accent-soft)}.icon-btn:disabled{opacity:.35;cursor:not-allowed}.icon-btn.danger:hover:not(:disabled){background:var(--down-soft);color:var(--down)}.link-btn{border:0;background:none;padding:0;color:var(--accent);font:inherit;cursor:pointer}.link-btn:hover{text-decoration:underline}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field-label{font-size:12.5px;font-weight:600;color:var(--muted)}.field-hint{font-size:12px;color:var(--muted)}.check{display:inline-flex;align-items:center;gap:8px;cursor:pointer;min-height:36px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px 16px;gap:14px 16px;align-items:start}.form-grid .wide{grid-column:1/-1}.stack{gap:12px}.stack,.stack-lg{display:flex;flex-direction:column}.stack-lg{gap:20px}.row-gap{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px}.card-head .row-gap{margin-top:0}.shell{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}.sidebar{position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:var(--sidebar);color:var(--sidebar-ink);padding:16px 12px;overflow-y:auto}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 18px}.brand strong{display:block;font-size:15px}.brand span{display:block;font-size:12px;opacity:.7}.brand-mark{display:grid!important;place-items:center;width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#3d4fd6,#7d4fd6);color:#fff;font-weight:800;font-size:17px!important;opacity:1!important}.sidebar nav{flex:1 1}.nav-group{margin-bottom:14px}.nav-group-label{padding:6px 10px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--sidebar-muted)}.nav-link{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--sidebar-ink);font-weight:500}.nav-link:hover{background:var(--sidebar-active);text-decoration:none}.nav-link.active{background:var(--sidebar-active);color:#fff;box-shadow:inset 3px 0 0 #7d8cff}.nav-icon{flex:none;opacity:.85}.sidebar-user{display:grid;grid-template-columns:auto minmax(0,1fr);grid-gap:8px 10px;gap:8px 10px;align-items:center;padding:12px 8px 4px;border-top:1px solid rgba(255,255,255,.08)}.sidebar-user .btn{grid-column:1/-1;color:var(--sidebar-ink);border-color:rgba(255,255,255,.14)}.sidebar-user .btn:hover:not(:disabled){background:var(--sidebar-active)}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--sidebar-active);font-weight:700}.who{display:flex;flex-direction:column;min-width:0}.who>*{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.who span{font-size:12px;color:var(--sidebar-muted)}.who .role-line{color:#aab4ff}.main{min-width:0}.topbar{display:none}.content{max-width:1320px;margin:0 auto;padding:28px 32px 48px}.scrim{display:none}@media (max-width:900px){.shell{grid-template-columns:minmax(0,1fr)}.sidebar{position:fixed;inset:0 auto 0 0;width:260px;z-index:40;transform:translateX(-100%);transition:transform .2s ease}.menu-open .sidebar{transform:none}.menu-open .scrim{display:block;position:fixed;inset:0;z-index:30;background:rgba(10,8,30,.45)}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--card);border-bottom:1px solid var(--border)}.content{padding:20px 16px 40px}.form-grid{grid-template-columns:minmax(0,1fr)}}.center-page{min-height:100vh;display:grid;place-items:center;padding:16px}.page-header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 24px;margin-bottom:20px}.page-header p{margin:4px 0 0}.page-header .actions{display:flex;gap:8px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow);min-width:0}.card-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-bottom:14px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:20px;gap:20px}@media (max-width:1000px){.grid-2{grid-template-columns:minmax(0,1fr)}}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}.toolbar input[type=search]{max-width:320px}.toolbar select{width:auto}.state{display:flex;align-items:center;justify-content:center;gap:10px;padding:36px 16px;color:var(--muted)}.state.empty{border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--card-2)}.spinner{width:16px;height:16px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.alert{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;margin:12px 0;border-radius:8px;border:1px solid var(--border);background:var(--card-2)}.alert.error{background:var(--down-soft);color:var(--down)}.alert.error,.alert.ok{border-color:transparent}.alert.ok{background:var(--ok-soft);color:var(--ok)}.error-list{margin:0;padding-left:18px}.toasts{position:fixed;right:16px;bottom:16px;z-index:100;display:flex;flex-direction:column;gap:8px;max-width:min(420px,calc(100vw - 32px))}.toast{padding:11px 16px;border-radius:10px;background:var(--ink);color:var(--bg);box-shadow:0 8px 24px rgba(0,0,0,.18);animation:toast-in .18s ease-out}.toast.ok{border-left:4px solid var(--ok)}.toast.error{border-left:4px solid var(--down)}@keyframes toast-in{0%{transform:translateY(8px);opacity:0}}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;background:var(--accent-soft);color:var(--accent);white-space:nowrap;vertical-align:middle}.badge.st-draft{background:var(--card-2);color:var(--muted);box-shadow:inset 0 0 0 1px var(--border-strong)}.badge.st-in_review,.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.ok,.badge.st-published{background:var(--ok-soft);color:var(--ok)}.badge.st-archived{background:var(--card-2);color:var(--muted);text-decoration:line-through}.badge.danger{background:var(--down-soft);color:var(--down)}.badge.premium{background:var(--premium-soft);color:var(--premium)}.badge.info{background:var(--accent-soft);color:var(--accent)}.tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.tag{padding:1px 7px;border-radius:6px;font-size:11.5px;background:var(--card-2);border:1px solid var(--border);color:var(--muted)}.tag.role-admin{color:var(--down);border-color:var(--down-soft);background:var(--down-soft)}.tag.role-coach{color:var(--ok);border-color:var(--ok-soft);background:var(--ok-soft)}.tag.role-operator{color:var(--warn);border-color:var(--warn-soft);background:var(--warn-soft)}.table-wrap{overflow-x:auto;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.table-wrap.flat{border:0;box-shadow:none;border-radius:0;margin:0 -20px}.table{width:100%;border-collapse:collapse}.table td,.table th{padding:10px 14px;text-align:left;vertical-align:middle;border-bottom:1px solid var(--border)}.table th{font-size:12px;font-weight:600;color:var(--muted);background:var(--card-2);white-space:nowrap}.table tbody tr:last-child td{border-bottom:0}.table .num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.table tr.clickable{cursor:pointer}.table tr.clickable:hover td{background:var(--card-2)}.table tr.dirty td{background:var(--warn-soft)}.table.compact td,.table.compact th{padding:6px 8px}.row-action{color:var(--accent);font-weight:550;text-align:right;white-space:nowrap}.detail-row td{background:var(--card-2)}.code-block{margin:0;padding:12px;border-radius:8px;background:var(--card);border:1px solid var(--border);font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12px;max-height:320px;overflow:auto}.cell-input{min-height:32px;padding:4px 8px;width:76px}.cell-input.num{text-align:right}.cell-input.wide-input{width:100%;min-width:220px}.switch{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:16px;background:rgba(10,8,30,.5)}.modal{display:flex;flex-direction:column;width:min(760px,100%);max-height:calc(100vh - 32px);background:var(--card);border:1px solid var(--border);border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.3)}.modal-foot,.modal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 20px}.modal-head{border-bottom:1px solid var(--border)}.modal-foot{justify-content:flex-end;border-top:1px solid var(--border)}.modal-body{padding:18px 20px;overflow-y:auto}.login-page{background:radial-gradient(circle at 20% 10%,var(--accent-soft),transparent 50%),var(--bg)}.login-card{width:100%;max-width:420px;padding:28px}.login-card .brand{padding:0 0 20px}.login-card .brand span{color:var(--muted);opacity:1}.login-card h1{margin-bottom:6px}.login-card>.muted{margin:0 0 18px}.login-email{display:flex;justify-content:space-between;gap:8px;padding:9px 12px;border-radius:8px;background:var(--card-2);border:1px solid var(--border);overflow-wrap:anywhere}.otp-input{font-size:22px;letter-spacing:.4em;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.hint{margin:18px 0 0;padding-top:14px;border-top:1px solid var(--border);font-size:12.5px;color:var(--muted)}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));grid-gap:12px;gap:12px}.kpi{display:flex;flex-direction:column;gap:4px;padding:14px 16px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.kpi-label{font-size:12.5px;color:var(--muted)}.kpi-value{font-size:24px;font-weight:680;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.kpi-sub{font-size:12px;color:var(--muted)}.chart svg{display:block;width:100%;height:auto}.legend{display:flex;gap:16px;margin-bottom:6px;font-size:12.5px;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:6px}.sw{display:inline-block;width:10px;height:10px;border-radius:3px}.bar-a,.sw-a{background:var(--accent);fill:var(--accent)}.bar-b,.sw-b{background:var(--series-b);fill:var(--series-b)}.grid-line{stroke:var(--border);stroke-width:1}.axis-text{fill:var(--muted);font-size:11px}.hbars{display:flex;flex-direction:column;gap:10px}.hbar-row{display:grid;grid-template-columns:minmax(80px,34%) 1fr 48px;align-items:center;grid-gap:10px;gap:10px}.hbar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hbar-track{height:12px;border-radius:6px;background:var(--card-2);border:1px solid var(--border);overflow:hidden}.hbar-fill{display:block;height:100%;border-radius:6px;background:var(--accent)}.hbar-fill.f-easy{background:var(--ok)}.hbar-fill.f-ok{background:var(--accent)}.hbar-fill.f-hard{background:var(--down)}.hbar-value{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:600}.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:12px 16px;gap:12px 16px;margin-bottom:14px}.stat{display:flex;flex-direction:column;gap:2px;min-width:0}.stat span{font-size:12px;color:var(--muted)}.stat strong{font-weight:600;overflow-wrap:anywhere}.progress{height:8px;border-radius:4px;background:var(--card-2);border:1px solid var(--border);overflow:hidden}.progress-fill{height:100%;background:var(--accent)}.role-checks{gap:2px}.items,.role-checks{display:flex;flex-direction:column}.items{gap:8px;container-type:inline-size}.item-row{display:grid;grid-template-columns:28px 110px minmax(180px,1fr) 120px 90px 100px 108px;grid-gap:8px;gap:8px;align-items:center}.item-head{font-size:12px;font-weight:600;color:var(--muted)}.item-no{font-weight:650;color:var(--muted);text-align:center}.item-actions{display:flex;gap:4px;justify-content:flex-end}.item-note{grid-column:3/-1;margin-top:-4px}@container (max-width: 780px){.item-head{display:none}.item-row{grid-template-columns:28px repeat(3,minmax(0,1fr));padding:10px;border:1px solid var(--border);border-radius:10px}.item-row>select:nth-of-type(2){grid-column:3/-1}.item-row>select:nth-of-type(3){grid-column:2}.item-actions,.item-note{grid-column:1/-1}}.week-grid{display:flex;flex-direction:column;gap:16px}.week-head{display:flex;align-items:center;gap:12px;margin-bottom:8px}.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:8px;gap:8px}.day{display:flex;flex-direction:column;gap:5px;padding:8px;border:1px solid var(--border);border-radius:10px;background:var(--card-2);min-width:0}.day.has-workout{border-color:var(--accent);background:var(--accent-soft)}.day select{font-size:12.5px;padding:4px 6px;min-height:32px}.day-label{font-size:12px;font-weight:600}.day-meta{font-size:11.5px;min-height:15px}@media (max-width:1100px){.days{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (max-width:600px){.days{grid-template-columns:repeat(2,minmax(0,1fr))}}.config-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);grid-gap:16px;gap:16px;align-items:start}@media (max-width:1000px){.config-layout{grid-template-columns:minmax(0,1fr)}}.code-input{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12.5px;line-height:1.5}.field-docs{margin:0;display:flex;flex-direction:column;gap:8px;max-height:560px;overflow-y:auto}.field-docs dt{font-weight:600}.field-docs dd{margin:0;color:var(--muted);font-size:12.5px}.table .mono,.tag{white-space:nowrap}