/* Shared campus/diary handheld layout; desktop page designs remain intact. */
body .site-drawer { visibility: hidden; }
body.site-drawer-open .site-drawer { visibility: visible; }
@media (max-width: 900px) {
  html { scroll-padding-top: calc(76px + env(safe-area-inset-top)); }
  body { font-size: 16px; overflow-x: clip; padding-bottom: calc(84px + env(safe-area-inset-bottom)); }
  .container, .container-narrow { padding-inline: max(20px, env(safe-area-inset-left)); min-width: 0; }
  body .site-header { padding-top: calc(8px + env(safe-area-inset-top)); }
  body .site-header-inner { gap: 12px; }
  body .site-logo { min-width: 0; }
  body .site-logo img { max-width: 100%; height: 36px; }
  body .site-burger, body .site-drawer-close { width: 44px; height: 44px; flex-shrink: 0; }
  body .site-drawer { max-width: calc(100vw - 24px); overscroll-behavior: contain; padding-bottom: env(safe-area-inset-bottom); }
  body .site-drawer-head { padding-top: calc(16px + env(safe-area-inset-top)); }
  body .site-drawer-nav a { min-height: 48px; display: flex; align-items: center; font-size: 15px; }
  .page-title-band { padding: 48px 20px 40px; }
  .page-title-jp { font-size: clamp(23px, 6vw, 28px); line-height: 1.6; letter-spacing: .08em; overflow-wrap: anywhere; }
  .page-title-en { max-width: 100%; overflow-wrap: anywhere; letter-spacing: .15em; }
  main p { overflow-wrap: anywhere; }
  main table { display: block; max-width: 100%; overflow-x: auto; overscroll-behavior-x: contain; }
  main input:not([type=radio]):not([type=checkbox]):not([type=hidden]), main select, main textarea { box-sizing: border-box; max-width: 100%; min-width: 0; font-size: 16px; min-height: 44px; }
  main textarea { min-height: 160px; }
  main button, main .btn, main .desk-cta { min-height: 44px; }
  .desk-grid { grid-template-columns: minmax(0, 1fr); }
  .desk-card { min-width: 0; padding: 24px 20px; }
  body .admission-letter { width: calc(100% - 32px); padding: 32px 24px; margin: 32px auto 56px; overflow: clip; }
  body .admission-letter::before { font-size: 72px; letter-spacing: .2em; }
  body .letter-h1 { font-size: 24px; letter-spacing: .15em; }
  body .letter-no { letter-spacing: .12em; overflow-wrap: anywhere; }
  body .letter-body { font-size: 16px; line-height: 2; }
  .hero { min-height: 0; padding: 48px 20px 56px; }
  .hero-crest { width: min(240px, 72vw); margin: 24px auto 28px; }
  .hero-tagline-jp { letter-spacing: .12em; font-size: 18px; }
  .hero-tagline-en { font-size: 13px; letter-spacing: .12em; line-height: 1.9; }
  .hero-cta { margin-top: 28px; }
  body .site-footer { padding-block: 48px 24px; }
  .site-footer-grid { gap: 32px; }
  body .site-footer .footer-cols { gap: 24px 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body .footer-cols a { min-height: 44px; display: flex; align-items: center; font-size: 14px; }
  body .footer-cols li { margin-bottom: 2px; }
  body .footer-copy { overflow-wrap: anywhere; letter-spacing: .08em; line-height: 1.9; }
  body .quicknav { left: 0; right: 0; top: auto; bottom: 0; transform: none; flex-direction: row; gap: 10px; padding: 8px 12px calc(8px + env(safe-area-inset-bottom)); }
  body .qn-item, body .qn-feature { flex: 1 1 0; min-width: 0; min-height: 60px; padding: 10px 8px; border: 1px solid var(--color-line); border-radius: 10px; }
  body .qn-en { font-size: 10px; }
  body .qn-jp, body .qn-feature .qn-jp { font-size: 14px; }
  body .qn-orn { display: none; }
}
