:root {
  /* 配色：主色／濃色／差し色(主色を兼用)／面／白 */
  --primary: #da005c;
  --deep: #1e2380;
  --deep-soft: #3a40a8;
  --accent: #da005c;
  --ink: #1e2380;
  --sub: #555a73;
  --bg: #ffffff;
  --surface: #e5e7eb;
  --border: #cdd1db;
  --shadow-1: 0 2px 8px rgba(0, 0, 0, 0.08);
  --shadow-2: 0 4px 12px rgba(0, 0, 0, 0.12);
  --shadow-3: 0 8px 24px rgba(0, 0, 0, 0.15);
  --font-ja: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic", Meiryo, sans-serif;
  --font-num: "Roboto Condensed", "Noto Sans JP", sans-serif;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  padding-bottom: 0;
  background:
    linear-gradient(90deg, rgba(30, 35, 128, 0.04), transparent 16%, transparent 84%, rgba(218, 0, 92, 0.04)),
    var(--bg);
  color: var(--ink);
  font-family: var(--font-ja);
  font-size: 14px;
  line-height: 1.8;
  letter-spacing: 0;
  overflow-x: hidden;
  overflow-wrap: break-word;
  line-break: strict;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img,
svg {
  display: block;
  max-width: 100%;
}

a {
  color: inherit;
  text-decoration: none;
}

button,
input,
select,
textarea {
  font: inherit;
}

summary {
  cursor: pointer;
}

.skip-link {
  position: fixed;
  left: 16px;
  top: 12px;
  z-index: 1000;
  transform: translateY(-150%);
  padding: 10px 16px;
  border-radius: 4px;
  background: var(--primary);
  color: #fff;
  font-weight: 700;
}

.skip-link:focus {
  transform: translateY(0);
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  border-bottom: 1px solid rgba(205, 209, 219, 0.92);
  background: rgba(255, 255, 255, 0.96);
  backdrop-filter: blur(12px);
}

.header-line {
  height: 3px;
  background: linear-gradient(90deg, var(--deep) 0 70%, var(--primary) 70% 100%);
}

.header-inner {
  width: min(100% - 32px, 1200px);
  min-height: 64px;
  margin-inline: auto;
  display: flex;
  align-items: center;
  gap: 16px;
}

.brand {
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

.brand img {
  width: 44px;
  height: 50px;
  flex: 0 0 auto;
  object-fit: contain;
}

.brand span {
  min-width: 0;
  display: grid;
  color: var(--sub);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.35;
}

.brand strong {
  color: var(--ink);
  font-size: 18px;
  font-weight: 900;
}

.global-nav {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 22px;
  color: var(--ink);
  font-size: 13px;
  font-weight: 700;
}

.global-nav a {
  position: relative;
  padding-block: 22px;
}

.global-nav a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 16px;
  height: 2px;
  transform: scaleX(0);
  transform-origin: left;
  background: var(--accent);
  transition: transform 180ms ease;
}

.global-nav a:hover::after,
.global-nav a:focus-visible::after {
  transform: scaleX(1);
}

.btn {
  display: inline-flex;
  min-height: 48px;
  align-items: center;
  justify-content: center;
  gap: 14px;
  border: 1px solid var(--primary);
  border-radius: 4px;
  background: var(--primary);
  color: #fff;
  padding: 14px 32px;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
  transition: transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease, border-color 180ms ease;
}

.btn:hover,
.btn:focus-visible {
  border-color: var(--deep);
  background: var(--deep);
  box-shadow: var(--shadow-1);
  transform: translateY(-1px);
}

.btn-small {
  min-height: 40px;
  padding: 10px 18px;
  font-size: 12px;
}

.btn-large {
  min-height: 54px;
  padding: 16px 34px;
  font-size: 16px;
}

.btn-block {
  width: 100%;
}

.btn-outline {
  background: transparent;
  color: var(--primary);
}

.btn-outline:hover,
.btn-outline:focus-visible {
  background: var(--surface);
  color: var(--deep);
}

.btn-light {
  border-color: #fff;
  background: #fff;
  color: var(--primary);
}

.btn-light:hover,
.btn-light:focus-visible {
  border-color: var(--surface);
  background: var(--surface);
  color: var(--deep);
}

.drawer {
  display: none;
  position: relative;
  flex: 0 0 auto;
}

.drawer summary {
  width: 44px;
  height: 44px;
  display: grid;
  place-content: center;
  gap: 5px;
  list-style: none;
}

.drawer summary::-webkit-details-marker {
  display: none;
}

.drawer summary span {
  width: 22px;
  height: 2px;
  background: var(--ink);
}

.drawer nav {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  width: min(280px, calc(100vw - 32px));
  display: grid;
  padding: 8px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
  box-shadow: var(--shadow-2);
}

.drawer nav a {
  padding: 12px;
  border-radius: 4px;
  color: var(--ink);
  font-weight: 700;
}

.drawer nav a:hover,
.drawer nav a:focus-visible {
  background: var(--surface);
  color: var(--deep);
}

.page-shell {
  width: min(100% - 24px, 1200px);
  margin: 0 auto;
  padding: 24px 0 34px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}

.column {
  min-width: 0;
  display: grid;
  gap: 18px;
}

.panel,
.hero-card,
.image-link,
.red-menu {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
  box-shadow: var(--shadow-1);
}

.panel {
  min-width: 0;
  padding: 24px;
}

.section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 18px;
}

