:root{--bg: #0a0a0c;--bg-elev: #15161a;--bg-elev2: #1f2127;--border: #2a2c33;--text: #f5f5f7;--text-dim: #9ea0a8;--text-dim2: #6c6e76;--accent: #ff5a36;--accent-soft: rgba(255, 90, 54, .16);--success: #34d27a;--warn: #ffb13d;--danger: #ff4860;--r-sm: 10px;--r-md: 16px;--r-lg: 22px;--safe-top: env(safe-area-inset-top);--safe-bot: env(safe-area-inset-bottom);--safe-left: env(safe-area-inset-left);--safe-right: env(safe-area-inset-right);--tap: rgba(255, 255, 255, .06)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,system-ui,sans-serif;font-size:16px;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;overflow-x:hidden;user-select:none;-webkit-user-select:none;touch-action:manipulation}input,textarea{user-select:text;-webkit-user-select:text;font-size:16px}button{font-family:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}#app{min-height:100vh;min-height:100dvh;padding-top:var(--safe-top);padding-bottom:var(--safe-bot);padding-left:var(--safe-left);padding-right:var(--safe-right);display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 8px;position:sticky;top:0;background:linear-gradient(to bottom,var(--bg) 60%,transparent);z-index:10}.topbar h1{margin:0;font-size:22px;font-weight:700}.topbar .back{font-size:17px;color:var(--accent);padding:6px 0}.topbar .right{font-size:15px;color:var(--text-dim)}.home-greet{padding:4px 20px 20px}.home-greet .date{color:var(--text-dim);font-size:14px}.home-greet .greet{font-size:28px;font-weight:700;margin-top:4px}.plan-grid{padding:0 16px;display:grid;grid-template-columns:1fr 1fr;gap:12px}.plan-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px;min-height:130px;display:flex;flex-direction:column;justify-content:space-between;transition:transform .1s;text-align:left;width:100%}.plan-card:active{transform:scale(.97)}.plan-card.today{border-color:var(--accent);background:linear-gradient(135deg,var(--accent-soft),var(--bg-elev) 80%)}.plan-card .day-num{font-size:13px;color:var(--text-dim);font-weight:600}.plan-card .day-name{font-size:18px;font-weight:700;line-height:1.25;margin-top:8px}.plan-card .day-meta{font-size:12px;color:var(--text-dim2);margin-top:6px}.home-tabs{display:flex;padding:16px;gap:10px;margin-top:12px}.home-tabs a{flex:1;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--r-md);text-align:center;padding:14px;text-decoration:none;color:var(--text);font-size:15px;font-weight:500}.home-tabs a:active{background:var(--bg-elev2)}.workout{flex:1;display:flex;flex-direction:column;padding:0 16px 24px}.progress-bar{display:flex;gap:4px;padding:8px 0 16px}.progress-bar .seg{flex:1;height:4px;border-radius:2px;background:var(--bg-elev2)}.progress-bar .seg.done{background:var(--success)}.progress-bar .seg.active{background:var(--accent)}.set-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px;display:flex;flex-direction:column;gap:14px}.set-head{display:flex;flex-direction:column;gap:4px}.set-head .ex-name{font-size:22px;font-weight:700}.set-head .set-counter{font-size:14px;color:var(--text-dim)}.set-head .set-counter .num{color:var(--accent);font-weight:700}.illustration{background:var(--bg-elev2);border-radius:var(--r-md);height:160px;display:flex;align-items:center;justify-content:center}.illustration svg{width:80%;height:80%}.last-ref{font-size:13px;color:var(--text-dim);background:var(--bg-elev2);padding:10px 14px;border-radius:var(--r-sm);line-height:1.5}.last-ref strong{color:var(--text);font-weight:600}.last-ref .ago{color:var(--text-dim2);font-size:12px;margin-top:4px;display:block}.suggestion-pill{background:linear-gradient(135deg,var(--accent),#ff7d5f);color:#fff;padding:8px 12px;border-radius:var(--r-sm);font-size:13px;font-weight:600}.input-block{display:flex;flex-direction:column;gap:8px}.input-label{display:flex;justify-content:space-between;font-size:13px;color:var(--text-dim)}.input-label .side-hint{background:var(--bg-elev2);padding:2px 8px;border-radius:6px;font-size:11px}.stepper{display:grid;grid-template-columns:64px 1fr 64px;background:var(--bg-elev2);border-radius:var(--r-md);align-items:stretch;height:64px}.stepper button{font-size:28px;font-weight:300;color:var(--text);display:flex;align-items:center;justify-content:center}.stepper button:active{background:var(--tap)}.stepper .val{display:flex;flex-direction:column;align-items:center;justify-content:center}.stepper .val input{background:transparent;border:none;color:var(--text);text-align:center;font-size:26px;font-weight:700;width:100%;outline:none;padding:0}.stepper .val .unit{font-size:11px;color:var(--text-dim);margin-top:-2px}.rpe-row{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.rpe-btn{padding:14px 0;background:var(--bg-elev2);border-radius:var(--r-sm);font-size:16px;font-weight:600;color:var(--text-dim)}.rpe-btn.active{background:var(--accent);color:#fff}.btn-primary{background:var(--accent);color:#fff;padding:18px;border-radius:var(--r-md);font-size:18px;font-weight:700;width:100%;min-height:60px}.btn-primary:active{background:#e64a28}.btn-primary[disabled]{opacity:.4}.btn-secondary{background:var(--bg-elev2);color:var(--text);padding:12px;border-radius:var(--r-md);font-size:15px;width:100%}.set-foot{display:flex;gap:10px;margin-top:4px}.set-foot button{flex:1;background:var(--bg-elev2);color:var(--text-dim);padding:12px;border-radius:var(--r-sm);font-size:14px}.rest-overlay{position:fixed;inset:0;background:#0a0a0cf7;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;gap:24px;padding-top:var(--safe-top);padding-bottom:var(--safe-bot)}.rest-label{font-size:15px;color:var(--text-dim);letter-spacing:.05em;text-transform:uppercase}.rest-ring{position:relative;width:260px;height:260px}.rest-ring svg{transform:rotate(-90deg)}.rest-ring circle.bg{stroke:var(--bg-elev2)}.rest-ring circle.fg{stroke:var(--accent);transition:stroke-dashoffset .95s linear}.rest-ring .num{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.rest-ring .num span:first-child{font-size:64px;font-weight:200;font-variant-numeric:tabular-nums}.rest-ring .num span.target{font-size:13px;color:var(--text-dim);margin-top:4px}.rest-actions{display:flex;gap:12px;width:100%;max-width:400px}.rest-actions button{flex:1;padding:16px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--r-md);font-size:15px;color:var(--text)}.rest-actions .skip{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.toast{position:fixed;bottom:calc(20px + var(--safe-bot));left:16px;right:16px;background:var(--bg-elev2);border:1px solid var(--border);border-radius:var(--r-md);padding:14px 16px;display:flex;justify-content:space-between;align-items:center;font-size:14px;z-index:200;animation:slideUp .25s ease-out}.toast .undo{color:var(--accent);font-weight:600;padding:6px 10px}@keyframes slideUp{0%{transform:translateY(120%);opacity:0}to{transform:translateY(0);opacity:1}}.lock{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px;gap:18px}.lock h1{margin:0;font-size:28px}.lock p{color:var(--text-dim);text-align:center;margin:0}.lock input{background:var(--bg-elev);border:1px solid var(--border);color:var(--text);padding:16px;border-radius:var(--r-md);width:100%;max-width:320px;text-align:center;font-size:18px;letter-spacing:.1em}.lock .err{color:var(--danger);font-size:14px}.chip-row{display:flex;gap:8px;padding:8px 16px 12px;overflow-x:auto;scrollbar-width:none}.chip-row::-webkit-scrollbar{display:none}.chip{padding:8px 14px;background:var(--bg-elev);border:1px solid var(--border);border-radius:999px;font-size:13px;white-space:nowrap;color:var(--text-dim)}.chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.list{padding:0 16px;display:flex;flex-direction:column;gap:8px}.list-row{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--r-md);padding:14px 16px;display:flex;flex-direction:column;gap:4px;text-align:left;width:100%}.list-row:active{background:var(--bg-elev2)}.list-row .title{font-size:16px;font-weight:600}.list-row .meta{font-size:13px;color:var(--text-dim)}.list-row .meta strong{color:var(--text)}.form{padding:0 16px;display:flex;flex-direction:column;gap:16px}.form .field{display:flex;flex-direction:column;gap:8px}.form .field label{font-size:13px;color:var(--text-dim)}.form .field input{background:var(--bg-elev);border:1px solid var(--border);color:var(--text);padding:14px;border-radius:var(--r-md);font-size:18px;outline:none}.chart-wrap{padding:16px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--r-md);margin:0 16px}.uplot{width:100%!important}.u-legend{color:var(--text-dim)!important;font-size:12px!important}.u-axis{color:var(--text-dim)!important}.summary-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0 16px}.summary-stats .stat{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--r-md);padding:14px;text-align:center}.summary-stats .stat .v{font-size:22px;font-weight:700}.summary-stats .stat .l{font-size:11px;color:var(--text-dim);margin-top:4px}.settings-section{padding:0 16px;margin-bottom:24px}.settings-section h3{font-size:13px;color:var(--text-dim);font-weight:500;text-transform:uppercase;letter-spacing:.06em;margin:0 0 10px}.empty{padding:60px 24px;text-align:center;color:var(--text-dim)}.empty .icon{font-size:48px;opacity:.5;margin-bottom:12px}.sync-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--success);margin-right:4px}.sync-dot.pending{background:var(--warn);animation:pulse 1.5s infinite}.sync-dot.offline{background:var(--text-dim2)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.cardio-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.summary-detail{padding:0 16px;display:flex;flex-direction:column;gap:12px}.ex-block{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px}.ex-block-name{font-size:14px;font-weight:600;color:var(--text);margin-bottom:10px}.ex-block-sets{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px}.set-chip{background:var(--bg-elev2);border-radius:var(--r-sm);padding:10px 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:56px}.set-chip .big{font-size:16px;font-weight:700;color:var(--text)}.set-chip .small{font-size:11px;color:var(--text-dim);margin-top:2px}.skeleton{background:linear-gradient(90deg,var(--bg-elev) 0%,var(--bg-elev2) 50%,var(--bg-elev) 100%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:var(--r-md)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.modal-overlay{position:fixed;inset:0;background:#0009;z-index:300;display:flex;align-items:center;justify-content:center;padding:24px;padding-top:calc(24px + var(--safe-top));padding-bottom:calc(24px + var(--safe-bot))}.modal{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px;width:100%;max-width:400px;max-height:100%;overflow-y:auto}.modal h2{margin:0 0 12px;font-size:18px}.modal p{margin:8px 0;font-size:14px;color:var(--text-dim);line-height:1.5}.modal ul{margin:8px 0;padding-left:20px;color:var(--text-dim);font-size:13px}.modal ul li{margin:4px 0}.modal input{background:var(--bg-elev2);border:1px solid var(--border);color:var(--text);padding:12px;border-radius:var(--r-md);font-size:16px;width:100%;margin-top:8px;letter-spacing:.1em;text-align:center;outline:none}.modal-actions{display:flex;gap:10px;margin-top:18px}.modal-actions button{flex:1;padding:14px;border-radius:var(--r-md);font-size:15px;font-weight:600}.rest-overlay.rest-done .rest-ring circle.fg{stroke:var(--success)}.rest-overlay.rest-done{animation:alarmPulse .6s ease-in-out infinite alternate}@keyframes alarmPulse{0%{background:#0a0a0cf7}to{background:#ff5a3640}}
