:root {
  --green-1:#edfaf3; --green-2:#edfaf3;
  --yellow-1:#fffbec; --yellow-2:#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;
}

/* LAYOUT */
.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;}

/* NOTICE */
.notice-banner{background:#fffbe6;border:1px solid #ffe082;border-radius:var(--radius-sm);padding:11px 14px;margin:16px 0;font-size:11.5px;color:#8a6000;display:flex;gap:8px;line-height:1.6;}

/* MONTH NAV */
.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 */
.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;}

/* CALENDAR */
.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,1fr);}
.cal-cell{border-right:1px solid #eaf2fa;border-bottom:1px solid #eaf2fa;padding:5px 4px 6px;min-height:76px;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:#fff5f5;}
.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;}
.cal-cell.no-wait-data{background:#C0C0C0!important;border-color:#a9a9a9!important;box-shadow:none!important;}
.cal-cell.no-wait-data.today{background:#C0C0C0!important;}
.cal-cell.no-wait-data:hover{background:#C0C0C0!important;}
.cal-cell.no-wait-data::before{background:#8f8f8f!important;}
.cal-cell.no-wait-data::after{background:#8f8f8f!important;box-shadow:0 0 0 2px #c0c0c0!important;}
.cal-cell.no-wait-data .cell-date{color:#333;}
.cal-cell.no-wait-data.today .cell-date{background:#7f7f7f;color:#fff;}
.cell-rank.no-data{background:rgba(255,255,255,.62);color:#555;border:1px solid rgba(255,255,255,.85);}
.cal-cell.no-wait-data .cell-hours{background:rgba(255,255,255,.55);color:#555;border-color:rgba(255,255,255,.7);}
.cal-cell.no-wait-data .cell-icon,
.cal-cell.no-wait-data .cell-temp,
.cal-cell.no-wait-data .cell-event{color:#555;}

@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 */
.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 SECTION ACCORDION ── */
.day-section { border-top: 1px solid var(--border); }
.day-section:last-child { border-bottom: none; }
.day-section-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 20px;
  cursor: pointer;
  user-select: none;
  list-style: none;
  gap: 8px;
}
.day-section-title::-webkit-details-marker { display: none; }
.day-section-title::after {
  content: '▾';
  font-size: 14px;
  color: var(--text-muted);
  transition: transform .2s ease;
  flex-shrink: 0;
}
.day-section[open] > .day-section-title::after {
  transform: rotate(-180deg);
}
.day-section-h2 {
  font-size: 14px;
  font-weight: 900;
  color: var(--text-main);
}
.day-section-h3 {
  font-size: 13px;
  font-weight: 800;
  color: var(--text-sub);
}
.day-section-body { }
.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(計算内訳) */
.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{font-weight:700;}
.sb-row.subtotal .sb-label{color:var(--text-main);}
.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);}

/* SELECTED DAY WAIT DETAIL */
/* 余白は親(section-card)に委譲。独自の padding/枠/背景は付けず他エリアと揃える */
.day-wait-detail{}
.day-wait-head{display:flex;flex-direction:column;align-items:stretch;gap:4px;margin-bottom:10px;}
.day-wait-title{font-size:13px;font-weight:800;color:var(--text-main);display:flex;align-items:center;gap:6px;}
.day-wait-sub{font-size:11px;color:var(--text-sub);line-height:1.5;margin-top:3px;}
.day-wait-summary{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-start;margin-top:5px;}
.day-wait-pill{font-size:10.5px;font-weight:800;color:var(--primary);background:var(--primary-ultra);border:1px solid var(--border);border-radius:50px;padding:3px 8px;white-space:nowrap;}
.wait-area-block{margin-top:14px;}
.wait-area-block:first-of-type{margin-top:0;}
.day-wait-head + .wait-area-block,
.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;}
.day-wait-pill--popular{color:#bd3c73;background:#fff0f6;border-color:#ffc0d9;}
.day-wait-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;}
.day-wait-table{border-collapse:separate;border-spacing:0;width:100%;min-width:780px;}
.day-wait-table th{background:var(--primary-ultra);color:var(--text-sub);font-size:10px;font-weight:700;padding:7px 6px;border-bottom:1px solid var(--border);white-space:nowrap;}
.day-wait-table th:first-child{position:sticky;left:0;z-index:2;background:var(--primary-ultra);text-align:left;min-width:168px;}
.day-wait-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;}
.day-wait-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;}
.day-wait-table tr:nth-child(even) td:first-child{background:#fbfdff;}
.day-wait-table tr.is-popular-attraction td:first-child{background:#fff8fb;border-left:0;}
.day-wait-table tr.is-popular-attraction:nth-child(even) td:first-child{background:#fff4f9;}
.day-wait-cell.l1{background:var(--green-1);color:#17613b;}
.day-wait-cell.l2{background:var(--yellow-1);color:#715400;}
.day-wait-cell.l3{background:var(--red-1);color:#8d2424;}
.day-wait-cell.l4{background:var(--red-2);color:var(--rank-s);}
.day-wait-cell.l5{background:var(--red-3);color:#fff;}
.day-wait-cell.closed{background:var(--grey);color:var(--text-muted);}
.day-wait-cell.no-data{background:#f4f7fa;color:var(--text-muted);font-size:9px;line-height:1.2;white-space:normal;min-width:44px;}
.day-wait-table tr td.day-wait-cell.no-data{background:#f4f7fa;}
.day-wait-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;}
@media(max-width:580px){.day-wait-head{flex-direction:column;}.day-wait-summary{justify-content:flex-start;}.day-wait-table{min-width:720px;}}


/* MONTH 14:00 WAIT LIST */
.month-peak-detail{padding:16px 20px 20px;border-top:1px solid var(--border);background:var(--bg);}
.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-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;}

.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;}
.month-peak-area{font-size:10px;color:var(--text-muted);font-weight:600;margin-top:1px;}
@media(max-width:580px){.month-peak-table{min-width:860px;}}

/* SECTION CARD */
.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;}
.section-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--primary),var(--primary-light));}
.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;}

/* DOW CHART */
.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 BAR CHART */
.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 / EASY LISTS */
.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;}

/* ═══ RIGHT SIDEBAR CARDS ═══ */

/* EVENT CARD */
.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.both{background:#f0e8ff;color:#7030c0;border:1px solid #d0b0f0;}
.event-tag.night{background:#1a2a4a;color:#a0c8f0;border:1px solid #304060;}
.event-tag.special{background:#fff8e0;color:#b08000;border:1px solid #ffe080;}

/* SUSPENSION CARD */
.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 PANEL (opening hours etc) */
.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);}

/* FOOTER */
footer{text-align:center;padding:24px 16px;font-size:11px;color:var(--text-muted);border-top:1px solid var(--border);max-width:var(--content-width);margin:0 auto;line-height:1.8;}
footer a{color:var(--primary-light);text-decoration:none;}

/* ANIMATIONS */
@keyframes fadeInUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.section-card,.day-detail{animation:fadeInUp .35s ease both;}
.right-col .section-card{animation-delay:.08s;}

/* STICKY SIDEBAR ON DESKTOP */
@media(min-width:781px){.right-col{padding-right:4px;}}

/* ════════════════════════════
   REALTIME 待ち時間ページ専用
   ════════════════════════════ */
:root {
  --green-1: #edfaf3; --green-2: #edfaf3;
  --yellow-1: #fffbec; --yellow-2: #fffbec;
  --red-1: #ffe6e6; --red-2: #ffb6b6; --purple-1: #9b5de5;
  --grey: #d6e3ed;
}

/* 本日サマリ */
.rt-inner-divider { border: none; border-top: 1px solid var(--border); margin: 20px 0; }
.rt-inner-heading { font-size: 13px; font-weight: 900; color: var(--text-sub); letter-spacing: 0.04em; margin-bottom: 12px; display: flex; align-items: center; gap: 6px; }
.rt-summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
@media(max-width: 580px) { .rt-summary { grid-template-columns: repeat(2, 1fr); } }
.rt-summary-item { background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 12px; }
.rt-summary-label { font-size: 10px; color: var(--text-muted); font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 6px; }
.rt-summary-val { font-family: 'Nunito', sans-serif; font-size: 22px; font-weight: 900; color: var(--text-main); line-height: 1; }
.rt-summary-sub { font-size: 11px; color: var(--text-sub); margin-top: 4px; font-weight: 600; }

/* ランキング */
.rt-rank-list { display: flex; flex-direction: column; gap: 4px; }
.rt-rank-row { display: flex; align-items: center; gap: 10px; padding: 7px 10px; border-radius: var(--radius-sm); font-size: 13px; }
.rt-rank-row:nth-child(odd) { background: var(--primary-ultra); }
.rt-rank-row .rt-rank-num { font-family: 'Nunito', sans-serif; font-weight: 800; color: var(--primary); width: 24px; text-align: center; font-size: 15px; }
.rt-rank-row .rt-rank-num.top3 { color: var(--red-3, var(--red-2)); }
.rt-rank-row .rt-rank-name { flex: 1; font-weight: 500; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rt-rank-row.is-popular-attraction { background: #fff8fb; border: 1px solid #ffd2e3; }
.rt-rank-row.is-popular-attraction:nth-child(odd) { background: #fff4f9; }
.rt-rank-row .rt-rank-area { font-size: 10px; color: var(--text-muted); padding: 2px 6px; background: #fff; border: 1px solid var(--border); border-radius: 999px; }
.rt-rank-row .rt-rank-wait { font-family: 'Nunito', sans-serif; font-weight: 800; color: var(--text-main); font-size: 14px; min-width: 42px; text-align: right; }
.rt-rank-row .rt-rank-wait span { font-size: 10px; color: var(--text-muted); font-weight: 500; }

/* 本日の待ち時間TOP10は、くらべるページのランキングと同じ見せ方に揃える */
#rtRankList .rank-list { display:flex; flex-direction:column; gap:8px; }
#rtRankList .rank-row { display:flex; align-items:center; gap:12px; padding:10px 12px; background:var(--primary-ultra); border:1px solid transparent; border-radius:var(--radius-sm); font-size:13px; }
#rtRankList .rank-row.wait-level-low      { background:#f0fbf5; border-color:#c7eed8; }
#rtRankList .rank-row.wait-level-mid      { background:#fff9e6; border-color:#f7d76c; }
#rtRankList .rank-row.wait-level-high     { background:#fff3f3; border-color:#f5b3b3; }
#rtRankList .rank-row.wait-level-veryhigh { background:#fff0f0; border-color:#e85b5b; }
#rtRankList .rank-row.wait-level-extreme  { background:#fbecec; border-color:#981b1b; }
#rtRankList .rank-row.wait-level-none     { background:var(--primary-ultra); border-color:var(--border); }
#rtRankList .rank-row .num { font-family:'Nunito',sans-serif; font-weight:800; color:var(--primary); width:24px; text-align:center; font-size:15px; flex:0 0 auto; }
#rtRankList .rank-row.wait-level-low .num       { color:var(--green); }
#rtRankList .rank-row.wait-level-mid .num       { color:var(--yellow); }
#rtRankList .rank-row.wait-level-high .num      { color:var(--red); }
#rtRankList .rank-row.wait-level-veryhigh .num  { color:#e85b5b; }
#rtRankList .rank-row.wait-level-extreme .num   { color:#981b1b; }
#rtRankList .rank-row .name { flex:1; min-width:0; font-weight:500; }
#rtRankList .rank-row .rank-area { display:block; margin-top:2px; font-size:10px; color:var(--text-sub); font-weight:600; }
#rtRankList .rank-row .bar-wrap { flex:0 0 140px; background:#fff; height:8px; border-radius:999px; overflow:hidden; }
#rtRankList .rank-row .bar-fill { height:100%; }
#rtRankList .rank-row.wait-level-low .bar-fill       { background:linear-gradient(90deg,var(--green),#7fe2b3); }
#rtRankList .rank-row.wait-level-mid .bar-fill       { background:linear-gradient(90deg,var(--yellow),#f3c757); }
#rtRankList .rank-row.wait-level-high .bar-fill      { background:linear-gradient(90deg,var(--red),#f27c7c); }
#rtRankList .rank-row.wait-level-veryhigh .bar-fill  { background:linear-gradient(90deg,#e85b5b,#f08888); }
#rtRankList .rank-row.wait-level-extreme .bar-fill   { background:linear-gradient(90deg,#981b1b,#741010); }
#rtRankList .rank-row .val { font-family:'Nunito',sans-serif; font-weight:800; min-width:50px; text-align:right; }
#rtRankList .rank-row.wait-level-low .val       { color:var(--green); }
#rtRankList .rank-row.wait-level-mid .val       { color:var(--yellow); }
#rtRankList .rank-row.wait-level-high .val      { color:var(--red); }
#rtRankList .rank-row.wait-level-veryhigh .val  { color:#e85b5b; }
#rtRankList .rank-row.wait-level-extreme .val   { color:#981b1b; }
#rtRankList .rank-row .val span { font-size:10px; color:var(--text-muted); font-weight:500; }
@media(max-width:640px){
  #rtRankList .rank-list { gap:6px; }
  #rtRankList .rank-row { gap:8px; padding:7px 9px; font-size:12px; line-height:1.35; }
  #rtRankList .rank-row .num { width:20px; font-size:13px; }
  #rtRankList .rank-row .rank-area { margin-top:0; font-size:9.5px; line-height:1.25; }
  #rtRankList .rank-row .bar-wrap { flex-basis:72px; height:6px; }
  #rtRankList .rank-row .val { min-width:42px; font-size:12px; }
  #rtRankList .rank-row .val span { font-size:9px; }
}

/* ヒートマップ凡例 */
.rt-legend { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; padding: 10px 14px; background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius-sm); margin-bottom: 14px; font-size: 11px; color: var(--text-sub); }
.rt-legend-item { display: flex; align-items: center; gap: 4px; }
.rt-legend-color { width: 14px; height: 14px; border-radius: 3px; }

/* エリアセクション */
.rt-area-section { margin-bottom: 18px; }
.rt-area-header { display: flex; align-items: center; gap: 8px; padding: 8px 4px; }
.rt-area-icon { width: 26px; height: 26px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 14px; color: #fff; }
.rt-area-title { font-size: 14px; font-weight: 700; color: var(--text-main); }
.rt-area-count { font-size: 11px; color: var(--text-sub); font-weight: 500; }

/* ヒートマップ本体 */
.rt-heatmap-card { background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden; }
.rt-heatmap-scroll { overflow-x: auto; }
.rt-heatmap-table { border-collapse: collapse; width: 100%; min-width: 700px; }
.rt-heatmap-table thead th { background: var(--primary-ultra); color: var(--text-sub); font-size: 10px; font-weight: 600; padding: 6px 0; position: sticky; top: 0; }
.rt-heatmap-table thead .rt-col-name { text-align: left; padding-left: 12px; min-width: 120px; max-width: 120px; }
.rt-heatmap-table thead .rt-col-now { min-width: 60px; max-width: 60px; }
.rt-heatmap-table thead .rt-col-stat { min-width: 42px; max-width: 42px; }
.rt-heatmap-table thead .rt-col-time { min-width: 18px; font-family: 'Nunito', sans-serif; }
.rt-heatmap-table thead .rt-col-time.now-mark { color: var(--primary); }
.rt-heatmap-table tbody tr { border-top: 1px solid var(--primary-ultra); }
.rt-heatmap-table tbody .rt-col-name { font-size: 12px; font-weight: 500; padding: 8px 8px 8px 12px; min-width: 120px; max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rt-heatmap-table tbody tr.is-popular-attraction .rt-col-name { background:#fff8fb;border-left:4px solid #f08ab8;font-weight:800; }
.rt-heatmap-table tbody .rt-col-now { text-align: center; font-family: 'Nunito', sans-serif; font-size: 16px; font-weight: 900; color: var(--text-main); }
.rt-heatmap-table tbody .rt-col-now.now-closed { color: var(--text-muted); font-size: 11px; font-weight: 700; }
.rt-heatmap-table tbody .rt-col-stat { font-family: 'Nunito', sans-serif; font-size: 12px; font-weight: 700; text-align: center; color: var(--text-sub); }
.rt-heatmap-table tbody .rt-col-stat.max { color: var(--text-muted); font-size: 11px; }
.rt-cell { width: 18px; height: 22px; cursor: pointer; transition: 0.1s; }
.rt-cell:hover { outline: 2px solid var(--primary); outline-offset: -2px; z-index: 2; }
.rt-cell.l1 { background: var(--green-1); }
.rt-cell.l2 { background: var(--yellow-1); }
.rt-cell.l3 { background: var(--red-1); }
.rt-cell.l4 { background: var(--red-2); }
.rt-cell.l5 { background: var(--red-3); }
.rt-cell.closed { background: var(--grey); }
.rt-cell.future { background: repeating-linear-gradient(45deg, #f5f9fc 0 4px, #fff 4px 8px); }
.rt-cell.no-data { background: #f4f7fa; }
.rt-cell.current { outline: 2px solid var(--primary); outline-offset: -2px; }

/* ツールチップ */
.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; }

@media(min-width:781px){
  .notice-banner{font-size:14px;}
  .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,
  .rt-legend{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,
  .rt-summary-label,
  .rt-rank-row .rt-rank-area,
  .rt-rank-row .rt-rank-wait span,
  .rt-heatmap-table thead th,
  .rt-popular-badge{font-size:12px;}
  .day-detail-date{font-size:19px;}
  .day-stat-label,
  .score-breakdown-title{font-size:12px;}
  .day-stat-val,
  .rt-summary-val{font-size:25px;}
  .day-stat-sub,
  .sb-list,
  .wait-no-data-title{font-size:14px;}
  .wait-no-data-text{font-size:13.5px;}
  .rt-heatmap-table tbody .rt-col-stat{font-size:14px;}
  .month-bar-date{font-size:10.5px;}
  .hot-rank-badge,
  .hot-item-date,
  .event-name,
  .rt-rank-row,
  .rt-area-title{font-size:15px;}
  .hot-item-reason,
  .susp-tab,
  .rt-summary-sub,
  .rt-area-count,
  .rt-heatmap-table tbody .rt-col-name,
  .rt-tooltip{font-size:13px;}
  .susp-name{font-size:14.5px;}
  .rt-rank-row .rt-rank-wait,
  .rt-heatmap-table tbody .rt-col-now{font-size:18px;}
}
.tw-data-attribution {
  margin: -8px 0 16px;
  text-align: right;
}

.tw-data-attribution a {
  color: var(--primary);
  font-size: 13px;
  font-weight: 800;
}
