:root{--paper:#f4f7f3;--grid:rgba(33,110,57,.08);--surface:#fff;--ink:#23262e;--ink-soft:#6b7080;--green:#216e39;--green-soft:#e6f4e6;--amber:#c99700;--line:#d9e5da;--danger:#b3261e;--radius:12px;--mono:"IBM Plex Mono","Menlo","Consolas",monospace;--sans:"IBM Plex Sans JP","Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif}*{margin:0;padding:0;box-sizing:border-box}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important}}body,html{height:100%}body{font-family:var(--sans);color:var(--ink);line-height:1.65;background:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px),var(--paper);background-size:28px 28px,28px 28px,auto}a{color:var(--green)}button{font:inherit;cursor:pointer}:is(button,a,input,select):focus-visible{outline:3px solid var(--green);outline-offset:2px;border-radius:4px}.wrap{max-width:920px;margin:0 auto;padding:0 20px}header{padding:34px 0 0}.topline{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}.brand .eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.22em;color:var(--green);text-transform:uppercase;margin-bottom:2px}.brand h1{font-family:var(--mono);font-weight:700;letter-spacing:-.03em;font-size:clamp(26px,5.2vw,40px);line-height:1.15}.brand h1 em{font-style:normal;color:var(--green)}.brand .sub{font-size:13px;color:var(--ink-soft);margin-top:4px}.auth{display:flex;align-items:center;gap:10px;font-size:13px;padding-top:6px;flex-wrap:wrap}.whoami{font-family:var(--mono);font-weight:600;color:var(--green)}.pro-badge{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.12em;background:var(--amber);color:#fff;border-radius:999px;padding:2px 9px}.btn{background:var(--surface);color:var(--ink);border:1.5px solid var(--ink);border-radius:999px;padding:7px 18px;font-size:13px;font-weight:700;transition:background .15s,color .15s}.btn:hover{background:var(--ink);color:var(--surface)}.btn.primary{background:var(--green);border-color:var(--green);color:#fff}.btn.primary:hover{background:#184f29}.btn:disabled{opacity:.55;cursor:default}.controls{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:26px 0 20px}.tabs{display:inline-flex;background:var(--surface);border:1.5px solid var(--line);border-radius:999px;padding:4px;gap:2px}.tab{background:none;border:none;border-radius:999px;font-weight:600;font-size:14px;color:var(--ink-soft);padding:7px 16px;transition:background .15s,color .15s}.tab:hover{color:var(--ink)}.tab.active{background:var(--green);color:#fff}.tab .en{font-family:var(--mono);font-size:10.5px;margin-left:5px;opacity:.75}select{font:inherit;font-size:13.5px;color:var(--ink);background:var(--surface);border:1.5px solid var(--line);border-radius:999px;padding:8px 14px}.meta{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-family:var(--mono);font-size:12px;color:var(--ink-soft)}.card,.meta{margin-bottom:14px}.card{display:grid;grid-template-columns:84px 1fr;grid-gap:0;gap:0;background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius);overflow:hidden;opacity:0;animation:rise .35s ease forwards}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.rankcol{background:var(--green-soft);border-right:1.5px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:14px 6px}.rankcol .num{font-family:var(--mono);font-size:30px;font-weight:700;color:var(--green);line-height:1}.rankcol .lbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;color:var(--ink-soft)}.card.top1 .rankcol{background:var(--green)}.card.top1 .rankcol .lbl,.card.top1 .rankcol .num{color:#fff}.body{padding:16px 18px 14px;min-width:0}.titleline{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.repo-name{font-family:var(--mono);font-size:16.5px;font-weight:700;word-break:break-all}.repo-name a{text-decoration:none}.repo-name a:hover{text-decoration:underline}.repo-name .owner{color:var(--ink-soft);font-weight:400}.stars{font-family:var(--mono);font-size:15px;font-weight:700;color:var(--amber);white-space:nowrap;text-align:right}.stars small{display:block;font-size:10px;font-weight:400;color:var(--ink-soft)}.desc{font-size:13.5px;color:var(--ink);margin-top:6px;max-width:64ch}.badges{display:flex;gap:8px 14px;align-items:center;margin-top:10px;font-size:12px;color:var(--ink-soft);flex-wrap:wrap}.chip{font-family:var(--mono);font-size:11px;color:var(--green);padding:1px 10px}.bar,.chip{background:var(--green-soft);border-radius:999px}.bar{height:5px;margin-top:12px;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--green),var(--amber));border-radius:999px}.actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.mini{background:var(--surface);border:1.5px solid var(--line);border-radius:999px;font-size:12.5px;font-weight:600;color:var(--ink);padding:5px 14px;transition:border-color .15s,background .15s,color .15s}.mini:hover{border-color:var(--ink)}.mini.fav-on{background:var(--amber);border-color:var(--amber);color:#fff}.mini.ai{border-color:var(--green);color:var(--green)}.mini.ai:hover{background:var(--green);color:#fff}.mini:disabled{opacity:.55;cursor:default}.ai-panel{margin-top:12px;border-top:1.5px dashed var(--line);padding-top:12px;font-size:13.5px}.ai-panel .tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--green);margin-bottom:4px}.ai-panel .loading{color:var(--ink-soft);font-size:13px}.ai-panel .loading:after{content:"…";animation:dots 1.2s steps(4) infinite}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}.ai-panel .err{color:var(--danger);font-size:12.5px}.ai-panel .paywall-btn{margin-top:8px}.state{background:var(--surface);border:1.5px dashed var(--line);border-radius:var(--radius);padding:56px 16px;text-align:center;color:var(--ink-soft);font-size:14px}.state strong{color:var(--ink);display:block;margin-bottom:6px}.spinner{width:28px;height:28px;margin:0 auto 14px;border-radius:50%;border:3px solid var(--green-soft);border-top-color:var(--green);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}footer{font-size:12px;color:var(--ink-soft);border-top:1.5px solid var(--line);margin-top:40px;padding:18px 0 48px}.overlay{position:fixed;inset:0;background:rgba(35,38,46,.45);display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal{background:var(--surface);border-radius:var(--radius);width:100%;max-width:380px;padding:28px;border:1.5px solid var(--line)}.modal h2{font-family:var(--mono);font-size:18px;margin-bottom:4px}.modal p{font-size:12px;color:var(--ink-soft);margin-bottom:16px}.field{margin-bottom:12px}.field label{display:block;font-size:12px;font-weight:700;margin-bottom:4px}.field input{width:100%;font:inherit;font-size:14px;border:1.5px solid var(--line);border-radius:8px;padding:9px 12px;background:var(--surface);color:var(--ink)}.field input:focus{border-color:var(--green)}.modal .err{font-size:12px;font-weight:700;color:var(--danger);min-height:18px;margin-bottom:8px}.modal .modal-actions{display:flex;gap:10px;justify-content:flex-end}.sr-only{position:absolute;left:-9999px}.legal{max-width:760px;margin:0 auto;padding:48px 20px 80px}.legal .back{font-size:13px;margin-bottom:24px;display:inline-block}.legal h1{font-family:var(--mono);font-size:24px;font-weight:700;margin-bottom:8px}.legal .updated{font-size:12px;color:var(--ink-soft);margin-bottom:32px;font-family:var(--mono)}.legal h2{font-size:16px;font-weight:700;margin:32px 0 8px;padding-top:4px;border-top:1.5px solid var(--line)}.legal h2:first-of-type{border-top:none;margin-top:0}.legal li,.legal p{font-size:14px;color:var(--ink);margin-bottom:8px}.legal ul{padding-left:20px;margin-bottom:8px}.legal table{width:100%;border-collapse:collapse;margin:8px 0 4px;font-size:13.5px}.legal table td,.legal table th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}.legal table th{width:34%;color:var(--ink-soft);font-weight:600;background:var(--green-soft)}.legal .placeholder{color:var(--danger);font-weight:600}.legal .note{margin-top:32px;padding:14px 16px;background:var(--green-soft);border-radius:var(--radius);font-size:12.5px;color:var(--ink-soft)}@media (max-width:560px){.card{grid-template-columns:58px 1fr}.rankcol .num{font-size:22px}.titleline{flex-direction:column;gap:4px}.stars{text-align:left}.stars small{display:inline;margin-left:6px}}