:root{
  --ink:#0b1f33;
  --muted:#64748b;
  --subtle:#8aa1b8;
  --line:#d9e8f7;
  --panel:rgba(255,255,255,.88);
  --panel-solid:#fff;
  --brand:#0b6fb3;
  --brand-2:#22a7e8;
  --brand-3:#074b83;
  --brand-soft:#eaf7ff;
  --cyan:#6ed7ff;
  --success:#0f9f6e;
  --danger:#dc3545;
  --warning:#f6b73c;
  --shadow:0 24px 70px rgba(7,75,131,.14);
  --shadow-2:0 14px 34px rgba(7,75,131,.11);
  --radius:26px;
  --font:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
}
*{box-sizing:border-box}
html{min-height:100%;scroll-behavior:smooth}
body{min-height:100vh;margin:0;color:var(--ink);font-family:var(--font);background:#f7fbff;overflow-x:hidden}
a{color:inherit;text-decoration:none}.hidden{display:none!important}.muted{color:var(--muted)}.small{font-size:.88rem}.w-100{width:100%}.center-actions{justify-content:center}.page{position:relative;z-index:1;width:min(1480px,calc(100% - 36px));margin:0 auto;padding:0 0 32px}.admin-layout,.spin-layout,.public-layout{background:#f7fbff}.aero-background{position:fixed;inset:0;z-index:-10;overflow:hidden;background:radial-gradient(circle at 8% 8%,rgba(34,167,232,.14),transparent 30%),radial-gradient(circle at 92% 18%,rgba(7,75,131,.12),transparent 28%),linear-gradient(180deg,#fff 0%,#f4fbff 46%,#f7fbff 100%)}.aero-background:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(11,111,179,.055) 1px,transparent 1px),linear-gradient(0deg,rgba(11,111,179,.045) 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(to bottom,#000,transparent 82%)}.aero-background i{position:absolute;width:220px;height:220px;border-radius:42% 58% 62% 38%;background:rgba(34,167,232,.12);filter:blur(2px);animation:blobFloat 18s ease-in-out infinite}.aero-background i:nth-child(1){left:-70px;top:14%;animation-delay:0s}.aero-background i:nth-child(2){right:-90px;top:52%;width:280px;height:280px;animation-delay:3s}.aero-background i:nth-child(3){left:45%;bottom:-120px;width:320px;height:320px;animation-delay:6s}.aero-background i:nth-child(4){right:22%;top:-110px;width:260px;height:260px;animation-delay:9s}

/* buttons */
.btn{border:0;border-radius:16px;padding:12px 18px;font-weight:850;display:inline-flex;align-items:center;justify-content:center;gap:9px;box-shadow:none;transition:.22s ease;white-space:nowrap}.btn:hover{transform:translateY(-1px)}.btn-primary{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff!important;box-shadow:0 18px 38px rgba(11,111,179,.24)}.btn-soft,.btn-light,.btn-ghost{background:#fff;color:#174461!important;border:1px solid var(--line);box-shadow:0 12px 26px rgba(7,75,131,.08)}.btn-outline{background:#fff;color:var(--brand)!important;border:1px solid rgba(11,111,179,.28)}.btn-danger{background:linear-gradient(135deg,#dc3545,#f45b69);color:#fff!important}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.micro-label{display:inline-flex;align-items:center;gap:8px;color:var(--brand);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;font-weight:950}.status-pill,.pill{display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border-radius:999px;background:var(--brand-soft);color:var(--brand-3);font-weight:900;border:1px solid var(--line)}.status-on,.pill-green{background:#eafaf3;color:#047857;border-color:#c7f4dd}.status-off,.pill-red{background:#fff2f2;color:#b42330;border-color:#ffd0d0}.alert{border:0;border-radius:18px;padding:13px 15px;font-weight:800;display:flex;align-items:flex-start;gap:10px}.alert.success{background:#eafaf3;color:#047857}.alert.danger,.danger{background:#fff2f2;color:#b42330}.surface-card,.panel{background:var(--panel);border:1px solid rgba(217,232,247,.9);border-radius:var(--radius);box-shadow:var(--shadow-2);backdrop-filter:blur(18px);padding:24px}.section-heading{margin-bottom:18px}.section-heading h3,.section-heading h2{margin:5px 0 6px;font-size:clamp(1.28rem,2vw,1.7rem);font-weight:950;letter-spacing:-.04em}.section-heading p{margin:0;color:var(--muted)}.row-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap}

/* splash */
.splash-screen{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#ffffff,#ecf8ff 55%,#ffffff);overflow:hidden}.splash-matrix{position:absolute;inset:-40px;background:radial-gradient(circle,rgba(11,111,179,.09) 1.5px,transparent 2px);background-size:28px 28px;animation:matrixPan 14s linear infinite}.splash-orbit-field i{position:absolute;border-radius:50%;border:1px solid rgba(34,167,232,.28);animation:orbitDrift 9s ease-in-out infinite}.splash-orbit-field i:nth-child(1){width:360px;height:360px;left:7%;top:18%}.splash-orbit-field i:nth-child(2){width:420px;height:420px;right:5%;bottom:7%;animation-delay:1.2s}.splash-orbit-field i:nth-child(3){width:180px;height:180px;right:21%;top:10%;animation-delay:2.2s}.splash-orbit-field i:nth-child(4){width:230px;height:230px;left:24%;bottom:8%;animation-delay:3.1s}.splash-console{position:relative;width:min(760px,calc(100vw - 28px));text-align:center;border-radius:42px;background:rgba(255,255,255,.82);border:1px solid rgba(217,232,247,.94);box-shadow:0 34px 90px rgba(7,75,131,.18);padding:44px clamp(22px,5vw,62px);backdrop-filter:blur(24px);overflow:hidden}.splash-console:before{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent,rgba(110,215,255,.22),transparent);transform:translateX(-110%);animation:consoleSheen 3.4s ease-in-out infinite}.splash-brand-mark{position:relative;width:158px;height:158px;margin:0 auto 22px;display:grid;place-items:center}.logo-core{width:118px;height:118px;border-radius:32px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;box-shadow:0 18px 44px rgba(7,75,131,.14);animation:logoHover 3s ease-in-out infinite}.logo-core img{width:86px;height:auto}.splash-brand-mark:before,.splash-brand-mark:after{content:"";position:absolute;inset:0;border-radius:42%;border:2px solid rgba(34,167,232,.35);animation:orbitSpin 5.6s linear infinite}.splash-brand-mark:after{inset:14px;border-style:dashed;animation-direction:reverse;animation-duration:8s}.scan-line{position:absolute;left:12px;right:12px;height:3px;border-radius:99px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);top:35%;box-shadow:0 0 18px var(--cyan);animation:scanMove 2.2s ease-in-out infinite}.splash-console h1{font-size:clamp(2.25rem,6vw,4.7rem);font-weight:1000;letter-spacing:-.08em;margin:8px 0 12px}.splash-console p{color:var(--muted);font-size:clamp(1rem,2vw,1.15rem);margin:0 auto 20px;max-width:620px}.splash-mini-cards,.splash-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.splash-mini-cards{margin:22px 0}.splash-mini-cards span{border-radius:999px;background:#fff;border:1px solid var(--line);padding:10px 14px;font-weight:850;color:#1d4f72}.splash-progress{height:7px;background:#edf6ff;border-radius:99px;overflow:hidden;margin:28px auto 0;max-width:420px}.splash-progress b{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--brand),var(--brand-2));animation:splashLoad 3.6s ease forwards}.splash-hide{animation:splashOut .55s ease forwards}

/* top control layout */
.control-shell{width:min(1600px,calc(100% - 28px));margin:16px auto 0}.control-topbar{position:sticky;top:12px;z-index:50;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;border:1px solid rgba(217,232,247,.94);background:rgba(255,255,255,.82);backdrop-filter:blur(22px);border-radius:28px;box-shadow:var(--shadow-2);padding:10px}.control-brand,.operator-brand,.public-brand{display:flex;align-items:center;gap:12px;font-weight:1000}.control-brand span,.operator-brand span,.public-brand span{width:54px;height:54px;border-radius:18px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;box-shadow:0 10px 26px rgba(7,75,131,.09)}.control-brand img,.operator-brand img,.public-brand img{width:42px;max-height:40px}.control-brand strong{font-size:1.1rem}.control-nav{display:flex;align-items:center;justify-content:center;gap:8px;overflow-x:auto;scrollbar-width:none}.control-nav::-webkit-scrollbar{display:none}.control-nav a{display:inline-flex;align-items:center;gap:8px;padding:12px 14px;border-radius:16px;color:#31536f;font-weight:850;white-space:nowrap}.control-nav a.active,.control-nav a:hover{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;box-shadow:0 14px 28px rgba(11,111,179,.22)}.control-user{display:flex;align-items:center;gap:8px}.control-user span{display:inline-flex;align-items:center;gap:7px;border-radius:999px;background:#eafaf3;color:#047857;padding:10px 12px;font-weight:900}.logout-link{width:42px;height:42px;border-radius:14px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;color:#b42330}.control-main{padding:18px 0 0}.page-title-strip{display:flex;align-items:end;justify-content:space-between;gap:14px;margin:12px 6px 18px}.page-title-strip small{display:block;color:var(--brand);font-weight:900;letter-spacing:.08em;text-transform:uppercase}.page-title-strip h1{font-weight:1000;letter-spacing:-.06em;margin:2px 0 0;font-size:clamp(2rem,4vw,3.6rem)}.page-title-strip p{margin:0;color:var(--muted);font-weight:800}.footer{width:min(1600px,calc(100% - 28px));margin:0 auto 20px;color:var(--subtle);font-weight:700;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap}.control-footer{padding:0 6px}

/* dashboard */
.dashboard-hero{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:20px;margin-bottom:20px}.hero-copy,.hero-status-card{border-radius:34px;background:linear-gradient(145deg,rgba(255,255,255,.95),rgba(237,248,255,.82));border:1px solid rgba(217,232,247,.94);box-shadow:var(--shadow);padding:clamp(24px,4vw,44px);position:relative;overflow:hidden}.hero-copy:after{content:"";position:absolute;right:-120px;top:-120px;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(34,167,232,.20),transparent 67%)}.hero-copy h2{font-size:clamp(2.5rem,6vw,5.8rem);font-weight:1000;letter-spacing:-.085em;margin:10px 0 10px}.hero-copy p{font-size:clamp(1rem,2vw,1.18rem);color:var(--muted);max-width:760px}.hero-quick-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}.hero-status-card{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:10px}.hero-status-card img{width:110px;margin-bottom:8px}.hero-status-card span{color:var(--muted);font-weight:800}.hero-status-card b{font-size:2rem;line-height:1.05;display:flex;align-items:center;gap:10px}.hero-status-card small{color:var(--subtle);font-weight:800}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.metric-card{background:#fff;border:1px solid var(--line);border-radius:26px;padding:20px;box-shadow:var(--shadow-2);position:relative;overflow:hidden}.metric-card:after{content:"";position:absolute;right:-30px;bottom:-30px;width:110px;height:110px;border-radius:34px;background:rgba(34,167,232,.10);transform:rotate(18deg)}.metric-card>i{width:48px;height:48px;border-radius:17px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand);font-size:20px}.metric-card span{display:block;color:var(--muted);font-weight:850;margin-top:14px}.metric-card b{display:block;font-size:clamp(1.65rem,3vw,2.65rem);font-weight:1000;letter-spacing:-.05em;margin-top:2px}.metric-card small{color:var(--subtle);font-weight:750}.dashboard-grid{display:grid;grid-template-columns:minmax(360px,.9fr) minmax(0,1.1fr);gap:20px}.upload-zone{display:grid;gap:14px}.upload-drop{border:1.5px dashed rgba(11,111,179,.35);border-radius:24px;background:#f6fbff;padding:24px;text-align:center;display:grid;gap:8px;cursor:pointer}.upload-drop input{display:none}.drop-icon{width:70px;height:70px;border-radius:24px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;margin:0 auto;color:var(--brand);font-size:28px;box-shadow:0 12px 30px rgba(7,75,131,.11)}.upload-drop b{font-size:1.1rem}.upload-drop small,.last-upload{color:var(--muted)}.last-upload{margin-top:14px;background:#f6fbff;border:1px solid var(--line);border-radius:16px;padding:10px 12px;font-weight:800}.switch-line{display:flex;align-items:center;gap:12px;padding:12px;border-radius:16px;background:#f8fbff;border:1px solid var(--line);font-weight:800}.switch-line input{width:20px;height:20px;accent-color:var(--brand)}.timeline-prizes{display:grid;gap:16px}.timeline-item{display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:center}.timeline-index{width:42px;height:42px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;font-weight:1000}.timeline-content{background:#fff;border:1px solid var(--line);border-radius:20px;padding:14px}.prize-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:900}.prize-head b,.prize-head span:first-child{display:flex;align-items:center;gap:9px}.prize-icon{color:var(--brand);font-size:1.05em}.bar{height:9px;background:#eef7ff;border-radius:999px;overflow:hidden;margin-top:10px}.bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--brand),var(--brand-2))}.mode-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:20px}.mode-tile{background:#fff;border:1px solid var(--line);border-radius:26px;padding:22px;box-shadow:var(--shadow-2);transition:.22s ease;display:grid;gap:8px;min-height:150px}.mode-tile:hover{transform:translateY(-3px);border-color:rgba(11,111,179,.35)}.mode-tile i{width:52px;height:52px;border-radius:18px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand);font-size:22px}.mode-tile b{font-size:1.2rem}.mode-tile span{color:var(--muted);font-weight:750}

/* operator */
.operator-bar,.public-bar{width:min(1560px,calc(100% - 28px));margin:14px auto 0;display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid var(--line);border-radius:26px;background:rgba(255,255,255,.86);box-shadow:var(--shadow-2);backdrop-filter:blur(20px);padding:10px 14px}.operator-links,.public-links{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.operator-links a,.public-links a{padding:10px 13px;border-radius:14px;background:#fff;border:1px solid var(--line);font-weight:850;color:#31536f}.spin-page{width:min(1560px,calc(100% - 28px));padding-top:18px}.spin-cockpit{height:calc(100vh - 126px);height:calc(100dvh - 126px);min-height:610px;display:grid;grid-template-columns:310px minmax(0,1fr) 340px;gap:18px;overflow:hidden}.cockpit-panel,.spin-arena{background:rgba(255,255,255,.88);border:1px solid var(--line);border-radius:34px;box-shadow:var(--shadow);backdrop-filter:blur(22px);overflow:hidden}.cockpit-panel{padding:24px;display:flex;flex-direction:column;justify-content:center;gap:16px}.cockpit-logo{width:118px;height:118px;border-radius:32px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;box-shadow:0 18px 44px rgba(7,75,131,.14)}.cockpit-logo img{width:92px}.cockpit-panel h1{font-size:clamp(2rem,4vw,3.1rem);font-weight:1000;letter-spacing:-.06em;margin:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.cockpit-panel p{color:var(--muted);font-weight:800}.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.mini-stats div{background:#f6fbff;border:1px solid var(--line);border-radius:18px;padding:12px;text-align:center}.mini-stats small{display:block;color:var(--muted);font-weight:800}.mini-stats b{font-size:1.55rem;font-weight:1000}.spin-arena{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;align-items:center;justify-items:center;padding:26px;isolation:isolate}.arena-glow{position:absolute;inset:14px;border-radius:30px;background:radial-gradient(circle at center,rgba(34,167,232,.16),transparent 59%);z-index:-1}.arena-glow:after{content:"";position:absolute;inset:5%;border-radius:50%;border:1px solid rgba(11,111,179,.16);animation:orbitSpin 18s linear infinite}.spin-chip{border-radius:999px;background:#fff;border:1px solid var(--line);padding:10px 14px;font-weight:950;color:var(--brand);box-shadow:0 12px 24px rgba(7,75,131,.08)}.roulette-window{width:min(960px,100%);text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.slot-label{display:inline-flex;align-items:center;gap:8px;border-radius:999px;background:var(--brand-soft);border:1px solid var(--line);color:var(--brand);padding:10px 14px;font-weight:950}.roulette-name{font-size:clamp(3rem,9vw,8.6rem);font-weight:1000;letter-spacing:-.09em;line-height:.9;max-width:100%;overflow-wrap:anywhere;color:#071d31;text-shadow:0 14px 34px rgba(7,75,131,.10)}.roulette-nik{font-size:clamp(1.15rem,3vw,2.4rem);font-weight:950;color:#45657f}.winner-reveal{position:absolute;inset:26px;border-radius:32px;background:linear-gradient(180deg,#fff,#eff9ff);border:1px solid #ccecff;box-shadow:0 26px 84px rgba(7,75,131,.22);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px;animation:revealPop .45s ease}.winner-reveal span{color:var(--brand);font-weight:950;letter-spacing:.18em;text-transform:uppercase}.winner-reveal strong{font-size:clamp(2.7rem,8vw,8rem);line-height:.9;letter-spacing:-.085em;font-weight:1000;max-width:100%;overflow-wrap:anywhere}.winner-reveal small{font-size:clamp(1.1rem,3vw,2.35rem);font-weight:950;color:#45657f;margin:10px 0}.winner-reveal b{border-radius:999px;background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;padding:11px 20px;font-size:clamp(1rem,2vw,1.5rem)}.spin-action-deck{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;width:100%;position:relative;z-index:2}.btn-spin{font-size:1.15rem;padding:15px 26px;border-radius:20px;background:linear-gradient(135deg,var(--brand-3),var(--brand),var(--brand-2));color:#fff!important;box-shadow:0 22px 42px rgba(11,111,179,.26)}.btn-respin{background:#fff7e8;color:#8a5200!important;border:1px solid #ffe0a8}.small-prize-list{display:grid;gap:12px}.prize-item{background:#fff;border:1px solid var(--line);border-radius:18px;padding:12px}.latest-panel{margin-top:auto;background:#f6fbff;border:1px solid var(--line);border-radius:22px;padding:16px}.latest-panel small{display:block;color:var(--muted);font-weight:900;margin-bottom:8px}.latest-box{font-weight:900;color:#173b59}

/* public winners */
.public-page{padding-top:20px}.winner-board-page{background:rgba(255,255,255,.88);border:1px solid var(--line);border-radius:34px;box-shadow:var(--shadow);padding:clamp(20px,3vw,34px)}.winner-board-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:20px}.winner-board-header h1{font-size:clamp(2rem,5vw,4.5rem);font-weight:1000;letter-spacing:-.08em;margin:5px 0}.winner-board-header p{color:var(--muted);margin:0}.ajax-live-dot{display:inline-flex;align-items:center;gap:8px;color:#047857;background:#eafaf3;border:1px solid #c7f4dd;border-radius:999px;padding:9px 12px;font-weight:900;margin-bottom:14px}.ajax-live-dot i{font-size:.7rem;animation:blink 1.1s infinite}.winner-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.winner-group{background:#fff;border:1px solid var(--line);border-radius:26px;padding:18px;box-shadow:0 10px 26px rgba(7,75,131,.08)}.winner-group h2{font-size:1.35rem;font-weight:1000;display:flex;align-items:center;gap:9px}.winner-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:18px}.winner-table{width:100%;border-collapse:collapse;font-size:.95rem;background:#fff}.winner-table th{background:#f1f8ff;color:#31536f;text-transform:uppercase;letter-spacing:.05em;font-size:.78rem}.winner-table th,.winner-table td{padding:12px 13px;border-bottom:1px solid #eef5fc;vertical-align:middle}.winner-table tbody tr:last-child td{border-bottom:0}.winner-table td:nth-child(3){font-weight:900;color:var(--ink)}.empty-text{background:#f8fbff;border:1px dashed var(--line);border-radius:16px;padding:18px;color:var(--muted);font-weight:800;text-align:center}.disabled-public{border-radius:28px;background:#fff;border:1px solid var(--line);padding:48px 20px;text-align:center;color:var(--muted)}.disabled-public i,.disabled-public span{font-size:3rem;color:var(--brand);display:block;margin-bottom:12px}.disabled-public h2{color:var(--ink);font-weight:950}

/* settings & result */
.settings-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px}.settings-form,.login-form{display:grid;gap:14px}.settings-form label:not(.switch-line),.login-form label{display:grid;gap:7px;font-weight:850}.settings-form input[type=text],.copy-url input,.input-shell input{width:100%;border:1px solid var(--line);border-radius:16px;background:#fff;padding:13px 14px;outline:0;color:var(--ink);font-weight:760}.settings-form input:focus,.input-shell input:focus{border-color:rgba(11,111,179,.45);box-shadow:0 0 0 4px rgba(34,167,232,.12)}.tools-panel{display:grid;gap:14px;align-content:start}.copy-url{display:grid;gap:8px}.copy-url small{color:var(--muted);font-weight:900}.format-card{margin-top:20px}.result-card{text-align:center;width:min(720px,100%);margin:20px auto}.result-icon{width:92px;height:92px;border-radius:30px;display:grid;place-items:center;font-size:40px;margin:0 auto 16px}.result-icon.success{background:#eafaf3;color:#047857}.result-icon.danger{background:#fff2f2;color:#b42330}.result-card h2{font-weight:1000;letter-spacing:-.04em}

/* login */
.login-body{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#f7fbff,#fff);padding:20px}.login-orbs i{position:fixed;border-radius:50%;background:rgba(34,167,232,.13);filter:blur(2px);animation:blobFloat 16s ease-in-out infinite}.login-orbs i:nth-child(1){width:320px;height:320px;left:-90px;top:8%}.login-orbs i:nth-child(2){width:420px;height:420px;right:-130px;bottom:-100px;animation-delay:2s}.login-orbs i:nth-child(3){width:220px;height:220px;right:18%;top:10%;animation-delay:4s}.login-frame{width:min(1040px,100%);display:grid;grid-template-columns:1fr 410px;border-radius:40px;background:rgba(255,255,255,.86);border:1px solid var(--line);box-shadow:0 34px 90px rgba(7,75,131,.18);overflow:hidden;backdrop-filter:blur(24px)}.login-showcase{padding:clamp(30px,5vw,56px);background:radial-gradient(circle at 20% 20%,rgba(34,167,232,.18),transparent 42%),linear-gradient(135deg,#fff,#eef9ff);display:flex;flex-direction:column;justify-content:center}.showcase-logo{width:126px;height:126px;border-radius:34px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;box-shadow:0 18px 44px rgba(7,75,131,.14);margin-bottom:20px}.showcase-logo img{width:96px}.login-showcase h1{font-size:clamp(2.4rem,5vw,4.8rem);font-weight:1000;letter-spacing:-.08em;margin:10px 0}.login-showcase p{color:var(--muted);font-size:1.08rem}.showcase-points{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}.showcase-points span{border-radius:999px;background:#fff;border:1px solid var(--line);padding:10px 13px;font-weight:850;color:#31536f}.login-card-v2{padding:clamp(28px,4vw,46px);display:flex;flex-direction:column;justify-content:center}.login-card-v2 h2{font-weight:1000;letter-spacing:-.04em}.login-card-v2 p{color:var(--muted)}.input-shell{display:flex;align-items:center;border:1px solid var(--line);border-radius:16px;background:#fff;padding:0 12px}.input-shell i{color:var(--brand)}.input-shell input{border:0;padding-left:10px}.input-shell:focus-within{border-color:rgba(11,111,179,.45);box-shadow:0 0 0 4px rgba(34,167,232,.12)}.login-links{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:18px}.login-links a{border-radius:999px;background:#f6fbff;border:1px solid var(--line);padding:9px 12px;color:#31536f;font-weight:850}

/* tv display */
.tv-body{height:100vh;height:100dvh;overflow:hidden;background:#f6fbff;color:var(--ink);padding:0}.tv-aurora{position:fixed;inset:0;z-index:-2;background:radial-gradient(circle at 10% 20%,rgba(34,167,232,.20),transparent 30%),radial-gradient(circle at 84% 18%,rgba(7,75,131,.16),transparent 32%),linear-gradient(180deg,#fff,#eff9ff)}.tv-aurora:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(11,111,179,.05) 1px,transparent 1px),linear-gradient(0deg,rgba(11,111,179,.04) 1px,transparent 1px);background-size:5vw 5vw}.tv-aurora i{position:absolute;border-radius:50%;background:rgba(34,167,232,.12);animation:tvOrb 18s ease-in-out infinite}.tv-aurora i:nth-child(1){width:34vw;height:34vw;left:-12vw;top:22vh}.tv-aurora i:nth-child(2){width:40vw;height:40vw;right:-14vw;bottom:-12vh;animation-delay:3s}.tv-aurora i:nth-child(3){width:22vw;height:22vw;left:38vw;top:-9vw;animation-delay:6s}.tv-led-board{height:100vh;height:100dvh;padding:clamp(10px,1.5vw,22px);display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:clamp(10px,1.5vh,18px);overflow:hidden}.tv-led-header,.tv-led-footer,.tv-main-stage{background:rgba(255,255,255,.88);border:1px solid var(--line);box-shadow:0 18px 55px rgba(7,75,131,.12);backdrop-filter:blur(22px)}.tv-led-header{min-height:clamp(74px,10vh,106px);border-radius:clamp(20px,2.8vw,34px);display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px clamp(12px,1.8vw,24px)}.tv-led-brand{display:flex;align-items:center;gap:14px;min-width:0}.tv-led-brand img{width:clamp(54px,7vh,82px);height:auto;background:#fff;border:1px solid var(--line);border-radius:20px;padding:8px}.tv-led-brand b{display:block;font-size:clamp(20px,2.8vw,42px);font-weight:1000;letter-spacing:-.06em;line-height:1}.tv-led-brand span{display:block;color:var(--muted);font-weight:800;font-size:clamp(11px,1.25vw,16px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:48vw}.tv-prize-pill{border-radius:999px;background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;padding:clamp(9px,1.2vw,14px) clamp(13px,1.8vw,22px);font-weight:950;font-size:clamp(14px,1.5vw,23px);display:flex;align-items:center;gap:8px;box-shadow:0 16px 34px rgba(11,111,179,.22);white-space:nowrap}.tv-prize-pill .prize-icon{color:#fff}.tv-fullscreen{width:clamp(44px,5vh,58px);height:clamp(44px,5vh,58px);border:1px solid var(--line);border-radius:18px;background:#fff;color:var(--brand);display:grid;place-items:center;font-size:clamp(16px,2vw,22px)}.tv-main-stage{position:relative;overflow:hidden;border-radius:clamp(24px,3vw,44px);display:grid;place-items:center;text-align:center;padding:clamp(12px,2vh,28px);min-height:0}.tv-stage-ring{position:absolute;width:min(70vw,70vh);height:min(70vw,70vh);border-radius:50%;border:1px solid rgba(11,111,179,.12);background:radial-gradient(circle,rgba(34,167,232,.15),transparent 63%);animation:orbitSpin 22s linear infinite}.tv-stage-ring:after,.tv-stage-ring:before{content:"";position:absolute;inset:8%;border-radius:50%;border:1px dashed rgba(11,111,179,.18)}.tv-stage-ring:before{inset:20%;animation:orbitSpin 18s linear reverse infinite}.tv-roulette,.tv-winner{position:relative;z-index:1;width:min(1180px,100%);display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:0}.tv-slot-label{display:inline-flex;align-items:center;gap:8px;border-radius:999px;background:#fff;border:1px solid var(--line);color:var(--brand);padding:clamp(8px,1.1vw,13px) clamp(12px,1.7vw,20px);font-weight:950;letter-spacing:.12em;font-size:clamp(12px,1.2vw,17px)}.tv-roulette strong{font-size:clamp(44px,9vw,140px);line-height:.88;font-weight:1000;letter-spacing:-.085em;margin:clamp(8px,1.2vh,16px) 0;color:#071d31;max-width:100%;overflow-wrap:anywhere}.tv-roulette span:last-child{font-size:clamp(20px,3.4vw,54px);font-weight:950;color:#45657f}.tv-winner{height:100%;border-radius:clamp(24px,3vw,44px);background:linear-gradient(180deg,#fff,#eef9ff);border:1px solid #ccecff;box-shadow:0 30px 90px rgba(7,75,131,.22);padding:clamp(14px,2.2vh,32px);animation:revealPop .45s ease;overflow:hidden}.tv-winner:before{content:"";position:absolute;width:105%;height:105%;background:conic-gradient(from 180deg,transparent,rgba(34,167,232,.25),transparent,rgba(7,75,131,.10),transparent);animation:orbitSpin 10s linear infinite;z-index:-1}.tv-winner span:first-child{font-size:clamp(12px,1.4vw,20px);font-weight:950;letter-spacing:.22em;color:var(--brand)}.tv-winner strong{font-size:clamp(48px,10vw,150px);font-weight:1000;letter-spacing:-.09em;line-height:.86;margin:clamp(7px,1.2vh,16px) 0;max-width:100%;overflow-wrap:anywhere}.tv-winner small{font-size:clamp(20px,3.2vw,58px);font-weight:950;color:#45657f}.tv-winner b{margin-top:clamp(9px,1.4vh,18px);border-radius:999px;background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;padding:clamp(8px,1.2vh,14px) clamp(16px,2vw,28px);font-size:clamp(16px,2vw,32px)}.tv-winner .prize-icon{color:#fff}.tv-led-footer{border-radius:clamp(18px,2vw,28px);min-height:clamp(62px,8.5vh,86px);display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px clamp(12px,1.8vw,24px);overflow:hidden}#tvFooterLine{font-weight:950;color:#31536f;font-size:clamp(13px,1.4vw,22px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tv-footer-badges{display:flex;gap:8px;flex-wrap:nowrap}.tv-footer-badges span{border-radius:999px;background:#fff;border:1px solid var(--line);padding:9px 12px;color:#31536f;font-weight:900;white-space:nowrap}.tv-compact .tv-footer-badges{display:none}.tv-compact .tv-led-brand span{max-width:34vw}.shake{animation:shake .06s linear infinite alternate}.pulse{animation:pulse .6s ease-in-out infinite alternate}

/* ajax */
.ajax-busy:after{content:"";position:fixed;left:0;right:0;top:0;height:4px;z-index:10000;background:linear-gradient(90deg,var(--brand),var(--brand-2),var(--brand));background-size:200% 100%;animation:ajaxline .9s linear infinite}.ajax-toast{position:fixed;right:18px;bottom:18px;z-index:10001;max-width:min(420px,calc(100% - 36px));border-radius:20px;padding:14px 16px;background:#0b1f33;color:#fff;box-shadow:0 18px 50px rgba(6,21,40,.24);font-weight:850;animation:toastIn .24s ease}.ajax-toast.error{background:#b42330}.ajax-toast.success{background:#047857}

/* animations */
@keyframes blobFloat{0%,100%{transform:translate3d(0,0,0) rotate(0deg)}50%{transform:translate3d(26px,-28px,0) rotate(18deg)}}@keyframes matrixPan{to{transform:translate(28px,28px)}}@keyframes orbitDrift{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-16px) scale(1.04)}}@keyframes consoleSheen{0%,42%{transform:translateX(-115%)}70%,100%{transform:translateX(115%)}}@keyframes logoHover{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes orbitSpin{to{transform:rotate(360deg)}}@keyframes scanMove{0%,100%{top:25%;opacity:.35}50%{top:75%;opacity:1}}@keyframes splashLoad{to{width:100%}}@keyframes splashOut{to{opacity:0;transform:scale(1.02);filter:blur(10px)}}@keyframes revealPop{0%{opacity:0;transform:scale(.88)}100%{opacity:1;transform:scale(1)}}@keyframes shake{0%{transform:translateX(-2px)}100%{transform:translateX(2px)}}@keyframes pulse{from{transform:scale(.98)}to{transform:scale(1.02)}}@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}@keyframes tvOrb{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(30px,-34px) scale(1.08)}}@keyframes ajaxline{to{background-position:200% 0}}@keyframes toastIn{from{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}

/* responsive */
@media(max-width:1280px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-hero,.dashboard-grid,.settings-grid{grid-template-columns:1fr}.spin-cockpit{grid-template-columns:1fr 1fr;height:auto;min-height:0}.spin-arena{grid-column:1/-1;min-height:560px;order:-1}.left-panel,.right-panel{min-height:auto}.winner-groups{grid-template-columns:1fr 1fr}.mode-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.control-topbar{grid-template-columns:1fr;position:relative;top:0}.control-nav{justify-content:flex-start}.control-user{justify-content:space-between}.page-title-strip{align-items:flex-start;flex-direction:column}.operator-bar,.public-bar{flex-direction:column;align-items:stretch}.operator-links,.public-links{overflow:auto;flex-wrap:nowrap}.spin-cockpit{grid-template-columns:1fr}.spin-arena{min-height:500px}.winner-groups{grid-template-columns:1fr}.login-frame{grid-template-columns:1fr}.login-showcase{display:none}.tv-prize-pill{display:none}.tv-footer-badges span{font-size:0}.tv-footer-badges i{font-size:16px}.tv-led-brand span{max-width:40vw}}
@media(max-width:620px){.control-shell,.page,.spin-page,.operator-bar,.public-bar,.footer{width:calc(100% - 20px)}.control-brand strong{font-size:1rem}.control-brand span,.operator-brand span,.public-brand span{width:48px;height:48px}.control-nav a{padding:10px 12px}.dashboard-hero{display:block}.hero-status-card{margin-top:14px}.hero-copy,.hero-status-card,.surface-card,.panel,.winner-board-page{border-radius:24px;padding:20px}.metric-grid,.mode-grid{grid-template-columns:1fr}.hero-quick-actions .btn,.spin-action-deck .btn{width:100%}.roulette-name{font-size:clamp(2.5rem,16vw,5rem)}.winner-reveal{inset:16px}.mini-stats{grid-template-columns:1fr}.tv-led-board{padding:8px;gap:8px}.tv-led-header{min-height:64px}.tv-led-brand img{width:50px}.tv-led-brand b{font-size:18px}.tv-led-brand span{display:none}.tv-main-stage{border-radius:24px}.tv-led-footer{min-height:58px}.tv-footer-badges{display:none}.splash-console{padding:30px 18px;border-radius:30px}.splash-brand-mark{width:132px;height:132px}.logo-core{width:100px;height:100px}.logo-core img{width:78px}}
@media(max-height:720px){.spin-cockpit{height:auto}.tv-led-header{min-height:66px}.tv-led-footer{min-height:54px}.tv-roulette strong{font-size:clamp(36px,8vw,102px)}.tv-winner strong{font-size:clamp(42px,8vw,112px)}}

/* v6 responsive safety patch: 5 prize sequence + mobile cards */
.prize-icon{line-height:1;display:inline-flex;align-items:center;justify-content:center;min-width:1.1em}.prize-head span:first-child,.tv-footer-badges span,.tv-prize-pill,.winner-group h2{min-width:0;overflow-wrap:anywhere}.winner-groups{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));align-items:start}.winner-group{min-width:0}.winner-table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;background:#fff}.winner-table th,.winner-table td{overflow-wrap:anywhere}.spin-cockpit,.dashboard-grid,.settings-grid,.grid,.metric-grid{min-width:0}.cockpit-panel,.spin-arena,.surface-card,.panel,.inner-panel{min-width:0}.roulette-window,.winner-reveal,.tv-winner,.tv-roulette{min-width:0}.roulette-name,.winner-reveal strong,.latest-box{overflow-wrap:anywhere;word-break:break-word}.responsive-owner-grid{align-items:start}.owner-card-list{display:grid;gap:12px}.owner-data-card{position:relative;display:grid;grid-template-columns:70px minmax(120px,1fr) minmax(180px,1.4fr) minmax(130px,.9fr) minmax(120px,.8fr) minmax(150px,1fr);gap:12px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:22px;padding:14px;box-shadow:0 10px 28px rgba(7,75,131,.07);min-width:0}.owner-data-card>div{min-width:0}.owner-data-card small{display:block;color:var(--muted);font-weight:900;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px}.owner-data-card b,.owner-data-card span{display:block;min-width:0;overflow-wrap:anywhere}.owner-card-no{width:48px;height:48px;border-radius:16px;background:var(--brand-soft);color:var(--brand);display:grid!important;place-items:center;font-weight:1000}.audit-card{grid-template-columns:150px 110px minmax(160px,1.4fr) 110px minmax(160px,1.3fr) 120px}.compact-audit-list{max-height:520px;overflow:auto;padding-right:4px}.safe-panel input,.safe-panel select,.safe-panel textarea{max-width:100%;min-width:0}.safe-panel textarea{resize:vertical}.tv-footer-badges{min-width:0;overflow:hidden}.tv-footer-badges span{display:inline-flex;align-items:center;gap:6px;max-width:190px;text-overflow:ellipsis;overflow:hidden}.tv-led-board{max-width:100vw}.tv-led-header,.tv-led-footer{min-width:0}.tv-led-brand{flex:1 1 auto}.tv-prize-pill{flex:0 1 auto;max-width:42vw;overflow:hidden;text-overflow:ellipsis}
@media(max-width:1100px){.owner-data-card,.audit-card{grid-template-columns:1fr 1fr}.owner-card-no{position:absolute;top:12px;right:12px}.owner-data-card{padding-top:58px}.tv-footer-badges span:nth-child(n+4){display:none}.tv-prize-pill{max-width:34vw}.winner-groups{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}}
@media(max-width:720px){.winner-board-header{flex-direction:column;align-items:stretch}.winner-groups{grid-template-columns:1fr}.responsive-table,.responsive-table thead,.responsive-table tbody,.responsive-table tr,.responsive-table th,.responsive-table td{display:block;width:100%}.responsive-table thead{display:none}.responsive-table tr{border:1px solid var(--line);border-radius:16px;margin:10px;background:#fff;padding:8px}.responsive-table td{border:0!important;padding:8px 10px 8px 44%;position:relative;min-height:38px;text-align:right}.responsive-table td:before{content:attr(data-label);position:absolute;left:10px;top:8px;width:38%;font-weight:950;color:var(--brand);text-align:left;white-space:nowrap}.owner-data-card,.audit-card{grid-template-columns:1fr}.owner-data-card{padding:58px 14px 14px}.tv-prize-pill{display:none}.tv-led-header{gap:8px}.tv-led-brand b{font-size:clamp(16px,4.8vw,22px)}.tv-fullscreen{flex:0 0 auto}.tv-footer-badges{display:none}.btn{white-space:normal}.control-nav a,.operator-links a,.public-links a{white-space:nowrap}.grid-2{grid-template-columns:1fr!important}.settings-form label{min-width:0}}
@media(max-width:460px){.responsive-table td{padding-left:10px;text-align:left}.responsive-table td:before{position:static;display:block;width:auto;margin-bottom:3px}.owner-card-no{width:42px;height:42px}.tv-led-board{padding:6px;gap:6px}.tv-main-stage{padding:8px}.tv-slot-label{letter-spacing:.05em}.tv-roulette strong,.tv-winner strong{letter-spacing:-.06em}.spin-action-deck{grid-template-columns:1fr!important}.spin-action-deck .btn{width:100%}}
