:root{--bg-deep:#1c2a24;--bg-panel:#fffcf5eb;--bg-soft:#f3efe6;--ink:#1a221e;--ink-muted:#5c6b63;--line:#1c2a241f;--accent:#c6e07a;--accent-ink:#24301c;--state-done:#2f6b3a;--state-done-bg:#2f6b3a1f;--state-miss:#a33b2c;--state-miss-bg:#a33b2c1f;--state-break:#2f5f8a;--state-break-bg:#2f5f8a1f;--nav-height:4.5rem;--radius:1rem;--shadow:0 18px 40px #101c162e;color:var(--ink);background:var(--bg-deep);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Figtree,system-ui,sans-serif;font-weight:400;line-height:1.4}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}html{scrollbar-gutter:stable}body{background-color:#0000;background-image:radial-gradient(80% 50% at 10% -10%,#3a5246 0%,#0000 55%),radial-gradient(70% 45% at 100% 0,#2a3d34 0%,#0000 50%),linear-gradient(165deg,#1c2a24 0%,#24352d 45%,#1a2420 100%);background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:auto,auto,auto;background-attachment:fixed;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;min-width:320px;margin:0}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}a{color:inherit;text-decoration:none}.app-shell{width:min(32rem,100%);min-height:100dvh;padding:1.25rem 1rem calc(var(--nav-height) + 1.5rem);flex-direction:column;gap:1.25rem;margin:0 auto;display:flex}.app-header{flex-direction:column;gap:.85rem;padding:.35rem .15rem 0;display:flex}.app-header-top{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.app-header h1{letter-spacing:-.03em;color:#f7f3ea;margin:0;font-family:Bricolage Grotesque,sans-serif;font-size:clamp(1.75rem,5vw,2.15rem);font-weight:700}.week-link{color:#f7f3ead9;background:#f7f3ea1a;border-radius:999px;padding:.4rem .75rem;font-size:.85rem;font-weight:600}.week-link.active,.week-link:active{background:var(--accent);color:var(--accent-ink)}.day-switcher{grid-template-columns:2.75rem 1fr 2.75rem;align-items:center;gap:.35rem;display:grid}.day-arrow{color:#f7f3ea;background:#f7f3ea1a;border-radius:.9rem;place-items:center;width:2.75rem;height:2.75rem;font-size:1.55rem;line-height:1;transition:background .15s;display:grid}.day-arrow:active{background:#c6e07a47}.day-label{color:#f7f3ea;background:#f7f3ea14;border-radius:.9rem;flex-direction:column;justify-content:center;align-items:center;gap:.1rem;height:2.75rem;padding:.2rem .5rem;display:flex}.day-date{letter-spacing:-.02em;font-family:Bricolage Grotesque,sans-serif;font-size:1.1rem;font-weight:700;line-height:1.1}.day-today-hint{color:#f7f3ea8c;height:.9rem;font-size:.72rem;line-height:.9rem}.panel{background:var(--bg-panel);border-radius:calc(var(--radius) + .35rem);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid #ffffff59;padding:.35rem}.page-heading{justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem .95rem .35rem;display:flex}.page-heading-actions{align-items:center;gap:.55rem;display:flex}.page-title{letter-spacing:-.02em;margin:0;padding:0;font-family:Bricolage Grotesque,sans-serif;font-size:1.15rem}.spinner{border:2px solid #1c2a2426;border-top-color:var(--state-done);border-radius:50%;flex-shrink:0;width:1rem;height:1rem;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.page-hint{color:var(--ink-muted);margin:0;padding:0 .95rem .85rem;font-size:.9rem}.page-error{color:var(--state-miss);margin:0;padding:0 .95rem .85rem;font-size:.9rem;font-weight:600}.placeholder{color:var(--ink-muted);padding:1.5rem .95rem 1.75rem}.notes-field{padding:.35rem .55rem .75rem;display:block}.notes-input{resize:vertical;border:1px solid var(--line);border-radius:var(--radius);width:100%;min-height:16rem;color:var(--ink);font:inherit;background:#ffffff8c;padding:.85rem .9rem;line-height:1.45}.notes-input:focus{outline-offset:1px;border-color:#2f6b3a59;outline:2px solid #2f6b3a59}.notes-input:disabled{opacity:.65}.save-dot{background:var(--accent);border-radius:50%;width:.55rem;height:.55rem;box-shadow:0 0 0 3px #c6e07a59}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.text-action{color:var(--ink-muted);border-radius:.65rem;padding:.35rem .55rem;font-size:.82rem;font-weight:600}.text-action:active{background:#1c2a240f}.primary-btn{background:var(--accent);color:var(--accent-ink);border-radius:.85rem;margin-top:.55rem;padding:.7rem 1rem;font-weight:600}.sleep-paste{padding:0 .55rem .75rem}.sleep-paste-input{min-height:6.5rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}.sleep-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;padding:.2rem .55rem .85rem;display:grid}.sleep-field{flex-direction:column;gap:.3rem;display:flex}.sleep-field:first-child{grid-column:1/-1}.sleep-label{color:var(--ink-muted);letter-spacing:.02em;font-size:.78rem;font-weight:600}.sleep-input{border:1px solid var(--line);width:100%;color:var(--ink);font:inherit;font-variant-numeric:tabular-nums;background:#ffffff8c;border-radius:.85rem;padding:.75rem .8rem}.sleep-input:focus{outline-offset:1px;border-color:#2f6b3a59;outline:2px solid #2f6b3a59}.sleep-preview{border-radius:var(--radius);color:var(--ink-muted);white-space:pre-wrap;background:#1c2a240d;margin:0 .55rem .9rem;padding:.85rem .9rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;line-height:1.45}.icon-add{background:var(--accent);width:2rem;height:2rem;color:var(--accent-ink);border-radius:.7rem;place-items:center;font-size:1.35rem;font-weight:600;line-height:1;display:grid}.fuel-list{flex-direction:column;gap:.45rem;margin:0;padding:.15rem .55rem;list-style:none;display:flex}.fuel-row{grid-template-columns:1fr minmax(4.5rem,5.5rem) 2rem;align-items:center;gap:.4rem;display:grid}.fuel-field{min-width:0;display:block}.fuel-remove{width:2rem;height:2rem;color:var(--ink-muted);border-radius:.7rem;place-items:center;font-size:1.25rem;line-height:1;display:grid}.fuel-remove:active{background:var(--state-miss-bg);color:var(--state-miss)}.fuel-add-row{border:1px dashed var(--line);color:var(--ink-muted);text-align:left;border-radius:.85rem;margin:.35rem .55rem .25rem;padding:.65rem .85rem;font-size:.9rem;font-weight:600}.fuel-add-row:active{background:#1c2a240a}.fuel-note{min-height:5rem;margin-top:.35rem}.notes-field .sleep-label{padding:0 .35rem .35rem;display:block}.week-nav{grid-template-columns:2.75rem 1fr 2.75rem;align-items:center;gap:.35rem;padding:0 .55rem .65rem;display:grid}.week-nav .day-arrow{color:var(--ink);background:#1c2a240f}.week-range{text-align:center;letter-spacing:-.02em;font-family:Bricolage Grotesque,sans-serif;font-weight:700}.week-scroll{-webkit-overflow-scrolling:touch;padding:0 .35rem .75rem;overflow-x:auto}.week-grid{border-collapse:separate;border-spacing:.2rem;table-layout:fixed;width:100%;min-width:22rem}.week-corner{width:1.8rem}.week-day-head{width:100%;color:var(--ink-muted);border-radius:.65rem;flex-direction:column;align-items:center;gap:.1rem;padding:.35rem .15rem;font-size:.72rem;font-weight:600;display:flex}.week-day-head.today{color:var(--accent-ink);background:#c6e07a40}.week-day-head.active{background:var(--accent);color:var(--accent-ink)}.week-dom{color:var(--ink);font-family:Bricolage Grotesque,sans-serif;font-size:.95rem;font-weight:700}.week-day-head.active .week-dom,.week-day-head.today .week-dom{color:inherit}.week-habit-label{text-align:center;width:1.8rem;font-size:.95rem;font-weight:500}.week-cell{aspect-ratio:1;color:#0000;background:#1c2a240a;border-radius:.55rem;place-items:center;width:100%;max-height:2.1rem;font-size:.85rem;display:grid}.week-cell[data-state=empty]:after{content:"";background:#1c2a242e;border-radius:50%;width:.35rem;height:.35rem}.week-cell[data-state=✅]{background:var(--state-done-bg);color:var(--state-done)}.week-cell[data-state=❌]{background:var(--state-miss-bg);color:var(--state-miss)}.week-cell[data-state=🔵]{background:var(--state-break-bg);color:var(--state-break)}.week-summary{width:100%;color:var(--ink-muted);font-variant-numeric:tabular-nums;border-radius:.55rem;padding:.35rem .1rem;font-size:.68rem;font-weight:600}.week-summary.sleep{font-size:.62rem}.week-summary-row th,.week-summary-row td{padding-top:.15rem}.inline-link{color:var(--state-done);text-underline-offset:2px;font-weight:600;text-decoration:underline}.bottom-nav{width:min(32rem,100%);height:calc(var(--nav-height) + env(safe-area-inset-bottom));padding:.45rem .55rem calc(.45rem + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:20;background:#121c17eb;border-top:1px solid #ffffff14;grid-template-columns:repeat(5,1fr);gap:.2rem;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-link{color:#f7f3ea8c;letter-spacing:.01em;border-radius:.85rem;flex-direction:column;justify-content:center;align-items:center;gap:.2rem;font-size:.68rem;font-weight:600;transition:background .15s,color .15s;display:flex}.nav-link span[aria-hidden=true]{font-size:1.05rem;line-height:1}.nav-link.active{color:var(--accent-ink);background:var(--accent)}.habit-list{flex-direction:column;gap:.35rem;margin:0;padding:.2rem;list-style:none;display:flex}.habit-row{border-radius:var(--radius);text-align:left;grid-template-columns:auto 1fr auto;align-items:center;gap:.85rem;width:100%;padding:.9rem .95rem;transition:background .15s,transform .12s;display:grid}.habit-row:active{transform:scale(.985)}.habit-row[data-state=""]{background:0 0}.habit-row[data-state=✅]{background:var(--state-done-bg)}.habit-row[data-state=❌]{background:var(--state-miss-bg)}.habit-row[data-state=🔵]{background:var(--state-break-bg)}.habit-emoji{font-size:1.35rem;line-height:1}.habit-label{font-size:1rem;font-weight:600}.habit-state{border:1px dashed var(--line);background:#1c2a240f;border-radius:999px;place-items:center;min-width:2rem;height:2rem;font-size:1.05rem;display:grid}.habit-row[data-state=✅] .habit-state{background:var(--state-done);color:#fff;border-color:#0000}.habit-row[data-state=❌] .habit-state{background:var(--state-miss);color:#fff;border-color:#0000}.habit-row[data-state=🔵] .habit-state{background:var(--state-break);color:#fff;border-color:#0000}.habit-state.empty{color:#0000}.habit-state.empty:after{content:"";background:#1c2a2433;border-radius:50%;width:.55rem;height:.55rem}.legend{color:var(--ink-muted);flex-wrap:wrap;gap:.55rem;padding:.35rem .95rem 1rem;font-size:.82rem;display:flex}.legend span{align-items:center;gap:.3rem;display:inline-flex}
