:root {
  --red: #e60012;
  --red-dark: #b6000e;
  --black: #231815;
  --white: #ffffff;
  --warm: #faf8f5;
  --border: #e8e3de;
  --muted: #6d6864;
  --ink-soft: #4e4744;
  --max: 1200px;
  --radius: 18px;
  --shadow: 0 12px 36px rgba(35, 24, 21, .06);
  --font-latin: "Poppins", sans-serif;
  --font-ja: "Hiragino Kaku Gothic ProN", "Yu Gothic", "YuGothic", "Meiryo", system-ui, sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
html { overflow-x: clip; }
body { margin: 0; color: var(--black); background: var(--white); font-family: var(--font-ja); font-size: 17px; line-height: 1.8; overflow-wrap: anywhere; }
body.menu-open { overflow: hidden; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
button, input, textarea, select { font: inherit; }
button { cursor: pointer; }
:focus-visible { outline: 3px solid rgba(230, 0, 18, .45); outline-offset: 3px; }
.container { width: min(calc(100% - 40px), var(--max)); margin-inline: auto; }
.narrow { width: min(100%, 820px); margin-inline: auto; }
.prose { width: min(100%, 820px); }
.section { padding: 96px 0; }
.section-warm { background: var(--warm); }
.center { text-align: center; }
.muted { color: var(--muted); }
.lead { color: var(--ink-soft); font-size: 1.08em; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
h1, h2, h3 { margin-top: 0; line-height: 1.35; letter-spacing: -.02em; }
h1 { font-size: clamp(2.4rem, 6vw, 4.4rem); }
h2 { font-size: clamp(1.8rem, 3.4vw, 2.9rem); }
h3 { font-size: clamp(1.2rem, 2vw, 1.55rem); }
.eyebrow { color: var(--red); font-family: var(--font-latin); font-size: .82rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.skip-link { position: fixed; left: 12px; top: -60px; z-index: 1000; background: var(--black); color: var(--white); padding: 10px 14px; }
.skip-link:focus { top: 12px; }
@media (max-width: 767px) {
  body { font-size: 16px; }
  .container { width: min(calc(100% - 28px), var(--max)); }
  .section { padding: 64px 0; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
@media print {
  .site-header, .site-footer, .contact-cta, .slider-controls { display: none !important; }
  body { color: #000; font-size: 12pt; }
  .section { padding: 24px 0; }
}
