/* OUA Student Council, editorial visual layer. Existing data and interaction hooks stay intact. */
:root {
  --paper: #f4f3ef;
  --paper-bright: #fbfbf8;
  --ink: #151515;
  --muted: #60605c;
  --line: #b9b9b1;
  --signal: #e23f2e;
  --blue: #2156b4;
  --yellow: #efc62d;
  --c-soft: #ecebe5;
}

*, *::before, *::after { letter-spacing: 0 !important; }
html { background: var(--paper); }
body {
  background: var(--paper);
  color: var(--ink);
  font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif;
  -webkit-font-smoothing: antialiased;
}
a, button { -webkit-tap-highlight-color: transparent; }
a:focus-visible, button:focus-visible {
  outline: 3px solid var(--yellow);
  outline-offset: 3px;
}
.wrap { max-width: 1160px; }
.sec { padding-top: 76px; padding-bottom: 76px; }
.kicker, .en {
  color: var(--signal);
  font-family: Arial, Helvetica, sans-serif;
  font-weight: 800;
  text-transform: uppercase;
}
.h2 { margin-bottom: 30px; }
.h2 span {
  padding: 0 0 9px;
  border-bottom: 3px solid currentColor;
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
  font-weight: 700;
}
.chip, .tag, .archive-tag, .fh-tag {
  border-radius: 0 !important;
}

