/* /shows "Card shows & markets" and /tournaments (B30; B31: days of cards, posters, games, past shows). Loaded after styles.css and shop.css (top bar, toast, footer). Everything here starts
   with sh. Colours are the site's theme variables (styles.css: --paper text, --muted, --ink, --shell, --vinyl, --gold, and the
   readable text colours --goldT / --ok / --bad / --info / --violet / --pink that switch with [data-theme="light"]), so the page
   follows the light / dark theme. Type colours: card show gold, flea market green, convention violet, tournament blue, store pink. */
.shPage{
  --sh-line:rgba(var(--fgr),.1); --sh-line2:rgba(var(--fgr),.17); --sh-tint:rgba(var(--fgr),.04); --sh-tint2:rgba(var(--fgr),.07); --sh-tint3:rgba(var(--fgr),.12);
  --sh-gold-tint:color-mix(in srgb,var(--gold) 16%,transparent); --sh-gold-line:color-mix(in srgb,var(--gold) 45%,transparent); --sh-on-gold:#1A1206;
  --sh-shade:color-mix(in srgb,var(--ink) 78%,transparent);
  --k-cardshow:var(--goldT); --k-flea:var(--ok); --k-convention:var(--violet); --k-tournament:var(--info); --k-store:var(--pink);
  --g-pokemon:#E8B84B; --g-mtg:#D9774A; --g-yugioh:#9C7BD6; --g-multi:var(--sh-line2);
}
body.shPage{padding-bottom:30px;overflow-x:hidden;background:var(--shell);color:var(--paper)}
body.shNoScroll{overflow:hidden}
.shPage .top{height:auto;min-height:0;flex-wrap:nowrap;padding:8px 16px}
.shPage .brand::before{display:none}
.shPage .pBack{display:flex;align-items:center;gap:10px;min-width:0}
.shPage .pBack .brand{font-size:15px;white-space:nowrap}
.shPage .pHome{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;background:var(--sh-tint2);color:var(--paper);flex:0 0 auto}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

.sh{max-width:1280px;margin:0 auto;padding:28px 22px 20px}
.shHead{max-width:860px}
.shEyebrow{margin:0 0 8px;font-family:var(--util);font-size:14px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--goldT)}
.sh h1{margin:0;font-size:clamp(30px,4.4vw,48px);font-weight:900;letter-spacing:-.03em;line-height:1.05}
.shLede{margin:12px 0 0;font-size:16.5px;line-height:1.55;color:var(--muted)}
.shHeadBtns{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.sh section{margin-top:26px}
.sh h2{font-size:22px;margin:0 0 10px;letter-spacing:-.02em}

.shBtn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:0 15px;border-radius:9px;font:inherit;font-size:14.5px;font-weight:700;text-decoration:none;cursor:pointer;white-space:nowrap;border:0}
.shBtn.gold{background:var(--gold);color:var(--sh-on-gold)}
.shBtn.gold:hover{filter:brightness(1.08)}
.shBtn.ghost{background:var(--sh-tint2);color:var(--paper);border:1px solid var(--sh-line2)}
.shBtn.ghost:hover{border-color:var(--gold)}
.shBtn.sm{min-height:32px;padding:0 10px;font-size:13px;border-radius:7px}
.shBtn[disabled]{opacity:.55;cursor:default}
.shLink{background:none;border:0;padding:0;font:inherit;color:var(--goldT);text-decoration:underline;cursor:pointer}
.shFine{color:var(--muted);font-size:14.5px;line-height:1.5;max-width:860px}

.shFind{display:grid;gap:12px;padding:14px;border:1px solid var(--sh-line);border-radius:14px;background:var(--sh-tint)}
.shRow{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.shSel{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted);min-width:0}
.shSel select,.shSel input{height:42px;padding:0 10px;border-radius:9px;border:1px solid var(--sh-line2);background:var(--ink);color:var(--paper);font:inherit;font-size:16px;min-width:0;max-width:100%}
.shArea{flex:0 1 320px}.shArea select{width:100%}
.shDate input{width:160px}
.shHere{font-size:14px;color:var(--muted);align-self:center}
.shChips{display:flex;flex-wrap:wrap;gap:6px}
.shChip{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 12px;border-radius:18px;border:1px solid var(--sh-line2);background:transparent;color:var(--muted);font:inherit;font-size:13.5px;font-weight:600;cursor:pointer}
.shChip[aria-pressed="true"]{background:var(--sh-gold-tint);border-color:var(--sh-gold-line);color:var(--paper)}
.shChip:hover{border-color:var(--gold)}
.kDot{display:inline-block;width:10px;height:10px;border-radius:50%;flex:0 0 auto;background:var(--k-cardshow)}
.kDot.k-flea{background:var(--k-flea)}.kDot.k-convention{background:var(--k-convention)}.kDot.k-tournament{background:var(--k-tournament)}.kDot.k-store{background:var(--k-store)}
.shCountRow{align-items:center}
.shCount{font-size:14px;color:var(--muted);flex:1 1 auto}
.gDot{display:inline-block;width:10px;height:10px;border-radius:3px;flex:0 0 auto;background:var(--g-multi)}
.gDot.g-pokemon{background:var(--g-pokemon)}.gDot.g-mtg{background:var(--g-mtg)}.gDot.g-yugioh{background:var(--g-yugioh)}
.shGamesBig .shChip{min-height:42px;padding:0 16px;font-size:15px}

