/* Online layer (feed, chart, artist pages, login). Touch targets ≥ 44px. */
input[type=url],input[type=password],input[type=email]{font:inherit;font-size:16px;background:#0b0420;color:var(--ink);border:3px solid var(--cyan);padding:.45em;width:100%;max-width:520px}
button.online{background:var(--green)}
.actions button.online{background:var(--green)}
.online-status{margin-top:14px;font-size:.9em}
.linkish{background:none;border:0;box-shadow:none;color:var(--cyan);text-decoration:underline;padding:.2em .1em;font:inherit;cursor:pointer;min-height:auto}
.linkish:active{transform:none}
.tabs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.tabs .tab{background:#3b2463;color:var(--ink);min-height:44px;font-size:.85em}
.tabs .tab.on{background:var(--pink);color:#000}
.hub .hubbody{min-height:200px}
.olist{display:flex;flex-direction:column;gap:8px}
.osong{display:flex;gap:10px;align-items:flex-start;border:3px solid #000;background:#1b0c33;padding:8px;position:relative}
.osong.broken{opacity:.75}
.osong.ishidden{outline:3px dashed var(--red)}
.osong .rank{font-weight:900;color:var(--yellow);font-size:1.4em;min-width:2.2em;text-align:center;align-self:center}
.cover{width:72px;height:72px;object-fit:cover;border:3px solid #000;flex:none;background:#0b0420}
.cover.small{width:44px;height:44px}
.nocover{display:flex;align-items:center;justify-content:center;font-size:28px}
.osong .info{flex:1;min-width:0}
.osong .t{font-weight:900;color:var(--yellow);overflow-wrap:anywhere}
.osong .meta{font-size:.78em;color:var(--dim);margin:2px 0 4px}
.osong .row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.osong .row button,.osong .row .btn{min-height:44px;min-width:44px;margin:0}
.vote{background:#3b2463;color:var(--ink)}
.vote.hype.on{background:var(--yellow);color:#000}
.vote.love.on{background:var(--pink);color:#000}
.btn.sunolink{display:inline-flex;align-items:center;background:#000;color:var(--cyan);text-decoration:none;padding:.25em .6em;border:3px solid var(--cyan);font-size:.8em}
.np{gap:10px;align-items:center;background:#000;border:3px solid var(--green);padding:6px 8px;margin-bottom:10px;position:sticky;top:-16px;z-index:3}
.np[hidden]{display:none}
.np .npi{flex:1;min-width:0;font-size:.85em}
.np canvas{width:120px;height:44px;flex:none}
.artisthead{display:flex;gap:12px;align-items:flex-start}
.artisthead .av{font-size:48px}
.artisthead h3{margin:0 0 4px;color:var(--yellow);overflow-wrap:anywhere}
.pubform{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pubform input{flex:1 1 220px}
.pubform button{min-height:44px}
.sunobox{border:3px dashed var(--green);padding:8px;margin:6px 0 10px;background:#10062a}
.small{font-size:.85em}
.tag2{background:var(--cyan);color:#000;padding:0 4px;font-size:.75em}
table.admin td{vertical-align:top;font-size:.85em}
table.admin button{min-height:40px}
.authf label{display:block}
@media (max-width:600px){.cover{width:56px;height:56px}.np canvas{display:none}}
.sunoembed{position:relative;width:100%;max-width:760px;margin:6px auto;aspect-ratio:760/240;min-height:150px;background:#111;border:3px solid #000}
.sunoembed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.np{display:block}
.nphead{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.nphead .sp{flex:1}
.nphead button{min-height:44px}
.stage .sunoembed{max-width:560px}
/* --- Lyt & stem / Den Fælles Liste / Robo-Bent / share page --- */
.weekbar{background:#10062a;border:3px solid var(--cyan);padding:6px 8px;margin:0 0 10px;line-height:1.5}
.rules{background:#1b0c33;border-left:6px solid var(--yellow);padding:6px 10px;margin:0 0 10px}
.vote.wait{background:#2a1a45;color:var(--dim)}
.vote.need{opacity:.8}
.button.green,button.green{background:var(--green);color:#000}
.osong.single{border-color:var(--green)}
table.flist{width:100%}
table.flist td,table.flist th{padding:6px 4px;vertical-align:middle}
table.flist tr.rival td{color:var(--dim)}
table.flist tr.me td{background:#3b2463}
table.flist td.n{text-align:right;white-space:nowrap}
table.flist button.small{min-height:40px;min-width:40px;padding:.1em .5em}
.mv-up{color:var(--green)}.mv-down{color:var(--red)}.mv-new{color:var(--yellow);font-size:.8em}
.badges{margin:2px 0 6px}.badge{display:inline-block;padding:2px 6px;border:2px solid #000;font-size:.8em;margin:2px 4px 2px 0}
.badge.gold{background:var(--yellow);color:#000}
ul.golds{margin:4px 0;padding-left:20px}ul.golds li{margin:2px 0}
details.bent{margin:4px 0;background:#10062a;border:2px solid #3b2463;padding:2px 8px}
details.bent summary{cursor:pointer;min-height:40px;display:flex;align-items:center;gap:4px;list-style:none}
details.bent summary::-webkit-details-marker{display:none}
details.bent p{margin:4px 0 6px}
.ham{letter-spacing:-2px}.hdim{opacity:.22;filter:grayscale(1)}
.bent{text-align:left}
div.bent{background:#10062a;border:3px solid var(--cyan);padding:8px 10px;margin:10px auto 0;max-width:600px}
div.bent p{margin:6px 0 0}
.mailbox{border:3px solid var(--yellow);background:#1b0c33;padding:4px 10px;margin:10px 0}
.mailbox h3{margin:6px 0}
.mailbox p{margin:4px 0}
body.sharepage{min-height:100vh}
main.share{max-width:720px;margin:0 auto;padding:24px 14px}
.sharecard{border-color:var(--pink)}
.sc-head{display:flex;gap:12px;align-items:flex-start}
.sc-robot{font-size:56px;line-height:1}
.sc-kicker{color:var(--cyan);letter-spacing:2px;font-size:.85em}
.sc-head h1{color:var(--yellow);margin:4px 0;font-size:clamp(22px,5vw,36px);overflow-wrap:anywhere}
.sc-band{color:var(--ink)}
.sc-grade{margin-left:auto;font-size:44px;font-weight:900;color:var(--yellow);border:4px solid var(--pink);padding:0 14px}
.sc-ham{font-size:30px;margin:12px 0}
.sc-text{font-size:1.1em;line-height:1.5}
.sc-player button{min-height:48px;font-size:1.1em}
.sc-cta{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.sc-cta .btn{display:inline-flex;align-items:center;min-height:44px;padding:.3em .9em;border:3px solid #000;text-decoration:none;font-weight:700;background:#3b2463;color:var(--ink)}
.sc-cta .btn.cyan{background:var(--cyan);color:#000}
details.bent button{min-height:44px}
/* --- Log ind med Dansk AI Musik --- */
button.dam-main{width:100%;min-height:52px;font-size:1.05em;background:linear-gradient(90deg,#ff4fd8,#7b5cff);color:#fff;border:3px solid #000;display:flex;align-items:center;justify-content:center;gap:.5em}
.dam-sub{margin-top:-4px;text-align:center}
.orline{display:flex;align-items:center;gap:8px;margin:10px 0}.orline::before,.orline::after{content:"";flex:1;border-top:2px dashed #3b2463}
.dam-prov{display:flex;flex-direction:column;gap:8px;margin:8px 0}
.dam-prov button{min-height:48px;display:flex;align-items:center;gap:.6em;justify-content:center;font-size:1em;border:3px solid #000}
.dam-google{background:#fff;color:#222}.dam-discord{background:#5865f2;color:#fff}
.dam-ico{display:inline-flex;width:1.6em;height:1.6em;align-items:center;justify-content:center;font-weight:900}
.dam-google .dam-ico{color:#4285f4;font-family:Arial,sans-serif}
.dam-mail input,.dam-name input{width:100%;max-width:none;min-height:44px;box-sizing:border-box}
.dam-mail button,.dam-name button{min-height:44px;width:100%}
.dam-status button{margin-left:6px}
/* ---------- v5: hamster visits, sabotage, duels, labels ---------- */
.hamrun{position:fixed;z-index:60;bottom:14vh;left:-140px;width:120px;height:110px;min-height:44px;padding:6px;background:none;border:0;box-shadow:none;cursor:pointer;display:flex;align-items:flex-end;gap:2px;animation:hamrun 8s linear forwards;touch-action:manipulation}
.hamrun .ham{display:block;width:84px}.hamrun .ham svg{width:84px;height:66px;animation:hamhop .35s steps(2) infinite}
.hamrun.gold .ham svg{filter:sepia(1) saturate(4) hue-rotate(5deg) brightness(1.2) drop-shadow(0 0 6px #ffdd57)}
.hamrun .sparkle{position:absolute;top:0;right:6px;font-size:22px;animation:hamhop .5s steps(2) infinite}
.hamrun .robo{font-size:44px;line-height:1;animation:hamhop .25s steps(2) infinite}
.hamrun.robot{animation-duration:3s!important;width:150px}
.hamrun.caught{animation-play-state:paused;transform:scale(1.4);opacity:0;transition:all .3s}
.hamrun.eaten{animation-play-state:paused}.hamrun.eaten .ham{opacity:0;transition:opacity .6s}
@keyframes hamrun{from{left:-140px}to{left:calc(100vw + 20px)}}
@keyframes hamhop{50%{transform:translateY(-6px)}}
@media (prefers-reduced-motion:reduce){.hamrun{animation-timing-function:steps(6)}.hamrun .ham svg,.hamrun .robo,.hamrun .sparkle{animation:none}}
.hamcard{text-align:center}.hamsvg svg{width:120px;height:94px}.hamsvg.gold svg{filter:sepia(1) saturate(4) brightness(1.2) drop-shadow(0 0 8px #ffdd57)}
.tabloid{font-family:Georgia,'Times New Roman',serif;font-weight:900;font-size:1.15em;background:#fff8e0;color:#111;border:3px solid #000;padding:8px 10px;transform:rotate(-1deg);text-align:left}
.panel2{background:#10062a;border:3px solid #3b2463;padding:8px 10px;margin:8px 0}
.duel .dhead{line-height:1.4}.duel .dhead .tag2{margin-left:4px}
.duel.judge{border-color:var(--pink)}
.duel .slots{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.duel .slot{background:#1a0b2e;border:2px solid var(--cyan);padding:8px}
.duel .slot .sunoembed iframe{height:160px}
@media (max-width:700px){.duel .slots{grid-template-columns:1fr}}
.stakes{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.stake{display:flex;align-items:center;gap:6px;background:#3b2463;padding:6px 10px;min-height:44px;cursor:pointer}
.stake input{width:22px;height:22px}
.duel label.small{display:inline-flex;align-items:center;gap:4px;min-height:44px}.duel input[type=checkbox]{width:22px;height:22px}
table.labels td.n{text-align:right}
.badge.duel{background:var(--pink);color:#000}.badge.label{background:var(--cyan);color:#000}
ul.rumors li,ul.tpls li{margin:4px 0}
.pvp-peace,.pvp-admin{margin-top:10px}
.pvp-tab button.small:not(.linkish){min-height:44px}
/* v7: Ugens Brief, pressefotos, turné-billet */
.brief.panel{border:3px solid var(--cyan,#33e0ff);padding:10px 14px;margin:0 0 12px}
.brief h3{margin:4px 0;color:var(--yellow,#ffd23f)}
.sharecard.press{border-color:var(--yellow,#ffd23f)}
.sharecard.billet{border-color:var(--cyan,#33e0ff)}
.btn.big{font-size:18px;padding:12px 18px}
.inv-url{flex:1;min-width:0}
table.metrics td.n,table.metrics th{text-align:right}
.sharepage .sc-cta a.btn.pink,a.btn.pink{background:var(--pink);color:#1a0b2e}
/* v8: native player for Dansk AI Musik uploads, retro frame */
.damaudio{border:4px solid var(--pink,#ff3fa4);background:#0a0616;padding:10px;margin:6px 0;box-shadow:6px 6px 0 #000;image-rendering:pixelated}
.damaudio .da-head{color:var(--yellow,#ffd23f);margin-bottom:8px;font-size:14px}
.damaudio audio{width:100%;min-height:44px;filter:invert(1) hue-rotate(160deg) saturate(1.6);border:2px solid var(--cyan,#33e0ff)}
/* v9: style/lyrics form */
.metaform{margin:.4em 0}.metaform label,.modal label{display:block;margin:.35em 0}.metaform input,.metaform textarea,.me-style,.me-lyrics{width:100%;box-sizing:border-box;font:inherit;font-size:16px}
.tag2.stylet{max-width:22em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:bottom}
/* v10 leaderboard */
.lbctl { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0; align-items: center; }
.lbt { width: 100%; border-collapse: collapse; margin-top: 8px; }
.lbt td, .lbt th { padding: 6px 8px; border-bottom: 1px solid rgba(255,255,255,.08); text-align: left; }
.lbt .num { text-align: right; }
.lbt tr.me { background: rgba(255,60,172,.12); }
/* v12: Musebesøg uses the Faimouse sprite instead of the old pixel hamster */
.hamrun{height:130px}.hamrun .ham .mascot{width:58px;height:auto;animation:hamhop .35s steps(2) infinite}
.hamcard .hamsvg .mascot{width:110px;height:auto}
@media (prefers-reduced-motion:reduce){.hamrun .ham .mascot{animation:none}}
.sc-mascot{width:72px;height:auto;flex:none;align-self:flex-end}
/* v12: 🔥/❤️ and Forrige/Næste directly under the open player (big touch targets for iPhone Safari) */
.np .npvote{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 4px}
.np .npvote .vote{min-height:44px;min-width:76px;font-size:16px;touch-action:manipulation}
.np .npvote .npleft{flex:1 1 180px}
.np .npnav{display:flex;align-items:center;gap:8px;margin-top:6px}
.np .npnav .sp{flex:1}
.np .npnav button{min-height:44px;min-width:110px;touch-action:manipulation}
.np .npnav button[disabled]{opacity:.35}
@media (max-width:520px){.np .nphead{flex-wrap:wrap}.np .npvote .vote{flex:1 1 40%}.np .npnav button{flex:1}}
@media (max-width:520px){.np{padding:4px 6px}.np .npmsg{display:none}.np .sunoembed{min-height:120px;margin:4px auto}.np .npvote{margin:4px 0 2px;gap:6px}.np .npvote .npleft{font-size:12px;flex-basis:100%}.np .npnav{margin-top:2px}.np .npwait{font-size:12px}}
