:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f1524;--surface:#171e31;--surface-2:#1c2439;--surface-3:#263049;--border:#242d45;--border-strong:#34405f;--text:#e7ebf5;--muted:#8b94ad;--faint:#5c6681;--accent:#5b7cfa;--accent-hover:#6d8bff;--accent-text:#9db2ff;--on-accent:#fff;--on-habit:#fff;--danger:#f87171;--danger-soft:#f871711f;--flame:#fb923c;--success:#4ade80;--cell-empty:#2a3350;--backdrop:#060912b8;--shadow:0 12px 32px #03060f8c;--radius:20px;--radius-md:14px;--radius-sm:10px;--habit:var(--accent);--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Inter,system-ui,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.45}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;margin:0}body{min-height:100dvh;padding:var(--safe-top) var(--safe-right) 0 var(--safe-left);overflow-x:hidden}body:before{content:"";height:var(--safe-top);z-index:40;background:var(--bg);position:fixed;inset:0 0 auto}h1,h2,h3,p{margin:0}button,input{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.num,.stats,.counter,.stepper-input,.mcell,.dot-n,.act{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.shell{width:100%;max-width:960px;margin:0 auto;padding:0 16px}main{padding:16px 0 96px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.topbar{justify-content:space-between;align-items:center;gap:12px;padding:18px 0 6px;display:flex}.brand{align-items:center;gap:10px;min-width:0;display:flex}.logo-mark{color:var(--accent);flex:none}.wordmark{letter-spacing:-.01em;font-size:17px;font-weight:700;line-height:1.1}.wordmark--lg{font-size:24px}.today-label{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.user-chip{align-items:center;gap:8px;min-width:0;display:flex}.user-avatar{background:var(--surface-3);border-radius:50%;flex:none;place-items:center;width:28px;height:28px;font-size:13px;font-weight:600;display:grid}.user-name{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:140px;font-size:14px;overflow:hidden}.logout-btn{border-radius:var(--radius-sm);height:32px;color:var(--muted);border:1px solid var(--border);align-items:center;gap:6px;padding:0 10px;font-size:14px;transition:color .15s,border-color .15s;display:inline-flex}.logout-btn:hover:not(:disabled){color:var(--text);border-color:var(--border-strong)}.titlebar{justify-content:space-between;align-items:center;gap:12px;padding:14px 0 6px;display:flex}.page-title{letter-spacing:-.02em;font-size:26px;font-weight:700}.segmented{background:var(--surface);border:1px solid var(--border);border-radius:12px;gap:2px;padding:3px;display:inline-flex}.segment{color:var(--muted);white-space:nowrap;border-radius:9px;padding:6px 12px;font-size:14px;font-weight:500;transition:background .15s,color .15s}.segment:hover{color:var(--text)}.segment.is-selected{background:var(--surface-3);color:var(--accent-text)}.segmented--wrap{flex-wrap:wrap}.segmented--sm .segment{padding:5px 10px;font-size:13px}.sections{top:var(--safe-top);z-index:20;background:var(--bg);border-bottom:1px solid var(--border);position:sticky}.sections-inner{align-items:center;gap:10px;max-width:960px;margin:0 auto;padding:0 16px;display:flex}.sections-scroll{scrollbar-width:none;flex:1;align-items:center;gap:8px;min-width:0;padding:10px 24px 10px 0;display:flex;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000)}.sections-scroll::-webkit-scrollbar{display:none}.chip{background:var(--surface);border:1px solid var(--border);height:34px;color:var(--muted);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:4px;padding:0 14px;font-size:14px;font-weight:500;transition:color .15s,background .15s,border-color .15s;display:inline-flex}.chip:hover{color:var(--text)}.chip.is-active{background:var(--surface-3);border-color:var(--border-strong);color:var(--text)}.chip--with-menu{padding:0 3px 0 14px}.chip-label{height:100%;font-weight:500}.chip--ghost{border-style:dashed;border-color:var(--border-strong);background:0 0}.chip--edit{border-color:var(--accent);background:var(--surface-2);padding:0 12px}.chip--edit input{color:var(--text);background:0 0;border:0;outline:none;width:auto;min-width:6ch;padding:0;font-size:14px}.chip--sm{height:32px;padding:0 12px;font-size:13px}.chip--amount{font-variant-numeric:tabular-nums;color:var(--text);justify-content:center}.chip--amount:hover{border-color:var(--habit)}.chip-row{flex-wrap:wrap;gap:6px;display:flex}.fab{background:var(--accent);width:40px;height:40px;color:var(--on-accent);border-radius:50%;flex:none;place-items:center;transition:background .15s,transform .15s;display:grid}.fab:hover{background:var(--accent-hover)}.fab:active{transform:scale(.94)}.more-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--faint);flex:none;place-items:center;transition:color .15s,background .15s;display:grid}.more-btn:hover,.more-btn[aria-expanded=true]{color:var(--text);background:var(--surface-3)}.more-btn--chip{width:26px;height:26px;color:var(--muted);border-radius:50%}.icon-btn{border-radius:var(--radius-sm);width:34px;height:34px;color:var(--muted);place-items:center;display:grid}.icon-btn:hover{color:var(--text);background:var(--surface-3)}.btn{white-space:nowrap;border-radius:12px;justify-content:center;align-items:center;gap:8px;height:42px;padding:0 18px;font-size:15px;font-weight:600;transition:background .15s,border-color .15s,opacity .15s;display:inline-flex}.btn--primary{background:var(--accent);color:var(--on-accent)}.btn--primary:hover:not(:disabled){background:var(--accent-hover)}.btn--ghost{border:1px solid var(--border-strong);color:var(--text)}.btn--ghost:hover{background:var(--surface-3)}.btn:disabled{opacity:.5}.btn--sm{height:36px;padding:0 14px;font-size:14px}.btn--block{width:100%}.link-btn{color:var(--muted);align-items:center;gap:6px;padding:4px 0;font-size:13px;display:inline-flex}.link-btn:hover:not(:disabled){color:var(--text)}.link-btn:disabled{opacity:.4}.act{border:1.5px solid var(--border-strong);width:40px;height:40px;color:var(--habit);border-radius:12px;flex:none;place-items:center;font-size:14px;font-weight:700;transition:background .15s,border-color .15s,color .15s,transform .12s;display:grid}.act:hover:not(:disabled){border-color:var(--habit)}.act:active:not(:disabled){transform:scale(.93)}.act.is-filled{background:var(--habit);border-color:var(--habit);color:var(--on-habit)}.act:disabled{opacity:.35}.act.is-pending{opacity:.7}.act.is-bumped{animation:.28s ease-out bump}.act--sm{border-radius:10px;width:34px;height:34px;font-size:13px}.hicon{color:var(--habit);flex:none;place-items:center;line-height:1;display:inline-grid}.cards{flex-direction:column;gap:14px;display:flex}.cards--month{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));display:grid}.period-caption{color:var(--muted);margin:0 0 12px 2px;font-size:15px;font-weight:600}.hcard{min-width:0;padding:16px 18px 18px}.hcard-head{align-items:center;gap:10px;display:flex}.hcard-title{flex:1;justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.cards--month .hcard-title{flex-direction:column;align-items:flex-start;gap:1px}.hcard-name{letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:16px;font-weight:700;overflow:hidden}.stats{color:var(--muted);white-space:nowrap;flex:none;align-items:center;gap:6px;font-size:14px;display:inline-flex}.stats-streak{align-items:center;gap:3px;display:inline-flex}.stats-streak svg{color:var(--flame)}.stats-sep{color:var(--faint)}.year{min-width:0;margin-top:12px}.year-months{height:18px;color:var(--muted);font-size:12px;position:relative}.year-months span{white-space:nowrap;position:absolute;top:0}.year-grid{gap:var(--gap);display:flex}.year-col{gap:var(--gap);flex-direction:column;display:flex}.cell{width:var(--cell);height:var(--cell);border-radius:calc(var(--cell) * .28);background:var(--cell-empty);cursor:pointer}.c-off{background:var(--cell-empty)}.c-missed{background:color-mix(in srgb, var(--habit) 16%, var(--cell-empty))}.c-done,.c-l4{background:var(--habit)}.c-l1{background:color-mix(in srgb, var(--habit) 34%, var(--cell-empty))}.c-l2{background:color-mix(in srgb, var(--habit) 56%, var(--cell-empty))}.c-l3{background:color-mix(in srgb, var(--habit) 78%, var(--cell-empty))}.c-future{cursor:default;background:0 0}.cell.c-future{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--cell-empty) 55%, transparent)}:is(.cell,.mcell,.dot).is-today:not(.c-done,.c-l4){box-shadow:inset 0 0 0 2px var(--habit)}.is-pop{animation:.35s ease-out pop}@media (hover:hover){.cell:not(.c-future):hover{filter:brightness(1.25)}}.month{margin-top:14px}.month-head,.month-grid{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.month-head{color:var(--muted);text-align:center;margin-bottom:6px;font-size:11px}.mcell{aspect-ratio:1;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:10px;place-items:center;max-height:52px;font-size:13px;display:grid}.mcell--blank{cursor:default;background:0 0}.mcell.c-done,.mcell.c-l3,.mcell.c-l4{color:var(--on-habit);font-weight:600}.mcell.c-l1,.mcell.c-l2{color:var(--text)}.mcell.c-future{color:var(--faint);box-shadow:inset 0 0 0 1px var(--border)}.section-head{justify-content:space-between;align-items:baseline;gap:12px;padding:16px 18px 6px;display:flex}.section-head h2{font-size:17px;font-weight:700}.section-head .muted{font-size:14px}.trows{margin:0;padding:0 8px 8px;list-style:none}.trow{border-top:1px solid var(--border);align-items:center;gap:12px;padding:10px;display:flex}.trow:first-child{border-top:0}.trow.is-dim{opacity:.5}.trow.is-done .trow-name{color:var(--muted)}.trow-main{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.trow-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.trow-sub{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.trow-goal{align-items:center;gap:10px;min-width:0;display:flex}.trow-goal .bar{flex:1;max-width:220px}.bar{background:var(--cell-empty);border-radius:3px;height:6px;overflow:hidden}.bar span{border-radius:inherit;background:var(--habit);height:100%;transition:width .25s ease-out;display:block}.week{padding-bottom:8px}.wrows{margin:0;padding:0;list-style:none}.wrow{border-top:1px solid var(--border);grid-template-columns:minmax(0,1fr) 284px 76px;grid-template-areas:"name days act";align-items:center;gap:8px 16px;padding:10px 18px;display:grid}.wrow--labels{border-top:0;padding-top:4px;padding-bottom:4px}.wrow-name{grid-area:name;align-items:center;gap:10px;min-width:0;font-weight:600;display:flex}.wrow-name>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.wdays{grid-area:days;grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.wslot{place-items:center;display:grid}.wlabel{color:var(--muted);font-size:11px}.wlabel.is-today{color:var(--text);font-weight:700}.wrow-act{grid-area:act;justify-content:flex-end;align-items:center;gap:4px;display:flex}.dot{width:32px;height:32px;color:var(--on-habit);cursor:pointer;border-radius:50%;place-items:center;display:grid}.dot.c-future{box-shadow:inset 0 0 0 1px var(--border-strong)}.dot-n{font-size:11px;font-weight:700}.dot.c-l1 .dot-n,.dot.c-l2 .dot-n{color:var(--text)}.floating{z-index:100;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-md);max-width:calc(100vw - 16px);box-shadow:var(--shadow);animation:.12s ease-out float-in;position:absolute;top:0;left:0}.menu{min-width:230px;padding:6px}.menu-item{border-radius:var(--radius-sm);text-align:left;width:100%;color:var(--text);align-items:center;gap:10px;padding:9px 10px;font-size:14px;display:flex}.menu-item svg{color:var(--muted);flex:none}.menu-item:hover:not(:disabled){background:var(--surface-3)}.menu-item:disabled{opacity:.4}.menu-item--danger,.menu-item--danger svg{color:var(--danger)}.menu-item--danger:hover:not(:disabled){background:var(--danger-soft)}.day-pop{min-width:200px;max-width:min(280px,100vw - 16px);padding:12px 14px;font-size:14px}.day-pop-title{margin-bottom:6px;font-weight:700}.day-pop-status{color:var(--text);align-items:baseline;gap:8px;display:flex}.day-pop-dot{background:var(--cell-empty);border-radius:2px;flex:none;width:8px;height:8px;transform:translateY(-1px)}.day-pop-status--done .day-pop-dot{background:var(--habit)}.day-pop-status--missed .day-pop-dot{background:color-mix(in srgb, var(--habit) 30%, var(--cell-empty))}.day-pop-status--future,.day-pop-status--off{color:var(--muted)}.day-pop-lines{color:var(--muted);font-variant-numeric:tabular-nums;margin:6px 0 0;padding:0 0 0 16px;font-size:13px;list-style:none}.day-pop-habit{border-top:1px solid var(--border);color:var(--faint);text-overflow:ellipsis;white-space:nowrap;margin-top:8px;padding-top:8px;font-size:12px;overflow:hidden}.goal-pop{width:290px;padding:14px}.goal-pop-head{align-items:center;gap:8px;min-width:0;font-weight:700;display:flex}.goal-pop-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.goal-pop-progress{justify-content:space-between;align-items:baseline;margin:10px 0 6px;font-size:14px;display:flex}.goal-pop-progress b{font-size:18px}.goal-pop-chips{grid-template-columns:repeat(4,1fr);gap:6px;margin-top:12px;display:grid}.goal-pop-form{gap:6px;margin-top:8px;display:flex}.goal-pop-form .text-input{flex:1;min-width:0}.goal-pop-foot{white-space:nowrap;justify-content:space-between;align-items:center;gap:8px;margin-top:10px;font-size:13px;display:flex}.field{flex-direction:column;gap:8px;margin-top:18px;display:flex}.field-label{color:var(--muted);font-size:13px;font-weight:600}.field-hint{justify-content:space-between;min-height:16px;font-size:12px;display:flex}.counter{color:var(--faint)}.counter.over{color:var(--danger)}.text-input{background:var(--bg);border:1px solid var(--border-strong);width:100%;height:44px;color:var(--text);border-radius:12px;outline:none;padding:0 14px;transition:border-color .15s}.text-input::placeholder{color:var(--faint)}.text-input:focus{border-color:var(--accent)}.text-input.has-error{border-color:var(--danger)}.text-input--sm{height:36px;padding:0 12px;font-size:14px}.error-text{color:var(--danger);font-size:13px}.form-error{border-radius:var(--radius-sm);background:var(--danger-soft);color:var(--danger);margin-top:16px;padding:10px 12px;font-size:14px}input[type=number]{appearance:textfield}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.password-wrap{display:block;position:relative}.password-wrap .text-input{padding-right:48px}.password-toggle{position:absolute;top:5px;right:5px}.modal-backdrop{z-index:50;background:var(--backdrop);padding:calc(16px + var(--safe-top)) 16px calc(16px + var(--safe-bottom));justify-content:center;align-items:center;animation:.15s ease-out fade-in;display:flex;position:fixed;inset:0}.modal{width:100%;max-width:540px;max-height:calc(100dvh - 32px - var(--safe-top) - var(--safe-bottom));background:var(--surface);box-shadow:var(--shadow);padding:22px;overflow-y:auto}.modal-head{align-items:center;gap:12px;display:flex}.modal-head h2{flex:1;font-size:19px;font-weight:700}.modal-icon{background:var(--surface-3);border-radius:12px;flex:none;place-items:center;width:44px;height:44px;display:grid}.modal-actions{justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.icon-picker{grid-template-columns:repeat(auto-fill,minmax(40px,1fr));gap:6px;display:grid}.icon-option{border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);height:40px;color:var(--muted);place-items:center;transition:color .15s,border-color .15s,background .15s;display:grid}.icon-option:hover{color:var(--text)}.icon-option.is-selected{color:var(--habit);border-color:var(--habit);background:color-mix(in srgb, var(--habit) 12%, var(--surface-2))}.color-picker{flex-wrap:wrap;gap:10px;display:flex}.color-option{background:var(--swatch);border-radius:50%;width:30px;height:30px;transition:box-shadow .15s;position:relative}.color-option.is-selected{box-shadow:0 0 0 2px var(--surface), 0 0 0 4px var(--swatch)}.color-option--custom{--swatch:var(--text);background:conic-gradient(#f87171,#facc15,#4ade80,#22d3ee,#6366f1,#e879f9,#f87171)}.color-option--custom.has-value{background:var(--swatch)}.color-option--custom.has-value:after{content:"";pointer-events:none;border:2px solid #ffffffd9;border-radius:50%;position:absolute;inset:9px}.color-input{opacity:0;cursor:pointer;border:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.sub-field{flex-direction:column;gap:8px;margin-top:10px;display:flex}.sub-field--row{flex-flow:wrap;align-items:center;gap:10px;display:flex}.sub-hint{font-size:13px}.day-chips{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.day-chip{border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);height:38px;color:var(--muted);font-size:14px;font-weight:500}.day-chip.is-selected{background:color-mix(in srgb, var(--habit) 18%, var(--surface-2));border-color:var(--habit);color:var(--text)}.stepper{border:1px solid var(--border-strong);background:var(--bg);border-radius:12px;align-items:center;height:40px;display:inline-flex;overflow:hidden}.stepper-btn{width:38px;height:100%;color:var(--muted);font-size:18px}.stepper-btn:hover:not(:disabled){color:var(--text);background:var(--surface-3)}.stepper-btn:disabled{opacity:.35}.stepper-input{text-align:center;width:76px;height:100%;color:var(--text);background:0 0;border:0;outline:none;font-weight:600}.readonly-schedule{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;padding:11px 14px;display:flex}.readonly-schedule .muted{font-size:13px}.center-screen{min-height:calc(100dvh - var(--safe-top));justify-content:center;align-items:center;padding:16px;display:flex}.splash .logo-mark{animation:1.4s ease-in-out infinite pulse}.state-card{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:40px 24px;display:flex}.state-card h2{font-size:18px}.state-card .muted{max-width:380px}.state-card .btn{margin-top:8px}.state-card--narrow{max-width:420px}.state-icon{background:var(--danger-soft);width:48px;height:48px;color:var(--danger);border-radius:14px;place-items:center;display:grid}.error-detail{color:var(--faint);font-size:13px}.empty-grid{grid-template-columns:repeat(7,14px);gap:4px;margin-bottom:8px;display:grid}.empty-grid span{background:var(--cell-empty);border-radius:4px;width:14px;height:14px}.empty-grid span:nth-child(5n+2),.empty-grid span:nth-child(7n+4){background:var(--accent)}.loading{flex-direction:column;gap:14px;display:flex}.skeleton{height:168px;animation:1.4s ease-in-out infinite pulse}.login-card{width:100%;max-width:380px;padding:30px 26px 26px}.login-brand{align-items:center;gap:12px;display:flex}.login-sub{margin-top:6px;font-size:14px}.login-title{margin-top:26px;font-size:22px;font-weight:700}.login-card .field{margin-top:16px}.login-card .btn{margin-top:22px}.spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}.toasts{left:50%;bottom:calc(20px + var(--safe-bottom));z-index:200;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:min(420px,100vw - 32px);display:flex;position:fixed;transform:translate(-50%)}.toast{background:var(--surface-3);border:1px solid var(--border-strong);box-shadow:var(--shadow);border-radius:12px;padding:10px 14px;font-size:14px;animation:.18s ease-out float-in}.toast--error{border-color:color-mix(in srgb, var(--danger) 55%, var(--border-strong))}@keyframes pop{0%{transform:scale(.6)}60%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes bump{0%{transform:scale(1)}40%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes float-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}}@keyframes pulse{50%{opacity:.55}}@keyframes spin{to{transform:rotate(360deg)}}@media (width>=640px){.shell,.sections-inner{padding:0 24px}}@media (width<=639px){.titlebar{flex-direction:column;align-items:stretch;gap:10px}.page-title{font-size:22px}.segmented--period{display:flex}.segmented--period .segment{flex:1;padding:7px 4px}.hcard{padding:14px 14px 16px}.hcard-title{flex-direction:column;align-items:flex-start;gap:1px}.stats{font-size:13px}.wrow{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name act""days days";padding:10px 14px}.wrow--labels{grid-template-areas:"days days"}.wrow--labels .wrow-name,.wrow--labels .wrow-act{display:none}.section-head{padding:14px 14px 6px}.trows{padding:0 4px 4px}.modal{padding:18px}}@media (width<=420px){.user-name,.logout-text{display:none}.mcell{border-radius:8px;font-size:12px}.month-grid,.month-head{gap:4px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
