:root{--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-primary-muted:#dbeafe;--color-bg:#f8fafc;--color-surface:#fff;--color-border:#e2e8f0;--color-text:#0f172a;--color-text-secondary:#64748b;--color-danger:#dc2626;--color-success:#16a34a;--color-warning:#d97706;--font-family-sans:system-ui, "PingFang SC", "Segoe UI", "Microsoft YaHei", sans-serif;--font-size-display:30px;--font-size-title:22px;--font-size-body:15px;--font-size-caption:12px;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--radius-sm:6px;--radius-md:12px;--radius-lg:16px;--radius-full:9999px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:32px;--space-8:40px;--shadow-card:0 1px 3px #0f172a14;--shadow-modal:0 8px 24px #0f172a1f;--header-height:56px;--content-max:720px;--page-pad-x:24px}*{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font-family-sans);font-size:var(--font-size-body);color:var(--color-text);background:var(--color-bg);margin:0}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.page{background:var(--color-bg);flex-direction:column;min-height:100vh;display:flex}.header{height:var(--header-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:0 var(--page-pad-x);z-index:20;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.logo{font-weight:var(--font-weight-semibold);color:var(--color-text);text-decoration:none}.main{padding:32px var(--page-pad-x) 48px;flex:1}.hero{max-width:var(--content-max);text-align:center;margin:48px auto 0}.hero h1{font-size:var(--font-size-display);font-weight:var(--font-weight-semibold);margin:0 0 8px}.hero p{color:var(--color-text-secondary);margin:0 0 24px}.search{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);height:48px;box-shadow:var(--shadow-card);text-align:left;align-items:center;gap:10px;padding:0 16px;display:flex}.search:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-muted)}.search input{font:inherit;color:var(--color-text);background:0 0;border:0;outline:0;flex:1}.search input:disabled{opacity:.6}.btn{border-radius:var(--radius-sm);height:36px;font:inherit;cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 14px;display:inline-flex}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover)}.btn-ghost{border-color:var(--color-border);color:var(--color-text);background:0 0}.btn-text{color:var(--color-text-secondary);background:0 0;border:0}.btn-block{width:100%;height:40px}.btn:disabled{opacity:.5;cursor:not-allowed}.auth-bar{align-items:center;gap:8px;display:flex}.avatar{border-radius:var(--radius-full);background:var(--color-primary);color:#fff;place-items:center;width:32px;height:32px;font-size:12px;font-weight:600;text-decoration:none;display:grid}.caption{font-size:var(--font-size-caption);color:var(--color-text-secondary)}.recs{max-width:var(--content-max);text-align:left;margin:16px auto 0}.recs-head{justify-content:space-between;margin-bottom:8px;display:flex}.rec{border-radius:var(--radius-md);background:var(--color-surface);border:1px solid var(--color-border);cursor:pointer;text-align:left;width:100%;font:inherit;color:inherit;align-items:center;gap:12px;margin-bottom:8px;padding:12px 14px;display:flex}.rec.hl{background:var(--color-primary-muted);box-shadow:inset 3px 0 0 var(--color-primary);border-color:#0000}.rec .ico,.ico{background:var(--color-primary-muted);width:40px;height:40px;color:var(--color-primary);border-radius:10px;flex-shrink:0;place-items:center;font-weight:600;display:grid}.rec .meta{flex:1;min-width:0}.rec .name{font-weight:500}.rec .desc{font-size:var(--font-size-caption);color:var(--color-text-secondary);margin-top:2px}.rec .why{font-size:var(--font-size-caption);color:var(--color-primary);margin-top:2px}.rec .score{color:var(--color-text-secondary)}.empty{max-width:var(--content-max);text-align:center;color:var(--color-text-secondary);margin:40px auto}.empty.compact{margin:16px 0}.empty-box{border:2px dashed var(--color-border);border-radius:var(--radius-lg);opacity:.5;place-items:center;width:120px;height:120px;margin:0 auto 16px;font-size:28px;display:grid}.errbar{max-width:var(--content-max);border-radius:var(--radius-sm);color:var(--color-danger);background:#fef2f2;margin:0 0 12px;padding:10px 14px;font-size:14px}.hot{max-width:var(--content-max);text-align:left;margin:28px auto 0}.hot h2,.section-caption{color:var(--color-text-secondary);margin:0 0 12px;font-size:14px;font-weight:500}.grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;display:grid}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:center;box-shadow:var(--shadow-card);cursor:pointer;font:inherit;color:inherit;padding:16px}.card .ico{border-radius:12px;width:48px;height:48px;margin:0 auto 8px}.list{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.row{border-bottom:1px solid var(--color-border);align-items:center;gap:12px;min-height:64px;padding:0 8px 0 0;display:flex}.row:last-child{border-bottom:0}.row-main{font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:12px;padding:12px 16px;display:flex}.star{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:0;padding:8px;font-size:18px}.star.on{color:#f59e0b}.tool-header{align-items:center;gap:12px;width:100%;display:flex}.tool-header .title{flex:1;font-weight:600}.tool-body{margin:16px var(--page-pad-x) 24px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);min-height:360px;box-shadow:var(--shadow-card);padding:24px}.skel{background:#e2e8f0;border-radius:4px;height:12px;margin-bottom:12px;animation:1.2s ease-in-out infinite pulse}.skel.w60{width:60%}.skel.w80{width:80%}.skel.w40{width:40%}@keyframes pulse{0%,to{opacity:.55}50%{opacity:1}}.panel-err{text-align:center;color:var(--color-text-secondary);padding:64px 16px}.panel-err .ico{color:var(--color-danger);margin-bottom:12px;font-size:40px}.err-title{color:var(--color-text);margin-bottom:8px;font-weight:500}.auth-main{flex:1;justify-content:center;align-items:center;padding:24px;display:flex}.auth-card{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:360px;box-shadow:var(--shadow-modal);border:1px solid var(--color-border);padding:24px}.auth-card h1{margin:0 0 8px;font-size:18px}.auth-card .sub{color:var(--color-text-secondary);margin:0 0 16px;font-size:14px}.field{text-align:left;margin-bottom:12px;display:block}.field>span{margin-bottom:6px;font-size:13px;font-weight:500;display:block}.field input,.text-input,.code-area,.paste-input,.search-input{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;height:40px;font:inherit;background:var(--color-surface);color:var(--color-text);padding:0 12px}.field input:focus,.text-input:focus,.code-area:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-muted);outline:none}.code-area,.paste-input{resize:vertical;height:auto;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px}.form-error{color:var(--color-danger);border-radius:var(--radius-sm);background:#fef2f2;margin-bottom:12px;padding:10px 12px;font-size:14px}.field-error{color:var(--color-danger);margin-top:6px;font-size:12px;display:block}.field.has-error input{border-color:var(--color-danger)}.form-foot{text-align:center;color:var(--color-text-secondary);margin:16px 0 0;font-size:14px}.form-foot.center,.center{text-align:center}.toast{color:#bbf7d0;box-shadow:var(--shadow-card);z-index:50;background:#052e16;border-radius:8px;padding:10px 16px;font-size:14px;position:fixed;top:72px;left:50%;transform:translate(-50%)}.modal-backdrop{z-index:40;background:#0f172a59;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:360px;box-shadow:var(--shadow-modal);text-align:center;padding:24px}.modal h3{margin:0 0 8px;font-size:18px}.modal p{color:var(--color-text-secondary);margin:0 0 20px;font-size:14px}.me-main{max-width:var(--content-max);width:100%;padding:32px var(--page-pad-x) 48px;margin:0 auto}.section-title{font-size:var(--font-size-title);margin:0 0 8px;font-weight:600}.tool-panel h2{font-size:var(--font-size-title);margin:0 0 4px}.tool-panel .muted{color:var(--color-text-secondary);margin:0 0 12px}.tool-panel .hint{color:var(--color-primary);font-size:13px}.tool-panel .field-label{margin:12px 0 6px;font-size:13px;font-weight:500;display:block}.tool-panel .btn-row{gap:8px;margin:12px 0;display:flex}.tool-panel .error{color:var(--color-danger)}.tool-panel .split{grid-template-columns:1fr 1fr;gap:16px;display:grid}.tool-panel .kv{padding:0;list-style:none}.tool-panel .kv li{margin:6px 0}.diff-view{color:#e2e8f0;border-radius:var(--radius-sm);background:#0f172a;max-height:360px;padding:12px;font-family:ui-monospace,monospace;font-size:12px;overflow:auto}.diff-add{color:#86efac}.diff-del{color:#fca5a5}.diff-same{color:#cbd5e1}@media (width<=720px){.tool-panel .split{grid-template-columns:1fr}}
