/* ============================================================
   KAKTUS DASHBOARD — "web loader" app window (#kdb)
   Built like the desktop loader: title bar, icon tab rail,
   work area, status bar. Loader tokens from knx.css (--knx-*).
   Everything is scoped under #kdb so the old dashboard rules in
   style.css (.ud / .dash-card / .gen-* ...) never leak in.
   IDs / data-hooks are unchanged, all dashboard JS keeps working.
   ============================================================ */
main:has(> .page[data-page="dashboard"].active){max-width:1280px}

#kdb{--r:12px;position:relative;margin-top:4px;color:var(--knx-txt);font-family:var(--knx-font)}
#kdb *{box-sizing:border-box}
#kdb :is(h1,h2,h3,h4,p,ul,ol,dl,dd){margin:0;padding:0}
#kdb ol,#kdb ul{list-style:none}
#kdb button{font-family:inherit;cursor:pointer}
#kdb svg{display:block;flex-shrink:0}
#kdb a{color:var(--knx-ac2)}
#kdb code{padding:1px 6px;border-radius:4px;border:1px solid var(--knx-ln);background:var(--knx-p2);color:var(--knx-ac2);font:600 .9em var(--knx-mono)}

/* ---------- page header ---------- */
#kdb .kdb2-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:16px}
#kdb .kdb2-head .knx-label{color:var(--knx-dim)}
#kdb .kdb2-head .knx-label em{font-style:normal;margin:0 3px;color:var(--knx-ln3)}
#kdb .kdb2-head .knx-label b{color:var(--knx-ac2)}
#kdb .kdb2-me{display:flex;align-items:center;gap:10px;padding:5px 13px 5px 5px;border:1px solid var(--knx-ln2);border-radius:999px;background:var(--knx-p1)}
#kdb .kdb2-av{position:relative;width:30px;height:30px;flex-shrink:0;border-radius:50%;overflow:hidden;background:var(--knx-ac);box-shadow:inset 0 0 0 1px rgba(255,255,255,.15)}
#kdb .kdb2-av img{width:100%;height:100%;object-fit:cover;display:block}
#kdb .kdb2-av #dashInitial{display:grid;place-items:center;width:100%;height:100%;font:800 14px/1 var(--knx-font);color:#fff}
#kdb .kdb2-av .hidden{display:none!important}
#kdb .kdb2-me-t{display:flex;flex-direction:column;gap:2px;min-width:0}
#kdb .kdb2-me-t strong{font:700 13px/1.1 var(--knx-font);color:#fff;white-space:nowrap}
#kdb .kdb2-me-t span{font:700 8.5px/1.1 var(--knx-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--knx-dim);white-space:nowrap}

/* ---------- horizontal tabs ---------- */
#kdb .kdb2-tabs{display:flex;align-items:center;gap:4px;margin-bottom:18px;padding:5px;border:1px solid var(--knx-ln);border-radius:12px;background:var(--knx-p1);overflow-x:auto;scrollbar-width:none}
#kdb .kdb2-tabs::-webkit-scrollbar{display:none}
#kdb .kdb-tab{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 15px;border:0;border-radius:8px;background:none;color:var(--knx-mut);font:700 11px/1 var(--knx-mono);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;transition:background .15s,color .15s}
#kdb .kdb-tab svg{width:15px;height:15px}
#kdb .kdb-tab:hover{background:rgba(255,255,255,.04);color:var(--knx-txt)}
#kdb .kdb-tab.active{background:rgba(59,130,255,.14);color:var(--knx-ac2);box-shadow:inset 0 0 0 1px rgba(59,130,255,.35)}
#kdb .kdb-tab.hidden{display:none}
#kdb .kdb-rail-gap{flex:1 1 auto;min-width:4px}
#kdb .kdb-out{color:var(--knx-dim)}
#kdb .kdb-out:hover{background:rgba(255,93,108,.08);color:var(--knx-bad)}

/* ---------- content ---------- */
#kdb .kdb-main{position:relative;min-width:0}
#kdb .dash-view{position:relative;display:none}
#kdb .dash-view.active{display:grid;gap:14px;animation:kdbIn .28s var(--knx-ease)}
@keyframes kdbIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---------- shared pieces ---------- */
#kdb .kdb-kick{display:inline-flex;align-items:center;gap:8px;font:700 10px/1 var(--knx-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--knx-dim)}
#kdb .kdb-kick::before{content:"";width:6px;height:6px;border-radius:1px;background:var(--knx-ac);box-shadow:0 0 8px var(--knx-ac)}
#kdb .kdb-h{margin-top:10px;font:800 clamp(22px,2.4vw,30px)/1.1 var(--knx-font);letter-spacing:-.025em;color:#fff}
#kdb .kdb-h span{color:var(--knx-ac)}
#kdb .kdb-sub{margin-top:7px;font-size:13.5px;line-height:1.55;color:var(--knx-mut)}
#kdb .kdb-sub b{color:#fff}
#kdb .kdb-lbl{display:block;font:700 9px/1 var(--knx-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--knx-dim)}
#kdb .kdb-note{font-size:12px;line-height:1.4;color:var(--knx-mut)}
#kdb .kdb-empty-t{font-size:13px;color:var(--knx-dim)}
#kdb .kdb-help{margin-top:12px;font-size:12.5px;color:var(--knx-dim)}
#kdb .kdb-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:4px;border:1px solid rgba(59,130,255,.3);background:rgba(59,130,255,.08);color:var(--knx-ac2);font:700 9px/1 var(--knx-mono);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}
#kdb .kdb-tag.amber{border-color:rgba(255,176,32,.35);background:rgba(255,176,32,.08);color:var(--knx-warn)}
#kdb .kdb-pill{display:inline-flex;align-items:center;margin-left:8px;padding:3px 7px;border-radius:4px;border:1px solid var(--knx-ln2);background:var(--knx-bg);color:var(--knx-mut);font:700 9px/1 var(--knx-mono);letter-spacing:.12em;text-transform:uppercase;vertical-align:2px}
#kdb .kdb-pill.on{border-color:rgba(45,212,160,.35);background:rgba(45,212,160,.08);color:var(--knx-ok)}
#kdb .kdb-pill.amber{border-color:rgba(255,176,32,.35);background:rgba(255,176,32,.08);color:var(--knx-warn)}
#kdb .kdb-link{margin-top:10px;padding:0;border:0;background:none;color:var(--knx-ac2);font:700 10px/1 var(--knx-mono);letter-spacing:.12em;text-transform:uppercase}
#kdb .kdb-link:hover{color:#fff}

