.calendar-page{--brand: #4b589b;--brand-dark: #323b67;--brand-light: #e9ebf5;--brand-mid: #cdd0e9;--ease-out: cubic-bezier(0.23, 1, 0.32, 1);--ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);font-family:-apple-system, "Segoe UI", system-ui, sans-serif;display:flex;flex-direction:column;min-height:calc(100vh - 160px)}.calendar-page .cal-card{background:#fff;border:1px solid #e0e4ee;border-radius:14px;overflow:hidden;box-shadow:0 2px 12px rgba(0,0,0,0.05);width:100%;max-width:1800px;margin:24px auto 0;display:flex;flex-direction:column;flex:1}.calendar-page .cal-header{background:var(--brand);padding:14px 24px;display:flex;align-items:center;justify-content:space-between;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.calendar-page .cal-month-nav{display:flex;align-items:center;gap:12px;flex:1}.calendar-page .cal-month-label{color:#fff;font-size:15px;font-weight:600;min-width:130px;text-align:center}.calendar-page .cal-header-left{color:#fff;font-size:18px;font-weight:600;opacity:0.9;letter-spacing:-0.2px;flex:1;text-align:center}.calendar-page .cal-header-right{flex:1;display:flex;justify-content:flex-end;align-items:center;gap:8px}.calendar-page .today-btn{padding:6px 14px;border-radius:7px;border:1px solid rgba(255,255,255,0.35);background:rgba(255,255,255,0.12);color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:background 0.15s}.calendar-page .today-btn:hover{background:rgba(255,255,255,0.25)}.calendar-page .today-btn:disabled{opacity:0.4;cursor:default}.calendar-page .today-btn:disabled:hover{background:rgba(255,255,255,0.12)}.calendar-page .nav-btn{width:32px;height:32px;border-radius:7px;border:none;cursor:pointer;background:rgba(255,255,255,0.15);color:#fff;font-size:18px;display:flex;align-items:center;justify-content:center;transition:background 0.15s,transform 0.1s var(--ease-out)}.calendar-page .nav-btn:hover{background:rgba(255,255,255,0.28)}.calendar-page .nav-btn:active{transform:scale(0.94)}.calendar-page .cal-toolbar{padding:10px 24px;border-bottom:1px solid #e8ecf4;display:flex;align-items:center;gap:16px;flex-wrap:wrap;background:#fafbfd}.calendar-page .filter-group{display:flex;align-items:center;gap:6px}.calendar-page .filter-divider{width:1px;height:28px;background:#e0e4ee;flex-shrink:0}.calendar-page .pill-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.calendar-page .pd-clock{background:#7c6fcd}.calendar-page .pd-nonclock{background:#f97316}.calendar-page .filter-group-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.6px;color:#aaa;margin-right:2px;white-space:nowrap}.calendar-page .filter-pill{display:flex;align-items:center;gap:6px;padding:5px 13px;border-radius:20px;font-size:13px;font-weight:500;cursor:pointer;border:1px solid #dde2ef;background:#fff;color:#666;transition:all 0.15s var(--ease-out);-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.calendar-page .filter-pill:hover{border-color:var(--brand-mid);color:var(--brand);background:var(--brand-light)}.calendar-page .filter-pill:active{transform:scale(0.97)}.calendar-page .filter-pill.active{background:var(--brand);color:#fff;border-color:var(--brand)}.calendar-page .filter-pill.active-clock{background:#7c6fcd;color:#fff;border-color:#7c6fcd}.calendar-page .filter-pill.active-nonclock{background:#f97316;color:#fff;border-color:#f97316}.calendar-page .clear-filters-btn{margin-left:auto;font-size:12px;font-weight:500;font-family:inherit;padding:3px 10px;border-radius:6px;border:1px solid #dde2ef;background:#fff;color:#666;cursor:pointer;transition:all 0.15s var(--ease-out)}.calendar-page .clear-filters-btn:not(:disabled):hover{border-color:var(--brand-mid);color:var(--brand);background:var(--brand-light)}.calendar-page .clear-filters-btn:disabled{opacity:0.4;cursor:default}.calendar-page .cal-grid-wrap{position:relative;display:flex;flex-direction:column;flex:1}.calendar-page .skeleton-overlay{position:absolute;inset:0;background:#fff;z-index:10;display:grid;grid-template-columns:repeat(7, 1fr);gap:8px;padding:16px}.calendar-page .skeleton-cell{display:flex;flex-direction:column;gap:6px}.calendar-page .skeleton-chip{height:18px;border-radius:4px;background:linear-gradient(90deg, #edf0f8 25%, #f5f7fc 50%, #edf0f8 75%);background-size:200% 100%;animation:skeleton-shimmer 1.2s infinite}.calendar-page .cal-table{border:1px solid #dde2ef;border-collapse:collapse;width:100%;table-layout:fixed;flex:1}.calendar-page .cal-dow{text-align:center;font-size:12px;font-weight:600;color:#777;padding:10px 0;letter-spacing:0.5px;text-transform:uppercase;background:#fafbfd;border-bottom:2px solid #dde2ef;border-right:1px solid #dde2ef;width:14.2857%}.calendar-page .cal-dow:last-child{border-right:none}.calendar-page .cal-day{min-height:110px;padding:8px 8px;border-right:1px solid #dde2ef;border-bottom:1px solid #dde2ef;transition:background 0.1s;background:#fff;vertical-align:top}.calendar-page .cal-day:last-child{border-right:none}.calendar-page .cal-day.other-month{background:#fff}.calendar-page .cal-day.other-month .day-num{color:#c5cad6}.calendar-page .cal-day.weekend{background:#f8f9fc}.calendar-page .cal-day.weekend.today{background:#f0f4ff}.calendar-page .cal-day.weekend.other-month{background:#f5f6fa}.calendar-page .cal-day.today{background:#f0f4ff}.calendar-page .cal-day:not(.other-month):hover{background:#f5f7fc}.calendar-page .cal-table tbody tr:last-child .cal-day{border-bottom:none}.calendar-page .day-num{font-size:13px;color:#555;font-weight:500;margin-bottom:5px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%}.calendar-page .cal-day.today .day-num{background:var(--brand);color:#fff;font-weight:700;width:24px;height:24px;font-size:13px}.calendar-page .day-empty{margin-top:28px;text-align:center;font-size:10px;color:#d0d5e8;opacity:0;transition:opacity 0.15s}.calendar-page .cal-day:not(.other-month):hover .day-empty{opacity:1}.calendar-page .event-chip{display:flex;flex-direction:column;gap:1px;font-size:11px;border-radius:4px;padding:3px 7px;margin-bottom:3px;overflow:hidden;max-width:100%;background:#f0f1f4;color:#444;text-decoration:none}.calendar-page a.event-chip{cursor:pointer}.calendar-page .chip-clock{background:#ddd6fe;color:#3730a3}.calendar-page .chip-nonclock{background:#fff4ed;color:#c2410c}.calendar-page .chip-title{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-page .chip-async-icon{width:10px;height:10px;flex-shrink:0}.calendar-page .chip-conference-label{display:block;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.3px;opacity:0.7;margin-bottom:1px}.calendar-page .chip-conference-day{display:block;font-size:9.5px;opacity:0.75;font-weight:600}.calendar-page .chip-range{display:block;font-size:10px;opacity:0.65;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-page .hover-card{position:fixed;z-index:200;width:-moz-fit-content;width:fit-content;border-radius:10px;background:#fff;box-shadow:0 8px 28px rgba(0,0,0,0.14);overflow:hidden;opacity:0;pointer-events:none;transition:opacity 0.15s}.calendar-page .hover-card.visible{opacity:1;pointer-events:auto}.calendar-page .hover-card.hc-clock{background:#ece7fe;box-shadow:0 8px 28px rgba(0,0,0,0.14),0 0 0 0.5px #d3c6fb}.calendar-page .hover-card.hc-nonclock{background:#ffe9d5;box-shadow:0 8px 28px rgba(0,0,0,0.14),0 0 0 0.5px #ffd3ac}.calendar-page .hover-card-row{display:flex;align-items:stretch}.calendar-page .hover-card-media{position:relative;flex-shrink:0;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#fff;border-right:1px solid rgba(0,0,0,0.06)}.calendar-page .hover-card-image{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.calendar-page .hover-card-image[hidden]{display:none}.calendar-page .hover-card-placeholder{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border:2px solid #c5cad6;border-radius:10px;color:#c5cad6}.calendar-page .hover-card-placeholder[hidden]{display:none}.calendar-page .hover-card-placeholder .hover-card-icon{width:22px;height:22px}.calendar-page .hover-card.hc-clock .hover-card-placeholder{border-color:#b39ddb;color:#b39ddb}.calendar-page .hover-card.hc-nonclock .hover-card-placeholder{border-color:#ffb366;color:#ffb366}.calendar-page .hover-card-body{flex-shrink:0;width:250px;padding:14px}.calendar-page .hover-card-title{font-size:14px;font-weight:700;color:#111827;line-height:1.45;margin-bottom:8px}.calendar-page .hover-card-icon{width:13px;height:13px;flex-shrink:0}.calendar-page .hover-card-badge{display:flex;align-items:center;gap:5px;font-size:11px;color:#6b7280;margin-bottom:7px}.calendar-page .hover-card-badge[hidden]{display:none}.calendar-page .hover-card-badge .hover-card-icon{color:#6b7280}.calendar-page .hover-card.hc-clock .hover-card-badge{color:#3730a3}.calendar-page .hover-card.hc-nonclock .hover-card-badge{color:#c2410c}.calendar-page .hover-card-divider{height:1px;background:rgba(0,0,0,0.08);margin-bottom:7px}.calendar-page .hover-card-date{display:flex;align-items:center;gap:5px;font-size:12px;color:#555}.calendar-page .hover-card-date[hidden]{display:none}.calendar-page .hover-card-time{display:flex;align-items:center;gap:5px;font-size:12px;color:#555;white-space:nowrap}.calendar-page .hover-card-time[hidden]{display:none}.calendar-page .hover-card-desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:11.5px;color:#6b7280;line-height:1.5;margin-top:6px}.calendar-page .hover-card-desc[hidden]{display:none}.calendar-page .hover-card-more{margin-left:4px;font-weight:600;color:inherit;white-space:nowrap}.calendar-page .more-link{font-size:11px;font-weight:500;color:var(--brand);cursor:pointer;margin-top:2px}.calendar-page .more-link:hover{text-decoration:underline}.calendar-page .modal-overlay{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;padding:24px;background:rgba(0,0,0,0.45)}.calendar-page .modal-overlay.open{display:flex}.calendar-page .modal-overlay.open .modal-box{transform:none;opacity:1}.calendar-page .modal-box{position:relative;display:flex;flex-direction:column;width:520px;max-width:95vw;height:600px;max-height:90vh;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,0.18);opacity:0;transform:translateY(12px) scale(0.97);transition:transform 0.25s ease, opacity 0.2s ease}.calendar-page .modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid #edf0f8}.calendar-page .day-modal-heading{font-size:15px;font-weight:700;color:#1a1a2e}.calendar-page .popup-day-nav{display:flex;flex-shrink:0;align-items:center;gap:6px}.calendar-page .popup-nav-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid #dde2ef;border-radius:6px;background:#fff;color:#555;font-size:16px;cursor:pointer;transition:background 0.12s, color 0.12s}.calendar-page .popup-nav-btn:hover{background:var(--brand-light);color:var(--brand)}.calendar-page .popup-nav-divider{width:1px;height:20px;margin:0 4px;background:#edf0f8}.calendar-page .btn-close-x{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:6px;background:none;color:#bbb;font-size:16px;cursor:pointer;transition:background 0.1s, color 0.1s}.calendar-page .btn-close-x:hover{background:#f0f0f0;color:#555}.calendar-page .modal-body{flex:1;padding:16px 20px 20px;overflow-y:auto}.calendar-page .ev-block{display:block;margin-bottom:10px;border:1px solid #edf0f8;border-radius:10px;overflow:hidden;color:inherit;text-decoration:none}.calendar-page .ev-block:last-child{margin-bottom:0}.calendar-page a.ev-block{cursor:pointer;transition:border-color 0.12s, box-shadow 0.12s}.calendar-page a.ev-block:hover{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-light)}.calendar-page a.ev-block:hover .ev-header-right{color:var(--brand)}.calendar-page .ev-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 14px;background:#fff}.calendar-page .ev-header-left{flex:1;min-width:0}.calendar-page .ev-header-right{display:flex;flex-shrink:0;align-self:center;color:#bbb}.calendar-page .ev-arrow{width:18px;height:18px}.calendar-page .ev-title{margin-bottom:3px;font-size:13px;font-weight:700;color:#1a1a2e}.calendar-page .ev-meta{font-size:11px;color:#888}.calendar-page .day-popup-empty{padding:40px 24px;text-align:center;font-size:13px;color:#9ca3af}.calendar-page .async-wrap{background:#e8edf6;border-top:3px solid var(--brand)}.calendar-page .async-panel{overflow:hidden;transition:height 0.35s cubic-bezier(0.4, 0, 0.2, 1),opacity 0.3s ease}.calendar-page .async-toggle-btn{margin-left:8px;font-size:12px;font-weight:500;font-family:inherit;padding:3px 10px;border-radius:6px;border:1px solid #dde2ef;background:#fff;color:#666;cursor:pointer;transition:background 0.15s}.calendar-page .async-toggle-btn:hover{background:var(--brand-light)}.calendar-page .async-show-bar{display:none;width:100%;padding:10px 24px;border:none;background:transparent;text-align:left;font-family:inherit;font-size:13px;font-weight:500;color:var(--brand);cursor:pointer;align-items:center;gap:6px}.calendar-page .async-show-bar.is-visible{display:flex}.calendar-page .async-show-bar-icon{width:14px;height:14px;flex-shrink:0}.calendar-page .async-panel-inner{padding:20px 24px}.calendar-page .async-panel-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:16px}.calendar-page .async-panel-title{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600;color:#1a1a2e}.calendar-page .async-panel-icon{width:16px;height:16px;flex-shrink:0;color:var(--brand)}.calendar-page .async-search-wrap{position:relative;flex:1;max-width:400px}.calendar-page .async-search{width:100%;padding:8px 14px 8px 34px;border-radius:8px;border:1px solid #dde2ef;font-family:inherit;font-size:13px;background:#fff;outline:none;transition:border-color 0.15s, box-shadow 0.15s}.calendar-page .async-search:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(75,88,155,0.12)}.calendar-page .search-icon{position:absolute;left:10px;top:50%;width:14px;height:14px;transform:translateY(-50%);color:#aaa;pointer-events:none}.calendar-page .async-count-badge{background:#fff;color:var(--brand);border:1px solid var(--brand-mid);border-radius:20px;padding:3px 10px;font-size:12px;font-weight:600;cursor:pointer;transition:background 0.15s}.calendar-page .async-count-badge:hover{background:var(--brand-light)}.calendar-page .async-empty-badge{background:#faeeda;color:#7a4a00;border-radius:20px;padding:3px 10px;font-size:12px;font-weight:600}.calendar-page .async-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));gap:10px}.calendar-page .async-card{display:block;background:#fff;border:1px solid #d4dcf0;border-radius:10px;padding:12px 14px;color:inherit;text-decoration:none;transition:border-color 0.15s,box-shadow 0.15s,transform 0.1s var(--ease-out)}.calendar-page a.async-card{cursor:pointer}.calendar-page .async-card:hover{border-color:var(--brand);box-shadow:0 3px 10px rgba(75,88,155,0.12);transform:translateY(-1px)}.calendar-page .async-card-title{font-size:12px;font-weight:600;color:#1a1a2e;line-height:1.45;margin-bottom:5px}.calendar-page .async-card-meta{font-size:11px;color:#888;margin-bottom:6px}.calendar-page .async-tag{display:inline-block;font-size:10px;font-weight:600;letter-spacing:0.3px;border-radius:10px;padding:2px 8px;text-transform:uppercase}.calendar-page .tag-type{background:#f0f1f4;color:#666}.calendar-page .async-view-all{display:flex;align-items:center;justify-content:center;cursor:pointer;border-style:dashed}.calendar-page .view-all-inner{font-size:13px;font-weight:500;color:var(--brand);text-align:center}.calendar-page .async-empty-state{grid-column:1 / -1;text-align:center;padding:28px 16px;color:#9ca3af;font-size:13px}.calendar-page .async-empty-icon{width:28px;height:28px;margin-bottom:8px;color:#c5cad6}.calendar-page .async-no-results{grid-column:1 / -1;text-align:center;padding:24px;color:#999;font-size:13px}@keyframes skeleton-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
