.calendar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.calendar-head h2{margin:0;font-size:30px}.calendar-head button{width:38px;height:38px;color:var(--tool-ink);border:1px solid var(--tool-line);border-radius:50%;background:transparent;transition:.2s}.calendar-head button:hover{color:#fff;border-color:var(--tool-ink);background:var(--tool-ink);transform:translateY(-1px)}
.calendar-legend{margin-bottom:13px;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px 13px;color:#77736b;font-size:9px}.calendar-legend span{display:flex;align-items:center;gap:5px;white-space:nowrap}.calendar-legend i{width:12px;height:12px;border:1px solid rgba(42,39,34,.12);border-radius:2px}.legend-sat{background:#e8f1f7}.legend-sun{background:#faeeeb}.legend-holiday{background:#f7dcd6}.legend-substitute{background:#f8e5bd}.calendar-legend .legend-today{background:transparent;box-shadow:inset 0 0 0 2px var(--tool-ink)}
.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);overflow:hidden;border-top:1px solid var(--tool-line);border-left:1px solid var(--tool-line);border-radius:5px}.weekday,.day{min-height:112px;padding:10px;border-right:1px solid var(--tool-line);border-bottom:1px solid var(--tool-line)}.weekday{min-height:36px;color:#858179;background:#ece9e2;font:9px var(--mono);text-align:center}.weekday.sun-label{color:#bd4a42;background:#f4e8e5}.weekday.sat-label{color:#35689b;background:#e6edf2}
.day{position:relative;background:rgba(255,255,255,.3);transition:background .18s,box-shadow .18s}.day:hover{z-index:1;box-shadow:inset 0 0 0 1px rgba(39,36,31,.34)}.day.sat{background:#e8f1f7}.day.sun{background:#faeeeb}.day.holiday.public-holiday{background:#f7dcd6}.day.holiday.substitute{background:#f8e5bd}.day.muted{opacity:.34;filter:saturate(.55)}.day.today{z-index:2;box-shadow:inset 0 0 0 2px var(--tool-ink)}.day strong{font:500 13px var(--mono)}.day.sun strong,.day.holiday strong{color:var(--tool-accent)}.day.sat strong{color:#35689b}.day.substitute strong{color:#9a6200}
.holiday-kind{position:absolute;top:9px;right:9px;padding:2px 5px;color:#fff;border-radius:2px;background:var(--tool-accent);font:600 7px var(--mono);letter-spacing:.04em}.day.substitute .holiday-kind{color:#684400;background:#e9b54d}.holiday-name{margin:14px 18px 0 0;color:#a63830;font-size:9px;font-weight:600;line-height:1.45;word-break:keep-all}.day.substitute .holiday-name{color:#815300}
.calendar-side{display:grid;gap:10px;align-content:start}.holiday-item{padding:13px 0;display:grid;grid-template-columns:44px 1fr;border-bottom:1px solid var(--tool-line)}.holiday-item i{color:var(--tool-accent);font:normal 10px var(--mono)}.holiday-item b{font-size:11px}.holiday-item.is-substitute i,.holiday-item.is-substitute b{color:#946000}.holiday-summary{padding:22px;color:#fff;border-radius:6px;background:var(--tool-ink)}.holiday-summary strong{font:500 42px var(--mono)}
@media(max-width:900px){.calendar-layout{grid-template-columns:1fr!important}.day{min-height:82px}.calendar-side{grid-template-columns:minmax(160px,.45fr) 1fr}.calendar-side .tool-status{grid-column:1/-1}}
@media(max-width:620px){.calendar-legend{justify-content:flex-start}.weekday,.day{min-height:64px;padding:6px}.holiday-kind{top:5px;right:5px;padding:1px 3px}.holiday-name{margin-top:6px;margin-right:0;font-size:7px;line-height:1.25}.calendar-head h2{font-size:24px}.calendar-side{grid-template-columns:1fr}.calendar-side .tool-status{grid-column:auto}}
@media(max-width:430px){.calendar-legend{gap:6px 9px}.calendar-legend span{font-size:8px}.day{min-height:58px}.holiday-name{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.holiday-kind{display:none}}
