:root{
  --bg:#f4f2f2;
  --card:#ffffff;
  --card2:#faf8f8;
  --text:#0b0708;
  --muted:#5b5556;
  --line:#ded8d9;
  --shadow:0 12px 34px rgba(0,0,0,.12);
  --radius:18px;
  --accent:#c92724;
  --brand:#c92724;
  --brand-dark:#981e1c;
  --ok:#1b8f58;
  --warn:#b87a02;
  --danger:#b91f1d;
}

*{box-sizing:border-box}
.hidden{display:none !important}
body{
  margin:0;
  font-family:"Segoe UI","Helvetica Neue",Arial,sans-serif;
  color:var(--text);
  background:
    radial-gradient(900px 380px at 20% -8%, rgba(201,39,36,.16), transparent 60%),
    radial-gradient(860px 420px at 85% -6%, rgba(11,7,8,.16), transparent 65%),
    var(--bg);
}
a{color:inherit; text-decoration:none}
h1,h2,h3,p{margin:0}

.topbar{
  position:sticky; top:0; z-index:30;
  padding-top: env(safe-area-inset-top, 0px);
  background:#c92724;
  border-bottom:1px solid rgba(255,255,255,.25);
  box-shadow: var(--shadow);
}
.topbar-inner{
  display:flex;
  align-items:center;
  gap:12px;
  max-width:1100px;
  margin:0 auto;
  padding:8px 16px;
}
.topbar-inner.home-topbar-layout{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:10px;
}
.ticket-topbar{
  display:block;
  padding:10px 16px 12px;
}
.ticket-logo-row{
  display:flex;
  justify-content:center;
  align-items:center;
}
.ticket-hero-logo{
  width:76px;
  height:76px;
  object-fit:contain;
}
.ticket-main-row{
  margin-top:8px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
}
.ticket-main-left{
  display:flex;
  align-items:center;
  gap:10px;
}
.ticket-brand-name{
  color:#fff;
  font-weight:900;
  letter-spacing:.2px;
}
.ticket-main-right{
  display:flex;
  align-items:center;
  gap:8px;
}
.ticket-page-tag{
  margin-top:8px;
  text-align:center;
  color:#fff;
  font-weight:900;
  letter-spacing:.8px;
}
.ticket-page-tag-actions{
  position:absolute;
  right:0;
  top:50%;
  transform:translateY(-50%);
}
.home-icon-btn{
  border:1px solid rgba(255,255,255,.24);
  background:rgba(255,255,255,.08);
  color:#fff;
  width:34px;
  height:34px;
  border-radius:999px;
  font-size:16px;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  position:relative;
}
.home-icon-btn:hover{
  background:rgba(255,255,255,.14);
}
.home-icon-btn[data-unread]:not([data-unread="0"])::after{
  content: attr(data-unread);
  position:absolute;
  top:-7px;
  right:-8px;
  min-width:17px;
  height:17px;
  border-radius:999px;
  background:#e11d48;
  color:#fff;
  font-size:10px;
  font-weight:900;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0 4px;
  border:1px solid rgba(255,255,255,.6);
}
.ticket-home-top{
  display:flex;
  justify-content:center;
  margin:0 0 12px;
}
.home-bell{
  position:relative;
  width:34px;
  height:34px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.24);
  background:rgba(255,255,255,.08);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:#fff;
  cursor:pointer;
}
.badge-count{
  position:absolute;
  top:-7px;
  right:-8px;
  min-width:17px;
  height:17px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:#e11d48;
  color:#fff;
  font-size:10px;
  font-weight:900;
  padding:0 4px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.6);
}
.home-badge-count{
  position:absolute;
  top:-7px;
  right:-8px;
  min-width:17px;
  height:17px;
  border-radius:999px;
  background:#e11d48;
  color:#fff;
  font-size:10px;
  font-weight:900;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0 4px;
  border:1px solid rgba(255,255,255,.6);
}
@media (max-width:560px){
  .topbar-inner.home-topbar-layout{
    padding:8px 12px;
    grid-template-columns:auto 1fr auto;
  }
  .topbar-center{
    justify-self:center;
    min-width:0;
  }
  .brand .title{font-size:.9rem}
  .topbar-right .badge{
    padding:5px 8px;
    font-size:.72rem;
    max-width:min(46vw, 220px);
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
}
#transferAccountEmailInput{
  font-size:16px;
}
.burger{
  width:38px; height:38px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.24);
  background: rgba(255,255,255,.12);
  color:#fff;
  cursor:pointer;
}
.brand{display:flex; align-items:center; gap:10px;}
.topbar-left{display:flex; align-items:center; justify-content:flex-start}
.topbar-center{justify-self:center}
.topbar-right{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:4px;
  justify-self:end;
}
.topbar-tools{
  display:flex;
  align-items:center;
  gap:8px;
}
.logo-img{
  width:40px;
  height:40px;
  object-fit:cover;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.2);
}
.logo{
  width:38px; height:38px; border-radius:12px;
  object-fit:cover;
  border:1px solid rgba(255,255,255,.34);
}
.title{font-weight:900; color:#fff;}
.sub{color:var(--muted); font-size:12px;}
.topbar .sub{color:#f7dddd}
.badge{
  padding:6px 10px;
  border-radius:12px;
  background: rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.25);
  font-size:12px;
  color:#fff;
}
.spacer{flex:1;}

.container{max-width:1100px; margin:0 auto; padding:18px 16px 80px;}
.card{
  border-radius: var(--radius);
  background: var(--card);
  border:1px solid var(--line);
  box-shadow: var(--shadow);
  padding:16px;
}
.home-overlay{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.52);
  z-index:140;
  display:none;
  align-items:center;
  justify-content:center;
  padding:14px;
}
.home-overlay.show{display:flex;}
.home-modal-card{
  width:min(560px, 96vw);
  max-height:90vh;
  overflow:auto;
  background:#fff;
  border:1px solid #ddd;
  border-radius:14px;
  box-shadow:0 18px 38px rgba(0,0,0,.24);
  padding:14px;
}
.shared-back-arrow{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:44px;
  min-width:44px;
  height:44px;
  border-radius:14px;
  border:1px solid var(--line);
  background:var(--card2, #fff);
  color:var(--text);
  text-decoration:none;
  font-weight:900;
}
.friend-result{
  border:1px solid #e8e0e1;
  border-radius:12px;
  padding:10px;
  display:flex;
  align-items:flex-start;
  justify-content:flex-start;
  flex-direction:column;
  gap:10px;
  margin-top:8px;
  background:#fff;
}
.friend-result .meta{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
}
.friend-result .avatar{
  width:42px;
  height:42px;
  border-radius:999px;
  object-fit:cover;
  border:1px solid #ddd;
}
.friend-result .actions{
  width:100%;
  display:flex;
  justify-content:flex-start;
  gap:8px;
}
.btn{
  border:1px solid transparent;
  background: linear-gradient(135deg, var(--brand), var(--brand-dark));
  color:#fff;
  font-weight:900;
  padding:10px 14px;
  border-radius:14px;
  cursor:pointer;
  box-shadow: 0 8px 24px rgba(201,39,36,.25);
}
.btn:active{transform: translateY(1px)}
.btn.ghost{
  background: #fff;
  color: var(--text);
  border-color:#cfcfcf;
  box-shadow:none;
}
.btn.danger{
  background: linear-gradient(135deg, var(--danger), #801110);
  color:#fff;
}
.btn.success{
  background: linear-gradient(135deg, #16a34a, #15803d);
  color:#fff;
}
.btn.small{padding:8px 10px; border-radius:12px; font-weight:800}
.input{
  width:100%;
  padding:12px 12px;
  font-size:16px;
  border-radius:14px;
  border:1px solid #d7d4d5;
  background: #fff;
  color:var(--text);
  outline:none;
}
.input:focus{
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(201,39,36,.12);
}
.input::placeholder{color: #9b9496}
.label{font-size:.9rem; color:var(--muted); margin:10px 0 6px}
.view{display:none; margin-top:14px;}
.view.active{display:block;}
.row{display:flex; gap:10px; align-items:center; flex-wrap:wrap;}
.grid{display:grid; gap:12px;}
.grid.cols-2{grid-template-columns:1fr;}
@media(min-width:900px){ .grid.cols-2{grid-template-columns:1fr 1fr;} }
.grid.cols-3{grid-template-columns:repeat(auto-fit, minmax(220px,1fr));}

.button{
  border:1px solid #d5cccd;
  background: #fff;
  color:var(--text);
  padding:10px 12px;
  border-radius:14px;
  cursor:pointer;
  font-weight:700;
  transition: transform .06s ease, background .2s ease, border-color .2s ease, opacity .2s ease;
  user-select:none;
}
.button:hover{transform: translateY(-1px); background: #fcf8f8}
.button:disabled{opacity:.5; cursor:not-allowed; transform:none}
.button.primary{background:#c92724; border-color:#c92724; color:#fff;}
.button.secondary{background:#fff;}
.button.danger{background:#b91f1d; border-color:#b91f1d; color:#fff;}

label{display:block; font-size:12px; color:var(--muted); margin-bottom:6px}
input, select{
  width:100%;
  padding:11px 12px;
  border-radius:14px;
  border:1px solid #d9d0d1;
  background: #fff;
  color:var(--text);
  outline:none;
}
input:focus, select:focus{
  border-color:#c92724;
  box-shadow: 0 0 0 3px rgba(201,39,36,.12);
}

.nav-drawer{
  position:fixed; inset:0; pointer-events:none; z-index:500;
}
.nav-drawer.open{pointer-events:auto;}
.nav-panel{
  position:absolute; top:0; left:0; bottom:0;
  width:280px;
  overflow-y:auto;
  padding-bottom:18px;
  padding-top: calc(env(safe-area-inset-top, 0px) + 8px);
  background: rgba(11,7,8,.97);
  border-right:1px solid rgba(255,255,255,.2);
  transform: translateX(-102%);
  transition: transform .2s ease;
  padding:16px;
  z-index:400;
}
.nav-panel.open{transform: translateX(0);}
.scrim{
  position:absolute; inset:0;
  background: rgba(0,0,0,.45);
  opacity:0; transition: opacity .2s ease;
  z-index:350;
}
.scrim.show{opacity:1; pointer-events:auto;}
.nav-panel a{
  display:block; padding:12px 10px; border-radius:14px; color:#ddd3d4;
}
.nav-panel a:hover{background: rgba(255,255,255,.1); color:#fff;}

.sep{border:none; border-top:1px solid var(--line); margin:14px 0;}
.pill{padding:7px 10px; border-radius:12px; background: rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.25); font-size:12px; color:#fff;}
.kpi{padding:12px; border-radius:16px; background: var(--card2); border:1px solid var(--line);}
.kpi .k{font-size:20px; font-weight:800}
.kpi .l{font-size:12px; color:var(--muted)}

.seat-grid{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(72px,1fr));
  gap:8px;
}
.seat{
  padding:10px 6px;
  border-radius:14px;
  border:1px solid var(--line);
  background: #fff;
  text-align:center;
  font-weight:800;
  cursor:pointer;
  user-select:none;
}
.seat.free{background: rgba(27,143,88,.1); border-color: rgba(27,143,88,.35);}
.seat.reserved{background: rgba(185,31,29,.12); border-color: rgba(185,31,29,.35); opacity:.65; cursor:not-allowed;}
.seat.hold{background: rgba(184,122,2,.12); border-color: rgba(184,122,2,.35);}
.seat.selected{outline:2px solid #c92724;}
.open-ticket-panel{
  margin-top:14px;
  border:1px solid var(--line);
  border-radius:14px;
  background:var(--card2);
  padding:12px;
}
.qty-picker-row{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  margin-top:10px;
}
.qty-value{
  min-width:44px;
  text-align:center;
  font-weight:900;
  font-size:1.1rem;
}
.open-dynamic-price{
  margin-top:10px;
  text-align:center;
  font-weight:900;
  color:#7a1311;
}
.table-picker{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(110px,1fr));
  gap:8px;
  margin-top:10px;
}
.table-chip{
  border:1px solid #d4cacc;
  border-radius:12px;
  background:#fff;
  padding:10px;
  font-size:12px;
  cursor:pointer;
  text-align:center;
  transition: transform .12s ease, border-color .2s ease, box-shadow .2s ease;
}
.table-chip:hover{
  transform: translateY(-1px);
}
.table-chip.selected{
  border-color:#c92724;
  box-shadow: 0 0 0 3px rgba(201,39,36,.14);
  animation: tablePulse .5s ease;
}
@keyframes tablePulse{
  0%{transform:scale(.96)}
  100%{transform:scale(1)}
}

.toast{
  position: fixed;
  left: 50%;
  bottom: 18px;
  transform: translateX(-50%);
  padding: 10px 14px;
  border-radius: 14px;
  border: 1px solid #2f2324;
  background: rgba(11,7,8,.94);
  color: #fff;
  box-shadow: var(--shadow);
  display:none;
  z-index:100;
  max-width: min(520px, calc(100vw - 32px));
  text-align:center;
}

.qr-overlay{
  position:fixed; inset:0;
  background: rgba(0,0,0,.55);
  display:none;
  align-items:center;
  justify-content:center;
  z-index:600;
}
.qr-overlay.show{display:flex;}
.qr-overlay-full{
  background:#0d0c0c;
  align-items:stretch;
  justify-content:stretch;
}
.qr-fullscreen{
  width:100%;
  min-height:100dvh;
  background:linear-gradient(180deg,#141313 0%, #0f0d0d 9%, #f4f2f2 9.1%, #f4f2f2 100%);
  position:relative;
  padding:calc(env(safe-area-inset-top, 0px) + 44px) 4px 8px;
  overflow:auto;
}
.qr-full-back{
  position:fixed;
  top:calc(env(safe-area-inset-top, 0px) + 1px);
  left:8px;
  z-index:620;
  border:none;
  background:transparent;
  color:#fff;
  font-size:34px;
  line-height:1;
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  cursor:pointer;
}
.qr-ticket-stage{
  width:min(580px, calc(100vw - 10px));
  margin:0 auto;
  transform-origin:top center;
  will-change:transform;
}
.qr-ticket-full{
  width:min(580px, 100%);
  margin:0 auto;
  background:#fff;
  border:1px solid #e0d9da;
  border-radius:16px;
  overflow:hidden;
  box-shadow:0 14px 30px rgba(0,0,0,.2);
}
.qr-full-headbar{
  height:38px;
  background:#c92724;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 10px;
}
.qr-full-head-logo{
  width:30px;
  height:30px;
  object-fit:contain;
}
.qr-full-head-type{
  flex:1;
  margin-left:-30px;
  text-align:center;
  color:#fff;
  font-weight:900;
  letter-spacing:.8px;
  font-size:14px;
  text-transform:uppercase;
}
.qr-full-banner-wrap{
  width:100%;
  background:#fff;
}
.qr-full-banner{
  width:100%;
  aspect-ratio:16/5;
  object-fit:cover;
  display:block;
}
.qr-full-main{
  padding:6px 10px 6px;
  text-align:center;
}
.qr-full-event{
  margin-top:1px;
  font-size:14px;
  font-weight:900;
  line-height:1.15;
}
.qr-full-seat{
  margin-top:1px;
  color:#4f494a;
  font-size:11px;
  line-height:1.2;
}
.qr-full-qr-wrap{
  margin:8px auto 0;
  width:min(316px, 88vw);
  position:relative;
  display:grid;
  justify-items:center;
  gap:4px;
  padding-bottom:0;
}
.qr-full-qr-wrap canvas{
  width:100%;
  height:auto;
  border-radius:10px;
  border:1px solid #ece4e5;
  background:#fff;
  display:block;
  position:relative;
  z-index:1;
}
.qr-burn-flame{
  width:88px;
  height:auto;
  pointer-events:none;
  opacity:.98;
  transform-origin:center bottom;
  transition:transform .9s ease, opacity .9s ease;
  animation:qrFlameIdle 1.35s ease-in-out infinite alternate;
}
.qr-burn-flame-side{
  width:78px;
  margin:0;
  animation-delay:.22s;
}
.qr-flames-row{
  position:absolute;
  left:50%;
  bottom:-18px;
  transform:translateX(-50%);
  display:flex;
  align-items:flex-end;
  justify-content:center;
  gap:2px;
  width:max-content;
  min-height:0;
  height:auto;
  overflow:visible;
  z-index:3;
  pointer-events:none;
}
.qr-flames-row.burst{
  position:fixed;
  left:50%;
  right:auto;
  bottom:-10vh;
  width:100vw;
  height:100vh;
  transform:translateX(-50%);
  justify-content:center;
  align-items:flex-end;
  gap:0;
  z-index:640;
  overflow:visible;
}
.qr-flames-row.burst .qr-burn-flame{
  animation:qrFlameBurstCenter 1.35s ease forwards;
}
.qr-flames-row.burst .qr-burn-flame-side{
  animation:qrFlameBurstSide 1.35s ease forwards;
}
@keyframes qrFlameBurstCenter{
  0%{transform:scale(1) translateY(0);opacity:.98;}
  45%{transform:scale(6.4) translateY(-2vh);opacity:1;}
  100%{transform:scale(12.5) translateY(-3vh);opacity:0;}
}
@keyframes qrFlameBurstSide{
  0%{transform:scale(1) translateY(0);opacity:.96;}
  45%{transform:scale(5.7) translateY(-1vh);opacity:1;}
  100%{transform:scale(11.2) translateY(-2vh);opacity:0;}
}
.qr-burn-flame.burn{
  transform:scale(1.36) translateY(-5px);
  opacity:.55;
}
.qr-burn-flame-side.burn{
  transform:scale(1.22) translateY(-4px);
  opacity:.42;
}
.qr-time-wrap{
  margin:18px auto 0;
  width:auto;
  position:relative;
  z-index:1;
}
.qr-time-track{
  display:block;
  height:6px;
  border-radius:999px;
  background:#e5ddde;
  overflow:hidden;
}
.qr-time-fill{
  display:block !important;
  height:100%;
  width:0%;
  background:#c92724;
  transition:width .1s linear;
}
.qr-time-text{
  margin-top:3px;
  font-size:11px;
  font-weight:800;
  color:#5b5556;
}
.qr-full-code{
  margin-top:4px;
  font-size:10px;
  color:#2b2627;
  word-break:break-word;
  line-height:1.15;
}
.qr-full-meta{
  margin-top:6px;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:4px;
  text-align:left;
}
.qr-full-meta-item{
  border:1px solid #ece4e5;
  border-radius:9px;
  padding:6px;
  background:#fff;
}
.qr-full-meta-label{
  font-size:10px;
  color:#786f71;
  font-weight:700;
}
.qr-full-meta-value{
  margin-top:2px;
  font-size:11px;
  font-weight:900;
  color:#191617;
  line-height:1.15;
  word-break:break-word;
}
.qr-full-foot{
  padding:6px 10px 8px;
}
.qr-transfer-btn{
  width:100%;
  height:38px;
  border-radius:999px;
  font-size:14px;
  font-weight:900;
  position:relative;
  z-index:2;
}
.qr-burn-screen{
  position:fixed;
  inset:0;
  z-index:625;
  pointer-events:none;
  display:none !important;
  align-items:center;
  justify-content:center;
  background:transparent;
  overflow:hidden;
}
.qr-burn-screen.show{
  display:flex;
}
.qr-burn-screen-flame{
  position:absolute;
  opacity:0;
}
@keyframes qrFlameIdle{
  0%{ transform:translateY(0) scale(1); opacity:.8; }
  100%{ transform:translateY(-2px) scale(1.04); opacity:1; }
}
.qr-burn-screen.show .qr-burn-screen-flame.left{
  animation: burnScreenLeft 3s ease forwards;
}
.qr-burn-screen.show .qr-burn-screen-flame.center{
  animation: burnScreenCenter 3s ease forwards;
}
.qr-burn-screen.show .qr-burn-screen-flame.right{
  animation: burnScreenRight 3s ease forwards;
}
.qr-burn-screen-flame.left{
  left:-14vw;
  bottom:8vh;
  width:min(76vw, 840px);
}
.qr-burn-screen-flame.center{
  left:50%;
  bottom:4vh;
  width:min(88vw, 980px);
}
.qr-burn-screen-flame.right{
  right:-14vw;
  bottom:8vh;
  width:min(76vw, 840px);
}
@keyframes burnScreenCenter{
  0%{ transform:translateX(-50%) scale(.35); opacity:0; }
  35%{ transform:translateX(-50%) scale(3.8); opacity:.95; }
  75%{ transform:translateX(-50%) scale(6.8); opacity:1; }
  100%{ transform:translateX(-50%) scale(9.8); opacity:0; }
}
@keyframes burnScreenLeft{
  0%{ transform:scale(.35); opacity:0; }
  35%{ transform:scale(3.4); opacity:.92; }
  75%{ transform:scale(5.9); opacity:1; }
  100%{ transform:scale(8.9); opacity:0; }
}
@keyframes burnScreenRight{
  0%{ transform:scale(.35); opacity:0; }
  35%{ transform:scale(3.4); opacity:.92; }
  75%{ transform:scale(5.9); opacity:1; }
  100%{ transform:scale(8.9); opacity:0; }
}
.qr-transfer-menu{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.45);
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:630;
  padding:16px;
}
.qr-transfer-menu.hidden{display:none;}
.qr-transfer-menu-card{
  width:min(620px, calc(100% - 24px));
  background:#fff;
  border:1px solid #e0d9da;
  border-radius:20px;
  padding:18px;
  box-shadow:0 18px 48px rgba(0,0,0,.24);
  max-height:min(78dvh, 560px);
  overflow:auto;
}
.qr-transfer-menu-card .row{
  flex-wrap:wrap;
}
.qr-transfer-menu-card .button{
  flex:1 1 220px;
  min-height:42px;
}
.qr-card{
  background: #fff;
  border:1px solid var(--line);
  border-radius:18px;
  padding:16px;
  width:min(360px, 90vw);
  box-shadow: var(--shadow);
}
.qr-card-ticket{
  width:min(540px, 92vw);
  background:transparent;
  border:none;
  box-shadow:none;
  padding:10px;
}
.qrbox{
  display:grid;
  place-items:center;
  padding:12px;
  border-radius:14px;
  border:1px dashed #b6acae;
  background: #faf8f8;
}
.ticket-frame{
  position:relative;
  width:100%;
  aspect-ratio:1080 / 1420;
  border-radius:18px;
  overflow:hidden;
  background: #e5e5e5 url("../img/boleto2.jpg") center center / cover no-repeat;
  border:1px solid #d4d4d4;
  padding:clamp(16px, 3vw, 28px);
  display:flex;
  align-items:center;
  justify-content:center;
}
.ticket-frame-type{
  position:absolute;
  top:18%;
  left:50%;
  transform:translateX(-50%);
  color:#1f1f1f;
  font-weight:900;
  letter-spacing:.9px;
  font-size:clamp(14px, 2.6vw, 22px);
  text-transform:uppercase;
  text-shadow:0 1px 0 rgba(255,255,255,.28);
}
.ticket-frame-content{
  width:min(82%, 430px);
  height:auto;
  display:flex;
  align-items:center;
  justify-content:center;
}
.ticket-frame-right{
  width:100%;
  max-width:390px;
  border:none;
  background:#ffffff;
  border-radius:16px;
  padding:clamp(10px, 2.1vw, 16px);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:7px;
  margin-top:clamp(82px, 12.5vw, 130px);
}
.ticket-qr-wrap{
  width:min(100%, 280px);
  background:transparent;
  border-radius:0;
  padding:0;
  box-shadow:none;
}
.ticket-qr-wrap canvas{
  width:100%;
  height:auto;
  display:block;
}
.ticket-info-title{
  margin-top:2px;
  color:#171717;
  font-weight:800;
  text-align:center;
  font-size:clamp(12px, 1.35vw, 16px);
}
.ticket-info-line{
  color:#2e2e2e;
  text-align:center;
  font-size:clamp(11px, 1.15vw, 13px);
  line-height:1.25;
  word-break:break-word;
}
.ticket-code-line{
  color:#121212;
}

@media (min-width: 768px){
  .qr-card-ticket{
    width:min(430px, 86vw);
    padding:6px;
  }
  .ticket-frame-right{
    max-width:340px;
    margin-top:74px;
  }
  .ticket-qr-wrap{
    width:min(100%, 246px);
  }
}

.notif-panel{
  position:fixed;
  right:12px;
  top:84px;
  width:min(420px, calc(100vw - 24px));
  max-height:min(70vh, 620px);
  overflow:auto;
  background:#fff;
  border:1px solid #ddd4d5;
  border-radius:14px;
  box-shadow:0 18px 38px rgba(0,0,0,.22);
  z-index:130;
  display:none;
}
.notif-panel.show{display:block;}
.notif-item{padding:10px 12px; border-bottom:1px solid #eee7e8; cursor:pointer;}
.notif-item:hover{background: transparent;}
.notif-item:last-child{border-bottom:none;}
.notif-actions{margin-top:8px; display:flex; gap:8px; flex-wrap:wrap;}
.notif-chip{font-size:11px; padding:4px 8px;}
.notif-chip.pending{background: rgba(184,122,2,.12); border-color: rgba(184,122,2,.35); color:#7a5000;}
.notif-chip.accepted{background: rgba(27,143,88,.12); border-color: rgba(27,143,88,.35); color:#0f6a3f;}
.notif-chip.rejected{background: rgba(185,31,29,.12); border-color: rgba(185,31,29,.35); color:#8b1816;}
.chip{
  display:inline-flex; gap:6px; align-items:center;
  padding:6px 10px;
  border-radius:12px;
  background: #fff;
  border:1px solid var(--line);
  font-size:12px; color:var(--muted);
}

.menu-settings{margin-top:8px;}
.menu-settings label{margin-top:8px; color:#ddd3d4;}
.menu-settings select{width:100%; background:#fff; color:#0b0708;}

.admin-shell{
  max-width: 980px;
}
.admin-list-card{
  margin-top:14px;
}
.admin-textarea{
  width:100%;
  min-height:120px;
  padding:12px;
  border-radius:14px;
  border:1px solid #d9d0d1;
  background:#fff;
  color:var(--text);
  outline:none;
  resize:vertical;
}
.admin-textarea:focus{
  border-color:#c92724;
  box-shadow: 0 0 0 3px rgba(201,39,36,.12);
}
.admin-textarea-sm{
  min-height:84px;
}

.scan-shell{
  max-width: 900px;
}
.scan-card{
  max-width: 760px;
  margin: 0 auto;
}
.scan-start-btn{
  width:100%;
  min-height:58px;
  font-size:1.08rem;
  font-weight:900;
}
.scan-reader{
  width:100%;
  margin-top:12px;
}
.scan-result{
  margin-top:12px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#faf8f8;
  padding:12px;
}
.scan-status{
  font-size:1rem;
  font-weight:900;
}
.scan-status.ok{
  color:var(--ok);
}
.scan-status.err{
  color:var(--danger);
}
.scan-details{
  margin-top:8px;
  line-height:1.45;
}
.scan-photo{
  margin-top:10px;
  width:100%;
  max-height:260px;
  object-fit:cover;
  border-radius:12px;
  border:1px solid var(--line);
  background:#fff;
}
.scan-exit-block{
  margin-top:8px;
  padding:12px;
  border:1px solid rgba(201,39,36,.35);
  border-radius:14px;
  background:rgba(201,39,36,.06);
}
.scan-exit-title{
  font-weight:900;
  color:#8f1917;
  letter-spacing:.2px;
  margin-bottom:8px;
}
.scan-exit-btn{
  background:#c92724;
  border-color:#c92724;
  color:#fff;
}
.scan-exit-btn:hover{
  background:#b72220;
  border-color:#b72220;
}
.scan-exit-manual-btn{
  border-color:#c92724;
  color:#8f1917;
  background:#fff;
}
.scan-manual{
  margin-top:12px;
}
.scan-manual input{
  flex:1 1 280px;
}
.scan-manual .button{
  flex:0 0 auto;
}
.scan-log{
  margin-top:12px;
  font-size:14px;
}

.staff-topbar{
  align-items:center;
}
.staff-auth-pill{
  margin-left:auto;
  max-width:min(46vw, 280px);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.staff-page{
  max-width:920px;
}
.staff-backbar{
  max-width:760px;
  margin:0 auto 12px;
  display:flex;
  align-items:flex-start;
  gap:12px;
}
.staff-backbar-wide{
  max-width:980px;
}
.staff-page-head{
  display:grid;
  gap:4px;
  min-width:0;
}
.staff-page-title{
  font-size:1.12rem;
  font-weight:900;
  line-height:1.2;
}
.staff-page-copy{
  color:var(--muted);
  font-size:.92rem;
  line-height:1.35;
}
.staff-scan-card{
  padding-top:14px;
}

@media (max-width: 560px){
  .ticket-hero-logo{
    width:64px;
    height:64px;
  }
  .ticket-brand-name{
    font-size:.95rem;
  }
  .ticket-main-right{
    gap:6px;
  }
  .ticket-frame{
    padding:14px;
  }
  .ticket-frame-content{
    width:84%;
  }
  .staff-auth-pill{
    max-width:54vw;
  }
  .staff-backbar{
    gap:10px;
  }
  .staff-page-title{
    font-size:1.02rem;
  }
  .staff-page-copy{
    font-size:.86rem;
  }
  .ticket-frame-right{
    max-width:320px;
    border-radius:14px;
    padding:8px;
    margin-top:78px;
  }
  .ticket-qr-wrap{
    width:min(100%, 210px);
    padding:0;
  }
  .ticket-frame-type{
    top:18.5%;
  }
  .qr-full-main{
    padding:6px 8px 5px;
  }
  .qr-full-qr-wrap{
    width:min(286px, 84vw);
  }
  .qr-burn-flame{
    width:84px;
  }
  .qr-burn-flame-side{
    width:74px;
  }
  .qr-full-meta-value{
    font-size:10px;
  }
  .qr-transfer-btn{
    height:36px;
    font-size:13px;
  }
}

/* iPhone mini / pantallas muy compactas */
@media (max-width: 380px) and (max-height: 820px){
  .qr-fullscreen{
    padding:calc(env(safe-area-inset-top, 0px) + 42px) 2px calc(env(safe-area-inset-bottom, 0px) + 136px);
    background:linear-gradient(180deg,#141313 0%, #0f0d0d 7.5%, #f4f2f2 7.6%, #f4f2f2 100%);
  }
  .qr-full-back{
    top:calc(env(safe-area-inset-top, 0px) + 0px);
    left:6px;
    width:40px;
    height:40px;
    font-size:32px;
  }
  .qr-ticket-stage{
    width:min(520px, calc(100vw - 6px));
  }
  .qr-full-headbar{
    height:34px;
  }
  .qr-full-head-logo{
    width:26px;
    height:26px;
  }
  .qr-full-head-type{
    margin-left:-26px;
    font-size:12px;
    letter-spacing:.65px;
  }
  .qr-full-main{
    padding:5px 7px 4px;
  }
  .qr-full-event{
    font-size:13px;
  }
  .qr-full-seat{
    font-size:10px;
  }
  .qr-full-qr-wrap{
    width:min(272px, 80vw);
    margin-top:4px;
  }
  .qr-time-wrap{
    width:auto;
  }
  .qr-time-text{
    font-size:10px;
  }
  .qr-full-code{
    font-size:9px;
  }
  .qr-full-meta{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:3px;
  }
  .qr-full-meta-item{
    padding:5px;
  }
  .qr-full-meta-label{
    font-size:9px;
  }
  .qr-full-meta-value{
    font-size:10px;
  }
  .qr-burn-flame{
    width:82px;
  }
  .qr-burn-flame-side{
    width:72px;
  }
  .qr-transfer-btn{
    height:34px;
    font-size:12px;
  }
}

/* iPhone Pro Max / pantallas altas y anchas */
@media (min-width: 428px) and (max-width: 460px) and (min-height: 880px){
  .qr-fullscreen{
    background:linear-gradient(180deg,#141313 0%, #0f0d0d 10.5%, #f4f2f2 10.6%, #f4f2f2 100%);
    padding:calc(env(safe-area-inset-top, 0px) + 46px) 6px calc(env(safe-area-inset-bottom, 0px) + 124px);
  }
  .qr-full-back{
    top:calc(env(safe-area-inset-top, 0px) + 2px);
  }
  .qr-ticket-stage{
    width:min(600px, calc(100vw - 14px));
  }
  .qr-full-headbar{
    height:40px;
  }
  .qr-full-head-type{
    font-size:15px;
  }
  .qr-full-main{
    padding:7px 11px 7px;
  }
  .qr-full-qr-wrap{
    width:min(300px, 76vw);
  }
  .qr-time-wrap{
    width:auto;
  }
  .qr-burn-flame{
    width:88px;
  }
  .qr-burn-flame-side{
    width:78px;
  }
  .qr-full-meta-label{
    font-size:10px;
  }
  .qr-full-meta-value{
    font-size:12px;
  }
  .qr-transfer-btn{
    height:40px;
    font-size:14px;
  }
}

/* Tablet vertical/horizontal */
@media (min-width: 768px) and (max-width: 1366px){
  .qr-fullscreen{
    padding:calc(env(safe-area-inset-top, 0px) + 50px) 14px 14px;
    background:linear-gradient(180deg,#141313 0%, #0f0d0d 11%, #f4f2f2 11.1%, #f4f2f2 100%);
  }
  .qr-ticket-stage{
    width:min(720px, calc(100vw - 36px));
  }
  .qr-ticket-full{
    width:min(700px, 100%);
    border-radius:20px;
  }
  .qr-full-headbar{
    height:46px;
    padding:0 14px;
  }
  .qr-full-head-logo{
    width:34px;
    height:34px;
  }
  .qr-full-head-type{
    margin-left:-34px;
    font-size:16px;
  }
  .qr-full-main{
    padding:10px 16px 10px;
  }
  .qr-full-event{
    font-size:17px;
  }
  .qr-full-seat{
    font-size:13px;
  }
  .qr-full-qr-wrap{
    width:min(373px, 54vw);
  }
  .qr-time-wrap{
    width:min(340px, 70%);
  }
  .qr-full-code{
    font-size:12px;
  }
  .qr-full-meta{
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:8px;
  }
  .qr-full-meta-item{
    padding:9px;
  }
  .qr-full-meta-label{
    font-size:11px;
  }
  .qr-full-meta-value{
    font-size:13px;
  }
  .qr-burn-flame{
    width:126px;
  }
  .qr-burn-flame-side{
    width:114px;
  }
  .qr-full-foot{
    padding:10px 16px 12px;
  }
  .qr-transfer-btn{
    height:44px;
    font-size:15px;
  }
}

@media (max-width: 560px){
  .qr-fullscreen{
    padding:calc(env(safe-area-inset-top, 0px) + 52px) 8px calc(env(safe-area-inset-bottom, 0px) + 128px);
    display:flex;
    align-items:flex-start;
    justify-content:flex-start;
    overscroll-behavior:contain;
  }
  .qr-ticket-stage{
    transform-origin:top center;
    margin:0 auto;
  }
  .qr-transfer-menu{
    align-items:center;
    padding:12px;
  }
  .qr-transfer-menu-card{
    width:min(420px, calc(100% - 12px));
    border-radius:18px;
    padding:16px 14px;
    max-height:min(72dvh, 520px);
  }
  .qr-transfer-menu-card .row{
    gap:10px !important;
  }
  .qr-transfer-menu-card .button{
    flex:1 1 100%;
    width:100%;
  }
}

/* Desktop ultra wide */
@media (min-width: 1600px){
  .qr-fullscreen{
    padding:calc(env(safe-area-inset-top, 0px) + 54px) 18px 16px;
    background:linear-gradient(180deg,#141313 0%, #0f0d0d 12%, #f4f2f2 12.1%, #f4f2f2 100%);
  }
  .qr-ticket-stage{
    width:min(760px, calc(100vw - 80px));
  }
  .qr-ticket-full{
    width:min(740px, 100%);
    border-radius:22px;
    box-shadow:0 20px 46px rgba(0,0,0,.22);
  }
  .qr-full-headbar{
    height:50px;
    padding:0 16px;
  }
  .qr-full-head-logo{
    width:38px;
    height:38px;
  }
  .qr-full-head-type{
    margin-left:-38px;
    font-size:17px;
    letter-spacing:.95px;
  }
  .qr-full-main{
    padding:12px 18px 12px;
  }
  .qr-full-event{
    font-size:18px;
  }
  .qr-full-seat{
    font-size:14px;
  }
  .qr-full-qr-wrap{
    width:min(403px, 44vw);
  }
  .qr-time-wrap{
    width:min(360px, 62%);
  }
  .qr-full-code{
    font-size:12px;
  }
  .qr-full-meta{
    gap:10px;
  }
  .qr-full-meta-item{
    padding:10px;
    border-radius:11px;
  }
  .qr-full-meta-label{
    font-size:12px;
  }
  .qr-full-meta-value{
    font-size:14px;
  }
  .qr-burn-flame{
    width:132px;
  }
  .qr-burn-flame-side{
    width:120px;
  }
  .qr-transfer-btn{
    height:46px;
    font-size:16px;
  }
}

/* Ajuste fino iPhone (notch / Dynamic Island) */
@supports (-webkit-touch-callout: none) {
  .topbar{
    padding-top: calc(env(safe-area-inset-top, 0px) + 2px);
  }
  .nav-panel{
    padding-top: calc(env(safe-area-inset-top, 0px) + 10px);
  }
}

/* Ajuste fino exclusivo para Boletos */
.tickets-page .qr-ticket-stage{
  display:block;
  margin:0 auto;
}

.tickets-page .qr-full-qr-wrap{
  width:min(284px, 79vw);
  margin-left:auto;
  margin-right:auto;
  justify-items:center;
}
