:root{--bg:#faf7ff;--panel:#fff;--panel-2:#f3ecff;--line:#5b378a2e;--text:#2d1d43;--muted:#756784;--accent:#8b5cc7;--accent-strong:#6f3caf;--accent-soft:#eee2ff;--green:#06c755;--danger:#ff7b7b}*{box-sizing:border-box}html{background:var(--bg);color:var(--text)}body{letter-spacing:0;margin:0;font-family:Hiragino Sans,Noto Sans JP,system-ui,sans-serif}.auth-shell{background:#f7f5fa;place-items:center;min-height:100svh;padding:24px 18px;display:grid}.auth-panel{background:#fff;border:1px solid #e5ddec;border-radius:8px;width:min(420px,100%);padding:34px 32px;box-shadow:0 18px 52px #2d1d431a}.portal-brand{color:#2d1d43;text-align:center;font-size:2rem;font-weight:800}.portal-brand--small{text-align:left;font-size:1.35rem}.auth-heading{text-align:center;margin:30px 0 24px}.auth-heading h1{margin-bottom:8px;font-size:1.65rem}.auth-heading p:last-child{margin:0;font-size:.92rem}.auth-form{gap:17px;display:grid}.auth-submit{width:100%}.text-button{color:var(--accent-strong);cursor:pointer;background:0 0;border:0;padding:8px;font-weight:700}.text-button:disabled{opacity:.55;cursor:wait}.text-link{text-align:center;text-decoration:none;display:block}.form-message{color:var(--accent-strong);text-align:center;margin:0;font-size:.9rem}.form-message--error{color:#b4233a}.portal-shell{background:#f7f5fa;min-height:100svh}.portal-header{background:#fff;border-bottom:1px solid #e5ddec;justify-content:space-between;align-items:center;min-height:64px;padding:0 clamp(18px,4vw,48px);display:flex}.portal-content{width:min(980px,100%);margin:0 auto;padding:42px clamp(18px,4vw,36px)}.portal-title-row{justify-content:space-between;align-items:center;gap:20px;display:flex}.portal-title-row h1{margin:0;font-size:2rem}.status-badge{color:var(--accent-strong);border:1px solid #cdb8e2;border-radius:999px;padding:7px 10px;font-size:.78rem;font-weight:800}.portal-summary{background:#fff;border:1px solid #e5ddec;border-radius:8px;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:30px;display:grid}.portal-summary>div{border-right:1px solid #e5ddec;gap:8px;min-width:0;padding:22px;display:grid}.portal-summary>div:last-child{border-right:0}.portal-summary span{color:var(--muted);font-size:.82rem}.portal-summary strong{overflow-wrap:anywhere}.portal-section{background:#fff;border:1px solid #e5ddec;border-radius:8px;margin-top:24px;padding:24px}.portal-section h2{margin:0 0 8px;font-size:1.05rem}.portal-section p{margin:0}@media (max-width:640px){.auth-panel{padding:28px 22px}.portal-summary{grid-template-columns:1fr}.portal-summary>div{border-bottom:1px solid #e5ddec;border-right:0}.portal-summary>div:last-child{border-bottom:0}.portal-title-row{align-items:flex-start}}a{color:inherit}button,input,select,textarea{font:inherit}.shell{background:radial-gradient(circle at 12% 0,#bc8fff47,#0000 34rem),radial-gradient(circle at 92% 12%,#e0aaff3d,#0000 30rem),linear-gradient(#fff 0%,#f7f0ff 52%,#fff8fc 100%);min-height:100vh;padding:28px clamp(18px,4vw,48px)}.email-only-panel{place-items:center;min-height:calc(100vh - 56px);display:grid}.application-panel{width:min(680px,100%);margin:42px auto}.application-form{border:1px solid var(--line);background:#ffffffeb;border-radius:8px;gap:22px;padding:clamp(24px,5vw,44px);display:grid;box-shadow:0 24px 70px #4c267524}.application-form__heading{text-align:center}.application-form__heading h1{margin-bottom:10px;font-size:clamp(1.55rem,4vw,2.2rem)}.application-form__heading p:last-child{margin:0}.field>span,.choice-field legend{color:var(--text);font-weight:700}.field b,.choice-field b{color:var(--accent-strong);margin-left:5px;font-size:.75rem}.field small{color:var(--muted);font-weight:500}.choice-field{border:0;gap:9px;margin:0;padding:0;display:grid}.segmented-control{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.segmented-control label{position:relative}.segmented-control input{opacity:0;pointer-events:none;position:absolute}.segmented-control span{border:1px solid var(--line);cursor:pointer;background:#fbf9ff;border-radius:8px;place-items:center;min-height:48px;font-weight:700;display:grid}.segmented-control input:checked+span{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.segmented-control input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}.conditional-fields{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.textarea--compact{min-height:92px}.application-form .email-only-button{width:100%}.booking-shell{place-items:center;display:grid}.booking-days{gap:16px;margin-top:26px;display:grid}.booking-day{border-top:1px solid var(--line);padding-top:16px}.booking-day h2{margin:0 0 12px;font-size:1.05rem}.booking-times{grid-template-columns:repeat(5,minmax(76px,1fr));gap:8px;display:grid}.booking-time{border:1px solid var(--line);min-height:44px;color:var(--text);cursor:pointer;background:#ffffff0d;border-radius:8px}.booking-time.is-selected{border-color:var(--accent);background:var(--accent);color:#16100a;font-weight:800}.booking-submit{background:linear-gradient(transparent, var(--panel) 24%);text-align:center;margin-top:24px;padding:16px 0 2px;position:sticky;bottom:0}.booking-submit .btn{width:min(360px,100%)}.booking-complete{text-align:center}.email-only-form{gap:12px;width:min(460px,100%);display:grid}.email-only-guidance{color:var(--text);text-align:center;margin:0 0 8px;font-size:1rem;font-weight:700;line-height:1.75}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.email-only-input{border:1px solid var(--line);width:100%;color:var(--text);text-align:center;background:#fff;border-radius:8px;outline:none;padding:17px 16px;font-size:1rem}.email-only-input::placeholder{color:#9b8ba9}.email-only-button{background:linear-gradient(135deg, var(--accent-strong), #9b65d6);color:#fff;cursor:pointer;border:0;border-radius:8px;min-height:52px;font-weight:800;box-shadow:0 10px 24px #6f3caf3d}.email-only-button:disabled{opacity:.6;cursor:wait}.email-only-error{text-align:center;color:#b4233a;margin:0;font-size:.9rem}.topbar{justify-content:space-between;align-items:center;max-width:1040px;margin:0 auto 48px;display:flex}.brand{align-items:center;gap:10px;font-weight:800;display:inline-flex}.brand-mark{background:var(--accent);color:#fff;border-radius:8px;place-items:center;width:34px;height:34px;display:grid}.toplink{color:var(--muted);font-size:.92rem;text-decoration:none}.panel{border:1px solid var(--line);background:color-mix(in srgb, var(--panel) 92%, transparent);border-radius:8px;width:min(760px,100%);margin:0 auto;padding:clamp(22px,4vw,42px);box-shadow:0 24px 70px #4c267524}.panel--wide{width:min(920px,100%)}.eyebrow{color:var(--accent-strong);text-transform:uppercase;margin:0 0 14px;font-size:.82rem;font-weight:800}h1{margin:0 0 16px;font-size:clamp(2rem,5vw,3.2rem);line-height:1.18}p{color:var(--muted);line-height:1.8}.form{gap:18px;margin-top:26px;display:grid}.field{gap:8px;display:grid}.field label{font-weight:700}.field small{color:var(--muted)}.input,.textarea,.select{border:1px solid var(--line);width:100%;color:var(--text);background:#fff;border-radius:8px;outline:none;padding:13px 14px}.input:focus,.textarea:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #8b5cc724}.textarea{resize:vertical;min-height:120px}.select option{color:#171425}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.btn{cursor:pointer;border:0;border-radius:8px;justify-content:center;align-items:center;min-height:48px;padding:13px 20px;font-weight:800;text-decoration:none;display:inline-flex}.btn--primary{background:var(--accent-strong);color:#fff}.btn--line{background:var(--green);color:#fff}.btn--ghost{border:1px solid var(--line);color:var(--text);background:#fbf9ff}.btn:disabled{opacity:.58;cursor:wait}.actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.notice,.error{border-radius:8px;padding:12px 14px;line-height:1.7}.notice{background:var(--accent-soft);border:1px solid #8b5cc757}.error{color:#b4233a;background:#ff7b7b1f;border:1px solid #ff7b7b7a}.steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:28px 0;display:grid}.step{border:1px solid var(--line);color:var(--muted);border-radius:8px;padding:12px}.step strong{color:var(--text);margin-bottom:4px;display:block}@media (max-width:720px){.grid,.steps{grid-template-columns:1fr}.topbar{margin-bottom:28px}.application-panel{margin:0 auto}.application-form{padding:24px 18px}.conditional-fields{grid-template-columns:1fr}.booking-times{grid-template-columns:repeat(3,minmax(72px,1fr))}}
