:root{--bg:#f3f4f6;--card:#fff;--ink:#111827;--mute:#6b7280;--line:#e5e7eb;--pri:#2563eb;--danger:#dc2626;--ss:#7c3aed;--r:14px}
*{box-sizing:border-box}
body{margin:0;font:16px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink);padding-bottom:env(safe-area-inset-bottom)}
.bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;background:#111827;color:#fff;padding:12px 14px;min-height:56px}
.bar h1{font-size:19px;margin:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.bar h1:has(.bar-name),.bar h1:has(.bar-name-input){display:flex;align-items:center}
.bar-name{flex:1;min-width:0;min-height:40px;margin:0;padding:4px 8px;background:transparent;color:#fff;font:inherit;font-size:19px;font-weight:700;text-align:left;border-radius:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar-name-input{flex:1;min-width:0;min-height:40px;margin:0;padding:4px 8px;background:#1f2937;color:#fff;border:2px solid #93c5fd;border-radius:8px;font:inherit;font-size:18px;font-weight:700}
main{max-width:640px;margin:0 auto;padding:14px 12px 120px}
button{font:inherit;border:0;border-radius:12px;min-height:48px;padding:0 16px;cursor:pointer;background:var(--line);color:var(--ink)}
button.pri{background:var(--pri);color:#fff;font-weight:600}
button.danger{background:#fee2e2;color:var(--danger)}
button.ghost{background:transparent;color:var(--pri)}
button.icon{min-width:48px;padding:0;font-size:26px;background:transparent;color:inherit}
button.sm{min-height:44px;min-width:44px;padding:0 12px;font-size:15px}
button:disabled{opacity:.45;cursor:not-allowed}
.card{background:var(--card);border-radius:var(--r);padding:14px;margin-bottom:10px;box-shadow:0 1px 2px rgba(0,0,0,.06)}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.grow{flex:1;min-width:0}
.mute{color:var(--mute);font-size:14px}
.name{font-weight:600;font-size:17px;word-break:break-word}
.stack>*+*{margin-top:8px}
.actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.empty{text-align:center;color:var(--mute);padding:40px 10px}
label{display:block;font-weight:600;font-size:14px;margin:14px 0 6px}
input,select,textarea{font:inherit;width:100%;min-height:48px;padding:10px 12px;border:1px solid #d1d5db;border-radius:12px;background:#fff;color:var(--ink)}
textarea{min-height:80px}
.seg{display:flex;flex-wrap:wrap;gap:6px}
.seg button{flex:1 1 auto;background:#fff;border:1px solid #d1d5db}
.seg button.on{background:var(--pri);border-color:var(--pri);color:#fff;font-weight:600}
.time{display:flex;align-items:center;gap:6px}
.time input{width:84px;text-align:center}
.time span{font-weight:700;font-size:20px}
.errs{background:#fee2e2;color:var(--danger);border-radius:12px;padding:10px 12px;margin-top:14px}
.media{border:2px dashed #cbd5e1;border-radius:var(--r);min-height:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--mute);margin-top:14px;background:#f8fafc;padding:12px;text-align:center}
.media .ex-gif{width:100%;max-height:240px;object-fit:contain;border-radius:10px;background:#0f172a}
.media .seg{width:100%}
.media .mute{font-size:13px}
.file-btn{position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;border-radius:12px;background:var(--line);color:var(--ink);font-weight:600;cursor:pointer;overflow:hidden}
.file-btn input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.lib-filters{display:flex;flex-direction:column;gap:6px;margin-top:8px}
#lib-q{margin-top:10px}
#lib-results{margin-top:8px}
#lib-results:empty{display:none}
.lib-hit{display:flex;flex-direction:column;align-items:flex-start;width:100%;text-align:left;background:#fff;border:1px solid #d1d5db;margin-top:6px;padding:10px 12px}
.lib-hit.on{border-color:var(--pri);background:#eff6ff}
.lib-hit .name{font-size:16px}
.lib-hit .mute{font-weight:400}
.card>.seg{margin-top:2px}
.ss{border-left:6px solid var(--ss);background:#f5f3ff;padding:10px;border-radius:var(--r);margin-bottom:10px}
.ss>.card{margin-bottom:8px}
.ss-head{display:flex;align-items:center;gap:6px;color:var(--ss);font-weight:700;margin-bottom:8px;flex-wrap:wrap}
.badge{display:inline-block;background:var(--ss);color:#fff;border-radius:8px;padding:1px 8px;font-size:13px;margin-right:6px}
.sel{width:28px;height:28px;min-height:0;flex:none;accent-color:var(--ss)}
.dock{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);padding:10px 12px calc(10px + env(safe-area-inset-bottom));z-index:6}
.dock .inner{max-width:640px;margin:0 auto;display:flex;gap:8px}
.dock button{flex:1}
#toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);background:#111827;color:#fff;padding:10px 16px;border-radius:12px;opacity:0;transition:opacity .2s;pointer-events:none;z-index:9;max-width:90vw;text-align:center}
#toast.show{opacity:1}
.gate{padding-top:18px}
.gate h2{font-size:28px;line-height:1.15;margin:0 0 8px;letter-spacing:-.02em}
.lede{color:var(--mute);font-size:16px;line-height:1.45;margin:0 0 22px}
.gate .card{padding:22px 18px}
.linkish{display:block;width:100%;background:transparent;color:var(--pri);font-weight:600;min-height:44px;margin-top:4px}
.sales{padding-top:8px}
.sales h2{font-size:28px;line-height:1.15;margin:0 0 8px;letter-spacing:-.02em}
.note{color:var(--mute);font-size:13px;margin:0 0 18px}
.plan{padding:22px 18px 18px}
.plan h3{font-size:18px;margin:0}
.plan .price{font-size:26px;font-weight:700;letter-spacing:-.03em;margin:8px 0 6px}
.plan .value{margin:0 0 12px}
.plan ul{margin:0;padding-left:18px}
.plan li{margin:5px 0}
.plan .soon{margin:16px 0 6px;font-size:13px;font-weight:700;color:var(--mute)}
.plan.recommended{border:1px solid var(--pri);box-shadow:0 0 0 1px var(--pri)}
.invite-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:700;letter-spacing:.04em;word-break:break-all}
.tag{display:inline-block;background:#eff6ff;color:var(--pri);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}
.invite{margin:14px 0 0;font-weight:600}
.foot{text-align:center;color:var(--mute);font-size:13px;margin:4px 0 28px}
/* ---------- player ---------- */
body.playing{background:#0b0f17;color:#e5e7eb}
body.playing .bar{display:none}
.pl{--pl-current:#38bdf8;display:flex;flex-direction:column;gap:12px} /* carousel current ring only; countdown digits use .pl-ro */
.pl-stage{display:grid;grid-template-columns:1fr 92px;gap:8px;align-items:stretch}
.pl-main{display:flex;flex-direction:column;gap:0;min-width:0} /* media and the info frame sit flush */
.pl-screen{position:relative;aspect-ratio:5/6;max-height:56vh;border-radius:20px;overflow:hidden;background:radial-gradient(120% 90% at 30% 20%,#1e293b 0%,#0f172a 55%,#020617 100%);box-shadow:inset 0 0 0 1px #1f2937}
.pl-screen.is-rest{background:radial-gradient(120% 90% at 30% 20%,#0f3b2e 0%,#052e22 55%,#02140f 100%)}
.pl-media{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px;color:#334155;font-size:11px;letter-spacing:.04em;padding-top:52px}
.pl-media{z-index:0}
.pl-hint,.pl-top,.pl-ro,.pl-bar{z-index:1}
.pl-media .ex-gif{position:absolute;inset:0;width:100%;height:100%;max-height:none;object-fit:contain;border-radius:0;background:transparent}
.pl-media .media-note{position:relative;z-index:1;color:#94a3b8;font-size:13px;letter-spacing:0;text-transform:none;padding:12px 16px 0;text-align:center}
.pl-top{position:absolute;top:12px;left:12px;right:12px;display:flex;gap:6px;flex-wrap:wrap}
.pl-chip{background:#1e293b;backdrop-filter:none;color:#fff;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.pl-chip.ss{background:rgba(124,58,237,.35);backdrop-filter:blur(6px);color:#e2e8f0;margin-bottom:0} /* builder .ss margin was stretching the status chip */
.is-rest .pl-chip:not(.ss){color:#6ee7b7}
.pl-ro{position:absolute;left:0;right:0;top:52%;transform:translateY(-50%);text-align:center;font:700 clamp(36px,11vw,56px)/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:#2563eb;font-variant-numeric:tabular-nums;letter-spacing:-.02em} /* one vertical spot for every media-window clock */
.pl-name{font-size:18px;font-weight:700;color:#fff;line-height:1.15;word-break:break-word}
.pl-next{font-size:13px;color:#6ee7b7;margin-bottom:4px;font-weight:600}
.pl-meta{display:flex;flex-direction:column;gap:2px;margin-top:6px;font-size:13px;color:#cbd5e1}
/* Info sits under the media for every exercise, library or manual, so the card is the same dark surface. */
.pl-info{position:relative;background:#020617;color:#fff;border-radius:0 0 20px 20px;box-shadow:inset 1px 0 0 #1f2937,inset -1px 0 0 #1f2937,inset 0 -1px 0 #1f2937;padding:16px 14px;overflow:hidden}
.pl-info .pl-name{color:#fff}
.pl-info .pl-meta{background:none;margin:6px 0 0;padding:0;color:#cbd5e1}
.pl-rest-veil{position:absolute;top:0;bottom:0;right:0;width:100%;background:rgba(16,94,70,.78);pointer-events:none;z-index:2}
.pl-bar{position:absolute;left:0;right:0;bottom:0;height:4px;background:rgba(255,255,255,.08)}
.pl-bar i{display:block;height:100%;width:0;background:#38bdf8}
.is-rest .pl-bar i{background:#34d399}
.pl-car{max-height:none;height:0;min-height:100%;aspect-ratio:auto;overflow-y:auto;scroll-snap-type:y mandatory;display:flex;flex-direction:column;gap:6px;scrollbar-width:none} /* height:0+min-height:100% = match left column without expanding it */
.pl-car::-webkit-scrollbar{display:none}
.pl-car-h{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#64748b;padding:2px 2px 0}
.pl-ci{scroll-snap-align:start;flex:none;box-sizing:border-box;height:calc(8px * 2 + 2px + 13px * 1.2 * 3 + 2px + 11px * 1.4);padding:8px;border-radius:14px;background:#111827;color:#e5e7eb;text-align:left;display:flex;flex-direction:column;justify-content:center;gap:2px;border:1px solid #1f2937;overflow:hidden} /* one extra name line; the text block is centered, with no blank set line */
.pl-ci b{min-width:0;font-size:13px;line-height:1.2;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:break-word}
.pl-ci span{min-width:0;font-size:11px;line-height:1.4;color:#94a3b8}
.pl-ci em,.pl-li em{font-style:normal;font-size:10px;font-weight:700;color:#c4b5fd}
.pl-ci.end{color:#64748b;font-size:12px;align-items:center;justify-content:center}
.pl-track{background:#111827;border:1px solid #1f2937;border-radius:20px;padding:12px}
.pl-th{display:flex;justify-content:space-between;gap:8px;font-size:14px;margin-bottom:10px;color:#cbd5e1}
.pl-ok{color:#34d399;font-weight:600;white-space:nowrap}
.pl-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.pl-f>span{display:block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#64748b;margin-bottom:4px}
.pl-step{display:flex;align-items:stretch;background:#0b1220;border-radius:14px;overflow:hidden;border:1px solid #1f2937}
.pl-step button{min-width:48px;border-radius:0;background:transparent;color:#e5e7eb;font-size:24px;padding:0}
.pl-step button:active{background:#1f2937}
.pl-step input{flex:1;min-width:0;border:0;background:transparent;color:#fff;text-align:center;font-size:22px;font-weight:700;padding:0;min-height:52px;font-variant-numeric:tabular-nums}
.pl-bw{min-height:54px;display:flex;align-items:center;justify-content:center;background:#0b1220;border-radius:14px;color:#94a3b8;border:1px solid #1f2937}
.pl-laps{display:flex;flex-direction:column;gap:2px;margin-top:10px;font:14px ui-monospace,Menlo,monospace;color:#cbd5e1;max-height:140px;overflow:auto}
.pl-laps span{display:flex;gap:10px}.pl-laps i{margin-left:auto;color:#64748b;font-style:normal}
.pl-laps.sm{flex-direction:row;flex-wrap:wrap;gap:4px 10px;font-size:12px;margin-top:4px}
.pl-events{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.pl-ev{display:flex;flex-direction:column;gap:6px;padding-top:8px;border-top:1px solid #1f2937}
.pl-ev>span{font-size:14px;color:#e5e7eb}
.pl-pf{display:flex;gap:6px}
.pl-pf button{flex:1;min-height:44px;border-radius:12px;background:#0b1220;color:#94a3b8;border:1px solid #1f2937;font-weight:600}
.pl-pf button.on[data-pf="pass"]{background:#064e3b;color:#d1fae5;border-color:#047857}
.pl-pf button.on[data-pf="fail"]{background:#450a0a;color:#fecaca;border-color:#b91c1c}
.pl-events.sm{gap:2px;margin-top:6px}
.pl-events.sm .pl-ev{flex-direction:row;border:0;padding:0}
.lap-ev input[data-lename]{margin-top:6px}
.pl-list{display:flex;flex-direction:column;gap:6px}
.pl-li{display:flex;flex-direction:column;align-items:stretch;gap:0;text-align:left;background:#111827;color:#e5e7eb;border:1px solid #1f2937;border-radius:14px;padding:10px 12px;min-height:56px}
.pl-li-top{display:flex;align-items:center;gap:10px;width:100%}
.pl-li em{width:16px;text-align:center}
.pl-li b{display:block;flex:1;min-width:0;font-size:15px}.pl-li small{display:block;color:#64748b;font-size:12px}
.pl-notes-btn{flex:none;min-height:36px;padding:0 8px;font-size:12px;font-weight:700;border-radius:10px;background:#1f2937;color:#e5e7eb;border:1px solid #334155}
.pl-notes{margin-top:8px;padding:8px;border-radius:10px;background:#0b1220;border:1px solid #1f2937;color:#e5e7eb;font-size:13px;line-height:1.35;white-space:pre-wrap;word-break:break-word}
.pl-cnt{font-variant-numeric:tabular-nums;color:#94a3b8;font-size:14px}
.pl-done{text-align:center;padding-top:20px}
.pl-done h2{margin:8px 0 4px;color:#fff}
.pl-check{width:64px;height:64px;border-radius:50%;background:#34d399;color:#04121f;font-size:34px;line-height:64px;margin:0 auto}
.pl-sum{text-align:left;background:#111827;color:#e5e7eb;margin:16px 0}
.pl-row{padding:8px 0;border-bottom:1px solid #1f2937}.pl-row:last-child{border:0}

.pl-screen{cursor:pointer;-webkit-tap-highlight-color:transparent;user-select:none}
.pl-screen.is-static{cursor:default}
.pl-go{display:block;width:100%;min-height:99px;border-radius:16px;background:#38bdf8;color:#04121f;font-size:18px;font-weight:700}
.pl-hint{position:absolute;top:50%;left:0;right:0;transform:translateY(40px);text-align:center;font-size:13px;color:#2563eb;pointer-events:none;z-index:2}
.pl-flash{position:absolute;top:50%;left:50%;width:72px;height:72px;margin:-36px 0 0 -36px;border-radius:50%;background:rgba(2,6,23,.55);color:#fff;font-size:30px;display:flex;align-items:center;justify-content:center;pointer-events:none;animation:plf .7s ease-out forwards;z-index:3}
@keyframes plf{0%{opacity:0;transform:scale(.7)}20%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.25)}}
.pl-endw{display:block;width:100%;margin:28px 0 8px;min-height:48px;background:transparent;border:1px solid #7f1d1d;color:#f87171;border-radius:14px;font-size:15px}
.pl-ci{position:relative}
.pl-ci.cur{border-color:var(--pl-current);box-shadow:0 0 0 1px var(--pl-current) inset;background:#0c2235}
.pl-ci.done{opacity:.55}
.pl-ck{position:absolute;top:6px;right:8px;font-style:normal;font-size:12px;color:#34d399}
.pl-modal{position:fixed;inset:0;background:rgba(2,6,23,.7);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}
.pl-modal .card{max-width:340px;width:100%;display:flex;flex-direction:column;gap:10px;text-align:center}
.pl-modal button{min-height:48px;border-radius:12px}

.warn{background:#422006;color:#fde68a;border:1px solid #a16207;border-radius:12px;padding:10px 12px;font-size:13px;margin-bottom:12px;line-height:1.35}
.time.is-off{opacity:.45}
.time.is-off input{pointer-events:none;background:#0b1220}
.is-work .pl-ro{top:52%} /* work digits use .pl-ro's #2563eb; the spot stays on .pl-ro */
.is-interval .pl-ro{top:52%} /* ready, get-ready, and the running interval; size stays on .pl-ro */
.is-static .pl-ro{top:52%} /* stopwatch clock; color and size stay on .pl-ro */
.is-rest .pl-ro{top:52%;color:#6ee7b7} /* rest digits, including 0:00, stay light green */
.is-rest .pl-hint{color:#6ee7b7}
.pl-main:has(.pl-info) .pl-screen{border-radius:20px 20px 0 0} /* flush with the info frame under the media */
.pl-chain{display:flex;align-items:center;justify-content:center;height:0;margin:-3px 0;padding:0;position:relative;z-index:2;overflow:visible;pointer-events:none;flex:none;min-height:0;color:#a78bfa} /* zero row so the icon overlaps the frames instead of separating them */
.pl-chain svg{position:absolute;width:22.4px;height:22.4px}
.pl-track-g{padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid #1f2937}
.pl-track-g:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}

.chain-ico{display:inline-block;vertical-align:-2px;color:var(--ss);margin-right:4px}
.ss-chain{display:flex;justify-content:center;align-items:center;height:0;margin:-4px 0 4px;position:relative;z-index:2;overflow:visible;pointer-events:none;color:var(--ss)}
.ss-chain .chain-ico{position:absolute;left:50%;top:0;width:22.4px;height:22.4px;margin:0;transform:translate(-50%,-50%)}
.pl-li{padding-left:12px}

/* Messages */
button.person{display:flex;gap:10px;align-items:center;width:100%;text-align:left;background:#fff;color:var(--ink);border-radius:14px;padding:12px;margin:0 0 8px;box-shadow:0 1px 2px rgba(0,0,0,.06);font-weight:400;min-height:64px}
button.person .name{font-size:16px}
button.person .grow{display:flex;flex-direction:column;gap:2px;min-width:0}
.ava{width:40px;height:40px;border-radius:50%;background:#dbeafe;color:var(--pri);font-weight:700;display:flex;align-items:center;justify-content:center;flex:none}
.preview{display:block;font-size:14px;font-weight:400;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.count{min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--pri);color:#fff;font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:none}
.thread{display:flex;flex-direction:column;gap:8px;margin:8px 0 12px}
.bubble{align-self:flex-start;max-width:82%;padding:10px 12px;border-radius:16px;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.06);white-space:pre-wrap;overflow-wrap:anywhere;scroll-margin-bottom:96px}
.bubble.me{align-self:flex-end;background:var(--pri);color:#fff}
.bubble .when{display:block;margin-top:4px;font-size:12px;color:var(--mute)}
.bubble.me .when{color:rgba(255,255,255,.82)}
.dock .inner.composer{align-items:center}
.dock .inner.composer input{flex:1;min-width:0;width:auto}
.dock .inner.composer button{flex:none}
button.pick{display:flex;gap:10px;align-items:center;width:100%;text-align:left;background:#fff;color:var(--ink);border-radius:14px;padding:12px;margin:0 0 8px;box-shadow:0 1px 2px rgba(0,0,0,.06);font-weight:400;min-height:64px}
button.pick.on{box-shadow:0 0 0 2px var(--pri)}
button.pick .name{font-size:16px}
button.pick .grow{display:flex;flex-direction:column;gap:2px;min-width:0}
.mark{width:24px;height:24px;border-radius:7px;border:2px solid #cbd5e1;flex:none;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:transparent;background:#fff}
button.pick.on .mark{background:var(--pri);border-color:var(--pri);color:#fff}
label.checkline{display:flex;gap:12px;align-items:flex-start;font-weight:400;margin:14px 0 0}
input.tick{width:22px;height:22px;min-height:22px;padding:0;margin-top:2px;flex:none;accent-color:var(--pri)}
.switch{width:52px;min-width:52px;height:32px;min-height:32px;padding:0;border-radius:999px;background:#d1d5db;position:relative;flex:none}
.switch i{position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;display:block;pointer-events:none;font-style:normal}
.switch.on{background:var(--pri)}
.switch.on i{left:23px}
ul.sets{margin:8px 0 0;padding-left:18px}
ul.sets li{margin:4px 0}

/* Programs preview. Sample screen only; the live list keeps the styles above. */
body.pv-on main{max-width:1240px;padding-bottom:32px}
.pv-banner .tag{margin-bottom:2px}
.pv-h{font-size:16px;margin:14px 0 4px}
.pv-roles{margin:6px 0 8px}
.pv-roles button{flex:1 1 148px}
.pv-layout{display:flex;flex-direction:column;gap:16px}
.pv-workouts{order:2}
.pv-cal{order:1}
.pv-nav{margin:8px 0}
.pv-week-scroll{overflow:visible}
.pv-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.pv-day{min-width:0}
.pv-rail{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:8px;touch-action:pan-x}
.pv-rail .card{flex:0 0 168px;width:168px;min-height:124px;margin:0;scroll-snap-align:start}
.pv-rail .pv-pick-card{touch-action:pan-x}
.pv-day-h{display:flex;align-items:center;justify-content:space-between;gap:6px;background:#fff;border-radius:12px;padding:8px 10px;margin-bottom:8px;box-shadow:0 1px 2px rgba(0,0,0,.06)}
.pv-day.today .pv-day-h{box-shadow:0 0 0 2px var(--pri)}
.pv-day.pv-over .pv-day-h{box-shadow:0 0 0 2px var(--pri)}
.pv-dow{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--mute)}
.pv-num{font-weight:700;font-size:18px}
.pv-check{color:#059669;font-weight:800;font-size:16px;line-height:1}
.pv-ico,button.pv-ico{width:22px;height:22px;min-width:22px;min-height:22px;padding:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:0}
.pv-ico.trainer{background:#dbeafe;color:var(--pri)}
.pv-ico.solo{background:#e5e7eb;color:#4b5563}
.pv-ico svg{display:block;width:14px;height:14px}
.pv-legend{display:flex;flex-wrap:wrap;gap:8px 14px;margin:8px 0 10px}
.pv-legend>span{display:inline-flex;align-items:center;gap:6px;color:var(--mute);font-size:13px}
.pv-session{display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:8px}
.pv-session-top{display:flex;align-items:center;justify-content:space-between;gap:6px}
.pv-wo{display:flex;gap:4px;align-items:flex-start}
.pv-handle{display:inline-flex;align-items:center;justify-content:center;min-width:36px;min-height:44px;padding:0 4px;color:var(--mute);letter-spacing:-2px;cursor:grab;flex:none;font-weight:700;user-select:none}
.pv-when{display:block;font-size:13px;font-weight:700;color:var(--pri);line-height:1.2}
[data-drag]{cursor:grab;user-select:none}
.pv-sheet{position:fixed;inset:0;z-index:40;background:rgba(17,24,39,.45);display:flex;align-items:flex-end;justify-content:center;padding:12px}
.pv-sheet-card{background:#fff;color:var(--ink);width:min(440px,100%);max-height:min(82vh,680px);overflow:auto;border-radius:18px 18px 14px 14px;padding:16px;box-shadow:0 16px 40px rgba(0,0,0,.24);display:flex;flex-direction:column;gap:8px}
.pv-sheet-card h3{margin:0}
.pv-sheet-card button{width:100%}
.pv-slot{display:contents}
.pv-picks{display:flex;flex-direction:column;gap:6px;max-height:240px;overflow:auto}
button.pv-pick{width:100%;text-align:left;background:#fff;border:1px solid #d1d5db;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;min-height:64px;padding:10px 12px}
button.pv-pick.on{border-color:var(--pri);background:#eff6ff;box-shadow:0 0 0 1px var(--pri)}
button.pv-day-row{width:100%;text-align:left;background:#fff;border:1px solid #d1d5db;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;min-height:56px;padding:10px 12px}
.pv-cell.pv-over{box-shadow:0 0 0 2px var(--pri)}
button.pv-link,button.pv-session-open{background:transparent;min-height:0;padding:0;text-align:left;color:inherit}
button.pv-link{display:block;width:100%}
button.pv-session-open{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%}
.pv-day .name,.pv-ghost .name{font-size:14px;line-height:1.25;word-break:normal;overflow-wrap:normal}
.pv-session .mute,.pv-ghost .mute{display:block;font-size:12px;line-height:1.3}
.pv-drop{font-size:13px;padding:4px 2px 8px}
.pv-ghost{margin-top:4px;border:2px dashed var(--pri);background:#eff6ff;border-radius:12px;padding:8px;transform:rotate(-1.5deg);box-shadow:0 8px 16px rgba(37,99,235,.22)}
.pv-kicker{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--pri)}
.pv-dows,.pv-month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.pv-dows{margin-bottom:4px}
.pv-dows div{text-align:center;font-size:11px;font-weight:700;color:var(--mute)}
button.pv-cell{min-height:52px;padding:4px;background:#fff;border-radius:10px;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;box-shadow:0 1px 2px rgba(0,0,0,.04)}
button.pv-cell.has{background:#eff6ff}
button.pv-cell.today{box-shadow:0 0 0 2px var(--pri)}
button.pv-cell.is-out{opacity:.4}
.pv-dots{display:flex;flex-wrap:wrap;gap:2px;align-items:center;min-height:16px}
.pv-cell .pv-ico{width:16px;height:16px}
.pv-cell .pv-ico svg{width:12px;height:12px}
.pv-cell .pv-check{font-size:13px}
.pv-stage{position:relative;border-radius:20px;background:radial-gradient(120% 90% at 30% 20%,#1e293b 0%,#0f172a 55%,#020617 100%);min-height:220px;padding:16px;color:#fff;box-shadow:inset 0 0 0 1px #1f2937}
.pv-ptop{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.pv-ex{margin-top:28px;font-size:22px;font-weight:700}
.pv-stage-note{color:#cbd5e1;font-size:14px}
.pv-float{position:fixed;z-index:30;pointer-events:none;background:#fff;color:var(--ink);border:2px solid var(--pri);border-radius:12px;padding:8px 10px;box-shadow:0 10px 24px rgba(17,24,39,.2);font-weight:600;max-width:200px}
.bar .pv-menu{position:absolute;top:calc(100% + 6px);right:8px;z-index:8;width:min(280px,calc(100vw - 16px));margin:0;display:flex;flex-direction:column;gap:6px}
@media (max-width:859px){
  .pv-today-label{display:none}
  .pv-week-scroll{overflow-x:auto;overflow-y:hidden;container-type:inline-size;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;touch-action:pan-x}
  .pv-week{display:flex;gap:4px;width:max-content}
  .pv-day{flex:0 0 calc((100cqw - 16px) / 5);width:calc((100cqw - 16px) / 5);scroll-snap-align:start;overflow:hidden;background:#fff;border-radius:10px;padding:4px 2px}
  .pv-day-h{padding:4px 2px;margin-bottom:4px;box-shadow:none}
  .pv-day .name{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;overflow-wrap:break-word;word-break:normal;font-size:13px;line-height:1.25}
  .pv-day .pv-when,.pv-day .mute{font-size:11px;overflow-wrap:break-word;word-break:normal}
  .pv-day .pv-handle{min-width:18px;min-height:22px;font-size:12px;letter-spacing:-1px}
  .pv-day .pv-session{padding:2px 0;touch-action:pan-x}
  .pv-dow{font-size:11px}
  .pv-num{font-size:16px}
  body.pv-on{overflow-x:hidden}
}
@media (min-width:860px){
  .pv-layout{flex-direction:row;align-items:flex-start}
  .pv-workouts{order:1;width:300px;flex:none;position:sticky;top:70px;max-height:calc(100vh - 84px);overflow:auto}
  .pv-cal{order:2;flex:1;min-width:0}
  .pv-week-scroll{overflow:visible}
  .pv-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;width:auto}
  .pv-day{flex:none;width:auto;scroll-snap-align:none}
  .pv-rail{display:block;overflow:visible;touch-action:auto}
  .pv-rail .card{flex:none;width:auto;min-height:0;margin-bottom:10px;scroll-snap-align:none}
  .pv-pick-card,.pv-session{touch-action:none}
  .pv-sheet{align-items:center}
  .pv-sheet-card{border-radius:18px}
}
