.cal-year-nav{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .75rem;border-radius:.5rem;font-size:.875rem;font-weight:500;color:var(--color-text-body);background:var(--color-bg-soft);box-shadow:0 1px 2px #0000000a;transition:background .15s,color .15s,transform .1s;white-space:nowrap}.cal-year-nav:hover{background:var(--color-primary-soft);color:var(--color-primary);box-shadow:0 2px 6px #2563eb1a}.cal-year-nav:active{transform:scale(.96)}.cal-month-tabs{display:flex;gap:.375rem;overflow-x:auto;padding-bottom:.25rem;scrollbar-width:none}.cal-month-tabs::-webkit-scrollbar{display:none}.cal-month-tab{display:flex;align-items:center;gap:.25rem;padding:.5rem .875rem;border-radius:.5rem;font-size:.875rem;font-weight:500;color:var(--color-text-muted);background:var(--color-bg-white);box-shadow:0 1px 2px #00000008;cursor:pointer;transition:background .15s,color .15s,transform .1s,box-shadow .15s;white-space:nowrap;flex-shrink:0}.cal-month-tab:hover{background:var(--color-bg-white);color:var(--color-primary);box-shadow:0 2px 6px #2563eb14}.cal-month-tab:active{transform:scale(.96)}.cal-month-tab-active{background:var(--color-primary)!important;color:#fff!important;box-shadow:0 2px 8px #2563eb40}.cal-tab-badge{font-size:.7rem;padding:0 .375rem;border-radius:9999px;background:var(--color-bg-muted);color:var(--color-text-faint);line-height:1.4;font-weight:600}.cal-tab-badge-active{background:#ffffff40;color:#fff}.cal-month-heading{display:flex;align-items:center;gap:.5rem;padding-bottom:1rem}.cal-month-heading-dot{width:.625rem;height:.625rem;border-radius:50%;background:var(--color-primary);flex-shrink:0}.cal-timeline{position:relative;padding-left:1.75rem}.cal-timeline-track{position:absolute;left:.3rem;top:.375rem;bottom:.375rem;width:2px;background:var(--color-border-soft);border-radius:1px}.cal-event{position:relative;padding-bottom:2rem}.cal-event:last-child{padding-bottom:0}.cal-event-node{position:absolute;left:-1.75rem;top:.5rem;width:.75rem;height:.75rem;border-radius:50%;background:var(--color-border-strong);display:flex;align-items:center;justify-content:center;z-index:2;box-shadow:0 0 0 3px var(--color-bg);transition:transform .15s cubic-bezier(.2,0,0,1),box-shadow .15s cubic-bezier(.2,0,0,1)}.cal-event-node-inner{width:.375rem;height:.375rem;border-radius:50%;background:#fff;position:relative;z-index:1}.cal-event-card{display:block;padding:.75rem 1rem;border-radius:.75rem;text-decoration:none;background:var(--color-bg-white);box-shadow:0 1px 3px #0000000a,0 1px 2px #0000000d;transition:transform .15s cubic-bezier(.2,0,0,1),box-shadow .15s cubic-bezier(.2,0,0,1)}.cal-event-card:hover{transform:translate(3px);box-shadow:0 4px 12px #00000014,0 2px 4px #0000000a}.cal-event-card:active{transform:scale(.98) translate(3px)}.cal-event-top{display:flex;align-items:center;gap:.5rem}.cal-event-date{font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums}.cal-event-title{font-size:.875rem;font-weight:500;color:var(--color-text);line-height:1.4}.cal-event.is-past{opacity:.5}.cal-event.is-past:hover{opacity:1}.cal-event.is-current .cal-event-node{box-shadow:0 0 0 3px color-mix(in srgb,var(--color-warning) 25%,transparent)}.cal-event.is-current .cal-event-card{box-shadow:0 2px 8px #ea580c1f,0 1px 3px #ea580c14;background:color-mix(in srgb,var(--color-warning) 4%,white)}.cal-event.is-current .cal-event-title{color:var(--color-warning);font-weight:600}.cal-event.is-current .cal-event-node:before{content:"";position:absolute;inset:0;border-radius:9999px;background-color:var(--color-warning);animation:cal-pulse 2s ease-out infinite}@keyframes cal-pulse{0%{transform:scale(1);opacity:.5}70%{transform:scale(3);opacity:0}to{transform:scale(3);opacity:0}}.cal-event.is-upcoming .cal-event-node{box-shadow:0 0 0 3px color-mix(in srgb,var(--color-success) 20%,transparent)}.cal-event.is-upcoming .cal-event-title{color:var(--color-success)}.cal-empty-month{padding:2rem 1rem;text-align:center;border-radius:.75rem;margin-bottom:1rem;background:var(--color-bg-soft);box-shadow:inset 0 1px 3px #0000000a}.cal-month-section{animation:cal-fade-in .25s cubic-bezier(.2,0,0,1) both}@keyframes cal-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(max-width:480px){.cal-event-card{padding:.625rem .75rem}.cal-event-title{font-size:.8rem}.cal-event-exam-tag{font-size:.7rem}}@media(prefers-reduced-motion:reduce){.cal-event.is-current .cal-event-node:before{animation:none}.cal-event-card,.cal-event-node{transition:none}.cal-month-section{animation:none}}
