.law-sec { padding:72px 56px 100px; }
.law-in  { max-width:760px; margin:0 auto; }
.law-note { font-size:.76rem; color:var(--text3); line-height:2; margin-bottom:48px; padding:14px 18px; border-left:2px solid rgba(255,255,255,.15); background:rgba(255,255,255,.03); }
.law-table { width:100%; border-collapse:collapse; border:1px solid var(--border); }
.law-table tr { border-bottom:1px solid var(--border); }
.law-table tr:last-child { border-bottom:none; }
.law-table th { width:200px; padding:20px 24px; font-size:.76rem; font-weight:500; color:var(--text3); text-align:left; vertical-align:top; background:var(--bg1); white-space:nowrap; }
.law-table td { padding:20px 24px; font-size:.8rem; color:var(--text2); line-height:2; vertical-align:top; }
.law-table td a { color:var(--accent); text-decoration:none; }
.law-table td a:hover { text-decoration:underline; }
.law-table td .sub { font-size:.72rem; color:var(--text3); margin-top:4px; display:block; }
@media(max-width:768px) {
  .law-sec { padding:48px 20px 72px; }
  .law-table th { width:120px; padding:16px 14px; font-size:.72rem; white-space:normal; }
  .law-table td { padding:16px 14px; font-size:.76rem; }
}

.policy-sec { padding:72px 56px 100px; }
.policy-in  { max-width:760px; margin:0 auto; }
.policy-updated { font-size:.7rem; color:var(--text3); margin-bottom:40px; letter-spacing:.08em; }
.policy-block { margin-bottom:52px; }
.policy-h2 {
  font-family:var(--jp); font-size:1rem; font-weight:700;
  color:var(--text); margin-bottom:16px; padding-bottom:10px;
  border-bottom:1px solid var(--border);
  display:flex; align-items:center; gap:10px;
}
.policy-h2::before { content:''; width:16px; height:1px; background:var(--accent); }
.policy-p { font-size:.8rem; color:var(--text2); line-height:2.2; margin-bottom:12px; }
.policy-p:last-child { margin-bottom:0; }
.policy-p a { color:var(--accent); text-decoration:none; }
.policy-p a:hover { text-decoration:underline; }
.policy-ul { list-style:none; display:flex; flex-direction:column; gap:6px; margin:8px 0 12px; }
.policy-ul li { font-size:.8rem; color:var(--text2); line-height:2; padding-left:18px; position:relative; }
.policy-ul li::before { content:''; position:absolute; left:0; top:.95em; width:8px; height:1px; background:var(--accent); opacity:.5; }
.policy-table { width:100%; border-collapse:collapse; border:1px solid var(--border); margin:16px 0; }
.policy-table tr { border-bottom:1px solid var(--border); }
.policy-table tr:last-child { border-bottom:none; }
.policy-table th { padding:14px 18px; font-size:.73rem; font-weight:500; color:var(--text3); text-align:left; background:var(--bg1); white-space:nowrap; vertical-align:top; }
.policy-table td { padding:14px 18px; font-size:.78rem; color:var(--text2); line-height:1.9; vertical-align:top; }
.policy-table td a { color:var(--accent); text-decoration:none; }
.policy-table td a:hover { text-decoration:underline; }
@media(max-width:768px) {
  .policy-sec { padding:48px 20px 72px; }
  .policy-table th { white-space:normal; min-width:80px; }
}

