@import url("https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;1,400&family=DM+Sans:wght@300;400;500&display=swap");*,:after,:before{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}:root{--ink:#1c1713;--paper:#f5f0e8;--paper-2:#ede4d8;--paper-3:#ddd0c0;--tobacco:#6b5744;--tobacco-lt:#8c7b6b;--sand:#c4a882;--night:#2a1f14;--night-2:#3a2e22;--forest:#2a5c3f;--danger:#8b1a1a;--danger-bg:#f5d0d0;--warning:#8b5e1a;--warning-bg:#f5e6c8;--serif:"Playfair Display",Georgia,serif;--sans:"DM Sans",-apple-system,BlinkMacSystemFont,sans-serif;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px}body,html{font-family:var(--sans);background:var(--paper-2);color:var(--ink);min-height:100vh;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior:none}.container{max-width:430px;margin:0 auto;min-height:100vh;background:var(--paper);position:relative}.page{padding:24px 20px 100px}.card{border-radius:var(--radius-lg);padding:16px}.card,.input{background:var(--paper);border:.5px solid var(--paper-3)}.input{width:100%;padding:14px 16px;border-radius:var(--radius-md);font-size:16px;font-family:var(--sans);color:var(--ink);outline:none;transition:border-color .15s;-webkit-appearance:none}.input:focus{border-color:var(--tobacco)}.input::placeholder{color:var(--paper-3)}.input-serif{font-family:var(--serif);font-style:italic;font-size:17px;border:none;border-bottom:.5px solid var(--paper-3);border-radius:0;padding:8px 0;background:transparent}.input-serif:focus{border-bottom-color:var(--tobacco)}.label{font-size:9px;letter-spacing:.14em;color:var(--tobacco-lt);margin-bottom:6px;display:block}.btn-primary,.label{font-weight:500;text-transform:uppercase}.btn-primary{width:100%;padding:15px;background:var(--ink);color:var(--paper);border:none;border-radius:var(--radius-sm);font-size:11px;letter-spacing:.1em;font-family:var(--sans);cursor:pointer;transition:opacity .15s}.btn-primary:active{opacity:.85}.btn-primary:disabled{opacity:.35;cursor:not-allowed}.btn-secondary{width:100%;padding:15px;background:transparent;color:var(--ink);border:.5px solid var(--paper-3);border-radius:var(--radius-sm);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;font-family:var(--sans);cursor:pointer;transition:background .15s}.btn-secondary:active{background:var(--paper-2)}.btn-ghost{background:none;border:none;color:var(--tobacco-lt);font-size:12px;cursor:pointer;padding:8px;font-family:var(--sans);text-decoration:underline}.serif{font-family:var(--serif)}.italic{font-style:italic}.sand{color:var(--sand)}.tobacco{color:var(--tobacco)}.tobacco-lt{color:var(--tobacco-lt)}.divider{border:none;border-top:.5px solid var(--paper-3);margin:16px 0}.avatar{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:500;color:#fff;flex-shrink:0;font-family:var(--sans)}.backdrop{position:fixed;inset:0;background:rgba(28,23,19,.5);z-index:40;animation:fadeIn .2s ease}.sheet{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:430px;background:var(--paper);border-radius:20px 20px 0 0;padding:20px 20px 48px;z-index:50;animation:slideUp .25s ease}.pill{padding:7px 14px;border-radius:100px;font-size:12px;font-weight:500;border:none;cursor:pointer;font-family:var(--sans);transition:all .15s;white-space:nowrap}.pill-active{color:#fff}.pill-inactive{color:var(--tobacco-lt);background:var(--paper-2);border:.5px solid var(--paper-3)}.dark-screen{background:var(--ink);min-height:100vh}.badge-overdue-amber{background:#7a4f1a;color:#f5d49a}.badge-overdue-amber,.badge-overdue-red{padding:8px 16px;font-size:10px;letter-spacing:.06em;text-transform:uppercase;text-align:center;font-weight:500}.badge-overdue-red{background:#5c1a1a;color:#f5a0a0}.toggle-track{width:44px;height:24px;border-radius:12px;position:relative;flex-shrink:0;cursor:pointer;border:none;transition:background .2s}.toggle-knob{width:18px;height:18px;border-radius:50%;background:#fff;position:absolute;top:3px;transition:left .2s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateX(-50%) translateY(100%)}to{transform:translateX(-50%) translateY(0)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}@supports (padding-bottom:env(safe-area-inset-bottom)){.sheet{padding-bottom:calc(32px + env(safe-area-inset-bottom))}.safe-bottom{padding-bottom:env(safe-area-inset-bottom)}}