/* ===================================
   Base Reset
=================================== */
*,
*::before,
*::after{
  box-sizing:border-box;
}

html{
  -webkit-text-size-adjust:100%;
}

body{
  margin:0;
  font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic","Yu Gothic UI",Meiryo,sans-serif;
  font-size:16px;
  line-height:1.85;
  color:#1f2937;
  background:#f4f7fb;
  word-break:break-word;
  overflow-wrap:anywhere;
}

img{
  max-width:100%;
  height:auto;
  border:0;
  vertical-align:bottom;
}

a{
  color:#1459c7;
  text-decoration:none;
}
a:hover{
  text-decoration:underline;
}

/* ===================================
   Layout
=================================== */
.wrap{
  width:min(100%, 1040px);
  margin:0 auto;
  padding:0 16px;
}

.main{
  padding:18px 0 42px;
}

.content-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) 300px;
  gap:22px;
}

.maincol,
.sidecol{
  min-width:0;
}

/* ===================================
   Header
=================================== */
.site-header{
  background:linear-gradient(180deg,#11315b 0%,#163d72 100%);
  color:#fff;
}

.site-header-inner{
  padding:18px 0;
}

.site-title{
  margin:0;
  font-size:1.7rem;
}

.site-title a{
  color:#fff;
}

.site-desc{
  font-size:.95rem;
  opacity:.9;
}

/* ===================================
   Navigation
=================================== */
.gnav{
  background:#0d2a4d;
}

.gnav-list{
  display:flex;
  flex-wrap:wrap;
  list-style:none;
  margin:0;
  padding:0;
}

.gnav-list a{
  display:block;
  padding:12px 14px;
  color:#fff;
}

.gnav-list a:hover{
  background:rgba(255,255,255,.1);
}

/* ===================================
   Breadcrumb
=================================== */
.breadcrumb{
  font-size:.9rem;
  margin-bottom:14px;
}

.breadcrumb ol{
  list-style:none;
  display:flex;
  gap:6px;
  padding:0;
}

.breadcrumb li+li::before{
  content:">";
  margin-right:6px;
}

/* ===================================
   Box
=================================== */
.box{
  background:#fff;
  border:1px solid #dde5ef;
  border-radius:12px;
  padding:20px;
  margin-bottom:18px;
}

.box h1{
  font-size:1.8rem;
  margin-bottom:12px;
}

.box h2{
  font-size:1.3rem;
  border-bottom:2px solid #e8eef6;
  padding-bottom:6px;
  margin-bottom:12px;
}

.box h3{
  font-size:1.05rem;
  margin-top:1em;
}

/* ===================================
   Cards
=================================== */
.cards{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:16px;
}

.card{
  border:1px solid #e1e8f0;
  border-radius:10px;
  padding:14px;
  background:#fbfdff;
}

/* ===================================
   Table
=================================== */
table{
  width:100%;
  border-collapse:collapse;
}

th,td{
  border:1px solid #d8e0ea;
  padding:10px;
}

th{
  background:#edf4fb;
}

/* ===================================
   Lists
=================================== */
.checklist{
  padding-left:1.2em;
}

.step-list{
  counter-reset:step;
  list-style:none;
  padding:0;
}

.step-list li{
  padding-left:50px;
  margin-bottom:16px;
  position:relative;
}

.step-list li::before{
  counter-increment:step;
  content:counter(step);
  position:absolute;
  left:0;
  top:0;
  width:34px;
  height:34px;
  line-height:34px;
  text-align:center;
  border-radius:50%;
  background:#1459c7;
  color:#fff;
}

/* ===================================
   Sidebar
=================================== */
.sidebox{
  background:#fff;
  border:1px solid #dde5ef;
  border-radius:12px;
  padding:16px;
  margin-bottom:18px;
}

.sidebox h2{
  font-size:1.05rem;
  margin-bottom:10px;
}

/* ===================================
   Ranking
=================================== */
.rank-list{
  list-style:none;
  padding:0;
}

.rank-list li{
  border-top:1px solid #eee;
}

.rank-list a{
  display:block;
  padding:10px 0;
}

.badge{
  background:#1459c7;
  color:#fff;
  border-radius:999px;
  padding:2px 8px;
  margin-right:6px;
  font-size:.8rem;
}

/* ===================================
   Footer
=================================== */
.site-footer{
  background:#10263f;
  color:#fff;
  margin-top:30px;
}

.site-footer-inner{
  padding:24px;
}

.footer-links{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  list-style:none;
  padding:0;
}

.footer-links a{
  color:#fff;
}

/* ===================================
   Utility
=================================== */
.note{
  font-size:.9rem;
  color:#666;
}

.caution{
  background:#fff8e8;
  border:1px solid #efd28d;
  padding:12px;
  border-radius:8px;
}

/* ===================================
   Responsive
=================================== */
@media(max-width:900px){
  .content-grid{
    grid-template-columns:1fr;
  }
  .cards{
    grid-template-columns:repeat(2,1fr);
  }
}

@media(max-width:640px){
  body{
    font-size:15px;
  }

  .cards{
    grid-template-columns:1fr;
  }

  .gnav-list{
    display:grid;
    grid-template-columns:repeat(2,1fr);
  }

  .box h1{
    font-size:1.5rem;
  }

  .box h2{
    font-size:1.15rem;
  }
}


/* ===================================
   contact
=================================== */
.form-table{
  width:100%;
  border-collapse:collapse;
  margin:0;
}
.form-table th,
.form-table td{
  border:1px solid #d8e0ea;
  padding:14px 12px;
  vertical-align:top;
}
.form-table th{
  width:220px;
  background:#edf4fb;
  text-align:left;
}
.form-input,
.form-textarea{
  width:100%;
  max-width:100%;
  padding:12px 14px;
  border:1px solid #cfd8e3;
  border-radius:8px;
  font:inherit;
  color:#1f2937;
  background:#fff;
}
.form-input:focus,
.form-textarea:focus{
  outline:none;
  border-color:#1459c7;
  box-shadow:0 0 0 3px rgba(20,89,199,.12);
}
.form-textarea{
  min-height:180px;
  resize:vertical;
}
.required{
  display:inline-block;
  margin-left:8px;
  padding:2px 8px;
  border-radius:999px;
  background:#d93025;
  color:#fff;
  font-size:.78rem;
  line-height:1.4;
}
.any{
  display:inline-block;
  margin-left:8px;
  padding:2px 8px;
  border-radius:999px;
  background:#6b7280;
  color:#fff;
  font-size:.78rem;
  line-height:1.4;
}
.form-actions{
  margin-top:18px;
}
.btn-submit{
  display:inline-block;
  border:0;
  border-radius:10px;
  padding:14px 26px;
  background:#1459c7;
  color:#fff;
  font:inherit;
  font-weight:700;
  cursor:pointer;
}
.btn-submit:hover{
  opacity:.92;
}
.form-note{
  font-size:.93rem;
  color:#556579;
}
@media (max-width:640px){
  .form-table,
  .form-table tbody,
  .form-table tr,
  .form-table th,
  .form-table td{
    display:block;
    width:100%;
  }
  .form-table th{
    border-bottom:0;
    width:auto;
  }
}