:root{
  --bg:#ffffff; --fg:#111111; --dim:#767676; --line:#d8d8d8;
  --soft:#f4f4f4; --good:#1a7f4b; --bad:#b3261e; --accent:#111111;
}
.sd{display:inline-block;width:8px;height:8px;border-radius:50%;margin:0 3px 0 10px}
.sd.v{background:#e5484d}.sd.h{background:#3b82f6}.sd.b{background:#a855f7}
.lg{white-space:nowrap}
body.dark{
  --bg:#0d0d0d; --fg:#f2f2f2; --dim:#8a8a8a; --line:#2e2e2e;
  --soft:#191919; --good:#4ade80; --bad:#f87171; --accent:#f2f2f2;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--fg);font-family:'Inter',sans-serif;
  min-height:100vh;display:flex;flex-direction:column;align-items:center;
  padding:22px 16px 60px;transition:background .2s,color .2s}
.wrap{width:100%;max-width:460px}

/* header */
.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
h1{font-size:19px;font-weight:700;letter-spacing:-.3px}
.icon{background:none;border:1px solid var(--line);color:var(--fg);width:32px;height:32px;
  border-radius:8px;cursor:pointer;font-size:13px;line-height:1}
.sub{color:var(--dim);font-size:12px;margin-bottom:18px}

/* difficulty */
.tiers{display:flex;gap:6px;margin-bottom:20px}
.tier{flex:1;background:none;border:1px solid var(--line);color:var(--dim);
  padding:8px;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;
  text-transform:capitalize}
.tier.on{background:var(--accent);color:var(--bg);border-color:var(--accent)}

.scaleRow{display:flex;align-items:center;gap:10px;margin:-8px 0 18px;font-size:12px;color:var(--dim)}
.scaleRow input{flex:1;accent-color:var(--fg)}
.scaleRow b{min-width:30px;text-align:right;color:var(--fg);font-variant-numeric:tabular-nums}
.scaleLbl{white-space:nowrap}

/* goal */
.goal{border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:20px;
  display:flex;align-items:center;justify-content:space-between;gap:10px}
.goal .end{font-weight:700;font-size:14px;flex:1}
.goal .end.r{text-align:right}
.goal .to{color:var(--dim);font-size:11px;white-space:nowrap}
.par{text-align:center;color:var(--dim);font-size:12px;margin-top:8px}
.par b{color:var(--fg)}

/* THE CHAIN */
.chain{margin-bottom:20px}
.node{display:flex;align-items:center;gap:11px}
.dot{width:11px;height:11px;border-radius:50%;background:var(--fg);flex-shrink:0}
.dot.open{background:none;border:2px solid var(--line);width:11px;height:11px}
.dot.goal{background:none;border:2px solid var(--fg)}
.nm{font-weight:600;font-size:15px;padding:5px 0}
.nm.goalname{color:var(--dim)}
.stem{margin-left:5px;border-left:1px solid var(--line);padding:5px 0 5px 16px;min-height:26px;
  display:flex;align-items:center}
.stem.dashed{border-left-style:dashed}
.lk{font-size:12px;color:var(--dim);background:var(--soft);padding:3px 9px;border-radius:20px}
.rm{margin-left:8px;background:none;border:none;color:var(--dim);cursor:pointer;font-size:13px;padding:0 3px}
.rm:hover{color:var(--bad)}

/* toggles */
.opts{display:flex;gap:14px;justify-content:center;margin-bottom:18px}
.opt{display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none;
  font-size:12px;color:var(--dim)}
.opt input{display:none}
.sw{width:30px;height:17px;border:1px solid var(--line);border-radius:20px;
  position:relative;transition:background .18s,border-color .18s;flex-shrink:0}
.sw::after{content:'';position:absolute;top:2px;left:2px;width:11px;height:11px;
  border-radius:50%;background:var(--dim);transition:transform .18s,background .18s}
.opt input:checked + .sw{background:var(--accent);border-color:var(--accent)}
.opt input:checked + .sw::after{transform:translateX(13px);background:var(--bg)}
.opt input:checked ~ .lbl{color:var(--fg);font-weight:600}

/* rich villain card (when info toggle is on) */
.card{display:flex;gap:11px;align-items:center;padding:6px 0}
.card img{width:46px;height:46px;object-fit:contain;border-radius:8px;
  background:var(--soft);flex-shrink:0}
.card .noimg{width:46px;height:46px;border-radius:8px;background:var(--soft);
  flex-shrink:0;display:flex;align-items:center;justify-content:center;
  color:var(--dim);font-size:15px;font-weight:700}
.card .meta{min-width:0}
.card .cn{font-weight:600;font-size:15px;line-height:1.25}
.card .cs{color:var(--dim);font-size:11px;margin-top:1px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card .ct{color:var(--dim);font-size:11px;margin-top:1px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card.goalcard .cn{color:var(--dim)}
.card a{color:var(--dim);font-size:11px;text-decoration:none;margin-left:auto;flex-shrink:0}
.card a:hover{color:var(--fg);text-decoration:underline}

/* suggestion thumbnails */
.s img{width:26px;height:26px;object-fit:contain;border-radius:5px;background:var(--soft);flex-shrink:0}
.s .sleft{display:flex;align-items:center;gap:8px;min-width:0}
.s .snm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* browse thumbnails */
.brow img{width:24px;height:24px;object-fit:contain;border-radius:5px;
  background:var(--soft);flex-shrink:0;margin-right:8px}
.brow .bleft{display:flex;align-items:center;min-width:0}

/* clickable images */
.card img,.s img,.brow img{cursor:zoom-in}

/* LIGHTBOX */
.lb{position:fixed;inset:0;background:#000000e0;z-index:70;display:none;
  align-items:center;justify-content:center;padding:24px;cursor:zoom-out}
.lb.open{display:flex;animation:fade .16s ease-out}
@keyframes fade{from{opacity:0}to{opacity:1}}
.lbox{background:var(--bg);border:1px solid var(--line);border-radius:14px;
  max-width:min(420px,94vw);max-height:90vh;overflow-y:auto;cursor:default;
  animation:zin .18s cubic-bezier(.2,.9,.3,1)}
@keyframes zin{from{transform:scale(.92);opacity:0}to{transform:none;opacity:1}}
.lbox img{width:100%;max-height:380px;object-fit:contain;display:block;
  background:var(--soft);border-radius:14px 14px 0 0}
.lbox .noimg{width:100%;height:200px;border-radius:14px 14px 0 0;background:var(--soft);
  display:flex;align-items:center;justify-content:center;color:var(--dim);
  font-size:44px;font-weight:700}
.lbb{padding:16px 18px 18px}
.lbb h3{font-size:18px;font-weight:700;line-height:1.25}
.lbb .lseries{color:var(--dim);font-size:12px;margin-top:2px}
.lbf{margin-top:12px}
.lbf .k{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--dim);
  margin-bottom:2px;font-weight:600}
.lbf .v{font-size:13px;line-height:1.5}
.lbact{display:flex;gap:8px;margin-top:16px}
.lbact a,.lbact button{flex:1;text-align:center;text-decoration:none;
  border:1px solid var(--line);color:var(--fg);background:none;padding:9px;
  border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit}
.lbact .solid{background:var(--accent);color:var(--bg);border-color:var(--accent)}
.lbact a:hover,.lbact button:hover{border-color:var(--fg)}

/* input */
.field{position:relative;margin-bottom:10px}
input{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--fg);
  padding:12px;border-radius:9px;font-size:14px;outline:none;font-family:inherit}
input:focus{border-color:var(--fg)}
#sug{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:var(--bg);
  border:1px solid var(--line);border-radius:9px;max-height:220px;overflow-y:auto;
  z-index:10;display:none}
