:root{--bg:#f5f6f8;--surface:#ffffff;--surface-2:#f0f2f5;--border:#e1e4e8;--text:#1f2430;--text-muted:#6b7280;--accent:#2f6df6;--accent-weak:#e8f0ff;--radius:10px;--shadow:0 1px 3px rgba(16, 24, 40, 0.06),0 1px 2px rgba(16, 24, 40, 0.04);--mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Roboto,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code{font-family:var(--mono);background:var(--surface-2);padding:1px 5px;border-radius:4px;font-size:12px}.site-header{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;background:var(--surface);border-bottom:1px solid var(--border)}.brand h1{margin:0;font-size:20px;letter-spacing:-.01em}.tagline{margin:2px 0 0;color:var(--text-muted);font-size:12.5px}.topnav a{margin-left:16px;font-size:13px}.promo-banner{display:flex;align-items:center;justify-content:center;gap:9px;flex-wrap:wrap;text-align:center;margin-top:24px;padding:14px 24px;background:linear-gradient(90deg,#e8472f,#f0803c);color:#fff;font-size:14px}.promo-banner a{color:#fff;text-decoration:underline}.promo-banner a:hover{text-decoration:none}.promo-banner .promo-lead{font-size:15px}.promo-banner .promo-lead strong{font-size:16px}.promo-banner .promo-sep{opacity:.7}.site-footer{padding:18px 24px;color:var(--text-muted);font-size:12px;border-top:1px solid var(--border);background:var(--surface)}.site-footer p{margin:0}.layout{display:grid;grid-template-columns:340px 1fr;gap:20px;padding:20px 24px;align-items:start;max-width:1320px;margin:0 auto}.sidebar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;position:sticky;top:20px;max-height:calc(100vh - 40px);overflow-y:auto}.control{margin-bottom:18px}.control-label{display:block;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:7px}.muted{color:var(--text-muted);font-weight:400;text-transform:none;letter-spacing:0}.select,.text-input{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:13px;outline:0}.select:focus,.text-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}.select{cursor:pointer}.select:disabled{opacity:.5;cursor:not-allowed}.interp-row{display:flex;align-items:center;gap:8px;margin-top:8px}.interp-row .chk{display:flex;align-items:center;gap:5px;font-size:12.5px;color:var(--text);cursor:pointer;white-space:nowrap}.interp-row .chk input{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}.num-input{width:64px;padding:6px 8px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:13px;outline:0}.num-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}.num-input:disabled{opacity:.5;cursor:not-allowed}.num-range{font-size:11px}.hint{font-size:11.5px;margin:8px 0 0;line-height:1.5}.source-tabs{display:flex;gap:6px;flex-wrap:wrap}.tab{flex:1 1 auto;padding:7px 8px;border:1px solid var(--border);background:var(--surface);border-radius:8px;cursor:pointer;font-size:12.5px;color:var(--text-muted);transition:all .12s}.tab:hover{border-color:var(--accent)}.tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.seg button{padding:7px 14px;border:none;background:var(--surface);cursor:pointer;font-size:12.5px;color:var(--text-muted);border-right:1px solid var(--border)}.seg button:last-child{border-right:none}.seg button.active{background:var(--accent-weak);color:var(--accent);font-weight:600}.btn{padding:7px 10px;border:1px solid var(--border);background:var(--surface);border-radius:8px;cursor:pointer;font-size:12.5px;color:var(--text);transition:all .12s}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn-highlight{flex:1;font-weight:700;color:#fff;background:linear-gradient(90deg,#2f6df6,#5b8def);border-color:#2f6df6;box-shadow:0 2px 6px rgba(47,109,246,.35)}.btn-highlight:hover{color:#fff;border-color:#1f54d6;background:linear-gradient(90deg,#1f54d6,#4a7de0);box-shadow:0 3px 10px rgba(47,109,246,.45)}.export-row{display:flex;gap:8px;margin-bottom:8px}.export-row .btn{flex:1}.scheme-list-wrap{margin-bottom:8px}.scheme-list{max-height:320px;overflow-y:auto;border:1px solid var(--border);border-radius:8px;padding:6px;background:var(--surface-2)}.scheme{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:6px;cursor:pointer;margin-bottom:3px}.scheme:hover{background:var(--surface)}.scheme.selected{background:var(--accent-weak);box-shadow:inset 0 0 0 1px var(--accent)}.scheme .swatch{width:54px;height:16px;border-radius:3px;flex:none;border:1px solid rgba(0,0,0,.08)}.scheme .sname{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scheme .stype{font-size:10.5px;color:var(--text-muted);margin-left:auto;flex:none}.pager{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:8px}.btn-page{width:30px;height:28px;border:1px solid var(--border);background:var(--surface);border-radius:7px;cursor:pointer;font-size:15px;color:var(--text)}.btn-page:disabled{opacity:.4;cursor:not-allowed}.preview{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.preview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.preview-head h2{margin:0;font-size:22px;letter-spacing:-.01em}#palette-meta{margin:4px 0 0;font-size:12.5px}.preview-block{margin-top:20px}.block-label{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}.map-preview{border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#fbfcfd;padding:10px}.map-preview svg{width:100%;height:auto;display:block}.map-preview svg path{stroke:#fff;stroke-width:.3}.demo{margin:0;border:1px solid var(--border);border-radius:10px;padding:16px;background:var(--surface-2)}.demo .gradient{height:26px;border-radius:6px;border:1px solid rgba(0,0,0,.06)}.demo .bars{display:flex;gap:6px;margin-top:14px;align-items:flex-end;height:130px}.demo .bar{flex:1;border-radius:4px 4px 0 0;min-width:0}.demo .swatches{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.demo .chip{width:40px;height:40px;border-radius:8px;border:1px solid rgba(0,0,0,.08);display:flex;align-items:end;justify-content:center;padding-bottom:3px;font-size:9.5px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}.color-values-head{display:flex;justify-content:space-between;align-items:baseline;margin:8px 0}.color-values{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.color-row{display:flex;align-items:center;gap:10px;padding:6px 8px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.color-row .dot{width:22px;height:22px;border-radius:5px;flex:none;border:1px solid rgba(0,0,0,.08)}.color-row .val{font-family:var(--mono);font-size:12px;cursor:pointer}.score-icons{display:flex;gap:6px}.score{width:26px;height:26px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;background:#cbd2dc}.score.ok{background:#2fae66}.score.maybe{background:#e8a33d}.score.bad{background:#e0584f}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:#1f2430;color:#fff;padding:10px 18px;border-radius:8px;font-size:13px;opacity:0;pointer-events:none;transition:all .2s;z-index:50}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}@media (max-width:860px){.layout{grid-template-columns:1fr}.sidebar{position:static;max-height:none}}