:root{--roam-forest: #1a3a2f;--roam-forest-light: #2d5246;--roam-forest-dark: #142d24;--roam-terracotta: #c45c3e;--roam-terracotta-light: #e07a5f;--roam-terracotta-dark: #a84832;--roam-sage: #87a28e;--roam-sage-light: #a8c4ae;--roam-gold: #d4a855;--roam-gold-light: #e8c677;--roam-rust: #d97652;--roam-rust-dark: #b85a3a;--roam-coral: #f4a895;--roam-emerald: #6ee7b7;--roam-red: #ef4444;--roam-green: #22c55e;--roam-cream: #faf8f5;--roam-paper: #f7f3ed;--roam-parchment: #ede7dc;--roam-parchment-dark: #d8d0c4;--roam-stone: #d8d0c4;--roam-ink: #2a2520;--roam-ink-light: #4a443d;--roam-ink-muted: #8a847c;--roam-text: var(--roam-ink);--roam-text-muted: var(--roam-ink-muted);--color-background: var(--roam-cream);--color-surface: var(--roam-paper);--color-surface-elevated: #ffffff;--color-text-primary: var(--roam-ink);--color-text-secondary: var(--roam-ink-light);--color-text-muted: var(--roam-ink-muted);--color-text-tertiary: var(--roam-ink-muted);--color-accent: var(--roam-terracotta);--color-accent-secondary: var(--roam-forest);--color-success: var(--roam-sage);--color-warning: var(--roam-gold);--color-error: var(--roam-red);--color-primary: var(--roam-terracotta-light);--color-border: var(--roam-parchment);--color-text: var(--roam-ink);--font-display: "Newsreader", Georgia, serif;--font-body: "Outfit", system-ui, sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.25rem;--text-4xl: 3rem;--text-hero: 4rem;--stable-vh: 100dvh;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 16px;--radius-xl: 24px;--radius-2xl: 32px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(44, 40, 36, .04);--shadow-md: 0 4px 12px rgba(44, 40, 36, .08);--shadow-lg: 0 8px 24px rgba(44, 40, 36, .12);--shadow-xl: 0 16px 48px rgba(44, 40, 36, .16);--shadow-card: 0 2px 8px rgba(44, 40, 36, .06), 0 8px 32px rgba(44, 40, 36, .1);--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--ease-out-back: cubic-bezier(.34, 1.56, .64, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--duration-fast: .15s;--duration-normal: .25s;--duration-slow: .4s;--z-base: 0;--z-dropdown: 100;--z-sticky: 200;--z-modal: 300;--z-toast: 400;color-scheme:light}[data-theme=dark]{--roam-cream: #0d1b16;--roam-paper: #142822;--roam-parchment: #1f3a30;--roam-parchment-dark: #2a4a3e;--roam-stone: #2a4a3e;--roam-ink: #f4ecdc;--roam-ink-light: #d0c5b0;--roam-ink-muted: #8a8275;--roam-forest: #6ea58a;--roam-forest-light: #8fbfa3;--roam-forest-dark: #4a7c63;--color-background: var(--roam-cream);--color-surface: var(--roam-paper);--color-surface-elevated: var(--roam-parchment);--color-text-primary: var(--roam-ink);--color-text-secondary: var(--roam-ink-light);--color-text-muted: var(--roam-ink-muted);--color-text-tertiary: var(--roam-ink-muted);--color-border: var(--roam-parchment-dark);--color-text: var(--roam-ink);--roam-text: var(--roam-ink);--roam-text-muted: var(--roam-ink-muted);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .35);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .4);--shadow-xl: 0 16px 48px rgba(0, 0, 0, .5);--shadow-card: 0 2px 8px rgba(0, 0, 0, .3), 0 8px 32px rgba(0, 0, 0, .45);color-scheme:dark}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;text-size-adjust:100%;-webkit-text-size-adjust:100%}body{font-family:var(--font-body);font-size:var(--text-base);line-height:1.6;color:var(--color-text-primary);background-color:var(--color-background);min-height:100vh;min-height:var(--stable-vh, 100dvh);overflow-x:hidden;overscroll-behavior:none}button,input,select,textarea{font-family:inherit}body:before{content:"";position:fixed;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");opacity:.03;pointer-events:none;z-index:9999}#root{min-height:100vh;min-height:var(--stable-vh, 100dvh);display:flex;flex-direction:column}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--roam-forest);outline-offset:2px}button:focus-visible{outline:2px solid var(--roam-forest);outline-offset:2px}.skip-link{position:absolute;top:-40px;left:0;background:#1a3a2f;color:#fff;padding:var(--space-sm) var(--space-md);z-index:9999;font-size:var(--text-sm);font-weight:500;border-radius:0 0 var(--radius-md) 0;transition:top .2s ease}.skip-link:focus{top:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}::selection{background:var(--roam-sage);color:#fff}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:500;line-height:1.2;color:var(--color-text-primary);letter-spacing:-.01em}h1{font-size:var(--text-3xl)}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-xl)}h4{font-size:var(--text-lg)}p{max-width:65ch}.text-display{font-family:var(--font-display);font-size:var(--text-hero);font-weight:400;line-height:.95;letter-spacing:-.03em}.text-label{font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;color:var(--color-text-muted)}.container{width:100%;max-width:1200px;margin-inline:auto;padding-inline:var(--space-lg)}.container-narrow{max-width:640px}.stack{display:flex;flex-direction:column;gap:var(--space-md)}.stack-sm{gap:var(--space-sm)}.stack-lg{gap:var(--space-lg)}.stack-xl{gap:var(--space-xl)}.cluster{display:flex;flex-wrap:wrap;gap:var(--space-md);align-items:center}.cluster-sm{gap:var(--space-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);min-height:44px;padding:var(--space-sm) var(--space-lg);font-family:var(--font-body);font-size:var(--text-sm);font-weight:600;line-height:1.2;text-decoration:none;text-align:center;border:1.5px solid transparent;border-radius:var(--radius-full);cursor:pointer;transition:background-color var(--duration-fast),border-color var(--duration-fast),transform var(--duration-fast);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.btn svg{flex-shrink:0}.btn:active{transform:scale(.97)}.btn:focus-visible{outline:2px solid var(--roam-gold);outline-offset:2px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#1a3a2f;color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover{background:#2d5246}[data-theme=dark] .btn-primary{border-color:var(--roam-forest)}.btn-secondary{background:var(--color-surface-elevated);color:var(--roam-forest);border-color:var(--roam-parchment-dark)}.btn-secondary:hover{background:var(--roam-paper);border-color:var(--roam-forest)}[data-theme=dark] .btn-secondary{color:var(--roam-forest-light)}.btn-accent{background:var(--roam-terracotta);color:#fff;box-shadow:var(--shadow-sm)}.btn-accent:hover{background:var(--roam-terracotta-dark)}.btn-block{width:100%}.btn-lg{min-height:52px;padding:var(--space-md) var(--space-xl);font-size:var(--text-base)}.card{background:var(--color-surface-elevated);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden}.card-body{padding:var(--space-lg)}.nav-bar{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;align-items:center;padding:var(--space-sm) var(--space-md);padding-bottom:max(var(--space-sm),env(safe-area-inset-bottom));background:var(--color-surface-elevated);border-top:1px solid var(--roam-parchment);box-shadow:0 -4px 20px #2c282414;z-index:var(--z-sticky)}body.native-banner-below-nav .nav-bar{bottom:var(--native-banner-bottom, 0px);padding-bottom:var(--space-sm)}.location-banner{position:fixed;top:0;left:0;right:0;display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);padding-top:max(var(--space-sm),env(safe-area-inset-top));background:linear-gradient(135deg,#fef3c7,#fde68a);border-bottom:1px solid rgba(212,168,85,.3);font-size:var(--text-sm);color:var(--roam-forest);z-index:var(--z-toast);box-shadow:0 2px 8px #d4a85533}[data-theme=dark] .location-banner{background:linear-gradient(135deg,#4a3d10,#3a2f08);border-bottom-color:color-mix(in srgb,var(--roam-gold) 35%,transparent);color:var(--roam-gold);box-shadow:0 2px 8px #00000059}[data-theme=dark] .location-banner-close{color:var(--roam-gold)}body.has-location-banner main{padding-top:64px}@media(min-width:1024px){.location-banner{height:48px}body.has-location-banner .nav-bar{top:48px}body.has-location-banner main{padding-top:48px}}.location-banner svg{flex-shrink:0;opacity:.7}.location-banner span{flex:1;font-weight:500}.location-banner-btn{padding:var(--space-xs) var(--space-sm);background:var(--roam-forest);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:600;cursor:pointer;transition:all .2s ease}.location-banner-btn:hover{background:var(--roam-forest-light)}.location-banner-close{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--roam-forest);font-size:18px;cursor:pointer;opacity:.6;transition:opacity .2s}.location-banner-close:hover{opacity:1}.nav-item{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);color:var(--color-text-secondary);text-decoration:none;font-size:var(--text-xs);font-weight:500;transition:color var(--duration-fast);-webkit-tap-highlight-color:transparent}.nav-item:hover,.nav-item.active{color:var(--roam-forest)}.nav-item svg{width:24px;height:24px;transition:transform var(--duration-normal) var(--ease-out-back)}.nav-item.active svg{transform:scale(1.15)}[data-theme=dark] .nav-item:hover,[data-theme=dark] .nav-item.active{color:var(--roam-forest-light)}.badge{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs);font-weight:500;border-radius:var(--radius-full);background:var(--roam-parchment);color:var(--color-text-secondary)}.badge-success{background:#87a28e33;color:var(--roam-forest)}.badge-warning{background:#d4a85533;color:#8b6914}.chip{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);font-weight:500;border-radius:var(--radius-full);background:var(--roam-paper);border:1.5px solid var(--roam-parchment);color:var(--color-text-secondary);cursor:pointer;transition:all var(--duration-fast);-webkit-user-select:none;user-select:none}.chip:hover{background:var(--roam-parchment);border-color:var(--roam-stone)}.chip.selected{background:#1a3a2f;border-color:#1a3a2f;color:#fff}[data-theme=dark] .chip.selected{border-color:var(--roam-forest)}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-md)}.stat-card{display:flex;flex-direction:column;align-items:center;padding:var(--space-lg);background:var(--color-surface-elevated);border-radius:var(--radius-lg);text-align:center;box-shadow:var(--shadow-sm)}.stat-value{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:500;color:var(--roam-forest);line-height:1}.stat-label{font-size:var(--text-xs);font-weight:500;color:var(--color-text-muted);margin-top:var(--space-xs)}.streak-badge{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:linear-gradient(135deg,var(--roam-terracotta) 0%,var(--roam-gold) 100%);border-radius:var(--radius-full);color:#fff;font-weight:600;font-size:var(--text-sm);box-shadow:var(--shadow-md)}@media(hover:none)and (pointer:coarse){button:hover,a:hover,[role=button]:hover,.wishlist-card:hover,.profile-upgrade-card:hover,.wishlist-adventure-view:hover{transform:none!important;box-shadow:inherit}}.page{flex:1;padding-bottom:calc(80px + env(safe-area-inset-bottom))}.page-header{padding:var(--space-xl) var(--space-lg) var(--space-md)}.page-title{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:500}.page-content{padding:var(--space-md) var(--space-lg)}.card-actions{display:flex;justify-content:center;align-items:center;gap:var(--space-xl);padding:var(--space-xl)}.card-action-btn{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:var(--radius-full);border:2px solid;background:var(--color-surface-elevated);cursor:pointer;transition:all var(--duration-fast) var(--ease-out-expo);box-shadow:var(--shadow-md)}.card-action-btn:active{transform:scale(.9)}.card-action-btn.nope{border-color:var(--roam-terracotta);color:var(--roam-terracotta)}.card-action-btn.nope:hover{background:var(--roam-terracotta);color:#fff}.card-action-btn.like{border-color:var(--roam-sage);color:var(--roam-sage)}.card-action-btn.like:hover{background:var(--roam-sage);color:#fff}.card-action-btn.go{width:72px;height:72px;border-color:var(--roam-gold);color:var(--roam-gold)}.card-action-btn.go:hover{background:var(--roam-gold);color:#1a3a2f}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-3xl);text-align:center}.empty-state-icon{width:80px;height:80px;margin-bottom:var(--space-lg);color:var(--roam-stone)}.empty-state-title{font-family:var(--font-display);font-size:var(--text-xl);color:var(--color-text-primary);margin-bottom:var(--space-sm)}.empty-state-text{font-size:var(--text-sm);color:var(--color-text-muted);max-width:280px}.loading-spinner{width:32px;height:32px;border:3px solid var(--roam-parchment);border-top-color:var(--roam-forest);border-radius:var(--radius-full);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:640px){.stats-grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:480px){:root{--space-lg: 1.25rem;--space-xl: 1.5rem;--space-2xl: 2.25rem;--space-3xl: 3rem}.container{padding-inline:var(--space-md)}.page{padding-bottom:calc(64px + env(safe-area-inset-bottom))}.page-header{padding:var(--space-lg) var(--space-md) var(--space-sm)}.page-content{padding:var(--space-sm) var(--space-md)}.nav-bar{padding:var(--space-xs) var(--space-sm)}.nav-item{padding:var(--space-xs) var(--space-sm);font-size:.65rem}.nav-item svg{width:20px;height:20px}.card-actions{gap:var(--space-md);padding:var(--space-lg)}.card-action-btn{width:48px;height:48px}.card-action-btn.go{width:64px;height:64px}.empty-state{padding:var(--space-2xl) var(--space-lg)}.stats-grid{grid-template-columns:repeat(2,1fr)}}.nav-brand{display:none}@media(min-width:1024px){.nav-bar{top:0;bottom:auto;height:64px;justify-content:flex-start;gap:var(--space-xs);padding:0 max(var(--space-lg),calc((100vw - 1100px)/2));border-top:none;border-bottom:1px solid var(--roam-parchment);box-shadow:none}.nav-brand{display:inline-flex;align-items:center;gap:10px;margin-right:auto;font-family:var(--font-display);font-size:1.75rem;font-weight:400;letter-spacing:-.04em;line-height:1;color:var(--roam-forest);text-decoration:none}.nav-brand img{width:30px;height:30px}.nav-item{flex-direction:row;gap:var(--space-sm);min-height:40px;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-full);font-size:var(--text-sm);color:var(--color-text-secondary)}.nav-item svg{width:18px;height:18px}.nav-item.active svg{transform:none}.nav-item:hover{background:var(--roam-paper)}.nav-item.active{background:color-mix(in srgb,var(--roam-forest) 10%,transparent);color:var(--roam-forest);font-weight:600}.page{padding-top:64px;padding-bottom:var(--space-xl)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.animate-fade-in{animation:fade-in var(--duration-normal) var(--ease-out-expo)}.animate-slide-up{animation:slide-up var(--duration-slow) var(--ease-out-expo)}.animate-scale-in{animation:scale-in var(--duration-normal) var(--ease-out-back)}.stagger-children>*{animation:slide-up var(--duration-slow) var(--ease-out-expo) both}.stagger-children>*:nth-child(1){animation-delay:0ms}.stagger-children>*:nth-child(2){animation-delay:50ms}.stagger-children>*:nth-child(3){animation-delay:.1s}.stagger-children>*:nth-child(4){animation-delay:.15s}.stagger-children>*:nth-child(5){animation-delay:.2s}.stagger-children>*:nth-child(6){animation-delay:.25s}@media(pointer:coarse)and (hover:none){button:not(:disabled):not(:has(*)):active,[role=button]:not([aria-disabled=true]):active,a[href]:active{transform:scale(.97);transition:transform 80ms cubic-bezier(.4,0,.2,1)}}.place-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--roam-cream)}.place-page-body{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--space-lg) var(--space-md)}.place-page-header{width:100%;max-width:680px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-md)}.place-page-brand{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-display);font-size:1.75rem;font-weight:400;letter-spacing:-.04em;line-height:1;color:var(--roam-forest);text-decoration:none}.place-page-brand img{width:34px;height:34px}.place-page-error{text-align:center;max-width:400px;width:100%;padding:var(--space-xl) var(--space-lg);background:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.place-page-error-mark{display:block;width:64px;height:64px;margin:0 auto var(--space-md)}.place-page-error-icon{display:block;font-size:64px;margin-bottom:var(--space-md)}.place-page-error h2{margin:0 0 var(--space-sm);font-family:var(--font-display);font-size:var(--text-xl);font-weight:500;color:var(--roam-ink)}.place-page-error p{margin:0 0 var(--space-lg);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.5}.place-page-error-btn{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-lg);background:var(--roam-terracotta-dark);color:#fff;font-weight:600;font-size:var(--text-sm);border:none;border-radius:var(--radius-full);cursor:pointer;transition:background .2s ease,transform .2s ease}.place-page-error-btn:hover{filter:brightness(.9)}.place-page-error-btn:active{transform:scale(.98)}.place-page-error-btn:focus-visible{outline:2px solid var(--roam-forest);outline-offset:2px}@media(min-width:1024px){.place-page{padding-top:88px}.place-page-header{display:none}}.onboarding-overlay{position:fixed;inset:0;background:linear-gradient(165deg,var(--roam-cream) 0%,var(--roam-paper) 50%,var(--roam-parchment) 100%);z-index:2000;display:flex;align-items:flex-start;justify-content:center;padding:var(--space-lg);padding-top:max(var(--space-xl),env(safe-area-inset-top,20px));padding-bottom:max(var(--space-xl),env(safe-area-inset-bottom,20px));overflow-y:auto;-webkit-overflow-scrolling:touch}.onboarding-container{width:100%;max-width:400px;min-height:min(500px,80vh);display:flex;flex-direction:column;align-items:center;text-align:center;padding-bottom:var(--space-lg)}.onboarding-progress{display:flex;gap:var(--space-sm);margin-bottom:var(--space-2xl)}.onboarding-dot{width:8px;height:8px;border-radius:var(--radius-full);background:var(--roam-parchment);transition:all .3s ease}.onboarding-dot.active{width:24px;background:var(--roam-forest)}.onboarding-dot.completed{background:var(--roam-sage)}.onboarding-slide{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;width:100%;padding-top:var(--space-lg)}.onboarding-icon{font-size:72px;margin-bottom:var(--space-xl);filter:drop-shadow(0 4px 12px rgba(26,58,47,.1))}.onboarding-title{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:500;color:var(--roam-forest);margin:0 0 var(--space-xs) 0;line-height:1.2}.onboarding-subtitle{font-size:var(--text-lg);font-weight:500;color:var(--color-text-secondary);margin:0 0 var(--space-md) 0}.onboarding-description{font-size:var(--text-base);color:var(--color-text-secondary);line-height:1.6;max-width:320px;margin:0}.onboarding-hero-mark{display:flex;justify-content:center;margin-bottom:var(--space-lg);filter:drop-shadow(0 8px 24px rgba(26,58,47,.18))}.onboarding-hero-mark svg{width:120px;height:120px}@media(max-width:767px){.onboarding-hero-mark svg{width:96px;height:96px}.onboarding-hero-mark{margin-bottom:var(--space-md)}}.onboarding-actions{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);margin-top:var(--space-xl);width:100%;max-width:320px}.onboarding-cta{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);width:100%;padding:var(--space-md) var(--space-xl);background:#1a3a2f;border:2px solid var(--roam-forest, #1a3a2f);border-radius:var(--radius-full);color:#fdfcf8;font-family:var(--font-body, "Outfit", sans-serif);font-size:var(--text-base);font-weight:600;cursor:pointer;transition:all .2s;box-shadow:0 4px 14px #1a3a2f33}.onboarding-cta:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 18px #1a3a2f47}.onboarding-cta:active{transform:translateY(0)}.onboarding-signin-link{background:none;border:none;color:var(--roam-ink-light);font-family:var(--font-body, "Outfit", sans-serif);font-size:var(--text-sm);cursor:pointer;padding:var(--space-sm);min-height:44px}.onboarding-signin-link strong{color:var(--roam-forest, #1a3a2f);font-weight:600}.onboarding-signin-link:hover strong{text-decoration:underline}.onboarding-gestures{display:flex;justify-content:center;gap:var(--space-xl);margin-top:var(--space-xl);padding:var(--space-lg);background:#1a3a2f0d;border-radius:var(--radius-lg)}.gesture-hint{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs)}.gesture-arrow{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--color-surface-elevated);border-radius:var(--radius-full);font-size:var(--text-xl);color:var(--roam-forest);box-shadow:var(--shadow-sm)}.gesture-hint span:last-child{font-size:var(--text-xs);font-weight:500;color:var(--color-text-muted)}.onboarding-location-btn{display:flex;align-items:center;gap:var(--space-sm);margin-top:var(--space-xl);padding:var(--space-md) var(--space-xl);background:#1a3a2f14;border:2px solid var(--roam-parchment);border-radius:var(--radius-full);color:var(--roam-forest);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all .2s}.onboarding-location-btn:hover{background:#1a3a2f1f;border-color:var(--roam-stone)}.onboarding-location-success{display:flex;align-items:center;gap:var(--space-sm);margin-top:var(--space-xl);padding:var(--space-md) var(--space-xl);background:#22c55e1a;border-radius:var(--radius-full);color:#16a34a;font-size:var(--text-sm);font-weight:500}.onboarding-interests{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-sm);margin-top:var(--space-lg);width:100%;max-width:360px}.interest-chip{display:flex;align-items:center;gap:var(--space-xs);padding:10px 16px;background:var(--color-surface-elevated);border:2px solid var(--roam-parchment);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:500;color:var(--color-text-primary);cursor:pointer;transition:all .2s;flex-shrink:0}.interest-chip:hover{border-color:var(--roam-stone);background:var(--roam-paper)}.interest-chip.selected{border-color:var(--chip-color, var(--roam-forest));background:color-mix(in srgb,var(--chip-color, var(--roam-forest)) 10%,white)}.interest-icon{font-size:var(--text-base)}.interest-check{display:flex;align-items:center;justify-content:center;width:18px;height:18px;background:var(--chip-color, #1a3a2f);border-radius:var(--radius-full);color:#fff}.interest-check svg{width:12px;height:12px}.onboarding-skip-hint{margin-top:var(--space-lg);font-size:var(--text-sm);color:var(--color-text-muted);font-style:italic}.onboarding-signin-options{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);margin-top:var(--space-xl);width:100%;max-width:280px}.onboarding-google-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);width:100%;padding:var(--space-md) var(--space-xl);background:var(--color-surface-elevated);border:2px solid var(--roam-parchment);border-radius:var(--radius-full);color:var(--color-text-primary);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all .2s;box-shadow:var(--shadow-sm)}.onboarding-google-btn:hover:not(:disabled){border-color:var(--roam-stone);box-shadow:var(--shadow-md)}.onboarding-google-btn:disabled{opacity:.7;cursor:not-allowed}.onboarding-apple-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);width:100%;padding:var(--space-md) var(--space-xl);background:#000;border:2px solid #000;border-radius:var(--radius-full);color:#fff;font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:opacity .2s;box-shadow:var(--shadow-sm);margin-bottom:var(--space-sm)}.onboarding-apple-btn:hover:not(:disabled){opacity:.85}.onboarding-apple-btn:disabled{opacity:.5;cursor:not-allowed}.onboarding-loading-spinner{width:20px;height:20px;border:2px solid var(--roam-parchment);border-top-color:var(--roam-forest);border-radius:50%;animation:onboarding-spin .8s linear infinite}@keyframes onboarding-spin{to{transform:rotate(360deg)}}.onboarding-signin-error{margin:0;padding:var(--space-sm) var(--space-md);background:#ef44441a;border-radius:var(--radius-md);color:#dc2626;font-size:var(--text-sm);text-align:center}.onboarding-nav{display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:var(--space-2xl);gap:var(--space-md)}.onboarding-back{padding:var(--space-md) var(--space-lg);background:transparent;border:none;color:var(--color-text-muted);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:color .2s}.onboarding-back:hover{color:var(--color-text-primary)}.onboarding-next,.onboarding-complete{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-xl);background:#1a3a2f;border:none;border-radius:var(--radius-full);color:#fff;font-size:var(--text-sm);font-weight:500;cursor:pointer;box-shadow:var(--shadow-md);transition:all .2s;margin-left:auto}.onboarding-next:hover,.onboarding-complete:hover{background:#2d5246;box-shadow:var(--shadow-lg)}.onboarding-complete{background:linear-gradient(135deg,var(--roam-gold-light),var(--roam-gold))}.onboarding-complete:hover{background:linear-gradient(135deg,var(--roam-gold),var(--roam-gold-light))}.onboarding-skip{margin-top:var(--space-lg);padding:var(--space-sm);background:transparent;border:none;color:var(--color-text-muted);font-size:var(--text-xs);cursor:pointer;text-decoration:underline;text-underline-offset:2px;transition:color .2s}.onboarding-skip:hover{color:var(--color-text-secondary)}@media(max-width:380px){.onboarding-icon{font-size:48px;margin-bottom:var(--space-md)}.onboarding-title{font-size:var(--text-xl)}.onboarding-subtitle{font-size:var(--text-base);margin-bottom:var(--space-sm)}.onboarding-description{font-size:var(--text-sm)}.onboarding-gestures{gap:var(--space-md);padding:var(--space-md);margin-top:var(--space-md)}.gesture-arrow{width:36px;height:36px;font-size:var(--text-lg)}.interest-chip{padding:8px 12px;font-size:var(--text-xs)}.onboarding-progress{margin-bottom:var(--space-lg)}.onboarding-nav{margin-top:var(--space-lg)}}@media(max-height:600px){.onboarding-icon{font-size:40px;margin-bottom:var(--space-sm)}.onboarding-title{font-size:var(--text-lg)}.onboarding-subtitle{font-size:var(--text-sm)}.onboarding-progress{margin-bottom:var(--space-md)}.onboarding-interests{margin-top:var(--space-md)}.onboarding-skip-hint{margin-top:var(--space-sm)}.onboarding-nav{margin-top:var(--space-md)}}.error-boundary{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--space-xl);background:var(--color-surface);z-index:var(--z-modal)}.error-boundary-content{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:400px;padding:var(--space-2xl);background:var(--color-surface-elevated);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg)}.error-boundary-icon{display:flex;align-items:center;justify-content:center;width:80px;height:80px;margin-bottom:var(--space-lg);background:linear-gradient(135deg,#fee2e2,#fecaca);border-radius:50%;color:#dc2626}.error-boundary-title{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-sm)}.error-boundary-message{font-size:var(--text-base);color:var(--color-text-secondary);line-height:1.6;margin-bottom:var(--space-xl)}.error-boundary-details{width:100%;margin-bottom:var(--space-xl);text-align:left}.error-boundary-details summary{font-size:var(--text-sm);color:var(--color-text-muted);cursor:pointer;padding:var(--space-sm);border-radius:var(--radius-md);transition:background .2s}.error-boundary-details summary:hover{background:var(--roam-parchment)}.error-boundary-details pre{font-family:SF Mono,Monaco,Consolas,monospace;font-size:var(--text-xs);color:var(--color-text-muted);background:var(--roam-parchment);padding:var(--space-md);border-radius:var(--radius-md);overflow-x:auto;white-space:pre-wrap;word-break:break-word;margin-top:var(--space-sm);max-height:200px;overflow-y:auto}.error-boundary-actions{display:flex;gap:var(--space-md);width:100%}.error-boundary-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);font-size:var(--text-sm);font-weight:500;border:none;border-radius:var(--radius-lg);cursor:pointer;transition:all .2s var(--ease-out-expo)}.error-boundary-btn.primary{background:#1a3a2f;color:#fff;box-shadow:var(--shadow-md)}.error-boundary-btn.primary:hover{background:#2d5246;transform:translateY(-1px);box-shadow:var(--shadow-lg)}.error-boundary-btn.primary:active{transform:scale(.98)}.error-boundary-btn.secondary{background:var(--roam-parchment);color:var(--color-text-primary)}.error-boundary-btn.secondary:hover{background:var(--roam-stone);color:#fff}.error-boundary-btn.secondary:active{transform:scale(.98)}@media(max-width:480px){.error-boundary{padding:var(--space-md)}.error-boundary-content{padding:var(--space-xl)}.error-boundary-actions{flex-direction:column}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.loading-state-spinner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-xl)}.loading-spinner-icon{color:var(--roam-forest)}.loading-state-small .loading-spinner-icon{width:24px;height:24px}.loading-state-medium .loading-spinner-icon{width:40px;height:40px}.loading-state-large .loading-spinner-icon{width:56px;height:56px}.loading-message{font-size:var(--text-sm);color:var(--color-text-muted);text-align:center}.loading-state-skeleton{display:flex;flex-direction:column;gap:var(--space-sm)}.skeleton-line{height:16px;background:linear-gradient(90deg,color-mix(in srgb,var(--color-text-primary) 8%,transparent),color-mix(in srgb,var(--color-text-primary) 16%,transparent),color-mix(in srgb,var(--color-text-primary) 8%,transparent));background-size:200% 100%;border-radius:var(--radius-md);animation:skeleton-shimmer 1.5s ease-in-out infinite}.skeleton-card{border-radius:var(--radius-xl);overflow:hidden;background:var(--color-surface-elevated);box-shadow:var(--shadow-md)}.skeleton-image{height:200px;background:linear-gradient(90deg,color-mix(in srgb,var(--color-text-primary) 8%,transparent),color-mix(in srgb,var(--color-text-primary) 16%,transparent),color-mix(in srgb,var(--color-text-primary) 8%,transparent));background-size:200% 100%;animation:skeleton-shimmer 1.5s ease-in-out infinite}.skeleton-content{padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm)}.loading-state-skeleton-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-md);padding:var(--space-md) 0}.skeleton-mini-card{width:100%;height:220px;background:linear-gradient(135deg,color-mix(in srgb,var(--color-text-primary) 8%,transparent),color-mix(in srgb,var(--color-text-primary) 16%,transparent),color-mix(in srgb,var(--color-text-primary) 8%,transparent));background-size:200% 200%;border-radius:var(--radius-xl);animation:skeleton-shimmer 1.5s ease-in-out infinite}@keyframes skeleton-shimmer{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.loading-state-card-stack{display:flex;flex-direction:column;align-items:center;gap:var(--space-lg);padding:var(--space-2xl)}.card-stack-loader-icon{width:56px;height:56px;color:var(--roam-forest);margin-bottom:var(--space-sm)}.card-stack-loader-cards{position:relative;width:260px;height:340px}.loader-card{position:absolute;width:100%;height:100%;border-radius:var(--radius-xl);background:linear-gradient(135deg,var(--roam-parchment) 0%,rgba(255,255,255,.8) 50%,var(--roam-parchment) 100%);background-size:200% 200%;animation:skeleton-shimmer 1.5s ease-in-out infinite;box-shadow:var(--shadow-lg);border:1px solid rgba(235,227,213,.6)}.loader-card:first-child:before{content:"";position:absolute;bottom:0;left:0;right:0;height:40%;background:linear-gradient(to top,rgba(255,255,255,.95) 0%,rgba(255,255,255,.7) 60%,transparent 100%);border-radius:0 0 var(--radius-xl) var(--radius-xl)}.loader-card:first-child:after{content:"";position:absolute;bottom:24px;left:20px;right:20px;height:16px;background:var(--roam-parchment);border-radius:var(--radius-md);animation:pulse-skeleton 1.5s ease-in-out infinite}@keyframes pulse-skeleton{0%,to{opacity:.4}50%{opacity:.7}}.card-stack-loader-text{font-size:var(--text-sm);color:var(--color-text-muted);text-align:center;min-height:20px}.loading-inline{display:inline-flex;align-items:center;gap:4px}.loading-inline-small .loading-dot{width:4px;height:4px}.loading-inline-medium .loading-dot{width:6px;height:6px}.loading-dot{width:6px;height:6px;background:currentColor;border-radius:50%;animation:loading-bounce 1.4s ease-in-out infinite both}.loading-dot:nth-child(1){animation-delay:-.32s}.loading-dot:nth-child(2){animation-delay:-.16s}.loading-dot:nth-child(3){animation-delay:0s}@keyframes loading-bounce{0%,80%,to{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}.loading-state-fullpage{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-lg);background:var(--color-surface);z-index:var(--z-modal)}.fullpage-loader-icon{width:64px;height:64px;color:var(--roam-forest)}.fullpage-loader-text{font-family:var(--font-display);font-size:var(--text-lg);color:var(--color-text-secondary)}@media(max-width:480px){.card-stack-loader-cards{width:220px;height:290px}.skeleton-mini-card{width:160px;height:150px}}@media(max-height:700px){.loading-state-card-stack{padding:var(--space-xl);gap:var(--space-md)}.card-stack-loader-icon{width:40px;height:40px}.card-stack-loader-cards{width:200px;height:260px}}.auth-modal-overlay{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:var(--space-lg);z-index:var(--z-modal)}.auth-modal{position:relative;background:var(--color-surface);border-radius:var(--radius-2xl);box-shadow:var(--shadow-xl);width:100%;max-width:420px;max-height:calc(100dvh - var(--space-2xl) * 2);overflow-y:auto;padding:var(--space-2xl)}.auth-modal-close{position:absolute;top:var(--space-lg);right:var(--space-lg);width:44px;height:44px;border-radius:50%;background:var(--color-surface-elevated);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);transition:all .2s ease}.auth-modal-close:hover{background:var(--roam-parchment);color:var(--color-text)}.auth-modal-header{text-align:center;margin-bottom:var(--space-xl)}.auth-modal-header h2{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--color-text);margin:0 0 var(--space-xs)}.auth-modal-header p{font-size:var(--text-sm);color:var(--color-text-muted);margin:0}.auth-google-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:var(--color-surface-elevated);border:1px solid var(--roam-parchment-dark);border-radius:var(--radius-lg);font-size:var(--text-base);font-weight:500;color:var(--color-text);cursor:pointer;transition:all .2s ease}.auth-google-btn:hover:not(:disabled){background:var(--roam-parchment);border-color:var(--roam-parchment-dark)}.auth-google-btn:disabled{opacity:.6;cursor:not-allowed}.auth-apple-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:#000;border:1px solid #000;border-radius:var(--radius-lg);font-size:var(--text-base);font-weight:500;color:#fff;cursor:pointer;transition:opacity .2s ease;margin-bottom:var(--space-sm)}.auth-apple-btn:hover:not(:disabled){opacity:.85}.auth-apple-btn:disabled{opacity:.5;cursor:not-allowed}.auth-divider{display:flex;align-items:center;gap:var(--space-md);margin:var(--space-xl) 0}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--roam-parchment-dark)}.auth-divider span{font-size:var(--text-sm);color:var(--color-text-muted)}.auth-form{display:flex;flex-direction:column;gap:var(--space-lg)}.auth-field{display:flex;flex-direction:column;gap:var(--space-xs)}.auth-field label{font-size:var(--text-sm);font-weight:500;color:var(--color-text)}.auth-input-wrapper{position:relative;display:flex;align-items:center}.auth-input-wrapper>svg{position:absolute;left:var(--space-md);color:var(--color-text-muted);pointer-events:none}.auth-input-wrapper input{width:100%;padding:var(--space-md);padding-left:calc(var(--space-md) * 2 + 20px);border:1px solid var(--roam-parchment-dark);border-radius:var(--radius-lg);font-size:var(--text-base);background:var(--color-surface);color:var(--color-text);transition:all .2s ease}.auth-field>input{width:100%;padding:var(--space-md);border:1px solid var(--roam-parchment-dark);border-radius:var(--radius-lg);font-size:var(--text-base);background:var(--color-surface);color:var(--color-text);transition:all .2s ease}.auth-input-wrapper input:focus,.auth-field>input:focus{outline:none;border-color:var(--roam-forest);box-shadow:0 0 0 3px #2d5a271a}.auth-password-toggle{position:absolute;right:var(--space-sm);padding:var(--space-sm);background:none;border:none;cursor:pointer;color:var(--color-text-muted);transition:color .2s ease}.auth-password-toggle:hover{color:var(--color-text)}.auth-password-hint{font-size:var(--text-xs);color:var(--color-text-muted);margin:0}.auth-remember{display:flex;align-items:center}.auth-remember label{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--text-sm);color:var(--color-text-muted);cursor:pointer}.auth-remember input[type=checkbox]{width:22px;height:22px;accent-color:var(--roam-forest);cursor:pointer}.auth-error{padding:var(--space-md);background:#dc35451a;border:1px solid rgba(220,53,69,.3);border-radius:var(--radius-md);color:#dc3545;font-size:var(--text-sm);text-align:center}.auth-submit-btn{width:100%;padding:var(--space-md) var(--space-lg);background:#1a3a2f;border:none;border-radius:var(--radius-lg);font-size:var(--text-base);font-weight:600;color:#fff;cursor:pointer;transition:all .2s ease;min-height:48px;display:flex;align-items:center;justify-content:center}.auth-submit-btn:hover:not(:disabled){background:#142d24;transform:translateY(-1px)}.auth-submit-btn:disabled{opacity:.7;cursor:not-allowed}.auth-loading{display:flex;gap:4px}.auth-loading-dot{width:8px;height:8px;background:var(--color-surface-elevated);border-radius:50%;animation:auth-loading-bounce 1.4s ease-in-out infinite both}.auth-loading-dot:nth-child(1){animation-delay:-.32s}.auth-loading-dot:nth-child(2){animation-delay:-.16s}.auth-loading-dot:nth-child(3){animation-delay:0s}@keyframes auth-loading-bounce{0%,80%,to{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}.auth-switch{text-align:center;margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--roam-parchment)}.auth-switch p{font-size:var(--text-sm);color:var(--color-text-muted);margin:0}.auth-switch button{background:none;border:none;color:var(--roam-forest);font-weight:600;cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:2px}.auth-switch button:hover{color:var(--roam-forest-dark)}@media(max-width:480px){.auth-modal-overlay{padding:var(--space-md);align-items:flex-end}.auth-modal{max-height:90dvh;border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;padding:var(--space-xl);padding-bottom:calc(var(--space-xl) + env(safe-area-inset-bottom))}.auth-modal-header h2{font-size:var(--text-xl)}}@media(max-height:600px){.auth-modal{padding:var(--space-lg)}.auth-modal-header{margin-bottom:var(--space-md)}.auth-divider{margin:var(--space-md) 0}.auth-form{gap:var(--space-md)}.auth-switch{margin-top:var(--space-md);padding-top:var(--space-md)}}.resignin-banner{position:sticky;top:env(safe-area-inset-top,0);z-index:60;display:flex;align-items:stretch;gap:0;margin:8px 12px 0;background:var(--color-surface-elevated, #ffffff);border:1px solid color-mix(in srgb,var(--roam-gold) 30%,transparent);border-left:4px solid var(--roam-gold);border-radius:12px;box-shadow:0 1px 2px #0000000a,0 4px 12px #0000000f;overflow:hidden}.resignin-banner-body{display:flex;align-items:center;gap:12px;flex:1;padding:10px 12px;background:transparent;border:0;cursor:pointer;text-align:left;font-family:inherit;color:var(--color-text-primary, var(--roam-ink))}.resignin-banner-body:hover{background:color-mix(in srgb,var(--roam-gold) 6%,transparent)}.resignin-banner-icon{flex:0 0 auto;width:32px;height:32px;border-radius:50%;background:color-mix(in srgb,var(--roam-gold) 18%,transparent);color:var(--roam-gold);display:inline-flex;align-items:center;justify-content:center}.resignin-banner-text{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}.resignin-banner-title{font-size:14px;font-weight:600;line-height:1.2;color:var(--color-text-primary, var(--roam-ink))}.resignin-banner-sub{font-size:12px;line-height:1.3;color:var(--color-text-secondary, var(--roam-ink-light));text-wrap:balance}.resignin-banner-cta{flex:0 0 auto;font-size:13px;font-weight:600;color:var(--roam-forest);padding:6px 10px;border-radius:8px;background:color-mix(in srgb,var(--roam-gold) 12%,transparent);white-space:nowrap}.resignin-banner-dismiss{flex:0 0 auto;width:36px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:0;border-left:1px solid color-mix(in srgb,var(--roam-gold) 18%,transparent);color:var(--color-text-muted, var(--roam-ink-muted));cursor:pointer}.resignin-banner-dismiss:hover{color:var(--color-text-primary, var(--roam-ink));background:color-mix(in srgb,var(--roam-ink) 5%,transparent)}@media(prefers-color-scheme:dark){.resignin-banner{background:var(--color-surface-elevated, #1f1b16);border-color:color-mix(in srgb,var(--roam-gold) 35%,transparent)}}[data-theme=dark] .resignin-banner{background:var(--color-surface-elevated, #1f1b16);border-color:color-mix(in srgb,var(--roam-gold) 35%,transparent)}@media(prefers-reduced-motion:reduce){.resignin-banner{transition:none}}.success-modal-backdrop{position:fixed;inset:0;z-index:2000;background:#1a3a2fbf;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;padding:var(--space-lg)}.success-modal{position:relative;width:100%;max-width:380px;background:var(--roam-cream);border-radius:var(--radius-xl);padding:var(--space-2xl) var(--space-xl);text-align:center;box-shadow:0 25px 80px #1a3a2f59,0 10px 30px #1a3a2f33,inset 0 1px #fff9;overflow:hidden}.success-modal:before{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");opacity:.04;pointer-events:none;border-radius:inherit}.success-modal:after{content:"";position:absolute;top:0;right:0;width:100px;height:100px;background:linear-gradient(135deg,transparent 50%,rgba(212,168,85,.08) 50%);pointer-events:none}.success-icon{font-size:72px;line-height:1;margin-bottom:var(--space-lg);display:block;position:relative;z-index:1}.success-title{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:500;color:var(--roam-forest);margin:0 0 var(--space-xs) 0;letter-spacing:-.01em;position:relative;z-index:1}.success-subtitle{font-size:var(--text-base);color:var(--roam-ink-muted);margin:0 0 var(--space-xl) 0;font-style:italic;position:relative;z-index:1}.success-features{list-style:none;padding:var(--space-md);margin:0 0 var(--space-xl) 0;text-align:left;background:#1a3a2f08;border-radius:var(--radius-lg);border:1px solid rgba(26,58,47,.06);position:relative;z-index:1}.success-features li{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) 0;font-size:var(--text-sm);color:var(--roam-ink)}.success-features li:not(:last-child){border-bottom:1px dashed var(--roam-parchment)}.success-feature-check{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:linear-gradient(135deg,var(--roam-forest) 0%,var(--roam-forest-light) 100%);color:#fff;font-size:12px;font-weight:700;border-radius:50%;flex-shrink:0;box-shadow:0 2px 6px #1a3a2f33}.success-btn{display:block;width:100%;padding:var(--space-md) var(--space-xl);background:linear-gradient(135deg,var(--roam-forest) 0%,var(--roam-forest-light) 100%);border:none;border-radius:var(--radius-full);font-family:var(--font-display);font-size:var(--text-base);font-weight:500;letter-spacing:.02em;color:#fff;cursor:pointer;transition:all .25s ease;box-shadow:0 4px 16px #1a3a2f40;position:relative;z-index:1}.success-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px #1a3a2f59}.success-confetti{position:fixed;top:50%;left:50%;pointer-events:none;z-index:2001}.confetti-particle{position:absolute;width:10px;height:10px;border-radius:2px}.confetti-particle:nth-child(odd){border-radius:50%;width:8px;height:8px}.confetti-particle:nth-child(3n){border-radius:0;transform:rotate(45deg)}@media(max-width:400px){.success-modal{padding:var(--space-xl) var(--space-lg);margin:var(--space-md)}.success-icon{font-size:56px}.success-title{font-size:var(--text-xl)}.success-subtitle{font-size:var(--text-sm)}}.install-banner{position:fixed;bottom:calc(var(--nav-height, 60px) + env(safe-area-inset-bottom,0px) + 12px);left:12px;right:12px;background:#1a3a2f;border-radius:16px;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 4px 20px #00000026;z-index:1000}.install-banner-content{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.install-banner-icon{flex-shrink:0;width:40px;height:40px;border-radius:10px;overflow:hidden;background:var(--color-surface-elevated)}.install-banner-icon img{width:100%;height:100%;object-fit:cover}.install-banner-text{display:flex;flex-direction:column;gap:2px;color:#fff;min-width:0}.install-banner-text strong{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.install-banner-text span{font-size:12px;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.install-banner-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.install-banner-dismiss{padding:8px 12px;background:transparent;color:#ffffffb3;border:none;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;transition:color .2s}.install-banner-dismiss:hover{color:#fff}.install-banner-install{padding:8px 16px;background:var(--roam-gold, #d4a855);color:#1a3a2f;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:transform .2s,background .2s}.install-banner-install:hover{transform:scale(1.02)}.install-banner-install:active{transform:scale(.98)}@media(max-width:320px){.install-banner-text span,.install-banner-dismiss{display:none}}.notification-floating-container{position:fixed;bottom:85px;right:16px;z-index:var(--z-dropdown, 100)}@media(min-width:1024px){.notification-floating-container{bottom:24px;right:24px}}.notification-bell-btn{position:relative;display:flex;align-items:center;justify-content:center;width:52px;height:52px;padding:0;background:var(--color-surface-elevated);background-image:radial-gradient(ellipse at 30% 30%,color-mix(in srgb,var(--color-surface) 60%,transparent) 0%,transparent 50%);border:2px solid var(--roam-gold);border-radius:50%;color:var(--color-text-primary);cursor:pointer;box-shadow:0 2px 4px #0000002e,0 4px 12px #00000038;transition:all .2s ease}.notification-bell-btn:hover{transform:translateY(-2px);box-shadow:0 4px 8px #00000038,0 8px 20px #00000047}.notification-bell-btn:active{transform:translateY(0)}.notification-bell-btn.has-unread{animation:bell-pulse 2s ease-in-out infinite}@keyframes bell-pulse{0%,to{box-shadow:0 2px 4px #0000002e,0 4px 12px #00000038,0 0 #d4a85500}50%{box-shadow:0 2px 4px #0000002e,0 4px 12px #00000038,0 0 0 8px #d4a8552e}}.notification-bell-btn svg{width:24px;height:24px;stroke-width:1.75}.notification-badge{position:absolute;top:-2px;right:-2px;min-width:20px;height:20px;padding:0 6px;background:var(--roam-terracotta, #c45c3e);border:2px solid var(--roam-cream, #faf8f5);border-radius:10px;font-size:11px;font-weight:700;color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #c45c3e4d}.notification-backdrop{position:fixed;inset:0;z-index:1000;background:#1a3a2f99;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center;touch-action:none;overscroll-behavior:contain;will-change:opacity;transform:translateZ(0)}.notification-panel{background:var(--color-surface);border:1px solid var(--color-border);overflow:hidden;display:flex;flex-direction:column}.notification-panel.desktop{position:absolute;bottom:calc(100% + 12px);right:0;width:360px;max-height:480px;border-radius:16px;box-shadow:0 4px 6px #2a25200d,0 12px 24px #2a25201a,0 24px 48px #2a25201a;z-index:calc(var(--z-dropdown, 100) + 1)}.notification-panel.mobile{position:relative;width:100%;max-width:500px;max-height:70vh;max-height:70dvh;border-radius:24px 24px 0 0;border-bottom:none;box-shadow:0 -8px 40px #1a3a2f40,0 -2px 10px #1a3a2f1a;padding-bottom:env(safe-area-inset-bottom,0);will-change:transform;transform:translateZ(0);overscroll-behavior:contain}.notification-drag-handle{display:flex;justify-content:center;padding:12px 0 8px;cursor:grab;touch-action:none;flex-shrink:0}.notification-drag-handle:active{cursor:grabbing}.notification-drag-pill{width:48px;height:6px;background:var(--roam-parchment-dark, #d8d0c4);border-radius:3px}.notification-panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--color-border);background:transparent;flex-shrink:0}.notification-panel-title{display:flex;align-items:center;gap:8px}.notification-panel-title svg{color:var(--roam-gold, #d4a855)}.notification-panel-title h3{margin:0;font-family:var(--font-display, "Newsreader", Georgia, serif);font-size:18px;font-weight:500;font-style:italic;color:var(--roam-forest, #1a3a2f);letter-spacing:.01em}.notification-mark-all{padding:6px 12px;background:transparent;border:none;font-family:var(--font-body, "Outfit", sans-serif);font-size:12px;font-weight:500;color:var(--roam-ink-muted, #8a847c);cursor:pointer;transition:color .2s ease}.notification-mark-all:hover{color:var(--roam-forest, #1a3a2f)}.notification-panel-content{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}.notification-panel-content::-webkit-scrollbar{width:6px}.notification-panel-content::-webkit-scrollbar-track{background:transparent}.notification-panel-content::-webkit-scrollbar-thumb{background:var(--roam-stone, #d8d0c4);border-radius:3px}.notification-panel-content::-webkit-scrollbar-thumb:hover{background:var(--roam-ink-muted, #8a847c)}.notification-item{display:flex;align-items:flex-start;gap:14px;padding:16px 20px;background:transparent;border-bottom:1px solid var(--roam-parchment, #ede7dc);border-left:4px solid transparent;text-decoration:none;color:inherit;transition:all .15s ease}.notification-item:last-child{border-bottom:none}.notification-item:hover{background:color-mix(in srgb,var(--color-text-primary) 5%,transparent)}.notification-item.unread{border-left-color:var(--roam-gold);background:color-mix(in srgb,var(--roam-gold) 8%,transparent)}.notification-item.unread:hover{background:color-mix(in srgb,var(--roam-gold) 14%,transparent)}.notification-item-left{position:relative;flex-shrink:0}.notification-item-avatar{width:44px;height:44px;border-radius:50%;object-fit:cover;border:2px solid var(--color-border)}.notification-item-type-icon{position:absolute;bottom:-4px;right:-4px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:50%;color:var(--color-text-primary)}.notification-item-body{flex:1;min-width:0}.notification-item-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.notification-item-time{font-size:12px;font-weight:500;color:var(--roam-ink-muted, #8a847c)}.notification-item-message{margin:0 0 6px;font-size:14px;line-height:1.45;color:var(--roam-ink, #2a2520)}.notification-item-action{font-size:12px;font-weight:500;color:var(--roam-forest, #1a3a2f);opacity:.7;transition:opacity .15s ease}.notification-item:hover .notification-item-action{opacity:1}@media(max-width:768px){.notification-item-action{opacity:1}}.notification-loading{padding:0}.notification-skeleton{display:flex;align-items:flex-start;gap:14px;padding:16px 20px;border-bottom:1px solid var(--roam-parchment, #ede7dc)}.notification-skeleton-avatar{width:44px;height:44px;border-radius:50%;background:linear-gradient(90deg,var(--roam-parchment, #ede7dc) 0%,var(--roam-stone, #d8d0c4) 50%,var(--roam-parchment, #ede7dc) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite}.notification-skeleton-content{flex:1;display:flex;flex-direction:column;gap:8px}.notification-skeleton-line{height:14px;background:linear-gradient(90deg,var(--roam-parchment, #ede7dc) 0%,var(--roam-stone, #d8d0c4) 50%,var(--roam-parchment, #ede7dc) 100%);background-size:200% 100%;border-radius:4px;animation:shimmer 1.5s infinite}.notification-skeleton-line.short{width:60%;height:12px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.notification-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.envelope-illustration{margin-bottom:16px;opacity:.5}.notification-empty-title{margin:0 0 6px;font-family:var(--font-display, "Newsreader", Georgia, serif);font-size:16px;font-weight:500;color:var(--roam-ink, #2a2520)}.notification-empty-subtitle{margin:0;font-size:13px;line-height:1.5;color:var(--roam-ink-muted, #8a847c);max-width:240px}.notification-load-more{display:block;width:100%;padding:14px 20px;background:transparent;border:none;border-top:1px solid var(--color-border);font-family:var(--font-body, "Outfit", sans-serif);font-size:13px;font-weight:500;color:var(--color-text-primary);cursor:pointer;transition:background .15s ease}.notification-load-more:hover:not(:disabled){background:color-mix(in srgb,var(--color-text-primary) 5%,transparent)}.notification-load-more:disabled{opacity:.6;cursor:not-allowed}@media(prefers-reduced-motion:reduce){.notification-bell-btn.has-unread{animation:none}.notification-skeleton-avatar,.notification-skeleton-line{animation:none;background:var(--roam-parchment, #ede7dc)}}.display-name-nudge{background:linear-gradient(180deg,var(--color-surface-elevated) 0%,color-mix(in srgb,var(--color-surface-elevated) 92%,var(--color-text-primary) 8%) 100%);border-bottom:1px solid color-mix(in srgb,var(--color-text-primary) 10%,transparent);padding:12px 16px;position:relative;z-index:5}.display-name-nudge-inner{max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:10px}.display-name-nudge-text{display:flex;flex-direction:column;gap:2px;color:var(--color-text-primary);font-size:.9rem}.display-name-nudge-text strong{font-family:Fraunces,serif;font-weight:600;font-size:1rem}.display-name-nudge-text span{color:var(--color-text-secondary);font-size:.85rem}.display-name-nudge-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.display-name-nudge-input{flex:1;min-width:160px;padding:8px 12px;border:1px solid color-mix(in srgb,var(--color-text-primary) 22%,transparent);border-radius:8px;font:inherit;background:var(--color-surface);color:var(--color-text-primary)}.display-name-nudge-input:focus{outline:none;border-color:var(--color-text-primary)}.display-name-nudge-save,.display-name-nudge-skip{padding:8px 14px;border-radius:8px;font-size:.9rem;cursor:pointer;border:1px solid color-mix(in srgb,var(--color-text-primary) 22%,transparent)}.display-name-nudge-save{background:var(--color-text-primary);color:var(--color-surface);border-color:var(--color-text-primary)}.display-name-nudge-save:disabled{opacity:.5;cursor:not-allowed}.display-name-nudge-skip{background:transparent;color:var(--color-text-secondary)}.display-name-nudge-skip:hover{color:var(--color-text-primary)}.display-name-nudge-error{margin:0;color:#b22d2d;font-size:.8rem}.offline-indicator{position:fixed;top:env(safe-area-inset-top,12px);left:50%;transform:translate(-50%);display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:999px;font-size:.85rem;font-weight:500;background:#1a3a2f;color:#f5f0e6;box-shadow:0 2px 12px #1a3a2f4d;z-index:1000;pointer-events:none}.offline-indicator.no-pack{background:#6b6b6b}.offline-indicator-dot{width:8px;height:8px;border-radius:50%;background:currentColor;animation:offline-pulse 2s ease-in-out infinite}@keyframes offline-pulse{0%,to{opacity:.5}50%{opacity:1}}.toast-container{position:fixed;bottom:calc(80px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);z-index:9999;display:flex;flex-direction:column;gap:var(--space-sm);pointer-events:none;width:100%;max-width:400px;padding:0 var(--space-md)}.toast{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-lg);background:var(--roam-cream);box-shadow:0 4px 12px #1a3a2f26,0 8px 24px #1a3a2f1a;pointer-events:auto;border:1px solid rgba(26,58,47,.1)}.toast-success{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border-color:#22c55e33}.toast-success .toast-icon{color:#16a34a;background:#22c55e26}.toast-error{background:linear-gradient(135deg,#fef2f2,#fee2e2);border-color:#ef444433}.toast-error .toast-icon{color:#dc2626;background:#ef444426}.toast-info{background:linear-gradient(135deg,#f0f9ff,#e0f2fe);border-color:#3b82f633}.toast-info .toast-icon{color:#2563eb;background:#3b82f626}.toast-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-full);flex-shrink:0}.toast-message{flex:1;font-size:var(--text-sm);font-weight:500;color:var(--roam-forest);line-height:1.4}.toast-action{padding:var(--space-xs) var(--space-md);border:none;background:#1a3a2f;color:#fff;border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:600;cursor:pointer;transition:all .2s ease;flex-shrink:0;white-space:nowrap}.toast-action:hover{background:#142d24}.toast-action:active{transform:scale(.95)}.toast-close{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:none;background:transparent;border-radius:var(--radius-full);cursor:pointer;color:var(--roam-text-muted);transition:all .2s ease;flex-shrink:0;margin:calc(-1 * var(--space-sm)) calc(-1 * var(--space-sm)) calc(-1 * var(--space-sm)) 0}.toast-close:hover{background:#1a3a2f14;color:var(--roam-forest)}.toast-close:active{transform:scale(.9)}.toast-close:focus-visible{outline:2px solid var(--roam-forest);outline-offset:2px}@media(max-width:480px){.toast-container{max-width:100%;padding:0 var(--space-sm)}.toast{padding:var(--space-sm) var(--space-md)}.toast-icon{width:28px;height:28px}.toast-message{font-size:var(--text-xs)}}
