body{--calendar-bg: var(--card-bg);--calendar-alt-bg: var(--section-bg);--calendar-border: var(--border-color);--calendar-text: var(--text-primary);--calendar-muted: var(--text-secondary);--calendar-primary: var(--accent-blue);--calendar-accent: var(--accent-blue);--calendar-event-bg: var(--primary-alpha-10);--calendar-event-border: var(--accent-blue);--calendar-shadow: var(--shadow-color)}body.calendar-page{background:linear-gradient(135deg,var(--bg-gradient-start) 0%,var(--bg-gradient-end) 100%);min-height:100vh}.birthday-container{max-width:1800px;margin:0 auto;padding:2rem 1rem;display:flex;flex-direction:column;gap:1.5rem;color:var(--calendar-text)}.calendar-controls{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding:1rem;position:sticky;top:64px;z-index:10;background:var(--calendar-bg);border-radius:12px;box-shadow:0 2px 8px var(--calendar-shadow);margin-bottom:1.5rem;border:1px solid var(--calendar-border)}.calendar-controls .view-toggle,.calendar-controls .today-btn{--btn-pad-y: .7rem;--btn-pad-x: 1.2rem;--btn-font-size: 1.1rem}.calendar-controls .dropdown-container{max-width:400px;position:relative}.calendar-controls .dropdown-container input{font-size:1.1rem;padding:.7rem 1rem;width:100%}.calendar-controls .calendar-title{margin-left:auto;font-size:1.5rem;font-weight:600;color:var(--calendar-primary)}.dropdown-content{position:absolute;top:100%;left:0;right:0;margin-top:.5rem;background:var(--calendar-bg);border:1px solid var(--calendar-border);border-radius:8px;box-shadow:0 4px 12px var(--calendar-shadow);max-height:400px;overflow-y:auto;z-index:100}.search-result-item{display:block;padding:.75rem 1rem;color:var(--calendar-text);text-decoration:none;border-bottom:1px solid var(--calendar-border);transition:background .2s ease}.search-result-item:last-child{border-bottom:none}.search-result-item:hover,.search-result-item:focus{background:var(--calendar-event-bg);outline:none}.search-result-item .search-name{font-size:1rem;display:block;margin-bottom:.25rem}.search-result-item .search-meta{display:block;margin-top:.25rem;color:var(--calendar-muted);font-size:.9rem}.search-result-item mark{background-color:var(--calendar-primary);color:#fff;padding:.1rem .2rem;border-radius:3px}.no-results{padding:1rem;text-align:center;color:var(--calendar-muted)}.calendar-wrapper{display:flex;flex-direction:column;gap:2rem}.calendar-view.fade-out{opacity:0;transition:opacity .15s ease-in-out}.calendar-view.fade-in{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.sidebar-toggle{position:fixed;right:1.5rem;bottom:5rem;z-index:999;background:var(--calendar-primary);color:#fff;border:none;width:4.5rem;height:4.5rem;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:2rem;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 12px var(--calendar-shadow)}.sidebar-toggle:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 6px 20px var(--calendar-shadow)}.sidebar-toggle:active{transform:translateY(-1px) scale(1.02)}.sidebar-toggle .material-symbols-outlined{transition:transform .3s ease}.sidebar-toggle.active .material-symbols-outlined{transform:rotate(180deg)}.upcoming-panel{--drawer-width: 26.25rem;--drawer-bg: var(--calendar-bg);--drawer-border: var(--calendar-border);--drawer-shadow: -4px 0 24px var(--calendar-shadow);--drawer-top: var(--navbar-height, 64px);--drawer-height: calc(100vh - var(--navbar-height, 64px));padding:2rem;overflow-y:auto}.upcoming-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:2px solid var(--calendar-border)}.upcoming-panel-header h2{margin:0;font-size:1.6rem;font-weight:600;color:var(--calendar-primary)}.sidebar-close{font-size:1.5rem}.sidebar-close:hover{color:var(--calendar-primary);transform:rotate(90deg)}.upcoming-list{display:flex;flex-direction:column;gap:.75rem}.upcoming-item{display:flex;align-items:center;gap:1rem;padding:.75rem .5rem;border-radius:8px;background:var(--calendar-event-bg);border:1px solid transparent;transition:background .2s ease,transform .2s ease;cursor:pointer}.upcoming-item:hover{background:var(--calendar-event-bg);border-color:var(--calendar-event-border);transform:translate(4px)}.upcoming-item:focus-visible{outline:2px solid var(--calendar-primary);outline-offset:2px}.upcoming-item img,.upcoming-icon{width:48px;height:48px;border-radius:6px;object-fit:cover}.upcoming-info{display:flex;flex-direction:column;gap:.2rem;font-size:1rem}.upcoming-date{color:var(--calendar-muted);font-weight:500}.upcoming-name{color:var(--calendar-text);font-weight:600}.year-view-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding:.5rem;background:var(--calendar-alt-bg);border:1px solid var(--calendar-border);border-radius:8px}.year-view-header .nav-btn{color:var(--calendar-primary);--btn-pad-y: .25rem;--btn-pad-x: .25rem;--btn-font-size: 1.2rem}.year-view-header h3{margin:0;font-size:1.8rem;font-weight:600;color:var(--calendar-primary)}.year-grid{display:grid;gap:1.5rem;grid-template-columns:1fr}@media(min-width:768px){.year-grid{grid-template-columns:repeat(2,1fr);gap:2rem}}@media(min-width:1200px){.year-grid{grid-template-columns:repeat(3,1fr);gap:2.5rem}}.calendar-month{background:var(--calendar-bg);border:1px solid var(--calendar-border);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 2px 8px var(--calendar-shadow);transition:transform .2s ease,box-shadow .2s ease}.calendar-month:hover{transform:translateY(var(--card-lift));box-shadow:0 4px 16px var(--calendar-shadow)}.calendar-month-header{text-align:center;padding:.75rem 1rem;font-weight:600;font-size:1.1rem;background:var(--calendar-bg);border-bottom:1px solid var(--calendar-border);color:var(--calendar-primary)}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:64px;gap:1px;background:var(--calendar-border)}.day-cell{position:relative;background:var(--calendar-bg);padding:6px;overflow:hidden;font-size:.8rem;color:var(--calendar-text)}.day-cell.other-month{background:var(--calendar-alt-bg);color:var(--calendar-muted)}.day-cell.today{background:var(--calendar-event-bg);border:2px solid var(--calendar-primary);font-weight:700}.day-cell.highlight{background-color:var(--calendar-accent)!important;border:2px solid var(--calendar-primary)}.day-cell.today .date-num{color:var(--calendar-primary);font-weight:700}.day-cell .date-num{position:absolute;top:3px;right:6px;font-size:.75rem;font-weight:500}.day-cell .events{display:flex;flex-wrap:wrap;gap:3px;margin-top:18px}.event-icon{width:2.25rem;height:2.25rem;border-radius:.25rem;object-fit:cover;border:2px solid var(--calendar-event-border);cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.event-icon:hover{transform:scale(1.2);box-shadow:0 2px 8px var(--overlay-strong);z-index:10;position:relative}.event-tooltip{position:fixed;background:var(--calendar-bg);border:1px solid var(--calendar-border);color:var(--calendar-text);padding:.5rem 1rem;border-radius:8px;box-shadow:0 4px 12px var(--calendar-shadow);z-index:101;pointer-events:none;font-size:.9rem;white-space:nowrap;opacity:0;transform:translateY(10px);transition:opacity .2s ease,transform .2s ease}.event-tooltip.visible{opacity:1;transform:translateY(0)}.day-indicator{position:absolute;bottom:4px;right:4px;background:var(--calendar-accent);color:#fff;min-width:20px;height:20px;padding:0 4px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;border:1px solid var(--calendar-bg);box-shadow:0 1px 4px var(--calendar-shadow);z-index:5}.year-grid .day-cell .events{display:none}.month-view{background:var(--calendar-bg);border:1px solid var(--calendar-border);border-radius:12px;padding:1rem;box-shadow:0 2px 8px var(--calendar-shadow)}.month-view-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.month-view-header .nav-btn{color:var(--calendar-primary);--btn-pad-y: .25rem;--btn-pad-x: .25rem;--btn-font-size: 1.2rem}.month-view-header h3{margin:0;font-size:1.5rem;font-weight:600;color:var(--calendar-primary)}.weekdays{display:grid;grid-template-columns:repeat(7,1fr);font-size:1rem;text-align:center;color:var(--calendar-muted);margin-bottom:.5rem;font-weight:600}.month-grid-large{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--calendar-border)}.month-grid-large .day-cell{min-height:120px;font-size:.9rem}.month-grid-large .events{margin-top:24px}.week-view{background:var(--calendar-bg);border:1px solid var(--calendar-border);border-radius:12px;padding:1rem;box-shadow:0 2px 8px var(--calendar-shadow)}.week-view-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.week-view-header .nav-btn{color:var(--calendar-primary);--btn-pad-y: .25rem;--btn-pad-x: .25rem;--btn-font-size: 1.2rem}.week-view-header h3{margin:0;font-size:1.5rem;font-weight:600;color:var(--calendar-primary)}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--calendar-border)}.week-grid .day-cell{min-height:150px}.week-grid .day-cell .events{margin-top:32px}.event-icon{border:1px solid var(--calendar-event-border);border-radius:4px}.events{will-change:contents}.badges{display:flex;flex-wrap:wrap;gap:.35rem}.rarity-badge{border:1px solid var(--calendar-border);color:var(--calendar-muted)}.rarity-badge[data-rarity=UR]{color:var(--rarity-ur);border-color:var(--rarity-ur)}.rarity-badge[data-rarity=SSR]{color:var(--rarity-ssr-fg);border-color:var(--rarity-ssr)}.rarity-badge[data-rarity=SR]{color:var(--rarity-sr);border-color:var(--rarity-sr)}.rarity-badge[data-rarity=R]{color:var(--rarity-r);border-color:var(--rarity-r)}.rarity-badge[data-rarity=N]{color:var(--rarity-n-fg);border-color:var(--rarity-n)}.day-view{display:grid;grid-template-columns:1fr minmax(260px,320px);gap:1rem}.day-panel{border:1px solid var(--calendar-border);background:var(--calendar-bg);border-radius:12px;padding:1rem}.day-header{display:flex;align-items:baseline;gap:.75rem;flex-wrap:wrap;margin-bottom:.5rem}.day-header h2{margin:0;font-size:1.6rem;color:var(--calendar-primary)}.day-header .sub{color:var(--calendar-muted)}.event-list{display:grid;gap:.75rem}.event-card{display:grid;grid-template-columns:56px 1fr;gap:.75rem;padding:.75rem;border:1px solid var(--calendar-border);border-radius:12px;background:var(--calendar-alt-bg);transition:background-color .2s ease,transform .2s ease}.event-card:hover{background:var(--calendar-event-bg);transform:translateY(var(--card-lift))}.event-card img{width:56px;height:56px;border-radius:10px;object-fit:cover}.event-card .title{font-weight:700}.event-card .meta{color:var(--calendar-muted);font-size:.9rem}.day-mini{border:1px solid var(--calendar-border);background:var(--calendar-bg);border-radius:12px;padding:.75rem;height:fit-content}.day-mini .mm-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.35rem}.day-mini .mm-name{font-weight:700}.mm-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem;font-size:.9rem}.mm-dow{color:var(--calendar-muted);font-size:.75rem;text-align:center}.mm-cell{text-align:center;padding:.35rem 0;border-radius:8px;cursor:pointer;color:var(--calendar-text);border:1px solid transparent}.mm-cell.outside{opacity:.45}.mm-cell.today{border-color:var(--calendar-primary)}.mm-cell.has{background:var(--calendar-event-bg);border-color:var(--calendar-event-border)}.mm-cell.selected{outline:2px solid var(--calendar-primary);outline-offset:2px}@media(max-width:980px){.day-view{grid-template-columns:1fr}}@media(max-width:768px){.upcoming-panel.drawer{width:90%;max-width:420px}.sidebar-toggle{right:1rem;bottom:4rem;width:4rem;height:4rem;font-size:1.75rem}}@media(max-width:640px){.calendar-controls{flex-wrap:wrap}.calendar-controls .calendar-title{width:100%;margin-top:.5rem;font-size:1.3rem}.month-grid-large .day-cell{min-height:90px}.week-grid .day-cell{min-height:110px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.upcoming-item:hover,.event-icon:hover{transform:none}}.rarity-n .event-icon{border-color:#9e9e9e;box-shadow:0 0 12px #9e9e9e80}.rarity-r .event-icon{border-color:#64b5f6;box-shadow:0 0 12px #64b5f699}.rarity-sr .event-icon{border-color:var(--rarity-sr);box-shadow:0 0 15px #ba68c8b3}.rarity-ssr .event-icon{border-color:var(--rarity-ssr);box-shadow:0 0 18px #ffd54fcc}.rarity-ur .event-icon{border-color:#ff6b6b;box-shadow:0 0 20px #ff6b6be6;animation:urGlow 1.8s ease-in-out infinite}@keyframes urGlow{0%,to{box-shadow:0 0 20px #ff6b6be6}50%{box-shadow:0 0 30px #ff6b6b}}.rarity-unknown .event-icon{border-color:#ccc;box-shadow:0 2px 8px var(--overlay-light)}
