:root{color-scheme:light;--bg:#f6f1ea;--card:#ffffff;--ink:#2b2118;--ink-2:#5c4d3e;--muted:#7d6e5f;--line:#e7dccd;--line-2:#f0e8dc;--brand:#5b3a1e;--brand-ink:#f6ead9;--accent:#b5812f;--ok:#1d7347;--ok-bg:#e5f3ec;--warn:#8f5505;--warn-bg:#fdf0db;--bad:#b3261e;--bad-bg:#fbe8e6;--info:#2a5d8f;--info-bg:#e7f0f9;--input-bg:#fffdfa;--tab-bg:#ece3d6;--tab-on:#ffffff;--track:#eee5d8;--gray-bg:#eee7dd;--on-brand:#ffffff;--on-ok:#ffffff;--on-bad:#ffffff;--topbar-bg:var(--brand);--topbar-ink:var(--brand-ink);--radius:14px;--font:-apple-system,BlinkMacSystemFont,"PingFang TC","Microsoft JhengHei","Noto Sans TC","Helvetica Neue",Arial,sans-serif;--mono:"SF Mono",SFMono-Regular,Menlo,Consolas,monospace}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}#register{scroll-margin-top:12px}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.6}a{color:var(--brand)}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{line-height:1.35;margin:0}.brandbar{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 14px;background:var(--brand);color:var(--brand-ink);padding:14px 20px}.brand-logo{display:block;height:23px;width:auto}.brandbar.has-label .brand-logo{height:19px}.brand-label{border-left:1px solid color-mix(in srgb,var(--brand-ink) 45%,transparent);padding-left:14px;letter-spacing:.22em;font-size:13px;font-weight:600}.container{width:100%;max-width:560px;margin:0 auto;padding:20px 16px 48px}.container.wide{max-width:1120px}.stack>*+*{margin-top:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px}.muted{color:var(--muted)}.small{font-size:13px}.center{text-align:center}.poster{display:block;width:100%;height:auto;border-radius:var(--radius);border:1px solid var(--line);background:var(--card)}.modes{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.mode{display:grid;justify-items:center;align-content:center;grid-gap:4px;gap:4px;min-height:76px;padding:10px 8px;border-radius:16px;border:2px solid var(--line);background:var(--card);color:var(--ink-2);font-weight:700;font-size:16px;line-height:1.25;text-align:center;cursor:pointer}.mode[aria-pressed=true]{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.mode svg{width:26px;height:26px}.pf .field+.field{margin-top:18px}.link-banner{display:flex;align-items:center;justify-content:space-between;gap:12px}.link-banner .btn{flex:none}.cats{display:grid;grid-gap:8px;gap:8px}.cat{border:1.5px solid var(--line);border-radius:12px;padding:4px 12px 10px;background:var(--card)}.cat.on{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 7%,var(--card))}.cat-head{display:flex;align-items:center;gap:12px;min-height:48px;font-size:17px;font-weight:700;color:var(--ink);cursor:pointer}.cat-head input{width:24px;height:24px;accent-color:var(--brand);flex:none}.cat-fields{display:grid;grid-template-columns:1fr 1.7fr;grid-gap:10px;gap:10px}.cat-fields .field+.field{margin-top:0}.unit{font-size:13px!important;font-weight:600;color:var(--muted)!important}.sumline{display:flex;justify-content:space-between;align-items:baseline;font-size:15px;color:var(--ink-2);margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}.sumline b{font-size:19px;color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ok-text{font-size:13px;color:var(--ok)}.warn-text{font-size:13px;color:var(--warn);line-height:1.55}.pf .field label.newcust{display:flex;align-items:center;gap:12px;min-height:56px;padding:6px 14px;border:1.5px solid var(--line);border-radius:12px;background:var(--card);font-size:17px;font-weight:700;color:var(--ink);cursor:pointer}.pf .field label.newcust.on{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 7%,var(--card))}.pf .newcust input{width:24px;height:24px;accent-color:var(--brand);flex:none}.pf .newcust .h{margin-left:auto;font-size:12px;font-weight:500;color:var(--muted);text-align:right}.adders{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.pf .adders>.field{flex:1 1 100%;margin-top:0}.adder{display:inline-flex;align-items:center;gap:6px;min-height:46px;padding:8px 16px;border:1.5px dashed var(--brand);border-radius:999px;background:transparent;color:var(--brand);font-size:15px;font-weight:700;cursor:pointer}.adder:hover{background:color-mix(in srgb,var(--brand) 8%,var(--card))}.adder-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.adder-x{border:0;background:none;padding:4px 0;color:var(--muted);font:inherit;font-size:14px;text-decoration:underline;cursor:pointer}.plist{display:grid;grid-gap:10px;gap:10px}.pcard{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px}.pcard.void{opacity:.6}.pcard .top{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.pcard .pcode{font-family:var(--mono);font-weight:700;letter-spacing:.04em;font-size:16px}.pcard .pamt{margin-left:auto;font-weight:800;font-size:18px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.pcard .pitems{margin-top:6px;font-size:14px;color:var(--ink-2);line-height:1.6}.pcard .pmeta{margin-top:4px;font-size:12.5px;color:var(--muted)}.pcard .pbtns{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.container.overview{max-width:880px}.ov-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.ov-head h1{font-size:26px}.ov-count{background:var(--ok-bg);color:var(--ok);font-size:13px;font-weight:700;padding:3px 12px;border-radius:999px}.ov-sub{margin:0}.ov-list{display:grid;grid-gap:12px;gap:12px}.ev-row{display:grid;grid-template-columns:92px minmax(0,1fr);grid-template-areas:"thumb info" "side side";grid-gap:12px 14px;gap:12px 14px;padding:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);color:inherit;text-decoration:none;transition:border-color .15s,box-shadow .15s}.ev-row:hover{border-color:var(--brand);box-shadow:0 6px 18px rgba(91,58,30,.1)}.ev-row:focus-visible{outline:3px solid color-mix(in srgb,var(--brand) 45%,transparent);outline-offset:2px}.ev-thumb{grid-area:thumb;position:relative;width:92px;height:92px;border-radius:12px;overflow:hidden;background:var(--gray-bg)}.ev-thumb img{display:block;width:100%;height:100%;object-fit:cover}.ev-date{position:absolute;left:5px;top:5px;color:var(--on-brand);font-size:11px;font-weight:700;line-height:1;padding:4px 6px;border-radius:7px}.ev-date,.ev-thumb.ph{background:var(--brand)}.ev-thumb.ph{color:var(--brand-ink);display:grid;place-items:center;text-align:center}.ph-date{display:grid;line-height:1.15;font-size:12px;letter-spacing:.08em}.ph-date b{font-size:36px;line-height:1;letter-spacing:0;color:#fff}.ev-info{grid-area:info;min-width:0;align-self:center}.ev-title{font-size:17px;line-height:1.4;margin:0 0 6px}.ev-meta{margin:0;display:grid;grid-gap:3px;gap:3px;font-size:14px}.ev-meta>div{display:grid;grid-template-columns:2.6em minmax(0,1fr);grid-gap:8px;gap:8px}.ev-meta dt{color:var(--muted)}.ev-meta dd{margin:0;color:var(--ink-2)}.ev-side{grid-area:side;display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:12px;border-top:1px dashed var(--line)}.ev-status{display:grid;grid-gap:2px;gap:2px;font-size:13px;min-width:0}.ev-left{font-weight:700;color:var(--ok)}.ev-left.low{color:var(--warn)}.ev-deadline{color:var(--muted)}.ev-cta{flex:none}.ev-row.is-full .ev-title{color:var(--ink-2)}.ev-row.is-full .ev-thumb{opacity:.75}@media (min-width:720px){.ev-row{grid-template-columns:132px minmax(0,1fr) auto;grid-template-areas:"thumb info side";align-items:center;gap:18px;padding:16px 18px}.ev-thumb{width:132px;height:132px}.ev-date{font-size:12px;padding:5px 8px}.ph-date b{font-size:46px}.ev-title{font-size:19px;margin-bottom:8px}.ev-meta{font-size:15px}.ev-side{flex-direction:column;align-items:flex-end;justify-content:center;gap:12px;min-width:150px;padding-top:0;border-top:0}.ev-status{text-align:right}}.hero h1{font-size:26px;font-weight:700;letter-spacing:.01em}.meta{list-style:none;padding:0;margin:14px 0 0;display:grid;grid-gap:6px;gap:6px}.meta li{display:flex;gap:12px;font-size:15px}.meta .k{color:var(--muted);flex:none;width:2.6em}.desc{margin:14px 0 0;color:var(--ink-2)}.contact,.desc{white-space:pre-line}.contact{color:var(--muted);font-size:13px;margin-top:20px}.field{display:grid;grid-gap:6px;gap:6px}.field+.field{margin-top:16px}.field label{font-size:14px;font-weight:600;color:var(--ink-2)}.input{width:100%;min-height:48px;padding:10px 14px;border:1.5px solid var(--line);border-radius:10px;background:var(--input-bg);font-size:17px;outline:none;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(91,58,30,.14)}.input[aria-invalid=true]{border-color:var(--bad)}.hint{font-size:13px;color:var(--muted)}.field-error{font-size:13px;color:var(--bad)}.suggest{font-size:13px;color:var(--warn)}.suggest button{all:unset;cursor:pointer;text-decoration:underline;font-weight:600}.check{display:flex;gap:10px;align-items:flex-start;margin-top:18px;font-size:13px;color:var(--ink-2);line-height:1.6}.check input{width:20px;height:20px;margin-top:2px;flex:none;accent-color:var(--brand)}.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:10px 20px;border-radius:999px;border:1.5px solid transparent;font-weight:600;font-size:16px;cursor:pointer;text-decoration:none;transition:transform .05s,background .15s,opacity .15s}.btn:active{transform:translateY(1px)}.btn[disabled]{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand);color:var(--on-brand)}.btn-primary:hover:not([disabled]){filter:brightness(1.12)}.btn-secondary{background:var(--card);border-color:var(--brand);color:var(--brand)}.btn-ghost{background:transparent;border-color:var(--line);color:var(--ink-2)}.btn-danger{background:var(--bad);color:var(--on-bad)}.btn-ok{background:var(--ok);color:var(--on-ok)}.btn-block{display:flex;width:100%}.btn-lg{min-height:56px;font-size:18px}.btn-sm{min-height:34px;padding:4px 14px;font-size:14px}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.notice{border-radius:12px;padding:12px 14px;font-size:14px;line-height:1.6}.notice.ok{background:var(--ok-bg);color:var(--ok)}.notice.warn{background:var(--warn-bg);color:var(--warn)}.notice.bad{background:var(--bad-bg);color:var(--bad)}.notice.info{background:var(--info-bg);color:var(--info)}.ticket{text-align:center}.ticket .tick{width:52px;height:52px;border-radius:50%;background:var(--ok-bg);color:var(--ok);display:grid;place-items:center;margin:0 auto 10px}.ticket h2{font-size:22px}.ticket .who{color:var(--ink-2);margin-top:2px}.qr-wrap{position:relative;width:min(280px,100%);margin:18px auto 6px;padding:12px;background:#fff;border:1px solid var(--line);border-radius:16px}.qr-wrap img,.qr-wrap svg{display:block;width:100%;height:auto}.qr-wrap.used img,.qr-wrap.used svg{opacity:.18}.qr-used{position:absolute;inset:0;display:grid;place-items:center;font-size:24px;font-weight:800;color:var(--bad);transform:rotate(-12deg);letter-spacing:.1em}.code-label{font-size:12px;color:var(--muted);margin-top:14px}.code{font-size:34px;font-weight:700;letter-spacing:.14em;color:var(--ink)}.code,.mono{font-family:var(--mono)}.mono{letter-spacing:.08em}.ticket-info{text-align:left;margin-top:18px;border-top:1px dashed var(--line);padding-top:14px}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.bad{background:var(--bad-bg);color:var(--bad)}.badge.gray{background:var(--gray-bg);color:var(--ink-2)}.badge.info{background:var(--info-bg);color:var(--info)}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:5;background:var(--topbar-bg);color:var(--topbar-ink);padding:10px 16px;display:flex;align-items:center;gap:12px}.topbar .title{font-weight:700;letter-spacing:.04em}.topbar .sub{font-size:12px;opacity:.85}.topbar .grow{flex:1 1}.topbar .btn-ghost{border-color:color-mix(in srgb,var(--topbar-ink) 40%,transparent);color:var(--topbar-ink)}.tabs{display:flex;background:var(--tab-bg);border-radius:12px;padding:4px;gap:4px}.tabs button{flex:1 1;border:0;background:transparent;padding:10px 0;border-radius:9px;font-weight:600;color:var(--ink-2);cursor:pointer}.tabs button[aria-selected=true]{background:var(--tab-on);color:var(--brand);box-shadow:0 1px 3px rgba(0,0,0,.1)}.bar{height:8px;background:var(--track);overflow:hidden;margin-top:8px}.bar,.bar>div{border-radius:999px}.bar>div{height:100%;background:var(--ok);transition:width .3s}.scanner{position:relative;width:100%;aspect-ratio:4/3;background:#1a1410;border-radius:var(--radius);overflow:hidden}.scanner video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.scanner .frame{position:absolute;inset:19% 27%;border:3px solid rgba(255,255,255,.85);border-radius:18px;box-shadow:0 0 0 999px rgba(0,0,0,.35);pointer-events:none}.scanner .placeholder{position:absolute;inset:0;display:grid;place-items:center;align-content:center;grid-gap:12px;gap:12px;color:#d9ccbb;text-align:center;padding:24px}.result{border-radius:var(--radius);padding:20px;text-align:center;border:2px solid transparent}.result.ok{background:var(--ok-bg);border-color:var(--ok)}.result.bad{background:var(--bad-bg);border-color:var(--bad)}.result.warn{background:var(--warn-bg);border-color:var(--warn)}.result.neutral{background:var(--card);border-color:var(--line)}.result .big{font-size:28px;font-weight:800}.result.ok .big{color:var(--ok)}.result.bad .big{color:var(--bad)}.result.warn .big{color:var(--warn)}.result .name{font-size:24px;font-weight:700;margin-top:8px}.result .line{color:var(--ink-2);margin-top:2px}.result .code{font-size:26px;margin-top:6px}.result .actions{grid-gap:10px}.duo,.result .actions{display:grid;gap:10px;margin-top:18px}.duo{grid-template-columns:1fr 1fr;grid-gap:10px}.result .duo+.actions{margin-top:10px}.duo-btn{display:grid;justify-items:center;align-content:center;grid-gap:2px;gap:2px;min-height:92px;padding:10px 8px;border-radius:16px;border:2px solid transparent;font:inherit;font-size:19px;font-weight:800;line-height:1.25;text-align:center;text-decoration:none;cursor:pointer;transition:transform .05s,filter .15s,opacity .15s}.duo-btn svg{width:28px;height:28px;margin-bottom:2px}.duo-btn .spinner{width:24px;height:24px;margin-bottom:2px}.duo-btn .h{font-size:12px;font-weight:500;opacity:.92}.duo-btn:active:not([disabled]){transform:translateY(1px)}.duo-btn:hover:not([disabled]){filter:brightness(1.1)}.duo-btn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.duo-btn[disabled]{opacity:.55;cursor:not-allowed}.duo-btn.scan{background:var(--ok);color:var(--on-ok)}.duo-btn.buy{background:var(--brand);color:var(--on-brand)}.list{display:grid;grid-gap:8px;gap:8px}.li{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;text-align:left;width:100%;cursor:pointer}.li .grow{flex:1 1;min-width:0}.li .t{font-weight:600}.li .s{font-size:13px;color:var(--muted)}.toggle{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--ink-2)}.toggle input{width:20px;height:20px;accent-color:var(--brand)}.login{max-width:380px;margin:0 auto}.slot-field{border:0;margin:0 0 18px;padding:0;min-width:0}.slot-field legend{padding:0;margin-bottom:8px;font-size:14px;font-weight:600;color:var(--ink-2)}.slot-list{display:grid;grid-gap:10px;gap:10px}.slot-opt{display:flex;align-items:center;gap:12px;min-height:52px;padding:10px 14px;border:1.5px solid var(--line);border-radius:12px;background:var(--input-bg);cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}.slot-opt input{width:20px;height:20px;flex:none;accent-color:var(--brand)}.slot-opt .slot-name{flex:1 1;font-size:16px;font-weight:600;color:var(--ink)}.slot-opt .slot-left{flex:none;font-size:13px;color:var(--muted)}.slot-opt .slot-left.low{color:var(--warn);font-weight:600}.slot-opt .slot-left.full{font-weight:600}.slot-opt.on{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 7%,var(--input-bg));box-shadow:0 0 0 3px rgba(91,58,30,.12)}.slot-opt.off{cursor:not-allowed;opacity:.55;background:var(--gray-bg)}.slot-picked{display:inline-block;margin:8px auto 0;padding:4px 14px;border-radius:999px;background:var(--gray-bg);color:var(--ink);font-size:14px;font-weight:600}.store-field{border:0;margin:0 0 18px;padding:0;min-width:0}.store-field legend{padding:0;margin-bottom:8px;font-size:14px;font-weight:600;color:var(--ink-2)}.region-chips{display:grid;grid-gap:8px;gap:8px;margin-bottom:10px}.region-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;min-height:44px;padding:8px 6px;line-height:1.25;text-align:center;border:1.5px solid var(--line);border-radius:999px;background:var(--input-bg);color:var(--ink);font:inherit;font-size:15px;font-weight:600;cursor:pointer;transition:border-color .15s,background .15s,color .15s}.region-chip.on{border-color:var(--brand);background:var(--brand);color:var(--on-brand)}.region-chip.off{opacity:.55}.date-chips{grid-template-columns:repeat(auto-fill,minmax(92px,1fr))}.store-card{display:grid;grid-gap:4px;gap:4px;margin-top:12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--gray-bg);color:var(--ink);font-size:15px;line-height:1.55;text-align:left}.store-card .store-card-name{font-weight:700}.store-card .btn{justify-self:start;margin-top:6px}.store-line{display:block;font-size:14px;color:var(--ink-2)}.sheet-backdrop{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:rgba(32,20,8,.5)}.sheet{width:100%;max-width:560px;max-height:92dvh;overflow-y:auto;padding:20px 18px 28px;background:var(--card);border-radius:20px 20px 0 0;box-shadow:0 -8px 30px rgba(0,0,0,.25);animation:sheet-up .2s ease-out}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--line-2)}.sheet-title{font-size:20px;font-weight:700;line-height:1.3}@media (min-width:640px){.sheet-backdrop{align-items:center;padding:24px}.sheet{max-height:88dvh;border-radius:18px;box-shadow:0 12px 40px rgba(0,0,0,.3)}}@keyframes sheet-up{0%{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}@media (prefers-reduced-motion:reduce){.sheet{animation:none}}.btn-cta{position:relative;overflow:hidden;isolation:isolate;animation:cta-beat 2.2s ease-out infinite}.btn-cta:after{content:"";position:absolute;top:0;bottom:0;left:-70%;width:45%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.5),transparent);transform:skewX(-20deg);animation:cta-shine 3.4s ease-in-out infinite;pointer-events:none}.btn-cta:active,.btn-cta[disabled]{animation:none}.btn-cta[disabled]:after{display:none}.cta-arrow{display:inline-block;animation:cta-bounce 1s ease-in-out infinite}@keyframes cta-beat{0%{transform:scale(1);box-shadow:0 0 0 0 rgba(236,170,46,.65)}12%{transform:scale(1.025)}24%{transform:scale(1)}70%,to{transform:scale(1);box-shadow:0 0 0 16px rgba(236,170,46,0)}}@keyframes cta-shine{0%,55%{left:-70%}to{left:130%}}@keyframes cta-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(5px)}}@media (prefers-reduced-motion:reduce){.btn-cta,.btn-cta:after,.cta-arrow{animation:none}}.go-register{scroll-margin-bottom:28px}