:root{--memory-white: #f8fafc;--cloud-white: #f1f5f8;--pearl: #e9eff3;--haze-blue: #e8f1f5;--mist-blue: #dceaf2;--memory-blue: #c9e1ee;--dream-blue: #bbd8e8;--memory-ink: #18232b;--soft-ink: #35454f;--faded-ink: #61707a;--deep-memory: #101a21;--lavender: #e5e1f0;--rose: #f1dfe3;--mint: #ddece8;--info-text: #4d738a;--success-text: #497767;--destructive: #a8575f;--radius-panel: 28px;--spring: cubic-bezier(.2, .8, .2, 1);--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI Variable Text", "Segoe UI", system-ui, sans-serif}html,body.app{height:100%}body.app{margin:0;background:var(--memory-white);color:var(--memory-ink);font-family:var(--font);font-size:17px;line-height:1.45;-webkit-font-smoothing:antialiased;overflow-x:hidden}body.app.memory-open{overflow:hidden}.app [hidden]{display:none!important}.app h1,.app h2,.app h3{font-weight:300;margin:0}.app h2{font-size:1.6rem}.app h3{font-size:1.05rem;font-weight:600;margin-top:1.4rem}.app p{margin:0}.app a{color:var(--info-text)}.app .muted{color:var(--faded-ink)}.app .small{font-size:.9rem}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.mist-bg{position:fixed;inset:-10%;z-index:0;pointer-events:none;filter:blur(20px);animation:mist-drift 90s ease-in-out infinite alternate}.mist-bg span{position:absolute;border-radius:50%}.mist-bg span:nth-child(1){left:18%;top:22%;width:55vw;height:55vw;background:radial-gradient(circle,rgb(220 234 242 / .85),transparent 70%);transform:translate(-50%,-50%)}.mist-bg span:nth-child(2){left:82%;top:30%;width:50vw;height:50vw;background:radial-gradient(circle,rgb(229 225 240 / .8),transparent 70%);transform:translate(-50%,-50%)}.mist-bg span:nth-child(3){left:60%;top:85%;width:60vw;height:60vw;background:radial-gradient(circle,rgb(221 236 232 / .6),transparent 70%);transform:translate(-50%,-50%)}.mist-bg span:nth-child(4){left:30%;top:78%;width:42vw;height:42vw;background:radial-gradient(circle,rgb(241 223 227 / .45),transparent 70%);transform:translate(-50%,-50%)}@keyframes mist-drift{to{transform:scale(1.06) translate(-3%,2%)}}.phase{position:relative;z-index:1;min-height:100svh}.phase--center{display:grid;place-items:center;padding:24px 16px;text-align:center}.milk{background:#f8fafce0;-webkit-backdrop-filter:blur(24px) saturate(1.1);backdrop-filter:blur(24px) saturate(1.1);border:1px solid var(--mist-blue);border-radius:var(--radius-panel);box-shadow:0 12px 24px #18232b0f}.reduce-transparency .milk{background:var(--cloud-white);-webkit-backdrop-filter:none;backdrop-filter:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border-radius:999px;border:1px solid transparent;font:inherit;font-size:1rem;color:var(--memory-ink);text-decoration:none;cursor:pointer;transition:transform .12s var(--spring),background-color .2s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:default}.btn--primary{min-height:52px;background:var(--memory-blue);border-color:#fff9}.btn--primary:hover,.btn--primary:active{background:var(--dream-blue)}.high-contrast .btn--primary{background:var(--deep-memory);color:#fff}.btn--quiet{background:#f8fafcd9;border-color:var(--mist-blue)}.btn--link{background:none;min-height:44px;color:var(--info-text)}.btn--destructive{background:none;color:var(--destructive)}.btn--small{min-height:36px;padding:0 14px;font-size:.9rem;background:#f8fafcd9;border-color:var(--mist-blue)}.app :focus-visible{outline:3px solid var(--info-text);outline-offset:2px}.stack{display:flex;flex-direction:column;gap:12px;text-align:left}.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.eyebrow{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--faded-ink);margin:8px 0 4px}label{font-size:.95rem;color:var(--soft-ink)}.app input[type=text],.app input[type=email]{width:100%;box-sizing:border-box;min-height:50px;padding:0 16px;border-radius:16px;border:1px solid var(--mist-blue);background:var(--memory-white);font:inherit;color:var(--memory-ink)}.app input:focus{border-color:var(--info-text);outline:none}.code-input{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:1.6rem!important;letter-spacing:.35em;text-align:center}.code-input--short{width:12ch!important;font-size:1.2rem!important;letter-spacing:.2em;flex:1 1 auto}.code-input::placeholder{letter-spacing:normal;font-family:var(--font);font-size:1rem}.check{display:flex;gap:10px;align-items:center;min-height:44px;cursor:pointer}.check input{width:20px;height:20px;accent-color:var(--info-text)}.welcome{width:min(440px,100%);padding:32px 24px;box-sizing:border-box}.welcome #w-intro{display:flex;flex-direction:column;gap:16px}.recollected{font-size:2.6rem;animation:recollect 1.4s var(--spring) both}@keyframes recollect{0%{filter:blur(10px);opacity:0;letter-spacing:.25em}to{filter:blur(0);opacity:1;letter-spacing:.02em}}.reduce-motion .recollected{animation-duration:.15s}.lead{color:var(--soft-ink)}.recent{display:flex;flex-direction:column;gap:8px;text-align:left}.recent-row{display:flex;align-items:center;gap:6px;background:#ffffff80;border:1px solid var(--mist-blue);border-radius:18px}.recent-row__main{flex:1;display:flex;gap:12px;align-items:center;min-height:60px;padding:8px 14px;background:none;border:0;font:inherit;color:inherit;text-align:left;cursor:pointer}.recent-row__icon{font-size:1.2rem;color:var(--info-text)}.recent-row__text{display:flex;flex-direction:column}.recent-row__text span{color:var(--faded-ink);font-size:.9rem}.recent-row__forget{background:none;border:0;color:var(--faded-ink);font:inherit;font-size:.85rem;padding:0 14px;min-height:44px;cursor:pointer}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--mist-blue);border-top-color:var(--info-text);animation:spin .9s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.app-status{position:fixed;z-index:60;left:50%;bottom:calc(96px + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(520px,calc(100vw - 32px));padding:12px 18px;border-radius:18px;background:var(--cloud-white);border:1px solid var(--mist-blue);box-shadow:0 12px 24px #18232b14}.app-status[data-kind=error]{color:var(--destructive)}.app-status[data-kind=ok]{color:var(--success-text)}.toolbar{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:calc(10px + env(safe-area-inset-top)) 12px 6px}.toolbar__right{display:flex;gap:4px}.icon-btn{min-width:44px;min-height:44px;border-radius:999px;border:0;background:#f8fafcb3;color:var(--soft-ink);font:inherit;font-size:1.2rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 10px}.toolbar__filter{font-size:.95rem}.toolbar__left{position:relative}.menu{position:absolute;top:50px;left:0;z-index:20;min-width:220px;max-height:calc(100svh - 80px);overflow-y:auto;box-sizing:border-box;padding:8px;display:flex;flex-direction:column}.menu-item{min-height:44px;text-align:left;padding:0 12px;border:0;border-radius:12px;background:none;font:inherit;color:var(--memory-ink);cursor:pointer}.menu-item[aria-checked=true]:after{content:"  ✓";color:var(--info-text)}.menu-item:hover{background:var(--haze-blue)}.library{max-width:720px;margin:0 auto;padding:0 0 140px}.library__title{font-size:2.1rem;padding:4px 24px 20px}.lib-state{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 24px;text-align:center;color:var(--soft-ink)}.lib-state[data-state=ready]{display:none}.lib-state .failure{font-weight:600}.bubble-ghost{width:140px;height:140px;border-radius:46% 54% 50% 50%/52% 48%;background:radial-gradient(circle at 35% 30%,#ffffffe6,#dceaf299 60%,#e5e1f080);opacity:.8;border:1px solid rgb(255 255 255 / .7)}.bubble-field{position:relative;width:100%}.bubble-field[data-zoom="2"]{height:auto}.single-page{min-height:78svh;display:grid;place-items:center;scroll-snap-align:center}.bubble-field[data-zoom="2"] .bubble{position:relative}.bubble{position:absolute;width:var(--d);padding:0;border:0;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--memory-ink);font:inherit;-webkit-tap-highlight-color:transparent}.bubble__shape{position:relative;width:var(--d);height:var(--d);display:block;animation:bubble-float var(--float-s) ease-in-out var(--float-delay) infinite alternate;filter:drop-shadow(0 calc(var(--d) * .04) calc(var(--d) * .06) rgb(24 35 43 / .06));transition:transform .12s var(--spring),opacity .08s ease-out}@keyframes bubble-float{0%{translate:0 -4px;rotate:-.7deg}to{translate:0 4px;rotate:.7deg}}.reduce-motion .bubble__shape{animation:none}.bubble:active .bubble__shape,.bubble:focus-visible .bubble__shape{transform:scale(1.04)}.bubble.is-popped .bubble__shape{opacity:0;transform:scale(1.12)}.bubble:focus-visible{outline:none}.bubble:focus-visible .bubble__rim path{stroke:var(--info-text);stroke-width:2.5}.bubble__body{position:absolute;inset:0;overflow:hidden;background:radial-gradient(circle at 40% 35%,var(--memory-white),var(--mist-blue))}.bubble__photo{position:absolute;inset:-4%;width:108%;height:108%;object-fit:cover;opacity:0;transition:opacity .6s ease-out}.bubble.has-photo .bubble__photo{opacity:.9}.is-waiting .bubble__photo{filter:saturate(0) brightness(.9)}.bubble__film{position:absolute;inset:0;mix-blend-mode:screen;opacity:.5;background:conic-gradient(from var(--film-turn),#f6d2e2,#f3e3b6,#c8eee5,#d0d6f7,#ecd5f2,#f6d2e2);-webkit-mask:radial-gradient(circle,transparent 66%,rgb(0 0 0 / .25) 76%,#000 92%);mask:radial-gradient(circle,transparent 66%,rgb(0 0 0 / .25) 76%,#000 92%)}.bubble__inner{position:absolute;inset:0;box-shadow:inset 0 0 calc(var(--d) * .03) calc(var(--d) * .015) #00000024;border-radius:50%}.bubble__window{position:absolute;width:34%;height:13%;left:14%;top:17%;border-radius:999px;rotate:-38deg;background:linear-gradient(to bottom,#ffffff8c,#ffffff0d)}.bubble__glint{position:absolute;width:12%;height:6%;left:69%;top:76%;border-radius:50%;background:#ffffff59;rotate:-38deg}.bubble__rim{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.bubble__rim path{fill:none;stroke:#fff9;stroke-width:.8}.bubble__label{font-size:1rem;text-align:center;max-width:calc(var(--d) + 40px);line-height:1.25;margin-top:4px}.bubble__status{font-size:.85rem;color:var(--info-text)}.add-bar{position:fixed;z-index:4;left:0;right:0;bottom:0;display:flex;justify-content:center;padding:16px 16px calc(16px + env(safe-area-inset-bottom));background:linear-gradient(to top,#f8fafcf2,#f8fafc00);pointer-events:none}.add-bar .btn{pointer-events:auto;min-width:220px}.pop-layer{position:fixed;inset:0;width:100vw;height:100vh;z-index:40;pointer-events:none}.memory{position:fixed;inset:0;z-index:30;background:var(--deep-memory);opacity:0;transform:scale(1.03);transition:opacity .45s ease-out,transform .45s ease-out}.memory.is-in{opacity:1;transform:none}.reduce-motion .memory{transition-duration:.01s;transform:none}.memory__stage{position:absolute;inset:0;touch-action:none}.box-canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.flat-media{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.source-video{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.memory__mist{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 45%,#f8fafce6,#dceaf2f2);opacity:0;transition:opacity .85s ease-out .1s}.memory__mist.is-on{opacity:1;transition-delay:0s}.glass-btn{position:absolute;z-index:2;width:44px;height:44px;border-radius:50%;padding:0;background:#0000002e;border:1px solid rgb(255 255 255 / .4);color:#fff;font:inherit;font-size:1rem;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:opacity .4s}.memory__close{top:calc(14px + env(safe-area-inset-top));left:14px}.memory__details{top:calc(14px + env(safe-area-inset-top));right:14px;font-family:Georgia,serif;font-style:italic;font-weight:700}.memory__play{left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;font-size:1.3rem}.memory.is-playing.controls-faded .memory__play{opacity:0;pointer-events:none}.memory__threed{position:absolute;z-index:2;right:14px;bottom:calc(16px + env(safe-area-inset-bottom))}.segmented{display:inline-flex;padding:3px;border-radius:999px;background:#00000038;border:1px solid rgb(255 255 255 / .35);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.segmented button{min-width:64px;min-height:40px;border:0;border-radius:999px;background:none;color:#fff;font:inherit;font-size:.95rem;cursor:pointer}.segmented button[aria-pressed=true]{background:#ffffffd9;color:var(--memory-ink)}.memory__hint{position:absolute;z-index:2;left:50%;bottom:calc(80px + env(safe-area-inset-bottom));transform:translate(-50%);padding:10px 18px;border-radius:999px;font-size:.95rem;white-space:nowrap}.memory__error{position:absolute;z-index:3;left:50%;top:50%;transform:translate(-50%,-50%);padding:24px;width:min(360px,calc(100vw - 32px));box-sizing:border-box;text-align:center;display:flex;flex-direction:column;gap:16px}.memory__error .row{justify-content:center}.sheet{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-end;justify-content:center}.sheet__scrim{position:absolute;inset:0;background:#101a2147}.sheet__card{position:relative;width:min(560px,100%);max-height:88svh;overflow-y:auto;box-sizing:border-box;padding:24px 24px calc(28px + env(safe-area-inset-bottom));border-radius:var(--radius-panel) var(--radius-panel) 0 0;transform:translateY(24px);opacity:0;transition:transform .4s var(--spring),opacity .3s}.sheet.is-in .sheet__card{transform:none;opacity:1}@media(min-width:700px){.sheet{align-items:center}.sheet__card{border-radius:var(--radius-panel)}}.sheet__done{position:absolute;top:10px;right:10px}.sheet-title{padding-right:60px}.line{color:var(--soft-ink)}.note{margin:0;font-style:italic;color:var(--soft-ink)}.devices{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.device{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;border-radius:16px;border:1px solid var(--mist-blue);background:#ffffff80}.device__text{display:flex;flex-direction:column}.device__text .muted{font-size:.85rem}.approval{position:fixed;inset:0;z-index:70;display:grid;place-items:center;padding:16px;background:#101a2140}.approval__card{width:min(400px,100%);padding:28px 24px;box-sizing:border-box}.approval__card h2{font-size:1.5rem}.map-frame{--map-land: rgb(107 107 107 / .12);--map-visited: rgb(128 128 128 / .34);--map-border: rgb(107 107 107 / .8);--map-around: rgb(107 107 107 / .32);--map-water: rgb(107 107 107 / .5)}:root[data-theme=dark] .map-frame{--map-land: rgb(199 199 199 / .12);--map-visited: rgb(219 219 219 / .34);--map-border: rgb(214 214 214 / .8);--map-around: rgb(204 204 204 / .32);--map-water: rgb(204 204 204 / .5)}.lib-places{display:flex;flex-wrap:wrap;gap:10px;padding:0 24px 18px}.place-pearl{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 18px 0 8px;border-radius:999px;border:1px solid var(--dream-blue);background:#f8fafcd9;color:var(--memory-ink);font:inherit;font-size:1rem;cursor:pointer;transition:background-color .2s,transform .12s var(--spring)}.place-pearl:hover{background:var(--haze-blue)}.place-pearl:active{transform:scale(.98)}.place-pearl__dot{width:32px;height:32px;border-radius:48% 52% 50% 50%/52% 48%;background:radial-gradient(circle at 36% 30%,var(--memory-white),var(--memory-blue) 62%,var(--dream-blue));border:1px solid var(--dream-blue)}.place-pearl__dot--quiet{background:radial-gradient(circle at 36% 30%,var(--memory-white),var(--pearl) 62%,var(--mist-blue))}body[data-view=map] .toolbar,body[data-view=map] .library,body[data-view=map] .add-bar{display:none}.mapview{position:relative;z-index:1;max-width:1080px;margin:0 auto;padding:calc(16px + env(safe-area-inset-top)) 16px calc(110px + env(safe-area-inset-bottom));box-sizing:border-box}.mapview__head{display:grid;gap:4px;padding:4px 8px 14px}.mapview__title{font-size:2.1rem;outline:none}.mapview__title:focus-visible{outline:3px solid var(--info-text);outline-offset:4px;border-radius:8px}.map-crumbs{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:6px 0 0;padding:0;font-size:.9rem}.map-crumbs li{padding:2px 10px;border-radius:999px;background:#f8fafcd9;border:1px solid var(--mist-blue);color:var(--soft-ink)}.map-crumbs li:last-child{background:var(--memory-blue);color:var(--memory-ink);font-weight:600}.map-frame{position:relative;width:100%;aspect-ratio:1000 / 600;border-radius:22px;overflow:hidden;background:none}.map-svg{position:absolute;inset:0;width:100%;height:100%;display:block}.map-layer{transform-box:view-box}.map-svg text{font-family:var(--font);fill:var(--memory-ink);pointer-events:none}.map-bubble{cursor:pointer;outline:none}.map-bubble__count{font-weight:600;fill:var(--soft-ink)!important}.map-bubble__name{font-weight:600;paint-order:stroke;stroke:var(--memory-white);stroke-width:4px;stroke-linejoin:round}.map-bubble:hover .map-bubble__body{stroke-width:2}.map-bubble:focus-visible .map-bubble__body{stroke:var(--info-text);stroke-width:3}.map-bubble__photo{transition:opacity .6s ease-out}.reduce-motion .map-bubble__photo{transition:none}.map-credit{margin:8px 6px 0;font-size:.8rem;color:var(--faded-ink);text-align:right;min-height:1.2em}.map-gallery{margin-top:8px}.map-list{display:none;list-style:none;margin:14px 0 0;padding:0;gap:8px;flex-direction:column}.map-chip{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:48px;padding:0 16px;border-radius:16px;border:1px solid var(--mist-blue);background:#f8fafcd9;color:var(--memory-ink);font:inherit;text-align:left;cursor:pointer}.map-chip__count{min-width:28px;padding:2px 8px;border-radius:999px;background:var(--memory-blue);text-align:center;font-weight:600}@media(max-width:640px){.map-list:not(:empty){display:flex}.mapview__title{font-size:1.7rem}}.map-dock{position:fixed;z-index:4;left:0;right:0;bottom:0;display:flex;justify-content:center;gap:12px;padding:16px 16px calc(16px + env(safe-area-inset-bottom));background:linear-gradient(to top,#f8fafcf2,#f8fafc00)}.map-dock .btn{min-width:132px}
