:root{
  --gis-blue:#102f4c;
  --gis-blue-2:#173f63;
  --gis-red:#b84a3b;
  --gis-sky:#6fb7de;
  --gis-paper:#f8f4ec;
  --gis-surface:#fffdf8;
  --gis-line:rgba(16,47,76,.14);
  --gis-muted:#687789;
  --gis-shadow:0 28px 80px rgba(16,47,76,.12);
  --gis-radius:28px;
  --gis-ease:cubic-bezier(.2,.8,.2,1);
}
body.gis-simple-mode,
body.gis-pro-mode{background:var(--gis-paper)}
.gis-page{min-height:100dvh;background:radial-gradient(circle at 12% 10%,rgba(111,183,222,.14),transparent 26rem),radial-gradient(circle at 90% 8%,rgba(184,74,59,.08),transparent 28rem),linear-gradient(180deg,#fffdf8 0%,#f8f4ec 72%,#f4ecdf 100%)}
.gis-shell,.gis-app{width:min(1500px,calc(100% - clamp(1rem,4vw,4rem)));margin-inline:auto}
.gis-hero{padding:clamp(2rem,5vw,4.8rem) 0 clamp(1rem,2vw,1.6rem)}
.gis-shell{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,420px);gap:clamp(1rem,3vw,2.4rem);align-items:end}
.gis-copy{max-width:820px}.gis-kicker,.gis-data-card__label,.point-list-head span{margin:0 0 .5rem;color:#6b7f91;font-size:.74rem;font-weight:900;letter-spacing:.18em;text-transform:uppercase}.gis-copy h1{margin:0;color:var(--gis-blue);font-size:clamp(2.1rem,5vw,4.4rem);line-height:.98;letter-spacing:-.055em}.gis-copy p{margin:1rem 0 0;max-width:48rem;color:#5e7184;font-size:clamp(1rem,1.5vw,1.16rem);line-height:1.9}.gis-status{padding:1.15rem;border:1px solid var(--gis-line);border-radius:24px;background:rgba(255,253,248,.78);box-shadow:0 18px 50px rgba(16,47,76,.08);backdrop-filter:blur(14px)}.gis-status span{display:inline-flex;margin:0 0 .4rem;padding:.25rem .55rem;border-radius:999px;background:rgba(16,47,76,.07);color:#607386;font-size:.72rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.gis-status strong{display:block;color:var(--gis-blue);font-size:1.14rem}.gis-status small{display:block;margin-top:.35rem;color:#6a7c8e;line-height:1.65}
.gis-app{padding:clamp(.8rem,2vw,1.25rem);border:1px solid rgba(16,47,76,.12);border-radius:34px;background:rgba(255,253,248,.74);box-shadow:var(--gis-shadow);backdrop-filter:blur(16px)}
.gis-toolbar{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:1rem;align-items:center;padding:.25rem .25rem 1rem;border-bottom:1px solid rgba(16,47,76,.1)}.toolbar-title span{display:block;color:#74869a;font-size:.72rem;font-weight:900;letter-spacing:.16em}.toolbar-title strong{display:block;margin-top:.25rem;color:var(--gis-blue);font-size:1.35rem;letter-spacing:-.02em}.toolbar-title small{display:block;margin-top:.25rem;color:#66798c;line-height:1.5}.mode-switch{display:flex;gap:.45rem;padding:.32rem;border:1px solid rgba(16,47,76,.1);border-radius:999px;background:rgba(255,255,255,.7)}.mode-button{border:0;border-radius:999px;background:transparent;color:#53677b;cursor:pointer;padding:.72rem 1rem;text-align:left;transition:background .18s var(--gis-ease),color .18s var(--gis-ease),box-shadow .18s var(--gis-ease),transform .18s var(--gis-ease)}.mode-button span{display:block;font-size:.92rem;font-weight:900}.mode-button small{display:block;margin-top:.1rem;font-size:.72rem;font-weight:800;opacity:.82}.mode-button.is-active{background:#fff;color:var(--gis-blue);box-shadow:0 10px 28px rgba(16,47,76,.11)}.mode-button:hover{transform:translateY(-1px)}.gis-toolbox{grid-column:1/-1;display:flex;gap:.8rem;align-items:center;justify-content:space-between}.gis-search{height:48px;min-width:min(430px,100%);display:flex;align-items:center;gap:.55rem;border:1px solid rgba(16,47,76,.12);border-radius:18px;background:#fff;padding:0 .75rem}.gis-search span{font-size:.78rem;color:#647789;font-weight:900;letter-spacing:.08em}.gis-search input{width:100%;border:0;outline:0;background:transparent;color:#173b5e}.gis-search button{width:32px;height:32px;border:0;border-radius:999px;background:rgba(16,47,76,.07);color:var(--gis-blue);cursor:pointer}.toolbar-actions{display:flex;flex-wrap:wrap;gap:.55rem;justify-content:flex-end}.category-filter{display:flex;flex-wrap:wrap;gap:.4rem}.filter-chip,.map-control-button{min-height:42px;border:1px solid rgba(16,47,76,.12);border-radius:999px;background:#fff;color:var(--gis-blue);padding:0 .9rem;font-size:.86rem;font-weight:900;cursor:pointer;transition:background .18s var(--gis-ease),transform .18s var(--gis-ease),border-color .18s var(--gis-ease)}.filter-chip.is-active,.filter-chip:hover,.map-control-button:hover{background:rgba(16,47,76,.07);border-color:rgba(16,47,76,.18);transform:translateY(-1px)}
.gis-mode-note{display:flex;gap:.65rem;align-items:center;margin:1rem 0;padding:.85rem 1rem;border:1px solid rgba(16,47,76,.09);border-radius:20px;background:rgba(255,255,255,.56);color:#617386}.gis-mode-note strong{color:var(--gis-blue);white-space:nowrap}.gis-mode-note span{line-height:1.6}.pro-only{display:none!important}.gis-pro-mode .pro-only{display:revert!important}.gis-pro-mode .gis-insights{display:grid!important}.gis-pro-mode .gis-search{display:flex!important}.gis-insights{grid-template-columns:minmax(0,1fr) minmax(320px,.7fr);gap:1rem;margin-bottom:1rem}.gis-data-card,.gis-legend-card{padding:1rem;border:1px solid rgba(16,47,76,.1);border-radius:24px;background:rgba(255,255,255,.62)}.gis-data-card h2,.gis-legend-card h2{margin:.15rem 0 .85rem;color:var(--gis-blue);font-size:1.05rem}.gis-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin:0}.gis-stats div{min-height:70px;padding:.8rem;border:1px solid rgba(16,47,76,.09);border-radius:18px;background:rgba(255,253,248,.82)}.gis-stats dt{color:#77899a;font-size:.76rem;font-weight:900;letter-spacing:.08em}.gis-stats dd{margin:.32rem 0 0;color:var(--gis-blue);font-size:1.02rem;font-weight:950;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gis-data-card p{margin:.8rem 0 0;color:#6c7d8e;line-height:1.7}.map-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.legend-item{display:flex;gap:.7rem;align-items:flex-start;padding:.85rem;border:1px solid rgba(16,47,76,.09);border-radius:18px;background:rgba(255,253,248,.78)}.legend-item i{width:18px;height:18px;border-radius:50%;background:var(--legend-color);box-shadow:0 0 0 7px color-mix(in srgb,var(--legend-color) 16%,transparent);flex:0 0 auto;margin-top:.18rem}.legend-item strong{display:block;color:var(--gis-blue);font-size:.94rem}.legend-item span{display:block;margin-top:.22rem;color:#6d7e8f;font-size:.82rem;line-height:1.55}
.gis-stage{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(330px,390px);gap:0;min-height:clamp(620px,72dvh,820px);overflow:hidden;border:1px solid rgba(16,47,76,.12);border-radius:28px;background:#fff;box-shadow:0 18px 60px rgba(16,47,76,.1)}.gis-pro-mode .gis-stage{grid-template-columns:minmax(0,1fr) minmax(310px,390px) minmax(230px,300px)}.hudong-map{position:relative;z-index:1;min-height:620px;background:#eef3f4;isolation:isolate}.hudong-map::before{content:"";position:absolute;inset:0;z-index:600;background:rgba(248,244,236,.66);backdrop-filter:blur(5px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .22s ease,visibility .22s ease}.hudong-map::after{content:"";position:absolute;left:50%;top:50%;z-index:601;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:3px solid rgba(16,47,76,.14);border-top-color:var(--gis-blue);opacity:0;visibility:hidden;pointer-events:none;animation:mapSpin .8s linear infinite}.hudong-map.is-map-loading::before,.hudong-map.is-map-loading::after{opacity:1;visibility:visible}@keyframes mapSpin{to{transform:rotate(360deg)}}.map-error-panel{position:absolute;z-index:6;left:1rem;top:1rem;max-width:340px;padding:1rem;border-radius:18px;background:rgba(255,253,248,.94);border:1px solid rgba(184,74,59,.26);box-shadow:0 16px 46px rgba(16,47,76,.14);color:var(--gis-blue)}.map-error-panel[aria-hidden="true"]{display:none}.map-error-panel strong{display:block}.map-error-panel p{margin:.4rem 0 0;color:#6c7b8c;line-height:1.6}.boundary-note{position:absolute;z-index:5;left:1rem;bottom:1rem;width:min(320px,calc(100% - 2rem));padding:.9rem 1rem;border-radius:18px;background:rgba(255,253,248,.9);border:1px solid rgba(16,47,76,.1);box-shadow:0 14px 42px rgba(16,47,76,.12)}.boundary-note strong{color:var(--gis-blue)}.boundary-note p{margin:.3rem 0 0;color:#697b8c;font-size:.84rem;line-height:1.65}.leaflet-container{font:inherit}.leaflet-control-layers,.leaflet-bar{border:1px solid rgba(16,47,76,.12)!important;box-shadow:0 10px 24px rgba(16,47,76,.12)!important}.leaflet-bar a{color:var(--gis-blue)!important}.leaflet-control-attribution{font-size:.7rem!important;background:rgba(255,255,255,.72)!important}
.map-photo-pin-icon{background:transparent;border:0}.map-photo-pin{position:relative;display:block;width:92px;height:78px;filter:drop-shadow(0 18px 26px rgba(16,47,76,.22));transform:translateZ(0);transition:transform .18s var(--gis-ease),filter .18s var(--gis-ease)}.map-photo-pin__frame{position:absolute;inset:0 0 14px 0;display:grid;place-items:center;overflow:hidden;border:3px solid #fff;border-radius:18px;background:#fff;box-shadow:inset 0 0 0 1px rgba(16,47,76,.12)}.map-photo-pin__img{width:100%;height:100%;object-fit:cover;display:block}.map-photo-pin__frame b{position:absolute;inset:auto 0 .4rem;display:none;text-align:center;color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.42)}.map-photo-pin__frame--fallback{background:linear-gradient(135deg,var(--marker-color),#102f4c)}.map-photo-pin__frame--fallback b{display:block}.map-photo-pin__tail{position:absolute;left:50%;bottom:1px;width:24px;height:24px;background:#fff;transform:translateX(-50%) rotate(45deg);border-radius:0 0 7px 0;box-shadow:2px 2px 0 rgba(16,47,76,.08)}.map-photo-pin__dot{position:absolute;right:-5px;bottom:12px;width:18px;height:18px;border-radius:50%;background:var(--marker-color);border:3px solid #fff;box-shadow:0 8px 18px rgba(16,47,76,.22)}.map-photo-pin:hover,.leaflet-marker-icon.is-active .map-photo-pin{transform:translateY(-4px) scale(1.04);filter:drop-shadow(0 24px 34px rgba(16,47,76,.3))}.leaflet-marker-icon.is-active .map-photo-pin__frame{box-shadow:0 0 0 5px rgba(111,183,222,.24),inset 0 0 0 1px rgba(16,47,76,.18)}.gis-simple-mode .map-photo-pin{width:86px;height:72px}.gis-pro-mode .map-photo-pin{width:76px;height:66px}.gis-pro-mode .map-photo-pin__frame{border-radius:16px}.map-photo-pin__img.is-error{display:none}
.place-panel,.point-list-panel{position:relative;z-index:2;overflow:auto;min-width:0;background:rgba(255,253,248,.95);border-left:1px solid rgba(16,47,76,.1)}.place-panel{display:block}.place-empty{height:100%;min-height:360px;display:grid;align-content:center;justify-items:start;padding:clamp(1.1rem,2vw,1.6rem);color:#687b8d}.place-empty span{font-size:.74rem;font-weight:900;letter-spacing:.16em;color:#7b8c9c}.place-empty h2{margin:.5rem 0;color:var(--gis-blue);font-size:1.4rem;letter-spacing:-.03em}.place-empty p{margin:0;line-height:1.8}.place-card{display:block;min-height:100%;background:transparent}.place-photo-frame{position:relative;margin:0;background:#fff;border-bottom:1px solid rgba(16,47,76,.1);overflow:hidden}.place-photo-frame img{display:block;width:100%;height:auto;max-height:min(45dvh,360px);object-fit:contain;background:#fff}.place-photo-frame.is-loading::after{content:"";position:absolute;right:1rem;top:1rem;width:24px;height:24px;border-radius:50%;border:2px solid rgba(16,47,76,.14);border-top-color:var(--gis-blue);animation:mapSpin .8s linear infinite}.place-photo-frame.is-error{min-height:160px;background:linear-gradient(135deg,#fff,#f3ede2)}.place-photo-frame.is-error::before{content:"照片暫時無法載入";position:absolute;inset:0;display:grid;place-items:center;color:#728394;font-weight:900}.photo-expand-button{position:absolute;right:1rem;bottom:1rem;height:42px;display:inline-flex;align-items:center;gap:.4rem;border:0;border-radius:999px;background:var(--gis-blue);color:#fff;box-shadow:0 12px 28px rgba(16,47,76,.25);padding:0 1rem;font-weight:900;cursor:pointer;transition:transform .18s var(--gis-ease),background .18s var(--gis-ease)}.photo-expand-button::before{content:"+";font-size:1.05rem}.photo-expand-button:hover{transform:translateY(-1px);background:#0c2942}.place-card__body{padding:clamp(1rem,2.2vw,1.45rem)}.place-card__meta{display:flex;align-items:center;justify-content:space-between;gap:.7rem;margin-bottom:.75rem}.place-card__meta span{display:inline-flex;padding:.34rem .65rem;border-radius:999px;background:color-mix(in srgb,var(--category-color) 12%,#fff);border:1px solid color-mix(in srgb,var(--category-color) 22%,transparent);color:var(--gis-blue);font-size:.82rem;font-weight:900}.place-card__meta small{color:#6d7e8f;font-weight:850}.place-card h2{margin:0 0 .7rem;color:var(--gis-blue);font-size:clamp(1.25rem,2vw,1.55rem);letter-spacing:-.03em}.place-card p{margin:0;color:#5f7183;line-height:1.9}.place-note{margin-top:.85rem!important;padding:.85rem 1rem;border-left:3px solid rgba(184,74,59,.4);border-radius:14px;background:rgba(184,74,59,.05)}.place-data{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.62rem;margin:1rem 0 0}.place-data div{padding:.85rem;border:1px solid rgba(16,47,76,.09);border-radius:16px;background:#fff}.place-data dt{color:#788898;font-size:.72rem;font-weight:900;letter-spacing:.08em}.place-data dd{margin:.28rem 0 0;color:var(--gis-blue);font-size:.9rem;font-weight:900;line-height:1.45;overflow-wrap:anywhere}.place-actions{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:1rem}.place-actions a,.place-actions button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:999px;border:1px solid rgba(16,47,76,.13);background:#fff;color:var(--gis-blue);text-decoration:none;padding:0 1rem;font-weight:950;cursor:pointer}.place-actions a{background:var(--gis-blue);color:#fff;border-color:transparent}.place-actions a::before{content:"";width:22px;height:22px;background:url('/assets/google-maps-logo.svg') center/contain no-repeat;flex:0 0 auto}.place-actions a:hover,.place-actions button:hover{transform:translateY(-1px)}.place-actions--simple a{width:100%}
.point-list-panel{display:none}.gis-pro-mode .point-list-panel{display:block}.point-list-head{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;gap:1rem;align-items:start;padding:1rem;border-bottom:1px solid rgba(16,47,76,.09);background:rgba(255,253,248,.96);backdrop-filter:blur(10px)}.point-list-head h2{margin:.15rem 0 0;color:var(--gis-blue);font-size:1rem}.point-list-head small{display:inline-flex;min-width:42px;justify-content:center;padding:.32rem .62rem;border-radius:999px;background:rgba(16,47,76,.06);color:#5f7183;font-weight:900}.point-list{display:grid;gap:.55rem;padding:1rem}.point-list-item{display:flex;gap:.72rem;align-items:center;width:100%;text-align:left;border:1px solid rgba(16,47,76,.1);border-radius:18px;background:#fff;padding:.78rem;cursor:pointer;color:var(--gis-blue);transition:background .18s var(--gis-ease),border-color .18s var(--gis-ease),transform .18s var(--gis-ease)}.point-list-item:hover,.point-list-item.is-active{background:#f8fbfc;border-color:rgba(16,47,76,.2);transform:translateY(-1px)}.point-list-item__dot{width:16px;height:16px;border-radius:50%;background:var(--point-color);box-shadow:0 0 0 7px color-mix(in srgb,var(--point-color) 12%,transparent);flex:0 0 auto}.point-list-item__body{display:grid;gap:.16rem;min-width:0}.point-list-item__body strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.point-list-item__body small{color:#6d7d8e;line-height:1.4}.point-list-empty{padding:1rem;color:#6b7d8e;line-height:1.7}
.place-modal,.image-lightbox{position:fixed;inset:0;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .22s var(--gis-ease),visibility .22s var(--gis-ease)}.place-modal{z-index:1600}.image-lightbox{z-index:1700}.place-modal[aria-hidden="false"],.image-lightbox[aria-hidden="false"]{opacity:1;visibility:visible;pointer-events:auto}.place-modal__backdrop,.image-lightbox__backdrop{position:absolute;inset:0;background:rgba(4,12,20,.5);backdrop-filter:blur(10px)}.place-modal__dialog{position:absolute;left:50%;bottom:clamp(.6rem,2vw,1.4rem);width:min(560px,calc(100% - 1.2rem));max-height:calc(100dvh - 2rem);overflow:auto;transform:translateX(-50%) translateY(18px);border-radius:28px;background:#fffdf8;box-shadow:0 30px 90px rgba(0,0,0,.25);transition:transform .22s var(--gis-ease)}.place-modal[aria-hidden="false"] .place-modal__dialog{transform:translateX(-50%) translateY(0)}.place-modal__close,.image-lightbox__close{position:absolute;right:1rem;top:1rem;z-index:2;width:44px;height:44px;border:0;border-radius:16px;background:rgba(255,255,255,.92);color:var(--gis-blue);font-size:1.6rem;line-height:1;cursor:pointer;box-shadow:0 10px 24px rgba(16,47,76,.14)}.place-card--modal .place-photo-frame img{max-height:42dvh}.image-lightbox__dialog{position:absolute;inset:clamp(.8rem,3vw,2rem);display:grid;place-items:center}.image-lightbox img{display:block;max-width:100%;max-height:100%;object-fit:contain;border-radius:22px;background:#fff;box-shadow:0 30px 90px rgba(0,0,0,.34);opacity:0;transition:opacity .2s ease}.image-lightbox img.is-loaded{opacity:1}.gis-toast{position:fixed;left:50%;bottom:1.2rem;z-index:1800;transform:translateX(-50%) translateY(16px);opacity:0;border-radius:999px;background:#102f4c;color:#fff;box-shadow:0 18px 46px rgba(16,47,76,.22);padding:.8rem 1rem;font-weight:900;transition:opacity .2s ease,transform .2s ease}.gis-toast.is-visible{opacity:1;transform:translateX(-50%) translateY(0)}
body.is-modal-open,body.is-lightbox-open{overflow:hidden}
@media (min-width:1500px){.gis-shell,.gis-app{width:min(1640px,calc(100% - 5rem))}.gis-stage{min-height:780px}.hudong-map{min-height:780px}.place-photo-frame img{max-height:420px}.map-photo-pin{width:98px;height:82px}.gis-simple-mode .map-photo-pin{width:92px;height:76px}}
@media (max-width:1180px){.gis-shell{grid-template-columns:1fr}.gis-toolbar{grid-template-columns:1fr}.mode-switch{justify-self:start}.gis-toolbox{display:grid}.gis-insights{grid-template-columns:1fr}.gis-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.gis-stage,.gis-pro-mode .gis-stage{grid-template-columns:minmax(0,1fr) minmax(300px,360px)}.gis-pro-mode .point-list-panel{display:none}.hudong-map{min-height:620px}}
@media (max-width:860px){.gis-shell,.gis-app{width:calc(100% - 1.2rem)}.gis-hero{padding-top:1.4rem}.gis-copy h1{font-size:2.4rem}.gis-app{padding:.75rem;border-radius:26px}.gis-toolbar{padding-bottom:.75rem}.gis-toolbox{gap:.65rem}.toolbar-actions{justify-content:flex-start}.mode-switch{width:100%;display:grid;grid-template-columns:1fr 1fr;border-radius:20px}.mode-button{text-align:center;border-radius:16px}.gis-mode-note{align-items:flex-start}.gis-stage,.gis-pro-mode .gis-stage{display:block;min-height:0;border-radius:24px}.hudong-map{height:64dvh;min-height:440px}.place-panel{display:none}.boundary-note{font-size:.86rem}.map-photo-pin,.gis-simple-mode .map-photo-pin,.gis-pro-mode .map-photo-pin{width:74px;height:64px}.map-photo-pin__frame{border-width:2px;border-radius:15px}.map-photo-pin__dot{width:15px;height:15px}.map-photo-pin__tail{width:20px;height:20px}.place-actions--simple a{width:auto}.point-list-panel{display:block;border-left:0;border-top:1px solid rgba(16,47,76,.1);max-height:320px}.gis-pro-mode .point-list-panel{display:block}.gis-stats,.map-legend{grid-template-columns:1fr}.place-data{grid-template-columns:1fr}}
@media (max-width:560px){.gis-shell,.gis-app{width:calc(100% - .8rem)}.gis-app{border-radius:22px;padding:.55rem}.gis-toolbar{gap:.75rem}.toolbar-title strong{font-size:1.12rem}.toolbar-title small{font-size:.86rem}.mode-button{padding:.62rem .45rem}.mode-button small{display:none}.gis-search{min-width:0;width:100%}.toolbar-actions{display:grid;grid-template-columns:1fr;width:100%}.category-filter{display:grid;grid-template-columns:1fr 1fr}.filter-chip,.map-control-button{width:100%;padding:0 .6rem}.gis-mode-note{display:block;font-size:.9rem;border-radius:18px}.gis-mode-note span{display:block;margin-top:.25rem}.hudong-map{height:62dvh;min-height:380px}.boundary-note{left:.6rem;bottom:.6rem;width:calc(100% - 1.2rem);padding:.75rem}.boundary-note p{display:none}.map-photo-pin,.gis-simple-mode .map-photo-pin,.gis-pro-mode .map-photo-pin{width:66px;height:58px}.place-modal__dialog{border-radius:24px}.place-modal__close,.image-lightbox__close{right:.7rem;top:.7rem}.place-card__body{padding:1rem}.place-photo-frame img{max-height:38dvh}.image-lightbox__dialog{inset:.6rem}.image-lightbox img{border-radius:16px}.gis-toast{width:calc(100% - 1.5rem);text-align:center}}
@media (prefers-reduced-motion:reduce){.map-photo-pin,.mode-button,.filter-chip,.map-control-button,.point-list-item,.photo-expand-button,.place-modal,.image-lightbox,.gis-toast{transition:none!important}.hudong-map::after,.place-photo-frame.is-loading::after{animation:none!important}}


.route-section{margin:.9rem 0 1rem;padding:clamp(.9rem,1.8vw,1.15rem);border:1px solid rgba(16,47,76,.08);border-radius:26px;background:linear-gradient(135deg,rgba(255,255,255,.86),rgba(244,250,247,.78));box-shadow:0 20px 60px rgba(16,47,76,.06)}
.route-section__head{display:grid;gap:.22rem;margin-bottom:.8rem}.route-section__head span{font-size:.72rem;letter-spacing:.16em;font-weight:950;color:#7b8d9d}.route-section__head h2{margin:0;color:var(--gis-blue);font-size:1.18rem;letter-spacing:-.03em}.route-section__head p{margin:0;color:#647789;line-height:1.7}.route-panel{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.72rem}.route-card{min-height:116px;text-align:left;border:1px solid rgba(16,47,76,.1);border-radius:22px;background:#fff;color:var(--gis-blue);padding:.95rem;cursor:pointer;box-shadow:0 10px 28px rgba(16,47,76,.05);transition:transform .18s var(--gis-ease),border-color .18s var(--gis-ease),background .18s var(--gis-ease)}.route-card small{display:block;margin-bottom:.38rem;color:#718393;font-size:.72rem;font-weight:900;letter-spacing:.05em}.route-card strong{display:block;font-size:1rem;letter-spacing:-.02em}.route-card span{display:block;margin-top:.38rem;color:#657789;line-height:1.55;font-size:.88rem}.route-card:hover,.route-card.is-active{transform:translateY(-2px);border-color:rgba(64,111,85,.36);background:#f7fbf7}.route-card.is-active{box-shadow:0 16px 42px rgba(16,47,76,.1),inset 0 3px 0 #416f55}
.map-photo-pin{width:68px!important;height:70px!important;filter:drop-shadow(0 12px 20px rgba(16,47,76,.22))}.map-photo-pin__frame{inset:0 0 14px 0!important;border-radius:17px!important;border:3px solid #fff!important;background:#fff!important;box-shadow:0 0 0 1px rgba(16,47,76,.14),0 8px 18px rgba(16,47,76,.14)!important}.map-photo-pin__img{width:100%!important;height:100%!important;object-fit:cover!important;filter:none!important;opacity:1!important}.map-photo-pin__tail{bottom:2px!important;width:20px!important;height:20px!important;border-radius:0 0 6px 0!important}.map-photo-pin__dot{right:-4px!important;bottom:13px!important;width:14px!important;height:14px!important;border:2px solid #fff!important}.map-photo-pin:hover,.leaflet-marker-icon.is-active .map-photo-pin{transform:translateY(-2px)!important;filter:drop-shadow(0 16px 24px rgba(16,47,76,.26))!important}.leaflet-marker-icon.is-active .map-photo-pin__frame{box-shadow:0 0 0 4px rgba(64,111,85,.22),0 10px 24px rgba(16,47,76,.2)!important}.gis-pro-mode .map-photo-pin{width:62px!important;height:64px!important}.gis-simple-mode .map-photo-pin{width:68px!important;height:70px!important}
.photo-expand-button{right:.85rem!important;bottom:.85rem!important;width:50px!important;height:50px!important;padding:0!important;border-radius:999px!important;background:rgba(16,47,76,.88)!important;backdrop-filter:blur(8px);box-shadow:0 14px 32px rgba(16,47,76,.28)!important}.photo-expand-button::before{content:""!important}.photo-expand-button span{position:relative;width:22px;height:22px;display:block}.photo-expand-button span::before,.photo-expand-button span::after{content:"";position:absolute;inset:0;background:linear-gradient(#fff,#fff) left top/8px 2px no-repeat,linear-gradient(#fff,#fff) left top/2px 8px no-repeat,linear-gradient(#fff,#fff) right top/8px 2px no-repeat,linear-gradient(#fff,#fff) right top/2px 8px no-repeat,linear-gradient(#fff,#fff) left bottom/8px 2px no-repeat,linear-gradient(#fff,#fff) left bottom/2px 8px no-repeat,linear-gradient(#fff,#fff) right bottom/8px 2px no-repeat,linear-gradient(#fff,#fff) right bottom/2px 8px no-repeat}.photo-expand-button:hover{background:#102f4c!important;transform:translateY(-1px) scale(1.02)!important}
.maps-action{background:#12385f!important;color:#fff!important;border-color:transparent!important;box-shadow:0 14px 34px rgba(16,47,76,.2)!important}.maps-action::before{display:none!important}.maps-action img{width:25px;height:25px;object-fit:contain;display:block;background:transparent!important;border-radius:0!important}.maps-action span{line-height:1}.place-actions--simple .maps-action{width:100%}.place-route-list{display:flex;flex-wrap:wrap;gap:.45rem;margin:.9rem 0 0}.place-route-badge{display:inline-flex;align-items:center;min-height:32px;padding:0 .72rem;border-radius:999px;text-decoration:none;background:#eef6ef;color:#315e40;font-weight:900;font-size:.82rem}.place-qr{display:grid;grid-template-columns:86px minmax(0,1fr);gap:.8rem;align-items:center;margin:1rem 0 0;padding:.78rem;border:1px solid rgba(16,47,76,.1);border-radius:18px;background:#fff}.place-qr img{display:block;width:86px;height:86px;border-radius:12px}.place-qr strong{display:block;color:var(--gis-blue);font-size:.94rem}.place-qr span{display:block;margin:.16rem 0 .48rem;color:#66788a;font-size:.84rem;line-height:1.45}.place-qr button{min-height:34px;border:1px solid rgba(16,47,76,.12);border-radius:999px;background:#f6f8f7;color:var(--gis-blue);font-weight:900;cursor:pointer;padding:0 .75rem}
.image-lightbox__backdrop{background:rgba(5,13,20,.62)!important;backdrop-filter:blur(12px)!important}.image-lightbox__dialog{inset:0!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:clamp(1rem,4vw,3rem)!important;overflow:hidden!important}.image-lightbox img{width:auto!important;height:auto!important;max-width:min(1120px,calc(100vw - 7rem))!important;max-height:calc(100dvh - 6rem)!important;object-fit:contain!important;border-radius:20px!important;background:#fff!important}.image-lightbox__close{right:clamp(1rem,2vw,2rem)!important;top:clamp(1rem,2vw,2rem)!important;border-radius:999px!important;background:#fff!important;color:#102f4c!important}
@media (max-width:1180px){.route-panel{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){.route-panel{grid-template-columns:1fr}.route-card{min-height:auto}.map-photo-pin,.gis-simple-mode .map-photo-pin,.gis-pro-mode .map-photo-pin{width:62px!important;height:64px!important}.image-lightbox img{max-width:calc(100vw - 1.5rem)!important;max-height:calc(100dvh - 5rem)!important}.place-qr{grid-template-columns:74px minmax(0,1fr)}.place-qr img{width:74px;height:74px}}


.gis-app,
.gis-stage,
.hudong-map,
.place-panel,
.point-list-panel,
.route-section{
  contain:layout paint;
}
.leaflet-container,
.map-photo-pin,
.place-modal__dialog,
.image-lightbox img,
.gis-toast{
  backface-visibility:hidden;
  transform-style:preserve-3d;
}
.hudong-map{
  isolation:isolate;
}
.leaflet-marker-icon{
  will-change:transform;
}
@media (max-width:700px),(pointer:coarse){
  .map-photo-pin:hover,
  .leaflet-marker-icon.is-active .map-photo-pin,
  .route-card:hover,
  .point-list-item:hover{
    transform:none!important;
  }
}
:where(a,button,input,summary,[tabindex]){outline-offset:4px}
:where(a,button,summary,.hero-button,.page-actions a,.map-pill,.search-result,.drawer-link,.drawer-sublist a){-webkit-tap-highlight-color:transparent;touch-action:manipulation}
:where(img,svg,video,canvas){max-width:100%}
:where(img){height:auto;content-visibility:auto}
:where(.site-header,.mobile-drawer__panel,.site-search__panel){transform:translateZ(0)}
:where(.main-nav__link,.icon-button,.map-pill,.hero-button,.page-actions a,.search-result,.drawer-sublist a){will-change:transform}
:where(.main-nav__link,.icon-button,.map-pill,.hero-button,.page-actions a,.search-result,.drawer-sublist a):active{transform:translateY(1px) scale(.99)}
@supports (scrollbar-gutter:stable){html{scrollbar-gutter:stable}}
@media (prefers-reduced-motion:no-preference){:where(.site-header,.site-footer,.page-card,.field-photo,.weather-slot,.transport-stop){backface-visibility:hidden}}
.place-actions a::before{display:none!important}
.map-photo-pin__photo{background-position:center;background-size:cover;background-repeat:no-repeat}
.photo-expand-button::before{display:none!important}
.place-photo-frame{min-height:clamp(240px,38dvh,390px);background-position:center;background-size:contain;background-repeat:no-repeat;cursor:zoom-in}
.place-card--modal .place-photo-frame{min-height:min(42dvh,390px)}
.image-lightbox__photo{width:min(1120px,calc(100vw - 7rem));height:calc(100dvh - 6rem);background-position:center;background-size:contain;background-repeat:no-repeat;opacity:0;transition:opacity .2s ease}
.image-lightbox__photo.is-loaded{opacity:1}
.leaflet-control-zoom-in,.leaflet-control-zoom-out{font-family:var(--font-sans)!important;font-size:0!important;font-weight:500!important}
.leaflet-control-zoom-in::before{content:"+";font-size:25px;line-height:1}.leaflet-control-zoom-out::before{content:"−";font-size:25px;line-height:1}
.leaflet-control-layers-toggle{position:relative;display:grid!important;place-items:center;background-image:none!important;font-size:0}
.leaflet-control-layers-toggle::before,.leaflet-control-layers-toggle::after{content:"";position:absolute;width:15px;height:10px;border:1.7px solid #17324a;border-radius:2px;transform:rotate(-4deg)}
.leaflet-control-layers-toggle::after{transform:translateY(4px) rotate(-4deg);background:#fff}
:where(.mode-switch,.mode-button,.gis-search button,.filter-chip,.map-control-button,.photo-expand-button,.place-card__meta span,.place-actions a,.place-actions button,.point-list-head small,.gis-toast,.place-route-badge,.place-qr button,.image-lightbox__close){border-radius:8px!important}
@media (max-width:560px){.image-lightbox__photo{width:calc(100vw - 1.5rem);height:calc(100dvh - 5rem)}}
