:root {
  --color-navy-900: #0a1d3f;
  --color-navy-800: #0f2a5c;
  --color-blue-600: #1e5fd9;
  --color-ink: #1a2233;
  --color-white: #ffffff;
  --color-border: #e3e8f2;
  --font-jp: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif;
  --max-width: 1160px;
  --header-height: 76px;
}

.pf-header, .pf-footer { font-family: var(--font-jp); }
.pf-header a:not(.btn), .pf-footer a:not(.btn) { color: inherit; text-decoration: none; }
.pf-header ul, .pf-footer ul { list-style: none; margin: 0; padding: 0; }
.pf-header button { font-family: inherit; border: none; background: none; cursor: pointer; }

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 15px 36px; border-radius: 0; font-weight: 700; font-size: 0.95rem;
  letter-spacing: 0.03em; transition: transform 0.25s ease, box-shadow 0.25s ease, background 0.25s ease, color 0.25s ease;
  white-space: nowrap;
}
.btn-primary { background: var(--color-blue-600); color: var(--color-white); box-shadow: 0 8px 20px rgba(30, 95, 217, 0.3); }
.btn-primary:hover { background: var(--color-navy-800); transform: translateY(-2px); }

/* ヘッダー */
.pf-header { position: fixed; top: 0; left: 0; width: 100%; height: var(--header-height);
  background: rgba(255, 255, 255, 0.92); backdrop-filter: blur(10px); z-index: 1000;
  border-bottom: 1px solid var(--color-border); }
.pf-header-inner { max-width: 1320px; margin: 0 auto; height: 100%; padding: 0 24px;
  display: flex; align-items: center; justify-content: space-between; }
.pf-logo { display: flex; align-items: center; flex-shrink: 0; }
.pf-logo-img { height: 34px; width: auto; }
.pf-nav { display: flex; align-items: center; gap: 28px; }
.pf-nav ul { display: flex; gap: 22px; }
.pf-nav-link { font-size: 0.92rem; font-weight: 500; color: var(--color-ink); position: relative; padding: 4px 0; }
.pf-nav-link::after { content: ""; position: absolute; left: 0; bottom: -2px; width: 0; height: 2px;
  background: var(--color-blue-600); transition: width 0.25s ease; }
.pf-nav-link:hover::after { width: 100%; }
.pf-nav-cta { padding: 11px 26px; font-size: 0.88rem; }
.pf-hamburger { display: none; flex-direction: column; justify-content: center; gap: 5px; width: 40px; height: 40px; }
.pf-hamburger span { display: block; width: 24px; height: 2px; background: var(--color-ink);
  transition: transform 0.3s ease, opacity 0.3s ease; margin: 0 auto; }
.pf-hamburger.is-active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.pf-hamburger.is-active span:nth-child(2) { opacity: 0; }
.pf-hamburger.is-active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* フッター */
.pf-footer { background: var(--color-navy-900); color: rgba(255, 255, 255, 0.7); padding: 56px 24px 32px; }
.pf-footer-inner { max-width: var(--max-width); margin: 0 auto; text-align: center; }
.pf-footer-logo { color: var(--color-white); font-size: 1.05rem; font-weight: 700; }
.pf-footer-address { margin-top: 8px; font-size: 0.85rem; color: rgba(255, 255, 255, 0.55); }
.pf-footer-links { margin-top: 28px; display: flex; justify-content: center; gap: 28px; flex-wrap: wrap; }
.pf-footer-links a { font-size: 0.82rem; color: rgba(255, 255, 255, 0.65); }
.pf-footer-links a:hover { color: var(--color-white); }
.pf-footer-copyright { margin-top: 32px; font-size: 0.75rem; color: rgba(255, 255, 255, 0.4); letter-spacing: 0.03em; }

@media (max-width: 767px) {
  :root { --header-height: 64px; }
  .pf-header-inner { padding: 0 16px; }
  .pf-logo-img { height: 28px; }
  .pf-hamburger { display: flex; }
  .pf-nav { position: fixed; top: var(--header-height); left: 0; width: 100%;
    height: calc(100vh - var(--header-height)); background: var(--color-white);
    flex-direction: column; align-items: flex-start; justify-content: flex-start;
    padding: 36px 28px; gap: 36px; transform: translateX(100%); transition: transform 0.3s ease; overflow-y: auto; }
  .pf-nav.is-open { transform: translateX(0); }
  .pf-nav ul { flex-direction: column; gap: 26px; width: 100%; }
  .pf-nav-link { font-size: 1.05rem; display: block; }
  .pf-nav-cta { width: 100%; text-align: center; }
  .pf-footer-links { gap: 16px 24px; }
}