:root {
  --red: #e60012;
  --ink: #191416;
  --sub: #76696d;
  --paper: #fffafa;
  --card: #fff;
  --line: #eddde0;
  --soft: #fff0f2;
  --shadow: 0 16px 44px rgba(157, 0, 20, 0.1);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 500;
}
a { color: inherit; text-decoration: none; }
.wrap { width: min(920px, 90vw); margin: auto; }

.topline {
  height: 6px;
  background: linear-gradient(90deg, #9d000d, var(--red), #ff6672);
}
header { background: var(--red); color: #fff; }
.bar {
  min-height: 76px;
  display: flex;
  align-items: center;
  gap: 24px;
}
.brand {
  color: #fff;
  font-size: 2rem;
  font-weight: 900;
  letter-spacing: -0.1em;
  transform: skew(-3deg);
}
.back {
  margin-left: auto;
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.55);
  border-radius: 999px;
  padding: 9px 14px;
  font-size: 0.88rem;
  font-weight: 800;
}

main { padding: 34px 0 70px; }
.breadcrumb {
  color: var(--sub);
  font-size: 0.82rem;
  margin-bottom: 18px;
}
.breadcrumb a { color: var(--red); font-weight: 800; }
.title {
  margin: 0 0 22px;
  font-size: clamp(1.75rem, 5vw, 2.7rem);
  font-weight: 900;
  letter-spacing: -0.05em;
}

.hero-summary {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  gap: 34px;
  align-items: center;
  padding: 26px;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--card);
  box-shadow: var(--shadow);
}
.poster-wrap {
  position: relative;
  aspect-ratio: 5 / 7;
  overflow: hidden;
  border-radius: 15px;
  background: #71000c;
}
.poster {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.story-panel h2 {
  margin: 0 0 17px;
  padding-left: 13px;
  border-left: 6px solid var(--red);
  font-size: 1.35rem;
  font-weight: 900;
  letter-spacing: -0.04em;
}
.story-panel p {
  margin: 0;
  color: #4f4548;
  font-size: 1rem;
  line-height: 2;
}
.favorite-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 22px;
}
.favorite-button {
  position: static;
  width: auto;
  min-height: 44px;
  padding: 0 18px;
  border: 1px solid #ffc2c8;
  border-radius: 999px;
  background: #fff;
  color: var(--red);
  font: 800 0.9rem/1 "Noto Sans JP", sans-serif;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 6px 16px rgba(100, 0, 16, 0.08);
  transition: transform 0.18s, background 0.18s, color 0.18s;
}
.favorite-button:hover,
.favorite-button:focus-visible {
  transform: translateY(-1px);
  outline: 3px solid rgba(237, 0, 28, 0.15);
  outline-offset: 3px;
}
.favorite-button.active { background: var(--red); color: #fff; }
.favorite-note {
  position: static;
  background: #fff0f2;
  color: #7b2030;
  padding: 7px 10px;
  border-radius: 999px;
  font-size: 0.76rem;
  font-weight: 800;
  opacity: 0;
  visibility: hidden;
  transform: translateY(5px);
  transition: 0.18s;
}
.favorite-note.show { opacity: 1; visibility: visible; transform: none; }

.section,
.related-section {
  margin-top: 30px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 18px;
  padding: 26px;
}
.section h2 {
  margin: 0 0 16px;
  padding-left: 13px;
  border-left: 6px solid var(--red);
  font-size: 1.35rem;
  font-weight: 900;
  letter-spacing: -0.04em;
}
.section p { margin: 0; color: #4f4548; line-height: 2; }

.stream-list {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 9px;
  width: 100%;
  max-width: 760px;
  margin-inline: auto;
}
.stream {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 1 1 150px;
  width: 100%;
  max-width: 190px;
  min-height: 44px;
  gap: 5px;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 8px 14px;
  color: var(--ink);
  font-weight: 900;
  font-size: 0.86rem;
  text-align: center;
  transition: transform 0.2s, box-shadow 0.2s;
}
.stream:hover { transform: translateY(-2px); box-shadow: 0 5px 14px rgba(25, 20, 22, 0.1); }
.stream.abema,
.stream.netflix { color: #e6003d; border-color: #ffb6c5; background: #fff3f6; }
.stream.prime-video,
.stream.tver { color: #00709f; border-color: #9fd8ef; background: #eef9ff; }
.stream.disney { color: #243daa; border-color: #b8c2f1; background: #f2f4ff; }
.stream.unext { color: #111; border-color: #9f9f9f; background: #f3f3f3; }
.stream.danime { color: #d85a00; border-color: #ffc08f; background: #fff5ec; }
.stream.youtube { color: #d40000; border-color: #ffb5b5; background: #fff2f2; }
.stream.hulu { color: #007c50; border-color: #9cdbc4; background: #effbf6; }
.stream.dmm-tv { color: #6b23b5; border-color: #d5b4f2; background: #f8f1ff; }
.stream.tsutaya { color: #1556a8; border-color: #b4ccef; background: #f2f7ff; }
.stream::after { content: "↗"; font-size: 0.72rem; }
.empty-stream { width: 100%; text-align: center; }
.stream-status {
  flex: 1 0 100%;
  margin: 2px 0 0;
  padding: 13px 16px;
  border: 1px solid #eadadd;
  border-radius: 12px;
  background: #fffafa;
  color: #5c4d51;
  text-align: center;
  line-height: 1.65;
}
.stream-status strong,
.stream-status span { display: block; }
.stream-status strong { color: var(--ink); font-size: 0.92rem; }
.stream-status span { margin-top: 2px; font-size: 0.78rem; }
.stream-status.partial { margin-top: 8px; background: #fff8f0; border-color: #f1d7bb; }
.stream-status.checked { background: #f7f7f7; border-color: #dedede; }
.notice {
  max-width: 760px;
  margin: 14px auto 0 !important;
  color: var(--sub) !important;
  font-size: 0.78rem;
  line-height: 1.7 !important;
  text-align: center;
}

.facts { margin: 0; display: grid; }
.fact {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 18px;
  padding: 14px 0;
  border-bottom: 1px solid var(--line);
}
.fact:last-child { border: 0; }
.fact dt { font-weight: 900; }
.fact dd { margin: 0; color: #54494c; line-height: 1.7; }
.meta-link {
  display: inline-flex;
  margin: 2px 7px 2px 0;
  padding: 5px 9px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--red);
  font-size: 0.85rem;
  font-weight: 800;
}
.meta-link:hover { background: var(--soft); border-color: var(--red); }
.official-links { display: flex; flex-wrap: wrap; gap: 9px; }
.official-link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  background: var(--soft);
  color: var(--red);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 9px 12px;
  font-weight: 900;
}

.section-kicker {
  margin: 0 0 7px;
  color: var(--red);
  font-size: 0.78rem;
  font-weight: 900;
  letter-spacing: 0.1em;
}
.related-section h2 {
  margin: 0;
  font-size: clamp(1.35rem, 3vw, 1.8rem);
  font-weight: 900;
  line-height: 1.45;
  letter-spacing: -0.03em;
}
.related-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-top: 18px;
}
.related-card {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #fff;
  transition: 0.16s;
}
.related-card:hover { border-color: var(--red); transform: translateY(-2px); }
.related-card img {
  display: block;
  width: 100%;
  aspect-ratio: 5 / 4;
  object-fit: cover;
  object-position: center 24%;
}
.related-card span { display: block; padding: 12px; }
.related-card small { display: block; color: var(--red); font-size: 0.68rem; font-weight: 900; }
.related-card strong { display: block; margin-top: 4px; font-size: 0.82rem; line-height: 1.5; }

.home-link {
  display: block;
  text-align: center;
  background: #21191b;
  color: #fff;
  margin-top: 28px;
  padding: 15px;
  border-radius: 13px;
  font-weight: 900;
}
footer { background: #21191b; color: #cdbfc2; padding: 28px 0; font-size: 0.8rem; }

@media (max-width: 600px) {
  .wrap { width: 92vw; }
  .bar { min-height: 68px; }
  .brand { font-size: 1.65rem; }
  .hero-summary {
    grid-template-columns: 118px minmax(0, 1fr);
    gap: 16px;
    align-items: start;
    padding: 16px;
  }
  .poster-wrap { border-radius: 11px; }
  .story-panel h2 { margin-bottom: 10px; font-size: 1.08rem; }
  .story-panel p { font-size: 0.84rem; line-height: 1.78; }
  .favorite-actions { margin-top: 16px; gap: 8px; }
  .favorite-button { min-height: 40px; padding: 0 14px; font-size: 0.8rem; }
  .favorite-note { max-width: 100%; font-size: 0.68rem; }
  .section,
  .related-section { padding: 21px 18px; }
  .stream-list { max-width: 380px; }
  .stream { flex-basis: 130px; max-width: 170px; }
  .fact { grid-template-columns: 1fr; gap: 5px; }
  .title { margin-bottom: 16px; }
  .related-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .related-card img { aspect-ratio: 5 / 3; }
  .related-card span { padding: 10px; }
}

@media (max-width: 410px) {
  .hero-summary { grid-template-columns: 104px minmax(0, 1fr); gap: 12px; padding: 13px; }
  .story-panel h2 { padding-left: 9px; border-left-width: 5px; font-size: 1rem; }
  .story-panel p { font-size: 0.78rem; line-height: 1.72; }
}
