.layout{min-height:100vh;display:flex}.topbar,.sidebar-overlay{display:none}.sidebar{width:var(--sidebar-w);background:var(--sidebar-bg);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;margin-bottom:20px;font-size:20px;font-weight:700}.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{text-transform:uppercase;letter-spacing:.06em;color:var(--sidebar-text-muted);margin-bottom:6px;padding:0 14px;font-size:11px;font-weight:700}.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:#ffffff0f}.sidebar nav a.active{background:var(--color-accent);color:#fff}.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:#ffffff14}.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}.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}.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);text-decoration:none}.list-item-link:hover{background:var(--color-surface-alt)}@media (width<=560px){.list-item{flex-direction:column;align-items:stretch}.actions{flex-flow:wrap}}.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-error{color:#ff8a9b;margin:-16px 0 0;font-size:16px}.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}.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;margin:0;font-size:26px}.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:#0e1a33;--sidebar-bg-alt:#16264a;--sidebar-border:#23375f;--sidebar-text:#b7c2dc;--sidebar-text-muted:#7686a8;--sidebar-text-strong:#fff;--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)}
