:root{--color-bg:#fffbf7;--color-surface:#fff;--color-surface-2:#fef3c7;--color-border:#fde68a;--color-text:#1c1917;--color-text-2:#78716c;--color-text-3:#a8a29e;--color-accent:#d97706;--color-accent-bg:#fef3c7;--color-accent-dark:#92400e;--color-danger:#dc2626;--color-pr:#d97706;--radius-sm:10px;--radius-md:14px;--radius-lg:20px;--nav-height:60px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.5}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input,textarea,select{background:0 0;border:none;outline:none;font-family:inherit;font-size:16px}a{color:inherit;text-decoration:none}.app-root{min-height:100svh;padding-bottom:calc(var(--nav-height) + 16px)}.page{max-width:480px;margin:0 auto;padding:0 16px}.main-content{max-width:480px;padding:0 16px calc(var(--nav-height) + 24px);margin:0 auto}.card{background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);padding:16px}@media (width>=768px){.card{box-shadow:0 1px 4px #0000000f}}.btn{border-radius:var(--radius-sm);justify-content:center;align-items:center;gap:8px;padding:12px 20px;font-size:16px;font-weight:600;transition:opacity .15s;display:inline-flex}.btn:active{opacity:.8}.btn-primary,.btn-green{background:var(--color-accent);color:#fff}.btn-ghost{background:var(--color-surface-2);color:var(--color-accent)}.btn-danger{background:var(--color-danger);color:#fff}.chip{background:var(--color-surface-2);color:var(--color-accent-dark);cursor:pointer;border:none;border-radius:999px;align-items:center;padding:6px 14px;font-size:14px;font-weight:500;transition:background .12s,color .12s;display:inline-flex}.chip.selected{background:var(--color-accent);color:#fff}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,#fef3c7 25%,#fde68a 50%,#fef3c7 75%) 0 0/200% 100%;animation:1.4s infinite shimmer}.visually-hidden{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.nav{height:var(--nav-height);background:var(--color-surface);border-top:1px solid var(--color-border);z-index:100;align-items:stretch;display:flex;position:fixed;bottom:0;left:0;right:0}.nav__item{color:var(--color-text-3);padding-bottom:env(safe-area-inset-bottom,0);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;transition:color .15s;display:flex}.nav__item--active{color:var(--color-accent)}.nav__icon{justify-content:center;align-items:center;display:flex;position:relative}.nav__item--active .nav__icon:after{content:"";background:var(--color-accent);border-radius:50%;width:3px;height:3px;position:absolute;bottom:-5px;left:50%;transform:translate(-50%)}.nav__label{letter-spacing:.02em;font-size:10px;font-weight:600}.nav__item:not(.nav__item--active) .nav__label{display:none}.type-selector__header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.type-selector__title{letter-spacing:-.4px;font-size:20px;font-weight:700}.type-selector__cancel{color:var(--color-accent);font-size:15px}.type-selector__grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.type-btn{background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:20px 12px;transition:border-color .15s,background .15s;display:flex}.type-btn:active,.type-btn:hover{border-color:var(--color-accent);background:var(--color-accent-bg)}.type-btn__icon{color:var(--color-accent);justify-content:center;align-items:center;display:flex}.type-btn__label{font-size:15px;font-weight:600}.pr-toast{z-index:500;background:var(--color-accent);color:#fff;border-radius:var(--radius-md);align-items:center;gap:10px;min-width:260px;max-width:calc(100vw - 32px);padding:14px 16px;animation:.25s cubic-bezier(.32,0,.67,0) slideDown;display:flex;position:fixed;top:16px;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 4px 20px #d9770659}.pr-toast__icon{flex-shrink:0;align-items:center;display:flex}.pr-toast__text{flex-direction:column;flex:1;gap:1px;display:flex}.pr-toast__text strong{font-size:14px;font-weight:700}.pr-toast__text span{opacity:.85;font-size:13px}.pr-toast__close{color:#ffffffb3;flex-shrink:0;align-items:center;padding:4px;display:flex}.pr-toast__close:hover{color:#fff}.pr-toast__progress{border-radius:0 0 var(--radius-md) var(--radius-md);background:#fff6;height:3px;animation:4s linear forwards progress-bar;position:absolute;bottom:0;left:0}@keyframes slideDown{0%{opacity:0;transform:translate(-50%)translateY(-110%)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes progress-bar{0%{width:100%}to{width:0%}}.mg-selector{border-radius:var(--radius-md);border:1px solid var(--color-border);flex-direction:column;display:flex;overflow:hidden}.mg-selector__list{border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-flow:wrap;gap:6px;width:100%;padding:10px 8px;display:flex}.mg-selector__label{text-transform:uppercase;letter-spacing:.08em;width:100%;color:var(--color-text-3);margin-bottom:2px;padding:0 4px;font-size:10px;font-weight:700}.mg-selector__item{background:var(--color-bg);color:var(--color-text-2);cursor:pointer;border:1px solid var(--color-border);border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:500;transition:background .12s,color .12s,border-color .12s;display:inline-flex}.mg-selector__item--active{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.mg-selector__dot{background:var(--color-border);border-radius:50%;flex-shrink:0;width:6px;height:6px;transition:background .12s}.mg-selector__item--active .mg-selector__dot{background:#ffffffb3}.mg-selector__map{background:var(--color-bg);justify-content:center;align-items:center;gap:12px;width:100%;padding:16px 8px;display:flex}.mg-selector__view{flex-direction:column;align-items:center;gap:4px;display:flex}.mg-selector__view-label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-3);font-size:10px;font-weight:600}.strength-form{flex-direction:column;gap:0;display:flex}.strength-form__header{align-items:center;gap:12px;margin-bottom:20px;display:flex}.strength-form__back{color:var(--color-text-2);align-items:center;padding:4px;font-size:15px;display:flex}.strength-form__title{letter-spacing:-.3px;font-size:17px;font-weight:700}.strength-form__section{margin-bottom:24px}.strength-form__section-title{text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent-dark);opacity:.7;margin-bottom:10px;font-size:11px;font-weight:700}.strength-form__chips{flex-wrap:wrap;gap:8px;display:flex}.strength-form__exercises{flex-direction:column;gap:8px;display:flex}.exercise-card{border:1.5px solid var(--color-border);border-radius:var(--radius-md);transition:border-color .15s;overflow:hidden}.exercise-card--active{border-color:var(--color-accent)}.exercise-card__header{justify-content:space-between;align-items:center;width:100%;padding:14px 16px;font-size:15px;font-weight:500;display:flex}.exercise-card__count{color:var(--color-accent);background:var(--color-surface-2);border-radius:999px;padding:3px 8px;font-size:12px;font-weight:600}.exercise-card__sets{border-top:1px solid var(--color-border);flex-direction:column;gap:8px;padding:0 16px 14px;display:flex}.exercise-card__add-set{color:var(--color-accent);text-align:left;padding:8px 0;font-size:14px;font-weight:600}.set-row{align-items:center;gap:8px;padding-top:10px;display:flex}.set-row__num{width:20px;color:var(--color-text-3);text-align:center;flex-shrink:0;font-size:13px;font-weight:600}.set-row__field{background:var(--color-surface-2);border-radius:var(--radius-sm);flex:1;align-items:center;gap:4px;padding:6px 10px;display:flex}.set-row__input{text-align:center;width:100%;color:var(--color-text);font-size:16px;font-weight:500}.set-row__unit{color:var(--color-text-3);flex-shrink:0;font-size:12px}.set-row__x{color:var(--color-text-3);font-size:14px}.set-row__delete{color:var(--color-text-3);flex-shrink:0;padding:4px;font-size:18px;line-height:1}.strength-form__notes{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);resize:none;width:100%;color:var(--color-text);padding:12px;font-size:16px;line-height:1.5}.strength-form__notes:focus{border-color:var(--color-accent)}.strength-form__save{background:var(--color-accent);color:#fff;border-radius:var(--radius-md);width:100%;margin-top:8px;padding:16px;font-size:16px;font-weight:700}.simple-form{flex-direction:column;gap:12px;display:flex}.simple-form__header{align-items:center;gap:12px;margin-bottom:8px;display:flex}.simple-form__back{color:var(--color-text-2);align-items:center;padding:4px;font-size:15px;display:flex}.simple-form__title{letter-spacing:-.3px;font-size:17px;font-weight:700}.simple-form__description{background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-md);width:100%;color:var(--color-text);resize:none;min-height:80px;padding:14px 16px;font-size:16px;line-height:1.5}.simple-form__description:focus{border-color:var(--color-accent)}.simple-form__notes{background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-md);resize:none;width:100%;color:var(--color-text);padding:14px 16px;font-size:16px;line-height:1.5}.simple-form__notes:focus{border-color:var(--color-accent)}.simple-form__save{background:var(--color-accent);color:#fff;border-radius:var(--radius-md);width:100%;padding:16px;font-size:16px;font-weight:700}.log-workout-overlay{z-index:200;background:#0000004d;align-items:flex-end;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.log-workout-sheet{background:var(--color-surface);border-radius:20px 20px 0 0;width:100%;max-height:90svh;padding:16px 20px 40px;animation:.25s cubic-bezier(.32,0,.67,0) slideUp;overflow-y:auto}.log-workout-sheet__handle{background:var(--color-accent);opacity:.4;border-radius:2px;width:36px;height:4px;margin:0 auto 20px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.log-workout-sheet__date{color:var(--color-accent-dark);opacity:.7;text-transform:capitalize;margin-bottom:16px;font-size:13px;font-weight:600}.log-workout{margin-bottom:12px}.log-workout__cta{background:var(--color-accent);color:#fff;border-radius:var(--radius-md);letter-spacing:-.2px;flex-direction:column;align-items:center;gap:4px;width:100%;padding:16px;font-size:17px;font-weight:700;transition:opacity .15s;display:flex}.log-workout__cta:active{opacity:.85}.log-workout__date,.log-workout__cta-date{opacity:.8;text-transform:capitalize;font-size:12px;font-weight:500}.log-done{justify-content:space-between;align-items:center;gap:12px;display:flex}.log-done__left{align-items:center;gap:10px;display:flex}.log-done__check{background:var(--color-surface-2);border-radius:var(--radius-sm);justify-content:center;align-items:center;padding:8px;display:flex}.log-done__label{color:var(--color-text);flex:1;font-size:15px;font-weight:600}.log-done__type{color:var(--color-text-2);font-size:13px}.log-done__actions{gap:8px;display:flex}.log-done__edit-btn{background:var(--color-surface-2);color:var(--color-accent);border-radius:var(--radius-sm);padding:8px 14px;font-size:14px;font-weight:600}.log-done__delete-btn{color:var(--color-danger);border-radius:var(--radius-sm);background:#fef2f2;padding:8px 14px;font-size:14px;font-weight:600}.log-done__delete-btn--confirm{background:var(--color-danger);color:#fff}.streak-card{justify-content:space-between;align-items:center;display:flex}.streak-card__main{align-items:center;gap:12px;display:flex}.streak-card__number{letter-spacing:-2px;color:var(--color-text);font-size:48px;font-weight:800;line-height:1}.streak-card__labels{flex-direction:column;display:flex}.streak-card__label{color:var(--color-text);font-size:16px;font-weight:600}.streak-card__sub{color:var(--color-text-2);font-size:13px}.streak-card__icon{background:var(--color-surface-2);border-radius:var(--radius-sm);justify-content:center;align-items:center;padding:10px;display:flex}.week-summary__header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.week-summary__title{text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent-dark);opacity:.7;font-size:11px;font-weight:700}.week-summary__count{color:var(--color-text);font-size:22px;font-weight:700}.week-summary__breakdown{color:var(--color-text-2);margin-bottom:12px;font-size:13px}.week-summary__dots{gap:5px;display:flex}.week-dot-col{flex-direction:column;flex:1;align-items:center;gap:4px;display:flex}.week-dot{background:var(--color-surface-2);border-radius:3px;width:100%;height:6px}.week-dot--active{background:var(--color-accent)}.week-dot-label{color:var(--color-text-3);text-transform:uppercase;font-size:9px;font-weight:600}.week-dot--today{outline:2px solid var(--color-accent);outline-offset:2px}.week-dot-label--today{color:var(--color-accent);font-weight:700}.month-grid__weekdays{grid-template-columns:repeat(7,1fr);margin-bottom:4px;display:grid}.month-grid__weekday{text-align:center;color:var(--color-text-3);text-transform:uppercase;letter-spacing:.04em;padding:4px 0;font-size:11px;font-weight:700}.month-grid__days{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.month-day{aspect-ratio:1;color:var(--color-text-2);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:14px;font-weight:500;transition:background .1s;display:flex}.month-day--strength,.month-day--cardio,.month-day--sport{background:var(--color-accent);color:#fff}.month-day--other{background:var(--color-surface-2);color:var(--color-text)}.month-day--today{outline:2px solid var(--color-accent);outline-offset:2px}.month-day--empty-past{color:var(--color-text-3)}.month-day--empty-past:hover{background:var(--color-surface-2);color:var(--color-text)}.month-day:disabled{opacity:.3;cursor:default}.day-detail-overlay{z-index:200;background:#0000004d;align-items:flex-end;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.day-detail{background:var(--color-surface);border-radius:20px 20px 0 0;width:100%;max-height:80svh;padding:16px 20px 40px;animation:.25s cubic-bezier(.32,0,.67,0) slideUp;overflow-y:auto}.day-detail__handle{background:var(--color-accent);opacity:.4;border-radius:2px;width:36px;height:4px;margin:0 auto 16px}.day-detail__header{justify-content:space-between;align-items:flex-start;margin-bottom:16px;display:flex}.day-detail__date{text-transform:capitalize;font-size:17px;font-weight:700}.day-detail__type{background:var(--color-surface-2);color:var(--color-accent-dark);text-transform:capitalize;border-radius:999px;margin-top:4px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.day-detail__close{color:var(--color-text-3);padding:4px;font-size:18px;line-height:1}.day-detail__muscles{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}.day-detail__sets{margin-bottom:16px}.day-detail__exercise{margin-bottom:12px}.day-detail__exercise-name{margin-bottom:4px;font-size:15px;font-weight:700}.day-detail__set-line{color:var(--color-text-2);padding:2px 0;font-size:14px}.day-detail__1rm{color:var(--color-text-3);font-size:12px}.day-detail__description{margin-bottom:12px;font-size:15px}.day-detail__notes{color:var(--color-text-2);margin-bottom:16px;font-size:14px}.day-detail__edit,.day-detail__delete{width:100%;margin-top:8px;padding:14px}.dashboard{flex-direction:column;gap:14px;padding-top:24px;display:flex}.dashboard__header{margin-bottom:2px}.dashboard__greeting{letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-2);margin-bottom:4px;font-size:12px;font-weight:600}.dashboard__date{letter-spacing:-1px;text-transform:capitalize;color:var(--color-text);font-size:26px;font-weight:800;line-height:1.1}.dashboard__skeleton{border-radius:var(--radius-md);height:88px}.dashboard__grid{grid-template-columns:1fr;gap:12px;display:grid}.dashboard__left{flex-direction:column;gap:12px;display:flex}.dashboard__right{padding:14px 14px 10px}.dashboard__cal-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.dashboard__cal-title{color:var(--color-text);text-transform:capitalize;font-size:13px;font-weight:600}.dashboard__cal-link{color:var(--color-accent);font-size:12px;font-weight:500}@media (width>=540px){.dashboard__grid{grid-template-columns:1fr 1.5fr;align-items:start}}.dashboard__right .month-grid__weekday{padding:2px 0;font-size:10px}.dashboard__right .month-day{font-size:11px;font-weight:500}.dashboard__right .month-grid__days{gap:2px}.year-grid{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}@media (width>=480px){.year-grid{grid-template-columns:repeat(3,1fr)}}@media (width>=680px){.year-grid{grid-template-columns:repeat(4,1fr)}}.year-month{background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);padding:12px}.year-month__header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.year-month__name{text-transform:capitalize;font-size:13px;font-weight:700}.year-month__count{color:var(--color-text-2);font-size:12px}.year-month__grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.year-day{aspect-ratio:1;background:var(--color-surface-2);border-radius:2px}.year-day--empty{background:0 0}.year-day--strength{background:var(--color-accent)}.year-day--cardio{background:var(--color-accent);opacity:.7}.year-day--sport{background:var(--color-accent);opacity:.5}.year-day--other{background:var(--color-border)}.year-month--clickable{cursor:pointer;transition:border-color .15s,transform .1s}.year-month--clickable:active{border-color:var(--color-accent);transform:scale(.97)}.calendar-page{padding-top:24px}.calendar-nav{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.calendar-nav__title{letter-spacing:-.5px;text-transform:capitalize;font-size:22px;font-weight:800}.calendar-nav__btn{color:var(--color-accent);align-items:center;padding:4px 12px;font-size:22px;display:flex}.calendar-legend{color:var(--color-text-2);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;font-size:12px;display:flex}.legend-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.legend-dot--strength,.legend-dot--cardio,.legend-dot--sport{background:var(--color-accent)}.legend-dot--other{background:var(--color-surface-2);border:1px solid var(--color-border)}.calendar-year__total{color:var(--color-text-2);margin-bottom:16px;font-size:13px}.calendar-nav__month-arrows{gap:0;display:flex}.year-page{padding-top:24px}.year-page__header{text-align:center;justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.year-page__header button{color:var(--color-accent);align-items:center;padding:4px 12px;font-size:24px;display:flex}.year-page__year{letter-spacing:-1px;font-size:28px;font-weight:800}.year-page__total{color:var(--color-text-2);font-size:14px}.lift-chart{margin-bottom:8px}.lift-chart__header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:16px;display:flex}.lift-chart__title{font-size:17px;font-weight:600}.lift-chart__ranges{gap:6px;display:flex}.lift-chart__range-btn{background:var(--color-surface-2);color:var(--color-text-2);border-radius:999px;padding:5px 12px;font-size:13px;font-weight:600;transition:background .12s,color .12s}.lift-chart__range-btn.active{background:var(--color-accent);color:#fff}.lift-chart__empty{text-align:center;color:var(--color-text-3);padding:24px;font-size:14px}.progress-page{padding-top:24px}.progress-page__title{letter-spacing:-1px;margin-bottom:16px;font-size:28px;font-weight:800}.progress-page__mg-filter{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.progress-page__charts{flex-direction:column;gap:16px;display:flex}.progress-page__chart-card{padding:16px}.progress-page__chart-title{letter-spacing:-.2px;margin-bottom:12px;font-size:16px;font-weight:700}.progress-page__pr{color:var(--color-text-2);border-top:1px solid var(--color-border);margin-top:12px;padding-top:12px;font-size:14px}.progress-page__empty{text-align:center;color:var(--color-text-2);padding:48px 20px;font-size:15px;line-height:1.6}.progress-page__loading{color:var(--color-text-3);text-align:center;padding:20px 0;font-size:14px}.progress-page__skeleton-card{border-radius:var(--radius-md);border:1px solid var(--color-border);padding:16px}.progress-page__skeleton-title{width:55%;height:20px;margin-bottom:16px}.progress-page__skeleton-chart{height:120px}.balance-chart{width:100%}.balance-empty{text-align:center;color:var(--color-text-3);padding:24px;font-size:14px}.settings-page{flex-direction:column;gap:16px;padding-top:24px;display:flex}.settings-page__title{letter-spacing:-1px;margin-bottom:4px;font-size:28px;font-weight:800}.settings-section__title{text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent-dark);opacity:.7;margin-bottom:12px;font-size:11px;font-weight:700}.exercise-item-wrap{border-bottom:1px solid var(--color-border)}.exercise-item-wrap:last-of-type{border-bottom:none}.exercise-item{align-items:center;gap:10px;padding:12px 0;display:flex}.exercise-item__drag{cursor:grab;color:var(--color-accent);opacity:.5;-webkit-user-select:none;user-select:none;padding:4px;font-size:16px}.exercise-item__name{flex:1;font-size:15px;font-weight:500}.exercise-item__mg-toggle{color:var(--color-text-3);background:var(--color-surface-2);border-radius:6px;padding:4px 8px;font-size:11px;font-weight:600}.exercise-item__delete{color:var(--color-text-3);padding:4px 8px;font-size:20px}.exercise-item__muscles{flex-wrap:wrap;gap:6px;padding:0 12px 12px 36px;display:flex}.chip--sm{padding:3px 10px;font-size:12px}.settings-add{gap:8px;margin-top:12px;display:flex}.settings-add__input{background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);flex:1;padding:12px 14px;font-size:16px}.settings-add__input:focus{border-color:var(--color-accent);outline:none}
