.holiday-2027-page {
  max-width: 72rem;
  padding-top: 1rem;
  color: #0f172a;
}

.forecast-hero {
  position: relative;
  overflow: hidden;
  margin-bottom: 18px;
  padding: clamp(24px, 5vw, 54px);
  color: #e0f2fe;
  background: #0f172a;
  border-radius: 22px;
  isolation: isolate;
}

.forecast-hero::after {
  position: absolute;
  z-index: -1;
  right: -90px;
  bottom: -150px;
  width: 380px;
  height: 380px;
  border: 1px solid rgba(125, 211, 252, .24);
  border-radius: 50%;
  box-shadow: 0 0 0 28px rgba(125, 211, 252, .04), 0 0 0 58px rgba(125, 211, 252, .035), 0 0 0 94px rgba(125, 211, 252, .025);
  content: '';
}

.hero-topline,
.section-index {
  color: #7dd3fc;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .14em;
}

.hero-topline { display: flex; align-items: center; gap: 9px; }
.hero-dot { width: 7px; height: 7px; background: #38bdf8; border-radius: 50%; box-shadow: 0 0 0 5px rgba(56, 189, 248, .14); }
.hero-line { width: 56px; height: 1px; margin-left: 4px; background: rgba(125, 211, 252, .4); }

.hero-content { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-top: 22px; }
.forecast-hero h1 { margin: 0; color: #f8fafc; font-size: clamp(2.25rem, 6vw, 5rem); font-weight: 800; letter-spacing: -.06em; line-height: 1.05; }
.forecast-hero h1 span { color: #38bdf8; }
.hero-subtitle { margin: 17px 0 0; color: #bae6fd; font-size: clamp(1rem, 2vw, 1.25rem); }
.hero-note { display: flex; align-items: center; gap: 8px; margin: 18px 0 0; color: #94a3b8; font-size: .82rem; line-height: 1.5; }
.note-icon { display: inline-grid; place-items: center; width: 18px; height: 18px; color: #0f172a; background: #fbbf24; border-radius: 50%; font-size: 12px; font-weight: 800; font-family: Georgia, serif; }
.hero-year-mark { display: flex; flex-direction: column; align-items: center; padding: 8px 5px 0 28px; border-left: 1px solid rgba(125, 211, 252, .24); }
.hero-year-mark strong { color: #bae6fd; font-size: clamp(4.5rem, 12vw, 8.5rem); font-weight: 800; letter-spacing: -.1em; line-height: .82; }
.hero-year-mark span { margin-top: 12px; color: #7dd3fc; font-size: .9rem; letter-spacing: .2em; }
.hero-actions { display: flex; align-items: center; gap: 18px; margin-top: 34px; }
.primary-action,
.quiet-action { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; gap: 8px; border-radius: 999px; font-size: .88rem; font-weight: 800; transition: background-color .2s ease, color .2s ease, transform .2s ease; }
.primary-action { padding: 0 17px; color: #082f49; background: #7dd3fc; }
.primary-action:hover, .primary-action:focus-visible { color: #0c4a6e; background: #e0f2fe; transform: translateY(-1px); }
.primary-action svg { width: 18px; height: 18px; }
.quiet-action { color: #94a3b8; }
.quiet-action:hover, .quiet-action:focus-visible { color: #e0f2fe; }

.forecast-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; margin-bottom: 64px; overflow: hidden; background: #cbd5e1; border: 1px solid #cbd5e1; border-radius: 14px; }
.strip-item { min-height: 92px; padding: 17px 20px; background: #fff; }
.strip-value { display: block; color: #0f172a; font-size: 1.8rem; font-weight: 800; letter-spacing: -.04em; }
.strip-label { display: block; margin-top: 5px; color: #64748b; font-size: .76rem; }
.strip-status { display: flex; flex-direction: column; justify-content: center; }
.status-pill { display: inline-flex; align-items: center; width: fit-content; gap: 6px; padding: 5px 9px; color: #92400e; background: #fef3c7; border-radius: 999px; font-size: .75rem; font-weight: 800; }
.status-pill::before { width: 6px; height: 6px; background: #f59e0b; border-radius: 50%; content: ''; }

.rhythm-section, .schedule-section { margin-bottom: 62px; }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 20px; }
.section-heading h2, .estimate-notice h2, .next-tools h2 { margin: 7px 0 0; color: #0f172a; font-size: clamp(1.5rem, 3vw, 2.1rem); letter-spacing: -.045em; line-height: 1.2; }
.section-heading p { margin: 0 0 3px; color: #64748b; font-size: .86rem; }

.holiday-cards { display: grid; grid-template-columns: repeat(7, 1fr); gap: 9px; }
.holiday-card { min-height: 158px; padding: 14px; background: #fff; border: 1px solid #dbe4ee; border-radius: 13px; box-shadow: 0 5px 15px rgba(15, 23, 42, .04); transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
.holiday-card:hover { border-color: #7dd3fc; box-shadow: 0 10px 22px rgba(14, 116, 144, .09); transform: translateY(-2px); }
.card-month { color: #0369a1; font-size: .73rem; font-weight: 800; letter-spacing: .08em; }
.card-date { margin-top: 17px; color: #0f172a; font-size: 1.35rem; font-weight: 800; letter-spacing: -.05em; }
.card-name { margin-top: 4px; color: #334155; font-size: .85rem; font-weight: 700; }
.card-days { display: inline-block; margin-top: 14px; padding: 4px 7px; color: #0369a1; background: #e0f2fe; border-radius: 5px; font-size: .7rem; font-weight: 700; }
.card-days.is-short { color: #92400e; background: #fef3c7; }

.schedule-section { padding: clamp(18px, 3vw, 30px); background: #f8fafc; border: 1px solid #dbe4ee; border-radius: 18px; }
.schedule-heading { margin-bottom: 24px; }
.filter-wrap { display: flex; align-items: center; gap: 10px; }
.filter-wrap label { color: #64748b; font-size: .82rem; font-weight: 700; }
.filter-wrap .form-input { width: 150px; min-height: 40px; padding: 0 10px; color: #0f172a; background: #fff; border: 1px solid #cbd5e1; border-radius: 8px; }
.table-container { overflow-x: auto; background: #fff; border: 1px solid #e2e8f0; border-radius: 10px; }
.holiday-table { width: 100%; min-width: 650px; border-collapse: collapse; }
.holiday-table th, .holiday-table td { padding: 13px 14px; border-bottom: 1px solid #eef2f7; text-align: left; }
.holiday-table th { color: #64748b; background: #f8fafc; font-size: .78rem; font-weight: 800; }
.holiday-table td { color: #334155; font-size: .84rem; }
.holiday-table tbody tr:last-child td { border-bottom: 0; }
.holiday-table tbody tr:hover { background: #f8fcff; }
.badge { display: inline-flex; align-items: center; padding: 4px 8px; border-radius: 999px; font-size: .72rem; font-weight: 800; }
.badge-holiday { color: #0369a1; background: #e0f2fe; }
.badge-work { color: #92400e; background: #fef3c7; }
.table-caption { margin: 13px 2px 0; color: #64748b; font-size: .75rem; line-height: 1.6; }

.estimate-notice { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 16px; align-items: start; margin: 0 0 26px; padding: 22px; background: #fffbeb; border: 1px solid #fde68a; border-radius: 16px; }
.estimate-seal { display: grid; place-items: center; width: 45px; height: 45px; color: #b45309; background: #fef3c7; border-radius: 12px; }
.estimate-seal svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.estimate-notice .section-index { color: #b45309; }
.estimate-notice h2 { margin-top: 4px; font-size: 1.1rem; }
.estimate-notice p { margin: 7px 0 0; color: #78350f; font-size: .82rem; line-height: 1.7; }

.next-tools { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 20px 0 8px; border-top: 1px solid #e2e8f0; }
.next-tools h2 { margin-top: 5px; font-size: 1.2rem; }
.next-tools-links { display: flex; flex-wrap: wrap; justify-content: end; gap: 8px; }
.next-tools-links a { display: inline-flex; align-items: center; gap: 10px; min-height: 40px; padding: 0 12px; color: #334155; background: #fff; border: 1px solid #cbd5e1; border-radius: 8px; font-size: .78rem; font-weight: 700; transition: color .2s ease, border-color .2s ease, background-color .2s ease; }
.next-tools-links a:hover, .next-tools-links a:focus-visible { color: #0369a1; background: #f0f9ff; border-color: #7dd3fc; }
.next-tools-links span { color: #0369a1; font-size: 1rem; }

@media (max-width: 1020px) { .holiday-cards { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 700px) {
  .holiday-2027-page { padding: .75rem; }
  .hero-content, .section-heading, .next-tools { align-items: flex-start; flex-direction: column; }
  .hero-year-mark { position: absolute; right: 26px; top: 78px; padding-left: 16px; }
  .hero-year-mark strong { font-size: 5rem; }
  .hero-note { max-width: 75%; }
  .hero-actions { align-items: stretch; flex-direction: column; gap: 10px; }
  .primary-action, .quiet-action { width: 100%; }
  .forecast-strip { grid-template-columns: repeat(2, 1fr); }
  .holiday-cards { grid-template-columns: repeat(2, 1fr); }
  .holiday-card { min-height: 138px; }
  .schedule-heading { gap: 14px; }
  .filter-wrap { width: 100%; justify-content: space-between; }
  .filter-wrap .form-input { width: 62%; }
  .next-tools-links { justify-content: start; }
}
@media (max-width: 390px) { .holiday-cards { grid-template-columns: 1fr 1fr; gap: 7px; } .holiday-card { padding: 11px; } .hero-year-mark { right: 18px; } }
@media (prefers-reduced-motion: reduce) { .primary-action, .holiday-card, .next-tools-links a { transition: none; } }
