@import "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,700&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,400&display=swap";:root{--ink:#f3ece2;--ink-muted:#a89f92;--amber:#e8a54b;--amber-hot:#ffb347;--panel:#0c1016eb;--panel-border:#e8a54b47;--past:#c9a36a;--future:#8a9bb0;--shadow:0 18px 50px #00000073;--font-display:"Fraunces", Georgia, serif;--font-body:"DM Sans", system-ui, sans-serif}*,:before,:after{box-sizing:border-box}html,body,#app{height:100%;color:var(--ink);font-family:var(--font-body);background:#0d1218;margin:0}body{overflow:hidden}.app-shell{width:100%;height:100%;position:relative;overflow:hidden}.map-canvas{z-index:0;position:absolute;inset:0}.map-veil{pointer-events:none;z-index:1;background:linear-gradient(#080a0eb8 0%,#080a0e14 18%,#0000 32%),linear-gradient(#0000 58%,#080a0e59 78%,#080a0ee0 100%);position:absolute;inset:0}.brand-bar{z-index:3;pointer-events:none;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.25rem 1.5rem 0;display:flex;position:absolute;top:0;left:0;right:0}.brand-block,.brand-actions{pointer-events:auto}.brand-name{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);text-shadow:0 2px 24px #0000008c;margin:0;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;line-height:1.05;animation:.9s ease-out both brandIn}.brand-sub{color:var(--ink-muted);max-width:28rem;margin:.35rem 0 0;font-size:.95rem;animation:.9s ease-out .12s both brandIn}.brand-actions{flex-direction:column;align-items:flex-end;gap:.6rem;display:flex}.live-status{border:1px solid var(--panel-border);color:var(--amber-hot);letter-spacing:.02em;background:#0c1016b3;border-radius:999px;margin:0;padding:.35rem .7rem;font-size:.8rem;font-weight:500}.replay-btn{appearance:none;border:1px solid var(--panel-border);color:var(--ink);font:inherit;cursor:pointer;background:#14181ed9;border-radius:999px;padding:.55rem .95rem;font-size:.85rem;font-weight:500;transition:background .18s,border-color .18s,transform .18s}.replay-btn:hover{border-color:var(--amber);background:#282014f2;transform:translateY(-1px)}.bottom-dock{z-index:3;padding:0 0 calc(.75rem + env(safe-area-inset-bottom,0px));pointer-events:none;flex-direction:column;gap:.45rem;display:flex;position:absolute;bottom:0;left:0;right:0}.bottom-dock>*{pointer-events:auto}.moments{padding:0 1rem}.moments-head{justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.35rem;display:flex}.moments-title{font-family:var(--font-display);color:var(--ink);text-shadow:0 1px 12px #0000008c;margin:0;font-size:1rem}.moments-hint{color:var(--ink-muted);margin:0;font-size:.72rem}.moments-rail{scrollbar-gutter:stable;scrollbar-width:auto;scrollbar-color:var(--amber) #ffffff14;cursor:grab;touch-action:pan-x;overscroll-behavior-x:contain;gap:.45rem;padding-bottom:.45rem;display:flex;overflow:auto hidden}.moments-rail.is-dragging,.timeline.is-dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.moments-rail.is-dragging .moment-card,.timeline.is-dragging .timeline-stop{pointer-events:none}.moments-rail::-webkit-scrollbar{height:10px}.timeline::-webkit-scrollbar{height:10px}.moments-rail::-webkit-scrollbar-thumb{background:var(--amber);border-radius:999px}.timeline::-webkit-scrollbar-thumb{background:var(--amber);border-radius:999px}.moments-rail::-webkit-scrollbar-track{background:#ffffff0f;border-radius:999px}.timeline::-webkit-scrollbar-track{background:#ffffff0f;border-radius:999px}.moment-card{cursor:pointer;background:#1a2028;border:1px solid #ffffff24;border-radius:12px;flex:none;width:4.6rem;height:4.6rem;padding:0;transition:transform .18s,border-color .18s;position:relative;overflow:hidden}.moment-card.is-active{border-color:var(--amber-hot);box-shadow:0 0 0 2px #ffb34759}.moment-card:hover{border-color:var(--amber);transform:translateY(-2px)}.moment-card img{object-fit:cover;width:100%;height:100%;display:block}.moment-place{color:#fff;text-align:left;background:linear-gradient(#0000,#000000bf);padding:.2rem .3rem;font-size:.58rem;font-weight:600;position:absolute;bottom:0;left:0;right:0}.timeline{scrollbar-width:auto;scrollbar-color:var(--amber) #ffffff14;cursor:grab;touch-action:pan-x;overscroll-behavior-x:contain;gap:.45rem;padding:0 1rem .35rem;display:flex;overflow:auto hidden}.timeline-stop{min-width:10.5rem;color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:#0c1016e0;border:1px solid #ffffff14;border-radius:14px;flex:none;align-items:center;gap:.55rem;padding:.4rem .7rem .4rem .4rem;transition:border-color .18s,transform .18s,background .18s;display:flex}.timeline-stop:hover,.timeline-stop.is-selected{border-color:var(--amber);background:#18140eeb;transform:translateY(-2px)}.timeline-thumb{background:linear-gradient(145deg, #e8a54b59, #0c101633), var(--thumb,#2a3444);background-position:50%;background-size:cover;border-radius:10px;flex-shrink:0;width:2.55rem;height:2.55rem;box-shadow:inset 0 0 0 1px #ffffff14}.timeline-stop.phase-current .timeline-thumb{animation:1.8s ease-in-out infinite pulse;box-shadow:inset 0 0 0 1px #ffb34773,0 0 0 3px #ffb34738}.timeline-stop:not(.has-media) .timeline-thumb{background:radial-gradient(circle at 40% 35%,#4a5568,#1c2430)}.timeline-meta{flex-direction:column;gap:.12rem;min-width:0;display:flex}.timeline-place{align-items:center;gap:.35rem;font-size:.92rem;font-weight:600;display:inline-flex}.timeline-badge{min-width:1.15rem;height:1.15rem;color:var(--amber-hot);background:#e8a54b38;border-radius:999px;justify-content:center;align-items:center;padding:0 .3rem;font-size:.65rem;font-weight:700;display:inline-flex}.timeline-dates{color:var(--ink-muted);font-size:.72rem}.gallery-count{color:var(--ink-muted);letter-spacing:.04em;text-transform:uppercase;margin:1rem 0 0;font-size:.78rem;font-weight:600}.stop-panel{z-index:4;border:1px solid var(--panel-border);background:var(--panel);width:min(24rem,100vw - 2rem);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:18px;padding:1.25rem 1.2rem 1.5rem;transition:transform .28s,opacity .28s;position:absolute;top:6.5rem;bottom:12.5rem;right:1rem;overflow:auto;transform:translate(1.25rem)}.stop-panel.is-open{opacity:1;transform:translate(0)}.panel-close{appearance:none;color:var(--ink-muted);cursor:pointer;background:0 0;border:0;font-size:1.5rem;line-height:1;position:absolute;top:.7rem;right:.8rem}.panel-phase{letter-spacing:.08em;text-transform:uppercase;color:var(--future);margin:0 0 .35rem;font-size:.75rem;font-weight:600}.panel-phase.phase-current{color:var(--amber-hot)}.panel-phase.phase-past{color:var(--past)}.panel-place{font-family:var(--font-display);margin:0;font-size:2rem;line-height:1.1}.panel-hotel,.panel-dates,.panel-blurb,.panel-address,.panel-empty-media{margin:.45rem 0 0}.panel-hotel{color:var(--amber);font-weight:500}.panel-dates{color:var(--ink-muted);font-size:.9rem}.panel-blurb{margin-top:.9rem;line-height:1.45}.panel-address{color:var(--ink-muted);font-size:.82rem;line-height:1.4}.panel-links{flex-wrap:wrap;gap:.75rem;margin-top:.9rem;display:flex}.panel-links a{color:var(--ink);text-underline-offset:3px;font-size:.85rem}.panel-empty-media{color:var(--ink-muted);margin-top:1.1rem;font-size:.88rem}.gallery{gap:.75rem;margin-top:1.1rem;display:grid}.gallery-item{margin:0}.gallery-item.is-focused{outline:2px solid var(--amber);outline-offset:3px;border-radius:12px}.gallery-item img,.gallery-item video{object-fit:cover;background:#1a2028;border-radius:12px;width:100%;max-height:16rem;display:block}.gallery-item figcaption{color:var(--ink-muted);margin-top:.35rem;font-size:.78rem}.error-screen{text-align:center;place-content:center;gap:.75rem;min-height:100%;padding:2rem;display:grid}.error-screen h1{font-family:var(--font-display);margin:0}.error-screen p{color:var(--ink-muted);max-width:36rem;margin:0;line-height:1.5}.error-screen code{color:var(--amber)}@keyframes pulse{0%,to{box-shadow:0 0 0 4px #ffb34738}50%{box-shadow:0 0 0 8px #ffb34714}}@keyframes brandIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (width<=720px){body{overflow:auto}.app-shell{min-height:100dvh}.brand-bar{flex-direction:column;align-items:stretch;padding:1rem 1rem 0}.brand-actions{flex-flow:wrap;align-items:flex-start}.brand-name{font-size:2rem}.stop-panel{width:auto;max-height:40vh;inset:auto .75rem 11.5rem}.moment-card{width:3.9rem;height:3.9rem}}
