:root{--bg:#f4f0e8;--bg2:#fffdf8;--ink:#1c1915;--muted:#6b645a;--line:#e4ddd0;--accent:#0f6b5c;--accent2:#c45c26;--danger:#a33b2d;--soon:#b57c12;--ok:#2f6b3a;--shadow:0 10px 30px #1c191514;color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%, #ffe7c8 0%, transparent 50%), radial-gradient(900px 500px at 100% 0%, #cfe8e2 0%, transparent 45%), var(--bg);font-family:DM Sans,system-ui,sans-serif}*{box-sizing:border-box}body{min-height:100vh;margin:0}button,input,select,textarea{font:inherit;color:inherit}button{border:1px solid var(--line);background:var(--bg2);cursor:pointer;border-radius:999px;padding:.55rem 1rem}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger{color:var(--danger)}button:disabled{opacity:.55;cursor:default}.app{max-width:760px;margin:0 auto;padding:1.5rem 1.1rem 3rem}.top{justify-content:space-between;align-items:end;gap:1rem;margin-bottom:1.25rem;display:flex}.eyebrow{color:var(--muted);letter-spacing:.02em;margin:0;font-size:.85rem}h1{letter-spacing:-.02em;margin:.15rem 0 0;font-family:Fraunces,Georgia,serif;font-size:2.4rem}h2{margin-top:0;font-family:Fraunces,Georgia,serif}.tabs{flex-wrap:wrap;gap:.4rem;display:flex}.tabs button.active{background:var(--ink);color:#fff;border-color:var(--ink)}.panel{background:var(--bg2);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:1.25rem;padding:1.1rem}.stats{grid-template-columns:repeat(3,1fr);gap:.6rem;margin-bottom:1rem;display:grid}.stat{color:var(--muted);background:#f7f2ea;border-radius:1rem;padding:.8rem;font-size:.9rem}.stat span{color:var(--ink);font-size:1.5rem;font-weight:700;display:block}.filters{flex-wrap:wrap;gap:.4rem;margin-bottom:1rem;display:flex}.chip{text-transform:capitalize;padding:.35rem .8rem;font-size:.85rem}.chip.active{background:var(--accent);color:#fff;border-color:var(--accent)}.list{gap:.8rem;margin:0;padding:0;list-style:none;display:grid}.card{border:1px solid var(--line);background:#fff;border-radius:1rem;padding:.95rem 1rem}.card.overdue{border-color:#efc2ba}.card.due,.card.soon{border-color:#f0d7a4}.card-top{justify-content:space-between;gap:.5rem;margin-bottom:.35rem;display:flex}.cat{color:var(--muted);font-size:.85rem}.card h3{margin:0 0 .25rem;font-size:1.15rem}.meta{color:var(--muted);margin:.1rem 0;font-size:.9rem}.notes{color:var(--ink);margin:.45rem 0}.row{flex-wrap:wrap;gap:.45rem;margin-top:.75rem;display:flex}.badge{border-radius:999px;padding:.2rem .55rem;font-size:.75rem;font-weight:600}.badge.overdue{color:var(--danger);background:#f8e0db}.badge.due,.badge.soon{color:var(--soon);background:#f8ead0}.badge.upcoming{color:var(--ok);background:#e5f0e7}.form{gap:.75rem;display:grid}.form label{color:var(--muted);gap:.3rem;font-size:.9rem;display:grid}.form input,.form select,.form textarea{border:1px solid var(--line);background:#fff;border-radius:.75rem;padding:.65rem .75rem}.split{grid-template-columns:1fr 1fr;gap:.6rem;display:grid}.check{grid-template-columns:none;align-items:center;gap:.5rem;display:flex!important}.empty{text-align:center;padding:1.5rem .5rem}.empty h2{margin-bottom:.4rem}.banner.error{color:var(--danger);background:#f8e0db;border-radius:.8rem;margin-bottom:.8rem;padding:.7rem .9rem}.muted{color:var(--muted)}.foot{margin-top:1rem;font-size:.85rem}code{font-size:.85em}@media (width<=600px){.top{flex-direction:column;align-items:start}h1{font-size:2rem}}.push-box{border:1px solid var(--line);background:#f7f2ea;border-radius:1rem;margin:.5rem 0 .75rem;padding:.9rem 1rem}.push-box h3{margin:0 0 .35rem;font-size:1rem}.ok{color:var(--ok);font-size:.9rem}