.section-head h2,
.panel > h2,
.red-brand h2 {
  position: relative;
  margin: 0;
  padding-left: 14px;
  color: var(--ink);
  font-size: 22px;
  font-weight: 900;
  line-height: 1.35;
  font-feature-settings: "palt";
}

.section-head h2::before,
.panel > h2::before,
.red-brand h2::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.18em;
  bottom: 0.18em;
  width: 4px;
  border-radius: 4px;
  background: var(--accent);
}

.section-label,
.hero-label,
.stat-label {
  margin: 0 0 8px;
  color: var(--primary);
  font-family: var(--font-num);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
}

.text-link,
.panel-link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--primary);
  font-size: 13px;
  font-weight: 700;
}

.text-link:hover,
.text-link:focus-visible,
.panel-link:hover,
.panel-link:focus-visible {
  color: var(--deep);
}

.panel-link {
  width: 100%;
  justify-content: center;
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}

.note {
  margin: 12px 0 0;
  color: var(--sub);
  font-size: 12px;
  line-height: 1.7;
}

.hero-card {
  position: relative;
  min-height: 530px;
  overflow: hidden;
  color: #fff;
  background: var(--deep);
}

.hero-card > img,
.hero-overlay,
.hero-pattern {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.hero-card > img {
  object-fit: cover;
}

.hero-pattern {
  z-index: 1;
  background:
    linear-gradient(135deg, transparent 0 13%, rgba(218, 0, 92, 0.82) 13% 16%, transparent 16% 100%),
    linear-gradient(135deg, transparent 0 18%, rgba(30, 35, 128, 0.84) 18% 26%, transparent 26% 100%),
    linear-gradient(135deg, transparent 0 86%, rgba(218, 0, 92, 0.86) 86% 89%, transparent 89% 100%);
}

.hero-overlay {
  z-index: 2;
  background:
    linear-gradient(180deg, rgba(30, 35, 128, 0.12) 0%, rgba(30, 35, 128, 0.42) 50%, rgba(12, 14, 56, 0.95) 100%),
    linear-gradient(90deg, rgba(30, 35, 128, 0.42), transparent 55%);
}

.hero-copy {
  position: absolute;
  left: 24px;
  right: 24px;
  bottom: 24px;
  z-index: 3;
}

.hero-label {
  color: #fff;
  letter-spacing: 0.13em;
}

.hero-card h1 {
  margin: 0;
  color: #fff;
  font-size: 40px;
  font-weight: 900;
  line-height: 1.25;
  font-feature-settings: "palt";
}

.hero-card p:not(.hero-label) {
  margin: 16px 0 22px;
  color: rgba(255, 255, 255, 0.94);
  font-size: 15px;
  font-weight: 700;
}

.news-list {
  display: grid;
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--border);
}

.news-list li {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr);
  column-gap: 16px;
  align-items: center;
  padding: 14px 0;
  border-bottom: 1px solid var(--border);
}

.news-meta {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}

