:root{--ink:#14002e;--paper:#fff8ff;--pink:#ff2fd1;--cyan:#00f0ff;--lime:#c8ff00;--yellow:#ffe600;--purple:#7a1fff;--border:3px solid var(--ink);--shadow:5px 5px 0 var(--ink)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{color:var(--ink);background-color:#1b0033;background-image:radial-gradient(circle at 18% 8%,#ff2fd161,#0000 42%),radial-gradient(circle at 84% 2%,#00f0ff4d,#0000 40%),linear-gradient(165deg,#1b0033 0%,#3d0a70 48%,#12002b 100%);background-attachment:fixed;margin:0;font-family:Trebuchet MS,Microsoft YaHei,PingFang SC,sans-serif}button{font:inherit}.y2k{min-height:100vh;position:relative;overflow-x:hidden}.y2k__stars{z-index:0;pointer-events:none;opacity:.55;background-image:radial-gradient(2px 2px at 24px 38px,#fff,#0000),radial-gradient(1px 1px at 120px 90px,#00f0ff,#0000),radial-gradient(2px 2px at 190px 160px,#ff2fd1,#0000),radial-gradient(1px 1px at 70px 210px,#ffe600,#0000),radial-gradient(1.5px 1.5px at 260px 60px,#fff,#0000);background-size:300px 300px;animation:4s steps(2,end) infinite twinkle;position:fixed;inset:0}@keyframes twinkle{0%,to{opacity:.55}50%{opacity:.2}}.topbar{z-index:2;border-bottom:var(--border);background:linear-gradient(90deg, var(--pink), var(--purple), var(--cyan));position:relative}.marquee{padding:8px 0;overflow:hidden}.marquee__track{color:#fff;letter-spacing:.08em;width:max-content;text-shadow:1px 1px 0 var(--ink), -1px -1px 0 var(--ink);gap:60px;font-weight:700;animation:26s linear infinite marquee;display:flex}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.shell{z-index:1;width:min(1240px,100% - 32px);margin:0 auto;padding:30px 0 20px;position:relative}.hero{text-align:center;padding:18px 12px 30px}.hero__badge{border:var(--border);background:var(--lime);box-shadow:var(--shadow);letter-spacing:.18em;margin-bottom:14px;padding:5px 16px;font-size:12px;font-weight:800;animation:1.6s steps(2,end) infinite badgeBlink;display:inline-block}@keyframes badgeBlink{0%,to{background:var(--lime)}50%{background:var(--yellow)}}.hero__title{letter-spacing:.04em;color:#fff;-webkit-text-stroke:3px var(--ink);text-shadow:5px 5px 0 var(--pink), 10px 10px 0 var(--cyan), 15px 15px 0 #00000059;margin:0;font-size:clamp(40px,8vw,92px);font-weight:900;line-height:1;position:relative}.hero__sub{color:#f4e9ff;letter-spacing:.05em;text-shadow:1px 1px #0009;max-width:640px;margin:26px auto 0;font-size:15px}.hero__stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;max-width:760px;margin:28px auto 0;display:grid}.stat{border:var(--border);background:var(--paper);box-shadow:var(--shadow);padding:10px 8px}.stat b{color:var(--purple);font-size:26px;line-height:1.1;display:block}.stat span{color:#5b4a72;font-size:12px;font-weight:700}.tabs{flex-wrap:wrap;justify-content:center;gap:14px;margin:26px 0 18px;display:flex}.tab{border:var(--border);box-shadow:var(--shadow);cursor:pointer;color:var(--ink);background:#d9c9ee;align-items:center;gap:10px;padding:12px 26px;font-size:16px;font-weight:800;transition:transform .1s,background .1s;display:inline-flex;transform:translateY(0)}.tab span{border:2px solid var(--ink);background:#fff;min-width:28px;padding:1px 7px;font-size:12px;display:inline-block}.tab:hover{background:#eadff7}.tab.is-active{background:linear-gradient(180deg, var(--yellow), var(--lime));box-shadow:2px 2px 0 var(--ink);transform:translate(3px,3px)}.controls{border:var(--border);box-shadow:var(--shadow);background:#fff8fff0;margin-bottom:18px;padding:16px}.search{border:var(--border);background:#fff;align-items:center;gap:10px;padding:8px 12px;display:flex;box-shadow:inset 2px 2px #14002e1f}.search input{min-width:0;color:var(--ink);background:0 0;border:0;outline:none;flex:1;font-size:15px}.search__clear{border:2px solid var(--ink);background:var(--pink);color:#fff;cursor:pointer;width:24px;height:24px;font-weight:900;line-height:1}.chips{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.chip{border:2px solid var(--ink);cursor:pointer;color:var(--ink);background:#f2e8ff;padding:5px 11px;font-size:12.5px;font-weight:700;transition:background .1s,transform .1s}.chip:hover{background:#fff;transform:translateY(-1px)}.chip.is-active{background:var(--cyan);box-shadow:2px 2px 0 var(--ink)}.tag-chip{border:2px solid var(--ink);color:var(--ink);background:#f2e8ff;padding:3px 8px;font-size:10.5px;font-weight:700}.tag-chip--plat{background:#e2f7ff}.source{border:var(--border);box-shadow:var(--shadow);word-break:break-all;margin-bottom:18px;padding:10px 14px;font-size:13px;font-weight:700}.source--live{background:#cfc}.source--snapshot{background:#ffe9a8}.grid{grid-template-columns:repeat(auto-fill,minmax(236px,1fr));gap:16px;display:grid}.grid--cfw{grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}.y2k-card{border:var(--border);background:var(--paper);box-shadow:var(--shadow);transition:transform .12s,box-shadow .12s}.tool-card{color:var(--ink);flex-direction:column;gap:6px;min-height:168px;padding:14px;text-decoration:none;display:flex}.tool-card:hover{box-shadow:8px 8px 0 var(--pink), 4px 4px 0 var(--ink);transform:translate(-3px,-3px)}.tool-card__top{justify-content:space-between;align-items:center;gap:8px;display:flex}.tool-card__icon{filter:drop-shadow(2px 2px #14002e40);font-size:26px;line-height:1}.tool-card__tag{border:2px solid var(--ink);background:var(--yellow);letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;font-size:10.5px;font-weight:800}.tool-card__name{margin:4px 0 0;font-size:16px;font-weight:900;line-height:1.25}.tool-card__desc{color:#5b4a72;flex:1;margin:0;font-size:12.5px;line-height:1.55}.tool-card__go{border:2px solid var(--ink);background:var(--cyan);letter-spacing:.08em;box-shadow:2px 2px 0 var(--ink);align-self:flex-start;margin-top:6px;padding:4px 10px;font-size:11px;font-weight:900}.cfw-card{flex-direction:column;gap:8px;padding:14px;display:flex}.cfw-card:hover{box-shadow:8px 8px 0 var(--cyan), 4px 4px 0 var(--ink);transform:translate(-3px,-3px)}.cfw-card__top{justify-content:space-between;align-items:center;gap:8px;display:flex}.cfw-card__stars{border:2px solid var(--ink);background:var(--yellow);padding:2px 8px;font-size:11px;font-weight:900}.cfw-card__cat{color:var(--purple);text-transform:uppercase;letter-spacing:.06em;font-size:10.5px;font-weight:800}.cfw-card__name{margin:0;font-size:17px;font-weight:900;line-height:1.25}.cfw-card__summary{color:#4b3b60;margin:0;font-size:12.5px;line-height:1.55}.cfw-card__line{color:#3d2f52;margin:0;font-size:11.5px;line-height:1.5}.cfw-card__line b{border:2px solid var(--ink);background:var(--lime);margin-right:6px;padding:0 5px;font-size:10px;display:inline-block}.cfw-card__line--muted{color:#7a6a8f}.cfw-card__line--muted b{background:#ffb3c7}.cfw-card__tags{flex-wrap:wrap;gap:5px;margin-top:2px;display:flex}.cfw-card__foot{border-top:2px dashed #14002e40;justify-content:space-between;align-items:center;margin-top:auto;padding-top:8px;display:flex}.cfw-card__diff{color:#5b4a72;font-size:11px;font-weight:800}.cfw-card__go{border:2px solid var(--ink);background:var(--pink);color:#fff;letter-spacing:.08em;box-shadow:2px 2px 0 var(--ink);padding:4px 10px;font-size:11px;font-weight:900;text-decoration:none}.cfw-card__go:hover{background:var(--purple)}.empty{text-align:center;color:#f4e9ff;grid-column:1/-1;margin:30px 0;font-size:15px;font-weight:700}.result-count{text-align:center;color:#d9c9ee;letter-spacing:.08em;margin:20px 0 0;font-size:12px}.footer{z-index:1;border-top:var(--border);text-align:center;background:#14002eeb;margin-top:26px;padding:22px 16px;position:relative}.footer__links{flex-wrap:wrap;justify-content:center;gap:18px;display:flex}.footer__links a{color:var(--cyan);border-bottom:1px dotted var(--cyan);font-size:13px;font-weight:700;text-decoration:none}.footer__links a:hover{color:var(--yellow);border-color:var(--yellow)}.footer__copy{color:#a68cc9;letter-spacing:.06em;margin:14px 0 0;font-size:11.5px}@media (width<=720px){body{background-attachment:scroll}.shell{width:calc(100% - 24px);padding-top:20px}.marquee__track{gap:40px;font-size:12px}.hero{padding:10px 4px 22px}.hero__badge{letter-spacing:.12em;padding:4px 12px;font-size:10px}.hero__title{letter-spacing:.02em;-webkit-text-stroke-width:2px;text-shadow:2px 2px 0 var(--pink), 4px 4px 0 var(--cyan);overflow-wrap:break-word;font-size:clamp(32px,10vw,52px)}.hero__sub{margin-top:18px;padding:0 6px;font-size:13px}.hero__stats{gap:10px;margin-top:20px}.stat{padding:8px 6px}.stat b{font-size:22px}.stat span{font-size:11px}.tabs{gap:10px;margin:20px 0 14px}.controls{padding:12px}.search{padding:7px 10px}.search input{font-size:16px}.chips{-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;padding-bottom:2px;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{flex:none}.source{padding:8px 10px;font-size:11.5px}.grid,.grid--cfw{gap:12px}.tool-card{min-height:auto;padding:12px}.cfw-card{padding:12px}.cfw-card__name{overflow-wrap:anywhere;font-size:15.5px}.cfw-card__summary{font-size:12px}.cfw-card__line{font-size:11px}.tag-chip{padding:2px 6px;font-size:10px}.footer{padding:18px 12px calc(18px + env(safe-area-inset-bottom))}.footer__links{gap:12px}}@media (width<=420px){.shell{width:calc(100% - 20px)}.grid,.grid--cfw{grid-template-columns:1fr}.tabs{grid-template-columns:1fr 1fr;display:grid}.tab{justify-content:center;gap:6px;padding:10px 8px;font-size:13px}.tab span{min-width:24px;padding:1px 5px;font-size:11px}}@media (hover:none){.tool-card:hover,.cfw-card:hover{box-shadow:var(--shadow);transform:none}.tool-card:active,.cfw-card:active{box-shadow:2px 2px 0 var(--ink);transform:translate(2px,2px)}.chip:hover{transform:none}}@keyframes vt-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-6px)}}@keyframes vt-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}::view-transition-old(.switch-tab){animation:.15s ease-out both vt-out}::view-transition-old(.filter){animation:.15s ease-out both vt-out}::view-transition-new(.switch-tab){animation:.2s ease-out both vt-in}::view-transition-new(.filter){animation:.2s ease-out both vt-in}@media (prefers-reduced-motion:reduce){.marquee__track,.y2k__stars,.hero__badge{animation:none}::view-transition-old(*){animation:none!important}::view-transition-new(*){animation:none!important}}
