:root{--primary: #4f46e5;--primary-light: #6366f1;--primary-dark: #3730a3;--primary-bg: #eef2ff;--success: #10b981;--success-bg: #d1fae5;--warning: #f59e0b;--warning-bg: #fef3c7;--danger: #ef4444;--danger-bg: #fee2e2;--info: #3b82f6;--info-bg: #dbeafe;--text-primary: #111827;--text-secondary: #6b7280;--text-muted: #9ca3af;--border: #e5e7eb;--border-light: #f3f4f6;--surface: #ffffff;--bg: #f9fafb;--sidebar-w: 240px;--header-h: 64px;--radius: 10px;--radius-sm: 6px;--shadow: 0 1px 3px rgba(0,0,0,.04);--shadow-md: 0 2px 8px rgba(0,0,0,.06);--shadow-lg: 0 6px 16px rgba(0,0,0,.06);--transition: .15s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:14px}body{font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,sans-serif;background:var(--bg);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#9ca3af}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.card-body{padding:1.25rem}.badge{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .6rem;border-radius:99px;font-size:.72rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.badge-success{background:var(--success-bg);color:#065f46}.badge-warning{background:var(--warning-bg);color:#92400e}.badge-danger{background:var(--danger-bg);color:#991b1b}.badge-info{background:var(--info-bg);color:#1e40af}.badge-primary{background:var(--primary-bg);color:var(--primary-dark)}.badge-gray{background:var(--border-light);color:var(--text-secondary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.5rem 1rem;border-radius:var(--radius-sm);font-size:.8125rem;font-weight:500;border:1px solid transparent;transition:background var(--transition),border-color var(--transition),color var(--transition);white-space:nowrap}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-outline{background:transparent;border-color:var(--border);color:var(--text-primary)}.btn-outline:hover{background:var(--bg)}.btn-ghost{background:transparent;border:none;color:var(--text-secondary);padding:.4rem .6rem}.btn-ghost:hover{background:var(--bg);color:var(--text-primary)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#dc2626}.btn-sm{padding:.3rem .75rem;font-size:.75rem}.btn-xs{padding:.2rem .5rem;font-size:.72rem}.input,.select{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.8125rem;background:var(--surface);color:var(--text-primary);outline:none;transition:border-color var(--transition),box-shadow var(--transition)}.input:focus,.select:focus{border-color:var(--primary-light);box-shadow:0 0 0 3px #6366f11f}.form-group{display:flex;flex-direction:column;gap:.3rem}.form-label{font-size:.8rem;font-weight:500;color:var(--text-secondary)}.progress-wrap{background:var(--border);border-radius:99px;height:6px;overflow:hidden}.progress-bar{height:100%;border-radius:99px;transition:width .4s ease}.progress-success{background:var(--success)}.progress-warning{background:var(--warning)}.progress-danger{background:var(--danger)}.progress-primary{background:var(--primary)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.8125rem}thead th{padding:.6rem 1rem;text-align:left;font-size:.72rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);white-space:nowrap;background:var(--bg)}tbody tr{border-bottom:1px solid var(--border-light)}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:var(--bg)}tbody td{padding:.75rem 1rem;vertical-align:middle}.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-weight:700;font-size:.8rem;color:#fff;flex-shrink:0}.avatar-sm{width:28px;height:28px;font-size:.72rem}.avatar-md{width:36px;height:36px}.avatar-lg{width:48px;height:48px;font-size:1rem}.avatar-xl{width:64px;height:64px;font-size:1.25rem}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem 1.25rem;box-shadow:var(--shadow)}.stat-value{font-size:1.6rem;font-weight:700;line-height:1;color:var(--text-primary)}.stat-label{font-size:.78rem;color:var(--text-secondary);font-weight:500;margin-top:.25rem}.alert-item{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem 1rem;border-radius:var(--radius-sm);border:1px solid}.alert-item.danger{background:var(--danger-bg);border-color:#fca5a5}.alert-item.warning{background:var(--warning-bg);border-color:#fcd34d}.alert-item.info{background:var(--info-bg);border-color:#93c5fd}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:3rem 1rem;color:var(--text-muted);text-align:center}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;max-width:540px;max-height:90vh;overflow-y:auto}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem;border-bottom:1px solid var(--border)}.modal-body{padding:1.25rem}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.25rem;border-top:1px solid var(--border)}.tabs{display:flex;border-bottom:2px solid var(--border)}.tab-btn{padding:.65rem 1.1rem;font-size:.8125rem;font-weight:500;color:var(--text-secondary);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color var(--transition),border-color var(--transition);white-space:nowrap}.tab-btn:hover{color:var(--text-primary)}.tab-btn.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.toast{position:fixed;bottom:1.5rem;right:1.5rem;background:#1f2937;color:#fff;padding:.75rem 1.1rem;border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);font-size:.8125rem;z-index:9999;animation:slideUp .25s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page{padding:1.5rem 1.75rem}.page-header{margin-bottom:1.5rem}.page-title{font-size:1.25rem;font-weight:700;color:var(--text-primary)}.page-subtitle{font-size:.8125rem;color:var(--text-secondary);margin-top:.2rem}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.grid-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:1rem}@media(max-width:1024px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}.page{padding:1rem}}.counter{font-size:16px;padding:5px 10px;border-radius:5px;color:var(--accent);background:var(--accent-bg);border:2px solid transparent;transition:border-color .3s;margin-bottom:24px}.counter:hover{border-color:var(--accent-border)}.counter:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.hero{position:relative}.hero .base,.hero .framework,.hero .vite{inset-inline:0;margin:0 auto}.hero .base{width:170px;position:relative;z-index:0}.hero .framework,.hero .vite{position:absolute}.hero .framework{z-index:1;top:34px;height:28px;transform:perspective(2000px) rotate(300deg) rotateX(44deg) rotateY(39deg) scale(1.4)}.hero .vite{z-index:0;top:107px;height:26px;width:auto;transform:perspective(2000px) rotate(300deg) rotateX(40deg) rotateY(39deg) scale(.8)}#center{display:flex;flex-direction:column;gap:25px;place-content:center;place-items:center;flex-grow:1}@media(max-width:1024px){#center{padding:32px 20px 24px;gap:18px}}#next-steps{display:flex;border-top:1px solid var(--border);text-align:left}#next-steps>div{flex:1 1 0;padding:32px}@media(max-width:1024px){#next-steps>div{padding:24px 20px}}#next-steps .icon{margin-bottom:16px;width:22px;height:22px}@media(max-width:1024px){#next-steps{flex-direction:column;text-align:center}}#docs{border-right:1px solid var(--border)}@media(max-width:1024px){#docs{border-right:none;border-bottom:1px solid var(--border)}}#next-steps ul{list-style:none;padding:0;display:flex;gap:8px;margin:32px 0 0}#next-steps ul .logo{height:18px}#next-steps ul a{color:var(--text-h);font-size:16px;border-radius:6px;background:var(--social-bg);display:flex;padding:6px 12px;align-items:center;gap:8px;text-decoration:none;transition:box-shadow .3s}#next-steps ul a:hover{box-shadow:var(--shadow)}#next-steps ul a .button-icon{height:18px;width:18px}@media(max-width:1024px){#next-steps ul{margin-top:20px;flex-wrap:wrap;justify-content:center}#next-steps ul li{flex:1 1 calc(50% - 8px)}#next-steps ul a{width:100%;justify-content:center;box-sizing:border-box}}#spacer{height:88px;border-top:1px solid var(--border)}@media(max-width:1024px){#spacer{height:48px}}.ticks{position:relative;width:100%}.ticks:before,.ticks:after{content:"";position:absolute;top:-4.5px;border:5px solid transparent}.ticks:before{left:0;border-left-color:var(--border)}.ticks:after{right:0;border-right-color:var(--border)}.modern{--m-grad: linear-gradient(135deg, #6366f1 0%, #8b5cf6 50%, #d946ef 100%);--m-card: rgba(255, 255, 255, .7);background:radial-gradient(1200px 600px at 100% -10%,#eef2ff 0%,transparent 60%),radial-gradient(900px 500px at -10% 110%,#fdf2ff 0%,transparent 55%),var(--bg);min-height:100%}.modern-hero{border-radius:18px;padding:1.5rem 1.75rem;color:#fff;background:var(--m-grad);box-shadow:0 14px 40px -12px #6366f18c;position:relative;overflow:hidden}.modern-hero h1{font-size:1.4rem;font-weight:800;letter-spacing:-.02em}.modern-hero p{opacity:.85;font-size:.85rem}.glass-card{background:var(--m-card);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.6);border-radius:16px;box-shadow:0 8px 30px -16px #11182740;transition:transform .2s ease,box-shadow .2s ease}.glass-card:hover{transform:translateY(-3px);box-shadow:0 18px 44px -18px #1118274d}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.9rem}.stat-card{padding:1.1rem 1.2rem;border-radius:16px;background:var(--surface);border:1px solid var(--border);position:relative;overflow:hidden}.stat-card .stat-icon{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;color:#fff;margin-bottom:.7rem}.stat-card .stat-value{font-size:1.9rem;font-weight:800;line-height:1;letter-spacing:-.02em}.stat-card .stat-label{font-size:.74rem;color:var(--text-secondary);margin-top:.35rem}.mode-switch{display:inline-flex;background:var(--border-light);border-radius:99px;padding:3px;gap:2px}.mode-switch button{border:none;background:transparent;padding:.35rem .85rem;border-radius:99px;font-size:.78rem;font-weight:600;color:var(--text-secondary);transition:all .18s ease}.mode-switch button.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow)}.rank-row{display:flex;align-items:center;gap:1rem;padding:.8rem 1rem;border-radius:14px;background:var(--surface);border:1px solid var(--border)}.field-label{display:block;font-size:.72rem;font-weight:600;color:var(--text-secondary);margin-bottom:.3rem}@keyframes fxRise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes fxFade{0%{opacity:0}to{opacity:1}}@keyframes fxSlideIn{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:none}}.fx-rise{animation:fxRise .45s ease both}.fx-fade{animation:fxFade .5s ease both}.fx-slide{animation:fxSlideIn .4s ease both}.bar-fill{height:100%;border-radius:99px;animation:barGrow .6s ease both}@keyframes barGrow{0%{width:0!important}}@media(prefers-reduced-motion:reduce){.fx-rise,.fx-fade,.fx-slide,.bar-fill{animation:none}}
