:root{--bg:#0d1117;--panel:#161b22;--panel-2:#1c2430;--line:#2a3441;--text:#e6edf3;--muted:#8b949e;--accent:#3b82f6;--ok:#2ea043;--warn:#d29922;--danger:#f85149;--radius:8px}*{box-sizing:border-box}#root,body,html{height:100%}body{-webkit-font-smoothing:antialiased;background:#0d1117;background:var(--bg);color:#e6edf3;color:var(--text);font:14px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;margin:0}.mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:12.5px}.muted{color:#8b949e;color:var(--muted)}.layout{display:grid;grid-template-columns:240px 1fr;min-height:100%}.sidebar{background:#161b22;background:var(--panel);border-right:1px solid #2a3441;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:20px;padding:20px 14px}.brand{align-items:center;display:flex;font-weight:600;gap:10px;padding:0 6px}.brand small{color:#8b949e;color:var(--muted);display:block;font-size:11.5px;font-weight:400}.brand-mark{background:#3b82f6;background:var(--accent);border-radius:8px;border-radius:var(--radius);color:#fff;display:grid;font-size:12px;font-weight:700;height:32px;place-items:center;width:32px}.sidebar nav{display:flex;flex:1 1;flex-direction:column;gap:2px}.nav-item{align-items:center;border-radius:6px;color:#8b949e;color:var(--muted);display:flex;gap:8px;justify-content:space-between;padding:8px 10px;text-decoration:none}.nav-item.active,.nav-item:hover{background:#1c2430;background:var(--panel-2);color:#e6edf3;color:var(--text)}.nav-item.active{box-shadow:inset 2px 0 0 #3b82f6;box-shadow:inset 2px 0 0 var(--accent)}.tag{border:1px solid #2a3441;border:1px solid var(--line);border-radius:999px;color:#8b949e;color:var(--muted);font-size:10px;letter-spacing:.04em;padding:1px 6px;text-transform:uppercase}.sidebar-foot{border-top:1px solid #2a3441;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:10px;padding-top:14px}.who strong{display:block;font-size:13px;overflow-wrap:anywhere}.who small{color:#d29922;color:var(--warn);font-size:11px}.content{max-width:1180px;overflow-x:auto;padding:28px 32px}.page-head{margin-bottom:20px}.page-head h1{font-size:20px;margin:0 0 4px}.card{background:#161b22;background:var(--panel);border:1px solid #2a3441;border:1px solid var(--line);border-radius:8px;border-radius:var(--radius);padding:20px}.card h2{font-size:14px;letter-spacing:.05em;margin:0 0 14px;text-transform:uppercase}.card h2,.card.empty{color:#8b949e;color:var(--muted)}.card.empty strong{color:#e6edf3;color:var(--text)}.kv{grid-gap:10px 16px;display:grid;gap:10px 16px;grid-template-columns:160px 1fr;margin:0}.kv dt{color:#8b949e;color:var(--muted)}.kv dd{margin:0;overflow-wrap:anywhere}.badge{border:1px solid #2a3441;border:1px solid var(--line);border-radius:999px;display:inline-block;font-size:12px;padding:1px 8px}.badge.ok{border-color:#2ea043;border-color:var(--ok);color:#2ea043;color:var(--ok)}.badge.warn{border-color:#d29922;border-color:var(--warn);color:#d29922;color:var(--warn)}.hint{background:#1c2430;background:var(--panel-2);border-left:2px solid #d29922;border-left:2px solid var(--warn);border-radius:0 6px 6px 0;color:#8b949e;color:var(--muted);margin:16px 0 0;padding:12px 14px}.hint code{color:#e6edf3;color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px}.error{color:#f85149;color:var(--danger);margin:0}.btn{-webkit-appearance:none;appearance:none;background:#1c2430;background:var(--panel-2);border:1px solid #2a3441;border:1px solid var(--line);border-radius:6px;color:#e6edf3;color:var(--text);cursor:pointer;display:inline-block;font:inherit;padding:8px 14px;text-decoration:none}.btn:hover:not(:disabled){border-color:#8b949e;border-color:var(--muted)}.btn:disabled{cursor:default;opacity:.6}.btn.primary{background:#3b82f6;background:var(--accent);border-color:#3b82f6;border-color:var(--accent);color:#fff}.btn.ghost{background:#0000}.centered{align-items:center;display:flex;flex-direction:column;gap:14px;justify-content:center;min-height:100%;padding:40px 20px;text-align:center}.centered h1{font-size:20px;margin:0}.login{display:flex;flex-direction:column;gap:14px;max-width:360px;text-align:left;width:100%}.login h1,.login p{margin:0}.login label{color:#8b949e;color:var(--muted);display:flex;flex-direction:column;font-size:13px;gap:6px}.login input{background:#0d1117;background:var(--bg);border:1px solid #2a3441;border:1px solid var(--line);border-radius:6px;color:#e6edf3;color:var(--text);font:inherit;padding:9px 11px}.login input:focus{border-color:#3b82f6;border-color:var(--accent);outline:none}.section-title{color:#8b949e;color:var(--muted);font-size:12px;letter-spacing:.06em;margin:26px 0 10px;text-transform:uppercase}.stats{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}.stat{background:#161b22;background:var(--panel);border:1px solid #2a3441;border:1px solid var(--line);border-radius:8px;border-radius:var(--radius);color:inherit;display:flex;flex-direction:column;gap:2px;padding:16px;text-decoration:none}a.stat:hover{border-color:#8b949e;border-color:var(--muted)}.stat-value{font-size:26px;font-weight:600;line-height:1.1}.stat-value.warn{color:#d29922;color:var(--warn)}.stat-value.bad{color:#f85149;color:var(--danger)}.stat-value.ok{color:#2ea043;color:var(--ok)}.stat-hint,.stat-label{color:#8b949e;color:var(--muted)}.stat-hint{font-size:11.5px;opacity:.8}.table-wrap{background:#161b22;background:var(--panel);border:1px solid #2a3441;border:1px solid var(--line);border-radius:8px;border-radius:var(--radius);overflow-x:auto}table{border-collapse:collapse;white-space:nowrap;width:100%}td,th{border-bottom:1px solid #2a3441;border-bottom:1px solid var(--line);padding:9px 14px;text-align:left}th{background:#1c2430;background:var(--panel-2);color:#8b949e;color:var(--muted);font-size:12px;font-weight:500;letter-spacing:.04em;position:-webkit-sticky;position:sticky;text-transform:uppercase;top:0}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:#1c2430;background:var(--panel-2)}td a{color:#3b82f6;color:var(--accent);text-decoration:none}td a:hover{text-decoration:underline}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.empty-cell{padding:26px 14px;text-align:center;white-space:normal}.pager{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-top:12px}.pager-buttons{display:flex;gap:8px}.linklike{background:none;border:none;color:#3b82f6;color:var(--accent);cursor:pointer;font:inherit;padding:0;text-decoration:underline}.filters{align-items:flex-end;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:14px}.filters label{color:#8b949e;color:var(--muted);display:flex;flex-direction:column;font-size:12px;gap:4px}.filters label.checkbox{align-items:center;flex-direction:row;font-size:13px;gap:7px}.filters input,.filters select{background:#161b22;background:var(--panel);border:1px solid #2a3441;border:1px solid var(--line);border-radius:6px;color:#e6edf3;color:var(--text);font:inherit;min-width:190px;padding:7px 10px}.filters input:focus,.filters select:focus{border-color:#3b82f6;border-color:var(--accent);outline:none}.content>.card+.card{margin-top:14px}.badge+.badge{margin-left:6px}.pre{background:#0d1117;background:var(--bg);border:1px solid #2a3441;border:1px solid var(--line);border-radius:6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;margin:0;overflow-wrap:anywhere;overflow-x:auto;padding:14px;white-space:pre-wrap}.pre.article{max-height:60vh;overflow-y:auto}.card-head{align-items:center;display:flex;gap:12px;justify-content:space-between}.card-head h2{margin:0}@media (max-width:860px){.form-grid{grid-template-columns:1fr}}.form-grid{grid-gap:14px;display:grid;gap:14px;grid-template-columns:1fr 1fr;margin-bottom:14px}.form-grid label{display:flex;flex-direction:column;font-size:13px;gap:5px}.form-grid label.wide{grid-column:1/-1}.form-grid label>span{align-items:center;color:#8b949e;color:var(--muted);display:flex;gap:10px;justify-content:space-between}.form-grid input,.form-grid textarea{background:#0d1117;background:var(--bg);border:1px solid #2a3441;border:1px solid var(--line);border-radius:6px;color:#e6edf3;color:var(--text);font:inherit;padding:8px 11px;resize:vertical}.form-grid textarea.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;line-height:1.6}.form-grid input:focus,.form-grid textarea:focus{border-color:#3b82f6;border-color:var(--accent);outline:none}.form-grid input:disabled{cursor:not-allowed;opacity:.55}.form-grid small{font-size:11.5px}.counter{font-feature-settings:"tnum";font-size:11.5px;font-variant-numeric:tabular-nums}.counter.over{color:#f85149;color:var(--danger)}.form-actions{align-items:center;display:flex;flex-wrap:wrap;gap:12px;margin-top:14px}.ok-text{color:#2ea043;color:var(--ok);margin:0}.preview{background:#fff;border-radius:6px;color:#16202c;max-height:60vh;overflow-y:auto;padding:20px 22px}.preview p{line-height:1.65;margin:0 0 1em;overflow-wrap:anywhere;white-space:pre-wrap}.preview p:last-child{margin-bottom:0}@media (max-width:860px){.layout{grid-template-columns:1fr}.sidebar{border-bottom:1px solid #2a3441;border-bottom:1px solid var(--line);border-right:none}.sidebar nav{flex-direction:row;flex-wrap:wrap}.content{padding:20px 16px}.kv{gap:2px 0;grid-template-columns:1fr}.kv dd{margin-bottom:10px}}.card-danger{border-color:#f8514966}.btn.danger,.card-danger h2{color:#f85149;color:var(--danger)}.btn.danger{background:#f851491f;border-color:#f8514980}.btn.danger:hover:not(:disabled){background:#f8514933;border-color:#f85149;border-color:var(--danger)}.confirm-inline,.confirm-severe{background:#f851490d;border:1px solid #f8514959;border-radius:8px;border-radius:var(--radius);margin-top:14px;padding:14px}.confirm-severe h3{color:#f85149;color:var(--danger);font-size:14px;margin:0 0 10px}.danger-notes{font-size:13px;line-height:1.6;margin:0 0 14px;padding-left:18px}.danger-notes li+li{margin-top:6px}.confirm-label{display:block;font-size:13px;margin-bottom:6px}.confirm-input{background:#1c2430;background:var(--panel-2);border:1px solid #2a3441;border:1px solid var(--line);border-radius:6px;color:#e6edf3;color:var(--text);font:inherit;margin-bottom:12px;max-width:420px;padding:8px 10px;width:100%}.row-actions{gap:10px}.row-actions,.wallet-head{align-items:center;display:flex}.wallet-head{justify-content:space-between;margin-bottom:14px}.wallet-head h2{margin:0}.btn-sm{font-size:12px;padding:4px 10px}.badge.danger{border-color:#f85149;border-color:var(--danger);color:#f85149;color:var(--danger)}.wallet-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}.wallet-card{background:#1c2430;background:var(--panel-2);border:1px solid #2a3441;border:1px solid var(--line);border-radius:8px;border-radius:var(--radius);padding:14px}.wallet-card-head{align-items:center;display:flex;gap:8px;justify-content:space-between;margin-bottom:8px}.wallet-name{font-size:13px;font-weight:600}.wallet-value{font-feature-settings:"tnum";font-size:20px;font-variant-numeric:tabular-nums;margin:0 0 4px}.wallet-value-none{color:#8b949e;color:var(--muted)}.wallet-checked,.wallet-detail,.wallet-impact,.wallet-plan{color:#8b949e;color:var(--muted);font-size:12px;line-height:1.5;margin:4px 0 0}.wallet-impact{font-style:italic}.wallet-error{color:#d29922;color:var(--warn)}.wallet-checked{font-size:11px;opacity:.75}.cfg-section{border-top:1px solid #2a3441;border-top:1px solid var(--line);margin-top:18px;padding-top:14px}.cfg-section h3{color:#8b949e;color:var(--muted);font-size:13px;letter-spacing:.05em;margin:0 0 10px;text-transform:uppercase}.cfg-field{margin-bottom:14px;max-width:640px}.cfg-field label{display:block;font-size:13px;margin-bottom:5px}.cfg-field input[type=text],.cfg-field select,.cfg-field textarea{background:#1c2430;background:var(--panel-2);border:1px solid #2a3441;border:1px solid var(--line);border-radius:6px;color:#e6edf3;color:var(--text);font:inherit;padding:8px 10px;width:100%}.cfg-field textarea{resize:vertical}.cfg-field-error input,.cfg-field-error select,.cfg-field-error textarea{border-color:#f85149;border-color:var(--danger)}.cfg-required{color:#f85149;color:var(--danger)}.cfg-help{color:#8b949e;color:var(--muted);font-size:12px;margin:4px 0 0}.cfg-count{text-align:right}.cfg-error{font-size:12px;margin:4px 0 0}