:root{--bg: #fbfaf8;--surface: #ffffff;--surface-2: #f4f2ef;--border: #e5e1db;--text: #1c1a17;--muted: #6b655d;--accent: #b5471f;--accent-soft: #f7e9e2;--ink: #1b3044;--ink-soft: #e7edf3;--ok: #2f7d4f;--warn: #9a6a12;--radius: 12px;--maxw: 1080px}@media(prefers-color-scheme:dark){:root{--bg: #17150f;--surface: #1f1c16;--surface-2: #262218;--border: #3a352c;--text: #f0ece3;--muted: #a49d8f;--accent: #e8814f;--accent-soft: #33251c;--ink: #a8c4de;--ink-soft: #1e2a38;--ok: #6fbf8b;--warn: #d9b25f}}:root[data-theme=dark]{--bg: #17150f;--surface: #1f1c16;--surface-2: #262218;--border: #3a352c;--text: #f0ece3;--muted: #a49d8f;--accent: #e8814f;--accent-soft: #33251c;--ink: #a8c4de;--ink-soft: #1e2a38;--ok: #6fbf8b;--warn: #d9b25f}:root[data-theme=light]{--bg: #fbfaf8;--surface: #ffffff;--surface-2: #f4f2ef;--border: #e5e1db;--text: #1c1a17;--muted: #6b655d;--accent: #b5471f;--accent-soft: #f7e9e2;--ink: #1b3044;--ink-soft: #e7edf3}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.6 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,.mono{font-family:ui-monospace,SF Mono,JetBrains Mono,Menlo,monospace}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}.wrap.wide{max-width:1280px}header.site{border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--surface) 88%,transparent);position:sticky;top:0;backdrop-filter:blur(8px);z-index:10}header.site .wrap{display:flex;align-items:center;gap:20px;height:60px}.brand{font-weight:800;letter-spacing:-.02em;font-size:18px;color:var(--ink)}.brand b{color:var(--accent)}header.site nav{display:flex;align-items:center;gap:18px;margin-left:auto}header.site nav a{color:var(--muted);font-weight:600;font-size:14px}.me{display:inline-flex;align-items:center;gap:8px}.me-avatar{width:24px;height:24px;border-radius:50%;border:1px solid var(--border);background:var(--surface-2);object-fit:cover}footer.site{border-top:1px solid var(--border);margin-top:64px;color:var(--muted);font-size:14px}footer.site .wrap{padding-top:28px;padding-bottom:40px}.hero{padding:56px 0 28px}.hero h1{font-size:clamp(30px,5vw,46px);line-height:1.08;letter-spacing:-.03em;margin:0 0 14px;color:var(--ink)}.hero p{font-size:18px;color:var(--muted);max-width:620px;margin:0 0 22px}.hero .tag{color:var(--accent);font-weight:700;background:none;padding:0;font-size:inherit}.btn{display:inline-block;background:var(--accent);color:#fff;padding:10px 18px;border-radius:999px;font-weight:700;font-size:15px}.btn:hover{text-decoration:none;filter:brightness(1.05)}.btn.ghost{background:var(--surface-2);color:var(--text);border:1px solid var(--border)}.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:8px 0 24px}.filters form{display:contents}.search{flex:1 1 240px;min-width:200px;padding:9px 14px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:15px}.chip{padding:6px 13px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--muted);font-size:13px;font-weight:600;cursor:pointer}.chip.on{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,var(--border))}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 18px 16px;display:flex;flex-direction:column;gap:10px}.card:hover{border-color:color-mix(in srgb,var(--accent) 35%,var(--border))}.card h3{margin:0;font-size:18px;letter-spacing:-.01em}.card h3 a{color:var(--text)}.card .owner{color:var(--muted);font-size:13px;font-weight:600}.card .summary{color:var(--text);font-size:14.5px;margin:0}.card .madeof{color:var(--muted);font-size:13px}.row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.badge{font-size:12px;font-weight:700;padding:3px 9px;border-radius:6px;border:1px solid color-mix(in srgb,var(--ink) 25%,var(--border));color:var(--ink);background:var(--ink-soft)}.badge.key{color:var(--warn);background:var(--surface-2);border-color:color-mix(in srgb,var(--warn) 35%,var(--border))}.badge.paid{color:var(--accent);background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 30%,var(--border))}.badge.free{color:var(--ok);background:var(--surface-2);border-color:color-mix(in srgb,var(--ok) 35%,var(--border))}.badge.shell{color:var(--muted);background:var(--surface-2);border-color:var(--border)}.tag{font-size:12px;font-weight:600;color:var(--ink);background:var(--ink-soft);border-radius:999px;padding:2px 9px}.stars{margin-left:auto;color:var(--muted);font-size:13px;font-weight:700}.detail{display:grid;grid-template-columns:1fr;gap:22px;padding-top:8px}.detail h1{font-size:32px;letter-spacing:-.02em;margin:6px 0 2px;color:var(--ink)}.detail .lede{font-size:18px;color:var(--text);margin:6px 0 0}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px}.panel h2{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:color-mix(in srgb,var(--ink) 80%,var(--muted));margin:0 0 12px}.kv{display:grid;grid-template-columns:140px 1fr;gap:8px 16px;font-size:15px}.kv dt{color:var(--muted)}.kv dd{margin:0}.install{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:12px 14px;font-size:14px;overflow-x:auto}.install .prompt,.muted{color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:60px 0}.contest-head{padding:44px 0 10px}.contest-head h1{font-size:clamp(28px,4.5vw,40px);line-height:1.1;letter-spacing:-.03em;margin:0 0 10px;color:var(--ink)}.contest-head h1 .tag{color:var(--accent);font-weight:800;background:none;font-size:inherit;padding:0}.contest-head p{max-width:640px;margin:0 0 20px;font-size:17px}.countdown{display:flex;align-items:center;gap:10px;margin:4px 0 26px;flex-wrap:wrap}.cd-label{color:var(--accent);font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-right:4px}.cd-box{display:inline-flex;flex-direction:column;align-items:center;min-width:58px;padding:8px 10px 6px;background:var(--surface);border:1px solid color-mix(in srgb,var(--ink) 20%,var(--border));border-radius:10px}.cd-box b{font-size:22px;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--ink)}.cd-box i{font-style:normal;font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-top:3px}@media(max-width:480px){.countdown{gap:6px}.cd-label{flex-basis:100%;margin:0 0 4px}.cd-box{min-width:0;flex:1;padding:8px 4px 6px}}.board{list-style:none;padding:0;margin:0 0 8px;display:flex;flex-direction:column;gap:10px}.entry{display:flex;align-items:center;gap:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.entry:hover{border-color:color-mix(in srgb,var(--accent) 35%,var(--border))}.avatar{width:48px;height:48px;border-radius:50%;border:1px solid var(--border);background:var(--surface-2);object-fit:cover;flex-shrink:0}.entry-main{flex:1;min-width:0}.entry-main h3{margin:0;font-size:17px;letter-spacing:-.01em;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.entry-main h3 a{color:var(--text)}.entry-main .summary{margin:2px 0 4px;font-size:14.5px;color:var(--text)}.entry-meta{font-size:13px;font-weight:600}.vote-btn{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:56px;padding:8px 12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;cursor:pointer;color:var(--text);font:inherit}.vote-btn:hover{border-color:var(--accent);color:var(--accent)}.vote-arrow{font-size:13px;line-height:1}.vote-count{font-weight:800;font-size:16px;line-height:1;font-variant-numeric:tabular-nums;color:var(--ink)}.vote-btn:hover .vote-count{color:var(--accent)}.vote-btn.voted{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.vote-btn.voted .vote-count{color:var(--accent)}.vote-you{font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--accent)}.entry.voted{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:color-mix(in srgb,var(--accent-soft) 55%,var(--surface))}.home-strip{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-top:36px;padding:18px 20px;background:var(--ink-soft);border:1px solid color-mix(in srgb,var(--ink) 18%,var(--border));border-radius:var(--radius);font-size:14.5px}.home-strip b{display:block;margin-bottom:2px;color:var(--ink)}.home-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:start}.home-grid.solo{grid-template-columns:1fr}.home-main{min-width:0}.home-side{position:sticky;top:20px}@media(max-width:860px){.home-grid{grid-template-columns:1fr}.home-side{position:static}}.winners-card{background:var(--surface);border:1px solid color-mix(in srgb,var(--ink) 22%,var(--border));border-radius:var(--radius);padding:16px 18px}.winners-title{display:flex;align-items:center;gap:8px;margin:0;font-size:15px;letter-spacing:-.01em;color:var(--ink)}.trophy{font-size:18px;line-height:1}.winners-week{margin:4px 0 12px;font-size:12.5px;color:var(--muted);font-weight:600}.winners{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.winner{display:flex;align-items:center;gap:10px}.winner .medal{font-size:16px;line-height:1;width:20px;text-align:center;flex-shrink:0}.winner-name{flex:1;min-width:0;font-weight:700;font-size:14.5px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.winner-votes{font-variant-numeric:tabular-nums;font-weight:800;font-size:14px;color:var(--ink);flex-shrink:0}.results-link{display:inline-block;margin-top:14px;font-size:13px;font-weight:700;color:var(--accent)}.results-head{padding:40px 0 12px}.results-crumb{margin:0 0 12px;font-size:13px;font-weight:700}.results-head h1{display:flex;align-items:center;gap:10px;font-size:clamp(26px,4vw,34px);letter-spacing:-.02em;margin:0 0 6px;color:var(--ink)}.results-head .muted{margin:0;font-size:15px}.results-board .entry{gap:14px}.results-board .rank{min-width:30px;text-align:center;font-size:18px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--muted);flex-shrink:0}.results-board .entry.winner{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:color-mix(in srgb,var(--accent-soft) 60%,var(--surface))}.result-votes{display:flex;flex-direction:column;align-items:center;min-width:56px;flex-shrink:0}.result-votes i{font-style:normal;font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-top:2px}.h1-plug{color:var(--accent);vertical-align:-.16em;margin-right:10px}.modal-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px;background:color-mix(in srgb,#000 60%,transparent)}.modal-overlay[hidden]{display:none}.modal-card{position:relative;width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:30px 28px 28px;text-align:center;box-shadow:0 20px 60px #0000004d}.modal-close{position:absolute;top:8px;right:12px;background:none;border:none;font-size:26px;line-height:1;color:var(--muted);cursor:pointer;padding:4px 8px}.modal-close:hover{color:var(--text)}.modal-brand{display:flex;align-items:center;justify-content:center;gap:8px;font-size:20px;font-weight:800;letter-spacing:-.02em;color:var(--ink);margin-bottom:18px}.modal-brand b,.modal-plug{color:var(--accent)}.modal-card h2{margin:0 0 8px;font-size:22px;letter-spacing:-.01em;color:var(--text)}.modal-card .muted{margin:0 0 22px;font-size:14.5px}.gh-btn{display:inline-flex;align-items:center;gap:10px;padding:11px 20px;background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:999px;font-weight:700;font-size:15px}.gh-btn:hover{border-color:var(--accent);text-decoration:none}
