.skeleton{background:linear-gradient(90deg,hsla(0,0%,100%,.05) 25%,hsla(0,0%,100%,.1) 50%,hsla(0,0%,100%,.05) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:4px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton--button{width:40px;height:40px}.skeleton--title{width:180px;height:28px}.skeleton--day{width:24px;height:18px;margin-left:auto}.calendar-grid__cell--skeleton{background:#2d3542!important;border-color:#3d4a5c!important}.calendar-stats{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:14px;padding:8px 16px;background:rgba(106,166,255,.08);border:1px solid rgba(106,166,255,.15);border-radius:8px;margin-left:auto}.calendar-stats svg{color:var(--accent)}.calendar-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px}.calendar-nav{display:flex;align-items:center;gap:20px}.calendar-nav__btn{padding:8px 12px!important;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.calendar-nav__btn:hover{transform:scale(1.1);background:rgba(106,166,255,.15)!important}.calendar-nav__btn--year{opacity:.7}.calendar-nav__btn--year:hover{opacity:1}.calendar-today-btn{display:flex;align-items:center;gap:6px;font-size:14px;padding:8px 16px!important;transition:all .2s ease}.calendar-today-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(106,166,255,.4)}.calendar-controls__label{font-weight:600;font-size:18px;font-family:system-ui,-apple-system,BlinkMacSystemFont,SF Pro Text,sans-serif;color:var(--text);min-width:180px;text-align:center}.calendar-card{margin-top:16px;transition:opacity .3s ease}.calendar-card--transitioning{opacity:.6}.calendar-empty-state{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;padding:40px;z-index:10}.calendar-empty-state svg{color:var(--muted);opacity:.5;margin-bottom:16px}.calendar-empty-state h3{font-size:18px;font-weight:600;color:var(--text);margin:0 0 8px}.calendar-empty-state p{color:var(--muted);font-size:14px;margin:0 0 24px}.calendar-empty-state .btn{display:inline-flex;align-items:center;gap:6px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:8px;gap:8px}.calendar-grid--header{margin-bottom:8px}.calendar-grid__cell--head{text-align:center;font-size:12px;font-weight:600;text-transform:uppercase;color:var(--muted);padding:4px 0;border:none;background:transparent}.calendar-weeks{position:relative}.calendar-grid--body{grid-auto-rows:200px}.calendar-grid__cell{min-height:200px;padding:6px;border-radius:8px;border:1px solid #4b5563;background:#374151;box-sizing:border-box;position:relative;transition:all .2s ease}.calendar-grid__cell:hover{border-color:var(--accent);box-shadow:0 0 0 1px rgba(106,166,255,.3);transform:translateY(-1px)}.calendar-grid__cell--weekend{background:#2d3748;border-color:#3d4a5c}.calendar-grid__cell--today{background:linear-gradient(135deg,rgba(106,166,255,.2),rgba(160,107,255,.2));border:2px solid var(--accent);box-shadow:0 0 20px rgba(106,166,255,.4),inset 0 0 40px rgba(106,166,255,.1)}.calendar-grid__cell--today:hover{box-shadow:0 0 25px rgba(106,166,255,.5),inset 0 0 40px rgba(106,166,255,.15)}.calendar-grid__cell--overflow{background:#1f2937;border-color:#374151}.calendar-grid__cell--overflow .calendar-grid__day{color:#9ca3af}.calendar-grid__day{font-size:13px;font-weight:700;margin-bottom:4px;text-align:right;color:var(--text);display:flex;align-items:center;justify-content:flex-end;gap:6px}.today-indicator{width:6px;height:6px;background:var(--accent);border-radius:50%;box-shadow:0 0 8px var(--accent);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.1)}}.calendar-grid__event-count{position:absolute;bottom:6px;right:6px;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;font-size:10px;font-weight:700;padding:3px 7px;border-radius:12px;min-width:20px;text-align:center;box-shadow:0 2px 8px rgba(106,166,255,.4)}.calendar-events-layer{position:absolute;inset:0;top:25px;padding-left:4px;padding-right:4px;pointer-events:none;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:200px;grid-gap:8px;gap:8px;z-index:2}.calendar-event{grid-column:var(--col-start) /span var(--col-span);grid-row:var(--row);align-self:flex-start;position:relative;margin-top:calc(var(--layer, 0) * 22px);color:#fff;border-radius:6px;font-size:11px;padding:4px 10px;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:auto;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.1);transition:all .2s ease;filter:saturate(1.1) brightness(1)}.calendar-event:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.3);filter:saturate(1.2) brightness(1.1)}.calendar-event__title{font-weight:600}.calendar-event__meta{opacity:.85;font-weight:400;display:flex;align-items:center;gap:4px}.calendar-event__staff{display:inline-flex;align-items:center;gap:2px;margin-left:4px}.calendar-event__staff-container{position:absolute;top:2px;left:0;right:0;height:100%;pointer-events:none;z-index:1}.staff-badge{position:absolute;top:2px;right:calc((100% / var(--col-span, 1)) * (var(--col-span, 1) - var(--day-index, 0) - 1) + 4px);display:inline-flex;align-items:center;justify-content:center;background:hsla(0,0%,100%,.15);color:var(--text);font-size:9px;font-weight:700;padding:2px 4px;border-radius:4px;letter-spacing:.5px;min-width:18px;line-height:1}.date-calendar{margin-top:16px}.calendar-grid--interactive .calendar-grid__cell{min-height:80px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.calendar-grid--interactive .calendar-grid__cell--clickable{background:#374151;border:2px solid #4b5563}.calendar-grid--interactive .calendar-grid__cell--clickable:hover{border-color:var(--accent);background:rgba(106,166,255,.1);transform:scale(1.05)}.calendar-grid--interactive .calendar-grid__cell--empty{background:transparent;border:none;cursor:default}.calendar-grid--interactive .calendar-grid__cell--past{opacity:.5;background:#2d3542}.calendar-grid--interactive .calendar-grid__cell--today{border-color:var(--accent);box-shadow:0 0 10px rgba(106,166,255,.3)}.calendar-grid--interactive .calendar-grid__cell--selected-enabled{background:rgba(34,197,94,.2);border:2px solid #22c55e}.calendar-grid--interactive .calendar-grid__cell--selected-enabled:hover{background:rgba(34,197,94,.3);border-color:#22c55e}.calendar-grid--interactive .calendar-grid__cell--selected-disabled{background:rgba(239,68,68,.2);border:2px solid #ef4444}.calendar-grid--interactive .calendar-grid__cell--selected-disabled:hover{background:rgba(239,68,68,.3);border-color:#ef4444}.calendar-grid--interactive .calendar-grid__day{font-size:16px;font-weight:600;color:var(--text);text-align:center;justify-content:center;margin-bottom:4px}.calendar-grid__indicator{font-size:18px;font-weight:700;margin-top:4px}.calendar-grid__cell--selected-enabled .calendar-grid__indicator{color:#22c55e}.calendar-grid__cell--selected-disabled .calendar-grid__indicator{color:#ef4444}@media (max-width:1024px){.calendar-controls{flex-wrap:wrap;gap:12px}.calendar-today-btn{order:3;width:100%}.calendar-stats{order:2;width:100%;justify-content:center}.calendar-grid__cell{min-height:150px}.calendar-events-layer,.calendar-grid--body{grid-auto-rows:150px}.calendar-event{font-size:10px;padding:3px 8px}}@media (max-width:768px){.calendar-grid__cell{min-height:100px;padding:4px}.calendar-events-layer,.calendar-grid--body{grid-auto-rows:100px;gap:4px}.calendar-events-layer{top:20px}.calendar-event{font-size:9px;padding:2px 6px;margin-top:calc(var(--layer, 0) * 16px)}.calendar-event__meta{display:none}.calendar-grid__event-count{font-size:9px;padding:2px 5px}.calendar-controls__label{font-size:16px;min-width:140px}.calendar-nav__btn--year{display:none}.calendar-empty-state{padding:20px}.calendar-empty-state svg{width:32px;height:32px}.calendar-empty-state h3{font-size:16px}.calendar-empty-state p{font-size:13px}}