:root{--space-deep:#070a1f;--space-violet:#150b36;--space-indigo:#0d1440;--text:#eef0ff;--text-muted:#b9bde8;--text-faint:#8f94c4;--violet:#b69cff;--sky:#63d2ff;--pink:#ff8fcf;--gold:#ffd166;--danger:#ff7a9a;--ok:#7ef0c1;--cat-study:var(--violet);--cat-exercise:var(--sky);--cat-football:var(--gold);--cat-appointment:var(--pink);--cat-other:#c9cbe6;--surface:#100e30c7;--surface-strong:#16123ef0;--surface-raised:#26205cb8;--line:#b9bde829;--line-strong:#b9bde852;--focus:#ffe58f;--radius-lg:20px;--radius-md:12px;--radius-sm:8px;--tap:44px;--font:"Prompt", sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{min-height:100dvh;font-family:var(--font);color:var(--text);background-color:var(--space-deep);background-image:radial-gradient(ellipse 60% 40% at 85% 8%, #ff8fcf24, transparent 70%), radial-gradient(ellipse 55% 45% at 10% 30%, #63d2ff1a, transparent 70%), radial-gradient(ellipse 70% 50% at 50% 100%, #b69cff29, transparent 70%), linear-gradient(170deg, var(--space-deep) 0%, var(--space-indigo) 45%, var(--space-violet) 100%);background-attachment:fixed;margin:0;font-size:1rem;font-weight:300;line-height:1.6;overflow-x:hidden}.starfield{pointer-events:none;z-index:0;position:fixed;inset:0}.starfield:before,.starfield:after{content:"";background-repeat:repeat;position:absolute;inset:0}.starfield:before{background-image:radial-gradient(1px 1px at 20px 30px,#ffffffb3,#0000),radial-gradient(1px 1px at 140px 80px,#ffffff80,#0000),radial-gradient(1.5px 1.5px at 90px 160px,#fff0d2cc,#0000),radial-gradient(1px 1px at 220px 210px,#c8dcff99,#0000),radial-gradient(1px 1px at 260px 40px,#ffffff73,#0000);background-size:280px 260px}.starfield:after{background-image:radial-gradient(2px 2px at 60px 120px,#ffffffe6,#0000),radial-gradient(1.5px 1.5px at 330px 60px,#ffd2f0d9,#0000),radial-gradient(2px 2px at 400px 300px,#bee6ffd9,#0000);background-size:460px 380px;animation:6s ease-in-out infinite alternate twinkle}@keyframes twinkle{0%{opacity:.35}to{opacity:1}}#root{z-index:1;position:relative}h1,h2,h3{margin:0;font-weight:500;line-height:1.3}p{margin:0}a{color:var(--sky);text-underline-offset:3px}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:var(--radius-sm)}[hidden]{display:none!important}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.btn{min-height:var(--tap);border:1px solid var(--line-strong);background:var(--surface-raised);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:.4em;padding:.45rem 1rem;font-weight:400;line-height:1.2;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.btn:hover{background:#3c3482cc;border-color:#b9bde880}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{color:#fff;background:linear-gradient(120deg,#7c5cff,#c06bff 55%,#ff7ac8);border-color:#0000;font-weight:500}.btn-primary:hover{background:linear-gradient(120deg,#8a6cff,#cb7dff 55%,#ff8fd3);border-color:#0000}.btn-danger{color:#ffd3de;background:#781e3c73;border-color:#ff7a9a99}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover{background:#b9bde81a;border-color:#0000}.btn-small{min-height:36px;padding:.3rem .75rem;font-size:.875rem}.icon-btn{width:var(--tap);height:var(--tap);background:0 0;border:1px solid #0000;border-radius:50%;flex:none;place-items:center;display:inline-grid}.icon-btn:hover{background:#b9bde81f}.icon-btn svg{width:22px;height:22px}.field{gap:.3rem;font-size:.9375rem;display:grid}.field-label{color:var(--text-muted);font-weight:400}.input,.select,.textarea{width:100%;min-height:var(--tap);border-radius:var(--radius-md);border:1px solid var(--line-strong);color:var(--text);background:#070a1f99;padding:.5rem .75rem}.textarea{resize:vertical;min-height:88px}.input::-webkit-calendar-picker-indicator{filter:invert(.85)}.field-error{color:var(--danger);font-size:.875rem}[data-cat]{--cat:var(--cat-other)}[data-cat=study]{--cat:var(--cat-study)}[data-cat=exercise]{--cat:var(--cat-exercise)}[data-cat=football]{--cat:var(--cat-football)}[data-cat=appointment]{--cat:var(--cat-appointment)}.cat-dot{background:var(--cat);width:9px;height:9px;box-shadow:0 0 6px var(--cat);border-radius:50%;flex:none;display:inline-block}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.app{width:100%;max-width:1240px;padding:max(12px, env(safe-area-inset-top)) 16px calc(96px + env(safe-area-inset-bottom));gap:14px;margin:0 auto;display:grid}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(10px)}.muted{color:var(--text-muted)}.small{font-size:.875rem}.app-header{justify-content:space-between;align-items:center;gap:12px;min-height:56px;display:flex}.app-title{letter-spacing:.01em;background:linear-gradient(100deg, #e9e4ff 10%, var(--violet) 45%, var(--pink) 90%);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:clamp(1.3rem,4.5vw,1.75rem);font-weight:600}.header-tools{align-items:center;gap:4px;min-width:0;display:flex}.overview{gap:12px;display:grid}.layout{align-items:start;gap:14px;min-width:0;display:grid}@media (width>=960px){.overview{grid-template-columns:1fr auto;align-items:center}.layout{grid-template-columns:minmax(0,1.25fr) minmax(360px,1fr)}.day-panel-wrap{border-radius:var(--radius-lg);scrollbar-width:thin;max-height:calc(100dvh - 24px);position:sticky;top:12px;overflow-y:auto}}.day-panel-wrap{min-width:0;scroll-margin-top:12px}.sync{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;align-items:center;gap:6px;max-width:46vw;padding:4px 10px;font-size:.8125rem;display:inline-flex;overflow:hidden}.sync-dot{background:var(--ok);border-radius:50%;flex:none;width:8px;height:8px}.sync[data-phase=pending] .sync-dot,.sync[data-phase=saving] .sync-dot,.sync[data-phase=loading] .sync-dot{background:var(--sky);animation:1s ease-in-out infinite alternate pulse}.sync[data-phase=offline] .sync-dot{background:var(--gold)}.sync[data-phase=error]{color:#ffd3de;background:#781e3c80}.sync[data-phase=error] .sync-dot{background:var(--danger)}@keyframes pulse{0%{opacity:.4}to{opacity:1}}.menu{position:relative}.menu-list{z-index:20;background:var(--surface-strong);border:1px solid var(--line-strong);border-radius:var(--radius-md);min-width:240px;max-width:calc(100vw - 32px);padding:6px;display:grid;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 18px 40px #03041499}.menu-list button{min-height:var(--tap);text-align:left;border-radius:var(--radius-sm);background:0 0;border:0;padding:8px 12px}.menu-list button:hover{background:#b9bde81f}.menu-list .danger{color:#ffc2d1}.menu-confirm{color:var(--text-muted);gap:4px;padding:8px 12px 4px;font-size:.875rem;display:grid}.banner{border-radius:var(--radius-md);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;display:flex}.banner-error{background:#6e183ad1;border:1px solid #ff7a9a8c}.backlog{border-radius:var(--radius-lg);background:linear-gradient(100deg,#5a1850b8,#28165ab8);border:1px solid #ff8fcf73}.backlog-toggle{text-align:left;border-radius:inherit;background:0 0;border:0;align-items:center;gap:12px;width:100%;min-height:52px;padding:8px 14px;display:flex}.backlog-count{background:var(--pink);color:#2a0a24;border-radius:999px;place-items:center;min-width:34px;height:34px;padding:0 8px;font-weight:600;display:inline-grid}.backlog-chev{margin-left:auto;transition:transform .2s;display:grid}.backlog-chev svg{width:20px;height:20px}.backlog-toggle[aria-expanded=true] .backlog-chev{transform:rotate(180deg)}.backlog-body{max-height:60vh;padding:0 14px 14px;overflow-y:auto}.backlog-actions{flex-wrap:wrap;align-items:center;gap:8px;padding-bottom:8px;display:flex}.backlog-day+.backlog-day{margin-top:8px}.backlog-date{min-height:36px;color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:4px;background:0 0;border:0;padding:4px 0;font-weight:500}.progress{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:start;gap:10px 18px;min-width:0;display:grid}.progress-item{min-width:0}.progress-head{justify-content:space-between;gap:8px;font-size:.9375rem;display:flex}.progress-head strong{font-weight:500}.progress-note{flex-wrap:wrap;column-gap:10px;line-height:1.5;display:flex}.progress-note span{white-space:nowrap}.orbit{background:#b9bde829;border-radius:999px;height:6px;margin:6px 0 4px;position:relative}.orbit-fill{border-radius:inherit;background:linear-gradient(90deg, var(--sky), var(--violet), var(--pink));min-width:6px;position:absolute;inset:0 auto 0 0;box-shadow:0 0 10px #b69cff99}.orbit-marker{background:var(--gold);border-radius:1px;width:2px;height:14px;margin-left:-1px;position:absolute;top:-4px}.progress-body{min-height:var(--tap);border:1px solid var(--line-strong);background:var(--surface);border-radius:999px;justify-self:start;align-items:center;gap:8px;padding:6px 14px;display:inline-flex}.progress-body svg{width:20px;height:20px;color:var(--sky)}.filters{flex-wrap:wrap;gap:8px;display:flex}.filter-chip{border:1px solid color-mix(in srgb, var(--cat) 55%, transparent);background:color-mix(in srgb, var(--cat) 14%, transparent);border-radius:999px;align-items:center;gap:8px;min-height:40px;padding:4px 14px;font-size:.9375rem;display:inline-flex}.filter-chip[aria-pressed=false]{border-color:var(--line);color:var(--text-faint);background:0 0;text-decoration:line-through}.filter-chip[aria-pressed=false] .cat-dot{box-shadow:inset 0 0 0 1.5px var(--cat);background:0 0}.calendar{min-width:0;padding:14px 12px 12px}.cal-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:0 4px 8px;display:flex}.cal-title{font-size:1.25rem;font-weight:500}.cal-nav{align-items:center;gap:2px;display:flex}.cal-weekdays,.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.cal-weekdays span{text-align:center;color:var(--text-faint);padding:4px 0;font-size:.8125rem}.cal-weekdays span:nth-child(n+6){color:var(--pink)}.day{aspect-ratio:1/.92;border-radius:var(--radius-md);background:#b9bde80a;border:1px solid #0000;flex-direction:column;justify-content:flex-start;align-items:center;gap:2px;min-width:0;min-height:52px;padding:5px 2px 4px;transition:background-color .15s,border-color .15s;display:flex;position:relative}.day:hover{background:#b9bde81a}.day[data-outside]{opacity:.42}.day-num{border-radius:50%;place-items:center;width:28px;height:28px;font-size:.9375rem;line-height:1.5;display:grid}.day[data-today] .day-num{box-shadow:0 0 0 1.5px var(--sky), 0 0 12px #63d2ff8c;font-weight:500}.day[aria-pressed=true]{background:linear-gradient(160deg,#7c5cff8c,#ff7ac852);border-color:#d6c8ffb3}.day-dots{flex-wrap:wrap;justify-content:center;gap:3px;margin-top:auto;display:flex}.day-dots .cat-dot{width:6px;height:6px;box-shadow:0 0 4px var(--cat)}.day-star{width:14px;height:14px;color:var(--gold);filter:drop-shadow(0 0 4px #ffd166e6);position:absolute;top:3px;right:3px}.day[data-complete]{background:radial-gradient(circle at 50% 35%,#ffd16629,#b9bde80a 70%)}.day[data-complete][aria-pressed=true]{background:linear-gradient(160deg,#7c5cff8c,#ff7ac852)}.day-open{border:1.5px solid var(--pink);color:#ffd0ea;border-radius:999px;min-width:17px;height:17px;padding:0 4px;font-size:.6875rem;font-weight:500;line-height:14px;position:absolute;top:3px;right:3px}.cal-legend{color:var(--text-faint);flex-wrap:wrap;gap:4px 16px;padding:10px 4px 0;font-size:.8125rem;display:flex}.cal-legend>span{align-items:center;gap:6px;display:inline-flex}.legend-star{width:13px;height:13px;color:var(--gold);display:inline-block}.legend-open{border:1.5px solid var(--pink);color:#ffd0ea;border-radius:999px;place-items:center;min-width:17px;height:17px;font-size:.6875rem;display:inline-grid}@media (width<=420px){.calendar{padding:12px 6px 10px}.cal-weekdays,.cal-grid{gap:2px}.day{aspect-ratio:auto;min-height:46px}.day-num{width:26px;height:26px;font-size:.875rem}.day-star,.day-open{top:1px;right:1px}}.day-panel{padding:16px 14px 10px}.day-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px;padding-bottom:6px;display:flex}.day-head h2{font-size:1.125rem}.day-actions{flex-wrap:wrap;gap:6px;display:flex}.btn svg{width:18px;height:18px}.group{margin-top:14px}.group-head{color:var(--cat);border-bottom:1px solid color-mix(in srgb, var(--cat) 35%, transparent);align-items:center;gap:8px;padding-bottom:4px;font-size:.9375rem;font-weight:500;display:flex}.group-count{color:var(--text-muted);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:400}.group-count[data-complete]{color:var(--gold)}.task-list{margin:0;padding:0;list-style:none}.task{border-bottom:1px solid var(--line)}.task:last-child{border-bottom:0}.task-main{align-items:flex-start;gap:4px;padding:4px 0;display:flex}.task-check{appearance:none;border:2px solid color-mix(in srgb, var(--cat) 75%, white 10%);cursor:pointer;background:#070a1f80;border-radius:8px;flex:none;place-items:center;width:26px;height:26px;margin:9px 9px 9px 4px;display:grid}.task-check:after{content:"";border-bottom:2.5px solid #160c32;border-left:2.5px solid #160c32;width:12px;height:7px;transition:transform .15s;transform:translateY(-2px)rotate(-45deg)scale(0)}.task-check:checked{background:var(--cat);box-shadow:0 0 10px color-mix(in srgb, var(--cat) 70%, transparent)}.task-check:checked:after{transform:translateY(-2px)rotate(-45deg)scale(1)}.task-text{flex:1;min-width:0;padding:9px 0 6px}.task-title{cursor:pointer;overflow-wrap:anywhere;font-weight:400;display:block}.task[data-done] .task-title{color:var(--text-faint);text-decoration:line-through;-webkit-text-decoration-color:color-mix(in srgb, var(--cat) 60%, transparent);text-decoration-color:color-mix(in srgb, var(--cat) 60%, transparent)}.task-meta{flex-wrap:wrap;gap:4px 6px;margin-top:2px;display:flex}.task-meta:empty{display:none}.chip{color:var(--text-muted);background:#b9bde81a;border-radius:999px;align-items:center;gap:4px;padding:0 8px;font-size:.8125rem;line-height:1.7;display:inline-flex}.chip-time{color:var(--text);background:color-mix(in srgb, var(--cat) 22%, transparent)}.chip-moved{color:#ffe1a6;background:#ffd1661f}.chip-action{min-height:28px;color:var(--sky);text-underline-offset:3px;background:0 0;border:0;align-items:center;gap:3px;padding:0 4px;font-size:.8125rem;text-decoration:underline;display:inline-flex}.chip-action svg{width:14px;height:14px}.task-actions{flex:none;display:flex}.expand-btn svg{transition:transform .2s}.expand-btn[aria-expanded=true] svg{transform:rotate(180deg)}.task-detail{gap:10px;padding:0 8px 12px 43px;font-size:.9375rem;display:grid}.detail-text{white-space:pre-line;overflow-wrap:anywhere}.extra{border-radius:var(--radius-md);border-left:3px solid var(--cat);background:#070a1f73;gap:4px;padding:10px 12px;display:grid}.extra h4{margin:0;font-size:.9375rem;font-weight:500}.extra a{justify-self:start;align-items:center;min-height:32px;display:inline-flex}.workout-list,.tips{gap:2px;margin:0;padding:0;list-style:none;display:grid}.workout-list li{justify-content:space-between;gap:12px;display:flex}.reps{color:var(--text-muted);text-align:right}.tips li{padding-left:16px;position:relative}.tips li:before{content:"";background:var(--cat);border-radius:50%;width:6px;height:6px;position:absolute;top:.7em;left:2px}.empty{color:var(--text-muted);justify-items:start;gap:10px;padding:18px 2px 8px;display:grid}@media (width<=420px){.task-detail{padding-left:8px}}html:has(dialog[open]){overflow:hidden}.dialog{border:1px solid var(--line-strong);border-radius:var(--radius-lg);background:var(--surface-strong);width:min(560px,100vw - 24px);max-height:calc(100dvh - 24px);color:var(--text);padding:0;overflow:hidden;box-shadow:0 30px 80px #020310bf}.dialog-wide{width:min(760px,100vw - 24px)}.dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#040516b3}.dialog-panel{flex-direction:column;max-height:calc(100dvh - 26px);display:flex}.dialog-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:10px 8px 6px 18px;display:flex}.dialog-head h2{font-size:1.125rem}.dialog-body{overscroll-behavior:contain;padding:14px 18px 18px;overflow-y:auto}@media (width<=560px){.dialog,.dialog-wide{border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-bottom:0;width:100vw;max-width:100vw;max-height:92dvh;margin:auto 0 0}.dialog-panel{max-height:92dvh}.dialog-body{padding-bottom:calc(18px + env(safe-area-inset-bottom))}}.form{gap:12px;display:grid}.form-row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;display:grid}.form-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.push-end{margin-left:auto}.confirm{border-radius:var(--radius-md);background:#6e183a73;border:1px solid #ff7a9a8c;gap:10px;padding:12px;display:grid}.check-row{min-height:var(--tap);cursor:pointer;align-items:flex-start;gap:10px;padding:8px 0;display:flex}.check-row input{width:22px;height:22px;accent-color:var(--violet);flex:none;margin:2px 0 0}.error-list{margin:0;padding-left:18px}.move{gap:14px;display:grid}.cascade{border:1px solid var(--line);border-radius:var(--radius-md);margin:0;padding:8px 12px 10px}.cascade legend{color:var(--text-muted);padding:0 6px;font-size:.875rem}.move-quick{gap:10px;display:grid}.move-option{justify-items:start;gap:4px;display:grid}.move-pick{border-top:1px solid var(--line);gap:6px;padding-top:12px;display:grid}.move-pick-row{flex-wrap:wrap;gap:8px;display:flex}.move-pick-row .input{flex:160px;width:auto}.conflict{border-radius:var(--radius-sm);color:#ffe7b3;background:#ffd1661f;padding:6px 10px;font-size:.875rem}.conflict strong{font-weight:500}.importer{gap:10px;display:grid}.import-preview{border-radius:var(--radius-md);background:#63d2ff1a;border:1px solid #63d2ff59;padding:10px 12px}.body-log{gap:18px;display:grid}.body-log h3{margin-bottom:4px;font-size:1rem}.body-stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.body-stats>div{border-radius:var(--radius-md);background:#070a1f73;gap:0;padding:10px 12px;display:grid}.body-stats strong{font-size:1.25rem;font-weight:500}.chart-wrap{gap:8px;display:grid}.segmented{border:1px solid var(--line-strong);border-radius:999px;justify-self:start;padding:3px;display:inline-flex}.segmented button{background:0 0;border:0;border-radius:999px;min-height:36px;padding:4px 14px}.segmented button[aria-pressed=true]{background:var(--surface-raised);color:var(--text);font-weight:500}.chart{width:100%;height:auto;max-height:260px;display:block}.chart-grid{stroke:var(--line);stroke-width:1px}.chart-goal{stroke:var(--gold);stroke-dasharray:5 4;stroke-width:1.2px}.chart-axis{fill:var(--text-faint);font-size:10px;font-family:var(--font)}.chart-line{fill:none;stroke-width:2.2px;stroke-linejoin:round;stroke-linecap:round}.chart-line.chart-weight{stroke:var(--sky)}.chart-line.chart-waist{stroke:var(--pink)}.chart-dot.chart-weight{fill:var(--sky)}.chart-dot.chart-waist{fill:var(--pink)}.chart-empty{padding:24px 0}.entry-list{margin:0;padding:0;list-style:none}.entry-list li{border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr) auto;align-items:center;gap:8px;padding:2px 0;display:grid}.entry-actions{align-items:center;gap:2px;display:flex}.entry-date{color:var(--text-muted)}@media (width<=480px){.entry-list li{gap:6px;font-size:.875rem}}.targets-box summary{min-height:var(--tap);cursor:pointer;color:var(--text-muted);align-items:center;display:flex}.targets{padding-top:6px}.screen{place-items:center;min-height:100dvh;padding:24px 16px;display:grid}.screen-card{justify-items:start;gap:14px;width:min(460px,100%);padding:28px 24px;display:grid}.screen-card .importer,.screen-card .importer .input{width:100%}.screen-star{width:30px;height:30px;color:var(--gold);filter:drop-shadow(0 0 10px #ffd166cc);animation:2.6s ease-in-out infinite alternate twinkle}.screen-title{font-size:1.5rem;font-weight:600}.toast-region{left:0;right:0;bottom:calc(16px + env(safe-area-inset-bottom));z-index:50;pointer-events:none;justify-content:center;padding:0 16px;display:flex;position:fixed}.toast{pointer-events:auto;background:var(--surface-strong);border:1px solid var(--line-strong);border-radius:999px;align-items:center;gap:12px;max-width:560px;padding:8px 8px 8px 16px;animation:.2s ease-out toast-in;display:flex;box-shadow:0 12px 30px #02031099}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}
