/* Qui Quo rewards — QR surface (white), management screens reuse editorial portal styles */
.qqx{--nv:#14213d;--pk:#f42d91;--cy:#20c4f4;--or:#ff821c;--soft:#f3f8fc;color:var(--nv);background:#fff;font-family:Arial,Helvetica,sans-serif}
.qqx-page{background:#fff;min-height:100dvh;padding:0 0 96px}
.qqx-shell{max-width:480px;margin:0 auto;padding:14px 16px}
.qqx-top{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0 14px}
.qqx-top img{height:38px;width:auto}
.qqx-tag{font-weight:900;letter-spacing:.16em;font-size:12px;color:var(--nv)}.qqx-tag i{color:var(--pk);font-style:normal}
.qqx-icon{width:42px;height:42px;border-radius:50%;border:2px solid var(--nv);background:#fff;display:grid;place-items:center;cursor:pointer;color:var(--nv)}
.qqx-icon svg,.qqx-nav svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.qqx-art{border-radius:20px;overflow:hidden;background:var(--soft);border:1px solid #e3ebf3}
.qqx-art img{display:block;width:100%;height:auto;max-height:70vh;object-fit:contain}
.qqx-art.empty{padding:34px 18px;text-align:center}
.qqx-venue{display:flex;align-items:center;gap:10px;margin:12px 2px 18px}.qqx-venue img{width:40px;height:40px;object-fit:contain;border-radius:10px;border:1px solid #e3ebf3;background:#fff}
.qqx-venue b{font-size:18px;letter-spacing:-.02em}
.qqx-label{display:flex;align-items:center;gap:8px;font-weight:900;font-size:12px;letter-spacing:.16em;margin:6px 0 10px}.qqx-label:before{content:'';width:10px;height:10px;border-radius:3px;background:var(--cy)}
.qqx-card{border:2px solid var(--nv);border-radius:22px;padding:16px;background:#fff;box-shadow:0 8px 0 var(--cy)}
.qqx-sponsor-media{border-radius:14px;overflow:hidden;background:var(--soft);margin-bottom:12px}.qqx-sponsor-media img,.qqx-sponsor-media video{display:block;width:100%;max-height:340px;object-fit:contain}
.qqx-prov{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:700}.qqx-prov img{width:30px;height:30px;border-radius:8px;object-fit:contain;border:1px solid #e3ebf3}
.qqx h2,.qqx h3{color:var(--nv);letter-spacing:-.03em;margin:8px 0}
.qqx p{line-height:1.45}
.qqx-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:var(--pk);color:#fff;font-weight:900;letter-spacing:.04em;text-transform:uppercase;padding:15px 22px;font-size:15px;cursor:pointer;width:100%;box-shadow:0 6px 16px rgba(244,45,145,.28);transition:transform .15s ease,opacity .15s}
.qqx-btn:hover{transform:translateY(-1px)}.qqx-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.qqx-btn.ghost{background:#fff;color:var(--nv);border:2px solid var(--nv);box-shadow:none}
.qqx-btn.small{width:auto;padding:9px 14px;font-size:12px}
.qqx :focus-visible{outline:3px solid var(--cy);outline-offset:3px}
.qqx-game{margin-top:16px}.qqx-game h3{text-align:center;text-transform:uppercase;font-size:22px}
.qqx-hint{text-align:center;font-size:13px;color:#4a5878;margin:4px 0 12px}
/* scratch */
.qqx-scratch{position:relative;aspect-ratio:16/10;border-radius:18px;overflow:hidden;background:linear-gradient(135deg,#fff 0,#eafaff 100%);border:2px dashed var(--cy);touch-action:none}
.qqx-scratch .under{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:16px;font-weight:900;font-size:22px}
.qqx-scratch canvas{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;transition:opacity .5s}
.qqx-scratch.done canvas{opacity:0}
/* wheel */
.qqx-wheelwrap{position:relative;width:min(300px,82vw);margin:6px auto 14px;aspect-ratio:1}
.qqx-wheel{width:100%;height:100%;border-radius:50%;border:6px solid var(--nv);background:conic-gradient(var(--pk) 0 60deg,var(--or) 60deg 120deg,var(--cy) 120deg 180deg,var(--pk) 180deg 240deg,var(--or) 240deg 300deg,var(--cy) 300deg 360deg);position:relative;transition:transform 4.2s cubic-bezier(.12,.75,.12,1);cursor:pointer;border-color:var(--nv)}
.qqx-wheel span{position:absolute;left:50%;top:50%;transform-origin:0 0;font-weight:900;font-size:12px;color:#fff;letter-spacing:.08em;text-shadow:0 1px 2px rgba(20,33,61,.4)}
.qqx-wheel.spinning{animation:qqxspin .7s linear infinite;transition:none}
@keyframes qqxspin{to{transform:rotate(360deg)}}
.qqx-pointer{position:absolute;left:50%;top:-14px;transform:translateX(-50%);width:0;height:0;border:14px solid transparent;border-top:24px solid var(--nv);z-index:2}
.qqx-hub{position:absolute;inset:39%;border-radius:50%;background:#fff;border:4px solid var(--nv);display:grid;place-items:center;font-weight:900;font-size:13px;z-index:1}
/* boxes / cards */
.qqx-three{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;perspective:900px}
.qqx-box{border:0;background:none;padding:0;cursor:pointer;position:relative;aspect-ratio:1/1.05;transition:transform .2s}
.qqx-box:hover:not(:disabled){transform:translateY(-4px) rotate(-2deg)}
.qqx-box .lid,.qqx-box .body{position:absolute;left:4%;right:4%;border-radius:12px;border:3px solid var(--nv)}
.qqx-box .body{bottom:0;height:62%;display:grid;place-items:center;color:#fff;font-weight:900;font-size:28px}
.qqx-box .lid{top:12%;height:26%;transition:transform .7s cubic-bezier(.3,1.6,.5,1);z-index:2}
.qqx-box .body:after{content:'';position:absolute;left:44%;width:12%;top:0;bottom:0;background:rgba(255,255,255,.55)}
.qqx-box.c0 .lid,.qqx-box.c0 .body{background:var(--pk)}.qqx-box.c1 .lid,.qqx-box.c1 .body{background:var(--cy)}.qqx-box.c2 .lid,.qqx-box.c2 .body{background:var(--or)}
.qqx-box.open .lid{transform:translateY(-55%) rotate(-24deg)}
.qqx-box.shake{animation:qqxshake .45s ease-in-out infinite}
@keyframes qqxshake{25%{transform:rotate(-4deg)}75%{transform:rotate(4deg)}}
.qqx-box:disabled:not(.open):not(.shake),.qqx-flip:disabled:not(.flipped):not(.shake){opacity:.45}
.qqx-flip{border:0;background:none;padding:0;aspect-ratio:2/3;cursor:pointer;position:relative;transform-style:preserve-3d;transition:transform .8s cubic-bezier(.4,.1,.2,1)}
.qqx-flip .face{position:absolute;inset:0;border-radius:14px;border:3px solid var(--nv);backface-visibility:hidden;display:grid;place-items:center;padding:8px;font-weight:900;font-size:13px;text-align:center}
.qqx-flip .back{background:repeating-linear-gradient(45deg,var(--pk) 0 10px,#ff5aaa 10px 20px);color:#fff;font-size:30px}
.qqx-flip .front{background:#fff;transform:rotateY(180deg);color:var(--nv)}
.qqx-flip.flipped{transform:rotateY(180deg)}.qqx-flip.shake{animation:qqxshake .45s infinite}
/* result */
.qqx-result{margin-top:18px;border-radius:22px;padding:20px;text-align:center;border:2px solid var(--nv);position:relative;overflow:hidden;animation:qqxpop .5s cubic-bezier(.3,1.5,.5,1)}
@keyframes qqxpop{from{transform:scale(.85);opacity:0}}
.qqx-result.prize{box-shadow:0 8px 0 var(--pk)}.qqx-result.points{box-shadow:0 8px 0 var(--or)}.qqx-result.promotion{box-shadow:0 8px 0 var(--cy)}
.qqx-big{font-size:clamp(21px,5.8vw,30px);font-weight:900;letter-spacing:-.04em;line-height:1.05;margin:6px 0;overflow-wrap:anywhere}
.qqx-result.points .qqx-big b{color:var(--or)}
.qqx-chip{display:inline-block;border-radius:999px;padding:4px 11px;font-size:11px;font-weight:900;letter-spacing:.1em;background:var(--soft);color:var(--nv);border:1px solid #d6e3ee}
.qqx-chip.pk{background:var(--pk);color:#fff;border-color:var(--pk)}.qqx-chip.or{background:var(--or);color:#fff;border-color:var(--or)}.qqx-chip.cy{background:var(--cy);color:var(--nv);border-color:var(--cy)}
.qqx-terms{text-align:left;font-size:13px;background:var(--soft);border-radius:12px;padding:10px 12px;margin:12px 0}
.qqx-terms dt{font-weight:900;margin-top:6px}.qqx-terms dd{margin:2px 0 0}
.qqx-token{font-family:ui-monospace,Menlo,monospace;font-size:20px;font-weight:900;letter-spacing:.08em;background:#fff;border:2px dashed var(--pk);border-radius:12px;padding:10px;margin:10px 0;word-break:break-all}
.qqx-confetti{position:absolute;inset:0;pointer-events:none}.qqx-confetti i{position:absolute;top:-12px;width:8px;height:14px;border-radius:2px;animation:qqxfall 1.8s ease-in forwards}
@keyframes qqxfall{to{transform:translateY(420px) rotate(540deg);opacity:0}}
.qqx-skel{height:14px;border-radius:8px;background:linear-gradient(90deg,#eef4f9,#f9fbfd,#eef4f9);background-size:200% 100%;animation:qqxsk 1.2s infinite;margin:10px 0}
@keyframes qqxsk{to{background-position:-200% 0}}
.qqx-nav{position:fixed;left:0;right:0;bottom:0;z-index:30;background:#fff;border-top:2px solid var(--nv);display:grid;grid-template-columns:repeat(3,1fr);padding:6px max(8px,env(safe-area-inset-left)) calc(6px + env(safe-area-inset-bottom))}
.qqx-nav button{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:3px;font-weight:900;font-size:11px;letter-spacing:.12em;color:var(--nv);padding:6px;cursor:pointer;border-radius:12px}
.qqx-nav button .sym{font-size:20px;line-height:1}
.qqx-nav button:nth-child(1){color:var(--pk)}.qqx-nav button:nth-child(2){color:var(--or)}.qqx-nav button:nth-child(3){color:#0a8fbf}
.qqx-nav button.on{background:var(--soft)}
.qqx-empty{text-align:center;padding:26px 16px;border:2px dashed #cfdbe6;border-radius:18px;color:#4a5878}
.qqx-empty svg{width:44px;height:44px;fill:none;stroke:var(--cy);stroke-width:1.8;margin-bottom:6px}
/* wallet */
.qqx-wallet{max-width:760px;margin:0 auto;padding:30px 16px 110px}
.qqx-wtabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:16px 0}
.qqx-wtabs button{border:2px solid var(--nv);border-radius:999px;background:#fff;padding:11px 6px;font-weight:900;letter-spacing:.1em;cursor:pointer;color:var(--nv)}
.qqx-wtabs button.on{background:var(--nv);color:#fff}
.qqx-group h4{font-size:12px;letter-spacing:.14em;text-transform:uppercase;margin:20px 0 8px}
.qqx-award{display:grid;grid-template-columns:64px 1fr;gap:12px;border:1.5px solid #d6e3ee;border-radius:16px;padding:12px;margin-bottom:10px;background:#fff}
.qqx-award img{width:64px;height:64px;object-fit:contain;border-radius:10px;background:var(--soft)}
.qqx-balance{border-radius:22px;background:var(--nv);color:#fff;padding:22px}.qqx-balance strong{display:block;font-size:46px;color:var(--or);letter-spacing:-.04em}
/* management */
.qqr-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:20px}
@media(max-width:860px){.qqr-grid{grid-template-columns:1fr}}
.qqr-row{border:2px solid #111;border-radius:5px;padding:14px;margin-bottom:12px;background:#fff}
.qqr-meter{height:8px;border-radius:5px;background:#eee;overflow:hidden;margin:8px 0}.qqr-meter i{display:block;height:100%;background:#ff821c}
.qqr-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.qqr-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media(max-width:560px){.qqr-two{grid-template-columns:1fr}}
.qqr-status{font-size:11px;font-weight:900;text-transform:uppercase;padding:3px 8px;border-radius:3px;border:1.5px solid #111}
.qqr-status.approved{background:#20c4f4}.qqr-status.pending{background:#fff3c4}.qqr-status.rejected{background:#f42d91;color:#fff}.qqr-status.paused{background:#eee}
.qqr-phone{width:min(390px,100%);margin:0 auto;border:10px solid #14213d;border-radius:38px;overflow:hidden;max-height:760px;overflow-y:auto;background:#fff}
.qqr-artprev{border-radius:16px;background:#f3f8fc;overflow:hidden;margin:10px 0}.qqr-artprev img{width:100%;max-height:320px;object-fit:contain;display:block}
.qqr-enh{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.qqr-error{display:block;color:#a32222;margin-top:6px;font-weight:700;line-height:1.4}
#qqrForm [aria-invalid="true"]{border:2px solid #a32222}
#qqrFormError{color:#8d1919;background:#fff0ee;border-left:4px solid #a32222;padding:12px;margin-bottom:12px}
#qqrFormError[hidden]{display:none}
@media(prefers-reduced-motion:reduce){.qqx *{animation:none!important;transition:none!important}.qqx-wheel.spinning{animation:none}}
.qqx-fixed{text-align:center;font-weight:900;letter-spacing:.04em;margin:12px 0}.qqx-fixed b{color:var(--pk)}
