:root{--paper: #faf7f0;--card: #ffffff;--ink: #2b2620;--ink-soft: #6f675c;--line: #e6dfd2;--accent: #3d6b50;--accent-soft: #e7efe9;--alert: #a4552e;--alert-soft: #f6e9e1;--gold: #b08d3e;font-family:Avenir Next,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-size:16px;line-height:1.45}#root{max-width:860px;margin:0 auto;padding:0 16px 80px}h1,h2,h3{font-family:Georgia,Times New Roman,serif;font-weight:600}h1{font-size:1.5rem;margin:0}h2{font-size:1.2rem;margin:1.6em 0 .5em}h3{font-size:1rem;margin:1.2em 0 .4em}a{color:var(--accent)}header.app{display:flex;align-items:center;justify-content:space-between;padding:18px 0 10px;border-bottom:2px solid var(--ink);margin-bottom:4px}header.app .brand{display:flex;align-items:baseline;gap:10px}header.app .brand small{color:var(--ink-soft);font-style:italic}nav.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:20px;overflow-x:auto}nav.tabs button{background:none;border:none;padding:10px 14px;font-size:.95rem;color:var(--ink-soft);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}nav.tabs button.active{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}.switcher{display:flex;align-items:center;gap:8px}.switcher select{font-size:.95rem}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-bottom:14px}ul.roster{list-style:none;padding:0;margin:0}ul.roster li{display:flex;align-items:center;gap:12px;padding:13px 4px;border-bottom:1px solid var(--line)}ul.roster li:last-child{border-bottom:none}.roster .what{flex:1;min-width:0}.roster .what .name{font-weight:600}.roster .what .meta{font-size:.83rem;color:var(--ink-soft)}.roster .due{font-size:.86rem;white-space:nowrap;color:var(--ink-soft)}.roster .due.over{color:var(--alert);font-weight:600}.stars{color:var(--gold);letter-spacing:1px;font-size:.8rem}button,.btn{font:inherit;cursor:pointer;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--ink);padding:7px 13px;font-size:.9rem}button:hover{border-color:var(--ink-soft)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{background:#33593f}button.quiet{border:none;background:none;color:var(--ink-soft);padding:4px 8px}button.quiet:hover{color:var(--ink)}button.danger{color:var(--alert)}button:disabled{opacity:.5;cursor:default}.row-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}input,select,textarea{font:inherit;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);max-width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}label.field{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--ink-soft)}label.field>input,label.field>select{font-size:.95rem;color:var(--ink)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:10px 0}.form-actions{display:flex;gap:8px;margin-top:14px}table.ledger{width:100%;border-collapse:collapse;font-size:.92rem}table.ledger th{text-align:left;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);padding:8px;border-bottom:2px solid var(--line)}table.ledger td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:middle}table.ledger tr.inactive td{color:var(--ink-soft)}table.ledger tr.expand-row td{background:var(--paper)}.pill{display:inline-block;font-size:.74rem;padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);white-space:nowrap}.pill.repair{background:var(--alert-soft);color:var(--alert)}.pill.commitment{background:#ece7f4;color:#5b4a86}.pill.muted{background:var(--line);color:var(--ink-soft)}.envelope{padding:12px 4px;border-bottom:1px solid var(--line)}.envelope:last-child{border-bottom:none}.envelope .top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.envelope .top .name{font-weight:600}.envelope .top .nums{font-size:.86rem;color:var(--ink-soft)}.bar{position:relative;height:8px;background:var(--line);border-radius:4px;margin-top:7px;overflow:visible}.bar .fill{position:absolute;inset:0 auto 0 0;border-radius:4px;background:var(--accent);max-width:100%}.bar .fill.hot{background:var(--alert)}.bar .tick{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink);opacity:.55}.flagged{color:var(--alert);font-weight:600}.empty{color:var(--ink-soft);font-style:italic;padding:18px 4px}.subtle{color:var(--ink-soft);font-size:.87rem}.notice{background:var(--accent-soft);border:1px solid var(--accent);border-radius:8px;padding:10px 14px;margin:10px 0;font-size:.92rem}.notice.warn{background:var(--alert-soft);border-color:var(--alert)}.error-banner{background:var(--alert-soft);color:var(--alert);padding:10px 14px;border-radius:8px;margin:10px 0}.gate{max-width:340px;margin:60px auto;text-align:center}.gate input{font-size:1.4rem;text-align:center;letter-spacing:.4em;width:160px}.wizard-steps{display:flex;gap:8px;margin:20px 0;font-size:.85rem;color:var(--ink-soft)}.wizard-steps .step.on{color:var(--ink);font-weight:600}.pack-block{border:1px solid var(--line);border-radius:10px;margin-bottom:12px;background:var(--card)}.pack-block .pack-head{display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer}.pack-block .pack-head .desc{color:var(--ink-soft);font-size:.85rem;flex:1}.pack-block .items{border-top:1px solid var(--line);padding:6px 14px 10px}.pack-item{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:.92rem;flex-wrap:wrap}.pack-item .name{flex:1;min-width:180px}.pack-item input.cadence{width:64px}.pack-item select{max-width:130px}.agenda-section{margin-bottom:8px}.checklist{list-style:none;padding:0}.checklist li{padding:7px 0;border-bottom:1px dotted var(--line);display:flex;gap:10px;align-items:baseline}.checklist li:last-child{border:none}footer.app{margin-top:60px;text-align:center;color:var(--ink-soft);font-size:.8rem;font-style:italic}@media (max-width: 640px){table.ledger .hide-sm{display:none}header.app{flex-wrap:wrap;gap:8px}}