#sug.open{display:block}
.s{padding:9px 12px;font-size:13px;cursor:pointer;display:flex;justify-content:space-between;gap:8px}
.s:hover,.s.on{background:var(--soft)}
.s .sm{color:var(--dim);font-size:11px}

.acts{display:flex;gap:8px}
.btn{flex:1;background:none;border:1px solid var(--line);color:var(--fg);padding:10px;
  border-radius:9px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}
.btn.solid{background:var(--accent);color:var(--bg);border-color:var(--accent)}
.msg{text-align:center;font-size:13px;margin-top:12px;min-height:18px}
.msg.err{color:var(--bad)}
.msg.ok{color:var(--good)}

/* browse */
.browse{border:1px solid var(--line);border-radius:10px;margin-top:12px;
  max-height:260px;overflow-y:auto;display:none}
.browse.open{display:block}
.bh{padding:10px 12px;font-size:11px;color:var(--dim);border-bottom:1px solid var(--line);
  position:sticky;top:0;background:var(--bg);text-transform:uppercase;letter-spacing:.5px}
.brow{padding:9px 12px;font-size:13px;cursor:pointer;display:flex;justify-content:space-between}
.brow:hover{background:var(--soft)}
.brow .c{color:var(--dim);font-size:11px}

/* side options panel */
#gear{position:relative}
#panelBg{position:fixed;inset:0;background:#00000055;z-index:45;display:none}
#panelBg.open{display:block}
#panel{position:fixed;top:0;right:-320px;width:300px;height:100vh;background:var(--bg);
  border-left:1px solid var(--line);z-index:46;transition:right .25s cubic-bezier(.2,.8,.3,1);
  overflow-y:auto;padding:18px 16px 30px}
