
:root{color-scheme:dark;--bg:#100f14;--paper:#19171f;--ink:#f7f3ff;--muted:#b8afc7;--line:#3e354c;--soft:#25202e;--blue:#b497ff;--link:#d4bfff;--sector-a:#eee6ff;--sector-b:#d4c2ef;--divider:#ab8ccd;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
*{box-sizing:border-box}body{margin:0;padding:24px 16px 40px;background:radial-gradient(ellipse at 50% 15%,#38204f60,transparent 55%),var(--bg);color:var(--ink);font-size:16px;line-height:1.5;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer;color:inherit;border:0;-webkit-tap-highlight-color:transparent}button:disabled{opacity:.5;cursor:wait}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #d0b7ff;outline-offset:4px}h1,h2,p{margin:0}h1{font-size:23px;font-weight:650;letter-spacing:-.8px}h2{font-size:26px;letter-spacing:-.9px;line-height:1.2}svg{display:block}button,input,select{touch-action:manipulation}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.demo-bar{max-width:432px;margin:0 auto 12px;display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;padding:0 8px;color:var(--muted);font-size:14px}.demo-note{width:100%;font-size:11px;font-weight:700;letter-spacing:1.8px;color:#d7c6f1;display:flex;justify-content:space-between;align-items:center}.demo-note span{font-size:12px;font-weight:400;letter-spacing:0;color:var(--muted)}.demo-bar label{display:flex;align-items:center;gap:10px;flex:1}.demo-bar select{background:#201c28;border:1px solid var(--line);border-radius:10px;color:var(--ink);padding:9px 30px 9px 12px;min-height:44px;max-width:200px;font-size:14px;flex:1}.demo-bar button{background:none;color:var(--link);min-height:44px;padding:8px;font-size:14px}
.app{width:100%;max-width:432px;margin:auto;overflow:hidden;border:1px solid #514060;border-radius:28px;background:linear-gradient(160deg,#211b2c 0,#17151d 45%);box-shadow:0 28px 90px #0004}header{height:88px;display:grid;grid-template-columns:44px 1fr 44px;gap:8px;align-items:center;padding:16px 20px}.brand{text-align:center}.brand>span{font-size:10px;letter-spacing:2.1px;color:#c2a9e3;font-weight:600}.brand h1{margin-top:2px}.icon-button{display:grid;place-items:center;width:44px;height:44px;background:#ffffff05;border:1px solid #ffffff14;border-radius:15px;font-size:26px;color:#e4d7fa;transition:background .2s}.icon-button:hover{background:#ffffff0e}.icon-button svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.help{font-size:20px}main{padding-bottom:12px}.wheel-caption{display:flex;align-items:center;justify-content:center;gap:8px;font-size:14px;color:var(--muted);margin:4px 0 12px}.live-dot{width:6px;height:6px;border-radius:50%;background:#bf9cf1;box-shadow:0 0 12px #b790ff55}
.scene{width:100%;max-width:358px;aspect-ratio:1;margin:0 auto;position:relative;padding:20px;display:grid;place-items:center}.wheel-stage{position:relative;width:100%;aspect-ratio:1;filter:drop-shadow(0 10px 20px #0003)}.wheel-stage::before{content:'';position:absolute;inset:-10px;border-radius:50%;border:1px solid #8864b35c}.wheel-stage::after{content:'';position:absolute;inset:-5px;border:1px solid #c2a5e02e;border-radius:50%;pointer-events:none}.wheel-disc{position:absolute;inset:0;border-radius:50%;border:7px solid #b695d6;outline:1px solid #e8d0ff80;overflow:hidden;transition:transform 4.1s cubic-bezier(.16,.7,.12,1)}.wheel-pointer{position:absolute;z-index:3;top:-15px;left:calc(50% - 12px);height:32px;width:24px;background:#f3e7ff;clip-path:polygon(0 0,100% 0,50% 100%);filter:drop-shadow(0 3px 3px #32145c55)}.wheel-hub{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:54px;height:54px;border:5px solid #bc9ade;border-radius:50%;display:grid;place-items:center;background:#292034;box-shadow:0 2px 10px #3c1c5d33;z-index:2;color:#edddff;font-size:24px}.wheel-label{position:absolute;width:23%;aspect-ratio:1;transform:translate(-50%,-50%)}.gift-visual{height:100%;width:100%;display:grid;place-items:center;color:#846a9e;font-size:30px;transition:transform 4.1s cubic-bezier(.16,.7,.12,1)}.gift-visual svg{width:100%;height:100%;overflow:visible}.still,.still .gift-visual{transition:none!important}.loader{width:24px;height:24px;border:2px solid var(--line);border-top-color:#cbb0ff;border-radius:50%;animation:load 1s linear infinite}@keyframes load{to{transform:rotate(360deg)}}
.action{padding:18px 24px 10px;text-align:center}.offer{font-size:19px;font-weight:600;line-height:1.35;letter-spacing:-.4px;margin-bottom:18px}.primary{width:100%;background:linear-gradient(105deg,#d3b9ff,#b98bf2);color:#281336;border:1px solid #e5cfff80;min-height:56px;padding:15px 20px;border-radius:16px;font-size:17px;font-weight:700;box-shadow:0 6px 24px #a568e51c;transition:filter .2s,transform .2s}.primary:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px)}.primary:active:not(:disabled){transform:translateY(1px)}.subtle{font-size:14px;color:var(--muted);margin:14px 0 2px}.text-button{background:none;color:var(--link);min-height:44px;padding:10px 8px;font-size:14px}.admin-tools{padding:0 24px}.nft-names{display:none}.error{padding:16px;margin:16px;border:1px solid #b77991;color:#ffc3d7;border-radius:12px;font-size:14px}
.content{padding:8px 24px 24px}.content>h2{margin:24px 0 12px;font-size:22px}.content>p{margin:12px 0 20px;font-size:14px;color:var(--muted)}.muted{font-size:14px;color:var(--muted)}.friends{padding:18px;background:#b08bdd0d;border:1px solid var(--line);border-radius:16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.friends span{font-size:14px;color:var(--muted);display:block}.friends strong{font-size:32px;font-weight:600}.secondary{background:#33283f;border:1px solid #78608f;color:#f2e7ff;border-radius:12px;min-height:48px;padding:12px 14px;font-size:14px;font-weight:600;transition:background .2s}.secondary:hover{background:#443253}#gift-tasks{margin-bottom:20px}#gift-conditions{margin:16px 0;color:var(--muted);font-size:14px}.history-card{display:flex;gap:16px;padding:20px 0;border-bottom:1px solid var(--line)}.history-icon{background:#30263b;width:56px;height:56px;border-radius:16px;display:grid;place-items:center;font-size:32px;flex-shrink:0}.history-body{flex:1;min-width:0}.history-body h2{font-size:18px;margin:0 0 6px}.history-body p,.history-body small{font-size:14px;color:var(--muted)}.history-body small{display:block;overflow-wrap:anywhere;margin-top:8px}.history-body button{margin-top:12px}.empty{text-align:center;padding:32px 8px;margin:20px 0}.empty strong{display:block;font-size:20px;margin-bottom:8px}.empty p{font-size:14px;color:var(--muted)}.odds-head,.odds-row{display:grid;grid-template-columns:1fr 65px 65px;gap:8px;padding:14px 0;border-bottom:1px solid var(--line);font-size:14px}.odds-head{color:var(--muted)}.odds-row span:not(:first-child),.odds-head span:not(:first-child){text-align:right}
dialog{padding:36px 24px 24px;background:linear-gradient(155deg,#292033,#19151f);color:var(--ink);border:1px solid #6b527f;border-radius:24px;width:calc(100% - 32px);max-width:400px;max-height:90dvh;overflow:auto;box-shadow:0 28px 100px #0007}dialog::backdrop{background:#09060ec9;backdrop-filter:blur(10px)}dialog form{margin:0}.close{position:absolute;top:8px;right:8px;width:44px;height:44px;display:grid;place-items:center;background:none;color:var(--muted);font-size:26px;border-radius:12px}dialog p{font-size:14px;color:var(--muted);margin:12px 0 20px}dialog>.primary{margin-top:12px}dialog>.text-button{width:100%}.result-icon{width:148px;height:148px;margin:0 auto 12px;display:grid;place-items:center;font-size:72px;position:relative}.result-icon::before{content:'';position:absolute;inset:-10px;border-radius:50%;background:radial-gradient(circle,#ad6de725,transparent 70%);z-index:-1}.result-icon svg{width:148px!important;height:148px!important;overflow:visible}.result-eyebrow{font-size:10px;font-weight:700;color:#c7a7e7;letter-spacing:2px;margin-bottom:8px}#result-dialog{text-align:center}#result-dialog h2{font-size:30px}.terms{background:#bd96e60b;border:1px solid #81609850;padding:16px;border-radius:16px;text-align:left}.terms strong{font-size:14px;font-weight:600}.terms p{margin:8px 0 0;line-height:1.6}#result-tasks{margin:20px 0 8px}.task-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.task-actions .secondary{flex:1 1 125px}.text-input{display:block;width:100%;padding:13px 14px;color:var(--ink);background:#201a28;border:1px solid #7c6390;border-radius:12px;margin-top:8px;font-size:16px}label{font-size:14px}.toast{position:fixed;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:calc(100% - 32px);max-width:400px;background:#e2cdf9;color:#2a153e;padding:16px 20px;border-radius:16px;font-size:14px;z-index:99;box-shadow:0 12px 32px #0005}
@media(max-width:460px){body{padding:12px 10px 24px}.demo-bar{padding:0 8px;margin-bottom:10px}.app{border-radius:24px}header{height:78px;padding:12px 18px}.scene{max-width:326px;padding:18px}.action{padding:12px 22px 8px}.offer{font-size:18px;margin-bottom:16px}.wheel-caption{margin:0 0 8px}}@media(max-width:350px){.scene{max-width:280px}.demo-bar{gap:4px}.demo-bar select{max-width:160px}.task-actions .secondary{flex-basis:100%}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
.offer strong{font-weight:750}.offer-detail{display:block;font-size:14px;font-weight:400;letter-spacing:0;color:var(--muted);margin-top:6px}
.pool-note{font-size:14px;line-height:1.5;color:var(--muted);margin:-8px 0 16px}.action .offer{margin-bottom:18px}
/* Stable local gift pictures. Overlay layers never affect wheel geometry. */
.gift-visual,.result-icon{position:relative;isolation:isolate}
.gift-still,.gift-animation{display:grid;place-items:center;width:100%;height:100%;min-width:0;min-height:0}
.gift-still img{display:block;width:100%;height:100%;object-fit:contain}
.gift-animation{position:absolute;inset:0}
.gift-animation svg{display:block;width:100%!important;height:100%!important}
.gift-still[hidden],.gift-animation[hidden]{display:none!important}
