:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}body{margin:0}:root{--ink:#1c1a19;--muted:#6b6560;--line:#e2ddd7;--bg:#fbf9f7;--card:#fff;--accent:#7a5c3e;--good:#2f6d4f;--bad:#b3261e}@media (prefers-color-scheme:dark){:root{--ink:#f2eee9;--muted:#a49c94;--line:#3a3531;--bg:#171513;--card:#201d1a;--accent:#d3ab7e;--good:#6fbf94;--bad:#f2837a}}body{background:var(--bg);color:var(--ink)}.app{max-width:68rem;margin:0 auto;padding:1.5rem 1.25rem 4rem}.centred{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.topbar{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-bottom:1rem;display:flex}.topbar h1{letter-spacing:-.02em;margin:0;font-size:1.5rem}.topbar p{margin:0}.tabs{flex-wrap:wrap;gap:.25rem;display:flex}.tab{color:var(--muted);cursor:pointer;font:inherit;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:999px;padding:.4rem 1rem;text-decoration:none}.tab.active{background:var(--card);border-color:var(--line);color:var(--ink);font-weight:600}.topbar-actions{align-items:center;gap:.75rem;display:flex}.page{padding-top:1.5rem}.summary{margin-bottom:1.5rem}.tiles{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.75rem;display:grid}.tile{background:var(--card);border:1px solid var(--line);border-radius:.6rem;flex-direction:column;gap:.15rem;padding:.75rem .9rem;display:flex}.tile-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.75rem}.tile-value{font-size:1.25rem}.tile-hint{color:var(--muted);font-size:.75rem}.tile.good .tile-value{color:var(--good)}.tile.bad .tile-value{color:var(--bad)}.split{background:var(--card);border:1px solid var(--line);border-radius:.6rem;flex-wrap:wrap;align-items:baseline;gap:1rem;margin:.75rem 0 0;padding:.6rem .9rem;display:flex}.page-actions{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1.5rem;display:flex}.section{margin-bottom:2rem}.section h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;padding-bottom:.4rem;font-size:1rem;display:flex}table.lines{border-collapse:collapse;width:100%}table.lines th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:.5rem .6rem;font-size:.75rem;font-weight:500}table.lines td{border-top:1px solid var(--line);vertical-align:top;padding:.6rem}.numeric{text-align:right;font-variant-numeric:tabular-nums}table.lines th.numeric{text-align:right}table.lines{table-layout:fixed}table.budget-lines th.numeric{width:14%}table.budget-lines th:last-child{width:10%}table.payment-lines th:first-child,table.payment-lines th:nth-child(2),table.payment-lines th:nth-child(5){width:12%}table.payment-lines th:nth-child(3){width:14%}table.payment-lines th:nth-child(6){width:18%}table.guest-lines th:nth-child(2),table.guest-lines th:nth-child(3){width:12%}table.guest-lines th:nth-child(4),table.guest-lines th:nth-child(5){width:14%}table.guest-lines th:nth-child(6){width:16%}table.task-lines td:nth-child(3){width:14%}table.task-lines td:nth-child(4){width:16%}table.vendor-lines td:nth-child(2),table.vendor-lines td:nth-child(3){width:14%}table.vendor-lines td:nth-child(4){width:26%}tr.clickable{cursor:pointer}tr.clickable:hover{background:var(--card)}.status{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:.15rem .5rem;font-size:.75rem}.status.paid{color:var(--good);border-color:currentColor}.status.outstanding{color:var(--accent);border-color:currentColor}.status.rsvp-yes{color:var(--good);border-color:currentColor}.status.rsvp-maybe{color:var(--accent);border-color:currentColor}.status.rsvp-no{color:var(--muted);text-decoration:line-through}.status.vendor-booked{color:var(--good);border-color:currentColor}.status.vendor-declined{color:var(--muted);text-decoration:line-through}.group-toggle{font:inherit;color:inherit;padding:0}.hidden-file{display:none}.import-report{gap:.4rem;margin:0 0 1rem;padding:0;list-style:none;display:grid}.empty{background:var(--card);border:1px dashed var(--line);text-align:center;color:var(--muted);border-radius:.6rem;padding:2rem}.overlay{background:#00000073;place-items:center;padding:1rem;display:grid;position:fixed;inset:0;overflow-y:auto}.dialog{background:var(--bg);border:1px solid var(--line);border-radius:.8rem;width:min(34rem,100%);max-height:90vh;padding:1.5rem;overflow-y:auto}.dialog.wide{width:min(48rem,100%)}.dialog h2{margin-top:0}.dialog h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);justify-content:space-between;align-items:baseline;gap:1rem;font-size:.9rem;display:flex}.dialog-actions{align-items:center;gap:.5rem;margin-top:1rem;display:flex}.spacer{flex:1}hr{border:none;border-top:1px solid var(--line);margin:1.5rem 0}label{color:var(--muted);flex-direction:column;gap:.25rem;margin-bottom:.75rem;font-size:.85rem;display:flex}label.inline{flex-direction:row;align-items:center;gap:.4rem;margin-bottom:0}.row{flex-wrap:wrap;align-items:flex-end;gap:.75rem;display:flex}.row>label{flex:0 auto}.grow{flex:10rem}input,select,textarea{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:.4rem;width:100%;padding:.45rem .6rem}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--accent);flex:none}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px}button{font:inherit;border:1px solid var(--line);cursor:pointer;background:var(--card);color:var(--ink);border-radius:.4rem;padding:.45rem .9rem}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.secondary{background:var(--card)}button.full{width:100%;margin-top:.5rem}button.link{color:var(--accent);background:0 0;border:none;padding:.2rem;text-decoration:underline}button.danger,.danger{color:var(--bad)}button.primary.danger{background:var(--bad);border-color:var(--bad);color:#fff}.card.login{background:var(--card);border:1px solid var(--line);border-radius:.8rem;width:min(24rem,100%);padding:2rem}.card.login h1{margin:0}.card.welcome{background:var(--card);border:1px solid var(--line);border-radius:.8rem;width:min(34rem,100%);padding:2rem}.card.welcome h1{margin:0}.starters{border:1px solid var(--line);border-radius:.6rem;margin:0 0 .75rem;padding:.9rem 1rem}.starters legend{color:var(--muted);padding:0 .4rem;font-size:.85rem}.starters label.inline{margin-bottom:.5rem}.starters p{margin:.25rem 0 0}.fork{border:1px solid var(--line);border-radius:.6rem;margin:0 0 1rem;padding:.9rem 1rem}.fork legend{color:var(--muted);padding:0 .4rem;font-size:.85rem}.fork button{flex:1}.code-input{letter-spacing:.15em;text-transform:uppercase;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.2rem}.invite{border-top:1px solid var(--line);margin-top:1.25rem;padding-top:1rem}.invite p{margin:.25rem 0 .6rem}.invite .row{align-items:center}.invite-code{letter-spacing:.18em;margin:0 0 .6rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.4rem}.sub-items,.sections,.payment-list{flex-direction:column;gap:.4rem;margin:0 0 .75rem;padding:0;list-style:none;display:flex}.sub-items li,.sections li{align-items:center;gap:.5rem;display:flex}.payment-row{text-align:left;grid-template-columns:6rem 8rem 7rem 6rem 1fr;align-items:baseline;gap:.75rem;width:100%;display:grid}.payment-form{border:1px solid var(--line);background:var(--card);border-radius:.5rem;padding:.75rem}.muted{color:var(--muted)}.small{font-size:.8rem}.block{display:block}.error{color:var(--bad)}.progress{background:var(--line);border-radius:999px;height:.5rem;margin-top:.75rem;overflow:hidden}.progress-bar{background:var(--good);height:100%;transition:width .2s}td.tick{text-align:center;width:2rem}tr.overdue{border-left:3px solid var(--bad)}tr.overdue td:first-child{padding-left:calc(.6rem - 3px)}button.task-title{color:var(--ink);text-align:left;padding:0;text-decoration:none}button.task-title:hover{text-decoration:underline}ul.phases{flex-direction:column;gap:.5rem;margin:.5rem 0;padding:0;list-style:none;display:flex}ul.phases li{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}ul.phases input[type=text]{flex:10rem}ul.phases input[type=number]{width:4.5rem}
