
.qr-geo-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.88);z-index:10500;display:none;align-items:center;justify-content:center;padding:1.2rem;}
.qr-geo-overlay.open{display:flex;}
.qr-geo-sheet{background:linear-gradient(145deg,#1e0a30,#230d35);border:1.5px solid rgba(0,229,255,0.35);border-radius:24px;padding:0;width:min(380px,100%);max-height:92vh;overflow-y:auto;animation:qrGeoIn 0.32s cubic-bezier(0.34,1.56,0.64,1);}
@keyframes qrGeoIn{from{transform:scale(0.85) translateY(24px);opacity:0;}to{transform:scale(1) translateY(0);opacity:1;}}
.qr-geo-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.1rem 0.7rem;border-bottom:1px solid rgba(255,255,255,0.07);}
.qr-geo-title{font-family:'Syne',sans-serif;font-size:0.95rem;font-weight:800;color:var(--cyan);}
.qr-geo-close{width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.1);color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:0.85rem;line-height:1;}
.qr-geo-body{padding:1.1rem;}
.qr-geo-etab-name{font-family:'Syne',sans-serif;font-size:1rem;font-weight:800;color:var(--text);text-align:center;margin-bottom:0.3rem;}
.qr-geo-vote-dir{text-align:center;font-size:0.82rem;font-weight:700;padding:0.22rem 0.8rem;border-radius:20px;display:block;margin:0 auto 1rem;width:fit-content;}
.qr-geo-vote-dir.pos{background:rgba(0,255,170,0.12);color:var(--green);border:1px solid rgba(0,255,170,0.3);}
.qr-geo-vote-dir.neg{background:rgba(255,68,102,0.12);color:var(--red);border:1px solid rgba(255,68,102,0.3);}
.qr-geo-state{font-size:3rem;text-align:center;margin:0.8rem auto;display:block;transition:all 0.3s;}
.qr-geo-state.loading{animation:qrGeoPulse 1.2s ease-in-out infinite;}
@keyframes qrGeoPulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:0.5;transform:scale(0.88);}}
.qr-geo-state.ok{animation:qrGeoOk 0.5s ease both;}
@keyframes qrGeoOk{from{transform:scale(0.6);opacity:0;}to{transform:scale(1);opacity:1;}}
.qr-geo-msg{text-align:center;font-size:0.8rem;color:var(--muted);line-height:1.6;margin-bottom:0.9rem;white-space:pre-line;}
.qr-geo-dist{margin-bottom:1rem;display:none;flex-direction:column;gap:0.3rem;}
.qr-geo-dist-row{display:flex;align-items:center;justify-content:space-between;}
.qr-geo-dist-label{font-size:0.65rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:0.06em;}
.qr-geo-dist-num{font-family:'Syne',sans-serif;font-size:0.95rem;font-weight:900;color:var(--cyan);}
.qr-geo-bar-track{height:8px;background:rgba(255,255,255,0.07);border-radius:10px;overflow:hidden;}
.qr-geo-bar-fill{height:100%;border-radius:10px;transition:width 0.5s ease;}
.qr-geo-bar-fill.ok{background:linear-gradient(90deg,#00ffaa,#00e5ff);}
.qr-geo-bar-fill.bad{background:linear-gradient(90deg,#ffd700,#ff4466);}
.qr-geo-bar-labels{display:flex;justify-content:space-between;font-size:0.55rem;color:var(--muted);margin-top:0.22rem;}
.qr-geo-rules{background:rgba(255,215,0,0.06);border:1px dashed rgba(255,215,0,0.25);border-radius:10px;padding:0.55rem 0.75rem;font-size:0.65rem;color:rgba(255,215,0,0.75);line-height:1.6;margin-bottom:0.9rem;}
.qr-geo-rules strong{color:rgba(255,215,0,0.95);}
.qr-geo-confirm-btn{width:100%;padding:0.8rem;border-radius:14px;border:none;background:linear-gradient(135deg,#00ffaa,#00e5ff);color:#001a0e;font-family:'Syne',sans-serif;font-weight:900;font-size:0.9rem;cursor:pointer;margin-bottom:0.5rem;transition:all 0.2s;box-shadow:0 4px 18px rgba(0,255,170,0.3);}
.qr-geo-confirm-btn:active{transform:scale(0.96);}
.qr-geo-retry-btn{width:100%;padding:0.65rem;border-radius:12px;border:1.5px solid rgba(0,229,255,0.35);background:rgba(0,229,255,0.07);color:#00e5ff;font-family:'Syne',sans-serif;font-weight:800;font-size:0.82rem;cursor:pointer;margin-bottom:0.5rem;transition:all 0.2s;}
.qr-geo-cancel-btn{width:100%;padding:0.5rem;border-radius:10px;border:none;background:transparent;color:#b088c0;font-size:0.72rem;cursor:pointer;}