.news-list time {
  color: var(--ink);
  font-family: var(--font-num);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.news-list span {
  display: inline-flex;
  min-height: 22px;
  padding: 0 12px;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  background: var(--primary);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
}

.news-list span.blue {
  background: var(--deep-soft);
}

.news-list span.red {
  background: var(--accent);
}

.news-list a {
  min-width: 0;
  color: var(--ink);
  font-weight: 500;
}

.news-list a:hover,
.news-list a:focus-visible {
  color: var(--primary);
}

.power-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.power-card {
  position: relative;
  min-width: 0;
  padding: 20px 14px;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
  text-align: center;
}

.power-card::before,
.coach-card::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  transform: scaleX(0);
  transform-origin: left;
  background: var(--primary);
  transition: transform 180ms ease;
}

.power-card:hover::before,
.power-card:focus-within::before,
.coach-card:hover::before,
.coach-card:focus-within::before {
  transform: scaleX(1);
}

.circle-icon {
  width: 54px;
  height: 54px;
  display: grid;
  place-items: center;
  margin: 0 auto 12px;
  border-radius: 50%;
  background: var(--surface);
  color: var(--primary);
}

.circle-icon.small {
  width: 38px;
  height: 38px;
  margin: 0;
  flex: 0 0 auto;
}

.circle-icon svg {
  width: 28px;
  height: 28px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.circle-icon.small svg {
  width: 21px;
  height: 21px;
}

.power-card h3,
.phase-list h3,
.coach-card h3 {
  margin: 0;
  color: var(--ink);
  font-size: 16px;
  font-weight: 900;
  line-height: 1.5;
}

.power-card p {
  margin: 8px 0 0;
  color: var(--sub);
  font-size: 12px;
  line-height: 1.7;
}

.link-stack {
  display: grid;
  gap: 12px;
}

.image-link {
  position: relative;
  min-height: 108px;
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) 24px;
  gap: 12px;
  align-items: center;
  overflow: hidden;
  padding: 18px;
  color: #fff;
}

.image-link img,
.image-link-shade {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.image-link img {
  object-fit: cover;
}

.image-link-shade {
  background: linear-gradient(90deg, rgba(30, 35, 128, 0.94), rgba(218, 0, 92, 0.72));
}

.image-link-icon,
.image-link span:not(.image-link-shade),
.image-link b {
  position: relative;
  z-index: 1;
}

.image-link-icon {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, 0.52);
  border-radius: 4px;
}

