/* Event article body v1 (event pages bundle). Ported from new-pages/event-pages/pages.css (v31 preview):
   every selector sits under .ev-article and every class is ev- prefixed, tokens are local to .ev-article,
   the preview/owner/index rules and the dark-mode blocks are dropped, and no font is loaded (headings use the
   site's --font-ui, text the site's --font-body). Loaded only by pages that render an event article. */
.ev-article {
  --ev-bg: #fbfaff; --ev-surface: #ffffff; --ev-ink: #1c1f3a; --ev-muted: #646884; --ev-line: #e4e3f0;
  --ev-navy: #1c1f3a; --ev-on-navy: #f3f2fb; --ev-primary: #c91f68; --ev-pink: #ff3d8b; --ev-cyan: #19c3e6; --ev-star: #ffd23f;
  --ev-soft-pink: #fff0f6; --ev-soft-cyan: #e6f8fc; --ev-soft-star: #fff7d6; --ev-ended: #646884; --ev-ended-bg: #f0eff8;
  --ev-live: #0a7f99; --ev-live-bg: #e6f8fc; --ev-mixed: #8a5a00; --ev-mixed-bg: #fff3d1;
  --ev-violet: #5b3fc4; --ev-soft-violet: #efeaff;
  --ev-font-body: var(--font-body, system-ui, -apple-system, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", Meiryo, sans-serif);
  --ev-font-head: var(--font-ui, "Hiragino Maru Gothic ProN", var(--ev-font-body));
  margin-top: 8px; color: var(--ev-ink); font-family: var(--ev-font-body); font-size: 15px; line-height: 1.75; line-break: strict; letter-spacing: normal;
}
/* The site resets links to plain text; inside the article every link stays visible. */
.ev-article a { color: var(--ev-primary); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.ev-article a:not([class]) { color: var(--ev-primary); font-weight: inherit; }
.ev-article a:focus-visible, .ev-article summary:focus-visible { outline: 3px solid var(--ev-cyan); outline-offset: 2px; border-radius: 4px; }
.ev-article img { max-width: 100%; height: auto; }
/* Anchors land below the 64px sticky site header. */
.ev-article [id] { scroll-margin-top: 76px; }
.ev-article h2, .ev-article h3 { color: var(--ev-ink); font-family: var(--ev-font-head); font-weight: 700; text-wrap: balance; line-height: 1.4; letter-spacing: normal; font-feature-settings: normal; word-break: normal; }
.ev-article h2 { font-size: 19px; margin: 36px 0 12px; padding-bottom: 6px; border-bottom: 2px solid var(--ev-pink); display: flex; align-items: baseline; gap: 10px; }
.ev-article .ev-count { font-family: var(--ev-font-body); font-size: 13px; color: var(--ev-muted); font-weight: 600; }
.ev-article .ev-small { font-size: 13px; color: var(--ev-muted); }
.ev-article .ev-card-meta { margin: 0; font-size: 13px; color: var(--ev-muted); font-variant-numeric: tabular-nums; }
.ev-article .ev-card-go { margin-top: auto; padding-top: 8px; color: var(--ev-primary); font-weight: 700; font-size: 14px; }
.ev-article .ev-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.ev-article .ev-chip { font-size: 12px; font-weight: 700; border-radius: 999px; padding: 1px 10px; line-height: 1.8; }
.ev-article .ev-chip-kind { background: var(--ev-soft-pink); color: var(--ev-primary); }
.ev-article .ev-chip-ended { background: var(--ev-ended-bg); color: var(--ev-ended); }
.ev-article .ev-chip-live { background: var(--ev-live-bg); color: var(--ev-live); }
.ev-article .ev-chip-mixed { background: var(--ev-mixed-bg); color: var(--ev-mixed); }
.ev-article .ev-meta { display: grid; gap: 6px; margin: 16px 0 0; font-size: 14px; }
.ev-article .ev-meta > div, .ev-article .ev-facts > div, .ev-article .ev-gfacts > div { display: grid; grid-template-columns: 6.5em minmax(0, 1fr); gap: 12px; }
.ev-article .ev-meta dt, .ev-article .ev-facts dt, .ev-article .ev-gfacts dt { color: var(--ev-muted); font-weight: 600; }
.ev-article .ev-meta dd, .ev-article .ev-facts dd, .ev-article .ev-gfacts dd { margin: 0; min-width: 0; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.ev-article .ev-talents { display: flex; flex-wrap: wrap; gap: 6px; }
.ev-article .ev-talent { display: inline-flex; align-items: baseline; gap: 6px; background: var(--ev-surface); border: 1px solid var(--ev-line); border-radius: 999px; padding: 0 10px; font-size: 13px; }
.ev-article .ev-roles { margin: 6px 0 0; font-size: 12px; color: var(--ev-muted); line-height: 1.6; }
.ev-article .ev-dd-note { display: block; font-size: 12px; color: var(--ev-muted); }
.ev-article .ev-plain { margin: 0; padding-left: 1.2em; display: grid; gap: 8px; }
.ev-article .ev-goods { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 270px), 1fr)); gap: 12px; }
.ev-article .ev-good { background: var(--ev-surface); border: 1px solid var(--ev-line); border-radius: 14px; padding: 14px 16px; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.ev-article .ev-good h3 { font-size: 15px; margin: 0; overflow-wrap: anywhere; }
.ev-article .ev-variants { margin: 0; font-size: 13px; color: var(--ev-muted); }
.ev-article .ev-price { margin: 2px 0; font-size: 17px; line-height: 1.5; font-weight: 750; font-variant-numeric: tabular-nums; }
.ev-article .ev-price-note { margin: -4px 0 2px; font-size: 12px; color: var(--ev-muted); }
.ev-article .ev-gfacts { display: grid; gap: 4px; margin: 0; font-size: 13px; }
.ev-article .ev-gfacts > div { grid-template-columns: 4em minmax(0, 1fr); }
.ev-article .ev-pill { display: inline-block; font-size: 12px; font-weight: 700; border-radius: 6px; padding: 0 8px; margin-right: 6px; }
.ev-article .ev-pill-ended { background: var(--ev-ended-bg); color: var(--ev-ended); }
.ev-article .ev-pill-live { background: var(--ev-live-bg); color: var(--ev-live); }
.ev-article .ev-pill-mixed { background: var(--ev-mixed-bg); color: var(--ev-mixed); }
.ev-article .ev-gfacts time { color: var(--ev-muted); font-size: 12px; }
.ev-article .ev-buys { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.ev-article .ev-buy { box-sizing: content-box; display: inline-flex; align-items: center; gap: 4px; min-height: 36px; padding: 0 12px; border: 1.5px solid var(--ev-navy); border-radius: 999px; color: var(--ev-ink); text-decoration: none; font-size: 13px; font-weight: 600; }
.ev-article .ev-buy:hover { border-color: var(--ev-pink); background: var(--ev-soft-pink); }
.ev-article .ev-gnote { margin: 4px 0 0; font-size: 12px; color: var(--ev-muted); }
.ev-article .ev-facts { display: grid; gap: 6px; margin: 0; font-size: 14px; }
.ev-article .ev-facts > div { grid-template-columns: 8em minmax(0, 1fr); padding-bottom: 6px; border-bottom: 1px solid var(--ev-line); }
.ev-article .ev-timeline { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.ev-article .ev-timeline li { display: grid; grid-template-columns: 8.5em minmax(0, 1fr); gap: 12px; padding: 8px 0 8px 14px; border-left: 2px solid var(--ev-line); position: relative; }
.ev-article .ev-timeline li::before { content: ""; position: absolute; left: -6px; top: 15px; width: 10px; height: 10px; border-radius: 50%; background: var(--ev-cyan); }
.ev-article .ev-timeline time { font-variant-numeric: tabular-nums; color: var(--ev-muted); font-size: 14px; }
.ev-article .ev-refs { display: inline-flex; gap: 2px; margin-left: 4px; vertical-align: super; font-size: 10px; }
.ev-article .ev-refs a { text-decoration: none; background: var(--ev-soft-pink); color: var(--ev-primary); border-radius: 4px; padding: 0 4px; line-height: 1.5; font-weight: 700; }
.ev-article .ev-refs-more { color: var(--ev-muted); padding: 0 2px; line-height: 1.5; }
.ev-article .ev-sources { margin: 0; padding-left: 1.6em; display: grid; gap: 8px; font-size: 14px; }
.ev-article .ev-sources li { overflow-wrap: anywhere; scroll-margin-top: 84px; }
.ev-article .ev-sources li:target { background: var(--ev-soft-star); border-radius: 6px; }
.ev-article .ev-src-meta { display: block; font-size: 12px; color: var(--ev-muted); }
@media (max-width: 520px) {
  .ev-article .ev-meta > div, .ev-article .ev-facts > div { grid-template-columns: 5.5em minmax(0, 1fr); }
  .ev-article .ev-timeline li { grid-template-columns: minmax(0, 1fr); gap: 0; }
}
/* Images: official or collaboration-partner pictures only, each with its credit line linking the page it came from. */
.ev-article .ev-hero { margin: 16px 0 4px; display: grid; gap: 6px; }
.ev-article .ev-hero-img { display: block; width: 100%; height: auto; max-height: 440px; object-fit: contain; background: var(--ev-ended-bg); border-radius: 14px; }
.ev-article .ev-hero figcaption, .ev-article .ev-gimg figcaption { font-size: 11px; color: var(--ev-muted); }
.ev-article .ev-hero figcaption a, .ev-article .ev-gimg figcaption a { color: var(--ev-muted); }
.ev-article .ev-gimg { margin: -14px -16px 4px; display: grid; gap: 4px; }
.ev-article .ev-gimg-img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: contain; background: var(--ev-ended-bg); border-radius: 14px 14px 0 0; }
.ev-article .ev-gimg figcaption { padding: 0 16px; }
.ev-article .ev-gimg-none { aspect-ratio: 4 / 3; place-items: center; background: repeating-linear-gradient(135deg, var(--ev-ended-bg) 0 10px, var(--ev-surface) 10px 20px); color: var(--ev-muted); font-size: 12px; font-weight: 700; border-radius: 14px 14px 0 0; }
.ev-article .ev-buys-label { margin: 6px 0 -2px; font-size: 12px; font-weight: 700; color: var(--ev-muted); }
.ev-article .ev-buys-label span { font-weight: 400; }
.ev-article .ev-buy-more { border-style: dashed; border-color: var(--ev-muted); color: var(--ev-muted); }
.ev-article .ev-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; margin: 8px 0 4px; }
.ev-article .ev-gal { margin: 0; }
.ev-article .ev-gal-img { display: block; width: 100%; height: auto; border-radius: 12px; border: 1px solid var(--ev-line); background: var(--ev-surface); }
.ev-article .ev-gal figcaption { font-size: 11px; color: var(--ev-muted); margin-top: 6px; }
.ev-article .ev-gal figcaption a { color: var(--ev-muted); }
.ev-article .ev-thumb-bg { background-size: cover; background-position: center; }
.ev-article .ev-good-name { color: var(--ev-ink); text-decoration: none; }
.ev-article .ev-good-name:hover { color: var(--ev-primary); text-decoration: underline; }
.ev-article .ev-good-go { margin-top: auto; padding-top: 8px; color: var(--ev-primary); font-weight: 700; font-size: 14px; text-decoration: none; }
.ev-article .ev-good-go:hover { text-decoration: underline; }
.ev-article .ev-buy-used { border-color: var(--ev-line); border-width: 1px; font-size: 12px; min-height: 32px; padding: 0 10px; color: var(--ev-muted); }
.ev-article .ev-camp-card { display: grid; grid-template-columns: 160px minmax(0, 1fr); gap: 14px; align-items: stretch; background: var(--ev-surface); border: 1px solid var(--ev-line); border-radius: 14px; overflow: hidden; color: var(--ev-ink); text-decoration: none; max-width: 560px; }
.ev-article .ev-camp-card:hover { border-color: var(--ev-pink); }
.ev-article .ev-camp-thumb { display: block; min-height: 110px; overflow: hidden; background-color: var(--ev-ended-bg); }
/* The card thumbnail is an <img> on the site (the preview used a CSS background). */
.ev-article img.ev-camp-thumb, .ev-article .ev-camp-thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ev-article .ev-camp-body { display: flex; flex-direction: column; gap: 4px; padding: 12px 14px 12px 0; min-width: 0; }
.ev-article .ev-camp-title { font-family: var(--ev-font-head); font-weight: 700; font-size: 16px; line-height: 1.4; overflow-wrap: anywhere; }
@media (max-width: 480px) { .ev-article .ev-camp-card { grid-template-columns: 1fr; } .ev-article .ev-camp-thumb { aspect-ratio: 16 / 9; min-height: 0; } .ev-article .ev-camp-body { padding: 0 14px 14px; } }
/* v11: goods grouped like the official list, one tile per variant */
.ev-article .ev-ggroups { display: grid; gap: 14px; }
.ev-article .ev-ggroup { background: var(--ev-surface); border: 1px solid var(--ev-line); border-radius: 14px; padding: 14px 16px; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.ev-article .ev-ggroup h3 { font-size: 16px; margin: 0; overflow-wrap: anywhere; }
.ev-article .ev-ggroup h3 .ev-count, .ev-article h2 .ev-count { margin-left: 8px; font-size: 12px; color: var(--ev-muted); font-weight: 700; }
.ev-article .ev-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(112px, 1fr)); gap: 8px; margin: 4px 0; }
.ev-article .ev-tile { display: flex; flex-direction: column; gap: 3px; padding: 6px; border: 1px solid var(--ev-line); border-radius: 10px; background: var(--ev-bg); color: var(--ev-ink); text-decoration: none; min-width: 0; transition: border-color .15s, transform .15s; }
.ev-article .ev-tile:hover { border-color: var(--ev-primary); transform: translateY(-1px); }
.ev-article .ev-tile-current { border-color: var(--ev-primary); box-shadow: inset 0 0 0 1px var(--ev-primary); }
.ev-article .ev-tile-img { display: block; aspect-ratio: 1; border-radius: 7px; background-color: var(--ev-ended-bg); background-size: contain; background-position: center; background-repeat: no-repeat; }
.ev-article .ev-tile-none { display: grid; place-items: center; color: var(--ev-muted); font-size: 11px; font-weight: 700; background: repeating-linear-gradient(135deg, var(--ev-ended-bg) 0 8px, var(--ev-surface) 8px 16px); }
.ev-article .ev-tile-name { font-size: 12px; font-weight: 700; line-height: 1.35; overflow-wrap: anywhere; }
.ev-article .ev-tile-price { font-size: 11px; color: var(--ev-muted); }
@media (max-width: 480px) { .ev-article .ev-tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; } .ev-article .ev-tile { padding: 4px; } .ev-article .ev-tile-name { font-size: 11px; } }
@media (prefers-reduced-motion: reduce) { .ev-article .ev-tile { transition: none; } .ev-article .ev-tile:hover { transform: none; } }
/* v14: official text quoted word for word */
.ev-article .ev-oq { margin: 0 0 14px; background: var(--ev-surface); border: 1px solid var(--ev-line); border-radius: 12px; padding: 12px 16px 14px; }
.ev-article .ev-oq-from { font-size: 13px; color: var(--ev-muted); font-weight: 600; margin-bottom: 6px; }
.ev-article .ev-oq-title { margin: 0 0 4px; font-weight: 700; font-size: 14px; }
.ev-article .ev-oq-text { margin: 0; padding: 2px 0 2px 12px; border-left: 3px solid var(--ev-cyan); font-size: 14px; line-height: 1.8; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
/* Goods the site already has: the site's own cards and pages. */
.ev-article .ev-buy-site { border-color: var(--ev-cyan); background: var(--ev-soft-cyan); }
.ev-article .ev-buy-site:hover { border-color: var(--ev-cyan); background: var(--ev-soft-cyan); filter: brightness(.97); }
.ev-article .ev-cat-items { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 4px; font-size: 13px; }
.ev-article .ev-cat-items li { display: flex; flex-wrap: wrap; gap: 2px 8px; align-items: baseline; padding: 6px 0; border-bottom: 1px solid var(--ev-line); min-width: 0; }
.ev-article .ev-cat-items a { color: var(--ev-ink); overflow-wrap: anywhere; }
.ev-article .ev-cat-meta { color: var(--ev-muted); font-size: 12px; font-variant-numeric: tabular-nums; }
.ev-article .ev-tile-site { align-self: flex-start; font-size: 10px; font-weight: 700; color: var(--ev-live); background: var(--ev-live-bg); border-radius: 999px; padding: 0 6px; }
/* v19: official event links at the top, and the site's own cards for goods already on the site */
.ev-article .ev-official-links { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 4px; }
.ev-article .ev-olink { display: inline-flex; align-items: center; gap: 4px; min-height: 40px; padding: 0 14px; border-radius: 999px; background: var(--ev-navy); color: var(--ev-on-navy); box-shadow: inset 0 -2px 0 var(--ev-pink); font-weight: 700; font-size: 13px; text-decoration: none; }
.ev-article .ev-olink:hover { filter: brightness(1.08); }
.ev-article .ev-tile-ext .ev-tile-site { margin-top: auto; }
.ev-article .ev-good-site .ev-tiles { margin-bottom: 4px; }
.ev-article .ev-perks li { border-left: 3px solid var(--ev-pink); padding-left: 10px; }
.ev-article .ev-tile-add { border-style: dashed; }
.ev-article .ev-perk-tiles { margin-top: 8px; }
/* v21: related events, cards both ways */
.ev-article .ev-related { display: grid; gap: 18px; }
.ev-article .ev-rel { display: grid; gap: 8px; }
.ev-article .ev-rel-label { font-family: var(--ev-font-head); font-weight: 700; font-size: 15px; margin: 0; }
.ev-article .ev-rel .ev-small { margin: 0; }
.ev-article .ev-rel-cards { display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); }
.ev-article .ev-rel-cards .ev-camp-card { max-width: none; }
/* v29: the event first, the dates as a styled table, every perk item in one grid, shorter paragraphs */
.ev-article .ev-sub { margin: 20px 0 8px; font-family: var(--ev-font-head); font-weight: 700; font-size: 15px; display: flex; align-items: center; gap: 8px; }
.ev-article .ev-sub::before { content: ""; width: 4px; height: 1em; border-radius: 2px; background: var(--ev-cyan); }
.ev-article .ev-about-text p { max-width: 65ch; margin: 0 0 12px; font-size: 15.5px; }
.ev-article .ev-points { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: 10px; margin: 16px 0 4px; align-items: start; }
.ev-article .ev-point { background: var(--ev-surface); border: 1px solid var(--ev-line); border-top: 3px solid var(--ev-cyan); border-radius: 12px; padding: 12px 14px; min-width: 0; }
.ev-article .ev-point-label { margin: 0 0 4px; font-family: var(--ev-font-head); font-weight: 700; font-size: 14.5px; line-height: 1.45; }
.ev-article .ev-point-text { margin: 0; font-size: 14px; line-height: 1.7; overflow-wrap: anywhere; }
.ev-article .ev-oq-about { border: 0; background: linear-gradient(135deg, var(--ev-soft-cyan), var(--ev-soft-pink)); }
.ev-article .ev-oq-about .ev-oq-text { border-left-color: var(--ev-pink); font-size: 15px; }
.ev-article .ev-oq-fold { margin: 0 0 10px; border: 1px solid var(--ev-line); border-radius: 12px; background: var(--ev-surface); }
.ev-article .ev-oq-fold > summary { cursor: pointer; padding: 10px 14px; font-size: 14px; font-weight: 700; }
.ev-article .ev-oq-fold-label { font-size: 11px; font-weight: 700; color: var(--ev-muted); border: 1px solid var(--ev-line); border-radius: 999px; padding: 0 8px; margin-right: 8px; }
.ev-article .ev-oq-fold .ev-oq { margin: 0; border: 0; border-top: 1px solid var(--ev-line); border-radius: 0 0 12px 12px; }
.ev-article .ev-dbadge { display: flex; flex-direction: column; align-items: center; justify-content: center; flex: none; width: 58px; min-height: 58px; border-radius: 12px; background: var(--ev-navy); color: var(--ev-on-navy); line-height: 1.1; }
.ev-article .ev-dbadge b { font-family: var(--ev-font-head); font-size: 17px; font-variant-numeric: tabular-nums; }
.ev-article .ev-dbadge small { font-size: 11px; font-weight: 700; margin-top: 3px; opacity: .85; }
.ev-article .ev-prog { display: grid; gap: 10px; }
.ev-article .ev-pg { display: flex; gap: 14px; align-items: flex-start; background: var(--ev-surface); border: 1px solid var(--ev-line); border-radius: 14px; padding: 14px; }
.ev-article .ev-pg-body { flex: 1; min-width: 0; display: grid; gap: 6px; }
.ev-article .ev-pg h3 { margin: 0; font-size: 16px; overflow-wrap: anywhere; }
.ev-article .ev-pg-meta { margin: 0; font-size: 13px; color: var(--ev-muted); font-variant-numeric: tabular-nums; }
.ev-article .ev-pg-sub { margin: 4px 0 0; font-size: 12px; font-weight: 700; color: var(--ev-muted); }
.ev-article .ev-pg-note { margin: 0; font-size: 13px; }
.ev-article .ev-sched { list-style: none; margin: 0; padding: 0; display: grid; }
.ev-article .ev-sched-year { font-family: var(--ev-font-head); font-weight: 700; font-size: 14px; color: var(--ev-muted); padding: 12px 0 4px; }
.ev-article .ev-si { display: flex; gap: 14px; align-items: flex-start; padding: 10px 0; border-bottom: 1px dashed var(--ev-line); }
.ev-article .ev-si .ev-dbadge { background: var(--ev-k-bg); color: var(--ev-k-ink); }
.ev-article .ev-si.ev-k-event .ev-dbadge { background: var(--ev-navy); color: var(--ev-on-navy); box-shadow: inset 0 -3px 0 var(--ev-cyan); }
.ev-article .ev-si-body { flex: 1; min-width: 0; }
.ev-article .ev-si-body p { margin: 0; }
.ev-article .ev-si-head { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 8px; font-size: 15px; line-height: 1.5; }
.ev-article .ev-kchip { font-size: 11px; font-weight: 700; border-radius: 999px; padding: 0 8px; line-height: 1.8; background: var(--ev-k-bg); color: var(--ev-k-ink); }
.ev-article .ev-si-body .ev-si-when { margin-top: 2px; font-size: 14px; font-variant-numeric: tabular-nums; }
.ev-article .ev-si-where { font-size: 13px; color: var(--ev-muted); }
.ev-article .ev-si-note { font-size: 13px; }
.ev-article .ev-k-sale { --ev-k-bg: var(--ev-soft-pink); --ev-k-ink: var(--ev-primary); }
.ev-article .ev-k-event { --ev-k-bg: var(--ev-live-bg); --ev-k-ink: var(--ev-live); }
.ev-article .ev-k-release { --ev-k-bg: var(--ev-soft-star); --ev-k-ink: var(--ev-mixed); }
.ev-article .ev-k-stream { --ev-k-bg: var(--ev-soft-violet); --ev-k-ink: var(--ev-violet); }
.ev-article .ev-k-campaign { --ev-k-bg: var(--ev-mixed-bg); --ev-k-ink: var(--ev-mixed); }
.ev-article .ev-k-news { --ev-k-bg: var(--ev-ended-bg); --ev-k-ink: var(--ev-ended); }
.ev-article .ev-cards-list { list-style: none; padding: 0; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.ev-article .ev-cards-list li { display: grid; gap: 2px; align-content: start; background: var(--ev-surface); border: 1px solid var(--ev-line); border-radius: 12px; padding: 10px 14px; font-size: 14px; line-height: 1.7; min-width: 0; overflow-wrap: anywhere; }
.ev-article .ev-perk-grid { grid-template-columns: repeat(auto-fill, minmax(124px, 1fr)); margin-bottom: 14px; }
.ev-article .ev-camps { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 10px; }
.ev-article .ev-camp { display: grid; gap: 6px; align-content: start; min-width: 0; background: var(--ev-surface); border: 1px solid var(--ev-line); border-left: 4px solid var(--ev-pink); border-radius: 12px; padding: 12px 14px; }
.ev-article .ev-camp-wide { grid-column: 1 / -1; }
.ev-article .ev-camp h3 { margin: 0; font-size: 15px; overflow-wrap: anywhere; }
.ev-article .ev-camp-meta { margin: 0; display: grid; gap: 2px; font-size: 13px; }
.ev-article .ev-camp-meta > div { display: grid; grid-template-columns: 3em minmax(0, 1fr); gap: 8px; }
.ev-article .ev-camp-meta dt { color: var(--ev-muted); font-weight: 700; }
.ev-article .ev-camp-meta dd { margin: 0; }
.ev-article .ev-camp-text p { margin: 0 0 6px; font-size: 14px; line-height: 1.75; }
.ev-article .ev-camp-items { margin: 0; font-size: 13px; }
.ev-article .ev-camp-items span { display: inline-block; font-size: 11px; font-weight: 700; color: var(--ev-primary); background: var(--ev-soft-pink); border-radius: 999px; padding: 0 8px; margin-right: 6px; }
.ev-article .ev-more { margin-top: 12px; border: 1px solid var(--ev-line); border-radius: 12px; background: var(--ev-surface); }
.ev-article .ev-more > summary { cursor: pointer; padding: 10px 14px; font-weight: 700; font-size: 14px; }
.ev-article .ev-roles-list { padding: 0 16px 14px 32px; font-size: 13px; }
.ev-article .ev-jump { font-weight: 700; }
@media (max-width: 520px) {
  .ev-article .ev-dbadge { width: 50px; min-height: 52px; }
  .ev-article .ev-dbadge b { font-size: 15px; }
  .ev-article .ev-pg { padding: 12px; gap: 10px; }
  .ev-article .ev-si { gap: 10px; }
  .ev-article .ev-perk-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.ev-article .ev-gallery-event { grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); }
.ev-article .ev-gallery-compact { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
@media (max-width: 520px) { .ev-article .ev-gallery-compact, .ev-article .ev-gallery-event { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.ev-article .ev-perk-grid .ev-tile-price { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ev-article .ev-more-in { padding: 0 14px 14px; }
.ev-article .ev-point-pic { padding-top: 0; overflow: hidden; display: flex; flex-direction: column; }
.ev-article .ev-point-img { margin: 0 -14px 10px; }
/* The whole official image, uncropped: announcement visuals carry text at their edges. */
.ev-article .ev-point-img-img { display: block; width: 100%; height: auto; max-height: 340px; object-fit: contain; background: var(--ev-ended-bg); }
.ev-article .ev-point-credit { margin: 6px 0 0; font-size: 11px; color: var(--ev-muted); }
.ev-article .ev-point-credit a { color: var(--ev-muted); }
/* v29 contents box */
.ev-article .ev-toc { display: block; margin: 22px 0 6px; padding: 0; border: 1px solid var(--ev-line); border-radius: 14px; background: var(--ev-surface); }
.ev-article .ev-toc > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 10px; padding: 12px 16px; font-family: var(--ev-font-head); font-weight: 700; font-size: 16px; }
.ev-article .ev-toc > summary::-webkit-details-marker { display: none; }
.ev-article .ev-toc > summary::before { content: ""; width: 4px; height: 1.1em; border-radius: 2px; background: linear-gradient(var(--ev-pink), var(--ev-cyan)); }
.ev-article .ev-toc-toggle { margin-left: auto; font-family: var(--ev-font-body); font-size: 12px; font-weight: 700; color: var(--ev-muted); border: 1px solid var(--ev-line); border-radius: 999px; padding: 0 10px; }
.ev-article .ev-toc[open] .ev-toc-toggle::after { content: "閉じる"; }
.ev-article .ev-toc:not([open]) .ev-toc-toggle::after { content: "開く"; }
.ev-article .ev-toc-list { counter-reset: toc; list-style: none; margin: 0; padding: 0 16px 14px; display: grid; gap: 8px; }
@media (min-width: 760px) { .ev-article .ev-toc-list { display: block; columns: 2; column-gap: 36px; } .ev-article .ev-toc-list > li { break-inside: avoid; margin-bottom: 10px; } }
.ev-article .ev-toc-list > li { counter-increment: toc; counter-reset: tocsub; }
.ev-article .ev-toc-list > li > a { display: flex; align-items: baseline; gap: 8px; color: var(--ev-ink); text-decoration: none; font-weight: 700; font-size: 14.5px; line-height: 1.6; }
.ev-article .ev-toc-list > li > a::before { content: counter(toc); flex: none; display: inline-grid; place-items: center; width: 1.6em; height: 1.6em; border-radius: 50%; background: var(--ev-navy); color: var(--ev-on-navy); font-size: 11px; font-variant-numeric: tabular-nums; }
.ev-article .ev-toc-sub { list-style: none; margin: 2px 0 0 calc(1.6em + 8px); padding: 0; display: grid; gap: 1px; }
.ev-article .ev-toc-sub li { counter-increment: tocsub; }
.ev-article .ev-toc-sub a { display: flex; align-items: baseline; gap: 6px; color: var(--ev-muted); text-decoration: none; font-size: 13px; line-height: 1.6; }
.ev-article .ev-toc-sub a::before { content: counter(toc) "-" counter(tocsub); flex: none; min-width: 2.4em; color: var(--ev-primary); font-size: 11.5px; font-weight: 700; font-variant-numeric: tabular-nums; }
.ev-article .ev-toc a:hover { color: var(--ev-primary); text-decoration: underline; }
.ev-article .ev-to-toc { margin-left: auto; align-self: center; font-family: var(--ev-font-body); font-size: 12px; font-weight: 700; color: var(--ev-muted); text-decoration: none; white-space: nowrap; }
.ev-article .ev-to-toc:hover { color: var(--ev-primary); }
/* v30: a shorter contents box; each section's sub-headings open from its 「N項目」 control. On the site that control is a
   nested <details> (no JS): closed it sits beside the section link, open it takes the full row above its list. */
.ev-article .ev-toc-list > li { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: 8px; }
.ev-article .ev-toc-sub { grid-column: 1 / -1; margin-top: 4px; }
.ev-article .ev-toc-list > li > details { min-width: 0; }
.ev-article .ev-toc-list > li > details[open] { grid-column: 1 / -1; }
.ev-article .ev-toc-list > li > details > summary, .ev-article summary.ev-toc-more { display: block; width: fit-content; margin-left: auto; list-style: none; font-family: var(--ev-font-body); font-size: 12.5px; font-weight: 700; line-height: 1.5; min-height: 36px; box-sizing: border-box; color: var(--ev-muted); background: var(--ev-surface); border: 1px solid var(--ev-line); border-radius: 999px; padding: 7px 12px; cursor: pointer; white-space: nowrap; }
.ev-article .ev-toc-list > li > details > summary::-webkit-details-marker { display: none; }
.ev-article .ev-toc-list > li > details > summary::after { content: " ▾"; }
.ev-article .ev-toc-list > li > details[open] > summary { color: var(--ev-primary); border-color: var(--ev-primary); }
.ev-article .ev-toc-list > li > details[open] > summary::after { content: " ▴"; }
@media (pointer: coarse) { .ev-article .ev-toc-list > li > details > summary { min-height: 44px; } }
.ev-article .ev-points { display: block; margin: 20px 0 4px; border-top: 1px solid var(--ev-line); }
.ev-article .ev-point, .ev-article .ev-point-pic { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-areas: "label" "text" "go"; gap: 8px; padding: 18px 0; overflow: visible;
  background: none; border: 0; border-bottom: 1px solid var(--ev-line); border-radius: 0; }
.ev-article .ev-point-pic { grid-template-areas: "label" "text" "img" "go"; }
@media (min-width: 760px) { .ev-article .ev-point-pic { grid-template-columns: minmax(0, 1fr) minmax(0, 320px); grid-template-rows: auto auto 1fr; grid-template-areas: "label img" "text img" "go img"; column-gap: 24px; } }
.ev-article .ev-point-label { grid-area: label; margin: 0; display: flex; align-items: baseline; gap: 10px; font-size: 17px; line-height: 1.45; }
.ev-article .ev-point-label::before { content: ""; flex: none; width: 4px; height: .95em; border-radius: 2px; background: linear-gradient(var(--ev-pink), var(--ev-cyan)); transform: translateY(.12em); }
.ev-article .ev-point-img { grid-area: img; margin: 0; min-width: 0; }
.ev-article .ev-point-img-img { border-radius: 10px; max-height: 300px; }
.ev-article .ev-point-credit { margin: 4px 0 0; font-size: 11px; line-height: 1.5; color: var(--ev-muted); }
.ev-article .ev-point-text { grid-area: text; min-width: 0; margin: 0; font-size: 15px; line-height: 1.8; max-width: 65ch; }
.ev-article .ev-point-go { grid-area: go; align-self: start; display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 0; }
.ev-article .ev-go { box-sizing: border-box; display: inline-flex; align-items: center; gap: 8px; max-width: 100%; min-height: 40px; padding: 7px 14px; border-radius: 18px; border: 1.5px solid var(--ev-primary); background: var(--ev-surface); color: var(--ev-primary); font-weight: 700; font-size: 13.5px; line-height: 1.45; text-decoration: none; }
.ev-article .ev-go-kind { flex: none; font-size: 11px; line-height: 1.6; padding: 0 6px; border-radius: 6px; background: var(--ev-soft-pink); white-space: nowrap; }
.ev-article .ev-go-name { min-width: 0; text-wrap: balance; word-break: auto-phrase; }
.ev-article .ev-go-arrow { flex: none; font-size: 15px; }
.ev-article .ev-go:hover { background: var(--ev-soft-pink); }
@keyframes ev-go-flash { from { box-shadow: 0 0 0 4px #ff3d8b; } to { box-shadow: 0 0 0 4px transparent; } }
.ev-article .ev-ggroup:target, .ev-article .ev-tile:target, .ev-article .ev-camp:target, .ev-article .ev-pg:target, .ev-article .ev-good:target { animation: ev-go-flash 2.4s ease-out; }
.ev-article .ev-tiles { grid-template-columns: repeat(auto-fill, minmax(min(100%, 170px), 1fr)); gap: 12px; }
.ev-article .ev-tile { padding: 8px; gap: 6px; border-radius: 12px; }
.ev-article img.ev-tile-img { width: 100%; height: auto; aspect-ratio: 1; object-fit: contain; background: var(--ev-ended-bg); }
/* Live card thumbnails (/media/thumb/v1/320, 320x240) are white-padded 4:3 pictures with the goods in the central square;
   the loader marks exactly the images it replaced with one (class ev-live-thumb), so nothing else is cropped. */
.ev-article img.ev-live-thumb { object-fit: cover; }
.ev-article .ev-tile-name { font-size: 14px; line-height: 1.45; }
.ev-article .ev-tile-price { font-size: 13px; }
.ev-article .ev-tile-site { font-size: 11.5px; padding: 1px 8px; }
@media (max-width: 480px) { .ev-article .ev-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .ev-article .ev-tile { padding: 6px; } .ev-article .ev-tile-name { font-size: 13.5px; } .ev-article .ev-tile-price { font-size: 12.5px; } }
@media (prefers-reduced-motion: reduce) { .ev-article .ev-ggroup:target, .ev-article .ev-tile:target, .ev-article .ev-camp:target, .ev-article .ev-pg:target, .ev-article .ev-good:target { animation: none; outline: 3px solid var(--ev-pink); } }
/* v30 review: short tile names with sale-round tags, slimmer frames on the phone, slim no-image strips, footnote marks
   kept on their line, Japanese line breaking */
.ev-article .ev-nb { white-space: nowrap; }
.ev-article .ev-tile-name, .ev-article .ev-point-label, .ev-article .ev-ggroup h3, .ev-article .ev-camp h3, .ev-article .ev-pg h3 { word-break: auto-phrase; text-wrap: pretty; }
.ev-article .ev-tile-tags { display: flex; flex-wrap: wrap; gap: 4px; }
.ev-article .ev-tile-tag { font-size: 11.5px; font-weight: 700; line-height: 1.6; padding: 0 7px; border-radius: 6px; color: var(--ev-mixed); background: var(--ev-mixed-bg); }
.ev-article .ev-tile-add { border-style: solid; }
.ev-article .ev-tile-none { aspect-ratio: auto; min-height: 40px; font-size: 12px; }
.ev-article .ev-gimg-none { aspect-ratio: auto; min-height: 0; padding: 8px 16px; display: block; font-size: 12px; background: var(--ev-ended-bg); }
@media (max-width: 480px) {
  .ev-article .ev-ggroup { padding: 14px 0 12px; border-width: 1px 0 0; border-radius: 0; background: none; }
  .ev-article .ev-ggroups { gap: 6px; }
  .ev-article .ev-tiles { gap: 8px; }
  .ev-article .ev-tile { padding: 5px; }
}
