.vendor-pass-page{--ink:#302e27;--muted:#95886f;--gold:#b89550;--paper:#fffcf5;--line:#e8dfce;margin:0;min-height:100vh;background:radial-gradient(ellipse at 15% 0,#f3e6cc70,transparent 50%),#f5f2e9;color:var(--ink);font-family:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",system-ui,sans-serif}
.vendor-pass-page [hidden]{display:none!important}.pass-top{max-width:1040px;display:flex;justify-content:space-between;align-items:center;gap:20px;margin:auto;padding:28px 32px}.pass-brand{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none;font-size:18px;font-weight:750}.pass-brand img{border-radius:50%;width:42px;height:42px}.pass-brand small{display:block;margin-top:4px;font-size:9px;letter-spacing:.22em;color:var(--muted)}.back-link,.pass-link{border:0;background:none;color:#857455;font-size:12px;text-decoration:none;cursor:pointer}.pass-link{min-height:42px}.pass-main{max-width:880px;padding:20px 28px 72px;margin:auto}.pass-kicker{font-size:9px;letter-spacing:.2em;color:#a18a5d;line-height:1.8;margin:0}.pass-login{max-width:460px;margin:42px auto;padding:45px;background:var(--paper);border:1px solid var(--line);border-radius:20px;box-shadow:0 18px 65px #4c402b08}.pass-login h1{font-size:36px;margin:20px 0}.pass-lead{color:#8d816b;font-size:14px;line-height:2}.pass-login form{margin-top:28px}.pass-login label{display:block;font-size:12px;margin:22px 0 9px}.pass-login input{width:100%;box-sizing:border-box;padding:14px;background:#fffefa;border:1px solid #ddd1ba;border-radius:8px;color:var(--ink);font-size:16px}.pass-login input:focus{outline:2px solid #bea064;outline-offset:3px}.pass-primary,.pass-secondary{display:flex;align-items:center;justify-content:center;min-height:48px;padding:12px 22px;border-radius:9px;font:inherit;font-size:13px;text-decoration:none;cursor:pointer;border:1px solid #ddd0b9;box-sizing:border-box}.pass-primary{color:#fffaf0;background:#8c3f2c;border-color:#8c3f2c;box-shadow:0 5px 15px #7a352518}.pass-secondary{color:#7e6846;background:#fffcf5}.pass-primary:disabled,.pass-actions [aria-busy=true]{opacity:.6;cursor:progress}.pass-login .pass-primary{width:100%;margin-top:28px}.pass-footnote{font-size:10px;line-height:1.9;color:#a2947c;margin-top:15px}.pass-message{color:#9a3b2a;font-size:12px;line-height:1.8;overflow-wrap:anywhere}.pass-toolbar{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#99896d;letter-spacing:.08em;margin-bottom:14px}.credential{background:var(--paper);border:1px solid #ded2bb;border-radius:18px;padding:34px 42px 26px;box-shadow:0 24px 80px #51452c0a;position:relative;overflow:hidden}.credential:before{content:"";position:absolute;top:0;left:42px;right:42px;height:3px;background:linear-gradient(90deg,#a98949,#dfcda3,#a98949)}.credential-head{display:flex;justify-content:space-between;align-items:center;gap:14px}.pass-status{display:inline-flex;align-items:center;gap:7px;color:#7e734c;font-size:10px;border:1px solid #d8c99d;background:#f7f2e3;border-radius:99px;padding:5px 12px;white-space:nowrap}.pass-status:before{content:"";width:5px;height:5px;border-radius:50%;background:#b09245}.credential-hero{display:grid;grid-template-columns:1fr auto;align-items:end;gap:25px;margin:38px 0 32px}.credential h1{font-size:14px;font-weight:500;letter-spacing:.16em;color:#a38650;margin:0 0 12px}.credential h2{font:800 34px/1.4 "PingFang SC","Microsoft YaHei","Noto Sans CJK SC",system-ui,sans-serif;margin:0;overflow-wrap:anywhere}.credential-welcome{margin:15px 0 0;font:14px/1.8 "Songti SC","Noto Serif CJK SC",serif;color:#a29782;letter-spacing:.16em}.credential-assignment{text-align:right;max-width:290px}.credential-assignment small{font-size:8px;letter-spacing:.18em;color:#ac956c}.credential-assignment b{display:block;font:400 48px/1.3 Georgia,"Noto Serif CJK SC",serif;color:#ac873d;letter-spacing:-.03em;margin:7px 0;overflow-wrap:anywhere}.credential-assignment span{font-size:10px;color:#9d8965}.event-strip{display:grid;grid-template-columns:1fr 1.3fr;gap:25px;padding:22px 0;border-block:1px solid var(--line);margin-bottom:32px}.event-strip>div{display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:12px;row-gap:5px}.event-strip small{grid-column:1/-1;font-size:9px;color:#a39070}.event-strip b{font:400 24px/1.4 Georgia,serif;letter-spacing:.02em}.event-strip span{font-size:10px;color:#a39378}.event-strip>div+div{border-left:1px solid var(--line);padding-left:25px}.event-strip>div+div b{font:500 15px/1.7 "PingFang SC",system-ui,sans-serif;grid-column:1/-1}.event-strip>div+div span{grid-column:1/-1}.credential-section-title{display:flex;align-items:center;gap:10px;margin:28px 0 18px}.credential-section-title>span{font:italic 13px Georgia,serif;color:#b99c64}.credential-section-title h3{font-size:13px;font-weight:550;letter-spacing:.12em;margin:0}.credential-section-title i{font-size:8px;letter-spacing:.15em;font-style:normal;color:#b9ab90;margin-left:auto}.pass-details{display:grid;grid-template-columns:1fr 1fr;gap:0 30px;margin:0}.pass-details>div{padding:14px 0;border-bottom:1px solid #eee7da;min-width:0}.pass-details dt{font-size:10px;color:#ab9978;margin-bottom:7px}.pass-details dd{font-size:13px;line-height:1.8;margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.pass-extra{margin-top:20px}.pass-extra summary{font-size:11px;color:#9e824e;cursor:pointer;padding:10px 0}.pass-extra .pass-details>div:nth-last-child(-n+2){grid-column:1/-1}.vendor-location{margin-top:30px;padding-top:2px;border-top:1px solid var(--line)}.location-pending{padding:26px 20px;border:1px dashed #d6c7aa;border-radius:12px;color:#a18b61;font-size:12px;background:#f9f4e9}.map-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.map-tools b{font-size:11px;color:#96783d;font-weight:500}.map-touch-hint{font-size:9px;color:#aa997a}.vendor-map-scroll{border:1px solid #ddd5c5;border-radius:12px;overflow:hidden;background:#e7e7e0;box-shadow:0 6px 20px #3b352907;cursor:zoom-in}.vendor-map-scroll svg{width:100%;height:auto;display:block;outline-offset:-3px}.vendor-map-scroll svg:focus-visible{outline:2px solid #c19f53}.vendor-map-scroll polygon,.map-dialog-viewport polygon{stroke:#f6f3e9;stroke-width:1.6;stroke-linejoin:round}.other-stall{fill:#969b9c}.my-stall{fill:#d6a134;stroke:#fff0b2;stroke-width:2;animation:map-gold-breathe 3s ease-in-out infinite}.vendor-map-scroll text,.map-dialog-viewport text{fill:#fff;font:700 15px system-ui;stroke:none}.vendor-map-scroll .my-stall-label,.map-dialog-viewport .my-stall-label{fill:#382a0b}.stall-pin{pointer-events:none}.stall-pin-art{animation:pin-float 2.8s ease-in-out infinite}.stall-pin-shape{fill:#e0b75b;stroke:#fff8df;stroke-width:2;filter:drop-shadow(0 3px 5px #6d4b2640)}.stall-pin-ring{fill:none;stroke:#e3bd69;stroke-width:2;transform-box:fill-box;transform-origin:center;animation:pin-ring 2.8s ease-out infinite}.vendor-map-scroll .stall-pin-label,.map-dialog-viewport .stall-pin-label{fill:#5f4518;font:700 13px system-ui;dominant-baseline:middle}.credential-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:30px;padding-top:22px;border-top:1px solid var(--line)}.pass-number{font-size:9px;letter-spacing:.1em;color:#ac9b7c;margin:0 0 9px;overflow-wrap:anywhere}.credential-note{font-size:10px;line-height:1.9;color:#b1a286;margin:0}.credential-signature{white-space:nowrap;font:17px/1.6 "Songti SC","Noto Serif CJK SC",serif;color:#a17a3b;letter-spacing:.2em}.credential-signature small{font-size:8px;letter-spacing:.1em;color:#b5a58a}.pass-actions{display:flex;gap:12px;margin-top:23px}.pass-actions>*{flex:1}.test-banner{font-size:10px;line-height:1.8;color:#a68c50;padding:10px 12px;border:1px dashed #d4bf8a;background:#faf4e2;border-radius:7px;margin-bottom:22px}.vendor-pass-page #vendor-pass-preview{margin-top:24px;scroll-margin-top:20px}.vendor-pass-page #vendor-pass-image{display:block;width:100%;max-width:100%;max-height:none;height:auto;border-radius:10px}.vendor-pass-page #vendor-pass-preview button{margin:18px auto}
/* One continuous scene: native modal, GPU transforms and a pointer-only map surface. */
.map-is-open{overflow:hidden}.vendor-pass-page #vendor-map-dialog{inset:0;margin:0;padding:24px;border:0;width:100vw;height:100dvh;max-width:none;max-height:none;background:transparent;overflow:hidden;color:var(--ink)}.vendor-pass-page #vendor-map-dialog[open]{display:grid;place-items:center}.vendor-pass-page #vendor-map-dialog:not([open]){display:none}.vendor-pass-page #vendor-map-dialog::backdrop{background:#29291fba;backdrop-filter:blur(8px);transition:background .2s}.vendor-pass-page #vendor-map-dialog.is-closing::backdrop{background:#29291f00}.map-dialog-panel{width:min(1180px,100%);border-radius:20px;overflow:hidden;background:#fcfaf2;box-shadow:0 35px 100px #1c190c50;transform-origin:center;will-change:transform,opacity}.map-dialog-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:21px 26px}.map-dialog-toolbar b{font:500 17px/1.8 "Songti SC","Noto Serif CJK SC",serif;letter-spacing:.06em}.map-dialog-toolbar .pass-kicker{font-size:8px;margin-bottom:4px}.map-dialog-toolbar button{font:300 28px/1 system-ui;background:none;border:1px solid #dfd5c0;border-radius:50%;width:40px;height:40px;color:#9f8e6c;flex-shrink:0}.map-dialog-viewport{position:relative;width:100%;height:min(65dvh,680px);min-height:300px;overflow:hidden;background:#e9e9e2;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;overscroll-behavior:contain}.map-dialog-viewport.dragging{cursor:grabbing}.map-dialog-viewport:focus-visible{outline:2px solid #b7944d;outline-offset:-3px}.map-dialog-viewport #vendor-map-large{position:absolute;left:0;top:0;width:1700px;height:780px;max-width:none;transform-origin:0 0;will-change:transform;pointer-events:none}.map-dialog-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 24px;gap:15px}.map-dialog-footer span{font-size:10px;color:#ad9b7c}.map-dialog-footer button{font-size:11px;color:#9c7c42}
@keyframes map-gold-breathe{0%,100%{filter:drop-shadow(0 0 2px #d9a33280);fill:#c99a37}50%{filter:drop-shadow(0 0 9px #efc45bda);fill:#edc363}}@keyframes pin-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes pin-ring{0%{opacity:.65;transform:scale(.9)}85%,100%{opacity:0;transform:scale(1.8)}}
@media(max-width:600px){.pass-top{padding:20px;gap:15px}.pass-brand{font-size:16px}.pass-brand img{width:36px;height:36px}.back-link{font-size:11px}.pass-main{padding:12px 14px 44px}.pass-login{padding:30px 26px;margin:18px auto}.pass-login h1{font-size:30px}.credential{padding:25px 23px 23px;border-radius:14px}.credential:before{left:23px;right:23px}.credential-head .pass-kicker{font-size:7px;max-width:200px}.credential-hero{grid-template-columns:1fr;gap:25px;margin:28px 0 25px}.credential h1{font-size:11px;margin-bottom:10px}.credential h2{font-size:29px}.credential-welcome{font-size:12px;margin-top:10px}.credential-assignment{max-width:none;text-align:left;border-left:2px solid #ccb578;padding:0 0 0 15px}.credential-assignment small{font-size:7px}.credential-assignment b{font-size:43px;line-height:1.1;margin:6px 0 9px}.credential-assignment span{font-size:9px}.event-strip{gap:16px;padding:20px 0;margin-bottom:25px}.event-strip>div{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.event-strip>div+div{padding-left:16px}.event-strip b{font-size:22px}.event-strip>div+div b{font-size:13px}.event-strip small,.event-strip span{font-size:8px}.pass-details{gap:0 22px}.pass-details>div{padding:12px 0}.pass-details dd{font-size:12px}.pass-details dt{font-size:9px}.credential-section-title{margin:23px 0 13px}.credential-section-title h3{font-size:12px}.credential-section-title i{font-size:6px}.map-tools{flex-wrap:wrap;gap:7px}.map-tools b{font-size:10px}.map-touch-hint{font-size:8px}.vendor-location{margin-top:24px}.credential-footer{margin-top:23px;padding-top:19px}.pass-number{font-size:7px}.credential-note{font-size:8px}.credential-signature{font-size:14px}.pass-actions{gap:9px}.pass-actions>*{min-width:0;font-size:12px;padding:11px 12px}.vendor-pass-page #vendor-map-dialog{padding:12px}.map-dialog-panel{border-radius:15px}.map-dialog-toolbar{padding:17px 18px}.map-dialog-toolbar b{font-size:14px}.map-dialog-toolbar .pass-kicker{font-size:6px}.map-dialog-toolbar button{width:34px;height:34px;font-size:25px}.map-dialog-viewport{height:66dvh;min-height:280px}.map-dialog-footer{padding:8px 16px}.map-dialog-footer span{font-size:8px}.map-dialog-footer button{font-size:9px}}
@media(prefers-reduced-motion:reduce){.my-stall,.stall-pin-art,.stall-pin-ring{animation:none}.stall-pin-ring{display:none}.vendor-pass-page *{scroll-behavior:auto!important}}
@media print{.pass-top,.pass-toolbar,.pass-actions,.pass-footnote,.pass-message,#vendor-pass-preview,#vendor-map-dialog{display:none!important}.pass-main{padding:0;max-width:100%}.credential{box-shadow:none}.vendor-pass-page{background:#fff}}

.map-dialog-panel{display:flex;flex-direction:column;max-height:calc(100dvh - 24px)}.map-dialog-toolbar,.map-dialog-footer{flex-shrink:0}.map-dialog-viewport{flex-shrink:1;min-height:0}

.stall-pin-rescale{transform:scale(var(--pin-inverse,1));transform-origin:0 0}.vendor-map-scroll .stall-pin-rescale{--pin-inverse:1.4}
