:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#e9eef7;background:#0b1020}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at top,#1b2850,#0b1020 55%);padding:30px}
.container{max-width:1100px;margin:auto}.narrow{max-width:520px}.card,.wheel-card{background:rgba(20,28,51,.92);border:1px solid #293655;border-radius:22px;padding:28px;box-shadow:0 20px 60px rgba(0,0,0,.25);margin-bottom:24px}
.wheel-card{text-align:center}.badge{display:inline-block;padding:6px 12px;border-radius:999px;background:#24355f;color:#9fc1ff;font-size:12px;font-weight:800;letter-spacing:.08em}
h1{font-size:32px;margin:14px 0}h2{margin-top:8px}.muted{color:#9ba8c2}label{display:block;margin:18px 0 7px;font-weight:700}
input{width:100%;padding:13px 14px;border-radius:12px;border:1px solid #394968;background:#0e162a;color:#fff;font-size:15px}
input:focus{outline:2px solid #5d8dff;border-color:transparent}small{display:block;color:#8d9ab2;margin-top:7px}
.button{display:inline-block;border:0;border-radius:12px;padding:13px 18px;background:#4d7cff;color:white;text-decoration:none;font-weight:800;cursor:pointer;margin-top:20px}
.button:hover{filter:brightness(1.1)}.full{width:100%}.secondary{background:#27334d}.alert{padding:13px 15px;border-radius:12px;margin:15px 0}.alert.success{background:#123d2c;color:#8ff0bf}.alert.error{background:#481e28;color:#ff9dad}
.closed{padding:35px 15px;text-align:center}.big{font-size:55px}.wheel-wrap{position:relative;display:flex;justify-content:center;margin:25px auto}
canvas{max-width:100%;height:auto;border-radius:50%;filter:drop-shadow(0 20px 30px rgba(0,0,0,.3))}
.pointer{position:absolute;z-index:2;top:-6px;font-size:42px;text-shadow:0 4px 8px #000}.spin{font-size:20px;padding:16px 42px}.stats{color:#aab5ca}.winner{display:none;margin:25px auto 5px;padding:18px;border-radius:15px;background:#153c2e;font-size:22px;color:#a5f5c7}.winner.show{display:block}.admin-note{font-size:12px;color:#7f8ca5}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px}.topbar h1{margin:0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:12px;border-bottom:1px solid #293655}th{color:#aebbd1;font-size:13px}td{font-size:14px}a{color:#8fb0ff}.actions{display:flex;gap:10px}.status{padding:5px 8px;border-radius:8px;font-size:11px;font-weight:800}.active-status{background:#123d2c;color:#8ff0bf}.closed-status{background:#45202b;color:#ff9dad}.small-btn{background:#27334d;border:0;color:white;padding:7px 10px;border-radius:8px;cursor:pointer}code{color:#9eb3d9}
@media(max-width:650px){body{padding:14px}.card,.wheel-card{padding:20px}h1{font-size:25px}.topbar{align-items:flex-start;flex-direction:column}}

.reference-box{margin:18px 0;padding:14px 16px;border:1px solid #34466e;border-radius:14px;background:#101a31;text-align:left}
.reference-box strong{display:block;margin-bottom:7px}.reference-box a{font-size:14px}
.event-banner{height:190px;margin:18px 0;border-radius:16px;background-size:cover;background-position:center;border:1px solid #34466e}
.optional{font-size:12px;color:#8996ae;font-weight:500}
label strong{font-size:12px;color:#a9c0ff}

.countdown-card{
  margin-top:24px;
  padding:18px 14px 16px;
  border:1px solid #34466e;
  border-radius:18px;
  background:linear-gradient(145deg,#101a31,#172444);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 12px 30px rgba(0,0,0,.16);
  text-align:center;
}
.countdown-label{
  color:#9eb5df;
  font-size:11px;
  font-weight:900;
  letter-spacing:.12em;
  margin-bottom:12px;
}
.countdown-clock{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
}
.countdown-unit{
  min-width:68px;
  padding:9px 7px 7px;
  border-radius:12px;
  background:#0a1122;
  border:1px solid #2d3e63;
  box-shadow:inset 0 -5px 14px rgba(0,0,0,.22);
}
.countdown-unit span{
  display:block;
  font-family:"Courier New",monospace;
  font-size:28px;
  line-height:1;
  font-weight:900;
  letter-spacing:.04em;
  color:#f5f8ff;
  text-shadow:0 0 12px rgba(145,180,255,.35);
}
.countdown-unit small{
  margin-top:6px;
  color:#7183a6;
  font-size:8px;
  font-weight:900;
  letter-spacing:.1em;
}
.countdown-separator{
  font-family:"Courier New",monospace;
  font-size:25px;
  font-weight:900;
  color:#718ac0;
  margin-top:-15px;
}
.countdown-expired{
  display:none;
  margin-top:10px;
  color:#ff9dad;
  font-size:12px;
  font-weight:800;
}
.countdown-expired.show{display:block}
.countdown-card.expired{
  border-color:#6d3040;
  background:linear-gradient(145deg,#281522,#1a111b);
}
.submit-giveaway:disabled{
  opacity:.6;
  cursor:not-allowed;
}
@media(max-width:520px){
  .countdown-clock{gap:3px}
  .countdown-unit{min-width:56px;padding:8px 4px}
  .countdown-unit span{font-size:22px}
  .countdown-separator{font-size:19px}
}

.danger-link{background:transparent;border:0;padding:0;color:#ff8f9f;cursor:pointer;font:inherit;text-decoration:underline}
.actions form{display:inline;margin:0}
.current-background{margin-top:14px;padding:12px;border:1px solid #293a5e;border-radius:14px;background:#0d1528}
.current-background img{display:block;width:100%;max-height:220px;object-fit:cover;border-radius:10px;margin-top:8px}
.candidate{display:none;margin:24px auto 8px;padding:22px;max-width:620px;border:1px solid #415a8e;border-radius:18px;background:linear-gradient(145deg,#111c35,#1a294b);box-shadow:0 18px 45px rgba(0,0,0,.22)}
.candidate.show{display:block}.candidate-label{color:#93aad2;font-size:11px;font-weight:900;letter-spacing:.13em}
.candidate #candidateName{margin:8px 0 12px;font-size:28px;font-weight:900;color:#fff;overflow-wrap:anywhere}
.candidate-question{color:#b9c5db;font-weight:700;margin-bottom:16px}.candidate-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}
.button.confirm{background:#16865a}.button.reject{background:#8d3346}
.button.confirm:disabled,.button.reject:disabled{opacity:.55;cursor:not-allowed}
.confirmed-note{margin:20px auto 0;padding:14px 18px;max-width:620px;border-radius:14px;background:#123d2c;color:#9af0c2;font-weight:800}
@media(max-width:650px){.actions{flex-wrap:wrap}.candidate #candidateName{font-size:22px}}

.winner-details{
  margin:14px 0 0;
  padding:18px;
  border:1px solid #34466e;
  border-radius:16px;
  background:linear-gradient(145deg,#101b32,#162541);
  text-align:left;
}
.winner-details-title{
  margin-bottom:13px;
  color:#9eb5df;
  font-size:11px;
  font-weight:900;
  letter-spacing:.12em;
  text-align:center;
}
.winner-detail-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
}
.winner-detail-item{
  padding:12px;
  border:1px solid #2a3b5f;
  border-radius:11px;
  background:#0b1427;
}
.winner-detail-item span{
  display:block;
  margin-bottom:5px;
  color:#7183a6;
  font-size:10px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.06em;
}
.winner-detail-item strong,
.winner-detail-item a{
  color:#f5f8ff;
  font-size:14px;
  word-break:break-word;
}
.winner-detail-item a{
  color:#9ebcff;
}
.winner-wa strong{
  color:#53e6a1;
  font-size:17px;
  letter-spacing:.03em;
}
@media(max-width:600px){
  .winner-detail-grid{grid-template-columns:1fr}
}

.registered-panel{
  text-align:center;
  padding:16px 4px 4px;
}
.registered-icon{
  width:76px;
  height:76px;
  margin:4px auto 12px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  background:linear-gradient(145deg,#173f32,#205d45);
  border:1px solid #3a8b69;
  box-shadow:0 12px 30px rgba(0,0,0,.2);
  font-size:38px;
}
.registered-label{
  color:#70e7b0;
  font-size:11px;
  font-weight:900;
  letter-spacing:.12em;
}
.registered-panel h2{
  margin:8px 0 10px;
  font-size:26px;
}
.registered-message{
  max-width:430px;
  margin:0 auto;
  color:#b4c0d5;
  line-height:1.65;
}
.registered-wheel-btn{
  margin-top:16px;
}
.registered-note{
  margin:10px 0 0;
  color:#7e8ca7;
  font-size:11px;
}

.ip-info-wrapper {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

.ip-address {
    font-family: monospace;
    font-size: 13px;
}

.ip-info-btn {
    width: 19px;
    height: 19px;
    padding: 0;

    border-radius: 50%;
    border: 1px solid #40557d;

    background: #182640;
    color: #8fb5ff;

    font-size: 12px;
    font-weight: 700;

    cursor: pointer;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    transition: .15s ease;
}

.ip-info-btn:hover {
    background: #3478f6;
    color: white;
    border-color: #3478f6;
}

.ip-popover {
    position: absolute;
    z-index: 9999;

    left: 50%;
    bottom: calc(100% + 10px);

    width: 290px;

    padding: 15px;

    background: #111a30;
    border: 1px solid #34496d;
    border-radius: 12px;

    box-shadow:
        0 15px 40px rgba(0, 0, 0, .5);

    opacity: 0;
    visibility: hidden;

    transform: translate(-50%, 8px);

    transition:
        opacity .15s ease,
        transform .15s ease,
        visibility .15s ease;

    pointer-events: none;
}

.ip-info-wrapper:hover .ip-popover,
.ip-info-wrapper:focus-within .ip-popover {
    opacity: 1;
    visibility: visible;
    transform: translate(-50%, 0);
}

.ip-popover::after {
    content: "";

    position: absolute;

    left: 50%;
    bottom: -7px;

    width: 12px;
    height: 12px;

    background: #111a30;

    border-right: 1px solid #34496d;
    border-bottom: 1px solid #34496d;

    transform: translateX(-50%) rotate(45deg);
}

.ip-popover-title {
    font-size: 14px;
    font-weight: 700;

    color: #ffffff;

    margin-bottom: 10px;
    padding-bottom: 9px;

    border-bottom: 1px solid #273957;
}

.ip-detail {
    display: flex;
    justify-content: space-between;
    gap: 15px;

    padding: 5px 0;

    font-size: 12px;
}

.ip-detail-label {
    color: #8999b8;
}

.ip-detail-value {
    color: #eef3ff;
    font-weight: 600;

    text-align: right;
    max-width: 175px;
    overflow-wrap: anywhere;
}

.ip-loading {
    color: #9baaca;
    font-size: 12px;
}

.ip-error {
    color: #ff7188;
    font-size: 12px;
}

.ip-source {
    margin-top: 10px;
    padding-top: 8px;

    border-top: 1px solid #273957;

    font-size: 10px;
    color: #687b9d;
}

.winner-celebration{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;visibility:hidden;background:radial-gradient(circle at center,rgba(17,28,55,.78),rgba(5,9,20,.45) 48%,rgba(5,9,20,0) 78%);transition:opacity .3s ease,visibility .3s ease}
.winner-celebration.show{opacity:1;visibility:visible}
.celebration-content{text-align:center;padding:28px 42px;border:1px solid rgba(255,255,255,.25);border-radius:24px;background:linear-gradient(145deg,rgba(22,36,68,.97),rgba(9,16,32,.97));box-shadow:0 25px 80px rgba(0,0,0,.55),0 0 70px rgba(96,137,255,.2);transform:scale(.72);animation:celebrationPop .7s cubic-bezier(.17,.89,.32,1.35) forwards}
.celebration-emoji{font-size:34px;margin-bottom:5px}
.celebration-title{color:#ffd54a;font-size:42px;line-height:1;font-weight:1000;letter-spacing:.08em;text-shadow:0 0 24px rgba(255,213,74,.35)}
.celebration-subtitle{margin-top:9px;color:#9eb5df;font-size:11px;font-weight:900;letter-spacing:.2em}
.celebration-name{margin-top:9px;color:#fff;font-size:27px;font-weight:900;max-width:75vw;word-break:break-word}
.celebration-sparkles{margin-top:13px;font-size:24px;animation:sparklePulse .8s ease-in-out infinite alternate}
.confetti-piece{position:fixed;top:-22px;z-index:10000;width:9px;height:18px;border-radius:2px;pointer-events:none;animation:confettiFall linear forwards}
.celebration-particle{position:fixed;z-index:10001;pointer-events:none;font-size:27px;animation:emojiBurst 3.6s cubic-bezier(.2,.75,.25,1) forwards}
@keyframes celebrationPop{0%{transform:scale(.72) rotate(-2deg)}70%{transform:scale(1.05) rotate(1deg)}100%{transform:scale(1) rotate(0)}}
@keyframes sparklePulse{from{transform:scale(.92)}to{transform:scale(1.12)}}
@keyframes confettiFall{0%{top:-22px;opacity:1;transform:translateX(0) rotate(0deg)}100%{top:110vh;opacity:0;transform:translateX(var(--drift)) rotate(900deg)}}
@keyframes emojiBurst{0%{opacity:1;transform:translate(0,0) scale(.6) rotate(0)}18%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(1.25) rotate(360deg)}}
@media(max-width:600px){.celebration-content{padding:24px 25px}.celebration-title{font-size:32px}.celebration-name{font-size:21px}}
