@charset "UTF-8";
:root{--paper:#fcfcfa;--surface:#fff;--ink:#292c30;--muted:#868b91;--line:#e6e7e4;--green:#8b771f;--accent:#e2c65d;--soft:#f4efda;--field:#f3f4f1;color-scheme:light;font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif}
[data-theme=dark]{--paper:#191d22;--surface:#22272d;--ink:#e6e8eb;--muted:#8c959f;--line:#30363d;--green:#dec979;--soft:#343326;--field:#20252b;color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;min-height:100svh;display:flex;flex-direction:column;background:var(--paper);color:var(--ink);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none}a,button,input{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:2px solid var(--green);outline-offset:4px}input:focus{outline:none}[hidden]{display:none!important}::selection{background:#a48e3c66}
svg.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.icon-library{position:absolute;width:0;height:0;overflow:hidden}.shell{width:min(920px,calc(100% - 80px));margin-inline:auto}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:fixed;top:-80px;left:24px;padding:10px 18px;background:var(--ink);color:var(--paper);z-index:99}.skip-link:focus{top:12px}
.topbar{height:96px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.identity{display:flex;align-items:center;gap:12px}.brand{display:flex;align-items:center;gap:7px;font-size:20px;font-weight:650;letter-spacing:-.03em}.brand-lemon{width:19px;height:19px;transform:rotate(-10deg)}.sticker{display:block;padding:0;flex-shrink:0;touch-action:manipulation}.miku-sticker{width:42px;height:42px;border:1px solid var(--line);background:var(--field);border-radius:50%;overflow:hidden}.miku-sticker img{display:block;width:100%;height:100%;object-fit:contain;padding:2px;pointer-events:none}.sticker.poked{animation:poke .45s ease}.header-tools{display:flex;align-items:center;gap:12px}.icon-button{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;color:var(--muted)}.icon-button:hover{color:var(--ink);background:var(--field)}.icon-button svg{width:18px;height:18px}
.page{flex:1;padding-top:58px;padding-bottom:86px;min-width:0}.directory-intro{display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin-bottom:27px}.directory-intro h1{font-size:30px;font-weight:600;letter-spacing:-.045em;line-height:1.4;margin:0}.heading-dot{color:var(--green);margin-left:4px}.page-label{font-family:ui-monospace,monospace;font-size:11px;color:var(--muted);letter-spacing:.02em}
.search{display:flex;align-items:center;gap:13px;height:58px;background:var(--field);border:1px solid var(--line);border-radius:9px;padding:0 8px 0 19px;transition:border-color .18s}.search:focus-within{border-color:var(--green)}.search>.icon{width:18px;height:18px;color:var(--muted)}.search input{width:100%;min-width:0;background:none;border:0;padding:16px 0;font-size:13px}.search input::placeholder{color:var(--muted)}.search input::-webkit-search-cancel-button{display:none}.search kbd{font-family:ui-monospace,monospace;color:var(--muted);font-size:11px;border:1px solid var(--line);padding:0 5px;border-radius:3px;line-height:20px}.search:focus-within kbd{display:none}.search-submit{display:flex;align-items:center;justify-content:center;gap:9px;border-left:1px solid var(--line);height:30px;padding:0 13px 0 20px;font-size:12px;color:var(--muted);white-space:nowrap}.search-submit:hover{color:var(--ink)}.search-submit>.icon{width:13px;height:13px}.search-clear{display:grid;place-items:center;padding:4px;color:var(--muted)}.search-clear .icon{width:15px;height:15px}
.filters{display:flex;align-items:center;gap:30px;border-bottom:1px solid var(--line);margin-top:34px}.filters button{display:flex;align-items:center;gap:7px;position:relative;min-height:49px;padding:0 2px 13px;font-size:12px;white-space:nowrap;color:var(--muted)}.filters button:hover{color:var(--ink)}.filters button.selected{color:var(--ink)}.filters button.selected:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--green)}.filters button>span{font-family:ui-monospace,monospace;font-size:9px;line-height:17px;padding:0 4px;border-radius:3px;background:var(--field);color:var(--muted)}.filters button.selected>span{background:var(--soft);color:var(--green)}
.directory-section{margin-top:16px}.section-head{display:flex;justify-content:flex-end;min-height:19px}.section-head>span{font-size:10px;color:var(--muted)}.site-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:46px}.site-card{position:relative;min-width:0;border-bottom:1px solid var(--line);transition:border-color .18s}.site-card>a{display:grid;grid-template-columns:40px minmax(0,1fr);gap:2px 15px;align-content:center;min-height:108px;padding:22px 38px 22px 0}.site-icon{grid-row:span 2;align-self:center;width:40px;height:40px;display:grid;place-items:center;color:var(--icon-color,var(--green));background:var(--icon-bg,var(--soft));border-radius:9px}.site-icon .icon{width:22px;height:22px}[data-theme=dark] .site-icon{filter:brightness(.83) saturate(.75)}.site-card h3{font-size:14px;font-weight:550;line-height:1.8;margin:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.site-card p{font-size:11px;margin:0;color:var(--muted);line-height:1.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.site-card:hover{border-color:var(--green)}.site-card:hover h3{color:var(--green)}.favorite-button{position:absolute;right:0;top:35px;width:32px;height:34px;display:grid;place-items:center;border-radius:5px;color:var(--muted)}.favorite-button>.icon{width:15px;height:15px;opacity:.65}.favorite-button:hover,.favorite-button[aria-pressed=true]{color:var(--green)}.favorite-button:hover>.icon,.favorite-button[aria-pressed=true]>.icon{opacity:1}.favorite-button[aria-pressed=true]>.icon{fill:var(--green);fill-opacity:.2}
.empty-state{text-align:center;padding:60px 15px 70px;color:var(--muted)}.empty-state>.icon{width:26px;height:26px;margin-bottom:8px;opacity:.6}.empty-state h3{font-size:14px;font-weight:500;color:var(--ink);margin:0 0 7px}.empty-state p{font-size:12px;margin:0}#load-error{font-size:11px;color:var(--muted);padding-top:16px}#retry-sites{font-size:11px;color:var(--green);padding-left:8px}
.footer{border-top:1px solid var(--line);padding:23px 0 28px;display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:10px;color:var(--muted)}.footer-meta,.footer-tools{display:flex;align-items:center;gap:22px}.footer-date{font-size:10px;opacity:.8}.footer-date time:last-child{font-family:ui-monospace,monospace}.credits{position:relative}.credits summary{cursor:pointer;list-style:none}.credits summary::-webkit-details-marker{display:none}.credits>div{position:absolute;bottom:30px;right:0;width:220px;border:1px solid var(--line);border-radius:7px;background:var(--surface);padding:13px 16px;box-shadow:0 5px 22px #00000018;z-index:25}.credits a{display:block;line-height:2.3}.credits a:hover{color:var(--green)}.motion-button{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--muted);padding:4px 0}.motion-dot{width:4px;height:4px;background:var(--green);border:1px solid var(--green);border-radius:50%}.motion-button[aria-pressed=false] .motion-dot{background:none}
@keyframes poke{0%,100%{transform:translateY(0)}30%{transform:translateY(-4px)}65%{transform:translateY(1px)}}
@media(min-width:851px){.companion{width:160px;right:14px}.companion-stage{width:160px;height:194px}.companion-speech{font-size:10px;padding:10px 12px}.companion-tools>span{font-size:8px}.companion-tools button{width:27px;height:27px}.companion-launcher{width:48px;height:48px}.companion[data-open=false]{width:48px}}
@media(max-width:700px){.shell{width:calc(100% - 44px)}.topbar{height:80px}.page{padding-top:40px;padding-bottom:65px}.directory-intro h1{font-size:26px}.site-grid{column-gap:24px}.filters{gap:24px}.footer-date{display:none}.site-card>a{gap:2px 11px;grid-template-columns:35px minmax(0,1fr);padding-right:30px}.site-icon{width:35px;height:35px}.site-card h3{font-size:13px}.site-card p{font-size:10px}}
@media(max-width:520px){.shell{width:calc(100% - 40px)}.topbar{height:76px}.brand{font-size:18px}.brand-lemon{width:17px;height:17px}.identity{gap:10px}.miku-sticker{width:35px;height:35px}.header-tools{gap:8px}.directory-intro{margin-bottom:23px}.directory-intro h1{font-size:25px}.page-label{font-size:10px}.page{padding-top:35px;padding-bottom:54px}.search{height:54px;padding-left:14px;gap:10px}.search kbd{display:none}.search input{font-size:12px}.search-submit{padding-left:13px;padding-right:6px;font-size:11px;gap:5px}.search-submit>.icon{width:12px;height:12px}.filters{gap:0;justify-content:space-between;margin-top:24px}.filters button{font-size:11px;gap:5px;min-height:47px}.filters button>span{font-size:9px}.directory-section{margin-top:14px}.site-grid{grid-template-columns:minmax(0,1fr);column-gap:0}.site-card>a{min-height:91px;grid-template-columns:38px minmax(0,1fr);gap:2px 13px;padding:18px 36px 18px 0}.site-icon{width:38px;height:38px}.site-card h3{font-size:13px}.site-card p{font-size:11px}.favorite-button{top:27px}.footer{padding:19px 0 85px;gap:10px}.footer-tools{gap:16px}.footer-meta{gap:0}.empty-state{padding:48px 10px}.companion[data-open=false]{width:44px}.companion-launcher{width:44px;height:44px}}
@media(max-width:355px){.shell{width:calc(100% - 32px)}.brand-lemon{display:none}.identity{gap:8px}.header-tools{gap:4px}.filters button{font-size:10px;gap:3px}.filters button>span{padding:0 3px}.search-submit{padding-left:9px}.page-label{font-size:9px}.footer-tools{gap:11px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}html[data-motion=off]{scroll-behavior:auto}html[data-motion=off] *,html[data-motion=off] *::before,html[data-motion=off] *::after{animation:none!important;transition:none!important}
