*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html { font-size:16px; scroll-behavior:smooth; overflow-x:hidden; }
body { background:#FFF9F0; font-family:'Zen Maru Gothic',sans-serif; color:#2A2A2A; overflow-x:hidden; }

/* ── NAV ── */
.nav {
  position: sticky; top:0; z-index:200;
  background: #FFF9F0;
  border-bottom: 2.5px solid #2A2A2A;
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 48px;
  height: 72px;
}
.nav-logo { display:flex; align-items:center; gap:14px; text-decoration:none; color:inherit; }
.nav-mark {
  width:44px; height:44px; background:#FFD60A;
  border:2.5px solid #2A2A2A; border-radius:50%;
  box-shadow:3px 3px 0 #2A2A2A;
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.nav-mark svg { width:26px; height:26px; }
.nav-wordmark { font-family:'Zen Maru Gothic',sans-serif; font-size:22px; color:#2A2A2A; }
.nav-sub { font-family:'Fredoka',sans-serif; font-size:10px; font-weight:600; color:#5A5A6A; letter-spacing:.1em; text-transform:uppercase; }
.nav-links { display:flex; align-items:center; gap:8px; }
.nav-link {
  font-family:'Fredoka',sans-serif; font-size:15px; font-weight:600;
  color:#2A2A2A; text-decoration:none;
  padding:8px 18px; border-radius:50px;
  cursor:pointer; border:none; background:none;
  transition:background .15s;
}
.nav-link:hover { background:#F0EBE0; }
.nav-cta {
  display:inline-flex; align-items:center; text-decoration:none;
  font-family:'Zen Maru Gothic',sans-serif; font-size:15px;
  background:#FFD60A; color:#2A2A2A;
  border:2.5px solid #2A2A2A; border-radius:50px;
  padding:10px 24px; box-shadow:3px 3px 0 #2A2A2A;
  cursor:pointer; transition:transform .1s,box-shadow .1s;
}
.nav-cta:hover { transform:translate(-2px,-2px); box-shadow:5px 5px 0 #2A2A2A; }
.nav-cta:active { transform:translate(1px,1px); box-shadow:1px 1px 0 #2A2A2A; }

/* ── HERO (HOME) ── */
.hero {
  background:#FFD60A;
  border-bottom:2.5px solid #2A2A2A;
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  grid-template-areas:
    "top    visual"
    "bottom visual";
  align-items:center;
  min-height:520px;
  position:relative; overflow:hidden;
}
.hero-left { padding:72px 56px 72px 80px; }
/* SPでビジュアルを間に挟めるよう、左カラムを上下2ブロックに分割している */
.hero-left.hero-left--top    { grid-area:top;    padding-bottom:0; align-self:end; }
.hero-left.hero-left--bottom { grid-area:bottom; padding-top:0;    align-self:start; }
.hero-tag {
  display:inline-flex; align-items:center;
  font-family:'Fredoka',sans-serif; font-size:13px; font-weight:700;
  background:#FF4D6D; color:#fff;
  border:2px solid #2A2A2A; border-radius:50px;
  padding:5px 18px; margin-bottom:20px;
  box-shadow:3px 3px 0 #2A2A2A;
}
.hero p.hero-subtitle {
  font-family:'Zen Maru Gothic',sans-serif;
  font-size:clamp(15px,1.5vw,20px); font-weight:700; color:#3A3A3A;
  margin-bottom:0; line-height:1.5;
  max-width:none; word-break:keep-all;
}
.hero h1 {
  font-family:'Zen Maru Gothic',sans-serif;
  font-weight:700;
  font-size:clamp(30px,3.6vw,46px); color:#2A2A2A;
  line-height:1.2; margin-bottom:20px;
}
.hero p {
  font-family:'Zen Maru Gothic',sans-serif;
  font-size:17px; color:#3A3A3A;
  line-height:1.75; margin-bottom:32px; max-width:420px;
}
/* 受賞カードの下に置く一文。箱は付けず、文字サイズとマーカーで存在感を出す */
.hero .hero-thanks {
  font-family:'Zen Maru Gothic',sans-serif; font-weight:700;
  font-size:clamp(18px,2.3vw,32px); color:#2A2A2A; line-height:1.85;
  margin-bottom:0; max-width:none; text-align:center;
}
.hero-thanks-mark {
  background:linear-gradient(transparent 58%, #fff 58%);
  padding:0 6px 2px;
  -webkit-box-decoration-break:clone; box-decoration-break:clone;
}
.hero-btns { display:flex; gap:14px; flex-wrap:wrap; }
.btn {
  display:inline-flex; align-items:center; justify-content:center;
  font-family:'Zen Maru Gothic',sans-serif; font-size:17px;
  border:2.5px solid #2A2A2A; border-radius:50px;
  padding:14px 32px; box-shadow:4px 4px 0 #2A2A2A;
  cursor:pointer; min-height:54px; transition:transform .1s,box-shadow .1s;
  background:#fff; color:#2A2A2A; text-decoration:none;
}
.btn:hover { transform:translate(-2px,-2px); box-shadow:6px 6px 0 #2A2A2A; }
.btn:active { transform:translate(2px,2px); box-shadow:1px 1px 0 #2A2A2A; }
.btn-coral { background:#FF4D6D; color:#fff; }
.btn-sky   { background:#4CC9F0; }
.btn-yellow{ background:#FFD60A; }
.hero-right {
  grid-area:visual;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:clamp(14px,1.7vw,24px);
  padding:clamp(20px,3.4vw,48px);
}
.hero-dancer-card {
  background:none; border:none;
  border-radius:0; box-shadow:none;
  padding:0;
  display:flex; flex-direction:column; align-items:center;
  transform:rotate(2deg);
  position:relative;
}
.dancer-figure svg { width:120px; height:120px; }
.hero-card-label {
  font-family:'Fredoka',sans-serif; font-size:13px; font-weight:700;
  color:#5A5A6A; text-transform:uppercase; letter-spacing:.08em;
  margin-top:16px;
}
.hero-card-title { font-family:'Zen Maru Gothic',sans-serif; font-size:20px; color:#2A2A2A; margin-top:4px; }
.hero-deco { position:absolute; border-radius:50%; border:2.5px solid #2A2A2A; }
.area-float {
  position:absolute; bottom:36px; left:80px;
  display:flex; gap:10px;
}
.area-tag {
  font-family:'Fredoka',sans-serif; font-size:13px; font-weight:600;
  border:2px solid #2A2A2A; border-radius:50px;
  padding:5px 16px; box-shadow:2px 2px 0 #2A2A2A;
}

/* ── SECTIONS ── */
.section { padding:72px 80px; }
.section + .section { border-top:none; }
.wave-divider { line-height:0; overflow:hidden; }
.section-label {
  font-family:'Fredoka',sans-serif; font-size:12px; font-weight:700;
  color:#5A5A6A; text-transform:uppercase; letter-spacing:.1em;
  margin-bottom:10px;
}
.section-title {
  font-family:'Zen Maru Gothic',sans-serif;
  font-weight:700;
  font-size:30px; color:#2A2A2A;
  margin-bottom:20px; line-height:1.35;
}
.section-body { font-family:'Zen Maru Gothic',sans-serif; font-size:16px; color:#3A3A3A; line-height:1.8; max-width:660px; }

/* ── Card Grid ── */
.card-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:32px; }
.info-card {
  background:#fff; border:2.5px solid #2A2A2A;
  border-radius:20px; box-shadow:4px 4px 0 #2A2A2A;
  padding:24px; transition:transform .1s,box-shadow .1s;
}
.info-card:hover { transform:translate(-2px,-2px); box-shadow:6px 6px 0 #2A2A2A; }
.info-card-icon {
  width:52px; height:52px; border-radius:14px;
  border:2px solid #2A2A2A;
  display:flex; align-items:center; justify-content:center;
  margin-bottom:16px;
}
.info-card-icon svg { width:26px; height:26px; stroke:#2A2A2A; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.info-card-illust {
  margin:-8px -8px 16px;
  aspect-ratio:4/3;
  border:2px solid #2A2A2A;
  border-radius:16px;
  overflow:hidden;
  background:#fff;
}
.info-card-illust img {
  width:100%; height:100%;
  display:block;
  object-fit:cover;
}
.info-card-title { font-family:'Zen Maru Gothic',sans-serif; font-size:18px; color:#2A2A2A; margin-bottom:8px; }
.info-card-body  { font-family:'Zen Maru Gothic',sans-serif; font-size:14px; color:#5A5A6A; line-height:1.7; }

/* ── CTA Banner ── */
.cta-banner {
  background:#FF4D6D; border-top:2.5px solid #2A2A2A; border-bottom:2.5px solid #2A2A2A;
  padding:64px 80px;
  display:grid; grid-template-columns:1fr auto;
  align-items:center; gap:48px;
}
.cta-banner h2 { font-family:'Zen Maru Gothic',sans-serif; font-weight:700; font-size:32px; color:#fff; line-height:1.3; margin-bottom:12px; }
.cta-banner p  { font-family:'Zen Maru Gothic',sans-serif; font-size:16px; color:rgba(255,255,255,.85); line-height:1.75; max-width:560px; }
.cta-banner-btn { flex-shrink:0; }

/* ── FORM PAGE ── */
.form-hero {
  background:#FF4D6D; border-bottom:2.5px solid #2A2A2A;
  padding:64px 80px;
}
.form-hero h1 { font-family:'Zen Maru Gothic',sans-serif; font-weight:700; font-size:38px; color:#fff; margin-bottom:12px; }
.form-hero p  { font-family:'Zen Maru Gothic',sans-serif; font-size:16px; color:rgba(255,255,255,.85); max-width:560px; line-height:1.75; }
.form-layout {
  display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:48px; padding:64px 80px; max-width:1180px; margin:0 auto;
}
.form-aside h3 { font-family:'Zen Maru Gothic',sans-serif; font-size:22px; color:#2A2A2A; margin-bottom:12px; }
.form-aside p  { font-family:'Zen Maru Gothic',sans-serif; font-size:15px; color:#5A5A6A; line-height:1.75; margin-bottom:20px; }
.field-group { margin-bottom:20px; }
.field-label {
  font-family:'Zen Maru Gothic',sans-serif; font-size:15px; color:#2A2A2A;
  display:flex; gap:8px; align-items:center; margin-bottom:8px;
}
.field-req {
  font-family:'Fredoka',sans-serif; font-size:11px; font-weight:700;
  background:#FF4D6D; color:#fff; border-radius:4px; padding:1px 8px;
}
.field-input {
  font-family:'Zen Maru Gothic',sans-serif; font-size:15px; color:#2A2A2A;
  background:#fff; border:2.5px solid #2A2A2A; border-radius:12px;
  padding:12px 18px; outline:none; box-shadow:3px 3px 0 #2A2A2A;
  transition:box-shadow .1s,transform .1s; width:100%;
}
.field-input:focus {
  box-shadow:5px 5px 0 #FFD60A, 5px 5px 0 2px #2A2A2A;
  transform:translate(-1px,-1px);
}
.field-textarea { resize:vertical; min-height:100px; }
.field-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.lokedan-honeypot {
  position:absolute !important; left:-9999px !important;
  width:1px !important; height:1px !important; overflow:hidden !important;
}
.upload-zone {
  border:2.5px dashed #2A2A2A; border-radius:16px;
  background:#FFF4B0; padding:40px 24px;
  text-align:center; cursor:pointer; transition:background .15s;
}
.upload-zone:hover { background:#FFE87A; }
.upload-zone svg { width:36px; height:36px; stroke:#2A2A2A; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; margin-bottom:10px; }
.upload-title { font-family:'Zen Maru Gothic',sans-serif; font-size:16px; color:#2A2A2A; margin-bottom:6px; }
.upload-sub   { font-family:'Zen Maru Gothic',sans-serif; font-size:13px; color:#5A5A6A; line-height:1.6; }
.upload-file-input { display:none; }
.uploaded-preview {
  display:none; align-items:center; gap:14px;
  background:#fff; border:2px solid #2A2A2A; border-radius:12px;
  padding:14px; box-shadow:3px 3px 0 #2A2A2A; margin-top:12px;
}
.uploaded-preview.visible { display:flex; }
.uploaded-thumb { width:56px; height:56px; background:#A8E63D; border:2px solid #2A2A2A; border-radius:10px; overflow:hidden; }
.uploaded-thumb img { width:100%; height:100%; object-fit:cover; }
.uploaded-name { font-family:'Zen Maru Gothic',sans-serif; font-size:14px; color:#2A2A2A; flex:1; word-break:break-all; }
.uploaded-remove { cursor:pointer; color:#FF4D6D; font-family:'Fredoka',sans-serif; font-size:14px; font-weight:600; }
.select-wrap { position:relative; }
.field-select {
  font-family:'Zen Maru Gothic',sans-serif; font-size:15px; color:#2A2A2A;
  background:#fff; border:2.5px solid #2A2A2A; border-radius:12px;
  padding:12px 44px 12px 18px; outline:none;
  box-shadow:3px 3px 0 #2A2A2A; width:100%; appearance:none; cursor:pointer;
}
.select-arrow { position:absolute; right:14px; top:50%; transform:translateY(-50%); pointer-events:none; }
.select-arrow svg { width:16px; height:16px; stroke:#2A2A2A; fill:none; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; }
.submit-btn {
  font-family:'Zen Maru Gothic',sans-serif; font-size:20px;
  background:#FFD60A; color:#2A2A2A;
  border:2.5px solid #2A2A2A; border-radius:50px;
  padding:18px; min-height:64px;
  box-shadow:5px 5px 0 #2A2A2A; cursor:pointer;
  transition:transform .1s,box-shadow .1s; width:100%;
}
.submit-btn:hover { transform:translate(-2px,-2px); box-shadow:7px 7px 0 #2A2A2A; }
.submit-btn:active { transform:translate(2px,2px); box-shadow:2px 2px 0 #2A2A2A; }

/* ── FOOTER ── */
footer {
  background:#2A2A2A; border-top:2.5px solid #000;
  padding:48px 80px;
  display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr;
  gap:48px;
}
.footer-brand .footer-logo-title { font-family:'Zen Maru Gothic',sans-serif; font-size:20px; color:#fff; margin-bottom:6px; }
.footer-brand p { font-family:'Zen Maru Gothic',sans-serif; font-size:13px; color:rgba(255,255,255,.55); line-height:1.7; }
.footer-col h4 { font-family:'Fredoka',sans-serif; font-size:13px; font-weight:700; color:rgba(255,255,255,.5); text-transform:uppercase; letter-spacing:.08em; margin-bottom:12px; }
.footer-col a { display:block; font-family:'Zen Maru Gothic',sans-serif; font-size:14px; color:rgba(255,255,255,.7); text-decoration:none; margin-bottom:8px; cursor:pointer; }
.footer-col a:hover { color:#FFD60A; }
.footer-bottom { background:#2A2A2A; border-top:1px solid rgba(255,255,255,.1); padding:16px 80px; text-align:center; font-family:'Fredoka',sans-serif; font-size:12px; color:rgba(255,255,255,.35); }

/* ── Hamburger (mobile only) ── */
.nav-hamburger { display:none; flex-direction:column; gap:5px; padding:6px; cursor:pointer; border:none; background:none; }
.nav-hamburger span { display:block; width:22px; height:2.5px; background:#2A2A2A; border-radius:2px; transition:transform .2s, opacity .2s; }
.mobile-menu {
  display:none; position:fixed; inset:0; top:72px; background:#FFF9F0;
  z-index:199; flex-direction:column; padding:32px 28px; gap:8px;
  border-top:2.5px solid #2A2A2A;
}
.mobile-menu.open { display:flex; }
.mobile-menu-link {
  display:block; text-decoration:none;
  font-family:'Zen Maru Gothic',sans-serif; font-size:20px; color:#2A2A2A;
  padding:14px 0; border-bottom:1.5px dashed #E8E4DC;
}
.mobile-menu-cta {
  display:block; text-align:center; text-decoration:none;
  font-family:'Zen Maru Gothic',sans-serif; font-size:18px;
  background:#FFD60A; color:#2A2A2A;
  border:2.5px solid #2A2A2A; border-radius:50px;
  padding:16px 32px; box-shadow:4px 4px 0 #2A2A2A;
  cursor:pointer; margin-top:12px;
}

/* ── RESPONSIVE ── */
@media (max-width: 768px) {
  .nav { padding:0 20px; height:64px; }
  .nav-links { display:none; }
  .nav-hamburger { display:flex; }
  .nav-wordmark { font-size:18px; }
  .nav-mark { width:36px; height:36px; }
  .nav-mark svg { width:20px; height:20px; }

  .hero {
    grid-template-columns:1fr; min-height:auto;
    grid-template-areas:"top" "bottom" "visual";
  }
  .hero--announced { grid-template-areas:"top" "visual" "bottom"; }
  .hero--announced .hero-right { padding:22px 24px 26px; }
  .hero-left { padding:40px 24px 32px; }
  .hero h1 { font-size:clamp(28px,8.5vw,38px); }
  .hero p { font-size:15px; }
  .hero p.hero-subtitle { font-size:clamp(15px,4.4vw,18px); }
  .hero-right { display:flex; padding:0 24px 40px; }
  .hero-right .hero-dancer-card { width:100%; max-width:320px; }
  .hero-right .hero-dancer-card img { max-height:260px; object-fit:contain; }
  .hero-btns { flex-direction:column; }
  .hero-btns .btn { width:100%; }

  .section { padding:40px 24px; }
  .card-grid { grid-template-columns:1fr; }

  .cta-banner { grid-template-columns:1fr; gap:24px; padding:40px 24px; }
  .cta-banner h2 { font-size:28px; }
  .cta-banner-btn .btn { width:100%; }

  .form-hero { padding:40px 24px; }
  .form-hero h1 { font-size:34px; }
  .form-layout { grid-template-columns:1fr; padding:32px 24px; gap:32px; }
  .form-aside { order:-1; }
  .field-row { grid-template-columns:1fr; }
  .policy-hero { padding:40px 24px; }
  .policy-hero h1 { font-size:32px; }
  .policy-content { padding:36px 24px 52px; }
  .policy-content h2 { font-size:20px; }

  footer { grid-template-columns:1fr; gap:28px; padding:40px 24px; }
  .footer-bottom { padding:14px 24px; }
}

@media (min-width:769px) and (max-width:1024px) {
  .nav { padding:0 32px; }
  .hero-left { padding:48px 32px 48px 40px; }
  .section { padding:56px 48px; }
  .card-grid { grid-template-columns:repeat(2,1fr); }
  .cta-banner { padding:48px; }
  .form-hero { padding:48px; }
  .form-layout { padding:48px; gap:36px; }
  .policy-hero { padding:48px; }
  .policy-content { padding:48px; }
  footer { padding:48px; }
  .footer-bottom { padding:14px 48px; }
}

/* ── ANIMATIONS ── */
@keyframes cardSway {
  0%,100% { transform: rotate(2deg); }
  50%      { transform: rotate(-1.5deg) translateY(-6px); }
}
.hero-dancer-card { animation: cardSway 2.4s ease-in-out infinite; }

@keyframes dancerBob {
  0%,100% { transform: translateY(0) rotate(0deg); }
  25%     { transform: translateY(-8px) rotate(-3deg); }
  75%     { transform: translateY(-4px) rotate(3deg); }
}
.dancer-figure { animation: dancerBob 1.6s ease-in-out infinite; transform-origin: center bottom; }

@keyframes floatA {
  0%,100% { transform: translateY(0) rotate(0deg); }
  50%     { transform: translateY(-14px) rotate(8deg); }
}
@keyframes floatB {
  0%,100% { transform: translateY(0) rotate(0deg); }
  50%     { transform: translateY(-10px) rotate(-6deg); }
}
.hero-deco:nth-child(1) { animation: floatA 3.2s ease-in-out infinite; }
.hero-deco:nth-child(2) { animation: floatB 2.6s ease-in-out infinite .4s; }

@keyframes heroSlideUp {
  from { opacity:0; transform:translateY(40px) scale(.96); }
  to   { opacity:1; transform:translateY(0) scale(1); }
}
.hero-tag   { animation: heroSlideUp .6s cubic-bezier(0.34,1.56,0.64,1) .1s both; }
.hero h1    { animation: heroSlideUp .7s cubic-bezier(0.34,1.56,0.64,1) .25s both; }
.hero p     { animation: heroSlideUp .6s cubic-bezier(0.34,1.56,0.64,1) .4s both; }
.hero-btns  { animation: heroSlideUp .6s cubic-bezier(0.34,1.56,0.64,1) .55s both; }
.area-float { animation: heroSlideUp .6s cubic-bezier(0.34,1.56,0.64,1) .65s both; }
.hero-right { animation: heroSlideUp .8s cubic-bezier(0.34,1.56,0.64,1) .3s both; }

@keyframes navDrop {
  from { transform: translateY(-100%); opacity:0; }
  to   { transform: translateY(0); opacity:1; }
}
.nav { animation: navDrop .5s cubic-bezier(0.34,1.56,0.64,1) both; }

.reveal {
  opacity: 0;
  transform: translateY(36px) scale(.97);
  transition: opacity .6s cubic-bezier(0.34,1.56,0.64,1),
              transform .6s cubic-bezier(0.34,1.56,0.64,1);
}
.reveal.visible { opacity: 1; transform: translateY(0) scale(1); }

.reveal-card { opacity:0; transform:translateY(48px) rotate(-2deg) scale(.95);
  transition: opacity .55s cubic-bezier(0.34,1.56,0.64,1),
              transform .55s cubic-bezier(0.34,1.56,0.64,1); }
.reveal-card.visible { opacity:1; transform:translateY(0) rotate(0deg) scale(1); }

.reveal-step { opacity:0; transform:translateX(-32px) rotate(-1deg);
  transition: opacity .5s cubic-bezier(0.34,1.56,0.64,1),
              transform .5s cubic-bezier(0.34,1.56,0.64,1); }
.reveal-step.visible { opacity:1; transform:translateX(0) rotate(0deg); }

@keyframes popBounce {
  0%   { transform: scale(0) rotate(-20deg); opacity:0; }
  70%  { transform: scale(1.2) rotate(5deg); opacity:1; }
  100% { transform: scale(1) rotate(0deg); opacity:1; }
}

@keyframes ctaPulse {
  0%,100% { box-shadow: 5px 5px 0 rgba(0,0,0,.3); }
  50%     { box-shadow: 7px 7px 0 rgba(0,0,0,.4), 0 0 0 6px rgba(255,214,10,.3); }
}
.cta-banner .btn { animation: ctaPulse 2s ease-in-out infinite; }

@keyframes tagWave {
  0%,100% { transform: translateY(0) rotate(-1deg); }
  50%     { transform: translateY(-5px) rotate(1deg); }
}
.area-tag:nth-child(1) { animation: tagWave 2s ease-in-out infinite; }
.area-tag:nth-child(2) { animation: tagWave 2s ease-in-out infinite .3s; }
.area-tag:nth-child(3) { animation: tagWave 2s ease-in-out infinite .6s; }

@keyframes badgeBounce {
  0%,100% { transform: scale(1) rotate(-1deg); }
  50%     { transform: scale(1.06) rotate(1deg); }
}
.deco-badge { animation: badgeBounce 2.5s ease-in-out infinite; display:inline-flex;
  font-family:'Fredoka',sans-serif; font-size:12px; font-weight:700;
  background:#FF6B9D; color:#fff; border:2px solid #2A2A2A; border-radius:50px;
  padding:4px 14px; margin-bottom:14px; box-shadow:2px 2px 0 #2A2A2A;
}

/* ── 応募の流れ ── */
.flow-grid {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr auto 1fr;
  gap: 0;
  align-items: start;
  margin-top: 48px;
}
.flow-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  opacity: 0;
  transform: translateY(40px) scale(.93);
  transition: opacity .55s cubic-bezier(0.34,1.56,0.64,1),
              transform .55s cubic-bezier(0.34,1.56,0.64,1);
  position: relative;
  padding-top: 36px;
}
.flow-step.visible { opacity:1; transform:translateY(0) scale(1); }
.flow-illust {
  width: 120px; height: 120px;
  border-radius: 32px; border: 3px solid #2A2A2A;
  display: flex; align-items: center; justify-content: center;
  position: relative; box-shadow: 4px 4px 0 #2A2A2A;
  margin-bottom: 16px; overflow: visible;
}
.flow-illust svg { width: 72px; height: 72px; }
.flow-num {
  position: absolute; top: -14px; left: -14px;
  width: 32px; height: 32px; border-radius: 50%;
  background: #FF4D6D; border: 2.5px solid #2A2A2A;
  font-family: 'Fredoka', sans-serif; font-size: 16px; font-weight: 700; color: #fff;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 2px 2px 0 #2A2A2A;
}
.flow-label { font-family: 'Zen Maru Gothic', sans-serif; font-size: 15px; font-weight: 700; color: #2A2A2A; margin-bottom: 6px; }
.flow-desc  { font-family: 'Zen Maru Gothic', sans-serif; font-size: 12px; color: #5A5A6A; line-height: 1.6; max-width: 130px; }
.flow-step--featured { position: relative; z-index: 2; }
.flow-step--featured .flow-illust {
  width: 140px; height: 140px; border-width: 3.5px;
  box-shadow: 6px 6px 0 #2A2A2A;
  animation: featurePulse 2s ease-in-out infinite;
}
.flow-step--featured .flow-illust svg { width: 84px; height: 84px; }
.flow-step--featured .flow-label { font-size: 16px; color: #FF9500; }
.flow-featured-badge {
  position: absolute; top: 0; left: 50%; transform: translateX(-50%);
  background: #FF9500; color: #fff;
  font-family: 'Fredoka', sans-serif; font-size: 12px; font-weight: 700;
  letter-spacing: .04em; border: 2px solid #2A2A2A; border-radius: 999px;
  padding: 2px 10px; box-shadow: 2px 2px 0 #2A2A2A;
  display: inline-block; white-space: nowrap;
}
@keyframes featurePulse {
  0%, 100% { box-shadow: 6px 6px 0 #2A2A2A; }
  50%       { box-shadow: 6px 6px 0 #2A2A2A, 0 0 0 6px rgba(255,149,0,.25); }
}
.flow-arrow {
  display: flex; align-items: center; justify-content: center;
  padding: 0 8px; margin-top: 80px;
  opacity: 0; transition: opacity .4s ease .3s;
}
.flow-arrow.visible { opacity: 1; }
.flow-arrow svg { width: 32px; height: 32px; }
@media (max-width: 768px) {
  .flow-grid { grid-template-columns: 1fr; gap: 0; }
  .flow-arrow { transform: rotate(90deg); padding: 4px 0; }
  .flow-illust { width: 100px; height: 100px; border-radius: 24px; }
  .flow-illust svg { width: 60px; height: 60px; }
  .flow-step--featured .flow-illust { width: 116px; height: 116px; }
  .flow-step--featured .flow-illust svg { width: 70px; height: 70px; }
}

/* ── Contact Form 7 スタイル ── */
.wpcf7-form p { margin:0; }
.wpcf7-form .field-label + br { display:none; }
.wpcf7-form .field-group { margin-bottom:18px; }
.wpcf7-form .field-label { margin-bottom:4px; }
.wpcf7-form-control-wrap { display:block; width:100%; }

.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form textarea,
.wpcf7-form select {
  font-family:'Zen Maru Gothic',sans-serif; font-size:15px; color:#2A2A2A;
  background:#fff; border:2.5px solid #2A2A2A; border-radius:12px;
  padding:12px 18px; outline:none; box-shadow:3px 3px 0 #2A2A2A;
  transition:box-shadow .1s,transform .1s; width:100%;
  appearance:none;
}
.wpcf7-form input[type="text"]:focus,
.wpcf7-form input[type="email"]:focus,
.wpcf7-form input[type="tel"]:focus,
.wpcf7-form textarea:focus {
  box-shadow:5px 5px 0 #FFD60A, 5px 5px 0 2px #2A2A2A;
  transform:translate(-1px,-1px);
}
.wpcf7-form textarea { resize:vertical; min-height:100px; }
.wpcf7-form select { padding:12px 44px 12px 18px; cursor:pointer; }

.wpcf7-form input[type="file"] {
  font-family:'Zen Maru Gothic',sans-serif; font-size:14px;
  padding:12px; width:100%;
  border:2.5px dashed #2A2A2A; border-radius:12px;
  background:#FFF4B0; cursor:pointer;
}

.wpcf7-form input[type="submit"],
.wpcf7-submit {
  font-family:'Zen Maru Gothic',sans-serif; font-size:20px;
  background:#FFD60A; color:#2A2A2A;
  border:2.5px solid #2A2A2A; border-radius:50px;
  padding:18px; min-height:64px;
  box-shadow:5px 5px 0 #2A2A2A; cursor:pointer;
  transition:transform .1s,box-shadow .1s; width:100%;
  margin-top:8px;
}
.wpcf7-form input[type="submit"]:hover,
.wpcf7-submit:hover { transform:translate(-2px,-2px); box-shadow:7px 7px 0 #2A2A2A; }

.wpcf7-not-valid-tip {
  font-family:'Zen Maru Gothic',sans-serif;
  font-size:12px; color:#FF4D6D; margin-top:4px; display:block;
}
.wpcf7-response-output {
  font-family:'Zen Maru Gothic',sans-serif; font-size:14px;
  padding:12px 18px; border-radius:12px; border:2px solid;
  margin-top:16px;
}
.wpcf7-mail-sent-ok { background:#E4F7B0; border-color:#2A2A2A; color:#2A2A2A; }
.wpcf7-validation-errors,
.wpcf7-spam-blocked { background:#FFD6EA; border-color:#FF4D6D; color:#FF4D6D; }

/* ── PRIVACY POLICY ── */
.policy-hero {
  background:#4CC9F0;
  border-bottom:2.5px solid #2A2A2A;
  padding:64px 80px;
}
.policy-hero h1 {
  font-family:'Zen Maru Gothic',sans-serif; font-weight:700;
  font-size:40px; color:#2A2A2A; margin:12px 0;
}
.policy-hero p {
  font-family:'Zen Maru Gothic',sans-serif; font-size:16px;
  color:#3A3A3A; line-height:1.75;
}
.policy-content {
  max-width:860px;
  padding:56px 80px 72px;
}
.policy-content h2 {
  font-family:'Zen Maru Gothic',sans-serif; font-size:22px;
  color:#2A2A2A; margin:36px 0 12px;
}
.policy-content p,
.policy-content li {
  font-family:'Zen Maru Gothic',sans-serif; font-size:15px;
  color:#3A3A3A; line-height:1.9;
}
.policy-content ul { margin:8px 0 0 1.4em; }
.policy-content a { color:#005FCC; font-weight:700; }

/* ── お知らせバー（受付終了・発表案内） ── */
.notice-bar {
  display:flex; align-items:flex-start; gap:16px;
  background:#fff; border-bottom:2.5px solid #2A2A2A;
  padding:20px 80px;
}
.notice-bar-badge {
  flex-shrink:0; margin-top:2px;
  display:inline-flex; align-items:center;
  font-family:'Zen Maru Gothic',sans-serif; font-size:13px; font-weight:700;
  background:#FF4D6D; color:#fff;
  border:2px solid #2A2A2A; border-radius:50px;
  padding:4px 16px; box-shadow:2px 2px 0 #2A2A2A;
}
.notice-bar-title {
  font-family:'Zen Maru Gothic',sans-serif; font-weight:700;
  font-size:17px; color:#2A2A2A; line-height:1.5; margin-bottom:6px;
}
.notice-bar-body {
  font-family:'Zen Maru Gothic',sans-serif;
  font-size:14px; color:#3A3A3A; line-height:1.85;
}
.hero-tag--closed { background:#2A2A2A; color:#fff; }

/* ── 受付終了パネル（フォームページ） ── */
.closed-panel {
  background:#fff; border:2.5px solid #2A2A2A; border-radius:20px;
  box-shadow:5px 5px 0 #2A2A2A; padding:36px;
}
.closed-panel-badge {
  display:inline-flex; align-items:center;
  font-family:'Zen Maru Gothic',sans-serif; font-size:13px; font-weight:700;
  background:#5A5A6A; color:#fff;
  border:2px solid #2A2A2A; border-radius:50px;
  padding:4px 16px; margin-bottom:16px; box-shadow:2px 2px 0 #2A2A2A;
}
.closed-panel-title {
  font-family:'Zen Maru Gothic',sans-serif; font-weight:700;
  font-size:22px; color:#2A2A2A; line-height:1.5; margin-bottom:12px;
}
.closed-panel-body {
  font-family:'Zen Maru Gothic',sans-serif;
  font-size:15px; color:#3A3A3A; line-height:1.9; margin-bottom:28px;
}

/* ── メインビジュアル内の受賞発表カード ── */
/* 受賞演出のステージ。カードの外側に置く装飾をまとめて載せる */
.hero-award-stage {
  position:relative;
  width:100%; max-width:540px;
}
/* 背面の放射バースト */
.award-burst {
  position:absolute; z-index:0; pointer-events:none;
  left:50%; top:50%; width:150%; aspect-ratio:1; translate:-50% -50%;
  background:repeating-conic-gradient(from 0deg,
    rgba(255,255,255,.6) 0deg 5deg, rgba(255,255,255,0) 5deg 13deg);
  -webkit-mask-image:radial-gradient(circle, #000 22%, rgba(0,0,0,.55) 45%, transparent 70%);
  mask-image:radial-gradient(circle, #000 22%, rgba(0,0,0,.55) 45%, transparent 70%);
  animation:burstSpin 44s linear infinite;
}
@keyframes burstSpin { to { rotate:360deg; } }
/* 紙吹雪 */
.confetti {
  position:absolute; z-index:1; pointer-events:none;
  border:2px solid #2A2A2A; border-radius:3px;
  animation:confettiFloat 4.6s ease-in-out infinite;
}
@keyframes confettiFloat {
  0%,100% { translate:0 0; }
  50%     { translate:0 -10px; }
}
.confetti--2  { animation-duration:5.4s; animation-delay:.4s; }
.confetti--3  { animation-duration:6.1s; animation-delay:.9s; }
.confetti--4  { animation-duration:4.9s; animation-delay:1.5s; }
.confetti--5  { animation-duration:5.8s; animation-delay:.2s; }
.confetti--6  { animation-duration:5.1s; animation-delay:1.1s; }
.confetti--7  { animation-duration:6.4s; animation-delay:1.8s; }
.confetti--8  { animation-duration:4.7s; animation-delay:.7s; }
.confetti--9  { animation-duration:5.6s; animation-delay:2.1s; }
.confetti--10 { animation-duration:6.2s; animation-delay:1.3s; }
.confetti--1  { width:15px; height:15px; border-radius:50%; background:#FF6B9D; top:-5%;  left:2%;   }
.confetti--2  { width:11px; height:20px; background:#4CC9F0; top:-8%;  right:16%; rotate:22deg;  }
.confetti--3  { width:18px; height:9px;  background:#A8E63D; top:14%;  left:-9%;  rotate:-18deg; }
.confetti--4  { width:13px; height:13px; border-radius:50%; background:#fff;    top:38%;  right:-9%; }
.confetti--5  { width:10px; height:18px; background:#FF9500; bottom:16%; right:-7%; rotate:-26deg; }
.confetti--6  { width:16px; height:8px;  background:#FF4D6D; bottom:-4%; left:14%;  rotate:16deg;  }
.confetti--7  { width:12px; height:12px; border-radius:50%; background:#4CC9F0; bottom:-7%; right:22%; }
.confetti--8  { width:9px;  height:16px; background:#fff;    top:56%;  left:-8%;  rotate:12deg;  }
.confetti--9  { width:14px; height:7px;  background:#FFD60A; top:2%;   right:-6%; rotate:-12deg; }
.confetti--10 { width:10px; height:10px; border-radius:50%; background:#A8E63D; bottom:34%; left:-10%; }

.hero-award-card {
  position:relative; z-index:2;
  width:100%; max-width:540px;
  display:flex; flex-direction:column; align-items:center; text-align:center;
  background:linear-gradient(170deg,#fff 0%,#FFFCEC 100%);
  border:2.5px solid #2A2A2A; border-radius:24px;
  box-shadow:7px 7px 0 #2A2A2A,
             0 0 0 6px rgba(255,255,255,.4),
             0 0 46px 16px rgba(255,255,255,.3);
  padding:clamp(30px,3.4vw,46px) clamp(16px,2.6vw,36px) clamp(18px,2.3vw,32px);
  transform:rotate(-1.5deg);
  animation:heroSlideUp .6s cubic-bezier(0.34,1.56,0.64,1) .3s both;
}
/* 受賞演出：内側の金枠ときらめき */
.hero-award-card::before {
  content:""; position:absolute; inset:clamp(8px,1vw,13px);
  border:2.5px solid #FFD60A; border-radius:16px;
  pointer-events:none;
}
.award-sparkle {
  position:absolute; z-index:3; pointer-events:none;
  transform:rotate(var(--rot,0deg));
  animation:sparkleTwinkle 2.8s ease-in-out infinite;
  animation-delay:var(--delay,0s);
  filter:drop-shadow(2px 2px 0 rgba(42,42,42,.18));
}
@keyframes sparkleTwinkle {
  0%,100% { opacity:1;   scale:1; }
  50%     { opacity:.45; scale:.78; }
}
.award-sparkle--a { width:clamp(26px,2.9vw,42px); top:-22px;  left:-20px;  --rot:-12deg; --delay:0s;   }
.award-sparkle--b { width:clamp(20px,2.2vw,32px); top:24%;    right:-19px; --rot:14deg;  --delay:.5s;  }
.award-sparkle--c { width:clamp(16px,1.7vw,24px); bottom:14%; left:-16px;  --rot:8deg;   --delay:1.1s; }
.award-sparkle--d { width:clamp(13px,1.4vw,20px); top:-8px;   right:9%;    --rot:-18deg; --delay:1.6s; }
.award-sparkle--e { width:clamp(15px,1.6vw,23px); top:46%;    left:-19px;  --rot:20deg;  --delay:.8s;  }
.award-sparkle--f { width:clamp(18px,2vw,28px);   bottom:-18px; right:-16px; --rot:-8deg; --delay:.3s; }
.award-sparkle--g { width:clamp(12px,1.3vw,18px); bottom:-10px; left:26%;  --rot:16deg;  --delay:1.9s; }

.hero-award-badge {
  animation:badgeBounce 2.5s ease-in-out infinite;
  display:inline-flex; align-items:center; gap:4px;
  font-family:'Zen Maru Gothic',sans-serif; font-weight:700;
  font-size:clamp(13px,1.25vw,17px);
  background:#FFD60A; color:#2A2A2A;
  border:2.5px solid #2A2A2A; border-radius:50px;
  padding:clamp(6px,.7vw,9px) clamp(20px,2.4vw,34px);
  margin-bottom:clamp(14px,1.6vw,22px); box-shadow:3px 3px 0 #2A2A2A;
}
.hero-award-visual {
  width:100%; margin-top:20px;
}
.hero-award-visual img {
  display:block; width:100%; height:auto;
  background:#FFF9F0; border:2px solid #2A2A2A; border-radius:16px;
}
.hero-award-visual--pending {
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:clamp(10px,1.2vw,16px); min-height:clamp(150px,17vw,240px);
  padding:clamp(20px,2.6vw,36px) clamp(12px,1.7vw,24px);
  background:#FFF9F0; border:3px dashed #2A2A2A; border-radius:16px;
}
/* カード上辺に乗せる王冠 */
.award-crown-top {
  position:absolute; z-index:4; left:50%; top:clamp(-42px,-3.1vw,-24px);
  translate:-50% 0; rotate:-4deg;
  filter:drop-shadow(3px 3px 0 rgba(42,42,42,.22));
  line-height:0;
}
.award-crown-top .award-icon {
  width:clamp(48px,5.4vw,82px); height:auto;
}
/* 台座と宝珠を金色に。拡大表示なので線幅はサイトのイラストに合わせて細く */
.award-crown-top .award-icon rect,
.award-crown-top .award-icon circle { fill:#FFD60A; }
.award-crown-top .award-icon path,
.award-crown-top .award-icon rect,
.award-crown-top .award-icon circle { stroke-width:3.4; }

/* 氏名の下の飾り罫 */
.award-rule {
  display:flex; align-items:center; justify-content:center;
  gap:clamp(6px,.8vw,10px);
  width:min(78%,320px); margin:clamp(8px,1vw,13px) auto clamp(10px,1.2vw,16px);
}
.award-rule::before,
.award-rule::after {
  content:""; flex:1; height:4px; border-radius:3px;
  background:#FFD60A;
}
.award-rule span {
  width:12px; height:12px; flex-shrink:0;
  background:#FFD60A; border:2.5px solid #2A2A2A; border-radius:2px;
  rotate:45deg;
}

/* .hero p より詳細度を上げないと font-size / margin が上書きされる */
.hero .hero-award-name {
  font-family:'Zen Maru Gothic',sans-serif; font-weight:700;
  font-size:clamp(26px,3.6vw,50px); color:#2A2A2A; line-height:1.25;
  margin-bottom:0; max-width:none; white-space:nowrap;
}
.hero .hero-award-meta {
  font-family:'Zen Maru Gothic',sans-serif; font-weight:700;
  font-size:clamp(13px,1.25vw,17px); color:#5A5A6A; white-space:nowrap;
  margin-bottom:0; max-width:none;
}
.hero .result-placeholder-text {
  font-size:clamp(12px,1.1vw,15px); margin-bottom:0; max-width:none;
}
.award-icon { width:clamp(17px,1.7vw,24px); height:clamp(17px,1.7vw,24px); flex-shrink:0; }
.result-award .award-icon { width:20px; height:20px; }

/* ── 受賞発表 ── */
.result-card {
  display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);
  gap:36px; align-items:center; margin-top:32px;
  background:#fff; border:2.5px solid #2A2A2A; border-radius:20px;
  box-shadow:5px 5px 0 #2A2A2A; padding:32px;
}
.result-image img {
  display:block; width:100%; height:auto;
  background:#FFF9F0; border:2px solid #2A2A2A; border-radius:14px;
}
.result-placeholder {
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:16px; min-height:240px; padding:32px 20px; text-align:center;
  background:#FFF9F0; border:3px dashed #2A2A2A; border-radius:16px;
}
.result-placeholder-mark {
  display:flex; align-items:center; justify-content:center;
  width:clamp(58px,6.2vw,88px); height:clamp(58px,6.2vw,88px);
  background:#fff; border:3px dashed #2A2A2A; border-radius:50%;
  font-family:'Zen Maru Gothic',sans-serif; font-weight:700; color:#2A2A2A;
  font-size:clamp(26px,2.8vw,40px);
}
.result-placeholder-text {
  font-family:'Zen Maru Gothic',sans-serif; font-weight:700;
  font-size:15px; color:#5A5A6A; line-height:1.7;
}
.result-award {
  display:inline-flex; align-items:center; gap:4px;
  font-family:'Zen Maru Gothic',sans-serif; font-size:14px; font-weight:700;
  background:#FFD60A; color:#2A2A2A;
  border:2px solid #2A2A2A; border-radius:50px;
  padding:5px 18px; margin-bottom:16px; box-shadow:3px 3px 0 #2A2A2A;
}
.result-award--small { font-size:13px; padding:4px 14px; margin-bottom:12px; box-shadow:2px 2px 0 #2A2A2A; }
.result-name {
  font-family:'Zen Maru Gothic',sans-serif; font-weight:700;
  font-size:34px; color:#2A2A2A; line-height:1.3; margin-bottom:8px;
}
.result-name--small { font-size:22px; }
.result-honorific { font-size:.55em; margin-left:8px; }
.result-meta {
  font-family:'Zen Maru Gothic',sans-serif; font-weight:700;
  font-size:15px; color:#5A5A6A; margin-bottom:20px;
}
.result-body {
  font-family:'Zen Maru Gothic',sans-serif;
  font-size:15px; color:#3A3A3A; line-height:1.9;
}
.result-note {
  font-family:'Zen Maru Gothic',sans-serif;
  font-size:13px; color:#5A5A6A; line-height:1.8; margin-top:20px;
}
.result-grid {
  display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  gap:20px; margin-top:32px;
}
.result-card + .result-grid { margin-top:20px; }
.result-grid .info-card { display:flex; flex-direction:column; align-items:flex-start; }

@media (max-width: 768px) {
  .notice-bar { flex-direction:column; align-items:stretch; gap:10px; padding:18px 24px; }
  .notice-bar-badge { align-self:flex-start; }
  .notice-bar-title { font-size:16px; }
  .closed-panel { padding:24px; }
  .closed-panel-title { font-size:20px; }
  .closed-panel .btn { width:100%; }
  .hero-award-stage { max-width:100%; }
  .hero-award-card { max-width:100%; padding:26px 20px 22px; }
  .confetti--3, .confetti--5, .confetti--8, .confetti--10 { display:none; }
  .award-sparkle--e, .award-sparkle--g { display:none; }
  .hero-award-badge { font-size:15px; padding:6px 22px; margin-bottom:18px; }
  .award-icon { width:21px; height:21px; }
  .hero .hero-award-name { font-size:34px; }
  .hero .hero-award-meta { font-size:15px; }
  .hero-award-visual--pending { min-height:180px; padding:26px 16px; gap:14px; }
  .hero .result-placeholder-text { font-size:14px; }
  .result-placeholder-mark { width:72px; height:72px; font-size:32px; }
  .result-card { grid-template-columns:1fr; gap:20px; padding:20px; }
  .result-name { font-size:28px; }
  .result-placeholder { min-height:180px; padding:24px 16px; }
  .result-placeholder-mark { width:72px; height:72px; font-size:32px; }
}

/* ボタンを出さないフェーズのCTAバナー */
.cta-banner--single { grid-template-columns:1fr; justify-items:center; text-align:center; }
.cta-banner--single p { margin:0 auto; }

@media (prefers-reduced-motion: reduce) {
  .hero-award-badge,
  .award-sparkle,
  .confetti,
  .award-burst { animation:none; }
}
