/* Rebuzz – vinylretro (matchar korten) */
:root{
  --cream:#F7F2E7; --cream-2:#EFE8D7; --brown:#2E2419; --brown-2:#52432E;
  --line:#E0D8C6; --amber:#F0BA55; --orange:#C25537; --pad:#8F3D20;
  --green:#1D9E75; --green-deep:#E1F5EE; --red:#B8452F;
  --muted:#79694F; --text:#2E2419;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:'Inter',system-ui,sans-serif;
  background:var(--cream);
  color:var(--text);min-height:100vh;display:flex;align-items:center;justify-content:center;
  padding:20px;-webkit-font-smoothing:antialiased;
}
.machine{
  width:100%;max-width:440px;background:transparent;
  border:none;border-radius:0;padding:10px 6px 30px;
  position:relative;overflow:visible;
}
body::before{
  content:"";position:fixed;left:50%;bottom:-110vmax;transform:translateX(-50%);
  width:190vmax;height:190vmax;border-radius:50%;pointer-events:none;z-index:0;
  background:radial-gradient(circle,
    transparent 0 57%, #F0BA55 57% 64%, #C25537 64% 70%, transparent 70%);
  opacity:.16;
}
.machine{z-index:1}
.machine > *{position:relative}

.brand{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:10px}
.brand .logo{display:flex;align-items:center;gap:2px}
.tag{font-family:'DM Mono',monospace;font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:20px;padding:4px 12px;white-space:nowrap;background:var(--cream-2)}

.screen{display:none;flex-direction:column;gap:16px}
.screen.on{display:flex}

.lead{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:28px;line-height:1.1;letter-spacing:-.02em;color:var(--brown)}
.lead em{font-style:normal;color:var(--orange)}
.body{font-size:14px;line-height:1.6;color:var(--brown-2)}
.steps{display:flex;flex-direction:column;gap:9px;margin:2px 0}
.step{display:flex;gap:11px;align-items:flex-start;font-size:13.5px;color:var(--brown-2);line-height:1.45}
.step b{font-family:'DM Mono',monospace;color:var(--orange);font-size:12px;padding-top:1px;min-width:16px}

button{font-family:inherit;cursor:pointer;border:none;transition:transform .06s ease, background .15s ease, opacity .15s}
button:active{transform:translateY(1px)}
button:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.btn-primary{background:var(--amber);color:var(--brown);font-weight:700;font-size:15px;border-radius:13px;padding:15px;width:100%;letter-spacing:-.01em;box-shadow:0 4px 14px -8px rgba(194,85,55,.5)}
.btn-primary:hover{background:#F5C570}
.btn-primary:disabled{opacity:.4;box-shadow:none;cursor:default}
.btn-ghost{background:transparent;color:var(--brown);font-weight:600;font-size:13.5px;border:1.5px solid var(--brown);border-radius:13px;padding:12px;width:100%}
.btn-ghost:hover{background:rgba(58,44,30,.06)}
.fineprint{font-size:11.5px;color:var(--muted);line-height:1.5;text-align:center}

/* SKANNA */
.target-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.target-label{font-size:12.5px;color:var(--muted)}
.tchip{background:var(--cream);border:1.5px solid var(--line);color:var(--brown);font-size:13px;font-weight:600;border-radius:16px;padding:7px 14px}
.tchip.on{background:var(--brown);color:var(--cream);border-color:var(--brown)}
.viewfinder{position:relative;width:100%;aspect-ratio:3/4;background:#17131F;border-radius:16px;overflow:hidden;border:2px solid var(--brown)}
.viewfinder video{width:100%;height:100%;object-fit:cover;display:block}
#overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.vf-overlay{position:absolute;inset:0;pointer-events:none}
.vf-hint{position:absolute;left:0;right:0;bottom:12px;text-align:center;font-size:12.5px;color:#fff;text-shadow:0 1px 4px #000}
.vf-count{position:absolute;top:12px;left:12px;font-family:'DM Mono',monospace;font-size:13px;color:var(--brown);background:var(--amber);border-radius:20px;padding:5px 12px;font-weight:600}
.scan-prog{height:5px;background:var(--cream-2);border:1px solid var(--line);border-radius:3px;overflow:hidden}
.scan-prog span{display:block;height:100%;width:0;background:var(--green);transition:width .25s ease}
.btn-primary.ready{background:var(--green);color:#fff;box-shadow:0 6px 18px -8px var(--green);animation:readyPulse 1.4s ease-in-out infinite}
@keyframes readyPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.02)}}
@media (prefers-reduced-motion:reduce){.btn-primary.ready{animation:none}}
.found-row{display:flex;flex-wrap:wrap;gap:6px;min-height:34px}
.chip{font-size:12px;background:var(--green-deep);border:1px solid var(--green);color:#085041;border-radius:16px;padding:5px 10px;display:flex;align-items:center;gap:6px;animation:pop .25s ease}
@keyframes pop{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}
.chip .num{font-family:'DM Mono',monospace;font-size:10px;color:var(--green)}
.cam-error{background:#FBE7E3;border:1px solid var(--red);border-radius:13px;padding:14px;font-size:13px;color:#7A2A20;line-height:1.5;display:none}

/* LADDA */
.load-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:2px auto;width:100%}
.cell{aspect-ratio:1;border-radius:6px;background:var(--cream-2);border:1px solid var(--line);transition:all .25s}
.cell.ok{background:var(--green-deep);border-color:var(--green)}
.cell.bad{background:#FBE7E3;border-color:var(--red)}
.load-status{text-align:center;font-size:13px;color:var(--brown-2);min-height:20px}

/* SPELA – vinylkänslan */
.counter{font-family:'DM Mono',monospace;font-weight:500;display:flex;align-items:baseline;justify-content:center;gap:4px;color:var(--muted);font-size:14px;letter-spacing:.04em}
.counter .big{color:var(--orange);font-size:15px;font-weight:700}
.panel{position:relative;border-radius:18px;overflow:hidden;border:2px solid var(--brown);background:var(--brown);padding:30px 22px;min-height:210px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;transition:background .4s ease}
.panel.revealed{background:#F2C670}
.disc{width:84px;height:84px;border-radius:50%;background:
  radial-gradient(circle at 50% 50%, #17131F 0 6%, transparent 6.5%),
  radial-gradient(circle at 50% 50%, #F0BA55 0 32%, transparent 33%),
  repeating-radial-gradient(circle at 50% 50%, #241C13 0 3px, #17131F 3px 6px);
  border:2px solid #17131F;position:relative;z-index:1}
.panel.playing .disc{animation:spin 3.4s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.panel.playing .disc{animation:none}}
.blind-label{font-size:12.5px;color:#C9B99F;position:relative;z-index:1}
.wave{display:flex;gap:3px;align-items:flex-end;height:22px;position:relative;z-index:1}
.wave span{width:3px;background:var(--amber);border-radius:2px;height:6px}
.panel.playing .wave span{animation:eq .9s ease-in-out infinite}
.panel.playing .wave span:nth-child(2){animation-delay:.15s}
.panel.playing .wave span:nth-child(3){animation-delay:.3s}
.panel.playing .wave span:nth-child(4){animation-delay:.45s}
.panel.playing .wave span:nth-child(5){animation-delay:.6s}
@keyframes eq{0%,100%{height:5px}50%{height:20px}}
@media (prefers-reduced-motion:reduce){.panel.playing .wave span{animation:none;height:12px}}
.facit{position:relative;z-index:1;display:none;flex-direction:column;gap:5px}
.panel.revealed .facit{display:flex}
.panel.revealed .blind-box{display:none}
.blind-box{display:flex;flex-direction:column;align-items:center;gap:14px}
.facit .eyebrow{font-family:'DM Mono',monospace;font-size:11px;letter-spacing:.14em;color:var(--pad)}
.facit .title{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:24px;line-height:1.1;letter-spacing:-.02em;color:var(--brown)}
.facit .artist{font-size:14px;color:var(--brown-2)}
.facit .year{font-family:'DM Mono',monospace;font-size:12px;color:var(--brown);border:1.5px solid var(--brown);border-radius:12px;padding:2px 10px;align-self:center;margin-top:3px}
.facit .rebus{font-size:12.5px;color:var(--pad);margin-top:6px;line-height:1.4}
.prog{height:5px;background:var(--cream-2);border:1px solid var(--line);border-radius:3px;overflow:hidden;margin-top:2px}
.prog span{display:block;height:100%;width:0;background:var(--orange);transition:width .2s linear}
.transport{display:flex;gap:9px}
.transport button{flex:1}
.icon-btn{background:var(--cream);border:1.5px solid var(--brown);border-radius:12px;padding:13px;color:var(--brown);font-size:14px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:7px}
.icon-btn:hover{background:rgba(58,44,30,.06)}
.icon-btn.play{background:var(--amber);border-color:var(--amber);color:var(--brown)}
.icon-btn.play:hover{background:#F5C570}
.icon-btn.reveal{background:transparent;color:var(--green);border-color:var(--green)}
.icon-btn.reveal:hover{background:var(--green-deep)}
.icon-btn:disabled{opacity:.4;cursor:default}
.hint{font-size:11.5px;color:var(--muted);text-align:center;line-height:1.5}

/* SLUT */
.end-wrap{text-align:center;display:flex;flex-direction:column;gap:14px;padding:14px 0}
.end-wrap .cards-emoji{font-size:40px}
.end-wrap h2{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:22px;letter-spacing:-.02em;color:var(--brown)}

/* Spotify-enhetsval */
.device-row{display:flex;align-items:center;gap:8px}
.device-row label{font-size:12.5px;color:var(--muted);white-space:nowrap}
.device-row select{flex:1;background:var(--cream);border:1.5px solid var(--line);color:var(--brown);font-family:inherit;font-size:13px;border-radius:10px;padding:10px 12px;min-width:0}
.btn-mini{background:var(--cream);border:1.5px solid var(--line);color:var(--brown);border-radius:10px;padding:10px 13px;font-size:14px}

/* Redirect-URI-hjälpen */
.uri-row{display:flex;gap:8px;align-items:center;margin:6px 0}
.uri-row code{flex:1;font-family:'DM Mono',monospace;font-size:12px;background:var(--cream-2);border:1px solid var(--line);border-radius:8px;padding:9px 10px;word-break:break-all;color:var(--brown);user-select:all}

.link-muted{color:var(--orange);text-decoration:underline;cursor:pointer}

/* Desktop-landning: hänvisar till mobilen */
.landing{display:none}
body.desktop .machine{display:none}
body.desktop .landing{display:flex;flex-direction:column;align-items:center;gap:18px;max-width:560px;text-align:center;background:var(--cream);border:1px solid var(--line);border-radius:22px;padding:48px 40px;box-shadow:0 16px 40px -22px rgba(46,36,25,.3)}
.landing-logo{width:min(420px,80%)}
.landing-lead{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:26px;letter-spacing:-.02em;color:var(--brown)}
.landing-body{font-size:14.5px;line-height:1.65;color:var(--brown-2);max-width:44ch}
.landing-qr{display:flex;align-items:center;gap:18px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px 22px}
.landing-qr p{font-size:13.5px;line-height:1.5;color:var(--brown);text-align:left}

#helpBox{display:flex;flex-direction:column;gap:12px;padding-top:4px}


/* Kompakt skanningsskärm */
body[data-screen="scan"] .brand{display:none}
#scan{gap:10px}
.viewfinder{max-height:46vh}
.found-row{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}
.found-row .chip{flex:0 0 auto}

/* Ikontransport på spelskärmen */
.transport.icons{justify-content:center;gap:18px;align-items:center}
.icon-round{width:62px;height:62px;border-radius:50%;border:2px solid var(--brown);background:var(--cream);color:var(--brown);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.icon-round.big{width:80px;height:80px;background:var(--amber);border-color:var(--amber)}
.icon-round:disabled{opacity:.35}
.audio-row{display:flex;gap:10px;align-items:center;justify-content:center}
.icon-mini{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line);background:var(--cream);color:var(--muted);display:none;align-items:center;justify-content:center}
