:root { --ink:#111; --blue:#003f8f; --blue2:#005bbb; --yellow:#ffd800; --paper:#fff; --soft:#f2f2f2; --line:#222; font-size:18px; }
:root[data-font="large"] { font-size:22px; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:#fff; color:var(--ink); font-family:"BIZ UDPGothic","Yu Gothic",Meiryo,sans-serif; line-height:1.8; }
a { color:#003f8f; text-decoration:underline; text-decoration-thickness:2px; text-underline-offset:3px; }
a:focus-visible, button:focus-visible { outline:4px solid #e60012; outline-offset:3px; }
img { display:block; max-width:100%; height:auto; }
.skip-link { position:absolute; left:-9999px; }
.skip-link:focus { left:1rem; top:1rem; z-index:10; padding:.7rem 1rem; background:#fff; border:3px solid #000; }
.site-header { background:#111; color:#fff; border-bottom:6px solid var(--yellow); }
.header-inner { max-width:1100px; margin:auto; padding:1rem; text-align:center; }
.site-title { margin:0; font-size:2rem; font-weight:800; letter-spacing:.06em; }
.site-title a { color:#fff; text-decoration:none; }
.site-subtitle { margin:.15rem 0 0; font-weight:700; }
.main-nav { background:#fff; border-bottom:4px solid #111; }
.main-nav ul { max-width:1200px; margin:0 auto; padding:.5rem; display:grid; grid-template-columns:repeat(7,1fr); gap:.4rem; list-style:none; }
.main-nav a { min-height:3.25rem; padding:.55rem .35rem; display:flex; align-items:center; justify-content:center; background:#fff; color:#111; border:3px solid #111; font-weight:800; text-align:center; text-decoration:none; }
.main-nav a:hover { background:#e8f1ff; }
.main-nav a[aria-current="page"] { background:var(--blue); color:#fff; border-color:var(--blue); }
.display-tools { max-width:1100px; margin:.8rem auto 0; padding:0 1rem; display:flex; align-items:center; justify-content:flex-end; gap:.4rem; font-weight:700; }
.display-tools button { min-height:44px; padding:.35rem .8rem; background:#fff; color:#111; border:3px solid #111; border-radius:5px; font:inherit; font-weight:800; cursor:pointer; }
.display-tools button[aria-pressed="true"] { background:var(--yellow); }
.page-wrap { max-width:1000px; margin:0 auto; padding:1rem 1rem 3rem; }
h1 { margin:.5rem 0 1.2rem; padding:.55rem .8rem; background:var(--blue); color:#fff; border-left:12px solid var(--yellow); font-size:1.65rem; line-height:1.35; }
h2 { margin:2rem 0 .8rem; padding:.4rem .7rem; border-left:9px solid var(--blue); border-bottom:3px solid #111; font-size:1.35rem; line-height:1.45; }
p { margin:.7rem 0; }
.lead { font-size:1.12rem; font-weight:700; }
.menu-cards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; margin:1.2rem 0 2rem; }
.menu-card { display:block; min-height:7rem; padding:1rem; border:4px solid #111; background:#fff; color:#111; text-decoration:none; box-shadow:5px 5px 0 #777; }
.menu-card strong { display:block; color:var(--blue); font-size:1.35rem; }
.menu-card:hover { background:#fff7bf; }
.records { display:grid; gap:1.15rem; }
.record { padding:1rem; border:3px solid var(--line); border-radius:4px; background:#fff; }
.tweet-list { border:3px solid #111; background:#fff; }
.tweet-item { padding:.65rem .85rem; border-bottom:2px solid #555; }
.tweet-item:last-child { border-bottom:0; }
.tweet-date { display:inline-block; margin:0 0 .25rem; color:#003f8f; font-weight:800; }
.tweet-body { line-height:1.65; overflow-wrap:anywhere; }
.tweet-link { margin:.25rem 0 0; }
.record h2 { margin:0 0 .6rem; border-left:8px solid var(--yellow); border-bottom:3px solid var(--blue); }
.date { display:inline-block; margin:0 0 .6rem; padding:.1rem .6rem; background:#111; color:#fff; font-weight:800; }
.record-body { overflow-wrap:anywhere; }
.record-body img { margin:.8rem auto; border:3px solid #111; }
.link-button, .pager a { display:inline-flex; min-height:48px; padding:.45rem .9rem; align-items:center; justify-content:center; background:var(--blue); color:#fff; border:3px solid #111; border-radius:4px; font-weight:800; text-decoration:none; }
.filters { margin:0 0 1.2rem; padding:1rem; background:var(--soft); border:3px solid #111; }
.filters label { display:block; font-weight:800; }
.filters select { width:100%; max-width:30rem; min-height:52px; margin:.35rem 0 .6rem; padding:.3rem .5rem; border:3px solid #111; background:#fff; color:#111; font:inherit; }
.photo-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.photo-grid figure { margin:0; padding:.6rem; border:3px solid #111; background:#fff; }
.photo-grid figcaption { padding:.5rem .15rem 0; font-weight:700; }
.fixed-day-list { display:grid; gap:1.15rem; }
.fixed-day { border:3px solid #111; background:#fff; }
.fixed-day-title { margin:0; padding:.5rem .8rem; border:0; border-bottom:3px solid #111; background:#003f8f; color:#fff; }
.fixed-photo-grid { padding:.75rem; }
.fixed-day .fixed-photo { margin:0; padding:0; border:0; }
.fixed-day .fixed-photo img { border:2px solid #555; }
.fixed-day .fixed-photo figcaption { padding:.35rem .1rem .6rem; }
.photo-grid a[data-lightbox], .article-content a[data-lightbox] { cursor:zoom-in; }
.calendar { margin:0 0 1.5rem; border:4px solid #111; background:#fff; }
.calendar-head { display:grid; grid-template-columns:1fr 2fr 1fr; align-items:center; gap:.5rem; padding:.55rem; background:#111; color:#fff; text-align:center; }
.calendar-head strong { font-size:1.3rem; }
.calendar-head a { padding:.3rem; color:#fff; border:2px solid #fff; font-weight:800; text-decoration:none; }
.calendar table { width:100%; border-collapse:collapse; table-layout:fixed; }
.calendar th { padding:.35rem .1rem; background:#e8e8e8; border:2px solid #111; }
.calendar td { height:3.2rem; padding:.15rem; border:2px solid #555; text-align:center; vertical-align:middle; font-weight:700; }
.calendar td a { width:100%; min-height:2.6rem; display:flex; align-items:center; justify-content:center; background:var(--yellow); color:#111; border:3px solid #111; font-size:1.1rem; font-weight:900; text-decoration:none; }
.calendar td.today { outline:5px solid #e60012; outline-offset:-5px; }
.calendar-note { margin:.5rem; font-weight:700; }
.day-section { margin-top:2rem; }
.special-nav { display:grid; grid-template-columns:repeat(3,1fr); gap:.6rem; margin:1rem 0 1.5rem; }
.special-nav a { min-height:52px; display:flex; align-items:center; justify-content:center; padding:.5rem; border:3px solid #111; background:#fff; color:#111; font-weight:800; text-align:center; text-decoration:none; }
.special-nav a[aria-current="page"] { background:var(--yellow); }
.article-content { padding:1rem; border:3px solid #111; }
.article-content h3,.article-content h4 { margin:1.5rem 0 .6rem; padding:.35rem .6rem; border-left:8px solid var(--blue); border-bottom:2px solid #111; font-size:1.2rem; }
.article-content img { margin:.8rem auto; border:3px solid #111; }
.lightbox[hidden] { display:none; }
.lightbox { position:fixed; inset:0; z-index:1000; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.5rem; padding:1rem; background:rgba(0,0,0,.92); color:#fff; }
.lightbox img { max-width:min(94vw,1200px); max-height:76vh; object-fit:contain; border:4px solid #fff; }
.lightbox-close { min-height:50px; padding:.4rem 1rem; background:var(--yellow); color:#111; border:3px solid #fff; font:inherit; font-weight:900; cursor:pointer; }
.lightbox p { margin:0; text-align:center; font-weight:800; }
.modal-open { overflow:hidden; }
.pager { margin:1.5rem 0; display:flex; justify-content:center; align-items:center; flex-wrap:wrap; gap:.8rem; }
.notice { padding:1rem; border:4px solid #111; background:#fff7bf; }
.error { border-color:#b00020; background:#fff; color:#790014; }
.profile-image { width:min(100%,430px); margin:0 auto 1rem; border:4px solid #111; }
.site-footer { padding:1rem; background:#111; color:#fff; border-top:6px solid var(--yellow); text-align:center; font-weight:700; }
@media (max-width:700px) {
  :root { font-size:18px; }
  :root[data-font="large"] { font-size:21px; }
  .main-nav ul { grid-template-columns:repeat(2,1fr); }
  .main-nav li:first-child { grid-column:1 / -1; }
  .display-tools { justify-content:center; flex-wrap:wrap; }
  .menu-cards, .photo-grid, .special-nav { grid-template-columns:1fr; }
  .calendar td { height:2.8rem; padding:.08rem; font-size:.9rem; }
  .calendar-head strong { font-size:1.05rem; }
  .page-wrap { padding-left:.75rem; padding-right:.75rem; }
}
@media print { .main-nav,.display-tools,.skip-link { display:none; } body { font-size:12pt; } }
