:root{--navy:#102c45;--navy2:#205176;--teal:#087c71;--tealsoft:#e5f6f1;--ink:#172c3f;--sub:#5b7182;--line:#d6e3ea;--bg:#f1f6f9;--paper:#fff;--amber:#f7ae48;--danger:#b84b42;--soft:#edf3f8}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Noto Sans CJK SC','Microsoft YaHei',sans-serif;font-size:16px;line-height:1.63}button,input,select,textarea{font:inherit}button{cursor:pointer;touch-action:manipulation}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #e3a24d;outline-offset:3px}a{color:#12658d}img{max-width:100%}h1,h2,h3,h4,p{overflow-wrap:anywhere}
.hero{background:linear-gradient(127deg,#0b2947,#165574);color:white;padding:30px max(20px,calc((100vw - 1000px)/2)) 28px}.eyebrow{font-size:12px;color:#8addd3;letter-spacing:.13em;font-weight:800}.hero h1{font-size:clamp(27px,5vw,41px);letter-spacing:-.02em;line-height:1.2;margin:6px 0}.hero p{opacity:.85;max-width:800px;margin:6px 0;font-size:15px}.herochips{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}.herochips span{border:1px solid #ffffff45;background:#ffffff15;border-radius:24px;padding:4px 11px;font-size:12px}
.wrap{max-width:1010px;margin:auto;padding:16px 14px 56px}.card{background:white;border:1px solid var(--line);border-radius:18px;box-shadow:0 7px 24px #2549620c;margin-bottom:14px;overflow:hidden}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px}.section-head h2{font-size:22px;line-height:1.25;margin:0;color:var(--navy)}.section-head small,.muted{color:var(--sub);font-size:13px}.pad{padding:19px}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-bottom:14px}.stat{padding:13px 10px;background:white;border:1px solid var(--line);border-radius:14px;text-align:center}.stat .num{font-weight:900;color:#126d70;font-size:clamp(22px,5vw,30px);line-height:1.25}.stat small{display:block;color:var(--sub);font-size:11px;line-height:1.35;margin-top:4px}
.calendar-nav{display:flex;align-items:center;justify-content:space-between}.month-title{font-size:20px;font-weight:850;color:var(--navy)}.iconbtn{display:grid;place-items:center;min-width:44px;min-height:44px;border-radius:11px;border:1px solid var(--line);background:#f8fbfd;color:var(--navy);font-size:22px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-top:13px}.weekday{text-align:center;font-size:11px;color:#6a7f8a;padding:5px 0;font-weight:800}.datebtn{position:relative;border:1.5px solid transparent;border-radius:11px;background:#f4f8fa;min-height:62px;padding:7px 1px 6px;color:#2b4659;text-align:center;display:flex;align-items:center;flex-direction:column;justify-content:space-between}.datebtn.blank{background:transparent;border:0;pointer-events:none}.datebtn.weekend{background:#f0f1f3;color:#95a1a9}.datebtn.today{box-shadow:inset 0 0 0 1.5px #62aaa9}.datebtn.active{background:#e4f7f2;border-color:var(--teal);color:#085d55}.datebtn.future{opacity:.55}.datebtn .dayn{font-size:17px;font-weight:800}.datebtn .status{font-size:9px;line-height:1.2;color:#6e8595}.datebtn.good .status{color:#127b52}.datebtn.leave .status{color:#a56729}.datebtn.unrated .status{color:#8969a2}.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:#708598;margin:11px 0 0}.legend b{color:var(--navy)}
.quick-actions{display:grid;gap:9px;grid-template-columns:1fr 1fr}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:13px 15px;border:1px solid var(--line);background:#f4f8fa;color:var(--navy);font-weight:800;border-radius:12px;min-height:49px}.btn.primary{background:var(--teal);border-color:var(--teal);color:#fff}.btn.secondary{background:#eaf4fb;color:#145d7e}.btn.warn{background:#fff1e5;color:#97521b}.btn.danger{background:#fff1ee;color:#a53a31;border-color:#efcfcd}.btn.full{width:100%}.btn.small{min-height:40px;padding:8px 11px;font-size:13px}.btn:disabled{opacity:.5;cursor:not-allowed}.quick-help{font-size:12px;color:#667e8b;margin-top:10px}
.planbanner{padding:24px 21px;color:#fff;background:linear-gradient(115deg,#123653,#166a7b)}.planbanner h2{font-size:25px;margin:4px 0}.planbanner small{opacity:.82}.planbanner p{margin:5px 0;font-size:14px;opacity:.92}.planmeta{display:flex;flex-wrap:wrap;gap:7px;margin:15px 0 0}.planmeta span{padding:4px 10px;background:#ffffff23;border-radius:20px;font-size:12px}.mini-alert{border-left:4px solid #eab16b;background:#fff4e7;padding:11px 13px;border-radius:9px;margin:14px 0;font-size:14px}.mini-alert.good{border-color:#43ab86;background:#e7f7f0}.mini-alert.danger{border-color:#d16d5d;background:#fff1ed}.coachbox{padding:15px;background:#eef8f6;border-radius:13px;margin:15px 0 0;color:#184e51}.coachbox h3{margin:0 0 6px;color:#0b7468}.coachbox p{margin:6px 0;font-size:14px}
.panel-title{margin:22px 0 11px;font-size:21px;color:#143955;display:flex;align-items:center;gap:10px}.numtag{display:inline-grid;place-items:center;width:35px;height:35px;background:#e3f2f8;color:#176485;border-radius:12px;font-weight:900}
.warm-grid,.stretch-grid{display:grid;gap:11px}.micro-card{border:1px solid var(--line);border-radius:15px;padding:13px;background:#fff}.micro-top{font-size:17px;color:#134966;font-weight:900;margin-bottom:8px}.micro-card img{display:block;width:100%;height:auto;max-height:265px;object-fit:contain;background:#f1f5f7;border-radius:11px;margin:7px 0}.micro-card p{font-size:14px;margin:7px 0}.micro-card .stepinfo{padding:9px;background:#f1f8fb;border-radius:9px}.flow{font-weight:850;color:#b86723}.micro-card a{font-size:13px;font-weight:800}
.ex-card{border:1px solid #c8dbe4;border-radius:17px;margin-bottom:16px;overflow:hidden;background:white;box-shadow:0 5px 16px #16344e0a}.ex-title{display:flex;align-items:center;gap:12px;padding:15px;background:#eaf3f8}.ex-index{background:#136c70;border-radius:12px;min-width:43px;height:43px;display:grid;place-items:center;color:#fff;font-size:22px;font-weight:900}.ex-title h3{margin:0;font-size:19px;line-height:1.3;color:#133a5b}.ex-title small{font-size:12px;color:#56727b}.ex-body{padding:16px}.machine-label{display:flex;justify-content:space-between;align-items:center;gap:9px;margin:0 0 6px;font-size:15px;font-weight:850;color:#1c5a79}.machine-img{display:block;width:100%;height:auto;max-height:410px;object-fit:contain;background:#f1f5f6;border:1px solid #e3ebf0;border-radius:13px;cursor:zoom-in}.media-note{font-size:12px;color:#667a87;line-height:1.6;margin:7px 0 0}.subsect{border-top:1px solid var(--line);padding:13px 0}.subsect h4{margin:0 0 8px;color:#18536e;font-size:16px}.cue-list{display:grid;grid-template-columns:1fr;gap:8px}.cue{background:#f1f7fa;border-radius:10px;padding:10px 12px;font-size:14px;line-height:1.65}.cue b{color:#125675}.cue.warm{background:#fef2e5}.duration{display:inline-flex;background:#dff5ed;color:#0b705d;border-radius:9px;padding:5px 11px;font-weight:850}.altbox{border:1px dashed #b8d0da;background:#f4fafb;padding:11px;border-radius:12px}.altbox img{display:block;max-height:265px;width:100%;object-fit:contain;background:white;border-radius:9px}.rower-img{max-height:400px;width:100%;object-fit:contain;background:#ecf2f6;border-radius:12px}
.logbox{background:#f1f9f6;border-radius:13px;padding:13px;margin-top:13px;border:1px solid #cee8dc}.logbox h4{margin:0 0 10px;font-size:15px;color:#106653}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{background:white;border:1px solid #a8c9c2;border-radius:10px;color:#356367;padding:9px 10px;min-height:40px;font-size:13px;font-weight:800}.chip.active{background:#087b6f;border-color:#087b6f;color:white}.ex-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:11px}.ex-fields label{font-size:11px;color:#4b6571;font-weight:800}.ex-fields input{margin-top:4px;display:block;width:100%;min-height:43px;border:1px solid #b1cbd2;border-radius:9px;background:white;padding:6px 8px;font-size:16px}.form-label{display:block;margin-top:10px;color:#4a6975;font-weight:800;font-size:12px}.form-label select,.form-label textarea{margin-top:4px;display:block;width:100%;border:1px solid #b1cbd2;border-radius:10px;background:#fff;padding:9px;font-size:15px}.tip{font-size:12px;color:#6b7780;margin:10px 0 0}.video{display:inline-flex;min-height:42px;align-items:center;border:1px solid #95bfd0;color:#10648b;border-radius:10px;padding:7px 12px;text-decoration:none;font-weight:800;font-size:13px;margin-top:9px}.formarea{padding:18px}.row{display:grid;gap:12px}.sliderarea{background:#f3f8fa;border:1px solid #d7e5ed;border-radius:13px;padding:14px}.sliderarea input{width:100%;accent-color:var(--teal)}.slider-title{display:flex;justify-content:space-between;font-weight:850;color:#1a526e}.slider-title output{font-size:20px;color:#087a69}.field{margin:12px 0}.field label{display:block;font-weight:800;color:#355d70;margin-bottom:5px}.field textarea,.field input{width:100%;border-radius:10px;border:1px solid #bed1da;background:white;font-size:16px;padding:12px}.save-row{display:grid;gap:10px;margin-top:15px}.saved{font-size:12px;color:#41765d;margin:9px 0 0}.backup-actions{display:flex;flex-wrap:wrap;gap:8px}.filelabel{display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.filelabel input{position:absolute;opacity:0;width:100%;height:100%;cursor:pointer}.trend{display:grid;grid-template-columns:1fr 1fr;gap:8px}.trend .field input{min-height:44px}.footertext{font-size:13px;color:#526f80}
#toast{position:fixed;z-index:100;bottom:24px;left:50%;transform:translateX(-50%) translateY(120px);background:#143f57;color:white;border-radius:12px;padding:12px 18px;box-shadow:0 7px 27px #0004;max-width:min(92vw,600px);transition:transform .22s;font-size:14px;pointer-events:none}#toast.open{transform:translateX(-50%) translateY(0)}#photoModal[hidden]{display:none}#photoModal{position:fixed;inset:0;background:#001422ec;z-index:110;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px}#photoModal img{max-height:82vh;max-width:96vw;object-fit:contain}#photoModal button{align-self:flex-end;background:white;border:0;border-radius:10px;padding:10px 16px;margin:8px 0;font-weight:800}
.empty{border:1px dashed #a8bec8;border-radius:13px;background:#f7fafc;padding:20px;text-align:center;color:#597383}.disclaimer{font-size:12px;color:#60727b;padding:10px 2px 0}.small-tag{border:1px solid #cee0e5;border-radius:30px;padding:3px 9px;color:#4a7489;font-size:12px}
@media(min-width:740px){.quick-actions{grid-template-columns:repeat(3,1fr)}.warm-grid,.stretch-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stats{gap:14px}.cue-list{grid-template-columns:repeat(2,minmax(0,1fr))}.row{grid-template-columns:repeat(2,1fr)}.ex-body .media-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px}.save-row{grid-template-columns:repeat(3,1fr)}.calendar-grid{gap:7px}.datebtn{min-height:74px}.planbanner{padding:30px}.micro-card img{max-height:320px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.resume-link { display:inline-flex; align-items:center; min-height:44px; margin-bottom:6px; color:inherit; }
@media (max-width:380px) {
  .section-head { flex-wrap:wrap; }
}

.todo-check {
 display:flex; align-items:center; gap:12px; min-height:48px;
 width:100%; cursor:pointer; font-weight:700;
}
.todo-check input { width:22px; height:22px; margin:0; flex:none; accent-color:var(--teal); }
.day-check { padding:12px 14px; border:1px solid #a9d8d1; border-radius:12px; background:var(--tealsoft); margin:0 0 16px; }
.day-check small { display:block; font-weight:400; color:var(--sub); }
.exercise-detail { border-top:1px solid var(--line); margin-top:10px; }
.exercise-detail > summary { padding:10px 0; cursor:pointer; font-weight:700; color:var(--navy); }
.cue-steps { padding-inline-start:24px; }
.cue-steps li { margin-block:8px; }
.video-links { display:flex; align-items:center; flex-wrap:wrap; gap:4px 14px; }
.video-fallback { display:inline-flex; align-items:center; min-height:44px; color:var(--navy2); }
.weight-entry { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.weight-entry input { max-width:7rem; min-height:44px; }
.datebtn .status { overflow-wrap:anywhere; }
html:has(#photoModal[open]), body:has(#photoModal[open]) { overflow:hidden; overscroll-behavior:none; }
#photoModal:not([open]) { display:none; }
#photoModal[open] {
 margin:0; width:100%; max-width:none; height:100%; max-height:none;
 border:0; overflow:hidden; overscroll-behavior:contain;
}
#photoModal::backdrop { background:#001422; }
#photoModal img { min-height:0; max-height:calc(100dvh - 88px); width:auto; }

.demo-player { margin:12px 0; min-width:0; }
.demo-player video {
 display:block; width:100%; max-height: min(62vh, 430px); min-height:140px;
 aspect-ratio: 16 / 9; object-fit:contain; background:#102c45; border-radius:12px;
}
.demo-player figcaption,.demo-frames figcaption { font-size:13px; color:var(--sub); margin-top:5px; overflow-wrap:anywhere; }
.demo-frames { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr)); gap:10px; }
.demo-frames figure { margin:0; min-width:0; }
.phase-steps { list-style:none; padding:0; display:grid; gap:8px; margin:12px 0; }
.phase-steps li { display:grid; grid-template-columns:7em 1fr; gap:8px; padding:8px 10px; border-radius:8px; background:var(--soft); }
.phase-steps strong { color:var(--navy); }
@media (max-width:400px) {
 .phase-steps li { grid-template-columns:1fr; gap:3px; }
}

.cn-reference { width:100%; max-height:400px; display:block; border-radius:12px; background:#102c45; }

.group-plan { margin:12px 0; padding:12px; border:1px solid var(--line); border-radius:12px; background:#f8fbfc; }
.group-plan h4 { margin:0 0 8px; }
.group-plan ol { list-style:none; margin:0; padding:0; display:grid; gap:6px; }
.group-plan li { display:grid; grid-template-columns:auto 5em 1fr; gap:10px; padding:6px 8px; background:var(--soft); border-radius:8px; align-items:center; }
.demo-player .btn { margin-bottom:8px; }
.demo-player video { max-height: min(58vh, 410px); }

.today-tag { display:block; color:var(--teal); font-size:11px; font-weight:800; }
.datebtn.today { outline:2px solid var(--teal); outline-offset:-2px; }
.future-list { padding:0; margin:12px 0 0; list-style:none; display:grid; gap:8px; }
.future-row { width:100%; text-align:left; display:grid; gap:4px; padding:12px; border:1px solid var(--line); border-radius:10px; color:var(--navy); background:#f8fbfc; }
.future-row span,.future-row small { color:var(--sub); }
.adjust-session { background:#f7fbfa; border:1px solid var(--line); border-radius:12px; padding:0 12px 10px; }
.swap-row { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:10px; align-items:center; padding:8px 0; border-bottom:1px solid var(--line); }
.swap-row select,.adjust-note textarea { width:100%; min-height:44px; padding:6px; border:1px solid var(--line); border-radius:8px; background:#fff; }
.adjust-note { display:grid; gap:4px; margin-top:12px; }
@media(max-width:380px){ .swap-row { grid-template-columns:1fr; gap:4px; } }

.training-section { margin:12px 0; padding:0 12px; border:1px solid var(--line); border-radius:12px; }
.training-section > summary { padding:14px 0; cursor:pointer; color:var(--navy); font-weight:800; }
.training-section > summary small { color:var(--sub); font-weight:500; margin-left:8px; }
.training-section[open] { padding-bottom:12px; }
.group-plan li { display:block; padding:0; }
.set-card > summary { padding:10px 8px; cursor:pointer; color:var(--navy); }
.set-body { padding:0 10px 10px; }
.set-body select,.adjust-note input { display:block; width:100%; min-height:44px; padding:7px; border:1px solid var(--line); border-radius:8px; background:white; }
.chat-log p { padding:8px; margin:6px 0; background:white; border-radius:8px; overflow-wrap:anywhere; }
.back-top { position:fixed; right:max(12px,env(safe-area-inset-right)); bottom:max(12px,env(safe-area-inset-bottom)); z-index:8; box-shadow:0 2px 12px #102c4530; background:white; }

.calendar-grid { gap:5px; }
.datebtn { min-height:57px; justify-content:flex-start; gap:2px; padding:7px 2px 4px; background:#fff; border-color:#edf2f5; }
.datebtn.weekend { background:#f6f7f9; color:#617384; }
.datebtn.active { border-color:var(--teal); background:var(--tealsoft); }
.datebtn.today { outline:none; box-shadow:inset 0 0 0 1.5px var(--teal); }
.datebtn.future { opacity:1; }
.datebtn.good { color:#087c71; }
.date-check { color:#087c71; font-size:14px; line-height:1; font-weight:900; }
.datebtn.leave .status { color:#627684; }
.training-section { padding:0 14px; border-color:#dce8ed; background:#f7fafb; }
.training-section > summary { min-height:52px; }
.training-section > summary small { font-variant-numeric:tabular-nums; }
.action-card { margin:0 0 9px; border:1px solid var(--line); border-radius:12px; background:#fff; min-width:0; }
.action-card > summary { position:relative; display:grid; gap:2px; min-height:54px; align-content:center; padding:9px 34px 9px 12px; cursor:pointer; list-style:none; }
.action-card > summary::-webkit-details-marker { display:none; }
.action-card > summary::after { content:'+'; position:absolute; top:50%; right:12px; transform:translateY(-50%); color:var(--teal); font-size:19px; }
.action-card[open] > summary::after { content:'−'; }
.action-title { color:var(--navy); font-weight:800; }
.action-card > summary small { color:var(--sub); }
.action-content { border-top:1px solid var(--line); padding:12px; }
.action-content .ex-body { padding:0; }
.warm-grid,.stretch-grid { grid-template-columns:1fr; gap:0; }
@media(min-width:740px) { .warm-grid,.stretch-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 10px; align-items:start; } }

.training-layout { display:grid; gap:12px; }
.plan-controls { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.plan-controls .day-check { flex:1 1 240px; width:auto; margin:0; }
.plan-controls .day-schedule .media-note { display:none; }
.today-tip { padding:12px 14px; border-radius:12px; background:#f0f8f7; }
.today-tip strong { color:var(--teal); }
.today-tip p { margin:3px 0 0; }
.training-adjust { border:1px solid var(--line); border-radius:12px; padding:0 12px; }
.training-adjust > summary { cursor:pointer; padding:12px 0; font-weight:800; color:var(--navy); }
.training-adjust > summary small { margin-left:7px; font-weight:400; color:var(--sub); }
.training-adjust[open] { padding-bottom:12px; }
.training-tabs { position:sticky; top:0; z-index:3; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:4px; padding:4px; border:1px solid var(--line); background:#f0f5f8; border-radius:12px; }
.training-tabs button { border:0; border-radius:8px; background:transparent; color:var(--sub); font-weight:800; min-height:45px; padding:4px; white-space:nowrap; }
.training-tabs button[aria-selected="true"] { background:#fff; color:var(--teal); box-shadow:0 1px 4px #102c4520; }
.training-tabs small,.training-tabs span { font-size:11px; }
.training-panel[hidden] { display:none; }
.training-panel { min-width:0; }
.panel-meta { margin:0 0 8px; color:var(--sub); }
.exercise-jumps { display:flex; gap:6px; overflow-x:auto; padding:2px 0 9px; }
.exercise-jumps a { flex:0 0 auto; white-space:nowrap; background:#ecf7f5; color:#13655e; border-radius:100px; padding:8px 11px; text-decoration:none; font-size:13px; }
.action-card[id] { scroll-margin-top:72px; }
@media(max-width:380px){ .training-tabs small { display:none; } .training-adjust > summary small { display:block; margin-left:0; } }

#planRoot { overflow:clip; }

.datebtn { align-items:flex-start; padding:6px 5px 4px; }
.datebtn .status { margin-top:auto; }
.datebtn .date-check { position:absolute; right:4px; bottom:4px; display:grid; place-items:center; min-width:18px; height:18px; padding:0 3px; border-radius:5px; background:#e2f4ed; color:#087c71; font-size:12px; }
.datebtn .rest-mark { background:#e9eef2; color:#526778; font-size:9px; }

.training-layout > *, .warm-grid > *, .stretch-grid > * { min-width:0; }
.action-card img,.action-card video { max-width:100%; }
.set-card summary { overflow-wrap:anywhere; }
@media (max-width:380px) { .calendar-grid { gap:3px; } .datebtn { padding-inline:3px; } .datebtn .date-check { right:2px; } }

#planRoot { overflow:visible; }
.session-tools { display:grid; gap:10px; border-bottom:1px solid var(--line); background:#f8fbfc; border-radius:18px 18px 0 0; }
.training-tabs { top:env(safe-area-inset-top, 0px); z-index:12; }
.plan-controls { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
.plan-controls > .mini-alert { margin:0; }
.session-button, .plan-controls .session-button {
 width:100%; display:flex; align-items:center; justify-content:center; gap:8px;
 min-height:48px; margin:0; padding:8px; background:white; border:1px solid var(--line);
 border-radius:10px; color:var(--navy); font:inherit; font-weight:700; cursor:pointer;
}
.session-button input { accent-color:var(--teal); }
.datebtn.today .today-tag { position:absolute; top:5px; right:4px; font-size:9px; }
@media (max-width:360px) { .datebtn.today .today-tag { top:5px; right:2px; font-size:8px; } }
.hero .hero-time { margin:8px 0 0; font-weight:700; }
.session-button:has(input:disabled) { background:#edf1f4; color:#687985; cursor:not-allowed; }
.session-button input:disabled { cursor:not-allowed; }

.training-tabs[data-pinned]::before {
 content:""; position:absolute; inset:auto 0 100%; height:140px;
 background:inherit; pointer-events:none;
}
@media (max-width:740px) {
 .training-tabs { margin-inline:-34px; padding-inline:14px; border-radius:0; border-inline:0; }
}

.training-panel { min-height:calc(100vh - 70px); min-height:calc(100dvh - 70px); }
.training-layout { overflow-anchor:none; }
