:root{--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-7:32px;--sp-8:48px;--gutter:20px;--card-pad:var(--sp-5);--paper:#f4f2ed;--surface:#ffffff;--surface-dim:#eceae3;--hairline:#e3dfd5;--hairline-strong:#d3cec1;--ink:#191813;--ink-dim:#6e6a5e;--ink-faint:#a29d8f;--gold:#9c7a2e;--gold-soft:#f0e7d2;--green:#4a7a5a;--green-soft:#e3ece5;--red:#a8503c;--red-soft:#f2e2dd;--hero-bg:#17150f;--hero-ink:#f4f2ed;--hero-dim:#98917d;--font-sans:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,sans-serif;--font-serif:"New York",ui-serif,Georgia,"Times New Roman",serif;--font-mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;--radius:16px;--radius-sm:10px;--nav-h:60px;--safe-bottom:env(safe-area-inset-bottom,0px)}@media (min-width:640px){:root{--gutter:32px;--card-pad:var(--sp-6)}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0;background:var(--paper);font-family:var(--font-sans);font-size:15.5px;line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}a,body,html{color:var(--ink)}a{text-decoration:underline;-webkit-text-decoration-color:var(--hairline-strong);text-decoration-color:var(--hairline-strong);text-underline-offset:3px}a:hover{-webkit-text-decoration-color:var(--gold);text-decoration-color:var(--gold)}h1{font-weight:640;font-size:1.9rem;letter-spacing:-.01em;margin:0 0 var(--sp-1)}h1,h2{font-family:var(--font-serif)}h2{font-size:1.25rem;font-weight:600;margin:0 0 var(--sp-3)}h3{font-size:.72rem;font-weight:500;letter-spacing:.14em;color:var(--ink-dim);margin:0 0 var(--sp-4)}.kicker,h3{font-family:var(--font-mono);text-transform:uppercase}.kicker{font-size:.68rem;letter-spacing:.16em;color:var(--ink-faint);margin-bottom:var(--sp-2)}.shell{min-height:100dvh;display:flex;flex-direction:column}.page{flex:1 1;padding:var(--sp-7) var(--gutter) calc(var(--nav-h) + var(--safe-bottom) + var(--sp-8));max-width:760px;width:100%;margin:0 auto}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-7)}.page-header .sub{font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.14em;color:var(--ink-faint)}.section-gap{margin-top:var(--sp-8)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--nav-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:rgba(244,242,237,.88);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);border-top:1px solid var(--hairline);justify-content:space-around;z-index:40}.bottom-nav,.bottom-nav a{display:flex;align-items:center}.bottom-nav a{flex-direction:column;gap:3px;color:var(--ink-faint);font-size:.6rem;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;text-decoration:none;padding:var(--sp-1) var(--sp-2);min-width:54px}.bottom-nav a .icon{font-size:1.05rem;line-height:1}@media (min-width:640px){.bottom-nav a{font-size:.66rem;min-width:64px}.bottom-nav a .icon{font-size:1.3rem}}.icon-link{font-size:1.35rem;line-height:1;color:var(--ink-dim);text-decoration:none;padding:var(--sp-2);margin:calc(var(--sp-2) * -1)}.bottom-nav a.active,.icon-link:hover{color:var(--ink)}.bottom-nav a.active .icon{color:var(--gold)}.capture-fab{position:fixed;right:var(--gutter);bottom:calc(var(--nav-h) + var(--safe-bottom) + var(--sp-4));width:54px;height:54px;border-radius:50%;background:var(--ink);color:var(--paper);font-size:1.5rem;font-weight:300;border:none;box-shadow:0 10px 28px rgba(25,24,19,.28);cursor:pointer;z-index:45;transition:transform .15s ease}.capture-fab:active{transform:scale(.94)}.hero{background:var(--hero-bg);color:var(--hero-ink);border-radius:22px;padding:var(--sp-6);margin-bottom:var(--sp-7)}.hero .hero-label{font-family:var(--font-mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.18em;color:var(--hero-dim);display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-4)}.hero .hero-label:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--gold)}.hero .hero-title{font-family:var(--font-serif);font-style:italic;font-weight:500;font-size:1.55rem;line-height:1.25;letter-spacing:-.01em;margin:0 0 var(--sp-5)}.hero .hero-meta{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.hero .hero-time{font-family:var(--font-mono);font-size:1.3rem;letter-spacing:.02em}.hero .btn{background:transparent;border-color:rgba(244,242,237,.25)}.hero .btn,.hero a{color:var(--hero-ink)}.card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius);padding:var(--card-pad);margin-bottom:var(--sp-4)}.card.tight{padding:var(--sp-2) var(--card-pad)}.list-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4) 0;border-bottom:1px solid var(--hairline);background:transparent}.list-item:last-of-type{border-bottom:none}.list-item .grow{flex:1 1;min-width:0}.list-item .title{overflow-wrap:anywhere;font-weight:480}.list-item .meta{color:var(--ink-faint);font-size:.76rem;margin-top:2px}.list-item.done .title{text-decoration:line-through;-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink);color:var(--ink-faint)}.empty{color:var(--ink-dim);text-align:center;padding:var(--sp-8) var(--sp-6);font-family:var(--font-serif);font-style:italic;font-size:1.02rem;line-height:1.55}button{font:inherit}.btn{background:var(--surface);color:var(--ink);border:1px solid var(--hairline-strong);border-radius:999px;padding:9px 18px;cursor:pointer;font-size:.86rem;font-weight:500;transition:background .12s ease,transform .1s ease}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--ink);border-color:var(--ink);color:var(--paper)}.btn.danger{background:transparent;border-color:var(--red);color:var(--red)}.btn.small{padding:5px 13px;font-size:.76rem}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-dim)}.btn.ghost:hover{color:var(--ink)}.icon-btn{background:none;border:none;color:var(--ink-faint);font-size:1rem;cursor:pointer;padding:var(--sp-2)}.icon-btn:hover{color:var(--red)}input[type=date],input[type=datetime-local],input[type=number],input[type=password],input[type=text],input[type=time],select,textarea{width:100%;background:var(--paper);border:1px solid var(--hairline);border-radius:var(--radius-sm);color:var(--ink);padding:11px 13px;font:inherit;font-size:16px}textarea{resize:vertical;min-height:76px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--ink)}::placeholder{color:var(--ink-faint)}.field{margin-bottom:var(--sp-4)}.field label{display:block;font-family:var(--font-mono);font-size:.64rem;color:var(--ink-dim);margin-bottom:var(--sp-2);text-transform:uppercase;letter-spacing:.14em}.row{display:flex;gap:var(--sp-3)}.row>*{flex:1 1}input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:22px;height:22px;min-width:22px;border:1.5px solid var(--hairline-strong);border-radius:50%;background:var(--surface);cursor:pointer;position:relative;margin:0;transition:background .12s ease,border-color .12s ease}input[type=checkbox]:checked{background:var(--ink);border-color:var(--ink)}input[type=checkbox]:checked:after{content:"";position:absolute;left:7px;top:3.5px;width:5px;height:9px;border:solid var(--paper);border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.checkbox-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;font-size:.94rem}.chip{display:inline-block;padding:3px 11px;border-radius:999px;font-family:var(--font-mono);font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;background:var(--surface-dim);color:var(--ink-dim);border:1px solid transparent;white-space:nowrap}.chip.accent{background:var(--gold-soft);color:var(--gold)}.chip.green{background:var(--green-soft);color:var(--green)}.chip.amber{background:var(--gold-soft);color:var(--gold)}.chip.red{background:var(--red-soft);color:var(--red)}.offline-banner{position:-webkit-sticky;position:sticky;top:0;z-index:30;background:var(--gold-soft);color:var(--gold);text-align:center;font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;padding:var(--sp-2) var(--sp-3)}.tabs{display:flex;gap:var(--sp-1);margin-bottom:var(--sp-6);background:var(--surface-dim);border-radius:999px;padding:3px;width:-moz-fit-content;width:fit-content;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.tabs button{border:none;background:transparent;color:var(--ink-dim);border-radius:999px;padding:7px 16px;font-size:.83rem;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .12s ease,color .12s ease}.tabs button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(25,24,19,.08)}.modal-backdrop{position:fixed;inset:0;background:rgba(25,24,19,.35);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:60;display:flex;align-items:flex-end;justify-content:center;animation:backdrop-in .18s ease-out}.modal{background:var(--paper);border-radius:24px 24px 0 0;width:100%;max-width:540px;max-height:88dvh;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:var(--sp-6) var(--sp-5) calc(var(--sp-6) + var(--safe-bottom));animation:sheet-up .34s cubic-bezier(.32,1.18,.35,1)}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-up{0%{transform:translateY(48px);opacity:.6}to{transform:translateY(0);opacity:1}}.modal h2{margin-bottom:var(--sp-5)}.modal-actions{display:flex;gap:var(--sp-3);justify-content:flex-end;margin-top:var(--sp-6)}@media (min-width:640px){.modal-backdrop{align-items:center;padding:var(--sp-6)}.modal{border-radius:24px;padding:var(--sp-6);animation-name:sheet-pop}}@keyframes sheet-pop{0%{transform:translateY(14px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.page-anim{animation:page-in .24s cubic-bezier(.25,.8,.35,1)}@keyframes page-in{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(100deg,var(--surface-dim) 40%,var(--hairline) 50%,var(--surface-dim) 60%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite}@keyframes shimmer{0%{background-position:120% 0}to{background-position:-80% 0}}@media (prefers-reduced-motion:reduce){.modal,.modal-backdrop,.page-anim,.skeleton{animation:none}}.metric-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:var(--sp-3);gap:var(--sp-3);margin-bottom:var(--sp-2)}.metric{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius);padding:var(--sp-4)}.metric .value{font-family:var(--font-mono);font-size:1.75rem;font-weight:600;letter-spacing:-.01em;margin:var(--sp-2) 0 2px;color:var(--ink)}.metric .label{font-family:var(--font-mono);font-size:.6rem;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.12em}.metric .detail{font-size:.74rem;color:var(--ink-faint)}.metric.good .value{color:var(--green)}.metric.warn .value{color:var(--gold)}.metric.bad .value{color:var(--red)}.cal-card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius);padding:var(--sp-3) var(--sp-3) var(--sp-2);height:68dvh;min-height:420px}.fc{--fc-border-color:var(--hairline);--fc-page-bg-color:var(--surface);--fc-neutral-bg-color:var(--surface);--fc-today-bg-color:transparent;--fc-now-indicator-color:var(--red);--fc-highlight-color:var(--gold-soft);font-size:.78rem}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:var(--sp-3);gap:var(--sp-2)}.fc .fc-toolbar-title{display:none}.fc .fc-button{background:var(--surface);color:var(--ink-dim);border:1px solid var(--hairline-strong);border-radius:999px;padding:4px 12px;font-size:.72rem;font-weight:500;box-shadow:none!important;text-transform:capitalize}.fc .fc-button:hover{background:var(--surface-dim);color:var(--ink)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background:var(--ink);border-color:var(--ink);color:var(--paper)}.fc .fc-button:disabled{opacity:.4}.fc .fc-button-group{gap:3px}.fc .fc-col-header-cell-cushion{font-family:var(--font-mono);font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-dim);padding:var(--sp-2) var(--sp-1);text-decoration:none}.fc .fc-day-today .fc-col-header-cell-cushion{color:var(--gold);font-weight:600}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{font-family:var(--font-mono);font-size:.58rem;color:var(--ink-faint)}.fc .fc-timegrid-slot{height:24px}.fc .fc-timegrid-slot-minor{border-top-style:none}.fc .fc-daygrid-event,.fc .fc-timegrid-event{border-radius:8px;border:none;padding:2px 6px;font-size:.7rem;line-height:1.3;box-shadow:none}.fc .fc-event-main{color:inherit}.fc .fc-event-time{font-family:var(--font-mono);font-size:.58rem;opacity:.7}.fc .fc-ev-default{background:var(--surface-dim);border-left:3px solid var(--ink)!important;color:var(--ink)}.fc .fc-ev-task{background:var(--green-soft);border-left:3px solid var(--green)!important;color:var(--ink)}.fc .fc-ev-buffer{background:repeating-linear-gradient(45deg,var(--gold-soft),var(--gold-soft) 6px,var(--surface) 6px,var(--surface) 12px);border-left:3px solid var(--gold)!important;color:var(--ink-dim)}.fc .fc-timegrid-now-indicator-line{border-width:1.5px 0 0}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--red)}.fc .fc-highlight{border-radius:8px}.habit-week{display:flex;gap:var(--sp-2);flex-wrap:wrap}.habit-day{width:36px;height:36px;border-radius:50%;border:1.5px solid var(--hairline-strong);background:var(--surface);color:var(--ink-faint);font-family:var(--font-mono);font-size:.62rem;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .12s ease,border-color .12s ease}.habit-day.done{background:var(--ink);border-color:var(--ink);color:var(--paper)}.habit-day.today{border-color:var(--gold)}.habit-day:disabled{opacity:.35;cursor:default}.progress{height:4px;background:var(--surface-dim);border-radius:999px;overflow:hidden;margin-top:var(--sp-3)}.progress>div{height:100%;background:var(--gold);border-radius:999px}.progress.green>div{background:var(--green)}.login-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--gutter)}.login-card{width:100%;max-width:380px;padding:var(--sp-7) var(--sp-6)}.login-card h1{font-size:1.65rem}.error-text{color:var(--red);font-size:.83rem;margin-top:var(--sp-2)}.muted{color:var(--ink-dim);font-size:.88rem}.faint{color:var(--ink-faint);font-size:.78rem}@media (min-width:640px){.page{padding-top:var(--sp-8)}}[data-theme=dark]{color-scheme:dark;--paper:#131210;--surface:#1b1915;--surface-dim:#26221b;--hairline:#2b2721;--hairline-strong:#3c362b;--ink:#ebe7dd;--ink-dim:#a49e8f;--ink-faint:#6f695c;--gold:#c9a24f;--gold-soft:#2d2513;--green:#83b494;--green-soft:#1e2a20;--red:#d67f66;--red-soft:#33201a;--hero-bg:#f4f2ed;--hero-ink:#17150f;--hero-dim:#6e6a5e}[data-theme=dark] .bottom-nav{background:rgba(19,18,16,.88)}[data-theme=dark] .capture-fab{box-shadow:0 10px 28px rgba(0,0,0,.5)}[data-theme=dark] .hero .hero-label:before{background:#9c7a2e}[data-theme=dark] .hero .btn{border-color:rgba(23,21,15,.3);color:var(--hero-ink)}[data-theme=dark] .tabs button.active{box-shadow:0 1px 3px rgba(0,0,0,.4)}[data-theme=dark] .modal-backdrop{background:rgba(0,0,0,.55)}