:root {
  --bg:#0a0a0a; --surface:#111; --card:#181818; --card2:#1e1e1e;
  --border:#242424; --border2:#2e2e2e;
  --green:#39ff14; --green-dim:rgba(57,255,20,.12);
  --orange:#ff6b00; --orange-dim:rgba(255,107,0,.12);
  --red:#ff2244; --red-dim:rgba(255,34,68,.12);
  --cyan:#00d4ff; --cyan-dim:rgba(0,212,255,.1);
  --yellow:#ffd700; --yellow-dim:rgba(255,215,0,.1);
  --text:#efefef; --muted:#555; --muted2:#777;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:'DM Sans',sans-serif;min-height:100vh;overflow-x:hidden}
body::before{content:'';position:fixed;inset:0;background:radial-gradient(ellipse 80% 60% at 50% -10%,rgba(57,255,20,.04),transparent);pointer-events:none;z-index:0}

/* ─── HEADER ─── */
header{padding:52px 24px 36px;text-align:center;position:relative;border-bottom:1px solid var(--border)}
header::after{content:'';position:absolute;bottom:-1px;left:50%;transform:translateX(-50%);width:100px;height:2px;background:var(--green)}
.eyebrow{font-family:'Bebas Neue',sans-serif;font-size:11px;letter-spacing:5px;color:var(--green);margin-bottom:10px;display:block}
h1{font-family:'Bebas Neue',sans-serif;font-size:clamp(48px,9vw,88px);line-height:.95;letter-spacing:2px}
h1 em{color:var(--green);font-style:normal}
.sub{margin-top:14px;color:var(--muted2);font-size:13px;font-weight:300;letter-spacing:.5px}

/* freq toggle */
.freq-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:28px}
.freq-toggle{display:flex}
.freq-btn{padding:10px 30px;background:var(--surface);border:1px solid var(--border);color:var(--muted2);font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s;letter-spacing:1.5px;text-transform:uppercase}
.freq-btn:first-child{border-radius:6px 0 0 6px}
.freq-btn:last-child{border-radius:0 6px 6px 0}
.freq-btn.active{background:var(--green);color:#000;border-color:var(--green)}
.freq-hint{font-size:11px;color:var(--muted);letter-spacing:.5px}

/* ─── NAV TABS ─── */
.nav-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:50}
.nav-tab{flex:1;padding:14px 8px;background:none;border:none;color:var(--muted2);font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;letter-spacing:1px;text-transform:uppercase;cursor:pointer;transition:all .2s;border-bottom:2px solid transparent;margin-bottom:-1px}
.nav-tab.active{color:var(--green);border-bottom-color:var(--green)}
.nav-tab:hover:not(.active){color:var(--text)}

/* ─── MAIN ─── */
main{padding:28px 16px 80px;max-width:1200px;margin:0 auto;position:relative;z-index:1}

/* section */
.section{display:none}
.section.visible{display:block}

/* ─── STATS BAR ─── */
.stats-bar{display:grid;grid-template-columns:repeat(4,1fr);margin-bottom:24px;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}
.stat{padding:16px 12px;text-align:center;border-right:1px solid var(--border)}
.stat:last-child{border-right:none}
.stat-val{font-family:'Bebas Neue',sans-serif;font-size:28px;color:var(--green);display:block;line-height:1}
.stat-lbl{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-top:3px;display:block}

/* ─── CAT PILLS & ACTIONS ─── */
.actions-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:12px}
.cat-pills{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.cat-pills::-webkit-scrollbar{display:none}
.pill{padding:6px 16px;border-radius:100px;border:1px solid var(--border);background:transparent;color:var(--muted2);font-family:'DM Sans',sans-serif;font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .2s;text-transform:uppercase;letter-spacing:.5px}
.reset-btn{padding:6px 14px;border-radius:100px;background:var(--surface);border:1px solid var(--border);color:var(--muted);font-family:'DM Sans',sans-serif;font-size:10px;font-weight:700;cursor:pointer;transition:all .2s;text-transform:uppercase;letter-spacing:1px;white-space:nowrap;display:flex;align-items:center;gap:6px}
.reset-btn:hover{background:var(--red-dim);color:var(--red);border-color:rgba(255,34,68,.3)}
.pill[data-cat="all"].on{color:var(--text);border-color:var(--text)}
.pill[data-cat="empuje"].on{color:var(--orange);border-color:var(--orange)}
.pill[data-cat="tiron"].on{color:var(--cyan);border-color:var(--cyan)}
.pill[data-cat="pierna"].on{color:var(--yellow);border-color:var(--yellow)}

/* ─── WEEK GRID ─── */
.week-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}

