/* ── Landing page ── */
#ml-landing{position:fixed;inset:0;background:#F7F9FC;z-index:9998;overflow-y:auto;display:none;flex-direction:column}
#ml-landing.show{display:flex}
.lp-header{background:#fff;box-shadow:0 1px 8px rgba(0,0,0,.08);position:sticky;top:0;z-index:10}
.lp-header.nav-open{z-index:301}
.lp-header-inner{max-width:1100px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;flex-wrap:wrap;gap:8px 20px}
.lp-logo{flex:1;min-width:80px}
.lp-logo a{display:inline-flex;align-items:center;text-decoration:none}
.lp-logo img{width:clamp(80px,8.34vw,160px);aspect-ratio:16/5;height:auto;object-fit:contain;display:block}
.lp-nav-links{display:flex;flex-wrap:wrap;gap:8px 24px;align-items:center;font-size:.83rem}
.lp-nav-links a{color:#333333;text-decoration:none;transition:.12s;white-space:nowrap}
.lp-nav-links a:hover{color:#2B7A6F}
.lp-nav-toggle{display:none;flex-direction:column;justify-content:center;gap:4px;width:32px;height:32px;border:none;background:none;cursor:pointer;padding:0;flex-shrink:0}
.lp-nav-toggle span{display:block;width:100%;height:2px;background:#555;border-radius:1px}
.lp-mob-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.42);z-index:299}
.lp-mob-overlay.open{display:block}
@media(max-width:640px){
  .lp-nav-toggle{display:flex}
  .lp-nav-links{display:flex;flex-direction:column;align-items:flex-start;gap:20px;position:fixed;top:60px;right:0;height:calc(100% - 60px);width:80vw;max-width:280px;background:#fff;padding:24px;box-sizing:border-box;transform:translateX(100%);transition:transform .25s ease;z-index:300}
  .lp-nav-links.open{transform:translateX(0)}
}
.lp-footer{background:#fff;border-top:1px solid #E2E8F0;padding:20px 24px;text-align:center;font-size:.78rem;color:#888;display:flex;flex-direction:column;align-items:center;gap:6px}
.lp-footer-links{display:flex;flex-wrap:wrap;justify-content:center;row-gap:6px}
.lp-footer a{color:#2B7A6F;text-decoration:none;margin:0 10px;white-space:nowrap}
.lp-footer a:hover{text-decoration:underline}

/* ── Login page (2カラム: 左=画像スライド / 右=ログイン・広告) ── */
body[data-page=login] #ml-landing{background:#fff}
.lp-split{display:flex;flex:1 0 auto;min-height:100%}
.lp-hero{position:sticky;top:0;width:50%;height:100vh;flex-shrink:0;overflow:hidden;background:#cfe6ef}
.lp-hero-slide{position:absolute;inset:0;opacity:0;transition:opacity .4s ease}
.lp-hero-slide.is-active{opacity:1}
.lp-hero-slide picture,.lp-hero-photo{display:block;width:100%;height:100%}
.lp-hero-photo{object-fit:cover;object-position:center bottom}
.lp-hero-catch{position:absolute;left:50%;top:20%;transform:translateX(-50%);width:calc(var(--cw) * .12%);height:auto;display:block;pointer-events:none}
.lp-main{flex:1;min-width:0;display:flex;flex-direction:column;background:#fff}
.lp-main-inner{flex:1;width:100%;max-width:600px;margin:0 auto;padding:96px 24px 80px;box-sizing:border-box}
.lp-main .lp-footer{margin-top:auto}
.lp-brand{display:block;width:360px;max-width:100%;margin:0 auto 48px}
.lp-brand img{display:block;width:100%;height:auto}
.lp-panel{max-width:520px;margin:0 auto}
.lp-panel-msg{font-size:.85rem;color:#333333;margin:0 0 16px;text-align:center;line-height:1.7}
.lp-field{margin-bottom:16px}
.lp-field label{display:block;font-size:1rem;color:#333;margin-bottom:8px}
.lp-input{display:block;width:100%;height:60px;padding:0 16px;border:1px solid #9aa0a6;border-radius:8px;font-size:1.05rem;color:#333;background:#fff;outline:none;box-sizing:border-box;transition:border-color .15s,box-shadow .15s}
.lp-input::placeholder{color:#c0c4cc;opacity:1}
.lp-input:focus{border-color:#2B7A6F;box-shadow:0 0 0 3px rgba(43,122,111,.12)}
.lp-input-otp{font-size:1.3rem;letter-spacing:.2em;text-align:center}
.lp-pw-wrap{position:relative}
.lp-pw-wrap .lp-input{padding-right:52px}
.lp-pw-toggle{position:absolute;top:0;right:0;width:52px;height:100%;display:flex;align-items:center;justify-content:center;border:none;background:none;color:#888;cursor:pointer;padding:0}
.lp-pw-toggle:hover{color:#555}
.lp-pw-toggle svg{width:20px;height:20px;display:block}
.lp-pw-toggle .ic-hide{display:none}
.lp-pw-toggle.is-shown .ic-show{display:none}
.lp-pw-toggle.is-shown .ic-hide{display:block}
.lp-btn{display:flex;align-items:center;justify-content:center;width:100%;max-width:320px;height:52px;margin:30px auto 0;background:#2B7A6F;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:700;cursor:pointer;text-decoration:none;transition:background .15s}
.lp-btn:hover{background:#1A5048}
.lp-btn:disabled{opacity:.55;cursor:not-allowed}
.lp-btn-dark{background:#333333;margin-top:16px}
.lp-btn-dark:hover{background:#1a1a1a}
.lp-login-err{font-size:.8rem;color:#B03030;padding:6px 0 0;text-align:center}
.lp-sub-link{margin:20px 0 0;text-align:center;font-size:.9rem;color:#333}
.lp-sub-link a{color:#2B7A6F;text-decoration:underline}
.lp-ok-msg{display:none;font-size:.82rem;color:#2B7A6F;background:#E8F5F3;border-radius:6px;padding:10px 12px;margin-top:16px;text-align:center}
.lp-divider{border:none;border-top:1px solid #dde1e8;margin:28px 0 0}
.lp-register-lead{margin:32px 0 0;text-align:center;font-size:.9rem;color:#333}
.lp-register-lead + .lp-btn{margin-top:20px}
/* 広告掲載パートナー */
.lp-adpartner{margin-top:72px}
.lp-adpartner-title{font-size:1.1rem;font-weight:700;color:#333;margin:0 0 20px;padding-bottom:16px;border-bottom:2px solid #E2E8F0}
.lp-adpartner-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px 24px}
.lp-adpartner-card{display:block;transition:opacity .15s}
a.lp-adpartner-card:hover{opacity:.75}
.lp-adpartner-card img{display:block;width:100%;aspect-ratio:2/1;object-fit:contain}
/* ログイン画面のフッターのみ濃紺 */
body[data-page=login] .lp-footer{background:#1c2235;border-top:none;color:rgba(255,255,255,.85);padding:24px}
body[data-page=login] .lp-footer a{color:#fff}
@media(max-width:900px){
  .lp-split{flex-direction:column}
  .lp-hero{position:relative;width:100%;height:auto;aspect-ratio:5/3}
  .lp-hero-photo{object-position:center}
  .lp-main{position:relative;margin-top:-16px;border-radius:16px 16px 0 0}
  .lp-main-inner{padding:40px 24px 80px}
  .lp-brand{width:240px;margin-bottom:24px}
  .lp-field label{font-size:.9rem}
  .lp-input{height:56px;font-size:1rem}
  .lp-adpartner{margin-top:44px}
  .lp-adpartner-grid{grid-template-columns:repeat(2,1fr);gap:16px 20px}
  .lp-panel-msg,.lp-login-err,.lp-ok-msg{text-align:left}
}

.ml-auth-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;z-index:9999}
.ml-auth-overlay.hidden{display:none}
.ml-auth-box{background:#fff;border-radius:16px;padding:40px 36px;width:min(420px,92vw);box-shadow:0 20px 60px rgba(0,0,0,.18)}
.ml-auth-box h2{font-size:1.25rem;font-weight:700;color:#1a1a1a;margin-bottom:4px}
.ml-auth-box p{font-size:.8rem;color:#666;margin-bottom:24px}
.ml-auth-tabs{display:flex;gap:4px;background:#F2F4F7;border-radius:8px;padding:4px;margin-bottom:24px}
.ml-auth-tab{flex:1;padding:8px;border:none;background:none;border-radius:6px;font-size:.82rem;cursor:pointer;color:#666;font-weight:600;transition:.15s}
.ml-auth-tab.active{background:#fff;color:#2B7A6F;box-shadow:0 1px 4px rgba(0,0,0,.1)}
.ml-auth-field{margin-bottom:14px}
.ml-auth-field label{display:block;font-size:.76rem;font-weight:600;color:#444;margin-bottom:5px}
.ml-auth-field input{width:100%;padding:10px 12px;border:1.5px solid #dde1e8;border-radius:8px;font-size:.86rem;outline:none;transition:.15s}
.ml-auth-field input:focus{border-color:#2B7A6F;box-shadow:0 0 0 3px rgba(43,122,111,.12)}
.ml-auth-btn{width:100%;padding:12px;background:#2B7A6F;color:#fff;border:none;border-radius:10px;font-size:.9rem;font-weight:700;cursor:pointer;margin-top:8px;transition:.15s}
.ml-auth-btn:hover{background:#1A5048}
.ml-auth-btn:disabled{opacity:.55;cursor:not-allowed}
.ml-auth-err{font-size:.78rem;color:#B03030;background:#FDEAEA;border-radius:6px;padding:8px 12px;margin-top:10px;display:none}
.ml-auth-err.show{display:block}
.api-status-bar{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);background:#2B7A6F;color:#fff;padding:8px 20px;border-radius:20px;font-size:.78rem;font-weight:600;z-index:8000;opacity:0;transition:opacity .3s;pointer-events:none}
.api-status-bar.show{opacity:1}
