/* components.css */
.plan-badge{font-size:10px;padding:2px 8px;border-radius:20px;font-weight:600;background:var(--blue-bg);color:var(--blue-tx)}
.plan-badge.pro{background:var(--green-bg);color:var(--green-tx)}
.limit-warn{background:var(--amber-bg);border:0.5px solid var(--amber-br);border-radius:var(--rm);padding:10px 14px;font-size:12px;color:var(--amber-tx);margin-bottom:1rem;display:none}
.btn{font-size:12px;height:30px;padding:0 12px;border:0.5px solid var(--bm);border-radius:var(--rm);background:var(--bg);color:var(--tx);cursor:pointer;white-space:nowrap;font-family:var(--font);display:inline-flex;align-items:center;gap:4px}
.btn:hover{background:var(--bg2)}
.btn-blue{background:var(--blue-bg);color:var(--blue-tx);border-color:var(--blue-br)}
.btn-red{background:var(--red-bg);color:var(--red-tx);border-color:var(--red-br)}
.btn-sm{font-size:11px;height:26px;padding:0 10px}
.savebar{background:var(--bg);border:0.5px solid var(--bl);border-radius:var(--rl);padding:8px 14px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:1rem}
.sinfo{font-size:12px;color:var(--tx2)}
.sync-dot{width:8px;height:8px;border-radius:50%;background:var(--green-tx);display:inline-block;margin-right:4px}
.sync-dot.saving{background:var(--amber-tx);animation:pulse .8s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
.badge{display:inline-block;font-size:10px;padding:2px 7px;border-radius:20px;font-weight:500;white-space:nowrap}
.bok{background:var(--green-bg);color:var(--green-tx)}
.bpend{background:var(--amber-bg);color:var(--amber-tx)}
.bvenc{background:var(--red-bg);color:var(--red-tx)}
.binfo{background:var(--blue-bg);color:var(--blue-tx)}
.bgray{background:var(--gray-bg);color:var(--gray-tx)}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#1a1a18;color:#f1efe8;font-size:12px;padding:8px 18px;border-radius:var(--rm);z-index:999;opacity:0;transition:opacity .25s;pointer-events:none}
.toast.show{opacity:1}
.loading-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;gap:12px;z-index:998;opacity:0;pointer-events:none;transition:opacity .2s}
.loading-overlay.show{opacity:1;pointer-events:all}
.loading-spinner{width:36px;height:36px;border:4px solid rgba(255,255,255,.25);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}
.loading-label{color:#fff;font-size:13px;font-weight:600}
@keyframes spin{to{transform:rotate(360deg)}}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:.875rem;align-items:center}
.toolbar input,.toolbar select{font-size:12px;height:30px;padding:0 9px;border:0.5px solid var(--bl);border-radius:var(--rm);background:var(--bg);color:var(--tx);outline:none}
.venc-chip{display:inline-block;font-size:10px;padding:3px 8px;border-radius:999px;background:var(--blue-bg);border:0.5px solid var(--blue-br);color:var(--blue-tx);font-weight:700}
