:root{--bg: #faf7ef;--card: #ffffff;--border: #ece8db;--border-strong: #d9d3c0;--ink-1: #1a1814;--ink-2: #6e6356;--ink-3: #a8a094;--ink-ghost: #c8c5bd;--tap-bg: #f0ebde;--tap-bg-active: #1a1814;--tap-fg-active: #faf7ef;--day-color: #1a1814;--ease-calm: cubic-bezier(.3, .9, .3, 1);--ease-spring: cubic-bezier(.3, .9, .3, 1.15);--dur-micro: .18s;--dur-small: .35s;--dur-med: .45s}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--ink-1);font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,sans-serif;font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}body{min-height:100vh;overscroll-behavior-y:none}button,input{font:inherit;color:inherit}input{-webkit-appearance:none;border-radius:0;font-size:16px}input:focus{outline:none}button{background:none;border:none;cursor:pointer}ul{list-style:none}.app>*{animation:riseIn var(--dur-med) var(--ease-calm) both}.app>*:nth-child(1){animation-delay:0s}.app>*:nth-child(2){animation-delay:.06s}.app>*:nth-child(3){animation-delay:.14s}.app>*:nth-child(4){animation-delay:.22s}.app>*:nth-child(5){animation-delay:.3s}.app>*:nth-child(6){animation-delay:.38s}.app>*:nth-child(7){animation-delay:.46s}@keyframes riseIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes dotPop{0%{transform:scale(1)}45%{transform:scale(1.135)}to{transform:scale(1)}}@keyframes checkPop{0%{transform:scale(0)}60%{transform:scale(1.135)}to{transform:scale(1)}}@keyframes inProgressFadeIn{0%{opacity:0}to{opacity:.35}}.no-pop .set-num.done,.no-pop .mini-num.done,.no-pop .dot.on,.no-pop .mob-row.done .check,.no-pop .mob-row.in-progress .check:before,.no-pop .weighin.logged .weighin-confirm .check{animation:none!important}.app{max-width:430px;margin:0 auto;padding:max(12px,env(safe-area-inset-top)) 16px calc(80px + env(safe-area-inset-bottom));position:relative}.topbar{padding:10px 4px 20px}.date{font-size:12px;font-weight:500;color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase}.title-row{display:flex;align-items:baseline;justify-content:space-between;margin-top:2px}.day-title{font-size:22px;font-weight:600;letter-spacing:-.01em;color:var(--ink-1)}.nav{display:flex;align-items:center;gap:18px}.nav-btn{display:inline-flex;align-items:center;justify-content:center;color:var(--ink-2);padding:0;line-height:0;transform:translateY(4px);text-decoration:none}.nav-btn svg{width:22px;height:22px;display:block}.nav-btn:active{color:var(--ink-1)}.weighin{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px 20px;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:14px;overflow:hidden;transition:opacity .4s ease,max-height .4s ease,margin-bottom .4s ease,padding .4s ease,border-color .4s ease;max-height:140px}.weighin.removing{opacity:0;max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;border-color:transparent}.weighin-text{flex:1;min-width:0}.weighin-label{font-size:10px;font-weight:700;color:var(--ink-3);letter-spacing:.12em;text-transform:uppercase}.weighin-name{font-size:16px;font-weight:600;color:var(--ink-1);margin-top:4px;letter-spacing:-.005em}.weighin-input-wrap{display:flex;align-items:center;gap:8px;flex-shrink:0}.weighin-input{width:88px;background:var(--tap-bg);border:1px solid transparent;border-radius:8px;padding:10px 12px;font-size:16px;font-weight:500;text-align:right;color:var(--ink-1)}.weighin-input::placeholder{color:var(--ink-ghost);font-weight:400}.weighin-input:focus{background:#fff;border-color:var(--ink-1)}.weighin-unit{font-size:13px;font-weight:500;color:var(--ink-3)}.weighin-stack{position:relative;flex-shrink:0;display:flex;align-items:center;min-height:40px}.weighin-input-wrap,.weighin-confirm{transition:opacity var(--dur-small) var(--ease-calm),transform var(--dur-small) var(--ease-calm)}.weighin-confirm{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;font-size:16px;font-weight:500;color:var(--ink-1);letter-spacing:-.005em;opacity:0;transform:translateY(4px);pointer-events:none}.weighin.logged .weighin-input-wrap{opacity:0;transform:translateY(-4px);pointer-events:none}.weighin.logged .weighin-confirm{opacity:1;transform:translateY(0);pointer-events:auto;cursor:pointer}.weighin-confirm .check{all:unset;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;background:var(--day-color);color:#fff;border-radius:50%;font-size:13px;font-weight:700;margin-right:10px;flex-shrink:0}.weighin-confirm-value{font-size:16px;font-weight:600;color:var(--ink-1);letter-spacing:-.005em;font-variant-numeric:tabular-nums}.weighin-confirm-unit{font-size:13px;font-weight:500;color:var(--ink-3);margin-left:5px;letter-spacing:.02em}.weighin.logged .weighin-confirm .check{animation:checkPop var(--dur-small) var(--ease-spring)}.card{background:var(--card);border:1px solid var(--border);border-radius:14px;margin-bottom:12px;overflow:hidden}.collapse-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;width:100%;text-align:left;cursor:pointer}.collapse-title{font-size:10px;font-weight:700;color:var(--ink-3);letter-spacing:.12em;text-transform:uppercase}.collapse-name{font-size:17px;font-weight:600;color:var(--ink-1);margin-top:2px;letter-spacing:-.005em}.collapse-sub{font-size:12px;color:var(--ink-3);font-weight:500;margin-top:2px}.chev{font-size:18px;color:var(--ink-3);transition:transform var(--dur-small) var(--ease-spring);flex-shrink:0;margin-left:12px}.card.open .chev{transform:rotate(90deg)}.card-body{max-height:0;overflow:hidden;transition:max-height var(--dur-med) var(--ease-calm)}.card.open .card-body{max-height:3000px}.card .card-body>*{opacity:0;transform:translateY(6px);transition:opacity var(--dur-small) var(--ease-calm),transform var(--dur-small) var(--ease-calm)}.card.open .card-body>*{opacity:1;transform:translateY(0);transition-delay:.12s}.warmup{padding:16px 18px 14px;background:#faf8f3;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.section-label{font-size:10px;font-weight:700;color:var(--ink-3);letter-spacing:.12em;text-transform:uppercase;margin-bottom:8px}.warmup ul li{font-size:13px;color:var(--ink-2);padding:3px 0;line-height:1.5}.warmup ul li:before{content:"·";color:var(--ink-3);margin-right:8px}.workout-body{padding:6px 0 8px}.superset{position:relative;margin:6px 10px;padding:0 0 0 12px;border-left:2px solid var(--border-strong)}.superset-tag{font-size:10px;font-weight:700;color:var(--ink-3);letter-spacing:.14em;text-transform:uppercase;padding:10px 0 6px 2px}.exercise{padding:14px 18px 16px;border-top:1px solid var(--border)}.superset .exercise{border-top:1px dashed var(--border);padding:12px 8px 14px 0}.superset .exercise:first-of-type{border-top:none;padding-top:4px}.workout-body>.exercise:first-child{border-top:none}.ex-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px}.ex-name{font-size:16px;font-weight:600;color:var(--ink-1);letter-spacing:-.005em}.ex-meta{font-size:12px;color:var(--ink-3);margin-top:3px;letter-spacing:.01em}.ex-meta .rir{color:var(--ink-2);font-weight:600}.ex-tag{font-size:9px;font-weight:700;color:var(--ink-2);letter-spacing:.12em;text-transform:uppercase;padding:3px 7px;background:var(--tap-bg);border-radius:4px;white-space:nowrap;flex-shrink:0}.sets{display:flex;flex-direction:column;gap:7px;margin-top:8px}.set-row{display:flex;align-items:center;gap:10px}.set-num{width:26px;height:26px;border-radius:50%;border:1.5px solid var(--border-strong);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--ink-3);flex-shrink:0;transition:background var(--dur-micro) var(--ease-calm),border-color var(--dur-micro) var(--ease-calm),color var(--dur-micro) var(--ease-calm)}.set-num.done{background:var(--day-color);border-color:var(--day-color);color:#fff;animation:dotPop var(--dur-small) var(--ease-spring)}.set-num.done:after{content:"✓";font-size:13px}.set-num.done span{display:none}.inp{flex:1;min-width:0;background:var(--tap-bg);border:1px solid transparent;border-radius:8px;padding:8px 10px;font-size:16px;font-weight:500;text-align:center;color:var(--ink-1);transition:all .15s}.inp::placeholder{color:var(--ink-ghost);font-weight:400}.inp:focus{background:#fff;border-color:var(--ink-1)}.set-x{color:var(--ink-3);font-size:11px;font-weight:500}.set-unit{font-size:10px;color:var(--ink-3);width:28px;text-align:left}.set-row.bw .bw-label,.set-row.core .bw-label{font-size:12px;color:var(--ink-3);font-style:italic}.set-row.plank{gap:10px}.set-row.plank .bw-label{flex:1;text-align:center;font-size:13px;padding-right:36px}.myo-activation{display:flex;align-items:center;gap:10px;margin-top:8px}.myo-activation .set-num{border-style:dashed}.myo-minis-wrap{margin-top:14px;padding-left:36px}.myo-minis-label{font-size:10px;font-weight:700;color:var(--ink-3);letter-spacing:.1em;text-transform:uppercase;margin-bottom:8px}.myo-minis{display:flex;align-items:flex-start;gap:10px}.mini-col{display:flex;flex-direction:column-reverse;align-items:center;gap:6px}.mini-num{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--border-strong);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;color:var(--ink-3);flex-shrink:0;transition:background var(--dur-micro) var(--ease-calm),border-color var(--dur-micro) var(--ease-calm),color var(--dur-micro) var(--ease-calm);background:transparent}.mini-num.done{background:var(--day-color);border-color:var(--day-color);color:#fff;animation:dotPop var(--dur-small) var(--ease-spring)}.mini-num.done:after{content:"✓";font-size:11px}.mini-num.done span{display:none}.mini{width:46px;height:38px;background:var(--tap-bg);border:1px solid transparent;border-radius:6px;text-align:center;font-size:16px;font-weight:500;padding:0;color:var(--ink-1)}.mini::placeholder{color:var(--ink-ghost)}.mini:focus{background:#fff;border-color:var(--ink-1)}.card-inner{padding:2px 18px 18px;border-top:1px solid var(--border)}.mob-row{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);cursor:pointer}.mob-row:last-child{border-bottom:none}.check{width:22px;height:22px;border:1.5px solid var(--border-strong);border-radius:6px;flex-shrink:0;margin-top:1px;display:flex;align-items:center;justify-content:center;position:relative;transition:background var(--dur-micro) var(--ease-calm),border-color var(--dur-micro) var(--ease-calm)}.mob-row.in-progress .check:before{content:"";position:absolute;top:2px;right:2px;bottom:2px;left:2px;background:var(--day-color);opacity:.35;border-radius:3px;animation:inProgressFadeIn var(--dur-small) var(--ease-calm)}.mob-row.done .check{background:var(--day-color);border-color:var(--day-color);animation:dotPop var(--dur-small) var(--ease-spring)}.mob-row.done .check:after{content:"✓";color:#fff;font-size:13px;font-weight:700}.mob-text{flex:1;min-width:0}.mob-name{font-size:14px;font-weight:500;color:var(--ink-1);line-height:1.35;transition:color .2s}.mob-cue{font-size:12px;color:var(--ink-2);margin-top:4px;line-height:1.5;transition:color .2s}.mob-dur{font-size:12px;font-weight:600;color:var(--ink-3);letter-spacing:.03em;white-space:nowrap;padding-top:2px}.mob-row.done .mob-name,.mob-row.done .mob-cue{color:var(--ink-3)}.habits{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:16px 18px;margin-top:6px}.habits-label{font-size:10px;font-weight:700;color:var(--ink-3);letter-spacing:.12em;text-transform:uppercase;margin-bottom:14px}.habit{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--border)}.habit:last-child{border-bottom:none}.habit-name{font-size:14px;font-weight:500;color:var(--ink-1)}.habit-sub{font-size:12px;color:var(--ink-3);margin-top:1px}.dots{display:flex;gap:8px}.dot{width:28px;height:28px;border-radius:50%;border:1.5px solid var(--border-strong);background:transparent;transition:background var(--dur-micro) var(--ease-calm),border-color var(--dur-micro) var(--ease-calm)}.dot.on{background:var(--day-color);border-color:var(--day-color);animation:dotPop var(--dur-small) var(--ease-spring)}.steps-input{width:120px;background:var(--tap-bg);border:1px solid transparent;border-radius:8px;padding:8px 12px;font-size:16px;font-weight:500;text-align:right;color:var(--ink-1)}.steps-input::placeholder{color:var(--ink-ghost);font-weight:400}.steps-input:focus{background:#fff;border-color:var(--ink-1)}.quote-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:22px 22px 20px;margin-top:12px}.quote-label{font-size:10px;font-weight:700;color:var(--ink-3);letter-spacing:.12em;text-transform:uppercase;margin-bottom:14px}.quote-text{font-size:15px;line-height:1.6;color:var(--ink-1);font-style:italic;white-space:pre-wrap}.quote-attr{font-size:12px;color:var(--ink-3);margin-top:10px;font-style:normal}.quote-attr:before{content:"— "}.timer{position:fixed;left:50%;transform:translate(-50%) translateY(100%);bottom:0;width:100%;max-width:430px;background:var(--card);border-top:1px solid var(--border);padding:10px 16px calc(14px + env(safe-area-inset-bottom));pointer-events:none;transition:transform var(--dur-small) var(--ease-spring);z-index:10;cursor:pointer}.timer.on{transform:translate(-50%) translateY(0);pointer-events:auto}.timer-time{font-size:12px;font-weight:600;color:var(--ink-2);text-align:center;font-variant-numeric:tabular-nums;letter-spacing:.05em;margin-bottom:8px}.timer-track{height:4px;background:var(--tap-bg);border-radius:2px;overflow:hidden}.timer-fill{height:100%;width:100%;background:var(--day-color);transform-origin:left center;transition:transform 1s linear}.chart-block{padding:18px 0 10px;border-bottom:1px solid var(--border)}.chart-block:last-child{border-bottom:none;padding-bottom:6px}.chart-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px;gap:12px}.chart-name{font-size:14px;font-weight:600;color:var(--ink-1);letter-spacing:-.005em}.chart-value{font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.chart-value .num{font-weight:600;color:var(--ink-1)}.chart-value .reps{color:var(--ink-3);margin-left:6px}.chart-svg{display:block;width:100%;height:auto}.chart-dot{cursor:pointer;transition:r .15s ease}.chart-empty{padding:18px 0;font-size:12px;color:var(--ink-3);font-style:italic}.plyo-session{padding:14px 0;border-bottom:1px solid var(--border)}.plyo-session:first-child{padding-top:8px}.plyo-session:last-child{border-bottom:none}.plyo-date{display:flex;align-items:center;gap:8px;font-size:10px;font-weight:700;color:var(--ink-3);letter-spacing:.12em;text-transform:uppercase;margin-bottom:10px}.plyo-check{width:14px;height:14px;border-radius:50%;background:#7b9a4f;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:9px;font-weight:700;line-height:1}.plyo-skipped{font-size:13px;color:var(--ink-3);font-style:italic}.plyo-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:13px}.plyo-row .ex{color:var(--ink-2)}.plyo-row .sets{color:var(--ink-1);font-variant-numeric:tabular-nums;font-weight:500}.plyo-row.under .sets{color:var(--ink-3)}.ws-section{padding:18px 0 10px;border-bottom:1px solid var(--border)}.ws-section:first-child{padding-top:8px}.ws-section:last-child{border-bottom:none;padding-bottom:6px}.ws-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px;gap:12px}.ws-name{font-size:14px;font-weight:600;color:var(--ink-1)}.ws-value{font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}.ws-value .num{font-weight:600;color:var(--ink-1)}.ws-value .label{color:var(--ink-3);margin-left:6px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:700}.ws-stats{display:flex;gap:24px;margin-top:10px;padding-top:12px;border-top:1px solid var(--border)}.ws-stat{font-variant-numeric:tabular-nums}.ws-stat .label{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);display:block;margin-bottom:3px}.ws-stat .val{font-size:14px;font-weight:600;color:var(--ink-1)}.cons-row{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--border)}.cons-row:first-child{padding-top:16px}.cons-row:last-child{border-bottom:none}.cons-label{font-size:14px;font-weight:500;color:var(--ink-1)}.cons-frac{font-size:14px;font-variant-numeric:tabular-nums}.cons-num{font-weight:600;color:var(--ink-1)}.cons-slash{color:var(--ink-3);margin:0 2px}.cons-denom{color:var(--ink-3)}.habit-edit-list{border-top:1px solid var(--border)}.habit-row{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border)}.habit-reorder{display:flex;flex-direction:column;gap:0;flex-shrink:0;margin:0 -4px}.habit-reorder-btn{padding:6px 8px;color:var(--ink-3);font-size:10px;line-height:1;display:flex;align-items:center;justify-content:center}.habit-reorder-btn:active{color:var(--ink-1)}.habit-reorder-btn:disabled{opacity:.25}.habit-row:last-child{border-bottom:none}.habit-row.removing{opacity:0;transition:opacity .25s ease}.habit-name-input{flex:1;min-width:0;background:var(--tap-bg);border:1px solid transparent;border-radius:8px;padding:9px 11px;font-size:16px;font-weight:500;color:var(--ink-1)}.habit-name-input::placeholder{color:var(--ink-ghost);font-weight:400}.habit-name-input:focus{background:#fff;border-color:var(--ink-1)}.habit-target-input{width:72px;background:var(--tap-bg);border:1px solid transparent;border-radius:8px;padding:9px 11px;font-size:16px;font-weight:500;text-align:right;color:var(--ink-1)}.habit-target-input::placeholder{color:var(--ink-ghost);font-weight:400}.habit-target-input:focus{background:#fff;border-color:var(--ink-1)}.habit-unit{font-size:12px;color:var(--ink-3);font-weight:500;white-space:nowrap}.habit-delete{width:28px;height:28px;color:var(--ink-3);font-size:22px;line-height:1;display:flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:50%;margin-left:-2px}.habit-delete:active{color:var(--ink-1);background:var(--tap-bg)}.add-block{padding:14px 18px;background:#faf8f3;display:flex;flex-direction:column;gap:6px}.add-btn{font-size:14px;font-weight:500;color:var(--ink-2);text-align:left;padding:6px 0}.add-btn:active{color:var(--ink-1)}.habit-footnote{font-size:11px;color:var(--ink-3);line-height:1.6;padding:14px 18px 16px}.habit-footnote em{font-style:italic}.glance{padding:0 18px;margin-bottom:28px}.glance-label{font-size:10px;font-weight:700;color:var(--ink-3);letter-spacing:.12em;text-transform:uppercase;margin-bottom:18px}.block{margin-bottom:20px}.block:last-child{margin-bottom:0}.block-name{font-size:16px;font-weight:600;color:var(--ink-1);letter-spacing:-.005em;margin-bottom:6px}.day-suffix{font-size:12px;font-weight:500;color:var(--ink-3);letter-spacing:.02em;margin-left:4px}.block-list li{font-size:13px;color:var(--ink-2);padding:2px 0;line-height:1.5}.block-list li:before{content:"·";color:var(--ink-3);margin-right:8px}.footer{margin-top:8px;padding:0 4px}.footer-group{margin-bottom:22px}.footer-label{font-size:10px;font-weight:700;color:var(--ink-3);letter-spacing:.12em;text-transform:uppercase;margin-bottom:8px}.footer-desc{font-size:12px;color:var(--ink-3);line-height:1.5;margin-bottom:10px}.footer-actions{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.footer-btn{font-size:14px;font-weight:500;color:var(--ink-2);padding:0;cursor:pointer}.footer-btn:active{color:var(--ink-1)}.footer-btn .arrow{font-size:14px;margin-left:4px;color:var(--ink-3)}.colophon{display:flex;justify-content:center;padding:40px 0 8px;color:var(--ink-1)}.colophon svg{width:16px;height:16px;display:block}.sabbath-app{max-width:430px;margin:0 auto;padding:max(12px,env(safe-area-inset-top)) 16px env(safe-area-inset-bottom);min-height:100vh;display:flex;flex-direction:column}.center-stack{flex:1;display:flex;align-items:center;justify-content:center;padding:24px 0 60px}.sabbath-card{background:var(--card);border:1px solid var(--border);border-radius:14px;width:100%;height:78vh;display:flex;align-items:center;justify-content:center}.sabbath-word{font-family:New York,New York Large,Iowan Old Style,Palatino,Georgia,serif;font-size:56px;font-weight:400;letter-spacing:.04em;color:var(--ink-1);text-align:center;line-height:1}
