:root{--bg:#f5f5f1;--ink:#14130f;--ink-2:#4a4944;--ink-3:#80807a;--line:#e6e4dc;--paper:#ffffff;--d-mo:#ef4f48;--d-di:#f59332;--d-mi:#efc23c;--d-do:#54bd6c;--d-fr:#3f93d8;--t-mo:#fde9e6;--t-di:#fdedda;--t-mi:#fbf2cd;--t-do:#def0e1;--t-fr:#def0fa;--r:16px;--r-sm:12px;--font-display:"Space Grotesk",system-ui,sans-serif;--font-body:"Inter",system-ui,sans-serif;--shadow-card:0 1px 0 #fff inset,0 1px 2px rgba(20,15,5,0.04),0 6px 18px -10px rgba(20,15,5,0.12)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--font-body)}body{min-height:100vh;-webkit-font-smoothing:antialiased}.app{max-width:1480px;margin:0 auto;padding:28px 32px 80px}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:24px}.brand{display:flex;flex-direction:column;gap:6px}.brand-eyebrow{font-family:var(--font-body);font-weight:600;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}.brand h1{font-family:var(--font-display);font-weight:600;font-size:40px;letter-spacing:-.025em;line-height:1;margin:0}.brand h1 .accent{color:var(--d-mi)}.status{display:flex;align-items:center;gap:18px}.status .now{text-align:right}.status .now-time{font-family:var(--font-display);font-weight:500;font-size:38px;letter-spacing:-.03em;line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.status .now-date{margin-top:4px;font-size:12px;color:var(--ink-2);font-weight:600;text-transform:capitalize;letter-spacing:-.005em}.fc-row{display:flex;gap:6px}.fc-pill{background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:6px 12px 6px 6px;display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.fc-pill .fc-icon{width:26px;height:26px;border-radius:999px;background:#f6f4ec;display:grid;place-items:center;font-size:16px}.fc-pill .fc-day{font-size:10.5px;color:var(--ink-3);font-weight:700;text-transform:uppercase;letter-spacing:.08em}.fc-pill .fc-temp{color:var(--ink)}.week{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:14px;gap:14px}.day{background:var(--day-tint);border:1px solid transparent;border-radius:var(--r);display:flex;flex-direction:column;min-height:600px;position:relative;transition:transform .2s ease}.day-today{box-shadow:0 0 0 2px var(--day-color),0 14px 32px -16px rgba(20,15,5,.2)}.day-head{padding:16px 18px 12px;display:flex;align-items:baseline;justify-content:space-between;gap:8px}.day-name{font-family:var(--font-display);font-weight:600;font-size:20px;letter-spacing:-.02em;line-height:1;color:var(--day-color)}.day-meta{font-size:11px;font-weight:700;color:var(--ink-2);letter-spacing:.03em;text-transform:uppercase;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.day-meta .today-dot{display:inline-block;width:6px;height:6px;border-radius:999px;background:var(--day-color);margin-right:6px;transform:translateY(-1px)}.day-body{flex:1 1;padding:6px 12px 14px;display:flex;flex-direction:column;gap:10px}.event{background:var(--paper);border-radius:var(--r-sm);padding:12px;box-shadow:var(--shadow-card);display:grid;grid-template-columns:44px 1fr;grid-gap:10px;gap:10px;align-items:start;position:relative;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.event:hover{transform:translateY(-2px);box-shadow:inset 0 1px 0 #fff,0 1px 2px rgba(20,15,5,.04),0 14px 26px -14px rgba(20,15,5,.2)}.event-past{opacity:.45}.event-now{box-shadow:0 0 0 2px var(--ink),0 14px 32px -14px rgba(20,15,5,.3);transform:translateY(-1px);z-index:2}.event-icon{width:44px;height:44px;border-radius:12px;background:var(--ev-color,#f6f4ec);display:grid;place-items:center;font-size:26px;line-height:1;overflow:hidden}.event-icon img{width:76%;height:76%;object-fit:contain}.event-body{display:flex;flex-direction:column;gap:2px;min-width:0}.event-time{font-family:var(--font-display);font-weight:500;font-size:11px;color:var(--ink-3);letter-spacing:.04em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-transform:uppercase}.event-title{font-family:var(--font-display);font-weight:600;font-size:15px;line-height:1.2;letter-spacing:-.015em;color:var(--ink);word-break:normal;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;margin-top:1px}.event-sub{margin-top:4px;color:var(--ink-2);font-size:11px;font-weight:500;line-height:1.35}.event-tag{display:inline-block;margin-top:6px;padding:2px 8px;border-radius:999px;background:var(--tag-color,#888);color:#fff;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.participants{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:8px}.participants-stacked{display:flex;flex-wrap:nowrap;gap:0}.av-mini{width:24px;height:24px;border-radius:999px;display:grid;place-items:center;font-size:14px;line-height:1;background:var(--kid-color,#ccc);color:#fff;border:2px solid var(--paper);position:relative;overflow:hidden;transition:transform .15s ease}.av-mini img{width:72%;height:72%;object-fit:contain}.participants-stacked .av-mini{margin-left:-7px}.participants-stacked .av-mini:first-child{margin-left:0}.av-more{background:var(--ink);color:#fff;font-size:10px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.now-badge{position:absolute;top:-14px;right:-8px;z-index:3;pointer-events:none;font-size:28px;line-height:1;filter:drop-shadow(0 4px 6px rgba(0,0,0,.18))}.now-clock{display:inline-block;animation:clockShake .55s ease-in-out infinite;transform-origin:50% 90%}@keyframes clockShake{0%,to{transform:rotate(-14deg)}50%{transform:rotate(14deg)}}.next-badge{position:absolute;top:-10px;right:-4px;font-size:18px;opacity:.8;pointer-events:none;z-index:3;filter:drop-shadow(0 2px 4px rgba(0,0,0,.12))}.event-birthday{position:relative;z-index:5}.confetti{position:absolute;inset:-50px;pointer-events:none;overflow:visible;z-index:1}.cf-bit{position:absolute;left:50%;top:50%;width:8px;height:12px;border-radius:2px;transform:translate(-50%,-50%) scale(0);animation:cfBurst 2s ease-out infinite;opacity:0}.cf-bit:nth-child(3n){width:7px;height:7px;border-radius:999px}.cf-bit:nth-child(4n){width:10px;height:4px;border-radius:1px}.cf-bit:nth-child(2n){animation-delay:.15s}.cf-bit:nth-child(3n){animation-delay:.35s}.cf-bit:nth-child(5n){animation-delay:.55s}.cf-bit:nth-child(7n){animation-delay:.75s}@keyframes cfBurst{0%{transform:translate(-50%,-50%) scale(0) rotate(0deg);opacity:0}8%{transform:translate(-50%,-50%) scale(1) rotate(0deg);opacity:1}to{transform:translate(calc(-50% + var(--dx, 0px)),calc(-50% + var(--dy, 0px))) scale(.7) rotate(var(--rot,1turn));opacity:0}}.event-birthday>.event-body,.event-birthday>.event-icon,.event-birthday>.now-badge{position:relative;z-index:2}.freeday{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 16px;text-align:center}.freeday-balloon{font-size:56px;display:inline-block;animation:balloonFloat 3.4s ease-in-out infinite;filter:drop-shadow(0 6px 10px rgba(20,15,5,.12))}@keyframes balloonFloat{0%,to{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-10px) rotate(3deg)}}.holiday{background:var(--paper);border-radius:var(--r-sm);padding:18px 14px;box-shadow:var(--shadow-card);display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.holiday-icon{font-size:36px;line-height:1}.holiday-name{font-family:var(--font-display);font-weight:600;font-size:15px;letter-spacing:-.015em;color:var(--ink)}.holiday-closed{font-size:11px;color:var(--ink-3);font-weight:600;letter-spacing:.04em;text-transform:uppercase}.freetime{background:linear-gradient(135deg,#fff8e7,var(--paper));border:1.5px dashed #e0c98a;border-radius:var(--r-sm);padding:12px;display:flex;flex-direction:column;gap:8px}.freetime-label{font-family:var(--font-display);font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#b8870b;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.freetime-icons{display:flex;gap:8px;justify-content:center;align-items:center}.freetime-icons img{width:32px;height:32px;object-fit:contain;opacity:.6}.freetime-icons img.freetime-pulse{opacity:1;animation:freetimePulse 2s ease-in-out infinite}@keyframes freetimePulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.popover-mask{position:fixed;inset:0;background:rgba(20,15,5,.45);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:20px;z-index:100;animation:fadein .15s ease}@keyframes fadein{0%{opacity:0}to{opacity:1}}.popover{background:var(--paper);border-radius:20px;width:min(540px,100%);padding:28px;box-shadow:0 30px 80px -20px rgba(20,15,5,.35);animation:pop .2s ease}@keyframes pop{0%{transform:translateY(8px) scale(.98);opacity:0}to{transform:none;opacity:1}}.popover-head{display:flex;align-items:flex-start;gap:16px;margin-bottom:6px}.popover-icon{width:72px;height:72px;border-radius:16px;background:var(--ev-color,#f6f4ec);display:grid;place-items:center;font-size:42px;flex-shrink:0;overflow:hidden}.popover-icon img{width:72%;height:72%;object-fit:contain}.popover h2{font-family:var(--font-display);font-weight:600;margin:0;font-size:28px;letter-spacing:-.025em}.popover .sub{margin-top:4px;color:var(--ink-2);font-weight:500;font-size:13px}.popover .close{margin-left:auto;width:34px;height:34px;border-radius:999px;border:1px solid var(--line);background:var(--paper);font-size:17px;color:var(--ink-2);cursor:pointer}.popover h3{font-family:var(--font-display);font-weight:600;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:18px 0 10px}.who-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:8px;gap:8px}.who-tile{display:flex;align-items:center;gap:9px;padding:6px 12px 6px 6px;border-radius:999px;background:#f6f4ec;font-weight:600;font-size:13px}.who-tile .av{width:30px;height:30px;border-radius:999px;display:grid;place-items:center;font-size:16px;background:var(--kid-color,#ccc);color:#fff;overflow:hidden;flex-shrink:0}.who-tile .av img{width:72%;height:72%;object-fit:contain}.who-tile.absent{opacity:.4}.who-id{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:.02em}