/* 飛飛七城：兩欄空中窗景，難度留在原生 dialog 的大按鈕。 */
.fly-portal-page{--ink:#575574;--cream:#fff9ee;background:#d5dfeb;color:#575574}
.fly-portal-wrap{max-width:540px;margin:auto;background:linear-gradient(#e5e7f3,#dcebe7);overflow:hidden;box-shadow:0 0 40px #77789918}
.fly-portal-header{display:flex;align-items:center;gap:12px;padding:calc(18px + env(safe-area-inset-top)) 20px 10px}
.fly-portal-header .home-link{background:#fffaf0aa;border-color:#b0abc4;color:#74678b}
.fly-portal-header h1{margin:0;font-size:clamp(22px,6vw,28px);letter-spacing:1px;color:#655b7f}
.fly-portal-header .eyebrow{color:#827b98;font-size:11px}
.fly-portal-header #motion{background:#fff9ef;color:#746b87;border-color:#b9afc7}
.fly-portal-invite{text-align:center;font-size:12px;line-height:1.8;margin:0;padding:0 12px 10px;color:#82768e}
.fly-portal-invite b{font-size:14px;color:#655f7e}
#fly-map{display:block;width:100%;height:auto;font-family:inherit}
.fly-city{cursor:pointer;outline:none;touch-action:manipulation}
.fly-city .fly-focus{fill:none;stroke:#b68857;stroke-width:3;stroke-dasharray:7 5;opacity:0;pointer-events:none}
.fly-city:focus-visible .fly-focus{opacity:1}
.fly-city:hover .fly-frame,.fly-city:focus-visible .fly-frame{filter:drop-shadow(0 0 4px #fff5d2)}
.fly-city:active .fly-frame{filter:brightness(1.06)}
.fly-badge circle{fill:#fff7e7;stroke:#a4a2b9;stroke-width:1.3}
.fly-badge text{fill:#7a728b;font-size:12px;font-weight:700}
.fly-badge.done circle{fill:#788f7f;stroke:#667a6b}
.fly-badge.done text{fill:#fff8d7}
.fly-badge.unknown circle{stroke-dasharray:2 2}
.fly-pilot{animation:fly-pilot 6s ease-in-out infinite}
.fly-pilot.second{animation-delay:-3s}
#fly-map .arrival-cloud{animation:fly-cloud 15s ease-in-out infinite}
#fly-map .arrival-bus{animation:fly-bus 13s ease-in-out infinite}
#fly-map .arrival-boat{animation:fly-cloud 11s ease-in-out infinite}
#fly-map .arrival-cable{animation:fly-cable 14s ease-in-out infinite}
#fly-map .arrival-fountain{animation:fly-fountain 5s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 100%}
#fly-map .dance-foot{animation:none}
@keyframes fly-pilot{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes fly-cloud{0%,100%{transform:translateX(0)}50%{transform:translateX(9px)}}
@keyframes fly-bus{0%,20%,100%{transform:translateX(-10px)}65%,80%{transform:translateX(24px)}}
@keyframes fly-cable{0%,100%{transform:translate(-6px,-4px)}60%{transform:translate(8px,5px)}}
@keyframes fly-fountain{0%,100%{transform:scaleY(.83);opacity:.75}50%{transform:scaleY(1);opacity:1}}
[data-still="true"] #fly-map *{animation:none!important}
@media(prefers-reduced-motion:reduce){body:not([data-still="false"]) #fly-map *{animation:none!important}}
.fly-record-note{text-align:center;font-size:12px;line-height:1.7;margin:0;padding:4px 16px 14px;color:#726a83}
.fly-help{font-size:12px;line-height:1.8;margin:0 18px 22px;padding:12px 16px;background:#fff9ee99;border:1px solid #bebdcb;border-radius:15px}
.fly-help summary{cursor:pointer;font-weight:700;min-height:24px}
.fly-help p{margin:10px 0 0}
.fly-portal-page .city-paper{border-top-color:#a294b5;background:radial-gradient(circle at 100% 0,#e4dbf080,transparent 60%)}
.fly-portal-page #city-caption{color:#867693}
.fly-portal-page #city-title{color:#655a7c}
.fly-portal-page #city-description{color:#6c6678}
.fly-portal-page .level-grid{grid-template-columns:1fr;gap:8px}
.fly-portal-page .level-choice{min-height:60px;padding:9px 12px;border-color:#c0b7cf;display:grid;grid-template-columns:1fr auto;gap:4px 8px;color:#736682}
.fly-portal-page .level-choice small{grid-column:1/-1;font-size:12px}
.fly-portal-page .level-choice .level-complete{grid-column:2;grid-row:1;font-size:11px;color:#52806a}
.fly-portal-page .level-choice[aria-pressed="true"]{border-color:#8b789f;background:#eee5f1;box-shadow:0 0 0 1px #8b789f;color:#594c73}
.fly-portal-page .city-message{min-height:0;color:#7c7085;line-height:1.7}
.fly-portal-page .city-go{background:#78658e;box-shadow:0 4px 0 #574668}
.fly-portal-page .city-after{color:#887a91}
@media(max-width:350px){.fly-portal-header{padding-inline:12px;gap:8px}.fly-portal-header .eyebrow{letter-spacing:1px}.fly-portal-header h1{font-size:22px}}
