/* Generated from Coach Dashboard Preview (chain v54): the preview IS the app.
   Scoped under .pvx; tokens bridge to the live theme system. */
.pvx {
  --ink: var(--text);
  --sub-ink: var(--text-mute);
  --line: var(--border);
  --chart-off: var(--lane-light);
  --accent: var(--crimson);
  --tint: var(--crimson-soft);
  --shadow: var(--shadow-sm);
  color: var(--ink);
}
.pvx /* ---------- preview controls ---------- */
  .controls { display:flex; align-items:center; gap:22px; margin-bottom:20px; flex-wrap:wrap; justify-content:center; }
.pvx .swatches { display:flex; gap:10px; }
.pvx .sw {
    width:30px; height:30px; border-radius:50%; cursor:pointer; border:3px solid transparent;
    transition:transform .2s ease, border-color .2s ease;
  }
.pvx .sw:hover { transform:scale(1.12); }
.pvx .sw.on { border-color:#111; transform:scale(1.12); }
.pvx /* ---------- phone ---------- */
  .phone {
    width:390px; height:844px; border-radius:46px; overflow:hidden; position:relative;
    box-shadow:0 24px 70px rgba(10,17,32,.35), 0 0 0 10px #14161c;
    background:var(--bg); color:var(--ink);
    --accent:#A0233A;
  }
html[data-theme="dark"] .pvx .sb-past { opacity:.55; }
html[data-theme="dark"] .pvx .sb-fut { opacity:.26; }
html[data-theme="dark"] .pvx .sb-dl { opacity:.6; }
html[data-theme="dark"] .pvx .vghost { opacity:.32; }
.pvx /* ---------- appearance setting (in-app) ---------- */
  .appear-row { padding:13px 0 6px; border-top:1px solid var(--line); }
.pvx .appear-seg { display:flex; background:var(--bg); border:1px solid var(--line); border-radius:14px; padding:3px; margin-top:11px; }
.pvx .appear-seg button { flex:1; border:0; background:transparent; color:var(--sub-ink); font-family:inherit; font-size:13.5px; font-weight:700; padding:9px 0; border-radius:11px; cursor:pointer; transition:all .2s ease; }
.pvx .appear-seg button.on { background:var(--accent); color:#fff; box-shadow:0 2px 10px color-mix(in srgb, var(--accent) 45%, transparent); }
.pvx .appear-hint { font-size:12px; color:var(--sub-ink); margin-top:8px; }
.pvx .peri { display:flex; gap:5px; margin-top:14px; position:relative; }
.pvx .peri-seg b { display:block; font-size:8.5px; font-weight:700; letter-spacing:.06em; color:var(--sub-ink); text-align:center; margin-bottom:5px; }
.pvx .peri-seg i { display:block; height:14px; border-radius:7px; background:var(--chart-off); }
.pvx .peri-seg.on i { background:var(--accent); }
.pvx .peri-seg span { display:block; font-size:9px; letter-spacing:.08em; font-weight:700; color:var(--sub-ink); text-transform:uppercase; text-align:center; margin-top:5px; }
.pvx .peri-mark { position:absolute; top:13px; width:7px; height:16px; border-radius:4px; background:var(--ink); border:2px solid var(--card); box-shadow:0 1px 5px rgba(0,0,0,.35); z-index:2; margin-left:-4px; }
.pvx .rd-grid { display:grid; grid-template-columns:repeat(4, 1fr); gap:8px; margin-top:4px; }
.pvx .rd-chip { border:1px solid var(--line); border-radius:13px; padding:9px 4px 8px; text-align:center; cursor:pointer; background:var(--card); }
.pvx .rd-chip b { display:block; font-size:12.5px; font-weight:800; color:var(--ink); letter-spacing:.02em; }
.pvx .rd-chip.off b { color:var(--sub-ink); }
.pvx .rd-dot { width:9px; height:9px; border-radius:50%; margin:5px auto 0; }
.pvx .rd-row { display:flex; align-items:center; gap:12px; padding:11px 0; border-top:1px solid var(--line); }
.pvx .rd-row:first-of-type { border-top:0; padding-top:2px; }
.pvx .rd-name { flex:1; font-size:14.5px; font-weight:700; color:var(--ink); }
.pvx .rd-word { font-size:12.5px; font-weight:700; }
.pvx .rd-good { color:#2E9E5B; }
.pvx .rd-mid { color:#D98E1B; }
.pvx .rd-low { color:#B23343; }
.pvx /* ---------- screens ---------- */
  .tabscreen {
    position:absolute; inset:0; overflow-y:auto; overscroll-behavior:contain;
    padding:66px 22px 110px; scrollbar-width:none; display:none; background:var(--bg);
  }
.pvx .tabscreen.active { display:block; animation:tabIn .28s ease; }
@keyframes tabIn { from { opacity:0; } to { opacity:1; } }
.pvx .tabscreen::-webkit-scrollbar { display:none; }
.pvx .push {
    position:absolute; inset:0; overflow-y:auto; overscroll-behavior:contain;
    padding:66px 22px 110px; scrollbar-width:none; background:var(--bg); z-index:40;
    transform:translateX(102%); transition:transform .38s cubic-bezier(.3,.7,.3,1);
  }
.pvx .push.in { transform:translateX(0); }
.pvx .push::-webkit-scrollbar { display:none; }
.pvx /* ---------- shared type ---------- */
  :root { --font-display:"Kanit", -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", Arial, sans-serif; }
.pvx .lbl { font-size:11px; font-weight:700; letter-spacing:.13em; text-transform:uppercase; color:var(--sub-ink); }
.pvx .sentence { font-size:15px; line-height:1.45; color:var(--sub-ink); }
.pvx .screen-title { font-family:var(--font-display); font-style:italic; text-transform:uppercase; font-size:27px; font-weight:700; letter-spacing:.01em; color:var(--ink); margin:4px 0 22px; }
.pvx .hero { text-align:center; margin-bottom:28px; }
.pvx .big-num { font-family:var(--font-display); font-style:italic; font-size:74px; font-weight:700; letter-spacing:0; line-height:.95; color:var(--ink); }
.pvx .big-sub { font-size:12px; font-weight:700; letter-spacing:.14em; color:var(--sub-ink); margin-top:6px; text-transform:uppercase; }
.pvx .hero .sentence { max-width:290px; margin:10px auto 0; }
.pvx .back { background:none; border:0; cursor:pointer; color:var(--ink); padding:4px 2px; margin:0 0 14px -4px; display:flex; align-items:center; }
.pvx /* cards */
  .card {
    background:var(--card); border-radius:20px; padding:18px 18px 17px; margin-bottom:14px;
    box-shadow:var(--shadow); border:1px solid var(--line);
  }
.pvx .card.tap { cursor:pointer; transition:transform .18s ease; }
.pvx .card.tap:active { transform:scale(.98); }
.pvx .card-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.pvx .chev { color:var(--sub-ink); flex-shrink:0; }
.pvx .card-title { font-size:19px; font-weight:700; letter-spacing:-.3px; color:var(--ink); margin-bottom:4px; }
.pvx .card .sentence { font-size:14px; }
.pvx .sec-lbl { margin:22px 4px 10px; display:block; }
.pvx .grp-chip {
    display:inline-block; background:var(--tint); color:var(--accent); font-size:11px; font-weight:700;
    letter-spacing:.08em; padding:5px 11px; border-radius:99px;
  }
.pvx .delta-chip {
    display:inline-block; font-size:12px; font-weight:700; padding:4px 10px; border-radius:99px;
  }
.pvx .delta-good { background:rgba(46,158,91,.14); color:#2E9E5B; }
.pvx .delta-flat { background:var(--tint); color:var(--accent); }
.pvx .line-row { display:flex; align-items:center; justify-content:space-between; padding:12px 0; border-top:1px solid var(--line); }
.pvx .line-row:first-of-type { border-top:0; padding-top:2px; }
.pvx .line-name { font-size:15.5px; font-weight:600; color:var(--ink); }
.pvx .line-dose { font-size:14.5px; font-weight:600; color:var(--sub-ink); }
.pvx .btn {
    display:block; width:100%; margin-top:26px;
    background:var(--accent); color:#fff; border:0; border-radius:16px; padding:17px;
    font-size:17px; font-weight:700; font-family:inherit; cursor:pointer;
    box-shadow:0 3px 10px color-mix(in srgb, var(--accent) 14%, transparent);
    transition:transform .15s ease;
  }
.pvx .btn:active { transform:scale(.98); }
.pvx /* ---------- home ---------- */
  .home-top { display:flex; align-items:center; justify-content:space-between; margin-bottom:6px; }
.pvx .home-actions { display:flex; align-items:center; gap:12px; }
.pvx .icon-btn { background:none; border:0; cursor:pointer; color:var(--ink); padding:4px; position:relative; }
.pvx .icon-dot { position:absolute; top:2px; right:0; width:8px; height:8px; border-radius:50%; background:var(--accent); }
.pvx .avatar {
    width:38px; height:38px; border-radius:50%; background:var(--tint); color:var(--accent);
    display:flex; align-items:center; justify-content:center; font-size:14px; font-weight:700; cursor:pointer;
  }
.pvx .greet { font-family:var(--font-display); font-style:italic; text-transform:uppercase; font-size:22px; font-weight:700; letter-spacing:.01em; color:var(--ink); margin:2px 0 24px; }
.pvx .ring-wrap { position:relative; width:196px; height:196px; margin:0 auto 16px; }
.pvx .ring-wrap svg { transform:rotate(-90deg); }
.pvx .ring-bg { stroke:var(--chart-off); }
.pvx .ring-fg { stroke:var(--accent); stroke-linecap:round; transition:stroke .35s ease, stroke-dashoffset 1s cubic-bezier(.3,.7,.3,1); }
.pvx .ring-center { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.pvx .meet-row { display:flex; align-items:center; justify-content:space-between; }
.pvx .meet-num { font-family:var(--font-display); font-style:italic; font-size:44px; font-weight:700; letter-spacing:0; color:var(--accent); line-height:1; text-align:right; }
.pvx .meet-days { font-size:11px; font-weight:700; letter-spacing:.13em; color:var(--sub-ink); text-align:right; margin-top:3px; }
.pvx .trend-row { display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:6px; }
.pvx .trend-num { font-family:var(--font-display); font-style:italic; font-size:34px; font-weight:700; letter-spacing:0; color:var(--ink); line-height:1; }
.pvx .trend-note { font-size:12.5px; font-weight:600; color:var(--sub-ink); }
.pvx .spark { width:100%; height:64px; display:block; margin-top:6px; }
.pvx .spark .grid { stroke:var(--line); stroke-width:1; }
.pvx .spark .line { stroke:var(--accent); stroke-width:2.5; fill:none; stroke-linecap:round; stroke-linejoin:round; }
.pvx .spark .goal { stroke:var(--sub-ink); stroke-width:1.4; stroke-dasharray:5 5; }
.pvx .spark .dot { fill:var(--accent); }
.pvx .spark-lbls { display:flex; justify-content:space-between; margin-top:4px; }
.pvx .spark-lbls span { font-size:10px; font-weight:600; letter-spacing:.06em; color:var(--sub-ink); }
.pvx .goal-row { display:flex; align-items:center; justify-content:space-between; padding:11px 0; border-top:1px solid var(--line); }
.pvx .goal-row:first-of-type { border-top:0; padding-top:4px; }
.pvx .goal-ev { font-size:16px; font-weight:700; color:var(--ink); }
.pvx .goal-times { text-align:right; }
.pvx .goal-best { font-size:16px; font-weight:700; color:var(--ink); }
.pvx .goal-goal { font-size:12.5px; color:var(--sub-ink); margin-top:1px; }
.pvx .dot-status { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:8px; vertical-align:1px; }
.pvx .dot-green { background:#2E9E5B; }
.pvx .dot-amber { background:#D98E1B; }
.pvx /* ---------- train ---------- */
  .weekstrip { display:flex; gap:8px; margin:2px 0 24px; }
.pvx .ws-day {
    flex:1; border-radius:14px; padding:10px 0 9px; text-align:center; cursor:pointer;
    background:var(--card); border:1px solid var(--line); transition:transform .15s ease;
  }
.pvx .ws-day:active { transform:scale(.95); }
.pvx .ws-day .ws-l { font-size:10px; font-weight:700; letter-spacing:.08em; color:var(--sub-ink); }
.pvx .ws-day .ws-n { font-size:16px; font-weight:800; color:var(--ink); margin-top:2px; }
.pvx .ws-day .ws-dot { width:6px; height:6px; border-radius:50%; margin:5px auto 0; background:transparent; }
.pvx .ws-day.done .ws-dot { background:#2E9E5B; }
.pvx .ws-day.planned .ws-dot { background:var(--accent); }
.pvx .ws-day.rest { opacity:.45; cursor:default; }
.pvx .ws-day.today { background:var(--accent); border-color:var(--accent); }
.pvx .ws-day.today .ws-l, .pvx .ws-day.today .ws-n { color:#fff; }
.pvx .ws-day.today .ws-dot { background:rgba(255,255,255,.85); }
.pvx .phase-bar { display:flex; gap:5px; margin-top:10px; }
.pvx .phase-seg { flex:1; height:6px; border-radius:3px; background:var(--chart-off); }
.pvx .phase-seg.on { background:var(--accent); }
.pvx .pace-mini { display:flex; align-items:baseline; gap:10px; margin-top:2px; }
.pvx .pace-mini b { font-size:28px; font-weight:800; letter-spacing:-1px; color:var(--ink); }
.pvx /* ---------- track blocks ---------- */
  .block-row { display:flex; align-items:center; justify-content:space-between; padding:14px 0; border-top:1px solid var(--line); }
.pvx .block-row:first-of-type { border-top:0; padding-top:2px; }
.pvx .block-main { font-size:21px; font-weight:800; letter-spacing:-.4px; color:var(--ink); }
.pvx .block-sub { font-size:13px; color:var(--sub-ink); margin-top:3px; }
.pvx .block-pct { font-size:21px; font-weight:800; color:var(--accent); }
.pvx /* ---------- log ---------- */
  .rep-row { display:flex; align-items:center; justify-content:space-between; padding:10px 0; border-top:1px solid var(--line); }
.pvx .rep-row:first-of-type { border-top:0; padding-top:2px; }
.pvx .rep-name { font-size:15.5px; font-weight:600; color:var(--ink); }
.pvx .rep-in {
    width:90px; text-align:center; font-size:16px; font-weight:700; color:var(--ink);
    background:var(--bg); border:1px solid var(--line); border-radius:12px; padding:10px 0; font-family:inherit;
  }
.pvx .rep-in:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent); }
.pvx .pills { display:flex; gap:8px; flex-wrap:wrap; }
.pvx .pill {
    border:1px solid var(--line); background:var(--card); color:var(--ink); border-radius:99px;
    padding:9px 16px; font-size:14px; font-weight:600; cursor:pointer; font-family:inherit;
    transition:all .18s ease; white-space:nowrap;
  }
.pvx .pill.on { background:var(--accent); border-color:var(--accent); color:#fff; }
.pvx .checkrow { display:flex; align-items:center; justify-content:space-between; padding:12px 0; border-top:1px solid var(--line); cursor:pointer; }
.pvx .checkrow:first-of-type { border-top:0; padding-top:2px; }
.pvx .ck { width:26px; height:26px; border-radius:50%; border:2px solid var(--line); display:flex; align-items:center; justify-content:center; color:#fff; flex-shrink:0; transition:all .2s ease; }
.pvx .checkrow.on .ck { background:var(--accent); border-color:var(--accent); }
.pvx .ck svg { opacity:0; transition:opacity .2s ease; }
.pvx .checkrow.on .ck svg { opacity:1; }
.pvx .note-in {
    width:100%; min-height:74px; resize:none; font-family:inherit; font-size:15px; color:var(--ink);
    background:var(--card); border:1px solid var(--line); border-radius:16px; padding:14px;
  }
.pvx .note-in:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent); }
.pvx /* ---------- pace ---------- */
  .pace-time { font-family:var(--font-display); font-style:italic; font-size:66px; font-weight:700; letter-spacing:0; color:var(--ink); line-height:1; }
.pvx .pill-scroll { display:flex; gap:8px; overflow-x:auto; padding:2px 2px 8px; scrollbar-width:none; }
.pvx .pill-scroll::-webkit-scrollbar { display:none; }
.pvx /* ---------- testing ---------- */
  .t-table { width:100%; border-collapse:collapse; }
.pvx .t-table th { font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--sub-ink); text-align:left; padding:6px 0 10px; }
.pvx .t-table th:last-child, .pvx .t-table td:last-child { text-align:right; }
.pvx .t-table td { padding:12px 0; border-top:1px solid var(--line); font-size:15.5px; font-weight:600; color:var(--ink); }
.pvx .t-dim { color:var(--sub-ink); font-weight:500; }
.pvx /* ---------- strength wheel ---------- */
  .wheel-box { position:relative; width:100%; padding:10px 0 6px; }
.pvx .wheel-grid { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:4px; }
.pvx .wheel-lbl { text-align:center; }
.pvx .wheel-lbl b { display:block; font-size:15px; font-weight:800; color:var(--ink); letter-spacing:-.2px; }
.pvx .wheel-lbl span { font-size:11.5px; font-weight:600; color:var(--sub-ink); }
.pvx .wheel-svg { display:block; margin:0 auto; }
.pvx .wheel-seg-off { fill:var(--chart-off); }
.pvx /* ---------- meets ---------- */
  .meet-item { display:flex; align-items:center; justify-content:space-between; padding:13px 0; border-top:1px solid var(--line); }
.pvx .meet-item:first-of-type { border-top:0; padding-top:2px; }
.pvx .align-card { margin-top:12px; background:rgba(217,142,27,.10); border:1px solid rgba(217,142,27,.35); border-radius:14px; padding:14px 15px; }
.pvx .align-h { font-size:14.5px; font-weight:700; color:var(--ink); margin-bottom:2px; }
.pvx .align-sub { font-size:12.5px; color:var(--sub-ink); margin-bottom:10px; }
.pvx .diff-row { display:flex; align-items:baseline; gap:8px; padding:7px 0; border-top:1px solid var(--line); font-size:13px; }
.pvx .diff-day { flex:0 0 76px; font-weight:700; color:var(--ink); font-size:12.5px; }
.pvx .diff-old { color:var(--sub-ink); text-decoration:line-through; }
.pvx .diff-arrow { color:var(--sub-ink); flex:0 0 auto; }
.pvx .diff-new { font-weight:700; color:var(--ink); }
.pvx .diff-new.meet { color:var(--accent); }
.pvx .align-tog { display:flex; align-items:center; gap:10px; padding:10px 0 4px; border-top:1px solid var(--line); margin-top:4px; cursor:pointer; }
.pvx .align-box { width:20px; height:20px; border-radius:6px; border:2px solid var(--line); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.pvx .align-box.on { background:var(--accent); border-color:var(--accent); }
.pvx .align-box svg { opacity:0; }
.pvx .align-box.on svg { opacity:1; }
.pvx .align-tog span.t { font-size:13px; color:var(--ink); }
.pvx .align-apply { width:100%; height:44px; border:none; border-radius:12px; background:var(--accent); color:#fff; font-family:inherit; font-size:14.5px; font-weight:700; margin-top:12px; cursor:pointer; }
.pvx .align-skip { width:100%; height:38px; border:none; background:none; color:var(--sub-ink); font-family:inherit; font-size:13.5px; font-weight:600; cursor:pointer; }
.pvx .mi-name { font-size:15.5px; font-weight:700; color:var(--ink); }
.pvx .mi-sub { font-size:13px; color:var(--sub-ink); margin-top:2px; }
.pvx .pr-chip { background:rgba(46,158,91,.14); color:#2E9E5B; font-size:11px; font-weight:800; letter-spacing:.06em; padding:4px 9px; border-radius:99px; margin-left:8px; }
.pvx .res-time { font-size:15.5px; font-weight:700; color:var(--ink); text-align:right; }
.pvx /* ---------- profile ---------- */
  .prof-hero { text-align:center; margin-bottom:22px; }
.pvx .prof-av {
    width:92px; height:92px; border-radius:50%; background:var(--tint); color:var(--accent);
    display:flex; align-items:center; justify-content:center; font-size:32px; font-weight:800; margin:0 auto 14px;
  }
.pvx .prof-name { font-family:var(--font-display); font-style:italic; text-transform:uppercase; font-size:23px; font-weight:700; letter-spacing:.01em; color:var(--ink); }
.pvx .prof-line { font-size:14.5px; color:var(--sub-ink); margin-top:6px; }
.pvx .prof-line b { color:var(--ink); font-weight:700; }
.pvx .prof-chip-row { margin-top:12px; }
.pvx .tog-row { display:flex; align-items:center; justify-content:space-between; padding:13px 0; border-top:1px solid var(--line); }
.pvx .tog-row:first-of-type { border-top:0; padding-top:2px; }
.pvx .tog-lbl { font-size:15.5px; font-weight:600; color:var(--ink); }
.pvx .tog { width:40px; height:22px; border-radius:99px; background:var(--line); border:0; cursor:pointer; position:relative; transition:background .25s ease; flex-shrink:0; }
.pvx .tog::after { content:""; position:absolute; top:3px; left:3px; width:16px; height:16px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.25); transition:left .25s ease; }
.pvx .tog.on { background:var(--accent); }
.pvx .tog.on::after { left:21px; }
.pvx .nav-row { display:flex; align-items:center; justify-content:space-between; padding:14px 0; border-top:1px solid var(--line); cursor:pointer; }
.pvx .nav-row:first-of-type { border-top:0; padding-top:2px; }
.pvx .signout { color:var(--accent); font-weight:700; }
.pvx .code-pill { font-size:14px; font-weight:800; letter-spacing:.2em; color:var(--accent); background:var(--tint); padding:6px 12px; border-radius:10px; }
.pvx /* ---------- messages ---------- */
  .conv { display:flex; align-items:center; gap:13px; padding:13px 0; border-top:1px solid var(--line); cursor:pointer; }
.pvx .conv:first-of-type { border-top:0; padding-top:2px; }
.pvx .conv-av { width:44px; height:44px; border-radius:50%; background:var(--tint); color:var(--accent); display:flex; align-items:center; justify-content:center; font-weight:800; font-size:15px; flex-shrink:0; }
.pvx .conv-body { flex:1; min-width:0; }
.pvx .conv-name { font-size:15.5px; font-weight:700; color:var(--ink); }
.pvx .conv-prev { font-size:13.5px; color:var(--sub-ink); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pvx .conv-time { font-size:12px; color:var(--sub-ink); flex-shrink:0; }
.pvx /* ---------- class board ---------- */
  .cb-row { display:flex; align-items:center; gap:13px; padding:12px 0; border-top:1px solid var(--line); }
.pvx .cb-row:first-of-type { border-top:0; padding-top:2px; }
.pvx .cb-ring { width:44px; height:44px; flex-shrink:0; position:relative; }
.pvx .cb-ring svg { transform:rotate(-90deg); display:block; }
.pvx .cb-ring span { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:800; color:var(--ink); }
.pvx /* ---------- highlights (stories) ---------- */
  .hl-mod { background:rgba(0,0,0,.28); border:none; color:#fff; width:24px; height:24px; border-radius:50%; font-size:15px; line-height:1; cursor:pointer; }
.pvx .mod-sheet { position:absolute; inset:0; background:rgba(8,12,20,.55); z-index:70; display:flex; align-items:flex-end; }
.pvx .mod-in { background:var(--card); border-radius:18px 18px 0 0; width:100%; padding:22px 22px 30px; }
.pvx .mod-in h3 { font-family:var(--font-display); font-style:italic; text-transform:uppercase; font-size:17px; margin-bottom:6px; color:var(--ink); }
.pvx .mod-in p { font-size:13px; color:var(--sub-ink); line-height:1.55; margin-bottom:16px; }
.pvx .mod-remove { width:100%; padding:13px 0; border-radius:12px; border:none; background:rgba(178,51,67,.12); color:#B23343; font-weight:700; font-size:14px; cursor:pointer; margin-bottom:8px; }
.pvx .mod-keep { width:100%; padding:13px 0; border-radius:12px; border:1px solid var(--line); background:none; color:var(--ink); font-weight:700; font-size:14px; cursor:pointer; }
.pvx .story-row { display:flex; gap:16px; overflow-x:auto; padding:2px 2px 6px; margin-bottom:20px; scrollbar-width:none; }
.pvx .story-row::-webkit-scrollbar { display:none; }
.pvx .story { text-align:center; cursor:pointer; flex-shrink:0; }
.pvx .story-av {
    width:62px; height:62px; border-radius:50%; background:var(--tint); color:var(--accent);
    display:flex; align-items:center; justify-content:center; font-size:20px; font-weight:800;
    border:2.5px solid var(--accent);
  }
.pvx .story.seen .story-av { border-color:var(--line); }
.pvx .story-name { font-size:11px; font-weight:600; color:var(--sub-ink); margin-top:6px; }
.pvx /* ---------- conditions ---------- */
  .wx-row { display:flex; align-items:center; justify-content:space-between; }
.pvx .wx-temp { font-size:34px; font-weight:800; letter-spacing:-1px; color:var(--ink); line-height:1; }
.pvx .wx-chip { display:inline-block; font-size:11.5px; font-weight:700; letter-spacing:.06em; padding:5px 11px; border-radius:99px; }
.pvx .wx-caution { background:rgba(217,142,27,.15); color:#D98E1B; }
.pvx .wx-ok { background:rgba(46,158,91,.14); color:#2E9E5B; }
.pvx /* ---------- team feed ---------- */
  .post { padding:16px 0 14px; border-top:1px solid var(--line); }
.pvx .post:first-of-type { border-top:0; padding-top:2px; }
.pvx .post-head { display:flex; align-items:center; gap:13px; margin-bottom:10px; }
.pvx .post-av {
    width:56px; height:56px; border-radius:50%; background:var(--tint); color:var(--accent);
    display:flex; align-items:center; justify-content:center; font-size:19px; font-weight:800; flex-shrink:0;
  }
.pvx .post-name { font-size:16px; font-weight:700; color:var(--ink); }
.pvx .post-time { font-size:12.5px; color:var(--sub-ink); margin-top:2px; }
.pvx .post-body { font-size:15px; line-height:1.45; color:var(--ink); margin-bottom:10px; }
.pvx .post-stat { background:var(--tint); border-radius:14px; padding:12px 14px; margin-bottom:10px; }
.pvx .post-stat b { font-size:22px; font-weight:800; letter-spacing:-.5px; color:var(--accent); }
.pvx .post-stat span { display:block; font-size:12px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--sub-ink); margin-top:2px; }
.pvx .like-btn {
    display:inline-flex; align-items:center; gap:7px; background:none; border:1px solid var(--line);
    border-radius:99px; padding:7px 14px; font-size:13.5px; font-weight:700; color:var(--sub-ink);
    cursor:pointer; font-family:inherit; transition:all .2s ease;
  }
.pvx .like-btn.on { border-color:var(--accent); color:var(--accent); background:var(--tint); }
.pvx .like-btn svg { display:block; }
.pvx .like-btn.on svg path { fill:var(--accent); stroke:var(--accent); }
.pvx /* ---------- leaderboard ---------- */
  .lead-row { display:flex; align-items:center; gap:13px; padding:12px 0; border-top:1px solid var(--line); }
.pvx .lead-row:first-of-type { border-top:0; padding-top:2px; }
.pvx .lead-rank { width:24px; font-size:16px; font-weight:800; color:var(--sub-ink); text-align:center; flex-shrink:0; }
.pvx .lead-row.top .lead-rank { color:var(--accent); }
.pvx .lead-av { width:44px; height:44px; border-radius:50%; background:var(--tint); color:var(--accent); display:flex; align-items:center; justify-content:center; font-weight:800; font-size:15px; flex-shrink:0; }
.pvx .lead-pct { font-size:15.5px; font-weight:800; color:var(--ink); }
.pvx /* ---------- video icon ---------- */
  .play-btn {
    display:inline-flex; align-items:center; justify-content:center; width:19px; height:19px;
    border-radius:50%; background:none; border:1px solid var(--line); color:var(--accent);
    margin-right:9px; vertical-align:-3.5px; flex-shrink:0;
  }
.pvx /* ---------- month calendar ---------- */
  .cal-nav { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.pvx .cal-title { font-size:16px; font-weight:800; color:var(--ink); }
.pvx .cal-arrow { background:none; border:0; cursor:pointer; color:var(--ink); padding:4px 8px; display:flex; }
.pvx .cal-head7 { display:grid; grid-template-columns:repeat(7,1fr); margin-bottom:6px; }
.pvx .cal-head7 span { text-align:center; font-size:10.5px; font-weight:700; letter-spacing:.08em; color:var(--sub-ink); }
.pvx .cal7 { display:grid; grid-template-columns:repeat(7,1fr); row-gap:4px; }
.pvx .cal-cell {
    position:relative; height:40px; display:flex; align-items:center; justify-content:center;
    font-size:14.5px; font-weight:600; color:var(--ink); border-radius:12px;
  }
.pvx .cal-cell.dim { color:var(--sub-ink); opacity:.35; }
.pvx .cal-cell.train::after { content:""; position:absolute; bottom:5px; left:50%; transform:translateX(-50%); width:5px; height:5px; border-radius:50%; background:var(--accent); opacity:.55; }
.pvx .cal-cell.meet { background:var(--accent); color:#fff; font-weight:800; cursor:pointer; }
.pvx .cal-cell.meet::after { display:none; }
.pvx .cal-cell.test { box-shadow:inset 0 0 0 2px var(--accent); }
.pvx .cal-cell.todayc { box-shadow:inset 0 0 0 2px var(--sub-ink); }
.pvx .cal-legend { display:flex; gap:16px; margin-top:12px; flex-wrap:wrap; }
.pvx .cal-legend span { font-size:11.5px; font-weight:600; color:var(--sub-ink); display:inline-flex; align-items:center; gap:6px; }
.pvx .cl-dot { width:8px; height:8px; border-radius:50%; display:inline-block; }
.pvx .wx-strip { display:flex; align-items:center; gap:10px; background:var(--card); border:1px solid var(--line); box-shadow:var(--shadow); border-radius:99px; padding:11px 16px; margin-bottom:20px; }
.pvx .wx-strip svg { color:var(--sub-ink); flex-shrink:0; }
.pvx .wx-strip b { font-size:16px; font-weight:800; color:var(--ink); }
.pvx .wx-strip .wx-sub { font-size:13px; color:var(--sub-ink); flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pvx .wx-pill { font-size:10.5px; font-weight:800; letter-spacing:.08em; padding:5px 10px; border-radius:99px; white-space:nowrap; }
.pvx .wx-strip { cursor:pointer; }
.pvx .wx-strip.wx-sunny { background-image:linear-gradient(120deg, rgba(255,176,66,.20), rgba(255,110,66,.08) 60%, transparent); background-color:var(--card); }
.pvx .wx-strip.wx-sunny .wx-icon { color:#E8A33D; }
.pvx .wx-back { position:absolute; inset:0; background:rgba(8,10,16,.45); z-index:52; opacity:0; pointer-events:none; transition:opacity .32s ease; }
.pvx .wx-back.in { opacity:1; pointer-events:auto; }
.pvx .wx-sheet {
    position:absolute; left:10px; right:10px; bottom:10px; z-index:53; background:var(--card);
    border-radius:26px; padding:22px 20px 20px; transform:translateY(112%);
    transition:transform .4s cubic-bezier(.3,.7,.3,1); box-shadow:0 -10px 40px rgba(8,10,16,.25);
  }
.pvx .wx-sheet.in { transform:none; }
.pvx #qrSheet.in { transform:translateY(-170px); }
.pvx .wx-x { position:absolute; top:16px; right:16px; background:none; border:0; cursor:pointer; color:var(--sub-ink); padding:6px; }
.pvx .wx-hero { text-align:center; margin:2px 0 16px; }
.pvx .wx-hero .big-num { font-size:56px; letter-spacing:-2px; }
.pvx .card.accented { background:linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 72%, #000)); border-color:transparent; }
.pvx .card.accented .lbl, .pvx .card.accented .sentence { color:rgba(255,255,255,.78); }
.pvx .card.accented .card-title, .pvx .card.accented .meet-num { color:#fff; }
.pvx .card.accented .meet-days { color:rgba(255,255,255,.72); }
.pvx .card.accented .chev { color:rgba(255,255,255,.85); }
.pvx .card.accented .grp-chip { background:rgba(255,255,255,.17); color:#fff; }
.pvx .post-media { position:relative; border-radius:16px; overflow:hidden; height:150px; margin-bottom:10px; display:flex; align-items:flex-end; }
.pvx .pm-overlay { position:relative; width:100%; padding:12px 14px 11px; background:linear-gradient(transparent, rgba(8,10,16,.82)); }
.pvx .pm-overlay b { font-size:24px; font-weight:800; letter-spacing:-.5px; color:#fff; display:block; }
.pvx .pm-overlay span { font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:rgba(255,255,255,.78); }
.pvx .pm-cam { position:absolute; top:10px; right:10px; width:30px; height:30px; border-radius:50%; background:rgba(8,10,16,.45); display:flex; align-items:center; justify-content:center; color:#fff; }
.pvx .add-btn {
    width:34px; height:34px; border-radius:50%; background:var(--accent); color:#fff; border:0;
    display:flex; align-items:center; justify-content:center; cursor:pointer; flex-shrink:0;
    box-shadow:0 2px 8px color-mix(in srgb, var(--accent) 15%, transparent); transition:transform .15s ease;
  }
.pvx .add-btn:active { transform:scale(.92); }
.pvx #scr-graph .theme-toggle button { color:var(--sub-ink); }
.pvx #scr-graph .theme-toggle button.on { background:var(--accent); color:#fff; box-shadow:none; }
.pvx .g-hero { display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:6px; }
.pvx .g-date { font-size:12px; font-weight:700; letter-spacing:.1em; color:var(--sub-ink); margin-top:6px; text-transform:uppercase; }
.pvx .g-date .g-dot { display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--accent); margin-right:7px; vertical-align:1px; }
.pvx .g-date .g-dot.prev { background:var(--sub-ink); }
.pvx .g-prev-num { font-family:var(--font-display); font-style:italic; font-size:24px; font-weight:700; color:var(--sub-ink); line-height:1; text-align:right; margin-top:10px; }
.pvx #gChart { touch-action:none; cursor:crosshair; display:block; }
.pvx .g-cursor { stroke:var(--sub-ink); stroke-width:1.4; stroke-dasharray:5 5; }
.pvx .g-ring { fill:var(--bg); stroke:var(--accent); stroke-width:2; }
.pvx .cam-view {
    position:absolute; inset:0; z-index:70; display:none; flex-direction:column;
    background:repeating-linear-gradient(105deg, rgba(255,255,255,.05) 0 3px, transparent 3px 34px), linear-gradient(160deg,#33455f,#0a1018);
  }
.pvx .cam-view.in { display:flex; }
.pvx .cam-top { display:flex; justify-content:flex-end; padding:64px 20px 0; }
.pvx .cam-x { background:rgba(8,10,16,.5); border:0; color:#fff; width:38px; height:38px; border-radius:50%; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.pvx .cam-space { flex:1; }
.pvx .cam-controls { padding:0 30px 44px; text-align:center; }
.pvx .cam-modes { display:inline-flex; background:rgba(8,10,16,.5); border-radius:99px; padding:4px; margin-bottom:22px; }
.pvx .cam-modes button { border:0; background:transparent; color:rgba(255,255,255,.7); border-radius:99px; padding:7px 18px; font-size:13px; font-weight:700; font-family:inherit; cursor:pointer; }
.pvx .cam-modes button.on { background:#fff; color:#111; }
.pvx .cam-row { display:flex; align-items:center; justify-content:space-between; }
.pvx .shutter { width:68px; height:68px; border-radius:50%; border:5px solid #fff; background:rgba(255,255,255,.25); cursor:pointer; transition:transform .12s ease; }
.pvx .shutter:active { transform:scale(.9); }
.pvx .shutter.rec { background:var(--accent); }
.pvx .cam-side { width:44px; height:44px; border-radius:50%; background:rgba(8,10,16,.5); border:0; color:#fff; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.pvx .cam-approve { display:none; align-items:center; justify-content:space-between; gap:14px; }
.pvx .cam-approve .btn { flex:1; margin-top:0; }
.pvx .cam-approve .ghost-btn { margin-top:0; color:#fff; }
.pvx .post-media {
    position:relative; height:130px; border-radius:16px; overflow:hidden; margin-top:14px;
    background:repeating-linear-gradient(105deg, rgba(255,255,255,.06) 0 3px, transparent 3px 34px), linear-gradient(160deg,#33455f,#0d1420);
  }
.pvx .meta-chip {
    display:inline-flex; align-items:center; gap:7px; background:var(--tint); color:var(--accent);
    font-size:12px; font-weight:700; padding:7px 8px 7px 12px; border-radius:99px; margin:0 8px 8px 0;
  }
.pvx .meta-chip button { background:none; border:0; color:var(--accent); cursor:pointer; display:flex; padding:0; }
.pvx .compose-media {
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px;
    height:120px; border:1.5px dashed var(--sub-ink); border-radius:16px; color:var(--sub-ink);
    font-size:13.5px; font-weight:600; cursor:pointer; margin-top:4px;
  }
.pvx .field { margin-bottom:14px; }
.pvx .field .lbl { display:block; margin-bottom:7px; }
.pvx .field-in { width:100%; font-family:inherit; font-size:16px; font-weight:600; color:var(--ink); background:var(--card); border:1px solid var(--line); border-radius:14px; padding:13px 14px; }
.pvx .field-in:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent); }
.pvx select.field-in {
    appearance:none; -webkit-appearance:none; height:52px; line-height:normal;
    background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%208'%20fill%3D'none'%3E%3Cpath%20d%3D'M1.5%201.5L6%206l4.5-4.5'%20stroke%3D'%236E7480'%20stroke-width%3D'2.2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%2F%3E%3C%2Fsvg%3E");
    background-repeat:no-repeat; background-position:right 14px center; background-size:12px;
    padding-right:36px;
  }
.pvx .field-row { display:flex; gap:12px; }
.pvx .field-row .field { flex:1; }
.pvx .editav-wrap { display:flex; justify-content:center; margin-bottom:22px; }
.pvx .editav { position:relative; width:92px; height:92px; }
.pvx .editav .prof-av { margin:0; }
.pvx .editav-cam { position:absolute; bottom:-2px; right:-2px; width:30px; height:30px; border-radius:50%; background:var(--accent); color:#fff; display:flex; align-items:center; justify-content:center; border:2.5px solid var(--bg); }
.pvx .lift-in { width:76px; text-align:center; font-size:15px; font-weight:700; color:var(--ink); background:var(--bg); border:1px solid var(--line); border-radius:12px; padding:9px 0; font-family:inherit; }
.pvx .lift-in:focus { outline:none; border-color:var(--accent); }
.pvx .vol-row { display:flex; align-items:center; gap:12px; padding:11px 0; border-top:1px solid var(--line); }
.pvx .vol-row:first-of-type { border-top:0; padding-top:2px; }
.pvx .vol-row .line-name { width:88px; flex-shrink:0; }
.pvx .vol-bar { flex:1; height:8px; border-radius:4px; background:var(--line); overflow:hidden; }
.pvx .vol-bar i { display:block; height:100%; border-radius:4px; background:var(--accent); }
.pvx .vol-row .line-dose { width:46px; text-align:right; flex-shrink:0; }
.pvx .lift-item { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:14px 0; border-top:1px solid var(--line); cursor:pointer; }
.pvx .lift-item:first-of-type { border-top:0; padding-top:2px; }
.pvx .done-wrap { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:0 36px; }
.pvx .done-ring { width:120px; height:120px; border-radius:50%; background:var(--tint); display:flex; align-items:center; justify-content:center; margin-bottom:26px; animation:popIn .55s cubic-bezier(.3,1.4,.5,1); }
@keyframes popIn { from { transform:scale(.4); opacity:0; } to { transform:scale(1); opacity:1; } }
.pvx .done-title { font-family:var(--font-display); font-style:italic; text-transform:uppercase; font-size:26px; font-weight:700; letter-spacing:.01em; color:var(--ink); margin-bottom:10px; }
.pvx .av-img { background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%20100%20100'%3E%3Cdefs%3E%3ClinearGradient%20id%3D'g'%20x1%3D'0'%20y1%3D'0'%20x2%3D'1'%20y2%3D'1'%3E%3Cstop%20offset%3D'0'%20stop-color%3D'%23c7d3e8'%2F%3E%3Cstop%20offset%3D'1'%20stop-color%3D'%2393a0ba'%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D'100'%20height%3D'100'%20fill%3D'url(%23g)'%2F%3E%3Ccircle%20cx%3D'50'%20cy%3D'42'%20r%3D'16'%20fill%3D'%23b97a52'%2F%3E%3Cpath%20d%3D'M32%2040c0-11%208-19%2018-19s18%208%2018%2019c0%202%200%203-1%204%202-13-5-19-17-19s-19%206-17%2019c-1-1-1-2-1-4z'%20fill%3D'%232a2026'%2F%3E%3Cpath%20d%3D'M33%2036c2-8%208-13%2017-13s15%205%2017%2013c1%205-1%208-1%208%200-9-7-13-16-13s-16%204-16%2013c0%200-2-3-1-8z'%20fill%3D'%232a2026'%2F%3E%3Cpath%20d%3D'M18%20100c2-19%2015-28%2032-28s30%209%2032%2028z'%20fill%3D'%238d1f33'%2F%3E%3C%2Fsvg%3E"); background-size:cover; background-position:center; color:transparent; }
.pvx .share-card {
    width:100%; border-radius:18px; padding:52px 18px 16px; margin-top:24px; text-align:left; position:relative;
    background:
      linear-gradient(rgba(10,16,30,0) 26%, rgba(10,16,30,.62) 58%, rgba(10,16,30,.97)),
      repeating-linear-gradient(105deg, rgba(255,255,255,.06) 0 3px, transparent 3px 34px),
      linear-gradient(160deg,#334562,#0d1420);
    color:#fff;
  }
.pvx .sc-brand { position:absolute; top:14px; left:18px; z-index:1; font-size:10px; letter-spacing:.16em; font-weight:800; opacity:.85; }
.pvx .sc-title { font-family:var(--font-display); font-size:15px; font-weight:700; font-style:italic; letter-spacing:.04em; color:#8FB4FF; text-transform:uppercase; }
.pvx .sc-row { display:flex; align-items:center; gap:11px; margin-top:9px; }
.pvx .sc-row i { width:4px; height:20px; border-radius:2px; flex-shrink:0; }
.pvx .sc-row span { font-size:10.5px; font-weight:800; letter-spacing:.1em; color:rgba(255,255,255,.75); width:78px; flex-shrink:0; }
.pvx .sc-row b { font-family:var(--font-display); font-size:19px; font-weight:700; font-style:italic; letter-spacing:.01em; }
.pvx .sc-big { font-family:var(--font-display); font-size:44px; font-weight:700; font-style:italic; line-height:1; margin-top:8px; }
.pvx .sc-sub { font-size:12px; opacity:.75; margin-top:12px; }
.pvx .share-card { overflow:hidden; }
.pvx .share-card > :not(.sc-photo):not(.sc-shade):not(.sc-brand) { position:relative; z-index:1; }
.pvx .sc-photo {
    position:absolute; inset:-45%; z-index:0; pointer-events:none;
    background:repeating-linear-gradient(105deg, rgba(255,255,255,.07) 0 3px, transparent 3px 34px), linear-gradient(160deg,#334562,#0d1420);
    transform:translate(0,0) scale(1); will-change:transform;
  }
.pvx .sc-shade { position:absolute; inset:0; z-index:0; pointer-events:none; background:linear-gradient(rgba(10,16,30,0) 26%, rgba(10,16,30,.62) 58%, rgba(10,16,30,.97)); }
.pvx #shCard { touch-action:none; cursor:grab; user-select:none; -webkit-user-select:none; }
.pvx #shCard:active { cursor:grabbing; }
.pvx .src-btn {
    flex:1; display:flex; align-items:center; justify-content:center; gap:8px;
    border:1px solid var(--line); background:var(--card); color:var(--accent); border-radius:99px;
    padding:11px 8px; font-size:13.5px; font-weight:700; font-family:inherit; cursor:pointer;
  }
.pvx .ghost-btn { background:none; border:0; color:var(--sub-ink); font-family:inherit; font-size:15px; font-weight:700; margin-top:14px; cursor:pointer; }
.pvx .sess-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:13px 0; border-top:1px solid var(--line); }
.pvx .sess-row:first-of-type { border-top:0; padding-top:2px; }
.pvx .share-ico {
    background:none; border:1px solid var(--line); border-radius:50%; width:34px; height:34px; flex-shrink:0;
    display:inline-flex; align-items:center; justify-content:center; color:var(--accent); cursor:pointer;
  }
.pvx .chart-nav { display:flex; align-items:center; gap:10px; margin-top:14px; }
.pvx .cnav-arrow { border:0; background:none; color:var(--ink); display:flex; align-items:center; justify-content:center; cursor:pointer; padding:6px 2px; flex-shrink:0; }
.pvx .cnav-btn { width:36px; height:36px; border-radius:50%; border:1px solid var(--line); background:var(--card); color:var(--ink); display:flex; align-items:center; justify-content:center; cursor:pointer; flex-shrink:0; }
.pvx .cnav-group { flex:1; display:flex; align-items:center; background:var(--bg); border:1px solid var(--line); border-radius:99px; padding:4px 7px; }
.pvx .cnav-pill { flex:1; border:0; background:transparent; border-radius:99px; padding:7px 0; font-size:13px; font-weight:700; color:var(--sub-ink); cursor:pointer; font-family:inherit; text-align:center; }
.pvx .cnav-pill.on { background:var(--accent); color:#fff; }
.pvx .cnav-sep { color:var(--line); font-weight:600; flex:0 0 auto; }
.pvx .view-card { flex:1; display:flex; align-items:center; gap:9px; border:1.5px solid var(--line); border-radius:14px; padding:12px; cursor:pointer; background:var(--card); color:var(--ink); font-family:inherit; font-size:14px; font-weight:700; }
.pvx .view-card.on { border-color:var(--accent); }
.pvx .view-card svg { color:var(--sub-ink); flex-shrink:0; }
.pvx .view-card.on svg { color:var(--accent); }
.pvx .radio-row { display:flex; justify-content:space-between; align-items:center; padding:12px 2px; border-top:1px solid var(--line); cursor:pointer; }
.pvx .radio-row:first-of-type { border-top:0; padding-top:4px; }
.pvx .rdo { width:22px; height:22px; border-radius:50%; border:2px solid var(--line); position:relative; flex-shrink:0; }
.pvx .rdo.on { border-color:var(--accent); }
.pvx .rdo.on::after { content:""; position:absolute; inset:4px; border-radius:50%; background:var(--accent); }
.pvx .y-lbl { font-size:9.5px; font-weight:700; letter-spacing:.02em; color:var(--sub-ink); }
.pvx .dest-row { display:flex; justify-content:space-around; margin-top:18px; }
.pvx .dest { text-align:center; background:none; border:0; cursor:pointer; font-family:inherit; }
.pvx .dest i { display:flex; width:52px; height:52px; border-radius:50%; background:var(--tint); border:1px solid var(--line); align-items:center; justify-content:center; color:var(--accent); margin:0 auto 7px; }
.pvx .dest span { font-size:11.5px; font-weight:600; color:var(--sub-ink); }
.pvx .fbtn {
    border:1.5px solid var(--accent); background:var(--accent); color:#fff; border-radius:99px;
    padding:7px 14px; font-size:12.5px; font-weight:700; font-family:inherit; cursor:pointer;
    flex-shrink:0; transition:all .18s ease; white-space:nowrap;
  }
.pvx .fbtn.out { background:transparent; color:var(--accent); }
.pvx .fbtn.dim { background:transparent; border-color:var(--line); color:var(--sub-ink); }
.pvx .req-x { background:none; border:0; color:var(--sub-ink); cursor:pointer; padding:6px; flex-shrink:0; }
.pvx .fy-chip { display:inline-block; background:var(--tint); color:var(--accent); font-size:10px; font-weight:800; letter-spacing:.06em; padding:3px 8px; border-radius:99px; margin-left:7px; vertical-align:1px; }
.pvx .fol-tabs { display:flex; background:var(--bg); border-radius:99px; padding:3px; margin:12px 0 6px; }
.pvx .fol-tabs button { flex:1; border:0; background:transparent; padding:8px 0; border-radius:99px; font-size:12.5px; font-weight:700; color:var(--sub-ink); cursor:pointer; font-family:inherit; }
.pvx .fol-tabs button.on { background:var(--accent); color:#fff; }
.pvx /* round 3: status colors + duo cards */
  .num-good { color:#2E9E5B; }
.pvx .num-warn { color:#D98E1B; }
.pvx .duo { display:flex; gap:12px; }
.pvx .duo .card { flex:1; margin-bottom:14px; }
.pvx .duo .lbl { display:block; margin-bottom:9px; }
.pvx .duo .trend-num { font-size:27px; }
.pvx .duo .sub-note { font-size:12.5px; color:var(--sub-ink); margin-top:6px; font-weight:600; }
.pvx .stat-pill { display:inline-block; font-size:11px; font-weight:800; letter-spacing:.1em; padding:5px 12px; border-radius:99px; margin-top:12px; }
.pvx .stat-pill.warn { background:rgba(217,142,27,.15); color:#D98E1B; }
.pvx .stat-pill.good { background:rgba(46,158,91,.14); color:#2E9E5B; }
.pvx .hdr-act { background:none; border:0; font-family:inherit; font-size:16px; font-weight:700; color:var(--accent); cursor:pointer; padding:10px 0 0; }
.pvx /* round 4: coach charts */
  .sg-legend { display:grid; grid-template-columns:1fr 1fr; gap:9px 10px; margin-top:14px; padding-right:22px; }
.pvx .sg-it { display:flex; align-items:center; gap:6px; font-size:11px; font-weight:600; color:var(--sub-ink); white-space:nowrap; }
.pvx .sg-it svg { flex-shrink:0; }
.pvx .sg-dot { width:8px; height:8px; border-radius:50%; background:var(--accent); flex-shrink:0; }
.pvx .sg-T { font-size:12px; font-weight:800; color:var(--sub-ink); width:10px; text-align:center; flex-shrink:0; }
.pvx .sg-star { color:var(--accent); font-size:13px; width:10px; text-align:center; flex-shrink:0; }
.pvx .sb-past { fill:var(--accent); opacity:.38; }
.pvx .sb-now { fill:var(--accent); }
.pvx .sb-fut { fill:var(--accent); opacity:.14; }
.pvx .sb-dl { fill:var(--sub-ink); opacity:.32; }
.pvx .vbar { fill:var(--accent); }
.pvx .vghost { fill:var(--accent); opacity:.16; }
.pvx .mk { font-size:8.5px; font-weight:700; fill:var(--sub-ink); }
.pvx .mk-star { font-size:10px; fill:var(--accent); }
.pvx .mk-dot { fill:var(--accent); }
.pvx /* round 5 */
  .fbtn.sm { padding:4px 10px; font-size:11px; }
.pvx .att-seg { display:flex; gap:5px; flex-shrink:0; }
.pvx .att-seg button { border:1.5px solid var(--line); background:transparent; color:var(--sub-ink); border-radius:99px; padding:5px 10px; font-size:11px; font-weight:700; font-family:inherit; cursor:pointer; }
.pvx .att-seg button.here.on { border-color:#2E9E5B; background:#2E9E5B; color:#fff; }
.pvx .att-seg button.late.on { border-color:#D98E1B; background:#D98E1B; color:#fff; }
.pvx .att-seg button.out.on { border-color:var(--sub-ink); background:var(--sub-ink); color:#fff; }
.pvx .proj-row { display:flex; align-items:center; padding:13px 0 11px; }
.pvx .proj-ev { font-family:var(--font-display); font-style:italic; font-weight:700; font-size:18px; color:var(--ink); flex:1; text-transform:uppercase; }
.pvx .proj-col { flex:1.15; text-align:center; border-left:1px solid var(--line); }
.pvx .proj-col .lbl { display:block; margin-bottom:3px; font-size:9.5px; }
.pvx .proj-col b { font-size:19px; font-weight:800; color:var(--ink); letter-spacing:-.3px; }
.pvx .proj-col.verdict b { display:block; font-size:15px; margin-bottom:1px; }
.pvx .proj-col.verdict span { font-size:13.5px; font-weight:700; }
.pvx .proj-col.ahead b, .pvx .proj-col.ahead span { color:#2E9E5B; }
.pvx .proj-col.behind b, .pvx .proj-col.behind span { color:#B23343; }
.pvx .src-chip { display:inline-block; background:var(--bg); border:1px solid var(--line); color:var(--ink); font-size:12.5px; font-weight:700; padding:5px 11px; border-radius:10px; margin:0 0 7px; }
.pvx .proj-src { padding-bottom:14px; border-bottom:1px solid var(--line); }
.pvx .proj-src:last-child { padding-bottom:2px; border-bottom:0; }
.pvx .pj-blk { padding:14px 0 16px; border-bottom:1px solid var(--line); }
.pvx .pj-blk:last-child { padding-bottom:4px; border-bottom:0; }
.pvx .pj-head { display:flex; align-items:center; justify-content:space-between; }
.pvx .pj-chip { font-size:12px; font-weight:800; padding:5px 12px; border-radius:99px; letter-spacing:.02em; }
.pvx .pj-chip.behind { background:rgba(178,51,67,.14); color:#B23343; }
.pvx .pj-chip.ahead { background:rgba(46,158,91,.14); color:#2E9E5B; }
.pvx .pj-nums { display:flex; align-items:baseline; gap:8px; margin:2px 0 12px; }
.pvx .pj-nums b { font-family:var(--font-display); font-style:italic; font-size:30px; font-weight:800; letter-spacing:-.5px; color:var(--ink); }
.pvx .pj-track { position:relative; height:14px; border-radius:7px; background:var(--chart-off); }
.pvx .pj-fill { position:absolute; left:0; top:0; bottom:0; border-radius:7px 0 0 7px; background:var(--accent); }
.pvx .pj-seg { position:absolute; top:0; bottom:0; border-radius:0 7px 7px 0; }
.pvx .pj-seg.behind { background:color-mix(in srgb, #B23343 32%, transparent); }
.pvx .pj-seg.ahead { background:#2E9E5B; }
.pvx .pj-goal { position:absolute; top:-4px; bottom:-4px; width:3.5px; border-radius:2px; background:var(--ink); box-shadow:0 0 0 1.5px var(--card); }
.pvx .pj-under { position:relative; height:15px; margin-top:7px; }
.pvx .pj-goal-lbl { position:absolute; transform:translateX(-50%); font-size:9.5px; font-weight:700; letter-spacing:.08em; color:var(--sub-ink); white-space:nowrap; }
.pvx .pj-src { font-size:12.5px; color:var(--sub-ink); margin:8px 0 0; }
.pvx .cring { width:54px; height:54px; position:relative; flex-shrink:0; }
.pvx .cring svg { transform:rotate(-90deg); display:block; }
.pvx .cring .cring-c { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.pvx .cring .cring-c b { font-size:13px; font-weight:800; color:var(--ink); line-height:1; }
.pvx .cring .cring-c i { font-style:normal; font-size:7.5px; font-weight:700; letter-spacing:.08em; color:var(--sub-ink); margin-top:2px; }
.pvx .toast { position:absolute; left:50%; top:46%; transform:translate(-50%,-50%) scale(.92); background:var(--card); border:1px solid var(--line); box-shadow:0 14px 44px rgba(8,10,16,.28); border-radius:20px; padding:20px 26px; z-index:80; opacity:0; pointer-events:none; transition:all .28s ease; text-align:center; min-width:200px; }
.pvx .toast.in { opacity:1; transform:translate(-50%,-50%) scale(1); }
.pvx .toast .tk { width:44px; height:44px; border-radius:50%; background:rgba(46,158,91,.14); color:#2E9E5B; display:flex; align-items:center; justify-content:center; margin:0 auto 10px; }
.pvx .toast .tmsg { font-size:15px; font-weight:700; color:var(--ink); }
.pvx /* round 6 */
  .en-chip { display:inline-flex; align-items:center; gap:6px; background:var(--tint); color:var(--accent); font-size:11px; font-weight:700; letter-spacing:.04em; padding:5px 10px; border-radius:99px; border:0; cursor:pointer; font-family:inherit; }
.pvx .hl-mini { flex:1; height:86px; border-radius:14px; position:relative; overflow:hidden; }
.pvx .hl-mini span { position:absolute; left:9px; bottom:8px; color:#fff; font-size:9.5px; font-weight:800; letter-spacing:.06em; line-height:1.5; }
.pvx .hl-tile { height:190px; border-radius:20px; position:relative; overflow:hidden; margin-bottom:14px; padding:16px; display:flex; flex-direction:column; justify-content:space-between; }
.pvx .hl-top { display:flex; justify-content:space-between; align-items:center; }
.pvx .hl-name { color:#fff; font-weight:800; font-size:14px; text-shadow:0 1px 6px rgba(0,0,0,.4); }
.pvx .hl-like { display:inline-flex; align-items:center; gap:6px; background:rgba(0,0,0,.34); border:0; color:#fff; border-radius:99px; padding:6px 12px; font-family:inherit; font-size:12.5px; font-weight:700; cursor:pointer; }
.pvx .hl-like.on { color:#FF8296; }
.pvx .hl-cap { color:#fff; font-size:15px; font-weight:600; text-shadow:0 1px 6px rgba(0,0,0,.45); }
.pvx /* round 7 */
  .home-top .greet { white-space:nowrap; letter-spacing:0; }
.pvx .home-top { gap:8px; }
.pvx .home-actions { gap:8px; flex-shrink:0; }
.pvx .home-top .avatar { width:30px; height:30px; font-size:12px; }
.pvx .home-top .icon-btn { padding:3px; }
.pvx .home-top .icon-btn svg { width:19px; height:19px; }
.pvx /* coach month calendar */
  .cal-head7 { display:grid; grid-template-columns:repeat(7,1fr); margin-bottom:6px; }
.pvx .cal-head7 span { text-align:center; font-size:10.5px; font-weight:700; letter-spacing:.08em; color:var(--sub-ink); }
.pvx .cal7 { display:grid; grid-template-columns:repeat(7,1fr); row-gap:4px; }
.pvx .cal-cell { position:relative; height:40px; display:flex; align-items:center; justify-content:center; font-size:14.5px; font-weight:600; color:var(--ink); border-radius:12px; }
.pvx .cal-cell.dim { color:var(--sub-ink); opacity:.35; }
.pvx .cal-cell.train::after { content:""; position:absolute; bottom:5px; left:50%; transform:translateX(-50%); width:5px; height:5px; border-radius:50%; background:var(--accent); opacity:.55; }
.pvx .cal-cell.meet { background:var(--accent); color:#fff; font-weight:800; cursor:pointer; }
.pvx .cal-cell.meet::after { display:none; }
.pvx .cal-cell.todayc { box-shadow:inset 0 0 0 2px var(--sub-ink); }
.pvx .cal-legend { display:flex; gap:16px; margin-top:12px; flex-wrap:wrap; }
.pvx .cal-legend span { font-size:11.5px; font-weight:600; color:var(--sub-ink); display:inline-flex; align-items:center; gap:6px; }
.pvx /* round 10: Bevel breathing room + chart axes */
  .card { padding:20px 19px 19px; margin-bottom:16px; }
.pvx .sec-lbl { margin:28px 4px 12px; }
.pvx .wx-sheet { padding:26px 22px 24px; }
.pvx .wx-sheet .tog-row { padding:15px 0; }
.pvx .trend-row { margin-bottom:10px; }
.pvx .spark { margin-top:10px; }
.pvx .spark-lbls { margin-top:8px; }
.pvx .card .pills { margin-bottom:12px; }
.pvx .axis { stroke:color-mix(in srgb, var(--sub-ink) 45%, transparent); stroke-width:1.2; }
.pvx /* round 12b: mini pills in chart cards */
  .card .pills .pill { padding:4px 10px; font-size:11px; }
.pvx .card .pills.tight { gap:6px; }
.pvx .card .pills.tight .pill { padding:4px 8px; }
.pvx /* chart carousel */
  .ch-scroll { display:flex; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; -webkit-overflow-scrolling:touch; gap:12px; }
.pvx .ch-scroll::-webkit-scrollbar { display:none; }
.pvx .ch-page { flex:0 0 100%; min-width:0; scroll-snap-align:start; }
.pvx .ch-page .card { margin-bottom:0; height:100%; }
.pvx .ch-dots { display:flex; justify-content:center; gap:7px; margin:12px 0 16px; }
.pvx .ch-dash { width:22px; height:4px; border-radius:2px; background:var(--line); transition:background .25s ease; }
.pvx .ch-dash.on { background:var(--accent); }
.pvx /* tab bar: floating pill (live-app shape), .pvx home centered, .pvx collapses on scroll */
  .tabbar {
    position:absolute; bottom:12px; left:50%; transform:translateX(-50%);
    width:calc(100% - 24px); height:64px; z-index:44;
    background:rgba(255,255,255,.38);
    -webkit-backdrop-filter:blur(22px) saturate(1.5); backdrop-filter:blur(22px) saturate(1.5);
    border:1px solid rgba(255,255,255,.65); border-radius:34px;
    display:flex; align-items:center; justify-content:center;
    padding:8px; box-shadow:0 14px 34px rgba(28,35,51,.16), inset 0 1px 0 rgba(255,255,255,.85), inset 0 -1px 0 rgba(255,255,255,.2);
    overflow:hidden;
    transition:width .45s cubic-bezier(.4,0,.2,1), height .45s cubic-bezier(.4,0,.2,1);
  }
html[data-theme="dark"] .pvx .tabbar {
    background:rgba(28,30,36,.32);
    -webkit-backdrop-filter:blur(24px) saturate(1.4); backdrop-filter:blur(24px) saturate(1.4);
    border-color:rgba(255,255,255,.15);
    box-shadow:0 14px 34px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.18), inset 0 -1px 0 rgba(255,255,255,.05);
  }
.pvx /* sticky header actions: glass chip matching the menu */
  .tabscreen > .home-top, .pvx .push > .home-top { position:sticky; top:-14px; z-index:25; }
.pvx .push > .back { position:sticky; top:-14px; z-index:25; }
.pvx .push > .back, .pvx .push > .home-top .back {
    width:40px; height:40px; justify-content:center; padding:0; border-radius:50%;
    border:1px solid transparent;
    -webkit-backdrop-filter:blur(22px) saturate(1.5); backdrop-filter:blur(22px) saturate(1.5);
    transition:background .3s ease, border-color .3s ease, box-shadow .3s ease;
  }
.pvx .push > .back { margin:0 0 10px -6px; }
html[data-theme="dark"] .pvx .hdr-glass .push > .back, html[data-theme="dark"] .pvx .hdr-glass .push > .home-top .back {
    background:rgba(28,30,36,.32); border-color:rgba(255,255,255,.15);
    box-shadow:0 8px 24px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.18);
  }
.pvx .tabscreen > .home-top .greet, .pvx .tabscreen > .home-top .screen-title { transition:opacity .25s ease; }
.pvx .tabscreen > .home-top .home-actions, .pvx .push > .home-top .home-actions {
    padding:5px 9px; margin:-5px -9px -5px 0; border-radius:99px;
    -webkit-backdrop-filter:blur(22px) saturate(1.5); backdrop-filter:blur(22px) saturate(1.5);
    border:1px solid transparent;
    transition:background .3s ease, border-color .3s ease, box-shadow .3s ease;
  }
html[data-theme="dark"] .pvx .hdr-glass .tabscreen > .home-top .home-actions, html[data-theme="dark"] .pvx .hdr-glass .push > .home-top .home-actions {
    background:rgba(28,30,36,.32); border-color:rgba(255,255,255,.15);
    box-shadow:0 8px 24px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.18);
  }
html[data-theme="dark"] .pvx .tab { color:rgba(255,255,255,.62); }
html[data-theme="dark"] .pvx .tab.on { color:#fff; background:rgba(255,255,255,.22); }
html[data-theme="dark"] .pvx .tab-home.on { background:rgba(255,255,255,.28); box-shadow:inset 0 1px 0 rgba(255,255,255,.35); }
@media (max-width:430px) {
.pvx .controls { padding:14px 10px 6px; margin-bottom:8px; }
}