/* ベース */
:root{
  --text:#333;
  --border:#aaa;
  --accent:#2a7daa;
  --btn:#888;
  --btn-txt:#fff;
  --radius:6px;
  --line:#ccc;
}

/* ヘッダー */
.header {
    width: 100%;
    position: fixed;
    top: 0;
    left: 0;
    background-color: #000;
    color: #fff;
        height: 65px; 
        padding: 0; 
    z-index: 1000;
}

.header__wrapper {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 40px;
    display: flex;
    justify-content: space-between;
    align-items: center;
     height: 100%; 
}

.header__logo {
    width: 180px;
    height: 65px;
    display: flex;
    align-items: center; 
}

.header__logo img {
    display: block;
    width: auto;
    max-width: 100%;
    height: auto;
}

*{ box-sizing:border-box; }
html,body{ min-height:100%; }
body{
  margin:0;
  font-family: system-ui, -apple-system, "Segoe UI", "Hiragino Kaku Gothic ProN",
               "Yu Gothic", Meiryo, sans-serif;
  color:var(--text);
  background:#fff;
  display:flex;
  flex-direction:column;
  min-height:100vh;
  padding:24px 0 0;
  padding-top:calc(24px + 65px + 20px);
  overflow-x: hidden;
}

/* パネル */
.wrap{
  width: min(600px, 92vw);
  background: #fff;
  border:none;
  padding:16px 14px 20px;
  box-shadow: none;
  text-align:center;
  margin: 0 auto;
  flex:1 0 auto;
}

.title{
  margin:0 0 30px;
  text-align:center;
  font-size:1.1rem;
  font-weight:700;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:0.5em;
}

.title-icon{
  /* height:1.1em;
  width:auto; */
  width: 30px;
  height: auto;
}

.lead{
  margin:0 0 30px;
  line-height:1.7;
  font-size:.92rem;
}

.lead--center{
  text-align:center;
}

.btn-back{
  display:inline-block;
  margin-top:30px;
  padding:8px 18px;
  background:var(--btn);
  color:var(--btn-txt);
  border-radius:4px;
  text-decoration:none;
  font-size:.98rem;
  transition:opacity .2s ease, background-color .2s ease;
}

.btn-back:hover,
.btn-back:focus-visible{
  opacity:.92;
}

/* フォーム */
.form{ 
  width:100%;
  text-align:center;
}

.form-row{
  display:grid;
  grid-template-columns: 7em 1fr;
  gap:10px;
  align-items:center;
  margin-bottom:10px;
}

div.form-row {
  margin-right: 8em;
}

.form-row--application{
  display:grid;
  grid-template-columns: 7em 1fr;
  margin-top:18px;
  margin-bottom:18px;
}

.form-row--application .check{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.45em;
  grid-column:2;
  justify-self:center;
}

.form-row > label{
  font-size:.94rem;
  text-align:right;
  align-self: start;
}

label {
    white-space: nowrap;
}

input[type="text"],
input[type="email"],
input[type="tel"],
textarea{
  width:100%;
  padding:4px 6px;
  border:1px solid var(--border);
  border-radius:3px;
  background:#fff;
  font-size:.95rem;
}

.form-errors{
  color:#c00;
  font-size:.95rem;
  line-height:1.6;
  margin:0 auto 16px;
  max-width:720px;
  text-align:center;
}
.form-errors ul{
  margin:6px 0 0;
  padding-left:1.2em;
  display:inline-block;
  text-align:left;
}

.modal{
  position:fixed;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(0,0,0,.55);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .25s ease, visibility .25s ease;
  z-index:2000;
  backdrop-filter: blur(4px);
  overflow:auto;
}
.modal.is-open{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
}
.modal__content{
  position:relative;
  width:90%;
  max-width:900px;
  max-height:90vh;
  height:auto;
  background:#fff;
  border-radius:8px;
  box-shadow:0 10px 30px rgba(0,0,0,.25);
  overflow:hidden;
  z-index:2001;
}
.modal__close{
  position:absolute;
  top:10px;
  right:20px;
  border:none;
  background:rgba(0,0,0,0.75);
  color:#fff;
  font-size:32px;
  line-height:1;
  cursor:pointer;
  width:38px;
  height:38px;
  border-radius:19px;
  box-shadow:0 2px 8px rgba(0,0,0,0.4);
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:5;
}
.modal__body{
  max-height:calc(90vh - 24px);
  overflow:auto;
}
.modal__iframe-wrap{
  position:relative;
}
.modal__content iframe{
    width:100%;
    height:auto;
    border:0;
    display:block;
    pointer-events:auto;
}
.modal__overlay{
  position:absolute;
  inset:0;
  z-index:0;
}
.modal__consent{
  padding:12px 12px 16px;
  background:#f7f7f7;
  border-top:1px solid #ddd;
  display:flex;
  justify-content:center;
}
.modal__consent-label{
  font-size:1.1rem;
  color:#333;
  font-weight: 500;
  display:flex;
  align-items:center;
  gap:8px;
}
body.modal-open{
  overflow:hidden;
}
#modal-consent {
  transform: scale(1.3);
}

