/* ─── CalView: month calendar (Google-Calendar style) ───────────────────────
   Shared by /events, /me/events and /admin/cups. Brand-neutral: black ink,
   1px hairlines, yellow only as the "today" accent. Pages tune the vars. */
.cv{--cv-ink:#0A0A0A;--cv-mute:#737373;--cv-line:#E5E5E5;--cv-paper:#fff;--cv-paper2:#F7F7F5;--cv-acc:#FFD43B;--cv-radius:0px;--cv-mono:'JetBrains Mono','Geist',ui-monospace,monospace;
  color:var(--cv-ink);font-family:inherit;}
.cv-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px;}
.cv-title{font-weight:800;font-size:clamp(18px,2.4vw,26px);text-transform:uppercase;letter-spacing:-.01em;font-style:italic;margin-right:auto;}
.cv-title .yr{color:var(--cv-mute);font-weight:600;margin-left:8px;font-size:.75em;}
.cv-nav{display:inline-flex;gap:6px;}
.cv-btn{font-family:var(--cv-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;background:var(--cv-paper);color:var(--cv-ink);border:1px solid var(--cv-line);padding:7px 12px;cursor:pointer;border-radius:var(--cv-radius);line-height:1;transition:border-color .15s;}
.cv-btn:hover{border-color:var(--cv-ink);}
.cv-btn.ico{padding:7px 10px;font-size:13px;}
.cv-legend{display:flex;gap:12px;flex-wrap:wrap;font-family:var(--cv-mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--cv-mute);width:100%;margin-top:2px;}
.cv-legend i{display:inline-block;width:10px;height:10px;vertical-align:-1px;margin-right:5px;border:1px solid var(--cv-ink);background:#fff;border-radius:2px;}
.cv-legend i.challenge,.cv-legend i.ticket{background:var(--cv-ink);}
.cv-legend i.ticket{background:#404040;}
.cv-legend i.community{background:var(--cv-acc);}
.cv-legend i.trip{background:repeating-linear-gradient(135deg,#fff 0 2px,var(--cv-ink) 2px 4px);}
.cv-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--cv-line);border-radius:var(--cv-radius);overflow:hidden;background:var(--cv-line);gap:1px;}
.cv-dow{background:var(--cv-paper2);font-family:var(--cv-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--cv-mute);padding:8px 8px;text-align:left;}
.cv-cell{background:var(--cv-paper);min-height:112px;padding:6px 6px 8px;display:flex;flex-direction:column;gap:3px;position:relative;cursor:default;}
.cv-cell.out{background:var(--cv-paper2);}
.cv-cell.out .cv-d{color:var(--cv-mute);opacity:.6;}
.cv-cell.past .cv-chip{opacity:.62;}
.cv-d{font-family:var(--cv-mono);font-size:11px;font-weight:700;color:var(--cv-ink);display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;margin-bottom:2px;align-self:flex-start;}
.cv-cell.today .cv-d{background:var(--cv-ink);color:#fff;box-shadow:0 0 0 2px var(--cv-acc);}
.cv{position:relative;}
.cv-chip{display:flex;align-items:center;gap:5px;font-family:var(--cv-mono);font-size:10px;line-height:1.25;letter-spacing:.02em;padding:3px 6px;border:1px solid var(--cv-ink);background:#fff;color:var(--cv-ink);text-decoration:none;white-space:nowrap;overflow:hidden;border-radius:var(--cv-radius);transition:transform .12s;}
.cv-chip .cv-txt{display:block;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cv-chip.has-img{padding-left:3px;}
.cv-thumb{width:22px;height:22px;flex:0 0 22px;object-fit:cover;border-radius:2px;background:#f2f2f0;display:block;}
.cv-chip:hover{transform:translateX(1px);}
/* Hover card (desktop): a bigger look at the event without leaving the grid. */
.cv-pop{position:absolute;z-index:20;width:280px;background:var(--cv-paper);border:1px solid var(--cv-ink);box-shadow:0 6px 18px rgba(0,0,0,.14);pointer-events:none;opacity:0;transform:translateY(3px);transition:opacity .12s,transform .12s;border-radius:var(--cv-radius);overflow:hidden;}
.cv-pop.show{opacity:1;transform:none;}
.cv-pop-img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;background:#f2f2f0;}
.cv-pop-body{padding:12px 14px 14px;}
.cv-pop-kind{font-family:var(--cv-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--cv-mute);font-weight:700;}
.cv-pop-title{font-weight:800;font-size:14px;line-height:1.25;margin-top:4px;}
.cv-pop-meta{font-family:var(--cv-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--cv-mute);margin-top:6px;line-height:1.4;}
.cv-chip b{font-weight:700;}
.cv-chip .t{opacity:.7;margin-right:4px;}
.cv-chip.challenge{background:var(--cv-ink);color:#fff;}
.cv-chip.ticket{background:#404040;border-color:#404040;color:#fff;}
.cv-chip.community{background:var(--cv-acc);}
.cv-chip.trip{background:#fff;border-style:dashed;}
.cv-chip.mine{box-shadow:inset 0 0 0 1px var(--cv-acc);}
.cv-chip.cont{border-left-color:transparent;border-radius:0;margin-left:-7px;padding-left:12px;}
.cv-cell:first-child .cv-chip.cont,.cv-cell:nth-child(7n+1) .cv-chip.cont{margin-left:0;padding-left:6px;}
.cv-chip.more{background:transparent;border-color:transparent;color:var(--cv-mute);cursor:pointer;padding-left:0;}
.cv-chip.more:hover{color:var(--cv-ink);}
.cv-cell:not(.open) .cv-chip.hid{display:none;}
.cv-cell.open .cv-chip.more{display:none;}
.cv-empty{padding:26px 0 6px;font-family:var(--cv-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--cv-mute);}
/* Mobile: compact cells with dots; tapping a day lists it below the grid. */
.cv-dots{display:none;flex-wrap:wrap;gap:3px;}
.cv-dots i{width:6px;height:6px;border-radius:50%;background:var(--cv-ink);border:1px solid var(--cv-ink);}
.cv-dots i.ride,.cv-dots i.trip{background:#fff;}
.cv-dots i.community{background:var(--cv-acc);}
.cv-day{display:none;margin-top:12px;border:1px solid var(--cv-line);background:var(--cv-paper);padding:12px;border-radius:var(--cv-radius);}
.cv-day h4{margin:0 0 8px;font-family:var(--cv-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;}
.cv-day .cv-chip{white-space:normal;margin-bottom:5px;font-size:11px;padding:7px 9px;}
.cv-day .cv-chip .cv-txt{white-space:normal;}
.cv-day .cv-thumb{width:34px;height:34px;flex-basis:34px;}
@media(max-width:680px){
  .cv-cell{min-height:58px;padding:4px;cursor:pointer;}
  .cv-cell .cv-chip{display:none;}
  .cv-dots{display:flex;}
  .cv-cell.sel{outline:2px solid var(--cv-ink);outline-offset:-2px;}
  .cv-day.show{display:block;}
  .cv-dow{padding:6px 4px;font-size:9px;}
  .cv-d{width:22px;height:22px;font-size:10px;}
}

.cv-chip.event{background:#3f75d8;border-color:#3f75d8;color:#fff;}
.cv-legend i.event,.cv-dots i.event{background:#3f75d8;}
