.three-calendar-page { max-width: 1700px; }
.three-calendar-months { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem; }
.three-calendar-month { border: 1px solid #dbe2ed; border-radius: 16px; overflow: hidden; background: #fff; box-shadow: 0 5px 20px #25335a09; }
.three-calendar-month h2 { margin: 0; padding: 1.25rem .75rem; text-align: center; font-size: 1.45rem; color: #4838a0; background: #f5f3ff; }
.three-calendar-table { width: 100%; table-layout: fixed; border-collapse: collapse; }
.three-calendar-table th { text-align: center; font-size: .8rem; padding: .7rem 0; color: #526078; }
.three-calendar-table td { height: 91px; padding: .4rem .2rem; vertical-align: top; border-top: 1px solid #e4e9f0; border-right: 1px solid #e4e9f0; }
.three-calendar-table td:last-child { border-right: 0; }
.three-calendar-table .is-weekend, .calendar-weekend-key { background: #e8f4ff; }
.three-calendar-table time { display: block; width: 1.8rem; line-height: 1.8rem; margin: 0 auto; text-align: center; font-weight: 600; font-size: .95rem; }
.three-calendar-table .is-today { box-shadow: inset 0 0 0 2px #6350bf; }
.three-calendar-table .is-today time { border-radius: 50%; background: #6350bf; color: white; }
.calendar-phase { display: flex; flex-direction: column; align-items: center; text-align: center; font-size: .64rem; line-height: 1.2; color: #36445a; }
.calendar-moon { font-size: 1.45rem; line-height: 1.4; }
.calendar-weekend-key { display: inline-block; width: 1rem; height: 1rem; border: 1px solid #c5dff5; vertical-align: middle; border-radius: 3px; }
#three-calendar-content[aria-busy="true"] { opacity: .55; cursor: progress; }
@media (max-width: 1100px) { .three-calendar-months { grid-template-columns: 1fr; max-width: 750px; margin: auto; } .three-calendar-table td { height: 95px; } .calendar-phase { font-size: .75rem; } }
@media (prefers-reduced-motion: no-preference) { #three-calendar-content { transition: opacity .15s; } .three-calendar-months { animation: calendar-enter .22s ease-out; } @keyframes calendar-enter { from { opacity: .4; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } }
.calendar-holiday-planner { width: 70%; margin-left: auto; margin-right: auto; padding: 1.1rem 1.25rem; background: #fff9db; border: 1px solid #eee0a4; border-radius: 14px; }
#calendar-holiday-summary { font-weight: 600; color: #423589; }
.three-calendar-table td:has(.calendar-select-day) { padding: 0; }
.calendar-select-day { display: block; width: 100%; min-height: 91px; height: 100%; padding: .4rem .2rem; border: 0; background: transparent; color: inherit; text-align: inherit; cursor: pointer; }
.calendar-select-day:hover { background: #6350bf12; }
.calendar-select-day:focus-visible { outline: 3px solid #423589; outline-offset: -3px; }
.three-calendar-table .is-selected-range { background: #ede7ff; }
.three-calendar-table .is-selected-range.is-weekend { background: #d8e9ff; }
.three-calendar-table .is-range-endpoint .calendar-select-day { box-shadow: inset 0 0 0 2px #6350bf; }
.three-calendar-table .is-range-endpoint time { background: #6350bf; color: white; border-radius: 50%; }

@media (max-width: 767px) { .calendar-holiday-planner { width: 100%; } }
#calendar-holiday-summary { display: flex; flex-wrap: wrap; align-items: center; gap: .65rem .85rem; }
.calendar-range-totals { display: inline-flex; flex-wrap: wrap; gap: .5rem; }
.calendar-range-stat { display: inline-block; padding: .45rem .75rem; border: 1px solid transparent; border-radius: 8px; font-weight: 700; line-height: 1.4; }
.calendar-range-stat--total { background: #e8dfff; border-color: #c8b4ef; color: #493080; }
.calendar-range-stat--weekdays { background: #ffe8ce; border-color: #e7bc8b; color: #784814; }
.calendar-range-stat--weekends { background: #dceeff; border-color: #accdec; color: #234f7c; }
.calendar-range-hint { font-size: .875rem; font-weight: 400; color: #5e5869; }
.calendar-bank-holiday-key { display: inline-block; width: 1rem; height: 1rem; border: 1px solid #b8bec7; background: #e5e7eb; border-radius: 3px; vertical-align: middle; }
.three-calendar-table td.is-bank-holiday { background: #e5e7eb; }
.three-calendar-table td.is-bank-holiday.is-selected-range { background: #dcd6ec; }
.calendar-bank-holiday-label { display: block; padding: .2rem .1rem; color: #414754; font-size: .65rem; font-weight: 600; text-align: center; line-height: 1.2; overflow-wrap: anywhere; }
.calendar-range-stat--working { background: #dcf3e5; border: 3px solid #328455; color: #205c3b; }
.calendar-range-stat--holidays { background: #e5e7eb; border-color: #b8bec7; color: #414754; }

.calendar-date-range { width: fit-content; max-width: 100%; margin-left: auto; margin-right: auto; padding: .4rem 1.75rem; border-radius: 6px; background: #0d6efd; color: #fff; font-weight: 700; font-size: 1.1rem; }
