:root,[data-theme=dark]{--rf-bg: #0e0f12;--rf-surface: #16181d;--rf-surface-2: #1c1f26;--rf-border: #262a33;--rf-border-strong: #343945;--rf-text: #e7e9ee;--rf-text-dim: #9aa1ad;--rf-text-muted: #666d7a;--rf-accent: #e8ff5a;--rf-accent-ink: #0e0f12;--rf-success: #4ade80;--rf-warn: #fbbf24;--rf-danger: #f87171;--rf-font-display: "Space Grotesk", sans-serif;--rf-font-body: "Plus Jakarta Sans", sans-serif;--rf-font-mono: "JetBrains Mono", monospace;--rf-sp-1: 4px;--rf-sp-2: 8px;--rf-sp-3: 12px;--rf-sp-4: 16px;--rf-sp-5: 20px;--rf-sp-6: 24px;--rf-sp-8: 32px;--rf-radius-sm: 4px;--rf-radius-md: 6px;--rf-radius-lg: 8px;--rf-shadow-float: 0 1px 0 rgba(255,255,255,.02), 0 8px 24px rgba(0,0,0,.25)}[data-theme=light]{--rf-bg: #f6f5f2;--rf-surface: #ffffff;--rf-surface-2: #faf9f6;--rf-border: #e5e2db;--rf-border-strong: #d4d0c6;--rf-text: #1a1a1a;--rf-text-dim: #5c5c5c;--rf-text-muted: #8a8a8a;--rf-accent: #1a1a1a;--rf-accent-ink: #f6f5f2;--rf-success: #16a34a;--rf-warn: #d97706;--rf-danger: #dc2626;--rf-shadow-float: 0 1px 2px rgba(0,0,0,.06), 0 8px 24px rgba(0,0,0,.08)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{background:var(--rf-bg);color:var(--rf-text);font-family:var(--rf-font-body);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{font-family:var(--rf-font-display);font-weight:600;letter-spacing:-.02em;margin:0}h1{font-size:28px;line-height:1.2}h2{font-size:20px;line-height:1.3}h3{font-size:16px;line-height:1.4}p{margin:0}a{color:var(--rf-text);text-decoration:none;border-bottom:1px solid var(--rf-border-strong);transition:border-color .12s ease}a:hover{border-color:var(--rf-accent)}button,input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}*{scrollbar-width:thin;scrollbar-color:var(--rf-border-strong) var(--rf-surface)}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:var(--rf-surface)}*::-webkit-scrollbar-thumb{background:var(--rf-border-strong);border-radius:0}*::-webkit-scrollbar-thumb:hover{background:var(--rf-text-muted)}:focus{outline:none}:focus-visible{outline:2px solid var(--rf-accent);outline-offset:2px}.label{font-family:var(--rf-font-display);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--rf-text-muted)}.save-pill{position:fixed;top:16px;right:16px;padding:4px 10px;font-family:var(--rf-font-mono);font-size:11px;background:var(--rf-surface);border:1px solid var(--rf-border);border-radius:var(--rf-radius-sm);color:var(--rf-success);opacity:0;transform:translateY(-6px);transition:opacity .16s ease,transform .16s ease;z-index:100;pointer-events:none}.save-pill.show{opacity:1;transform:translateY(0)}#app{display:grid;grid-template-columns:220px 1fr;height:100vh;overflow:hidden}.sidebar{background:var(--rf-surface);border-right:1px solid var(--rf-border);padding:var(--rf-sp-5) var(--rf-sp-3);display:flex;flex-direction:column;gap:var(--rf-sp-6);overflow-y:auto}.wordmark{font-family:var(--rf-font-display);font-weight:700;font-size:18px;letter-spacing:-.03em;padding:0 var(--rf-sp-2);color:var(--rf-text)}.wordmark span{color:var(--rf-accent)}.wordmark-sub{font-family:var(--rf-font-mono);font-size:10px;color:var(--rf-text-muted);padding:2px var(--rf-sp-2) 0;letter-spacing:.02em}.nav{display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;gap:var(--rf-sp-3);padding:var(--rf-sp-2) var(--rf-sp-2);border-left:2px solid transparent;background:transparent;border-top:none;border-right:none;border-bottom:none;color:var(--rf-text-dim);font-family:var(--rf-font-body);font-size:13px;font-weight:500;cursor:pointer;text-align:left;transition:color .12s ease,border-color .12s ease}.nav-item:hover{color:var(--rf-text)}.nav-item.active{color:var(--rf-accent);border-left-color:var(--rf-accent)}.nav-item .num{font-family:var(--rf-font-mono);font-size:10px;color:var(--rf-text-muted)}.nav-item.active .num{color:var(--rf-accent)}.main{display:grid;grid-template-columns:1fr 320px;overflow:hidden}.main-content{padding:var(--rf-sp-8) var(--rf-sp-6);overflow-y:auto}.rail{border-left:1px solid var(--rf-border);background:var(--rf-surface);padding:var(--rf-sp-6) var(--rf-sp-4);overflow-y:auto}@media (max-width: 1000px){.main{grid-template-columns:1fr}.rail{display:none}}@media (max-width: 700px){#app{grid-template-columns:1fr}.sidebar{position:fixed;bottom:0;left:0;right:0;top:auto;flex-direction:row;padding:var(--rf-sp-2);z-index:10;border-right:none;border-top:1px solid var(--rf-border)}.wordmark,.wordmark-sub{display:none}.nav{flex-direction:row;width:100%}.nav-item{flex:1;justify-content:center;border-left:none;border-bottom:2px solid transparent}.nav-item.active{border-bottom-color:var(--rf-accent)}.main-content{padding-bottom:80px}}.section-head{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:var(--rf-sp-3);border-bottom:1px solid var(--rf-border);margin-bottom:var(--rf-sp-5)}.section-head h1{font-size:24px}.section-head .hint{font-family:var(--rf-font-mono);font-size:11px;color:var(--rf-text-muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--rf-sp-2);height:32px;padding:0 var(--rf-sp-4);border-radius:var(--rf-radius-md);border:1px solid transparent;font-family:var(--rf-font-body);font-size:13px;font-weight:500;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease;white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--rf-accent);color:var(--rf-accent-ink);border-color:var(--rf-accent)}.btn-primary:hover:not(:disabled){filter:brightness(.95)}.btn-secondary{background:var(--rf-surface-2);color:var(--rf-text);border-color:var(--rf-border)}.btn-secondary:hover:not(:disabled){border-color:var(--rf-border-strong)}.btn-ghost{background:transparent;color:var(--rf-text-dim);border-color:transparent}.btn-ghost:hover:not(:disabled){color:var(--rf-text);background:var(--rf-surface-2)}.btn-danger{background:transparent;color:var(--rf-danger);border-color:var(--rf-border)}.btn-danger:hover:not(:disabled){border-color:var(--rf-danger)}.btn-sm{height:26px;padding:0 var(--rf-sp-3);font-size:12px}.btn-lg{height:40px;padding:0 var(--rf-sp-5);font-size:14px}.btn-block{width:100%}.btn.loading{position:relative;pointer-events:none}.btn.loading:after{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border:1px dashed var(--rf-accent);border-radius:inherit;animation:sweep 1.2s linear infinite}@keyframes sweep{to{transform:rotate(360deg)}}.field{display:flex;flex-direction:column;gap:var(--rf-sp-1);margin-bottom:var(--rf-sp-4)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--rf-sp-3)}.field label{font-family:var(--rf-font-display);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--rf-text-muted)}.field .help{font-family:var(--rf-font-mono);font-size:10px;color:var(--rf-text-muted);margin-top:2px}.input,.textarea,.select{width:100%;height:32px;padding:0 var(--rf-sp-3);background:var(--rf-surface-2);color:var(--rf-text);border:1px solid var(--rf-border);border-radius:var(--rf-radius-md);font-family:var(--rf-font-body);font-size:13px;transition:border-color .12s ease,background .12s ease}.input:hover,.textarea:hover,.select:hover{border-color:var(--rf-border-strong)}.input:focus,.textarea:focus,.select:focus{border-color:var(--rf-accent);background:var(--rf-surface)}.textarea{height:auto;min-height:100px;padding:var(--rf-sp-2) var(--rf-sp-3);resize:vertical;line-height:1.5}.input-mono{font-family:var(--rf-font-mono);font-size:12px}.chip-group{display:flex;flex-wrap:wrap;gap:6px;margin-top:var(--rf-sp-2)}.chip{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-family:var(--rf-font-mono);font-size:11px;border:1px solid var(--rf-border);border-radius:var(--rf-radius-sm);background:var(--rf-surface-2);color:var(--rf-text-dim);line-height:1.4}.chip .x{cursor:pointer;color:var(--rf-text-muted);font-size:12px;line-height:1;padding:0 2px}.chip .x:hover{color:var(--rf-danger)}.chip-matched{border-color:#4ade8059;background:#4ade8014;color:var(--rf-success)}.chip-missing{border-color:#f8717159;background:#f8717114;color:var(--rf-danger)}.badge{display:inline-flex;align-items:center;gap:var(--rf-sp-2);padding:4px 10px;font-family:var(--rf-font-mono);font-size:12px;border:1px solid var(--rf-border);border-radius:var(--rf-radius-sm);background:var(--rf-surface-2);color:var(--rf-text)}.badge .dot{width:6px;height:6px;border-radius:50%;background:var(--rf-text-muted);flex-shrink:0}.badge.good{border-color:#4ade8066}.badge.good .dot{background:var(--rf-success)}.badge.mid{border-color:#fbbf2466}.badge.mid .dot{background:var(--rf-warn)}.badge.low{border-color:#f8717166}.badge.low .dot{background:var(--rf-danger)}.toast-wrap{position:fixed;bottom:var(--rf-sp-5);right:var(--rf-sp-5);display:flex;flex-direction:column;gap:var(--rf-sp-2);z-index:1000;pointer-events:none}.toast{display:flex;align-items:center;gap:var(--rf-sp-2);padding:var(--rf-sp-2) var(--rf-sp-3);min-width:220px;max-width:360px;background:var(--rf-surface);border:1px solid var(--rf-border);border-left:2px solid var(--rf-accent);border-radius:var(--rf-radius-sm);font-family:var(--rf-font-mono);font-size:12px;color:var(--rf-text);box-shadow:var(--rf-shadow-float);animation:toastIn .16s ease-out;pointer-events:auto}.toast.success{border-left-color:var(--rf-success)}.toast.warn{border-left-color:var(--rf-warn)}.toast.error{border-left-color:var(--rf-danger)}.toast.leaving{animation:toastOut .16s ease-in forwards}@keyframes toastIn{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes toastOut{0%{transform:translate(0);opacity:1}to{transform:translate(20px);opacity:0}}.log{background:#0b0f17;color:#e5e7eb;border:1px solid var(--rf-border);border-radius:var(--rf-radius-lg);padding:var(--rf-sp-3);font-family:var(--rf-font-mono);font-size:11px;line-height:1.65;max-height:180px;overflow-y:auto}.log .line{display:flex;gap:var(--rf-sp-2);padding:1px 0}.log .t{color:#4b5563;flex-shrink:0}.log .m{color:#e5e7eb;word-break:break-word}.log .m.ok{color:#4ade80}.log .m.warn{color:#fbbf24}.log .m.err{color:#f87171}.log .m.dim{color:#6b7280}.log .empty{color:#4b5563;font-style:italic}.card{background:var(--rf-surface);border:1px solid var(--rf-border);border-radius:var(--rf-radius-lg);padding:var(--rf-sp-4);margin-bottom:var(--rf-sp-4)}.card-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--rf-sp-3);border-bottom:1px solid var(--rf-border);margin-bottom:var(--rf-sp-4)}.card-head h3{font-size:14px}.empty{padding:var(--rf-sp-6);text-align:center;color:var(--rf-text-muted);font-family:var(--rf-font-mono);font-size:12px;border:1px dashed var(--rf-border-strong);border-radius:var(--rf-radius-lg);background:transparent}.empty .empty-title{color:var(--rf-text-dim);font-size:13px;margin-bottom:var(--rf-sp-1)}.seg{display:inline-flex;border:1px solid var(--rf-border);border-radius:var(--rf-radius-md);padding:2px;background:var(--rf-surface-2);gap:2px}.seg button{padding:4px 12px;background:transparent;border:none;border-radius:var(--rf-radius-sm);color:var(--rf-text-dim);font-size:12px;font-weight:500;cursor:pointer;transition:background .12s ease,color .12s ease}.seg button:hover:not(.active){color:var(--rf-text)}.seg button.active{background:var(--rf-accent);color:var(--rf-accent-ink)}.row{display:flex;align-items:center;gap:var(--rf-sp-2)}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--rf-sp-2)}.stack{display:flex;flex-direction:column;gap:var(--rf-sp-3)}.stack-2{display:flex;flex-direction:column;gap:var(--rf-sp-2)}.mt-1{margin-top:var(--rf-sp-1)}.mt-2{margin-top:var(--rf-sp-2)}.mt-3{margin-top:var(--rf-sp-3)}.mt-4{margin-top:var(--rf-sp-4)}.mb-2{margin-bottom:var(--rf-sp-2)}.mb-3{margin-bottom:var(--rf-sp-3)}.mb-4{margin-bottom:var(--rf-sp-4)}.muted{color:var(--rf-text-muted)}.dim{color:var(--rf-text-dim)}.mono{font-family:var(--rf-font-mono)}.text-sm{font-size:12px}.text-xs{font-size:11px}.divider{height:1px;background:var(--rf-border);margin:var(--rf-sp-4) 0}.ring-wrap{display:flex;align-items:center;gap:var(--rf-sp-3)}.ring{--p: 0;width:48px;height:48px;border-radius:50%;background:conic-gradient(var(--rf-accent) calc(var(--p) * 1%),var(--rf-border) 0);display:flex;align-items:center;justify-content:center;position:relative}.ring:after{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border-radius:50%;background:var(--rf-surface)}.ring span{position:relative;z-index:1;font-family:var(--rf-font-mono);font-size:11px;color:var(--rf-text)}.palette-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:flex-start;justify-content:center;padding-top:15vh;z-index:2000;animation:fadeIn .12s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.palette{width:480px;max-width:90vw;background:var(--rf-surface);border:1px solid var(--rf-border-strong);border-radius:var(--rf-radius-lg);box-shadow:var(--rf-shadow-float);overflow:hidden}.palette input{width:100%;height:44px;padding:0 var(--rf-sp-4);background:transparent;border:none;border-bottom:1px solid var(--rf-border);color:var(--rf-text);font-family:var(--rf-font-body);font-size:14px}.palette-list{max-height:300px;overflow-y:auto;padding:var(--rf-sp-2)}.palette-item{display:flex;align-items:center;justify-content:space-between;padding:var(--rf-sp-2) var(--rf-sp-3);border-radius:var(--rf-radius-sm);cursor:pointer;font-size:13px}.palette-item:hover,.palette-item.active{background:var(--rf-surface-2);color:var(--rf-accent)}.palette-item .kbd{font-family:var(--rf-font-mono);font-size:10px;color:var(--rf-text-muted);border:1px solid var(--rf-border);padding:1px 5px;border-radius:3px}