#panel.open{right:0}
#panel h3{font-size:14px;font-weight:700;margin-bottom:14px;display:flex;justify-content:space-between;align-items:center}
#panel h3 button{background:none;border:1px solid var(--line);color:var(--dim);width:26px;height:26px;border-radius:7px;cursor:pointer}
.pSec{border-top:1px solid var(--line);padding:13px 0}
.pSec .pT{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--dim);margin-bottom:9px;font-weight:600}
.pSec select{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--fg);
  padding:8px;border-radius:8px;font-size:13px;font-family:inherit}
.pRow{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--dim);margin:8px 0}
.pRow input[type=range]{flex:1;accent-color:var(--fg)}
.pRow b{min-width:26px;text-align:right;color:var(--fg);font-variant-numeric:tabular-nums}
.pRow label{display:flex;align-items:center;gap:7px;cursor:pointer;color:var(--fg)}
#banSearch{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--fg);
  padding:8px;border-radius:8px;font-size:12px;margin-bottom:6px;font-family:inherit}
#serList{max-height:190px;overflow-y:auto;border:1px solid var(--line);border-radius:8px}
.serRow{display:flex;align-items:center;gap:7px;padding:6px 9px;border-bottom:1px solid var(--line);font-size:12px}
.serRow:last-child{border-bottom:none}
.serRow .sn{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.serRow .sc{color:var(--dim);font-size:10px}
.serBtns{display:flex;gap:6px;margin:6px 0}
.serBtns button{flex:1;background:none;border:1px solid var(--line);color:var(--fg);
  padding:6px;border-radius:7px;font-size:11px;cursor:pointer;font-family:inherit}
#serCount{font-size:11px;color:var(--dim);margin:4px 0 6px}
.csWrap{position:relative;margin-bottom:6px}
.csWrap input{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--fg);
  padding:8px 10px;border-radius:8px;font-size:12px;outline:none;font-family:inherit}
.csWrap input:focus{border-color:var(--fg)}
.csSug{position:absolute;top:100%;left:0;right:0;margin-top:3px;background:var(--bg);
  border:1px solid var(--line);border-radius:8px;max-height:150px;overflow-y:auto;z-index:60;display:none}
.csSug.open{display:block}
.csSug div{padding:7px 10px;font-size:12px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.csSug div:hover{background:var(--soft)}
.helpB{font-size:13px}
.helpSec{margin-bottom:16px}
.helpSec h4{font-size:13px;font-weight:700;margin-bottom:5px}
.helpSec p,.helpSec li{font-size:13px;line-height:1.65;color:var(--fg)}
.helpSec ul{padding-left:18px;margin-top:4px}
.helpSec .ex{background:var(--soft);border:1px solid var(--line);border-radius:8px;
  padding:9px 12px;font-size:12px;line-height:1.7;margin:6px 0}
.helpSec .dimtx{color:var(--dim)}
/* series row: non-generic class names (short ones like .sn get hidden by
   ad-blocker cosmetic filters) + forced color */
.serRow .serName{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg)!important}
.serRow .serCt{color:var(--dim);font-size:10px}
/* ---- ODD ONE OUT ---- */
body.oddmode .goal,body.oddmode .par,body.oddmode .chain,body.oddmode .field,
body.oddmode .acts,body.oddmode .tiers,body.oddmode .scaleRow,body.oddmode #browse{display:none}
#oddSec{display:none}
body.oddmode #oddSec{display:block}
.oddTiers{display:flex;gap:6px;margin-bottom:10px}
.oddTiers .tier{flex:1}
.oddCustom{display:none;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.oddCustom.show{display:flex}
.oddCustom label{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--dim)}
.oddCustom input{width:52px;background:var(--bg);border:1px solid var(--line);color:var(--fg);
  padding:6px;border-radius:7px;font-size:12px;text-align:center;font-family:inherit}
