:root{--ac-sky: #bfe3f2;--ac-sky-deep: #8fc9e0;--ac-grass: #8cc96b;--ac-grass-deep: #63a94a;--ac-sand: #f3e3c3;--ac-paper: #fffdf6;--ac-card: #fff9ec;--ac-card-alt: #fff4de;--ac-wood: #c89b6a;--ac-wood-deep: #a87b4f;--ac-ink: #4a4034;--ac-ink-soft: #6e6257;--ac-ink-faint: #948a7e;--ac-accent: #e8a33d;--ac-leaf: #4c9a5b;--ac-info: #3f7fc1;--ac-warn: #c9762b;--ac-danger: #c4472f;--ac-radius-sm: 10px;--ac-radius: 16px;--ac-radius-lg: 24px;--ac-border: 2px solid rgba(74, 64, 52, .16);--ac-shadow-sticker: 0 4px 0 rgba(74, 64, 52, .14);--ac-shadow-lift: 0 4px 0 rgba(74, 64, 52, .14), 0 12px 28px rgba(74, 64, 52, .1);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--sp-8: 64px;--fs-xs: .75rem;--fs-sm: .875rem;--fs-md: 1rem;--fs-lg: 1.25rem;--fs-xl: 1.75rem;--lh-sm: 1.6;--lh-md: 1.75;--ease-island: cubic-bezier(.2, .8, .2, 1);--dur-fast: .12s;--dur: .16s;--font-display: "Resource Han Rounded CN", "LXGW WenKai", "PingFang SC", "Microsoft YaHei UI", system-ui, sans-serif;--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Consolas, monospace}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--ac-paper);color:var(--ac-ink);font-family:var(--font-body);font-size:var(--fs-md);line-height:var(--lh-md);-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display);line-height:1.3;margin:0;text-wrap:balance}a{color:inherit}img{max-width:100%;display:block}[hidden]{display:none!important}:focus-visible{outline:3px solid var(--ac-info);outline-offset:2px;border-radius:var(--ac-radius-sm)}.shell{width:min(1280px,100% - 32px);margin-inline:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.hero{position:relative;overflow:hidden;padding:var(--sp-7) 0 var(--sp-6);background:radial-gradient(1200px 340px at 50% -140px,#f0fafe 0%,var(--ac-sky) 52%,var(--ac-paper) 100%)}.hero:before,.hero:after{content:"";position:absolute;inset:0;pointer-events:none;background-repeat:no-repeat;opacity:.55}.hero:before{background-image:radial-gradient(closest-side,#fff 92%,transparent 100%),radial-gradient(closest-side,#fff 92%,transparent 100%);background-size:180px 56px,120px 40px;background-position:12% 22%,78% 14%}.hero:after{background-image:radial-gradient(closest-side,#fff 92%,transparent 100%),radial-gradient(closest-side,#fff 92%,transparent 100%);background-size:140px 44px,90px 30px;background-position:66% 62%,30% 74%;opacity:.35}.hero__inner{position:relative;z-index:1;text-align:center}.hero__badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;background:#fffdf6d9;border:2px solid rgba(74,64,52,.12);font-size:var(--fs-xs);color:var(--ac-ink-soft)}.hero h1{font-size:clamp(1.75rem,4vw,2.5rem);margin:var(--sp-3) 0 var(--sp-2)}.hero__sub{margin:0 auto var(--sp-5);max-width:46ch;color:var(--ac-ink-soft);font-size:var(--fs-sm)}.hero__tags{display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:center;margin-top:var(--sp-4)}.tagpill{display:inline-flex;align-items:center;gap:5px;font:500 var(--fs-xs) / 1.5 var(--font-body);padding:3px 10px;border-radius:999px;background:#fffdf6b3;border:1px solid rgba(74,64,52,.12);color:var(--ac-ink-soft);cursor:pointer;transition:background var(--dur-fast) var(--ease-island),color var(--dur-fast) var(--ease-island)}.tagpill:hover{background:#fff;color:var(--ac-ink)}.tagpill__count{font-family:var(--font-mono);font-size:10px;opacity:.6}.search{display:flex;align-items:center;gap:10px;width:min(720px,100%);margin-inline:auto;padding:12px 16px;background:var(--ac-paper);border:3px solid var(--ac-wood);border-radius:var(--ac-radius);box-shadow:inset 0 2px #ffffffe6,0 4px #a87b4f59;transition:border-color var(--dur) var(--ease-island),box-shadow var(--dur) var(--ease-island)}.search:focus-within{border-color:var(--ac-accent);box-shadow:inset 0 2px #ffffffe6,0 4px #e8a33d73,0 0 0 4px #e8a33d2e}.search__icon{flex:none;color:var(--ac-wood-deep);font-size:1.1rem}.search input{flex:1;min-width:0;border:0;outline:0;background:transparent;font:400 16px/1.5 var(--font-body);color:var(--ac-ink)}.search input::placeholder{color:var(--ac-ink-faint)}.kbd{flex:none;font:500 11px/1 var(--font-mono);padding:3px 6px;border-radius:6px;background:#efe7d8;color:var(--ac-ink-soft);border:1px solid rgba(74,64,52,.14);box-shadow:0 1px #4a403424}.filters{position:sticky;top:0;z-index:20;padding:var(--sp-3) 0;background:#fffdf6eb;backdrop-filter:blur(6px);border-bottom:1px solid rgba(74,64,52,.1)}.filters__row{display:flex;gap:var(--sp-2);align-items:center;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.filters__row::-webkit-scrollbar{display:none}.filters__label{flex:none;font-size:var(--fs-xs);color:var(--ac-ink-faint);margin-right:var(--sp-1)}.chipbtn{flex:none;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid rgba(74,64,52,.16);background:#fff;color:var(--ac-ink-soft);font:500 var(--fs-xs) / 1.5 var(--font-body);cursor:pointer;transition:background var(--dur-fast) var(--ease-island),border-color var(--dur-fast) var(--ease-island),color var(--dur-fast) var(--ease-island)}.chipbtn:hover{background:var(--ac-card-alt);color:var(--ac-ink)}.chipbtn[aria-pressed=true]{background:var(--ac-accent);border-color:#cf8a24;color:#fff}.chipbtn__count{font:500 10px/1 var(--font-mono);opacity:.75}.chipbtn--sub{padding:4px 10px;font-weight:400;background:transparent}.chipbtn:disabled{opacity:.38;cursor:not-allowed;background:transparent}.filters__row--sub{margin-top:6px;padding-top:6px;border-top:1px dashed rgba(74,64,52,.12)}.filters__sep{flex:none;width:1px;height:16px;margin:0 var(--sp-1);background:#4a403429}.loadmore{display:flex;justify-content:center;padding:0 0 var(--sp-8)}.loadmore .btn{gap:10px}.resultbar{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-5) 0 var(--sp-3)}.resultbar__count{font-size:var(--fs-sm);color:var(--ac-ink-soft)}.resultbar__count strong{color:var(--ac-ink);font-family:var(--font-mono)}.resultbar__clear{background:none;border:0;padding:0;font:500 var(--fs-xs) / 1.5 var(--font-body);color:var(--ac-info);cursor:pointer;text-decoration:underline;text-underline-offset:3px}.grid{display:grid;gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(288px,1fr));padding:0 0 var(--sp-8);margin:0;list-style:none}.grid__item{display:flex;min-width:0}.grid__item>.card{flex:1}.card{position:relative;display:flex;flex-direction:column;gap:var(--sp-3);min-width:0;padding:18px 20px 16px;background:linear-gradient(180deg,var(--ac-card) 0%,#fff6e6 100%);border:var(--ac-border);border-radius:20px;box-shadow:var(--ac-shadow-sticker);transition:transform var(--dur) var(--ease-island),box-shadow var(--dur) var(--ease-island);content-visibility:auto;contain-intrinsic-size:180px}.card:hover,.card:focus-within{transform:translateY(-3px);box-shadow:var(--ac-shadow-lift)}.card__head{display:flex;align-items:center;gap:var(--sp-3);padding-right:24px}.card__logo,.card__badge{flex:none;width:40px;height:40px;border-radius:12px;border:2px solid rgba(74,64,52,.1);background:#fff}.card__logo{object-fit:contain}.card__badge{display:grid;place-items:center;font:700 18px/1 var(--font-display);color:#fff;background:hsl(var(--h) 42% 50%);text-shadow:0 1px 0 rgba(0,0,0,.18)}.card__name{flex:1;min-width:0;margin:0;font-size:var(--fs-md);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card__name a{text-decoration:none;color:var(--ac-ink)}.card__name a:after{content:"";position:absolute;inset:0;border-radius:20px}.card__out{position:absolute;top:10px;right:10px;z-index:2;width:28px;height:28px;display:grid;place-items:center;border-radius:8px;font-size:13px;text-decoration:none;color:var(--ac-ink-soft);background:#ffffffb3;border:1px solid rgba(74,64,52,.12);opacity:0;transform:translateY(-2px);transition:opacity var(--dur) var(--ease-island),transform var(--dur) var(--ease-island)}.card:hover .card__out,.card:focus-within .card__out{opacity:1;transform:none}.card__out:focus-visible{opacity:1}.card__desc{margin:0;font-size:var(--fs-sm);line-height:var(--lh-sm);color:var(--ac-ink-soft);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.card__desc mark{background:#ffe9a8;color:inherit;border-radius:3px;padding:0 2px}.card__meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}.chip{font-size:var(--fs-xs);line-height:1.4;padding:2px 9px;border-radius:999px;background:#f0f6ec;color:#3c6b48;border:1px solid rgba(60,107,72,.18)}.chip--category{background:#fbefd8;color:#8a5a1e;border-color:#8a5a1e2e;font-weight:600}.breadcrumb{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--ac-ink-faint)}.breadcrumb a{color:var(--ac-info);text-decoration:none}.breadcrumb a:hover{text-decoration:underline;text-underline-offset:3px}.pagehead{padding:var(--sp-5) 0 var(--sp-6)}.pagehead h1{font-size:clamp(1.5rem,3vw,2rem)}.pagehead__sub{margin:var(--sp-2) 0 0;color:var(--ac-ink-soft);font-size:var(--fs-sm)}.pagehead__meta{margin:var(--sp-2) 0 0;font:500 var(--fs-xs) / 1.5 var(--font-mono);color:var(--ac-ink-faint)}.pagefoot{padding:var(--sp-5) 0;border-top:1px solid rgba(74,64,52,.1)}.pagefoot__title{font-size:var(--fs-sm);color:var(--ac-ink-soft);margin-bottom:var(--sp-3)}.pagefoot__chips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.pagefoot__chips .chip{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;text-decoration:none;font-size:var(--fs-xs)}.pagefoot__chips .chip:hover{border-color:#3c6b4866}.empty{padding:var(--sp-8) var(--sp-4);text-align:center;border:2px dashed rgba(74,64,52,.2);border-radius:var(--ac-radius-lg);background:var(--ac-card);margin-bottom:var(--sp-8)}.empty__emoji{font-size:2rem;display:block;margin-bottom:var(--sp-2)}.empty p{color:var(--ac-ink-soft);margin:var(--sp-2) 0}.footer{border-top:1px solid rgba(74,64,52,.1);padding:var(--sp-5) 0 var(--sp-7);color:var(--ac-ink-faint);font-size:var(--fs-xs)}.footer__inner{display:flex;flex-wrap:wrap;gap:var(--sp-3);justify-content:space-between}.detail{padding:var(--sp-6) 0 var(--sp-8)}.detail__back{font-size:var(--fs-sm);color:var(--ac-info);text-decoration:none}.detail__head{display:flex;gap:var(--sp-4);align-items:center;margin:var(--sp-5) 0 var(--sp-4)}.detail__logo,.detail__badge{flex:none;width:64px;height:64px;border-radius:18px;border:2px solid rgba(74,64,52,.12);background:#fff}.detail__logo{object-fit:contain}.detail__badge{display:grid;place-items:center;font:700 28px/1 var(--font-display);color:#fff;background:hsl(var(--h) 42% 50%);text-shadow:0 1px 0 rgba(0,0,0,.18)}.detail h1{font-size:clamp(1.5rem,3vw,2rem)}.detail__desc{font-size:var(--fs-md);color:var(--ac-ink-soft);max-width:62ch}.detail__actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin:var(--sp-5) 0}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:12px;border:2px solid rgba(74,64,52,.16);background:#fff;color:var(--ac-ink);font:600 var(--fs-sm) / 1.4 var(--font-body);text-decoration:none;box-shadow:0 3px #4a403424;transition:transform var(--dur-fast) var(--ease-island),box-shadow var(--dur-fast) var(--ease-island)}.btn:hover{transform:translateY(-2px);box-shadow:0 5px #4a40341f}.btn--primary{background:var(--ac-accent);border-color:#cf8a24;color:#fff}.detail dl{display:grid;grid-template-columns:max-content 1fr;gap:var(--sp-2) var(--sp-4);margin:var(--sp-5) 0 0;padding:var(--sp-4);border-radius:var(--ac-radius);background:var(--ac-card);border:1px solid rgba(74,64,52,.1);font-size:var(--fs-sm)}.detail dt{color:var(--ac-ink-faint)}.detail dd{margin:0;min-width:0;overflow-wrap:anywhere}.detail code{font-family:var(--font-mono);font-size:.85em}@media (max-width: 640px){.hero{padding-top:var(--sp-6)}.grid{grid-template-columns:1fr}.filters__label{display:none}.detail dl{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}.card:hover,.card:focus-within,.btn:hover{transform:none}}
