@charset "UTF-8";:root{--cream: #FFFFFF;--terracotta: #C67B5C;--sage: #8B9F82;--ink: #1C3B34;--ink-soft: rgba(28, 59, 52, .55);--hairline: rgba(28, 59, 52, .16);--stamp: var(--terracotta);--danger: #b4462f;--paper: #F2F5F3;--canvas: #E8E2D8;--sign-in-apple: #000;--font-display: "Playfair Display", Georgia, serif;--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "Space Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--text-body: .875rem;--text-meta: .6875rem;--nav-clearance: calc(env(safe-area-inset-bottom, 0px) + 96px) ;--screen-top: calc(env(safe-area-inset-top, 0px) + 56px) ;--ease-smooth: cubic-bezier(.22, 1, .36, 1);--ease-out: cubic-bezier(.17, 1, .32, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-in-out: cubic-bezier(.66, 0, .34, 1);--duration-fast: .15s;--duration-normal: .22s;--duration-slow: .3s;--shadow-elevated: 0 1px 2px rgba(20, 40, 30, .05), 0 4px 12px rgba(20, 40, 30, .06), 0 0 0 .5px var(--hairline)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}input,textarea,select{font-size:16px}body{font-family:var(--font-body);background:var(--canvas);color:var(--ink);overflow-wrap:break-word;touch-action:manipulation;min-height:100vh;min-height:100dvh;display:flex;justify-content:center}app-root{width:100%;max-width:430px;overflow-x:clip;background:var(--cream);min-height:100vh;min-height:100dvh;position:relative;display:flex;flex-direction:column}.font-display{font-family:var(--font-display)}.leaflet-control-attribution{font-size:8px!important;opacity:.5}.icon-glyph svg{display:block;width:100%;height:100%}.voyage-pin{background:none;border:none;cursor:pointer}.voyage-pin-dot{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--stamp);color:#fff;font-family:var(--font-body);font-size:12px;font-weight:700;border:2px solid #fff;box-shadow:var(--shadow-elevated);transition:transform var(--duration-fast) var(--ease-smooth)}.voyage-pin:hover .voyage-pin-dot{transform:scale(1.18)}.voyage-pin:active .voyage-pin-dot{transform:scale(.98)}.leaflet-control-zoom{border:none;border-radius:10px;overflow:hidden;box-shadow:var(--shadow-elevated)}.leaflet-container .leaflet-control-zoom a{width:32px;height:32px;line-height:32px;background:var(--cream);color:var(--ink);font-family:var(--font-body);font-size:17px;font-weight:600;border-bottom:1px solid var(--hairline);transition:background var(--duration-fast) var(--ease-smooth)}.leaflet-container .leaflet-control-zoom a:last-child{border-bottom:none}.leaflet-container .leaflet-control-zoom a:hover{background:var(--paper);color:var(--ink)}.leaflet-container .leaflet-control-zoom a.leaflet-disabled{background:var(--paper);color:var(--ink-soft)}.leaflet-popup-content-wrapper{border-radius:12px;box-shadow:var(--shadow-elevated);background:var(--cream);padding:0;overflow:hidden}.leaflet-popup-content{margin:0}.leaflet-popup-tip{background:var(--cream)}.pin-pop{display:flex;align-items:stretch;gap:0;width:180px;text-decoration:none;color:var(--ink);cursor:pointer}.pin-pop img{width:62px;height:62px;object-fit:cover;flex-shrink:0}.pin-pop--stop{width:160px}.pin-pop-body{padding:8px 10px;min-width:0}.pin-pop-city{font-family:var(--font-display);font-size:13px;font-weight:600;color:var(--stamp)}.pin-pop-title{font-size:var(--text-meta);font-weight:600;margin-top:1px}.pin-pop-meta{font-size:var(--text-meta);opacity:.75;margin-top:2px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.day-flash{animation:dayFlash 1.2s var(--ease-in-out)}@keyframes dayFlash{0%,to{background:transparent}25%{background:#c67b5c24}}@keyframes enter{0%{opacity:0;transform:translateY(6px);filter:blur(2px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}.entering,.fade-up{animation:enter var(--duration-slow) var(--ease-out) both}.loading-label{--glow-base: var(--ink-soft);--glow-peak: var(--ink);background:linear-gradient(90deg,var(--glow-base) 35%,var(--glow-peak) 50%,var(--glow-base) 65%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:label-sweep 2s var(--ease-in-out) infinite alternate}@keyframes label-sweep{0%{background-position:120% 0}to{background-position:-20% 0}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.loading-label{animation:none;background:none;color:var(--glow-base)}}
