/* =========================================================
   JAPAN ACTION FILM CAMP — 応募フォーム  v0.1.0
   tokens: ink #1a1a1a / bg #fafafa / red #e63946 / green #1a9f5c
   ========================================================= */
:root{
  --ink:#1a1a1a;
  --bg:#fafafa;
  --card:#ffffff;
  --line:#e4e4e4;
  --line2:#ededed;
  --red:#e63946;
  --green:#1a9f5c;
  --green-d:#178a51;
  --muted:#6a6a6a;
  --radius:8px;
  --maxw:760px;
}

*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  font-family:"Noto Sans JP",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  color:var(--ink);
  background:var(--bg);
  line-height:1.7;
  font-size:15px;
}
a{color:var(--green-d);}

/* ---------- ヘッダー ---------- */
.camp-header{
  background:#141414;
  color:#fff;
  border-bottom:4px solid var(--red);
}
.camp-header__inner{
  max-width:var(--maxw);
  margin:0 auto;
  padding:20px 20px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
}
.camp-header__brand{display:flex;align-items:center;gap:14px;color:#fff;text-decoration:none;}
.camp-header__logo{height:46px;width:auto;display:block;}
.camp-header__bar{
  width:6px;align-self:stretch;min-height:46px;
  background:var(--red);display:block;
}
.camp-header__title{
  font-family:"Bebas Neue",sans-serif;
  font-size:30px;line-height:.96;letter-spacing:.04em;
}
.camp-header__meta{text-align:right;line-height:1.3;}
.camp-header__year{
  display:block;font-family:"Bebas Neue",sans-serif;
  font-size:30px;letter-spacing:.06em;color:var(--red);
}
.camp-header__date{display:block;font-size:11px;color:#cfcfcf;letter-spacing:.02em;}

/* ---------- レイアウト ---------- */
.wrap{max-width:var(--maxw);margin:0 auto;padding:28px 20px 64px;}

/* ---------- ステップ ---------- */
.steps{
  list-style:none;display:flex;gap:8px;margin:0 0 28px;padding:0;
}
.steps__item{
  flex:1;display:flex;align-items:center;justify-content:center;gap:8px;
  padding:10px 6px;font-size:12px;font-weight:700;color:#aaa;
  background:#f0f0f0;border-radius:6px;
}
.steps__num{
  width:22px;height:22px;border-radius:50%;background:#cfcfcf;color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:12px;flex:none;
}
.steps__item.is-current{color:#fff;background:var(--ink);}
.steps__item.is-current .steps__num{background:var(--red);}
.steps__item.is-done{color:var(--green-d);background:#e9f6ef;}
.steps__item.is-done .steps__num{background:var(--green);}

/* ---------- リード ---------- */
.lead{margin-bottom:24px;}
.lead__title{
  font-size:22px;font-weight:900;margin:0 0 10px;
  padding-left:14px;border-left:5px solid var(--red);line-height:1.4;
}
.lead__text{font-size:14px;color:#444;margin:0 0 10px;}
.lead__price{
  font-size:13px;font-weight:700;color:var(--ink);
  background:#fff4f5;border:1px solid #f6d4d8;border-radius:6px;
  padding:10px 14px;margin:0;
}

/* ---------- アラート ---------- */
.alert{border-radius:6px;padding:12px 16px;font-size:14px;font-weight:700;margin:0 0 20px;}
.alert--error{background:#fdecee;color:#b3242f;border:1px solid #f3c2c7;}

/* ---------- カード ---------- */
.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:28px 28px 8px;margin-bottom:22px;
}
.card__title{
  font-size:16px;font-weight:700;margin:0 0 22px;
  padding:10px 16px;background:#fafafa;border-left:3px solid var(--ink);
  border-radius:0 4px 4px 0;letter-spacing:.02em;
}

/* ---------- フィールド ---------- */
.field{margin-bottom:22px;}
.field__label{display:block;font-size:13.5px;font-weight:700;margin-bottom:8px;}
.field__note{font-size:12px;color:var(--muted);margin:6px 0 0;}
.field__error{display:block;color:var(--red);font-size:12.5px;font-weight:700;margin-top:6px;}

input[type=text],input[type=email],input[type=tel],input[type=url],select,textarea{
  width:100%;font-family:inherit;font-size:15px;color:var(--ink);
  padding:11px 13px;border:1px solid #ccc;border-radius:6px;background:#fff;
  transition:border-color .15s,box-shadow .15s;
}
textarea{resize:vertical;line-height:1.7;}
input:focus,select:focus,textarea:focus{
  outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(26,159,92,.15);
}
.field.has-error input,.field.has-error select,.field.has-error textarea{
  border-color:var(--red);background:#fffafa;
}
.w-half{max-width:320px;}
.w-postal{max-width:180px;}
.mt8{margin-top:8px;}

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}

/* 生年月日 */
.birth{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.birth select{width:auto;min-width:84px;}
.birth__u{font-size:13px;color:var(--muted);margin-right:6px;}

/* ラジオ・チェック */
.radios{display:flex;flex-wrap:wrap;gap:10px 18px;}
.radio,.check{display:inline-flex;align-items:flex-start;gap:8px;cursor:pointer;font-size:14px;}
.radio input,.check input{margin-top:3px;width:17px;height:17px;accent-color:var(--red);flex:none;cursor:pointer;}
.check{align-items:flex-start;line-height:1.6;}
.check span{flex:1;}

/* サブフィールド（都道府県） */
.subfield{margin-top:12px;}
.subfield__label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px;}

/* ---------- 確認画面 ---------- */
.review{margin:0;}
.review__row{
  display:grid;grid-template-columns:200px 1fr;gap:14px;
  padding:13px 4px;border-bottom:1px solid var(--line2);
}
.review__row:last-child{border-bottom:none;}
.review__key{font-size:13px;font-weight:700;color:#555;margin:0;}
.review__val{margin:0;font-size:14.5px;word-break:break-word;}

/* ---------- ボタン ---------- */
.actions{margin:30px 0 0;text-align:center;}
.actions--split{display:flex;gap:14px;justify-content:center;align-items:center;flex-wrap:wrap;}
.btn{
  display:inline-block;font-family:inherit;font-size:16px;font-weight:700;
  padding:15px 40px;border-radius:8px;border:2px solid transparent;cursor:pointer;
  text-decoration:none;transition:transform .08s,background .15s,box-shadow .15s;
}
.btn:active{transform:translateY(1px);}
.btn--primary{background:var(--green);color:#fff;box-shadow:0 3px 0 var(--green-d);}
.btn--primary:hover{background:var(--green-d);}
.btn--primary:disabled{background:#9bbfac;box-shadow:none;cursor:default;}
.btn--ghost{background:#fff;color:var(--ink);border-color:#ccc;}
.btn--ghost:hover{border-color:#999;background:#fafafa;}

/* ---------- バッジ ---------- */
.badge{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:3px;vertical-align:2px;margin-left:4px;letter-spacing:.04em;}
.badge--req{background:var(--red);color:#fff;}
.badge--opt{background:#eee;color:#777;}

/* ---------- 完了 ---------- */
.done{text-align:center;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:48px 28px 40px;}
.done__mark{margin-bottom:14px;}
.done__title{font-size:22px;font-weight:900;margin:0 0 14px;}
.done__lead{font-size:15px;color:#333;margin:0 0 14px;}
.done__note{font-size:13px;color:var(--muted);background:#fafafa;border-radius:6px;padding:14px 18px;max-width:520px;margin:0 auto 8px;text-align:left;}

/* ---------- フッター ---------- */
.camp-footer{background:#141414;color:#bbb;margin-top:40px;}
.camp-footer__inner{max-width:var(--maxw);margin:0 auto;padding:26px 20px;text-align:center;}
.camp-footer__org{color:#fff;font-weight:700;font-size:14px;margin:0 0 4px;}
.camp-footer__line{font-size:12px;margin:0 0 12px;color:#999;}
.camp-footer__copy{font-size:11px;margin:0;color:#777;}

/* ---------- レスポンシブ ---------- */
@media(max-width:600px){
  .camp-header__title,.camp-header__year{font-size:24px;}
  .wrap{padding:22px 14px 48px;}
  .card{padding:20px 16px 4px;}
  .card__title{font-size:15px;padding:9px 13px;}
  .steps__label{display:none;}
  .steps__item{padding:9px 4px;}
  .review__row{grid-template-columns:1fr;gap:4px;}
  .review__key{color:var(--muted);}
  .btn{width:100%;padding:15px 20px;}
  .actions--split{flex-direction:column-reverse;}
  .actions--split .btn{width:100%;}
}

/* アクセシビリティ */
@media(prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important;}
}
:focus-visible{outline:2px solid var(--green);outline-offset:2px;}