/* ─── DAY CARD ─── */
.day-card{background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden;transition:transform .2s,border-color .2s;animation:up .35s both}
.day-card:hover{transform:translateY(-2px);border-color:var(--border2)}
@keyframes up{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}

.dh{padding:16px 18px 12px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.dh-left{}
.d-name{font-family:'Bebas Neue',sans-serif;font-size:26px;letter-spacing:1px;line-height:1}
.d-focus{font-size:10px;font-weight:600;letter-spacing:2px;text-transform:uppercase;margin-top:3px}
.badge{padding:3px 10px;border-radius:100px;font-size:9px;font-weight:700;letter-spacing:1px;text-transform:uppercase;flex-shrink:0;margin-top:3px}
.be{background:var(--orange-dim);color:var(--orange)}
.bt{background:var(--cyan-dim);color:var(--cyan)}
.bp{background:var(--yellow-dim);color:var(--yellow)}

.prog-bar{height:2px;background:var(--border);margin:0 18px 12px;border-radius:100px;overflow:hidden}
.prog-fill{height:100%;background:var(--green);border-radius:100px;transition:width .3s}

/* exercise row */
.ex-list{padding:4px 18px 14px;display:flex;flex-direction:column}
.ex-row{display:flex;align-items:center;gap:10px;padding:8px 4px;border-bottom:1px solid #1d1d1d;border-radius:6px;transition:background .15s;cursor:default}
.ex-row:last-child{border-bottom:none}
.ex-row:hover{background:rgba(255,255,255,.025)}
.ex-row.done .ex-name{text-decoration:line-through;color:var(--muted)}
.ex-row.done .ex-sets{color:var(--muted)}

.chk{width:17px;height:17px;border-radius:4px;border:1px solid #2e2e2e;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}
.ex-row.done .chk{background:var(--green);border-color:var(--green)}
.chk svg{display:none}
.ex-row.done .chk svg{display:block}

.ex-name{font-size:12.5px;flex:1;transition:color .2s;line-height:1.3}
.ex-sets{font-family:'Bebas Neue',sans-serif;font-size:15px;letter-spacing:1px;color:var(--muted2);flex-shrink:0}

/* info button */
.ex-info-btn{width:20px;height:20px;border-radius:50%;border:1px solid #2e2e2e;background:none;color:var(--muted);font-size:10px;font-weight:700;cursor:pointer;flex-shrink:0;transition:all .2s;display:flex;align-items:center;justify-content:center}
.ex-info-btn:hover{border-color:var(--cyan);color:var(--cyan);background:var(--cyan-dim)}

/* finish day button */
.finish-day-btn{display:block;width:100%;padding:12px;background:var(--surface);border:none;border-top:1px solid var(--border);color:var(--muted2);font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s;text-align:center;}
.finish-day-btn:hover{color:var(--text);background:var(--card2);}

/* ─── LEG CARD ─── */
.leg-card{background:var(--card);border:1px solid #2a2000;border-radius:14px;overflow:hidden;animation:up .35s both}
.leg-body{padding:18px}
.leg-emoji{font-size:32px;text-align:center;margin-bottom:8px}
.leg-title{font-family:'Bebas Neue',sans-serif;font-size:16px;letter-spacing:2px;color:var(--yellow);text-align:center;margin-bottom:14px}
.leg-opt{display:flex;align-items:center;gap:10px;padding:10px 14px;background:rgba(255,215,0,.06);border:1px solid rgba(255,215,0,.12);border-radius:8px;cursor:pointer;transition:all .2s;margin-bottom:8px}
.leg-opt:last-of-type{margin-bottom:0}
.leg-opt:hover{background:rgba(255,215,0,.12)}
.leg-opt.sel{background:rgba(255,215,0,.18);border-color:var(--yellow)}
.leg-dot{width:7px;height:7px;border-radius:50%;background:var(--yellow);flex-shrink:0}
.leg-oname{font-size:13px;font-weight:500;flex:1}
.leg-otag{font-size:10px;color:var(--muted)}
.leg-note{font-size:11px;color:var(--muted);text-align:center;margin-top:12px;line-height:1.5}

/* ─── REST CARD ─── */
.rest-card{background:var(--card);border:1px dashed var(--border);border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:36px 20px;gap:6px;color:var(--muted);animation:up .35s both}
.rest-ico{font-size:28px;opacity:.4}
.rest-lbl{font-family:'Bebas Neue',sans-serif;font-size:20px;letter-spacing:2px}
.rest-sub{font-size:11px}

/* focus colors */
.cp{color:var(--green)} .ch{color:var(--orange)} .ct{color:var(--yellow)}
.cd{color:var(--green)} .ce{color:var(--red)}    .cb{color:var(--yellow)}
.cpi{color:var(--yellow)}

/* ─── EXERCISE MODAL ─── */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.8);backdrop-filter:blur(6px);z-index:200;display:flex;align-items:flex-end;justify-content:center;opacity:0;pointer-events:none;transition:opacity .25s}
.modal-overlay.open{opacity:1;pointer-events:all}
.modal{background:var(--card);border:1px solid var(--border2);border-radius:20px 20px 0 0;width:100%;max-width:540px;max-height:88vh;overflow-y:auto;transform:translateY(20px);transition:transform .25s;padding-bottom:env(safe-area-inset-bottom)}
.modal-overlay.open .modal{transform:translateY(0)}

.modal-handle{width:36px;height:3px;background:var(--border2);border-radius:100px;margin:14px auto 0}
.modal-header{padding:18px 22px 0}
.modal-muscle{font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;margin-bottom:4px}
.modal-title{font-family:'Bebas Neue',sans-serif;font-size:32px;letter-spacing:1px;line-height:1}
.modal-sets{font-size:12px;color:var(--muted2);margin-top:4px;font-style:italic}

/* visual UPDATE - Premium Media Support */
.modal-visual{margin:18px 22px 0;border-radius:12px;background:#111;border:1px solid var(--border);height:220px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;box-shadow:inset 0 0 40px rgba(0,0,0,0.8)}
.modal-media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.05);transition:opacity 0.4s ease, transform 0.4s ease;z-index:1;}
.modal-media.loaded{opacity:0.85;transform:scale(1)}
.visual-fade{position:absolute;inset:0;background:linear-gradient(to top, var(--card) 0%, transparent 40%);z-index:2;pointer-events:none;}

.modal-visual-inner{display:flex;flex-direction:column;align-items:center;gap:8px;z-index:3;position:relative;}
.ex-anim{font-size:56px;animation:pulse 2s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.1)}}
.modal-visual-label{font-size:11px;color:var(--muted);letter-spacing:1px;text-transform:uppercase}

