:root{--bg:#0b0e14;--card:#141925;--line:#222a3a;--text:#e6e9f0;--mute:#8a93a6;--accent:#7c5cff;--accent2:#22d3a6;--bad:#ff5c72;--warn:#ffb020}
*{box-sizing:border-box}
body{margin:0;background:radial-gradient(1200px 600px at 80% -10%,#1a1440 0,transparent 60%),var(--bg);color:var(--text);font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;min-height:100vh}
.wrap{max-width:960px;margin:0 auto;padding:1.25rem 1rem 3rem}
.brand{display:flex;align-items:center;gap:.6rem;font-weight:700;letter-spacing:.2px}
.logo{width:36px;height:36px;display:block;filter:drop-shadow(0 4px 14px #7c5cff66)}
.center{min-height:100vh;display:grid;place-items:center;padding:1rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:1.5rem;box-shadow:0 10px 40px #0006}
.login{width:100%;max-width:380px}
.login h1{font-size:1.4rem;margin:1rem 0 .25rem}
.sub{color:var(--mute);margin:0 0 1.25rem;font-size:.95rem}
label{display:block;font-size:.85rem;color:var(--mute);margin:.9rem 0 .3rem}
input{width:100%;padding:.75rem .9rem;border-radius:10px;border:1px solid var(--line);background:#0e121b;color:var(--text);font-size:1rem}
input:focus{outline:2px solid var(--accent);border-color:transparent}
button,.btn{display:inline-block;width:100%;margin-top:1.2rem;padding:.8rem;border:0;border-radius:10px;background:linear-gradient(135deg,var(--accent),#5b8cff);color:#fff;font-weight:600;font-size:1rem;cursor:pointer;text-align:center;text-decoration:none}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--mute);width:auto;margin:0;padding:.4rem .8rem;font-size:.85rem}
.err{background:#3a1620;border:1px solid #6b2433;color:#ffb3c0;padding:.6rem .8rem;border-radius:10px;font-size:.9rem;margin-bottom:.5rem}
header.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.9rem;margin-bottom:1.2rem}
.stat .n{font-size:1.8rem;font-weight:700}
.stat .l{color:var(--mute);font-size:.85rem}
h2{font-size:1.05rem;margin:0 0 .8rem}
table{width:100%;border-collapse:collapse;font-size:.92rem}
th,td{text-align:left;padding:.55rem .4rem;border-bottom:1px solid var(--line)}
th{color:var(--mute);font-weight:500;font-size:.8rem}
.empty{color:var(--mute);text-align:center;padding:1.6rem 0}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:.4rem}
.ok{background:var(--accent2)}.bad{background:var(--bad)}.warn{background:var(--warn)}
.pill{display:inline-block;padding:.1rem .55rem;border-radius:99px;font-size:.78rem;border:1px solid var(--line);color:var(--mute)}
.login .logo{width:44px;height:44px}
.bar{display:flex;justify-content:space-between;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:.6rem}
.bar h2{margin:0}
.tabs{display:flex;gap:.3rem;flex-wrap:wrap}
.tab{padding:.25rem .7rem;border-radius:99px;border:1px solid var(--line);color:var(--mute);text-decoration:none;font-size:.82rem}
.tab.on{background:var(--accent);border-color:var(--accent);color:#fff}
.tscroll{overflow-x:auto}
table.tok th a{color:var(--mute);text-decoration:none}table.tok th a.on{color:var(--text)}
tr.click{cursor:pointer}tr.click:hover{background:#ffffff08}
.tk{display:flex;align-items:center;gap:.6rem}.av{position:relative;width:32px;height:32px;border-radius:50%;flex:none;overflow:hidden;display:grid;place-items:center;background:hsl(var(--h) 45% 28%);color:hsl(var(--h) 80% 85%);font-size:.85rem}
.av b{font-weight:700}
.av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#222a3a}
.tk b{line-height:1.2}.tk small{display:block;color:var(--mute);font-size:.78rem}
.tk.big .av{width:52px;height:52px;font-size:1.3rem}.tk.big b{font-size:1.3rem}
.age.fresh{color:var(--accent2);font-weight:600}
.score{display:inline-block;min-width:2.4rem;text-align:center;padding:.15rem .5rem;border-radius:8px;font-weight:700;border:1px solid var(--line)}
.score.ok{background:#0b3a2d;color:#7dffd0;border-color:#1fae86}
.score.warn{background:#3d2f0a;color:#ffd04d;border-color:#a67c10}
.score.bad{background:#40121d;color:#ff8da1;border-color:#a8344c}
.score.mute{color:var(--mute)}.score.big{font-size:1.6rem;padding:.3rem .8rem}
.vd{color:var(--mute);font-size:.75rem}
.pill.okp{color:var(--accent2);border-color:#14614f}.pill.badp{color:var(--bad);border-color:#6b2433}
code.cp{display:block;background:#0e121b;border:1px solid var(--line);border-radius:8px;padding:.5rem .7rem;margin:.4rem 0;font-size:.8rem;word-break:break-all;user-select:all}
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.8rem;margin:1rem 0}
.kv span{display:block;color:var(--mute);font-size:.78rem}
.links a{margin-right:.9rem;color:var(--accent2);text-decoration:none;font-size:.9rem}
h3{font-size:.85rem;color:var(--mute);margin:1rem 0 .2rem;text-transform:uppercase;letter-spacing:.05em}
td.r{text-align:right;white-space:nowrap}td.mute{color:var(--mute);font-size:.85rem}
a{color:inherit}
.grid{grid-template-columns:repeat(2,1fr)}
@media(min-width:760px){.grid{grid-template-columns:repeat(4,1fr)}}
.card.stat{padding:1rem 1.1rem}
.stat .n{font-size:1.6rem;line-height:1.2}
.empty{white-space:normal}
@media(max-width:640px){
  .wrap{padding:1rem .75rem 2.5rem}
  .card{padding:1.1rem}
}
.more{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-top:.8rem;color:var(--mute);font-size:.85rem}
.more .btn{margin:0}
details.card>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between}
details.card>summary::-webkit-details-marker{display:none}
details.card>summary::after{content:'▾';color:var(--mute)}
details.card[open]>summary::after{content:'▴'}
details.card[open]>summary{margin-bottom:.8rem}
.spark{display:flex;align-items:flex-end;gap:2px;height:46px;margin-bottom:.2rem}
.spark i{flex:1;border-radius:2px;background:var(--line)}
.spark i.g{background:var(--accent2)}.spark i.y{background:var(--warn)}.spark i.r{background:#ff5c7266}
.spark-l{display:flex;justify-content:space-between;color:var(--mute);font-size:.72rem;margin-bottom:1rem}

/* Bewertung untereinander: Zahl oben, Urteil darunter */
td.rate{text-align:right;white-space:nowrap}
td.rate .score{display:inline-block}
td.rate .vd{display:block;margin-top:.15rem;line-height:1.1}

/* Mobil: jede Zeile = Token + Bewertung, darunter eine kompakte Kennzahlen-Zeile */
@media(max-width:640px){
  table.tok,table.tok tbody{display:block}
  table.tok thead{display:none}
  table.tok tr.click{display:flex;flex-wrap:wrap;align-items:center;column-gap:12px;row-gap:.15rem;padding:.6rem 0;border-bottom:1px solid var(--line)}
  table.tok td{border:0;padding:0}
  table.tok td:first-child{order:1;flex:1 1 0;min-width:0}
  table.tok td.rate{order:2;flex:0 0 auto}
  table.tok td.brk{display:block;order:3;flex:0 0 100%;height:0;padding:0}
  table.tok td[data-l]{order:4;font-size:.8rem;white-space:nowrap}
  table.tok td[data-l]::before{content:attr(data-l) " ";color:var(--mute);font-size:.72rem}
  table.tok tbody tr:has(td.empty){display:block}
  .tk b{font-size:.98rem}.tk small{font-size:.74rem}
  .tk .av{width:28px;height:28px;font-size:.78rem}
}

.acts{display:flex;gap:.5rem;align-items:center}
.acts .btn{margin:0;white-space:nowrap}
@keyframes sp{to{transform:rotate(360deg)}}
#refresh .ri{display:inline-block}
#refresh.spin .ri{animation:sp .7s linear infinite}
@media(max-width:420px){#refresh .rt{display:none}}

.rbtn{display:inline-grid;place-items:center;width:30px;height:30px;margin:0 .3rem 0 .5rem;border-radius:50%;border:1px solid var(--line);color:var(--mute);text-decoration:none;font-size:1rem;vertical-align:middle}
.rbtn:hover{color:var(--text);border-color:var(--accent)}
.rbtn.spin .ri{animation:sp .7s linear infinite}

a.tile{display:block;text-decoration:none;color:inherit;transition:border-color .15s}
a.tile:hover,a.tile:active{border-color:var(--accent)}
html{scroll-behavior:smooth}#tokens,#pings{scroll-margin-top:.8rem}
.chain{display:inline-block;font-size:.62rem;font-weight:700;letter-spacing:.04em;padding:.05rem .35rem;border-radius:5px;vertical-align:middle;border:1px solid var(--line);color:var(--mute)}
.chain.sol{color:#b89cff;border-color:#4a3a8a;background:#1c1636}
.chain.eth{color:#9fb4ff;border-color:#34437a;background:#161c33}
.chain.base{color:#6aa8ff;border-color:#2a4f8a;background:#12203a}
h2 a.hl{color:inherit;text-decoration:none}
.pg{display:grid;grid-template-columns:96px 1fr;gap:.9rem;align-items:start}
.rail{display:flex;flex-direction:column;gap:.15rem;position:sticky;top:.8rem}
.rail a{display:grid;grid-template-columns:1fr;gap:.1rem;padding:.45rem .5rem .5rem;border-radius:10px;text-decoration:none;color:var(--mute);font-size:.8rem;position:relative}
.rail a i{display:block;height:3px;border-radius:2px;background:#ffffff40}
.rail a small{font-size:.68rem;opacity:.7}
.rail a.on{color:#fff;background:#ffffff0d}
.rail a.on i{background:var(--warn);height:4px}
.rail a.on span{color:var(--warn);font-weight:600}
.pgc{min-width:0}
.pscroll{max-height:62vh;overflow-y:auto}
@media(max-width:480px){.pg{grid-template-columns:78px 1fr;gap:.6rem}.rail a{padding:.4rem .3rem;font-size:.74rem}.pgc{padding:1rem .8rem}th,td{padding:.45rem .25rem}}
.sess{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:.6rem 0;border-bottom:1px solid var(--line)}
.sess:last-child{border-bottom:0}
small.meta{display:block;color:var(--mute);font-size:.76rem;margin-top:.1rem}
/* Tagesauswahl: durchscrollbar mit Einrasten */
.rail{max-height:72vh;overflow-y:auto;scroll-snap-type:y proximity;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:none;
  -webkit-mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent);padding:.9rem 0}
.rail::-webkit-scrollbar{display:none}
.rail a{scroll-snap-align:center;flex:none}
#logo{touch-action:manipulation;-webkit-user-select:none;user-select:none;cursor:pointer}

table.cmp{table-layout:auto;width:100%}
table.cmp th,table.cmp td{padding:.5rem .35rem;vertical-align:top;font-size:.88rem}
table.cmp td:last-child{white-space:nowrap}
table.cmp small.meta{word-break:break-word}
.tscroll{max-width:100%}

.flt{display:flex;gap:.6rem;flex-wrap:wrap;margin:.2rem 0 .8rem}
.flt label{display:flex;align-items:center;gap:.4rem;color:var(--mute);font-size:.78rem}
.flt select{appearance:none;-webkit-appearance:none;background:#0e121b url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%238a93a6' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right .6rem center;color:var(--text);border:1px solid var(--line);border-radius:99px;padding:.3rem 1.7rem .3rem .75rem;font-size:.84rem;width:auto}
td.lk{text-align:right;white-space:nowrap}
a.ext{display:inline-block;padding:.12rem .5rem;border-radius:99px;font-size:.74rem;font-weight:600;text-decoration:none;border:1px solid var(--line);color:var(--mute)}
a.ext.pf{color:#7fdcff;border-color:#2a86b0;background:#0b2a3b}
a.ext:hover{border-color:var(--accent);color:var(--text)}


/* Drehrad-Tagesauswahl: feste Markierung in der Mitte, Liste scrollt darunter */
.pg{grid-template-columns:96px 1fr}
.railwrap{position:sticky;top:.8rem;height:280px;align-self:start}
.railwrap::before{content:"";position:absolute;left:0;right:0;top:112px;height:56px;border-radius:12px;background:#ffffff12;border:1px solid #ffffff1f;z-index:0;pointer-events:none}
.rail{display:flex;flex-direction:column;gap:0;position:relative;top:0;z-index:1;height:280px;max-height:none;padding:0;margin:0;overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior:contain;
  -webkit-mask-image:linear-gradient(transparent 0,#000 13%,#000 87%,transparent 100%);mask-image:linear-gradient(transparent 0,#000 13%,#000 87%,transparent 100%)}
.rail>a,.rail>.fut{display:grid;grid-template-columns:1fr;align-content:center;gap:.1rem;height:56px;box-sizing:border-box;padding:.3rem .6rem;border-radius:12px;scroll-snap-align:center;font-size:.8rem;text-decoration:none;color:var(--mute);background:none}
.rail>.fut{opacity:.35;scroll-snap-align:none;cursor:default}
.rail>a i,.rail>.fut i{display:block;height:3px;border-radius:2px;background:#ffffff40}
.rail>a small,.rail>.fut small{font-size:.68rem;opacity:.7}
.rail>a.on{color:#fff;background:none}
.rail>a.on i{background:var(--warn);height:4px}
.rail>a.on span{color:var(--warn);font-weight:600}
.rail>*{flex:none}
.rail-end{height:112px}
#pgc{transition:opacity .12s}#pgc.loading{opacity:.45}
@media(max-width:480px){.pg{grid-template-columns:84px 1fr}.rail>a,.rail>.fut{padding:.3rem .4rem;font-size:.76rem}}

.tk>div{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tk small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.links a.pfl{color:#7fdcff;font-weight:600}


/* Bewertungs-Zelle: [pump ↗][✓ 73] gleich hoch, oben bündig; Reihenfolge auf Desktop und Handy gleich */
:root{--bh:30px}
td.lk,.lk-m{display:none}
td.brk{display:none}
th.r{text-align:right}
td.rate .rl{display:flex;align-items:flex-start;justify-content:flex-end;gap:8px}
.score{height:var(--bh);box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:.3rem;min-width:2.7rem;padding:0 .55rem;line-height:1}
.score.big{height:auto;display:inline-block;padding:.3rem .8rem}
.score .vi{font-style:normal;font-size:.8em;opacity:.9}
a.ext{height:var(--bh);box-sizing:border-box;display:inline-flex;align-items:center;padding:0 .6rem;border-radius:8px;line-height:1}
.chg{display:block;font-weight:600;font-size:.76rem}
.chg.up{color:var(--accent2)}.chg.dn{color:var(--bad)}.chg.flat{color:var(--mute)}
@media(max-width:640px){
  table.tok tr.click{align-items:flex-start;row-gap:.35rem}
  table.tok td[data-l]{font-size:.7rem}
  table.tok td[data-l]::before{font-size:.6rem}
  table.tok tr.click{column-gap:9px}
  .tk .av{margin-top:1px}
}
td.rate .score{display:inline-flex}

/* Detailseite: Bewertung rechts oben wie in der Liste */
.rate-d{margin-left:auto;text-align:right;flex:none}
.rate-d .rl{display:flex;justify-content:flex-end;align-items:flex-start;gap:8px}
.rate-d .vd{display:block;margin-top:.3rem;line-height:1.1}
@media(max-width:420px){.rate-d .lk-hide{display:none}}

/* pump.fun-Link: Kapsel-Symbol, Pfeil klein; Text nur für Screenreader */
a.ext .cap{display:block;flex:none}
a.ext .ar{font-size:.8em;margin-left:.3rem;opacity:.85}
a.ext .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
a.ext.pf{padding:0 .55rem}
/* Detailseite: Kopf wie in der Übersicht */
.dhead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.dhead .tk{min-width:0}
.mrow{display:flex;flex-wrap:wrap;gap:.25rem .9rem;margin:.9rem 0 .2rem;font-size:.8rem}
.mrow i{font-style:normal;color:var(--mute);font-size:.68rem}
.mrow b{font-weight:600}.mrow b.fresh{color:var(--accent2)}
p.legend{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .5rem;margin:.1rem 0 .6rem;color:var(--mute);font-size:.78rem}
p.legend .score{height:22px;min-width:1.7rem;padding:0 .4rem;font-size:.8rem}
a.ext.dx{color:#b9c2d6;border-color:#3a4560}

/* ?-Button und Hilfe-Fenster */
.qbtn{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--mute);font:700 1rem/1 system-ui;cursor:pointer;padding:0;margin:0;display:inline-grid;place-items:center}
.qbtn:hover,.qbtn:active{color:var(--text);border-color:var(--accent)}
header.top .qbtn{margin-left:auto;margin-right:.5rem}
.acts .qbtn{margin:0}
.hv{position:fixed;inset:0;z-index:60;background:#000b;display:none}
.hv.open{display:flex;align-items:flex-end;justify-content:center}
@media(min-width:700px){.hv.open{align-items:center}.hv .sheet{border-radius:18px;max-height:84vh}}
.hv-top h2{margin:0;font-size:1.1rem}
.hv-x{width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--mute);font-size:.9rem;cursor:pointer;padding:0}
.hv h3{margin:1.1rem 0 .4rem;font-size:.82rem;color:var(--mute);text-transform:uppercase;letter-spacing:.05em}
.hv p,.hv li,.hv dd{font-size:.9rem;line-height:1.5;color:#cdd3e0}
.hv ul{margin:.2rem 0;padding-left:1.1rem}
.hv li{margin:.25rem 0}
.hv code{background:#0e121b;border:1px solid var(--line);border-radius:5px;padding:0 .3rem;font-size:.8rem}
dl.hl{display:grid;grid-template-columns:auto 1fr;gap:.55rem .9rem;margin:.3rem 0;align-items:start}
dl.hl dt{font-weight:600;font-size:.88rem;white-space:nowrap;padding-top:.05rem}
dl.hl dd{margin:0}
.hl .score{height:26px;font-size:.85rem;min-width:2.4rem}
.hl-ext{display:inline-flex;height:26px;align-items:center;padding:0 .55rem;border-radius:8px;border:1px solid var(--line);font-size:.78rem}
.hl .chg{display:inline}
.hl-note{color:var(--mute)!important;font-size:.82rem!important}
.hl-warn{margin-top:1.1rem;padding:.7rem .85rem;border:1px solid #6b2433;background:#2a1019;border-radius:10px;color:#ffb3c0!important}
body.noscroll{overflow:hidden}

/* Hilfe-Fenster: feste Kopfzeile, nur der Inhalt darunter scrollt (kein Durchscheinen) */
.hv .sheet{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:18px 18px 0 0;width:100%;max-width:680px;max-height:88vh;overflow:hidden;padding:0;box-shadow:0 -10px 40px #0008}
@media(min-width:700px){.hv .sheet{border-radius:18px;max-height:84vh}}
.hv-top{flex:none;display:flex;justify-content:space-between;align-items:center;padding:1rem 1.2rem .7rem;border-bottom:1px solid var(--line);background:var(--card)}
.hv-body{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:.2rem 1.2rem 2.2rem}

/* Glocke und Hinweis-Einblendung */
.qbtn.on{color:var(--accent2);border-color:#1f9c79;background:#0b2a22}
.acts .qbtn{margin:0}
.toast{position:fixed;left:50%;bottom:1.4rem;transform:translate(-50%,20px);max-width:min(92vw,420px);background:#1b2233;border:1px solid var(--line);color:var(--text);padding:.7rem .95rem;border-radius:12px;font-size:.88rem;line-height:1.4;box-shadow:0 10px 30px #000a;opacity:0;pointer-events:none;transition:.2s;z-index:80}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* Aus Benachrichtigung hervorgehobene Zeile */
tr.click.hl{background:#22d3a61f;box-shadow:inset 3px 0 0 var(--accent2);animation:hlp 2.4s ease-out 1}
@keyframes hlp{0%{background:#22d3a666}100%{background:#22d3a61f}}
.chain.bnb{color:#f3ba2f;border-color:#6b5712;background:#2a2108}

/* Admin: Einstellungsformular */
form.sf{display:grid;grid-template-columns:1fr 1fr;gap:.6rem .8rem}
form.sf label{display:block;font-size:.78rem;color:var(--mute);margin:0}
form.sf label input[type=number]{margin-top:.25rem}
form.sf label.chk{grid-column:1/-1;display:flex;align-items:center;gap:.5rem;color:var(--text);font-size:.9rem}
form.sf label.chk input{width:auto}
form.sf button{grid-column:1/-1}
@media(max-width:420px){form.sf{grid-template-columns:1fr}}

/* Analyse im Admin */
.fnd{display:flex;flex-direction:column;gap:.15rem;padding:.6rem .8rem;border-radius:10px;margin:.4rem 0;border:1px solid var(--line);font-size:.86rem}
.fnd span{color:var(--mute);font-size:.8rem}
.fnd.ok{background:#0b2a22;border-color:#14614f}.fnd.warn{background:#2f2508;border-color:#69510f}.fnd.bad{background:#2a1019;border-color:#6b2433}
.fnd.ok b{color:var(--accent2)}.fnd.warn b{color:var(--warn)}.fnd.bad b{color:var(--bad)}
table.cmp td.r,table.cmp th.r{text-align:right}

table.cmp.wrap td:last-child{white-space:normal;overflow-wrap:anywhere}
table.cmp.wrap td:first-child{width:42%}
details.card{min-width:0}

form.sf>label{min-width:0}
form.sf label input,form.sf label select{display:block;width:100%;min-width:0;max-width:100%;box-sizing:border-box;margin-top:.25rem}
form.sf label input[type=date]{-webkit-appearance:none;appearance:none;min-height:2.7rem}
