.holiday-world{
  position:relative;
  margin:0 auto 76px;
  padding:44px clamp(18px,5vw,54px) 50px;
  overflow:hidden;
  background:#FFFDFC;
  border:3px dashed var(--pink-soft);
  border-radius:32px;
  box-shadow:0 6px 0 rgba(85,73,74,.05);
}
.holiday-world::before,.holiday-world::after{
  content:"";
  position:absolute;
  width:70px;
  height:70px;
  border-radius:50%;
  opacity:.38;
  pointer-events:none;
}
.holiday-world::before{top:-27px;left:7%;background:var(--yellow-soft)}
.holiday-world::after{right:-24px;bottom:9%;background:var(--blue-soft)}
.holiday-world__intro{position:relative;z-index:1;text-align:center;margin-bottom:28px}
.holiday-world__intro h2{font-size:clamp(1.65rem,4vw,2.25rem)}
.holiday-world__intro p:last-child{margin-top:8px;color:var(--ink-soft)}
.holiday-calendar{
  position:relative;
  z-index:1;
  width:min(720px,100%);
  margin:auto;
  padding:24px;
  background:var(--bg);
  border:2px solid #F3C4BF;
  border-radius:26px;
  box-shadow:0 5px 0 rgba(85,73,74,.05);
}
.holiday-calendar__top{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;margin-bottom:16px}
.holiday-calendar__top h3{font-family:'M PLUS Rounded 1c',sans-serif;font-size:clamp(1.25rem,3vw,1.65rem);letter-spacing:.05em}
.holiday-calendar__ribbon{justify-self:end;padding:4px 10px;border-radius:999px;background:var(--pink-soft);color:#A95F61;font-size:.66rem;font-weight:800;letter-spacing:.1em}
.holiday-calendar__sparkle{justify-self:start;color:var(--yellow);font-size:1.25rem;transform:rotate(8deg)}
.holiday-calendar__month-nav{display:flex;align-items:center;justify-content:center;gap:10px}
.holiday-calendar__month-nav h3{min-width:128px;text-align:center}
.holiday-calendar__arrow{display:grid;place-items:center;width:34px;height:34px;border:2px solid var(--pink-soft);border-radius:50%;background:var(--white);color:#A95F61;font-size:1.45rem;font-weight:800;line-height:1;cursor:pointer;transition:background .2s ease,transform .2s ease,opacity .2s ease}
.holiday-calendar__arrow:hover:not(:disabled){background:var(--pink-soft);transform:translateY(-2px)}
.holiday-calendar__arrow:disabled{opacity:.28;cursor:default}
.holiday-calendar__weekdays,.holiday-calendar__days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}
.holiday-calendar__weekdays{margin-bottom:7px;text-align:center;font-weight:800;font-size:.82rem;color:var(--ink-soft)}
.holiday-calendar__weekdays span:first-child{color:#C96F73}
.holiday-calendar__weekdays span:last-child{color:#6494AA}
.calendar-day{
  position:relative;
  min-width:0;
  min-height:70px;
  padding:7px;
  overflow:hidden;
  background:var(--white);
  border:1.5px solid #EADDD9;
  border-radius:15px;
}
.calendar-day--empty{background:transparent;border-color:transparent}
.calendar-day--sunday{background:#FFF4F3;color:#B85E63}
.calendar-day--saturday{background:#F2F8FA;color:#5E8EA3}
.calendar-day--holiday{background:#FFF0ED;border:2px dashed #E79A92;color:#A95458}
.calendar-day--today{box-shadow:inset 0 0 0 2px var(--blue),0 3px 0 rgba(130,181,201,.13)}
.calendar-day__number{position:relative;z-index:2;font-family:'M PLUS Rounded 1c',sans-serif;font-weight:800;line-height:1}
.calendar-day__today{position:absolute;z-index:3;top:5px;right:5px;padding:1px 5px;border-radius:999px;background:var(--blue-soft);color:#557F91;font-size:.48rem;font-weight:900;letter-spacing:.06em}
.calendar-day__holiday-name{position:absolute;z-index:2;left:7px;right:7px;bottom:6px;font-size:.6rem;font-weight:800;line-height:1.25}
.calendar-day__mascot{position:absolute;right:-1px;top:15px;width:52px;height:52px;object-fit:contain;filter:drop-shadow(0 2px 0 rgba(85,73,74,.08));pointer-events:none;user-select:none;-webkit-user-drag:none;animation:holiday-pop 2.8s ease-in-out infinite}
.holiday-calendar__empty{margin:14px auto 0;width:max-content;max-width:100%;padding:5px 13px;border-radius:999px;background:var(--lavender-soft);color:#776789;text-align:center;font-size:.76rem;font-weight:700}
.holiday-calendar__note{margin-top:15px;text-align:center;color:var(--ink-soft);font-size:.75rem}
.holiday-calendar__note span{display:inline-grid;place-items:center;width:25px;height:20px;margin-right:4px;border-radius:8px;background:var(--pink-soft);color:#A95F61;font-size:.58rem;font-weight:900}
@keyframes holiday-pop{0%,100%{transform:translateY(1px) rotate(-1deg)}50%{transform:translateY(-3px) rotate(1deg)}}
@media(hover:hover){.calendar-day--holiday:hover .calendar-day__mascot{animation-duration:.75s}}
@media(max-width:620px){
  .holiday-world{margin-bottom:58px;padding:34px 12px 38px;border-radius:26px}
  .holiday-world__intro p:last-child br{display:none}
  .holiday-calendar{padding:16px 9px;border-radius:21px}
  .holiday-calendar__top{grid-template-columns:1fr;gap:6px;margin-bottom:12px}
  .holiday-calendar__ribbon{justify-self:center;padding:3px 7px;font-size:.55rem}
  .holiday-calendar__sparkle{display:none}
  .holiday-calendar__month-nav{grid-row:2;gap:8px}
  .holiday-calendar__month-nav h3{min-width:112px}
  .holiday-calendar__arrow{width:30px;height:30px;font-size:1.25rem}
  .holiday-calendar__weekdays,.holiday-calendar__days{gap:3px}
  .calendar-day{min-height:62px;padding:5px 4px;border-radius:10px}
  .calendar-day__number{font-size:.78rem}
  .calendar-day__today{top:3px;right:2px;padding:1px 3px;font-size:.38rem}
  .calendar-day__mascot{top:16px;right:-1px;width:36px;height:36px}
  .calendar-day__holiday-name{left:3px;right:3px;bottom:4px;font-size:.48rem;line-height:1.1}
  .holiday-calendar__empty{margin-top:10px;font-size:.68rem}
}
@media(max-width:380px){
  .calendar-day{min-height:58px}
  .calendar-day__mascot{top:17px;width:31px;height:31px}
  .calendar-day__holiday-name{font-size:.44rem}
}
@media(prefers-reduced-motion:reduce){.calendar-day__mascot{animation:none}}
