*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:#0e1117;color:#e2e8f0;font-family:JetBrains Mono,monospace;min-height:100vh;overflow-x:hidden}.app{min-height:100vh;display:flex;flex-direction:column;position:relative;max-width:1100px;margin:0 auto;padding:0 24px 48px}.noise{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");background-size:200px 200px}.header{position:relative;z-index:1;display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:48px 0 32px;border-bottom:1px solid #1e2530}.header-eyebrow{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:400;letter-spacing:.25em;color:#3b82f6;margin-bottom:8px}.header-title{font-family:Barlow Condensed,sans-serif;font-size:clamp(32px,6vw,58px);font-weight:800;line-height:1;letter-spacing:-.01em;color:#f1f5f9;text-transform:uppercase}.header-title-accent{color:#3b82f6}.header-updated{font-family:JetBrains Mono,monospace;font-size:10px;color:#475569;letter-spacing:.15em;margin-top:10px}.refresh-btn{flex-shrink:0;display:flex;align-items:center;gap:8px;padding:10px 20px;background:transparent;border:1px solid #2d3748;border-radius:4px;color:#94a3b8;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:500;letter-spacing:.15em;cursor:pointer;transition:all .2s ease;white-space:nowrap}.refresh-btn:hover:not(:disabled){border-color:#3b82f6;color:#3b82f6;background:#3b82f608}.refresh-btn:disabled{cursor:default;border-color:#3b82f660;color:#3b82f6}.refresh-icon{flex-shrink:0;transition:transform .3s ease}.refresh-icon.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.main{position:relative;z-index:1;flex:1;margin-top:8px}.error-banner{display:flex;align-items:center;gap:10px;margin:20px 0;padding:14px 18px;background:#7f1d1d22;border:1px solid #7f1d1d;border-radius:6px;color:#fca5a5;font-size:13px;letter-spacing:.04em}.table-header{display:grid;grid-template-columns:68px 220px 1fr 120px;gap:0 16px;padding:16px 20px 10px;border-bottom:1px solid #1e2530}.th{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:500;letter-spacing:.2em;color:#475569;text-transform:uppercase}.rows{display:flex;flex-direction:column}.row{display:grid;grid-template-columns:68px 220px 1fr 120px;gap:0 16px;align-items:center;padding:14px 20px;border-bottom:1px solid #131820;cursor:default;animation:rowIn .4s cubic-bezier(.16,1,.3,1) both;transition:background .15s ease}.row:hover{background:#3b82f608;border-bottom-color:#3b82f620}.row:hover .framework-name{color:#93c5fd}@keyframes rowIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.rank-col{display:flex;align-items:center;justify-content:flex-start}.rank-num{font-family:Barlow Condensed,sans-serif;font-size:36px;font-weight:700;line-height:1;color:#64748b;min-width:44px}.info-col{display:flex;flex-direction:column;gap:6px}.framework-name{font-family:Barlow Condensed,sans-serif;font-size:22px;font-weight:600;letter-spacing:.02em;color:#e2e8f0;line-height:1;text-transform:uppercase}.lang-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:3px;font-family:JetBrains Mono,monospace;font-size:10px;font-weight:500;letter-spacing:.06em;width:fit-content}.bar-col{display:flex;align-items:center;gap:12px}.bar-track{flex:1;height:5px;background:#1e2530;border-radius:3px;overflow:hidden}.bar-fill{height:100%;border-radius:3px;animation:barGrow .7s cubic-bezier(.16,1,.3,1) both;animation-delay:inherit;transform-origin:left}@keyframes barGrow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.bar-pct{font-family:JetBrains Mono,monospace;font-size:10px;color:#475569;min-width:40px;text-align:right}.stats-col{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.stars-count{display:flex;align-items:center;gap:5px;font-family:Barlow Condensed,sans-serif;font-size:24px;font-weight:700;color:#f1f5f9;letter-spacing:.02em;line-height:1}.star-icon{color:#fbbf24;flex-shrink:0;margin-top:-1px}.issues-count{display:flex;align-items:center;gap:4px;font-family:JetBrains Mono,monospace;font-size:10px;color:#475569;letter-spacing:.05em}.issue-icon{flex-shrink:0;color:#475569}.skeleton .skeleton-block{background:linear-gradient(90deg,#1a2030 25%,#222d3d,#1a2030 75%);background-size:200% 100%;border-radius:3px;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.footer{position:relative;z-index:1;display:flex;flex-direction:column;gap:28px;padding:28px 20px 0;border-top:1px solid #1e2530;font-family:JetBrains Mono,monospace}.footer-top{display:flex;align-items:center;gap:10px;font-size:10px;color:#334155;letter-spacing:.15em}.footer-dot{color:#1e2530}.footer-cta{display:flex;flex-direction:column;align-items:center;gap:6px;padding:28px 24px;border:1px solid #1e2530;border-radius:8px;background:#0a0d13;text-align:center}.footer-cta-text{font-family:Barlow Condensed,sans-serif;font-size:22px;font-weight:600;letter-spacing:.04em;color:#e2e8f0;text-transform:uppercase}.footer-cta-sub{font-size:11px;color:#475569;letter-spacing:.2em;text-transform:uppercase;margin-bottom:16px}.footer-links{display:flex;gap:16px}.footer-social-link{display:flex;align-items:center;gap:8px;padding:9px 18px;border:1px solid #2d3748;border-radius:4px;color:#94a3b8;font-size:12px;font-weight:500;letter-spacing:.08em;text-decoration:none;transition:all .2s ease}.footer-social-link:hover{border-color:#3b82f6;color:#3b82f6;background:#3b82f608}@media (max-width: 768px){.table-header,.row{grid-template-columns:52px 160px 1fr 90px;gap:0 12px;padding:12px}.rank-num{font-size:28px}.framework-name{font-size:18px}.stars-count{font-size:20px}.bar-pct,.th.bar-col{display:none}}@media (max-width: 560px){.app{padding:0 12px 40px}.table-header,.row{grid-template-columns:44px 1fr 80px}.th.info-col,.info-col{grid-column:2}.bar-col,.th.bar-col{display:none}}
