:root {
    --font: "Noto Sans JP", system-ui, -apple-system, "Segoe UI", Roboto, "Hiragino Kaku Gothic ProN", "Noto Sans JP", sans-serif;
    --text: #222;
    --muted: #6b7280;
    /* ラベル補助テキスト */
    --line: #e5e7eb;
    /* 枠線の薄いグレー */
    --bg: #fafafa;
    /* ページ背景のほのかなグレー */
    --accent: #e53935;
    /* 送信ボタン赤 */
    --focus: #ef5350;
    /* フォーカス赤 */
    --req: #d32f2f;
    /* 必須バッジ赤 */
    --opt: #9ca3af;
    /* 任意バッジグレー */
    --radio: #7c3aed;
    /* ラジオ紫（スクショの雰囲気） */
    --sub: #6b7280;
}

* {
    box-sizing: border-box
}

html, body {
    height: 100%
}

body {
    margin: 0;
    background: var(--bg);
    color: var(--text);
    font-family: var(--font);
    line-height: 1.8;
}

.container {
    max-width: 760px;
    margin: 36px auto 80px;
    padding: 0 20px;
}

.page-title {
    text-align: center;
    font-weight: 700;
    letter-spacing: .02em;
    margin: 12px 0 36px;
    font-size: clamp(20px, 2.4vw, 32px);
    position: relative;
    padding-bottom: 14px;
}

.page-title::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: 0;
    width: 96px;
    height: 2px;
    background: var(--line);
    transform: translateX(-50%);
}

.form {
    background: transparent
}

.field {
    margin: 16px 0 18px
}

.label {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 6px;
}

.label-text {
    font-weight: 700;
    color: #333;
}

.badge {
    display: inline-block;
    font-size: 12px;
    line-height: 1;
    padding: .28em .5em;
    border-radius: 4px;
    vertical-align: middle;
}

.badge.req {
    background: #fde7e7;
    color: var(--req);
    border: 1px solid #f8c7c7;
}

.badge.opt {
    background: #f3f4f6;
    color: #6b7280;
    border: 1px solid #e5e7eb;
}

.input, .textarea {
    width: 100%;
    border: 1px solid var(--line);
    background: #fff;
    border-radius: 6px;
    padding: 12px 14px;
    font-size: 16px;
    outline: none;
    transition: box-shadow .15s, border-color .15s;
}

.input::placeholder, .textarea::placeholder {
    color: #b9bec6
}

.input:focus, .textarea:focus {
    border-color: var(--focus);
    box-shadow: 0 0 0 3px rgba(239, 83, 80, .14);
}

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

.help.error {
    color: var(--req);
    margin: 6px 2px 0;
    font-size: 13px;
}

.radios {
    display: flex;
    gap: 22px;
    padding: 6px 2px
}

.radio {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 16px;
    color: #333
}

.radio input[type="radio"] {
    width: 18px;
    height: 18px;
    accent-color: var(--radio);
}

.field.check {
    margin-top: 12px
}

.checklabel {
    display: flex;
    align-items: center;
    gap: 10px;
    color: #333;
}

.actions {
    margin-top: 18px
}

.btn-submit {
    appearance: none;
    display: block;
    width: 100%;
    border: none;
    border-radius: 8px;
    padding: 14px 18px;
    font-weight: 700;
    font-size: 18px;
    color: #fff;
    background: var(--accent);
    cursor: pointer;
    letter-spacing: .1em;
}

.btn-submit:hover {
    filter: brightness(0.98)
}

.btn-submit:active {
    transform: translateY(1px)
}

.alert {
    background: #fff8f8;
    border: 1px solid #f8d2d2;
    color: #b42323;
    padding: 12px 14px;
    border-radius: 6px;
    margin: 0 0 18px;
}

/* スマホ最適化 */
@media (max-width: 480px) {
    .container {
        margin-top: 20px
    }

    .radios {
        flex-direction: column;
        gap: 10px
    }
}

.wrap {
    max-width: 720px;
    margin: 40px auto;
    padding: 48px 48px;
}

h1 {
    font-size: 28px;
    text-align: center;
    margin: 0 0 24px
}

.note {
    text-align: center;
    color: var(--sub);
    margin-bottom: 20px
}

.error-banner {
    background: #fde8e7;
    border: 1px solid #f3b1ab;
    color: #a33;
    padding: 12px 14px;
    border-radius: 8px;
    margin: 0 0 18px
}

.field {
    margin: 14px 0
}

label {
    display: block;
    font-weight: 600;
    margin: 0 0 6px
}

.req {
    display: inline-block;
    color: #fff;
    background: var(--accent);
    font-size: 12px;
    padding: 2px 6px;
    border-radius: 999px;
    margin-left: 6px
}

input[type=text],
input[type=email],
textarea {
    width: 100%;
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 12px 14px;
    font-size: 16px;
    background: #fff
}

textarea {
    min-height: 120px;
    resize: vertical
}

.hint {
    font-size: 12px;
    color: var(--sub);
    margin-top: 6px
}

.radios {
    display: flex;
    gap: 20px;
    align-items: center
}

.agree {
    display: flex;
    gap: 8px;
    align-items: center;
    font-size: 14px;
    color: var(--sub)
}

.btn {
    width: 100%;
    appearance: none;
    border: none;
    background: #ef4444;
    color: #fff;
    border-radius: 10px;
    font-size: 18px;
    font-weight: 700;
    padding: 14px 18px;
    cursor: pointer;
    margin-top: 12px
}

.btn:disabled {
    opacity: .6;
    cursor: not-allowed
}