:root{--bg:#212121;--glass:#ffffff13;--glass-strong:#ffffff1c;--glass-border:#ffffff39;--glass-border-hover:#ffffff74;--glow:#ffbb763f;--accent:#fab570;--accent-soft:#fab5704c;--accent-deep:#c97a25;--ink:#fff;--ink-2:#ffffffb8;--ink-3:#ffffff73;--grid:#ffffff12;--axis:#ffffff29;--c-chest:#3987e5;--c-back:#199e70;--c-shoulder:#c98500;--c-arm:#9085e9;--c-leg:#e66767;--c-abs:#4fae32;--c-other:#898781;--s-e1rm:#c97a25;--s-topset:#3987e5;--font-latin:"Outfit", sans-serif;--font-jp:"Outfit", "Zen Kaku Gothic New", sans-serif;--radius:.7rem}*{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg)}body{font-family:var(--font-jp);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;min-height:100dvh;font-weight:300;overflow-x:clip}.ambient{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.ambient:before,.ambient:after{content:"";background-color:var(--accent-soft);filter:blur(2px);position:absolute}.ambient:before{border-radius:50%;width:16rem;height:16rem;top:-4rem;right:-5rem}.ambient:after{background-color:#fab5702e;border-radius:50%;width:10rem;height:10rem;bottom:12%;left:-6rem}.ambient .bar{border-left:1px solid #fab57080;height:9rem;position:absolute;top:22%;right:6%}.ambient .ring{border:1px solid #ffffff0f;border-radius:50%;width:22rem;height:22rem;position:absolute;top:40%;left:-8rem}#root{z-index:1;max-width:640px;margin:0 auto;padding:1rem 1rem 6rem;position:relative}.box{background-color:var(--glass);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:var(--radius);padding:1rem;transition:all .3s}.box:hover{box-shadow:0px 0px 20px 1px var(--glow);border:1px solid var(--glass-border-hover)}.brand{font-family:var(--font-latin);letter-spacing:.28em;color:var(--ink);font-size:.95rem;font-weight:500}.brand em{color:var(--accent);font-style:normal}.section-title{letter-spacing:.24em;color:var(--ink-3);text-transform:uppercase;margin-bottom:.7rem;font-size:.72rem;font-weight:500}.stat-value{font-family:var(--font-latin);letter-spacing:.02em;font-size:1.9rem;font-weight:200;line-height:1.1}.stat-value small{color:var(--ink-2);letter-spacing:.08em;font-size:.85rem;font-weight:300}.stat-label{letter-spacing:.18em;color:var(--ink-3);margin-bottom:.45rem;font-size:.66rem}.stat-sub{letter-spacing:.06em;color:var(--ink-3);margin-top:.35rem;font-size:.68rem}.topbar{justify-content:space-between;align-items:center;padding:.9rem .2rem 1.3rem;display:flex}.topbar .date{letter-spacing:.18em;color:var(--ink-3);font-size:.68rem}.icon-btn{color:var(--ink-3);font-family:var(--font-jp);letter-spacing:.14em;cursor:pointer;background:0 0;border:none;padding:.4rem;font-size:.68rem}.icon-btn:hover{color:var(--accent)}.cards{grid-template-columns:1fr 1fr;gap:.7rem;margin-bottom:.7rem;display:grid}.stack{gap:.7rem;display:grid}.stack>*,.cards>*{min-width:0}.chart-card .recharts-surface{overflow:visible}.legend-row{flex-wrap:wrap;gap:.35rem .9rem;margin-top:.6rem;display:flex}.legend-item{letter-spacing:.08em;color:var(--ink-2);align-items:center;gap:.4rem;font-size:.68rem;display:inline-flex}.legend-swatch{border-radius:3px;flex:none;width:10px;height:10px}.legend-swatch.line{border-radius:1px;width:14px;height:2px}.glass-tooltip{border:1px solid var(--glass-border);letter-spacing:.05em;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#212121eb;border-radius:.5rem;padding:.55rem .7rem;font-size:.7rem}.glass-tooltip .t-title{color:var(--ink-3);letter-spacing:.12em;margin-bottom:.3rem}.glass-tooltip .t-row{color:var(--ink-2);align-items:center;gap:.4rem;line-height:1.6;display:flex}.glass-tooltip .t-row b{color:var(--ink);font-variant-numeric:tabular-nums;margin-left:auto;padding-left:.8rem;font-weight:500}.chips{scrollbar-width:none;gap:.45rem;margin-bottom:.4rem;padding-bottom:.5rem;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{font-family:var(--font-jp);letter-spacing:.08em;color:var(--ink-2);border:1px solid var(--glass-border);cursor:pointer;background:0 0;border-radius:999px;flex:none;padding:.35rem .85rem;font-size:.72rem;font-weight:400;transition:all .25s}.chip.on{color:#212121;background:var(--accent);border-color:var(--accent);font-weight:500}.chip:not(.on):hover{border-color:var(--glass-border-hover);color:var(--ink)}.cal-head{justify-content:space-between;align-items:center;margin-bottom:.7rem;display:flex}.cal-nav{align-items:center;gap:.2rem;display:flex}.cal-nav .icon-btn{padding:.2rem .55rem;font-size:1.05rem;line-height:1}.cal-month{font-family:var(--font-latin);letter-spacing:.18em;color:var(--ink-2);text-align:center;min-width:4.6rem;font-size:.78rem}.cal-grid{grid-template-columns:repeat(7,1fr);gap:.25rem;display:grid}.cal-wd{text-align:center;letter-spacing:.1em;color:var(--ink-3);padding-bottom:.25rem;font-size:.6rem}.cal-day{aspect-ratio:1;color:var(--ink-2);font-family:var(--font-latin);cursor:pointer;background:#ffffff08;border:1px solid #0000;border-radius:.45rem;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:.72rem;font-weight:300;transition:all .2s;display:flex;position:relative}.cal-day.trained{color:var(--ink);background:#fab5701a;border-color:#fab57040}.cal-day.today{border-color:var(--accent)}.cal-day.selected{box-shadow:0 0 12px 0 var(--glow);border-color:var(--glass-border-hover)}.cal-day .dots{gap:2px;display:flex}.cal-day .dots i{border-radius:50%;width:4px;height:4px}.cal-detail{border-top:1px solid var(--grid);margin-top:.8rem;padding-top:.8rem}.cal-ex{align-items:center;gap:.5rem;font-size:.78rem;line-height:1.9;display:flex}.cal-ex .name{color:var(--ink-2)}.cal-ex .detail{color:var(--ink-3);font-variant-numeric:tabular-nums;margin-left:auto;font-size:.72rem}.meter{margin-bottom:.8rem}.meter:last-child{margin-bottom:0}.meter .m-head{letter-spacing:.1em;color:var(--ink-2);justify-content:space-between;align-items:baseline;margin-bottom:.35rem;font-size:.7rem;display:flex}.meter .m-head b{color:var(--ink);font-variant-numeric:tabular-nums;font-weight:500}.meter .m-track{background:#ffffff14;border-radius:3px;height:6px;overflow:hidden}.meter .m-fill{border-radius:3px;height:100%;transition:width .6s cubic-bezier(.22,1,.36,1)}.meal-list{border-top:1px solid var(--grid);margin-top:.9rem;padding-top:.8rem}.meal-row{align-items:baseline;gap:.55rem;padding:.32rem 0;font-size:.78rem;display:flex}.meal-type{letter-spacing:.12em;color:var(--accent);border:1px solid #fab57059;border-radius:999px;flex:none;padding:.1rem .5rem;font-size:.62rem}.meal-desc{color:var(--ink-2);min-width:0;line-height:1.5}.meal-macros{color:var(--ink-3);font-variant-numeric:tabular-nums;letter-spacing:.04em;flex:none;margin-left:auto;font-size:.68rem}.login-wrap{place-items:center;min-height:88dvh;display:grid}.login-card{flex-direction:column;gap:1rem;width:min(20rem,88vw);padding:1.6rem 1.4rem;display:flex;position:relative}.login-card .title{font-family:var(--font-latin);letter-spacing:.18em;font-size:1.5rem;font-weight:500}.login-card .title span{letter-spacing:.32em;color:var(--ink-3);margin-top:.4rem;font-size:.62rem;font-weight:300;display:block}.field label{letter-spacing:.16em;color:var(--ink-3);margin-bottom:.3rem;font-size:.64rem;display:block}input,select,textarea{width:100%;font-family:var(--font-jp);color:var(--ink);border:1px solid var(--glass-border);background:#ffffff0d;border-radius:.5rem;outline:none;padding:.6rem .7rem;font-size:.95rem;font-weight:300;transition:border-color .25s,box-shadow .25s}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 12px 0 var(--glow)}input::placeholder{color:var(--ink-3)}select option{background:#2b2b2b}input[type=date]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.btn{font-family:var(--font-jp);letter-spacing:.2em;color:#212121;background:var(--accent);cursor:pointer;border:none;border-radius:.5rem;padding:.75rem 1rem;font-size:.8rem;font-weight:500;transition:all .3s}.btn:hover{box-shadow:0px 0px 20px 1px var(--glow)}.btn:disabled{opacity:.5;cursor:default}.btn.ghost{color:var(--ink-2);border:1px solid var(--glass-border);background:0 0}.btn.google{color:#212121;letter-spacing:.08em;background:#fff;justify-content:center;align-items:center;gap:.6rem;display:inline-flex}.btn.ghost:hover{border-color:var(--glass-border-hover);color:var(--ink)}.err{color:#e66767;letter-spacing:.06em;font-size:.72rem}.ok{color:#4fae32;letter-spacing:.06em;font-size:.72rem}.fab{right:max(1.1rem, env(safe-area-inset-right));bottom:max(1.3rem, env(safe-area-inset-bottom));z-index:20;border:1px solid var(--glass-border);background:var(--accent);color:#212121;cursor:pointer;width:3.4rem;height:3.4rem;box-shadow:0 6px 24px #00000073, 0 0 20px 1px var(--glow);border-radius:50%;font-size:1.6rem;font-weight:300;line-height:1;transition:transform .25s;position:fixed}.fab:active{transform:scale(.92)}.sheet-bg{z-index:30;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0000008c;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{border:1px solid var(--glass-border);width:min(640px,100%);max-height:88dvh;padding:1.1rem 1.1rem calc(1.4rem + env(safe-area-inset-bottom));background:#262626f7;border-bottom:none;border-radius:1rem 1rem 0 0;animation:.3s cubic-bezier(.22,1,.36,1) rise;overflow-y:auto}@keyframes rise{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.sheet-tabs{gap:.5rem;margin-bottom:1.1rem;display:flex}.set-row{grid-template-columns:2.2rem 1fr 1fr 2.2rem;align-items:center;gap:.5rem;margin-bottom:.5rem;display:grid}.set-row .n{font-family:var(--font-latin);color:var(--ink-3);text-align:center;letter-spacing:.1em;font-size:.75rem}.set-row .rm{color:var(--ink-3);cursor:pointer;background:0 0;border:none;font-size:1rem}.form-grid{grid-template-columns:1fr 1fr;gap:.7rem;margin-bottom:.7rem;display:grid}.form-grid .wide{grid-column:1/-1}.reveal{animation:.55s cubic-bezier(.22,1,.36,1) both fadeup}@keyframes fadeup{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.loading{min-height:60dvh;color:var(--ink-3);letter-spacing:.3em;place-items:center;font-size:.72rem;animation:1.4s ease-in-out infinite pulse;display:grid}@keyframes pulse{50%{opacity:.35}}@media (width>=560px){.cards{grid-template-columns:repeat(4,1fr)}}
