:root{--bg: #f8f9fa;--surface: #fff;--line: #dadce0;--line-soft: #e8eaed;--fg: #202124;--muted: #5f6368;--blue: #1a73e8;--blue-weak: #e8f0fe;--green: #188038;--red: #d93025;--chip: #f1f3f4;font-family:system-ui,-apple-system,Hiragino Sans,Yu Gothic UI,Meiryo,sans-serif;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);line-height:1.6}.app{max-width:64rem;margin:0 auto;padding:1.5rem 1rem 4rem}.app h1{font-size:1.4rem;margin:0 0 1.25rem}.panel,table.ranking{max-width:40rem}.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:1.25rem;margin-bottom:1rem}.panel h2{font-size:1.05rem;margin:0 0 .75rem}.muted{color:var(--muted);margin:0 0 .75rem}.error{background:#fce8e6;border:1px solid var(--red);color:var(--red);border-radius:8px;padding:.7rem 1rem;margin:0 0 1rem}button{font:inherit;cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--fg);border-radius:8px;padding:.5rem 1rem}button:hover:not(:disabled){background:var(--chip)}button:disabled{opacity:.55;cursor:default}button.primary{background:var(--blue);color:#fff;border-color:var(--blue);font-weight:600}button.primary:hover:not(:disabled){background:#1967d2}button.link{background:none;border:none;color:var(--blue);padding:.2rem .3rem}.actions{display:flex;flex-wrap:wrap;gap:.5rem}.result{font-variant-numeric:tabular-nums}.panel .result{display:block;margin:.75rem 0 0;padding:.7rem;background:var(--chip);border:1px solid var(--line-soft);border-radius:8px;white-space:pre-wrap;word-break:break-all;font-size:.8rem}.appbar{position:sticky;top:0;z-index:10;background:var(--bg);padding-top:.5rem;margin-bottom:1rem;transition:box-shadow .2s ease,padding .2s ease}.appbar.compact{padding-top:.3rem;box-shadow:0 2px 8px #3c40431f}.appbar h1{transition:font-size .2s ease}.appbar.compact h1{font-size:1.05rem}.appbar.compact .topbar{margin-bottom:.25rem}.appbar.compact .tabs button{padding-top:.3rem;padding-bottom:.3rem}.topbar{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem;margin-bottom:.5rem;transition:margin-bottom .2s ease}.topbar h1{margin:0}.who{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--muted)}.who .name{color:var(--fg);font-weight:600}.who .role{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--blue);background:var(--blue-weak);border-radius:999px;padding:.05rem .45rem}.tabs{display:flex;gap:.5rem;border-bottom:1px solid var(--line)}.tabs button{background:none;border:none;border-bottom:3px solid transparent;border-radius:0;color:var(--muted);padding:.6rem .9rem;font-weight:600;transition:padding .2s ease}.tabs button:hover{background:none;color:var(--fg)}.tabs button.active{color:var(--blue);border-bottom-color:var(--blue)}.board-title{font-size:1.15rem;margin:0 0 1rem}.stage{margin-bottom:1.5rem}.stage h3{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 .6rem}.date-group{margin-bottom:1rem}.date-head{font-size:.85rem;font-weight:700;color:var(--fg);padding:.5rem 0 .4rem;margin-bottom:.5rem;border-bottom:1px solid var(--line-soft)}.datenav{position:sticky;top:var(--appbar-h, 0px);z-index:9;display:flex;gap:.4rem;overflow-x:auto;background:var(--bg);padding:.5rem 0;margin-bottom:1rem;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.datenav button{flex:0 0 auto;border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:999px;padding:.3rem .75rem;font-size:.8rem;font-weight:600;white-space:nowrap}.datenav button.active{background:var(--blue);border-color:var(--blue);color:#fff}.matches{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(18rem,1fr));gap:.75rem;align-items:start}.match{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:.85rem 1rem;box-shadow:0 1px 2px #3c404314}.match.ineligible{opacity:.7}.m-meta{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.75rem;color:var(--muted);margin-bottom:.5rem}.m-teams{display:flex;flex-direction:column;gap:.1rem;margin-bottom:.7rem}.m-row{display:grid;grid-template-columns:2.8rem 1fr auto;align-items:center;gap:.5rem;padding:.15rem 0}.m-row .flag{font-size:2.2rem;line-height:1;text-align:center}.m-row .tname{font-size:.95rem;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.m-row .tscore{font-size:1.05rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--muted);min-width:1rem;text-align:right}.m-row .tscore .tpen{font-size:.85rem;margin-left:.05rem}.m-row.win .tname{font-weight:700}.m-row.win .tscore{color:var(--fg)}.picks{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:.4rem}button.pick{padding:.5rem .4rem;font-size:.85rem;border-radius:999px;border-color:var(--line);color:var(--blue);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}button.pick.selected{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}button.pick.outcome{border-color:var(--green);color:var(--green)}button.pick.selected.outcome{background:var(--green);border-color:var(--green);color:#fff}.note{color:var(--muted);font-size:.82rem;margin:.2rem 0 0}.m-foot{margin:.6rem 0 0;font-size:.82rem;color:var(--muted)}.badge{font-size:.7rem;font-weight:600;color:var(--muted);background:var(--chip);border-radius:999px;padding:.1rem .5rem}.badge.done{color:var(--green);background:#e6f4ea}.hit{color:var(--green);font-weight:700}.missed{color:var(--red);font-weight:600}.nopick{color:var(--muted)}table.ranking{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden}table.ranking th,table.ranking td{text-align:left;padding:.6rem .75rem;border-bottom:1px solid var(--line-soft)}table.ranking thead th{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#fafafa}table.ranking th:first-child,table.ranking td:first-child{width:3rem;text-align:center}table.ranking th:last-child,table.ranking td:last-child{text-align:right;font-variant-numeric:tabular-nums}table.ranking tbody tr:last-child td{border-bottom:none}table.ranking tr.me{background:var(--blue-weak)}.legend{display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:var(--muted);margin:0 0 1rem}.legend .q-dot{width:.75rem;height:.75rem;border-radius:3px;background:var(--green);display:inline-block}.groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(20rem,1fr));gap:1rem;align-items:start}.grp h3{font-size:.85rem;font-weight:700;color:var(--fg);margin:0 0 .4rem}table.standings{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden;font-size:.85rem}table.standings th,table.standings td{padding:.4rem .3rem;text-align:center;border-bottom:1px solid var(--line-soft);font-variant-numeric:tabular-nums}table.standings thead th{font-size:.7rem;font-weight:600;color:var(--muted);background:#fafafa}table.standings .pos{width:1.6rem}table.standings .team{text-align:left;display:flex;align-items:center;gap:.4rem}table.standings .team .flag{font-size:1.9rem;line-height:1}table.standings .team .tname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}table.standings .pts{font-weight:700;color:var(--fg)}table.standings tbody tr:last-child td{border-bottom:none}table.standings tr.q td:first-child{box-shadow:inset 3px 0 0 var(--green)}table.standings tr.q .pos{color:var(--green);font-weight:700}table.standings tr.q-out td:first-child{box-shadow:inset 3px 0 #f9ab00}table.standings tr.q-out{color:var(--muted)}table.standings tr.cutoff td{border-bottom:2px solid var(--blue)}.third-place{margin-top:1.5rem;max-width:34rem}.third-place .grp-label{color:var(--muted);font-size:.78rem}.third-place .rule-note{margin:0 0 .5rem;font-size:.78rem;color:var(--fg);line-height:1.5}.third-place .rule-note .rule-sub{color:var(--muted);font-size:.72rem}.bracket-scroll{height:calc(100dvh - var(--appbar-h, 7rem) - 1rem);overflow:auto;overscroll-behavior:contain;padding-bottom:.5rem;-webkit-overflow-scrolling:touch}.bracket{--ko-gap: 2.5rem;position:relative;display:flex;gap:var(--ko-gap);width:max-content;align-items:stretch}.ko-round-col{flex:0 0 14rem;min-width:14rem;display:flex;flex-direction:column}.ko-round-col>h3{position:sticky;top:0;z-index:3;background:var(--bg);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0;padding:.25rem 0 .6rem;border-bottom:1px solid var(--line-soft)}.col-matches{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;flex:1}.ko-match{flex:1;min-height:10.5rem;display:flex;align-items:center;position:relative}.ko-round-col:not(.is-last):not(.is-aux):not(.is-sf) .ko-match:after{content:"";position:absolute;left:100%;width:calc(var(--ko-gap) / 2);height:50%;border-right:2px solid var(--line)}.ko-round-col:not(.is-last):not(.is-aux):not(.is-sf) .ko-match:nth-child(odd):after{top:50%;border-top:2px solid var(--line)}.ko-round-col:not(.is-last):not(.is-aux):not(.is-sf) .ko-match:nth-child(2n):after{bottom:50%;border-bottom:2px solid var(--line)}.ko-round-col:not(.is-first):not(.is-aux) .ko-match:before{content:"";position:absolute;right:100%;top:50%;width:calc(var(--ko-gap) / 2);height:2px;background:var(--line)}.ko-lines{position:absolute;top:0;left:0;pointer-events:none;overflow:visible}.ko-lines path{fill:none;stroke:var(--line);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.ko-round-col.is-third{margin-left:1rem}.ko-round-col.is-third .ko-card{transform:translateY(5rem)}.ko-card{width:100%;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:.5rem .7rem;box-shadow:0 1px 2px #3c404314}.ko-day{display:flex;align-items:center;justify-content:space-between;font-size:.72rem;color:var(--muted);margin-bottom:.35rem}.ko-team{display:grid;grid-template-columns:2.5rem 1fr auto .9rem;align-items:center;gap:.4rem;padding:.15rem 0}.ko-team .tpen{margin-left:.1rem}.ko-team .ko-advance{font-size:.7rem;line-height:1;color:var(--blue);text-align:center}.ko-team .ko-prov{margin-left:.3rem;padding:.02rem .28rem;font-size:.6rem;font-weight:700;vertical-align:1.5px;color:#b06000;background:#fde9c8;border-radius:999px}.ko-team .flag{font-size:2.1rem;line-height:1;text-align:center}.ko-team .tname{font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted)}.ko-team .tscore{font-variant-numeric:tabular-nums;font-weight:600;color:var(--muted)}.ko-team.win .tname{color:var(--fg);font-weight:700}.ko-team.win .tscore{color:var(--fg)}.ko-team.tbd .tname{color:var(--line);font-style:italic}.ko-team.mine{background:var(--blue-weak);border-radius:5px;box-shadow:inset 3px 0 0 var(--blue)}.ko-team.mine .tname{color:var(--fg)}.ko-card .picks{display:flex;gap:.3rem;margin-top:.45rem}.ko-card .pick{flex:1;min-width:0;padding:.3rem .4rem;font-size:.78rem;font-weight:600;color:var(--fg);background:var(--surface);border:1px solid var(--line);border-radius:999px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ko-card .pick:hover:not(:disabled){border-color:var(--blue)}.ko-card .pick.selected{background:var(--blue);border-color:var(--blue);color:#fff}.ko-card .pick:disabled{opacity:.55;cursor:default}.ko-foot{margin:.4rem 0 0;font-size:.76rem;font-weight:700}.ko-foot .hit{color:#188038}.ko-foot .missed{color:#c5221f}.ko-foot .nopick{color:var(--muted)}.scorers{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem .45rem;margin:.4rem 0 0;font-size:.74rem;color:var(--muted)}.scorers-label{font-weight:700;color:var(--fg)}.scorers .scorer b{color:#188038;font-variant-numeric:tabular-nums}
