
:root{font-family:Arial,sans-serif;color:#25202b;background:#fff7f5}*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:radial-gradient(circle at 5% 5%,#ffe5f2,transparent 40%),radial-gradient(circle at 95% 65%,#dcecfb,transparent 42%),#fff9f2}header{display:flex;align-items:center;justify-content:space-between;padding:10px 24px;background:#ffffffb8;border-bottom:1px solid #eadde0}.brand{display:flex;align-items:center;gap:12px}.brand img{width:52px;height:52px;object-fit:cover}.brand b{font-size:13px;letter-spacing:.15em}main{max-width:1060px;margin:auto;padding:20px;min-height:calc(100dvh - 79px);display:grid;place-items:center}.panel{text-align:center;background:#fffffff0;box-shadow:0 20px 70px #55344825;border:1px solid #fff;border-radius:30px;padding:clamp(22px,4vw,45px);width:min(100%,650px)}h1{font-size:clamp(38px,7vw,64px);font-family:Georgia,serif;margin:8px 0}h2{font-size:clamp(27px,4vw,40px);font-family:Georgia,serif;margin:4px 0 12px}.eyebrow{letter-spacing:.26em;text-transform:uppercase;font-size:11px;color:#936d78;font-weight:bold}p{line-height:1.5;color:#615862}.logo-large{width:130px;height:130px;object-fit:cover;border-radius:15px;box-shadow:0 12px 27px #0002}.button{background:#25202b;color:#fff;border:0;border-radius:99px;padding:16px 28px;font-size:16px;font-weight:bold;cursor:pointer;min-height:54px}.button:disabled{opacity:.5;cursor:default}.secondary{background:#fff;color:#25202b;border:1px solid #d6cbd1}.button:hover:not(:disabled){transform:translateY(-1px)}button:focus-visible,input:focus-visible{outline:3px solid #a67da8;outline-offset:2px}.hidden{display:none!important}.form{text-align:left;max-width:460px;margin:auto}.form label{display:block;font-weight:bold;font-size:14px;margin:18px 0 7px}.form input:not([type=checkbox]){border:1px solid #d4c8d0;border-radius:13px;padding:15px;width:100%;font-size:16px}.choice{display:flex;gap:10px}.choice button{flex:1}.check{display:flex;align-items:flex-start;gap:10px;margin:18px 0}.check input{width:20px;height:20px;flex:none}.check label{margin:0;font-weight:normal;line-height:1.5}.hint{font-size:13px}.error{color:#ac234c;font-weight:bold;min-height:1.5em}.wheel-wrap{position:relative;width:min(80vw,57dvh,540px);height:min(80vw,57dvh,540px);margin:14px auto;touch-action:none;cursor:grab}.wheel-wrap:active{cursor:grabbing}canvas#wheel{width:100%;height:100%;border-radius:50%;box-shadow:0 15px 35px #28203135;border:9px solid white}.pointer{position:absolute;z-index:3;left:50%;top:-13px;transform:translateX(-50%);width:0;height:0;border-left:18px solid transparent;border-right:18px solid transparent;border-top:37px solid #25202b;filter:drop-shadow(0 3px 3px #0006)}.hub{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#fff;width:24%;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;border:5px solid #fff;box-shadow:0 3px 14px #0005;pointer-events:none}.hub img{width:100%;height:100%;border-radius:50%;object-fit:cover}.prize{width:min(100%,340px);max-height:260px;object-fit:contain;border-radius:18px}.actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}#admin{position:fixed;inset:0;background:#1a1225aa;display:grid;place-items:center;z-index:20;padding:15px}#admin .panel{max-height:90dvh;overflow:auto;text-align:left;width:min(900px,100%)}table{border-collapse:collapse;width:100%;font-size:13px}td,th{border-bottom:1px solid #ddd;padding:9px;text-align:left}#confetti{position:fixed;inset:0;pointer-events:none;z-index:19}small{display:block;color:#796c79}footer{text-align:center;font-size:11px;color:#806f7f;padding:10px}@media(max-height:760px){.wheel-wrap{width:min(72vw,49dvh,440px);height:min(72vw,49dvh,440px)}main{padding:8px}.panel{padding:18px}}

/* Beauty Spin visual system */
:root{font-family:Arial,sans-serif;color:#32263a;background:#fbf5f5}
body{background:
 radial-gradient(ellipse 37% 33% at 2% 20%,#ffe1eb 0%,transparent 100%),
 radial-gradient(ellipse 33% 30% at 96% 11%,#e2dcf5 0%,transparent 100%),
 radial-gradient(ellipse 35% 34% at 91% 90%,#ffdfc8 0%,transparent 100%),
 radial-gradient(ellipse 34% 35% at 3% 93%,#e2f3ed 0%,transparent 100%),#fbf5f5;
 background-attachment:fixed}
body:before,body:after{content:'';position:fixed;pointer-events:none;border:1px solid #ffffffac;border-radius:50%;width:42vw;aspect-ratio:1;z-index:0}
body:before{left:-29vw;top:8vh}body:after{right:-29vw;bottom:-20vh}
header{position:relative;z-index:1;background:#fff9;border-bottom:1px solid #fff;backdrop-filter:blur(16px);padding:10px clamp(18px,4vw,50px)}
.brand img{border-radius:12px;width:44px;height:44px;box-shadow:0 4px 12px #3e24332b}.brand b{font-size:12px;letter-spacing:.23em}.brand small{font-size:10px;letter-spacing:.18em;margin-top:3px}
main{position:relative;z-index:1;max-width:1100px;min-height:calc(100dvh - 110px)}
.panel{position:relative;isolation:isolate;overflow:hidden;background:#fffc;backdrop-filter:blur(18px);border:1px solid #fff;border-radius:36px;box-shadow:0 28px 65px #6749651d,0 2px 7px #bd93a11a;padding:clamp(24px,4vw,48px);width:min(100%,700px)}
.panel:before{content:'';position:absolute;inset:12px;border:1px solid #d2b7c041;border-radius:27px;pointer-events:none;z-index:-1}
h1,h2{font-family:Georgia,'Times New Roman',serif;font-weight:normal;letter-spacing:-.035em;color:#3b283e}
h1{font-size:clamp(56px,9vw,94px);line-height:1.04;margin:19px 0 7px}h2{font-size:clamp(34px,5vw,50px);line-height:1.08}
.eyebrow{letter-spacing:.28em;color:#af6e86;font-size:11px}
p{color:#716777}#welcome p{font-family:Georgia,serif;font-style:italic;font-size:clamp(22px,3vw,28px);color:#80536f;margin:8px 0 34px}
.logo-large{width:118px;height:118px;border:6px solid #fff;border-radius:25px;box-shadow:0 16px 28px #653b562c;transform:rotate(-4deg)}
.button{background:linear-gradient(110deg,#a65c80,#804874 60%,#704776);box-shadow:0 10px 23px #a65c803b;color:#fff;letter-spacing:.08em;font-size:13px;padding:17px 32px;transition:transform .2s,box-shadow .2s}
.button:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 14px 28px #a65c8055}.button.secondary{color:#785b76;background:#fff;border:1px solid #e5d4df;box-shadow:none}
.form{max-width:470px}.form input:not([type=checkbox]){border:1px solid #e6d6e0;background:#fff;border-radius:15px}.check{background:#fcf5f8;padding:15px;border-radius:15px}.check input{accent-color:#a45f83}
#wheelScreen{width:min(100%,740px)}#wheelScreen h2{margin:7px 0}#wheelScreen p{margin:6px 0 8px}
.wheel-wrap{width:min(83vw,58dvh,535px);height:min(83vw,58dvh,535px);margin:14px auto 18px;filter:drop-shadow(0 18px 23px #6e4e6470)}
canvas#wheel{border:12px solid #fff;box-shadow:inset 0 0 0 5px #d7a3bc,0 0 0 3px #dba9bf,0 9px 30px #5e40502e}
.pointer{top:-18px;border-left:19px solid transparent;border-right:19px solid transparent;border-top:45px solid #8d4d76;filter:drop-shadow(0 4px 3px #0003)}
.hub{width:25%;border:7px solid #fff;box-shadow:0 0 0 3px #dba9bf,0 6px 16px #4f30464d}.hub img{object-fit:cover}
#result{background:radial-gradient(circle at 50% 36%,#fff 0%,#fff7fc 62%,#faf4fd 100%)}
#result .prize{width:min(100%,390px);max-height:300px;object-fit:contain;border-radius:20px;filter:drop-shadow(0 15px 17px #846e8255);margin:5px auto}
#result #prizeText{color:#995f7d;margin:12px 0 4px}#result p{margin:7px 0 25px}
#fullscreen{width:43px;height:43px;min-height:43px;padding:0;font-size:21px}footer{position:relative;z-index:1;letter-spacing:.1em}
@media(max-height:760px){.wheel-wrap{width:min(72vw,46dvh,425px);height:min(72vw,46dvh,425px)}.panel{padding:18px}h2{font-size:33px}}
@media(max-width:600px){.panel{border-radius:25px}.panel:before{inset:8px;border-radius:19px}main{padding:13px}.wheel-wrap{width:min(83vw,49dvh);height:min(83vw,49dvh)}}

/* Supplied photograph stays behind every application screen. */
html,body{min-height:100%;background-color:#d4b6ae}
body{background-image:url("bg.jpg");background-position:68% center;background-size:cover;background-repeat:no-repeat;background-attachment:fixed}
body:before{content:"";position:fixed;inset:0;width:auto;height:auto;aspect-ratio:auto;border:0;border-radius:0;background:linear-gradient(90deg,#fffaf3cf 0%,#fffaf3a6 34%,#fffaf320 63%,transparent 83%);z-index:0;pointer-events:none}
body:after{display:none}
main{position:relative;z-index:1;max-width:1450px;justify-items:start;padding-left:clamp(20px,5vw,85px)}
.panel,#result{background:#fffdf4e9;backdrop-filter:blur(14px);box-shadow:0 25px 60px #43233145}
header{background:#fffdf1de}footer{color:#392f38;text-shadow:0 1px 4px #fff}
.brand img{width:60px;height:60px;object-fit:contain;border-radius:0;background:#000}
.logo-large{transform:none;width:154px;height:154px;border:0;border-radius:0;object-fit:contain;background:#000}
.hub{width:33%}
@media(max-width:800px){body{background-position:71% center}body:before{background:#fffaf2a6}main{justify-items:center;padding:14px}.panel,#result{background:#fffdf5ef}}
@media(max-width:500px){body{background-position:73% center}body:before{background:#fffaf2c2}.logo-large{width:135px;height:135px}}

/* ---- Server version additions ---- */
.form input.code{font-size:28px;letter-spacing:.45em;text-align:center;font-weight:bold;padding:12px}
.code-row{display:flex;gap:10px;align-items:center}.code-row input{flex:1}
.code-row .state{width:34px;height:34px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:18px;background:#f3e9ef;color:#a0879a}
.code-row .state.ok{background:#dff3e6;color:#2e8b57}
.resend{background:none;border:0;color:#804874;text-decoration:underline;cursor:pointer;font-size:13px;padding:6px 0;margin:0}
.resend:disabled{color:#b6a7b2;text-decoration:none;cursor:default}
.sentto{font-size:13px;color:#8a7d88;margin:4px 0 0}
.privacy{font-size:12px;color:#8a7d88;margin-top:8px}.privacy a{color:#804874}
.button.loading{pointer-events:none;opacity:.7}.button.loading:after{content:'';display:inline-block;width:14px;height:14px;margin-left:10px;vertical-align:-2px;border:2px solid #fff8;border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.entry{font-size:13px;color:#8a7d88;margin-top:-12px!important}
#kioskBlock p{font-size:15px}
@media(max-height:900px){.form label{margin:12px 0 5px}.form input:not([type=checkbox]){padding:12px 14px}.check{margin:12px 0;padding:11px}#registration h2,#verify h2{margin-bottom:4px}}
