.error-toast-backdrop{z-index:2000;background:#10182859;flex-direction:column;justify-content:center;align-items:center;gap:12px;animation:.15s ease-out error-toast-backdrop-in;display:flex;position:fixed;inset:0}@keyframes error-toast-backdrop-in{0%{opacity:0}to{opacity:1}}.error-toast{background:var(--color-surface);border:1px solid var(--color-danger);border-radius:var(--radius-md);width:min(440px,100vw - 48px);box-shadow:var(--shadow-lg);align-items:flex-start;gap:12px;padding:16px 18px;animation:.2s cubic-bezier(.34,1.56,.64,1) error-toast-pop-in;display:flex}@keyframes error-toast-pop-in{0%{opacity:0;transform:scale(.9)translateY(6px)}to{opacity:1;transform:scale(1)translateY(0)}}.error-toast-icon{background:var(--color-danger-soft);width:26px;height:26px;color:var(--color-danger);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:15px;font-weight:800;display:flex}.error-toast-body{flex:1;min-width:0}.error-toast-title{color:var(--color-danger);text-transform:uppercase;letter-spacing:.03em;margin:0 0 2px;font-size:13px;font-weight:700}.error-toast-message{color:var(--color-text);word-break:break-word;margin:0;font-size:14px;line-height:1.45}.error-toast-close{color:var(--color-text-subtle);cursor:pointer;background:0 0;border:none;flex:none;padding:0 2px;font-size:20px;line-height:1}.error-toast-close:hover{color:var(--color-text)}.layout{height:100vh;display:flex}.topbar,.sidebar-overlay{display:none}.sidebar{width:var(--sidebar-w);background:var(--sidebar-bg);height:100vh;color:var(--sidebar-text);flex-direction:column;flex-shrink:0;gap:4px;padding:24px 16px;display:flex}.brand{color:var(--sidebar-text-strong);letter-spacing:-.01em;align-items:center;gap:4px;margin-bottom:20px;font-size:20px;font-weight:700;display:flex}.brand-logo{width:auto;height:14px;display:block}.brand-text{font-family:Helvetica Neue,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:500}.mall-select{color:var(--sidebar-text-muted);margin-bottom:24px;font-size:12px;display:block}.mall-select span{text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:11px;font-weight:600;display:block}.mall-select select{border-radius:var(--radius-sm);border:1px solid var(--sidebar-border);background:var(--sidebar-bg-alt);width:100%;color:var(--sidebar-text-strong);padding:9px 10px;font-size:13px}.sidebar nav{flex-direction:column;flex:1;gap:18px;display:flex;overflow-y:auto}.nav-group{flex-direction:column;gap:2px;display:flex}.nav-group-label{width:100%;font:inherit;text-transform:uppercase;letter-spacing:.06em;color:var(--sidebar-text-muted);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;padding:6px 14px;font-size:11px;font-weight:700;transition:background-color .15s,color .15s;display:flex}.nav-group-label:hover{color:var(--sidebar-text-strong);background:#0000000f}.nav-group-chevron{flex-shrink:0;transition:transform .2s}.nav-group.is-collapsed .nav-group-label{margin-bottom:0}.nav-group.is-collapsed .nav-group-chevron{transform:rotate(-90deg)}.sidebar nav a{color:var(--sidebar-text);border-radius:var(--radius-sm);padding:10px 14px;font-size:14px;font-weight:500;text-decoration:none;transition:background-color .15s,color .15s}.sidebar nav a:hover{color:var(--sidebar-text-strong);background:#0000000f}.sidebar nav a.active{background:var(--color-accent);color:#fff}.nav-pinned{border-bottom:1px solid var(--sidebar-border);margin-bottom:10px;padding-bottom:16px;font-weight:700}.logout{border:1px solid var(--sidebar-border);color:var(--sidebar-text);border-radius:var(--radius-sm);cursor:pointer;background:0 0;margin-top:16px;padding:10px;font-size:14px}.logout:hover{border-color:var(--color-danger);color:var(--sidebar-text-strong)}.content{background:var(--color-bg);flex:1;min-width:0;padding:32px;overflow:auto}@media (width<=880px){.layout{display:block}.topbar{height:var(--header-h);background:var(--sidebar-bg);z-index:65;box-shadow:var(--shadow-sm);align-items:center;gap:12px;padding:0 16px;display:flex;position:fixed;top:0;left:0;right:0}.topbar-brand{color:var(--sidebar-text-strong);font-size:17px;font-weight:700}.menu-toggle{cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:36px;height:36px;padding:0;display:flex}.menu-toggle:hover{background:#00000014}.menu-toggle span{background:var(--sidebar-text-strong);border-radius:2px;width:18px;height:2px;transition:transform .2s,opacity .2s;display:block}.menu-toggle.is-open span:first-child{transform:translateY(7px)rotate(45deg)}.menu-toggle.is-open span:nth-child(2){opacity:0}.menu-toggle.is-open span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.sidebar-overlay{z-index:55;background:#0a0a1473;display:block;position:fixed;inset:0}.sidebar{z-index:60;width:min(82vw,300px);height:100vh;box-shadow:var(--shadow-lg);transition:transform .25s;position:fixed;top:0;left:0;transform:translate(-100%)}.sidebar.is-open{transform:translate(0)}.content{padding:20px 16px 32px;padding-top:calc(var(--header-h) + 20px)}}.collapsible{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden}.collapsible-header{cursor:pointer;width:100%;color:var(--color-text);text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;font-family:inherit;font-size:15px;font-weight:600;display:flex}.collapsible-header:hover{background:var(--color-surface-alt)}.collapsible-chevron{color:var(--color-text-muted);flex-shrink:0;transition:transform .2s}.collapsible.is-open .collapsible-chevron{transform:rotate(180deg)}.collapsible-body{border-top:1px solid var(--color-border);padding:16px 20px 20px}.page h2{letter-spacing:-.01em;margin:0 0 4px;font-size:22px}.hint{color:var(--color-text-muted);margin:0 0 24px;font-size:14px;line-height:1.5}.grid{grid-template-columns:360px 1fr;align-items:start;gap:20px;display:grid}@media (width<=900px){.grid{grid-template-columns:1fr}}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:20px}.card h3{margin:0 0 16px;font-size:15px;font-weight:600}.form-card label{color:var(--color-text-muted);margin-bottom:14px;font-size:13px;font-weight:600;display:block}.form-card input,.form-card textarea,.form-card select{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);box-sizing:border-box;background:var(--color-surface);width:100%;color:var(--color-text);margin-top:6px;padding:10px 12px;font-family:inherit;font-size:14px;display:block}.form-card input:focus,.form-card textarea:focus,.form-card select:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft);outline:none}.form-card input:disabled,.form-card textarea:disabled,.form-card select:disabled{background:var(--color-surface-alt);color:var(--color-text-subtle);cursor:not-allowed}.mall-picker{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin-top:6px;display:grid}.mall-picker-item{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;align-items:center;gap:10px;padding:10px 12px;font-size:14px;font-weight:400;line-height:1.3;transition:border-color .15s,background .15s;display:flex}.mall-picker-item:hover{border-color:var(--color-accent)}.mall-picker-item.is-checked{border-color:var(--color-accent);background:var(--color-accent-soft)}.mall-picker-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-accent);flex:none;margin:0}.mall-picker-item span{flex:1;min-width:0}.btn-primary{background:var(--color-accent);color:var(--color-accent-contrast);border-radius:var(--radius-sm);cursor:pointer;border:none;width:100%;padding:12px 20px;font-size:14px;font-weight:600;transition:background-color .15s}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-sm{width:auto;padding:8px 14px;font-size:13px}.btn-danger{background:var(--color-danger-soft);color:var(--color-danger);border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;padding:8px 14px;font-size:13px;font-weight:600;transition:background-color .15s}.btn-danger:hover:not(:disabled){background:var(--color-danger);color:#fff}.btn-danger:disabled{opacity:.5;cursor:not-allowed}.list-item{border-bottom:1px solid var(--color-border);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;padding:14px 0;display:flex}.badge{text-transform:uppercase;letter-spacing:.02em;background:var(--color-surface-alt);color:var(--color-text-muted);border-radius:100px;margin-left:8px;padding:3px 9px;font-size:11px;font-weight:600;display:inline-block}.badge-published,.badge-active{background:var(--color-success-soft);color:var(--color-success)}.badge-draft{background:var(--color-warning-soft);color:var(--color-warning)}.meta,.desc{color:var(--color-text-muted);margin:4px 0 0;font-size:13px}.prize{color:var(--color-accent);margin:4px 0;font-size:18px;font-weight:700}.pending-candidate{border-radius:var(--radius-sm);background:var(--color-warning-soft);color:var(--color-warning);margin:8px 0 0;padding:8px 10px;font-size:13px;font-weight:600}.actions{flex-direction:column;flex-shrink:0;gap:8px;display:flex}.error{color:var(--color-danger);font-size:13px}.btn-secondary{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);cursor:pointer;align-items:center;padding:12px 20px;font-size:14px;font-weight:600;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.btn-secondary:hover:not(:disabled){background:var(--color-surface-alt);border-color:var(--color-text-subtle)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.form-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.image-upload-preview{flex-direction:column;align-items:flex-start;gap:8px;margin-top:10px;display:flex}.file-input{width:100%;margin-top:6px;font-size:13px;display:block}.giveaway-preview{object-fit:contain;border-radius:var(--radius-sm);background:var(--color-surface-alt);max-width:160px;max-height:160px;margin-top:10px;display:block}.giveaway-thumb{object-fit:contain;border-radius:var(--radius-sm);background:var(--color-surface-alt);flex-shrink:0;width:56px;height:56px}.list-item:last-child{border-bottom:none}.list-item-link{color:inherit;cursor:pointer;border-radius:var(--radius-sm);flex:1;text-decoration:none;display:block}.list-item-link:hover{background:var(--color-surface-alt)}@media (width<=560px){.list-item{flex-direction:column;align-items:stretch}.actions{flex-flow:wrap}}.table-scroll{margin:4px 0;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:13px}.data-table th,.data-table td{text-align:left;white-space:nowrap;border-bottom:1px solid var(--color-border);padding:9px 12px}.data-table th{text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-muted);background:var(--color-surface-alt);font-size:11px;font-weight:700}.data-table tbody tr:hover{background:var(--color-surface-alt)}.data-table tbody tr:last-child td{border-bottom:none}.data-table a{color:var(--color-text);font-weight:600;text-decoration:none}.data-table a:hover{color:var(--color-accent)}.chart-wrap{transition:opacity .15s;position:relative}.chart-svg{width:100%;height:auto;display:block;overflow:visible}.chart-gridline{stroke:var(--color-border);stroke-width:1px}.chart-axis-label{fill:var(--color-text-subtle);font-size:11px}.chart-value-label{fill:var(--color-text-muted);font-size:11px;font-weight:600}.chart-bar{fill:var(--color-accent);transition:opacity .1s}.chart-bar.is-hovered{opacity:.75}.chart-bar-hit{fill:#0000;cursor:pointer}.chart-crosshair{stroke:var(--color-border-strong);stroke-width:1px;pointer-events:none}.chart-line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart-dot{stroke:var(--color-surface);stroke-width:2px}.chart-hit-overlay{fill:#0000;cursor:crosshair}.chart-legend{color:var(--color-text-muted);flex-wrap:wrap;gap:16px;margin-bottom:8px;font-size:13px;display:flex}.chart-legend-item{align-items:center;gap:6px;display:flex}.chart-legend-swatch{border-radius:1px;width:14px;height:2px;display:inline-block}.chart-tooltip{z-index:50;pointer-events:none;background:var(--color-text);color:#fff;border-radius:var(--radius-sm);white-space:nowrap;padding:8px 10px;font-size:12px;line-height:1.5;position:fixed;box-shadow:0 4px 16px #10182840}.chart-tooltip-title{opacity:.85;margin-bottom:4px;font-weight:600}.chart-tooltip-row{align-items:center;gap:6px;display:flex}.chart-tooltip-key{border-radius:1px;flex-shrink:0;width:10px;height:2px;display:inline-block}.chart-tooltip-value{font-weight:700}.chart-table-toggle{margin-top:8px}.chart-table{border-collapse:collapse;width:100%;margin-top:8px;font-size:13px}.chart-table th,.chart-table td{text-align:right;border-bottom:1px solid var(--color-border);font-variant-numeric:tabular-nums;padding:6px 8px}.chart-table th:first-child,.chart-table td:first-child{text-align:left;font-variant-numeric:initial}.draw-ceremony{color:#fff;z-index:1000;background:radial-gradient(circle at 50% 20%,#16264a 0%,#0e1a33 55%,#070d1c 100%);justify-content:center;align-items:center;font-family:inherit;display:flex;position:fixed;inset:0;overflow:hidden}.draw-exit{color:#b7c2dc;font-size:14px;text-decoration:none;transition:color .2s;position:absolute;top:20px;left:24px}.draw-exit:hover{color:#fff}.draw-mall-label{color:#7686a8;letter-spacing:.02em;font-size:14px;position:absolute;top:22px;right:24px}.draw-stage{text-align:center;flex-direction:column;align-items:center;gap:32px;padding:24px;display:flex}.draw-title{letter-spacing:.01em;background:linear-gradient(90deg,#fff,#b7c2dc);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(28px,5vw,52px);font-weight:800}.draw-hint{color:#b7c2dc;margin:-16px 0 0;font-size:16px}.draw-prize-label{color:#ffe9b0;margin:-16px 0 0;font-size:clamp(16px,2.2vw,20px);font-weight:700}.draw-summary{flex-direction:column;gap:8px;max-width:640px;max-height:50vh;padding:4px 8px;display:flex;overflow-y:auto}.draw-summary-item{color:#e6ebf7;margin:0;font-size:clamp(14px,1.8vw,18px)}.draw-start-btn{cursor:pointer;color:#fff;background:linear-gradient(135deg,#2563eb,#1d4fd1);border:none;border-radius:999px;padding:22px 56px;font-size:24px;font-weight:700;transition:transform .15s,box-shadow .15s;box-shadow:0 10px 40px #2563eb73}.draw-start-btn:hover:not(:disabled){transform:translateY(-2px)scale(1.02);box-shadow:0 14px 48px #2563eb8c}.draw-start-btn:active:not(:disabled){transform:translateY(0)scale(.98)}.draw-start-btn:disabled{cursor:not-allowed;opacity:.4;box-shadow:none}.draw-countdown{color:#f5a623;letter-spacing:.05em;font-size:clamp(32px,5vw,48px);font-weight:700}.draw-spin-number{font-variant-numeric:tabular-nums;color:#fff;text-shadow:0 0 40px #2563eb99;font-size:clamp(64px,14vw,160px);font-weight:900;animation:90ms ease-in-out draw-pulse}@keyframes draw-pulse{0%{opacity:.7;transform:scale(1.06)}to{opacity:1;transform:scale(1)}}.draw-winner{flex-direction:column;align-items:center;gap:12px;animation:.5s cubic-bezier(.34,1.56,.64,1) draw-winner-in;display:flex}@keyframes draw-winner-in{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.draw-winner-label{letter-spacing:.15em;text-transform:uppercase;color:#f5a623;font-size:clamp(18px,2.5vw,24px);font-weight:700}.draw-winner-number{background:linear-gradient(135deg,#ffe9b0,#f5a623);color:#0000;text-shadow:0 0 60px #f5a62380;-webkit-background-clip:text;background-clip:text;font-size:clamp(72px,16vw,180px);font-weight:900;line-height:1}.draw-winner-name{color:#fff;font-size:clamp(24px,4vw,40px);font-weight:700}.draw-again-btn{color:#fff;cursor:pointer;background:#ffffff0f;border:1px solid #fff3;border-radius:999px;margin-top:16px;padding:12px 32px;font-size:16px;font-weight:600;transition:background .2s}.draw-again-btn:hover{background:#ffffff24}.draw-candidate-name{color:#fff;text-shadow:0 0 40px #2563eb80;font-size:clamp(40px,9vw,96px);font-weight:900;line-height:1.05}.draw-candidate-actions{flex-wrap:wrap;justify-content:center;gap:20px;margin-top:8px;display:flex}.draw-confirm-btn,.draw-reject-btn{cursor:pointer;color:#fff;border:none;border-radius:999px;padding:18px 40px;font-size:20px;font-weight:700;transition:transform .15s,box-shadow .15s}.draw-confirm-btn{background:linear-gradient(135deg,#1a9c5f,#157d4c);box-shadow:0 10px 40px #1a9c5f73}.draw-reject-btn{background:linear-gradient(135deg,#e0384c,#c62e40);box-shadow:0 10px 40px #e0384c73}.draw-confirm-btn:hover:not(:disabled),.draw-reject-btn:hover:not(:disabled){transform:translateY(-2px)scale(1.02)}.draw-confirm-btn:active:not(:disabled),.draw-reject-btn:active:not(:disabled){transform:translateY(0)scale(.98)}.draw-confirm-btn:disabled,.draw-reject-btn:disabled{cursor:not-allowed;opacity:.4;box-shadow:none}.login-page{background:var(--color-bg);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--shadow-lg);border:1px solid var(--color-border);padding:36px 32px}.login-card h1{color:var(--color-text);letter-spacing:-.01em;align-items:center;gap:4px;margin:0;font-size:26px;display:flex}.login-logo{width:auto;height:18px;display:block}.brand-text{color:#292a41;font-family:Helvetica Neue,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:500}.login-card .subtitle{color:var(--color-text-muted);margin:4px 0 28px;font-size:14px}.login-card label{color:var(--color-text-muted);margin-bottom:16px;font-size:13px;font-weight:600;display:block}.login-card input{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);box-sizing:border-box;width:100%;margin-top:6px;padding:12px 14px;font-family:inherit;font-size:15px;display:block}.login-card input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft);outline:none}.login-card button{background:var(--color-accent);width:100%;color:var(--color-accent-contrast);border-radius:var(--radius-sm);cursor:pointer;border:none;margin-top:8px;padding:13px;font-size:15px;font-weight:600;transition:background-color .15s}.login-card button:hover:not(:disabled){background:var(--color-accent-hover)}.login-card button:disabled{opacity:.6;cursor:not-allowed}.login-card .error{color:var(--color-danger);margin:0 0 8px;font-size:13px}.search-input{width:100%;max-width:320px;margin:0 0 16px;position:relative}.search-input input{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);box-sizing:border-box;width:100%;padding:10px 34px 10px 12px;font-family:inherit;font-size:14px;display:block}.search-input input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft);outline:none}.search-input-clear{color:var(--color-text-subtle);cursor:pointer;background:0 0;border:none;padding:4px;font-size:18px;line-height:1;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.search-input-clear:hover{color:var(--color-text)}:root{--color-bg:#f5f7fb;--color-surface:#fff;--color-surface-alt:#eef1f8;--color-border:#dfe4ee;--color-border-strong:#c5cce0;--color-text:#101828;--color-text-muted:#5b6478;--color-text-subtle:#8890a3;--color-accent:#2563eb;--color-accent-hover:#1d4fd1;--color-accent-soft:#e6efff;--color-accent-contrast:#fff;--color-danger:#e0384c;--color-danger-hover:#c62e40;--color-danger-soft:#fdecee;--color-success:#1a9c5f;--color-success-soft:#e5f7ee;--color-warning:#b5730b;--color-warning-soft:#fdf1de;--sidebar-bg:#f7f7f7;--sidebar-bg-alt:#fff;--sidebar-border:#dcdcdc;--sidebar-text:#000;--sidebar-text-muted:#4d4d4d;--sidebar-text-strong:#000;--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--shadow-sm:0 1px 2px #14152a0f;--shadow-md:0 4px 16px #14152a14;--shadow-lg:0 16px 40px #14152a24;--header-h:60px;--sidebar-w:264px}*{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;background:var(--color-bg);color:var(--color-text);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}#root{min-height:100vh}a{color:var(--color-accent)}
