@font-face{unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-family:cormorant;src:url(../media/cormorant_garamond_latin-s.p.3huc2loe0ie8a.woff2)format("woff2");font-display:swap;font-weight:300 600;font-style:normal}@font-face{font-family:cormorant Fallback;src:local(Times New Roman);ascent-override:96.43%;descent-override:29.95%;line-gap-override:0.0%;size-adjust:95.82%}.cormorant_69672a0f-module__Vd9gQa__className{font-family:cormorant,cormorant Fallback}.cormorant_69672a0f-module__Vd9gQa__variable{--font-cormorant:"cormorant", "cormorant Fallback"}
@font-face{unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-family:inter;src:url(../media/inter_latin-s.p.2bn3s6zvc0dyp.woff2)format("woff2");font-display:swap;font-weight:300 600;font-style:normal}@font-face{font-family:inter Fallback;src:local(Arial);ascent-override:89.79%;descent-override:22.36%;line-gap-override:0.0%;size-adjust:107.89%}.inter_a64bc530-module__mUFaeW__className{font-family:inter,inter Fallback}.inter_a64bc530-module__mUFaeW__variable{--font-inter:"inter", "inter Fallback"}
:root{--serendipity-purple:#4a3a6e;--serendipity-purple-light:#6b5b95;--serendipity-purple-soft:#ebe6f3;--serendipity-cream:#faf7f2;--serendipity-sage:#a8b89f;--serendipity-rose:#d4a5a5;--serendipity-gold:#c9a876;--closed:#b85c7d;--camp:#7ba87b;--teacher-day:#c9a876;--school:#6b5b95;--parent-ed:#3a6b7e;--parent-ed-soft:#e3edf0;--family:#e89b7b;--family-soft:#f9ede6;--text:#3a2f4f;--text-soft:#6b6478;--shadow:0 8px 30px #4a3a6e14;--shadow-hover:0 12px 40px #4a3a6e26;--font-body:var(--font-inter), "Inter", sans-serif;--font-display:var(--font-cormorant), "Cormorant Garamond", serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);background:var(--serendipity-cream);color:var(--text);background-image:radial-gradient(circle at 10% 5%,#a8b89f14 0%,#0000 40%),radial-gradient(circle at 90% 95%,#d4a5a514 0%,#0000 40%);min-height:100vh;line-height:1.6}.container{max-width:1280px;margin:0 auto;padding:60px 40px}.header{text-align:center;margin-bottom:60px;position:relative}.flourish{opacity:.8;margin:0 auto 32px;display:block}.brand-wordmark{width:auto;height:36px;margin:0 auto 16px;display:block}h1{font-family:var(--font-display);color:var(--serendipity-purple);margin-bottom:12px;font-size:56px;font-weight:300;line-height:1.1}h1 .year{font-style:italic;font-weight:400}.subtitle{color:var(--text-soft);max-width:600px;margin:0 auto;font-size:16px}.year-switcher{box-shadow:var(--shadow);background:#fff;border:1px solid #6b5b9514;border-radius:50px;margin-top:32px;padding:6px;display:inline-flex;position:relative}.year-tab{font-family:var(--font-body);color:var(--text-soft);cursor:pointer;z-index:1;letter-spacing:.05em;background:0 0;border:none;border-radius:50px;padding:10px 28px;font-size:13px;font-weight:500;transition:all .3s;position:relative}.year-tab.active{background:var(--serendipity-purple);color:#fff}.year-tab:not(.active):hover{color:var(--serendipity-purple)}.group-switcher{flex-wrap:wrap;justify-content:center;gap:8px;max-width:600px;margin:32px auto 0;display:flex}.group-tab{font-family:var(--font-body);color:var(--text-soft);cursor:pointer;background:#fff;border:1px solid #6b5b9526;border-radius:12px;flex-direction:column;align-items:center;gap:2px;min-width:140px;padding:10px 20px;font-size:13px;font-weight:500;transition:all .3s;display:flex}.group-tab .group-label{text-transform:uppercase;letter-spacing:.1em;color:var(--text-soft);font-size:12px;font-weight:500}.group-tab .group-name{font-family:var(--font-display);color:var(--serendipity-purple);letter-spacing:.02em;font-size:18px;font-weight:500}.group-tab.active{background:var(--serendipity-purple);border-color:var(--serendipity-purple)}.group-tab.active .group-label,.group-tab.active .group-name{color:#fff}.group-tab:not(.active):hover{border-color:var(--serendipity-purple);transform:translateY(-1px)}.countdown{box-shadow:var(--shadow);background:#fff;border:1px solid #6b5b951a;border-radius:20px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;margin-bottom:40px;padding:32px 40px;display:flex}.countdown-label{text-transform:uppercase;letter-spacing:.2em;color:var(--text-soft);margin-bottom:6px;font-size:12px}.countdown-event{font-family:var(--font-display);color:var(--serendipity-purple);font-size:28px;font-weight:500}.countdown-date{color:var(--text-soft);margin-top:4px;font-size:14px}.countdown-number{text-align:center}.countdown-number .num{font-family:var(--font-display);color:var(--serendipity-purple);font-size:64px;font-weight:300;line-height:1}.countdown-number .unit{text-transform:uppercase;letter-spacing:.2em;color:var(--text-soft);margin-top:4px;font-size:12px}.filters{flex-wrap:wrap;justify-content:center;gap:12px;margin-bottom:16px;display:flex}.sunday-note{text-align:center;color:var(--text-soft);justify-content:center;align-items:center;gap:8px;margin-bottom:48px;font-size:12px;font-style:italic;display:flex}.sunday-swatch{background:#b85c7d26;border-radius:3px;width:14px;height:14px;display:inline-block}.filter-btn{font-family:var(--font-body);color:var(--text-soft);cursor:pointer;background:#fff;border:1px solid #6b5b9533;border-radius:50px;align-items:center;gap:8px;padding:10px 20px;font-size:13px;transition:all .3s;display:flex}.filter-btn:hover{border-color:var(--serendipity-purple);color:var(--serendipity-purple)}.filter-btn.active{background:var(--serendipity-purple);color:#fff;border-color:var(--serendipity-purple)}.filter-dot{border-radius:50%;width:8px;height:8px}.dot-school{background:var(--school)}.dot-closed{background:var(--closed)}.dot-camp{background:var(--camp)}.dot-teacher{background:var(--teacher-day)}.dot-parent-ed{background:var(--parent-ed)}.dot-family{background:var(--family)}.calendar-grid{grid-template-columns:repeat(4,1fr);gap:24px;margin-bottom:60px;display:grid}@media (max-width:1100px){.calendar-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width:800px){.calendar-grid{grid-template-columns:repeat(2,1fr)}h1{font-size:40px}.container{padding:40px 20px}}@media (max-width:500px){.calendar-grid{grid-template-columns:1fr}}.month{box-shadow:var(--shadow);background:#fff;border:1px solid #6b5b9514;border-radius:16px;padding:24px;transition:all .3s;position:relative;overflow:hidden}.month:hover{box-shadow:var(--shadow-hover);transform:translateY(-4px)}.month-header{border-bottom:1px solid #6b5b951a;justify-content:space-between;align-items:baseline;margin-bottom:16px;padding-bottom:12px;display:flex}.month-name{font-family:var(--font-display);color:var(--serendipity-purple);font-size:22px;font-weight:500}.month-year{color:var(--text-soft);letter-spacing:.1em;font-size:11px}.mini-cal{grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:16px;font-size:11px;display:grid}.mini-cal-header{text-align:center;color:var(--text-soft);text-transform:uppercase;letter-spacing:.1em;padding:4px 0;font-size:9px;font-weight:500}.mini-cal-day{text-align:center;color:var(--text);border-radius:4px;padding:6px 2px;font-size:10px;transition:all .2s;position:relative}.mini-cal-day.empty{color:#0000}.mini-cal-day.weekend{color:var(--text-soft);opacity:.5}.mini-cal-day.weekend-closed{color:var(--closed);opacity:.7;background:#b85c7d26}.mini-cal-day.event-school{background:var(--school);color:#fff;font-weight:600}.mini-cal-day.event-closed{background:var(--closed);color:#fff;font-weight:600}.mini-cal-day.event-camp{background:var(--camp);color:#fff;font-weight:600}.mini-cal-day.event-teacher{background:var(--teacher-day);color:#fff;font-weight:600}.mini-cal-day.event-parent-ed{background:var(--parent-ed);color:#fff;font-weight:600}.mini-cal-day.event-family{background:var(--family);color:#fff;font-weight:600}.month-events{flex-direction:column;gap:6px;display:flex}.month-event{cursor:pointer;width:100%;font-size:12px;font-family:var(--font-body);text-align:left;color:inherit;background:0 0;border:none;border-radius:8px;align-items:flex-start;gap:8px;padding:8px;transition:all .2s;display:flex}.month-event:hover{background:var(--serendipity-purple-soft)}.month-event.school-summary{cursor:default}.month-event.school-summary:hover{background:0 0}.event-bar{border-radius:2px;flex-shrink:0;align-self:stretch;width:3px}.event-bar.school{background:var(--school)}.event-bar.closed{background:var(--closed)}.event-bar.camp{background:var(--camp)}.event-bar.teacher{background:var(--teacher-day)}.event-bar.parent-ed{background:var(--parent-ed)}.event-bar.family{background:var(--family)}.event-content{flex:1;min-width:0}.event-title{color:var(--text);margin-bottom:2px;font-weight:500;line-height:1.3}.event-date{color:var(--text-soft);font-size:10px}.month.no-events .month-events{text-align:center;color:var(--text-soft);padding:16px 0;font-size:11px;font-style:italic}.modal-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1000;background:#4a3a6e66;justify-content:center;align-items:center;padding:20px;animation:.3s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal{background:#fff;border-radius:20px;width:100%;max-width:500px;padding:40px;animation:.4s slideUp;position:relative;box-shadow:0 20px 60px #4a3a6e4d}.modal-close{color:var(--text-soft);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:28px;transition:all .2s;display:flex;position:absolute;top:20px;right:20px}.modal-close:hover{background:var(--serendipity-purple-soft);color:var(--serendipity-purple)}.modal-tag{text-transform:uppercase;letter-spacing:.1em;color:#fff;border-radius:50px;margin-bottom:16px;padding:4px 12px;font-size:11px;font-weight:500;display:inline-block}.modal-tag.school{background:var(--school)}.modal-tag.closed{background:var(--closed)}.modal-tag.camp{background:var(--camp)}.modal-tag.teacher{background:var(--teacher-day)}.modal-tag.parent-ed{background:var(--parent-ed)}.modal-tag.family{background:var(--family)}.modal-title{font-family:var(--font-display);color:var(--serendipity-purple);margin-bottom:8px;font-size:36px;font-weight:500;line-height:1.1}.modal-date{color:var(--text-soft);margin-bottom:24px;font-size:16px}.modal-info{background:var(--serendipity-cream);color:var(--text);border-radius:12px;margin-bottom:20px;padding:20px;font-size:14px;line-height:1.6}.modal-info strong{color:var(--serendipity-purple);text-transform:uppercase;letter-spacing:.1em;margin-bottom:4px;font-size:11px;display:block}.modal-extra{border-top:1px solid #6b5b9526;margin-top:16px;padding-top:16px}.modal-extra-body{color:var(--text);margin-top:6px;font-size:13px;line-height:1.7}.modal-extra-body a{color:var(--parent-ed);font-weight:500;text-decoration:none}.modal-actions{flex-wrap:wrap;gap:12px;display:flex}.modal-btn{cursor:pointer;border:1px solid var(--serendipity-purple);color:var(--serendipity-purple);background:#fff;border-radius:50px;flex:1;min-width:140px;padding:12px 20px;font-family:inherit;font-size:13px;font-weight:500;transition:all .2s}.modal-btn.primary{background:var(--serendipity-purple);color:#fff}.modal-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #6b5b9533}.footer{text-align:center;color:var(--text-soft);letter-spacing:.05em;border-top:1px solid #6b5b951a;padding-top:40px;font-size:12px}.footer-logo{opacity:.8;width:auto;height:22px;margin:0 auto 8px;display:block}.footer-tagline{letter-spacing:.15em;text-transform:uppercase;color:var(--text-soft);font-size:11px}.print-btn{background:var(--serendipity-purple);color:#fff;cursor:pointer;z-index:100;border:none;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;transition:all .2s;display:flex;position:fixed;bottom:30px;right:30px;box-shadow:0 8px 24px #4a3a6e4d}.print-btn:hover{transform:translateY(-2px);box-shadow:0 12px 32px #4a3a6e66}.print-help{z-index:200;background:#fff;border:1px solid #6b5b9526;border-radius:16px;max-width:340px;margin-left:auto;padding:20px 22px;position:fixed;bottom:100px;left:30px;right:30px;box-shadow:0 12px 40px #4a3a6e38}.print-help-title{font-family:var(--font-display);color:var(--serendipity-purple);margin-bottom:8px;font-size:20px}.print-help-body{color:var(--text);margin-bottom:14px;font-size:13px;line-height:1.6}.print-help-close{background:var(--serendipity-purple);color:#fff;cursor:pointer;border:none;border-radius:50px;padding:8px 20px;font-family:inherit;font-size:12px;font-weight:500}.print-legend{display:none}@media print{*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}@page{size:A4;margin:12mm}body{background:#fff}.container{max-width:100%;padding:0}.filters,.countdown,.print-btn,.print-help,.group-switcher,.year-switcher,.sunday-note{display:none!important}.header{margin-bottom:12px}h1{margin-bottom:4px;font-size:22px!important}.subtitle{margin-bottom:0;font-size:11px}.brand-wordmark{height:18px!important;margin-bottom:8px!important}.flourish{display:none}.footer-logo{height:14px!important;margin-bottom:4px!important}.print-legend{border-top:1px solid #ddd;border-bottom:1px solid #ddd;flex-wrap:wrap;justify-content:center;gap:14px;margin:8px 0 14px;padding:8px;font-size:9px;display:flex!important}.print-legend-item{align-items:center;gap:5px;display:flex}.print-legend-swatch{border-radius:3px;width:14px;height:14px;display:inline-block}.print-legend-swatch.school{background:var(--school)}.print-legend-swatch.closed{background:var(--closed)}.print-legend-swatch.camp{background:var(--camp)}.print-legend-swatch.teacher{background:var(--teacher-day)}.print-legend-swatch.parent-ed{background:var(--parent-ed)}.print-legend-swatch.family{background:var(--family)}.print-legend-swatch.weekend{background:#b85c7d26;border:1px solid #b85c7d4d}.calendar-grid{grid-template-columns:repeat(4,1fr)!important;gap:6px!important;margin-bottom:10px!important}.month{break-inside:avoid;box-shadow:none!important;border:1px solid #ccc!important;border-radius:6px!important;padding:8px!important}.month-header{margin-bottom:6px;padding-bottom:4px}.month-name{font-size:13px!important}.month-year{font-size:8px!important}.mini-cal{margin-bottom:6px;gap:1px!important}.mini-cal-header{padding:2px 0!important;font-size:7px!important}.mini-cal-day{border-radius:2px!important;padding:3px 1px!important;font-size:8px!important}.month-events{gap:3px!important}.month-event{cursor:default!important;padding:3px 4px!important;font-size:9px!important}.event-title{font-size:9px!important;line-height:1.2!important}.event-date{font-size:7px!important}.event-bar{width:2px!important}.footer{padding-top:8px;font-size:8px}h1,.header{page-break-after:avoid}}
