
.tag.lic{border-style:dotted}
.section.lic ul{margin:6px 0 0;padding-left:18px} .section.lic li{margin:6px 0}
.tag.award{border:1px solid transparent;font-weight:600}
.tag.award.r1{background:#fff3c4;color:#7a5a00;border-color:#e8c65a}
.tag.award.r2{background:#eceff3;color:#4a5361;border-color:#c3cad4}
.tag.award.r3{background:#f6e3d3;color:#7a4a1e;border-color:#dcb08c}
.tag.award::before{content:"★ ";opacity:.8}
.tag.award.more{background:var(--bg2);color:var(--muted);border-color:var(--line)} .tag.award.more::before{content:"✦ "}
.podium{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-top:10px}
.podium .yr{border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:var(--surface)}
.podium .yr h3{margin:0 0 6px;font-size:15px}
.podium .yr div{font-size:13px;margin:3px 0}
.podium .yr small{color:var(--muted)}
.podium details{margin-top:6px} .podium summary{cursor:pointer;color:var(--accent);font-size:13px}
.badge.hub{background:#2496ed;color:#fff;border-color:#1d7fcc;display:inline-flex;align-items:center;gap:5px;text-decoration:none} a.badge.hub:hover{background:#1d7fcc;text-decoration:none}
.badge.hub.off{background:var(--bg2);color:var(--muted);border-color:var(--line)}
.badge.hub svg.docker{width:14px;height:14px;fill:currentColor;flex:none}
.pulls{color:var(--muted);font-size:12px;margin-left:auto;white-space:nowrap}
.links{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 10px} .btn.small{padding:6px 12px;font-size:13px}
.tabs{display:flex;gap:6px;margin:10px 0 14px} .tabs button{font:inherit;padding:8px 14px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);cursor:pointer}
.tabs button.active{background:var(--hf);border-color:var(--hfdark);color:#1a1a19;font-weight:600}
.lb{overflow-x:auto} .lb table{font-size:14px} .lb th{cursor:pointer;user-select:none;white-space:nowrap;color:var(--muted);font-weight:600;position:sticky;top:0;background:var(--card)}
.lb th.sorted-desc::after{content:" ▾"} .lb th.sorted-asc::after{content:" ▴"} .lb td.num,.lb th.num{text-align:right;font-variant-numeric:tabular-nums}
.lb td.rank{color:var(--muted);width:2.5em} .lb tr.top1 td.rank{color:#7a5a00;font-weight:700} .lb tr.top2 td.rank{color:#4a5361;font-weight:700} .lb tr.top3 td.rank{color:#7a4a1e;font-weight:700}
.lb .medal{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:middle} .medal.g{background:#e8c65a} .medal.s{background:#c3cad4} .medal.b{background:#dcb08c}
.lb .who{color:var(--muted);font-size:13px}
:root { --bg:#ffffff; --bg2:#f8f9fb; --card:#ffffff; --ink:#0b0b0b; --muted:#5e6572; --line:#e5e7eb; --ok:#1a7f37; --warn:#9a6700; --fail:#cf222e; --none:#8c959f; --accent:#0b57d0; --hf:#ffd21e; --hfdark:#f59e0b; --cap:#0550ae; --capbg:#e8f1ff; --series-1:#2a78d6; --series-2:#eda100; --grid:#e5e7eb; --warnbg:#fff8dc; --l0:#4a3aa7; --l1:#eb6834; --l2:#2a78d6; --l3:#eda100; --l4:#1baf7a; --l-none:#d4d6da; }
@media (prefers-color-scheme: dark) { :root { --bg:#0b0f19; --bg2:#111827; --card:#161b26; --ink:#f3f4f6; --muted:#9aa3b2; --line:#2a3140; --ok:#3fb950; --warn:#d29922; --fail:#f85149; --none:#6e7681; --accent:#7ab4ff; --cap:#9ecbff; --capbg:#12305c; --series-1:#3987e5; --series-2:#c98500; --grid:#2a3140; --warnbg:#3a2f0b; --l0:#9085e9; --l1:#d95926; --l2:#3987e5; --l3:#c98500; --l4:#199e70; --l-none:#3a4150; } }
* { box-sizing: border-box; }
body { margin:0; font: 15px/1.5 -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; color:var(--ink); background:var(--bg); }
a { color:var(--accent); text-decoration:none; } a:hover { text-decoration:underline; } a.card:hover { text-decoration:none; border-color:var(--accent); }
header { padding:16px 24px; border-bottom:1px solid var(--line); background:var(--card); display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
header .logo { display:flex; align-items:center; gap:10px; font-weight:700; font-size:20px; } header .logo span.dot { width:26px; height:26px; border-radius:8px; background:var(--hf); display:inline-block; }
header nav a { margin-right:16px; color:var(--ink); font-weight:500; } header nav a.active { border-bottom:2px solid var(--hf); }
header p { margin:0; color:var(--muted); margin-left:auto; }
.warning { max-width:1200px; margin:16px auto 0; padding:12px 18px; border:1px solid var(--hfdark); border-left:6px solid var(--hf); background:var(--warnbg); border-radius:10px; font-size:15px; line-height:1.5; }
.hero { padding:28px 0 8px; } .hero .byline { color:var(--muted); font-size:14px; margin-bottom:10px; } .hero .byline b { color:var(--ink); font-weight:600; }
footer .credits { display:block; margin-bottom:6px; } .hero h1 { font-size:34px; margin:0 0 6px; } .hero p { color:var(--muted); font-size:17px; margin:0 0 18px; max-width:760px; }
.stats { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:12px; margin:8px 0 22px; }
.stat { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:14px 16px; }
.stat .n { font-size:28px; font-weight:700; } .stat .l { color:var(--muted); font-size:13px; }
.two { display:grid; grid-template-columns:repeat(auto-fit, minmax(340px, 1fr)); gap:14px; }
.fig { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:14px 16px; }
.fig h2 { margin:0 0 2px; font-size:16px; } .fig .sub { color:var(--muted); font-size:13px; margin-bottom:8px; }
.fig svg { width:100%; height:auto; display:block; } .fig text { fill:var(--ink); font-size:12px; } .fig text.muted { fill:var(--muted); } .fig line.grid { stroke:var(--grid); }
.legend2 { display:flex; gap:14px; font-size:13px; color:var(--muted); margin-top:6px; } .sw { display:inline-block; width:12px; height:12px; border-radius:3px; vertical-align:-1px; margin-right:5px; }
.facts { display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); gap:12px; }
.fact { background:var(--bg2); border-radius:12px; padding:12px 14px; } .fact b { display:block; } .fact span { color:var(--muted); font-size:13px; }
.links { display:flex; flex-wrap:wrap; gap:8px 22px; margin:0 0 10px; }
.links a { display:inline-flex; align-items:center; gap:7px; color:inherit; font-weight:600; text-decoration:none; }
.links a:hover { text-decoration:underline; }
.mark { width:20px; height:20px; fill:currentColor; flex:none; }
.stat.top ol { margin:6px 0 0; padding-left:18px; font-size:14px; line-height:1.45; }
.stat.top .who { color:var(--muted); font-size:12px; }
.notice { font-size:14px !important; color:var(--muted); border-left:3px solid var(--hf); padding-left:10px; }
.muted-inline { color:var(--muted); font-size:13px; }
.pitch { margin:22px 0 6px; background:var(--card); border:1px solid var(--line); border-left:4px solid var(--hf); border-radius:12px; padding:14px 18px; max-width:860px; }
.pitch-head { font-weight:700; font-size:17px; margin-bottom:8px; } .pitch-foot { color:var(--muted); font-size:13px; margin-top:8px; }
.section.pull { border-left:4px solid var(--hf); }
pre.cmd { position:relative; padding-right:70px; } pre.cmd button { position:absolute; top:8px; right:8px; font:inherit; font-size:12px; padding:3px 9px; border-radius:6px; border:1px solid var(--line); background:var(--card); color:var(--ink); cursor:pointer; }
.btn { display:inline-block; background:var(--hf); color:#0b0b0b; padding:10px 16px; border-radius:10px; font-weight:600; } .btn:hover { text-decoration:none; filter:brightness(.95); }
main { max-width:1200px; margin:0 auto; padding:20px 24px 60px; }
.toolbar { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:8px 0 18px; padding:12px 14px; background:var(--bg2); border:1px solid var(--line); border-radius:14px; }
.ctl { display:inline-flex; align-items:center; gap:8px; padding:0 12px; border:1px solid var(--line); border-radius:999px; background:var(--card); color:var(--ink); box-shadow:0 1px 2px rgba(0,0,0,.04); transition:border-color .15s, box-shadow .15s; }
.ctl:hover { border-color:var(--hfdark); } .ctl:focus-within { border-color:var(--accent); box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent); }
.ctl svg { width:16px; height:16px; flex:none; stroke:var(--muted); fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.ctl:focus-within svg { stroke:var(--accent); }
.ctl input, .ctl select { font:inherit; padding:9px 0; border:0; background:transparent; color:var(--ink); outline:none; min-width:0; }
.ctl select { padding-right:4px; cursor:pointer; } .ctl.search { flex:1 1 260px; } .ctl.search input { width:100%; }
.ctl.award:has(option:checked:not([value=""])) { border-color:#e8c65a; background:#fff8dc; } .ctl.award:has(option:checked:not([value=""])) svg { stroke:#7a5a00; }
.count { color:var(--muted); margin-left:auto; font-size:14px; white-space:nowrap; }
@media (prefers-color-scheme: dark) { .ctl.award:has(option:checked:not([value=""])) { background:#3a2f0a; } }
.grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:14px; }
section.year { display:grid; grid-template-columns:64px 1fr; gap:0 10px; padding:18px 0 10px; border-top:2px solid var(--line); }
section.year:first-child { border-top:0; padding-top:4px; }
.year-label { position:relative; } .year-label span { position:sticky; top:16px; display:block; writing-mode:vertical-rl; transform:rotate(180deg); font-weight:700; font-size:22px; color:var(--ink); letter-spacing:.04em; line-height:1; padding:2px 0; border-left:3px solid var(--hf); }
.year-label small { position:sticky; top:130px; display:block; color:var(--muted); font-size:12px; margin-top:8px; writing-mode:vertical-rl; transform:rotate(180deg); }
@media (max-width:640px) { section.year { grid-template-columns:1fr; } .year-label span, .year-label small { writing-mode:horizontal-tb; transform:none; border-left:0; border-bottom:3px solid var(--hf); display:inline-block; margin-right:10px; } }
.card { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:14px 16px; display:flex; flex-direction:column; gap:6px; }
.card h3 { margin:0; font-size:16px; } .card .meta { color:var(--muted); font-size:13px; }
.tags { display:flex; flex-wrap:wrap; gap:6px; margin-top:4px; }
.tag { font-size:12px; padding:2px 8px; border-radius:999px; border:1px solid var(--line); color:var(--muted); background:transparent; }
.tag.id { border-style:dashed; }
.tag.cap { border-color:transparent; background:var(--capbg); color:var(--cap); }
.tagrow { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.tagrow .lbl { font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); width:64px; }
.legend { color:var(--muted); font-size:13px; display:flex; gap:14px; flex-wrap:wrap; margin:-6px 0 14px; }
.badge { font-size:12px; padding:2px 8px; border-radius:999px; color:#fff; }
.badge.ok { background:var(--ok);} .badge.warn { background:var(--warn);} .badge.fail { background:var(--fail);} .badge.none { background:var(--none);}
.page h1 { margin-bottom:0; } .page .sub { color:var(--muted); margin-top:2px; }
.section { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:16px 18px; margin:16px 0; }
.section h2 { margin:0 0 10px; font-size:17px; }
dl { display:grid; grid-template-columns:max-content 1fr; gap:6px 16px; margin:0; } dt { color:var(--muted); } dd { margin:0; word-break:break-word; }
pre { background:var(--bg); border:1px solid var(--line); border-radius:8px; padding:10px 12px; overflow-x:auto; font-size:13px; }
table { border-collapse:collapse; width:100%; font-size:14px; } td, th { text-align:left; padding:4px 8px; border-bottom:1px solid var(--line); }
.crumbs { color:var(--muted); font-size:14px; margin-bottom:8px; }
footer { color:var(--muted); font-size:13px; text-align:center; padding:20px 24px 28px; max-width:900px; margin:0 auto; line-height:1.5; }
