:root{color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;--fg: #1d1a17;--bg: #fbf8f4;--accent: #8a4b3c;--muted: #7a726b;--line: #e4ddd4}@media(prefers-color-scheme:dark){:root{--fg: #f1ece6;--bg: #171513;--accent: #d59a86;--muted: #a39a91;--line: #33302c}}body{margin:0;color:var(--fg);background:var(--bg)}.muted{color:var(--muted)}.login{min-height:100dvh;display:grid;place-items:center;padding:1.5rem}.login form{width:min(100%,22rem);display:grid;gap:.75rem}.login h1{margin:0}.who{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;border:0;padding:0;margin:.5rem 0 0}.who label{border:1px solid var(--line);border-radius:.5rem;padding:.75rem;text-align:center;cursor:pointer}.who label.selected{border-color:var(--accent);font-weight:600}.who input{position:absolute;opacity:0}input[type=password]{font-size:1rem;padding:.7rem;border:1px solid var(--line);border-radius:.5rem;background:transparent;color:inherit}button{font-size:1rem;padding:.75rem 1rem;border:0;border-radius:.5rem;background:var(--accent);color:#fff;cursor:pointer}button:disabled{opacity:.5;cursor:default}.error{color:#b3261e;margin:0}.shell header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid var(--line)}.shell header .spacer{flex:1}.shell header button{padding:.4rem .75rem;font-size:.9rem}.shell main{padding:1rem}.page{padding:1rem;max-width:42rem;margin:0 auto}.stack{display:grid;gap:.5rem}.row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.crumbs{font-size:.9rem;margin-bottom:.5rem}.crumbs a{color:var(--muted)}h2{margin:0 0 .25rem}h3{margin:.5rem 0}input[type=text],input[type=date],input[type=number],input:not([type]),select,textarea{font-size:1rem;padding:.6rem;border:1px solid var(--line);border-radius:.5rem;background:transparent;color:inherit;width:100%;box-sizing:border-box}button.ghost{background:transparent;color:var(--accent);border:1px solid var(--line)}button.danger{color:#b3261e}.check{display:flex;gap:.5rem;align-items:center}.notice{border:1px solid var(--accent);border-radius:.5rem;padding:.75rem}.cards{list-style:none;padding:0;margin:0 0 1.5rem;display:grid;gap:.5rem}.card{display:grid;gap:.15rem;padding:.9rem;border:1px solid var(--line);border-radius:.6rem;text-decoration:none;color:inherit}.project-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem}.tabs{display:flex;gap:.25rem;margin:.75rem 0;border-bottom:1px solid var(--line)}.tabs button{background:transparent;color:var(--muted);border:0;border-bottom:2px solid transparent;border-radius:0;padding:.5rem .6rem}.tabs button.active{color:var(--fg);border-bottom-color:var(--accent);font-weight:600}.phase h3{display:flex;align-items:center;gap:.4rem;cursor:pointer;-webkit-user-select:none;user-select:none}.phase h3 .count{margin-left:auto;font-weight:400;font-size:.9rem}.caret{color:var(--muted)}.tasks{list-style:none;padding:0;margin:0}.task{display:flex;align-items:center;gap:.5rem;padding:.5rem 0;border-bottom:1px solid var(--line)}.task input[type=checkbox]{width:1.25rem;height:1.25rem;accent-color:var(--accent);flex:none}.task-main{flex:1;text-align:left;background:transparent;color:inherit;padding:0;border:0;display:grid;gap:.2rem;min-width:0}.task.done .title,.task.skipped .title{color:var(--muted);text-decoration:line-through}.task .meta{display:flex;gap:.35rem;flex-wrap:wrap}.pill{font-size:.75rem;padding:.1rem .45rem;border-radius:999px;border:1px solid var(--line);color:var(--muted)}.pill.overdue{color:#b3261e;border-color:#b3261e}.pill.who{color:var(--accent);border-color:var(--accent)}.hard{color:#b3261e;font-weight:700;margin-right:.3rem}.reorder{display:flex;flex-direction:column;gap:.1rem}.reorder button{background:transparent;color:var(--muted);border:0;padding:0 .3rem;font-size:.8rem;line-height:1}.add{margin:.4rem 0 .75rem;padding:.4rem .75rem;font-size:.9rem}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:grid;align-items:end;z-index:10}.sheet{background:var(--bg);border-radius:1rem 1rem 0 0;padding:1rem 1rem 1.5rem;max-height:92dvh;overflow:auto;max-width:42rem;width:100%;margin:0 auto;box-sizing:border-box}@media(min-width:640px){.sheet-backdrop{align-items:center}.sheet{border-radius:1rem}}.subnav{display:flex;gap:.25rem;margin:.5rem 0 .25rem;overflow-x:auto}.subnav a{padding:.4rem .7rem;border-radius:999px;text-decoration:none;color:var(--muted);border:1px solid var(--line);white-space:nowrap}.subnav a.active{color:#fff;background:var(--accent);border-color:var(--accent)}.small{font-size:.9rem;margin:.25rem 0}.coverage{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}.cov{border:1px solid var(--line);border-radius:.6rem;padding:.6rem .75rem}.cov.booked{border-color:#2e7d32}.pill.state-booked{color:#2e7d32;border-color:#2e7d32}.pill.state-in_progress,.pill.state-quoted,.pill.state-contacted{color:var(--accent);border-color:var(--accent)}.pill.state-declined{text-decoration:line-through}.bar{height:.5rem;background:var(--line);border-radius:999px;overflow:hidden;margin:.4rem 0}.bar .fill{height:100%;background:var(--accent)}.bar .fill.over{background:#b3261e}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));gap:.5rem;margin:.5rem 0 1rem}.stats dt{font-size:.75rem;color:var(--muted)}.stats dd{margin:0;font-weight:600}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.payments{border-top:1px solid var(--line);padding-top:.5rem;margin-top:.5rem}.payments h4{margin:0 0 .5rem}.cat .bar{margin-top:0}.rollups{display:grid;gap:.5rem;margin:.5rem 0}.rollup span{display:block}.toolbar{margin:.5rem 0}.btn{display:inline-block;padding:.5rem .8rem;border-radius:.5rem;border:1px solid var(--line);color:var(--accent);text-decoration:none;font-size:.95rem}.households{list-style:none;padding:0;margin:.5rem 0;display:grid;gap:.6rem}.hh.tier-B{opacity:.75;border-style:dashed}.people{width:100%;border-collapse:collapse;margin-top:.4rem;font-size:.95rem}.people th{text-align:left;font-weight:500;color:var(--muted);font-size:.75rem;padding:.2rem .3rem}.people td{padding:.2rem .3rem;border-top:1px solid var(--line)}.linkish{background:transparent;color:inherit;border:0;padding:0;text-align:left;font-size:inherit}select.rsvp{padding:.25rem;width:auto;font-size:.9rem}select.rsvp.attending{color:#2e7d32;border-color:#2e7d32}select.rsvp.declined{color:#b3261e}.legend{list-style:none;padding:0;margin:.4rem 0;display:flex;gap:.75rem;flex-wrap:wrap}.dot{display:inline-block;width:.5rem;height:.5rem;border-radius:50%;margin-right:.3rem;background:var(--muted);vertical-align:middle}.entry.task .dot{background:var(--accent)}.entry.payment .dot{background:#c98a00}.entry.event .dot{background:#2e7d32}.entry.wedding .dot{background:#d81b60}.entry.done a,.entry.paid a{color:var(--muted);text-decoration:line-through}.entry.overdue .title{color:#b3261e}.grid7{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.grid7.head span{text-align:center;font-size:.7rem;color:var(--muted);padding:.2rem 0}.day{min-height:4.2rem;border:1px solid var(--line);border-radius:.3rem;padding:.15rem .2rem;overflow:hidden}.day.out{opacity:.4}.day.today{border-color:var(--accent)}.day .num{font-size:.7rem;color:var(--muted)}.mini{list-style:none;padding:0;margin:0}.mini li{font-size:.65rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini a{color:inherit;text-decoration:none}.mini .dot{width:.35rem;height:.35rem;margin-right:.15rem}.agenda-day h3{font-size:.9rem;color:var(--muted);margin:.75rem 0 .25rem}.entries{list-style:none;padding:0;margin:0}.entries .entry{padding:.4rem 0;border-bottom:1px solid var(--line)}.entries a{color:inherit;text-decoration:none;display:grid}@media(max-width:480px){.day{min-height:3.2rem}.mini li{font-size:.55rem}}.attachments{border-top:1px solid var(--line);padding-top:.5rem;margin-top:.5rem}.attachments h4{margin:0 0 .4rem}.attachments a.title,.task .title a{color:inherit;text-decoration:none}.hero{font-size:1.1rem;margin:.5rem 0 .75rem}.hero strong{font-size:2rem;color:var(--accent)}.tiles{display:grid;gap:.6rem;grid-template-columns:1fr}@media(min-width:640px){.tiles{grid-template-columns:1fr 1fr}}.tile{border:1px solid var(--line);border-radius:.6rem;padding:.75rem}.tile h3{margin:0 0 .4rem;font-size:1rem}.tile h3 a{color:inherit;text-decoration:none}.mini-list{list-style:none;padding:0;margin:.25rem 0 0;font-size:.9rem}.mini-list li{padding:.15rem 0}.phasebars{list-style:none;padding:0;margin:.4rem 0 0;display:grid;gap:.2rem}.phasebars li{display:grid;grid-template-columns:1fr auto;gap:0 .5rem;align-items:center}.phasebars .bar{grid-column:1 / -1;margin:.1rem 0 .2rem;height:.35rem}
