  :root {
    --blue: #1E4FA3;
    --navy: #12315F;
    --ink: #2A3346;
    --pale: #EEF3FB;
    --orange: #F5A623;
    --maxw: 1080px;
  }
  * { margin:0; padding:0; box-sizing:border-box; }
  body {
    font-family: "Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic Medium","Yu Gothic",sans-serif;
    color: var(--ink); background:#fff; line-height:1.9; font-size:16px;
    display:flex; flex-direction:column; min-height:100vh;
  }
  img { max-width:100%; display:block; }
  .wrap { max-width:var(--maxw); margin:0 auto; padding:0 24px; width:100%; }

  header {
    position:sticky; top:0; z-index:50; background:rgba(255,255,255,.94);
    backdrop-filter:blur(6px); border-bottom:1px solid #E3E9F4;
  }
  .nav { display:flex; align-items:center; justify-content:space-between; height:68px; }
  .nav img { height:34px; }
  .nav a.top { display:block; }
  .navbtns { display:flex; align-items:center; gap:12px; }
  .login {
    color:var(--blue); border:1.5px solid var(--blue); border-radius:999px;
    padding:5px 16px; font-weight:700; text-decoration:none; font-size:12.5px; white-space:nowrap;
    transition:background .15s,color .15s;
  }
  .login:hover { background:var(--blue); color:#fff; }
  .contact {
    background:var(--orange); color:#fff; border:1.5px solid var(--orange); border-radius:999px;
    padding:5px 16px; font-weight:700; text-decoration:none; font-size:12.5px; white-space:nowrap;
    transition:opacity .15s;
  }
  .contact:hover { opacity:.85; }

  main {
    flex:1; position:relative; overflow:hidden;
  }
  main::after {
    content:""; position:absolute; left:0; right:0; bottom:0; height:200px;
    background:url('../img/grid.svg') bottom/cover no-repeat; pointer-events:none;
  }
  .cols {
    position:relative; z-index:1; display:grid; grid-template-columns:1.05fr .95fr;
    gap:56px; align-items:center; padding-top:36px; padding-bottom:96px;
  }
  .promo h1 {
    font-size:30px; font-weight:900; color:var(--navy); line-height:1.55; letter-spacing:.02em;
    margin-bottom:18px;
  }
  .promo h1 .or { color:var(--orange); }
  .promo p { margin-bottom:22px; }
  .promo img { width:78%; margin-top:6px; }
  .promo .links { display:flex; gap:14px; flex-wrap:wrap; }
  .promo .links a {
    display:inline-block; font-size:14px; font-weight:700; color:var(--blue);
    border:2px solid var(--blue); border-radius:999px; padding:9px 22px; text-decoration:none;
    transition:background .15s,color .15s;
  }
  .promo .links a:hover { background:var(--blue); color:#fff; }

  .loginbox {
    background:#fff; border:1px solid #DDE6F5; border-radius:20px;
    box-shadow:0 10px 34px rgba(18,49,95,.10);
    padding:42px 40px 44px; max-width:420px; justify-self:center; width:100%;
  }
  .loginbox h2 {
    font-size:22px; font-weight:900; color:var(--navy); text-align:center; margin-bottom:26px;
  }
  .field { margin-bottom:18px; }
  .field label {
    display:block; font-size:13px; font-weight:700; color:var(--navy); margin-bottom:6px;
  }
  .field input {
    width:100%; border:2px solid #D5DFF0; border-radius:10px; padding:12px 14px;
    font-size:16px; font-family:inherit; transition:border-color .15s;
  }
  .field input:focus { outline:none; border-color:var(--blue); }
  .loginbtn {
    width:100%; margin-top:8px; background:var(--orange); color:#fff; font-weight:900;
    font-size:17px; letter-spacing:.08em; border:none; border-radius:999px; padding:15px 0;
    cursor:pointer; box-shadow:0 5px 0 rgba(200,130,10,.35);
    transition:transform .15s, box-shadow .15s; font-family:inherit;
  }
  .loginbtn:hover { transform:translateY(2px); box-shadow:0 3px 0 rgba(200,130,10,.35); }
  .loginerr {
    display:none; margin-top:16px; background:#FDECEC; color:#B33A3A; border-radius:10px;
    padding:10px 14px; font-size:13.5px; line-height:1.7;
  }
  .loginhelp { margin-top:18px; font-size:13px; text-align:center; }
  .loginhelp a { color:var(--blue); }

  footer { background:var(--pale); color:#4A5A75; font-size:13px; padding:52px 0 30px; border-top:1px solid #DDE6F5; }
  .fgrid { display:grid; grid-template-columns:1.3fr 1fr 1fr 1fr 1fr 1fr; gap:28px; }
  .fbrand img { height:32px; width:auto; margin-bottom:14px; }
  .fbrand p { line-height:1.9; color:#4A5A75; }
  .fcol h4 { font-size:13px; font-weight:900; color:var(--navy); margin-bottom:12px; letter-spacing:.04em; }
  .fcol ul { list-style:none; }
  .fcol li { margin-bottom:8px; line-height:1.6; }
  .fcol a { color:#4A5A75; text-decoration:none; }
  .fcol a:hover { color:var(--blue); text-decoration:underline; }
  .fsns { display:flex; align-items:center; gap:14px; }
  .fsns img { height:22px; width:auto; display:block; }
  .fsns a { font-weight:700; color:var(--blue); text-decoration:none; }
  .fsns a:hover { text-decoration:underline; }
  .copyright { margin-top:38px; border-top:1px solid #DDE6F5; padding-top:16px; color:#7A8CA8; text-align:center; }

  @media (max-width: 860px) {
    .navbtns { gap:8px; }
    .navbtns a { padding:4px 10px; font-size:11px; }
    .cols { grid-template-columns:1fr; }
    .promo img { width:100%; }
    .fgrid { grid-template-columns:1fr 1fr; }
  }
