*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:#fafafa;padding:20px}.calendar-container{max-width:1400px;margin:0 auto;background:#fff;box-shadow:0 2px 8px #0000001a}.calendar-header{text-align:center;padding:20px;border-bottom:2px solid #333;display:flex;flex-direction:column;gap:15px}.calendar-header h1{font-size:2.5rem;font-weight:600;color:#333}.view-toggle{display:flex;justify-content:center;position:relative;background:#ecf0f1;border-radius:24px;padding:3px;width:fit-content;margin:0 auto}.view-toggle-slider{position:absolute;top:3px;left:3px;width:calc(50% - 3px);height:calc(100% - 6px);background:#2c3e50;border-radius:21px;transition:transform .25s ease;pointer-events:none}.view-toggle-slider.olympian{transform:translate(100%)}.view-toggle-button{flex:1;padding:8px 20px;border:none;background:transparent;cursor:pointer;border-radius:21px;font-size:.9rem;font-weight:500;color:#2c3e50;transition:color .25s ease;position:relative;z-index:1;text-align:center}.view-toggle-button:hover{background:transparent}.view-toggle-button.active{color:#fff;background:transparent}.header-toggles{display:flex;justify-content:center;align-items:center;gap:12px}.lang-toggle{display:flex;position:relative;background:#ecf0f1;border-radius:16px;padding:2px}.lang-toggle-slider{position:absolute;top:2px;left:2px;width:calc(50% - 2px);height:calc(100% - 4px);background:#2c3e50;border-radius:14px;transition:transform .25s ease;pointer-events:none}.lang-toggle-slider.en{transform:translate(100%)}.lang-toggle-button{padding:4px 10px;border:none;background:transparent;cursor:pointer;border-radius:14px;font-size:.75rem;font-weight:600;color:#2c3e50;transition:color .25s ease;position:relative;z-index:1}.lang-toggle-button:hover{background:transparent}.lang-toggle-button.active{color:#fff;background:transparent}.year-navigation{display:flex;align-items:center;justify-content:center;gap:30px}.year-nav-button{padding:8px 20px;border:2px solid #2c3e50;background:#fff;cursor:pointer;border-radius:4px;font-size:1.5rem;font-weight:600;color:#2c3e50;transition:all .2s;min-width:50px}.year-nav-button:hover{background:#2c3e50;color:#fff}.year-nav-button:active{transform:scale(.95)}.calendar-content{display:flex;flex-direction:column}.calendar-header-row{display:grid;grid-template-columns:120px 1fr 120px;border-bottom:2px solid #bdc3c7;position:sticky;top:0;z-index:10;background:#fff}.sidebar-header{padding:12px;text-align:center;font-weight:600;font-size:.85rem;color:#fff}.sidebar-header.traditional{background:#2c3e50}.sidebar-header.custom{background:#34495e}.calendar-row{display:grid;grid-template-columns:120px 1fr 120px;border-bottom:1px solid #ecf0f1}.calendar-row.last-week-of-period{border-bottom:2px solid #bdc3c7}.calendar-row.last-week-of-season{border-bottom:3px solid #95a5a6}.traditional-sidebar-cell{background:#2c3e50;color:#fff;padding:8px 10px;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.month-name{font-weight:600;font-size:1rem;text-align:left}.week-number{font-size:.75rem;color:#bdc3c7;text-align:right;margin-left:auto}.custom-sidebar-cell{background:#34495e;color:#fff;padding:8px 10px;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.period-name{font-weight:600;font-size:1rem;text-align:left}.intercalary-label{text-align:center;font-size:1rem}.custom-week{font-size:.75rem;color:#bdc3c7;text-align:right;margin-left:auto}.week-row-wrapper{position:relative}.day-headers{display:grid;grid-template-columns:repeat(7,1fr);background:#ecf0f1}.day-header{padding:12px;text-align:center;font-weight:600;font-size:.85rem;color:#2c3e50;border-right:1px solid #bdc3c7}.day-header:last-child{border-right:none}.day-header.weekend{background:#d5d8dc}.weeks-container{display:flex;flex-direction:column}.period-shade-0{background:#0000}.period-shade-1{background:#00000008}.period-shade-2{background:#0000000f}.period-shade-3{background:#0000000a}.week-row{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid #ecf0f1}.day-cell{position:relative;padding:12px;min-height:50px;border-right:1px solid #ecf0f1;display:flex;flex-direction:column;align-items:center;justify-content:center}.day-cell:last-child{border-right:none}.day-cell.weekend{background:#f8f9fa}.day-cell.today{border:3px solid #3498db;box-shadow:0 0 8px #3498db66}.day-number{font-size:1rem;font-weight:500;color:#2c3e50}.day-number-alt{position:absolute;bottom:4px;right:4px;font-size:.7rem;color:#95a5a6;font-weight:400}.astronomical-icon{font-size:.85rem;position:absolute;top:4px;right:4px}.moon-phase-icon{font-size:.7em}@media(max-width:1200px){.calendar-header-row,.calendar-row{grid-template-columns:100px 1fr 100px}.day-cell{padding:8px;min-height:45px}}.swipe-viewport{position:relative}.swipe-strip{display:contents}.swipe-peek,.swipe-peek-label{display:none}@media(max-width:600px){.swipe-viewport{overflow:hidden}.swipe-strip{display:block;position:relative;background:#fff}.swipe-peek{display:block;position:absolute;top:0;bottom:0;width:100%;background:#ecf0f1;pointer-events:none;opacity:0;transition:opacity .15s ease}.swipe-peek.active{opacity:1}.swipe-peek-left{right:100%}.swipe-peek-right{left:100%}.swipe-peek-label{position:fixed;top:35vh;display:flex;flex-direction:column;align-items:center;width:100px;z-index:2;pointer-events:none}.swipe-peek-label.left{left:8px}.swipe-peek-label.right{right:8px}.swipe-peek-arrow{font-size:1.5rem;color:#95a5a6;margin-bottom:4px}.swipe-peek-year{font-size:1.5rem;font-weight:700;color:#95a5a6;line-height:1.2}.swipe-peek-separator{font-size:1rem;color:#bdc3c7;line-height:1.2}}.year-indicator{position:fixed;top:25%;left:50%;transform:translate(-50%,-50%);background:#2c3e50d9;color:#fff;padding:16px 32px;border-radius:12px;font-size:1.8rem;font-weight:700;z-index:100;pointer-events:none;animation:yearFadeInOut .8s ease-out forwards}@keyframes yearFadeInOut{0%{opacity:0;transform:translate(-50%,-50%) scale(.85)}15%{opacity:1;transform:translate(-50%,-50%) scale(1)}60%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(.95)}}.mobile-season-header,.mobile-period-header,.mobile-month-header,.mobile-week-number{display:none}@media(max-width:768px){.calendar-header-row,.calendar-row{grid-template-columns:80px 1fr 80px}.day-header{padding:8px;font-size:.75rem}.day-cell{padding:6px;min-height:40px}.day-number{font-size:.85rem}}@media(max-width:600px){body{padding:0}.calendar-container{box-shadow:none}.calendar-header{padding:12px 8px;gap:10px}.calendar-header h1{font-size:1.5rem}.header-toggles{gap:8px}.view-toggle-button{padding:6px 14px;font-size:.8rem}.year-navigation{gap:15px}.year-nav-button{padding:6px 14px;font-size:1.2rem;min-width:40px}.traditional-sidebar-cell,.custom-sidebar-cell,.sidebar-header{display:none}.calendar-header-row{grid-template-columns:1fr}.calendar-row{grid-template-columns:28px 1fr}.mobile-season-header{display:block;padding:10px 12px;font-weight:700;font-size:.95rem;text-transform:uppercase;letter-spacing:.05em;color:#2c3e50;border-top:3px solid #95a5a6;border-bottom:1px solid #bdc3c7}.mobile-period-header{display:block;padding:5px 12px;font-weight:600;font-size:.8rem;color:#34495e;border-bottom:1px solid #ecf0f1}.mobile-period-header.intercalary{font-style:italic;color:#7f8c8d}.mobile-month-header{display:block;padding:8px 12px;font-weight:700;font-size:.9rem;color:#2c3e50;background:#ecf0f1;border-bottom:1px solid #bdc3c7}.mobile-week-number{display:flex;align-items:center;justify-content:center;font-size:.65rem;color:#95a5a6;font-weight:500;border-right:1px solid #ecf0f1}.day-header{padding:6px 2px;font-size:.7rem}.day-cell{padding:4px 2px;min-height:32px}.day-number{font-size:.8rem}.day-number-alt{font-size:.55rem;bottom:2px;right:2px}.astronomical-icon{font-size:.65rem;top:2px;right:2px}.day-cell.today{border-width:2px}.calendar-header-row .day-headers{grid-column:1 / -1}}.day-cell.school-holiday:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(-45deg,transparent,transparent 5px,rgba(100,100,100,.08) 5px,rgba(100,100,100,.08) 6px);pointer-events:none;z-index:1}.region-toggle{display:flex;position:relative;background:#ecf0f1;border-radius:16px;padding:2px}.region-toggle-slider{position:absolute;top:2px;left:2px;width:calc(33.33% - 2px);height:calc(100% - 4px);background:#2c3e50;border-radius:14px;transition:transform .25s ease;pointer-events:none}.region-toggle-slider.midden{transform:translate(100%)}.region-toggle-slider.zuid{transform:translate(200%)}.region-toggle-button{padding:4px 10px;border:none;background:transparent;cursor:pointer;border-radius:14px;font-size:.75rem;font-weight:600;color:#2c3e50;transition:color .25s ease;position:relative;z-index:1}.region-toggle-button:hover{background:transparent}.region-toggle-button.active{color:#fff;background:transparent}.settings-dropdown{position:relative}.settings-gear-button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:#ecf0f1;border-radius:50%;cursor:pointer;color:#2c3e50;transition:background .2s,transform .2s}.settings-gear-button:hover{background:#d5dbdb;transform:rotate(30deg)}.settings-gear-button[aria-expanded=true]{background:#2c3e50;color:#fff}.settings-menu{position:absolute;right:0;top:calc(100% + 8px);background:#fff;border-radius:12px;box-shadow:0 4px 20px #00000026;padding:12px 16px;min-width:260px;z-index:100}.settings-item{display:flex;align-items:center;justify-content:space-between;padding:8px 0}.settings-item.sub-item{padding-left:12px}.settings-item.disabled{opacity:.4;pointer-events:none}.settings-label{font-size:.85rem;font-weight:500;color:#2c3e50}.settings-divider{height:1px;background:#ecf0f1;margin:4px 0}.settings-toggle{position:relative;width:40px;height:22px;border:none;border-radius:11px;background:#ccc;cursor:pointer;transition:background .25s ease;padding:0}.settings-toggle.on{background:#2c3e50}.settings-toggle-knob{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .25s ease;box-shadow:0 1px 3px #0003}.settings-toggle.on .settings-toggle-knob{transform:translate(18px)}.settings-region-toggle,.settings-lang-toggle{display:flex;position:relative;background:#ecf0f1;border-radius:14px;padding:2px}
