:root {
  color-scheme: dark;
  --bg: #0b0d12;
  --panel: #121722;
  --panel-2: #171f2e;
  --text: #f4f7fb;
  --muted: #a9b4c4;
  --line: #273247;
  --accent: #69d2ff;
  --accent-2: #b18cff;
  --good: #96f2a7;
  --warning: #ffd479;
  --danger: #ff8a8a;
  --shadow: 0 18px 60px rgba(0,0,0,.35);
  --radius: 12px;
  --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  --sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
* { box-sizing: border-box; }
html { min-height: 100%; background: var(--bg); }
body {
  min-height: 100%;
  margin: 0;
  font-family: var(--sans);
  color: var(--text);
  background:
    radial-gradient(circle at 20% -10%, rgba(105, 210, 255, .18), transparent 35rem),
    radial-gradient(circle at 90% 0%, rgba(177, 140, 255, .16), transparent 34rem),
    linear-gradient(180deg, #0d1018 0%, #090b10 100%);
}
button, input, select { font: inherit; }
button { cursor: pointer; }
a { color: var(--accent); }
.app { max-width: 1500px; margin: 0 auto; padding: 28px 18px 54px; }
.hero { display: flex; justify-content: space-between; gap: 18px; align-items: flex-end; margin-bottom: 18px; }
.eyebrow { color: var(--accent); font-weight: 800; letter-spacing: .18em; text-transform: uppercase; font-size: 12px; margin: 0 0 8px; }
h1 { margin: 0; font-size: clamp(30px, 5vw, 64px); line-height: .95; letter-spacing: -.055em; }
.sub { margin: 12px 0 0; color: var(--muted); max-width: 760px; line-height: 1.65; }
.stats { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; }
.unofficial-banner {
  margin: 0 0 16px;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 12px;
  align-items: start;
  border: 1px solid rgba(255,212,121,.42);
  background: linear-gradient(135deg, rgba(255,212,121,.16), rgba(255,255,255,.045));
  border-radius: 18px;
  padding: 13px 15px;
  box-shadow: 0 12px 40px rgba(0,0,0,.20);
}
.unofficial-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 72px;
  min-height: 30px;
  padding: 5px 10px;
  border-radius: 999px;
  color: #111827;
  background: var(--warning);
  font-size: 13px;
  font-weight: 950;
  letter-spacing: .04em;
  white-space: nowrap;
}
.unofficial-copy { margin: 0; color: var(--text); line-height: 1.65; font-size: 14px; }
.unofficial-copy small { display: block; margin-top: 4px; color: var(--muted); line-height: 1.65; }
.unofficial-copy a { font-weight: 800; }
.legacy-migration-notice {
  margin: 0 0 16px;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 12px;
  align-items: start;
  border: 1px solid rgba(105,210,255,.44);
  border-left: 4px solid rgba(105,210,255,.82);
  border-radius: 16px;
  background: rgba(105,210,255,.08);
  padding: 14px 15px;
  box-shadow: 0 12px 40px rgba(0,0,0,.20);
}
.legacy-migration-notice[hidden] { display: none !important; }
.migration-label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 76px;
  min-height: 30px;
  padding: 5px 10px;
  border-radius: 999px;
  color: #062033;
  background: var(--accent);
  font-size: 13px;
  font-weight: 950;
  white-space: nowrap;
}
.migration-body { display: grid; gap: 8px; min-width: 0; }
.migration-body h2 { margin: 0; color: var(--text); font-size: 18px; letter-spacing: 0; }
.migration-body p { margin: 0; color: var(--text); line-height: 1.65; }
.migration-steps { display: grid; gap: 5px; margin: 0; padding-left: 1.4em; color: var(--muted); line-height: 1.55; }
.migration-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.migration-link { display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }
.help-note, .event-info {
  margin: 0 0 16px;
  border: 1px solid rgba(255,255,255,.09);
  background: rgba(255,255,255,.045);
  border-radius: 16px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.65;
}
.help-note summary, .event-info summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 42px; padding: 10px 14px; color: var(--text); font-weight: 900; cursor: pointer; list-style: none; }
.help-note summary::-webkit-details-marker, .event-info summary::-webkit-details-marker { display: none; }
.help-note summary::after, .event-info summary::after { content: "開く"; flex: 0 0 auto; border: 1px solid rgba(255,255,255,.14); border-radius: 999px; padding: 2px 9px; color: var(--muted); font-size: 12px; font-weight: 800; }
.help-note[open] summary::after, .event-info[open] summary::after { content: "閉じる"; }
.help-content { display: grid; gap: 8px; border-top: 1px solid rgba(255,255,255,.08); padding: 11px 14px 13px; }
.help-content p { margin: 0; }
.help-note strong { color: var(--text); }
.event-info { border-color: rgba(105,210,255,.20); background: rgba(105,210,255,.045); }
.event-info-content { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 8px; border-top: 1px solid rgba(255,255,255,.08); padding: 11px 14px 13px; }
.event-info-link { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 38px; border: 1px solid rgba(255,255,255,.10); border-radius: 12px; background: rgba(0,0,0,.14); padding: 8px 10px; text-decoration: none; color: var(--text); font-weight: 850; }
.event-info-link small { flex: 0 0 auto; color: var(--muted); font-size: 11px; font-weight: 900; }
.event-info-official { border-color: rgba(255,212,121,.34); }
.event-info-community { border-color: rgba(150,242,167,.28); }
footer.notice { margin: 16px 0 0; padding: 0 4px; }
.pill { border: 1px solid rgba(255,255,255,.1); background: rgba(255,255,255,.055); padding: 8px 11px; border-radius: 999px; color: var(--muted); font-size: 13px; white-space: nowrap; }
.pill strong { color: var(--text); }
.pill-link { text-decoration: none; font-weight: 800; color: var(--text); border-color: rgba(105,210,255,.34); background: rgba(105,210,255,.10); }
.pill-link:hover { border-color: rgba(105,210,255,.62); background: rgba(105,210,255,.16); }
.panel { border: 1px solid rgba(255,255,255,.09); background: rgba(18,23,34,.86); border-radius: 24px; overflow: hidden; box-shadow: var(--shadow); }
.controls { position: sticky; top: 0; z-index: 10; padding: 16px; backdrop-filter: blur(18px); background: rgba(13,16,24,.88); border-bottom: 1px solid rgba(255,255,255,.08); }
.main-grid { display: grid; grid-template-columns: minmax(240px,1.25fr) minmax(190px,.75fr) minmax(160px,.62fr) minmax(190px,.75fr); gap: 10px; align-items: end; }
label { display: grid; gap: 7px; color: var(--muted); font-size: 12px; font-weight: 700; }
input[type="search"], input[type="text"], input[type="time"], select {
  min-height: 44px;
  width: 100%;
  color: var(--text);
  border: 1px solid rgba(255,255,255,.11);
  border-radius: 13px;
  background: rgba(255,255,255,.06);
  padding: 0 12px;
  outline: none;
}
select { background-color: #151b28; }
select option, select optgroup {
  color: #111827;
  background-color: #ffffff;
}
input[type="search"]:focus, input[type="text"]:focus, input[type="time"]:focus, select:focus { border-color: rgba(105,210,255,.75); box-shadow: 0 0 0 3px rgba(105,210,255,.14); }
.tabs, .actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.tab, .action { border: 1px solid rgba(255,255,255,.11); border-radius: 999px; min-height: 38px; padding: 8px 13px; background: rgba(255,255,255,.05); color: var(--muted); font-weight: 700; font-size: 13px; }
.tab[aria-pressed="true"], .action.primary, .action[aria-pressed="true"] { border-color: rgba(105,210,255,.56); color: var(--text); background: linear-gradient(135deg, rgba(105,210,255,.24), rgba(177,140,255,.18)); }
.action:disabled { opacity: .55; cursor: default; }
#clearFavoritesButton:not(:disabled) { border-color: rgba(255,212,121,.32); color: var(--warning); }
.notice { margin-top: 12px; color: var(--muted); font-size: 13px; line-height: 1.6; }
code, .kbd { font-family: var(--mono); }
.kbd { display: inline-flex; align-items: center; justify-content: center; min-width: 1.6em; border: 1px solid rgba(255,255,255,.18); border-bottom-color: rgba(255,255,255,.32); border-radius: 6px; padding: 1px 6px; color: var(--text); background: rgba(255,255,255,.08); }
.content { display: grid; grid-template-columns: 260px 1fr; min-height: 640px; }
.sidebar { border-right: 1px solid rgba(255,255,255,.08); padding: 18px 12px 22px; background: rgba(0,0,0,.12); }
.side-title { margin: 0 8px 10px; color: var(--muted); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; font-size: 12px; }
.venue-filter summary { display: none; }
.venue-list { display: grid; gap: 6px; }
.venue-button { width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 10px; border: 1px solid transparent; border-radius: 12px; background: transparent; color: var(--muted); min-height: 34px; padding: 7px 9px; text-align: left; }
.venue-button[aria-pressed="true"] { color: var(--text); border-color: rgba(105,210,255,.45); background: rgba(105,210,255,.12); }
.venue-button:hover { background: rgba(255,255,255,.06); color: var(--text); }
.venue-count { font-family: var(--mono); font-size: 12px; color: var(--accent); }
.results-wrap { min-width: 0; padding: 18px; }
.result-toolbar { display: grid; gap: 10px; margin-bottom: 14px; }
.result-toolbar-main { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; }
.result-title { margin: 0; font-size: 20px; letter-spacing: -.02em; }
#resultSubtitle { color: var(--muted); font-size: 13px; font-weight: 600; }
.result-actions { display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.result-action { min-height: 34px; padding: 6px 10px; font-size: 12px; font-weight: 900; white-space: nowrap; }
.filter-jump { display: none; border: 1px solid rgba(105,210,255,.46); border-radius: 999px; min-height: 34px; padding: 6px 10px; background: rgba(105,210,255,.12); color: var(--text); font-size: 12px; font-weight: 900; white-space: nowrap; }
.filter-jump:hover { border-color: rgba(105,210,255,.72); background: rgba(105,210,255,.18); }
.view-switcher { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: thin; padding: 1px 0 3px; }
.view-mode-button { flex: 0 0 auto; border: 1px solid rgba(255,255,255,.11); border-radius: 999px; min-height: 34px; padding: 6px 12px; background: rgba(255,255,255,.05); color: var(--muted); font-size: 12px; font-weight: 900; white-space: nowrap; }
.view-mode-button[aria-pressed="true"] { border-color: rgba(105,210,255,.58); color: var(--text); background: linear-gradient(135deg, rgba(105,210,255,.24), rgba(177,140,255,.18)); }
.view-mode-button:hover { border-color: rgba(105,210,255,.42); color: var(--text); background: rgba(105,210,255,.12); }
.result-more { position: relative; }
.result-more summary { list-style: none; }
.result-more summary::-webkit-details-marker { display: none; }
.result-more-summary { display: inline-flex; align-items: center; justify-content: center; min-height: 34px; padding: 6px 10px; font-size: 12px; font-weight: 900; white-space: nowrap; }
.result-more[open] .result-more-summary { border-color: rgba(105,210,255,.58); color: var(--text); background: rgba(105,210,255,.12); }
.result-more-menu { position: absolute; top: calc(100% + 8px); right: 0; z-index: 30; display: grid; gap: 4px; min-width: 188px; border: 1px solid rgba(255,255,255,.12); border-radius: 12px; background: rgba(21,27,40,.98); box-shadow: 0 18px 44px rgba(0,0,0,.42); padding: 8px; }
.result-more:not([open]) .result-more-menu { display: none; }
.result-load-more { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 10px; margin: 14px 0 4px; color: var(--muted); font-size: 13px; font-weight: 800; }
.result-load-more .action { min-height: 36px; }
.transfer-menu { position: relative; }
.transfer-menu summary { list-style: none; }
.transfer-menu summary::-webkit-details-marker { display: none; }
.transfer-menu-summary { display: inline-flex; align-items: center; justify-content: center; min-height: 34px; padding: 6px 10px; font-size: 12px; font-weight: 900; white-space: nowrap; border-color: rgba(150,242,167,.38); background: rgba(150,242,167,.08); }
.transfer-menu[open] .transfer-menu-summary { border-color: rgba(150,242,167,.66); color: var(--text); background: rgba(150,242,167,.14); }
.transfer-menu-panel { position: absolute; top: calc(100% + 8px); right: 0; z-index: 31; display: grid; gap: 6px; min-width: 260px; border: 1px solid rgba(150,242,167,.24); border-radius: 12px; background: rgba(21,27,40,.98); box-shadow: 0 18px 44px rgba(0,0,0,.42); padding: 9px; }
.transfer-menu:not([open]) .transfer-menu-panel { display: none; }
.transfer-menu-panel p { margin: 0 0 2px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.result-menu-action { width: 100%; border: 1px solid transparent; border-radius: 9px; min-height: 36px; padding: 7px 9px; background: transparent; color: var(--muted); text-align: left; font-size: 13px; font-weight: 850; }
.result-menu-action:hover { border-color: rgba(105,210,255,.28); color: var(--text); background: rgba(105,210,255,.10); }
.result-menu-action.primary { color: var(--text); background: rgba(105,210,255,.12); }
.result-menu-action:disabled { opacity: .48; cursor: default; }
.result-menu-action:disabled:hover { border-color: transparent; color: var(--muted); background: transparent; }
.personal-plans, .context-settings { display: grid; gap: 10px; margin: 0 0 14px; border: 1px solid rgba(150,242,167,.22); border-left: 4px solid rgba(150,242,167,.58); border-radius: 14px; background: rgba(150,242,167,.045); color: var(--muted); font-size: 13px; line-height: 1.55; }
.context-settings { border-color: rgba(105,210,255,.24); border-left-color: rgba(105,210,255,.62); background: rgba(105,210,255,.045); }
.personal-plans summary, .context-settings summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 42px; padding: 10px 13px; color: var(--text); font-weight: 900; cursor: pointer; list-style: none; }
.personal-plans summary::-webkit-details-marker, .context-settings summary::-webkit-details-marker { display: none; }
.personal-plans summary::after, .context-settings summary::after { content: "開く"; flex: 0 0 auto; border: 1px solid rgba(255,255,255,.14); border-radius: 999px; padding: 2px 9px; color: var(--muted); font-size: 12px; font-weight: 800; }
.personal-plans[open] summary::after, .context-settings[open] summary::after { content: "閉じる"; }
.personal-plan-count { margin-left: auto; color: var(--accent); font-family: var(--mono); font-size: 12px; }
.context-settings-summary { margin-left: auto; color: var(--accent); font-size: 12px; font-weight: 800; }
.personal-plan-body, .context-settings-body { display: grid; gap: 10px; border-top: 1px solid rgba(255,255,255,.08); padding: 11px 13px 13px; }
.personal-plan-form { display: grid; grid-template-columns: minmax(120px,.45fr) minmax(108px,.32fr) minmax(108px,.32fr) minmax(180px,1fr) auto; gap: 8px; align-items: end; }
.context-settings-form { display: grid; grid-template-columns: minmax(170px,.8fr) auto auto; gap: 8px; align-items: end; }
.base-area-fieldset { display: flex; flex-wrap: wrap; gap: 8px 12px; grid-column: 1 / -1; margin: 0; border: 1px solid rgba(255,255,255,.10); border-radius: 12px; padding: 10px 12px; }
.base-area-fieldset legend { color: var(--text); font-weight: 900; padding: 0 4px; }
.base-area-fieldset label { display: inline-flex; align-items: center; gap: 5px; color: var(--muted); font-size: 12px; }
.personal-plan-list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.personal-plan-item { display: grid; grid-template-columns: 104px minmax(0, 1fr) auto; gap: 10px; align-items: center; border-top: 1px solid rgba(255,255,255,.07); padding-top: 7px; }
.personal-plan-item:first-child { border-top: 0; padding-top: 0; }
.personal-plan-time { color: var(--accent); font-family: var(--mono); font-weight: 900; white-space: nowrap; }
.personal-plan-title { min-width: 0; color: var(--text); font-weight: 800; overflow-wrap: anywhere; }
.personal-plan-meta { display: block; color: var(--muted); font-size: 12px; font-weight: 600; }
.personal-plan-empty { color: var(--muted); }
.personal-plan-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.conflict-panel { display: grid; gap: 0; margin: 0 0 14px; border: 1px solid rgba(150,242,167,.30); border-left: 4px solid rgba(150,242,167,.62); border-radius: 14px; background: rgba(150,242,167,.08); color: var(--muted); font-size: 13px; line-height: 1.55; overflow: hidden; }
.conflict-panel.has-alert { border-color: rgba(255,212,121,.46); background: rgba(255,212,121,.11); color: var(--text); }
.conflict-panel.has-conflict { border-color: rgba(255,138,138,.48); background: rgba(255,138,138,.11); color: var(--text); }
.conflict-panel summary, .recommendation-panel summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 42px; padding: 10px 13px; color: var(--text); font-weight: 900; cursor: pointer; list-style: none; }
.conflict-panel summary::-webkit-details-marker, .recommendation-panel summary::-webkit-details-marker { display: none; }
.conflict-panel summary::after, .recommendation-panel summary::after { content: "開く"; flex: 0 0 auto; border: 1px solid rgba(255,255,255,.14); border-radius: 999px; padding: 2px 9px; color: var(--muted); font-size: 12px; font-weight: 800; }
#recommendationPanel summary::after { content: "おすすめ候補を開く"; }
#recommendationPanel[open] summary::after { content: "おすすめ候補を閉じる"; }
#favoriteConflictPanel summary::after { content: "時間チェックを開く"; }
#favoriteConflictPanel[open] summary::after { content: "時間チェックを閉じる"; }
.collapsible-summary-meta { margin-left: auto; color: var(--accent); font-size: 12px; font-weight: 800; text-align: right; overflow-wrap: anywhere; }
.collapsible-panel-body { display: grid; gap: 8px; border-top: 1px solid rgba(255,255,255,.08); padding: 11px 13px 13px; }
.conflict-title { color: var(--text); font-weight: 900; }
.conflict-list { display: grid; gap: 7px; margin: 0; padding: 0; list-style: none; }
.conflict-item { display: grid; grid-template-columns: 74px minmax(0, 1fr) minmax(150px, .42fr); gap: 9px; align-items: stretch; border: 1px solid rgba(255,255,255,.10); border-radius: 8px; background: rgba(0,0,0,.14); padding: 8px; color: var(--muted); }
.conflict-date { color: var(--accent); font-weight: 900; white-space: nowrap; }
.conflict-pair { display: grid; grid-template-columns: minmax(0, 1fr) 18px minmax(0, 1fr); gap: 7px; align-items: center; min-width: 0; }
.conflict-side { min-width: 0; display: grid; gap: 2px; }
.conflict-side-meta { display: flex; flex-wrap: wrap; gap: 4px; color: var(--muted); font-size: 11px; font-weight: 800; }
.conflict-side-act { color: var(--text); font-weight: 900; overflow-wrap: anywhere; }
.conflict-side-venue { color: var(--muted); font-size: 12px; font-weight: 700; overflow-wrap: anywhere; }
.conflict-priority, .conflict-participation { color: #ffd8ea; }
.conflict-arrow { color: var(--muted); text-align: center; font-weight: 900; }
.conflict-reason { display: grid; gap: 2px; align-content: center; border-left: 1px solid rgba(255,255,255,.10); padding-left: 9px; }
.conflict-reason strong { color: #ffd7d7; }
.conflict-reason span { color: var(--muted); font-size: 12px; font-weight: 700; }
.conflict-more { color: var(--muted); font-weight: 800; }
.conflict-toggle { justify-self: start; border: 1px solid rgba(255,255,255,.14); border-radius: 999px; background: rgba(255,255,255,.07); color: var(--text); min-height: 32px; padding: 6px 11px; font-weight: 800; font-size: 12px; }
.conflict-toggle:hover { border-color: rgba(105,210,255,.42); background: rgba(105,210,255,.12); }
.current-time-panel { display: grid; gap: 8px; margin: 0 0 14px; border: 1px solid rgba(105,210,255,.30); border-left: 4px solid rgba(150,242,167,.70); border-radius: 14px; background: rgba(150,242,167,.07); padding: 10px 13px; color: var(--muted); font-size: 13px; line-height: 1.55; }
.current-time-panel[hidden] { display: none !important; }
.recommendation-panel[hidden], .conflict-panel[hidden] { display: none !important; }
.current-time-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.current-time-title { color: var(--text); font-weight: 900; }
.current-time-source { color: var(--muted); font-size: 12px; font-weight: 700; }
.current-time-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.current-time-pill { display: inline-flex; align-items: center; border: 1px solid rgba(255,255,255,.10); border-radius: 999px; background: rgba(0,0,0,.15); color: var(--text); padding: 3px 8px; font-size: 12px; font-weight: 800; }
.recommendation-panel { display: grid; gap: 0; margin: 0 0 14px; border: 1px solid rgba(105,210,255,.30); border-left: 4px solid rgba(105,210,255,.68); border-radius: 14px; background: rgba(105,210,255,.075); color: var(--muted); font-size: 13px; line-height: 1.55; overflow: hidden; }
.recommendation-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.recommendation-title { color: var(--text); font-weight: 900; }
.recommendation-source { color: var(--muted); font-size: 12px; font-weight: 700; }
.recommendation-list { display: grid; gap: 7px; margin: 0; padding: 0; list-style: none; }
.recommendation-item { display: grid; grid-template-columns: 104px minmax(0, 1fr) auto; gap: 10px; align-items: center; border-top: 1px solid rgba(255,255,255,.08); padding-top: 7px; }
.recommendation-item:first-child { border-top: 0; padding-top: 0; }
.recommendation-time { display: grid; gap: 2px; color: var(--accent); font-family: var(--mono); font-weight: 900; white-space: nowrap; }
.recommendation-date { color: var(--muted); font-size: 12px; font-family: var(--sans); font-weight: 900; }
.recommendation-main { min-width: 0; display: grid; gap: 4px; }
.recommendation-reason { color: var(--muted); font-size: 12px; font-weight: 700; overflow-wrap: anywhere; }
.recommendation-more { justify-self: start; border: 1px solid rgba(105,210,255,.34); border-radius: 999px; background: rgba(105,210,255,.10); color: var(--text); min-height: 34px; padding: 7px 12px; font-weight: 800; font-size: 12px; }
.recommendation-more:hover { border-color: rgba(105,210,255,.58); background: rgba(105,210,255,.16); }
.recommendation-actions { align-items: center; gap: 6px; }
.recommendation-exclude-button, .recommendation-clear-exclusions { border: 1px solid rgba(255,255,255,.12); border-radius: 999px; background: rgba(255,255,255,.055); color: var(--muted); min-height: 30px; padding: 5px 9px; font-size: 12px; font-weight: 800; white-space: nowrap; }
.recommendation-exclude-button:hover, .recommendation-clear-exclusions:hover { border-color: rgba(255,138,138,.42); color: #ffd7d7; background: rgba(255,138,138,.10); }
.recommendation-exclusion-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; color: var(--muted); font-size: 12px; font-weight: 800; }
.results { display: grid; gap: 9px; font-size: 13px; }
.section { position: sticky; top: 150px; z-index: 3; color: var(--text); background: linear-gradient(90deg, rgba(105,210,255,.26), rgba(177,140,255,.14)); border: 1px solid rgba(255,255,255,.09); border-radius: 12px; padding: 7px 10px; margin: 10px 0 3px; font-weight: 900; }
.slot, .act-card { border: 1px solid rgba(255,255,255,.09); border-radius: var(--radius); background: rgba(255,255,255,.045); padding: 13px; }
.slot.is-current-window, .appearance-line.is-current-window, .recommendation-item.is-current-window, .timetable-slot.is-current-window, .timetable-list-slot.is-current-window { box-shadow: inset 4px 0 0 rgba(105,210,255,.48); }
.slot.is-current-ongoing, .appearance-line.is-current-ongoing, .recommendation-item.is-current-ongoing, .timetable-slot.is-current-ongoing, .timetable-list-slot.is-current-ongoing { box-shadow: inset 4px 0 0 rgba(150,242,167,.74); }
.slot.is-current-soon, .appearance-line.is-current-soon, .recommendation-item.is-current-soon, .timetable-slot.is-current-soon, .timetable-list-slot.is-current-soon { box-shadow: inset 4px 0 0 rgba(255,212,121,.78); }
.slot.is-current-recent, .appearance-line.is-current-recent, .recommendation-item.is-current-recent, .timetable-slot.is-current-recent, .timetable-list-slot.is-current-recent { box-shadow: inset 4px 0 0 rgba(169,180,196,.50); }
.slot.is-favorite, .act-card.is-favorite, .appearance-line.is-favorite, .recommendation-item.is-favorite, .timetable-slot.is-favorite, .timetable-list-slot.is-favorite { border-color: rgba(255,212,121,.42); background: linear-gradient(135deg, rgba(255,212,121,.12), rgba(255,255,255,.045)); }
.slot.is-strong-favorite, .act-card.is-strong-favorite, .appearance-line.is-strong-favorite, .recommendation-item.is-strong-favorite, .timetable-slot.is-strong-favorite, .timetable-list-slot.is-strong-favorite { border-color: rgba(255,121,179,.62); box-shadow: inset 4px 0 0 rgba(255,121,179,.58); }
.slot.is-attended, .appearance-line.is-attended, .timetable-slot.is-attended, .timetable-list-slot.is-attended { outline: 1px solid rgba(150,242,167,.20); outline-offset: -3px; }
.slot.is-alerted, .appearance-line.is-alerted, .timetable-slot.is-alerted, .timetable-list-slot.is-alerted { border-color: rgba(255,212,121,.46); background: rgba(255,212,121,.10); }
.slot.is-conflicted, .appearance-line.is-conflicted, .timetable-slot.is-conflicted, .timetable-list-slot.is-conflicted { border-color: rgba(255,138,138,.52); background: rgba(255,138,138,.10); }
.slot-line { display: grid; grid-template-columns: 104px minmax(0, 1fr) auto; gap: 12px; align-items: center; }
.slot-actions { display: flex; justify-content: flex-end; align-items: center; gap: 6px; }
.time { font-family: var(--mono); color: var(--accent); font-weight: 900; white-space: nowrap; }
.act-name { font-weight: 900; font-size: 16px; line-height: 1.35; }
.meta, .appearances { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; color: var(--muted); font-size: 12px; }
.tag { display: inline-flex; align-items: center; border: 1px solid rgba(255,255,255,.09); background: rgba(0,0,0,.15); color: var(--muted); border-radius: 999px; padding: 3px 8px; font-size: 12px; font-weight: 700; cursor: default; }
.tag.kind-live { color: #c8f2ff; border-color: rgba(105,210,255,.38); }
.tag.kind-goods { color: #eadcff; border-color: rgba(177,140,255,.42); }
.tag.kind-personal { color: #d8ffe3; border-color: rgba(150,242,167,.42); }
.tag.link-tag { gap: 4px; border-color: rgba(105,210,255,.46); background: rgba(105,210,255,.10); color: #d8e7ff; text-decoration: none; cursor: pointer; }
.tag.link-tag::after { content: "↗"; font-size: 11px; opacity: .8; }
.tag.map-source { color: var(--good); border-color: rgba(150,242,167,.48); background: rgba(150,242,167,.10); }
.tag.map-source:hover { color: var(--text); border-color: rgba(150,242,167,.72); background: rgba(150,242,167,.16); }
.tag.route-source { color: #d8e7ff; border-color: rgba(105,210,255,.48); background: rgba(105,210,255,.10); }
.tag.route-source:hover { color: var(--text); border-color: rgba(105,210,255,.64); background: rgba(105,210,255,.16); }
.tag.artist-search { color: #d8e7ff; border-color: rgba(105,210,255,.48); background: rgba(105,210,255,.09); }
.tag.artist-search:hover { color: var(--text); border-color: rgba(105,210,255,.62); background: rgba(105,210,255,.15); }
.tag.spotify-link { justify-content: center; width: 32px; min-width: 32px; height: 32px; padding: 0; border-color: rgba(30,215,96,.48); background: #000; }
.tag.spotify-link::after { content: none; }
.tag.spotify-link:hover { border-color: rgba(30,215,96,.78); background: #050505; }
.spotify-icon { display: block; width: 21px; height: 21px; object-fit: contain; }
.tag.venue-parent-tag, .tag.map-coordinate { color: #dce3ee; border-color: rgba(169,180,196,.34); background: rgba(169,180,196,.08); }
.tag.alert-tag { color: #ffe7aa; border-color: rgba(255,212,121,.54); background: rgba(255,212,121,.12); }
.tag.conflict-tag { color: #ffd7d7; border-color: rgba(255,138,138,.54); background: rgba(255,138,138,.12); }
.tag.strong-favorite-tag { color: #ffd8ea; border-color: rgba(255,121,179,.58); background: rgba(255,121,179,.13); }
.tag.attended-tag { color: #d8ffe3; border-color: rgba(150,242,167,.56); background: rgba(150,242,167,.12); }
.tag.current-time-tag { color: #d9f7ff; border-color: rgba(105,210,255,.48); background: rgba(105,210,255,.10); }
.tag.current-time-ongoing { color: #d8ffe3; border-color: rgba(150,242,167,.62); background: rgba(150,242,167,.12); }
.tag.current-time-soon { color: #fff0bf; border-color: rgba(255,212,121,.66); background: rgba(255,212,121,.13); }
.tag.current-time-recent, .tag.current-time-recent-past { color: #dce3ee; border-color: rgba(169,180,196,.38); background: rgba(169,180,196,.09); }
.tag.participation-tag { color: #e8ffe9; border-color: rgba(150,242,167,.50); background: rgba(150,242,167,.11); }
.tag.slot-note-tag { color: #fff0bf; border-color: rgba(255,212,121,.52); background: rgba(255,212,121,.12); }
.participation-select { min-height: 32px; width: auto; max-width: 160px; border-radius: 999px; padding: 0 9px; font-size: 12px; font-weight: 800; }
.row-action-menu { position: relative; display: inline-flex; }
.row-action-menu summary { display: inline-flex; align-items: center; min-height: 26px; border: 1px solid rgba(105,210,255,.34); border-radius: 999px; background: rgba(105,210,255,.10); color: #d9f7ff; padding: 3px 8px; font-size: 12px; font-weight: 800; cursor: pointer; list-style: none; }
.row-action-menu summary:hover { border-color: rgba(105,210,255,.58); background: rgba(105,210,255,.16); color: var(--text); }
.row-action-menu summary::-webkit-details-marker { display: none; }
.row-action-items { position: absolute; right: 0; top: calc(100% + 4px); z-index: 20; display: grid; gap: 4px; min-width: 148px; border: 1px solid rgba(255,255,255,.13); border-radius: 12px; background: #151b28; padding: 6px; box-shadow: var(--shadow); }
.row-action-items button, .row-action-items a, .filter-chip { display: inline-flex; align-items: center; justify-content: center; text-align: center; border: 1px solid rgba(105,210,255,.30); border-radius: 999px; background: rgba(105,210,255,.09); color: var(--text); min-height: 30px; padding: 5px 9px; font-size: 12px; font-weight: 800; white-space: nowrap; text-decoration: none; }
.row-action-items button:disabled { color: var(--muted); opacity: .45; cursor: default; }
.active-filter-chips { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 8px; }
.filter-chip { color: #d9f7ff; border-color: rgba(105,210,255,.40); background: rgba(105,210,255,.10); }
.favorite-button { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 999px; border: 1px solid rgba(255,255,255,.12); background: rgba(0,0,0,.16); color: var(--muted); font-size: 18px; line-height: 1; padding: 0; }
.favorite-button:hover { color: var(--warning); border-color: rgba(255,212,121,.42); background: rgba(255,212,121,.10); }
.favorite-button[aria-pressed="true"], .favorite-button[aria-pressed="mixed"] { color: var(--warning); border-color: rgba(255,212,121,.58); background: rgba(255,212,121,.14); }
.favorite-button.favorite-strong { color: #ffd8ea; border-color: rgba(255,121,179,.64); background: rgba(255,121,179,.15); }
.favorite-button.small { width: 30px; height: 30px; font-size: 16px; flex: 0 0 auto; }
.favorite-button.act-favorite-button { width: auto; min-width: 92px; gap: 6px; padding: 0 11px; font-size: 13px; font-weight: 900; }
.attended-button { display: inline-flex; align-items: center; justify-content: center; min-width: 48px; height: 34px; border-radius: 999px; border: 1px solid rgba(255,255,255,.12); background: rgba(0,0,0,.16); color: var(--muted); padding: 0 9px; font-size: 12px; font-weight: 900; white-space: nowrap; }
.attended-button:hover, .attended-button[aria-pressed="true"] { color: #d8ffe3; border-color: rgba(150,242,167,.58); background: rgba(150,242,167,.12); }
.attended-button.small { min-width: 38px; height: 30px; padding: 0 7px; font-size: 11px; flex: 0 0 auto; }
.slot-note-button { display: inline-flex; align-items: center; justify-content: center; min-width: 46px; height: 34px; border-radius: 999px; border: 1px solid rgba(255,255,255,.12); background: rgba(0,0,0,.16); color: var(--muted); padding: 0 9px; font-size: 12px; font-weight: 900; white-space: nowrap; }
.slot-note-button:hover, .slot-note-button.has-note { color: var(--warning); border-color: rgba(255,212,121,.54); background: rgba(255,212,121,.12); }
.slot-note-button.small { min-width: 38px; height: 30px; padding: 0 7px; font-size: 11px; flex: 0 0 auto; }
.act-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.act-card-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.appearance-line { display: flex; gap: 10px; align-items: center; justify-content: space-between; width: 100%; border-top: 1px solid rgba(255,255,255,.07); padding-top: 7px; }
.appearance-main { display: flex; gap: 10px; align-items: baseline; min-width: 0; }
.appearance-line:first-child { border-top: 0; padding-top: 0; }
.timetable-view { display: grid; gap: 10px; min-width: 0; }
.timetable-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.timetable-view h3, .map-lite h3 { margin: 0; font-size: 16px; letter-spacing: 0; }
.timetable-head span { color: var(--muted); font-size: 12px; font-weight: 800; }
.schedule-layout-toggle { position: sticky; top: 0; z-index: 6; display: flex; justify-content: flex-end; gap: 5px; padding: 4px 0; background: rgba(13,16,24,.94); backdrop-filter: blur(12px); }
.schedule-layout-toggle button { border: 1px solid rgba(255,255,255,.12); border-radius: 999px; background: rgba(255,255,255,.055); color: var(--muted); min-height: 30px; padding: 5px 10px; font-size: 12px; font-weight: 900; }
.schedule-layout-toggle button[aria-pressed="true"] { color: var(--text); border-color: rgba(105,210,255,.46); background: rgba(105,210,255,.14); }
.schedule-layout-toggle .schedule-priority-toggle { border-color: rgba(255,212,121,.30); }
.schedule-layout-toggle .schedule-priority-toggle[aria-pressed="true"] { border-color: rgba(255,212,121,.58); background: rgba(255,212,121,.13); }
.timetable-scroll { max-width: 100%; overflow: auto; border: 1px solid rgba(255,255,255,.09); border-radius: 14px; background: rgba(0,0,0,.12); }
.timetable-grid {
  --time-row-height: 22px;
  display: grid;
  grid-template-columns: 64px repeat(var(--venue-count), minmax(270px, 300px));
  align-items: start;
  width: max-content;
  min-width: 100%;
}
.timetable-ruler { position: sticky; left: 0; z-index: 4; display: grid; grid-template-rows: auto 1fr; min-width: 64px; background: rgba(18,23,34,.98); border-right: 1px solid rgba(255,255,255,.09); }
.timetable-column { display: grid; grid-template-rows: auto 1fr; min-width: 0; border-right: 1px solid rgba(255,255,255,.075); background: rgba(255,255,255,.025); }
.timetable-column-heading, .timetable-column h4 {
  position: sticky;
  top: 150px;
  z-index: 3;
  min-height: 38px;
  margin: 0;
  padding: 9px 8px;
  border-bottom: 1px solid rgba(255,255,255,.08);
  background: rgba(18,23,34,.98);
  color: var(--text);
  font-size: 12px;
  line-height: 1.2;
  overflow-wrap: anywhere;
}
.timetable-column-heading { z-index: 5; color: var(--muted); font-family: var(--mono); }
.timetable-ruler-body, .timetable-column-body {
  position: relative;
  display: grid;
  min-height: calc(var(--time-rows) * var(--time-row-height));
  background-image:
    repeating-linear-gradient(to bottom, rgba(255,255,255,.09) 0 1px, transparent 1px calc(var(--time-row-height) * 6)),
    repeating-linear-gradient(to bottom, rgba(255,255,255,.035) 0 1px, transparent 1px calc(var(--time-row-height) * 3));
}
.timetable-time-mark {
  padding: 2px 6px 0 0;
  color: var(--muted);
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 900;
  text-align: right;
  line-height: 1.1;
}
.timetable-current-line {
  position: absolute;
  left: 0;
  right: 0;
  top: calc(var(--current-offset) * var(--time-row-height));
  z-index: 2;
  border-top: 2px solid rgba(255,138,138,.88);
  pointer-events: none;
}
.timetable-current-line-ruler { z-index: 3; }
.timetable-current-line span {
  position: absolute;
  right: 4px;
  top: -10px;
  max-width: 58px;
  overflow: hidden;
  text-overflow: ellipsis;
  border: 1px solid rgba(255,138,138,.56);
  border-radius: 999px;
  background: rgba(18,23,34,.96);
  color: #ffd7d7;
  padding: 1px 5px;
  font-family: var(--mono);
  font-size: 10px;
  font-weight: 900;
  white-space: nowrap;
}
.timetable-slot {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto auto;
  gap: 3px;
  min-height: 0;
  margin: 2px 6px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 8px;
  background: rgba(255,255,255,.06);
  padding: 7px;
  font-size: 12px;
}
.timetable-slot-head { display: flex; align-items: center; justify-content: space-between; gap: 4px; min-width: 0; }
.timetable-slot .time { font-size: 12px; }
.timetable-compact-status { display: inline-flex; align-items: center; gap: 2px; flex: 0 0 auto; }
.timetable-status-dot { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; border: 1px solid rgba(255,255,255,.12); border-radius: 999px; background: rgba(0,0,0,.18); color: var(--muted); font-size: 10px; font-weight: 900; line-height: 1; }
.timetable-status-dot.favorite-normal { color: var(--warning); border-color: rgba(255,212,121,.54); background: rgba(255,212,121,.13); }
.timetable-status-dot.favorite-strong { color: #ffd8ea; border-color: rgba(255,121,179,.60); background: rgba(255,121,179,.15); }
.timetable-status-dot.attended-status, .timetable-status-dot.participation-status { color: #d8ffe3; border-color: rgba(150,242,167,.52); background: rgba(150,242,167,.12); }
.timetable-slot .act-name {
  min-width: 0;
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  font-size: 14px;
  line-height: 1.22;
  overflow-wrap: anywhere;
}
.timetable-slot .meta { gap: 3px; margin-top: 1px; font-size: 10px; overflow: hidden; max-height: 19px; }
.timetable-slot .tag { padding: 1px 5px; font-size: 10px; }
.timetable-slot .slot-actions { justify-content: flex-start; flex-wrap: wrap; gap: 4px; }
.timetable-slot .favorite-button.small { width: 26px; height: 26px; font-size: 14px; }
.timetable-slot .attended-button.small { min-width: 34px; height: 26px; font-size: 10px; padding: 0 5px; }
.timetable-slot .participation-select { min-height: 26px; max-width: 130px; font-size: 11px; }
.timetable-slot.is-short-slot { grid-template-rows: auto minmax(0, 1fr); }
.timetable-slot.is-short-slot .meta, .timetable-slot.is-short-slot .slot-actions { display: none; }
.timetable-list-columns { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; align-items: start; }
.timetable-list-column { display: grid; gap: 7px; min-width: 0; border: 1px solid rgba(255,255,255,.09); border-radius: 14px; background: rgba(0,0,0,.12); padding: 9px; }
.timetable-list-column h4 { position: sticky; top: 150px; z-index: 3; margin: -9px -9px 1px; padding: 8px 9px; border-bottom: 1px solid rgba(255,255,255,.08); color: var(--text); font-size: 13px; line-height: 1.25; background: rgba(18,23,34,.96); overflow-wrap: anywhere; }
.timetable-list-slot { display: grid; gap: 5px; min-width: 0; border: 1px solid rgba(255,255,255,.09); border-radius: 10px; background: rgba(255,255,255,.045); padding: 8px; }
.timetable-list-slot .time { font-size: 12px; }
.timetable-list-slot .act-name { font-size: 13px; line-height: 1.25; overflow-wrap: anywhere; }
.timetable-list-slot .meta { margin-top: 0; }
.timetable-list-slot .slot-actions { justify-content: flex-start; flex-wrap: wrap; }
.timetable-list-slot .participation-select { max-width: 100%; flex: 1 1 118px; }
.map-lite { display: grid; gap: 9px; }
.map-lite-head { display: grid; gap: 4px; color: var(--muted); }
.map-lite-head p { margin: 0; }
.map-venue-card { display: grid; gap: 7px; border: 1px solid rgba(255,255,255,.09); border-radius: 14px; background: rgba(255,255,255,.045); padding: 11px; }
.map-venue-card.is-current-location { border-color: rgba(150,242,167,.46); background: rgba(150,242,167,.08); }
.map-venue-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.map-venue-head h3 { overflow-wrap: anywhere; }
.map-venue-sub { margin-top: 3px; color: var(--muted); font-size: 12px; font-weight: 800; overflow-wrap: anywhere; }
.recap-view { display: grid; gap: 14px; }
.recap-head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 12px; border: 1px solid rgba(255,255,255,.09); border-radius: 14px; background: rgba(105,210,255,.07); padding: 13px; }
.recap-head .action { white-space: nowrap; }
.recap-head h3, .recap-section h3 { margin: 0; font-size: 16px; letter-spacing: 0; }
.recap-head p { margin: 4px 0 0; color: var(--muted); line-height: 1.55; }
.recap-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(118px, 1fr)); gap: 8px; }
.recap-stat { display: grid; gap: 4px; border: 1px solid rgba(255,255,255,.09); border-radius: 12px; background: rgba(255,255,255,.045); padding: 10px; }
.recap-stat span, .recap-sub { color: var(--muted); font-size: 12px; font-weight: 800; }
.recap-stat strong { color: var(--text); font-size: 22px; line-height: 1; }
.recap-section { display: grid; gap: 8px; min-width: 0; }
.recap-timeline, .recap-grid { display: grid; gap: 8px; }
.recap-grid { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); align-items: start; }
.recap-row, .recap-card { display: grid; gap: 6px; border: 1px solid rgba(255,255,255,.09); border-radius: 12px; background: rgba(255,255,255,.045); padding: 10px; }
.recap-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.recap-card-head h4 { margin: 0; color: var(--text); font-size: 14px; line-height: 1.3; overflow-wrap: anywhere; }
.recap-list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; color: var(--muted); line-height: 1.55; }
.empty { border: 1px dashed rgba(255,255,255,.18); color: var(--muted); border-radius: 18px; padding: 32px; text-align: center; }
.toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%) translateY(20px); opacity: 0; pointer-events: none; background: rgba(15,20,31,.94); border: 1px solid rgba(255,255,255,.14); border-radius: 999px; color: var(--text); padding: 10px 16px; box-shadow: var(--shadow); transition: .2s ease; z-index: 999; }
.toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
.presentation-exit { position: fixed; right: 14px; bottom: 14px; z-index: 1000; border: 1px solid rgba(105,210,255,.56); border-radius: 999px; background: rgba(13,16,24,.94); color: var(--text); min-height: 38px; padding: 8px 13px; box-shadow: var(--shadow); font-weight: 900; }
.presentation-exit[hidden] { display: none !important; }
body.presentation-mode .hero,
body.presentation-mode .unofficial-banner,
body.presentation-mode .legacy-migration-notice,
body.presentation-mode .help-note,
body.presentation-mode .event-info,
body.presentation-mode .controls,
body.presentation-mode .sidebar,
body.presentation-mode footer.notice,
body.presentation-mode .recommendation-panel,
body.presentation-mode .current-time-panel,
body.presentation-mode .conflict-panel,
body.presentation-mode .personal-plans,
body.presentation-mode .context-settings,
body.presentation-mode .result-actions,
body.presentation-mode .view-switcher,
body.presentation-mode .slot-actions,
body.presentation-mode .row-action-menu,
body.presentation-mode .schedule-layout-toggle { display: none !important; }
body.presentation-mode .content { display: block; min-height: 0; }
body.presentation-mode .panel { border-radius: 0; box-shadow: none; }
body.presentation-mode .results-wrap { padding: 12px; }
body.presentation-mode .result-toolbar { position: static; margin: 0 0 12px; padding: 0; border: 0; background: transparent; box-shadow: none; }
.release-page .hero { align-items: flex-start; }
.release-page .stats { padding-top: 4px; }
.release-summary { display: grid; gap: 10px; padding: 16px; border-bottom: 1px solid rgba(255,255,255,.08); background: rgba(255,255,255,.035); }
.release-summary p { margin: 0; color: var(--muted); line-height: 1.65; }
.release-list { display: grid; gap: 0; }
.release-entry { display: grid; grid-template-columns: 132px minmax(0, 1fr); gap: 14px; padding: 16px; border-top: 1px solid rgba(255,255,255,.08); }
.release-entry:first-child { border-top: 0; }
.release-time { color: var(--accent); font-family: var(--mono); font-weight: 900; white-space: nowrap; }
.release-body { display: grid; gap: 8px; min-width: 0; }
.release-body h2 { margin: 0; font-size: 18px; letter-spacing: 0; }
.release-body ul { display: grid; gap: 6px; margin: 0; padding-left: 1.2em; color: var(--muted); line-height: 1.65; }
.release-body strong { color: var(--text); }
.release-meta { display: flex; flex-wrap: wrap; gap: 6px; }
.release-meta code { display: inline-flex; align-items: center; min-height: 24px; border: 1px solid rgba(255,255,255,.09); border-radius: 999px; padding: 2px 8px; color: var(--muted); background: rgba(0,0,0,.15); font-size: 12px; }
@media (max-width: 980px) {
  .hero { display: block; }
  .stats { justify-content: flex-start; margin-top: 16px; }
  .main-grid { grid-template-columns: 1fr 1fr; }
  .content { grid-template-columns: 1fr; }
  .sidebar { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.08); padding: 0; }
  .side-title { display: none; }
  .venue-filter summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 44px; padding: 12px 14px; color: var(--text); font-size: 13px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; cursor: pointer; list-style: none; }
  .venue-filter summary::-webkit-details-marker { display: none; }
  .venue-filter summary::after { content: "開く"; border: 1px solid rgba(255,255,255,.14); border-radius: 999px; padding: 2px 9px; color: var(--muted); font-size: 12px; letter-spacing: 0; }
  .venue-filter[open] summary::after { content: "閉じる"; }
  .venue-filter[open] .venue-list { border-top: 1px solid rgba(255,255,255,.08); padding: 10px 12px 14px; }
  .venue-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .conflict-item { grid-template-columns: 1fr; }
  .conflict-reason { border-left: 0; border-top: 1px solid rgba(255,255,255,.10); padding: 7px 0 0; }
  .personal-plan-form { grid-template-columns: 1fr 1fr; }
  .personal-plan-form label:last-of-type { grid-column: 1 / -1; }
  .context-settings-form { grid-template-columns: 1fr 1fr; }
  .context-settings-form .action { min-width: 0; }
  .section { top: 190px; }
}
@media (max-width: 640px) {
  body { overflow-x: hidden; }
  .app { padding: 18px 10px 42px; }
  .sub, .stats, .unofficial-banner, .legacy-migration-notice, .help-note, .event-info, .panel { max-width: calc(100vw - 20px); }
  .stats { width: calc(100vw - 20px); }
  .pill, .tab, .action { white-space: normal; }
  .unofficial-copy, .unofficial-copy small, .migration-body { overflow-wrap: anywhere; }
  .panel { overflow: visible; }
  .main-grid { grid-template-columns: 1fr 1fr; }
  .main-grid label { min-width: 0; }
  .venue-list { grid-template-columns: 1fr; }
  .controls { position: relative; }
  .section { position: relative; top: auto; }
  .slot-line { grid-template-columns: 1fr; gap: 4px; }
  .conflict-pair { grid-template-columns: minmax(0, 1fr) 16px minmax(0, 1fr); gap: 5px; align-items: stretch; }
  .conflict-side { align-content: start; }
  .conflict-side-meta { gap: 3px; font-size: 10px; line-height: 1.25; }
  .conflict-side-act { font-size: 13px; line-height: 1.25; }
  .conflict-side-venue { font-size: 11px; line-height: 1.3; }
  .conflict-arrow { align-self: center; text-align: center; }
  .personal-plan-form, .personal-plan-item, .recommendation-item, .context-settings-form { grid-template-columns: 1fr; }
  .slot-actions { justify-content: flex-start; flex-wrap: wrap; }
  .row-action-items { left: 0; right: auto; }
  .timetable-column h4, .timetable-list-column h4 { position: static; }
  .map-venue-head { align-items: flex-start; flex-direction: column; }
  .result-toolbar {
    position: sticky;
    top: 0;
    z-index: 8;
    align-items: stretch;
    margin: -18px -18px 12px;
    padding: 10px 18px;
    border: 1px solid rgba(105,210,255,.26);
    border-left: 4px solid rgba(105,210,255,.82);
    border-right: 0;
    background: linear-gradient(90deg, rgba(105,210,255,.18), rgba(13,16,24,.96) 42%);
    box-shadow: 0 12px 28px rgba(0,0,0,.34);
    backdrop-filter: blur(16px);
  }
  .result-toolbar-main { display: grid; grid-template-columns: 1fr; align-items: start; gap: 7px; }
  .result-title { min-width: 0; font-size: 16px; line-height: 1.25; }
  #resultSubtitle { display: block; max-width: calc(100vw - 72px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
  .result-actions { display: flex; width: 100%; gap: 6px; justify-content: flex-start; flex-wrap: wrap; overflow: visible; padding-bottom: 1px; }
  .result-action, .result-more-summary, .transfer-menu-summary { white-space: nowrap; }
  .result-more-menu, .transfer-menu-panel { max-width: calc(100vw - 36px); }
  .view-switcher { margin: 0 -2px; padding: 2px 2px 3px; }
  .view-mode-button { min-height: 32px; padding: 5px 10px; font-size: 12px; }
  .filter-jump { display: inline-flex; align-items: center; justify-content: center; }
  .schedule-layout-toggle { justify-content: flex-start; overflow-x: auto; margin: 0 -2px; padding: 4px 2px; }
  .schedule-layout-toggle button { flex: 0 0 auto; }
  .timetable-grid { --time-row-height: 28px; grid-template-columns: 64px repeat(var(--venue-count), minmax(260px, 290px)); }
  .timetable-column-heading, .timetable-column h4 { position: static; min-height: 34px; padding: 8px 7px; font-size: 11px; }
  .timetable-slot { grid-template-rows: auto minmax(0, 1fr); padding: 7px 8px; }
  .timetable-slot .time { font-size: 12px; }
  .timetable-status-dot { min-width: 17px; height: 17px; font-size: 9px; }
  .timetable-slot .act-name { -webkit-line-clamp: 2; font-size: 13px; line-height: 1.2; }
  .timetable-slot .meta, .timetable-slot .slot-actions { display: none; }
  .timetable-slot .participation-select { display: none; }
  .timetable-slot.is-short-slot { grid-template-rows: auto minmax(0, 1fr); }
  .timetable-list-columns { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .timetable-list-column { gap: 6px; padding: 7px; }
  .timetable-list-column h4 { position: static; margin: -7px -7px 1px; padding: 7px; font-size: 11px; }
  .timetable-list-slot { padding: 7px; border-radius: 9px; }
  .timetable-list-slot .time { font-size: 11px; }
  .timetable-list-slot .act-name { font-size: 12px; line-height: 1.2; }
  .timetable-list-slot .tag { padding: 1px 5px; font-size: 10px; }
  .timetable-list-slot .slot-actions { gap: 5px; }
  .timetable-list-slot .participation-select { display: inline-block; min-height: 28px; max-width: 100%; font-size: 11px; }
  .personal-plans summary { min-height: 38px; padding: 8px 11px; }
  .unofficial-banner, .legacy-migration-notice { grid-template-columns: 1fr; }
  .release-entry { grid-template-columns: 1fr; gap: 8px; padding: 14px; }
  .release-time { white-space: normal; }
  .release-body h2 { font-size: 16px; }
}
@media print {
  body { background: #fff; color: #111; }
  .controls, .sidebar, .stats, .filter-jump, .toast, .recommendation-panel, .current-time-panel, .event-info, .legacy-migration-notice, .presentation-exit { display: none !important; }
  .unofficial-banner { border: 1px solid #999; background: #fff; color: #111; box-shadow: none; }
  .unofficial-badge { color: #111; border: 1px solid #111; background: #fff; }
  .app { max-width: none; padding: 0; }
  .panel, .slot, .act-card, .section { box-shadow: none; background: #fff; color: #111; border-color: #999; }
  .slot.is-current-window, .appearance-line.is-current-window, .recommendation-item.is-current-window { box-shadow: none; }
  .content { display: block; }
  .time { color: #111; }
  .tag, .meta, #resultSubtitle { color: #333; }
  .conflict-panel, .conflict-panel.has-alert, .conflict-panel.has-conflict { border: 1px solid #999; background: #fff; color: #111; }
  .personal-plan-form, .personal-plan-actions { display: none !important; }
  .favorite-button, .attended-button, .slot-note-button { display: none; }
}