.image-link-icon svg {
  width: 25px;
  height: 25px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.image-link strong {
  display: block;
  font-size: 17px;
  font-weight: 900;
  line-height: 1.3;
}

.image-link small {
  display: block;
  margin-top: 3px;
  color: rgba(255, 255, 255, 0.84);
  font-size: 12px;
  line-height: 1.5;
}

.partner-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.partner-card {
  min-height: 70px;
  display: grid;
  place-items: center;
  gap: 6px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
  font-family: var(--font-num);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
}

.partner-card img {
  max-width: 100%;
  max-height: 40px;
  width: auto;
  object-fit: contain;
}

.partner-card.partner-logo {
  grid-column: 1 / -1;
  min-height: 86px;
  padding: 14px;
}

.partner-card.partner-logo img {
  width: min(100%, 260px);
}

.statement-panel p:not(.section-label) {
  margin: 18px 0 0;
}

.achievement-panel h2 {
  margin-bottom: 24px;
}

.panel-photo,
.media-card {
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
}

.panel-photo {
  margin-bottom: 18px;
}

.panel-photo img,
.media-card img {
  width: 100%;
  object-fit: cover;
}

.panel-photo img {
  aspect-ratio: 16 / 9;
}

.achievement-photo img {
  object-position: center 42%;
}

.media-card {
  position: relative;
  min-height: 260px;
  box-shadow: var(--shadow-1);
}

.media-card img {
  height: 100%;
  min-height: 260px;
}

.media-card figcaption {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 22px;
  background: linear-gradient(180deg, transparent, rgba(30, 35, 128, 0.9));
  color: #fff;
  font-size: 18px;
  font-weight: 900;
}

.achievement {
  padding: 22px 0;
  border-top: 1px solid var(--border);
  text-align: center;
}

.achievement:first-of-type {
  border-top: 0;
}

.achievement p {
  margin: 0;
  color: var(--sub);
  font-size: 12px;
}

.stat-label {
  color: var(--primary) !important;
}

.laurel-stat {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 184px;
  margin: 8px 0 10px;
  background: url(./res/wreath.png) center / auto 184px no-repeat;
}

.laurel-stat strong {
  color: var(--primary);
  font-family: var(--font-num);
  font-size: 52px;
  font-weight: 700;
  line-height: 1;
}

.laurel-stat small {
  margin-left: 3px;
  font-size: 18px;
}

.phase-list {
  display: grid;
  gap: 12px;
  margin: 22px 0 0;
  padding: 0;
  list-style: none;
}

.phase-list li {
  min-width: 0;
  display: grid;
  grid-template-columns: 70px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  padding: 16px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
}

.phase-list span {
  color: var(--primary);
  font-family: var(--font-num);
  font-size: 34px;
  font-weight: 700;
  line-height: 0.9;
  font-variant-numeric: tabular-nums;
}

.phase-list small {
  display: block;
  margin-bottom: 3px;
  font-size: 11px;
  letter-spacing: 0.08em;
}

.phase-list p {
  margin: 2px 0 0;
  color: var(--sub);
  font-size: 12px;
}

.coach-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.coach-card {
  position: relative;
  min-width: 0;
  overflow: hidden;
  text-align: center;
}

.coach-card img {
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
}

.coach-card h3 {
  margin-top: 8px;
  font-size: 14px;
}

.coach-card p {
  margin: 0;
  color: var(--sub);
  font-size: 11px;
  line-height: 1.5;
}

.voice-panel {
  overflow: hidden;
  background: linear-gradient(180deg, #fff 0%, #e5e7eb 100%);
}

.voice-panel p:not(.section-label) {
  color: var(--sub);
}

.silhouette {
  min-height: 120px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 6px;
  margin: 8px -8px 0;
  opacity: 0.34;
}

.silhouette span {
  width: 44px;
  height: 86px;
  border-radius: 44px 44px 8px 8px;
  background: var(--deep);
}

.silhouette span:nth-child(2) {
  height: 108px;
}

.silhouette span:nth-child(3) {
  height: 94px;
}

.school-panel {
  display: grid;
  gap: 16px;
}

.badge {
  width: max-content;
  display: inline-flex;
  min-height: 26px;
  align-items: center;
  padding: 5px 12px;
  border-radius: 4px;
  background: var(--primary);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
}

.info-list {
  display: grid;
  gap: 16px;
  margin: 0;
}

.info-list div {
  display: grid;
  gap: 5px;
}

.info-list dt {
  display: flex;
  align-items: center;
  gap: 12px;
  color: var(--ink);
  font-weight: 900;
}

.info-list dd {
  margin: 0 0 0 50px;
  color: var(--ink);
  font-weight: 500;
}

.faq-list {
  display: grid;
  gap: 10px;
}

.faq-list details {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
}

.faq-list summary {
  position: relative;
  padding: 15px 42px 15px 46px;
  list-style: none;
  font-weight: 900;
  line-height: 1.5;
}

.faq-list summary::-webkit-details-marker {
  display: none;
}

.faq-list summary::before {
  content: "Q";
  position: absolute;
  left: 16px;
  top: 16px;
  width: 22px;
  height: 22px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--primary);
  color: #fff;
  font-family: var(--font-num);
  font-size: 13px;
}

.faq-list summary::after {
  content: "+";
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--primary);
  font-size: 18px;
  line-height: 1;
}

.faq-list details[open] summary::after {
  content: "-";
}

.faq-list p {
  margin: 0;
  padding: 0 16px 16px 46px;
  color: var(--sub);
  font-size: 13px;
}

.map {
  position: relative;
  height: 210px;
  margin-top: 16px;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 8px;
  background:
    linear-gradient(32deg, transparent 47%, #fff 48%, #fff 52%, transparent 53%) 0 0 / 76px 76px,
    linear-gradient(-32deg, transparent 47%, #fff 48%, #fff 52%, transparent 53%) 0 0 / 88px 88px,
    #e5e7eb;
}

.map::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 18% 25%, rgba(30, 35, 128, 0.12), transparent 18%),
    linear-gradient(110deg, transparent 0 38%, rgba(218, 0, 92, 0.12) 39% 45%, transparent 46% 100%);
}

.map span {
  position: absolute;
  left: 56%;
  top: 46%;
  width: 40px;
  height: 40px;
  transform: translate(-50%, -50%) rotate(45deg);
  border-radius: 50% 50% 50% 0;
  background: var(--primary);
  box-shadow: var(--shadow-2);
}

