:root{color-scheme:dark;--bg:#07111f;--panel:#0c1a2b;--panel-2:#102238;--line:#243a52;--text:#f5f8fb;--muted:#93a7bb;--accent:#5be7ff;--accent-2:#3b82f6;--danger:#ff6b6b;--max:1260px;--shadow:0 24px 60px rgba(0,0,0,.3)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 85% -10%,rgba(59,130,246,.23),transparent 30rem),var(--bg);color:var(--text);font-family:"Helvetica Neue","Noto Sans JP",Arial,sans-serif;font-size:16px;line-height:1.6}button,input,select{font:inherit}button{color:inherit}a{color:inherit}.topbar{height:74px;padding:0 max(24px,calc((100% - var(--max))/2));display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(147,167,187,.18);background:rgba(7,17,31,.88);backdrop-filter:blur(14px);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:12px;text-decoration:none}.brand-mark{width:38px;height:38px;border:1px solid var(--accent);display:grid;place-items:center;font-size:1.25rem;font-weight:900;transform:skew(-8deg);box-shadow:inset 0 0 18px rgba(91,231,255,.12)}.brand strong,.brand small{display:block;line-height:1.05}.brand strong{text-transform:uppercase;letter-spacing:.06em}.brand small{font-size:.7rem;color:var(--muted);letter-spacing:.19em;margin-top:5px}.data-stamp{font:700 .72rem/1 Arial,sans-serif;letter-spacing:.12em;color:var(--muted);display:flex;align-items:center;gap:8px}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent)}main{max-width:var(--max);margin:auto;padding:70px 24px 100px}.intro{display:grid;grid-template-columns:1.4fr .6fr;gap:70px;align-items:end;padding:28px 0 62px}.eyebrow,.section-number{font:800 .78rem/1 Arial,sans-serif;letter-spacing:.22em;color:var(--accent);margin:0 0 20px}.intro h1{font-size:clamp(2.8rem,7vw,6.6rem);line-height:.96;letter-spacing:-.06em;margin:0;max-width:920px}.intro h1 span{color:transparent;-webkit-text-stroke:1px rgba(245,248,251,.72)}.intro-copy{font-size:1.05rem;color:#c0cedb;margin:0 0 8px;border-left:1px solid var(--accent);padding-left:22px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);background:rgba(12,26,43,.78);box-shadow:var(--shadow)}.metrics article{padding:24px 26px;border-right:1px solid var(--line)}.metrics article:last-child{border:0}.metrics span{display:block;font:800 clamp(1.8rem,4vw,3.2rem)/1 Arial,sans-serif;letter-spacing:-.04em}.metrics small{display:block;color:var(--muted);margin-top:10px;font-size:.82rem}.view-tabs{display:flex;gap:6px;margin:54px 0 34px;border-bottom:1px solid var(--line)}.tab{border:0;background:transparent;padding:14px 20px;color:var(--muted);font-weight:700;border-bottom:2px solid transparent;cursor:pointer}.tab:hover,.tab:focus-visible{color:var(--text)}.tab.is-active{color:var(--accent);border-color:var(--accent)}.view{display:none}.view.is-active{display:block}.section-head{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:26px}.section-head>div{display:flex;align-items:baseline;gap:18px}.section-head h2{font-size:clamp(1.6rem,4vw,2.5rem);line-height:1;margin:0}.section-head .section-number{margin:0}.section-head>p{margin:0;color:var(--muted);max-width:600px;text-align:right;font-size:.92rem}.filter-grid{display:grid;grid-template-columns:.65fr 1.25fr 1.25fr 1.25fr auto;gap:12px;padding:18px;background:var(--panel);border:1px solid var(--line)}label span,legend{display:block;color:var(--muted);font-size:.76rem;font-weight:700;margin-bottom:6px;letter-spacing:.03em}input,select{width:100%;min-height:44px;border:1px solid #304a66;background:#091625;color:var(--text);border-radius:0;padding:9px 12px;outline:none}input::placeholder{color:#62778e}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(91,231,255,.12)}.reset-button{align-self:end;min-height:44px;padding:8px 16px;border:1px solid var(--line);background:transparent;cursor:pointer}.reset-button:hover{border-color:var(--accent);color:var(--accent)}.results-toolbar{display:flex;justify-content:space-between;align-items:center;margin:24px 0 12px;color:var(--muted)}.results-toolbar p{margin:0}.results-toolbar strong{color:var(--text);font-size:1.25rem}.event-list{border-top:1px solid var(--line)}.event-card{width:100%;display:grid;grid-template-columns:150px minmax(240px,1fr) minmax(260px,.9fr) 100px 28px;gap:22px;align-items:center;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;padding:20px 8px;cursor:pointer}.event-card:hover,.event-card:focus-visible{background:linear-gradient(90deg,rgba(91,231,255,.08),transparent);outline:none}.event-date{font:800 1rem/1.2 Arial,sans-serif}.event-date small{display:block;color:var(--muted);font-size:.73rem;margin-top:7px}.event-title{font-weight:750;line-height:1.35}.event-title small,.event-venue small{display:block;color:var(--muted);font-size:.76rem;font-weight:500;margin-top:5px}.event-venue{color:#c9d4df;font-size:.91rem}.song-count{font:800 1rem/1 Arial,sans-serif;text-align:right}.song-count small{display:block;color:var(--muted);font-size:.7rem;margin-top:6px}.event-arrow{color:var(--accent);font-size:1.25rem}.load-more{display:block;margin:28px auto 0;padding:11px 28px;border:1px solid var(--accent);background:transparent;color:var(--accent);cursor:pointer}.load-more:hover{background:var(--accent);color:var(--bg)}.stats-controls{display:grid;grid-template-columns:1fr 240px 250px;gap:18px;align-items:end;padding:18px;background:var(--panel);border:1px solid var(--line)}fieldset{border:0;padding:0;margin:0}.period-buttons{display:flex;flex-wrap:wrap;gap:5px}.period-buttons button{min-width:48px;height:44px;border:1px solid var(--line);background:#091625;cursor:pointer}.period-buttons button:hover,.period-buttons button.is-active{border-color:var(--accent);color:var(--accent);background:rgba(91,231,255,.08)}.stats-summary{display:grid;grid-template-columns:repeat(3,1fr);margin:20px 0;border:1px solid var(--line)}.stats-summary div{padding:16px 20px;border-right:1px solid var(--line)}.stats-summary div:last-child{border:0}.stats-summary small{display:block;color:var(--muted);font-size:.74rem}.stats-summary strong{font-size:1.2rem}.stats-table-wrap{overflow-x:auto;border:1px solid var(--line)}.stats-table{width:100%;border-collapse:collapse;min-width:800px}.stats-table th{position:sticky;top:73px;background:#112943;color:#aac0d3;font-size:.78rem;text-align:left;padding:13px 14px;z-index:2}.stats-table th:nth-child(n+3){text-align:right}.stats-table td{padding:14px;border-top:1px solid var(--line)}.stats-table td:first-child{color:var(--muted);font:700 .82rem Arial}.stats-table td:nth-child(n+3){text-align:right}.song-name{font-weight:700}.probability-cell{min-width:150px}.probability-value{font-weight:800;color:var(--accent)}.probability-bar{height:3px;background:#20364e;margin-top:7px}.probability-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--accent-2),var(--accent))}.empty-state{padding:28px;text-align:center;color:var(--muted);border:1px dashed var(--line)}footer{max-width:var(--max);margin:auto;padding:28px 24px 55px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:.78rem}footer p{margin:0}footer a{color:var(--accent)}dialog{width:min(720px,calc(100% - 28px));max-height:88vh;padding:0;border:1px solid #31516f;background:var(--panel);color:var(--text);box-shadow:0 40px 100px rgba(0,0,0,.58)}dialog::backdrop{background:rgba(1,7,14,.78);backdrop-filter:blur(6px)}.dialog-shell{padding:32px;position:relative}.dialog-close{position:absolute;right:18px;top:16px;width:40px;height:40px;border:1px solid var(--line);background:transparent;font-size:1.4rem;cursor:pointer}.dialog-close:hover{color:var(--accent);border-color:var(--accent)}.dialog-date{font:800 .85rem Arial;color:var(--accent);letter-spacing:.08em;margin:0 0 12px}.dialog-shell h2{font-size:clamp(1.6rem,5vw,2.5rem);line-height:1.15;margin:0 50px 8px 0}.dialog-venue{color:var(--muted);margin:0}.dialog-meta{display:flex;justify-content:space-between;align-items:center;margin:24px 0 12px;padding-top:18px;border-top:1px solid var(--line);font-size:.84rem}.dialog-meta a{color:var(--accent)}.setlist{margin:0;padding:0;list-style:none;counter-reset:song}.setlist li{counter-increment:song;display:grid;grid-template-columns:44px 1fr;gap:12px;padding:11px 4px;border-top:1px solid rgba(36,58,82,.65)}.setlist li::before{content:counter(song,decimal-leading-zero);color:var(--muted);font:700 .75rem Arial;padding-top:4px}.loading{position:fixed;inset:0;background:var(--bg);z-index:100;display:grid;place-content:center;text-align:center;color:var(--muted);transition:opacity .25s}.loading span{width:44px;height:44px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:auto}.loading.is-hidden{opacity:0;pointer-events:none}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:900px){.intro{grid-template-columns:1fr;gap:28px}.intro-copy{max-width:620px}.filter-grid{grid-template-columns:1fr 1fr}.reset-button{grid-column:span 2}.event-card{grid-template-columns:110px 1fr 80px 20px}.event-venue{grid-column:2/3}.stats-controls{grid-template-columns:1fr 1fr}.stats-controls fieldset{grid-column:1/-1}.section-head{align-items:start;flex-direction:column}.section-head>p{text-align:left}.metrics{grid-template-columns:1fr 1fr}.metrics article:nth-child(2){border-right:0}.metrics article:nth-child(-n+2){border-bottom:1px solid var(--line)}}
@media(max-width:620px){.topbar{padding:0 16px}.data-stamp{display:none}main{padding:42px 16px 72px}.intro{padding-top:10px}.intro h1{font-size:clamp(2.55rem,14vw,4.2rem)}.metrics article{padding:20px}.filter-grid,.stats-controls{grid-template-columns:1fr}.reset-button,.stats-controls fieldset{grid-column:auto}.event-card{grid-template-columns:92px 1fr 18px;gap:12px;padding:18px 2px}.event-title{grid-column:2/3}.event-venue{grid-column:2/4}.song-count{grid-column:1/2;grid-row:2;text-align:left}.event-arrow{grid-column:3;grid-row:1/3}.results-toolbar{align-items:flex-start;gap:10px;flex-direction:column}.stats-summary{grid-template-columns:1fr}.stats-summary div{border-right:0;border-bottom:1px solid var(--line)}.stats-summary div:last-child{border:0}.dialog-shell{padding:26px 20px}footer{flex-direction:column}.view-tabs{overflow-x:auto}.tab{white-space:nowrap}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.loading{transition:none}.loading span{animation:none}}

/* Mobile readability and song-performance drilldown */
.song-detail-trigger{display:inline;text-align:left;padding:0;border:0;border-bottom:1px solid rgba(91,231,255,.45);background:transparent;color:var(--text);font-weight:700;cursor:pointer}
.song-detail-trigger:hover,.song-detail-trigger:focus-visible{color:var(--accent);border-color:var(--accent)}
.song-performance-list{display:grid;gap:1px;margin-top:24px;border-top:1px solid var(--line)}
.song-performance-button{display:grid;grid-template-columns:145px 1fr;gap:3px 18px;width:100%;padding:16px 4px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;cursor:pointer}
.song-performance-button:hover,.song-performance-button:focus-visible{background:rgba(91,231,255,.07);outline:none}
.song-performance-button span{grid-row:1/3;color:var(--accent);font:700 .8rem/1.5 Arial,sans-serif}
.song-performance-button strong{line-height:1.35}
.song-performance-button small{color:var(--muted)}
@media(max-width:620px){
  .event-card{grid-template-columns:minmax(0,1fr) 20px;gap:9px 12px;padding:18px 4px}
  .event-date{grid-column:1/-1;display:flex;align-items:baseline;gap:10px}
  .event-date small{display:inline;margin:0}
  .event-title,.event-venue{grid-column:1/-1}
  .song-count{grid-column:1;grid-row:auto;text-align:left;margin-top:3px}
  .event-arrow{grid-column:2;grid-row:4;align-self:center}
  .stats-table th{position:static}
  .stats-table td{vertical-align:top;white-space:nowrap;line-height:1.5}
  .stats-table td:nth-child(2){min-width:210px;white-space:normal}
  .song-performance-button{grid-template-columns:1fr;gap:5px}
  .song-performance-button span{grid-row:auto}
}

/* Keep the table header in normal flow so it never covers the first row. */
.stats-table th{position:static}

/* Member birthday filters and performance history */
.period-buttons button[data-birthday]{min-width:auto;padding:0 12px}
.birthday-history-button{display:block;width:100%;margin:-1px 0 28px;padding:13px 18px;border:1px solid var(--accent);background:rgba(91,231,255,.07);color:var(--accent);font-weight:700;text-align:left;cursor:pointer}
.birthday-history-button:hover,.birthday-history-button:focus-visible{background:var(--accent);color:var(--bg)}
.birthday-history-button[hidden]{display:none}

/* Setlist prediction */
.prediction-controls{display:grid;grid-template-columns:220px minmax(280px,1fr) 150px auto;gap:12px;align-items:end;padding:18px;background:var(--panel);border:1px solid var(--line)}
.prediction-controls button{min-height:44px;padding:9px 22px;border:1px solid var(--accent);background:var(--accent);color:var(--bg);font-weight:800;cursor:pointer}
.prediction-controls button:hover,.prediction-controls button:focus-visible{background:transparent;color:var(--accent)}
.prediction-output{margin-top:26px}
.prediction-output[hidden]{display:none}
.prediction-output-head{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:14px}
.prediction-output-head p{margin:0;color:var(--muted);font-size:.8rem}
.prediction-output-head>div>p{color:var(--accent);font:800 .68rem/1 Arial,sans-serif;letter-spacing:.16em;margin-bottom:8px}
.prediction-output-head h3{margin:0;font-size:1.3rem}
.prediction-results{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}
.prediction-results li{display:grid;grid-template-columns:54px minmax(0,1fr) 120px;gap:18px;align-items:center;padding:16px 8px;border-bottom:1px solid var(--line)}
.prediction-rank{color:var(--accent);font:800 .82rem/1 Arial,sans-serif}
.prediction-song strong{display:block;font-size:1rem}
.prediction-song>span{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}
.prediction-song small{padding:2px 7px;border:1px solid var(--line);color:var(--muted);font-size:.68rem}
.prediction-score{text-align:right}
.prediction-score>strong{font:800 1.1rem/1 Arial,sans-serif;color:var(--accent)}
.prediction-score>small{display:block;color:var(--muted);font-size:.62rem;margin-top:4px}
.prediction-score>span{display:block;height:3px;background:#20364e;margin-top:8px}
.prediction-score i{display:block;height:100%;background:linear-gradient(90deg,var(--accent-2),var(--accent))}

/* Mobile statistics cards keep every value visible without horizontal scrolling. */
@media(max-width:620px){
  .stats-table-wrap{overflow:visible;border:0}
  .stats-table{min-width:0;border-collapse:separate;border-spacing:0 10px}
  .stats-table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  .stats-table tbody,.stats-table tr{display:block}
  .stats-table tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 8px;padding:15px 14px;border:1px solid var(--line);background:rgba(12,26,43,.72)}
  .stats-table td{padding:0;border:0;text-align:left!important;white-space:normal}
  .stats-table td:first-child{display:none}
  .stats-table td:nth-child(2){grid-column:1/-1;min-width:0;padding-bottom:10px;border-bottom:1px solid var(--line)}
  .stats-table td:nth-child(n+3){font-size:.88rem}
  .stats-table td:nth-child(n+3)::before{display:block;margin-bottom:2px;color:var(--muted);font-size:.68rem;font-weight:700}
  .stats-table td:nth-child(3)::before{content:"演奏回数"}
  .stats-table td:nth-child(4)::before{content:"演奏確率"}
  .stats-table td:nth-child(5)::before{content:"最終演奏"}
  .probability-cell{min-width:0}
  .probability-bar{display:none}
  .period-buttons button[data-birthday]{flex:1 1 calc(50% - 5px);padding:0 8px}
  .prediction-controls{grid-template-columns:1fr}
  .prediction-output-head{align-items:start;flex-direction:column;gap:6px}
  .prediction-results li{grid-template-columns:34px minmax(0,1fr);gap:12px;padding:15px 4px}
  .prediction-score{grid-column:2;text-align:left;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:6px 10px}
  .prediction-score>small{margin:0}
  .prediction-score>span{grid-column:1/-1;margin:0}
}