/* Header: closer to a printed masthead than an app toolbar. */
header {
  border-bottom: 2px solid var(--ink);
  background: rgba(250, 250, 247, .96);
  backdrop-filter: none;
  transition: background .24s ease, border-color .24s ease, color .24s ease;
}
.bar {
  max-width: none;
  min-height: 72px;
  padding: 0 22px;
  background: transparent;
  color: var(--ink);
}
.logo { gap: 10px; color: var(--ink); }
.logo .mk {
  width: 45px;
  height: 45px;
  border: 1px solid var(--ink);
  border-radius: 50%;
  background: #fff;
}
.logo span { font-size: 14px; line-height: 1.2; }
.logo small { color: #62625d; font-size: 8px; }
.tabs { align-self: stretch; gap: 0; }
.tab {
  min-height: 72px;
  padding: 0 15px;
  border: 0;
  border-left: 1px solid #d2d2cb;
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  font-size: 11px;
  font-weight: 800;
}
.tab:last-child { border-right: 1px solid #d2d2cb; }
.tab:hover { background: #e9e8e2; }
.tab[aria-current="true"] {
  color: var(--ink);
  background: var(--paper-bright);
  box-shadow: inset 0 -5px 0 var(--c);
}
.tab:focus-visible {
  outline: 0;
  box-shadow: inset 0 -5px 0 var(--c), inset 0 0 0 2px var(--yellow);
}
.official-btn {
  color: var(--ink);
  font-size: 11px;
  text-decoration: underline;
  text-underline-offset: 4px;
}
.login-btn {
  padding: 12px 15px;
  border: 2px solid var(--ink);
  border-radius: 0;
  background: var(--ink);
  color: #fff;
  font-size: 12px;
  box-shadow: 4px 4px 0 var(--signal);
}
.login-btn:hover { transform: translate(2px, 2px); box-shadow: 2px 2px 0 var(--signal); }
.menu-toggle { color: var(--ink); }
.mobile-nav { background: var(--paper-bright); border-top: 1px solid var(--ink); }

body.view-home:not(.is-scrolled) header {
  border-bottom-color: rgba(255, 255, 255, .34);
  background: rgba(10, 11, 12, .16);
  color: #fff;
}
body.view-home:not(.is-scrolled) .logo,
body.view-home:not(.is-scrolled) .official-btn,
body.view-home:not(.is-scrolled) .menu-toggle { color: #fff; }
body.view-home:not(.is-scrolled) .logo small { color: rgba(255, 255, 255, .72); }
body.view-home:not(.is-scrolled) .tabs { background: rgba(10, 11, 12, .18); }
body.view-home:not(.is-scrolled) .tab {
  border-color: rgba(255, 255, 255, .25);
  color: #fff;
}
body.view-home:not(.is-scrolled) .tab:hover { background: rgba(255, 255, 255, .12); }
body.view-home:not(.is-scrolled) .tab[aria-current="true"] { background: rgba(0, 0, 0, .2); color: #fff; }
body.view-home:not(.is-scrolled) .login-btn { border-color: #fff; background: #fff; color: var(--ink); }

/* Hero: photography first, typography second, effects third. */
.hero--home {
  min-height: 760px;
  height: calc(100svh - 72px);
  max-height: 940px;
  background: #242421;
  border-bottom: 2px solid var(--ink);
}
.hero--home::after {
  background: rgba(12, 13, 14, .56) !important;
}
.hero--home .bg {
  animation: none;
  filter: saturate(.78) contrast(1.08);
  transform: scale(calc(1.02 + var(--hero-progress, 0) * .035)) translateY(calc(var(--hero-progress, 0) * 18px));
  transform-origin: center center;
}
.hero-3d { opacity: .48; mix-blend-mode: screen; }
.hero--home .hero-in {
  max-width: 1160px;
  padding: 80px 22px 94px;
  transform: translateY(calc(var(--hero-progress, 0) * -22px));
  opacity: calc(1 - var(--hero-progress, 0) * .36);
}
.hero--home .hero-in::before {
  content: "";
  display: block;
  width: 72px;
  height: 8px;
  margin-bottom: 28px;
  background: var(--signal);
}
.hero--home .hero-in > * { max-width: 670px; }
.hero--home .en { opacity: 1; font-size: 12px; }
.hero--home h1 {
  margin: 14px 0 20px;
  color: #fff;
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
  font-size: 66px;
  font-weight: 700;
  line-height: 1.2;
  text-shadow: none;
}
.hero--home p { max-width: 600px; font-size: 15px; line-height: 2; }
.hero-actions { gap: 10px; margin-top: 28px; }
.hero-actions a {
  min-width: 180px;
  padding: 14px 20px;
  border-radius: 0;
  text-align: center;
}
.btn-solid { background: var(--signal); color: #fff; border: 2px solid var(--signal); }
.btn-ghost { border: 2px solid #fff; background: rgba(0, 0, 0, .22); }
.btn-solid:hover, .btn-ghost:hover { transform: translateY(-2px); }
.scrollcue { bottom: 25px; animation: none; font-size: 10px; }
.scrollcue::before { content: ""; display: block; width: 1px; height: 34px; margin: 0 auto 8px; background: #fff; }

/* Home modules use rules and rhythm, not floating containers. */
#v-home > .sec:nth-of-type(even), #v-cmt > .sec:nth-of-type(even) { background: var(--paper-bright); }
.home-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  border-top: 2px solid var(--ink);
  border-left: 2px solid var(--ink);
}
.cmt-card {
  min-height: 300px;
  border: 0;
  border-right: 2px solid var(--ink);
  border-bottom: 2px solid var(--ink);
  border-radius: 0;
  box-shadow: none;
  isolation: isolate;
}
.cmt-card .cc-bg { filter: saturate(.82); }
.cmt-card .cc-bg::after { content: attr(data-index); display: none; }
.cmt-card::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: rgba(0, 0, 0, .16);
  transition: background .18s ease;
}
.cmt-card:hover { transform: none; box-shadow: inset 0 -10px 0 #fff; }
.cmt-card:hover::after { background: rgba(0, 0, 0, .04); }
.cmt-card .cc-body { padding: 28px 24px; }
.cmt-card h3 {
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
  font-size: 24px;
}
.cmt-card p { font-size: 12px; line-height: 1.8; }

.news { border-top: 2px solid var(--ink); }
.news li, .news-item {
  border-bottom: 1px solid var(--line);
  background: transparent;
}
.news li:hover, .news-item:hover { background: #e9e8e1; }
.events {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 18px;
}
.event-card {
  grid-column: span 4;
  border: 2px solid var(--ink);
  border-radius: 0;
  box-shadow: none;
}
.event-card:first-child { grid-column: span 8; }
.event-card:first-child .event-card-word { font-size: 54px; }
.event-card:hover { transform: translate(-3px, -3px); box-shadow: 7px 7px 0 var(--event-color); }
.event-card-visual::after { background: rgba(0, 0, 0, .34); }
.event-card-status { padding: 6px 8px; background: var(--yellow); }
.event-card-body { border-top-width: 7px; }
.event-card h3, .festival-project h3 {
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
}

.hl-grid {
  display: flex;
  gap: 18px;
  margin-right: calc((100vw - min(1160px, 100vw - 40px)) / -2);
  padding: 4px 30px 26px 4px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: thin;
}
.hl {
  flex: 0 0 560px;
  scroll-snap-align: start;
  border: 2px solid var(--ink);
  border-radius: 0;
  box-shadow: none;
  background: var(--paper-bright);
}
.hl .pic { min-height: 330px; }
.hl:hover { transform: translate(-3px, -3px); box-shadow: 7px 7px 0 var(--c); }
.hl .pic::after { background: rgba(0, 0, 0, .24); }
.media-band {
  padding: 38px;
  border: 2px solid var(--ink);
  border-radius: 0;
  background: var(--blue);
}
.media-icons a, .media-frame { border-radius: 0; }

/* Social section: a compact editorial feed, with the account wall kept legible. */
.social-stage {
  padding: 70px 0 76px;
  border-top: 12px solid var(--signal);
  background: #181817;
}
.social-stage::after { display: none; }
.social-stage .kicker { color: var(--yellow); }
.social-stage .h2 span { border-color: var(--yellow); }
.social-feed-tools button, .social-live-tabs button {
  border-radius: 0;
  border: 1px solid #fff;
}
.social-feed-tools button[aria-pressed="true"], .social-live-tabs button[aria-pressed="true"] {
  border-color: var(--yellow);
  background: var(--yellow);
}
.social-feed { gap: 16px; }
.social-post, .social-poster {
  border: 2px solid #fff;
  border-top: 8px solid var(--post-color, var(--social-color));
  border-radius: 0;
  box-shadow: none;
}
.social-post:hover, .social-poster:hover { transform: translate(-3px, -3px); box-shadow: 7px 7px 0 var(--post-color, var(--social-color)); }
.social-post-media img, .social-poster-media img { background: #efefea; }
.social-post h3, .social-poster-copy h4 {
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
}
.social-live-frame { gap: 12px; }
.social-live-frame iframe {
  border: 2px solid #fff;
  border-radius: 0;
  background: #fff;
}

/* Festival archive and committee pages. */
.festival-archive-bar {
  top: 72px;
  border-bottom: 2px solid #fff;
  background: #171716;
}
.festival-archive-bar strong { color: var(--yellow); }
.festival-year-buttons button, .festival-program-years button, .festival-mode-tabs button { border-radius: 0; }
.festival-year-buttons button[aria-pressed="true"] { border-color: var(--yellow); background: var(--yellow); }
.festival-program-years button[aria-pressed="true"], .festival-mode-tabs button[aria-pressed="true"] {
  border-color: var(--ink);
  background: var(--ink);
}
.fest-hero { border-bottom: 2px solid var(--ink); }
.fest-hero .fh-in { max-width: 1160px; }
.fest-hero .fh-tag { border-radius: 0; background: #fff; color: var(--ink); }
.festival-type-visual strong, .fest-hero h2 {
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
}
.acts.festival-projects { border-top: 2px solid var(--ink); border-left: 2px solid var(--ink); }
.festival-project { border-right: 2px solid var(--ink); border-bottom: 2px solid var(--ink); }
.exh-grid { gap: 16px; }
.exh-card {
  border: 2px solid var(--ink);
  border-radius: 0;
  box-shadow: none;
}
.exh-card:hover { transform: translate(-3px, -3px); box-shadow: 7px 7px 0 var(--c); }
.exh-card .num { border-radius: 0; background: var(--ink); }
.festival-record-note { border: 2px solid var(--ink); border-left: 10px solid var(--c); background: var(--paper-bright); }

.archive-hero { border-bottom: 2px solid var(--ink); }
#v-archive .archive-hero::after { background: rgba(7, 8, 10, .62) !important; }
#v-archive.event-fukuso .archive-hero::before { display: none; }
.archive-hero h1 {
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
  font-size: 56px;
  text-shadow: none;
}
.archive-status { border-radius: 0; }
.archive-facts { border: 2px solid var(--ink); background: var(--ink); }
.archive-fact { background: var(--paper-bright); }
.archive-link { border-radius: 0; background: var(--ink); }
.event-index, .window, .card, .step {
  border-radius: 0 !important;
  box-shadow: none !important;
}
.activity-item { border-top: 1px solid var(--line); }

/* Club popup: a physical program sheet, not a glossy app dialog. */
.club-modal-backdrop { background: rgba(19, 19, 18, .86); backdrop-filter: none; }
.club-modal-stage { width: min(980px, 100%); perspective: none; }
.club-pamphlet {
  grid-template-columns: minmax(280px, .9fr) 1.1fr;
  border: 3px solid var(--ink);
  background: var(--paper-bright);
  box-shadow: 13px 13px 0 var(--signal);
  transform: none !important;
  animation: paper-in .22s ease-out both;
}
.club-pamphlet::before, .club-pamphlet::after { display: none; }
.pamphlet-visual { min-height: 540px; padding: 30px; }
.pamphlet-visual.has-image::after { background: rgba(0, 0, 0, .32); }
.pamphlet-mark { font-family: Georgia, serif; font-size: 94px; }
.pamphlet-visual h2, .pamphlet-content h2 {
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
}
.pamphlet-content { padding: 46px; background: var(--paper-bright); }
.pamphlet-facts { border-color: var(--ink); }
.pamphlet-fact { border-color: var(--ink); }
.pamphlet-actions button, .pamphlet-actions a { border: 2px solid var(--ink); }
.pamphlet-actions button { background: var(--ink); }
.pamphlet-close {
  right: 12px;
  top: 12px;
  border: 2px solid var(--ink);
  border-radius: 0;
  background: var(--yellow);
}
@keyframes paper-in {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Closing sections. */
.steps { border-top: 2px solid var(--ink); border-left: 2px solid var(--ink); gap: 0; }
.step { border-right: 2px solid var(--ink); border-bottom: 2px solid var(--ink); background: var(--paper-bright); }
.cta {
  padding: 42px;
  border: 2px solid var(--ink);
  border-radius: 0;
  background: var(--blue);
}
.cta h2 { font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; font-size: 30px; }
.cta a { border-radius: 0; color: var(--blue); }
footer {
  margin: 0;
  padding-top: 62px;
  border-top: 12px solid var(--signal);
  background: #181817;
  color: #c8c8c0;
}

.reveal-section {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .65s ease, transform .65s cubic-bezier(.2, .7, .2, 1);
}
.reveal-section.is-revealed { opacity: 1; transform: translateY(0); }
.footer-column h2 { color: var(--yellow); }

@media (max-width: 1080px) {
  .bar { padding: 0 16px; }
  .tab { padding: 0 10px; }
  .official-btn { display: none; }
  .home-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .event-card, .event-card:first-child { grid-column: span 6; }
}

@media (max-width: 820px) {
  .bar { min-height: 64px; }
  .tabs, .official-btn, .login-btn { display: none; }
  .menu-toggle { display: block; margin-left: auto; }
  .hero--home { min-height: 650px; height: calc(100svh - 64px); }
  .hero--home .hero-in { padding-top: 64px; }
  .hero--home h1 { font-size: 48px; }
  .festival-archive-bar { top: 64px; }
  .club-pamphlet { grid-template-columns: 1fr; box-shadow: 8px 8px 0 var(--signal); }
  .pamphlet-visual { min-height: 260px; }
}

@media (max-width: 640px) {
  .sec { padding-top: 56px; padding-bottom: 56px; }
  .logo span { font-size: 12px; }
  .logo small { display: none; }
  .hero--home { min-height: 610px; }
  .hero--home .hero-in {
    align-self: end;
    margin-bottom: 52px;
    padding: 30px 20px 62px;
    text-align: left;
  }
  .hero--home .hero-in::before { width: 54px; height: 6px; margin-bottom: 18px; }
  .hero--home h1 { font-size: 39px; line-height: 1.24; }
  .hero--home p { font-size: 13px; line-height: 1.85; }
  .hero-actions { justify-content: stretch; }
  .hero-actions a { width: 100%; min-width: 0; }
  .scrollcue { display: none; }
  .home-grid { grid-template-columns: 1fr; }
  .cmt-card { min-height: 235px; }
  .events, .hl-grid, .social-wall { grid-template-columns: 1fr; }
  .events { display: grid; }
  .event-card, .event-card:first-child { grid-column: 1; }
  .event-card:first-child .event-card-word { font-size: 42px; }
  .hl-grid {
    display: flex;
    margin-right: -20px;
    padding-right: 20px;
  }
  .hl { flex-basis: 84vw; }
  .hl .pic { min-height: 250px; }
  .social-post, .social-post.featured { grid-template-columns: 1fr; grid-template-rows: 230px 1fr; }
  .social-stage { padding-top: 54px; }
  .archive-hero h1 { font-size: 38px; }
  .archive-hero-in { padding: 104px 18px 40px; }
  .club-modal { padding: 12px; }
  .club-modal-stage, .club-pamphlet { max-height: calc(100svh - 24px); }
  .pamphlet-content { padding: 30px 22px; }
  .pamphlet-content h2 { margin-right: 40px; font-size: 30px; }
  .pamphlet-actions { display: grid; }
  .pamphlet-actions button, .pamphlet-actions a { text-align: center; }
  .media-band, .cta { padding: 28px 22px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
  .reveal-section { opacity: 1; transform: none; }
  .hero--home .bg, .hero--home .hero-in { transform: none; opacity: 1; }
}

/* v40: photographic committee identity and the original dark masthead. */
header,
body.view-home:not(.is-scrolled) header {
  border-bottom: 1px solid rgba(255, 255, 255, .22);
  background: rgba(11, 13, 17, .94);
  color: #fff;
}
.logo,
.official-btn,
.menu-toggle,
body.view-home:not(.is-scrolled) .logo,
body.view-home:not(.is-scrolled) .official-btn,
body.view-home:not(.is-scrolled) .menu-toggle { color: #fff; }
.logo small,
body.view-home:not(.is-scrolled) .logo small { color: rgba(255, 255, 255, .62); }
.tabs,
body.view-home:not(.is-scrolled) .tabs { background: transparent; }
.tab,
body.view-home:not(.is-scrolled) .tab {
  border-color: rgba(255, 255, 255, .16);
  color: #fff;
}
.tab:hover,
body.view-home:not(.is-scrolled) .tab:hover { background: rgba(255, 255, 255, .1); color: #fff; }
.tab[aria-current="true"],
body.view-home:not(.is-scrolled) .tab[aria-current="true"] {
  background: rgba(255, 255, 255, .08);
  color: #fff;
}
.login-btn,
body.view-home:not(.is-scrolled) .login-btn {
  border-color: var(--signal);
  background: var(--signal);
  color: #fff;
}

.home-grid {
  grid-template-columns: repeat(4, minmax(220px, 1fr));
  min-width: 900px;
  overflow: hidden;
}
.cmt-card { min-height: 330px; }
.cmt-card .cc-bg {
  background-color: var(--cc);
  background-position: center;
  background-size: cover;
  filter: saturate(.86) contrast(1.06);
  transform: scale(1.01);
  transition: transform .55s cubic-bezier(.2, .7, .2, 1), filter .25s ease;
}
.cmt-card[data-committee="chuo"] .cc-bg { background-image: url("assets/committee-central.jpg"); }
.cmt-card[data-committee="bunren"] .cc-bg { background-image: url("assets/committee-culture.jpg"); }
.cmt-card[data-committee="taiiku"] .cc-bg { background-image: url("assets/committee-sports.jpg"); }
.cmt-card[data-committee="gakusai"] .cc-bg {
  background-image: url("assets/committee-festival.jpg");
  background-position: center 38%;
}
.cmt-card .cc-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: var(--cc);
  opacity: .42;
}
.cmt-card .cc-bg::after {
  content: "OUA";
  display: block;
  z-index: 2;
  right: -6px;
  top: -24px;
  color: rgba(255, 255, 255, .2);
  font-size: 108px;
}
.cmt-card::after { background: rgba(0, 0, 0, .28); }
.cmt-card:hover .cc-bg { filter: saturate(1) contrast(1.08); transform: scale(1.055); }
.cmt-card:hover::after { background: rgba(0, 0, 0, .16); }
.cmt-card .cc-body { text-shadow: 0 1px 12px rgba(0, 0, 0, .35); }

#v-cmt:not(.is-festival) > .hero {
  position: relative;
  min-height: 560px;
  display: grid;
  align-items: end;
  border-bottom: 2px solid var(--ink);
  background-color: #1a1b1d;
  background-position: center;
  background-size: cover;
  overflow: hidden;
}
#v-cmt[data-committee="chuo"] > .hero { background-image: url("assets/committee-central.jpg"); }
#v-cmt[data-committee="bunren"] > .hero { background-image: url("assets/committee-culture.jpg"); }
#v-cmt[data-committee="taiiku"] > .hero { background-image: url("assets/committee-sports.jpg"); }
#v-cmt:not(.is-festival) > .hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(7, 8, 10, .58);
}
#v-cmt:not(.is-festival) > .hero .hero-in {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 1160px;
  margin: 0 auto;
  padding: 150px 20px 54px;
  color: #fff;
  text-align: left;
}
#v-cmt:not(.is-festival) > .hero .accent-bar { margin: 0 0 20px; border-radius: 0; }
#v-cmt:not(.is-festival) > .hero .en { color: #fff; opacity: .82; }
#v-cmt:not(.is-festival) > .hero h1 {
  margin: 8px 0 4px;
  color: #fff;
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
  font-size: 58px;
}
#v-cmt:not(.is-festival) > .hero p { margin: 0; color: rgba(255, 255, 255, .84); }
#v-cmt:not(.is-festival) > .hero .chip {
  margin-top: 18px;
  border: 1px solid rgba(255, 255, 255, .7);
  background: transparent;
}
.committee-hero-acts {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  max-width: 820px;
  margin-top: 34px;
  border-top: 1px solid rgba(255, 255, 255, .54);
  border-left: 1px solid rgba(255, 255, 255, .54);
}
.committee-hero-acts span {
  min-height: 72px;
  padding: 12px;
  border-right: 1px solid rgba(255, 255, 255, .54);
  border-bottom: 1px solid rgba(255, 255, 255, .54);
  color: #fff;
  font-size: 11px;
  font-weight: 800;
}
.committee-hero-acts b { display: block; margin-bottom: 4px; color: var(--c); font-size: 10px; }

#v-cmt > section:nth-of-type(2) #c-desc {
  max-width: 940px !important;
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
  font-size: 24px !important;
  line-height: 1.9;
}
.acts:not(.festival-projects) {
  counter-reset: committee-task;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  border-top: 2px solid var(--ink);
  border-left: 2px solid var(--ink);
}
.acts:not(.festival-projects) span {
  counter-increment: committee-task;
  min-height: 145px;
  padding: 22px 18px;
  border-right: 2px solid var(--ink);
  border-bottom: 2px solid var(--ink);
  border-radius: 0;
  background: var(--paper-bright);
  color: var(--ink);
  font-size: 15px;
}
.acts:not(.festival-projects) span::before {
  content: "0" counter(committee-task);
  display: block;
  margin-bottom: 34px;
  color: var(--c);
  font: 800 11px Arial, sans-serif;
}

@media (max-width: 1080px) {
  .home-grid { grid-template-columns: repeat(4, minmax(220px, 1fr)); }
}
@media (max-width: 940px) {
  .home-grid {
    width: calc(100vw - 40px);
    min-width: 0;
    grid-template-columns: repeat(4, 250px);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
  }
  .cmt-card { min-height: 310px; scroll-snap-align: start; }
}
@media (max-width: 700px) {
  #v-cmt:not(.is-festival) > .hero { min-height: 620px; }
  #v-cmt:not(.is-festival) > .hero .hero-in { padding: 132px 20px 34px; }
  #v-cmt:not(.is-festival) > .hero h1 { font-size: 42px; }
  .committee-hero-acts { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 26px; }
  .acts:not(.festival-projects) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #v-cmt > section:nth-of-type(2) #c-desc { font-size: 20px !important; }
}
@media (max-width: 640px) {
  .home-grid { grid-template-columns: repeat(4, 238px); }
}

/* v41: fluorescent actions return; editorial labels stay readable on light paper. */
:root { --signal: #d7ff18; }
.kicker,
.en { color: #8d2f26; }
.login-btn,
.btn-solid {
  border-color: var(--signal);
  background: var(--signal);
  color: #11130f;
}
.login-btn:hover,
.btn-solid:hover { color: #11130f; }

.cmt-card[data-committee="bunren"] .cc-bg {
  background-image: url("assets/committee-culture-empty.jpg");
  background-size: cover;
  background-position: center;
}
.cmt-card[data-committee="taiiku"] .cc-bg {
  background-image: url("assets/committee-sports-empty.jpg");
  background-size: cover;
  background-position: center;
}
.cmt-card[data-committee="gakusai"] .cc-bg {
  background-image: url("assets/festival-2025-main-visual.jpg");
  background-size: cover;
  background-position: center;
}
#v-cmt[data-committee="bunren"] > .hero {
  background-image: url("assets/committee-culture-empty.jpg");
  background-size: cover;
  background-position: center;
}
#v-cmt[data-committee="taiiku"] > .hero {
  background-image: url("assets/committee-sports-empty.jpg");
  background-size: cover;
  background-position: center;
}
.card .ph {
  background-color: #e8e8e4;
  filter: saturate(.92) contrast(1.02);
}

/* v46: readable student entry in every header state, including mobile. */
header .login-btn,
body.view-home:not(.is-scrolled) header .login-btn,
header .login-btn:visited,
header .login-btn:hover {
  color: #11130f;
  background: #d7ff18;
  border-color: #d7ff18;
  font-size: 14px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
header .login-btn:focus-visible { outline: 3px solid #fff; outline-offset: 4px; }
@media (max-width: 820px) {
  .bar { gap: 10px; }
  .brand { min-width: 0; flex: 1; }
  header .login-btn { flex: 0 0 auto; margin-left: auto; padding: 8px 10px; box-shadow: none; }
  .menu-toggle { flex: 0 0 auto; margin-left: 0; }
}
@media (max-width: 420px) {
  .brand span { display: none; }
  .brand img { width: 36px; height: 36px; }
  header .login-btn { font-size: 13px; }
}

/* v47: contrast for the mobile toggle and expanded student login. */
header .menu-toggle,
body.view-home:not(.is-scrolled) header .menu-toggle {
  color: #11130f;
  background: #d7ff18;
  font-size: 26px;
  font-weight: 900;
  line-height: 1;
}
header .mobile-nav a[href="https://members.oua-jichikai.com/"],
header .mobile-nav a[href="https://members.oua-jichikai.com/"]:visited {
  color: #11130f;
  border: 2px solid #11130f;
  min-height: 48px;
  font-weight: 800;
}
header .menu-toggle:focus-visible,
header .mobile-nav a:focus-visible { outline: 3px solid #7859ed; outline-offset: 3px; }
