*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f5f0e8;--bg-today:#eee9e1;--text-primary:#1a1a1a;--text-secondary:#3d3832;--text-tertiary:#5c5549;--text-quaternary:#8a8078;--accent:#7a6a52;--green:#4a7a4c;--missed:#c4a77d;--red:#b85450;--separator:#0000000f;--header-h:80px;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif}html{font-family:var(--sans);background:var(--bg);color:var(--text-primary);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}body{min-height:100dvh}#app{max-width:540px;padding-bottom:calc(80px + env(safe-area-inset-bottom,20px));margin:0 auto}.header{z-index:10;-webkit-backdrop-filter:blur(12px);background:#f5f0e8e6;padding:16px 20px 12px;position:sticky;top:0}.header:before{content:"";background:var(--bg);height:20px;position:absolute;top:-20px;left:0;right:0}.header-top{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.header h1{color:var(--text-primary);letter-spacing:-.1px;cursor:pointer;font-size:14px;font-weight:600}.last-sync{color:var(--green);font-size:11px;font-weight:500}.last-sync-stale{color:var(--red)}.save-indicator{font-size:11px;font-weight:500}.save-indicator-saving{color:var(--text-quaternary)}.save-indicator-error{color:var(--red)}.summit-countdown{color:var(--text-secondary);margin-left:auto;font-size:13px;font-weight:500;text-decoration:none}.summit-countdown:active{opacity:.6}.progress-bar{align-items:flex-end;gap:1px;height:24px;margin-top:10px;display:flex;position:relative}.seg{z-index:1;border-radius:1px 1px 0 0;flex:1;transition:background .15s;position:relative}.seg-h0{height:0}.seg-h1{height:5px}.seg-h2{height:10px}.seg-h3{height:16px}.seg-h4{height:22px}.seg-done{background:var(--green)}.seg-missed,.seg-rest{background:0 0}.seg-future{background:#0000000f}.seg-summit{background:0 0;flex:2;align-self:flex-end;height:24px;font-size:22px;line-height:24px;overflow:visible}.scroll-window{pointer-events:none;z-index:0;background:#ffffffa6;border-radius:3px;transition:left .15s,width .15s;position:absolute;top:-3px;bottom:-3px}.phase-intro{text-align:center;border-top:1px solid var(--separator);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.3px;padding:60px 20px 12px;font-size:11px;font-weight:500}.phase-divider{top:calc(var(--header-h,80px) - 1px);z-index:5;-webkit-backdrop-filter:blur(12px);text-align:center;background:#f5f0e8e6;padding:1px 20px 32px;position:sticky}.phase-divider-label{text-transform:uppercase;letter-spacing:.5px;color:#c87533;font-size:10px;font-weight:600}.week-divider{text-align:center;aspect-ratio:1;background:#1a1a1a;flex-direction:column;justify-content:flex-end;align-items:center;width:100%;margin:32px 0;padding:0;display:flex;position:relative;overflow:hidden}.week-divider-bg{background-position:50%;background-size:cover;position:absolute;inset:0}.week-divider:after{content:"";pointer-events:none;background:linear-gradient(#0000 30%,#00000026 60%,#0009 100%);position:absolute;inset:0}.week-divider-label{color:#fff;letter-spacing:1px;text-transform:uppercase;z-index:1;text-shadow:0 1px 6px #0006;font-size:28px;font-weight:800;display:block;position:relative}.week-days-left{color:#ffffffd9;z-index:1;text-transform:uppercase;letter-spacing:.5px;text-shadow:0 1px 4px #0006;margin-top:4px;margin-bottom:32px;font-size:11px;font-weight:600;display:block;position:relative}.rest-row{align-items:flex-start;gap:10px;max-width:440px;margin:0 auto;padding:40px 20px;display:flex}.rest-row .workout-detail-text{color:var(--text-quaternary)}.rest-row.today{color:#fffffff2;background:#c87533;padding:44px 20px}.rest-row.today .workout-session-name,.rest-row.today .workout-date-label,.rest-row.today .workout-duration,.rest-row.today .today-marker{color:#fff}.rest-row.today .workout-detail-text{color:#ffffffd9}.rest-row.today .workout-tag{color:#fffc}.swipe-container{touch-action:pan-y;max-width:440px;margin:0 auto;position:relative;overflow:hidden}.swipe-behind{background:var(--bg);transition:background-color .1s;position:absolute;inset:0}.swipe-content{flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;top:0;bottom:0;overflow:hidden}.swipe-icon{display:none}.swipe-label-text{color:#ffffffe6;letter-spacing:.3px;white-space:nowrap;font-size:13px;font-weight:700}.swipe-container.swiping .workout-row{box-shadow:2px 0 12px #00000014}.workout-row{cursor:pointer;background:var(--bg);align-items:flex-start;gap:10px;padding:40px 20px;transition:opacity .15s;display:flex;position:relative}.workout-row.today{cursor:default;color:#fffffff2;background:#c87533;padding:44px 20px}.workout-row.today .workout-session-name,.workout-row.today .workout-date-label,.workout-row.today .workout-duration,.workout-row.today .today-marker{color:#fff}.workout-row.today .workout-detail-text{color:#ffffffd9}.workout-row.done{background:var(--green);color:#fff}.workout-row.done .workout-session-name,.workout-row.done .workout-date-label,.workout-row.done .workout-duration,.workout-row.done .watch-preview,.workout-row.done .watch-stats{color:#fff}.workout-row.done .workout-detail-text{color:#ffffffd9}.workout-row.missed{opacity:.8}.effort-indicator{flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;margin-top:1px;font-size:18px;line-height:1;display:flex}.effort-indicator-done{color:#fff;font-size:16px;font-weight:700}.workout-row.today .effort-indicator{filter:grayscale()brightness(10)}.workout-row .workout-detail-text,.workout-row .workout-stats,.workout-row .watch-stats,.workout-row .watch-entries{transition:opacity .2s}.workout-row.collapsed .workout-detail-text{white-space:nowrap;text-overflow:ellipsis;opacity:.6;overflow:hidden}.workout-row.collapsed .workout-stats,.workout-row.collapsed .watch-stats,.workout-row.collapsed .watch-entries,.watch-preview{display:none}.workout-row.collapsed.done .watch-preview{color:#fff;margin-top:2px;font-size:13px;font-weight:500;display:block}.today-marker{color:#fff;text-transform:uppercase;letter-spacing:.3px;font-size:11px;font-weight:700}.workout-row.missed{position:relative}.workout-row.missed:before{display:none}.workout-content{flex:1;min-width:0}.workout-header-row{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.workout-session-name{color:var(--text-primary);letter-spacing:-.15px;font-size:15px;font-weight:600}.workout-row.done .workout-session-name{-webkit-text-decoration:line-through #ffffff80;text-decoration:line-through #ffffff80}.workout-date-label{color:var(--text-quaternary);flex-shrink:0;font-size:11px;font-weight:500}.workout-duration{color:var(--text-tertiary);font-weight:400}.workout-stats{color:var(--text-tertiary);margin-top:6px;font-size:14px;line-height:1.5}.workout-stat-sep{color:var(--text-quaternary)}.workout-row.today .workout-stats,.workout-row.done .workout-stats{color:#ffffffd9}.workout-row.today .workout-stat-sep,.workout-row.done .workout-stat-sep{color:#ffffff80}.workout-tags{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.workout-tag{color:var(--text-tertiary);letter-spacing:.2px;font-size:11px;font-weight:600}.workout-row.today .workout-tag,.workout-row.done .workout-tag{color:#fffc}.workout-nutrition{color:var(--text-tertiary);margin-top:6px;font-size:14px}.workout-row.today .workout-nutrition,.workout-row.done .workout-nutrition{color:#ffffffd9}.workout-detail-text{color:var(--text-tertiary);text-wrap:pretty;text-wrap:balance;margin-top:6px;font-size:14px;line-height:1.5}.watch-stats{color:var(--green);margin-top:4px;font-size:12px;font-weight:500}.hr-zone{vertical-align:middle;border-radius:3px;margin-left:6px;padding:1px 5px;font-size:10px;font-weight:600}.hr-zone-zone1{color:#059669;background:#10b9811f}.hr-zone-zone2{color:var(--green);background:#5a8a5c1f}.hr-zone-aet{color:#d97706;background:#d977061f}.hr-zone-zone3{color:var(--red);background:#b854501f}.watch-entries{border-top:1px solid var(--separator);margin-top:6px;padding:6px 0}.watch-entry{color:var(--text-quaternary);padding:2px 0;font-size:11px}.watch-entry-matched{color:var(--green);font-weight:500}.summit-card{aspect-ratio:3/4;background:#1a1a1a;border-radius:16px;align-items:flex-end;margin:32px 12px;display:flex;position:relative;overflow:hidden}.summit-card-bg{background-position:50%;background-size:cover;position:absolute;inset:0}.summit-card:after{content:"";pointer-events:none;background:linear-gradient(#0000 35%,#0003 60%,#000000b3 100%);position:absolute;inset:0}.summit-card-content{z-index:1;width:100%;padding:32px 24px;position:relative}.summit-day{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.summit-day+.summit-day{border-top:1px solid #fff3;margin-top:12px;padding-top:12px}.summit-day-name{color:#fff;letter-spacing:-.3px;font-size:22px;font-weight:800}.summit-day-date{color:#ffffffb3;margin-left:auto;font-size:13px;font-weight:500}.summit-day-detail{color:#ffffffd9;width:100%;margin-top:4px;font-size:15px}.drag-ghost{opacity:.4}.drag-chosen{cursor:grabbing}.drag-fallback{opacity:.95;background:var(--bg);border-radius:8px;box-shadow:0 8px 24px #0000002e}.fab-today{bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:20;-webkit-backdrop-filter:blur(16px);font-family:var(--sans);color:var(--text-primary);cursor:pointer;-webkit-tap-highlight-color:transparent;opacity:0;pointer-events:none;background:#f5f0e8e6;border:1px solid #0000001a;border-radius:20px;align-items:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:600;transition:opacity .2s,transform .2s;display:flex;position:fixed;left:50%;transform:translate(-50%)translateY(12px);box-shadow:0 2px 8px #0000001f,0 1px 3px #00000014}.fab-today:active{opacity:.7}.fab-today.visible{opacity:1;pointer-events:auto;transform:translate(-50%)translateY(0)}.fab-arrow{color:var(--text-secondary);font-size:12px}.login-container{flex-direction:column;justify-content:center;align-items:center;min-height:100dvh;padding:20px;display:flex}.login-title{color:var(--text-primary);letter-spacing:-.3px;margin-bottom:32px;font-size:24px;font-weight:600}.login-form{flex-direction:column;gap:12px;width:100%;max-width:280px;display:flex}.login-input{font-family:var(--sans);border:1.5px solid var(--separator);color:var(--text-primary);background:#fff;border-radius:8px;outline:none;padding:10px 12px;font-size:16px;transition:border-color .15s}.login-input:focus{border-color:var(--accent)}.login-btn{font-family:var(--sans);background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:10px;font-size:14px;font-weight:600;transition:opacity .15s}.login-btn:active{opacity:.7}.login-error{color:var(--red);text-align:center;font-size:13px}
