:root{--bg: #0d1117;--surface: #161b22;--surface-2: #1f2630;--border: #2d333b;--text: #e6edf3;--text-dim: #8b949e;--accent: #3fb950;--accent-dim: #238636;--amber: #d29922;--red: #f85149;--blue: #58a6ff;--radius: 12px;--nav-h: 64px}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button{font-family:inherit}#root{max-width:560px;margin:0 auto;min-height:100vh;min-height:100dvh}.app-main{padding:16px 16px calc(var(--nav-h) + env(safe-area-inset-bottom) + 24px)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#161b22f7;border-top:1px solid var(--border);display:flex;z-index:50;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.bottom-nav button{flex:1;background:none;border:none;color:var(--text-dim);font-size:11px;font-weight:600;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer}.bottom-nav button.active{color:var(--accent)}.bottom-nav .nav-icon{font-size:22px;line-height:1}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:12px}.page-title{font-size:22px;font-weight:800;margin-bottom:2px}.page-sub{color:var(--text-dim);font-size:14px;margin-bottom:16px}.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700;background:var(--surface-2);border:1px solid var(--border);color:var(--text-dim)}.pill.green{color:var(--accent);border-color:var(--accent-dim)}.pill.amber{color:var(--amber);border-color:var(--amber)}.pill.blue{color:var(--blue);border-color:var(--blue)}.btn{display:block;width:100%;padding:15px;border-radius:var(--radius);border:none;background:var(--accent-dim);color:#fff;font-size:16px;font-weight:700;cursor:pointer;touch-action:manipulation}.btn:active{transform:scale(.98)}.btn.secondary{background:var(--surface-2);border:1px solid var(--border);color:var(--text)}.btn.small{width:auto;padding:10px 16px;font-size:14px;display:inline-block}.btn:disabled{opacity:.5}label.field{display:block;margin-bottom:12px}label.field span{display:block;font-size:12px;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;margin-bottom:5px}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],textarea,select{width:100%;padding:13px 12px;font-size:16px;border-radius:10px;border:1px solid var(--border);background:var(--surface-2);color:var(--text);outline:none;-webkit-appearance:none}input:focus,textarea:focus{border-color:var(--blue)}textarea{resize:vertical;min-height:70px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.msg-error{color:var(--red);font-size:14px;margin:8px 0}.msg-ok{color:var(--accent);font-size:14px;margin:8px 0}.dim{color:var(--text-dim)}.small{font-size:13px}.slider-row{margin-bottom:18px}.slider-row .slider-head{display:flex;justify-content:space-between;margin-bottom:8px;font-weight:700;font-size:14px}.slider-row .val{color:var(--accent);font-size:16px}.seg{display:flex;gap:6px}.seg button{flex:1;padding:12px 0;border-radius:10px;border:1px solid var(--border);background:var(--surface-2);color:var(--text-dim);font-size:15px;font-weight:700;cursor:pointer;touch-action:manipulation}.seg button.on{background:var(--accent-dim);border-color:var(--accent);color:#fff}.ex-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:10px;overflow:hidden}.ex-card.done{border-color:var(--accent-dim)}.ex-head{width:100%;background:none;border:none;color:var(--text);padding:14px;display:flex;align-items:center;gap:10px;cursor:pointer;text-align:left}.ex-num{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:var(--surface-2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;color:var(--text-dim)}.ex-card.done .ex-num{background:var(--accent-dim);border-color:var(--accent-dim);color:#fff}.ex-title{font-weight:700;font-size:15px;line-height:1.3}.ex-meta{font-size:12.5px;color:var(--text-dim);margin-top:3px}.ex-progress{margin-left:auto;flex-shrink:0;font-size:13px;font-weight:700;color:var(--text-dim)}.ex-body{padding:0 14px 14px;border-top:1px solid var(--border)}.ex-notes{font-size:13px;color:var(--text-dim);padding:10px 0;line-height:1.45}.set-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border);font-size:14.5px}.set-row .set-n{color:var(--text-dim);font-weight:700;width:44px}.set-row .set-data{font-weight:600}.set-row .set-tags{margin-left:auto;display:flex;gap:6px}.log-form{padding-top:12px}.log-form .num-inputs{display:flex;gap:10px;margin-bottom:12px}.log-form .num-inputs label{flex:1}.chips-label{font-size:12px;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}.chips{display:flex;gap:6px;margin-bottom:12px}.chips button{flex:1;padding:12px 0;border-radius:10px;border:1px solid var(--border);background:var(--surface-2);color:var(--text-dim);font-weight:700;font-size:15px;cursor:pointer;touch-action:manipulation}.chips button.on{background:var(--accent-dim);border-color:var(--accent);color:#fff}.last-hint{font-size:13px;color:var(--blue);margin-bottom:10px}.rest-timer{position:fixed;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 12px);left:50%;transform:translate(-50%);background:var(--surface-2);border:1px solid var(--accent);border-radius:999px;padding:10px 22px;font-size:17px;font-weight:800;color:var(--accent);z-index:60;display:flex;align-items:center;gap:12px;box-shadow:0 4px 24px #00000080}.rest-timer.over{color:var(--red);border-color:var(--red)}.rest-timer button{background:none;border:none;color:var(--text-dim);font-size:16px;cursor:pointer;padding:0}.hist-row{display:flex;align-items:baseline;gap:8px;padding:12px 2px;border-bottom:1px solid var(--border)}.hist-row .date{font-weight:700;width:86px;flex-shrink:0}.hist-detail{font-size:13.5px;color:var(--text-dim)}.tab-bar{display:flex;gap:8px;margin-bottom:14px}.tab-bar button{flex:1;padding:10px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text-dim);font-weight:700;font-size:14px;cursor:pointer}.tab-bar button.active{background:var(--surface-2);color:var(--text);border-color:var(--blue)}.auth-wrap{min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding:24px}.auth-wrap h1{font-size:26px;margin-bottom:4px}.auth-wrap .sub{color:var(--text-dim);margin-bottom:24px}.link-btn{background:none;border:none;color:var(--blue);font-size:14px;cursor:pointer;padding:10px;width:100%;text-align:center}.photo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}.photo-slot{position:relative;aspect-ratio:3 / 4;border-radius:10px;border:1px dashed var(--border);background:var(--surface-2);color:var(--text-dim);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;overflow:hidden;padding:0;touch-action:manipulation}.photo-slot.has{border-style:solid;border-color:var(--accent-dim)}.photo-slot img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.photo-slot .plus{font-size:22px;line-height:1}.photo-slot .photo-label{position:relative;z-index:1;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.photo-slot.has .photo-label{position:absolute;bottom:0;left:0;right:0;padding:3px 0;background:#0d1117bf;color:var(--text)}.macro-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}.macro-cell{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:10px 6px;text-align:center}.macro-cell .v{font-size:17px;font-weight:800}.macro-cell .k{font-size:11px;color:var(--text-dim);font-weight:700;text-transform:uppercase}.macro-cell .t{font-size:11px;color:var(--text-dim)}
