:root{--bg:#0b1118;--bg2:#0e1620;--panel:#101b26;--panel2:#14222f;--border:#1e2f40;--text:#e9f2f7;--muted:#8ba0b1;--faint:#5b7183;--accent:#22d3ee;--accent-dim:#0e7490;--good:#34d399;--warn:#fbbf24;--bad:#f87171;--radius:12px;--tab-h:64px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--text);margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,Inter,sans-serif;font-size:16px;line-height:1.45}#root{min-height:100dvh}.app{max-width:560px;min-height:100dvh;margin:0 auto;position:relative}.page{padding:16px 16px calc(var(--tab-h) + 24px)}h1{letter-spacing:-.01em;margin:0 0 4px;font-size:1.5rem}h2{margin:20px 0 8px;font-size:1.15rem}h3{color:var(--accent);text-transform:uppercase;letter-spacing:.08em;margin:16px 0 6px;font-size:.78rem}.sub{color:var(--muted);margin:0 0 12px;font-size:.92rem}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.card{background:linear-gradient(180deg, var(--panel2), var(--panel));border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;padding:14px;position:relative}.card.tappable{cursor:pointer}.card.tappable:active{border-color:var(--accent-dim);transform:scale(.99)}.card .kicker{text-transform:uppercase;letter-spacing:.12em;color:var(--accent);margin-bottom:6px;font-size:.72rem}.card .big{font-size:1.6rem;font-weight:700}.row{align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.grow{flex:1}.btn{background:var(--accent);color:#04222a;cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;gap:8px;width:100%;padding:12px 18px;font-size:1rem;font-weight:700;display:inline-flex}.btn:active{transform:scale(.98)}.btn.ghost{color:var(--accent);border:1px solid var(--accent-dim);background:0 0}.btn.danger-ghost{color:var(--bad);background:0 0;border:1px solid #5b2b2b}.btn.small{width:auto;padding:8px 14px;font-size:.88rem}.btn:disabled{opacity:.4}input,select,textarea{background:var(--bg2);color:var(--text);border:1px solid var(--border);border-radius:10px;width:100%;padding:11px 12px;font-size:1rem}input:focus,select:focus,textarea:focus{border-color:var(--accent-dim);outline:none}label.field{margin-bottom:12px;display:block}label.field>span{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px;font-size:.8rem;display:block}.chiprow{flex-wrap:wrap;gap:8px;margin:6px 0 14px;display:flex}.chip{border:1px solid var(--border);background:var(--bg2);color:var(--muted);cursor:pointer;border-radius:999px;padding:8px 14px;font-size:.9rem}.chip.sel{border-color:var(--accent);color:var(--accent);background:#22d3ee14}.tabbar{width:100%;max-width:560px;height:var(--tab-h);border-top:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:50;padding-bottom:env(safe-area-inset-bottom);background:#0b1118f5;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tabbar a{color:var(--faint);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:.68rem;text-decoration:none;display:flex}.tabbar a .ic{font-size:1.3rem}.tabbar a.active{color:var(--accent)}.viewer{border:1px solid var(--border);border-radius:var(--radius);background:radial-gradient(at 50% 35%,#10222f 0%,#0b1118 70%);width:100%;margin-bottom:12px;position:relative;overflow:hidden}.viewer-canvas{width:100%;height:100%}.viewer-canvas canvas{display:block}.viewer-overlay{color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:34px;height:34px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.viewer-badge{letter-spacing:.1em;border:1px solid var(--border);color:var(--muted);background:#0b1118cc;border-radius:6px;padding:5px 9px;font-size:.66rem;font-weight:700;position:absolute;top:10px;left:10px}.viewer-badge.real{color:var(--good);border-color:#14532d}.viewer-badge.demo{color:var(--warn);border-color:#57410f}.viewer-controls{justify-content:center;gap:8px;display:flex;position:absolute;bottom:10px;left:10px;right:10px}.vbtn{color:var(--text);border:1px solid var(--border);cursor:pointer;background:#0b1118d9;border-radius:8px;padding:7px 12px;font-size:.82rem}.vbtn.active{border-color:var(--accent);color:var(--accent)}.setrow{border-bottom:1px solid var(--border);grid-template-columns:34px 1fr 1fr 44px;align-items:center;gap:8px;padding:8px 0;display:grid}.setrow.header{color:var(--faint);text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--border);font-size:.72rem}.setrow input{text-align:center;padding:9px 8px}.setrow .n{color:var(--faint);text-align:center;font-size:.9rem}.setrow.logged input{color:var(--good);border-color:#14532d}.logbtn{background:var(--panel2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:8px;padding:8px 0;font-size:1.1rem}.logbtn.done{color:var(--good);background:#34d3991f;border-color:#14532d}.prefill{color:var(--muted);background:var(--bg2);border:1px dashed var(--border);border-radius:8px;margin-bottom:8px;padding:8px 10px;font-size:.82rem}.prefill b{color:var(--accent)}.timer{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);text-align:center;margin:10px 0;padding:12px}.timer .t{font-variant-numeric:tabular-nums;font-size:2.2rem;font-weight:700}.timer .t.running{color:var(--accent)}.timer .t.done{color:var(--good);animation:1s ease-in-out 3 pulse}@keyframes pulse{50%{transform:scale(1.08)}}.timer .trow{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:8px;display:flex}.exrow{border-bottom:1px solid var(--border);cursor:pointer;color:inherit;align-items:center;gap:12px;padding:12px 4px;text-decoration:none;display:flex}.exrow:last-child{border-bottom:none}.exrow .nm{font-weight:600}.exrow .meta{color:var(--muted);margin-top:2px;font-size:.8rem}.exdot{border:1px solid var(--border);background:linear-gradient(135deg,#0e3a46,#10222f);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-size:1.2rem;display:flex}.muscle-tag{color:var(--accent);border:1px solid var(--accent-dim);background:#22d3ee1a;border-radius:999px;margin:2px 4px 2px 0;padding:3px 8px;font-size:.72rem;display:inline-block}.muscle-tag.sec{color:var(--muted);border-color:var(--border);background:0 0}ol.steps,ul.tips{margin:8px 0;padding-left:20px}ol.steps li,ul.tips li{margin-bottom:8px}ul.tips li::marker{content:"▸ ";color:var(--accent)}.chart{width:100%;height:auto;display:block}.bar{fill:var(--accent-dim);rx:3}.bar:hover{fill:var(--accent)}.axis{stroke:var(--border)}.gridln{stroke:var(--border);stroke-dasharray:3 4;opacity:.6}.chart-label{fill:var(--faint);font-size:10px}.trend-line{fill:none;stroke:var(--accent);stroke-width:2.5px}.trend-dot{fill:var(--accent)}.stat-grid{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px;display:grid}.stat{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:12px}.stat .v{font-size:1.4rem;font-weight:700}.stat .l{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.75rem}.note{color:var(--muted);background:var(--bg2);border-left:3px solid var(--accent-dim);border-radius:0 8px 8px 0;margin:8px 0;padding:8px 10px;font-size:.85rem}.progress-line{background:var(--bg2);border-radius:4px;height:8px;margin-top:6px;overflow:hidden}.progress-line>div{background:linear-gradient(90deg, var(--accent-dim), var(--accent));height:100%}.empty{text-align:center;color:var(--faint);padding:32px 16px}.empty .big-emoji{margin-bottom:8px;font-size:2.4rem}.accordion-head{cursor:pointer;align-items:center;gap:10px;padding:12px 0;display:flex}.accordion-head .chev{color:var(--faint);margin-left:auto;transition:transform .15s}.accordion-head.open .chev{transform:rotate(90deg)}.searchbar{z-index:10;background:var(--bg);padding:12px 0 8px;position:sticky;top:0}.sticky-actions{bottom:calc(var(--tab-h) + 8px);z-index:20;padding:8px 0;position:sticky}.divider{border:none;border-top:1px solid var(--border);margin:14px 0}.small{color:var(--muted);font-size:.82rem}
