/* Shared public footer. Page styles must not redefine its typography or layout. */
:root body .public-footer {
  --footer-unit: max(.0625rem, .0694444444vw);
  position: relative; z-index: 0; box-sizing: border-box; display: flex; flex-direction: column;
  width: 100%; min-height: calc(470 * var(--footer-unit)); margin: 0;
  padding: calc(48 * var(--footer-unit)) 6vw calc(32 * var(--footer-unit));
  background: #121212; color: #f5f5f5;
  font-family: "Hiragino Sans", "Hiragino Kaku Gothic ProN", sans-serif; font-size: 18px; line-height: 1.7;
}
:root body.footer-reveal .public-footer { position: sticky; bottom: 0; }
:root body .public-footer .footer-main {
  display: grid; width: 100%; max-width: none; margin: 0;
  grid-template-columns: 1.8fr 1fr 1fr; gap: calc(56 * var(--footer-unit));
}
:root body .public-footer .footer-main > div { grid-column: auto; }
:root body .public-footer .brand {
  display: inline-flex; align-items: center; gap: 11px; color: inherit; text-decoration: none;
  font-size: calc(32 * var(--footer-unit)); font-weight: 700; line-height: 1.2; letter-spacing: -.8px;
}
:root body .public-footer .brand img { display: block; width: 25px; height: 35px; object-fit: contain; filter: invert(1); }
:root body .public-footer .footer-main p { margin: 14px 0 0; color: #929292; font-size: calc(17 * var(--footer-unit)); line-height: 1.7; }
:root body .public-footer .footer-main nav { display: flex; flex-direction: column; gap: calc(10 * var(--footer-unit)); }
:root body .public-footer .footer-main nav a {
  display: block; width: fit-content; color: #dcdcdc; text-decoration: none;
  font-size: calc(17 * var(--footer-unit)); font-weight: 700; line-height: 1.55; overflow-wrap: anywhere;
}
:root body .public-footer a:hover { color: #fff; }
:root body .public-footer a:focus-visible { outline: 2px solid #fff; outline-offset: 5px; border-radius: 2px; }
:root body .public-footer .footer-bottom {
  display: flex; justify-content: space-between; width: 100%; max-width: none;
  margin: calc(80 * var(--footer-unit)) 0 0; color: #888; font-size: calc(15 * var(--footer-unit));
}
@media(max-width:900px) {
  :root body .public-footer, :root body.footer-reveal .public-footer { position: relative; min-height: 0; padding: 40px 24px 28px; }
  :root body .public-footer .footer-main { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 32px 18px; }
  :root body .public-footer .footer-main > div { grid-column: 1 / -1; }
  :root body .public-footer .footer-main p { font-size: 15px; }
  :root body .public-footer .footer-main nav { gap: 18px; }
  :root body .public-footer .footer-main nav a { font-size: 16px; }
  :root body .public-footer .footer-bottom { font-size: 13px; margin-top: 48px; gap: 16px; flex-wrap: wrap; }
}
@media(max-height:600px) { :root body.footer-reveal .public-footer { position: relative; } }
