:root{--bg: #f1e8d8;--surface: #ffffff;--surface-2: #fbf5ea;--text: #16293b;--soft: #596470;--faint: #5e6975;--line: #e7ddc9;--cta: #16293b;--cta-text: #f4eadb;--chip: #efe6d5;--navy: #16293b;--sage: #7b9ca8;--brass: #7d6230;--espresso: #231910;--cream: #f3e7d3;--font-caps: "Cinzel", serif;--font-serif: "Newsreader", serif;--font-sans: "Hanken Grotesk", sans-serif;--nav-h: 62px;--nav-gap: 16px;--nav-space: calc(var(--nav-h) + var(--nav-gap) + env(safe-area-inset-bottom))}*{box-sizing:border-box}html,body,#root{height:100%}html,body{overflow-x:hidden;max-width:100%;overscroll-behavior:none;touch-action:manipulation}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}input,textarea,[contenteditable]{-webkit-user-select:text;user-select:text}button{font-family:inherit}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--brass);outline-offset:2px}.haven-frame-outer{min-height:100vh;min-height:100dvh;display:flex;justify-content:center;align-items:flex-start;background:#0b0b0b;padding:24px 0}.haven-frame{width:390px;min-height:760px;max-height:844px;background:var(--bg);color:var(--text);border-radius:48px;overflow:hidden;position:relative;display:flex;flex-direction:column;box-shadow:0 30px 60px #00000080;border:8px solid #111}@media (max-width: 640px),(orientation: landscape) and (max-height: 640px) and (pointer: coarse){html,body{height:100%;overflow:hidden}.haven-frame-outer{padding:0;background:var(--bg);align-items:stretch;position:fixed;top:0;left:0;right:0;width:auto;height:var(--app-height, 100dvh);min-height:0;overflow:hidden}.haven-frame{width:100%;max-width:100%;min-height:100%;height:100%;max-height:none;border-radius:0;border:none;box-shadow:none}}.haven-rotate-notice{display:none}@media (orientation: landscape) and (max-height: 640px) and (pointer: coarse){.haven-rotate-notice{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px;text-align:center;background:var(--bg);color:var(--text)}.haven-frame{visibility:hidden}}.haven-rotate-icon{font-size:40px;line-height:1;animation:haven-rotate-hint 2.4s ease-in-out infinite}.haven-rotate-title{font-family:var(--font-serif);font-size:20px;font-weight:600;margin:0}.haven-rotate-body{font-size:13.5px;color:var(--soft);margin:0;max-width:34ch}@keyframes haven-rotate-hint{0%,55%,to{transform:rotate(-90deg)}75%,95%{transform:rotate(0)}}@media (prefers-reduced-motion: reduce){.haven-rotate-icon{animation:none;transform:rotate(0)}}.haven-frame,.haven-frame *{scrollbar-width:none;-ms-overflow-style:none}.haven-frame::-webkit-scrollbar,.haven-frame *::-webkit-scrollbar{display:none}.haven-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.haven-scroll-x{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}@keyframes haven-pop{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.12);opacity:1}to{transform:scale(1);opacity:1}}@keyframes haven-ring{0%{transform:scale(.7);opacity:.55}to{transform:scale(1.25);opacity:0}}@keyframes haven-drip{0%,to{transform:scaleY(.85);opacity:.7}50%{transform:scaleY(1.15);opacity:1}}@keyframes haven-fill{0%{transform:scaleY(.02)}to{transform:scaleY(1)}}@keyframes haven-steam{0%{transform:translateY(0) scaleX(1);opacity:0}20%{opacity:.6}to{transform:translateY(-14px) scaleX(1.4);opacity:0}}.haven-check-badge{animation:haven-pop .5s ease-out}.haven-check-ring{animation:haven-ring 1.6s infinite}.haven-espresso-stream{animation:haven-drip .6s ease-in-out infinite;transform-origin:top center}.haven-espresso-fill{animation:haven-fill 4s ease-out forwards;transform-box:fill-box;transform-origin:bottom}.haven-steam-puff{animation:haven-steam 2.2s ease-out infinite}@keyframes haven-bob{0%,to{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-7px) rotate(5deg)}}@keyframes haven-jitter{0%,to{transform:translate(0) rotate(0)}25%{transform:translate(-1.5px,-1px) rotate(-3deg)}50%{transform:translate(1.5px,.5px) rotate(2deg)}75%{transform:translate(-1px,1px) rotate(-2deg)}}@keyframes haven-flame{0%,to{transform:scaleY(1) scaleX(1);opacity:.85}50%{transform:scaleY(1.28) scaleX(.88);opacity:1}}@keyframes haven-grounds{0%{transform:translateY(0);opacity:0}15%{opacity:1}85%{opacity:1}to{transform:translateY(26px);opacity:0}}@keyframes haven-stage-in{0%{opacity:0;transform:translateY(10px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.haven-bean-bob{animation:haven-bob 2.2s ease-in-out infinite;transform-box:fill-box;transform-origin:center}.haven-roast-jitter{animation:haven-jitter .5s linear infinite;transform-box:fill-box;transform-origin:center}.haven-flame-flicker{animation:haven-flame .7s ease-in-out infinite;transform-box:fill-box;transform-origin:bottom center}.haven-grounds-fall{animation:haven-grounds 1.2s linear infinite;transform-box:fill-box;transform-origin:center}.haven-stage-slide{animation:haven-stage-in .5s cubic-bezier(.22,1,.36,1)}@media (prefers-reduced-motion: reduce){.haven-bean-bob,.haven-roast-jitter,.haven-flame-flicker,.haven-grounds-fall{animation:none}.haven-stage-slide{animation:none;opacity:1}}@keyframes haven-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.haven-skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,var(--chip) 50%,var(--surface-2) 75%);background-size:200% 100%;animation:haven-shimmer 1.4s linear infinite;border-radius:14px}@media (prefers-reduced-motion: reduce){.haven-skeleton{animation:none}}@keyframes haven-logo-in{0%{opacity:0;transform:translateY(14px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes haven-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.025)}}.haven-logo{animation:haven-logo-in .9s cubic-bezier(.22,1,.36,1) both,haven-breathe 6s ease-in-out 1.2s infinite}@keyframes haven-glow{0%,to{opacity:.25;transform:scale(1)}50%{opacity:.5;transform:scale(1.15)}}.haven-gate-glow{animation:haven-glow 5s ease-in-out infinite}@media (prefers-reduced-motion: reduce){.haven-logo,.haven-gate-glow{animation:none;opacity:1}}@keyframes haven-rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes haven-hero-in{0%{opacity:0;transform:scale(1.04)}to{opacity:1;transform:scale(1)}}.haven-rise{animation:haven-rise .55s cubic-bezier(.22,1,.36,1) backwards;animation-delay:var(--rise-delay, 0ms)}.haven-hero-slide{animation:haven-hero-in .6s cubic-bezier(.22,1,.36,1)}.haven-pressable{transition:transform .2s cubic-bezier(.2,0,0,1),box-shadow .2s ease}.haven-pressable.haven-pressed{transform:scale(.97);transition-duration:.09s;transition-timing-function:linear}@media (hover: hover){.haven-pressable:hover{transform:translateY(-2px);box-shadow:0 10px 26px #0000001a}.haven-pressable:hover.haven-pressed{transform:scale(.97)}}@media (prefers-reduced-motion: reduce){.haven-rise,.haven-hero-slide{animation:none;opacity:1}.haven-pressable,.haven-pressable.haven-pressed,.haven-pressable:hover{transition:none;transform:none}}@keyframes haven-badge-pop{0%{transform:scale(.4)}55%{transform:scale(1.35)}to{transform:scale(1)}}.haven-badge-pop{animation:haven-badge-pop .38s cubic-bezier(.34,1.56,.64,1)}@media (prefers-reduced-motion: reduce){.haven-badge-pop{animation:none}}@keyframes haven-nav-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.haven-nav-in{animation:haven-nav-in .26s cubic-bezier(.22,1,.36,1) both}@media (prefers-reduced-motion: reduce){.haven-nav-in{animation:none;opacity:1}}@keyframes haven-confetti-fall{0%{transform:translateY(-12vh) rotate(0);opacity:0}10%{opacity:1}90%{opacity:1}to{transform:translateY(105vh) rotate(540deg);opacity:0}}.haven-confetti{position:absolute;top:0;display:block;animation-name:haven-confetti-fall;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes haven-live-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}.haven-live-dot{animation:haven-live-pulse 1s ease-in-out infinite}@media (prefers-reduced-motion: reduce){.haven-confetti{animation:none;opacity:0}}@keyframes havenSplashDot{0%,to{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-4px)}}@keyframes havenRewardsGlow{0%,to{box-shadow:0 0 #c9a96100}50%{box-shadow:0 0 24px 3px #c9a9618c}}.haven-splash-dot{animation:havenSplashDot 1.2s ease-in-out infinite}@keyframes havenBeanSpin{0%{transform:rotateY(0)}to{transform:rotateY(360deg)}}.haven-splash-bean{animation:havenBeanSpin 2.6s cubic-bezier(.45,.05,.55,.95) infinite}.haven-rewards-card{animation:havenRewardsGlow 2.2s ease-in-out 3}@media (prefers-reduced-motion: reduce){.haven-splash-dot,.haven-splash-bean,.haven-rewards-card{animation:none}}