/* body map */
.modal-muscles{display:flex;gap:6px;flex-wrap:wrap;margin:14px 22px 0}
.m-chip{padding:4px 10px;border-radius:100px;font-size:10px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}
.m-primary{background:var(--green-dim);color:var(--green);border:1px solid rgba(57,255,20,.2)}
.m-secondary{background:rgba(255,255,255,.05);color:var(--muted2);border:1px solid var(--border)}

/* desc */
.modal-desc{padding:14px 22px 0;font-size:13px;color:#aaa;line-height:1.65}

/* cues */
.modal-cues{padding:14px 22px 0}
.cues-title{font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.cue{display:flex;gap:10px;margin-bottom:8px;align-items:flex-start}
.cue-dot{width:5px;height:5px;border-radius:50%;background:var(--green);flex-shrink:0;margin-top:5px}
.cue-text{font-size:12.5px;color:#bbb;line-height:1.5}

/* variants - updated as clickable */
.modal-variants{padding:14px 22px 20px}
.var-title{font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.var-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin-bottom:8px;cursor:pointer;transition:all .2s;}
.var-card:last-child{margin-bottom:0}
.var-card:hover{border-color:var(--border2);background:rgba(255,255,255,.025)}
.var-card.active-var{border-color:var(--cyan);background:var(--cyan-dim)}
.var-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.var-tag{font-size:9px;font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:2px 8px;border-radius:100px}
.var-easier{background:var(--green-dim);color:var(--green)}
.var-harder{background:var(--red-dim);color:var(--red)}
.var-noequip{background:var(--cyan-dim);color:var(--cyan)}
.var-name{font-size:13px;font-weight:600}
.var-desc{font-size:12px;color:var(--muted2);line-height:1.5}

.modal-close{display:block;margin:0 22px 22px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;color:var(--muted2);font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s;width:calc(100% - 44px);text-align:center}
.modal-close:hover{border-color:var(--border2);color:var(--text)}

/* ─── CHART SECTION ─── */
.chart-section{}
.chart-top{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}
.c-stat{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px;text-align:center}
.c-stat-val{font-family:'Bebas Neue',sans-serif;font-size:32px;line-height:1;display:block}
.c-stat-lbl{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-top:3px;display:block}
.c-stat.green .c-stat-val{color:var(--green)}
.c-stat.orange .c-stat-val{color:var(--orange)}
.c-stat.cyan .c-stat-val{color:var(--cyan)}

.chart-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:20px;margin-bottom:16px}
.chart-card-title{font-family:'Bebas Neue',sans-serif;font-size:18px;letter-spacing:1px;margin-bottom:4px}
.chart-card-sub{font-size:11px;color:var(--muted);margin-bottom:18px}

/* canvas chart */
.chart-wrap{position:relative;height:180px;width:100%}
canvas{display:block}

/* bar chart */
.bar-chart{display:flex;align-items:flex-end;gap:8px;height:140px;padding-top:20px}
.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px}
.bar-track{flex:1;width:100%;background:var(--surface);border-radius:4px 4px 0 0;position:relative;overflow:hidden;min-height:4px}
.bar-fill{position:absolute;bottom:0;left:0;right:0;border-radius:4px 4px 0 0;transition:height .6s cubic-bezier(.34,1.56,.64,1);min-height:2px}
.bar-lbl{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;text-align:center;white-space:nowrap}
.bar-pct{font-family:'Bebas Neue',sans-serif;font-size:13px;color:var(--text);position:absolute;top:-18px;left:50%;transform:translateX(-50%);white-space:nowrap}

/* ring */
.ring-row{display:flex;gap:16px;align-items:center}
.ring-wrap{position:relative;flex-shrink:0}
.ring-wrap svg{transform:rotate(-90deg)}
.ring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.ring-pct{font-family:'Bebas Neue',sans-serif;font-size:26px;color:var(--green);line-height:1}
.ring-sub{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}
.ring-details{flex:1;display:flex;flex-direction:column;gap:10px}
.ring-item{display:flex;align-items:center;gap:8px}
.ring-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.ring-item-lbl{font-size:12px;flex:1}
.ring-item-val{font-family:'Bebas Neue',sans-serif;font-size:15px;color:var(--muted2)}

/* streak */
.streak-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin-top:4px}
.streak-cell{aspect-ratio:1;border-radius:4px;background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:8px;color:var(--muted);flex-direction:column;gap:1px;cursor:default;transition:all .2s}
.streak-cell.has-data{background:var(--green-dim);border-color:rgba(57,255,20,.3)}
.streak-cell.has-data .sc-day{color:var(--green)}
.streak-cell .sc-day{font-family:'Bebas Neue',sans-serif;font-size:11px}
.streak-cell .sc-pct{font-size:7px;color:var(--muted2)}
.streak-cell.has-data .sc-pct{color:rgba(57,255,20,.7)}
.streak-days-row{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin-bottom:6px}
.sd{font-size:9px;color:var(--muted);text-align:center;text-transform:uppercase;letter-spacing:.5px}

