:root{color-scheme:light;--bg:#fff;--surface:#fff;--surface-2:#f4f7fa;--ink:#1b2733;--muted:#5f6b7a;--line:#e3e8ef;--radius:8px;--shadow:0 1px 2px #1420300d;--maxw:1140px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Helvetica Neue,Arial,system-ui,-apple-system,Hiragino Kaku Gothic ProN,Noto Sans JP,Meiryo,sans-serif;line-height:1.7}.container{max-width:var(--maxw);margin:0 auto;padding:0 24px}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}a,button,label,select,summary,[role=button]{touch-action:manipulation}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:200;background:var(--brand);color:#fff;border-radius:6px;padding:8px 14px;transition:top .15s;position:absolute;top:-48px;left:8px}.skip-link:focus{text-decoration:none;top:8px}.muted{color:var(--muted)}.small{font-size:.82rem}.topbar{background:var(--brand);height:4px}.site-header{border-bottom:1px solid var(--line);background:#fff}.header-inner{justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.brand{color:var(--ink);align-items:center;gap:12px;display:flex}.brand:hover{text-decoration:none}.brand-mark{letter-spacing:.06em;color:#fff;background:var(--brand);border-radius:6px;padding:6px 10px;font-size:.95rem;font-weight:800}.brand-text{flex-direction:column;font-size:1.1rem;font-weight:700;line-height:1.2;display:flex}.brand-text small{color:var(--muted);font-size:.72rem;font-weight:400}.nav a{color:var(--ink);margin-left:22px;font-size:.95rem;font-weight:600}.nav a:hover{color:var(--brand);text-decoration:none}.nav a.lang-switch{border:1px solid var(--line);color:var(--brand);border-radius:999px;padding:3px 12px;font-size:.85rem}.nav a.lang-switch:hover{background:var(--brand-soft)}.nav-toggle{display:none}@media (width<=640px){.header-inner{flex-wrap:wrap}.brand{flex:1 1 0;min-width:0;margin-right:auto}.brand-text{font-size:1rem}.nav-toggle{border:1px solid var(--line);width:44px;height:40px;color:var(--ink);cursor:pointer;background:#fff;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.nav-toggle:focus-visible{outline-offset:2px;outline:3px solid #0b4f8a66}.nav-toggle-bars,.nav-toggle-bars:before,.nav-toggle-bars:after{background:currentColor;border-radius:2px;width:20px;height:2px;transition:transform .15s,opacity .15s;display:block}.nav-toggle-bars{position:relative}.nav-toggle-bars:before{content:"";position:absolute;top:-6px;left:0}.nav-toggle-bars:after{content:"";position:absolute;top:6px;left:0}.nav-toggle[aria-expanded=true] .nav-toggle-bars{background:0 0}.nav-toggle[aria-expanded=true] .nav-toggle-bars:before{transform:translateY(6px)rotate(45deg)}.nav-toggle[aria-expanded=true] .nav-toggle-bars:after{transform:translateY(-6px)rotate(-45deg)}.nav{flex-direction:column;flex-basis:100%;align-items:stretch;gap:2px;padding:6px 0 2px;display:none}.nav.open{display:flex}.nav a{border-radius:6px;margin-left:0;padding:11px 8px}.nav a:hover{background:var(--brand-soft)}.nav a.lang-switch{align-self:flex-start;margin:6px 0 0}}main.container{min-height:60vh;padding-top:32px;padding-bottom:56px}.site-footer{border-top:3px solid var(--brand);background:var(--surface-2);margin-top:24px;padding:28px 0}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.footer-title{margin:0 0 4px;font-weight:700}h1{letter-spacing:-.015em;text-wrap:balance;margin:0 0 6px;font-size:1.8rem}h2{border-bottom:2px solid var(--line);letter-spacing:-.01em;text-wrap:balance;margin:36px 0 14px;padding-bottom:8px;font-size:1.25rem}h2 .en{color:var(--muted);letter-spacing:0;margin-left:8px;font-size:.85rem;font-weight:400}h3{text-wrap:balance;margin:16px 0 6px;font-size:1.02rem}.stat-card .num,.cat-tile .count,.cat-list .count,.readiness-score,.repo-row .rl-date,.repo-row .rl-score,.sig-star,.star-rating .stars{font-variant-numeric:tabular-nums}@media (prefers-reduced-motion:reduce){*{transition-duration:.001ms!important;animation-duration:.001ms!important}}.hero{isolation:isolate;background:radial-gradient(120% 140% at 100% -10%, var(--accent-soft) 0%, #e7f4f200 42%), linear-gradient(160deg, #fff 0%, #fbfdfe 48%, var(--surface-2) 100%);border:1px solid var(--line);border-radius:14px;padding:clamp(28px,4vw,52px) clamp(22px,4vw,48px);position:relative;overflow:hidden}.hero:before{content:"";z-index:2;background:linear-gradient(180deg, var(--brand), var(--accent));width:4px;position:absolute;inset:0 auto 0 0}.hero-lattice{z-index:0;pointer-events:none;opacity:0;animation:.72s cubic-bezier(.16,.84,.34,1) 60ms forwards lattice-settle;position:absolute;inset:0;transform:scale(1.06);mask-image:radial-gradient(135% 120% at 102% -8%,#000 18%,#0000 62%)}@keyframes lattice-settle{to{opacity:1;transform:scale(1)}}.hero-lattice.pat-lattice{background-image:radial-gradient(var(--lattice-node) 2.6px, transparent 2.8px), radial-gradient(var(--lattice-dot) 1.4px, transparent 1.6px);background-position:11px 11px,0 0;background-size:88px 88px,22px 22px}.hero-lattice.pat-hex{background-image:radial-gradient(var(--lattice-node) 2.4px, transparent 2.6px), repeating-linear-gradient(0deg, var(--lattice-dot) 0 1px, transparent 1px 26px), repeating-linear-gradient(60deg, var(--lattice-dot) 0 1px, transparent 1px 26px), repeating-linear-gradient(120deg, var(--lattice-dot) 0 1px, transparent 1px 26px);background-position:14px 14px,0 0,0 0,0 0;background-size:90px 90px,auto,auto,auto}.hero-lattice.pat-grid{background-image:repeating-linear-gradient(0deg, var(--lattice-dot) 0 1px, transparent 1px 28px), repeating-linear-gradient(90deg, var(--lattice-dot) 0 1px, transparent 1px 28px)}.hero-lattice.pat-waves{background-image:repeating-radial-gradient(circle at 100% 0, var(--lattice-dot) 0 1px, transparent 1px 30px)}.hero-lattice.pat-image{background-image:var(--hero-watermark-image,none);background-position:100% 0;background-repeat:no-repeat;background-size:clamp(420px,60%,760px)}.hero-lattice.pat-circuit{background-image:var(--hero-watermark-image,none);background-repeat:repeat;background-size:240px 240px}.hero-lattice.pat-none{background-image:none}.hero.hero-dark{background:radial-gradient(110% 130% at 100% -10%, #1472ae6b 0%, #1472ae00 55%), linear-gradient(160deg, #03101c 0%, #071f36 55%, var(--brand-dark) 100%);border-color:#0b2a45}.hero.hero-dark .hero-lattice{mask-image:linear-gradient(90deg,#00000040 0%,#0009 45%,#000 80%)}.hero.hero-dark h1{color:#fff}.hero.hero-dark .hero-lede{color:#ffffffdb}.hero.hero-dark .hero-eyebrow{color:var(--accent)}.hero.hero-dark .hero-eyebrow:before{box-shadow:0 0 0 3px #ffffff1f}.hero.hero-dark .hero-purposes-label{color:#ffffffd1}.hero.hero-dark .hero-ledger:before{border-top-color:#fff3}.hero.hero-dark .hero-ledger .ledger-item{border-left-color:#fff3}.hero.hero-dark .hero-ledger dd{color:#fff}.hero.hero-dark .hero-ledger dt{color:#ffffffc7}.hero.hero-dark .hero-search input{border-color:#0000}.hero.hero-dark .hero-search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #ffffffbf}.hero.hero-dark .purpose-chip{background:#fffffff0;border-color:#0000}.hero.hero-dark .purpose-chip:hover{background:#fff}.hero.hero-dark .hero-search button:focus-visible,.hero.hero-dark .purpose-chip:focus-visible{outline-color:#ffffffb3}.hero-body{z-index:1;max-width:64ch;position:relative}.hero-eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--accent-ink);align-items:center;gap:8px;margin:0 0 10px;font-size:.72rem;font-weight:700;display:inline-flex}.hero-eyebrow:before{content:"";background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 3px var(--accent-soft);flex:none;transform:rotate(45deg)}.hero h1{color:var(--ink);letter-spacing:-.022em;margin:0 0 12px;font-size:clamp(1.6rem,1rem + 3vw,2.9rem);font-weight:800;line-height:1.08}.hero-lede{color:var(--muted);max-width:56ch;margin:0;font-size:1.05rem;line-height:1.65}.hero-search{gap:10px;max-width:660px;margin-top:26px;display:flex}.hero-search input{color:var(--ink);background:#fff;border:1.5px solid #c4d0e0;border-radius:12px;outline:none;flex:1;padding:15px 18px;font-size:1.02rem;transition:border-color .15s,box-shadow .15s;box-shadow:0 1px 2px #1420300a}.hero-search input::placeholder{color:#6b7686}.hero-search input:focus{border-color:var(--brand);box-shadow:0 0 0 4px #0b4f8a29}.hero-search button{background:var(--brand);color:#fff;cursor:pointer;border:none;border-radius:12px;padding:0 26px;font-size:1rem;font-weight:700;transition:background .15s}.hero-search button:hover{background:var(--brand-dark)}.hero-search button:focus-visible{outline-offset:2px;outline:3px solid #0b4f8a66}.hero-purposes{flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;display:flex}.hero-purposes-label{color:var(--muted);margin-right:2px;font-size:.82rem;font-weight:700}.purpose-chip{color:var(--brand-dark);background:#ffffffbf;border:1px solid #d2e0ee;border-radius:999px;align-items:center;gap:7px;padding:5px 7px 5px 13px;font-size:.85rem;font-weight:600;transition:border-color .15s,background .15s,transform .15s;display:inline-flex}.purpose-chip:hover{border-color:var(--accent);background:#fff;text-decoration:none;transform:translateY(-1px)}.purpose-chip:focus-visible{outline-offset:2px;outline:3px solid #0b4f8a59}.purpose-chip .c{color:var(--accent-ink);background:var(--accent-soft);font-variant-numeric:tabular-nums;border-radius:999px;padding:1px 8px;font-size:.74rem;font-weight:700}.hero-ledger{flex-wrap:wrap;align-items:baseline;gap:6px 0;margin:26px 0 0 -13px;padding-top:18px;display:flex;position:relative;overflow:hidden}.hero-ledger:before{content:"";border-top:1px solid var(--line);position:absolute;top:0;left:13px;right:0}.hero-ledger .ledger-item{border-left:1px solid var(--line);align-items:baseline;gap:8px;margin:0 12px 0 -1px;padding-left:13px;display:inline-flex}.hero-ledger dd{color:var(--brand);font-variant-numeric:tabular-nums;margin:0;font-size:1.15rem;font-weight:800}.hero-ledger dt{color:var(--muted);order:2;font-size:.85rem}.hero-body>*{animation:.36s cubic-bezier(.22,.7,.3,1) both hero-rise}.hero-eyebrow{animation-delay:40ms}.hero-lede{animation-delay:.12s}.hero-search{animation-delay:.17s}.hero-purposes{animation-delay:.22s}.hero-ledger{animation-delay:.27s}.hero h1{animation:.36s cubic-bezier(.22,.7,.3,1) both hero-rise-solid}@keyframes hero-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes hero-rise-solid{0%{transform:translateY(10px)}to{transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.hero-lattice{opacity:1;animation:none;transform:none}.hero-body>*{animation:none}}.card-grid{grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px;display:grid}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:10px;padding:18px;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex}.card:hover{border-color:#c9d6e5;transform:translateY(-2px);box-shadow:0 4px 14px #14203017}.card-title{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.card-title a{color:var(--brand-dark);font-size:1.08rem;font-weight:700}.tagline{color:var(--muted);font-size:.94rem}.badges{flex-wrap:wrap;gap:6px;display:flex}.badge{border:1px solid var(--line);color:var(--brand-dark);white-space:nowrap;background:#f2f5f9;border-radius:4px;padding:2px 9px;font-size:.73rem;font-weight:600}.badge.cat{background:var(--accent-soft);color:var(--accent-ink);border-color:#cfe9e5}.badge.cat:hover{border-color:var(--accent);text-decoration:none}.badge.lang{background:var(--brand-soft);color:var(--brand);border-color:#d2e3f3}.badge.maturity-stable{color:#1d7a3e;background:#e7f6ec;border-color:#c4e9cf}.badge.maturity-beta{color:#9a6212;background:#fff4e0;border-color:#f3dcab}.badge.maturity-experimental{color:#b3322b;background:#fdeaea;border-color:#f4c7c4}.badge.maturity-unknown{color:#5d6b80;background:#eef1f5}.badge.diff-beginner{color:#1d7a3e;background:#e7f6ec}.badge.diff-intermediate{color:#9a6212;background:#fff4e0}.badge.diff-advanced{color:#b3322b;background:#fdeaea}.badge.diff-unknown{color:#5d6b80;background:#eef1f5}.badge.priv{color:#6d28d9;background:#efe9fe;border-color:#ddd4fb}.badge.on{background:var(--accent-soft);color:var(--accent-ink);border-color:#cfe9e5}.badge.off{color:#9aa3b2;background:#f3f4f6}.meta-row{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:.82rem;display:flex}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{background:var(--surface-2);border:1px solid var(--line);color:var(--ink);border-radius:4px;padding:1px 8px;font-size:.78rem}.readiness{align-items:center;gap:10px;display:flex}.readiness-bar{background:#e6ebf2;border-radius:999px;flex:1;height:7px;overflow:hidden}.readiness-bar>span{background:linear-gradient(90deg, var(--brand), var(--accent));height:100%;display:block}.readiness-score{text-align:right;min-width:40px;color:var(--brand-dark);font-size:.9rem;font-weight:800}.star-rating{white-space:nowrap;align-items:center;gap:7px;display:inline-flex}.star-rating .star-label{color:var(--muted);min-width:3.4em;font-size:.78rem}.star-rating .stars{letter-spacing:1px;display:inline-flex;position:relative}.star-rating .star{color:#d7dee7;line-height:1}.star-rating .star.full{color:#f0a92b}.star-rating .star.half{background:linear-gradient(90deg,#f0a92b 50%,#d7dee7 50%);-webkit-text-fill-color:transparent;color:#0000;background-clip:text}.star-rating.sm .stars{font-size:.82rem}.star-rating.sm .star-label{min-width:2.6em;font-size:.72rem}.star-rating.md .stars{font-size:1rem}.ratings-col{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.activity{color:var(--muted);white-space:nowrap;align-items:center;gap:5px;font-size:.78rem;display:inline-flex}.activity:before{content:"●";font-size:.72em;line-height:1}.activity.lvl-active:before{color:#1d9b54}.activity.lvl-recent:before{color:#d99a17}.activity.lvl-idle:before{color:#9aa3b2}.checklist{grid-template-columns:1fr 1fr;gap:4px 16px;margin:0;padding:0;list-style:none;display:grid}.checklist li{font-size:.92rem}.checklist .ok:before{content:"✓ ";color:#1d7a3e;font-weight:700}.checklist .no:before{content:"— ";color:#aab2bf}.section{margin:28px 0}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px}.two-col{grid-template-columns:260px 1fr;align-items:start;gap:24px;display:grid}.cat-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;display:grid}.cat-tile{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:var(--radius);color:var(--ink);box-shadow:var(--shadow);justify-content:space-between;align-items:center;gap:10px;padding:16px 18px;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex}.cat-tile:hover{border-left-color:var(--accent);text-decoration:none;transform:translateY(-2px);box-shadow:0 4px 14px #1420301a}.cat-tile .name{font-weight:600;line-height:1.35}.cat-tile .name-part{display:inline-block}.footer-links{flex-wrap:wrap;gap:6px 18px;margin:10px 0 0;padding:0;font-size:.9rem;list-style:none;display:flex}.cat-tile .name-en{color:var(--muted);margin-top:2px;font-size:.74rem;font-weight:400;display:block}.cat-tile .count{background:var(--brand-soft);color:var(--brand);white-space:nowrap;border-radius:999px;padding:2px 11px;font-size:.85rem;font-weight:700}.cat-tile.empty-cat{border-left-color:var(--line);opacity:.55;cursor:not-allowed}.cat-tile.empty-cat:hover{border-left-color:var(--line);box-shadow:var(--shadow)}.cat-tile.empty-cat .count{color:var(--muted);background:#eef1f5}.cat-list{margin:0;padding:0;list-style:none}.cat-list li{border-bottom:1px solid var(--line)}.cat-list a{color:var(--ink);justify-content:space-between;align-items:center;padding:9px 4px;display:flex}.cat-list a:hover{color:var(--brand);text-decoration:none}.cat-list .count{background:var(--brand-soft);color:var(--brand);border-radius:999px;padding:1px 9px;font-size:.8rem;font-weight:700}.pill-list{flex-wrap:wrap;gap:8px;display:flex}.pill-list a{background:var(--surface);border:1px solid var(--line);color:var(--ink);border-radius:6px;padding:7px 14px}.pill-list a:hover{border-color:var(--brand);color:var(--brand);text-decoration:none}.btn{background:var(--brand);color:#fff;border-radius:6px;padding:9px 18px;font-weight:600;display:inline-block}.btn:hover{background:var(--brand-dark);text-decoration:none}.btn.secondary{background:var(--surface-2);color:var(--brand);border:1px solid var(--line)}.definition{grid-template-columns:170px 1fr;gap:8px 18px;display:grid}.definition dt{color:var(--muted);font-size:.9rem}.definition dd{margin:0}.notice{color:#8a5a12;background:#fef6e7;border:1px solid #f3dcab;border-radius:6px;padding:10px 14px;font-size:.9rem}.repo-signals{color:var(--ink);flex-wrap:wrap;align-items:center;gap:16px;margin:-4px 0 18px;font-size:.9rem;display:flex}.repo-signals span{align-items:center;gap:5px;font-weight:600;display:inline-flex}.repo-signals span.muted{color:var(--muted);font-weight:400}.sig-star{color:#c8881a;font-weight:600}.rl-sub .rl-star{font-size:.82rem}.rl-sub .rl-license{color:var(--muted);font-size:.78rem}.repo-list{border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow:hidden}.repo-list-head,.repo-row{grid-template-columns:minmax(200px,2.4fr) minmax(150px,1.7fr) minmax(72px,.7fr) 140px 92px;align-items:center;gap:14px;display:grid}.repo-list-head>*,.repo-row>*{min-width:0}.repo-row .rl-cats .badge{white-space:normal;line-height:1.25}.repo-row .rl-lang{overflow-wrap:anywhere}.repo-list-head{letter-spacing:.03em;text-transform:uppercase;color:var(--muted);background:var(--surface-2);border-bottom:1px solid var(--line);padding:9px 16px;font-size:.74rem;font-weight:700}.repo-row{border-top:1px solid var(--line);color:var(--ink);padding:12px 16px}.repo-row:hover{background:#f7fafc;text-decoration:none}.repo-row .rl-name{color:var(--brand-dark);font-size:1rem;font-weight:700;line-height:1.3}.rl-owner{color:var(--muted);font-size:.85rem;font-weight:400}.repo-row .rl-tag{color:var(--muted);-webkit-line-clamp:1;-webkit-box-orient:vertical;margin-top:2px;font-size:.84rem;display:-webkit-box;overflow:hidden}.repo-row .rl-sub{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.repo-row .rl-cats{flex-wrap:wrap;gap:4px;display:flex}.repo-row .rl-lang{color:var(--ink);font-size:.85rem}.repo-row .rl-score{color:var(--brand-dark);font-weight:800}.repo-row .rl-score small{color:var(--muted);font-size:.7rem;font-weight:400;display:block}.repo-row .rl-date{color:var(--muted);font-size:.82rem}.repo-row .rl-mini-bar{background:#e6ebf2;border-radius:999px;height:5px;margin-top:3px;overflow:hidden}.repo-row .rl-mini-bar>span{background:linear-gradient(90deg, var(--brand), var(--accent));height:100%;display:block}.view-toggle{border:1px solid var(--line);border-radius:8px;display:inline-flex;overflow:hidden}.view-toggle button{color:var(--muted);cursor:pointer;background:#fff;border:none;padding:6px 14px;font-size:.85rem;font-weight:600}.view-toggle button.active{background:var(--brand);color:#fff}@media (width<=760px){.repo-list-head{display:none}.repo-row{grid-template-columns:1fr auto;row-gap:6px}.repo-row .rl-cats,.repo-row .rl-lang{grid-column:1/-1}}.readme-body{overflow-wrap:anywhere}.readme-body img{max-width:100%;height:auto}.readme-body h3,.readme-body h4{border-bottom:1px solid var(--line);margin:24px 0 10px;padding-bottom:6px}.readme-body h3{font-size:1.5rem}.readme-body h4{font-size:1.25rem}.readme-body h5{margin:18px 0 8px;font-size:1.05rem}.readme-body h6{margin:16px 0 6px;font-size:.95rem}.readme-body [id]{scroll-margin-top:16px}.readme-body pre{color:#e2e8f0;background:#0f172a;border-radius:8px;padding:14px;font-size:.86rem;overflow-x:auto}.readme-body :not(pre)>code{background:#eef2f7;border-radius:4px;padding:1px 6px;font-size:.88em}.readme-body pre code{background:0 0;padding:0}.readme-body table{border-collapse:collapse;display:block;overflow-x:auto}.readme-body th,.readme-body td{border:1px solid var(--line);padding:6px 10px}.readme-body blockquote{border-left:3px solid var(--line);color:var(--muted);margin:12px 0;padding:2px 14px}.readme-body a{word-break:break-word}@media (width<=820px){.two-col{grid-template-columns:1fr}}@media (width<=640px){.checklist,.definition{grid-template-columns:1fr}.brand-text small{display:none}}@media (width<=560px){body{overflow-x:hidden}.container{padding:0 16px}h2{font-size:1.15rem}.hero{padding:24px 18px}.hero-lede{font-size:.97rem}.hero-search{flex-direction:column;gap:8px}.hero-search button{padding:13px}.hero-ledger{gap:8px 0}.card-grid,.cat-grid{grid-template-columns:1fr}.card{min-width:0}.badge{white-space:normal}}
