:root{--bg:#f6f7f9;--surface:#fff;--surface-2:#f0f2f5;--border:#e2e5ea;--text:#1c2024;--text-muted:#61697a;--accent:#4f46e5;--accent-soft:#eef0fe;--accent-text:#4338ca;--danger:#d92d20;--danger-soft:#fee4e2;--new:#067647;--new-soft:#d3f8df;--event:#0a6b38;--event-soft:#e2f4e9;--event-text:#075a2e;--update:#d97706;--radius:12px;--shadow:0 1px 2px #1018280f, 0 1px 3px #10182814;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-text-size-adjust:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#14161a;--surface:#1c1f25;--surface-2:#23272f;--border:#2f343d;--text:#e7e9ee;--text-muted:#98a1b3;--accent:#8b8cf9;--accent-soft:#262a52;--accent-text:#b9baff;--danger:#f97066;--danger-soft:#43201d;--new:#6ce9a6;--new-soft:#10361f;--event:#12a05a;--event-soft:#0e3a24;--event-text:#7fe3aa;--update:#f59e0b;--shadow:0 1px 2px #0000004d}}*{box-sizing:border-box}html,body{background:var(--bg);min-width:320px;color:var(--text);margin:0}body{-webkit-font-smoothing:antialiased}a{color:var(--accent-text)}button{font:inherit;color:inherit}img{max-width:100%;height:auto}.page{max-width:720px;min-height:100dvh;margin:0 auto}.page-body{padding:.75rem .75rem 3rem}.app-header{z-index:10;background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:.5rem;padding:.7rem .75rem;display:flex;position:sticky;top:0}.app-header h1{letter-spacing:-.01em;margin:0;font-size:1.05rem;font-weight:650}.header-title{text-align:center;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.95rem;font-weight:600;overflow:hidden}.view-toggle{background:var(--surface-2);border-radius:999px;padding:2px;display:flex}.view-toggle button{color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:.35rem .85rem;font-size:.82rem;font-weight:550}.view-toggle button.is-active{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.icon-button{border:1px solid var(--border);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:999px;padding:.35rem .8rem;font-size:.82rem;font-weight:550}.button{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:10px;padding:.6rem 1rem;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-block}.month-nav{align-items:center;gap:.25rem;margin:.35rem 0 .75rem;display:flex}.month-nav h2{text-align:center;flex:1;margin:0;font-size:1rem;font-weight:650}.month-nav button{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:10px;width:2.25rem;height:2.25rem;font-size:1.15rem;line-height:1}.month-nav .today-button{width:auto;padding:0 .7rem;font-size:.8rem;font-weight:550}.calendar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.calendar-head,.calendar-grid{grid-template-columns:repeat(7,1fr);display:grid}.calendar-head{background:var(--surface-2);border-bottom:1px solid var(--border)}.calendar-head span{text-align:center;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);padding:.4rem 0;font-size:.68rem;font-weight:650}.cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);flex-direction:column;align-items:center;gap:.25rem;min-height:4.75rem;padding:.3rem .2rem .35rem;display:flex;position:relative}.cell:nth-child(7n){border-right:0}.cell.is-outside{background:var(--surface-2)}.cell.is-outside .cell-day-num{opacity:.4}.cell-hit{z-index:0;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0;position:absolute;inset:0}.cell-hit:focus-visible{outline:2px solid var(--accent);outline-offset:-3px;border-radius:6px}.cell.is-selected{background:var(--accent-soft)}.cell-day{z-index:1;pointer-events:none;flex:none;position:relative}.cell-day-num{font-variant-numeric:tabular-nums;border-radius:999px;place-items:center;width:1.9rem;height:1.9rem;font-size:.9rem;font-weight:600;line-height:1;display:grid}.cell.is-today .cell-day-num{background:var(--accent);color:#fff;font-weight:700}.cell.has-upcoming .cell-day-num{background:var(--event);color:#fff;font-weight:750;box-shadow:0 1px 2px #0003}.cell.is-today.has-upcoming .cell-day-num{box-shadow:0 0 0 2px var(--surface), 0 0 0 4px var(--accent)}.cell.has-cancelled:not(.has-upcoming) .cell-day-num{color:var(--danger);font-weight:700;text-decoration:line-through;text-decoration-thickness:2px}.cell-day-cancel{background:var(--danger);border:2px solid var(--surface);border-radius:999px;place-items:center;width:.95rem;height:.95rem;display:grid;position:absolute;top:-1px;right:-5px}.cell-day-cancel:after{content:"";background:#fff;border-radius:1px;width:.45rem;height:2px}.cell-chips{z-index:1;pointer-events:none;flex-direction:column;align-items:stretch;gap:3px;width:100%;padding:0 1px;display:flex;position:relative}.chip{pointer-events:auto;background:var(--event);color:#fff;border-radius:999px;align-items:center;gap:4px;height:8px;font-size:.68rem;line-height:1.3;text-decoration:none;display:flex;position:relative}.chip-name{text-overflow:ellipsis;white-space:nowrap;display:none;overflow:hidden}.chip.is-cancelled{background:var(--danger-soft);border:1px solid var(--danger);color:var(--danger)}.chip.is-done{background:var(--surface-2);border:1px solid var(--border);color:var(--text-muted)}.chip-new{background:var(--update);width:8px;height:8px;box-shadow:0 0 0 1.5px var(--surface);border-radius:999px;flex:none;position:absolute;top:50%;right:-1px;transform:translateY(-50%)}.chip-more{color:var(--text-muted);text-align:center;font-size:.62rem;font-weight:600;line-height:1.2}@media (width>=560px){.cell{align-items:stretch;min-height:5.75rem;padding:.35rem .3rem .4rem}.cell-day{align-self:flex-start}.chip{height:auto;padding:2px 7px;font-weight:600}.chip-name{display:block}.chip.is-cancelled .chip-name{text-decoration:line-through;text-decoration-thickness:1.5px}.chip-new{width:7px;height:7px;box-shadow:none;margin-left:auto;position:static;transform:none}}.day-panel{margin-top:1rem}.day-panel h3,.list-heading{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin:0 0 .5rem;font-size:.78rem;font-weight:650}.rows{flex-direction:column;gap:.5rem;display:flex}.event-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:inherit;box-shadow:var(--shadow);align-items:center;gap:.75rem;padding:.7rem .8rem;text-decoration:none;display:flex}.event-row:active{background:var(--surface-2)}.row-date{flex-direction:column;flex:none;align-items:center;width:2.6rem;line-height:1.1;display:flex}.row-date strong{font-size:1.15rem;font-weight:700}.row-date small{text-transform:uppercase;color:var(--text-muted);letter-spacing:.03em;font-size:.65rem}.row-date-empty{color:var(--text-muted);font-size:.65rem}.row-body{flex-direction:column;flex:1;min-width:0;display:flex}.row-title{text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:600;overflow:hidden}.row-meta{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}.row-badges{flex-direction:column;flex:none;align-items:flex-end;gap:.25rem;display:flex}.event-row.is-cancelled .row-title{color:var(--text-muted);text-decoration:line-through}.event-row.is-cancelled{border-color:color-mix(in srgb, var(--danger) 35%, var(--border));background:color-mix(in srgb, var(--danger-soft) 40%, var(--surface))}.list-section{margin-bottom:1.5rem}.badge{letter-spacing:.02em;text-transform:uppercase;white-space:nowrap;border-radius:999px;padding:.1rem .45rem;font-size:.66rem;font-weight:700;display:inline-block}.badge-cancelled{background:var(--danger-soft);color:var(--danger)}.badge-completed{background:var(--surface-2);color:var(--text-muted)}.badge-updated,.badge-new{background:var(--new-soft);color:var(--new)}.badge-pinned{background:var(--accent-soft);color:var(--accent-text)}.detail-header{gap:.4rem}.flyer{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);width:100%;margin-bottom:1rem;display:block}.section-heading{letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);align-items:center;gap:.4rem;margin:0 0 .6rem;font-size:.78rem;font-weight:700;display:flex}.section-heading .count{background:var(--surface-2);letter-spacing:0;border-radius:999px;padding:0 .4rem;font-size:.7rem}.updates{margin-bottom:1.25rem}.update-list{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.update{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow);padding:.7rem .85rem}.update.is-pinned{background:color-mix(in srgb, var(--accent-soft) 45%, var(--surface))}.update-meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.35rem;margin-bottom:.35rem;font-size:.75rem;display:flex}.update-message{overflow-wrap:anywhere;font-size:.92rem}.update-message p{margin:0 0 .5rem}.update-message p:last-child{margin-bottom:0}.update-files{flex-wrap:wrap;gap:.5rem;margin-top:.6rem;display:flex}.update-files img{border:1px solid var(--border);border-radius:8px;max-height:8rem}.file-link{font-size:.85rem}.details{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:.9rem}.details.is-cancelled{border-color:color-mix(in srgb, var(--danger) 40%, var(--border))}.details-title{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.details-title h1{letter-spacing:-.015em;margin:0;font-size:1.3rem;line-height:1.25}.details.is-cancelled .details-title h1{color:var(--text-muted);text-decoration:line-through;text-decoration-thickness:2px}.cancelled-banner{background:var(--danger-soft);color:var(--danger);border-radius:8px;margin:.7rem 0 0;padding:.5rem .7rem;font-size:.88rem;font-weight:600}.fields{flex-direction:column;gap:.85rem;margin:.9rem 0 0;display:flex}.field dt{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.15rem;font-size:.72rem;font-weight:700}.field dd{overflow-wrap:anywhere;margin:0;font-size:.95rem}.field dd p{margin:0 0 .5rem}.field dd p:last-child{margin-bottom:0}.map-button{padding:.5rem .9rem;font-size:.85rem}.loading,.empty,.hint{color:var(--text-muted);margin:0;padding:.5rem 0;font-size:.9rem}.error-box{background:var(--surface);border:1px solid color-mix(in srgb, var(--danger) 35%, var(--border));border-radius:var(--radius);padding:1rem}.error-box p{margin:0 0 .75rem;font-size:.92rem}.rsvp{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-top:1rem;padding:.9rem .9rem 1rem}.rsvp-heading{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin:0 0 .5rem;font-size:.78rem;font-weight:650}.rsvp-total{margin:0 0 .75rem;font-size:.95rem}.rsvp-total strong{color:var(--event-text);font-weight:700}.rsvp-list{flex-direction:column;gap:.5rem;margin:0 0 .9rem;padding:0;list-style:none;display:flex}.rsvp-item{background:var(--surface-2);border-radius:10px;flex-wrap:wrap;align-items:baseline;gap:.3rem;padding:.55rem .7rem;font-size:.88rem;display:flex}.rsvp-name{font-weight:650}.rsvp-name:after{content:"—";color:var(--text-muted);margin-left:.3rem;font-weight:400}.rsvp-detail{color:var(--text-muted)}.rsvp-confirm{background:var(--event-soft);color:var(--event-text);border:1px solid var(--event);border-radius:10px;margin:0 0 .75rem;padding:.65rem .75rem;font-size:.9rem;font-weight:600}.button-primary{background:var(--event)}.button-quiet{color:var(--text-muted);border:1px solid var(--border);background:0 0}.rsvp-open{text-align:center;width:100%;padding:.85rem 1rem;font-size:.95rem;display:block}.rsvp-form{flex-direction:column;gap:.9rem;display:flex}.rsvp-row{flex-direction:column;gap:.35rem;display:flex}.rsvp-label{font-size:.85rem;font-weight:600}.rsvp-optional{color:var(--text-muted);font-size:.78rem;font-weight:450}.rsvp-input{width:100%;min-height:2.9rem;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.65rem .7rem;font-size:1rem}.rsvp-input:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:#0000}.rsvp-textarea{resize:vertical;min-height:4.5rem;line-height:1.4}.rsvp-hint{color:var(--text-muted);margin:0;font-size:.76rem}.stepper{align-items:center;gap:.5rem;display:flex}.stepper-button{border:1px solid var(--border);background:var(--surface-2);cursor:pointer;border-radius:999px;flex:none;place-items:center;width:3rem;height:3rem;font-size:1.4rem;font-weight:600;line-height:1;display:grid}.stepper-button:disabled{opacity:.4;cursor:default}.stepper-value{text-align:center;width:4rem;min-height:3rem;font:inherit;font-variant-numeric:tabular-nums;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.6rem .3rem;font-size:1.1rem;font-weight:650}.rsvp-ages{border:1px solid var(--border);border-radius:10px;margin:0;padding:.7rem}.rsvp-ages legend{padding:0 .35rem}.rsvp-ages-grid{grid-template-columns:repeat(auto-fill,minmax(4.5rem,1fr));gap:.5rem;display:grid}.age-box{color:var(--text-muted);flex-direction:column;gap:.25rem;font-size:.75rem;display:flex}.age-box .rsvp-input{text-align:center;padding:.6rem .3rem;font-weight:650}.rsvp-error{border:1px solid var(--danger);background:var(--danger-soft);color:var(--danger);border-radius:10px;margin:0;padding:.6rem .75rem;font-size:.88rem;font-weight:550}.rsvp-actions{gap:.5rem;display:flex}.rsvp-actions .button{text-align:center;flex:1;padding:.85rem 1rem;font-size:.95rem}.rsvp-actions .button:disabled{opacity:.6;cursor:default}.row-coming{background:var(--event-soft);color:var(--event-text);white-space:nowrap;border-radius:999px;margin-left:.4rem;padding:.05rem .4rem;font-size:.72rem;font-weight:650;display:inline-block}.rsvp-empty{color:var(--text-muted);margin:0 0 .9rem;font-size:.95rem}.rsvp-field-error{color:var(--danger);margin:0;font-size:.82rem;font-weight:550}.rsvp-input.has-error{border-color:var(--danger)}
