/* 大会デッキ検索(静的生成)用。生成元: scripts/build-tournament-pages.mjs
   トークン・共通部品は cards/cards.css と揃えている(cp- 接頭辞は共通) */
:root { --bg:#12141a; --panel:#171a21; --panel-2:#1f232c; --line:#262b36; --text:#e6e8ee; --muted:#9aa2b1; --accent:#d9a441; --accent-2:#6ea8fe; }
* { box-sizing:border-box; }
[hidden] { display:none !important; }
body { margin:0; background:var(--bg); color:var(--text); font:15px/1.7 system-ui,-apple-system,"Segoe UI",sans-serif; }
a { color:var(--accent-2); text-decoration:none; }
a:hover { text-decoration:underline; }
.cp-site { display:flex; flex-wrap:wrap; gap:10px 16px; align-items:center; justify-content:space-between; padding:12px 20px; border-bottom:1px solid var(--line); }
.cp-brand { display:flex; align-items:center; gap:10px; color:var(--text); font-weight:700; }
.cp-mark { display:grid; place-items:center; width:34px; height:34px; border-radius:8px; background:var(--accent); color:#201a0a; font-weight:800; letter-spacing:1px; }
.cp-site nav { display:flex; gap:14px; font-size:.9rem; }
.cp-crumb { padding:10px 20px; font-size:.82rem; color:var(--muted); max-width:1080px; margin:0 auto; }
.cp-crumb span { color:var(--text); }
.cp-main { max-width:1080px; margin:0 auto; padding:8px 20px 40px; }
.cp-scroll { overflow-x:auto; }
.cp-muted { color:var(--muted); font-size:.86rem; }
h1 { font-size:1.45rem; margin:.2em 0 .4em; line-height:1.35; }
h2 { font-size:1.02rem; border-left:3px solid var(--accent); padding-left:10px; margin:26px 0 10px; }
.sub { color:var(--muted); margin:0 0 18px; font-size:.92rem; }

/* ---- 一覧 ---- */
/* 説明文もスマホでは折りたたむ(PC幅では summary を隠して常時展開=従来と同じ1行表示) */
.about { margin:0 0 18px; }
.about > summary { display:none; cursor:pointer; font-weight:600; font-size:.9rem; color:var(--muted); }
.about > .sub { margin:0; }
.filter-box { background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:14px 16px; margin-bottom:18px; }
/* スマホでは縦に長くなりすぎるため折りたたむ(PC幅では summary を隠して常時展開) */
.filter-box > summary { display:none; cursor:pointer; font-weight:600; font-size:.9rem; }
.filter-count { display:inline-block; margin-left:8px; background:var(--accent); color:#201a0a; border-radius:999px; padding:0 8px; font-size:.75rem; font-weight:700; }
.filter-row { display:flex; flex-wrap:wrap; gap:8px 10px; }
.filter-row select, .filter-row input, .filter-row button { background:var(--panel-2); color:var(--text); border:1px solid var(--line); border-radius:8px; padding:7px 12px; font:inherit; font-size:.88rem; }
.filter-row input[type="search"] { flex:1; min-width:200px; }
.filter-row button { cursor:pointer; }
.filter-row button:hover { border-color:var(--accent); }
.filter-row select:focus, .filter-row input:focus, .filter-row button:focus-visible { outline:2px solid var(--accent-2); outline-offset:1px; }
.filter-hits { margin:0 0 10px; font-size:.82rem; color:var(--muted); }
.filter-period { align-items:center; margin-top:10px; font-size:.85rem; color:var(--muted); }
.filter-period input[type="date"] { background:var(--panel-2); color:var(--text); border:1px solid var(--line); border-radius:8px; padding:6px 10px; font:inherit; font-size:.85rem; }

table { width:100%; border-collapse:collapse; font-size:.9rem; }
thead th { text-align:left; padding:8px 10px; color:var(--muted); font-weight:600; font-size:.78rem; letter-spacing:.04em; border-bottom:1px solid var(--line); white-space:nowrap; }
/* ソート可能な見出し。▲▼は CSS ::after + aria-sort で出す(inline style 不使用=CSP style-src 'self' 準拠, #16) */
th[data-sort] { cursor:pointer; }
.th-sort { font:inherit; color:inherit; letter-spacing:inherit; background:none; border:none; padding:0; cursor:pointer; }
.th-sort:hover { color:var(--text); }
.th-sort:focus-visible { outline:2px solid var(--accent-2); outline-offset:2px; }
th[data-sort] .th-sort::after { content:"⇅"; opacity:.35; margin-left:4px; }
th[aria-sort="ascending"] .th-sort::after { content:"▲"; opacity:1; }
th[aria-sort="descending"] .th-sort::after { content:"▼"; opacity:1; }
/* スマホ用の並べ替えselect(PCは見出しクリックを使うので隠す, #16) */
.sort-mobile { display:none; align-items:center; gap:8px; margin:0 0 10px; font-size:.85rem; color:var(--muted); }
.sort-mobile select { background:var(--panel-2); color:var(--text); border:1px solid var(--line); border-radius:8px; padding:6px 10px; font:inherit; font-size:.85rem; }
.sort-mobile select:focus { outline:2px solid var(--accent-2); outline-offset:1px; }
tbody td { padding:10px; border-bottom:1px solid var(--line); vertical-align:middle; }
tbody tr.tr-link { cursor:pointer; }
tbody tr.tr-link:hover { background:rgba(255,255,255,.04); }
td.date { white-space:nowrap; color:var(--muted); font-variant-numeric:tabular-nums; }
td.num { text-align:right; font-variant-numeric:tabular-nums; color:var(--muted); }
.ev-name { font-weight:600; }
.ev-name a { color:var(--text); }
.ev-name a:hover { color:var(--accent-2); }
.ev-host { color:var(--muted); font-size:.8rem; margin-top:2px; }
.cat-badge { display:inline-block; border-radius:999px; padding:2px 10px; font-size:.74rem; font-weight:600; white-space:nowrap; }
/* 一覧の種別バッジ: 列が狭いPC幅は略称、カード表示になるスマホ幅は正式名を出す */
.cat-full { display:none; }
.cat-store { background:rgba(217,164,65,.15); color:var(--accent); border:1px solid rgba(217,164,65,.4); }
.cat-regional { background:rgba(110,168,254,.15); color:var(--accent-2); border:1px solid rgba(110,168,254,.4); }
.cat-nationals { background:rgba(47,158,107,.15); color:#7fd4a8; border:1px solid rgba(47,158,107,.4); }
.cat-ascent { background:rgba(224,123,208,.15); color:#e9a8dd; border:1px solid rgba(224,123,208,.4); }
td.country { white-space:nowrap; }

/* ---- 大会詳細 ---- */
.ev-head { background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:16px 18px; }
.ev-head h1 { margin:0 0 6px; font-size:1.3rem; }
.meta-row { display:flex; flex-wrap:wrap; gap:8px 14px; align-items:center; font-size:.88rem; color:var(--muted); }
td.rank { font-weight:700; font-variant-numeric:tabular-nums; white-space:nowrap; }
tr.top1 { background:rgba(217,164,65,.08); }
.player-name { font-weight:600; }
td.rec, td.pct { font-variant-numeric:tabular-nums; color:var(--muted); white-space:nowrap; }
.deck-link { white-space:nowrap; }
.no-deck { color:var(--muted); font-size:.82rem; }

td.score, th.score { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
td.score { font-weight:600; }

/* ---- チーム戦の順位表(#65): 1チーム = 1 <tbody class="team-block">。
   モック(docs/design/65-チーム戦対応/モック_順位表.html)の案Aをそのまま実装した */
.standings td:empty { padding:0; }
.team-block { border-bottom:2px solid var(--line); }
.team-row td { background:rgba(110,168,254,.06); }
.team-row td.deck-id, .team-row td:last-child { background:rgba(110,168,254,.06); border-bottom-color:transparent; }
.team-name { font-weight:700; }
.mem-count { color:var(--muted); font-weight:400; font-size:.78rem; margin-left:8px; }
.member-row td.player-name { font-weight:500; padding-left:26px; color:var(--text); }
.member-row td { border-bottom:1px solid rgba(38,43,54,.35); }
.slot { display:inline-block; min-width:1.5em; margin-right:6px; color:var(--muted); font-size:.78rem; font-variant-numeric:tabular-nums; }

/* ---- 順位表の「デッキ」列: 属性玉 + チャンピオン名(#15) ----
   玉は公式カード画像から切り出した32px WebPをdata URIで持つ(外部リクエストなし)。
   名前は列幅に収まらなければ省略記号で詰め、全文は title で見せる */
td.deck-id { display:flex; align-items:center; gap:8px; min-width:0; }
.orbs { display:inline-flex; gap:2px; flex:0 0 auto; }
.orb { width:18px; height:18px; display:inline-block; border-radius:50%; background-size:cover; box-shadow:0 0 0 1px rgba(0,0,0,.55); }
.champ { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.orb-fire { background-image:url("data:image/webp;base64,UklGRhoDAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSM8AAAABgFvb1rLoZjiZk2lmUwxWzrjGOMWMu3eAS+jufP+7HUTEBEDRmiq8tSeT9ls+aYFgsNRfKvaLAS2Gm+lS4+RKrxT4Xwo+uxQO2kvRSnhPoL0Urjh36H+W4h+GrZsl8RBAcMroOoHSkpqGtc/pWVJLcqLAyr2xnjus1pg14nVYrTfWc56VTbJi5h6nZ0aRkwcCE8bYC+CKcQ4A+me5J90WnGWpmge7wxWZcgj7bbcST06o6g57WsZnOmh0pnsqvZwXguZE9qU1HrdeMnEzFAEAVlA4ICQCAACwCgCdASogACAAPmkokEWkIqGYBgBABoS2AE6ZQjp5ZHC32zu4Y3gD0AOk//bGa1vdKkDcA0pUzzxv/UXAA9DMdlVuuc5noEUC0nmzcUTNQYH9hTSiMKz4SElOyHAAAP7w3V1Vf8W5hP0LuYVTDcrA5y0NTN19wPDTCbJt094oIJa3lF4iKyoazZgC3dCu5LuOu+/jwIEvJy5DsFseNLdbPNt1JMOjoTHGSH++71HMJGtJbhJIbPBAphCtv9oBAVTrAdTEDu5X7KyOSkZ6jYWwAmfoyi90nhHBsdiMOHjHpfc8Mv7zk94DD+xNtbKCNDZF6Wy31nHUuBL6k4Vll9iMfOz4sR6XIdP1M5XA6lEE7jCvewv9I5r+CnWJ2IE5QDKGiiZkrt4n4Fhf2hfVtzzHtWI+1unR+DLgf+X/pG4/5WKf5WtFp2LVWw9YJ6+mT+kXWFrEaH1JSFqcuabamBUriuLGX+E9Z1HTD/r5AHpvWShkjiisCe7jDRu3aCmFF/2AWe8gdKVs5+j/2Cz+KmwnpXrVY3pHJ4kpVQqffKG3xDXQQxGKm1GRCNZEFzNaZ8IoBtm5Nm5Ea4XOb5zKPU6W87gxe/p5lhfFIwzlzkG/duWpFx+x/x83k96KmwNUWn+IHdqe5aPj9kpZ9oa/MqI2u9bAD632S+aXCQKYIu9Sr4sjq6AnC0PXGgyi2BhNB0ymA8fkLjwmti+ddyQ1pcS79UAAAA=="); }
.orb-water { background-image:url("data:image/webp;base64,UklGRkgDAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSM8AAAABgFvb1rLoZjiZk2lmUwxWzrjGOMWMu3eAS+jufP+7HUTEBEDRmiq8tSeT9ls+aYFgsNRfKvaLAS2Gm+lS4+RKrxT4Xwo+uxQO2kvRSnhPoL0Urjh36H+W4h+GrZsl8RBAcMroOoHSkpqGtc/pWVJLcqLAyr2xnjus1pg14nVYrTfWc56VTbJi5h6nZ0aRkwcCE8bYC+CKcQ4A+me5J90WnGWpmge7wxWZcgj7bbcST06o6g57WsZnOmh0pnsqvZwXguZE9qU1HrdeMnEzFAEAVlA4IFICAADQCwCdASogACAAPl0kjUWjoiEb9AA4BcS2AE6ZQjqD0a3DtOxgNs1zyvoR3gD0K/LW9jGfKclYAbTjf7WAywLgVzn6gG6Z/sAWfc7A8kf7QnBJ88tlqcFiF/nLVlfcmwsDcx98tyQAAP7o8RGXOFZzVYZO4rtYNKHHud9gxBSRrNWrEuQ3x3tbtKzm15jMy89q58cOuApgwgy9EsH1iCvQmAqaWhNY1I6julOz/DefMDK1nvfj71IZEkHR/VtiWlqWDtNlHVF8yySiZ38xVXv1nqGe3xKlEaQZyfofLHX8jnlCuPki3FPb1vgPoCuHQgJQQb+IY2Uzl9B4c+jqFXDd/EFNsdy7o7gu3mQE+zSYZrY6iFMZxH/aFlN2lW3rnFgBPhnsE4rM+Pe3ETyCKPr2htGFgScbd7toqll8VWgKdQVFnIJ07Z9BBrtEKfQJX8qDfxVllzK2+3iNJXpmJ3qD/6TCKF1nIfZtw+f21VUIAC+c6Ua306EryxvXXxht4D/wfzv735BtHP8FR8LDJLFNJ7Rm+HmoPUNyz8CpukVizj4MhSdw8qhA2PDnhgWG+hXua79//+2Mr6SfgR2biMDq6Kuh14r/UzuHH3G5fD5wQeZO7/Q6QvJap5JcBwFkDCeeGR2uTYeffO1aZQdTo2cOmUVMbtzm/9zw3zUgleH1MBt1fNRrQPfmWNXrp8jBz8ZAi5VBpPn/hKPvoRRA06d03m2wU+rtDpzXLilRVDcKUm9unmOZQMJI2S8Jne/5cDQ4vxy8TMJz3VioV1+fMKcAAAA="); }
.orb-wind { background-image:url("data:image/webp;base64,UklGRp4DAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSM8AAAABgFvb1rLoZjiZk2lmUwxWzrjGOMWMu3eAS+jufP+7HUTEBEDRmiq8tSeT9ls+aYFgsNRfKvaLAS2Gm+lS4+RKrxT4Xwo+uxQO2kvRSnhPoL0Urjh36H+W4h+GrZsl8RBAcMroOoHSkpqGtc/pWVJLcqLAyr2xnjus1pg14nVYrTfWc56VTbJi5h6nZ0aRkwcCE8bYC+CKcQ4A+me5J90WnGWpmge7wxWZcgj7bbcST06o6g57WsZnOmh0pnsqvZwXguZE9qU1HrdeMnEzFAEAVlA4IKgCAACwDACdASogACAAPl0mjUWjoiEb9AA4BcS2AE6ZQjzPzPjU5kuBBltsBuAPPA6gD0APLY9hT9wrUEaCaG7Wf5bwSW8mGGM4v0J/0vcF/Wz/YdgfyVSOMtqgtLlivaPRn8JxPBVMyArybnuk5p5BMAD+uf20jS4siG1/rCeUD7NyMtmT36OUHwUjt7ytfCNtPmQHbjKE6wjy9VikIb+QIfNaHxnnlsmdeln8oaZMdk6XU0Z895FsDFnPz1/fIQjZxGEyewyywkoJPJZbo1yuol8kBlba8uQs/RVTFji8DRJoNAFHjDDr26WLLL/maE8dzUn0N2EOA0WX2//TG9a2t68/JswDMOuSOqDf6EErNqSTNDtdwxDS7vQCyb/Omw/62h0hsTCA8HfThXMO2mXVrhzPBxd6AxpF1GFNWnlRtTy16GUrbM5mjP6bzMgP8+wlXX0BSYgEeHG9C/1JEhGE449/bvHJVwuJwYyIDdC8x0EEljyHh1p2nJLokbY0F//jEv1xlBbuOPHyOVi+LacW8B3vuZ5wWLIvjYYWaFgfm2f7qdQBJ8z0SWD+MNBTWmHvzG1Rc4EL19eHdY2/Yiz+YtlyS3mOYW/kkv5v/gpcdlmWV7gaQGy6n4N1LSuVuRrfzOZDvu4l2WIqdVzHAtBxeqXP8cmxBYxby/xr5tfdK6Bl1Nu3/wEt04r1YCML530f2SRh5nylk2lvZ+dUqPsOvDDq+8xmoGsfx6rrhnnGX4O7wer5j9MINa+y1elsTs/fDN5jqn5XfaQa4a+SzewJ+C8F1cAjjfNN2dn/p8XWWUbS6Hme9WHRikTc3vAx0SvfF30Gmg9qZsfP2wOR9cCvC2+bBs2Q22s6QyFGZRzMp1u1eYcNmyH+FE49+X4li0U7jduV2xuSyPAAAA=="); }
.orb-arcane { background-image:url("data:image/webp;base64,UklGRlYDAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSM8AAAABgFvb1rLoZjiZk2lmUwxWzrjGOMWMu3eAS+jufP+7HUTEBEDRmiq8tSeT9ls+aYFgsNRfKvaLAS2Gm+lS4+RKrxT4Xwo+uxQO2kvRSnhPoL0Urjh36H+W4h+GrZsl8RBAcMroOoHSkpqGtc/pWVJLcqLAyr2xnjus1pg14nVYrTfWc56VTbJi5h6nZ0aRkwcCE8bYC+CKcQ4A+me5J90WnGWpmge7wxWZcgj7bbcST06o6g57WsZnOmh0pnsqvZwXguZE9qU1HrdeMnEzFAEAVlA4IGACAACQDACdASogACAAPmEkj0WkIiGb9ABABgS2AE6ZQjgTQZwIMB+L94B5gPOg9Cnn/9Q76AHSdVk3wNqg2gVvehvagpmX0ge3r6O9gb9Wd85arRTx2TBaco2cF4tIlm/PUCjV63mqlYEPSWg1GuWAAP7uoLMsrGpCNKAkdi/EBGdeTdvGhN0MNfBc5nEzdA78pfYv/p1XrrIVT12AF7Dziu1P6K5Yj0NdYcOsfgH/6XPx0cPdl6XYv8n9CGGRxsLMwLTlOkoeiadA/x3V4SgFIs8b5JFDvpE/zoJmsgLAvd4bN3Zyg0j/fyiC/RNVwtguv/oO5FvjuKODhsF/j1DH7h7o/JaI0AL4j73LsomMistoPIllPYsl3fXH2LTaGe5lL96Hng8mT/zXqkPUSEdtAHmK6b8wLOOJ4hXqjF89vM7vLw1d64F8p7I9AYrtCmIOBob+emYfRCQ0kin2ccE70D5ydrkxmMKwnZnrO2PEdPUzEgfKRyB6oUCkPARuXWf0aIIeA7ZpSrV98no848+4fZHUivg1TSvh2jLXpzYYHy0HRNzmL+APyGZ2FhClX2NZMpdyfhD9MCCFR7bfKvOXsFnwblFsTS8kJ4qf3qsLOoK07fGVdOELb9eelZAVgVKPPoqWLF9ufqPee5zwbZZ5jfzIH4oz6qbCa+85P18NvM/SubG6cPbqdz/gm0F1djsYWLFeRnCrXo8T2hRbmxr12oeAJfqzK2r7yvMLaw/r9ucNdE2S448fafMyV+E+pQIVp08bQvjJrEzw7E/GJHpTpgydbzikIkN/dX9ODUDgTAAAAA=="); }
.orb-astra { background-image:url("data:image/webp;base64,UklGRtgCAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSM8AAAABgFvb1rLoZjiZk2lmUwxWzrjGOMWMu3eAS+jufP+7HUTEBEDRmiq8tSeT9ls+aYFgsNRfKvaLAS2Gm+lS4+RKrxT4Xwo+uxQO2kvRSnhPoL0Urjh36H+W4h+GrZsl8RBAcMroOoHSkpqGtc/pWVJLcqLAyr2xnjus1pg14nVYrTfWc56VTbJi5h6nZ0aRkwcCE8bYC+CKcQ4A+me5J90WnGWpmge7wxWZcgj7bbcST06o6g57WsZnOmh0pnsqvZwXguZE9qU1HrdeMnEzFAEAVlA4IOIBAADQCACdASogACAAPm0sk0WkIqGUBqhABsSyAE6M0BLAG8jT5Rlv1/9Af/peWv6X9gcz2b8+6je6Paxj1IvQZKYRt16IjRlZKXVvzqc/M9cAAP73e1Pipl1/j7Oogomshpm2hLd1ZO1i2C5usu9fBz/2lZ4BLKuo9dXRn9tgqld6NIGkEuCeInblCTL1YTyPv6uH7PfHrx5L1d+N7DaEK/tp/9tueNwZE0SThbrrku8wmR3ljnjBvcDe9zxctq+d+T0s1Cr8lU8A/u0sGM7TDh4WAvFw7h3w/wX6u6fXbU/yVa+VBXdR41gjyvT1jbwV/CJ0Al5YqvPcZQOWKVCghqO0SWY+GiS3TOPdgJ6b9oO797lW/lJA8oVOxkKZNATe7hZLbNuNP9e3zCrry17MUcFAMJ+ignrmrP0IWFQY9cPmcSaHTwJz16qkhG08ad9lcmQ+s8KlD8/dTVkJMpkc/L54+eaBtbksBZOeXgXhkXXCbglWNB+J+wq4m9neL6go+9NmtnnTMViyf6Mvt6ajLIUJJy3Nvqur5LYNxpl5hmSjPenX7mXO7B+GF8HK0XzW5n92enXD0dnQYY7UOxGgdEc1CwGIAlJ92fsL1p6p5LSIrqbC3CejtsiQEMClcXZVaNdAAA=="); }
.orb-crux { background-image:url("data:image/webp;base64,UklGRgADAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSM8AAAABgFvb1rLoZjiZk2lmUwxWzrjGOMWMu3eAS+jufP+7HUTEBEDRmiq8tSeT9ls+aYFgsNRfKvaLAS2Gm+lS4+RKrxT4Xwo+uxQO2kvRSnhPoL0Urjh36H+W4h+GrZsl8RBAcMroOoHSkpqGtc/pWVJLcqLAyr2xnjus1pg14nVYrTfWc56VTbJi5h6nZ0aRkwcCE8bYC+CKcQ4A+me5J90WnGWpmge7wxWZcgj7bbcST06o6g57WsZnOmh0pnsqvZwXguZE9qU1HrdeMnEzFAEAVlA4IAoCAABQCgCdASogACAAPl0kjUWjoiEb9AA4BcS2AE6ZQjq4apwCYRwgNtvdru8sWYI0ivw4EdjXc3mNs8f0f7Ae6Vlela/KlXoLb969O06LjoKGzNvlWfoVKQFfI5gAAP7jORElfKlS8gnt6CbBmpBtJnSvkai4Lop/yUyL0+MbaUIuvNe/sgMdnCvab1WKCuQJX2wyJPTyAnVMpYfAIpe3rHd5ZCPL5abIULJnmbCBLpAFINHWhNOwpN+m5Pf0edz/sg+3JD1xv02+oTOmLK+I8ocO4kKdB8/xoKr3EXmfTlY2gTt9u8ScOf/BIJZLnIxBDnuO9RCVq08/f5noJBFbViRGOqsvjF2H+US43NmbW497YYeJU7UR3yVJ+6NkjgkFc+J8uS8UmZ5nfmp7AezGdzugTCjvMlS6bA4bPcyK3RBEb0WdTJtNmTlyjVvrKtPedNN15Ab/3r/uX8H6X5LTvXIfL+I7GCP16eyzbqKPpyo3TwRNZgalthtqy+5qnYcIT1Lhg33HJ+BL+WAtgTq+2aaep4cPLwisfrpINc/xbYa+8aNPDkyRKHKoQAcRstdcYlwn2Rsu2xrt+dl6rVtAnqro+ki/yPMd093pMx5JXq7VM08sL1QcsyenmtUFvkd2sTZUXwJHWUi9jv8C/CIw5LZyFe+lgn0WXrpz0R+MyTbZoGEDFiiKhLR+AAA="); }
.orb-exia { background-image:url("data:image/webp;base64,UklGRgwDAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSM8AAAABgFvb1rLoZjiZk2lmUwxWzrjGOMWMu3eAS+jufP+7HUTEBEDRmiq8tSeT9ls+aYFgsNRfKvaLAS2Gm+lS4+RKrxT4Xwo+uxQO2kvRSnhPoL0Urjh36H+W4h+GrZsl8RBAcMroOoHSkpqGtc/pWVJLcqLAyr2xnjus1pg14nVYrTfWc56VTbJi5h6nZ0aRkwcCE8bYC+CKcQ4A+me5J90WnGWpmge7wxWZcgj7bbcST06o6g57WsZnOmh0pnsqvZwXguZE9qU1HrdeMnEzFAEAVlA4IBYCAADwCgCdASogACAAPl0kjUWjoiEb9AA4BcS2AE6ZQjqD3TiqXo4CcsZ+gB0ltmCZZ+BvgrR+/lKoIZ148fpn2A/1d3zkr3C/bx+CYvcb4nVrcJGdSoFAmPPQZdva5IE+fGAA/vC8Cu2N0AIaUDDLrPtcPvQ6xxjfbX5NoDOV4nPST/4Nup0Opu3H8fy/dTcnxm3HWxHugDX1piJ355gWbxzDxK/Wf5aLfucVH2J9vG4ATAHtyFv//uqcd0I8vgR4i9Jy6cjAv/3LNcsjf6JpC1NUL6WLekooYxflk/HaGIq4Ncu2BancMX1BS/P/dvpHa/an+8MHIZbQnWXTTLrxz4pTaHRh8VahAh6x9Iirprmf2+YWLCbmyQ5DrSPV7Nj+nqomxK6cpJeXFceEX3UTZ6TRxLLkhdRbbhxsiYsMKphvmwHz4vxz74M+kKWHL27g5riuInyasakH1WGnhgA/eV7YecwslwtKq2gPlmFZJvhiwSpa/yPufIsGuhCikwTkuBEbtq/kp41JQl6HylSdtsu7V3hrtIQvsArd+bndXiCbGOSf8BJ2eKVKSGLFsB03Syn/c0YGAkzvspa5prhj9Sxk7s5IgafRhXxNxwW/PKe526u+kxQHQr8ZemWDTJCjJzpQyir/fRdd9TEqI5Ymo63Ys2njvARoyAHoJUlWmvEfe6ye30UX4jP8WsRKvJf97Vk/sUoMAAA="); }
.orb-luxem { background-image:url("data:image/webp;base64,UklGRi4DAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSM8AAAABgFvb1rLoZjiZk2lmUwxWzrjGOMWMu3eAS+jufP+7HUTEBEDRmiq8tSeT9ls+aYFgsNRfKvaLAS2Gm+lS4+RKrxT4Xwo+uxQO2kvRSnhPoL0Urjh36H+W4h+GrZsl8RBAcMroOoHSkpqGtc/pWVJLcqLAyr2xnjus1pg14nVYrTfWc56VTbJi5h6nZ0aRkwcCE8bYC+CKcQ4A+me5J90WnGWpmge7wxWZcgj7bbcST06o6g57WsZnOmh0pnsqvZwXguZE9qU1HrdeMnEzFAEAVlA4IDgCAABwCgCdASogACAAPl0kjUWjoiEb9AA4BcS2AE6ZQjzP2bikHDeBBgNtRz2HoA3iLeOP8BQFOSmwGGq1AIZh47vpj2BiHjVFsQ7y+8YsgpWFelfAv5zqST2kqge2eADvlA5clKmG77oQoiue7E29+33ZKV8c91I/X/2EH6ZuBK+R8HpJ6qig4rCRpnfF2/iQmM6lCQGZK7GaaQ/WF/zyZMHr2KYDe96ul6Dg5dfdHjD/nV+TPLdIagkfNpFBCkNtItf2Y0uvY8+pOVq6oiPZtwIylAaof9lzKX9b7CI5W7RfuZpS5B5oC7pn+cqQWDd9VoeOl+V2Hpql6f+9aDK8EeBl1qJdaWQXs9P/O5gRDII/IyYP6z3c0E8Q83/brtwR51GrHoTsL/a7HTSNAWclG3cCYqOagzLftB/89lxHI1SsQ9TwEuwGEGVaiIunjIZp3zLpwH9/xsTP9okNroikwaqW/bi7SMvZ9gCQQ6fZKI/SSMY2J/QU8rmRMPXfm5DKgZwhs7M5hai+v3KuDSL5xSGjURjqeT++vs9w3wZan7inv5pJBVnrpVAi2DXY9/fssu6pRJ5o1Do0MMdrMGcvJtujl0RsOrldLv9YOKWtiJ0Y8ptQDii1OYp3YuMgEZDrG10v87IOVQNxIG+e5TImF0TmL4bB8nFDIDA9nAO6H0ihbiNkU2ZJ/SDziteN/KrQsiKVSQgP7KafESgh0Enc4PrB5yRxa+SOXkFzvBziKde/KDi4kjGWRAAA"); }
.orb-neos { background-image:url("data:image/webp;base64,UklGRiQDAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSM8AAAABgFvb1rLoZjiZk2lmUwxWzrjGOMWMu3eAS+jufP+7HUTEBEDRmiq8tSeT9ls+aYFgsNRfKvaLAS2Gm+lS4+RKrxT4Xwo+uxQO2kvRSnhPoL0Urjh36H+W4h+GrZsl8RBAcMroOoHSkpqGtc/pWVJLcqLAyr2xnjus1pg14nVYrTfWc56VTbJi5h6nZ0aRkwcCE8bYC+CKcQ4A+me5J90WnGWpmge7wxWZcgj7bbcST06o6g57WsZnOmh0pnsqvZwXguZE9qU1HrdeMnEzFAEAVlA4IC4CAABwCQCdASogACAAPl0mjkWjoiGb9AA4BcS2AE6ZQjov0+3DtBBgNtLof/UQbyXPlOLhlfulbAxh7O99UDrIEAI8aVr6jsIYMg6wqf8u4xQNLfB8h8AA/tlcaFYVBE/CFg8gdX00xTeVg2uPPaW6pkOA/1jr53SuxBhhfUpX2kBKCdfxdpDsogXclGEOB6iFa8xK79Fmf018Lrl4DF9adg7zt3XCOQEi6c7uoDGO0entufkNaEmncE+reoy5O1JnNyROWbwBoch3yhwjubw/ETTwwT5BNY/+jmyP3KO4i1ryrn/iyxk3ni/W0plCWnufruVKgtNDvJ28qn5R3zOn7lBpCczrGjORrtaoLgQhx2wSPSwRbfsKnrK99tmHGY3xFWKF8TbCPfK/9/9OX5i136WIHng8Uj+fvK5wP6tyAO/MTU6SYKw4MGx7wsyMf/f0kr5erDhTKZcRnuML76iDjt988bWCV50Q9y2e18hCy/1/uoiFfY1OvRn35pQAFZSdxOelOYkbKel+J5hMKw9NV5ZtZsqGoD7D2dPsR4cp0KrSAVjrekBwKFvFk52YsdtT9CA0e+8w5VM3I0mWNofHb4ApeGKGOqHUut1dXq/InC/DvySiye6HHvff/ofw4oRMj15DahOT07bOOqvql3qHsCP+yL7qdl/hRl5FkvMlzDrONUpt/FpqdeD91mHbysD1gMciur35dOJDeQKVhxtEHfolXa/EYCWr5nBcnxXXQAA="); }
.orb-norm { background-image:url("data:image/webp;base64,UklGRvgBAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSM8AAAABgFvb1rLoZjiZk2lmUwxWzrjGOMWMu3eAS+jufP+7HUTEBEDRmiq8tSeT9ls+aYFgsNRfKvaLAS2Gm+lS4+RKrxT4Xwo+uxQO2kvRSnhPoL0Urjh36H+W4h+GrZsl8RBAcMroOoHSkpqGtc/pWVJLcqLAyr2xnjus1pg14nVYrTfWc56VTbJi5h6nZ0aRkwcCE8bYC+CKcQ4A+me5J90WnGWpmge7wxWZcgj7bbcST06o6g57WsZnOmh0pnsqvZwXguZE9qU1HrdeMnEzFAEAVlA4IAIBAABwBgCdASogACAAPm0skUWkIqGYDAYAQAbEtIAB8tB2oFXzm2B3uk8W+84AN9fk73NY+4TK5sUREhw8BAAA/sv/Li19jWmnWVVszfD9fHcTW9sxk77vvWLxP6zYN85CH8+W1magE4Lrdm4ngQWUlIoRpH/HCpAuGvLOgCf6MG7N/jZR3A2cXNzOLWA8t5I1FSnk0+jpnaUw86nnHy9th5tnbh0jzoIk0/Xgl9NXO2oshz7JdJ2ojOLXQk7bhVxryfrk03loITmHxiGKW/qEGDFhkek3Wp+MVQeSvpVQAwO5xoNq/EZyU6VWOdwjaG7RPy+Mz5UPzQDXcwK0cFjGY0AAAAA="); }
.orb-tera { background-image:url("data:image/webp;base64,UklGRowDAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSM8AAAABgFvb1rLoZjiZk2lmUwxWzrjGOMWMu3eAS+jufP+7HUTEBEDRmiq8tSeT9ls+aYFgsNRfKvaLAS2Gm+lS4+RKrxT4Xwo+uxQO2kvRSnhPoL0Urjh36H+W4h+GrZsl8RBAcMroOoHSkpqGtc/pWVJLcqLAyr2xnjus1pg14nVYrTfWc56VTbJi5h6nZ0aRkwcCE8bYC+CKcQ4A+me5J90WnGWpmge7wxWZcgj7bbcST06o6g57WsZnOmh0pnsqvZwXguZE9qU1HrdeMnEzFAEAVlA4IJYCAAAwDACdASogACAAPm0qkUWkIqGYBABABsSzAE6ZQZhwRjnt9MA3kqzBGkWZD3rH2/wH5LZ9/eCLktGA428u//oeTj5+9gT9Xv9fvNy26ET15nJRd4MFHDQq0L2LnAoMJ6ebu40akBgUK1sAAP79nUo9eM7wTlYY0R0H9tj6LJ9P7P1gCVodeZ45hVXRQu5xP3Udv/2sJw8lsqzjKgnmaBfWGn9aHZbO2fJ/PDb242oOk5z47YyiVnz9oXJ3xiAQN8aMhTmOf5yj1Cwa8cU5UnUtvvQ7bkQausvR2PDXEPlBE5QvBju/MsE/rrf9ZvaFaZTJDdPreWp7Nak5Fgg0SYZ47hSr2y3pXYIHintvS9qWKD2N6j+2BvmMJ3n8D/1zd2Pvq3rQ0ZqaMp3q8zw1h1XV9cnj8rEKlZPDxbAugx+t4ARO4txxNLhH/i+WAEQ6R6g02I6RZdOGAIcatr6p/GqO1bBdX5tXTQ2O8KSPsADIX9FVBfOELP334E6VpW9GmS6FfB+qHRFPM8WbrkSc5awq5P/uP4gIfvRgySg2Fnu46DSu7xD+EQfzcelJpw8SidmuiF0OF4zsPRarWUyodWmg1qVHcId+ypOkpx/GWGt16I4APGWHeRPCNWjEtGC4PvcZR5v3Xh4IVaMYymtgdtDYtLPzr3k2tgDbyLtWn91QWTE6NG/W9lnMpWDy6XOuStdXRuTxoLN/iLO8HPcQ3a9pkln2cM9YHG0MTj+08O9zDqsfzJuk7lh/2+2h+MUvPvRATR5+RNMZGc43PK+L83GogGtPJXyvlldmRxdeY19USUtu+x8Vgz6QnCtg4j/7/m6A1BctDUvbpsV8lsSvK13cM8vw3mZ4lfWCOjx71cXl0B6rmAAAAA=="); }
.orb-umbra { background-image:url("data:image/webp;base64,UklGRsICAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSM8AAAABgFvb1rLoZjiZk2lmUwxWzrjGOMWMu3eAS+jufP+7HUTEBEDRmiq8tSeT9ls+aYFgsNRfKvaLAS2Gm+lS4+RKrxT4Xwo+uxQO2kvRSnhPoL0Urjh36H+W4h+GrZsl8RBAcMroOoHSkpqGtc/pWVJLcqLAyr2xnjus1pg14nVYrTfWc56VTbJi5h6nZ0aRkwcCE8bYC+CKcQ4A+me5J90WnGWpmge7wxWZcgj7bbcST06o6g57WsZnOmh0pnsqvZwXguZE9qU1HrdeMnEzFAEAVlA4IMwBAACwCACdASogACAAPm0skkakIqGhMBgIAIANiUATpmMijyfKbR0bqoEcCEb5UXQI9SkrJ3vPhnhqpMeqHu+/r3F4xlGqEhpSsVCw6JXquvAA/vd7U+OIS8KiuYfwrcCHKy7NGApgqoAZ6b9gTv/tZ3OdoUSum3fcviams0S4B3mvXLDbQv6CfwC/7p0hU/IRsGXbxfLWRpqq/6w/ebWb5BQU4Tm83IsNMA3gyukJpmVvz3UYASC1mor3vVbOvlRTZ81omzpf/X8Duvltln92EFr+lrlfxPXxtzh3F396iLKTipcS/DXzmPP9+r4S5YzxkHgIbktenwogjK7RVU58AwUeaYFgKi6kEX06d8Q36mvywkDFaSDqKasd+GE+NJ8Lr7qNa5TkgC7+89b7RCtmR8hI4VhoaMAYbZvckmIugE40Ft+zDa5ettDH0xl1h/FGRELKmZKB6r3Q/2HBXz+b/XBO7k9tKylbJv24PmRpJSVYZyNKYRZlA/wdR5SEUdp9EwJ956MW1OcdnO8m6jWsqFCm7Py4AgN8wn/lBvjYqkrrWk7d15V9gPgt99Bd+m8uUWCve+3HW4opuLBANNKwPnFCXS8AW+9kuh7tZaQA"); }

/* 順位表の絞り込み(プレイヤー名・チャンピオン名・属性) */
.rank-filter { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; margin:0 0 10px; }
.rank-filter input[type="search"] { flex:1; min-width:220px; max-width:420px; background:var(--panel-2); color:var(--text); border:1px solid var(--line); border-radius:8px; padding:7px 12px; font:inherit; font-size:.88rem; }
.rank-filter input:focus { outline:2px solid var(--accent-2); outline-offset:1px; }
.rank-hits { color:var(--muted); font-size:.82rem; }
/* 0件のときの案内(一覧・順位表で共用) */
.rank-empty, .ev-empty { color:var(--muted); font-size:.88rem; }
/* 絞り込み中は100行ごとの折りたたみを無視して該当行を平坦に出す(折りたたみの中に隠さない) */
#standings-wrap.filtering .rank-block { border:none; background:none; margin-bottom:0; }
#standings-wrap.filtering .rank-block > summary { display:none; }
#standings-wrap.filtering .rank-block > .cp-scroll { padding:0; }

/* 順位表の折りたたみ(101名以上の大会のみ。1つ開くと他は閉じる=tournaments/deck.js) */
.rank-block { border:1px solid var(--line); border-radius:12px; background:var(--panel); margin-bottom:8px; }
.rank-block > summary { cursor:pointer; padding:10px 16px; font-weight:600; font-size:.9rem; display:flex; gap:10px; align-items:baseline; }
.rank-block > summary:hover { background:rgba(255,255,255,.03); }
.rank-block > summary:focus-visible { outline:2px solid var(--accent-2); outline-offset:-2px; }
.rank-block[open] > summary { border-bottom:1px solid var(--line); }
.rank-block > .cp-scroll { padding:0 6px 6px; }

/* ---- デッキ(ダイアログ表示。中身は共有デッキ画面と同一の .view-grid/.cardph) ---- */
/* 重ね順はカード詳細(.gacd-modal = z-index 60)より下。カード詳細が上に重なる */
.deck-modal { position:fixed; inset:0; z-index:50; }
.deck-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.6); }
.deck-body { position:relative; background:var(--panel); color:var(--text); border:1px solid var(--line); border-radius:14px; max-width:900px; max-height:90vh; margin:5vh auto; padding:18px 20px; overflow:auto; }
.deck-close { position:absolute; top:8px; right:10px; background:none; border:none; color:var(--muted); font-size:1.6rem; line-height:1; cursor:pointer; padding:4px 8px; }
.deck-close:hover { color:var(--text); }
.deck-modal-title { margin:0 30px .6em 0; font-size:1rem; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.deck-modal-content .view-zone:first-child { padding-top:0; }
.deck-modal-content .view-zone { padding-left:0; padding-right:0; }
.deck-msg { color:var(--muted); font-size:.88rem; padding:20px 0; }
.deck-retry { margin-left:10px; background:var(--panel-2); color:var(--text); border:1px solid var(--line); border-radius:8px; padding:4px 12px; font:inherit; font-size:.82rem; cursor:pointer; }
.deck-retry:hover { border-color:var(--accent); }
.deck-player { font-weight:600; }
.rank-badge { background:rgba(217,164,65,.15); color:var(--accent); border:1px solid rgba(217,164,65,.4); border-radius:999px; padding:1px 10px; font-size:.78rem; font-weight:700; white-space:nowrap; }
.view-zone { padding:14px 16px 0; }
.deck-acc > .view-zone:last-of-type { padding-bottom:16px; }
.view-zone h4 { font-size:.85rem; color:var(--muted); font-weight:600; letter-spacing:.04em; margin:0 0 10px; padding-bottom:8px; border-bottom:1px solid var(--line); }
.view-zone h4 b { color:var(--text); font-variant-numeric:tabular-nums; }
.view-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(124px,1fr)); gap:12px; }
.cardph { position:relative; border-radius:10px; overflow:hidden; border:1px solid var(--line); background:var(--panel-2); }
.cardph img { width:100%; aspect-ratio:63/88; object-fit:cover; display:block; }
.cardph .noimg { aspect-ratio:63/88; display:grid; place-items:center; padding:8px; color:var(--muted); font-size:.72rem; text-align:center; word-break:break-all; }
.qty-badge { position:absolute; top:8px; right:8px; background:rgba(8,9,12,.82); color:#fff; border:1px solid rgba(255,255,255,.35); font-size:.7rem; font-weight:800; border-radius:999px; padding:2px 8px; font-variant-numeric:tabular-nums; }
.cardph.clickable { cursor:pointer; }
.cardph.clickable:hover { border-color:var(--accent); }
.cardph.clickable:focus-visible { outline:2px solid var(--accent-2); outline-offset:2px; }

.cp-foot { border-top:1px solid var(--line); margin-top:30px; padding:16px 20px; color:var(--muted); font-size:.8rem; }
.cp-foot p { max-width:1080px; margin:0 auto; }
/* ---- スマホ幅(2026-07-22): 表のままでは列を削っても右が見切れるため、1件=1カードに組み替える ----
   HTMLは共通。表の各セルに付けたクラスを目印にgridへ再配置し、隠したヘッダの代わりに
   ラベルを ::before で補う(生成CSS内で完結するため style-src 'self' に抵触しない) */
@media (max-width:640px) {
  /* #21: ヘッダの縦占有を減らす。ブランドは文字を落としてマークだけ残す(リンクは生きる)。
     ⚠ font-size:0 は「テキストだけ消す」ための手段。display:none にするとトップへ戻れなくなる。
     ⚠ flex-wrap:nowrap だけでは 92→102px と悪化する。文字を落とすところまでやって初めて効く。
     ⚠ 同じ内容が scripts/build-card-pages.mjs の CARDS_CSS にもある(片方だけ直すと高さが食い違う) */
  .cp-site { flex-wrap:nowrap; gap:10px; padding:12px; }
  .cp-brand { font-size:0; flex:0 0 auto; }
  .cp-mark { font-size:.82rem; }
  .cp-site nav { overflow-x:auto; white-space:nowrap; min-width:0; scrollbar-width:none; }
  .cp-site nav::-webkit-scrollbar { display:none; }
  .cp-crumb { padding:6px 12px; }
  /* 絞り込みはトグルにする(既定は閉じる=tournaments.js。適用中の件数はバッジで見せる) */
  .filter-box > summary { display:block; }
  .filter-box[open] > summary { margin-bottom:12px; padding-bottom:10px; border-bottom:1px solid var(--line); }
  /* 説明文も同じ手法でトグルにする(既定は閉じる=tournaments.js) */
  .about > summary { display:block; }
  .about[open] > summary { margin-bottom:8px; }
  /* 見出しクリックが使えないスマホでは並べ替えselectを表示する(#16) */
  .sort-mobile { display:flex; }
  .cp-scroll { overflow-x:visible; }
  table, tbody, tr, td { display:block; }
  thead { display:none; }
  tbody td { border:none; padding:0; }
  tbody tr { border:1px solid var(--line); border-radius:12px; background:var(--panel); padding:12px 14px; margin-bottom:10px; }

  /* 一覧: 大会名 / 開催日・開催国・種別 / 主催 / フォーマット・参加者数 の4行。
     メタ行は幅が足りなければ自然に折り返させたいのでflexで並べる(種別バッジは分断しない) */
  #ev-table tbody tr.tr-link { display:flex; flex-wrap:wrap; align-items:baseline; column-gap:6px; row-gap:3px; }
  #ev-table tbody tr.tr-link > td:nth-child(2) { display:contents; } /* 大会名・主催を行の直接の子として並べる */
  .ev-name { flex-basis:100%; order:1; font-size:.95rem; }
  td.date, td.country, td.cat { order:2; }
  .ev-host { flex-basis:100%; order:3; }
  td.format, td.num { order:4; color:var(--muted); font-size:.82rem; }
  td.num { text-align:left; }
  /* 区切りの中点。種別はバッジ自体が独立して見えるため付けない(折り返したとき行頭に中点が残らない) */
  td.country::before, td.num::before { content:"・"; color:var(--muted); margin-right:6px; }
  .cat-short { display:none; }
  .cat-full { display:inline; }

  /* 順位表: 順位・プレイヤー名・デッキ導線 / 属性・チャンピオン / 勝ち点・成績 の3行(#15) */
  /* #65: 1列目(順位)を固定下限幅にする。auto任せだと、チーム戦のメンバー行は
     順位・勝ち点セルが両方とも空で1列目がほぼ0pxに潰れ、チーム名との字下げが崩れる
     (メンバー行だけ列境界が左にずれ、padding-leftでの字下げが台無しになる) */
  .standings tbody tr { display:grid; grid-template-columns:minmax(56px,auto) 1fr auto; gap:2px 8px; align-items:baseline; }
  .standings td.rank { grid-column:1; grid-row:1; }
  .standings td.player-name { grid-column:2; grid-row:1; }
  .standings tbody td:last-child { grid-column:3; grid-row:1; text-align:right; }
  /* 属性・チャンピオンはこの機能の主目的なので省略せず折り返す */
  .standings td.deck-id { grid-column:1/-1; grid-row:2; flex-wrap:wrap; }
  .standings td.deck-id .champ { overflow:visible; text-overflow:clip; white-space:normal; }
  .standings td.score { grid-column:1; grid-row:3; text-align:left; }
  /* #65: チーム戦のメンバー行はscore/recが空セル(チーム単位の値のみ持つ)。
     :not(:empty) を付けないと空セルにも「勝ち点 」「・」だけのラベルが浮いて出る */
  .standings td.score:not(:empty)::before { content:"勝ち点 "; color:var(--muted); font-weight:400; font-size:.82rem; }
  .standings td.rec { grid-column:2/-1; grid-row:3; white-space:normal; }
  .standings td.rec:not(:empty)::before { content:"・"; color:var(--muted); margin-right:4px; }
  /* タイブレーカーの参考値(GW%・MW%)はスマホでは出さない */
  .standings th.pct, .standings td.pct { display:none; }
  .rank-block > .cp-scroll { padding:0; }

  /* ---- チーム戦(#65): メンバー行のインデントを詰め、「メンバー情報なし」の
     grid-column を明示する(既定だと tbody td:last-child の grid-column:3 に負けて右寄せになる) ---- */
  .member-row td.player-name { padding-left:14px; }
  .member-row td.player-name.no-deck { grid-column:1/-1; text-align:left; }
  .team-block { display:block; margin-bottom:6px; }

  .deck-body { margin:0; max-width:none; min-height:100%; max-height:100vh; border-radius:0; padding:16px; }
  .view-grid { grid-template-columns:repeat(auto-fill,minmax(104px,1fr)); gap:8px; }
}