/* empty state */
.empty-chart{text-align:center;padding:32px 20px;color:var(--muted)}
.empty-ico{font-size:36px;margin-bottom:10px;opacity:.4}
.empty-txt{font-size:13px;line-height:1.6}

/* tips */
.tips-card{background:var(--card);border:1px solid var(--border);border-left:3px solid var(--green);border-radius:12px;padding:20px;margin-top:16px}
.tips-title{font-family:'Bebas Neue',sans-serif;font-size:18px;letter-spacing:1px;color:var(--green);margin-bottom:14px}
.tips-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
.tip{display:flex;gap:10px;align-items:flex-start}
.tip-ico{font-size:16px;flex-shrink:0;margin-top:1px}
.tip-txt{font-size:12px;color:#999;line-height:1.55}

/* ─── CHAT FAB & CHAT MODAL ─── */
.chat-fab {
  position:fixed; bottom:24px; right:24px; z-index:100;
  width:60px; height:60px; border-radius:30px;
  background:var(--green); border:none; cursor:pointer;
  box-shadow:0 8px 24px rgba(57,255,20,0.3);
  display:flex; align-items:center; justify-content:center;
  transition:transform 0.25s, box-shadow 0.25s;
}
.chat-fab:hover { transform:scale(1.08); box-shadow:0 12px 28px rgba(57,255,20,0.4); }
.chat-fab-icon { font-size:28px; line-height:1; }

.chat-modal { display:flex; flex-direction:column; height:80vh; max-height:700px; padding:0; overflow:hidden; }
.chat-history { flex:1; overflow-y:auto; padding:20px; display:flex; flex-direction:column; gap:16px; scroll-behavior:smooth; }
.chat-msg { display:flex; max-width:85%; }
.bot-msg { align-self:flex-start; }
.user-msg { align-self:flex-end; }
.msg-bubble { padding:12px 16px; font-size:13px; line-height:1.5; border-radius:12px; }
.bot-msg .msg-bubble { background:var(--surface); border:1px solid var(--border); color:var(--text); border-bottom-left-radius:4px; }
.user-msg .msg-bubble { background:var(--green-dim); border:1px solid rgba(57,255,20,0.3); color:var(--text); border-bottom-right-radius:4px; }

.chat-input-area { padding:14px 20px; border-top:1px solid var(--border); display:flex; gap:10px; background:var(--card); }
.chat-input-area input { flex:1; background:var(--surface); border:1px solid var(--border); border-radius:20px; padding:0 16px; color:var(--text); font-family:inherit; font-size:13px; outline:none; transition:border-color 0.2s; }
.chat-input-area input:focus { border-color:var(--green); }
.chat-send { width:40px; height:40px; border-radius:20px; background:var(--green); border:none; color:#000; cursor:pointer; display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:transform 0.2s; }
.chat-send:active { transform:scale(0.9); }
.chat-send:disabled { background:var(--muted); opacity:0.5; cursor:not-allowed; }

.typing-dot { display:inline-block; width:6px; height:6px; border-radius:50%; background:var(--muted); margin-right:3px; animation:tp 1.4s infinite ease-in-out both; }
.typing-dot:nth-child(1) { animation-delay:-0.32s; }
.typing-dot:nth-child(2) { animation-delay:-0.16s; }
@keyframes tp { 0%, 80%, 100% { transform:scale(0); } 40% { transform:scale(1); } }

.chat-action-row { display:flex; gap:10px; flex-wrap:wrap; padding:6px 0 2px; }
.chat-action-btn { flex:1; min-width:120px; padding:10px 14px; border-radius:10px; border:none; font-family:inherit; font-size:12px; font-weight:700; letter-spacing:.5px; cursor:pointer; transition:transform 0.15s, opacity 0.15s; }
.chat-action-btn:active { transform:scale(0.96); }
.chat-action-btn.confirm { background:var(--green); color:#000; }
.chat-action-btn.confirm:hover { opacity:0.85; }
.chat-action-btn.reject { background:var(--surface); border:1px solid var(--border2); color:var(--muted2); }
.chat-action-btn.reject:hover { border-color:var(--red); color:var(--red); }

@media(max-width:520px){
  .stats-bar{grid-template-columns:repeat(2,1fr)}
  .stat:nth-child(2){border-right:none}
  .stat:nth-child(3){border-top:1px solid var(--border)}
  .chart-top{grid-template-columns:1fr 1fr}
}