@keyframes duja-rise{from{opacity:0;transform:translateY(12px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes duja-glow{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@keyframes duja-pop{0%{transform:scale(.96);opacity:.65}100%{transform:scale(1);opacity:1}}
body{background-size:180% 180%;animation:duja-glow 22s ease-in-out infinite}
.glass,.event-card,.guest-card{animation:duja-rise .48s cubic-bezier(.2,.75,.25,1) both}
.stat:nth-child(2),.event-item:nth-child(2){animation-delay:.05s}.stat:nth-child(3),.event-item:nth-child(3){animation-delay:.1s}.stat:nth-child(4),.event-item:nth-child(4){animation-delay:.15s}
.btn{transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}.btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px #174a7a2b;filter:brightness(1.04)}.btn:active{transform:translateY(0) scale(.98)}
nav button{transition:background .2s ease,color .2s ease,transform .2s ease}nav button:hover{transform:translateX(-3px)}
.event-item{transition:transform .22s ease,box-shadow .22s ease}.event-item:hover{transform:translateY(-4px);box-shadow:0 28px 75px #0b2b4f38}
.progress i{transition:width .65s cubic-bezier(.2,.75,.25,1)}.result-success,.result-error{animation:duja-pop .25s ease both}
.guest-card .guest-logo{transition:transform .35s ease}.guest-card .guest-logo:hover{transform:rotate(-4deg) scale(1.04)}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
.vip-banner{display:inline-flex;align-items:center;justify-content:center;margin:14px auto 0;padding:8px 20px;border-radius:999px;background:linear-gradient(135deg,#f9e5a7,#d4a73f);color:#4e370a;font-size:17px;font-weight:800;letter-spacing:.04em;box-shadow:0 8px 25px #78551635;animation:duja-pop .35s ease both}
.vip-pill{display:inline-flex;vertical-align:middle;margin-inline-start:8px;padding:3px 9px;border-radius:999px;background:#f4dda0;color:#5b400a;font-size:11px;font-weight:800;letter-spacing:.03em}
.check-row{display:flex!important;align-items:center;gap:10px}.check-row input{width:auto!important;min-width:18px;height:18px;accent-color:#bd8729}
.pill.expired{background:#fff0ed;color:#a94737}.invite-expiry{margin:16px 0;padding:10px 14px;border-radius:12px;background:#eef5ff;color:#235c9b;font-size:14px}.guest-card .result-success .btn{display:inline-flex;margin-top:10px;text-decoration:none}.guest-card button:disabled{opacity:.65;cursor:wait}
.ticket-preview{width:min(520px,100%);max-height:none;border:1px solid #d9e5f1;border-radius:24px;box-shadow:0 20px 55px #0d345b3d}.guest-card:has(.ticket-preview){width:min(650px,100%)}.ticket-actions{margin-top:20px}
.manual-code{display:grid;gap:5px;margin:20px 0 10px;padding:18px;border:1px solid #c7dcf0;border-radius:18px;background:#f4f9ff;color:#315579}.manual-code span{font-size:13px;font-weight:700}.manual-code strong{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:clamp(20px,5vw,28px);letter-spacing:.08em;color:#173d6c;user-select:all}.manual-code small{color:#6c7b8f}
.admin-ticket-preview{display:block;width:min(300px,100%);margin:14px auto;border-radius:18px;box-shadow:0 12px 28px #173d6c30}.admin-ticket-actions{justify-content:center;flex-wrap:wrap}.admin-ticket-actions a{text-decoration:none}.panel-head .actions,.table-wrap .actions{flex-wrap:wrap}
.panel-head .actions a.btn{display:inline-flex;align-items:center;text-decoration:none}.panel-head{flex-wrap:wrap}
.btn.danger{background:#fff1ef;color:#a23838;border:1px solid #efc7c4}.btn.danger:hover{background:#ffe4df;box-shadow:0 7px 18px #a2383826}