#oddStreak{font-size:12px;color:var(--dim);text-align:center;margin-bottom:14px;font-variant-numeric:tabular-nums}
#oddStreak b{color:var(--fg)}
#oddCards{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-bottom:12px}
.oddCard{background:var(--bg);border:1px solid var(--line);border-radius:11px;padding:10px 8px;
  cursor:pointer;text-align:center;transition:transform .1s,border-color .15s;font-family:inherit;color:var(--fg)}
.oddCard:hover{border-color:var(--fg);transform:translateY(-2px)}
.oddCard img{width:100%;height:110px;object-fit:contain;border-radius:8px;background:var(--soft);margin-bottom:7px}
body.bigimg .oddCard img,body.bigimg .oddCard .noimg{height:180px}
body.bigimg .card img,body.bigimg .card .noimg{width:78px;height:78px;font-size:20px}
/* settings sections scoped by mode */
body.oddmode .chainOnly{display:none}
body:not(.oddmode) .oddOnly{display:none}
.oddCard .noimg{width:100%;height:110px;border-radius:8px;background:var(--soft);display:flex;
  align-items:center;justify-content:center;color:var(--dim);font-size:22px;font-weight:700;margin-bottom:7px}
.oddCard .on{font-weight:600;font-size:12px;line-height:1.25}
.oddCard .os{color:var(--dim);font-size:10px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.oddCard.good{border-color:var(--good);box-shadow:0 0 0 1px var(--good)}
.oddCard.bad{border-color:var(--bad);box-shadow:0 0 0 1px var(--bad)}
.oddCard.reveal{border-color:var(--good)}
.oddCard:disabled{cursor:default;transform:none}
#oddInfo{font-size:12px;color:var(--dim);text-align:center;margin-bottom:10px;line-height:1.6;min-height:16px}
#oddInfo .lk{font-size:11px}
#oddNext{display:none;width:100%}
#oddNext.show{display:block}
#banList{max-height:190px;overflow-y:auto;border:1px solid var(--line);border-radius:8px}
.banRow{display:flex;justify-content:space-between;align-items:center;padding:6px 9px;
  font-size:12px;border-bottom:1px solid var(--line);gap:6px}
.banRow:last-child{border-bottom:none}
.banRow .bn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.banRow .bc{color:var(--dim);font-size:10px;flex-shrink:0}
.banRow button{background:none;border:1px solid var(--line);color:var(--dim);border-radius:6px;
  padding:2px 8px;font-size:11px;cursor:pointer;flex-shrink:0}
.banRow.banned .bn{text-decoration:line-through;color:var(--dim)}
.banRow.banned button{border-color:var(--bad);color:var(--bad)}
.pNote{font-size:11px;color:var(--dim);line-height:1.5;margin-top:6px}
.pClear{width:100%;margin-top:8px;background:none;border:1px solid var(--line);color:var(--dim);
  padding:7px;border-radius:8px;font-size:12px;cursor:pointer;font-family:inherit}

/* daily */
.tier.daily.on{background:var(--fg)}
.dailyDone{font-size:12px;color:var(--good);text-align:center;margin-top:4px}

/* result */
.mbg{position:fixed;inset:0;background:#00000099;z-index:50;display:none;
  align-items:center;justify-content:center;padding:20px}
body.dark .mbg{background:#000000cc}
.mbg.open{display:flex}
.modal{background:var(--bg);border:1px solid var(--line);border-radius:14px;
  width:min(420px,95vw);padding:22px;max-height:86vh;overflow-y:auto}
.modal h2{font-size:20px;margin-bottom:2px}
.modal .rs{color:var(--dim);font-size:13px;margin-bottom:16px}
.optimal{border-top:1px solid var(--line);margin-top:16px;padding-top:14px}
.optimal h4{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--dim);margin-bottom:8px}
#overlay{position:fixed;inset:0;background:var(--bg);z-index:60;display:flex;
  align-items:center;justify-content:center;padding:20px}
#overlay.hidden{display:none}
.drop{border:1px dashed var(--line);border-radius:12px;padding:36px;text-align:center;max-width:400px}
.drop p{color:var(--dim);font-size:13px;margin:8px 0 16px;line-height:1.6}



.menuLink {
    display: block;
    padding: 10px 12px;
    margin-top: 8px;
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: 8px;
    color: var(--fg);
    text-decoration: none;
    font-size: 13px;
    transition: background .15s, border-color .15s;
}

.menuLink:hover {
    background: var(--panel);
    border-color: var(--accent);
}