#content-dialog:has([data-festival-panel]){width:min(1080px,calc(100vw - 32px));max-width:1080px;border-color:#a78248;background:#fff6df}#content-dialog:has([data-festival-panel]) .dialog-content{padding:0}#content-dialog:has([data-festival-panel]) .dialog-heading{background:#e5f3fc;border-bottom:2px solid #665238}#content-dialog:has([data-festival-panel]) .dialog-heading h2{color:#334b62}#content-dialog:has([data-festival-panel]) .dialog-heading p{color:#b84a22}.festival-panel{--festival-gold:#e85a20;--festival-paper:#39475c;--festival-muted:#67798b;--festival-line:#c7d9df;--festival-dark:#fff6df;color:var(--festival-paper);background:var(--festival-dark);font:14px/1.8 var(--pixel,monospace);padding:0 24px 26px;min-width:0;overflow-wrap:anywhere}.festival-panel *{box-sizing:border-box}.festival-panel h3,.festival-panel h4,.festival-panel p{margin:0}.festival-panel h3{font-size:29px;line-height:1.5;font-weight:400;color:var(--festival-paper)}.festival-panel h4{font-size:21px;line-height:1.6;font-weight:400;color:var(--festival-paper)}.festival-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:16px 0 20px}.festival-tabs button{min-height:46px;border:2px solid #b9d3df;background:#edf7fb;color:#526579;font:15px/1.4 var(--pixel,monospace);padding:9px 5px;cursor:pointer}.festival-tabs button[aria-current=page]{background:#f46525;color:#ffffff;border-color:#d65124}.festival-panel button:focus-visible,.festival-panel a:focus-visible,.festival-panel input:focus-visible,.festival-panel select:focus-visible{outline:3px solid #358ed1;outline-offset:3px}.festival-kicker{display:block;color:#b84a22;font-size:11px;letter-spacing:1px;line-height:1.8}.festival-lead{display:flex;gap:28px;align-items:center;justify-content:space-between;padding:15px 0 24px}.festival-lead h3{font-size:37px;margin:8px 0 14px}.festival-lead p{color:#617588;font-size:14px}.festival-date{flex:0 0 210px;border-left:2px solid #c7d9df;padding-left:24px}.festival-date strong{font-size:56px;font-weight:400;line-height:1.4;color:#e45b22;white-space:nowrap}.festival-date strong span{font-size:25px;margin:0 8px;color:#9bb8c6}.festival-date small{display:block;font-size:11px;color:#617588}.festival-message{border-left:3px solid #f46525;background:#e4f3fb;color:#39475c;padding:11px 14px;margin:0 0 16px!important;font-size:13px}.festival-loading{font-size:12px;color:#617588;margin:10px 0!important}.festival-ticket-preview{border:2px solid #b9d3df;background:#fffdf4}.festival-ticket-preview canvas{display:block;width:100%;height:auto;image-rendering:pixelated}.festival-ticket-meta{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 15px;color:#617588;font-size:11px;border-top:1px solid #c7d9df}.festival-unclaimed{position:relative;text-align:center;padding:32px 24px;border:2px dashed #99c5d8;background:#e9f6ff}.festival-unclaimed>strong{display:block;font-size:68px;font-weight:400;line-height:1.4;color:#f46525}.festival-unclaimed h4{font-size:29px}.festival-unclaimed p{font-size:13px;color:#617588;max-width:540px;margin:14px auto 0}.festival-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.festival-button{font:13px/1.5 var(--pixel,monospace);display:inline-flex;align-items:center;justify-content:center;min-height:46px;max-width:100%;padding:10px 15px;border:2px solid #a6c7d5;background:#edf7fb;color:#39475c;cursor:pointer;border-radius:0;white-space:normal;text-align:center}.festival-button.is-primary{background:#f46525;color:#ffffff;border-color:#ce4826;box-shadow:3px 3px 0 #cfbca1}.festival-button:hover:not(:disabled){border-color:#358ed1;background:#d4ecfa}.festival-button.is-primary:hover:not(:disabled){background:#e9541e}.festival-button:disabled{opacity:.55;cursor:default;box-shadow:none}.festival-footnote{color:#617588;font-size:11px;line-height:1.9;margin-top:17px!important}.festival-section-heading{display:flex;gap:18px;justify-content:space-between;align-items:center;margin:8px 0 20px}.festival-section-heading>span{font-size:12px;color:#b84a22;white-space:nowrap}.festival-empty{padding:38px 20px;text-align:center;border:2px dashed #a6c7d5;background:#f2f9fc}.festival-empty p{color:#617588;font-size:13px;margin:10px 0 20px}.festival-years{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:18px}.festival-years .festival-button{min-width:82px}.festival-receipt-line{display:flex;gap:12px;flex-wrap:wrap;align-items:center;padding:15px;background:#e4f3fb;border-top:2px solid #f46525;margin-bottom:20px}.festival-receipt-line span{color:#39475c}.festival-receipt-line code{font:13px/1.8 monospace;color:#a84b2b;overflow-wrap:anywhere}.festival-receipt-line small{color:#617588;font-size:11px}.festival-item-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.festival-item{border:2px solid #b9d3df;background:#fffdf4;padding:15px;min-width:0}.festival-item.is-selected{border-color:#f46525;background:#fff0d7}.festival-item canvas{display:block;width:100%;max-width:210px;height:auto;margin:0 auto 15px;image-rendering:pixelated}.festival-item h4{font-size:20px;margin:4px 0 9px}.festival-item p{font-size:12px;color:#617588;min-height:42px;margin-bottom:14px}.festival-item .festival-button{width:100%;font-size:12px;padding:9px 6px}.festival-intro{color:#526579;font-size:14px;margin:10px 0 20px!important}.festival-city-tools{display:grid;grid-template-columns:2fr 1fr;gap:15px;padding:17px;background:#e4f3fb;border:2px solid #b9d3df}.festival-city-tools label{display:grid;gap:7px;color:#526579;font-size:12px;min-width:0}.festival-city-tools input,.festival-city-tools select{width:100%;min-width:0;min-height:46px;padding:10px;border:2px solid #a6c7d5;border-radius:0;background:#fffdf4;color:#39475c;font:14px/1.5 var(--pixel,monospace)}.festival-city-tools input::placeholder{color:#7d8c96}.festival-city-count{color:#617588;font-size:12px;margin:16px 0!important}.festival-city-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.festival-city{border:2px solid #c0d1ca;background:#e8dfc5;padding:17px;min-width:0;content-visibility:auto;contain-intrinsic-size:auto 220px}.festival-city.is-selected{border-color:#f46525}.festival-city>div{display:flex;align-items:baseline;gap:12px}.festival-city>div>span{font-size:11px;color:#788264}.festival-city h4{font-size:24px;color:#415442}.festival-city p{margin:12px 0 16px;font-size:13px;line-height:1.7;color:#53674c}.festival-city p strong{font-weight:400}.festival-city p small{display:block;margin-top:6px;color:#7a8068;font-size:12px}.festival-city .festival-button{font-size:12px}.festival-source-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}.festival-source-links a{color:#266a98;font-size:12px;text-underline-offset:4px;padding:6px 0}.festival-rule-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.festival-rule-grid article{display:grid;grid-template-columns:38px 1fr;gap:13px;padding:20px;background:#fffdf4;border:2px solid #c7d9df}.festival-rule-grid article>span{font-size:23px;color:#e45b22}.festival-rule-grid h4{font-size:22px;margin-bottom:10px}.festival-rule-grid p{font-size:13px;color:#617588;line-height:1.9}.festival-reference-note{margin-top:25px;padding:22px;background:#e4f3fb;border-left:4px solid #f46525}.festival-reference-note h4{font-size:25px;margin:6px 0 12px}.festival-reference-note p{font-size:12px;color:#617588;margin:10px 0;line-height:1.9}
@media(max-width:700px){#content-dialog:has([data-festival-panel]){width:calc(100vw - 18px)}.festival-panel{padding:0 14px 20px;font-size:13px}.festival-tabs{grid-template-columns:repeat(2,minmax(0,1fr));padding-bottom:14px}.festival-tabs button{font-size:14px}.festival-lead{display:block;padding-top:10px}.festival-lead h3{font-size:29px}.festival-lead p{font-size:12px}.festival-date{border-left:0;border-top:1px solid #c7d9df;padding:14px 0 0;margin-top:17px}.festival-date strong{font-size:40px}.festival-unclaimed{padding:24px 16px}.festival-unclaimed>strong{font-size:52px}.festival-unclaimed h4{font-size:24px}.festival-actions .festival-button{flex:1 1 140px}.festival-item-grid,.festival-city-grid,.festival-rule-grid{grid-template-columns:1fr}.festival-item{display:grid;grid-template-columns:108px 1fr;gap:4px 13px}.festival-item canvas{width:108px;grid-row:1/5;align-self:center;margin:0}.festival-item h4{font-size:19px}.festival-item p{min-height:0}.festival-item .festival-button{grid-column:1/-1;margin-top:9px}.festival-section-heading{align-items:flex-start;flex-wrap:wrap;gap:10px}.festival-section-heading h3{font-size:25px}.festival-city-tools{grid-template-columns:1fr;padding:14px}.festival-ticket-meta{padding:10px;font-size:10px}.festival-rule-grid article{padding:16px;grid-template-columns:28px 1fr}.festival-rule-grid h4{font-size:20px}.festival-reference-note{padding:17px}.festival-source-links{gap:10px 18px}}

.festival-ticket-meta code{font:12px/1.8 monospace;color:#a84b2b;overflow-wrap:anywhere}

.festival-city-progress{display:flex;justify-content:space-between;gap:20px;align-items:center;background:#dce3ca;border:2px solid #829474;padding:20px;margin:0 0 18px;color:#40543f}.festival-city-progress h3{font-size:43px;color:#40543f;line-height:1.3}.festival-city-progress h3 small{font-size:20px;color:#75836b}.festival-city-progress p{font-size:12px;color:#73816a}.festival-city-progress .festival-kicker{color:#78816a}.festival-city-badge-strip{display:grid;grid-template-columns:repeat(5,minmax(0,60px));gap:10px}.festival-city-badge-strip>div{text-align:center;color:#859177;font-size:11px}.festival-city-badge-strip svg{display:block;width:100%;height:auto;margin-bottom:5px}.festival-city-badge-strip .is-earned{color:#526c49}.festival-city-route{display:flex;align-items:center;justify-content:space-between;gap:18px;background:#e8dcba;border:2px dashed #a28e63;padding:18px;margin-bottom:18px;color:#536346}.festival-city-route strong{font-size:25px;font-weight:400;color:#3f5644}.festival-city-route p{font-size:12px;color:#7e7b60}.festival-city-route .festival-kicker{color:#8c7951}.festival-city-instruction{font-size:13px;color:#617588;border-left:3px solid #8b9a76;padding:8px 12px;margin:16px 0!important}.festival-city>div{flex-wrap:wrap}.festival-city>div>b{font-weight:400;font-size:10px;color:#8a8267;margin-left:auto}.festival-city.is-lit{border-color:#6d8967;box-shadow:inset 0 0 0 3px #d0dbb5}.festival-city.is-lit>div>b{color:#54764a}.festival-city .festival-button{border-color:#8f9d7b;background:#d6dec1;color:#425b43}.festival-city .festival-button.is-primary{background:#adbf8e;border-color:#6e885e}.festival-city .festival-button:disabled{opacity:1;background:#dce4c8;color:#708568}.festival-ticket-preview{border-color:#8e9d7c}.festival-ticket-meta{background:#e4f3fb}
@media(max-width:700px){.festival-city-progress{display:block;padding:16px}.festival-city-badge-strip{grid-template-columns:repeat(5,minmax(0,1fr));margin-top:14px;gap:7px}.festival-city-badge-strip>div{max-width:60px}.festival-city-route{display:block;padding:16px}.festival-city-route .festival-button{width:100%;margin-top:12px}}

.festival-ticket-preview{max-width:460px;margin:0 auto;border:0;background:transparent}
.festival-ticket-preview canvas{width:100%;max-width:432px;aspect-ratio:3/5;margin:0 auto;filter:drop-shadow(4px 6px 0 #61758833)}
.festival-ticket-meta{display:grid;justify-content:stretch;gap:6px;max-width:432px;margin:14px auto 0;border:1px solid #b9d3df;background:#e4f3fb;color:#526579}
.festival-ticket-meta code{font-size:12px;color:#b84a22}
@media(max-width:700px){.festival-ticket-preview{max-width:390px}.festival-ticket-meta{margin-top:10px;font-size:11px}.festival-ticket-meta code{font-size:11px}}
/* 赴约游园会 (2026-11) */
.festival-route{list-style:none;margin:12px 0;padding:0;display:grid;gap:6px}
.festival-route li{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid #e3cfb3;background:#fff8ec;color:#4a3b45;font-size:13px}
.festival-route li b{display:grid;place-items:center;width:24px;height:24px;border:1px solid #d1453f;color:#d1453f;font:12px monospace;flex:none}
.festival-route li span{flex:1}
.festival-route li.is-done{background:#fbecd0}.festival-route li.is-done b{background:#d1453f;color:#fff3dc}
.festival-route-done{padding:8px 12px;background:#fbecd0;border-left:3px solid #f2c46d;color:#9c2e35;font-size:13px}
.festival-screening-live{color:#d1453f;font-weight:600;font-size:13px}
.festival-screening-next{color:#6f5a4a;font-size:13px}
.festival-short{display:grid;gap:4px;justify-items:center;margin:10px 0}
.festival-short canvas{width:100%;max-width:480px;aspect-ratio:16/9;image-rendering:pixelated;border:3px solid #4a3b45;background:#1d2238}
.festival-short p{font-size:12px;color:#6f5a4a;margin:0}
.festival-global{padding:10px 14px;margin-bottom:12px;border:2px solid #d1453f;background:#fff3dc;color:#4a3b45}
.festival-global h3{margin:2px 0}.festival-global small{font-size:12px;color:#6f5a4a}
.festival-global p{margin:4px 0;font-size:12px}
.festival-fine{font-size:11px;color:#8a7a6a}