#kdb .kdb-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:8px;border:1px solid var(--knx-ln2);background:transparent;color:var(--knx-txt);font:700 10.5px/1 var(--knx-mono);letter-spacing:.12em;text-transform:uppercase;text-decoration:none;white-space:nowrap;transition:background .15s,border-color .15s,color .15s,box-shadow .15s}
#kdb .kdb-btn svg{width:14px;height:14px}
#kdb .kdb-btn:hover{border-color:var(--knx-ln3);background:rgba(255,255,255,.03);color:#fff}
#kdb .kdb-btn.pri{border-color:var(--knx-ac);background:var(--knx-ac);color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.12),0 10px 26px -12px var(--knx-acg)}
#kdb .kdb-btn.pri:hover{background:#4f90ff;border-color:#4f90ff}
#kdb .kdb-btn.amber{border-color:var(--knx-warn);background:var(--knx-warn);color:#2a1a00;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),0 10px 26px -12px rgba(255,176,32,.55)}
#kdb .kdb-btn.amber:hover{background:#ffbe3d}
#kdb .kdb-btn.danger,#kdb .kdb-btn.pri.danger{border-color:rgba(255,93,108,.45);background:rgba(255,93,108,.07);color:var(--knx-bad);box-shadow:none}
#kdb .kdb-btn.danger:hover{background:rgba(255,93,108,.14)}
#kdb .kdb-btn:disabled{border-color:var(--knx-ln2);background:var(--knx-p2);color:var(--knx-dim);box-shadow:none;cursor:not-allowed}
#kdb .kdb-mini{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border-radius:6px;border:1px solid var(--knx-ln2);background:transparent;color:var(--knx-mut);font:700 9.5px/1 var(--knx-mono);letter-spacing:.1em;text-transform:uppercase;transition:color .15s,border-color .15s,background .15s}
#kdb .kdb-mini:hover{border-color:var(--knx-ln3);color:#fff}
#kdb .kdb-mini svg{width:13px;height:13px}
#kdb .kdb-mini.acc{border-color:rgba(59,130,255,.4);background:rgba(59,130,255,.08);color:var(--knx-ac2)}
#kdb .kdb-mini.acc.revealed{border-color:rgba(255,176,32,.4);background:rgba(255,176,32,.08);color:var(--knx-warn)}
#kdb .kdb-seg{display:inline-flex;gap:3px;padding:3px;border:1px solid var(--knx-ln2);border-radius:8px;background:var(--knx-bg)}
#kdb .kdb-seg button{height:28px;min-width:40px;padding:0 10px;border:0;border-radius:5px;background:none;color:var(--knx-mut);font:700 10px/1 var(--knx-mono);letter-spacing:.08em;text-transform:uppercase;transition:color .15s,background .15s}
#kdb .kdb-seg button:hover{color:#fff}
#kdb .kdb-seg button.active{background:rgba(59,130,255,.14);color:var(--knx-ac2);box-shadow:inset 0 0 0 1px rgba(59,130,255,.35)}
#kdb .kdb-seg.wide{display:flex}
#kdb .kdb-seg.wide button{flex:1;height:34px}
#kdb .kdb-bar{height:5px;border-radius:3px;background:var(--knx-p3);overflow:hidden}
#kdb .kdb-bar i{display:block;height:100%;width:0;border-radius:3px;background:linear-gradient(90deg,var(--knx-ac),var(--knx-ac2));transition:width .8s var(--knx-ease)}
#kdb .kdb-bar.amber i{background:var(--knx-warn);box-shadow:0 0 10px rgba(255,176,32,.5)}
#kdb .kdb-ic{display:grid;place-items:center;width:34px;height:34px;border-radius:8px;border:1px solid var(--knx-ln2);background:var(--knx-p2);color:var(--knx-ac2)}
#kdb .kdb-ic svg{width:16px;height:16px}
#kdb .kdb-ic.amber{color:var(--knx-warn)}#kdb .kdb-ic.ok{color:var(--knx-ok)}#kdb .kdb-ic.bad{color:var(--knx-bad)}

#kdb input:not([type=checkbox]):not([type=radio]),#kdb textarea{width:100%;border:1px solid var(--knx-ln2);border-radius:8px;background:var(--knx-bg);color:var(--knx-txt);font:500 13.5px var(--knx-font);box-shadow:none;outline:none;transition:border-color .15s,box-shadow .15s}
#kdb input:not([type=checkbox]):not([type=radio]){height:42px;padding:0 13px}
#kdb textarea{padding:11px 13px;resize:vertical;line-height:1.5}
#kdb input:focus,#kdb textarea:focus{border-color:var(--knx-ac);box-shadow:0 0 0 3px rgba(59,130,255,.15)}
#kdb input::placeholder,#kdb textarea::placeholder{color:var(--knx-dim)}
#kdb .kdb-form{display:grid;gap:12px}
#kdb .kdb-form label{display:grid;gap:7px}
#kdb .kdb-form label > span{font:700 9px/1.4 var(--knx-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--knx-dim)}
#kdb .kdb-form label > span em{font-style:normal;letter-spacing:.04em;text-transform:none;color:var(--knx-dim)}
#kdb .kdb-form small{font:600 10px/1 var(--knx-mono);color:var(--knx-dim)}
#kdb .kdb-form .kdb-btn{justify-self:start}
#kdb .kdb-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
#kdb .kdb-keyrow{display:flex;gap:8px;margin-top:14px}
#kdb .kdb-keyrow input{flex:1;min-width:0}
#kdb .kdb-keyrow .kdb-btn{height:42px}
#kdb .notice{margin-top:12px;padding:10px 12px;border-radius:8px;font-size:13px;line-height:1.45}
#kdb .notice.hidden{display:none}

/* panels */
#kdb .kdb-panel{position:relative;min-width:0;padding:18px;border:1px solid var(--knx-ln);border-radius:var(--r);background:var(--knx-p1)}
#kdb .kdb-ph{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}
#kdb .kdb-ph h3{font:700 14.5px/1.2 var(--knx-font);color:#fff}
#kdb .kdb-ph p{margin-top:4px;font:600 10px/1.4 var(--knx-mono);letter-spacing:.04em;color:var(--knx-dim)}
#kdb .kdb-acts{display:flex;flex-wrap:wrap;gap:6px}
#kdb .kdb-grid{display:grid;gap:14px}
#kdb .kdb-g-82{grid-template-columns:minmax(0,1.65fr) minmax(0,1fr)}
#kdb .kdb-g-55{grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
#kdb .kdb-grid.hidden,#kdb .kdb-panel.hidden,#kdb .kdb-meter.hidden{display:none}

/* ============================================================
   HOME
   ============================================================ */