.map span::after {
  content: "";
  position: absolute;
  inset: 11px;
  border-radius: 50%;
  background: #fff;
}

.contact-form {
  display: grid;
  gap: 14px;
}

.contact-form label {
  display: grid;
  gap: 6px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 700;
}

.contact-form input,
.contact-form select,
.contact-form textarea {
  width: 100%;
  min-height: 48px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: #fff;
  color: var(--ink);
  font-size: 16px;
}

.contact-form textarea {
  min-height: 110px;
  resize: vertical;
}

.contact-form input:focus,
.contact-form select:focus,
.contact-form textarea:focus {
  outline: none;
  border: 2px solid var(--primary);
  padding: 11px;
}

.red-menu {
  display: grid;
  gap: 16px;
  padding: 24px;
  border-color: rgba(218, 0, 92, 0.42);
  background: var(--accent);
  color: #fff;
}

.red-brand {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
}

.red-brand img {
  width: 56px;
  height: 60px;
  object-fit: contain;
}

.red-brand h2 {
  color: #fff;
  font-size: 17px;
}

.red-brand h2::before {
  background: #fff;
}

.red-brand p {
  margin: 6px 0 0;
  color: #fff;
  font-size: 12px;
}

.socials {
  display: flex;
  justify-content: center;
  gap: 14px;
}

.socials a {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, 0.54);
  border-radius: 50%;
  color: #fff;
}

.socials svg {
  width: 18px;
  height: 18px;
  fill: currentColor;
  stroke: none;
}

.footer-brand .socials {
  justify-content: flex-start;
  margin-top: 16px;
}

.red-nav {
  display: grid;
  border-top: 1px solid rgba(255, 255, 255, 0.34);
}

.red-nav a {
  display: flex;
  min-height: 44px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.34);
  color: #fff;
  font-weight: 700;
}

.site-footer {
  background: var(--deep);
  color: #fff;
}

.footer-inner {
  width: min(100% - 48px, 1200px);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.45fr 0.8fr 0.8fr 1.1fr;
  gap: 32px;
  padding-block: 44px;
}

.footer-brand {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  gap: 14px;
}

.footer-brand img {
  width: 56px;
  height: 68px;
  object-fit: contain;
}

.footer-brand h2,
.footer-links h3,
.footer-contact h3,
.footer-brand p,
.footer-contact p {
  margin: 0;
}

.footer-brand h2 {
  font-size: 17px;
  font-weight: 900;
}

.footer-brand p,
.footer-contact p {
  color: rgba(255, 255, 255, 0.76);
  font-size: 12px;
}

.footer-links h3,
.footer-contact h3 {
  margin-bottom: 12px;
  font-family: var(--font-num);
  font-size: 13px;
  letter-spacing: 0.08em;
}

.footer-links a {
  display: block;
  margin-top: 7px;
  color: rgba(255, 255, 255, 0.78);
  font-size: 13px;
}

.footer-links a:hover,
.footer-links a:focus-visible {
  color: #fff;
}

.footer-contact {
  display: grid;
  align-content: start;
  gap: 12px;
  padding: 20px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.08);
}

.footer-bottom {
  width: min(100% - 48px, 1200px);
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 24px;
  justify-content: space-between;
  padding: 18px 0 28px;
  border-top: 1px solid rgba(255, 255, 255, 0.16);
  color: rgba(255, 255, 255, 0.66);
  font-size: 12px;
}

.footer-bottom a {
  color: rgba(255, 255, 255, 0.76);
}

.bottom-cta {
  display: none;
}

