:root{
  --bg:#14101f; --card:#1e1830; --card2:#262040; --text:#f2eefb; --muted:#a79fc4;
  --accent:#ffdd00; --accent2:#8b5cf6; --danger:#ff6b6b; --ok:#4ade80;
  --radius:14px; --tabbar-h:calc(64px + env(safe-area-inset-bottom));
}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg); color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text",Segoe UI,Roboto,sans-serif;
  font-size:16px; line-height:1.45; overscroll-behavior-y:none;
}
#app{max-width:560px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;}
#topbar{
  position:sticky;top:0;z-index:20;background:rgba(20,16,31,.92);backdrop-filter:blur(12px);
  padding:calc(env(safe-area-inset-top) + 10px) 16px 10px;border-bottom:1px solid #2c2547;
}
#profile-chips{display:flex;gap:8px;overflow-x:auto;}
.chip{
  border:1px solid #3a3160;background:var(--card);color:var(--text);
  border-radius:999px;padding:8px 16px;font-size:15px;font-weight:600;white-space:nowrap;cursor:pointer;
}
.chip.active{background:var(--accent);color:#1a1a1a;border-color:var(--accent);}
#view{flex:1;padding:16px 16px calc(var(--tabbar-h) + 16px);}
#tabbar{
  position:fixed;bottom:0;left:0;right:0;z-index:20;max-width:560px;margin:0 auto;
  display:flex;background:rgba(24,19,41,.96);backdrop-filter:blur(12px);
  border-top:1px solid #2c2547;padding:6px 4px env(safe-area-inset-bottom);
}
.tab{flex:1;background:none;border:none;color:var(--muted);font-size:22px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;cursor:pointer;}
.tab span{font-size:11px;font-weight:600;}
.tab.active{color:var(--accent);}
h1{font-size:24px;margin:4px 0 12px;}
h2{font-size:18px;margin:20px 0 10px;}
.card{background:var(--card);border:1px solid #2c2547;border-radius:var(--radius);padding:14px;margin-bottom:12px;}
.muted{color:var(--muted);} .small{font-size:13px;}
.row{display:flex;gap:10px;align-items:center;}
.grow{flex:1;}
.btn{
  display:block;width:100%;border:none;border-radius:var(--radius);cursor:pointer;
  background:var(--accent);color:#1a1a1a;font-weight:700;font-size:17px;padding:14px;
}
.btn.secondary{background:var(--card2);color:var(--text);border:1px solid #3a3160;}
.btn.danger{background:#3a1d24;color:var(--danger);border:1px solid #5c2b33;}
.btn.small{width:auto;padding:9px 14px;font-size:14px;display:inline-block;}
input,select,textarea{
  width:100%;background:#120e1d;border:1px solid #3a3160;color:var(--text);
  border-radius:10px;padding:12px;font-size:16px;margin:4px 0;
}
input:focus,select:focus{outline:none;border-color:var(--accent2);}
label{font-size:13px;color:var(--muted);font-weight:600;display:block;margin-top:10px;}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.set-row{display:grid;grid-template-columns:44px 1fr 1fr 34px;gap:8px;align-items:center;margin:6px 0;}
.set-row .n{font-weight:700;color:var(--muted);text-align:center;}
.set-row input{margin:0;padding:10px;text-align:center;}
.set-row.cardio{grid-template-columns:44px 1fr 1fr 34px;}
.icon-btn{background:none;border:none;color:var(--danger);font-size:20px;cursor:pointer;padding:6px;}
.ex-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;}
.ex-name{font-weight:700;font-size:16px;}
.ex-cat{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;}
.title-chips{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0;}
.title-chips .chip{font-size:13px;padding:6px 12px;}
/* sheet */
#sheet-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:40;}
#sheet{
  position:fixed;left:0;right:0;bottom:0;z-index:41;max-width:560px;margin:0 auto;
  background:var(--card);border-radius:20px 20px 0 0;max-height:82dvh;overflow-y:auto;
  padding:16px 16px calc(env(safe-area-inset-bottom) + 16px);border-top:1px solid #3a3160;
  animation:slideup .22s ease-out;
}
@keyframes slideup{from{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}
.hidden{display:none!important;}
.sheet-handle{width:44px;height:5px;border-radius:3px;background:#3a3160;margin:0 auto 12px;}
.ex-item{display:flex;align-items:center;justify-content:space-between;padding:12px 4px;border-bottom:1px solid #2c2547;cursor:pointer;}
.ex-item:active{background:var(--card2);}
/* calendar */
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.cal-head h2{margin:0;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
.cal-dow{text-align:center;font-size:12px;color:var(--muted);font-weight:700;padding:6px 0;}
.cal-day{
  aspect-ratio:1;border-radius:10px;background:var(--card);border:1px solid #241f3d;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-size:14px;cursor:pointer;position:relative;min-height:44px;
}
.cal-day.other{opacity:.28;}
.cal-day.today{border-color:var(--accent);}
.cal-day.planned{border-style:dashed;border-color:#4a4180;}
.cal-day .plan-tag{font-size:9px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
.cue{font-size:13px;color:var(--muted);background:#17141f;border-radius:8px;padding:8px 10px;margin:6px 0;}
.link-btn{background:none;border:none;color:var(--accent);font-size:12px;cursor:pointer;padding:2px 0;}
.bars{display:flex;gap:6px;align-items:flex-end;height:118px;margin:8px 0 2px;}
.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;height:100%;}
.bar-v{width:100%;background:var(--accent);border-radius:4px 4px 0 0;min-height:3px;}
.bar-l{font-size:9px;color:var(--muted);}
.cal-day .dots{display:flex;gap:3px;margin-top:3px;}
.cal-day .dot{width:7px;height:7px;border-radius:50%;}
.cal-day .cnt{font-size:10px;color:var(--muted);}
.day-detail{margin-top:12px;}
.w-item{display:flex;gap:10px;align-items:center;padding:12px 4px;border-bottom:1px solid #2c2547;cursor:pointer;}
.w-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0;}
.w-title{font-weight:700;} .w-sub{font-size:13px;color:var(--muted);}
/* challenges */
.lb-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #2c2547;}
.bar{height:10px;border-radius:5px;background:var(--accent);min-width:4px;transition:width .3s;}
.bar-track{flex:1;background:#120e1d;border-radius:5px;overflow:hidden;}
.setup{max-width:420px;margin:12vh auto 0;text-align:center;}
.setup input{margin:8px 0;text-align:center;font-size:18px;}
.stat-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:12px 0;}
.stat{background:var(--card);border:1px solid #2c2547;border-radius:var(--radius);padding:12px 6px;text-align:center;}
.stat .v{font-size:24px;font-weight:800;color:var(--accent);}
.stat .l{font-size:12px;color:var(--muted);}
.empty{text-align:center;color:var(--muted);padding:32px 16px;}
.detail-table{width:100%;border-collapse:collapse;font-size:14px;}
.detail-table th{color:var(--muted);font-size:12px;text-align:left;padding:6px 4px;border-bottom:1px solid #2c2547;}
.detail-table td{padding:8px 4px;border-bottom:1px solid #241f3d;}
.person-filter{display:flex;gap:8px;margin-bottom:10px;}
.feel-row{display:flex;gap:8px;margin:6px 0 2px;}
.feel{
  flex:1;background:#120e1d;border:2px solid #3a3160;border-radius:12px;
  font-size:28px;padding:8px 0;cursor:pointer;filter:grayscale(.7);opacity:.6;
}
.feel.active{border-color:var(--accent);filter:none;opacity:1;background:var(--card2);}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0;}
.coach-chip{
  background:#1c1533;border:1px solid #3a3160;color:var(--fg);
  border-radius:999px;padding:8px 14px;font-size:14px;cursor:pointer;
}
.coach-chip:active{background:var(--accent);color:#1a1a1a;border-color:var(--accent);}
.ex-row{display:flex;align-items:center;gap:6px;padding:10px 0;border-top:1px solid #2a2350;}
.ex-row .icon-btn{color:var(--fg);font-size:22px;}
.stake-line{font-size:14px;margin:6px 0;font-weight:600;}
.result-banner{
  background:#1c1533;border:2px solid var(--accent);border-radius:12px;
  padding:12px;margin:10px 0;font-weight:700;font-size:15px;
}