.faq-page-sec { padding:72px 56px 100px; }
.faq-page-in  { max-width:860px; margin:0 auto; }
.faq-cat { margin-bottom:56px; }
.faq-cat-title {
  font-family:var(--jp); font-size:.82rem; font-weight:600; color:var(--text3);
  letter-spacing:.1em; margin-bottom:16px;
  display:flex; align-items:center; gap:12px;
}
.faq-cat-title::after { content:''; flex:1; height:1px; background:var(--border); }
.faq-list-page { display:flex; flex-direction:column; gap:1px; background:var(--border); border:1px solid var(--border); }
.faq-item-page { background:var(--bg); }
.faq-q-page {
  width:100%; display:flex; align-items:center; justify-content:space-between;
  gap:16px; padding:20px 24px; background:none; border:none;
  color:var(--text); cursor:pointer; text-align:left;
}
.faq-q-text-page { font-family:var(--jp); font-size:.86rem; font-weight:600; line-height:1.5; }
.faq-icon-page {
  width:20px; height:20px; border:1px solid var(--border2);
  border-radius:50%; display:flex; align-items:center; justify-content:center;
  flex-shrink:0; position:relative; transition:transform .3s, background .3s;
}
.faq-icon-page::before, .faq-icon-page::after { content:''; position:absolute; background:var(--text3); transition:opacity .3s; }
.faq-icon-page::before { width:8px; height:1px; }
.faq-icon-page::after  { width:1px; height:8px; transition:transform .3s, opacity .3s; }
.faq-item-page.open .faq-icon-page::after { transform:rotate(90deg); opacity:0; }
.faq-item-page.open .faq-icon-page { background:rgba(77,158,247,.1); border-color:var(--accent); }
.faq-a-page { display:none; padding:0 24px 20px; font-size:.8rem; color:var(--text2); line-height:2.1; }
.faq-item-page.open .faq-a-page { display:block; }
.faq-a-page a { color:var(--accent); text-decoration:none; }
.faq-a-page a:hover { text-decoration:underline; }
.faq-cta-box {
  margin-top:48px; padding:32px 36px;
  border:1px solid var(--border); background:var(--bg1);
  display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap;
}
.faq-cta-box p { font-size:.82rem; color:var(--text2); line-height:2; }
@media(max-width:768px) {
  .faq-page-sec { padding:48px 20px 72px; }
  .faq-cta-box { flex-direction:column; align-items:flex-start; }
}

.contact-sec { padding:72px 56px 100px; }
.contact-in { max-width:1160px; margin:0 auto; display:grid; grid-template-columns:1fr 2fr; gap:80px; align-items:start; }
.contact-info-kicker { display:flex; align-items:center; gap:12px; margin-bottom:20px; }
.contact-info-h2 { font-family:var(--jp); font-size:1.1rem; font-weight:700; color:var(--text); margin-bottom:20px; }
.contact-info-p { font-size:.8rem; color:var(--text2); line-height:2.1; margin-bottom:32px; }
.contact-notes { display:flex; flex-direction:column; gap:1px; background:var(--border); border:1px solid var(--border); }
.contact-note-item { background:var(--bg1); padding:16px 20px; display:flex; align-items:baseline; gap:12px; }
.contact-note-item::before { content:''; width:14px; height:1px; background:var(--accent); opacity:.5; flex-shrink:0; margin-top:10px; }
.contact-note-text { font-size:.75rem; color:var(--text2); line-height:1.8; }
.contact-note-text strong { display:block; font-size:.72rem; color:var(--text); font-weight:600; margin-bottom:2px; }
.contact-dm { margin-top:24px; }
.contact-dm-label { font-size:.62rem; letter-spacing:.18em; text-transform:uppercase; color:var(--text3); margin-bottom:12px; display:block; }
.btn-x { display:inline-flex; align-items:center; gap:10px; padding:11px 24px; border:1px solid var(--border2); color:var(--text2); font-size:.73rem; letter-spacing:.1em; text-decoration:none; transition:all .3s; }
.btn-x:hover { border-color:var(--accent); color:var(--text); background:rgba(77,158,247,.06); }
.btn-x svg { width:14px; height:14px; fill:currentColor; flex-shrink:0; }
.form-notice { font-size:.75rem; color:var(--text3); line-height:2; margin-bottom:28px; padding:14px 18px; border-left:2px solid rgba(77,158,247,.4); background:rgba(77,158,247,.04); }
.form-notice a { color:var(--accent); text-decoration:none; }
.form-notice a:hover { text-decoration:underline; }
.gform-wrap { position:relative; width:100%; background:var(--bg1); border:1px solid var(--border); }
.gform-wrap iframe { width:100%; min-height:1410px; border:none; display:block; }
@media(max-width:960px) { .contact-in { grid-template-columns:1fr; gap:48px; } }
@media(max-width:768px) { .contact-sec { padding:48px 20px 72px; } }
