:root {
  --ink: #f3f0e8;
  --ink-muted: rgba(243,240,232,.68);
  --line: rgba(243,240,232,.22);
  --night: #08142a;
  --panel: rgba(7,17,34,.92);
  --panel-soft: rgba(7,17,34,.72);
  --max: 1440px;
}
* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; background: var(--night); }
body { font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: var(--ink); }
button, input, textarea { font: inherit; }
button { color: inherit; }
.shell { width: min(calc(100% - 64px), var(--max)); margin-inline: auto; }
.hero { position: relative; min-height: 100svh; overflow: hidden; display: grid; grid-template-rows: auto 1fr auto; isolation: isolate; }
.hero__bg { position: absolute; inset: 0; z-index: -3; background: url('/assets/sogaku-mountains.png') center 58% / cover no-repeat; transform: scale(1.015); }
.hero__veil { position: absolute; inset: 0; z-index: -2; background:
  linear-gradient(180deg, rgba(3,12,28,.08) 0%, rgba(3,12,28,.18) 44%, rgba(3,12,28,.72) 100%),
  linear-gradient(90deg, rgba(3,12,28,.48) 0%, rgba(3,12,28,.14) 46%, rgba(3,12,28,.04) 78%); }
.nav { display: flex; align-items: center; justify-content: space-between; padding-top: 30px; }
.brand { color: inherit; text-decoration: none; display: inline-flex; align-items: center; gap: 16px; }
.brand__mark { width: 58px; height: auto; fill: currentColor; }
.brand__name { display: flex; flex-direction: column; justify-content: center; gap: 5px; line-height: 1; }
.brand__kanji { font-family: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif; font-size: 15px; font-weight: 500; letter-spacing: .32em; white-space: nowrap; }
.brand__latin { font-family: Georgia, "Times New Roman", serif; font-size: 7px; font-weight: 600; letter-spacing: .38em; opacity: .72; white-space: nowrap; }
.nav__right { display: flex; align-items: center; gap: 32px; }
.text-button, .lang button, .icon-button { border: 0; background: none; padding: 0; cursor: pointer; }
.text-button { font-size: 12px; text-transform: uppercase; letter-spacing: .2em; }
.lang { display: flex; gap: 7px; align-items: center; font-size: 11px; letter-spacing: .16em; color: var(--ink-muted); }
.lang button { opacity: .52; }
.lang button.is-active { opacity: 1; }
.hero__content { align-self: center; padding-top: 5vh; padding-bottom: 7vh; }
.eyebrow { margin: 0 0 18px; color: var(--ink-muted); text-transform: uppercase; letter-spacing: .26em; font-size: 10px; }
h1 { margin: 0; font-weight: 400; }
.hero__headline { display: block; max-width: 780px; text-shadow: 0 2px 28px rgba(0,0,0,.24); }
html[data-lang="ja"] .hero__headline { font-family: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif; font-size: clamp(34px, 4.2vw, 66px); letter-spacing: .075em; line-height: 1.62; }
html[data-lang="en"] .hero__headline { font-family: Georgia, "Times New Roman", serif; font-size: clamp(34px, 4.1vw, 64px); line-height: 1.28; letter-spacing: .075em; text-transform: uppercase; }
.footer { display: flex; align-items: center; gap: 11px; padding-bottom: 24px; color: rgba(243,240,232,.55); font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 10px; line-height: 1.2; letter-spacing: .12em; text-transform: uppercase; }
.footer > span { white-space: nowrap; }
.footer > span:first-child { font-family: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif; font-size: 10px; line-height: 1.2; letter-spacing: .12em; }
.footer__spacer { flex: 1; }
.footer__divider { opacity: .4; }
.contact { width: min(100% - 40px, 610px); max-height: calc(100svh - 40px); border: 1px solid var(--line); border-radius: 0; background: var(--panel); color: var(--ink); padding: 0; backdrop-filter: blur(26px); box-shadow: 0 30px 90px rgba(0,0,0,.4); }
.contact::backdrop { background: rgba(1,7,18,.58); backdrop-filter: blur(8px); }
.contact__panel { padding: 34px; }
.contact__header { display: flex; justify-content: space-between; gap: 30px; align-items: flex-start; margin-bottom: 34px; }
.contact h2 { margin: 0; font-family: Georgia, "Times New Roman", serif; font-size: 38px; font-weight: 400; }
.icon-button { font-size: 32px; line-height: 1; opacity: .72; }
.contact label { display: block; margin-top: 22px; }
.contact label > span { display: block; margin-bottom: 9px; font-size: 10px; letter-spacing: .18em; text-transform: uppercase; color: var(--ink-muted); }
.contact input, .contact textarea { width: 100%; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; padding: 10px 0 12px; background: transparent; color: var(--ink); outline: none; resize: vertical; }
.contact input:focus, .contact textarea:focus { border-bottom-color: rgba(243,240,232,.72); }
.contact textarea { min-height: 116px; }
.hp { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; opacity: 0 !important; }
.contact__actions { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-top: 30px; }
.form-status { margin: 0; min-height: 1.2em; font-size: 11px; color: var(--ink-muted); }
.submit { border: 1px solid rgba(243,240,232,.46); background: transparent; color: var(--ink); padding: 12px 22px; cursor: pointer; text-transform: uppercase; letter-spacing: .18em; font-size: 10px; }
.submit:hover { background: rgba(243,240,232,.08); }
.submit:disabled { opacity: .4; cursor: wait; }
@media (max-width: 700px) {
  .shell { width: min(calc(100% - 34px), var(--max)); }
  .nav { padding-top: 20px; }
  .brand__mark { width: 48px; }
  .brand { gap: 12px; }
  .brand__kanji { font-size: 13px; }
  .brand__latin { font-size: 6px; }
  .nav__right { gap: 20px; }
  .hero__content { padding-bottom: 12vh; }
  html[data-lang="ja"] .hero__headline { font-size: clamp(30px, 9vw, 44px); line-height: 1.58; }
  html[data-lang="en"] .hero__headline { font-size: clamp(29px, 8vw, 42px); line-height: 1.32; }
  .footer { flex-wrap: wrap; padding-bottom: 16px; }
  .footer__spacer { display: none; }
  .footer span:last-child { width: 100%; margin-top: 2px; }
  .contact__panel { padding: 26px 22px; }
}
@media (prefers-reduced-motion: no-preference) {
  .hero__content { animation: rise .9s cubic-bezier(.22,.8,.26,1) both; }
  @keyframes rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
}
