:root{--bg: #F6F3EA;--card: #FFFFFF;--ink: #23352B;--ink-2: #3A4A3F;--muted: #5E6B61;--accent: #2E6B43;--accent-fill: #3F8F5A;--accent-soft: #EAF4EC;--track: #E3E7DC;--line: #C9D1C3;--spark: #E9A23B;--danger: #B3402F;--radius: 18px;--radius-lg: 24px;--font: "Nunito", system-ui, -apple-system, "Segoe UI", sans-serif}@media(prefers-color-scheme:dark){:root{--bg: #18201B;--card: #222C25;--ink: #E8EFE9;--ink-2: #CCD7CF;--muted: #A3B1A7;--accent: #8FD3A3;--accent-fill: #4FA36A;--accent-soft: #273A2D;--track: #34413A;--line: #435047;--danger: #F08A79}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased}body{min-height:100dvh}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}:focus-visible{outline:3px solid var(--accent-fill);outline-offset:2px}h1{margin:0;font-size:26px;font-weight:800}h2{margin:0;font-size:18px;font-weight:800}h3{margin:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.muted{color:var(--muted)}.accent{color:var(--accent)}.strong{font-weight:700}.big{font-size:16px}.small{font-size:14px}.tiny{font-size:12px}.row-between{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.eyebrow{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:4px 0 0}.app{min-height:100dvh;display:flex;flex-direction:column-reverse}.content{flex:1;width:100%;max-width:560px;margin:0 auto;padding-bottom:96px}.nav{position:fixed;inset:auto 0 0;z-index:10;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:8px 10px calc(10px + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--track)}.brand{display:none}.nav-item{min-height:52px;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:13px;font-weight:800;color:var(--muted);text-decoration:none}.nav-item.on{background:var(--accent-soft);color:var(--ink)}@media(min-width:900px){.app{flex-direction:row}.nav{position:sticky;inset:auto;height:100dvh;width:220px;flex:none;display:flex;flex-direction:column;gap:6px;padding:28px 14px;border-top:none;border-right:1px solid var(--track)}.brand{display:block;font-weight:800;font-size:18px;padding:0 12px 16px}.nav-item{flex-direction:row;justify-content:flex-start;gap:12px;padding:0 14px;font-size:15px}.content{padding-bottom:40px}}.screen{padding:28px 20px 16px;display:flex;flex-direction:column;gap:14px}.screen-head{display:flex;flex-direction:column;gap:2px}.card{background:var(--card);border-radius:var(--radius);padding:14px 16px;border:none;text-align:left}.empty{color:var(--muted);margin:0;line-height:1.45}.group{display:flex;flex-direction:column;gap:10px}.companion-card{display:flex;gap:14px;align-items:center;border-radius:var(--radius-lg);padding:16px}.companion-text{display:flex;flex-direction:column;gap:6px;flex:1;min-width:0}.companion-name{font-size:17px;font-weight:800}.companion-line{font-size:14px;line-height:1.35;color:var(--ink-2)}.level-row{display:flex;align-items:center;gap:8px}.bar{flex:1;height:8px;border-radius:4px;background:var(--track);overflow:hidden}.bar-fill{height:100%;border-radius:4px;background:var(--spark);transition:width .5s ease}.companion{flex:none;transform-origin:50% 100%}.companion.hop{animation:hop .7s cubic-bezier(.3,1.6,.5,1)}@keyframes hop{0%{transform:translateY(0) scale(1)}30%{transform:translateY(-12px) scale(.96,1.05)}60%{transform:translateY(0) scale(1.05,.95)}to{transform:translateY(0) scale(1)}}.goal{display:flex;align-items:center;gap:12px;padding:10px 8px 10px 12px;border-radius:var(--radius);background:var(--card);transition:background .3s}.goal.done{background:var(--accent-soft)}.ring{width:48px;height:48px;flex:none;border:none;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:transform .15s}.ring:active{transform:scale(.92)}.ring-inner{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .25s}.goal-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;background:none;border:none;padding:4px 0;text-align:left}.goal-name{font-size:16px;font-weight:700}.goal-meta{font-size:13px;color:var(--muted)}.icon-btn{width:44px;height:44px;flex:none;border:none;background:transparent;border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--muted)}.icon-btn:hover{background:var(--accent-soft)}.celebrate{background:var(--accent-fill);color:#fff;border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:2px;animation:pop .5s ease}@keyframes pop{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.toast{position:fixed;left:50%;bottom:calc(92px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:20;width:min(92vw,420px);background:var(--ink);color:var(--bg);border-radius:14px;padding:12px 14px;display:flex;justify-content:space-between;align-items:center;gap:12px;font-weight:600;animation:pop .25s ease}.toast button{background:none;border:none;color:inherit;font-weight:800;text-decoration:underline;min-height:36px}@media(min-width:900px){.toast{bottom:32px;left:calc(50% + 110px)}}.btn{min-height:48px;padding:0 18px;border-radius:14px;border:1px solid var(--line);background:var(--card);font-weight:800;font-size:15px}.btn.primary{background:var(--accent-fill);border-color:var(--accent-fill);color:#fff}.btn.danger{color:var(--danger);border-color:transparent;background:transparent}.btn.wide{width:100%}.btn-row{display:flex;gap:8px;flex-wrap:wrap}.link-btn{background:none;border:none;color:var(--accent);font-weight:700;min-height:40px;padding:0 6px;text-decoration:underline}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{min-height:40px;padding:0 14px;border-radius:20px;border:1px solid var(--line);background:var(--card);font-weight:700;font-size:14px}.chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}.field{display:flex;flex-direction:column;gap:6px;border:none;padding:0;margin:0}.field label,legend{font-size:14px;font-weight:700;padding:0;margin-bottom:6px}input:not([type=checkbox]),textarea{width:100%;min-height:48px;padding:10px 14px;border-radius:14px;border:1px solid var(--line);background:var(--card);font-size:16px}textarea{resize:vertical;line-height:1.4}.stepper{display:flex;gap:8px;align-items:center}.stepper .btn{width:52px;padding:0;font-size:22px}.stepper input{text-align:center;font-weight:800;font-size:20px}.stepper-value{min-width:110px;text-align:center;font-weight:800}.check-row{display:flex;align-items:center;gap:10px;font-weight:700;min-height:44px}.check-row input{width:22px;height:22px;accent-color:var(--accent-fill)}.mood{border:none;padding:0;margin:0}.mood-row{display:flex;gap:6px;flex-wrap:wrap}.sheet{border:none;padding:0;margin:auto auto 0;width:100%;max-width:560px;max-height:92dvh;border-radius:24px 24px 0 0;background:var(--bg);color:var(--ink)}.sheet::backdrop{background:#141e1873}.sheet[open]{animation:up .25s ease}@keyframes up{0%{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}@media(min-width:900px){.sheet{margin:auto;border-radius:24px}}.sheet-body{padding:18px 20px calc(24px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px}.sheet-head{display:flex;justify-content:space-between;align-items:center}.sheet-head h2{font-size:22px}.sheet p{margin:0}.timer{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--card);border-radius:var(--radius);padding:12px}.timer-clock{font-size:30px;font-weight:800;font-variant-numeric:tabular-nums;min-width:96px}.today-entries{display:flex;flex-direction:column;gap:6px}.mini-entry{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:14px;background:var(--card);border-radius:12px;padding:6px 6px 6px 12px}.entry{display:flex;flex-direction:column;gap:6px;width:100%;color:inherit}.entry-title{font-size:16px;font-weight:800;display:flex;align-items:center;gap:8px}.entry-note{font-size:15px;line-height:1.45;white-space:pre-wrap}.dot{width:10px;height:10px;border-radius:50%;flex:none}.big-dot{width:14px;height:14px}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.stat{display:flex;flex-direction:column;gap:2px;padding:12px}.stat-num{font-size:26px;font-weight:800}.activity-progress{display:flex;flex-direction:column;gap:10px}.grid-days{max-width:340px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.grid-head{font-size:11px;font-weight:700;color:var(--muted);text-align:center}.cell{aspect-ratio:1;border-radius:6px;background:var(--track)}.cell.off{background:transparent;border:1px dashed var(--track)}.cell.part{background:color-mix(in srgb,var(--c) 35%,var(--track))}.cell.full{background:var(--c)}.cell.future{background:transparent}.cell.today{outline:2px solid var(--ink);outline-offset:1px}.rewards{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.reward{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:8px 10px;border-radius:12px;border:1px dashed var(--line);color:var(--muted);font-size:14px;font-weight:700}.reward.on{border:none;background:var(--accent-soft);color:var(--ink)}.activity-row{display:flex;align-items:center;gap:12px;width:100%;color:inherit}.activity-row-text{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.settings{display:flex;flex-direction:column;gap:12px;margin-top:8px}.settings p{margin:0}.onboarding{max-width:520px;margin:0 auto;padding:40px 20px;display:flex;flex-direction:column;gap:16px;align-items:stretch}.onboarding>svg{align-self:center}.onboarding h1{text-align:center}.onboarding>p{text-align:center;margin:0}.template-list{display:flex;flex-direction:column;gap:8px}.template{display:grid;grid-template-columns:24px 1fr;column-gap:12px;row-gap:2px;align-items:center;background:var(--card);border-radius:var(--radius);padding:12px 14px;border:2px solid transparent;cursor:pointer}.template input{width:20px;height:20px;grid-row:span 2;accent-color:var(--accent-fill)}.template.on{border-color:var(--accent-fill)}.loading{min-height:100dvh}.reduce-motion *,.reduce-motion *:before,.reduce-motion *:after{animation:none!important;transition:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