/* B31: days of cards (no month grid). A day heading is big; Saturdays and Sundays get the gold edge. Cards: 3 a row on a
   computer, 2 on a tablet, 1 on a phone. A poster leads its card; without one a small picture sits beside the details. */
.shDays{margin-top:22px;display:grid;gap:26px}
.shDay{min-width:0}
.shDH{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 12px;padding:0 0 8px;margin:0 0 12px;border-bottom:2px solid var(--sh-line2)}
.shDH h2{margin:0;font-size:clamp(22px,2.6vw,30px);font-weight:900;letter-spacing:-.02em;line-height:1.1}
.shDH .dw{color:var(--paper)}
.shDH .dd{color:var(--muted);font-weight:700}
.shDay.wk .shDH{border-bottom-color:var(--gold)}
.shDay.wk .shDH .dw{color:var(--goldT)}
.shDay.today .shDH .dw::before{content:"";display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--gold);margin:0 8px 3px 0;vertical-align:middle}
.shWk{font-family:var(--util);font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:2px 9px;border-radius:9px;background:var(--sh-gold-tint);color:var(--goldT)}
.shDN{margin-left:auto;font-size:14px;color:var(--muted)}
.shCards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.shCards>li{min-width:0;display:flex}
.shMoreDays{display:flex;justify-content:center}
.shEmpty{padding:18px;color:var(--muted)}