.form-row.error input,
.form-row.error textarea{
  background:#ffecec;
  border-color:#e08;
}

/* チェックボックス行 */
.p_info{
  display: flex;
  margin: 30px auto;
  border:none;
  padding:0;
  width: fit-content;
}
.p_info .check{
  display:inline-flex;
  align-items:flex-start;
  gap:.45em;
  font-size:.95rem;
}
.req{
  display:inline-block;
  background:rgb(206, 40, 40); /* 赤座布団 */
  color:#fff;
  font-size:0.7em;
  padding:0.06em 0.40em 0.07em;
  border-radius:5px;
  margin-left:0.5em;
  vertical-align:middle;
}
.req.is-hidden{
  display:none;
}
/* メモ類 */
.form-row.is-hidden{
  display:none;
}
.note{
  margin:0 0 20px;
  font-size:.9rem;
  color:var(--text);
}
.text_left{
  text-align:left;
  white-space: normal;
  word-break: break-word;
}
.privacy{
  margin:0 0 12px;
  font-size:.9rem;
}
.privacy a{
  color:var(--accent);
  text-decoration:underline;
}

/* 送信ボタン */
.form-actions{
    margin-top:30px;
  text-align:center;
}
.btn{
  display:inline-block;
  min-width:88px;
  padding:8px 18px;
  background:var(--btn);
  color:var(--btn-txt);
  border:none;
  border-radius:4px;
  font-size:.98rem;
  cursor:pointer;
}
.btn:hover{ opacity:.92; }
.btn:disabled,
.btn[disabled]{
  opacity:0.5;
  cursor:default;
}
.btn:disabled:hover,
.btn[disabled]:hover{
  opacity:0.5;
}

.footer {
  background-color: #8cc31e;
  color: #fff;
  padding: 0 0 20px;
  position: relative;
  overflow: hidden;
  margin-top: 40px;
  flex-shrink: 0;
}

.footer__content {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 40px;
  display: flex;
  justify-content: center;
  margin-bottom: 20px;
}

.footer__top {
  display: flex;
  justify-content: flex-end;
  max-width: 900px;
  margin: 40px auto 30px;
}

.footer__top-link {
  display: inline-block;
}

.footer__top-image {
  display: block;
  height: 32px;
  width: auto;
}

.footer__links {
  list-style: none;
  display: flex;
  gap: 45px;
  padding: 0;
  margin: 0;
  align-items: center;
}

.footer__links a {
  font-size: 12px;
  color: #fff;
  text-decoration: underline;
}

.footer__bottom {
  max-width: 1280px;
  margin: 0 auto;
  padding: 20px 40px;
  text-align: center;
  font-size: 12px;
  color: #fff;
}

/* アクセシビリティ */
.sr-only{
  position:absolute;
  width:1px; height:1px;
  padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); border:0;
}

/* スマホでのレイアウト詰まり対策 */
@media (max-width:420px){
  body {
    padding-left: 0;
    padding-right: 0;
  }
  .form-row{
    grid-template-columns: 1fr;
  }
  div.form-row {
    margin-right: 0;
  }
  .form-row > label{
    text-align:left;
    margin-bottom:4px;
  }
  .text_left br{
    display:none;
  }
  .modal__consent-label{
    font-size:1rem;
  }
}

@media (max-width: 480px) {
  .footer__content {
    flex-direction: column;
    align-items: center;
    gap: 30px;
  }

  .footer__links {
    flex-direction: column;
    align-items: center;
    gap: 35px;
  }

  .footer__top {
    justify-content: center;
  }
}

@media screen and (max-width: 600px) {
  .header__wrapper{
    padding:0;
  }
}
