/* Palette: reddish purple. All colors live in these two blocks; change them here and the whole site follows. */
:root { --bg:#fbf6f9; --fg:#2a1f27; --mut:#756370; --rule:#ead9e3; --card:#ffffff; --acc:#8e2a6b; --acc-fg:#ffffff; --live:#2f6b3f; --live-bg:#e3f1e6; --draft:#8a5a00; --draft-bg:#fbefd0; --chip:#f3e6ee; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --bg:#18121a; --fg:#efe4ec; --mut:#b39cad; --rule:#33263a; --card:#21172a; --acc:#e48ac4; --acc-fg:#18121a; --live:#8fd4a1; --live-bg:#183225; --draft:#f0c674; --draft-bg:#3a2e12; --chip:#2d2036; color-scheme: dark; } }
* { box-sizing: border-box; }
body { margin:0; background:var(--bg); color:var(--fg); font:17px/1.6 Georgia,"Iowan Old Style",serif; }
a { color:var(--acc); }
.top { display:flex; flex-wrap:wrap; align-items:center; gap:10px 16px; padding:12px 16px; border-bottom:1px solid var(--rule); font:14px system-ui,sans-serif; }
.brand { font:700 15px/1 system-ui,sans-serif; letter-spacing:.08em; text-transform:uppercase; color:var(--acc); text-decoration:none; margin-right:auto; }
.nav { display:flex; flex-wrap:wrap; gap:6px 16px; } .nav a { text-decoration:none; color:var(--fg); } .nav a:hover { color:var(--acc); }
.who { color:var(--mut); text-decoration:none; }
button.link, .top form button { background:none; border:0; color:var(--acc); font:14px system-ui,sans-serif; cursor:pointer; padding:0; }
.wrap { max-width:900px; margin:0 auto; padding:22px 16px 60px; }
.flash { margin:0; padding:10px 16px; font:15px system-ui,sans-serif; }
.flash.ok { background:var(--live-bg); color:var(--live); } .flash.bad { background:var(--draft-bg); color:var(--draft); }
h1 { font-size:1.8rem; line-height:1.25; margin:.2em 0 .4em; text-wrap:balance; } h2 { font-size:1.2rem; margin:1.6em 0 .4em; }
.mut2, .fine { color:var(--mut); font:14px system-ui,sans-serif; } .fine { margin:.5em 0; }
.tag { display:inline-block; font:600 11px system-ui,sans-serif; letter-spacing:.04em; text-transform:uppercase; padding:2px 8px; border-radius:999px; background:var(--chip); color:var(--mut); }
.tag.pub { background:var(--live-bg); color:var(--live); } .tag.dis { background:var(--draft-bg); color:var(--draft); }
.card { background:var(--card); border:1px solid var(--rule); border-radius:10px; padding:14px 16px; margin:0 0 14px; }
.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:14px; }
.stat { font:700 1.6rem/1.2 system-ui,sans-serif; } .statl { font:13px system-ui,sans-serif; color:var(--mut); }
.list { list-style:none; padding:0; font:15px system-ui,sans-serif; } .list li { padding:8px 0; border-bottom:1px solid var(--rule); }
form.stack, .auth { display:flex; flex-direction:column; gap:10px; max-width:560px; margin:14px 0 22px; font:14px system-ui,sans-serif; }
.row { display:flex; flex-wrap:wrap; gap:10px 14px; align-items:flex-end; margin:10px 0; font:14px system-ui,sans-serif; }
label { display:flex; flex-direction:column; gap:4px; color:var(--mut); } label.chk { flex-direction:row; align-items:center; gap:8px; }
input[type=text], input[type=email], input[type=password], input[type=date], input[type=number], textarea, select { font:16px/1.4 Georgia,serif; padding:8px 10px; border:1px solid var(--rule); border-radius:8px; background:var(--card); color:var(--fg); width:100%; }
input[type=submit], button.btn { background:var(--acc); color:var(--acc-fg); border:0; cursor:pointer; padding:8px 16px; border-radius:8px; font:600 14px system-ui,sans-serif; align-self:flex-start; }
form.inline { display:inline; margin-left:8px; } form.inline button { background:none; border:0; color:var(--acc); cursor:pointer; font:13px system-ui,sans-serif; padding:0; }
.treewrap { overflow:auto; border:1px solid var(--rule); border-radius:10px; background:var(--card); padding:12px; }
.treewrap svg a text { fill:var(--fg); font:13px system-ui,sans-serif; } .treewrap svg .card { fill:var(--bg); stroke:var(--rule); } .treewrap svg a:hover .card { stroke:var(--acc); }
.treewrap svg .yrs { fill:var(--mut); font-size:11px; } .treewrap svg line { stroke:var(--mut); stroke-width:1.5; }
.pill { display:inline-block; padding:2px 10px; border-radius:999px; font:600 12px system-ui,sans-serif; background:var(--chip); } .pill.yes, .pill.attending { background:var(--live-bg); color:var(--live); } .pill.no, .pill.not_attending { background:var(--draft-bg); color:var(--draft); }
.boardlist li.new .ttl { font-weight:700; } .boardlist .ttl { font:600 17px/1.4 Georgia,serif; color:var(--fg); text-decoration:none; }
.other { margin:0 0 14px; padding:10px 12px; background:var(--bg); border:1px solid var(--rule); border-radius:8px; } .other .who2 { display:flex; flex-wrap:wrap; gap:4px 10px; align-items:baseline; margin-bottom:4px; }
.boardbody p, .other p { margin:0 0 .8em; }
table.t { width:100%; border-collapse:collapse; font:14px system-ui,sans-serif; } table.t th, table.t td { text-align:left; padding:6px 8px; border-bottom:1px solid var(--rule); vertical-align:top; } .scroll { overflow-x:auto; }

/* Calendar */
table.cal { table-layout:fixed; } table.cal td { height:96px; padding:4px 6px; border:1px solid var(--rule); font:12px system-ui,sans-serif; }
table.cal th { text-align:center; } table.cal td.out { background:var(--chip); opacity:.6; } table.cal td.today { outline:2px solid var(--acc); outline-offset:-2px; }
.dn { font-weight:700; color:var(--mut); } .ci { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; border-radius:4px; padding:0 4px; margin-top:2px; background:var(--chip); }
.ci a { color:inherit; text-decoration:none; } .ci.reunion { background:var(--acc); color:var(--acc-fg); } .ci.proposed { border:1px dashed var(--acc); background:transparent; }
.ci.deadline { background:var(--draft-bg); color:var(--draft); } .ci.event { background:var(--live-bg); color:var(--live); }
.kindtag { font-size:11px; text-transform:uppercase; letter-spacing:.04em; display:inline-block; margin:0 4px; }
@media (max-width: 700px) { .cal-grid { display:none; } }
