:root{--red:#b8332e;--red-dark:#8f211d;--ivory:#fff8eb;--gold:#d5a35b;--ink:#352b28;--muted:#88766b;--line:#ecddc9;--serif:"Noto Serif SC","Songti SC","SimSun",serif;--sans:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color-scheme:light;font-family:var(--sans);color:var(--ink);background:var(--ivory);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.65}button:focus-visible,a:focus-visible{outline:3px solid #d19c52;outline-offset:4px}button{touch-action:manipulation}.icon{width:24px;height:24px;flex-shrink:0}a{color:inherit}.brand{display:flex;align-items:center;gap:9px;font-size:15px;letter-spacing:.5px}.brand .icon{width:21px;height:21px}.text-button,.icon-button{border:0;background:none;color:inherit;display:inline-flex;align-items:center;justify-content:center}.text-button{padding:6px 0;font-size:14px;gap:2px}.text-button .icon{width:16px;height:16px}.icon-button{width:34px;height:34px;border-radius:50%;padding:6px}.icon-button:hover{background:#f8eee3}.campaign-body{background:#eedfca}.campaign{width:100%;max-width:480px;margin:0 auto;min-height:100dvh;background:var(--ivory);overflow:hidden;box-shadow:0 0 60px #5f2d1520}.celebration{position:relative;height:calc(min(100vw,480px)*1.315);max-height:631px;background:#b8332e url('/assets/celebration.webp') center bottom/100% 100% no-repeat;color:#fff0c8;padding:0 17px}.campaign-header{height:49px;display:flex;align-items:center;justify-content:space-between}.rule-link{font-size:13px}.celebration h1{margin:12px 0 0;text-align:center;font-family:var(--serif);font-size:clamp(31px,9.4vw,45px);font-weight:700;line-height:1.35;letter-spacing:1px;text-shadow:0 2px 12px #6d18151c}.ornament{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:4px;color:#e4ba76;font-size:11px;height:10px}.ornament span{height:1px;width:35px;background:#e4ba76}.hero-subtitle{text-align:center;margin:9px 0 0;font-family:var(--serif);font-size:clamp(13px,3.75vw,18px);letter-spacing:.8px;white-space:nowrap}.wheel-stage{position:absolute;top:30%;left:0;width:100%;display:flex;flex-direction:column;align-items:center}.wheel-rim{position:relative;width:84%;aspect-ratio:1;border:2px solid #ffe3a0;border-radius:50%;padding:13px;background:linear-gradient(135deg,#fff1b8,#dba345 38%,#f2c979 62%,#c99035);box-shadow:0 5px 14px #731b1840,inset 0 0 0 1px #fbe7a8;z-index:1}.wheel{position:relative;width:100%;height:100%;border-radius:50%;overflow:hidden;background:conic-gradient(#f9dcc0 0 90deg,#fff4dc 90deg 180deg,#f9dcc0 180deg 270deg,#fff4dc 270deg);box-shadow:inset 0 0 10px #994a1628,inset 0 0 0 1px #c9944e;color:#952a18;will-change:transform}.wheel-sector{position:absolute;width:50%;height:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding-top:8px}.wheel-sector svg{width:43px;height:43px}.wheel-sector span{font-family:var(--serif);font-size:13px;font-weight:700;white-space:nowrap}.sector-one{top:0;left:0}.sector-two{top:0;right:0}.sector-three{bottom:0;left:0;padding-bottom:10px;padding-top:0}.sector-four{bottom:0;right:0;padding-bottom:10px;padding-top:0}.spin-button{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:30%;aspect-ratio:1;border:3px solid #f3cf82;border-radius:50%;background:radial-gradient(circle at 30% 15%,#d84b36,#ac231c 90%);box-shadow:0 4px 8px #71301459,inset 0 0 0 2px #d68d3c;color:#fff1bd;display:grid;place-items:center;padding:0;z-index:2}.spin-button:before{content:"";position:absolute;left:50%;top:-28px;transform:translateX(-50%);width:28px;height:31px;background:linear-gradient(100deg,#f3cd76,#fff0bc 50%,#dca951);clip-path:polygon(50% 0,100% 100%,0 100%)}.spin-button span{font-family:var(--serif);font-size:clamp(21px,6vw,29px);line-height:1.12;font-weight:700}.rim-light{position:absolute;width:8px;height:8px;border-radius:50%;background:linear-gradient(#fffbe1,#e4b45c);box-shadow:0 1px 2px #9254135e}.light-one{top:3px;left:calc(50% - 4px)}.light-two{top:15%;right:15%}.light-three{top:calc(50% - 4px);right:3px}.light-four{bottom:15%;right:15%}.light-five{bottom:3px;left:calc(50% - 4px)}.light-six{bottom:15%;left:15%}.light-seven{top:calc(50% - 4px);left:3px}.light-eight{top:15%;left:15%}.wheel-plinth{width:83%;height:31px;margin-top:-8px;border-radius:50%;background:linear-gradient(#d24b30,#a9251e);border:1px solid #eab46d;box-shadow:0 7px 0 #a9221c,0 9px 12px #80201233}.gift-summary{margin:4px 14px 0;min-height:83px;border:1px solid #e8c68f;border-radius:11px;display:flex;align-items:center;padding:12px 15px;gap:14px;background:#fff8edb3}.gift-thumbnail{width:57px;height:57px;border-radius:8px;background:#fae8c8;display:grid;place-items:center;color:#9d321f;flex-shrink:0}.gift-thumbnail svg{width:42px;height:42px}.gift-title>span{font-size:12px;color:#874021;background:#f2cf91;border-radius:4px;padding:1px 6px}.gift-title h2{font-family:var(--serif);font-size:22px;margin:5px 0 0;color:#74291b;line-height:1.2;white-space:nowrap}.receipt-link{margin-left:auto;padding-left:12px;border-left:1px solid #ead5b5;color:#a53324;font-size:12px;white-space:nowrap}.fixed-notice{font-size:12px;line-height:1.6;text-align:center;color:#83503c;margin:11px 8px 13px}.page-error:empty{display:none}.page-error{margin:10px 20px;color:var(--red);font-size:13px;line-height:1.6;text-align:center}.instructions{margin:15px 14px 0;border:1px solid #edc993;border-radius:10px;padding:14px 22px}.instructions h2{display:flex;align-items:center;justify-content:center;gap:13px;font-family:var(--serif);color:#722a1d;font-size:21px;line-height:1.3;margin:0 0 12px}.instructions h2:before,.instructions h2:after{content:"";width:35px;height:1px;background:#e5b586}.instructions ol{margin:0;padding:0;list-style:none}.instructions li{position:relative;display:flex;gap:18px;margin-bottom:14px;align-items:flex-start}.instructions li:last-child{margin-bottom:0}.instructions li:not(:last-child):after{position:absolute;content:"";top:29px;left:12px;height:calc(100% - 9px);border-left:1px dashed #e1b371}.step-number{display:grid;place-items:center;border-radius:50%;width:26px;height:26px;flex-shrink:0;background:#dca95d;color:#fff9e9;font-family:Georgia,serif;font-size:21px}.instructions h3{font-family:var(--serif);font-size:15px;margin:0 0 2px;color:#783326;line-height:1.5}.instructions p{font-size:11px;line-height:1.5;color:#9b7d6c;margin:0}.campaign-footer{padding:11px 5px 20px;text-align:center;font-size:10px;color:#9b7d6c}.modal{width:calc(100% - 32px);max-width:410px;border:1px solid #e4d5c7;border-radius:16px;padding:25px;color:var(--ink);background:#fffdfa;box-shadow:0 16px 80px #27110933;max-height:calc(100dvh - 48px);overflow-y:auto}html:has(dialog[open]){overflow:hidden}.modal::backdrop{background:#33231f80;backdrop-filter:blur(3px)}.modal-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-heading h2{font-size:20px;margin:0;font-weight:700}.modal-heading .icon-button{margin-right:-5px}.modal-subtitle{font-size:13px;color:var(--muted);margin:6px 0 22px}.field{display:flex;flex-direction:column;gap:9px;font-size:14px;margin:18px 0}.field input,.field textarea,.search-box input,select{border:1px solid #ded7d0;border-radius:6px;padding:12px 13px;background:white;color:var(--ink);outline:0;font-size:14px;min-width:0}.field input:focus,.field textarea:focus,.search-box input:focus,select:focus{border-color:var(--red);box-shadow:0 0 0 3px #b8332e0c}.field input::placeholder,.search-box input::placeholder{color:#a49c96}.consent{display:flex;gap:8px;align-items:flex-start;font-size:12px;line-height:1.8;margin:21px 0}.consent input{accent-color:var(--red);width:16px;height:16px;flex-shrink:0;margin:3px 0 0}.inline-link{font-size:inherit;border:0;padding:0 2px;color:var(--red);background:none}.primary-button,.secondary-button{border:1px solid transparent;border-radius:6px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;font-weight:600;font-size:14px;padding:10px 20px}.primary-button{background:var(--red);color:white}.primary-button:hover{background:#a82e29}.secondary-button{border-color:#d8cfc4;background:#fffdfa;color:#564940;font-weight:400}.secondary-button:hover{border-color:#bc9c81;background:#fff8ef}.modal .primary-button{width:100%}.form-error{font-size:13px;color:var(--red);line-height:1.6;margin:0 0 12px}.form-error:empty{display:none}.prose{font-size:14px;line-height:1.9;color:#65564d}.prose p{margin:17px 0}.prose .primary-button{margin-top:10px}.receipt-art{width:90px;height:90px;border-radius:50%;background:#fae8c8;display:grid;place-items:center;margin:18px auto 8px;color:#9b3122}.receipt-art svg{width:60px;height:60px}.receipt-modal{text-align:center}.receipt-kicker{color:#ad6c39;font-size:12px;margin:9px 0 5px}.receipt-modal h3{font-family:var(--serif);font-size:27px;margin:0 0 12px;color:#762c1e}.status{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:4px;font-size:12px;white-space:nowrap}.status:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.status.pending{background:#fff0dc;color:#a5702e}.status.delivered{background:#e7f3e9;color:#417549}.receipt-details{text-align:left;margin:22px 0 14px;border-top:1px solid #e9dfd5;padding-top:12px}.receipt-details>div{display:flex;justify-content:space-between;gap:10px;font-size:12px;line-height:2.4}.receipt-details dt{color:#988474;flex-shrink:0}.receipt-details dd{margin:0;word-break:break-all}#receipt-code{user-select:all;font-variant-numeric:tabular-nums;font-family:Consolas,monospace}.delivery-note{text-align:left;background:#fff3e1;padding:12px;border-radius:6px;color:#8c6446;font-size:12px;line-height:1.8;white-space:pre-wrap}.copy-status{font-size:12px;color:#8b735d;margin:10px 0 0;min-height:18px}.admin-body{background:#fcf8f0;min-height:100dvh}.admin-header{height:72px;border-bottom:1px solid #eadfd3;padding:0 5.2%;display:flex;align-items:center;justify-content:space-between;background:#fffcf7;gap:24px}.admin-header .brand{font-size:19px}.admin-header .brand .icon{width:30px;height:30px;color:var(--red)}.admin-header .brand small{font-size:17px;font-weight:400;letter-spacing:0}.header-actions{display:flex;gap:12px}.admin-main{max-width:1408px;width:calc(100% - 8.333vw);margin:40px auto;padding:0}.admin-title{display:flex;align-items:center;justify-content:space-between;gap:18px}.admin-title h1{font-size:36px;margin:0 0 8px;letter-spacing:1px}.admin-title p{font-size:18px;color:#7f7067;margin:0}.admin-title .primary-button{padding:11px 23px;min-height:48px}.admin-stats{display:grid;grid-template-columns:repeat(3,1fr);margin:32px 0 22px}.admin-stats>div{position:relative;text-align:center}.admin-stats>div:not(:last-child):after{content:"";position:absolute;right:0;top:3px;bottom:10px;width:1px;background:#e6d6c4}.admin-stats dt{font-size:16px;color:#6f5f55}.admin-stats dd{font-size:40px;line-height:1.5;font-weight:650;margin:0;font-variant-numeric:tabular-nums}.admin-tabs{display:flex;gap:6px}.admin-tabs button{background:none;border:0;position:relative;font-size:16px;padding:14px 18px 17px;color:#77665b}.admin-tabs button[aria-selected=true]{color:var(--red);font-weight:700}.admin-tabs button[aria-selected=true]:after{content:"";position:absolute;bottom:-1px;left:5px;right:5px;height:3px;background:var(--red)}.admin-panel{background:white;border:1px solid #e9e0d6;border-radius:6px;padding:24px;box-shadow:0 2px 6px #4f321404}.toolbar{display:flex;gap:15px;align-items:center;margin-bottom:22px}.search-box{position:relative;flex:0 1 365px}.search-box>.icon{position:absolute;left:13px;top:12px;width:20px;height:20px;color:#8d857d}.search-box input{width:100%;padding-left:42px;height:45px}.toolbar select{min-width:160px;height:45px}.toolbar .secondary-button{height:45px}.toolbar .icon{width:19px;height:19px}.table-wrap{overflow:auto;border:1px solid #e9e5e0;border-radius:7px}table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap;font-size:14px}th{font-weight:500;font-size:14px;background:#faf9f7;padding:16px 18px;color:#6e6057;border-bottom:1px solid #e9e5e0}td{padding:17px 18px;border-bottom:1px solid #f0ebe5}tbody tr:last-child td{border-bottom:0}td:first-child{font-weight:600}td code{font-size:11px;color:#776d65}td small{font-size:11px;color:#9f8a79;display:block;margin-bottom:4px}.row-button{background:none;border:0;color:var(--red);font-size:12px;padding:7px 0}.empty-row td{text-align:center;height:285px}.empty-state svg{width:52px;height:52px;color:#bbb7b1}.empty-state h3{font-size:16px;font-weight:500;margin:14px 0 9px}.empty-state p{font-size:13px;color:#99918b;margin:0;font-weight:400}.fixed-strip{margin-top:20px;padding:17px 19px;background:#fff8ee;border:1px solid #f5ebdc;border-radius:6px;display:flex;align-items:center;gap:14px;font-size:13px}.fixed-strip>.icon{width:25px;height:25px;color:#99432e}.records-footnote{font-size:12px;color:#9a8b7e;margin:14px 0 0}.admin-error{font-size:13px;color:var(--red);line-height:1.7;margin:10px 0 0}.admin-error:empty{display:none}[hidden]{display:none!important}.settings-form{max-width:620px}.settings-form h2{font-size:20px;margin:3px 0 7px}.settings-form>p{font-size:13px;color:var(--muted);margin-bottom:24px;line-height:1.7}.settings-form .field{margin:24px 0}.settings-form textarea{resize:vertical;min-height:110px;line-height:1.7}.switch-label{display:flex;gap:10px;align-items:center;font-size:14px;margin:22px 0}.switch-label input{accent-color:var(--red);width:18px;height:18px}.locked-prizes{border-top:1px solid #eee6dc;border-bottom:1px solid #eee6dc;margin:24px 0;padding:4px 0}.locked-prizes>div{display:flex;align-items:center;justify-content:space-between;font-size:14px;padding:13px 0;border-bottom:1px solid #f4eee7}.locked-prizes>div:last-child{border-bottom:0}.locked-prizes small{color:#a19286;font-size:12px}.locked-prizes .enabled{color:#7b5834;font-weight:600}.save-status{font-size:13px;color:#5b7a53;margin-left:12px}.admin-footer{font-size:12px;color:#a39487;margin:23px 0;text-align:center}.confirm-description{font-size:14px;color:#7e6c60;line-height:1.8;margin:16px 0 23px}.confirm-actions{display:flex;gap:10px}.confirm-actions>.primary-button{width:auto;flex:1}.confirm-actions>.secondary-button{flex:1}
@media(min-width:481px){.celebration h1{font-size:45px}.hero-subtitle{font-size:18px}.wheel-sector svg{width:54px;height:54px}.wheel-sector span{font-size:16px}.gift-summary{min-height:93px}.gift-title h2{font-size:26px}.receipt-link{font-size:14px}.fixed-notice{font-size:14px}.instructions{padding:20px 26px}.instructions h3{font-size:18px}.instructions p{font-size:13px}.instructions li{margin-bottom:20px}.campaign-header{height:57px}.campaign-footer{padding:15px 0 24px;font-size:12px}.gift-thumbnail{width:65px;height:65px}.gift-summary{margin-top:3px}.spin-button span{font-size:29px}}
@media(max-width:370px){.gift-summary{padding:10px;gap:9px}.gift-title h2{font-size:20px}.gift-thumbnail{width:48px;height:48px}.receipt-link{font-size:11px;padding-left:7px}.fixed-notice{font-size:11px}.instructions{padding:14px 17px}.instructions li{gap:12px}.hero-subtitle{font-size:12px}.wheel-sector span{font-size:11px}.wheel-sector svg{width:36px;height:36px}.celebration h1{margin-top:7px}}
@media(max-width:720px){.admin-header{height:auto;min-height:64px;padding:15px 18px;gap:10px;flex-wrap:wrap}.admin-header .brand{font-size:16px}.admin-header .brand small{font-size:14px}.header-actions{gap:6px}.header-actions .secondary-button{font-size:12px;padding:7px 11px;min-height:35px}.admin-main{width:100%;margin:26px auto;padding:0 16px}.admin-title h1{font-size:26px}.admin-title p{font-size:12px}.admin-title .primary-button{padding:9px 12px;font-size:12px;min-height:40px}.admin-title .icon{display:none}.admin-panel{padding:14px}.toolbar{gap:10px;flex-wrap:wrap}.search-box{flex:1 0 100%}.toolbar select{flex:1}.toolbar .secondary-button{min-width:85px}.admin-stats{margin:24px 0 12px}.admin-stats dd{font-size:29px}.admin-stats dt{font-size:12px}.fixed-strip{font-size:11px;gap:8px;padding:13px 10px}.modal{padding:22px}.admin-tabs button{font-size:14px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}


/* 四档奖项复用原有转盘视觉。 */
.wheel-sector{gap:3px;padding-top:8px}.wheel-sector small{font-family:var(--serif);font-size:11px;color:#a06a42}.wheel-sector strong{font-family:Georgia,var(--serif);font-size:25px;font-weight:700;line-height:1.1}.wheel-sector span{font-size:12px}.wheel-sector.unavailable{color:#9b9188;background:#ddd6ca70}.wheel-sector.unavailable small{color:#9b9188}.wheel-sector em{font-family:var(--sans);font-style:normal;font-size:9px;color:#817970}.gift-title h2{font-size:18px}.gift-title{min-width:0}.gift-title h2{white-space:normal;line-height:1.3}.fixed-notice .inline-link{font-size:inherit;text-decoration:underline;text-underline-offset:3px}.prize-probabilities{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:14px 0}.prize-probabilities>div{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #f1e9de;font-size:12px;align-items:center}.prize-probabilities>div:last-child{border:0}.prize-probabilities strong{color:var(--red);white-space:nowrap;font-variant-numeric:tabular-nums}.rules-version{font-size:11px;color:var(--muted)}.probability-rows{border-top:1px solid #eee6dc;margin-top:25px}.probability-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid #eee6dc;font-size:14px}.probability-field{display:flex;align-items:center;gap:8px}.probability-field input{width:110px;border:1px solid #ded7d0;border-radius:6px;padding:10px;background:#fff;font-size:14px;text-align:right}.probability-field input:focus{outline:2px solid #d5a35b;outline-offset:2px}.probability-total{font-size:14px;color:#517548;text-align:right;margin:12px 0}.probability-total.invalid{color:var(--red)}.settings-form>.probability-help{font-size:12px;line-height:1.8;color:#89715d;margin-bottom:22px}.fixed-strip{align-items:flex-start;line-height:1.8}.fixed-strip>span{min-width:0}.fixed-strip strong{font-weight:500}
@media(min-width:481px){.wheel-sector small{font-size:13px}.wheel-sector strong{font-size:31px}.wheel-sector span{font-size:15px}.gift-title h2{font-size:22px}}
@media(max-width:370px){.wheel-sector small{font-size:9px}.wheel-sector strong{font-size:21px}.wheel-sector span{font-size:10px}.gift-title h2{font-size:15px}.probability-row{font-size:12px}.probability-field input{width:83px}}