#kdb .kdb-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:2px 2px 6px}
#kdb .kdb-head-act{display:flex;gap:8px;flex-wrap:wrap}
#kdb .kdb-meters{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);border:1px solid var(--knx-ln2);border-radius:var(--r);background:var(--knx-p1);overflow:hidden}
#kdb .kdb-meter{position:relative;display:flex;flex-direction:column;min-height:128px;padding:16px 18px;overflow:hidden}
#kdb .kdb-meter + .kdb-meter{border-left:1px solid var(--knx-ln)}
#kdb .kdb-meter strong{margin-top:14px;font:700 32px/1 var(--knx-mono);letter-spacing:-.04em;color:#fff}
#kdb .kdb-meter .kdb-note{margin-top:7px}
#kdb .kdb-meter .kdb-note .up,#kdb .kdb-meter .kdb-note .tr.up{color:var(--knx-ok)}
#kdb .kdb-meter .kdb-note .down{color:var(--knx-bad)}
#kdb .kdb-meter .ud-link{padding:0;border:0;background:none;color:var(--knx-ac2);font:700 10px/1.4 var(--knx-mono);letter-spacing:.08em;text-transform:uppercase}
#kdb .kdb-spark{position:absolute;left:0;right:0;bottom:0;height:42px;color:var(--knx-ac);opacity:.9;pointer-events:none}
#kdb .kdb-spark svg{display:block;width:100%}
#kdb .svg-chart{position:relative;min-height:220px;color:var(--knx-ac)}
#kdb .svg-chart svg{display:block;overflow:visible}
#kdb .svg-chart text{fill:var(--knx-dim);font-family:var(--knx-mono)}

#kdb .mix-list{display:grid;gap:12px}
#kdb .mix-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
#kdb .mix-head span{font:600 13px/1 var(--knx-font);color:var(--knx-txt)}
#kdb .mix-head b{font:700 12.5px/1 var(--knx-mono);color:#fff}
#kdb .mix-head b em{margin-left:6px;font-style:normal;color:var(--knx-dim)}
#kdb .mix-bar{height:4px;border-radius:2px;background:var(--knx-p3);overflow:hidden}
#kdb .mix-bar span{display:block;height:100%;border-radius:2px;background:var(--knx-ac)}
#kdb .kdb-total{display:flex;align-items:baseline;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid var(--knx-ln)}
#kdb .kdb-total span{font:700 9px/1 var(--knx-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--knx-dim)}
#kdb .kdb-total b{font:700 20px/1 var(--knx-mono);color:#fff}
#kdb .kdb-total em{margin-left:auto;font:600 10px/1 var(--knx-mono);font-style:normal;color:var(--knx-dim)}

/* subscriptions (rendered by loadDashboard) */
#kdb .kdb-subs{display:grid;gap:8px}
#kdb .sub-card{display:flex;gap:12px;padding:14px;border:1px solid var(--knx-ln);border-radius:9px;background:var(--knx-bg)}
#kdb .sub-ic{display:grid;place-items:center;width:34px;height:34px;flex-shrink:0;border-radius:8px;border:1px solid var(--knx-ln2);background:var(--knx-p2);color:var(--knx-ac2)}
#kdb .sub-ic svg{width:16px;height:16px}
#kdb .sub-body{flex:1;min-width:0}
#kdb .sub-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
#kdb .sub-top strong{font:700 14px/1.2 var(--knx-font);color:#fff;text-transform:capitalize}
#kdb .sub-badge{padding:3px 8px;border-radius:4px;border:1px solid rgba(45,212,160,.3);background:rgba(45,212,160,.08);color:var(--knx-ok);font:700 9px/1 var(--knx-mono);letter-spacing:.12em}
#kdb .sub-badge.frozen{border-color:rgba(122,174,255,.35);background:rgba(122,174,255,.08);color:var(--knx-ac2)}
#kdb .sub-exp{margin-top:5px;font:600 11px/1.3 var(--knx-mono);color:var(--knx-mut)}
#kdb .sub-bar{height:4px;margin-top:10px;border-radius:2px;background:var(--knx-p3);overflow:hidden}
#kdb .sub-bar span{display:block;height:100%;border-radius:2px;background:var(--knx-ok)}
#kdb .sub-bar.low span{background:var(--knx-warn)}
#kdb .sub-bar.frozen span{background:var(--knx-ac2)}
#kdb .sub-card .sub-dl{height:32px!important;padding:0 12px!important;border-radius:7px!important;border:1px solid var(--knx-ac)!important;background:var(--knx-ac)!important;color:#fff!important;font:700 9.5px/1 var(--knx-mono)!important;letter-spacing:.12em!important;text-transform:uppercase;box-shadow:none!important}
#kdb .ud-empty{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:16px;border:1px dashed var(--knx-ln2);border-radius:9px}
#kdb .ud-empty > span{color:var(--knx-ac2)}
#kdb .ud-empty b{color:#fff}
#kdb .ud-empty em{font-style:normal;font-size:13px;color:var(--knx-mut)}
#kdb .ud-empty .btn{margin-top:6px;height:34px;padding:0 13px;border-radius:7px;border:1px solid var(--knx-ac);background:var(--knx-ac);color:#fff;font:700 9.5px/1 var(--knx-mono);letter-spacing:.12em;text-transform:uppercase;box-shadow:none}

/* daily limit (rendered by renderGenLimits) */
#kdb .gi-limbar{display:flex;gap:3px;height:8px;margin-bottom:12px;border-radius:3px;overflow:hidden;background:var(--knx-p3)}
#kdb .gi-limbar .seg{border-radius:2px}
#kdb .seg.base,#kdb .seg-dot.base{background:var(--knx-ac)}
#kdb .seg.aff,#kdb .seg-dot.aff{background:var(--knx-ok)}
#kdb .seg.streak,#kdb .seg-dot.streak{background:var(--knx-warn)}
#kdb .gi-limlegend{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
#kdb .gi-limlegend > div{padding:10px 11px;border:1px solid var(--knx-ln);border-radius:8px;background:var(--knx-bg)}
#kdb .gi-limlegend span{display:flex;align-items:center;gap:6px;font:700 8.5px/1 var(--knx-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--knx-dim)}
#kdb .gi-limlegend .seg-dot{display:block;width:6px;height:6px;border-radius:1px}
#kdb .gi-limlegend b{display:block;margin-top:7px;font:700 18px/1 var(--knx-mono);color:#fff}
#kdb .gi-earn{display:grid;gap:8px;margin-top:10px}
#kdb .gi-earn-btn{display:flex;align-items:center;gap:10px;width:100%;padding:10px;border:1px solid var(--knx-ln);border-radius:8px;background:var(--knx-p2);color:var(--knx-txt);text-align:left;transition:border-color .15s}
#kdb .gi-earn-btn:hover{border-color:var(--knx-ln3)}
#kdb .gi-earn-btn > span{display:grid;place-items:center;width:28px;height:28px;flex-shrink:0;border-radius:7px;border:1px solid var(--knx-ln2);background:var(--knx-bg);color:var(--knx-ac2)}
#kdb .gi-earn-btn > span svg{width:14px;height:14px}
#kdb .gi-earn-btn b{display:block;font:700 12.5px/1.2 var(--knx-font);color:#fff}
#kdb .gi-earn-btn em{display:block;margin-top:2px;font:600 9.5px/1.3 var(--knx-mono);font-style:normal;color:var(--knx-dim)}
#kdb .gi-unl{display:flex;align-items:center;gap:14px}
#kdb .gi-unl > span{font:700 40px/1 var(--knx-mono);color:var(--knx-ac2)}