@media (max-width: 1120px) {
  .global-nav {
    display: none;
  }

  .drawer {
    display: block;
  }

  .header-cta {
    margin-left: auto;
  }

  .page-shell {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .column-right {
    grid-column: 1 / -1;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .red-menu {
    grid-column: 1 / -1;
  }
}

@media (max-width: 860px) {
  body {
    padding-bottom: 74px;
  }

  .page-shell,
  .column-right {
    grid-template-columns: 1fr;
  }

  .footer-inner {
    grid-template-columns: 1fr 1fr;
  }

  .bottom-cta {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 90;
    display: block;
    padding: 10px 14px;
    background: linear-gradient(90deg, var(--deep), var(--primary));
    box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.16);
  }

  .bottom-cta .btn {
    width: 100%;
  }
}

@media (max-width: 767px) {
  .header-inner {
    width: min(100% - 24px, 1200px);
    min-height: 62px;
    gap: 10px;
  }

  .brand img {
    width: 38px;
    height: 44px;
  }

  .brand strong {
    font-size: 14px;
  }

  .brand span {
    font-size: 10px;
  }

  .header-cta {
    display: inline-flex;
    margin-left: auto;
    min-height: 36px;
    padding: 8px 14px;
    font-size: 12px;
  }

  .drawer {
    margin-left: 4px;
  }

  .drawer nav {
    position: fixed;
    top: 68px;
    left: 12px;
    right: 12px;
    width: auto;
  }

  .page-shell {
    width: min(100% - 16px, 1200px);
    padding-top: 8px;
    gap: 8px;
  }

  .column {
    gap: 8px;
  }

  .panel,
  .red-menu {
    padding: 20px;
  }

  .hero-card {
    min-height: 520px;
  }

  .hero-copy {
    left: 20px;
    right: 20px;
    bottom: 20px;
  }

  .hero-card h1 {
    font-size: 31px;
  }

  .hero-card .btn {
    width: 100%;
  }

  .section-head h2,
  .panel > h2 {
    font-size: 21px;
  }

  .news-list li {
    grid-template-columns: 90px minmax(0, 1fr);
    column-gap: 12px;
    font-size: 12px;
  }

  .image-link {
    min-height: 96px;
  }

  .footer-inner,
  .footer-bottom {
    width: min(100% - 32px, 1200px);
  }

  .footer-inner {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 380px) {
  .power-grid {
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }

  .power-card {
    padding: 18px 10px;
  }

  .circle-icon {
    width: 48px;
    height: 48px;
  }

  .circle-icon svg {
    width: 25px;
    height: 25px;
  }

  .hero-card h1 {
    font-size: 28px;
  }

  .news-list li {
    grid-template-columns: 84px minmax(0, 1fr);
    column-gap: 10px;
  }

  .laurel-stat strong {
    font-size: 44px;
  }

  .coach-grid {
    gap: 8px;
  }

  .phase-list li {
    grid-template-columns: 60px minmax(0, 1fr);
  }

  .phase-list span {
    font-size: 30px;
  }
}

@media (max-width: 340px) {
  .brand span {
    max-width: 150px;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }

  .btn {
    padding-inline: 18px;
  }

  .power-grid {
    grid-template-columns: 1fr;
  }
}


.page-hero{position:relative;padding:54px 0 46px;background:linear-gradient(120deg,var(--deep) 0%,var(--primary) 100%);color:#fff;overflow:hidden;}
.page-hero::after{content:"";position:absolute;inset:0 0 0 auto;width:46%;background:linear-gradient(120deg,transparent,rgba(218,0,92,.30));clip-path:polygon(38% 0,100% 0,100% 100%,0 100%);pointer-events:none;}
.page-hero .inner{width:min(100% - 32px,1000px);margin:0 auto;position:relative;z-index:1;}
.page-hero .eyebrow{margin:0 0 8px;font-family:var(--font-num);letter-spacing:.12em;font-size:13px;}
.page-hero h1{margin:0;font-size:34px;font-weight:900;line-height:1.32;}
.breadcrumb{width:min(100% - 32px,1000px);margin:14px auto 0;font-size:12px;color:var(--sub);}
.breadcrumb a{color:var(--sub);}
.content{width:min(100% - 32px,1000px);margin:0 auto;padding:26px 0 56px;display:grid;gap:18px;}
.content .panel>p{line-height:1.9;}
.cols-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.cols-2 .panel{border:1px solid var(--border);}
.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.gallery-grid img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;border:1px solid var(--border);}
.site-footer .footer-inner{grid-template-columns:1.6fr 1fr 1fr 1fr 1.4fr;}
@media(max-width:980px){.site-footer .footer-inner{grid-template-columns:1fr 1fr;}}
@media(max-width:767px){.page-hero{padding:38px 0 30px;}.page-hero h1{font-size:26px;}.content{padding:18px 0 40px;}.cols-2{grid-template-columns:1fr;}.gallery-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:560px){.site-footer .footer-inner{grid-template-columns:1fr;}}


.index-content{max-width:min(100% - 32px,1080px);}
@media(min-width:768px){ .index-content .link-stack{grid-template-columns:1fr 1fr;gap:12px;} }


.index-content{width:min(100% - 48px,1180px);max-width:none;}
.index-content .statement-panel p:not(.section-label){max-width:820px;}
@media (min-width:768px){
  .index-content #powers .power-grid,.index-content #school .power-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
  .index-content .link-stack{grid-template-columns:repeat(2,minmax(0,1fr));}
  .index-content .partner-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
  .index-content .partner-card.partner-logo{grid-column:1 / -1;}
}


.hero-full{width:100%;border:0;border-radius:0;min-height:600px;margin:0;}
.hero-full .hero-copy{position:absolute;left:50%;right:auto;transform:translateX(-50%);width:min(100% - 48px,1180px);bottom:72px;}
@media (max-width:767px){ .hero-full{min-height:480px;} .hero-full .hero-copy{bottom:36px;width:min(100% - 32px,1180px);} }

/* ===== v4：写真の追加と区切りの変化（やわらかい：波・丸み） ===== */
main{overflow-x:clip;}
.split{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:32px;align-items:center;}
.split-rev{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);}
.split-text{min-width:0;}
.side-photo{margin:0;overflow:hidden;border-radius:40px 40px 40px 8px;background:var(--surface);align-self:stretch;min-height:240px;}
.split-rev .side-photo{border-radius:40px 40px 8px 40px;}
.side-photo img{display:block;width:100%;height:100%;object-fit:cover;}
.panel-photo.wide{border-radius:28px;}
.panel-photo.wide img{aspect-ratio:21/7;object-position:center 60%;}
.band{position:relative;display:grid;gap:18px;margin:58px calc(50% - 50vw);padding:8px calc(50vw - 50%);}
.band::before,.band::after{content:"";position:absolute;left:0;right:0;height:40px;background-repeat:no-repeat;background-size:100% 100%;pointer-events:none;}
.band-tint{background:var(--surface);}
.band-deep{background:var(--deep);}
.band::before{top:-39px;}
.band-tint::before,.band-deep::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 40' preserveAspectRatio='none'%3E%3Cpath d='M0 40V22C240 -6 480 -6 720 18S1200 46 1440 12V40Z' fill='%23e5e7eb'/%3E%3C/svg%3E");}
.band-deep::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 40' preserveAspectRatio='none'%3E%3Cpath d='M0 40V12C240 46 480 46 720 20S1200 -6 1440 22V40Z' fill='%231e2380'/%3E%3C/svg%3E");}
.band-tint::after{bottom:-39px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 40' preserveAspectRatio='none'%3E%3Cpath d='M0 0V18C240 46 480 46 720 22S1200 -6 1440 28V0Z' fill='%23e5e7eb'/%3E%3C/svg%3E");}
.band-deep+.contact-panel,.band-deep{margin-bottom:58px;}
.band-deep .panel{border-color:transparent;}
.red-menu{border-radius:8px 8px 8px 64px;background:linear-gradient(rgba(218,0,92,.93),rgba(218,0,92,.93)),url("./assets/sample-photos/practice.webp") center/cover;border-top:4px solid var(--deep);}
@media(max-width:767px){
  .split,.split-rev{grid-template-columns:1fr;gap:20px;}
  .side-photo{min-height:0;aspect-ratio:16/9;border-radius:28px 28px 28px 8px;}
  .split-rev .side-photo{border-radius:28px 28px 8px 28px;}
  .panel-photo.wide img{aspect-ratio:16/9;}
  .band::before,.band::after{height:24px;}
  .band::before{top:-23px;}.band-tint::after{bottom:-23px;}
  .band{margin-top:42px;}
  .red-menu{border-radius:8px 8px 8px 40px;}
}
.panel-photo.wide img{height:auto;}
#flow .btn-block{margin-top:16px;}

/* ===== v5：波に対するカードの余白（波の高さ＋40px以上を内側に確保） ===== */
.band{gap:28px;padding-block:80px;}
.band-deep{margin-bottom:58px;}
.band .panel{padding:32px;}
.band .power-grid{gap:20px;}
.band .power-card{padding:26px 20px;}
.band .coach-grid{gap:20px;}
.band .phase-list{gap:16px;}
@media(max-width:767px){
  .band{gap:22px;padding-block:64px;}
  .band .panel{padding:24px 20px;}
  .band .power-grid,.band .coach-grid{gap:14px;}
  .band .power-card{padding:22px 16px;}
}

/* ===== v6：区切りの一貫性（背景色が変わる全境目を同じ波形にそろえる） =====
   波形は1本（--wave-above：曲線より上を塗る／--wave-below：曲線より下を塗る。曲線は同一）。
   対象境目：FV→白／白→薄灰帯／薄灰帯→白／白→濃紺帯／濃紺帯→白／白→申し込み帯／申し込み帯→フッター／フッター→見本バー
   同じ背景色が続く境目（バナー・クラブ紹介・保護者・指導者の白地どうし）は区切らず余白のみ。 */
:root{
  --wv:40px;
  --wave-above:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 40' preserveAspectRatio='none'%3E%3Cpath d='M0 0V18C240 46 480 46 720 22S1200 -6 1440 28V0Z'/%3E%3C/svg%3E");
  --wave-below:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 40' preserveAspectRatio='none'%3E%3Cpath d='M0 40V18C240 46 480 46 720 22S1200 -6 1440 28V40Z'/%3E%3C/svg%3E");
}
@media(max-width:767px){:root{--wv:24px;}}

/* 帯：上端（白→帯）は帯色の「下塗り」、下端（帯→白）は「上塗り」。同じ曲線 */
.band-tint{--band-bg:var(--surface);}
.band-deep{--band-bg:var(--deep);}
.band::before,.band::after{
  height:var(--wv);background:var(--band-bg);
  -webkit-mask:no-repeat 0 0/100% 100%;mask:no-repeat 0 0/100% 100%;
}
.band::before{top:calc(1px - var(--wv));background-image:none;-webkit-mask-image:var(--wave-below);mask-image:var(--wave-below);}
.band::after{bottom:calc(1px - var(--wv));background-image:none;-webkit-mask-image:var(--wave-above);mask-image:var(--wave-above);}
.band-tint::before,.band-deep::before,.band-tint::after,.band-deep::after{background-image:none;}
.band{margin-top:calc(var(--wv) + 18px);}
.band-deep,.band-deep+.contact-panel{margin-bottom:calc(var(--wv) + 32px);}
.band-tint{margin-bottom:calc(var(--wv) + 32px);}

/* FV→白：FV自体の下端を同じ曲線で切り抜く（背景は下の白がそのまま見える） */
.hero-full{
  -webkit-mask:var(--wave-above) left bottom/100% var(--wv) no-repeat,linear-gradient(#000,#000) left top/100% calc(100% - var(--wv) + 1px) no-repeat;
  mask:var(--wave-above) left bottom/100% var(--wv) no-repeat,linear-gradient(#000,#000) left top/100% calc(100% - var(--wv) + 1px) no-repeat;
}
.hero-full .hero-copy{bottom:calc(var(--wv) + 32px);}
@media(max-width:767px){.hero-full .hero-copy{bottom:calc(var(--wv) + 20px);}}

/* 申し込み帯：全幅の帯。上下とも波なし（まっすぐ）。第8段で外した */
.index-content{padding-bottom:0;}
.red-menu{
  position:relative;z-index:1;
  margin:var(--wv) calc(50% - 50vw) 0;
  padding:48px calc(50vw - 50%);
  border:0;border-radius:0;box-shadow:none;
  -webkit-mask:none;mask:none;
}
body.is-top .site-footer{position:relative;z-index:0;margin-top:0;padding-bottom:var(--wv);}
body.is-top .site-footer .footer-inner{padding-top:44px;}

/* フッター→見本バー（暗色）：同じ曲線 */
body.is-top .lw-sample-note{position:relative;}
body.is-top .lw-sample-note::before{
  content:"";position:absolute;left:0;right:0;top:calc(1px - var(--wv));height:var(--wv);background:#111827;pointer-events:none;
  -webkit-mask:var(--wave-below) 0 0/100% 100% no-repeat;mask:var(--wave-below) 0 0/100% 100% no-repeat;
}
body.is-top{padding-bottom:0;}

/* 第9段：クラブ紹介と「4つのこと」を1セクションに統合（TOP 11→10） */
.powers-lead{margin-bottom:32px;}
.powers-lead .section-label{margin:0 0 8px;}
.powers-lead h2{margin:0;font-size:22px;font-weight:900;line-height:1.35;}
.powers-head{margin-bottom:18px;}
@media(max-width:767px){.powers-lead{margin-bottom:24px;}}