/* a show */
.shCard{flex:1 1 auto;border:1px solid var(--sh-line);border-radius:14px;background:var(--vinyl);display:flex;gap:12px;padding:12px;min-width:0;align-items:flex-start}
.shCard.hasPoster{flex-direction:column;padding:0;overflow:hidden;gap:0;align-items:stretch}
.shCard.hasPoster .shBody{padding:10px 12px 12px}
.shCard.cx{opacity:.8}
.shCard.cx h3{text-decoration:line-through}
.shBody{display:grid;gap:5px;min-width:0;flex:1 1 auto}
.shGen{flex:0 0 auto;width:52px;height:52px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--sh-tint2);color:var(--k-cardshow);border:1px solid var(--sh-line)}
.shGen.k-flea{color:var(--k-flea)}.shGen.k-convention{color:var(--k-convention)}.shGen.k-tournament{color:var(--k-tournament)}.shGen.k-store{color:var(--k-store)}
.shPoster{margin:0;background:var(--ink)}
.shPoster img{display:block;width:100%;aspect-ratio:4/3;object-fit:contain;background:var(--ink)}
.shPoster.big img{aspect-ratio:auto;max-height:60vh}
.shPoster figcaption{font-size:12px;color:var(--muted);padding:4px 12px 0;background:var(--vinyl)}
.shSheetIn .shPoster figcaption{padding:4px 0 0;background:transparent}
.shPoster figcaption a{color:var(--goldT)}
.shCard h3{margin:0;font-size:18px;line-height:1.25;overflow-wrap:anywhere}
.shCard h3 button{all:unset;cursor:pointer}
.shCard h3 button:hover,.shCard h3 button:focus-visible{text-decoration:underline}
.shTags{display:flex;flex-wrap:wrap;gap:5px 6px;align-items:center;font-family:var(--util);font-size:12.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.shKind{display:inline-flex;align-items:center;gap:6px;color:var(--paper)}
.shTag{padding:1px 8px;border-radius:9px;background:var(--sh-tint3);color:var(--paper)}
.shTag.ok{color:var(--ok)}.shTag.cx{color:var(--bad)}
.shGameTag{border-left:3px solid var(--g-multi)}
.shGameTag.g-pokemon{border-left-color:var(--g-pokemon)}.shGameTag.g-mtg{border-left-color:var(--g-mtg)}.shGameTag.g-yugioh{border-left-color:var(--g-yugioh)}
.shWhen{font-weight:700;font-size:15.5px}
.shWhere,.shMeta{color:var(--muted);font-size:14.5px;line-height:1.45;overflow-wrap:anywhere}
.shKm,.shCost{color:var(--paper);font-weight:700}
.shNote{font-size:14.5px;line-height:1.45}
.shActs{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.shActs a.shBtn{color:var(--paper)}
.shCheck{font-size:13px;color:var(--muted)}

/* past shows: closed until opened, searchable */
.shPast details{border:1px solid var(--sh-line);border-radius:14px;padding:4px 14px;background:var(--sh-tint)}
.shPast summary{cursor:pointer;font-size:19px;font-weight:800;padding:10px 0}
.shPastQ{max-width:420px;margin:4px 0 10px}.shPastQ input{width:100%}
.shPastList{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:4px}
.shPastRow{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:4px 12px;width:100%;text-align:left;padding:8px 10px;border-radius:9px;background:transparent;border:1px solid var(--sh-line);color:var(--paper);font:inherit;font-size:14.5px;cursor:pointer;align-items:baseline}
.shPastRow:hover{border-color:var(--gold)}
.shPastRow .pd{color:var(--muted);font-weight:700;white-space:nowrap}
.shPastRow .pn{overflow-wrap:anywhere}
.shPastRow .pc{color:var(--muted);font-size:13.5px;text-align:right}
.shPastRow.cx .pn{text-decoration:line-through}
.shPast details>.shBtn{margin:0 0 12px}

/* /tournaments: the official locators (links only) */
.shOffList{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.shOff{display:grid;gap:4px;padding:14px;border-radius:12px;border:1px solid var(--sh-line);border-left:5px solid var(--g-multi);background:var(--vinyl);color:var(--paper);text-decoration:none}
.shOff:hover{border-color:var(--gold)}
.shOff.g-pokemon{border-left-color:var(--g-pokemon)}.shOff.g-mtg{border-left-color:var(--g-mtg)}.shOff.g-yugioh{border-left-color:var(--g-yugioh)}
.shOff span{color:var(--muted);font-size:14px}

.shAreaList{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.shAreaList button{min-height:36px;padding:0 12px;border-radius:9px;border:1px solid var(--sh-line2);background:var(--sh-tint2);color:var(--paper);font:inherit;font-size:14px;cursor:pointer}
.shAreaList button[aria-pressed="true"]{border-color:var(--gold);background:var(--sh-gold-tint)}
.shAttr{margin-top:28px;font-size:13px;line-height:1.5;color:var(--muted);max-width:900px}
.shAttr a{color:var(--goldT)}

/* sheets (event details, forms) */
.shSheet{position:fixed;inset:0;z-index:1000;background:var(--sh-shade);display:flex;align-items:flex-start;justify-content:center;padding:5vh 14px;overflow:auto}
.shSheet[hidden]{display:none}
.shSheetIn{position:relative;width:100%;max-width:600px;background:var(--shell);border:1px solid var(--sh-line2);border-radius:14px;padding:20px 20px 18px}
.shSheetIn h2{margin:0 40px 8px 0;font-size:22px}
.shX{position:absolute;top:10px;right:10px;width:36px;height:36px;border-radius:8px;background:var(--sh-tint2);color:var(--paper);font-size:22px;line-height:1}
.shSheetIn .shCard{border:0;padding:0;background:transparent;flex-direction:column}
.shSheetIn .shCard.hasPoster .shBody{padding:10px 0 0}
.shSheetIn .shGen{display:none}
.shForm{display:grid;gap:10px}
.shForm label{display:flex;flex-direction:column;gap:4px;font-size:13.5px;color:var(--muted)}
.shForm input[type=file]{height:auto;padding:9px 10px;font-size:14px;cursor:pointer}   /* B38: poster with a submitted show */
.shForm input,.shForm select,.shForm textarea{height:42px;padding:0 10px;border-radius:9px;border:1px solid var(--sh-line2);background:var(--ink);color:var(--paper);font:inherit;font-size:16px;width:100%;min-width:0}
.shForm textarea{height:auto;min-height:80px;padding:8px 10px}
.shForm .two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.shForm .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.shForm .err{color:var(--bad);font-size:14px;margin:0}
.shForm .okMsg{color:var(--ok);font-size:15px;margin:0}
.shForm [aria-invalid="true"]{border-color:var(--bad)}

@media(max-width:1023px){
  .shCards{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:719px){
  .sh{padding:20px 16px 16px}
  .shFind{padding:12px}
  .shArea{flex:1 1 100%}
  .shDate{flex:1 1 calc(50% - 5px)}.shDate input{width:100%}
  .shForm .two{grid-template-columns:1fr}
  .shHeadBtns .shBtn{flex:1 1 auto}
  .shCountRow .shBtn{width:100%}
  .shOffList{grid-template-columns:1fr}
  .shPastRow{grid-template-columns:minmax(0,1fr)}.shPastRow .pc{text-align:left}
}
@media(max-width:599px){
  .shCards{grid-template-columns:minmax(0,1fr)}
}