/* account */
#kdb .kdb-ranks{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
#kdb .kdb-ranks:empty{display:none}
#kdb .rank-chip{padding:4px 9px;border-radius:4px;border:1px solid var(--knx-ln2);background:var(--knx-p2);color:var(--knx-txt);font:700 9.5px/1.2 var(--knx-mono);letter-spacing:.08em;text-transform:uppercase}
#kdb .kdb-kv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--knx-ln);border-radius:9px;overflow:hidden;background:var(--knx-bg)}
#kdb .kdb-kv > div{padding:12px 14px;border-right:1px solid var(--knx-ln);border-bottom:1px solid var(--knx-ln)}
#kdb .kdb-kv > div:nth-child(3n){border-right:0}
#kdb .kdb-kv > div:nth-last-child(-n+3){border-bottom:0}
#kdb .kdb-kv dt{font:700 8.5px/1 var(--knx-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--knx-dim)}
#kdb .kdb-kv dd{margin-top:8px;font:600 13px/1.3 var(--knx-mono);color:var(--knx-txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#kdb .u-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;border:1px solid;font:700 9.5px/1 var(--knx-mono);letter-spacing:.12em}
#kdb .u-pill::before{content:"";width:5px;height:5px;border-radius:1px;background:currentColor;box-shadow:0 0 6px currentColor}
#kdb .u-pill.ok{border-color:rgba(45,212,160,.35);background:rgba(45,212,160,.08);color:var(--knx-ok)}
#kdb .u-pill.bad{border-color:rgba(255,93,108,.35);background:rgba(255,93,108,.08);color:var(--knx-bad)}
#kdb .kdb-warnp{border-color:rgba(255,176,32,.3)}
#kdb .kdb-warnp .kdb-sub{margin:0 0 14px}

/* ============================================================
   GENERATE
   ============================================================ */
#kdb .kdb-genhead{position:relative;display:flex;align-items:center;justify-content:space-between;gap:22px;flex-wrap:wrap;padding:20px 22px 20px 25px;border:1px solid var(--knx-ln2);border-radius:var(--r);background:var(--knx-p1);overflow:hidden}
#kdb .kdb-genhead::after{content:"";position:absolute;left:0;top:18px;bottom:18px;width:3px;border-radius:0 3px 3px 0;background:var(--knx-ac);box-shadow:0 0 12px var(--knx-ac)}
#kdb .kdb-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
#kdb .kdb-chip{display:inline-flex;align-items:center;gap:7px;height:28px;padding:0 10px;border-radius:5px;border:1px solid var(--knx-ln2);background:var(--knx-p2);color:var(--knx-txt);font:700 10px/1 var(--knx-mono);letter-spacing:.05em;white-space:nowrap}
#kdb .kdb-chip.hidden{display:none}
#kdb .kdb-chip svg{width:12px;height:12px;color:var(--knx-ac2)}
#kdb .kdb-chip b{color:var(--knx-ok)}
#kdb .kdb-chip.hot{border-color:rgba(255,176,32,.4);background:rgba(255,176,32,.08);color:var(--knx-warn)}
#kdb .kdb-chip.hot svg{color:var(--knx-warn)}
#kdb .kdb-chip.static{cursor:default}
#kdb .kdb-slots{display:flex;align-items:center;gap:18px}
#kdb .kdb-dial{--pct:100;position:relative;width:112px;height:112px;flex-shrink:0;border-radius:50%;background:radial-gradient(closest-side,var(--knx-p1) 80%,transparent 81% 100%),conic-gradient(from -90deg,var(--knx-ac) 0%,var(--knx-ac2) calc(var(--pct)*1%),var(--knx-p3) calc(var(--pct)*1%));filter:drop-shadow(0 0 12px rgba(59,130,255,.2))}
#kdb .kdb-dial > div{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
#kdb .kdb-dial strong{font:700 32px/1 var(--knx-mono);letter-spacing:-.04em;color:#fff}
#kdb .kdb-dial span{margin-top:5px;font:700 8px/1 var(--knx-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--knx-dim)}
#kdb .kdb-slots-t{display:grid;gap:8px;min-width:180px}
#kdb .kdb-slots-t > b{font:700 14px/1 var(--knx-mono);color:#fff}
#kdb .kdb-reset{display:grid;gap:4px;margin-top:4px}
#kdb .kdb-reset div{display:flex;justify-content:space-between;gap:12px;font:600 10.5px/1.5 var(--knx-mono);color:var(--knx-mut)}
#kdb .kdb-reset b{color:#fff}

#kdb .kdb-gen{display:grid;grid-template-columns:330px minmax(0,1fr);gap:14px;align-items:start}
#kdb .kdb-plats{position:sticky;top:76px;max-height:calc(100vh - 96px);overflow:auto;padding:12px;border:1px solid var(--knx-ln);border-radius:var(--r);background:var(--knx-p1);scrollbar-width:thin;scrollbar-color:var(--knx-ln2) transparent}
#kdb .kdb-plats-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 4px 10px}
#kdb .kdb-plats-h .kdb-note{font:600 10px/1 var(--knx-mono);color:var(--knx-dim)}
#kdb .kdb-cat{padding:10px;border:1px solid var(--knx-ln);border-radius:10px;background:var(--knx-bg)}
#kdb .kdb-cat + .kdb-cat{margin-top:10px}
#kdb .kdb-cat-vip{border-color:rgba(255,176,32,.22);background:linear-gradient(180deg,rgba(255,176,32,.04),transparent 140px),var(--knx-bg)}
#kdb .kdb-cat-h{display:flex;align-items:baseline;gap:9px;padding:2px 4px 10px}
#kdb .kdb-cat-h b{font:700 13px/1 var(--knx-font);color:#fff}
#kdb .kdb-cat-vip .kdb-cat-h b{color:var(--knx-warn)}
#kdb .kdb-cat-h > span:not(.gen-cat-state){font:600 9px/1 var(--knx-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--knx-dim)}
#kdb .gen-cat-state svg{width:10px;height:10px}
#kdb .gen-cat-state{display:inline-flex;align-items:center;gap:5px}
#kdb .gen-cat-state{margin-left:auto;padding:3px 7px;border-radius:4px;border:1px solid rgba(255,176,32,.35);background:rgba(255,176,32,.08);color:var(--knx-warn);font:700 8.5px/1 var(--knx-mono);letter-spacing:.1em;text-transform:uppercase}
#kdb .gen-cat-state.on{border-color:rgba(45,212,160,.35);background:rgba(45,212,160,.08);color:var(--knx-ok)}
#kdb .gen-cat-state.part{border-color:rgba(122,174,255,.35);background:rgba(122,174,255,.08);color:var(--knx-ac2)}
#kdb .kdb-list{display:grid;gap:5px}

