/* TDR GO — 混雑予想・リアルタイム共通スタイル */
:root {
  --green-1:#edfaf3; --yellow-1:#fffbec; --red-1:#ffe6e6; --red-2:#ffb6b6; --red-3:#981b1b; --purple-1:#9b5de5;
  --rank-ss:#fff; --rank-ss-bg:var(--red-3); --rank-ss-border:#741010;
  --rank-s:#c8211d; --rank-s-bg:var(--red-2); --rank-s-border:#ea7777;
  --rank-a:#e53935; --rank-a-bg:var(--red-1); --rank-a-border:#ffb6bd;
  --rank-b:#d4a017; --rank-b-bg:var(--yellow-1); --rank-b-border:#ffe082;
  --rank-c:#2dbf7f; --rank-c-bg:var(--green-1); --rank-c-border:#a5d6c0;
  --grey:#d6e3ed;
}
.page-wrap  { --sidebar-width:340px; max-width:var(--content-width); margin:0 auto; padding:16px var(--page-gutter) 56px; }
.two-col    { display:grid; grid-template-columns:minmax(0,1fr) var(--sidebar-width); gap:var(--content-gap); align-items:start; }
@media(max-width:780px){ .two-col { grid-template-columns:1fr; } }
.left-col   { min-width:0; }
.right-col  { display:flex; flex-direction:column; gap:var(--sidebar-gap); min-width:0; }
@media(min-width:781px){
  .right-col { padding-right:4px; }
}

/* カレンダーカード(見出し〜カレンダーを1枠にまとめる) */
.calendar-card { margin-bottom:var(--section-gap); }
/* 枠内では月ナビ・カレンダーの個別枠をフラット化(二重枠を防ぐ) */
.calendar-card .month-nav { background:none; border:0; box-shadow:none; padding:0; margin-bottom:14px; }
.calendar-card .legend-row { margin-bottom:14px; }
/* カレンダーグリッドは枠線・角丸は残しつつ影だけ除去(別カード感をなくす) */
.calendar-card .cal-wrap { box-shadow:none; margin-bottom:0; }

