:root {
  --primary:      #5746e3;
  --primary-dark: #3d2fc9;
  --accent:       #a685ff;
  --bg:           #f4f3ff;
  --glass-bg:     rgba(255,255,255,0.82);
  --glass-border: rgba(87,70,227,0.14);
  --text-main:    #1a1340;
  --text-sub:     #5b5280;
  --text-muted:   #8b82b8;
  --card-shadow:  0 8px 48px rgba(87,70,227,0.10), 0 2px 8px rgba(87,70,227,0.06);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:'Noto Sans JP','Outfit',sans-serif;background:var(--bg);color:var(--text-main);min-height:100vh;overflow-x:hidden}
.bg-orb{position:fixed;border-radius:50%;filter:blur(90px);pointer-events:none;z-index:0;animation:drift 12s ease-in-out infinite alternate}
.bg-orb-1{width:480px;height:480px;background:rgba(87,70,227,0.13);top:-120px;left:-120px}
.bg-orb-2{width:360px;height:360px;background:rgba(166,133,255,0.10);bottom:-80px;right:-80px;animation-delay:4s}
.bg-orb-3{width:260px;height:260px;background:rgba(87,70,227,0.07);top:40%;left:55%;animation-delay:7s}
@keyframes drift{from{transform:translate(0,0) scale(1)}to{transform:translate(24px,18px) scale(1.06)}}
.page-wrap{position:relative;z-index:1;max-width:800px;margin:0 auto;padding:48px 20px 80px}
.page-header{text-align:center;margin-bottom:48px}
.badge{display:inline-block;padding:6px 20px;border-radius:999px;background:rgba(87,70,227,0.10);border:1px solid rgba(87,70,227,0.22);color:var(--primary);font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin-bottom:18px}
.page-title{font-size:clamp(2rem,5vw,3.2rem);font-weight:900;line-height:1.18;background:linear-gradient(135deg,var(--primary) 0%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:14px}
.page-subtitle{color:var(--text-sub);font-size:1rem;line-height:1.7}
.page-subtitle strong{color:var(--primary)}
/* stepper */
.stepper{display:flex;align-items:center;justify-content:center;margin-bottom:40px}
.step-item{display:flex;flex-direction:column;align-items:center;gap:6px}
.step-connector{flex:1;height:2px;background:rgba(87,70,227,0.13);margin:0 6px;margin-bottom:20px;transition:background .4s}
.step-connector.active{background:linear-gradient(to right,var(--primary),rgba(87,70,227,0.3))}
.step-number{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.9rem;background:rgba(87,70,227,0.10);color:var(--text-muted);border:2px solid rgba(87,70,227,0.15);transition:all .3s}
.step-item.active .step-number{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 0 0 5px rgba(87,70,227,0.16)}
.step-item.done .step-number{background:#10b981;color:#fff;border-color:#10b981}
.step-label{font-size:.72rem;font-weight:600;color:var(--text-muted);white-space:nowrap;transition:color .3s}
.step-item.active .step-label{color:var(--primary)}
.step-item.done .step-label{color:#10b981}
/* card */
.card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:24px;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:var(--card-shadow);padding:40px 40px 36px;margin-bottom:24px}
@media(max-width:600px){.card{padding:28px 20px 24px}}
/* section header */
.section-header{display:flex;align-items:center;gap:12px;margin-bottom:28px}
.section-icon{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--accent));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:.95rem;flex-shrink:0}
.section-title{font-size:1.15rem;font-weight:800;color:var(--text-main)}
.section-desc{font-size:.82rem;color:var(--text-sub);margin-top:4px;line-height:1.65}
/* form grid */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.col-span-2{grid-column:1/-1}
@media(max-width:600px){.form-grid{grid-template-columns:1fr}.col-span-2{grid-column:1}}
/* field */
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:.82rem;font-weight:700;color:var(--text-sub);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.required-badge{font-size:.68rem;font-weight:700;background:rgba(239,68,68,0.10);color:#ef4444;border:1px solid rgba(239,68,68,0.22);border-radius:4px;padding:1px 5px}
.field input{width:100%;padding:13px 16px;border-radius:14px;border:1.5px solid rgba(87,70,227,0.16);background:rgba(255,255,255,0.7);color:var(--text-main);font-size:.95rem;font-family:inherit;outline:none;transition:border-color .2s,box-shadow .2s,background .2s}
.field input:focus{border-color:var(--primary);background:rgba(255,255,255,0.95);box-shadow:0 0 0 3px rgba(87,70,227,0.12)}
.field input.error{border-color:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,0.10)}
.field-hint{font-size:.75rem;color:var(--text-muted);line-height:1.55}
.field-error{font-size:.75rem;color:#ef4444;display:none}
.field-error.show{display:block}
/* email mismatch */
.email-mismatch{color:#ef4444;font-size:.75rem;display:none}
.email-mismatch.show{display:block}
/* id selector */
.id-selector{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.id-selector input{width:120px!important}
.id-unit{font-size:1rem;font-weight:700;color:var(--primary)}
/* password */
.pw-wrap{position:relative}
.pw-wrap input{padding-right:48px}
.pw-toggle{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--text-muted);transition:color .2s;padding:4px}
.pw-toggle:hover{color:var(--primary)}
/* help btn */
.help-btn{width:18px;height:18px;border-radius:50%;background:var(--primary);color:#fff;font-size:11px;font-weight:800;cursor:pointer;border:none;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .2s,transform .15s;vertical-align:middle}
.help-btn:hover{background:var(--primary-dark);transform:scale(1.15)}
/* notice */
.notice-box{background:rgba(87,70,227,0.05);border:1px solid rgba(87,70,227,0.15);border-left:4px solid var(--primary);border-radius:12px;padding:14px 18px;font-size:.82rem;color:var(--text-sub);line-height:1.7;margin-bottom:24px}
.notice-box strong{color:var(--primary)}
/* nav */
.nav-buttons{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:32px;flex-wrap:wrap}
.btn-primary{padding:14px 40px;border-radius:999px;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff;font-weight:800;font-size:1rem;border:none;cursor:pointer;transition:opacity .2s,transform .15s,box-shadow .2s;box-shadow:0 4px 20px rgba(87,70,227,0.30);display:flex;align-items:center;gap:8px;font-family:inherit}
.btn-primary:hover{opacity:.9;transform:translateY(-2px);box-shadow:0 8px 28px rgba(87,70,227,0.38)}
.btn-secondary{padding:13px 32px;border-radius:999px;background:rgba(87,70,227,0.08);color:var(--primary);font-weight:700;font-size:.95rem;border:1.5px solid rgba(87,70,227,0.20);cursor:pointer;transition:background .2s,transform .15s;font-family:inherit}
.btn-secondary:hover{background:rgba(87,70,227,0.15);transform:translateY(-1px)}
/* form step */
.form-step{display:none}
.form-step.active{display:block}
/* success */
.success-screen{text-align:center;padding:48px 20px}
.success-icon{width:88px;height:88px;border-radius:50%;background:rgba(16,185,129,0.12);border:2px solid rgba(16,185,129,0.30);display:flex;align-items:center;justify-content:center;margin:0 auto 28px}
.success-title{font-size:1.9rem;font-weight:900;color:var(--text-main);margin-bottom:14px}
.success-desc{font-size:.95rem;color:var(--text-sub);line-height:1.75}
.success-reload{margin-top:28px;color:var(--primary);font-weight:700;cursor:pointer;background:none;border:none;font-size:.9rem;transition:opacity .2s;font-family:inherit}
.success-reload:hover{opacity:.7}
/* loading */
#loading-overlay{display:none;position:fixed;inset:0;z-index:9999;background:rgba(26,19,64,0.60);backdrop-filter:blur(6px);align-items:center;justify-content:center}
#loading-overlay.show{display:flex}
.spinner{width:52px;height:52px;border:4px solid rgba(255,255,255,0.20);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 16px}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-text{color:#fff;font-weight:700;font-size:1rem}
/* modal */
#help-modal-overlay{display:none;position:fixed;inset:0;z-index:9998;background:rgba(26,19,64,0.50);backdrop-filter:blur(4px);align-items:center;justify-content:center}
#help-modal-overlay.show{display:flex}
#help-modal{background:#fff;border-radius:20px;box-shadow:0 20px 60px rgba(87,70,227,0.20);padding:36px 32px 28px;max-width:460px;width:90%;position:relative;animation:modal-in .25s cubic-bezier(.4,0,.2,1)}
@keyframes modal-in{from{opacity:0;transform:scale(.92) translateY(16px)}to{opacity:1;transform:scale(1) translateY(0)}}
.modal-close-x{position:absolute;top:14px;right:18px;background:none;border:none;font-size:1.5rem;color:var(--text-muted);cursor:pointer;transition:color .2s}
.modal-close-x:hover{color:var(--text-main)}
.modal-title{font-size:1.05rem;font-weight:800;color:var(--text-main);margin-bottom:14px;display:flex;align-items:center;gap:10px}
.modal-body{font-size:.875rem;color:var(--text-sub);line-height:1.8}
.modal-example{margin-top:14px;background:rgba(87,70,227,0.05);border-left:3px solid var(--primary);border-radius:8px;padding:12px 16px}
.modal-example-title{font-size:.78rem;font-weight:700;color:var(--primary);margin-bottom:6px}
.modal-btn{display:block;margin:22px auto 0;padding:10px 40px;border-radius:999px;background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;font-weight:700;font-size:.9rem;border:none;cursor:pointer;transition:opacity .2s;font-family:inherit}
.modal-btn:hover{opacity:.85}
/* animation */
.fade-in{animation:fadeIn .4s ease forwards}
@keyframes fadeIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

/* ── チェックボックス ── */
.checkbox-group{display:flex;gap:20px;flex-wrap:wrap;margin-top:4px}
.checkbox-item{display:flex;align-items:center;gap:10px;cursor:pointer;user-select:none;padding:10px 16px;border-radius:12px;border:1.5px solid rgba(87,70,227,0.16);background:rgba(255,255,255,0.7);transition:border-color .2s,background .2s,box-shadow .2s}
.checkbox-item:hover{border-color:rgba(87,70,227,0.35);background:rgba(87,70,227,0.04)}
.checkbox-item input[type="checkbox"]{display:none}
.checkbox-custom{width:20px;height:20px;border-radius:6px;border:2px solid rgba(87,70,227,0.28);background:#fff;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}
.checkbox-custom::after{content:'';width:11px;height:7px;border-left:2.5px solid #fff;border-bottom:2.5px solid #fff;transform:rotate(-45deg) translateY(-1px);opacity:0;transition:opacity .15s}
.checkbox-item input[type="checkbox"]:checked ~ .checkbox-custom{background:var(--primary);border-color:var(--primary)}
.checkbox-item input[type="checkbox"]:checked ~ .checkbox-custom::after{opacity:1}
.checkbox-item:has(input[type="checkbox"]:checked){border-color:var(--primary);background:rgba(87,70,227,0.06);box-shadow:0 0 0 3px rgba(87,70,227,0.10)}
.checkbox-label{font-size:.95rem;font-weight:600;color:var(--text-main)}