/* platform rows (loader .plat-card) */
#kdb .gen-type-card{position:relative;display:grid;grid-template-columns:34px minmax(0,1fr) auto;grid-template-rows:auto auto;align-content:center;align-items:center;column-gap:11px;row-gap:2px;min-height:52px;margin:0;padding:8px 10px;border:1px solid var(--knx-ln);border-radius:8px;background:var(--knx-p1);text-align:left;box-shadow:none;transform:none;cursor:pointer;overflow:hidden;transition:border-color .15s,background .15s}
#kdb .gen-type-card::before,#kdb .gen-type-card::after{display:none}
#kdb .gen-type-card:hover{border-color:var(--knx-ln2);background:var(--knx-p2);transform:none}
#kdb .gen-type-icon{grid-column:1;grid-row:1 / 3;display:grid;place-items:center;width:34px;height:34px;margin:0;border-radius:8px;border:1px solid var(--knx-ln2);background:var(--knx-p2)!important;color:var(--knx-mut);box-shadow:none;filter:none}
#kdb .gen-type-icon svg{width:17px;height:17px}
#kdb .gen-type-icon.pl-steam{color:#66c0f4}#kdb .gen-type-icon.pl-discord{color:#8b95ff}#kdb .gen-type-icon.pl-rockstar{color:#fcaf17}
#kdb .gen-type-icon.pl-vpn{color:#2dd4bf}#kdb .gen-type-icon.pl-curiositystream{color:#2ec9d6}#kdb .gen-type-icon.pl-netflix{color:#ff4a55}
#kdb .gen-type-icon.pl-ph{color:#ff9000}#kdb .gen-type-icon.pl-capcut{color:#e2e8f0}#kdb .gen-type-icon.pl-roblox{color:#ff5d5d}
#kdb .gen-type-icon.pl-rockstarkeys{color:#fcaf17}#kdb .gen-type-icon.pl-crunchyroll{color:#f47521}
#kdb .gen-type-card > strong{grid-column:2;grid-row:1;align-self:end;margin:0;font:700 13.5px/1.2 var(--knx-font);color:var(--knx-txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#kdb .gen-type-card:not(:has(> .gen-life-badge,> .gen-type-prem,> .gen-type-lim:not(:empty))) > strong{grid-row:1 / 3;align-self:center}
#kdb .gen-type-card > .gen-stock{grid-column:3;grid-row:1 / 3;margin:0;padding:4px 8px;border-radius:4px;background:rgba(45,212,160,.1);color:var(--knx-ok)!important;font:700 10.5px/1 var(--knx-mono)!important;letter-spacing:0!important;white-space:nowrap}
#kdb .gen-type-card > .gen-stock.low{background:rgba(255,176,32,.1);color:var(--knx-warn)!important}
#kdb .gen-type-card > .gen-stock.out{background:rgba(255,93,108,.1);color:var(--knx-bad)!important}
#kdb .gen-type-card > .gen-life-badge,#kdb .gen-type-card > .gen-type-prem,#kdb .gen-type-card > .gen-type-lim:not(:empty){position:static;grid-column:2;grid-row:2;justify-self:start;align-self:start;margin:0;padding:2px 5px;border-radius:3px;border:1px solid rgba(255,176,32,.3);background:rgba(255,176,32,.08)!important;color:var(--knx-warn)!important;font:700 8px/1.2 var(--knx-mono);letter-spacing:.08em;text-transform:uppercase;box-shadow:none;transform:none}
#kdb .gen-type-card > .gen-type-lim:empty{display:none}
#kdb .gen-type-card.active{border-color:rgba(59,130,255,.55);background:rgba(59,130,255,.07)}
#kdb .gen-type-card.active::before{content:"";display:block;position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:var(--knx-ac);box-shadow:0 0 10px var(--knx-ac)}
#kdb .gen-type-card.active .gen-type-icon{border-color:var(--knx-ac);background:var(--knx-ac)!important;color:#fff;box-shadow:0 8px 20px -8px var(--knx-acg)}
#kdb .gen-type-card.active > strong{color:#fff}
#kdb .kdb-cat-vip .gen-type-card.active{border-color:rgba(255,176,32,.55);background:rgba(255,176,32,.06)}
#kdb .kdb-cat-vip .gen-type-card.active::before{background:var(--knx-warn);box-shadow:0 0 10px var(--knx-warn)}
#kdb .kdb-cat-vip .gen-type-card.active .gen-type-icon{border-color:var(--knx-warn);background:var(--knx-warn)!important;color:#2a1a00}
#kdb .gen-type-card.disabled{opacity:.5;cursor:not-allowed}
#kdb .gen-type-card.vip-locked .gen-type-icon,#kdb .gen-type-card.vip-locked > strong,#kdb .gen-type-card.vip-locked > .gen-life-badge,#kdb .gen-type-card.vip-locked > .gen-type-prem{filter:grayscale(.7);opacity:.45}
#kdb .gen-type-card.vip-locked > .gen-stock{visibility:hidden}
#kdb .gen-type-card .vipx-lock{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:flex-end;padding:0 10px;border-radius:inherit;background:linear-gradient(90deg,transparent 40%,rgba(5,7,11,.6));pointer-events:none}
#kdb .gen-type-card .vipx-chain,#kdb .gen-type-card .vipx-name{display:none}
#kdb .gen-type-card .vipx-pad{position:static;display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:4px;border:1px solid rgba(255,176,32,.4);background:rgba(255,176,32,.1);color:var(--knx-warn);font:700 9.5px/1 var(--knx-mono);letter-spacing:.1em;box-shadow:none;transform:none}
#kdb .gen-type-card .vipx-pad svg{width:11px;height:11px}
#kdb .kdb-cat-foot{display:flex;align-items:center;gap:8px;margin-top:8px;padding:9px 10px;border:1px solid var(--knx-ln);border-radius:7px;background:var(--knx-p1);font:600 10px/1.3 var(--knx-mono);color:var(--knx-mut)}
#kdb .kdb-cat-foot svg{width:13px;height:13px;color:var(--knx-ok)}
#kdb .kdb-cat-foot em{margin-left:auto;font-style:normal;color:var(--knx-ok)}
#kdb .kdb-vipcta{display:flex;align-items:center;gap:9px;width:100%;margin-top:8px;padding:11px 12px;border-radius:8px;border:1px solid rgba(255,176,32,.4);background:rgba(255,176,32,.07);color:var(--knx-warn);font:700 10px/1 var(--knx-mono);letter-spacing:.1em;text-transform:uppercase;transition:background .15s}
#kdb .kdb-vipcta:hover{background:rgba(255,176,32,.14)}
#kdb .kdb-vipcta svg{width:14px;height:14px}
#kdb .kdb-vipcta span{white-space:nowrap}
#kdb .kdb-vipcta em{margin-left:auto;font-style:normal;letter-spacing:.03em;text-transform:none;white-space:nowrap;color:rgba(255,176,32,.7)}
@media (min-width:901px){#kdb .kdb-vipcta em{display:none}}
#kdb .kdb-vipcta.hidden{display:none}

/* work column */
#kdb .kdb-work{display:grid;gap:14px;min-width:0}
#kdb .kdb-launch{display:grid;gap:14px}
#kdb .kdb-sel{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--knx-ln);border-radius:8px;background:var(--knx-bg)}
#kdb #genSelInfo{display:inline-flex;align-items:center;gap:7px;font:700 11px/1.3 var(--knx-mono);color:var(--knx-ok);text-align:right}
#kdb #genSelInfo svg{width:12px;height:12px}
#kdb .kdb-amount{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:end}
#kdb .kdb-amount .kdb-lbl{margin-bottom:7px}
#kdb .kdb-step{display:flex;border:1px solid var(--knx-ln2);border-radius:8px;background:var(--knx-bg);overflow:hidden}
#kdb .kdb-step button{width:38px;height:40px;border:0;background:none;color:var(--knx-mut);font:700 16px/1 var(--knx-mono)}
#kdb .kdb-step button:hover{background:rgba(255,255,255,.04);color:#fff}
#kdb .kdb-step input{width:54px!important;height:40px!important;padding:0!important;border:0!important;border-left:1px solid var(--knx-ln)!important;border-right:1px solid var(--knx-ln)!important;border-radius:0!important;background:none!important;box-shadow:none!important;text-align:center;font:700 16px/1 var(--knx-mono)!important;color:#fff!important;-moz-appearance:textfield}
#kdb .kdb-step input::-webkit-inner-spin-button,#kdb .kdb-step input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
#kdb .kdb-go{position:relative;width:100%;height:56px;border-radius:9px;border:1px solid var(--knx-ac);background:var(--knx-ac);color:#fff;font:700 13px/1 var(--knx-mono);letter-spacing:.22em;text-transform:uppercase;box-shadow:inset 0 0 0 1px rgba(255,255,255,.12),0 14px 34px -14px var(--knx-acg);overflow:hidden;transition:background .15s,box-shadow .15s}
#kdb .kdb-go::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.22) 50%,transparent 65%);transform:translateX(-130%);animation:kdbSheen 4.5s ease-in-out infinite;pointer-events:none}
@keyframes kdbSheen{0%,60%{transform:translateX(-130%)}85%,100%{transform:translateX(130%)}}
#kdb .kdb-go:hover{background:#4f90ff}
#kdb .kdb-go:disabled,#kdb .kdb-go.btn-disabled{border-color:var(--knx-ln2);background:var(--knx-p2);color:var(--knx-dim);box-shadow:none;cursor:not-allowed}
#kdb .kdb-go:disabled::after{display:none}
#kdb .kdb-go.is-loading{background:var(--knx-acd);color:#fff;cursor:progress}
#kdb .kdb-tip{font:600 10px/1.4 var(--knx-mono);color:var(--knx-dim)}
/* VIP bulk lock replaces the quantity controls */
#kdb .vipx-blocked:has(> .vipx-gate.bulk){display:block}
#kdb .vipx-blocked:has(> .vipx-gate.bulk) > :not(.vipx-gate){display:none}
#kdb .vipx-gate{border-radius:9px;border:1px solid rgba(255,176,32,.3);background:rgba(255,176,32,.05);box-shadow:none;backdrop-filter:none}
#kdb .vipx-gate .vipx-chain,#kdb .vipx-gate .vipx-bulk-chains{display:none}
#kdb .vipx-gate.bulk{position:relative;display:flex;align-items:center;gap:12px;flex-wrap:wrap;width:100%;padding:12px}
#kdb .vipx-bulk-qty span{display:block;font:700 9px/1 var(--knx-mono);letter-spacing:.16em;color:var(--knx-dim)}
#kdb .vipx-bulk-qty b{display:inline-flex;align-items:center;gap:6px;margin-top:6px;padding:6px 12px;border-radius:7px;border:1px solid var(--knx-ln2);background:var(--knx-bg);font:700 16px/1 var(--knx-mono);color:#fff}
#kdb .vipx-bulk-qty b svg{width:11px;height:11px;color:var(--knx-warn)}
#kdb .vipx-bulk-txt{flex:1;min-width:150px}
#kdb .vipx-bulk-txt b{display:flex;align-items:center;gap:6px;font:700 13px/1.2 var(--knx-font);color:var(--knx-warn)}
#kdb .vipx-bulk-txt b svg{width:13px;height:13px}
#kdb .vipx-bulk-txt p,#kdb .vipx-bulk-txt span{margin:4px 0 0;font:600 10px/1.4 var(--knx-mono);color:var(--knx-mut)}
#kdb .vipx-buy{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 12px;border-radius:7px;border:1px solid var(--knx-ln2);background:transparent;color:var(--knx-txt);font:700 9.5px/1 var(--knx-mono);letter-spacing:.1em;text-transform:uppercase;transition:background .15s,border-color .15s}
#kdb .vipx-buy:hover{background:#5865f2;border-color:#5865f2;color:#fff}
#kdb .vipx-buy svg{width:13px;height:13px;fill:currentColor}
#kdb .vipx-gate:not(.bulk){position:absolute;inset:0;z-index:5;display:grid;place-items:center;border-radius:inherit;background:rgba(5,7,11,.82)}
#kdb .vipx-gate-c{display:flex;flex-direction:column;align-items:center;gap:9px;padding:20px;text-align:center}
#kdb .vipx-gate-c .vipx-pad{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:4px;border:1px solid rgba(255,176,32,.4);background:rgba(255,176,32,.1);color:var(--knx-warn);font:700 9.5px/1 var(--knx-mono);letter-spacing:.12em;text-transform:uppercase}
#kdb .vipx-gate-c .vipx-pad svg{width:11px;height:11px}
#kdb .vipx-gate-c b{font:700 15px/1.2 var(--knx-font);color:#fff}
#kdb .vipx-gate-c p{margin:0;max-width:320px;font-size:12.5px;line-height:1.5;color:var(--knx-mut)}

/* output + history */
#kdb .keylist{display:grid;gap:5px;padding:8px;border:1px solid var(--knx-ln);border-radius:8px;background:var(--knx-bg)}
#kdb .keyitem,#kdb .key-out{padding:9px 11px;border:1px solid var(--knx-ln);border-radius:6px;background:var(--knx-p1);color:var(--knx-txt);font:500 12px/1.4 var(--knx-mono);word-break:break-all;cursor:pointer;transition:border-color .15s,background .15s}
#kdb .keyitem:hover,#kdb .key-out:hover{border-color:rgba(59,130,255,.5);background:rgba(59,130,255,.06)}
#kdb .gen-loading{color:var(--knx-mut)}
#kdb .gen-history{display:grid;gap:5px}
#kdb .gen-filter{display:flex;flex-wrap:wrap;gap:5px;margin:0 0 6px}
#kdb .gen-filter button{height:28px;padding:0 10px;border-radius:5px;border:1px solid var(--knx-ln2);background:var(--knx-bg);color:var(--knx-mut);font:700 9.5px/1 var(--knx-mono);letter-spacing:.08em;text-transform:uppercase;box-shadow:none}
#kdb .gen-filter button.active,#kdb .gen-filter button.on{border-color:rgba(59,130,255,.45);background:rgba(59,130,255,.12);color:var(--knx-ac2)}
#kdb .gen-history-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border:1px solid var(--knx-ln);border-radius:7px;background:var(--knx-bg);box-shadow:none;transition:border-color .15s}
#kdb .gen-history-item:hover{border-color:var(--knx-ln2)}
#kdb .gen-history-main{flex:1;min-width:0}
#kdb .gen-history-type{font:700 9.5px/1 var(--knx-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--knx-ac2)}
#kdb .gen-history-acc{margin-top:5px;font:500 12px/1.3 var(--knx-mono);color:var(--knx-txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#kdb .gen-history-time{font:600 10px/1 var(--knx-mono);color:var(--knx-dim)}
#kdb .gen-history-copy,#kdb .gen-history .btn{height:28px;padding:0 10px;border-radius:6px;border:1px solid var(--knx-ln2);background:transparent;color:var(--knx-mut);font:700 9px/1 var(--knx-mono);letter-spacing:.1em;text-transform:uppercase;box-shadow:none}
#kdb .gen-history-copy:hover,#kdb .gen-history .btn:hover{border-color:var(--knx-ln3);color:#fff}

/* ============================================================
   REDEEM
   ============================================================ */
#kdb .kdb-redeem{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:14px;align-items:stretch}
#kdb .kdb-keyslot{padding:24px 24px 22px 27px;border-color:var(--knx-ln2);overflow:hidden}
#kdb .kdb-keyslot::after{content:"";position:absolute;left:0;top:20px;bottom:20px;width:3px;border-radius:0 3px 3px 0;background:var(--knx-ac);box-shadow:0 0 12px var(--knx-ac)}
#kdb .kdb-keyslot .kdb-keyrow{margin-top:20px}
#kdb #dashRedeemKey{height:52px!important;font:600 16px var(--knx-mono)!important;letter-spacing:.1em;text-transform:uppercase;text-align:center}
#kdb .kdb-keyslot .kdb-keyrow .kdb-btn{height:52px;padding:0 22px}
#kdb .kdb-steps{display:grid;gap:8px;counter-reset:st}
#kdb .kdb-steps li{position:relative;display:grid;gap:4px;padding:14px 14px 14px 56px;border:1px solid var(--knx-ln);border-radius:10px;background:var(--knx-p1);counter-increment:st}
#kdb .kdb-steps li::before{content:"0" counter(st);position:absolute;left:14px;top:14px;padding:4px 6px;border-radius:4px;border:1px solid rgba(59,130,255,.3);background:rgba(59,130,255,.08);color:var(--knx-ac2);font:700 10px/1 var(--knx-mono)}
#kdb .kdb-steps b{font:700 13px/1.2 var(--knx-font);color:#fff}
#kdb .kdb-steps span{font-size:12.5px;line-height:1.5;color:var(--knx-mut)}
#kdb .kdb-table{border:1px solid var(--knx-ln);border-radius:9px;background:var(--knx-bg);overflow:auto}
#kdb .tbl{width:100%;border-collapse:collapse}
#kdb .tbl th{padding:11px 14px;border-bottom:1px solid var(--knx-ln);background:var(--knx-p1);text-align:left;font:700 9px/1 var(--knx-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--knx-dim)}
#kdb .tbl td{padding:12px 14px;border-bottom:1px solid var(--knx-ln);font:500 12.5px/1.3 var(--knx-mono);color:var(--knx-txt);white-space:nowrap}
#kdb .tbl tr:last-child td{border-bottom:0}
#kdb .tbl tbody tr:hover td{background:rgba(59,130,255,.04)}

/* ============================================================
   STREAK
   ============================================================ */
#kdb .kdb-streak{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:24px;align-items:center;padding:24px;border-color:var(--knx-ln2);overflow:hidden}
#kdb .kdb-streak::after{content:"";position:absolute;left:0;top:20px;bottom:20px;width:3px;border-radius:0 3px 3px 0;background:var(--knx-warn);box-shadow:0 0 12px var(--knx-warn)}
#kdb .kdb-streak-main{display:grid;justify-items:start;gap:4px}
#kdb .kdb-flame{display:grid;place-items:center;width:58px;height:58px;margin-bottom:10px;border-radius:13px;border:1px solid rgba(255,176,32,.4);background:rgba(255,176,32,.08);color:var(--knx-warn);box-shadow:0 0 0 5px rgba(255,176,32,.05),0 0 30px -6px rgba(255,176,32,.5)}
#kdb .kdb-flame svg{width:28px;height:28px}
#kdb .kdb-flame.cold{border-color:var(--knx-ln2);background:var(--knx-p2);color:var(--knx-dim);box-shadow:none}
#kdb .kdb-streak-n{display:flex;align-items:baseline;gap:10px}
#kdb #streakCount{font:700 60px/1 var(--knx-mono);letter-spacing:-.05em;color:#fff}
#kdb .kdb-streak-n em{font:700 11px/1 var(--knx-mono);font-style:normal;letter-spacing:.16em;text-transform:uppercase;color:var(--knx-mut)}
#kdb .kdb-streak-main .kdb-sub{margin:4px 0 14px}
#kdb .kdb-track{padding:18px;border:1px solid var(--knx-ln);border-radius:10px;background:var(--knx-bg)}
#kdb .kdb-track-h{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
#kdb #streakNextTxt{font:600 10.5px/1.3 var(--knx-mono);color:var(--knx-mut);text-align:right}
#kdb .kdb-miles{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;margin-top:14px}
#kdb .streak-mile{display:grid;gap:4px;padding:9px 6px;border:1px solid var(--knx-ln2);border-radius:7px;background:var(--knx-p1);text-align:center}
#kdb .streak-mile b{font:700 10px/1 var(--knx-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--knx-mut)}
#kdb .streak-mile em{font:700 9px/1 var(--knx-mono);font-style:normal;color:var(--knx-dim)}
#kdb .streak-mile.reached{border-color:rgba(255,176,32,.45);background:rgba(255,176,32,.08)}
#kdb .streak-mile.reached b,#kdb .streak-mile.reached em{color:var(--knx-warn)}
#kdb .kdb-how{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
#kdb .kdb-how > div{display:grid;gap:7px;align-content:start;padding:14px;border:1px solid var(--knx-ln);border-radius:9px;background:var(--knx-bg)}
#kdb .kdb-how .kdb-ic{margin-bottom:4px}
#kdb .kdb-how b{font:700 13px/1.2 var(--knx-font);color:#fff}
#kdb .kdb-how p{font-size:12.5px;line-height:1.5;color:var(--knx-mut)}

/* ============================================================
   RANKS
   ============================================================ */
#kdb .kdb-lb{display:grid;gap:5px}
#kdb .lb-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--knx-ln);border-radius:8px;background:var(--knx-bg);box-shadow:none}
#kdb .lb-row.me{border-color:rgba(59,130,255,.5);background:rgba(59,130,255,.07)}
#kdb .lb-rank{display:grid;place-items:center;width:32px;height:32px;border-radius:7px;border:1px solid var(--knx-ln2);background:var(--knx-p2);color:var(--knx-mut);font:700 12px/1 var(--knx-mono);box-shadow:none}
#kdb .lb-rank.gold,#kdb .lb-rank.r1{border-color:rgba(255,176,32,.5);background:rgba(255,176,32,.12);color:var(--knx-warn)}
#kdb .lb-rank.silver,#kdb .lb-rank.r2{border-color:rgba(200,210,230,.4);color:#d5dcea}
#kdb .lb-rank.bronze,#kdb .lb-rank.r3{border-color:rgba(220,140,80,.45);color:#e6a06b}
#kdb .lb-mid{min-width:0}
#kdb .lb-user{font:700 13px/1.2 var(--knx-font);color:#fff}
#kdb .lb-you{margin-left:6px;padding:1px 5px;border-radius:3px;background:var(--knx-ac);color:#fff;font:700 8px/1.4 var(--knx-mono);letter-spacing:.1em}
#kdb .lb-bar{height:4px;margin-top:6px;border-radius:2px;background:var(--knx-p3);overflow:hidden}
#kdb .lb-bar span{display:block;height:100%;border-radius:2px;background:var(--knx-ac)}
#kdb .lb-count{font:700 14px/1 var(--knx-mono);color:#fff}
#kdb .lb-count em{margin-left:4px;font-style:normal;font-size:9.5px;color:var(--knx-dim)}

/* ============================================================
   SETTINGS
   ============================================================ */
#kdb .kdb-set{border:1px solid var(--knx-ln);border-radius:var(--r);background:var(--knx-p1);overflow:hidden}
#kdb .kdb-row{position:relative;display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr);gap:28px;padding:22px}
#kdb .kdb-row + .kdb-row{border-top:1px solid var(--knx-ln)}
#kdb .kdb-row-l h3{display:flex;align-items:center;font:700 14.5px/1.2 var(--knx-font);color:#fff}
#kdb .kdb-row-l p{margin-top:7px;font-size:13px;line-height:1.55;color:var(--knx-mut)}
#kdb .kdb-row-r{display:grid;gap:12px;align-content:start;min-width:0}
#kdb .kdb-row-r > .kdb-btn{justify-self:start}
#kdb .kdb-row-r .kdb-keyrow{margin-top:0}
#kdb .kdb-row-r .kdb-help{margin-top:0}
#kdb .kdb-tfa{display:grid;gap:12px;padding:14px;border:1px solid var(--knx-ln);border-radius:9px;background:var(--knx-bg)}
#kdb .kdb-tfa.hidden{display:none}
#kdb .kdb-tfa p{font-size:12.5px;color:var(--knx-mut)}
#kdb .kdb-secret{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--knx-ln2);border-radius:8px;background:var(--knx-p1)}
#kdb .kdb-secret code{border:0;background:none;padding:0;font-size:13px;letter-spacing:.12em;color:#fff;word-break:break-all}
#kdb .kdb-secret .kdb-mini{margin-left:auto}
#kdb #tfaVerifyCode{max-width:150px;text-align:center;font:700 16px var(--knx-mono)!important;letter-spacing:.3em}
#kdb .kdb-sessions{display:grid;gap:6px}
#kdb .session-row{display:flex;align-items:center;gap:11px;padding:10px 11px;border:1px solid var(--knx-ln);border-radius:8px;background:var(--knx-bg)}
#kdb .session-icon-box{display:grid;place-items:center;width:32px;height:32px;flex-shrink:0;border-radius:7px;border:1px solid var(--knx-ln2);background:var(--knx-p2);color:var(--knx-mut)}
#kdb .session-icon-box svg{width:15px;height:15px}
#kdb .session-details{flex:1;min-width:0}
#kdb .session-device-name{font:700 13px/1.2 var(--knx-font);color:#fff}
#kdb .session-meta{margin-top:3px;font:600 10px/1.3 var(--knx-mono);color:var(--knx-dim)}
#kdb .session-current-tag{margin-left:6px;padding:1px 5px;border-radius:3px;border:1px solid rgba(45,212,160,.35);background:rgba(45,212,160,.08);color:var(--knx-ok);font:700 8px/1.4 var(--knx-mono);letter-spacing:.1em;text-transform:uppercase}
#kdb .btn-session-logout{height:28px;padding:0 10px;border-radius:6px;border:1px solid var(--knx-ln2);background:transparent;color:var(--knx-mut);font:700 9px/1 var(--knx-mono);letter-spacing:.1em;text-transform:uppercase;box-shadow:none}
#kdb .btn-session-logout:hover{border-color:rgba(255,93,108,.5);background:rgba(255,93,108,.07);color:var(--knx-bad)}
#kdb .sessions-empty{font-size:13px;color:var(--knx-dim)}
#kdb .kdb-wh{min-height:170px}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1120px){
  #kdb .kdb-meters{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr))}
  #kdb .kdb-meter + .kdb-meter{border-left:0}
  #kdb .kdb-meter:nth-child(n){border-bottom:1px solid var(--knx-ln)}
  #kdb .kdb-meter:nth-child(even){border-left:1px solid var(--knx-ln)}
  #kdb .kdb-gen{grid-template-columns:290px minmax(0,1fr)}
  #kdb .kdb-how{grid-template-columns:repeat(2,minmax(0,1fr))}
  #kdb .kdb-miles{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:900px){
  #kdb .kdb-gen,#kdb .kdb-g-82,#kdb .kdb-redeem,#kdb .kdb-streak{grid-template-columns:minmax(0,1fr)}
  #kdb .kdb-g-55{grid-auto-flow:row}
  #kdb .kdb-plats{position:static;max-height:none;overflow:visible}
  #kdb .kdb-row{grid-template-columns:minmax(0,1fr);gap:14px}
}
@media (max-width:600px){
  #kdb .kdb-tab span{display:none}
  #kdb .kdb-tab{padding:0 12px}
  #kdb .kdb2-me-t span{display:none}
  #kdb .kdb-meter{min-height:112px;padding:13px}
  #kdb .kdb-meter strong{font-size:26px}
  #kdb .kdb-kv{grid-template-columns:repeat(2,minmax(0,1fr))}
  #kdb .kdb-kv > div{border-right:1px solid var(--knx-ln)!important;border-bottom:1px solid var(--knx-ln)!important}
  #kdb .kdb-kv > div:nth-child(2n){border-right:0!important}
  #kdb .kdb-kv > div:nth-last-child(-n+2){border-bottom:0!important}
  #kdb .gi-limlegend{grid-template-columns:1fr}
  #kdb .kdb-genhead{padding:18px 16px 18px 19px}
  #kdb .kdb-slots{width:100%}
  #kdb .kdb-dial{width:96px;height:96px}
  #kdb .kdb-dial strong{font-size:26px}
  #kdb .kdb-amount{grid-template-columns:minmax(0,1fr)}
  #kdb .kdb-2{grid-template-columns:1fr}
  #kdb .kdb-how{grid-template-columns:1fr}
  #kdb .kdb-keyrow{flex-wrap:wrap}
  #kdb .kdb-keyslot .kdb-keyrow .kdb-btn{width:100%}
  #kdb .kdb-status{gap:12px;padding:0 12px}
}
