.map-spinner{width:34px;height:34px;border-radius:50%;border:3px solid var(--color-sand-300);border-top-color:var(--color-terracotta);animation:map-spin .8s linear infinite}@keyframes map-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.map-spinner{animation-duration:1.6s}}.mk{width:16px;height:16px;border-radius:50%;background:var(--color-terracotta);border:2px solid #fff;box-shadow:0 1px 4px #00000059;cursor:pointer;padding:0;transition:transform .15s ease,background-color .15s ease}.mk-active{background:var(--color-sea-deep);transform:scale(1.65);z-index:3}#rail-wrap{transition:transform .32s cubic-bezier(.32,.72,0,1),opacity .25s ease}#rail-wrap.rail-hidden{transform:translateY(160%);opacity:0;pointer-events:none}#rail{gap:.6rem;padding-inline:8%;scroll-padding-inline:8%;touch-action:pan-x;overscroll-behavior:contain}.rail-card{flex:0 0 84%;scroll-snap-align:center;display:flex;gap:.7rem;align-items:stretch;background:#fff;border-radius:1rem;box-shadow:0 8px 28px #14120f33;padding:.45rem;text-align:left;overflow:hidden;transition:transform .12s ease}.rail-card:active{transform:scale(.98)}.rail-thumb{flex:0 0 4.5rem;width:4.5rem;height:4.5rem;border-radius:.7rem;overflow:hidden;background:var(--color-sand-200);display:grid;place-items:center}.rail-thumb img{width:100%;height:100%;object-fit:cover}.rail-thumb-fallback{font-size:1.5rem}.rail-body{min-width:0;flex:1;display:flex;flex-direction:column;justify-content:center;padding-right:.4rem}.rail-name{font-family:var(--font-display);font-weight:600;font-size:1.05rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rail-town{margin-top:.1rem;font-size:.8rem;color:var(--color-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rail-meta{margin-top:.25rem;font-size:.8rem;font-weight:600;color:var(--color-sea-deep)}.sheet-scrim{background:#14120f73;opacity:0;transition:opacity .3s ease}.sheet-scrim.show{opacity:1}.sheet{display:flex;flex-direction:column;max-height:84%;background:var(--color-sand-50);border-radius:1.4rem 1.4rem 0 0;box-shadow:0 -10px 40px #14120f40;transform:translateY(101%);transition:transform .34s cubic-bezier(.32,.72,0,1);overflow:hidden}.sheet.show{transform:translateY(0)}.sheet-handle{flex:0 0 auto;height:1.7rem;width:100%;position:relative;background:transparent;border:0;cursor:grab;touch-action:none}.sheet-handle:before{content:"";position:absolute;left:50%;top:.55rem;width:2.25rem;height:.28rem;border-radius:999px;background:var(--color-sand-300);transform:translate(-50%)}.sheet-scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior:contain}.sheet-hero{position:relative;aspect-ratio:16 / 10;background:var(--color-sand-200)}.sheet-hero img{width:100%;height:100%;object-fit:cover}.sheet-hero-fallback{display:grid;place-items:center;height:100%;font-size:3rem}.sheet-x{position:absolute;top:.6rem;right:.6rem;display:grid;place-items:center;height:2rem;width:2rem;border-radius:999px;background:#0006;color:#fff;backdrop-filter:blur(4px)}.sheet-body{padding:.9rem 1.1rem .4rem}.sheet-type{font-size:.8rem;color:var(--color-muted)}.sheet-name{font-size:1.6rem;font-weight:600;line-height:1.15;letter-spacing:-.01em}.sheet-meta{margin-top:.3rem;font-size:.92rem;color:var(--color-ink-soft)}.sheet-blurb{margin-top:.6rem;font-size:.95rem;line-height:1.5;color:var(--color-ink-soft)}.sheet-chips{margin-top:.7rem;display:flex;flex-wrap:wrap;gap:.4rem}.sheet-chip{border-radius:999px;background:var(--color-sand-100);padding:.25rem .65rem;font-size:.78rem;color:var(--color-ink-soft)}.sheet-actions{flex:0 0 auto;display:flex;gap:.55rem;align-items:center;padding:.75rem 1.1rem;border-top:1px solid var(--color-sand-200);background:var(--color-sand-50)}.sheet-btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;height:2.9rem;border-radius:.9rem;font-size:.95rem;font-weight:600;transition:transform .12s ease}.sheet-btn:active{transform:scale(.97)}.sheet-btn-primary{flex:1;background:var(--color-terracotta);color:#fff}.sheet-btn-ghost{flex:1;border:1px solid var(--color-sand-300);color:var(--color-ink)}.sheet-btn-save{width:2.9rem;flex:0 0 auto;border:1px solid var(--color-sand-300);color:var(--color-ink)}
