:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;font-synthesis:none;--paper:#fffcf7;--ink:#302b28;--muted:#80726d;--accent:#a82b30;--soft:#f7e9e4;--line:#eadfd7;--radius:10px;--title:"Songti SC","Noto Serif CJK SC",STSong,serif;color:var(--ink);background:var(--paper);font-size:16px;line-height:1.5}*{box-sizing:border-box}body{margin:0;min-height:100vh;min-height:100svh}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;min-height:48px;border:0;background:transparent;border-radius:var(--radius);font-weight:600;padding:10px 16px}button:disabled{opacity:.5;cursor:default}button:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid #bf893f;outline-offset:3px}a{color:var(--accent);text-decoration:none}button:hover{filter:brightness(.94)}button.primary{background:var(--accent);color:white}button.secondary{border:1px solid var(--line);background:transparent}.quiet{color:var(--muted)}h1,h2,p{margin:0}h1{font-family:var(--title);font-weight:600;line-height:1.5;letter-spacing:2px}h2{font-size:18px;line-height:1.4}.icon{width:21px;height:21px;display:inline-block;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}.chevron{width:17px;height:17px}.hidden{display:none!important}.guest{max-width:480px;margin:0 auto;min-height:100svh}.brandbar{display:flex;align-items:center;justify-content:space-between;padding:26px 26px 14px;gap:12px}.brand{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:600;letter-spacing:1px}.seal{font-family:var(--title);display:inline-flex;justify-content:center;align-items:center;width:29px;height:29px;border:1px solid currentColor;color:var(--accent);border-radius:5px;font-size:21px;font-weight:500;line-height:1}.date{font-size:12px;color:var(--muted);letter-spacing:1px}.home{padding:20px 26px 42px}.welcome{text-align:center;padding:24px 0 20px}.welcome-art{height:65px;color:var(--accent);margin-bottom:20px}.welcome-art svg{height:100%;width:110px;fill:none;stroke:currentColor;stroke-width:1;stroke-linecap:round;stroke-linejoin:round}.welcome h1{font-size:31px;margin-bottom:28px}.upload{display:flex;width:100%;align-items:center;justify-content:center;gap:10px;min-height:55px;font-size:17px}.home.has-photos .welcome{padding-top:10px;padding-bottom:0}.home.has-photos .welcome-art{display:none}.home.has-photos .welcome h1{font-size:25px;line-height:1.4;margin-bottom:22px}.history{margin-top:36px}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.section-head span{font-size:13px;color:var(--muted)}.history-row{display:flex;align-items:center;gap:14px;width:100%;padding:14px 0;border-bottom:1px solid var(--line);border-radius:0;text-align:left}.history-row img{width:66px;height:78px;object-fit:cover;border-radius:5px;flex:none}.history-row strong{font-size:24px;font-variant-numeric:tabular-nums;letter-spacing:1px}.history-row .row-states{display:flex;gap:12px;font-size:12px;color:var(--muted);font-weight:400;margin-top:5px}.history-row>.icon{margin-left:auto;color:var(--muted)}.pagebar{display:grid;grid-template-columns:90px 1fr 90px;align-items:center;min-height:72px;padding:8px 14px}.pagebar .page-name{text-align:center;font-size:16px;font-weight:600}.pagebar button{justify-self:start;display:flex;align-items:center;gap:3px;font-weight:500;padding:10px 6px}.preview{height:100svh;min-height:420px;display:flex;flex-direction:column;max-width:480px;margin:auto}.preview .image-stage{flex:1;min-height:0;margin:8px 20px 12px;display:flex;justify-content:center;align-items:center;overflow:hidden}.preview .image-stage img{display:block;width:100%;height:100%;object-fit:contain;border-radius:4px}.preview-actions{display:grid;grid-template-columns:1fr 2fr;gap:12px;padding:16px 24px max(24px,env(safe-area-inset-bottom));background:var(--paper);flex:none}.preview-actions button{min-height:54px}.alert{margin:10px 24px;padding:12px 14px;background:var(--soft);color:var(--accent);font-size:14px;border-radius:8px;line-height:1.5}.result{padding:0 26px 34px}.result-top{text-align:center;margin:10px 0 18px}.result-label{font-size:13px;color:var(--muted)}.result-number{font-size:82px;font-weight:650;line-height:1.2;font-variant-numeric:tabular-nums;letter-spacing:5px;color:var(--accent);margin:2px 0 8px}.result-instruction{font-size:13px;color:var(--muted)}.result-picture{display:block;width:100%;max-height:32svh;object-fit:contain;margin:22px auto 14px;border-radius:6px}.status-list{margin-top:14px}.status-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:15px 0;border-bottom:1px solid var(--line);font-size:15px}.status-name{display:flex;align-items:center;gap:10px}.status-name .icon{color:var(--muted)}.status-value{font-weight:600}.status-value.ready{color:var(--accent)}.result-actions{display:grid;grid-template-columns:1fr 1.7fr;gap:12px;margin-top:26px}.result-actions button{font-size:15px}.album-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.album-card{display:block;min-width:0;border:0;background:transparent;padding:0;text-align:left}.album-card img{display:block;width:100%;height:170px;object-fit:cover;border-radius:8px}.album-meta{display:flex;align-items:center;justify-content:space-between;gap:5px;margin-top:9px}.album-meta strong{font-size:22px;letter-spacing:1px}.album-meta span{font-size:11px;color:var(--muted);font-weight:400}.album-card .ticket-meta{font-size:11px;color:var(--muted);margin-top:3px;font-weight:400}.more-photos{margin-top:24px;width:100%}.receipt-wrap{position:relative;border:1px solid var(--line);border-radius:12px;background:#fff;padding:24px 20px 4px;margin-top:10px}.receipt-wrap .result-top{margin:0}.receipt-wrap .result-picture{max-height:26svh}.receipt-wrap .status-list{border-top:1px dashed var(--line);margin-top:20px}.receipt-wrap .status-row:last-child{border:0}.admin{max-width:1250px;margin:auto;padding:28px 30px 40px}.admin-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.admin-head h1{font-family:inherit;font-size:25px;font-weight:650;letter-spacing:0}.admin-head .brand{font-size:13px;color:var(--muted)}.admin-head .seal{width:24px;height:24px;font-size:18px}.admin-tools{display:flex;align-items:center;gap:20px;margin-bottom:24px}.search{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;background:white;padding:0 14px;flex:1;max-width:400px}.search .icon{color:var(--muted)}.search input{color:inherit;background:transparent;border:0;padding:13px 0;width:100%;outline:none;font-size:17px;min-width:0}.search:focus-within{outline:2px solid var(--accent);outline-offset:2px}.filters{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.filters button{min-height:43px;white-space:nowrap;font-size:14px;font-weight:500;padding:9px 13px}.filters button[aria-pressed=true]{background:var(--soft);color:var(--accent);font-weight:600}.filters .count{font-size:12px;margin-left:5px}.admin-layout{display:grid;grid-template-columns:minmax(300px,1fr) minmax(340px,1fr);gap:28px;align-items:start}.list-header{display:grid;grid-template-columns:1fr 78px 66px;padding:0 16px 12px;font-size:12px;color:var(--muted)}.admin-row{display:grid;grid-template-columns:minmax(0,1fr) 78px 66px;align-items:center;padding:13px 16px;border-bottom:1px solid var(--line);border-radius:0;width:100%;text-align:left;font-weight:400;min-height:87px}.admin-row.selected{background:var(--soft);border-radius:8px;border-bottom-color:transparent}.admin-row .identity{display:flex;align-items:center;gap:13px}.admin-row img{width:52px;height:60px;object-fit:cover;border-radius:5px}.admin-row strong{font-size:23px;letter-spacing:1px;font-weight:650}.admin-row small{font-size:12px;color:var(--muted)}.detail{border:1px solid var(--line);border-radius:14px;background:white;padding:22px 24px;position:sticky;top:20px}.detail-top{display:flex;align-items:center;justify-content:space-between}.detail-top strong{font-size:32px;letter-spacing:2px}.detail-top .quiet{font-size:13px;min-height:44px;padding:8px}.large-photo{display:block;width:100%;padding:0;margin:18px 0;background:#f9f8f6;border-radius:6px;overflow:hidden}.large-photo img{display:block;width:100%;height:220px;object-fit:contain}.detail-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 0;border-top:1px solid var(--line)}.detail-row .field{display:flex;flex-direction:column;gap:4px}.detail-row .field b{font-size:15px;font-weight:500}.detail-row small{color:var(--muted);font-size:12px}.detail-row button{min-height:43px;font-size:13px;padding:9px 14px;white-space:nowrap}.detail-row .quiet{font-weight:400}.detail-row .row-actions{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}.empty-list{text-align:center;padding:56px 15px;font-size:15px;color:var(--muted)}.empty-list button{display:block;margin:8px auto;color:var(--accent)}.detail-placeholder{border:1px dashed var(--line);border-radius:14px;padding:100px 24px;text-align:center;color:var(--muted);font-size:15px}.viewer{border:0;background:var(--paper);padding:20px;max-width:95vw;max-height:95svh;border-radius:12px;color:var(--ink)}.viewer::backdrop{background:#221815a8}.viewer img{display:block;max-width:85vw;max-height:75svh;object-fit:contain}.viewer button{display:block;margin:12px auto 0}.theme-b{--paper:#fff9f6;--accent:#ab414a;--soft:#f8e9e5;--line:#eadbd6;--ink:#3e3030;--muted:#826a6b;--radius:18px;--title:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif}.theme-b .seal{border:0;font-size:26px}.theme-b .welcome{text-align:left;position:relative;padding-top:30px}.theme-b .welcome-art{position:absolute;right:4px;top:18px;width:88px;height:100px;opacity:.8;pointer-events:none}.theme-b .welcome-art svg{width:100%;height:100%}.theme-b .welcome h1{font-size:33px;font-weight:500;letter-spacing:0;line-height:1.55}.theme-b .welcome h1 span{display:block}.theme-b .welcome .upload{margin-top:14px;border-radius:30px}.theme-b .home.has-photos .welcome h1{font-size:28px}.theme-b .result-number{font-weight:500;letter-spacing:3px}.theme-b .result-picture{border-radius:12px}.theme-b .brandbar{padding-top:28px}.theme-c{--paper:#f7faf6;--accent:#436550;--soft:#e8f0e6;--line:#dce4d8;--ink:#2f3b32;--muted:#69796c;--title:"Songti SC",STSong,serif;--radius:6px}.theme-c .seal{background:#af3435;color:#fff;border:0;border-radius:2px}.theme-c .welcome{padding:30px 20px 24px;border:1px solid #cbd6c6;margin-top:20px;position:relative}.theme-c .welcome:before,.theme-c .welcome:after{content:"";position:absolute;inset:5px;border:1px solid #e0e7dc;pointer-events:none}.theme-c .welcome:after{inset:auto 18px -6px;height:6px;border:0;border-bottom:1px solid #cbd6c6}.theme-c .welcome-art{height:50px;margin-bottom:20px}.theme-c .welcome h1{font-size:29px;line-height:1.6}.theme-c .welcome .upload{position:relative;z-index:1}.theme-c .home.has-photos .welcome{border:0;padding:0;margin-top:10px}.theme-c .home.has-photos .welcome:before,.theme-c .home.has-photos .welcome:after{display:none}.theme-c .result-number{color:#ae3435}.theme-c .receipt-wrap:before{content:"囍";font-family:var(--title);position:absolute;top:20px;right:20px;border:1px solid #ae3435;color:#ae3435;width:29px;height:29px;line-height:27px;text-align:center;font-size:20px}.theme-c .result-actions .primary{background:var(--accent)}@media(min-width:600px){body:not(.is-admin) .guest,body:not(.is-admin) .preview{border-left:1px solid var(--line);border-right:1px solid var(--line)}}@media(max-width:760px){.admin{padding:22px 18px}.admin-tools{flex-wrap:wrap;gap:12px}.search{max-width:none;flex-basis:100%}.admin-layout{grid-template-columns:minmax(250px,1fr) minmax(280px,1fr);gap:16px}.detail{padding:18px}.admin-row{grid-template-columns:1fr 60px 60px;padding:12px 8px}.list-header{grid-template-columns:1fr 60px 60px;padding-left:8px;padding-right:8px}}@media(max-width:590px){.admin-layout{display:flex;flex-direction:column}.admin-list,.detail{width:100%}.detail{position:static}.admin-head .brand{display:none}.admin-row{grid-template-columns:1fr 90px 70px}.list-header{grid-template-columns:1fr 90px 70px}.admin-list{max-height:310px;overflow:auto}.filters button{padding:8px 10px}.guest .brandbar{padding-top:max(24px,env(safe-area-inset-top))}}@media(max-width:350px){.brandbar,.home{padding-left:20px;padding-right:20px}.welcome h1{font-size:28px}.theme-b .welcome-art{width:65px;right:0}.theme-b .welcome h1{font-size:28px}.result{padding-left:20px;padding-right:20px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}