/* 月ナビ */
.month-nav      { display:flex; align-items:center; justify-content:space-between; background:var(--card-bg); border-radius:var(--radius); border:1px solid var(--border); padding:14px 18px; margin-bottom:18px; box-shadow:var(--shadow); }
.month-nav-btn  { width:36px; height:36px; padding:0; border-radius:50%; border:2px solid var(--border); background:var(--bg); color:var(--primary); cursor:pointer; display:flex; align-items:center; justify-content:center; transition:all .18s; }
.month-nav-btn::before { content:''; width:9px; height:9px; border-top:3px solid currentColor; border-right:3px solid currentColor; }
.month-nav-btn--prev::before { transform:translateX(2px) rotate(-135deg); }
.month-nav-btn--next::before { transform:translateX(-2px) rotate(45deg); }
.month-nav-btn:hover { background:var(--primary); color:#fff; border-color:var(--primary); }
.month-nav-btn:focus-visible { outline:3px solid color-mix(in srgb,var(--primary) 30%,transparent); outline-offset:2px; }
.month-nav-btn:disabled { opacity:.35; cursor:not-allowed; background:var(--bg); color:var(--text-muted); border-color:var(--border); }
.month-display  { text-align:center; }
.month-year     { font-family:'Nunito',sans-serif; font-size:22px; font-weight:900; color:var(--text-main); line-height:1; }
.month-sub      { font-size:11px; color:var(--text-muted); margin-top:3px; }

/* 凡例 */
.legend-row   { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:18px; }
.legend-item  { display:flex; align-items:center; gap:5px; padding:4px 10px; border-radius:50px; border:1px solid; font-size:11.5px; font-weight:700; }
.legend-item.SS { background:var(--rank-ss-bg); border-color:var(--rank-ss-border); color:var(--rank-ss); }
.legend-item.S { background:var(--rank-s-bg); border-color:var(--rank-s-border); color:var(--rank-s); }
.legend-item.A { background:var(--rank-a-bg); border-color:var(--rank-a-border); color:var(--rank-a); }
.legend-item.B { background:var(--rank-b-bg); border-color:var(--rank-b-border); color:var(--rank-b); }
.legend-item.C { background:var(--rank-c-bg); border-color:var(--rank-c-border); color:var(--rank-c); }
.legend-dot   { width:8px; height:8px; border-radius:50%; flex-shrink:0; }
.legend-item.SS .legend-dot { background:var(--rank-ss); }
.legend-item.S .legend-dot { background:var(--rank-s); }
.legend-item.A .legend-dot { background:var(--rank-a); }
.legend-item.B .legend-dot { background:var(--rank-b); }
.legend-item.C .legend-dot { background:var(--rank-c); }
.hours-legend     { font-size:11px; color:var(--text-muted); display:flex; align-items:center; gap:6px; padding:4px 10px; border:1px dashed var(--border); border-radius:50px; }
.hours-legend-dot { width:8px; height:8px; border-radius:50%; background:var(--rank-a); flex-shrink:0; }

/* カレンダー */
.cal-wrap        { background:var(--card-bg); border-radius:var(--radius); border:1px solid var(--border); box-shadow:var(--shadow-md); overflow:hidden; margin-bottom:var(--section-gap); }
.cal-dow-header  { display:grid; grid-template-columns:repeat(7,1fr); border-bottom:1px solid var(--border); }
.cal-dow         { text-align:center; padding:8px 0; font-size:11px; font-weight:700; color:var(--text-sub); }
.cal-dow:first-child { color:#e53935; }
.cal-dow:last-child  { color:var(--primary); }
.cal-grid        { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }
.cal-cell        { border-right:1px solid #eaf2fa; border-bottom:1px solid #eaf2fa; padding:5px 4px 6px; min-height:76px; min-width:0; overflow:hidden; cursor:pointer; transition:background .15s; position:relative; display:flex; flex-direction:column; align-items:center; gap:3px; }
.cal-cell:nth-child(7n) { border-right:none; }
.cal-cell:hover  { background:var(--primary-ultra); }
.cal-cell.empty  { background:#fafcff; cursor:default; }
.cal-cell.empty:hover { background:#fafcff; }
.cal-cell.weekend { background:#f5f9ff; }
/* 祝日は日曜と同じ扱い（背景・赤い日付番号）にする */
.cal-cell.holiday { background:#f5f9ff; }
.cal-cell.today  { background:var(--primary-pale) !important; }
.cal-cell.today::before { content:''; position:absolute; top:0;left:0;right:0; height:3px; background:var(--primary); }
.cal-cell.selected { box-shadow:inset 0 0 0 2px var(--primary); }
.cell-date       { font-family:'Nunito',sans-serif; font-size:13px; font-weight:800; line-height:1; width:22px; height:22px; display:flex; align-items:center; justify-content:center; border-radius:50%; flex-shrink:0; }
.cal-cell.today .cell-date { background:var(--primary); color:#fff; }
.cell-date.dow-weekday { color:var(--text-main); }
.cell-date.dow-sat { color:var(--primary); }
.cell-date.dow-sun,
.cell-date.date-holiday { color:#c62828; }
.cell-rank  { font-family:'Nunito',sans-serif; font-size:15px; font-weight:900; min-width:38px; height:26px; padding:0 6px; border-radius:6px; display:flex; align-items:center; justify-content:center; gap:3px; flex-shrink:0; }
.cell-rank-score { font-size:10px; font-weight:900; line-height:1; opacity:.82; }
.cell-rank.SS { min-width:42px; background:var(--rank-ss-bg); color:var(--rank-ss); border:1px solid var(--rank-ss-border); }
.cell-rank.S { background:var(--rank-s-bg); color:var(--rank-s); border:1px solid var(--rank-s-border); }
.cell-rank.A { background:var(--rank-a-bg); color:var(--rank-a); border:1px solid var(--rank-a-border); }
.cell-rank.B { background:var(--rank-b-bg); color:var(--rank-b); border:1px solid var(--rank-b-border); }
.cell-rank.C { background:var(--rank-c-bg); color:var(--rank-c); border:1px solid var(--rank-c-border); }
.cell-meteo { display:flex; align-items:center; justify-content:center; gap:3px; line-height:1; min-height:14px; }
.cell-icon  { font-size:13px; line-height:1; }
.cell-temp  { font-family:'Nunito',sans-serif; font-size:10px; font-weight:900; color:var(--text-sub); line-height:1; }
.cell-event { font-size:9px; color:var(--text-sub); text-align:center; line-height:1.2; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding:0 2px; width:100%; }
.cell-ticket { font-family:'Nunito',sans-serif; font-weight:900; color:var(--text-main); }
.cell-ticket.is-low { color:#2367b1; background:#e8f2ff; border:1px solid #a9cdf6; border-radius:5px; padding:1px 4px; width:auto; max-width:100%; }
.cell-ticket.is-high { color:#c8211d; background:#ffe2e2; border:1px solid #f0a0a0; border-radius:5px; padding:1px 4px; width:auto; max-width:100%; }
.cell-ticket-est { margin-left:2px; font-family:'Noto Sans JP',sans-serif; font-size:8px; font-weight:800; color:var(--text-muted); }
.cell-hours { font-family:'Nunito',sans-serif; font-size:9px; font-weight:800; line-height:1; padding:3px 5px; border-radius:5px; background:#eef6fc; color:var(--primary); border:1px solid #d5e9f7; white-space:nowrap; }
.cell-hours.special { background:#fff1dc; color:#b35c00; border-color:#ffd59a; }
.cell-hours.short   { background:#ffeaea; color:#c62828; border-color:#ffc4c4; }
.cell-hours.late    { background:#eef3ff; color:#315ab8; border-color:#c7d6ff; }
.cal-cell.special-hours { background:#fffaf0; }
.cal-cell.special-hours::after { content:''; position:absolute; top:5px; right:5px; width:7px; height:7px; border-radius:50%; background:var(--rank-a); box-shadow:0 0 0 2px #fff; }
.cal-cell.rank-SS { background:var(--rank-ss-bg); border-color:var(--rank-ss-border); }
.cal-cell.rank-SS .cell-date,
.cal-cell.rank-SS .cell-temp { color:#fff; }
.cal-cell.rank-S { background:var(--rank-s-bg); border-color:var(--rank-s-border); }
.cal-cell.rank-A { background:var(--rank-a-bg); border-color:var(--rank-a-border); }
.cal-cell.rank-B { background:var(--rank-b-bg); border-color:var(--rank-b-border); }
.cal-cell.rank-C { background:var(--rank-c-bg); border-color:var(--rank-c-border); }
.cal-cell.rank-SS.today { background:var(--rank-ss-bg)!important; }
.cal-cell.rank-S.today { background:var(--rank-s-bg)!important; }
.cal-cell.rank-A.today { background:var(--rank-a-bg)!important; }
.cal-cell.rank-B.today { background:var(--rank-b-bg)!important; }
.cal-cell.rank-C.today { background:var(--rank-c-bg)!important; }
.cal-cell.rank-SS:hover { background:#7d1414; }
.cal-cell.rank-S:hover { background:#ffa8a8; }
.cal-cell.rank-A:hover { background:#ffdada; }
.cal-cell.rank-B:hover { background:#fff4cf; }
.cal-cell.rank-C:hover { background:#dff7ea; }

@media(max-width:780px){
  .cal-wrap { width:100%; max-width:100%; }
  .cal-dow-header,
  .cal-grid { grid-template-columns:repeat(7,minmax(0,1fr)); }
  .cal-dow { min-width:0; padding:7px 0; font-size:10px; }
  .cal-cell { min-width:0; min-height:68px; padding:4px 2px 5px; gap:2px; overflow:hidden; }
  .cell-date { width:19px; height:19px; font-size:12px; }
  .cell-rank { min-width:34px; height:22px; padding:0 4px; border-radius:5px; font-size:13px; gap:2px; }
  .cell-rank-score { font-size:9px; }
  .cell-icon { font-size:11px; }
  .cell-temp { font-size:9px; }
  .cell-hours { max-width:100%; padding:2px 2px; font-size:7.5px; overflow:hidden; text-overflow:ellipsis; }
  .cell-event { display:none; }
}

/* 日別詳細 */
.day-detail { background:var(--card-bg); border-radius:var(--radius); border:1px solid var(--border); box-shadow:var(--shadow-md); margin-bottom:var(--section-gap); overflow:hidden; display:none; }
.day-detail.visible { display:block; animation:fadeInUp .25s ease; }
.day-detail-header  { padding:16px 20px; display:grid; grid-template-columns:36px minmax(0,1fr) 36px; align-items:center; gap:12px; border-bottom:1px solid var(--border); }
.day-detail-main { min-width:0; display:flex; align-items:center; justify-content:center; gap:12px; }
.day-detail-heading { min-width:0; text-align:left; }
.day-detail-date    { font-family:'Nunito',sans-serif; font-size:17px; font-weight:900; color:var(--text-main); }
.day-detail-rank    { font-family:'Nunito',sans-serif; font-size:22px; font-weight:900; width:40px; height:40px; border-radius:10px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.day-detail-rank.SS { width:44px; background:var(--rank-ss-bg); color:var(--rank-ss); border:1.5px solid var(--rank-ss-border); }
.day-detail-rank.S  { background:var(--rank-s-bg); color:var(--rank-s); border:1.5px solid var(--rank-s-border); }
.day-detail-rank.A  { background:var(--rank-a-bg); color:var(--rank-a); border:1.5px solid var(--rank-a-border); }
.day-detail-rank.B  { background:var(--rank-b-bg); color:var(--rank-b); border:1.5px solid var(--rank-b-border); }
.day-detail-rank.C  { background:var(--rank-c-bg); color:var(--rank-c); border:1.5px solid var(--rank-c-border); }
.day-detail-nav { width:36px; height:36px; padding:0; border-radius:50%; border:2px solid var(--border); background:var(--bg); color:var(--primary); cursor:pointer; display:flex; align-items:center; justify-content:center; }
.day-detail-nav::before { content:''; width:9px; height:9px; border-top:3px solid currentColor; border-right:3px solid currentColor; }
.day-detail-nav--prev::before { transform:translateX(2px) rotate(-135deg); }
.day-detail-nav--next::before { transform:translateX(-2px) rotate(45deg); }
.day-detail-nav:hover { background:var(--primary); color:#fff; border-color:var(--primary); }
.day-detail-nav:focus-visible { outline:3px solid color-mix(in srgb,var(--primary) 30%,transparent); outline-offset:2px; }
.day-detail-nav:disabled { opacity:.35; cursor:not-allowed; }
.day-detail-nav:disabled:hover { background:var(--bg); color:var(--primary); border-color:var(--border); }
.day-detail-body    { padding:16px 20px; display:flex; flex-wrap:wrap; gap:12px; }
.day-stat           { flex:1; min-width:110px; background:var(--bg); border-radius:var(--radius-sm); padding:10px 14px; border:1px solid var(--border); }
.day-stat-label     { font-size:10px; color:var(--text-muted); font-weight:700; margin-bottom:4px; text-transform:uppercase; letter-spacing:.5px; }
.day-stat-val       { font-family:'Nunito',sans-serif; font-size:18px; font-weight:900; color:var(--text-main); }
.day-stat-sub       { font-size:11px; color:var(--text-sub); margin-top:2px; }

/* スコア内訳 */
.score-breakdown { padding:16px 20px 20px; border-top:1px solid var(--border); background:var(--bg); }
.score-breakdown-title { font-size:10px; color:var(--text-muted); font-weight:700; margin-bottom:10px; text-transform:uppercase; letter-spacing:.5px; display:flex; align-items:center; gap:6px; }
.score-breakdown-title::before { content:''; display:inline-block; width:3px; height:11px; background:var(--primary); border-radius:2px; }
.sb-list   { display:flex; flex-direction:column; gap:2px; font-size:12px; }
.sb-row    { display:flex; justify-content:space-between; align-items:center; padding:3px 8px; border-radius:4px; }
.sb-row:hover { background:rgba(42,127,193,0.05); }
.sb-row .sb-label { color:var(--text-sub); }
.sb-row .sb-val   { font-family:'Nunito',sans-serif; font-weight:800; color:var(--text-main); }
.sb-row .sb-val.pos   { color:var(--rank-s); }
.sb-row .sb-val.boost { color:var(--rank-a); }
.sb-divider    { height:1px; background:var(--border); margin:4px 0; }
.sb-row.subtotal .sb-label { color:var(--text-main); font-weight:700; }
.sb-row.total  { padding:8px; background:var(--primary-ultra); border-radius:var(--radius-sm); margin-top:6px; }
.sb-row.total .sb-label { color:var(--primary); font-weight:700; }
.sb-row.total .sb-val   { font-size:16px; color:var(--primary); }

/* セクションカード */
.section-card { background:var(--card-bg); border-radius:var(--radius); border:1px solid var(--border); box-shadow:var(--shadow); padding:var(--card-pad); margin-bottom:var(--section-gap); position:relative; overflow:hidden; animation:fadeInUp .35s ease both; }
.section-card::before { content:''; position:absolute; top:0;left:0;right:0; height:3px; background:linear-gradient(90deg,var(--primary),var(--primary-light)); }
.right-col .section-card { animation-delay:.08s; }
/* カレンダー右下のデータ出典表記 */
.cal-attribution { text-align:right; margin-top:8px; }
.cal-attribution a { color:var(--text-muted); font-size:11px; font-weight:700; text-decoration:none; }
.cal-attribution a:hover { color:var(--primary); text-decoration:underline; }
.section-title { font-size:19px; line-height:1.45; font-weight:900; color:var(--text-main); display:flex; align-items:center; gap:8px; margin-bottom:16px; }
.section-title::before { content:''; display:inline-block; width:4px; height:16px; background:var(--primary); border-radius:2px; }

.forecast-summary-card { padding-bottom:20px; }
.forecast-summary-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.forecast-summary-panel { background:var(--bg); border:1px solid var(--border); border-radius:var(--radius-sm); padding:14px; min-width:0; }
.forecast-summary-title { font-size:14px; line-height:1.45; font-weight:900; color:var(--text-main); margin:0 0 12px; display:flex; align-items:center; gap:6px; }
.forecast-summary-title::before { content:''; display:inline-block; width:3px; height:13px; background:var(--primary); border-radius:2px; flex-shrink:0; }
@media(max-width:680px){ .forecast-summary-grid { grid-template-columns:1fr; } }

/* 月別14時台待ち時間 */
.month-peak-detail { background:var(--card-bg); border-radius:var(--radius); border:1px solid var(--border); box-shadow:var(--shadow); padding:16px 20px 20px; margin-bottom:var(--section-gap); overflow:hidden; }
.month-peak-head { display:flex; flex-direction:column; align-items:stretch; gap:4px; margin-bottom:10px; }
.month-peak-title { font-size:13px; font-weight:800; color:var(--text-main); display:flex; align-items:center; gap:6px; }
.month-peak-sub { font-size:11px; color:var(--text-sub); line-height:1.5; margin-top:3px; }
.month-peak-summary { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-start; margin-top:5px; }
.month-peak-pill { font-size:10.5px; font-weight:800; color:var(--primary); background:#fff; border:1px solid var(--border); border-radius:50px; padding:3px 8px; white-space:nowrap; }
.month-peak-pill--popular { color:#bd3c73; background:#fff0f6; border-color:#ffc0d9; }
.wait-area-block { margin-top:14px; }
.wait-area-block:first-of-type,
.month-peak-head + .wait-area-block { margin-top:0; }
.wait-area-head { display:flex; align-items:center; gap:8px; padding:7px 4px; }
.wait-area-icon { width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:#fff; font-size:13px; flex-shrink:0; }
.wait-area-icon--popular { background:linear-gradient(135deg,#f4a7c5,#d75c91); font-size:12px; }
.wait-area-name { font-size:13px; font-weight:800; color:var(--text-main); }
.wait-area-count { font-size:11px; color:var(--text-sub); font-weight:700; }
.wait-area-block--popular { padding:10px; border:1px solid #ffd2e3; border-radius:var(--radius-sm); background:#fff8fb; }
.wait-area-block--popular .wait-area-head { padding-top:0; }
.month-peak-table-wrap { overflow-x:auto; border:1px solid var(--border); border-radius:var(--radius-sm); background:#fff; }
.month-peak-table { border-collapse:separate; border-spacing:0; width:100%; min-width:920px; table-layout:fixed; }
.month-peak-table th { background:var(--primary-ultra); color:var(--text-sub); font-size:10px; font-weight:700; padding:7px 5px; border-bottom:1px solid var(--border); white-space:nowrap; text-align:center; }
.month-peak-table th:first-child { width:168px; position:sticky; left:0; z-index:2; background:var(--primary-ultra); text-align:left; min-width:168px; }
.month-peak-table th.month-peak-day { width:38px; }
.month-peak-table td { border-top:1px solid #edf5fb; border-right:1px solid #edf5fb; text-align:center; font-family:'Nunito',sans-serif; font-size:11.5px; font-weight:800; padding:5px; white-space:nowrap; overflow:hidden; }
.month-peak-table td:first-child { position:sticky; left:0; z-index:3; background:#fff; text-align:left; font-family:'Noto Sans JP',sans-serif; font-size:10px; line-height:1.35; color:var(--text-main); font-weight:700; max-width:168px; overflow:hidden; text-overflow:ellipsis; padding-left:3px; box-shadow:1px 0 0 #edf5fb; }
.month-peak-table tr:nth-child(even) td:first-child { background:#fbfdff; }
.month-peak-table tr.is-popular-attraction td:first-child { background:#fff8fb; border-left:0; }
.month-peak-table tr.is-popular-attraction:nth-child(even) td:first-child { background:#fff4f9; }
.month-peak-day.sun { background:#fff0f0; color:#c0392b; }
.month-peak-day.sat { background:#f0f4ff; color:#1a56db; }
.month-peak-day.selected { background:var(--primary)!important; color:#fff!important; }
.month-peak-cell.l1 { background:var(--green-1); color:#17613b; }
.month-peak-cell.l2 { background:var(--yellow-1); color:#715400; }
.month-peak-cell.l3 { background:var(--red-1); color:#8d2424; }
.month-peak-cell.l4 { background:var(--red-2); color:var(--rank-s); }
.month-peak-cell.l5 { background:var(--red-3); color:#fff; }
.month-peak-cell.closed { background:var(--grey); color:var(--text-muted); }
.month-peak-cell.no-data { background:#f4f7fa; color:var(--text-muted); font-size:9px; overflow:hidden; }
.month-peak-table tr td.month-peak-cell.no-data { background:#f4f7fa; }
.month-peak-area { font-size:10px; color:var(--text-muted); font-weight:600; margin-top:1px; }
.wait-attraction-name { vertical-align:middle; }
.rt-popular-badge { margin-right:3px; color:#e0669a; font-size:11px; vertical-align:middle; }
.wait-no-data { padding:16px 18px; border:1px dashed var(--border); border-radius:var(--radius-sm); background:#fbfdff; color:var(--text-muted); }
.wait-no-data-title { font-size:13px; font-weight:800; color:var(--text-main); margin-bottom:4px; }
.wait-no-data-text { font-size:12px; line-height:1.6; }

@media(max-width:580px){
  .month-peak-detail { padding:14px 14px 16px; }
  .month-peak-table { min-width:860px; }
}

/* 棒グラフ(曜日別) */
.dow-chart { display:flex; align-items:flex-end; gap:6px; height:90px; padding:0 4px; }
.dow-bar-wrap  { flex:1; display:flex; flex-direction:column; align-items:center; gap:5px; height:100%; justify-content:flex-end; }
.dow-bar-bg    { width:100%; background:#eaf2fa; border-radius:4px 4px 0 0; flex:1; display:flex; align-items:flex-end; overflow:hidden; }
.dow-bar-fill  { width:100%; border-radius:4px 4px 0 0; transition:height .6s ease; }
.dow-bar-label { font-size:11px; font-weight:700; color:var(--text-sub); }
.dow-bar-val   { font-family:'Nunito',sans-serif; font-size:11px; font-weight:800; margin-bottom:3px; }

/* 月バーチャート */
.month-chart { display:flex; align-items:flex-end; gap:2px; height:70px; overflow-x:auto; scrollbar-width:none; padding-bottom:2px; }
.month-chart::-webkit-scrollbar { display:none; }
.month-bar-wrap { display:flex; flex-direction:column; align-items:center; gap:3px; min-width:24px; flex:1; }
.month-bar-bg   { width:100%; max-width:22px; background:#eaf2fa; border-radius:3px 3px 0 0; height:60px; display:flex; align-items:flex-end; overflow:hidden; }
.month-bar-fill { width:100%; border-radius:3px 3px 0 0; transition:height .5s ease; }
.month-bar-date { font-size:8px; color:var(--text-muted); font-weight:700; }

/* 要注意日 / 狙い目日 */
.hot-list, .easy-list { display:flex; flex-direction:column; gap:7px; }
.hot-item, .easy-item { display:flex; align-items:center; gap:10px; padding:10px 13px; background:var(--bg); border-radius:var(--radius-sm); border:1px solid var(--border); transition:background .15s; cursor:default; }
.hot-item:hover  { background:var(--primary-pale); }
.easy-item:hover { background:var(--rank-c-bg); }
.hot-rank-badge  { font-family:'Nunito',sans-serif; font-size:13px; font-weight:900; width:30px; height:30px; border-radius:8px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.hot-rank-badge.SS { background:var(--rank-ss-bg); color:var(--rank-ss); border:1px solid var(--rank-ss-border); }
.hot-rank-badge.S { background:var(--rank-s-bg); color:var(--rank-s); border:1px solid var(--rank-s-border); }
.hot-rank-badge.A { background:var(--rank-a-bg); color:var(--rank-a); border:1px solid var(--rank-a-border); }
.hot-rank-badge.C { background:var(--rank-c-bg); color:var(--rank-c); border:1px solid var(--rank-c-border); }
.hot-item-main   { flex:1; }
.hot-item-date   { font-size:13px; font-weight:700; color:var(--text-main); }
.hot-item-reason { font-size:11px; color:var(--text-sub); margin-top:2px; }
.hot-item-icon   { font-size:18px; }

/* イベント */
.event-tabs { display:flex; gap:4px; margin-bottom:10px; }
.event-tab { flex:1; padding:6px 8px; border-radius:var(--radius-sm); border:1.5px solid var(--border); background:var(--bg); color:var(--text-sub); font-size:11px; font-weight:700; cursor:pointer; text-align:center; transition:all .18s; font-family:'Noto Sans JP',sans-serif; }
.event-tab.active { background:var(--primary); color:#fff; border-color:var(--primary); }
.event-tab:hover:not(.active) { border-color:var(--primary-light); color:var(--primary); }
.event-period-badge { display:inline-flex; align-items:center; gap:4px; padding:2px 7px; border-radius:50px; font-size:9.5px; font-weight:700; }
.event-period-badge.ongoing  { background:#e8f7ee; color:#1a9c60; border:1px solid #a0dfc0; }
.event-period-badge.upcoming { background:#eef3ff; color:#3060c0; border:1px solid #b0c8f0; }
.event-period-badge.ended    { background:#f3f3f3; color:#999; border:1px solid #ddd; }
.event-item   { padding:8px 0; border-bottom:1px solid #eaf2fa; display:flex; gap:8px; }
.event-item:last-child { border-bottom:none; padding-bottom:0; }
.event-thumb  { width:44px; height:44px; border-radius:10px; display:flex; align-items:center; justify-content:center; font-size:22px; flex-shrink:0; }
.event-info   { flex:1; min-width:0; }
.event-name   { font-size:12.5px; font-weight:800; color:var(--text-main); line-height:1.35; margin-bottom:2px; }
.event-dates  { font-size:10.5px; color:var(--text-sub); margin-top:2px; margin-bottom:2px; }
.event-desc   { font-size:11px; color:var(--text-muted); line-height:1.4; }
.event-tags   { display:flex; align-items:center; gap:4px; flex-wrap:wrap; margin:4px 0 2px; }
.event-tag    { font-size:9.5px; padding:1px 6px; border-radius:50px; font-weight:700; background:#f5f9ff; color:var(--text-sub); border:1px solid var(--border); }
.event-tag.land    { background:#fff0e8; color:#e06020; border:1px solid #ffd0b0; }
.event-tag.sea     { background:#e8f3ff; color:#2060c0; border:1px solid #b0d0f0; }
.event-tag.night   { background:#1a2a4a; color:#a0c8f0; border:1px solid #304060; }
.event-tag.special { background:#fff8e0; color:#b08000; border:1px solid #ffe080; }

/* 休止施設 */
.susp-tabs  { display:flex; gap:4px; margin-bottom:12px; }
.susp-tab   { flex:1; padding:6px 8px; border-radius:var(--radius-sm); border:1.5px solid var(--border); background:var(--bg); color:var(--text-sub); font-size:11px; font-weight:700; cursor:pointer; text-align:center; transition:all .18s; font-family:'Noto Sans JP',sans-serif; }
.susp-tab.active { background:var(--primary); color:#fff; border-color:var(--primary); }
.susp-tab:hover:not(.active) { border-color:var(--primary-light); color:var(--primary); }
.susp-item      { display:flex; align-items:flex-start; gap:9px; padding:10px 0; border-bottom:1px solid #eaf2fa; }
.susp-item:last-child { border-bottom:none; padding-bottom:0; }
.susp-icon-wrap { width:36px; height:36px; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:18px; flex-shrink:0; }
.susp-icon-wrap.planned   { background:#fff3cc; border:1px solid #ffe082; }
.susp-icon-wrap.emergency { background:#ffeaea; border:1px solid #ffcdd2; }
.susp-icon-wrap.seasonal  { background:#e8f3ff; border:1px solid #b0d0f0; }
.susp-info   { flex:1; min-width:0; }
.susp-name   { font-size:12.5px; font-weight:700; color:var(--text-main); line-height:1.3; }
.susp-area   { font-size:10px; color:var(--text-muted); margin-top:2px; }
.susp-period { font-size:11px; color:var(--text-sub); margin-top:3px; }
.susp-tags   { display:flex; align-items:center; gap:4px; flex-wrap:wrap; margin-top:4px; }
.susp-reason { display:inline-flex; align-items:center; gap:3px; font-size:10px; font-weight:700; padding:2px 7px; border-radius:50px; }
.susp-reason.planned   { background:#fff3cc; color:#a07000; border:1px solid #ffe082; }
.susp-reason.emergency { background:#ffeaea; color:#c02020; border:1px solid #ffcdd2; }
.susp-reason.seasonal  { background:#e8f3ff; color:#2060c0; border:1px solid #b0d0f0; }
.susp-reason.attraction { background:#fff3cc; color:#a07000; border:1px solid #ffe082; }
.susp-reason.show       { background:#e8f3ff; color:#2060c0; border:1px solid #b0d0f0; }
.susp-reason.facility   { background:#e8f7ee; color:#1a9c60; border:1px solid #a0dfc0; }
.schedule-more-btn { width:100%; margin-top:8px; padding:7px 10px; border:1.5px solid var(--border); border-radius:var(--radius-sm); background:#fff; color:var(--primary); font-size:11px; font-weight:800; cursor:pointer; font-family:'Noto Sans JP',sans-serif; }
.schedule-more-btn:hover { background:var(--primary-ultra); border-color:var(--primary-light); }

/* 開園情報 */
.info-row   { display:flex; justify-content:space-between; align-items:center; padding:8px 0; border-bottom:1px solid #eaf2fa; font-size:12px; }
.info-row:last-child { border-bottom:none; padding-bottom:0; }
.info-label { color:var(--text-sub); font-weight:600; }
.info-val   { font-weight:700; color:var(--text-main); }
.info-val.green  { color:var(--rank-c); }
.info-val.red    { color:var(--rank-s); }
.info-val.orange { color:var(--rank-a); }

/* ホテルパネル */
.hotel-panel { padding:14px 18px 18px; border-top:1px solid var(--border); background:#fbfdff; display:none; }
.hotel-panel.visible { display:block; }
.hotel-panel-title { font-size:13px; font-weight:800; color:var(--text-main); display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; }
.hotel-panel-title span { display:flex; align-items:center; gap:6px; }
.hotel-date-badge { font-size:10px; font-weight:800; color:var(--primary); background:var(--primary-ultra); border:1px solid var(--border); border-radius:50px; padding:3px 8px; white-space:nowrap; }
.hotel-lead { font-size:11.5px; color:var(--text-sub); line-height:1.55; margin-bottom:10px; }
.hotel-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.hotel-card { background:var(--bg); border:1px solid var(--border); border-radius:var(--radius-sm); padding:10px 11px; min-width:0; }
.hotel-card.recommended { background:#fff8e8; border-color:#ffd98a; }
.hotel-card-title { font-size:12px; font-weight:800; color:var(--text-main); line-height:1.35; margin-bottom:4px; }
.hotel-card-meta  { font-size:10.5px; color:var(--text-muted); line-height:1.45; margin-bottom:6px; }
.hotel-card-price { font-family:'Nunito',sans-serif; font-size:15px; font-weight:900; color:var(--primary); margin-bottom:5px; }
.hotel-card-tip   { font-size:10.5px; color:var(--text-sub); line-height:1.45; }
.hotel-tags  { display:flex; gap:4px; flex-wrap:wrap; margin-top:7px; }
.hotel-tag   { font-size:9.5px; font-weight:800; border-radius:50px; padding:2px 6px; background:#fff; border:1px solid var(--border); color:var(--text-sub); }
.hotel-tag.hot { background:#fff0f0; border-color:#ffcdd2; color:var(--rank-s); }
.hotel-booking-cta { margin-top:12px; padding:12px; border:1px solid var(--border); border-radius:var(--radius-sm); background:#fff; }
.hotel-booking-title { font-size:11px; color:var(--text-muted); font-weight:800; margin-bottom:8px; }
.hotel-booking-buttons { display:flex; flex-wrap:wrap; gap:8px; }
.hotel-booking-btn { flex:1 1 180px; display:flex; align-items:center; justify-content:center; min-height:36px; padding:9px 12px; border-radius:999px; text-decoration:none; font-size:12px; font-weight:900; transition:.15s; }
.hotel-booking-btn--rakuten { background:#f0fff0; border:1px solid #a8e8a8; color:#00b900; }
.hotel-booking-btn--jalan { background:#fff4ea; border:1px solid #ffc69c; color:#ff6600; }
.hotel-booking-btn--detail { flex-basis:100%; background:var(--primary-ultra); border:1px solid var(--border); color:var(--primary); }
.hotel-booking-btn--rakuten:hover { background:#00b900; border-color:#00b900; color:#fff; }
.hotel-booking-btn--jalan:hover { background:#ff6600; border-color:#ff6600; color:#fff; }
.hotel-booking-btn--detail:hover { background:var(--primary); border-color:var(--primary); color:#fff; }
.hotel-feature-card { display:grid; grid-template-columns:minmax(130px,38%) 1fr; gap:13px; padding:10px; border:1px solid var(--border); border-radius:var(--radius-sm); background:#fff; }
.hotel-feature-photo { position:relative; min-height:130px; overflow:hidden; border-radius:var(--radius-sm); background:#eaf2fa; }
.hotel-feature-photo img { width:100%; height:100%; min-height:130px; display:block; object-fit:cover; }
.hotel-feature-photo span { position:absolute; right:6px; bottom:6px; padding:2px 6px; border-radius:50px; background:rgba(255,255,255,.88); color:var(--text-muted); font-size:9px; font-weight:700; }
.hotel-feature-body { min-width:0; display:flex; flex-direction:column; justify-content:center; }
.hotel-feature-body h3 { margin:0 0 7px; color:var(--text-main); font-size:15px; line-height:1.35; font-weight:900; }
.hotel-feature-body p { margin:0 0 12px; color:var(--text-sub); font-size:12px; line-height:1.65; font-weight:700; }
.hotel-feature-buttons { margin-top:auto; }
@media(max-width:520px){
  .hotel-grid { grid-template-columns:1fr; }
  .hotel-panel-title { align-items:flex-start; flex-direction:column; }
  .hotel-feature-card { grid-template-columns:1fr; }
  .hotel-feature-photo,
  .hotel-feature-photo img { min-height:170px; }
}

@media(min-width:781px){
  .month-year{font-size:25px;}
  .section-title{font-size:22px;}
  .month-sub,
  .legend-item,
  .hours-legend,
  .cal-dow,
  .dow-bar-label,
  .dow-bar-val,
  .event-dates,
  .event-desc,
  .susp-period,
  .info-row,
  .hotel-lead,
  .hotel-booking-title,
  .hotel-booking-btn{font-size:13.5px;}
  .cell-date{font-size:15px;width:25px;height:25px;}
  .cell-rank{font-size:17px;width:29px;height:29px;}
  .cell-icon{font-size:15px;}
  .cell-temp{font-size:12px;}
  .cell-event,
  .cell-hours,
  .event-period-badge,
  .event-tag,
  .susp-area,
  .susp-reason,
  .hotel-date-badge,
  .hotel-card-meta,
  .hotel-card-tip,
  .hotel-tag{font-size:12px;}
  .day-detail-date{font-size:19px;}
  .day-stat-label,
  .score-breakdown-title{font-size:12px;}
  .day-stat-val{font-size:21px;}
  .day-stat-sub,
  .sb-list{font-size:14px;}
  .month-bar-date{font-size:10.5px;}
  .hot-rank-badge,
  .hot-item-date,
  .event-name,
  .hotel-panel-title,
  .hotel-card-title{font-size:15px;}
  .hot-item-reason,
  .susp-tab{font-size:13px;}
  .susp-name{font-size:14.5px;}
  .hotel-card-price{font-size:17px;}
}

/* ===== サイト説明（混雑予想ページ最下部） ===== */
.site-about p{font-size:13px;line-height:1.85;color:var(--text-main);margin:0 0 12px;}
.site-about-subtitle{font-size:15px;font-weight:800;color:var(--text-main);margin:22px 0 8px;padding-top:14px;border-top:1px solid var(--border);}
.site-about-list{margin:8px 0 16px;padding:0;list-style:none;display:grid;gap:8px;}
.site-about-list li{position:relative;padding:8px 12px 8px 30px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;line-height:1.6;color:var(--text-main);}
.site-about-list li::before{content:'';position:absolute;left:13px;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;background:var(--primary);}
.site-about-closing{font-weight:700;color:var(--primary);line-height:1.9;margin-top:16px;}
@media(max-width:560px){
  .site-about p,.site-about-list li{font-size:13.5px;}
  .site-about-subtitle{font-size:16px;}
}

/* アトラクション名ツールチップ(realtime.cssと共通仕様) */
.rt-tooltip { position: fixed; background: var(--text-main); color: #fff; padding: 6px 10px; border-radius: 6px; font-size: 12px; pointer-events: none; z-index: 1000; white-space: nowrap; opacity: 0; transition: opacity 0.1s; }
.rt-tooltip.show { opacity: 1; }
