:root{--ink:#fff;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);color-scheme:dark}
*{box-sizing:border-box}
html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#050b14;color:#fff;font-family:"Noto Sans TC",system-ui,-apple-system,sans-serif}
button,a{font:inherit;-webkit-tap-highlight-color:transparent}
button{color:inherit}
.app{position:relative;width:100%;height:100%;overflow:hidden;background:#050b14}
.topbar{position:fixed;z-index:40;inset:0 0 auto;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:calc(62px + var(--safe-top));padding:var(--safe-top) 15px 0;background:linear-gradient(180deg,rgba(2,7,14,.88),rgba(2,7,14,.28),transparent);pointer-events:none}
.topbar>*{pointer-events:auto}.back-link{justify-self:start;display:flex;align-items:center;gap:8px;color:#fff;text-decoration:none;font-size:12px;font-weight:800;text-shadow:0 2px 12px #000}.back-link svg{width:19px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.brand{font:800 13px "Outfit","Noto Sans TC",sans-serif;letter-spacing:.03em;text-shadow:0 2px 14px #000}.brand b{color:var(--line);text-shadow:0 0 13px var(--line)}
.top-status{justify-self:end;padding:7px 9px;border:1px solid rgba(255,255,255,.16);border-radius:999px;background:rgba(5,12,22,.38);backdrop-filter:blur(12px);font:800 10px "Outfit","Noto Sans TC",sans-serif}.top-status.demo{color:#ffd46b}
.reading-progress{position:absolute;inset:auto 0 0;height:2px;background:rgba(255,255,255,.13)}.reading-progress span{display:block;width:0;height:100%;background:var(--line);box-shadow:0 0 14px var(--line);transition:width .35s ease}

.shorts-feed{position:absolute;inset:0;overflow-x:hidden;overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior-y:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}.shorts-feed::-webkit-scrollbar{display:none}
.shorts-feed.is-dialog-open{overflow-y:hidden}
.short-card,.feed-sentinel{position:relative;width:100%;height:100svh;min-height:560px;overflow:hidden;scroll-snap-align:start;scroll-snap-stop:always;background:#111b2b;isolation:isolate}.short-card{display:grid;place-items:center;background:#050b14}.short-card::before,.short-card::after{content:"";position:absolute;z-index:0;display:none;pointer-events:none}.short-card::before{inset:-44px;background-color:#0a1422;background-image:var(--ambient-image,none);background-position:center;background-size:cover;filter:blur(34px) saturate(1.15) brightness(.48);transform:scale(1.08)}.short-card::after{inset:0;background:radial-gradient(circle at 50% 42%,rgba(4,12,22,.04),rgba(4,10,18,.48) 72%,rgba(3,8,14,.78))}
.short-stage{position:relative;z-index:2;width:100%;height:100%}.short-canvas{position:absolute;inset:0;overflow:hidden;background:#101b2b}
.short-media,.short-backdrops,.short-foreground{position:absolute;inset:0}.short-media{background:#101b2b}.short-backdrop-photo,.short-photo{position:absolute;inset:0;width:100%;height:100%;opacity:0;-webkit-user-drag:none;user-select:none;transition:opacity .72s ease,transform 1.2s cubic-bezier(.2,.8,.2,1),filter .5s ease}.short-backdrop-photo{object-fit:cover;transform:scale(1.16);filter:blur(24px) saturate(1.15) brightness(.62)}.short-foreground{z-index:1;display:grid;place-items:center}.short-photo{object-fit:cover;transform:scale(1.035);filter:saturate(.98) contrast(1.02)}.short-photo.is-photo-active,.short-backdrop-photo.is-photo-active{opacity:1}.short-card.is-active .short-photo{transform:scale(1);filter:saturate(1.06) contrast(1.03) brightness(1.025)}
.short-card.has-no-photo .short-media{overflow:hidden;background:radial-gradient(circle at 74% 22%,color-mix(in srgb,var(--line) 28%,transparent),transparent 30%),radial-gradient(circle at 18% 70%,color-mix(in srgb,var(--line) 18%,transparent),transparent 34%),linear-gradient(145deg,#111d2d,#050b14 70%)}.short-card.has-no-photo .short-media::before{content:attr(data-station-code);position:absolute;inset:0;display:grid;place-items:center;color:rgba(255,255,255,.1);font:900 clamp(76px,22vw,170px)/1 "Outfit",sans-serif;letter-spacing:-.07em;text-shadow:0 0 70px color-mix(in srgb,var(--line) 55%,transparent);transform:rotate(-7deg) scale(1.06)}.short-card.has-no-photo .short-media::after{content:"";position:absolute;left:14%;right:14%;top:49%;height:2px;background:linear-gradient(90deg,transparent,var(--line) 24%,var(--line) 76%,transparent);box-shadow:0 0 24px var(--line);opacity:.48}.short-card.has-no-photo .short-shade{background:linear-gradient(0deg,rgba(3,8,15,.9),rgba(3,8,15,.36) 48%,rgba(3,8,15,.15))}
.short-shade{position:absolute;z-index:1;inset:0;background:linear-gradient(90deg,rgba(2,8,16,.62) 0,rgba(3,9,17,.18) 31%,transparent 62%),linear-gradient(0deg,rgba(3,8,15,.86) 0,rgba(3,8,15,.55) 22%,rgba(3,8,15,.02) 60%,rgba(3,8,15,.20) 100%)}
.short-glow{position:absolute;z-index:1;inset:-25%;pointer-events:none;background:radial-gradient(circle at 6% 43%,rgba(0,112,189,.36),transparent 29%),radial-gradient(circle at 90% 12%,rgba(0,112,189,.18),transparent 30%);opacity:.55;mix-blend-mode:screen;transform:translate3d(-2%,2%,0);transition:transform 1.4s ease,opacity .6s}.short-card.is-active .short-glow{transform:translate3d(2%,-2%,0);opacity:.82}
.danmaku-layer{position:absolute;z-index:3;top:30%;left:18px;right:18px;height:148px;overflow:hidden;pointer-events:none;contain:layout paint}.danmaku-item{position:absolute;left:0;top:calc(var(--lane,0)*48px);display:flex;align-items:center;gap:9px;max-width:max-content;padding:5px 0;color:#fff;font-size:14px;font-weight:900;line-height:1.4;white-space:nowrap;text-shadow:0 2px 4px #000,0 4px 14px rgba(0,0,0,.96),0 0 3px rgba(0,0,0,.9);will-change:transform;animation:danmakuTravel var(--duration,9s) linear forwards}.danmaku-source{flex:0 0 auto;color:#7dd0ff;font-size:9px;font-weight:900;letter-spacing:.06em;text-shadow:0 2px 8px #000}
.station-pill{position:absolute;z-index:4;top:calc(76px + var(--safe-top));right:15px;display:flex;align-items:center;gap:7px;max-width:60vw;padding:8px 11px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(3,10,19,.48);backdrop-filter:blur(14px);box-shadow:0 9px 30px rgba(0,0,0,.16);font-size:11px;font-weight:800}.station-pill b{color:var(--line);font:900 11px "Outfit",sans-serif;text-shadow:0 0 11px var(--line)}.station-pill span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-tools{position:absolute;z-index:5;top:calc(116px + var(--safe-top));right:15px;display:flex;align-items:center;gap:6px}.photo-switch,.gallery-open,.danmaku-toggle-action{min-height:29px;padding:6px 10px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:rgba(3,10,19,.56);color:rgba(255,255,255,.72);backdrop-filter:blur(12px);font:800 9px "Outfit","Noto Sans TC",sans-serif;cursor:pointer}.photo-switch span{color:#fff;font-size:11px}.photo-switch b{font:inherit}.gallery-open{border-color:rgba(119,205,255,.34);color:#b8e4ff}.danmaku-toggle-action{display:flex;align-items:center;gap:5px;border-color:rgba(119,205,255,.34)}.danmaku-toggle-action b{color:#82d4ff;font:900 8px "Outfit",sans-serif}.danmaku-toggle-action[aria-pressed="false"]{opacity:.62}.danmaku-toggle-action[aria-pressed="false"] b{color:#c5ccd5}.photo-switch:focus-visible,.gallery-open:focus-visible,.danmaku-toggle-action:focus-visible{outline:2px solid #8ad1ff;outline-offset:2px}.photo-swipe-hint{position:absolute;z-index:6;top:45%;left:50%;display:flex;align-items:center;gap:8px;padding:9px 13px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:rgba(3,10,19,.72);color:#fff;box-shadow:0 12px 35px rgba(0,0,0,.28);backdrop-filter:blur(14px);font-size:10px;font-weight:900;opacity:0;pointer-events:none;transform:translate(-50%,-50%) scale(.94);transition:opacity .25s ease,transform .25s ease}.photo-swipe-hint span{color:#83d3ff;font:900 18px/1 "Outfit",sans-serif}.photo-swipe-hint.is-visible{opacity:1;transform:translate(-50%,-50%) scale(1)}

.route-dock{position:fixed;z-index:30;left:10px;top:calc(72px + var(--safe-top));bottom:calc(18px + var(--safe-bottom));display:flex;flex-direction:column;width:74px;padding:9px 7px 10px;border:1px solid rgba(255,255,255,.14);border-radius:26px;background:linear-gradient(180deg,rgba(4,12,23,.76),rgba(4,12,23,.54));backdrop-filter:blur(16px) saturate(1.18);box-shadow:0 18px 50px rgba(0,0,0,.25),inset 0 1px rgba(255,255,255,.08)}
.route-dock.is-hopping{animation:routeHop .48s cubic-bezier(.2,.82,.2,1)}
.route-open{display:grid;place-items:center;gap:2px;width:100%;padding:4px 2px 8px;border:0;border-bottom:1px solid rgba(255,255,255,.1);background:none;cursor:pointer}.route-open b{display:grid;place-items:center;width:34px;height:26px;border-radius:9px;background:var(--line);font:900 11px "Outfit",sans-serif;box-shadow:0 0 24px rgba(0,112,189,.55)}.route-open span{font-size:8px;font-weight:800;color:rgba(255,255,255,.62)}
.route-stops{position:relative;display:flex;flex:1;min-height:0;flex-direction:column;padding:5px 0}.route-stops::before{content:"";position:absolute;top:9%;bottom:9%;left:20px;width:3px;border-radius:99px;background:rgba(255,255,255,.18)}
.route-stop{position:relative;display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;flex:1;width:100%;min-height:42px;padding:0;border:0;background:none;color:rgba(255,255,255,.45);text-align:left;cursor:pointer}.route-stop::before{content:"";position:relative;z-index:2;grid-column:1;width:12px;height:12px;margin-left:15px;border:3px solid #0b1625;border-radius:50%;background:#617086;box-shadow:0 0 0 2px rgba(255,255,255,.14)}.route-stop.is-past::before{background:var(--line);box-shadow:0 0 0 2px rgba(0,112,189,.3),0 0 13px rgba(0,112,189,.65)}.route-stop.is-active{color:#fff}.route-stop.is-active::before{width:16px;height:16px;margin-left:13px;background:var(--line);box-shadow:0 0 0 3px rgba(0,112,189,.26)}.route-stop:hover,.route-stop:focus-visible{color:#fff;outline:none}.route-stop:focus-visible .route-stop-copy{text-decoration:underline}.route-train{position:absolute;z-index:5;left:21.5px;top:10%;width:17px;height:17px;border:4px solid #071321;border-radius:50%;background:#69c8ff;box-shadow:0 0 0 4px rgba(0,112,189,.28),0 0 25px #43b9ff;transform:translate(-50%,-50%);pointer-events:none;transition:top .55s cubic-bezier(.2,.82,.2,1)}.route-train::after{content:"";position:absolute;inset:-10px;border:2px solid #62c7ff;border-radius:50%;animation:stationPulse 1.65s ease-out infinite}
.route-stop-copy{grid-column:2;min-width:0;padding-left:2px}.route-stop b{display:block;font:900 8px "Outfit",sans-serif}.route-stop span{display:block;overflow:hidden;margin-top:1px;font-size:8px;font-weight:800;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.route-stop.is-active span{color:#9bd8ff}
.route-footer{padding-top:7px;border-top:1px solid rgba(255,255,255,.1);text-align:center}.route-footer b{display:block;color:#fff;font:900 9px "Outfit","Noto Sans TC",sans-serif}.route-footer span{display:block;margin-top:3px;color:#7bcaff;font-size:8px;font-weight:900}

.short-copy{position:absolute;z-index:4;left:99px;right:72px;bottom:calc(27px + var(--safe-bottom));min-width:0;transform:translateY(18px);opacity:.25;transition:transform .6s cubic-bezier(.2,.8,.2,1),opacity .45s ease}.short-card.is-active .short-copy{transform:translateY(0);opacity:1}
.journey-label{display:flex;align-items:center;gap:8px;margin-bottom:9px;font-size:9px;font-weight:800}.journey-label span{padding:6px 8px;border-radius:8px;background:var(--line);box-shadow:0 7px 22px rgba(0,112,189,.34)}.journey-label b{color:rgba(255,255,255,.62);font-size:9px}
.short-title{max-width:800px;margin:0;color:#fff;font:900 clamp(34px,6vw,64px)/1.08 "Outfit","Noto Sans TC",sans-serif;letter-spacing:-.045em;text-shadow:0 4px 26px rgba(0,0,0,.5);text-wrap:balance;overflow-wrap:anywhere}.short-title.is-medium{font-size:clamp(30px,5.3vw,55px)}.short-title.is-long{font-size:clamp(26px,4.7vw,47px);line-height:1.13}
.short-reason{display:flex;align-items:flex-start;gap:8px;width:fit-content;max-width:min(700px,100%);margin:11px 0 0;padding:8px 11px;border:1px solid rgba(120,205,255,.24);border-radius:12px;background:linear-gradient(100deg,rgba(0,112,189,.3),rgba(4,13,24,.48));box-shadow:0 10px 30px rgba(0,0,0,.16);backdrop-filter:blur(12px);text-shadow:0 2px 14px rgba(0,0,0,.65)}.short-reason span{flex:0 0 auto;color:#78cfff;font-size:13px;line-height:1.55}.short-reason b{font-size:13px;font-weight:800;line-height:1.55;letter-spacing:.01em}
.short-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:12px}.short-meta>span{display:inline-flex;align-items:center;min-height:27px;padding:5px 8px;border:1px solid rgba(255,255,255,.13);border-radius:9px;background:rgba(255,255,255,.1);backdrop-filter:blur(10px);font-size:9px;font-weight:800}.short-meta .rating-chip{color:#ffd468}.rating-chip small{margin-left:5px;color:rgba(255,255,255,.58);font-size:8px}
.merchant-join-trigger{display:inline-flex;align-items:center;justify-content:center;gap:5px;flex:0 0 auto;min-height:27px;margin-left:auto;padding:5px 10px 5px 8px;border:1px solid rgba(255,218,145,.34);border-radius:999px;background:linear-gradient(135deg,rgba(255,213,123,.18),rgba(255,255,255,.07));color:#ffeab8;box-shadow:inset 0 1px rgba(255,255,255,.12),0 8px 24px rgba(0,0,0,.18);backdrop-filter:blur(12px);font-size:9px;font-weight:900;letter-spacing:.02em;white-space:nowrap;cursor:pointer;transition:transform .2s ease,border-color .2s ease,background .2s ease}.merchant-join-trigger svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.merchant-join-trigger:hover{border-color:rgba(255,224,162,.65);background:linear-gradient(135deg,rgba(255,213,123,.27),rgba(255,255,255,.11));transform:translateY(-1px)}.merchant-join-trigger:focus-visible{outline:2px solid #ffe3a2;outline-offset:2px}
.detail-cta{display:inline-flex;align-items:center;gap:8px;margin-top:13px;padding:10px 14px;border-radius:999px;background:#fff;color:#07111e;text-decoration:none;font-size:11px;font-weight:900;box-shadow:0 12px 28px rgba(0,0,0,.22)}.detail-cta svg{width:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.next-store-card{display:grid;grid-template-columns:50px minmax(0,1fr) 34px;align-items:center;gap:10px;width:min(100%,360px);min-height:66px;margin-top:13px;padding:8px 10px 8px 8px;border:1px solid rgba(255,255,255,.2);border-radius:20px;background:rgba(5,14,25,.68);color:#fff;text-align:left;box-shadow:0 14px 34px rgba(0,0,0,.22);backdrop-filter:blur(16px);cursor:pointer;transition:transform .2s ease,background .2s ease}.next-store-card[hidden]{display:none}.next-store-card:hover{transform:translateY(-2px);background:rgba(9,24,41,.84)}.next-store-media{display:block;width:50px;height:50px;overflow:hidden;border:1px solid rgba(255,255,255,.18);border-radius:50%;background:#26364a}.next-store-media img{display:block;width:100%;height:100%;object-fit:cover}.next-store-media.is-empty{display:grid;place-items:center;border-color:color-mix(in srgb,var(--line) 52%,rgba(255,255,255,.16));background:color-mix(in srgb,var(--line) 18%,#172437);color:var(--line);font:900 9px "Outfit",sans-serif;text-shadow:0 0 10px var(--line)}.next-store-copy{display:block;min-width:0}.next-store-copy small{display:block;overflow:hidden;margin-bottom:2px;color:var(--line);font-size:8px;font-weight:900;letter-spacing:.04em;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 0 10px var(--line)}.next-store-copy b{display:block;overflow:hidden;color:#fff;font-size:13px;font-weight:900;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.next-store-copy em{display:block;overflow:hidden;margin-top:2px;color:rgba(255,255,255,.58);font-size:8px;font-style:normal;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.next-store-next{display:block;color:var(--line);font:900 8px "Outfit",sans-serif;letter-spacing:.06em;text-align:center;text-shadow:0 0 10px var(--line)}.next-store-card:focus-visible{outline:3px solid #8ad1ff;outline-offset:3px}
.short-actions{position:absolute;z-index:5;right:12px;bottom:calc(104px + var(--safe-bottom));display:flex;flex-direction:column;gap:13px}.round-action{display:grid;place-items:center;width:50px;min-height:50px;padding:0;border:0;background:none;color:#fff;text-decoration:none;cursor:pointer;filter:drop-shadow(0 3px 12px rgba(0,0,0,.65))}.round-action svg{width:30px;height:30px;padding:5px;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:rgba(4,11,20,.48);fill:none;stroke:#fff;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;backdrop-filter:blur(10px)}.round-action span{margin-top:3px;font-size:9px;font-weight:900}.round-action.is-saved svg{fill:#ff2d55;stroke:#ff2d55}.round-action:focus-visible,.detail-cta:focus-visible,.back-link:focus-visible,.route-open:focus-visible{outline:3px solid #8ad1ff;outline-offset:3px}
.danmaku-compose-action.has-reviewed svg{border-color:rgba(98,189,255,.76);background:rgba(19,103,158,.72);stroke:#8bd5ff}.danmaku-compose-action.has-reviewed span{color:#9cddff}.danmaku-compose-action.is-review-hidden svg{border-color:rgba(255,190,92,.7);background:rgba(132,78,8,.72);stroke:#ffd08a}.danmaku-compose-action.is-review-hidden span{color:#ffd79a}.danmaku-compose-action.is-restricted svg{border-color:rgba(255,125,125,.62);background:rgba(116,32,42,.72);stroke:#ffadb5}.danmaku-compose-action.is-restricted span{color:#ffbdc3}
.swipe-cue{position:absolute;z-index:4;right:13px;bottom:calc(27px + var(--safe-bottom));display:grid;justify-items:center;gap:3px;color:rgba(255,255,255,.54)}.swipe-cue span{width:1px;height:18px;background:linear-gradient(transparent,#fff);animation:swipeCue 1.6s ease-in-out infinite}.swipe-cue small{font-size:7px;font-weight:800;writing-mode:vertical-rl;letter-spacing:.12em}

.feed-sentinel{display:grid;place-items:center;background:radial-gradient(circle at 50% 20%,rgba(0,112,189,.32),transparent 38%),#07101d}.end-card{width:min(86%,480px);padding:34px 26px;border:1px solid rgba(255,255,255,.12);border-radius:30px;background:rgba(255,255,255,.06);backdrop-filter:blur(16px);text-align:center;box-shadow:0 25px 70px rgba(0,0,0,.3)}.end-orbit{position:relative;width:80px;height:80px;margin:0 auto 22px;border:2px solid rgba(103,195,255,.32);border-radius:50%;animation:orbit 5s linear infinite}.end-orbit::before{content:"";position:absolute;top:-6px;left:31px;width:14px;height:14px;border-radius:50%;background:#64c4ff;box-shadow:0 0 25px #49baff}.end-orbit b{position:absolute;inset:0;display:grid;place-items:center;color:#fff;font:900 16px "Outfit",sans-serif}.end-card h2{margin:0 0 10px;font-size:28px}.end-card p{margin:0;color:rgba(255,255,255,.62);font-size:12px;line-height:1.8}.restart-btn{margin-top:20px;padding:11px 17px;border:0;border-radius:999px;background:var(--line);color:#fff;font-size:12px;font-weight:900;cursor:pointer;box-shadow:0 10px 30px rgba(0,112,189,.4)}.loader{display:inline-block;width:34px;height:34px;margin-bottom:13px;border:3px solid rgba(255,255,255,.16);border-top-color:#65c4ff;border-radius:50%;animation:spin .85s linear infinite}.end-card.is-error .loader{display:none}.end-card.is-error h2{color:#ffd27a}

.route-dialog{width:min(92vw,560px);max-height:min(82vh,760px);padding:0;border:1px solid rgba(255,255,255,.16);border-radius:28px;background:#091524;color:#fff;box-shadow:0 30px 100px rgba(0,0,0,.55)}.route-dialog::backdrop{background:rgba(1,5,10,.72);backdrop-filter:blur(9px)}.dialog-head{position:sticky;z-index:2;top:0;display:flex;align-items:center;justify-content:space-between;padding:20px 20px 14px;background:linear-gradient(#091524 78%,transparent)}.dialog-head h2{margin:0;font-size:21px}.dialog-head p{margin:4px 0 0;color:#82ccff;font-size:10px;font-weight:800}.dialog-close{display:grid;place-items:center;width:38px;height:38px;border:1px solid rgba(255,255,255,.14);border-radius:50%;background:rgba(255,255,255,.07);font-size:20px;cursor:pointer}.route-overview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px 18px 22px}.overview-stop{display:grid;grid-template-columns:10px 34px minmax(0,1fr);align-items:center;gap:6px;min-width:0;padding:10px;border:1px solid rgba(255,255,255,.08);border-radius:13px;background:rgba(255,255,255,.035);color:rgba(255,255,255,.5);font:inherit;text-align:left;cursor:pointer}.overview-stop::before{content:"";width:10px;height:10px;border-radius:50%;background:#5a687b}.overview-stop.is-past::before,.overview-stop.is-active::before{background:var(--line);box-shadow:0 0 14px rgba(72,186,255,.7)}.overview-stop.is-active{border-color:rgba(90,192,255,.62);background:rgba(0,112,189,.18);color:#fff}.overview-stop:hover,.overview-stop:focus-visible{border-color:rgba(90,192,255,.62);color:#fff;outline:none}.overview-stop b{font:900 9px "Outfit",sans-serif}.overview-stop span{min-width:0;overflow:hidden;font-size:10px;font-weight:800;text-overflow:ellipsis;white-space:nowrap}
.merchant-join-dialog{width:min(92vw,440px);max-height:min(88dvh,680px);padding:0;border:1px solid rgba(255,255,255,.16);border-radius:28px;background:#081421;color:#fff;box-shadow:0 32px 110px rgba(0,0,0,.62);overflow:auto}.merchant-join-dialog::backdrop{background:rgba(1,5,10,.78);backdrop-filter:blur(9px)}.merchant-join-panel{position:relative;isolation:isolate;padding:27px 24px 24px;overflow:hidden}.merchant-join-panel::before{content:"";position:absolute;z-index:-1;inset:-90px -80px auto 18%;height:220px;background:radial-gradient(circle,rgba(255,204,102,.2),transparent 68%);pointer-events:none}.merchant-join-close{position:absolute;z-index:2;top:16px;right:16px;display:grid;place-items:center;width:38px;height:38px;border:1px solid rgba(255,255,255,.14);border-radius:50%;background:rgba(255,255,255,.07);color:#fff;font-size:21px;line-height:1;cursor:pointer}.merchant-join-close:hover{background:rgba(255,255,255,.12)}.merchant-join-close:focus-visible{outline:2px solid #ffe3a2;outline-offset:2px}.merchant-join-mark{display:grid;place-items:center;width:46px;height:46px;margin-bottom:15px;border:1px solid rgba(255,219,147,.38);border-radius:15px;background:linear-gradient(145deg,rgba(255,213,123,.2),rgba(255,255,255,.07));color:#ffe4a6;box-shadow:0 14px 34px rgba(0,0,0,.24)}.merchant-join-mark svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.merchant-join-kicker{display:inline-flex;margin-bottom:8px;color:#ffd981;font:900 9px "Outfit","Noto Sans TC",sans-serif;letter-spacing:.1em}.merchant-join-panel h2{max-width:340px;margin:0;font-size:24px;line-height:1.35;letter-spacing:-.02em}.merchant-join-lead{margin:10px 0 0;color:rgba(255,255,255,.65);font-size:12px;font-weight:600;line-height:1.75}.merchant-join-benefits{display:grid;gap:8px;margin:19px 0 0;padding:0;list-style:none}.merchant-join-benefits li{display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:9px;padding:9px 11px;border:1px solid rgba(255,255,255,.08);border-radius:13px;background:rgba(255,255,255,.045);font-size:11px;font-weight:800;line-height:1.5}.merchant-join-benefits li::before{content:"✓";display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:rgba(96,211,158,.14);color:#8de2b8;font:900 11px "Outfit",sans-serif}.merchant-join-note{margin-top:15px;padding:12px 13px;border:1px solid rgba(255,218,145,.18);border-radius:14px;background:rgba(255,211,123,.075);color:rgba(255,255,255,.62);font-size:9px;line-height:1.7}.merchant-join-note strong{display:block;color:#ffe2a0;font-size:11px}.merchant-join-cta{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:46px;margin-top:16px;padding:11px 16px;border:1px solid rgba(255,228,171,.5);border-radius:999px;background:linear-gradient(135deg,#e9aa31,#ffd976);color:#1a1307;text-decoration:none;font-size:11px;font-weight:900;box-shadow:0 14px 34px rgba(218,154,42,.24);transition:transform .2s ease,box-shadow .2s ease}.merchant-join-cta span{font:900 17px/1 "Outfit",sans-serif}.merchant-join-cta:hover{transform:translateY(-1px);box-shadow:0 17px 40px rgba(218,154,42,.32)}.merchant-join-cta:focus-visible{outline:3px solid #fff;outline-offset:3px}
.photo-dialog{width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;background:#02070e;color:#fff;overflow:hidden}.photo-dialog::backdrop{background:#02070e}.photo-dialog-head{position:absolute;z-index:4;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:calc(14px + var(--safe-top)) 15px 18px;background:linear-gradient(180deg,rgba(1,5,10,.94),rgba(1,5,10,.54),transparent)}.photo-dialog-title{min-width:0}.photo-dialog-title h2{overflow:hidden;margin:0;font-size:17px;text-overflow:ellipsis;white-space:nowrap}.photo-dialog-title p{margin:4px 0 0;color:#86d0ff;font-size:10px;font-weight:800}.photo-dialog-close{display:grid;place-items:center;flex:0 0 auto;width:40px;height:40px;border:1px solid rgba(255,255,255,.18);border-radius:50%;background:rgba(255,255,255,.08);color:#fff;font-size:23px;cursor:pointer}.photo-gallery-track{display:flex;width:100%;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}.photo-gallery-track::-webkit-scrollbar{display:none}.gallery-frame{position:relative;display:grid;place-items:center;flex:0 0 100%;width:100%;height:100%;padding:calc(76px + var(--safe-top)) 0 calc(72px + var(--safe-bottom));scroll-snap-align:center;scroll-snap-stop:always;background:radial-gradient(circle at 50% 50%,#13243a,#02070e 70%)}.gallery-frame img{display:block;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity .35s ease}.gallery-frame img.is-loaded{opacity:1}.gallery-frame::before{content:"";position:absolute;width:32px;height:32px;border:3px solid rgba(255,255,255,.16);border-top-color:#62c6ff;border-radius:50%;animation:spin .85s linear infinite}.gallery-frame.has-loaded::before{display:none}.photo-gallery-state{display:grid;place-items:center;width:100%;height:100%;padding:24px;text-align:center}.photo-gallery-state p{max-width:320px;color:rgba(255,255,255,.62);font-size:12px;line-height:1.8}.gallery-controls{position:absolute;z-index:4;left:0;right:0;bottom:0;display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:12px;padding:12px 16px calc(12px + var(--safe-bottom));background:linear-gradient(0deg,rgba(1,5,10,.96),rgba(1,5,10,.62),transparent)}.gallery-arrow{display:grid;place-items:center;width:42px;height:42px;border:1px solid rgba(255,255,255,.18);border-radius:50%;background:rgba(255,255,255,.08);color:#fff;font-size:22px;cursor:pointer}.gallery-arrow:disabled{opacity:.24}.gallery-count{text-align:center;color:rgba(255,255,255,.58);font:800 11px "Outfit",sans-serif}.gallery-count b{color:#fff;font-size:16px}.gallery-hint{display:block;margin-top:2px;font-family:"Noto Sans TC",sans-serif;font-size:8px}
.gallery-frame{margin:0}
.photo-dialog-title p:empty{display:none}
.danmaku-dialog{width:min(92vw,460px);max-width:none;margin:auto;padding:0;border:1px solid rgba(255,255,255,.16);border-radius:26px;background:#091524;color:#fff;box-shadow:0 30px 100px rgba(0,0,0,.58);overflow:hidden}.danmaku-dialog::backdrop{background:rgba(1,5,10,.78);backdrop-filter:blur(8px)}.danmaku-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:20px 20px 15px;border-bottom:1px solid rgba(255,255,255,.1)}.danmaku-dialog-head>div{min-width:0}.danmaku-dialog-head span{display:block;margin-bottom:4px;color:#7dceff;font-size:9px;font-weight:900;letter-spacing:.08em}.danmaku-dialog-head h2{overflow:hidden;margin:0;font-size:21px;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.danmaku-dialog-close{display:grid;place-items:center;flex:0 0 auto;width:39px;height:39px;border:1px solid rgba(255,255,255,.15);border-radius:50%;background:rgba(255,255,255,.07);color:#fff;font-size:22px;cursor:pointer}.danmaku-login-panel,.danmaku-editor-panel{padding:22px 20px 24px}.danmaku-login-panel{text-align:center}.danmaku-panel-icon{display:grid;place-items:center;width:52px;height:52px;margin:0 auto 14px;border-radius:50%;background:rgba(99,197,255,.14);color:#86d3ff;font-size:24px}.danmaku-login-panel h3{margin:0 0 8px;font-size:18px}.danmaku-login-panel p{margin:0;color:rgba(255,255,255,.62);font-size:11px;line-height:1.75}.danmaku-login-link{display:inline-flex;margin-top:18px;padding:11px 18px;border-radius:999px;background:var(--line);color:#fff;text-decoration:none;font-size:11px;font-weight:900;box-shadow:0 12px 30px rgba(0,112,189,.3)}.danmaku-editor-panel label{display:block;margin-bottom:9px;font-size:12px;font-weight:900}.danmaku-editor-panel textarea{display:block;width:100%;min-height:112px;padding:13px 14px;border:1px solid rgba(255,255,255,.16);border-radius:16px;outline:0;background:rgba(255,255,255,.06);color:#fff;font:500 13px/1.7 "Noto Sans TC",sans-serif;resize:none}.danmaku-editor-panel textarea::placeholder{color:rgba(255,255,255,.34)}.danmaku-editor-panel textarea:focus{border-color:#6ac7ff;box-shadow:0 0 0 3px rgba(93,194,255,.12)}.danmaku-editor-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:7px;color:rgba(255,255,255,.42);font-size:8px}.danmaku-editor-meta b{flex:0 0 auto;color:#8ad4ff;font:900 10px "Outfit",sans-serif}.danmaku-editor-meta b.is-invalid{color:#ff9b9b}.danmaku-preview{margin-top:17px;padding:12px 0;border-top:1px solid rgba(255,255,255,.1);border-bottom:1px solid rgba(255,255,255,.1)}.danmaku-preview small{display:block;margin-bottom:7px;color:#7dceff;font-size:8px;font-weight:900;letter-spacing:.08em}.danmaku-preview p{margin:0;color:#fff;font-size:12px;font-weight:800;line-height:1.65;text-shadow:0 2px 4px #000,0 4px 14px rgba(0,0,0,.96)}.danmaku-location-status{display:none;align-items:center;gap:8px;margin-top:13px;padding:10px 12px;border:1px solid rgba(104,202,255,.18);border-radius:13px;background:rgba(86,190,255,.08);color:#bde8ff;font-size:9px;font-weight:800;line-height:1.55}.danmaku-location-status.is-visible{display:flex}.danmaku-location-status.is-error{border-color:rgba(255,137,137,.24);background:rgba(255,103,103,.09);color:#ffc1c1}.danmaku-location-status .loader{width:14px;height:14px;border-width:2px}.danmaku-phase-button{width:100%;margin-top:18px;padding:12px 14px;border:0;border-radius:999px;background:var(--line);color:#fff;font-size:10px;font-weight:900;cursor:pointer;box-shadow:0 12px 30px rgba(0,112,189,.26);transition:opacity .2s ease,transform .2s ease}.danmaku-phase-button:not(:disabled):active{transform:scale(.98)}.danmaku-phase-button:disabled{background:#3b4b5d;color:rgba(255,255,255,.55);box-shadow:none;cursor:not-allowed;opacity:.72}.danmaku-phase-note{margin:9px 0 0;color:rgba(255,255,255,.48);font-size:8px;line-height:1.6;text-align:center}
.shorts-footprint-note{margin:0 0 17px;padding:12px 13px;border:1px solid rgba(112,203,255,.2);border-radius:15px;background:linear-gradient(115deg,rgba(48,151,216,.16),rgba(255,255,255,.045));color:rgba(255,255,255,.7);font-size:11px;line-height:1.65;text-align:left}.shorts-footprint-note b{display:block;margin-bottom:3px;color:#91dbff;font-size:12px}.shorts-footprint-note strong{color:#fff}.danmaku-login-panel .shorts-footprint-note{margin-top:17px}.danmaku-quick-block{margin:0 0 12px}.danmaku-quick-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px}.danmaku-quick-head b{color:#fff;font-size:11px}.danmaku-quick-head small{color:rgba(255,255,255,.48);font-size:9px;line-height:1.4;text-align:right}.danmaku-quick-options{display:flex;flex-wrap:wrap;gap:7px}.danmaku-quick-option{min-height:34px;padding:7px 10px;border:1px solid rgba(122,205,255,.22);border-radius:999px;background:rgba(91,183,239,.08);color:#d9f1ff;font:800 10px/1.35 "Noto Sans TC",sans-serif;cursor:pointer;transition:border-color .18s ease,background .18s ease,transform .18s ease}.danmaku-quick-option:hover,.danmaku-quick-option:focus-visible{border-color:#72cbff;background:rgba(91,183,239,.16);outline:none}.danmaku-quick-option:active{transform:scale(.97)}.danmaku-quick-option[aria-pressed="true"]{border-color:rgba(105,210,255,.7);background:rgba(49,159,222,.24);color:#fff}
.danmaku-dialog-head span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Merchant CTA readability pass: keep the compact layout, but never rely on sub-12px body copy. */
.merchant-join-trigger{min-height:32px;padding:6px 11px 6px 9px;font-size:11px;line-height:1.2}.merchant-join-trigger svg{width:15px;height:15px}
.merchant-join-kicker{font-size:11px}.merchant-join-panel h2{font-size:25px}.merchant-join-lead{font-size:14px;line-height:1.7}.merchant-join-benefits li{grid-template-columns:24px minmax(0,1fr);min-height:44px;padding:10px 12px;font-size:13px}.merchant-join-benefits li::before{width:24px;height:24px;font-size:12px}.merchant-join-note{font-size:12px;line-height:1.65}.merchant-join-note strong{font-size:14px}.merchant-join-cta{min-height:50px;padding:13px 16px;font-size:14px}
.merchant-join-dialog{overflow:hidden}.merchant-join-panel{display:flex;flex-direction:column;max-height:min(88dvh,680px);padding:0}.merchant-join-scroll{min-height:0;padding:27px 24px 0;overflow-y:auto;overscroll-behavior:contain;scroll-padding-bottom:14px;-webkit-overflow-scrolling:touch}.merchant-join-cta{flex:0 0 auto;width:auto;margin:16px 24px 24px}
.toast{position:fixed;z-index:80;left:50%;bottom:calc(24px + var(--safe-bottom));max-width:80vw;padding:10px 14px;border:1px solid rgba(255,255,255,.14);border-radius:999px;background:rgba(5,13,23,.9);box-shadow:0 12px 35px rgba(0,0,0,.35);font-size:11px;font-weight:800;transform:translate(-50%,20px);opacity:0;pointer-events:none;transition:.25s}.toast.show{transform:translate(-50%,0);opacity:1}

@keyframes stationPulse{0%{transform:scale(.45);opacity:.85}72%,100%{transform:scale(1.35);opacity:0}}
@keyframes routeHop{0%{transform:translateY(10px);opacity:.75}100%{transform:translateY(0);opacity:1}}
@keyframes swipeCue{0%,100%{transform:translateY(-4px);opacity:.25}50%{transform:translateY(5px);opacity:.9}}
@keyframes danmakuTravel{from{transform:translate3d(var(--layer-width,520px),0,0)}to{transform:translate3d(calc(-100% - 18px),0,0)}}
@keyframes orbit{to{transform:rotate(360deg)}}@keyframes spin{to{transform:rotate(360deg)}}
@media (min-width:760px){.short-card::before,.short-card::after{display:block}.short-stage{width:min(506px,calc((100svh - 28px)*.5625),calc(100vw - 300px));height:auto;aspect-ratio:9/16}.short-canvas{border:1px solid rgba(255,255,255,.13);border-radius:24px;box-shadow:0 30px 90px rgba(0,0,0,.5)}.route-dock{left:max(18px,calc(50% - 410px));top:88px;bottom:28px;width:112px;padding:13px 10px}.route-open b{width:44px;height:32px;font-size:13px}.route-open span{font-size:9px}.route-stops::before{left:29px}.route-stop{grid-template-columns:40px minmax(0,1fr)}.route-stop::before{margin-left:23px}.route-stop.is-active::before{margin-left:21px}.route-stop.is-active::after{left:14px}.route-stop b,.route-stop span{font-size:10px}.short-copy{left:24px;right:24px;bottom:28px}.short-title{max-width:100%;font-size:clamp(31px,3.2vw,43px)}.short-title.is-medium{font-size:clamp(28px,2.8vw,38px)}.short-title.is-long{font-size:clamp(25px,2.5vw,34px)}.short-actions{right:-68px;bottom:116px}.round-action{width:56px}.round-action svg{width:36px;height:36px;background:rgba(10,20,34,.82)}.round-action span{font-size:9px}.station-pill{top:74px;right:16px}.photo-tools{top:114px;right:16px}.swipe-cue{right:14px;bottom:28px}.short-meta>span{font-size:10px}.next-store-card{width:100%}.photo-dialog{inset:14px;width:min(900px,calc(100vw - 28px));height:calc(100dvh - 28px);margin:auto;border:1px solid rgba(255,255,255,.14);border-radius:24px}.photo-dialog::backdrop{background:rgba(1,5,10,.9);backdrop-filter:blur(8px)}.gallery-frame{padding-left:20px;padding-right:20px}}
@media (min-width:760px){.route-train{left:30.5px}}
@media (max-width:759px){.short-canvas{touch-action:pan-y}.route-dock{bottom:auto;height:clamp(230px,42svh,350px)}.short-copy{left:15px;right:15px}.short-title{display:-webkit-box;max-width:100%;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.photo-switch,.gallery-open{display:none}.danmaku-layer{top:34%;left:84px;right:70px;height:94px}.danmaku-item{top:calc(var(--lane,0)*43px);padding:5px 0;font-size:13px}.short-actions{top:calc(150px + var(--safe-top));right:8px;bottom:auto;gap:10px}.round-action{width:58px;min-height:58px}.round-action svg{width:36px;height:36px;padding:6px}.round-action span{margin-top:4px;font-size:10px}.swipe-cue{display:none}.next-store-card{width:100%}.danmaku-dialog{inset:auto 0 0;width:100%;margin:auto 0 0;border-width:1px 0 0;border-radius:26px 26px 0 0;padding-bottom:var(--safe-bottom)}}
@media (max-width:759px){.merchant-join-trigger{min-height:38px;padding:8px 12px 8px 10px;font-size:12px}.merchant-join-trigger svg{width:16px;height:16px}.merchant-join-dialog{inset:auto 0 0;width:100%;max-width:none;max-height:88dvh;margin:auto 0 0;border-width:1px 0 0;border-radius:28px 28px 0 0;overscroll-behavior:contain}.merchant-join-panel{max-height:88dvh;padding:0}.merchant-join-scroll{padding:23px 18px 0}.merchant-join-panel h2{padding-right:38px;font-size:24px}.merchant-join-benefits li{font-size:14px}.merchant-join-cta{margin:14px 18px calc(20px + var(--safe-bottom))}.merchant-join-close{top:14px;right:14px;width:44px;height:44px}}
@media (max-width:759px){.round-action span{font-size:11px}.danmaku-dialog{max-height:92dvh;padding-bottom:0}.danmaku-dialog-head{padding:17px 18px 13px}.danmaku-dialog-head span{font-size:11px}.danmaku-dialog-head h2{font-size:22px}.danmaku-login-panel,.danmaku-editor-panel{max-height:calc(92dvh - 72px);padding:19px 18px calc(22px + var(--safe-bottom));overflow-y:auto;overscroll-behavior:contain}.danmaku-login-panel h3{font-size:19px}.danmaku-login-panel p{font-size:13px}.danmaku-login-link{font-size:14px}.shorts-footprint-note{font-size:12px}.shorts-footprint-note b{font-size:13px}.danmaku-editor-panel label{font-size:14px}.danmaku-quick-head b{font-size:12px}.danmaku-quick-head small{font-size:11px}.danmaku-quick-option{min-height:37px;padding:8px 11px;font-size:12px}.danmaku-editor-panel textarea{min-height:108px;font-size:16px}.danmaku-editor-meta{font-size:11px}.danmaku-editor-meta b{font-size:12px}.danmaku-preview small{font-size:11px}.danmaku-preview p{font-size:14px}.danmaku-location-status{font-size:12px}.danmaku-phase-button{font-size:14px}.danmaku-phase-note{font-size:11px}}
@media (max-width:374px){.route-dock{left:6px;width:68px}.short-copy{left:15px;right:15px}.short-actions{right:7px}.station-pill{right:9px}.short-title{font-size:27px}.short-title.is-medium{font-size:25px}.short-title.is-long{font-size:23px}.short-reason{gap:6px;padding:7px 9px}.short-reason b{font-size:12px}.short-meta>span:nth-child(n+4){display:none}.route-stop-copy{padding-left:0}.next-store-card{grid-template-columns:44px minmax(0,1fr) 28px;gap:8px;min-height:60px}.next-store-media{width:44px;height:44px}.next-store-next{font-size:7px}}
@media (max-width:374px){.merchant-join-scroll{padding-right:16px;padding-left:16px}.merchant-join-panel h2{font-size:22px}.merchant-join-benefits li{font-size:13px}.merchant-join-cta{margin-right:16px;margin-left:16px}}
@media (max-width:374px){.photo-tools{right:9px}}
@media (max-height:680px){.route-stop{min-height:34px}.short-copy{bottom:calc(18px + var(--safe-bottom))}.short-actions{bottom:calc(84px + var(--safe-bottom));gap:8px}.swipe-cue{display:none}.next-store-card{grid-template-columns:42px minmax(0,1fr) 28px;min-height:58px;margin-top:9px}.next-store-media{width:42px;height:42px}.next-store-next{font-size:7px}.short-meta{margin-top:8px}}
@media (max-width:759px) and (max-height:680px){.route-dock{top:calc(62px + var(--safe-top));height:clamp(210px,38svh,250px)}.route-open span{display:none}.short-actions{top:calc(140px + var(--safe-top));bottom:auto;gap:8px}.round-action{width:54px;min-height:54px}.round-action svg{width:34px;height:34px}.round-action span{font-size:9px}}
.persistent-stage-overlay{position:fixed;z-index:34;left:50%;top:50%;width:min(506px,calc(56.25svh - 15.75px),calc(100vw - 300px));aspect-ratio:9/16;transform:translate(-50%,-50%);pointer-events:none}.persistent-stage-overlay[hidden]{display:none}.persistent-head-tools{position:absolute;top:74px;right:16px;display:flex;flex-direction:column;align-items:flex-end;gap:8px}.persistent-station-pill{position:static;max-width:100%;pointer-events:none}.persistent-review-toggle{pointer-events:auto}
.persistent-actions{position:fixed;z-index:35}.persistent-actions[hidden]{display:none}
@media (min-width:760px){.short-card .photo-tools{top:151px}.persistent-actions{left:calc(50% + min(253px,calc(28.125svh - 7.875px),calc(50vw - 150px)) + 12px);right:auto;top:50%;bottom:auto;transform:translateY(-50%)}}
@media (max-width:759px){.persistent-stage-overlay{inset:0;width:100%;height:100svh;aspect-ratio:auto;transform:none}.persistent-head-tools{top:calc(76px + var(--safe-top));right:15px}.persistent-actions{left:auto;right:8px;top:calc(150px + var(--safe-top));bottom:auto;transform:none}}
@media (max-width:759px) and (max-height:680px){.persistent-actions{top:calc(140px + var(--safe-top));bottom:auto}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.short-photo{transform:none!important}.danmaku-layer{display:none!important}}
