:root{--cal-bg:#fff;--cal-card-bg:#fff;--cal-text:#1a1a2e;--cal-text-muted:#94a3b8;--cal-border:#e2e8f0;--cal-hover:#f1f5f9;--cal-today-border:#3b82f6;--cal-today-bg:rgba(59,130,246,.08);--cal-sunday-bg:rgba(239,68,68,.06);--cal-sunday-border:rgba(239,68,246,.2);--cal-red-day:#dc2626;--cal-header-bg:#f8fafc;--cal-week-num:#64748b;--cal-other-month:#cbd5e1;--cal-shadow:0 4px 6px -1px rgba(0,0,0,.05),0 2px 4px -2px rgba(0,0,0,.05);--cal-shadow-lg:0 10px 15px -3px rgba(0,0,0,.08),0 4px 6px -4px rgba(0,0,0,.05)}.dark{--cal-bg:#0f172a;--cal-card-bg:#1e293b;--cal-text:#f1f5f9;--cal-text-muted:#64748b;--cal-border:#334155;--cal-hover:#334155;--cal-today-border:#3b82f6;--cal-today-bg:rgba(59,130,246,.15);--cal-sunday-bg:rgba(239,68,68,.1);--cal-sunday-border:rgba(239,68,68,.3);--cal-red-day:#f87171;--cal-header-bg:#1e293b;--cal-week-num:#64748b;--cal-other-month:#475569;--cal-shadow:0 4px 6px -1px rgba(0,0,0,.3);--cal-shadow-lg:0 10px 15px -3px rgba(0,0,0,.4)}.calendar-container{background:var(--cal-card-bg);border-radius:16px;box-shadow:var(--cal-shadow-lg);overflow:hidden;touch-action:pan-y pinch-zoom}.calendar-header{display:flex;align-items:center;justify-content:space-between;padding:20px 16px;background:var(--cal-card-bg)}.calendar-header-title{font-size:1.25rem;font-weight:600;color:var(--cal-text);text-transform:capitalize}.calendar-nav-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;background:transparent;color:var(--cal-text-muted);cursor:pointer;border-radius:10px;transition:all .2s ease}.calendar-nav-btn:hover{background:var(--cal-hover);color:var(--cal-text)}.calendar-nav-btn:active{transform:scale(.95)}.calendar-weekdays{display:grid;grid-template-columns:32px repeat(7,1fr);padding:8px 8px 12px;border-bottom:1px solid var(--cal-border)}.calendar-weekday{text-align:center;font-size:.75rem;font-weight:600;color:var(--cal-text-muted);text-transform:uppercase;letter-spacing:.025em}.calendar-weekday.week-col{color:var(--cal-week-num);font-weight:500}.calendar-weekday.sunday{color:var(--cal-red-day)}.calendar-grid{display:grid;grid-template-columns:32px repeat(7,1fr);padding:8px;gap:4px}.calendar-week-row{display:contents}.calendar-week-num{font-size:.7rem;color:var(--cal-week-num);padding:4px 0}.calendar-day,.calendar-week-num{display:flex;align-items:center;justify-content:center;font-weight:500}.calendar-day{position:relative;aspect-ratio:1;border-radius:10px;cursor:pointer;transition:all .15s ease;font-size:.9rem;color:var(--cal-text);border:2px solid transparent}.calendar-day:hover{background:var(--cal-hover)}.calendar-day.other-month{color:var(--cal-other-month)}.calendar-day.sunday{background:var(--cal-sunday-bg);border-color:var(--cal-sunday-border)}.calendar-day.sunday.other-month{background:transparent;border-color:transparent}.calendar-day.today{border-color:var(--cal-today-border);background:var(--cal-today-bg);font-weight:700}.calendar-day.red-day{color:var(--cal-red-day);font-weight:600}.calendar-day.has-holiday:after{content:"";position:absolute;bottom:4px;width:4px;height:4px;background:var(--cal-red-day);border-radius:50%}.day-details-panel{position:fixed;bottom:0;left:0;right:0;background:var(--cal-card-bg);border-radius:24px 24px 0 0;box-shadow:0 -10px 40px rgba(0,0,0,.15);padding:24px;transform:translateY(100%);transition:transform .3s cubic-bezier(.32,.72,0,1);z-index:100;max-height:50vh;overflow-y:auto}.day-details-panel.open{transform:translateY(0)}.day-details-handle{width:40px;height:4px;background:var(--cal-border);border-radius:2px;margin:0 auto 16px}.day-details-date{font-size:1.5rem;font-weight:700;color:var(--cal-text);margin-bottom:4px}.day-details-weekday{font-size:.9rem;color:var(--cal-text-muted);margin-bottom:16px;text-transform:capitalize}.day-details-item{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--cal-border)}.day-details-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;background:var(--cal-hover)}.day-details-icon.holiday{background:rgba(239,68,68,.1);color:var(--cal-red-day)}.day-details-icon.nameday{background:rgba(59,130,246,.1);color:#3b82f6}.day-details-icon.flag{background:rgba(234,179,8,.1);color:#eab308}.day-details-label{font-size:.75rem;color:var(--cal-text-muted);margin-bottom:2px}.day-details-value{font-size:.95rem;font-weight:500;color:var(--cal-text)}.day-details-overlay{position:fixed;inset:0;background:rgba(0,0,0,.3);opacity:0;visibility:hidden;transition:all .3s ease;z-index:99}.day-details-overlay.open{opacity:1;visibility:visible}.calendar-controls{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid var(--cal-border);gap:12px}.calendar-today-btn{padding:8px 16px;border:none;background:var(--cal-today-border);color:#fff;font-size:.85rem;font-weight:600;border-radius:8px;cursor:pointer;transition:all .2s ease}.calendar-today-btn:hover{opacity:.9;transform:translateY(-1px)}.calendar-today-btn:active{transform:translateY(0)}.calendar-toggle{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--cal-text-muted)}.fc{font-family:inherit;color:var(--cal-text)}.fc-theme-standard .fc-scrollgrid,.fc-theme-standard td,.fc-theme-standard th{border-color:var(--cal-border)}.fc .fc-scrollgrid,.fc .fc-scrollgrid-section>*,.fc table,.fc td,.fc th,.fc-scrollgrid,.fc-scrollgrid-section>*{border:none!important}.fc .fc-toolbar{flex-wrap:wrap;gap:12px;margin-bottom:20px!important}.fc .fc-toolbar-title{font-size:1.5rem!important;font-weight:700!important;color:var(--cal-text);text-transform:capitalize}.fc .fc-button{background:var(--cal-card-bg)!important;border:1px solid var(--cal-border)!important;color:var(--cal-text)!important;font-weight:500!important;padding:8px 16px!important;border-radius:10px!important;transition:all .2s ease!important;text-transform:none!important}.fc .fc-button:hover{background:var(--cal-hover)!important;border-color:var(--cal-border)!important}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active,.fc .fc-today-button{background:var(--cal-today-border)!important;border-color:var(--cal-today-border)!important;color:#fff!important}.fc .fc-today-button:hover{opacity:.9}.fc .fc-today-button:disabled{opacity:.5}.fc .fc-col-header{background:var(--cal-header-bg);border-radius:12px 12px 0 0}.fc .fc-col-header-cell{padding:12px 8px!important;background:transparent}.fc .fc-col-header-cell-cushion{color:var(--cal-text-muted);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.fc .fc-daygrid-week-number{font-size:.75rem;font-weight:500;color:var(--cal-week-num);padding:8px!important;background:transparent}.fc .fc-daygrid-day{transition:background .15s ease}.fc .fc-daygrid-day-frame{background:var(--cal-card-bg);border-radius:12px;margin:4px;padding:8px;min-height:100px;transition:all .2s ease;box-shadow:var(--cal-shadow)}.fc .fc-daygrid-day-frame:hover{background:var(--cal-hover);transform:translateY(-2px);box-shadow:var(--cal-shadow-lg)}.fc .fc-day-today .fc-daygrid-day-frame{background:var(--cal-today-bg);border:2px solid var(--cal-today-border)}.day-cell{display:flex;flex-direction:column;height:100%;gap:4px}.day-number-container{display:flex;justify-content:flex-end}.day-number{font-size:1rem;font-weight:600;color:var(--cal-text);width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:8px}.day-content{display:flex;flex-direction:column;gap:4px;flex-grow:1}.holiday-or-flag{font-size:.75rem;font-weight:600;color:var(--cal-red-day);line-height:1.3}.name-day{font-size:.7rem;color:var(--cal-text-muted);line-height:1.3}.red-day .day-number{background:rgba(239,68,68,.1);color:var(--cal-red-day)}.weekend .day-number{color:var(--cal-text-muted)}.mobile-calendar{display:none}.desktop-calendar{display:block}@media (max-width:768px){.mobile-calendar{display:block}.desktop-calendar{display:none}.calendar-container{border-radius:12px}.calendar-header{padding:16px 12px}.calendar-header-title{font-size:1.1rem}.calendar-nav-btn{width:36px;height:36px}.calendar-weekdays{grid-template-columns:28px repeat(7,1fr);padding:6px 6px 10px}.calendar-weekday{font-size:.65rem}.calendar-grid{grid-template-columns:28px repeat(7,1fr);padding:6px;gap:3px}.calendar-week-num{font-size:.6rem}.calendar-day{font-size:.85rem;border-radius:8px}.calendar-controls{padding:10px 12px}.calendar-today-btn{padding:6px 12px;font-size:.8rem}.calendar-toggle{font-size:.8rem}}@media (max-width:480px){.calendar-grid,.calendar-weekdays{grid-template-columns:24px repeat(7,1fr)}.calendar-grid{gap:2px}.calendar-day{font-size:.8rem;border-radius:6px;border-width:1.5px}.calendar-week-num{font-size:.55rem}.calendar-weekday{font-size:.6rem}}.calendar-info-section{margin-top:32px;padding:24px;background:var(--cal-card-bg);border-radius:16px;box-shadow:var(--cal-shadow)}.calendar-info-section h2{display:flex;align-items:center;gap:8px;font-size:1.1rem;font-weight:600;color:var(--cal-text);margin-bottom:16px}.calendar-info-section p{line-height:1.6}.calendar-info-section p,.calendar-info-section ul{color:var(--cal-text-muted);font-size:.9rem;margin-bottom:12px}.calendar-info-section ul{line-height:1.8;margin-left:20px}.calendar-info-section h3{font-size:.95rem;font-weight:600;color:var(--cal-text);margin-bottom:8px}.faq-item{padding:16px 0;border-top:1px solid var(--cal-border)}.faq-item:first-child{border-top:none;padding-top:0}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}.calendar-grid.slide-left{animation:slideInLeft .25s ease-out}.calendar-grid.slide-right{animation:slideInRight .25s ease-out}.calendar-skeleton{display:grid;grid-template-columns:32px repeat(7,1fr);padding:8px;gap:4px}.skeleton-day{aspect-ratio:1;border-radius:10px;background:linear-gradient(90deg,var(--cal-hover) 25%,var(--cal-border) 50%,var(--cal-hover) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.calendar-day:active{transform:scale(.95)}@media (hover:hover){.calendar-day:active{transform:none}}